Commit f61b6db3 by 裴大威

Merge branch 'feat-1002426' into 'master'

1002426定制化服务进度

See merge request rays/pcloud-book!461
parents 681afce7 d494acde
package com.pcloud.book.personalstage.biz; package com.pcloud.book.personalstage.biz;
import com.pcloud.book.personalstage.dto.PersonalStageDTO; import com.pcloud.book.personalstage.dto.PersonalStageDTO;
import com.pcloud.book.personalstage.dto.PersonalStageProgressDTO;
import com.pcloud.book.personalstage.entity.PersonalStage; import com.pcloud.book.personalstage.entity.PersonalStage;
import com.pcloud.common.core.mq.DelayQueueDTO; import com.pcloud.common.core.mq.DelayQueueDTO;
...@@ -48,9 +49,11 @@ public interface PersonalStageBiz { ...@@ -48,9 +49,11 @@ public interface PersonalStageBiz {
void nextStageAddStageUserAndWakeupDelay(String robotId, String userWxId, String ip, Long personalStageId); void nextStageAddStageUserAndWakeupDelay(String robotId, String userWxId, String ip, Long personalStageId);
void sendNotKeywordReply(String robotId, String userWxId, String ip, Long personalStageId); void sendNotKeywordReply(String robotId, String userWxId, String ip, Long personalStageId, Long personalStageUserId);
void sendNotKeywordFusingReply(String robotId, String userWxId, String ip, Long personalStageId); void sendNotKeywordFusingReply(String robotId, String userWxId, String ip, Long personalStageId);
void dealDelayFusingFinish(DelayQueueDTO dto); void dealDelayFusingFinish(DelayQueueDTO dto);
PersonalStageProgressDTO getPersonalProgress(String wxUserId, Long personalStageUserId);
} }
package com.pcloud.book.personalstage.biz.impl; package com.pcloud.book.personalstage.biz.impl;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.keywords.enums.ReplyTypeEnum; import com.pcloud.book.keywords.enums.ReplyTypeEnum;
import com.pcloud.book.mq.delay.DelayMessageSender; import com.pcloud.book.mq.delay.DelayMessageSender;
import com.pcloud.book.pcloudkeyword.dao.PcloudRobotClassifyDao; import com.pcloud.book.pcloudkeyword.dao.PcloudRobotClassifyDao;
...@@ -14,6 +15,7 @@ import com.pcloud.book.personalstage.constant.PersonalStageConstant; ...@@ -14,6 +15,7 @@ import com.pcloud.book.personalstage.constant.PersonalStageConstant;
import com.pcloud.book.personalstage.dao.PersonalStageDao; import com.pcloud.book.personalstage.dao.PersonalStageDao;
import com.pcloud.book.personalstage.dao.PersonalStageJumpDao; import com.pcloud.book.personalstage.dao.PersonalStageJumpDao;
import com.pcloud.book.personalstage.dao.PersonalStageJumpKeywordDao; import com.pcloud.book.personalstage.dao.PersonalStageJumpKeywordDao;
import com.pcloud.book.personalstage.dao.PersonalStageProgressMessageDao;
import com.pcloud.book.personalstage.dao.PersonalStageReplyDao; 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;
...@@ -21,8 +23,10 @@ import com.pcloud.book.personalstage.dao.PersonalStageWakeupDao; ...@@ -21,8 +23,10 @@ import com.pcloud.book.personalstage.dao.PersonalStageWakeupDao;
import com.pcloud.book.personalstage.dto.FusingFinishDelayDTO; import com.pcloud.book.personalstage.dto.FusingFinishDelayDTO;
import com.pcloud.book.personalstage.dto.PersonalStageDTO; import com.pcloud.book.personalstage.dto.PersonalStageDTO;
import com.pcloud.book.personalstage.dto.PersonalStageJumpKeywordDto; import com.pcloud.book.personalstage.dto.PersonalStageJumpKeywordDto;
import com.pcloud.book.personalstage.dto.PersonalStageProgressDTO;
import com.pcloud.book.personalstage.dto.WakeupDelayDTO; import com.pcloud.book.personalstage.dto.WakeupDelayDTO;
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.PersonalStageReply; 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;
...@@ -33,9 +37,12 @@ import com.pcloud.book.personalstage.enums.StageReplyRelevEnum; ...@@ -33,9 +37,12 @@ import com.pcloud.book.personalstage.enums.StageReplyRelevEnum;
import com.pcloud.book.personalstage.utils.CacheUtils; import com.pcloud.book.personalstage.utils.CacheUtils;
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.utils.DateUtils;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils; import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.httpclient.UrlUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.wechatgroup.group.dto.GroupUserDTO;
import com.sdk.wxgroup.SendMessageTypeEnum; import com.sdk.wxgroup.SendMessageTypeEnum;
import com.sdk.wxgroup.SendPicMessageVO; import com.sdk.wxgroup.SendPicMessageVO;
import com.sdk.wxgroup.SendTextMessageVO; import com.sdk.wxgroup.SendTextMessageVO;
...@@ -46,11 +53,13 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -46,11 +53,13 @@ import org.springframework.beans.factory.annotation.Autowired;
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 org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.HashMap; import java.util.HashMap;
...@@ -87,6 +96,18 @@ public class PersonalStageBizImpl implements PersonalStageBiz { ...@@ -87,6 +96,18 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
private PersonalStageJumpKeywordDao personalStageJumpKeywordDao; private PersonalStageJumpKeywordDao personalStageJumpKeywordDao;
@Autowired @Autowired
private PersonalStageJumpBiz personalStageJumpBiz; private PersonalStageJumpBiz personalStageJumpBiz;
@Autowired
private WechatGroupConsr wechatGroupConsr;
@Autowired
private PersonalStageProgressMessageDao personalStageProgressMessageDao;
@Value("${wechat.group.link.prefix}")
private String wechatLinkPrefix;
private final static String PERSONAL_STAGE_PROJECT_PROGRESS_TEMPLATE = "${PROGRESS_URL}";
// 项目进度路由
private final static String PERSONAL_STAGE_PROJECT_PROGRESS = "/personalCenter/projectProgress";
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -290,7 +311,7 @@ public class PersonalStageBizImpl implements PersonalStageBiz { ...@@ -290,7 +311,7 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
last.setNotKeywordSendCount(notKeywordSendCount+1); last.setNotKeywordSendCount(notKeywordSendCount+1);
last.setState(PersonalStageUserStateEnum.NORMAL.value); last.setState(PersonalStageUserStateEnum.NORMAL.value);
personalStageUserDao.update(last); personalStageUserDao.update(last);
sendNotKeywordReply(robotId,userWxId,ip,personalStage.getId()); sendNotKeywordReply(robotId,userWxId,ip,personalStage.getId(), last.getId());
} }
} }
} }
...@@ -299,7 +320,7 @@ public class PersonalStageBizImpl implements PersonalStageBiz { ...@@ -299,7 +320,7 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
if (!iskeyword&&!hasRecord){ if (!iskeyword&&!hasRecord){
//走正常非关键词回复并且新增记录 //走正常非关键词回复并且新增记录
LOGGER.info("走正常非关键词回复并且新增记录"); LOGGER.info("走正常非关键词回复并且新增记录");
sendNotKeywordReply(robotId,userWxId,ip,personalStage.getId()); sendNotKeywordReply(robotId,userWxId,ip,personalStage.getId(), last.getId());
PcloudRobot pcloudRobot = pcloudRobotDao.getByWxId(robotId); PcloudRobot pcloudRobot = pcloudRobotDao.getByWxId(robotId);
Long robotClassifyId=pcloudRobot.getRobotType().longValue(); Long robotClassifyId=pcloudRobot.getRobotType().longValue();
PersonalStage firstStage = personalStageDao.getFirstStage(robotClassifyId); PersonalStage firstStage = personalStageDao.getFirstStage(robotClassifyId);
...@@ -479,7 +500,7 @@ public class PersonalStageBizImpl implements PersonalStageBiz { ...@@ -479,7 +500,7 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
@ParamLog("非关键词回复") @ParamLog("非关键词回复")
@Override @Override
public void sendNotKeywordReply(String robotId, String userWxId, String ip, Long personalStageId) { public void sendNotKeywordReply(String robotId, String userWxId, String ip, Long personalStageId, Long personalStageUserId) {
List<Long> ids = personalStageReplyDao.getIdsByRelevance(StageReplyRelevEnum.STAGE_NOT_KEYWORD.value, personalStageId); List<Long> ids = personalStageReplyDao.getIdsByRelevance(StageReplyRelevEnum.STAGE_NOT_KEYWORD.value, personalStageId);
if (ListUtils.isEmpty(ids)){ if (ListUtils.isEmpty(ids)){
return; return;
...@@ -490,9 +511,34 @@ public class PersonalStageBizImpl implements PersonalStageBiz { ...@@ -490,9 +511,34 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
if (ListUtils.isEmpty(items)){ if (ListUtils.isEmpty(items)){
return; return;
} }
// 替换进度链接
replaceProjectProgressUrl(items,robotId,userWxId,personalStageUserId);
sendReplyItems(items,robotId,userWxId,ip); sendReplyItems(items,robotId,userWxId,ip);
} }
@ParamLog("尝试插入单号")
private void tryInsertNumber(Long personalStageUserId) {
String requireNumber = DateUtils.formatDate(new Date(), "yyyyMMddHHmmss").concat(String.valueOf((int)((Math.random()*9+1)*100000)));
personalStageUserDao.updateRequireNumber(personalStageUserId, requireNumber);
}
@ParamLog("替换进度链接")
private void replaceProjectProgressUrl(List<PersonalStageReplyItem> items, String robotId, String userWxId, Long personalStageUserId) {
boolean insertNumber = false;
for (PersonalStageReplyItem item : items){
if(ReplyTypeEnum.TEXT.value.equals(item.getReplyType())){
if(!insertNumber && item.getContent().indexOf(PERSONAL_STAGE_PROJECT_PROGRESS_TEMPLATE) > -1){
insertNumber = true;
}
String longUrl = wechatLinkPrefix.concat(PERSONAL_STAGE_PROJECT_PROGRESS).concat("?wxUserId=" + userWxId + "&robotId=" + robotId + "&personalStageUserId=" + personalStageUserId);
item.setContent(item.getContent().replace(PERSONAL_STAGE_PROJECT_PROGRESS_TEMPLATE, UrlUtils.getShortUrl4Own(longUrl)));
}
}
if(insertNumber){
tryInsertNumber(personalStageUserId);
}
}
@ParamLog("非关键词熔断回复") @ParamLog("非关键词熔断回复")
@Override @Override
public void sendNotKeywordFusingReply(String robotId, String userWxId, String ip, Long personalStageId) { public void sendNotKeywordFusingReply(String robotId, String userWxId, String ip, Long personalStageId) {
...@@ -587,4 +633,32 @@ public class PersonalStageBizImpl implements PersonalStageBiz { ...@@ -587,4 +633,32 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
//刪除发送非关键词次数緩存 //刪除发送非关键词次数緩存
JedisClusterUtils.del(PersonalStageConstant.USER_SEND_KEYWORD_COUNT_LOCK + personalStageId + "_" + wxId); JedisClusterUtils.del(PersonalStageConstant.USER_SEND_KEYWORD_COUNT_LOCK + personalStageId + "_" + wxId);
} }
@Override
public PersonalStageProgressDTO getPersonalProgress(String wxUserId, Long personalStageUserId) {
PersonalStageProgressDTO personalStageProgressDTO = new PersonalStageProgressDTO();
PersonalStageUser personalStageUser = personalStageUserDao.getById(personalStageUserId);
if(personalStageUser == null){
return personalStageProgressDTO;
}
Date startTime = personalStageUser.getCreateTime();
GroupUserDTO groupUserDTO = wechatGroupConsr.getWxUserInfoByWxUserId(wxUserId);
personalStageProgressDTO.setWxUserId(wxUserId);
personalStageProgressDTO.setHeadPic(groupUserDTO.getHeadPic());
personalStageProgressDTO.setNickName(groupUserDTO.getNickName());
personalStageProgressDTO.setSex(groupUserDTO.getSex());
personalStageProgressDTO.setRequireNumber(personalStageUser.getRequireNumber());
List<PersonalStageProgressMessage> personalStageProgressMessages = personalStageProgressMessageDao.getPersonalProgress(startTime);
if (!ListUtils.isEmpty(personalStageProgressMessages)){
setProgressTime(personalStageProgressMessages,startTime);
personalStageProgressDTO.setPersonalStageProgressMessageList(personalStageProgressMessages);
}
return personalStageProgressDTO;
}
private void setProgressTime(List<PersonalStageProgressMessage> personalStageProgressMessages, Date startTime) {
personalStageProgressMessages.stream().forEach(e ->{
e.setProgressTime(DateUtils.addMinute(startTime,e.getMinutes()));
});
}
} }
package com.pcloud.book.personalstage.dao;
import com.pcloud.book.personalstage.entity.PersonalStageProgressMessage;
import com.pcloud.common.core.dao.BaseDao;
import java.util.Date;
import java.util.List;
/**
* (PersonalStageProgressMessage)表数据库访问层
*
* @author zyq
* @since 2020-02-24 15:57:48
*/
public interface PersonalStageProgressMessageDao extends BaseDao<PersonalStageProgressMessage> {
List<PersonalStageProgressMessage> getPersonalProgress(Date startTime);
}
\ No newline at end of file
...@@ -8,4 +8,6 @@ public interface PersonalStageUserDao extends BaseDao<PersonalStageUser> { ...@@ -8,4 +8,6 @@ public interface PersonalStageUserDao extends BaseDao<PersonalStageUser> {
PersonalStageUser getLast(String wxId, String robotId, Long personalStageId); PersonalStageUser getLast(String wxId, String robotId, Long personalStageId);
Integer getNotKeywordSendCount(String wxId, String robotId, Long personalStageId); Integer getNotKeywordSendCount(String wxId, String robotId, Long personalStageId);
void updateRequireNumber(Long personalStageUserId, String requireNumber);
} }
\ No newline at end of file
package com.pcloud.book.personalstage.dao.impl;
import com.pcloud.book.personalstage.entity.PersonalStageProgressMessage;
import com.pcloud.book.personalstage.dao.PersonalStageProgressMessageDao;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* (PersonalStageProgressMessage)表数据库访问层
*
* @author zyq
* @since 2020-02-24 15:57:48
*/
@Repository("personalStageProgressMessageDaoImpl")
public class PersonalStageProgressMessageDaoImpl extends BaseDaoImpl<PersonalStageProgressMessage> implements PersonalStageProgressMessageDao {
@Override
public List<PersonalStageProgressMessage> getPersonalProgress(Date startTime) {
return getSessionTemplate().selectList(getStatement("getPersonalProgress"),startTime);
}
}
\ No newline at end of file
...@@ -28,4 +28,12 @@ public class PersonalStageUserDaoImpl extends BaseDaoImpl<PersonalStageUser> imp ...@@ -28,4 +28,12 @@ public class PersonalStageUserDaoImpl extends BaseDaoImpl<PersonalStageUser> imp
map.put("personalStageId", personalStageId); map.put("personalStageId", personalStageId);
return super.getSessionTemplate().selectOne(getStatement("getNotKeywordSendCount"), map); return super.getSessionTemplate().selectOne(getStatement("getNotKeywordSendCount"), map);
} }
@Override
public void updateRequireNumber(Long personalStageUserId, String requireNumber) {
Map<String, Object> map = new HashMap<>();
map.put("personalStageUserId", personalStageUserId);
map.put("requireNumber", requireNumber);
super.getSessionTemplate().update(getStatement("updateRequireNumber"), map);
}
} }
package com.pcloud.book.personalstage.dto;
import com.pcloud.book.personalstage.entity.PersonalStageProgressMessage;
import java.util.List;
import lombok.Data;
@Data
public class PersonalStageProgressDTO {
/**
* 微信用户ID
*/
private String wxUserId;
/**
* 昵称
*/
private String nickName;
/**
* 头像
*/
private String headPic;
/**
* 性别
*/
private Integer sex;
/**
* 小号id
*/
private String robotId;
//需求单号
private String requireNumber;
private List<PersonalStageProgressMessage> personalStageProgressMessageList;
}
package com.pcloud.book.personalstage.entity;
import java.util.Date;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* (PersonalStageProgressMessage)实体类
*
* @author zyq
* @since 2020-02-24 15:57:48
*/
@Data
public class PersonalStageProgressMessage extends BaseEntity {
private static final long serialVersionUID = 783203450632034209L;
private String content;
private Integer minutes;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date progressTime;
}
\ No newline at end of file
...@@ -30,4 +30,7 @@ public class PersonalStageUser extends BaseEntity { ...@@ -30,4 +30,7 @@ public class PersonalStageUser extends BaseEntity {
@ApiModelProperty("用户非关键词发送次数") @ApiModelProperty("用户非关键词发送次数")
private Integer notKeywordSendCount; private Integer notKeywordSendCount;
@ApiModelProperty("需求单号")
private String requireNumber;
} }
\ No newline at end of file
package com.pcloud.book.personalstage.facade; package com.pcloud.book.personalstage.facade;
import com.pcloud.book.personalstage.biz.PersonalStageBiz; import com.pcloud.book.personalstage.biz.PersonalStageBiz;
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.PersonalStageProgressMessage;
import com.pcloud.book.personalstage.enums.JumpTypeEnum; import com.pcloud.book.personalstage.enums.JumpTypeEnum;
import com.pcloud.book.personalstage.vo.request.CreateStageJumpRequestVO; import com.pcloud.book.personalstage.vo.request.CreateStageJumpRequestVO;
import com.pcloud.book.personalstage.vo.request.UpdateStageJumpRequestVO; import com.pcloud.book.personalstage.vo.request.UpdateStageJumpRequestVO;
...@@ -185,4 +187,11 @@ public class PersonalStageFacade { ...@@ -185,4 +187,11 @@ public class PersonalStageFacade {
return new ResponseDto<>(); return new ResponseDto<>();
} }
@ApiOperation("获取进度")
@GetMapping("getPersonalProgress")
public ResponseDto<?> getPersonalProgress(@RequestParam("wxUserId") String wxUserId,@RequestParam("personalStageUserId") Long personalStageUserId) throws PermissionException, BizException{
PersonalStageProgressDTO personalStageProgressDTO = personalStageBiz.getPersonalProgress(wxUserId, personalStageUserId);
return new ResponseDto<>(personalStageProgressDTO);
}
} }
<?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.personalstage.dao.impl.PersonalStageProgressMessageDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.personalstage.entity.PersonalStageProgressMessage">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="content" property="content" jdbcType="VARCHAR"/>
<result column="minutes" property="minutes" jdbcType="INTEGER"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id, content, minutes, create_time, update_time
</sql>
<select id="getById" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM personal_stage_progress_message
WHERE id = #{id}
</select>
<select id="getList" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM personal_stage_progress_message
</select>
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
INSERT INTO personal_stage_progress_message(
content,
minutes,
create_time,
update_time
) VALUES (
#{content, jdbcType=VARCHAR},
#{minutes, jdbcType=INTEGER},
#{createTime, jdbcType=TIMESTAMP},
#{updateTime, jdbcType=TIMESTAMP}
)
</insert>
<insert id="batchInsert" keyProperty="id" useGeneratedKeys="true">
INSERT INTO personal_stage_progress_message (
content,
minutes,
create_time,
update_time
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{content, jdbcType=VARCHAR},
#{minutes, jdbcType=INTEGER},
#{createTime, jdbcType=TIMESTAMP},
#{updateTime, jdbcType=TIMESTAMP}
)
</foreach>
</insert>
<!--通过主键修改数据-->
<update id="update">
UPDATE personal_stage_progress_message
<set>
<if test="content != null and content != ''">
content = #{content},
</if>
<if test="minutes != null">
minutes = #{minutes},
</if>
<if test="createTime != null">
create_time = #{createTime},
</if>
<if test="updateTime != null">
update_time = #{updateTime},
</if>
</set>
WHERE id = #{id}
</update>
<!--通过主键删除-->
<delete id="deleteById">
DELETE FROM personal_stage_progress_message where id = #{id}
</delete>
<select id="getPersonalProgress" parameterType="date" resultType="com.pcloud.book.personalstage.entity.PersonalStageProgressMessage">
select
id,
content,
minutes
from
personal_stage_progress_message
where
TIMESTAMPDIFF(MINUTE,#{startTime}, now()) &gt;= minutes
order by id asc
</select>
</mapper>
\ No newline at end of file
...@@ -12,10 +12,11 @@ ...@@ -12,10 +12,11 @@
<result property="notKeywordSendCount" column="not_keyword_send_count" jdbcType="INTEGER"/> <result property="notKeywordSendCount" column="not_keyword_send_count" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="requireNumber" column="require_number" jdbcType="VARCHAR"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, personal_stage_id, wx_id, robot_id, robot_classify_id, state, not_keyword_send_count, create_time,update_time id, personal_stage_id, wx_id, robot_id, robot_classify_id, state, not_keyword_send_count, create_time,update_time,require_number
</sql> </sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long"> <select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long">
...@@ -80,6 +81,12 @@ ...@@ -80,6 +81,12 @@
where id = #{id,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT}
</update> </update>
<update id="updateRequireNumber" parameterType="map">
UPDATE personal_stage_user
SET require_number = #{requireNumber}
WHERE id = #{personalStageUserId} AND (require_number is null OR require_number='')
</update>
<select id="getLast" parameterType="map" resultMap="BaseResultMap"> <select id="getLast" parameterType="map" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/> select <include refid="Base_Column_List"/>
from personal_stage_user from personal_stage_user
......
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