Commit f695656b by zhangdongwei-intern

feat-1002477

parent 8e23e3d1
...@@ -5,6 +5,7 @@ import com.pcloud.book.personalstage.dto.PersonalStageProgressDTO; ...@@ -5,6 +5,7 @@ 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.vo.request.AddScoreRequestVO;
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;
...@@ -59,4 +60,18 @@ public interface PersonalStageBiz { ...@@ -59,4 +60,18 @@ public interface PersonalStageBiz {
void dealDelayFusingFinish(DelayQueueDTO dto); void dealDelayFusingFinish(DelayQueueDTO dto);
PersonalStageProgressDTO getPersonalProgress(String wxUserId, Long personalStageUserId); PersonalStageProgressDTO getPersonalProgress(String wxUserId, Long personalStageUserId);
/**
* 增加进度值
* @param vo
*/
void updateScore(AddScoreRequestVO vo);
/**
* 是否第一次访问进度单
* @param personalStageUserId
* @return
*/
Boolean isFirstVisit(Long personalStageUserId);
} }
...@@ -32,6 +32,7 @@ import com.pcloud.book.personalstage.enums.PersonalStageUserStateEnum; ...@@ -32,6 +32,7 @@ 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.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.DateUtils;
...@@ -861,7 +862,10 @@ public class PersonalStageBizImpl implements PersonalStageBiz { ...@@ -861,7 +862,10 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
personalStageProgressDTO.setNickName(groupUserDTO.getNickName()); personalStageProgressDTO.setNickName(groupUserDTO.getNickName());
personalStageProgressDTO.setSex(groupUserDTO.getSex()); personalStageProgressDTO.setSex(groupUserDTO.getSex());
personalStageProgressDTO.setRequireNumber(personalStageUser.getRequireNumber()); personalStageProgressDTO.setRequireNumber(personalStageUser.getRequireNumber());
personalStageProgressDTO.setScore(personalStageUser.getScore());
List<PersonalStageProgressMessage> personalStageProgressMessages = personalStageProgressMessageDao.getPersonalProgress(startTime); List<PersonalStageProgressMessage> personalStageProgressMessages = personalStageProgressMessageDao.getPersonalProgress(startTime);
Integer totalProgress = personalStageProgressMessageDao.countProgressMessage();
personalStageProgressDTO.setTotalProgress(totalProgress == null ? 0 : totalProgress);
if (!ListUtils.isEmpty(personalStageProgressMessages)){ if (!ListUtils.isEmpty(personalStageProgressMessages)){
setProgressTime(personalStageProgressMessages,startTime); setProgressTime(personalStageProgressMessages,startTime);
personalStageProgressDTO.setPersonalStageProgressMessageList(personalStageProgressMessages); personalStageProgressDTO.setPersonalStageProgressMessageList(personalStageProgressMessages);
...@@ -869,9 +873,31 @@ public class PersonalStageBizImpl implements PersonalStageBiz { ...@@ -869,9 +873,31 @@ public class PersonalStageBizImpl implements PersonalStageBiz {
return personalStageProgressDTO; return personalStageProgressDTO;
} }
@Override
public void updateScore(AddScoreRequestVO vo) {
personalStageUserDao.updateScore(vo.getPersonalStageUserId(), vo.getScore());
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean isFirstVisit(Long personalStageUserId) {
PersonalStageUser personalStageUser = personalStageUserDao.getById(personalStageUserId);
if (null == personalStageUser){
return true;
}
if (personalStageUser.getProgressStartTime() == null){
personalStageUser.setProgressStartTime(new Date());
personalStageUserDao.update(personalStageUser);
return true;
}
return false;
}
private void setProgressTime(List<PersonalStageProgressMessage> personalStageProgressMessages, Date startTime) { private void setProgressTime(List<PersonalStageProgressMessage> personalStageProgressMessages, Date startTime) {
personalStageProgressMessages.stream().forEach(e ->{ personalStageProgressMessages.stream().forEach(e ->{
e.setProgressTime(DateUtils.addMinute(startTime,e.getMinutes())); e.setProgressTime(DateUtils.addMinute(startTime,e.getMinutes()));
//如果时间在此时之后,则未完成,否则已完成
e.setState(e.getProgressTime().after(new Date()) ? 0 : 1);
}); });
} }
} }
...@@ -19,4 +19,10 @@ public interface PersonalStageProgressMessageDao extends BaseDao<PersonalStagePr ...@@ -19,4 +19,10 @@ public interface PersonalStageProgressMessageDao extends BaseDao<PersonalStagePr
List<PersonalStageProgressMessage> getProgressMessageList(); List<PersonalStageProgressMessage> getProgressMessageList();
void deleteAll(); void deleteAll();
/**
* 获取进度总数
* @return
*/
Integer countProgressMessage();
} }
\ No newline at end of file
...@@ -10,4 +10,6 @@ public interface PersonalStageUserDao extends BaseDao<PersonalStageUser> { ...@@ -10,4 +10,6 @@ public interface PersonalStageUserDao extends BaseDao<PersonalStageUser> {
Integer getNotKeywordSendCount(String wxId, String robotId, Long personalStageId); Integer getNotKeywordSendCount(String wxId, String robotId, Long personalStageId);
void updateRequireNumber(Long personalStageUserId, String requireNumber); void updateRequireNumber(Long personalStageUserId, String requireNumber);
void updateScore(Long id, Integer score);
} }
\ No newline at end of file
...@@ -32,4 +32,9 @@ public class PersonalStageProgressMessageDaoImpl extends BaseDaoImpl<PersonalSta ...@@ -32,4 +32,9 @@ public class PersonalStageProgressMessageDaoImpl extends BaseDaoImpl<PersonalSta
public void deleteAll() { public void deleteAll() {
super.getSessionTemplate().delete(getStatement("deleteAll")); super.getSessionTemplate().delete(getStatement("deleteAll"));
} }
@Override
public Integer countProgressMessage() {
return super.sqlSessionTemplate.selectOne(getStatement("countProgressMessage"));
}
} }
\ No newline at end of file
...@@ -36,4 +36,12 @@ public class PersonalStageUserDaoImpl extends BaseDaoImpl<PersonalStageUser> imp ...@@ -36,4 +36,12 @@ public class PersonalStageUserDaoImpl extends BaseDaoImpl<PersonalStageUser> imp
map.put("requireNumber", requireNumber); map.put("requireNumber", requireNumber);
super.getSessionTemplate().update(getStatement("updateRequireNumber"), map); super.getSessionTemplate().update(getStatement("updateRequireNumber"), map);
} }
@Override
public void updateScore(Long id, Integer score){
Map<String, Object> map = new HashMap<>();
map.put("id", id);
map.put("score", score);
super.getSessionTemplate().update(getStatement("updateScore"), map);
}
} }
...@@ -38,4 +38,14 @@ public class PersonalStageProgressDTO { ...@@ -38,4 +38,14 @@ public class PersonalStageProgressDTO {
private List<PersonalStageProgressMessage> personalStageProgressMessageList; private List<PersonalStageProgressMessage> personalStageProgressMessageList;
/**
* 进度值
*/
private Integer score;
/**
* 进度总数
*/
private Integer totalProgress;
} }
...@@ -28,4 +28,8 @@ public class PersonalStageProgressMessage extends BaseEntity { ...@@ -28,4 +28,8 @@ public class PersonalStageProgressMessage extends BaseEntity {
) )
private Date progressTime; private Date progressTime;
/**
* 状态(0-未完成,1-已完成)
*/
private Integer state;
} }
\ No newline at end of file
...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel; ...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Date;
import java.util.List; import java.util.List;
...@@ -33,4 +34,10 @@ public class PersonalStageUser extends BaseEntity { ...@@ -33,4 +34,10 @@ public class PersonalStageUser extends BaseEntity {
@ApiModelProperty("需求单号") @ApiModelProperty("需求单号")
private String requireNumber; private String requireNumber;
@ApiModelProperty("进度值")
private Integer score;
@ApiModelProperty("进度开始时间")
private Date progressStartTime;
} }
\ No newline at end of file
...@@ -6,6 +6,7 @@ import com.pcloud.book.personalstage.dto.PersonalStageProgressDTO; ...@@ -6,6 +6,7 @@ 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.entity.PersonalStageProgressMessage;
import com.pcloud.book.personalstage.enums.JumpTypeEnum; import com.pcloud.book.personalstage.enums.JumpTypeEnum;
import com.pcloud.book.personalstage.vo.request.AddScoreRequestVO;
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;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
...@@ -212,4 +213,19 @@ public class PersonalStageFacade { ...@@ -212,4 +213,19 @@ public class PersonalStageFacade {
return new ResponseDto<>(personalStageProgressMessageBiz.save(personalStageProgressMessage)); return new ResponseDto<>(personalStageProgressMessageBiz.save(personalStageProgressMessage));
} }
@ApiOperation("增加进度值")
@PostMapping("addScore")
public ResponseDto<?> addScore(@Validated @RequestBody AddScoreRequestVO vo) throws BizException, PermissionException{
Optional.ofNullable(vo).orElseThrow(() -> new BookBizException(BookBizException.ERROR, "参数为空"));
personalStageBiz.updateScore(vo);
return new ResponseDto<>();
}
@ApiOperation("是否第一次访问进度单")
@GetMapping("isFirstVisit")
public ResponseDto<?> isFirstVisit(@RequestParam("personalStageUserId") Long personalStageUserId){
Optional.ofNullable(personalStageUserId).orElseThrow(() -> new BookBizException(BookBizException.ERROR, "参数为空"));
return new ResponseDto<>(personalStageBiz.isFirstVisit(personalStageUserId));
}
} }
package com.pcloud.book.personalstage.vo.request;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class AddScoreRequestVO {
@NotNull(message = "personalStageUserId不能为空")
private Long personalStageUserId;
@NotNull(message = "分数不能为空")
private Integer Score;
}
...@@ -99,4 +99,7 @@ ...@@ -99,4 +99,7 @@
order by id asc order by id asc
</select> </select>
<select id="countProgressMessage" resultType="int">
select count(id) from personal_stage_progress_message
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -13,10 +13,12 @@ ...@@ -13,10 +13,12 @@
<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"/> <result property="requireNumber" column="require_number" jdbcType="VARCHAR"/>
<result property="score" column="score" jdbcType="INTEGER"/>
<result property="progressStartTime" column="progress_start_time" jdbcType="TIMESTAMP"/>
</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,require_number id, personal_stage_id, wx_id, robot_id, robot_classify_id, state, not_keyword_send_count, create_time,update_time,require_number,score,progress_start_time
</sql> </sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long"> <select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long">
...@@ -76,6 +78,9 @@ ...@@ -76,6 +78,9 @@
<if test="notKeywordSendCount != null"> <if test="notKeywordSendCount != null">
not_keyword_send_count = #{notKeywordSendCount,jdbcType=INTEGER}, not_keyword_send_count = #{notKeywordSendCount,jdbcType=INTEGER},
</if> </if>
<if test="progressStartTime != null">
progress_start_time = #{progressStartTime},
</if>
update_time=now() update_time=now()
</set> </set>
where id = #{id,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT}
...@@ -121,4 +126,9 @@ ...@@ -121,4 +126,9 @@
LIMIT 0,1 LIMIT 0,1
</select> </select>
<update id="updateScore" parameterType="map">
update personal_stage_user set
score = score + #{score} where id = #{id}
</update>
</mapper> </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