|
|
@ -83,8 +83,8 @@ public class PointsModifyConsumer implements RocketMQListener<MessageExt> { |
|
|
|
String charset = "UTF-8"; |
|
|
|
String body = new String(messageExt.getBody(), charset); |
|
|
|
BehaviorDto dto = JSONObject.parseObject(body, BehaviorDto.class); |
|
|
|
this.handlePoints(dto); |
|
|
|
log.info("EPDC-POINTS-SERVER消费消息END:{topic:{}, msgId:{}, body:{}}", RocketMqConstant.MQ_TOPIC_ORGANIZATION, messageExt.getMsgId(), body); |
|
|
|
String info = this.handlePoints(dto); |
|
|
|
log.info("EPDC-POINTS-SERVER消费消息END:{topic:{}, msgId:{}, body:{}, info:{}}", RocketMqConstant.MQ_TOPIC_ORGANIZATION, messageExt.getMsgId(), body,info); |
|
|
|
} catch (Exception e) { |
|
|
|
log.info("EPDC-POINTS-SERVER消费消息失败:msgId:{}", messageExt.getMsgId()); |
|
|
|
e.printStackTrace(); |
|
|
@ -98,10 +98,10 @@ public class PointsModifyConsumer implements RocketMQListener<MessageExt> { |
|
|
|
* 根据动作编码获取积分规则信息, |
|
|
|
* 根据动作编码和用户ID获取此动作在一定时限内的总分,然后根据上线统计指标判断是否到达上限值,未到达加分或减分,达到则不进行操作 |
|
|
|
*/ |
|
|
|
private void handlePoints(BehaviorDto dto) { |
|
|
|
private String handlePoints(BehaviorDto dto) { |
|
|
|
//解析参数
|
|
|
|
if (StringUtils.isBlank(dto.getReferenceId()) || StringUtils.isBlank(dto.getUserId()) || StringUtils.isBlank(dto.getBehavior())) { |
|
|
|
return; |
|
|
|
return "mq参数传递出错:业务ID,用户ID或者行为为空"; |
|
|
|
} |
|
|
|
//计算是否超过该动作的积分上限 -- 开始
|
|
|
|
//1.根据行为编码获取积分规则
|
|
|
@ -110,8 +110,11 @@ public class PointsModifyConsumer implements RocketMQListener<MessageExt> { |
|
|
|
pointsLogsFormDTO.setUserId(dto.getUserId()); |
|
|
|
pointsLogsFormDTO.setReferenceId(dto.getReferenceId()); |
|
|
|
PointsRuleResultDTO pointsRuleResultDTO = pointsRuleService.getPointsRuleByBehaviorCode(dto.getBehavior()); |
|
|
|
if (pointsRuleResultDTO == null || pointsRuleResultDTO.getUpperLimitVal() == 0) { |
|
|
|
return; |
|
|
|
if (pointsRuleResultDTO == null) { |
|
|
|
return "获取积分负责失败"; |
|
|
|
} |
|
|
|
if(pointsRuleResultDTO.getUpperLimitVal() == 0){ |
|
|
|
return "积分限值为0,无法加分"; |
|
|
|
} |
|
|
|
pointsLogsFormDTO.setRuleCode(pointsRuleResultDTO.getRuleCode()); |
|
|
|
//1.1如果规则里动作次数上限不为0则需要判断该动作是否超过次数上限
|
|
|
@ -121,7 +124,7 @@ public class PointsModifyConsumer implements RocketMQListener<MessageExt> { |
|
|
|
List<PointsLogsResultDTO> pointsLogsResultDTs = pointsLogsService.getLogsByBehaviorCodeAndUserIdAndReferenceId(pointsLogsFormDTO); |
|
|
|
//如果大于或者等于上限 代表不能再进行操作
|
|
|
|
if (pointsLogsResultDTs != null && pointsLogsResultDTs.size() >= Integer.parseInt(pointsRuleResultDTO.getLimitNum())) { |
|
|
|
return; |
|
|
|
return "同一项目积分已达到上限值,无法继续加分"; |
|
|
|
} |
|
|
|
} |
|
|
|
//2.赋值积分规则的上限期限(小时,年。。。。)
|
|
|
@ -131,7 +134,7 @@ public class PointsModifyConsumer implements RocketMQListener<MessageExt> { |
|
|
|
//判断总分是否超过上限
|
|
|
|
if (total != null) { |
|
|
|
if (Math.abs(total + pointsRuleResultDTO.getPoints()) > Math.abs(pointsRuleResultDTO.getUpperLimitVal())) { |
|
|
|
return; |
|
|
|
return "该动作积分已达到上限值,无法继续加分"; |
|
|
|
} |
|
|
|
} |
|
|
|
//计算是否超过该动作的积分上限 -- 结束
|
|
|
@ -139,11 +142,11 @@ public class PointsModifyConsumer implements RocketMQListener<MessageExt> { |
|
|
|
//1.获取用户信息
|
|
|
|
Result<UserDTO> userById = usersFeignClient.getUserById(dto.getUserId()); |
|
|
|
if (!SUCCESS_CODE.equals(userById.getMsg())) { |
|
|
|
return; |
|
|
|
return "通过Feign获取用户信息失败"; |
|
|
|
} |
|
|
|
UserDTO userDTO = userById.getData(); |
|
|
|
if (userDTO == null) { |
|
|
|
return; |
|
|
|
return "无法获取到用户信息"; |
|
|
|
} |
|
|
|
//判断用户是否完善信息
|
|
|
|
Long gridId = 0L; |
|
|
@ -151,7 +154,7 @@ public class PointsModifyConsumer implements RocketMQListener<MessageExt> { |
|
|
|
//获取网格人员关系表
|
|
|
|
Result<UserGridRelationDTO> userLastSwitchGird = usersFeignClient.getUserLastSwitchGird(userDTO.getId()); |
|
|
|
if(!userLastSwitchGird.success() || userLastSwitchGird.getData()==null){ |
|
|
|
return; |
|
|
|
return "无法获取到网格人员关系信息"; |
|
|
|
} |
|
|
|
gridId = userLastSwitchGird.getData().getGridId(); |
|
|
|
}else{ |
|
|
@ -176,6 +179,7 @@ public class PointsModifyConsumer implements RocketMQListener<MessageExt> { |
|
|
|
//添加操作日志 -- 开始
|
|
|
|
addRuleLog(pointsRuleResultDTO, dto, userDTO); |
|
|
|
//添加操作日志 -- 结束
|
|
|
|
return "积分操作成功!动作描述:"+pointsRuleResultDTO.getBehaviorDesc() +" 积分描述:"+pointsRuleResultDTO.getRuleDesc() +" 分数统计:" +pointsRuleResultDTO.getPoints(); |
|
|
|
} |
|
|
|
|
|
|
|
private void addRuleLog(PointsRuleResultDTO pointsRuleResultDTO, BehaviorDto dto, UserDTO userDTO) { |
|
|
|