Commit 3c41e6fe by 阮思源

Merge branch 'feat-1002570' into 'master'

1002570多阶段获取信息类型采取keyvalue方案

See merge request rays/pcloud-book!540
parents 27fc5975 252db1e4
package com.pcloud.book.personlstage.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("替换字符串用户记录DTO")
public class UserReplaceCodeDTO {
@ApiModelProperty("用户id")
private String wxId;
@ApiModelProperty("机器人id")
private String robotId;
@ApiModelProperty("阶段id")
private Long personalStageId;
@ApiModelProperty("替换字符串id")
private Long replaceCodeId;
@ApiModelProperty("需求定制单id")
private Long paperId;
@ApiModelProperty("内容")
private String content;
}
package com.pcloud.book.personlstage.service;
import com.pcloud.book.personlstage.dto.UserReplaceCodeDTO;
import com.pcloud.common.dto.ResponseDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Map;
@FeignClient(value = "pcloud-service-book", qualifier = "personalStageServiceCloud", path = "book/v1.0/personalStageService")
@Api("阶段内部接口")
public interface PersonalStageService {
@ApiOperation("根据小号类别获取小号")
@PostMapping("createUserReplaceCode")
void createUserReplaceCode(@RequestBody @ApiParam("方案阶段跳转") UserReplaceCodeDTO userReplaceCodeDTO);
@ApiOperation("获取用户替换")
@GetMapping("getUserReplaceMap")
ResponseEntity<ResponseDto<Map<String,String>>> getUserReplaceMap(@RequestParam("wxId") @ApiParam("用户id") String wxId,@RequestParam("robotId") @ApiParam("机器人id") String robotId);
}
...@@ -5,13 +5,16 @@ import com.pcloud.book.personalstage.dto.PersonalStageProgressDTO; ...@@ -5,13 +5,16 @@ import com.pcloud.book.personalstage.dto.PersonalStageProgressDTO;
import com.pcloud.book.personalstage.entity.PersonalStage; import com.pcloud.book.personalstage.entity.PersonalStage;
import com.pcloud.book.personalstage.entity.PersonalStageUser; import com.pcloud.book.personalstage.entity.PersonalStageUser;
import com.pcloud.book.personalstage.entity.ReplaceCode;
import com.pcloud.book.personalstage.vo.request.AddScoreRequestVO; import com.pcloud.book.personalstage.vo.request.AddScoreRequestVO;
import com.pcloud.book.personlstage.dto.UserReplaceCodeDTO;
import com.pcloud.common.core.mq.DelayQueueDTO; import com.pcloud.common.core.mq.DelayQueueDTO;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean; import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
import java.util.List; import java.util.List;
import java.util.Map;
public interface PersonalStageBiz { public interface PersonalStageBiz {
Long createPersonalStage(PersonalStage personalStage); Long createPersonalStage(PersonalStage personalStage);
...@@ -76,4 +79,12 @@ public interface PersonalStageBiz { ...@@ -76,4 +79,12 @@ public interface PersonalStageBiz {
PersonalStage getCurrentPersonalStage(String wxId, String robotId); PersonalStage getCurrentPersonalStage(String wxId, String robotId);
void addUserReplaceCodeBeforeJump(Long personalStageId,String wxId, String robotId);
List<ReplaceCode> getAllReplaceCode();
void createUserReplaceCode(UserReplaceCodeDTO userReplaceCodeDTO);
Map<String,String> getUserReplaceMap(String wxId, String robotId);
} }
...@@ -27,6 +27,8 @@ import com.pcloud.book.personalstage.dao.PersonalStageReplyDao; ...@@ -27,6 +27,8 @@ import com.pcloud.book.personalstage.dao.PersonalStageReplyDao;
import com.pcloud.book.personalstage.dao.PersonalStageReplyItemDao; import com.pcloud.book.personalstage.dao.PersonalStageReplyItemDao;
import com.pcloud.book.personalstage.dao.PersonalStageUserDao; import com.pcloud.book.personalstage.dao.PersonalStageUserDao;
import com.pcloud.book.personalstage.dao.PersonalStageWakeupDao; import com.pcloud.book.personalstage.dao.PersonalStageWakeupDao;
import com.pcloud.book.personalstage.dao.ReplaceCodeDao;
import com.pcloud.book.personalstage.dao.UserReplaceCodeDao;
import com.pcloud.book.personalstage.dto.*; import com.pcloud.book.personalstage.dto.*;
import com.pcloud.book.personalstage.entity.PersonalStage; import com.pcloud.book.personalstage.entity.PersonalStage;
import com.pcloud.book.personalstage.entity.PersonalStageProgressMessage; import com.pcloud.book.personalstage.entity.PersonalStageProgressMessage;
...@@ -34,18 +36,22 @@ import com.pcloud.book.personalstage.entity.PersonalStageReply; ...@@ -34,18 +36,22 @@ import com.pcloud.book.personalstage.entity.PersonalStageReply;
import com.pcloud.book.personalstage.entity.PersonalStageReplyItem; import com.pcloud.book.personalstage.entity.PersonalStageReplyItem;
import com.pcloud.book.personalstage.entity.PersonalStageUser; import com.pcloud.book.personalstage.entity.PersonalStageUser;
import com.pcloud.book.personalstage.entity.PersonalStageWakeup; import com.pcloud.book.personalstage.entity.PersonalStageWakeup;
import com.pcloud.book.personalstage.entity.ReplaceCode;
import com.pcloud.book.personalstage.entity.UserReplaceCode;
import com.pcloud.book.personalstage.enums.JumpTypeEnum; import com.pcloud.book.personalstage.enums.JumpTypeEnum;
import com.pcloud.book.personalstage.enums.PersonalStageUserStateEnum; import com.pcloud.book.personalstage.enums.PersonalStageUserStateEnum;
import com.pcloud.book.personalstage.enums.SendModeEnum; import com.pcloud.book.personalstage.enums.SendModeEnum;
import com.pcloud.book.personalstage.enums.StageReplyRelevEnum; import com.pcloud.book.personalstage.enums.StageReplyRelevEnum;
import com.pcloud.book.personalstage.utils.CacheUtils; import com.pcloud.book.personalstage.utils.CacheUtils;
import com.pcloud.book.personalstage.vo.request.AddScoreRequestVO; import com.pcloud.book.personalstage.vo.request.AddScoreRequestVO;
import com.pcloud.book.personlstage.dto.UserReplaceCodeDTO;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.mq.DelayQueueDTO; import com.pcloud.common.core.mq.DelayQueueDTO;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean; import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.BeanUtils;
import com.pcloud.common.utils.DateUtils; import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.NumberUtil; import com.pcloud.common.utils.NumberUtil;
...@@ -118,6 +124,10 @@ public class PersonalStageBizImpl implements PersonalStageBiz { ...@@ -118,6 +124,10 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
private ResourceConsr resourceConsr; private ResourceConsr resourceConsr;
@Autowired @Autowired
private CustomPlanModuleSuggestionMapper customPlanModuleSuggestionMapper; private CustomPlanModuleSuggestionMapper customPlanModuleSuggestionMapper;
@Autowired
private UserReplaceCodeDao userReplaceCodeDao;
@Autowired
private ReplaceCodeDao replaceCodeDao;
@Value("${wechat.group.link.prefix}") @Value("${wechat.group.link.prefix}")
private String wechatLinkPrefix; private String wechatLinkPrefix;
...@@ -613,6 +623,10 @@ public class PersonalStageBizImpl implements PersonalStageBiz { ...@@ -613,6 +623,10 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
if("重置体验".equals(userSendContent)){ if("重置体验".equals(userSendContent)){
return; return;
} }
if (!StringUtil.isEmpty(userSendContent)){
String fileId=robotId+"_"+userWxId+"_"+personalStageId;
JedisClusterUtils.hset(PersonalStageConstant.LAST_NOT_KEYWORD_CONTENT_BEFORE_JUMP_STAGE_CACHE, fileId,userSendContent);
}
//判断人工客服服务状态 //判断人工客服服务状态
Integer serviceState = wechatGroupConsr.getServiceStateByRobotUser(robotId, userWxId); Integer serviceState = wechatGroupConsr.getServiceStateByRobotUser(robotId, userWxId);
if (serviceState == 1){ if (serviceState == 1){
...@@ -1045,6 +1059,67 @@ public class PersonalStageBizImpl implements PersonalStageBiz { ...@@ -1045,6 +1059,67 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
} }
return null; return null;
} }
@ParamLog("保存跳转关键词之前的一次非关键词")
@Override
public void addUserReplaceCodeBeforeJump(Long personalStageId,String wxId, String robotId) {
String fileId=robotId+"_"+wxId+"_"+personalStageId;
String content = JedisClusterUtils.hget(PersonalStageConstant.LAST_NOT_KEYWORD_CONTENT_BEFORE_JUMP_STAGE_CACHE, fileId);
if (StringUtil.isEmpty(content)){
return;
}
PersonalStage personalStage = personalStageDao.getById(personalStageId);
if (personalStage==null||personalStage.getReplaceCodeId()==null){
return;
}
UserReplaceCode userReplaceCode=new UserReplaceCode();
userReplaceCode.setContent(content);
userReplaceCode.setPersonalStageId(personalStageId);
userReplaceCode.setWxId(wxId);
userReplaceCode.setRobotId(robotId);
userReplaceCode.setReplaceCodeId(personalStage.getReplaceCodeId());
userReplaceCodeDao.insert(userReplaceCode);
//清除缓存
JedisClusterUtils.hdel(PersonalStageConstant.LAST_NOT_KEYWORD_CONTENT_BEFORE_JUMP_STAGE_CACHE,fileId);
}
@ParamLog("获取所有替换码")
@Override
public List<ReplaceCode> getAllReplaceCode() {
return replaceCodeDao.getAll();
}
@Transactional(rollbackFor = Exception.class)
@ParamLog("创建用户替换记录")
@Override
public void createUserReplaceCode(UserReplaceCodeDTO userReplaceCodeDTO) {
UserReplaceCode userReplaceCode=new UserReplaceCode();
BeanUtils.copyProperties(userReplaceCodeDTO,userReplaceCode);
userReplaceCodeDao.insert(userReplaceCode);
}
@ParamLog("获取用户替换map")
@Override
public Map<String, String> getUserReplaceMap(String wxId, String robotId) {
Map<String,String> map=new HashMap<>();
if (StringUtil.isEmpty(wxId)||StringUtil.isEmpty(robotId)){
return map;
}
List<UserReplaceCode> userReplaceCodes=userReplaceCodeDao.getLastUserReplace(wxId,robotId);
List<ReplaceCode> all = replaceCodeDao.getAll();
Map<Long,String> codeMap=new HashMap<>();
for (ReplaceCode replaceCode:all){
codeMap.put(replaceCode.getId(),replaceCode.getReplaceCode());
}
for (UserReplaceCode userReplaceCode:userReplaceCodes){
String code=codeMap.get(userReplaceCode.getReplaceCodeId());
if (!StringUtil.isEmpty(code)){
map.put(code,userReplaceCode.getContent());
}
}
return map;
}
private List<PersonalStageProgressMessage> setProgressTime(List<PersonalStageProgressMessage> personalStageProgressMessages, Date startTime) { private List<PersonalStageProgressMessage> setProgressTime(List<PersonalStageProgressMessage> personalStageProgressMessages, Date startTime) {
List<PersonalStageProgressMessage> newList = new ArrayList<>(); List<PersonalStageProgressMessage> newList = new ArrayList<>();
Date now = new Date(); Date now = new Date();
......
...@@ -478,6 +478,8 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz { ...@@ -478,6 +478,8 @@ public class PersonalStageJumpBizImpl implements PersonalStageJumpBiz {
sendJumpLinkups(userWxId, robotWxId, ip, jumpKeywordDto.getPersonalStageJumpId(),nextPersonalStageUser.getId()); sendJumpLinkups(userWxId, robotWxId, ip, jumpKeywordDto.getPersonalStageJumpId(),nextPersonalStageUser.getId());
// 停止发送引导语 // 停止发送引导语
pcloudGuideBiz.stopPcloudGuidePush(robotWxId, userWxId); pcloudGuideBiz.stopPcloudGuidePush(robotWxId, userWxId);
//存用户跳转之前的最后一次非关键词回复到表
personalStageBiz.addUserReplaceCodeBeforeJump(currentStageUser.getPersonalStageId(),userWxId,robotWxId);
return true; return true;
} }
......
...@@ -39,6 +39,11 @@ public class PersonalStageConstant { ...@@ -39,6 +39,11 @@ public class PersonalStageConstant {
*/ */
public static final String BOOK_SEARCH = "${BOOK_SEARCH}"; public static final String BOOK_SEARCH = "${BOOK_SEARCH}";
/**
* 跳转之前的最后一次非关键词
*/
public static final String LAST_NOT_KEYWORD_CONTENT_BEFORE_JUMP_STAGE_CACHE = "BOOK:LAST_NOT_KEYWORD_CONTENT_BEFORE_JUMP_STAGE_CACHE";
} }
package com.pcloud.book.personalstage.dao;
import com.pcloud.book.personalstage.entity.ReplaceCode;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
public interface ReplaceCodeDao extends BaseDao<ReplaceCode> {
List<ReplaceCode> getAll();
}
\ No newline at end of file
package com.pcloud.book.personalstage.dao;
import com.pcloud.book.personalstage.entity.UserReplaceCode;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
public interface UserReplaceCodeDao extends BaseDao<UserReplaceCode> {
List<UserReplaceCode> getLastUserReplace(String wxId, String robotId);
}
\ No newline at end of file
package com.pcloud.book.personalstage.dao.impl;
import com.pcloud.book.personalstage.dao.ReplaceCodeDao;
import com.pcloud.book.personalstage.entity.ReplaceCode;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.List;
@Component("replaceCodeDao")
public class ReplaceCodeDaoImpl extends BaseDaoImpl<ReplaceCode> implements ReplaceCodeDao {
@Override
public List<ReplaceCode> getAll() {
return super.getSqlSession().selectList(getStatement("getAll"));
}
}
package com.pcloud.book.personalstage.dao.impl;
import com.pcloud.book.personalstage.dao.UserReplaceCodeDao;
import com.pcloud.book.personalstage.entity.UserReplaceCode;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component("userReplaceCodeDao")
public class UserReplaceCodeDaoImpl extends BaseDaoImpl<UserReplaceCode> implements UserReplaceCodeDao {
@Override
public List<UserReplaceCode> getLastUserReplace(String wxId, String robotId) {
Map<String,Object> map=new HashMap<>();
map.put("wxId",wxId);
map.put("robotId",robotId);
return super.getSqlSession().selectList(getStatement("getLastUserReplace"),map);
}
}
...@@ -48,4 +48,7 @@ public class PersonalStage extends BaseEntity { ...@@ -48,4 +48,7 @@ public class PersonalStage extends BaseEntity {
@ApiModelProperty("熔断回复的次数 将不再回复任何熔断消息") @ApiModelProperty("熔断回复的次数 将不再回复任何熔断消息")
private Integer notReplyFusingCount; private Integer notReplyFusingCount;
@ApiModelProperty("替换字符串id")
private Long replaceCodeId;
} }
\ No newline at end of file
package com.pcloud.book.personalstage.entity;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("定制化阶段替换字符串")
@Data
public class ReplaceCode extends BaseEntity {
@ApiModelProperty("替换字符串")
private String replaceCode;
@ApiModelProperty("名称")
private String name;
}
package com.pcloud.book.personalstage.entity;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("替换字符串用户记录表")
@Data
public class UserReplaceCode extends BaseEntity {
@ApiModelProperty("用户id")
private String wxId;
@ApiModelProperty("机器人id")
private String robotId;
@ApiModelProperty("阶段id")
private Long personalStageId;
@ApiModelProperty("替换字符串id")
private Long replaceCodeId;
@ApiModelProperty("需求定制单id")
private Long paperId;
@ApiModelProperty("内容")
private String content;
}
...@@ -310,4 +310,13 @@ public class PersonalStageFacade { ...@@ -310,4 +310,13 @@ public class PersonalStageFacade {
return new ResponseDto<>(personalStageProgressDTOS); return new ResponseDto<>(personalStageProgressDTOS);
} }
@ApiOperation("获取所有替换码")
@GetMapping("getAllReplaceCode")
public ResponseDto<?> getAllReplaceCode(
@RequestHeader("token") @ApiParam("token信息") String token
) throws BizException, PermissionException {
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
return new ResponseDto<>(personalStageBiz.getAllReplaceCode());
}
} }
package com.pcloud.book.personalstage.service.impl;
import com.pcloud.book.personalstage.biz.PersonalStageBiz;
import com.pcloud.book.personlstage.dto.UserReplaceCodeDTO;
import com.pcloud.book.personlstage.service.PersonalStageService;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.ResponseHandleUtil;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController("personalStageService")
@RequestMapping("personalStageService")
public class PersonalStageServiceImpl implements PersonalStageService {
@Autowired
private PersonalStageBiz personalStageBiz;
@ApiOperation("创建用户替换记录")
@PostMapping("createUserReplaceCode")
@Override
public void createUserReplaceCode(
@RequestBody @ApiParam("用户替换记录") UserReplaceCodeDTO userReplaceCodeDTO
) throws BizException {
personalStageBiz.createUserReplaceCode(userReplaceCodeDTO);
}
@ApiOperation("获取用户替换map")
@GetMapping("getUserReplaceMap")
@Override
public ResponseEntity<ResponseDto<Map<String,String>>> getUserReplaceMap(@RequestParam("wxId") @ApiParam("用户id") String wxId, @RequestParam("robotId") @ApiParam("机器人id") String robotId){
return ResponseHandleUtil.toResponse(personalStageBiz.getUserReplaceMap(wxId,robotId));
}
}
...@@ -14,10 +14,12 @@ ...@@ -14,10 +14,12 @@
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="sendMode" column="send_mode" jdbcType="INTEGER"/> <result property="sendMode" column="send_mode" jdbcType="INTEGER"/>
<result property="notReplyFusingCount" column="not_reply_fusing_count" jdbcType="INTEGER"/> <result property="notReplyFusingCount" column="not_reply_fusing_count" jdbcType="INTEGER"/>
<result property="replaceCodeId" column="replace_code_id" jdbcType="BIGINT"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, name, not_keyword_fusing_count, not_keyword_fusing_time, robot_classify_id, paper_id, seq_num, show_progress, create_time,send_mode,not_reply_fusing_count id, name, not_keyword_fusing_count, not_keyword_fusing_time, robot_classify_id, paper_id, seq_num, show_progress, create_time,send_mode,not_reply_fusing_count
,replace_code_id
</sql> </sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long"> <select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long">
...@@ -44,7 +46,8 @@ ...@@ -44,7 +46,8 @@
show_progress, show_progress,
create_time, create_time,
send_mode, send_mode,
not_reply_fusing_count not_reply_fusing_count,
replace_code_id,
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
#{name,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
...@@ -56,7 +59,8 @@ ...@@ -56,7 +59,8 @@
#{showProgress,jdbcType=INTEGER}, #{showProgress,jdbcType=INTEGER},
NOW(), NOW(),
#{sendMode}, #{sendMode},
#{notReplyFusingCount} #{notReplyFusingCount},
#{replaceCodeId}
</trim> </trim>
</insert> </insert>
...@@ -86,6 +90,9 @@ ...@@ -86,6 +90,9 @@
send_mode = #{sendMode,jdbcType=INTEGER}, send_mode = #{sendMode,jdbcType=INTEGER},
</if> </if>
not_reply_fusing_count = #{notReplyFusingCount,jdbcType=INTEGER}, not_reply_fusing_count = #{notReplyFusingCount,jdbcType=INTEGER},
<if test="replaceCodeId != null">
replace_code_id = #{replaceCodeId,jdbcType=BIGINT},
</if>
</set> </set>
where id = #{id,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT}
</update> </update>
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.personalstage.dao.impl.ReplaceCodeDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.personalstage.entity.ReplaceCode">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="replaceCode" column="replace_code" jdbcType="VARCHAR"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id, replace_code, name
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long">
select
<include refid="Base_Column_List"/>
from replace_code
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteById" parameterType="long">
delete from replace_code
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" parameterType="com.pcloud.book.personalstage.entity.ReplaceCode" useGeneratedKeys="true" keyProperty="id">
insert into replace_code
<trim prefix="(" suffix=")" suffixOverrides=",">
replace_code,
name
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{replaceCode,jdbcType=VARCHAR},
#{name,jdbcType=VARCHAR}
</trim>
</insert>
<select id="getAll" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from replace_code
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.personalstage.dao.impl.UserReplaceCodeDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.personalstage.entity.UserReplaceCode">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="wxId" column="wx_id" jdbcType="VARCHAR"/>
<result property="robotId" column="robot_id" jdbcType="VARCHAR"/>
<result property="personalStageId" column="personal_stage_id" jdbcType="BIGINT"/>
<result property="replaceCodeId" column="replace_code_id" jdbcType="BIGINT"/>
<result property="paperId" column="paper_id" jdbcType="BIGINT"/>
<result property="content" column="content" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id, wx_id, robot_id,personal_stage_id,replace_code_id,paper_id,content,create_time
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long">
select
<include refid="Base_Column_List"/>
from user_replace_code
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteById" parameterType="long">
delete from user_replace_code
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" parameterType="com.pcloud.book.personalstage.entity.UserReplaceCode" useGeneratedKeys="true" keyProperty="id">
insert into user_replace_code
<trim prefix="(" suffix=")" suffixOverrides=",">
wx_id,
robot_id,
personal_stage_id,
replace_code_id,
paper_id,
content,
create_time
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{wxId,jdbcType=VARCHAR},
#{robotId,jdbcType=VARCHAR},
#{personalStageId,jdbcType=BIGINT},
#{replaceCodeId,jdbcType=BIGINT},
#{paperId,jdbcType=BIGINT},
#{content,jdbcType=VARCHAR},
now()
</trim>
</insert>
<select id="getLastUserReplace" parameterType="map" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
FROM
user_replace_code
WHERE
id IN (
SELECT
MAX(id)
FROM
user_replace_code t
WHERE
t.robot_id = #{robotId}
AND t.wx_id = #{wxId}
GROUP BY
t.replace_code_id
ORDER BY
create_time DESC
)
</select>
</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