Commit b4863d9e by 桂前礼

feat: [none] 我的足迹埋点

parent 41f109d6
......@@ -100,4 +100,13 @@ public interface AppletRecordBiz {
* @param readBookRecordDTO
*/
void addReadBookRecord(ReadBookRecordDTO readBookRecordDTO);
/**
* 小程序我的足迹埋点
* @param wechatUserId 用户ID
* @param fromType 数据来源 0内容筛选 1指定按钮
* @param typeName 名称
* @param recordTypes 类型
*/
void addFootstep(Long wechatUserId, Integer fromType, String typeName, List<Integer> recordTypes);
}
package com.pcloud.book.applet.biz.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DatePattern;
......@@ -7,6 +8,7 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.google.common.collect.Lists;
import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.book.applet.biz.AppletBooklistBiz;
......@@ -24,10 +26,12 @@ import com.pcloud.book.applet.dto.AppletRecordDTO;
import com.pcloud.book.applet.dto.AppletUserBookcaseDTO;
import com.pcloud.book.applet.dto.BookDTO4Booklist;
import com.pcloud.book.applet.dto.ReadBookRecordDTO;
import com.pcloud.book.applet.entity.AppletFootstepRecord;
import com.pcloud.book.applet.entity.AppletRecord;
import com.pcloud.book.applet.entity.AppletRecordDayServe;
import com.pcloud.book.applet.entity.AppletRecordServe;
import com.pcloud.book.applet.enums.AppletRecordTypeEnum;
import com.pcloud.book.applet.mapper.AppletFootstepRecordMapper;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.constant.BookConstant;
import com.pcloud.book.consumer.app.AppConsr;
......@@ -70,6 +74,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.stream.Collectors;
......@@ -114,6 +119,8 @@ public class AppletRecordBizImpl implements AppletRecordBiz {
private AppletRecordServeDao appletRecordServeDao;
@Autowired
private WeworkTeacherBiz weworkTeacherBiz;
@Autowired
private AppletFootstepRecordMapper appletFootstepRecordMapper;
@Override
@ParamLog("通过ID查询单条数据")
......@@ -373,6 +380,21 @@ public class AppletRecordBizImpl implements AppletRecordBiz {
});
}
@Override
public void addFootstep(Long wechatUserId, Integer fromType, String typeName, List<Integer> recordTypes) {
AppletFootstepRecord appletFootstepRecord = new AppletFootstepRecord();
if (CollUtil.isEmpty(recordTypes)) {
appletFootstepRecord.setRecordTypes(null);
} else {
appletFootstepRecord.setRecordTypes(recordTypes.stream().map(x ->
Optional.ofNullable(x).map(String::valueOf).orElse("")).filter(StrUtil::isNotBlank).collect(Collectors.joining(",")));
}
appletFootstepRecord.setTypeName(typeName);
appletFootstepRecord.setWechatUserId(wechatUserId);
appletFootstepRecord.setFromType(fromType);
appletFootstepRecordMapper.insert(appletFootstepRecord);
}
private void HandleTypeCode4ListDay(List<AppletRecordDTO> recordList) {
fillTypeCode(recordList);
appletRecordDayServeDao.batchUpdate(recordList);
......
package com.pcloud.book.applet.dto;
import lombok.Data;
import java.util.List;
@Data
public class AddFootstepDto {
private Integer fromType;
private String typeName;
private List<Integer> recordTypes;
}
package com.pcloud.book.applet.entity;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* applet_footstep_record
* @author
*/
@Data
public class AppletFootstepRecord implements Serializable {
/**
* 主键ID
*/
private Long id;
/**
* 类型 以逗号分隔
*/
private String recordTypes;
/**
* 名称
*/
private String typeName;
/**
* 用户ID
*/
private Long wechatUserId;
/**
* 创建时间
*/
private Date createTime;
/**
* 数据来源 0内容筛选 1指定按钮
*/
private Integer fromType;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.pcloud.book.applet.facade;
import com.pcloud.book.applet.biz.AppletRecordBiz;
import com.pcloud.book.applet.dto.AddFootstepDto;
import com.pcloud.book.applet.dto.AppletRecordDTO;
import com.pcloud.book.applet.dto.ReadBookRecordDTO;
import com.pcloud.book.applet.entity.AppletRecord;
......@@ -23,6 +24,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
* (AppletRecord)表控制层
......@@ -128,5 +130,17 @@ public class AppletRecordFacade {
return new ResponseDto<>();
}
@ApiOperation("小程序我的足迹埋点")
@RequestMapping(value = "/addFootstep", method = RequestMethod.POST)
public ResponseDto<Void> addFootstep(@CookieValue("userInfo") String userInfo,
@RequestBody AddFootstepDto addFootstepDto) {
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
Integer fromType = addFootstepDto.getFromType();
String typeName = addFootstepDto.getTypeName();
List<Integer> recordTypes = addFootstepDto.getRecordTypes();
appletRecordBiz.addFootstep(wechatUserId, fromType, typeName, recordTypes);
return new ResponseDto<>();
}
}
\ No newline at end of file
package com.pcloud.book.applet.mapper;
import com.pcloud.book.applet.entity.AppletFootstepRecord;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
@Mapper
@Component
public interface AppletFootstepRecordMapper {
int deleteByPrimaryKey(Long id);
int insert(AppletFootstepRecord record);
int insertSelective(AppletFootstepRecord record);
AppletFootstepRecord selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(AppletFootstepRecord record);
int updateByPrimaryKey(AppletFootstepRecord record);
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pcloud.book.applet.mapper.AppletFootstepRecordMapper">
<resultMap id="BaseResultMap" type="com.pcloud.book.applet.entity.AppletFootstepRecord">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="record_types" jdbcType="VARCHAR" property="recordTypes" />
<result column="type_name" jdbcType="VARCHAR" property="typeName" />
<result column="wechat_user_id" jdbcType="BIGINT" property="wechatUserId" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="from_type" jdbcType="INTEGER" property="fromType" />
</resultMap>
<sql id="Base_Column_List">
id, record_types, type_name, wechat_user_id, create_time, from_type
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from applet_footstep_record
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from applet_footstep_record
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" parameterType="com.pcloud.book.applet.entity.AppletFootstepRecord">
insert into applet_footstep_record (id, record_types, type_name,
wechat_user_id, create_time, from_type
)
values (#{id,jdbcType=BIGINT}, #{recordTypes,jdbcType=VARCHAR}, #{typeName,jdbcType=VARCHAR},
#{wechatUserId,jdbcType=BIGINT}, NOW(), #{fromType,jdbcType=INTEGER}
)
</insert>
<insert id="insertSelective" parameterType="com.pcloud.book.applet.entity.AppletFootstepRecord">
insert into applet_footstep_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="recordTypes != null">
record_types,
</if>
<if test="typeName != null">
type_name,
</if>
<if test="wechatUserId != null">
wechat_user_id,
</if>
create_time,
<if test="fromType != null">
from_type,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIGINT},
</if>
<if test="recordTypes != null">
#{recordTypes,jdbcType=VARCHAR},
</if>
<if test="typeName != null">
#{typeName,jdbcType=VARCHAR},
</if>
<if test="wechatUserId != null">
#{wechatUserId,jdbcType=BIGINT},
</if>
NOW(),
<if test="fromType != null">
#{fromType,jdbcType=INTEGER},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.pcloud.book.applet.entity.AppletFootstepRecord">
update applet_footstep_record
<set>
<if test="recordTypes != null">
record_types = #{recordTypes,jdbcType=VARCHAR},
</if>
<if test="typeName != null">
type_name = #{typeName,jdbcType=VARCHAR},
</if>
<if test="wechatUserId != null">
wechat_user_id = #{wechatUserId,jdbcType=BIGINT},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="fromType != null">
from_type = #{fromType,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.pcloud.book.applet.entity.AppletFootstepRecord">
update applet_footstep_record
set record_types = #{recordTypes,jdbcType=VARCHAR},
type_name = #{typeName,jdbcType=VARCHAR},
wechat_user_id = #{wechatUserId,jdbcType=BIGINT},
create_time = #{createTime,jdbcType=TIMESTAMP},
from_type = #{fromType,jdbcType=INTEGER}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment