Browse Source

Merge remote-tracking branch 'origin/dev_point_task' into dev

master
yinzuomei 4 years ago
parent
commit
fa1279ad3e
  1. 2
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/RocketMQConsumerRegister.java
  2. 91
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/PointOperationLogListener.java
  3. 6
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java
  4. 6
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java
  5. 33
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/PointRuleChangedMQMsg.java
  6. 10
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java
  7. 5
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  8. 11
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java
  9. 13
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java
  10. 18
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java
  11. 10
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java
  12. 12
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java
  13. 3
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/VolunteerInfoDao.xml
  14. 5
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java
  15. 33
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/enums/SystemMessageTypeEnum.java
  16. 30
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java
  17. 5
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java
  18. 36
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/MyPointTaskFormDTO.java
  19. 8
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/PointRuleFormDTO.java
  20. 94
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/MyPointTaskResultDTO.java
  21. 4
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/ResiPointDetailResultDTO.java
  22. 12
      epmet-module/epmet-point/epmet-point-server/pom.xml
  23. 4
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/PointRuleController.java
  24. 32
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/ResiPointController.java
  25. 9
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/PointRuleDao.java
  26. 6
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointActionLogDao.java
  27. 15
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleDefaultEntity.java
  28. 15
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleEntity.java
  29. 10
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointActionLogService.java
  30. 98
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointRuleServiceImpl.java
  31. 53
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java
  32. 29
      epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.11__point_rule_sort.sql
  33. 2
      epmet-module/epmet-point/epmet-point-server/src/main/resources/logback-spring.xml
  34. 16
      epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/PointRuleDao.xml
  35. 69
      epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointActionLogDao.xml
  36. 10
      epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointTotalDao.xml
  37. 5
      epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/MyResiUserInfoResultDTO.java
  38. 4
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyResiUserInfoResultDTO.java
  39. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java

2
epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/RocketMQConsumerRegister.java

@ -4,6 +4,7 @@ import com.epmet.commons.rocketmq.constants.ConsomerGroupConstants;
import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.tools.enums.EnvEnum;
import com.epmet.mq.listener.listener.AuthOperationLogListener;
import com.epmet.mq.listener.listener.PointOperationLogListener;
import com.epmet.mq.listener.listener.ProjectOperationLogListener;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
@ -33,6 +34,7 @@ public class RocketMQConsumerRegister {
if (!EnvEnum.LOCAL.getCode().equals(env)) {
register(nameServer, ConsomerGroupConstants.AUTH_OPERATION_LOG_GROUP, MessageModel.CLUSTERING, TopicConstants.AUTH, "*", new AuthOperationLogListener());
register(nameServer, ConsomerGroupConstants.PROJECT_OPERATION_LOG_GROUP, MessageModel.CLUSTERING, TopicConstants.PROJECT_CHANGED, "*", new ProjectOperationLogListener());
register(nameServer, ConsomerGroupConstants.POINT_OPERATION_LOG_GROUP, MessageModel.CLUSTERING, TopicConstants.POINT, "*", new PointOperationLogListener());
}
} catch (MQClientException e) {
e.printStackTrace();

91
epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/PointOperationLogListener.java

@ -0,0 +1,91 @@
package com.epmet.mq.listener.listener;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.messages.PointRuleChangedMQMsg;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.entity.LogOperationEntity;
import com.epmet.enums.SystemMessageTypeEnum;
import com.epmet.mq.listener.bean.log.LogOperationHelper;
import com.epmet.mq.listener.bean.log.OperatorInfo;
import com.epmet.service.LogOperationService;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;
import org.redisson.api.RLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @author wxz
* @Description 积分相关日志监听器
* @return
* @date 2021.06.21 10:13
*/
public class PointOperationLogListener implements MessageListenerConcurrently {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
try {
msgs.forEach(msg -> consumeMessage(msg));
} catch (Exception e) {
logger.error(ExceptionUtils.getErrorStackTrace(e));
return ConsumeConcurrentlyStatus.RECONSUME_LATER;
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
private void consumeMessage(MessageExt messageExt) {
String opeType = messageExt.getTags();
String msg = new String(messageExt.getBody());
logger.info("积分操作日志监听器-收到消息内容:{}", msg);
PointRuleChangedMQMsg msgObj = JSON.parseObject(msg, PointRuleChangedMQMsg.class);
String content = StringUtils.isBlank(msgObj.getOperationBrief()) ? "" : msgObj.getOperationBrief();
OperatorInfo operatorInfo = LogOperationHelper.getInstance().getOperatorInfo(msgObj.getOperatorId());
LogOperationEntity logEntity = new LogOperationEntity();
logEntity.setCategory(messageExt.getTopic());
logEntity.setType(opeType);
logEntity.setTypeDisplay(SystemMessageTypeEnum.getTypeDisplay(opeType));
logEntity.setTargetId(msgObj.getRuleId());
logEntity.setIp(msgObj.getIp());
logEntity.setFromApp(msgObj.getFromApp());
logEntity.setFromClient(msgObj.getFromClient());
logEntity.setCustomerId(operatorInfo.getCustomerId());
logEntity.setOperatorId(msgObj.getOperatorId());
logEntity.setOperatorMobile(operatorInfo.getMobile());
logEntity.setOperatorName(operatorInfo.getName());
logEntity.setOperatingTime(msgObj.getOperatingTime());
logEntity.setContent(content);
DistributedLock distributedLock = null;
RLock lock = null;
try {
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:point_operation_log:%s:%s", logEntity.getType(), logEntity.getTargetId()),
30L, 30L, TimeUnit.SECONDS);
SpringContextUtils.getBean(LogOperationService.class).log(logEntity);
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
logger.error("【RocketMQ】添加操作日志失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
} catch (Exception e) {
// 不是我们自己抛出的异常,可以让MQ重试
logger.error("【RocketMQ】添加操作日志失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
throw e;
} finally {
distributedLock.unLock(lock);
}
}
}

6
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java

@ -37,8 +37,12 @@ public interface ConsomerGroupConstants {
String AUTH_OPERATION_LOG_GROUP = "auth_operation_log_group";
/**
* 项目操作日志小肥猪
* 项目操作日志消费组
*/
String PROJECT_OPERATION_LOG_GROUP = "project_operation_log_group";
/**
* 积分操作消费组
*/
String POINT_OPERATION_LOG_GROUP = "point_operation_log_group";
}

6
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java

@ -2,6 +2,7 @@ package com.epmet.commons.rocketmq.constants;
/**
* 话题列表常量其他服务要想发送消息到mq则应当引入epmet-commons-rocketmq模块并且使用此常量
* 用于mq中的topic
*/
public interface TopicConstants {
/**
@ -21,4 +22,9 @@ public interface TopicConstants {
* 认证
*/
String AUTH = "auth";
/**
* 积分系统话题
*/
String POINT = "point";
}

33
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/PointRuleChangedMQMsg.java

@ -0,0 +1,33 @@
package com.epmet.commons.rocketmq.messages;
import lombok.Data;
import java.util.Date;
/**
* 积分规则变动消息体
*/
@Data
public class PointRuleChangedMQMsg {
/**
* 操作简介
*/
private String operationBrief;
/**
* 规则的id
*/
private String ruleId;
/**
* 谁操作的
*/
private String operatorId;
private String ip;
private String fromApp;
private String fromClient;
private Date operatingTime;
}

10
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java

@ -86,4 +86,14 @@ public interface StrConstant {
String SPECIAL_CUSTOMER = "150282ed25c14ff0785e7e06283b6283";
//平音客户
String PY_CUSTOMER = "6f203e30de1a65aab7e69c058826cd80";
/**
* 单位积分,积分上限积分说明积分事件
*/
String POINT_CHANGE = "将%s调整为%s";
/**
* 积分规则修改的头
*/
String POINT_CHANGE_HEAD = "修改了%s规则,";
}

5
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -186,7 +186,10 @@ public enum EpmetErrorCode {
SIGN_IN_TIME_PASSED(8912,"当前时间已超过签到时间"),
INVITATION_NOT_EXIST(8913,"链接不存在"),
NOTICE_EXPIRATION_TIME(8914,"通知过期时间不能早于当前时间"),
NOTICE_BE_OVERDUE(8915,"通知已过期不允许再次变更");
NOTICE_BE_OVERDUE(8915,"通知已过期不允许再次变更"),
SAME_RULE_NAME(8916,"该积分事件已存在,请重新调整保存"),
UP_LIMIT_POINT(8917,"积分上限需为单位积分倍数,请重新调整保存");
private int code;

11
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java

@ -3,6 +3,7 @@ package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.ActInfoDTO;
import com.epmet.dto.VolunteerInfoDTO;
import com.epmet.dto.form.CommonCustomerFormDTO;
import com.epmet.feign.fallback.EpmetHeartOpenFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
@ -41,4 +42,14 @@ public interface EpmetHeartOpenFeignClient {
*/
@PostMapping("/heart/resi/act/published/{staffId}")
Result<List<ActInfoDTO>> getPublishedAct(@PathVariable("staffId") String staffId);
/**
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.VolunteerInfoDTO>
* @param userId
* @author yinzuomei
* @description 根据用户id查询用户的注册志愿者信息
* @Date 2021/6/28 9:30
**/
@PostMapping("/heart/resi/volunteer/queryuservolunteerinfo/{userId}")
Result<VolunteerInfoDTO> queryUserVolunteerInfo(@PathVariable("userId") String userId);
}

13
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java

@ -4,6 +4,7 @@ import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.ActInfoDTO;
import com.epmet.dto.VolunteerInfoDTO;
import com.epmet.dto.form.CommonCustomerFormDTO;
import com.epmet.feign.EpmetHeartOpenFeignClient;
import org.springframework.stereotype.Component;
@ -35,4 +36,16 @@ public class EpmetHeartOpenFeignClientFallback implements EpmetHeartOpenFeignCli
public Result<List<ActInfoDTO>> getPublishedAct(String staffId) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "getPublishedAct", staffId);
}
/**
* @param userId
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.VolunteerInfoDTO>
* @author yinzuomei
* @description 根据用户id查询用户的注册志愿者信息
* @Date 2021/6/28 9:30
**/
@Override
public Result<VolunteerInfoDTO> queryUserVolunteerInfo(String userId) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "queryUserVolunteerInfo", userId);
}
}

18
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java

@ -21,16 +21,14 @@ import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.VolunteerInfoDTO;
import com.epmet.dto.form.CommonCustomerFormDTO;
import com.epmet.dto.form.resi.ResiSendSmsCodeFormDTO;
import com.epmet.dto.form.resi.ResiVolunteerAuthenticateFormDTO;
import com.epmet.dto.result.resi.ResiVolunteerInfoResultDTO;
import com.epmet.service.VolunteerInfoService;
import org.springframework.beans.factory.annotation.Autowired;
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.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -102,4 +100,16 @@ public class ResiVolunteerController {
ValidatorUtils.validateEntity(customerFormDTO,CommonCustomerFormDTO.CustomerIdGroup.class);
return new Result<List<String>>().ok(volunteerInfoService.getVolunteerIds(customerFormDTO));
}
/**
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.VolunteerInfoDTO>
* @param userId
* @author yinzuomei
* @description 根据用户id查询用户的注册志愿者信息
* @Date 2021/6/28 9:34
**/
@PostMapping("queryuservolunteerinfo/{userId}")
public Result<VolunteerInfoDTO> queryUserVolunteerInfo(@PathVariable("userId")String userId){
return new Result<VolunteerInfoDTO>().ok(volunteerInfoService.queryUserVolunteerInfo(userId));
}
}

10
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java

@ -18,7 +18,6 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.VolunteerInfoDTO;
@ -29,7 +28,6 @@ import com.epmet.dto.result.resi.ResiVolunteerInfoResultDTO;
import com.epmet.entity.VolunteerInfoEntity;
import java.util.List;
import java.util.Map;
/**
* 志愿者信息
@ -78,4 +76,12 @@ public interface VolunteerInfoService extends BaseService<VolunteerInfoEntity> {
* @date 2020.08.13 10:22
**/
List<String> getVolunteerIds(CommonCustomerFormDTO customerFormDTO);
/**
* 根据用户id查询用户的注册志愿者信息
*
* @param userId
* @return com.epmet.dto.VolunteerInfoDTO
*/
VolunteerInfoDTO queryUserVolunteerInfo(String userId);
}

12
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java

@ -208,4 +208,16 @@ public class VolunteerInfoServiceImpl extends BaseServiceImpl<VolunteerInfoDao,
logger.info(String.format("短信验证码key=%s", smsCodeKey));
redisUtils.set(smsCodeKey, smsCode, RedisUtils.MINUTE_THIRTY_EXPIRE);
}
/**
* 根据用户id查询用户的注册志愿者信息
*
* @param userId
* @return com.epmet.dto.VolunteerInfoDTO
*/
@Override
public VolunteerInfoDTO queryUserVolunteerInfo(String userId) {
VolunteerInfoDTO volunteerInfoDTO=baseDao.selectVolunteerInfoByUserId(userId);
return volunteerInfoDTO;
}
}

3
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/VolunteerInfoDao.xml

@ -59,7 +59,8 @@
VOLUNTEER_INTRODUCE volunteerIntroduce,
VOLUNTEER_SIGNATURE volunteerSignature,
GRID_ID gridId,
GRID_NAME gridName
GRID_NAME gridName,
USER_ID as userId
FROM volunteer_info
WHERE DEL_FLAG = '0'
AND USER_ID = #{userId}

5
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java

@ -20,4 +20,9 @@ public interface SystemMessageType {
*/
String GROUP_ACHIEVEMENT = "group_achievement";
/**
* 积分规则变动
*/
String POINT_RULE_CHANGED = "point_rule_changed";
}

33
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/enums/SystemMessageTypeEnum.java

@ -0,0 +1,33 @@
package com.epmet.enums;
import com.epmet.constant.SystemMessageType;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
@Getter
public enum SystemMessageTypeEnum {
POINT_RULE_CHANGED(SystemMessageType.POINT_RULE_CHANGED, "积分规则修改");
private String type;
private String typeDisplay;
public static SystemMessageTypeEnum get(String type) {
for (SystemMessageTypeEnum e : SystemMessageTypeEnum.values()) {
if (e.type.equals(type)) {
return e;
}
}
return null;
}
public static String getTypeDisplay(String type) {
SystemMessageTypeEnum o = get(type);
if (o != null) {
return o.getTypeDisplay();
}
return null;
}
}

30
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java

@ -1,6 +1,7 @@
package com.epmet.send;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.messages.PointRuleChangedMQMsg;
import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg;
import com.epmet.commons.rocketmq.messages.GroupAchievementMQMsg;
import com.epmet.commons.tools.constant.NumConstant;
@ -98,4 +99,33 @@ public class SendMqMsgUtil {
return false;
}
/**
* @Description 发送积分规则变动消息
* @return
* @author wxz
* @date 2021.06.21 12:46
*/
public boolean sendPointRuleChangedMqMsg(PointRuleChangedMQMsg msg) {
try {
SystemMsgFormDTO msgForm = new SystemMsgFormDTO();
msgForm.setMessageType(SystemMessageType.POINT_RULE_CHANGED);
msgForm.setContent(msg);
Result sendMsgResult = null;
log.info("sendPointRuleChangedMqMsg param:{}",msgForm);
int retryTime = 0;
do {
sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(msgForm);
} while ((sendMsgResult == null || !sendMsgResult.success()) && retryTime++ < NumConstant.TWO);
if (sendMsgResult != null && sendMsgResult.success()) {
return true;
}
log.error("发送(积分规则变动)系统消息到message服务失败:{},msg:{}", JSON.toJSONString(sendMsgResult), JSON.toJSONString(msgForm));
} catch (Exception e) {
log.error("sendMqMsg exception", e);
}
return false;
}
}

5
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java

@ -73,11 +73,12 @@ public class SystemMessageServiceImpl implements SystemMessageService {
topic = TopicConstants.GROUP_ACHIEVEMENT;
break;
case AuthOperationConstants.LOGIN:
topic = TopicConstants.AUTH;
break;
case AuthOperationConstants.LOGOUT:
topic = TopicConstants.AUTH;
break;
case SystemMessageType.POINT_RULE_CHANGED:
topic = TopicConstants.POINT;
break;
}
return topic;
}

36
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/MyPointTaskFormDTO.java

@ -0,0 +1,36 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 积分任务列表查询入参
*
* @author yinzuomei@elink-cn.com
* @date 2021/6/18 13:56
*/
@Data
public class MyPointTaskFormDTO implements Serializable {
private static final long serialVersionUID = 8274146750217261820L;
/**
* 当前用户Id
* */
@NotBlank(message = "tokenDto获取userId为空")
private String userId;
@NotBlank(message = "tokenDto获取customerId为空")
private String customerId;
/**
* 未完成unfinished已完成finished全部all
* */
@NotBlank(message = "未完成:unfinished;已完成:finished;全部:all")
private String type;
/**
* yyyyMMdd现在默认是当天后端代码写死
* */
private String dateId;
}

8
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/PointRuleFormDTO.java

@ -1,8 +1,10 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@ -17,6 +19,7 @@ import java.io.Serializable;
@Data
public class PointRuleFormDTO implements Serializable {
private static final long serialVersionUID = -3228252683629912008L;
public interface UserShowGroup extends CustomerClientShowGroup {}
/**
* 客户Id
@ -39,7 +42,7 @@ public class PointRuleFormDTO implements Serializable {
/**
* 积分规则名称
*/
@NotBlank(message = "积分规则名称不能为空", groups = AddGroup.class)
@NotBlank(message = "积分规则名称不能为空", groups = UserShowGroup.class)
private String ruleName;
/**
* 积分
@ -76,7 +79,8 @@ public class PointRuleFormDTO implements Serializable {
/**
* 规则说明 事件说明
*/
@NotBlank(message = "规则描述不能为空", groups = AddGroup.class)
@NotBlank(message = "规则描述不能为空", groups = UserShowGroup.class)
@Length(min = 1, max = 50, message = "积分说明不能超过50个字", groups = UserShowGroup.class)
private String ruleDesc;
/**

94
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/MyPointTaskResultDTO.java

@ -0,0 +1,94 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
/**
* 积分任务列表查询返参
*
* @author yinzuomei@elink-cn.com
* @date 2021/6/18 13:58
*/
@Data
public class MyPointTaskResultDTO implements Serializable {
/**
* 规则名称
* */
private String ruleName;
/**
* 规则描述
* */
private String ruleDesc;
/**
* 加减积分描述举例积分+2
* */
private String pointDesc;
/**
* 完成情况描述举例完成0/3
* */
private String finishTotalDesc;
/**
* 去完成 or 已完成
* */
private String finishFlag;
/**
* 楼院小组:group爱心互助heart; 前端根据这个key跳转到相应页面
* */
private String linkPage;
/**
* 事件CODE 来自事件表
*/
@JsonIgnore
private String eventCode;
/**
* 操作类型 加积分:add;减积分:subtract
*/
@JsonIgnore
private String operateType;
/**
* 积分上限 0表示不涉及积分上限
*/
@JsonIgnore
private Integer upLimit;
/**
* 获得积分值
*/
@JsonIgnore
private Integer point;
/**
* 已完成次数
*/
@JsonIgnore
private Integer finishedCount;
/**
* 上限次数,0代表没有上限次数
*/
@JsonIgnore
private Integer upLimitCount;
/**
* 排序
*/
@JsonIgnore
private Integer sort;
/**
* 一次性任务1:;0:不是
*/
@JsonIgnore
private String disposable;
}

4
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/ResiPointDetailResultDTO.java

@ -24,4 +24,8 @@ public class ResiPointDetailResultDTO implements Serializable {
* */
private Integer usablePoint = 0;
/**
* 今日已获得积分用于积分任务列表显示
* */
private Integer todayObtainedPoint=0;
}

12
epmet-module/epmet-point/epmet-point-server/pom.xml

@ -15,7 +15,11 @@
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-message-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-commons-tools</artifactId>
@ -93,6 +97,12 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-heart-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

4
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/PointRuleController.java

@ -75,7 +75,7 @@ public class PointRuleController {
}
/**
* desc:根据功能id获取积分规则
* desc:修改积分规则
*
* @param formDTO
* @return
@ -84,7 +84,7 @@ public class PointRuleController {
@RequirePermission( requirePermission = RequirePermissionEnum.MORE_POINT_RULE_SAVE)
public Result<Boolean> update(@LoginUser TokenDto tokenDTO, @RequestBody PointRuleFormDTO formDTO) {
formDTO.setCustomerId(tokenDTO.getCustomerId());
ValidatorUtils.validateEntity(formDTO, UpdateGroup.class);
ValidatorUtils.validateEntity(formDTO, PointRuleFormDTO.UserShowGroup.class,UpdateGroup.class);
pointRuleService.update(tokenDTO,formDTO);
return new Result<Boolean>().ok(true);
}

32
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/ResiPointController.java

@ -2,20 +2,22 @@ package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.CommonPageUserFormDTO;
import com.epmet.dto.form.CommonUserFormDTO;
import com.epmet.dto.form.ResiAroundPartyPointRankFormDTO;
import com.epmet.dto.form.ResiPointRankFormDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.service.PointVerificationLogService;
import com.epmet.service.UserPointActionLogService;
import com.epmet.service.UserPointStatisticalDailyService;
import com.epmet.service.UserPointTotalService;
import com.epmet.utils.ModuleConstant;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
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.RestController;
import java.util.List;
@ -156,4 +158,24 @@ public class ResiPointController {
List<ResiAroundPartyPointRankResultDTO> resultDTOS = userPointStatisticalDailyService.listAroundPartyPointRank(formDTO);
return new Result<List<ResiAroundPartyPointRankResultDTO>>().ok(resultDTOS);
}
/**
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.result.MyPointTaskResultDTO>>
* @param tokenDto
* @param formDTO
* @author yinzuomei
* @description 积分任务列表
* @Date 2021/6/18 14:19
**/
@PostMapping("mytasklist")
public Result<List<MyPointTaskResultDTO>> queryMyPointTaskList(@LoginUser TokenDto tokenDto,@RequestBody MyPointTaskFormDTO formDTO){
formDTO.setUserId(tokenDto.getUserId());
formDTO.setCustomerId(tokenDto.getCustomerId());
//默认查询当天
if(StringUtils.isBlank(formDTO.getDateId())){
formDTO.setDateId(DateUtils.getBeforeNDay(0));
}
ValidatorUtils.validateEntity(formDTO);
return new Result<List<MyPointTaskResultDTO>>().ok(pointActionLogService.queryMyPointTaskList(formDTO));
}
}

9
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/PointRuleDao.java

@ -56,4 +56,13 @@ public interface PointRuleDao extends BaseDao<PointRuleEntity> {
List<String> selectCustomerIds();
/**
* @Description 校验重名的规则
* @Param ruleName
* @Param customerId
* @author zxc
* @date 2021/6/18 1:39 下午
*/
Integer checkSameName(@Param("ruleName")String ruleName,@Param("customerId") String customerId,@Param("ruleId")String ruleId);
}

6
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointActionLogDao.java

@ -18,6 +18,7 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.MyPointTaskResultDTO;
import com.epmet.dto.result.ResiPointLogPeriodResultDTO;
import com.epmet.entity.UserPointActionLogEntity;
import org.apache.ibatis.annotations.Mapper;
@ -63,4 +64,9 @@ public interface UserPointActionLogDao extends BaseDao<UserPointActionLogEntity>
* @return java.lang.Integer
*/
Integer selectIncrease(@Param("type")String type, @Param("objectId")String objectId);
List<MyPointTaskResultDTO> queryMyPointTaskList(@Param("customerId")String customerId,
@Param("userId")String userId,
@Param("type")String type,
@Param("dateId")String dateId);
}

15
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleDefaultEntity.java

@ -94,4 +94,19 @@ public class PointRuleDefaultEntity extends BaseEpmetEntity {
* 是否启用 0-1-
*/
private String enabledFlag;
/**
* 规则显示顺序
*/
private Integer sort;
/**
* 链接页面
*/
private String linkPage;
/**
* 一次性任务1:;0:不是
*/
private String disposable;
}

15
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleEntity.java

@ -102,6 +102,21 @@ public class PointRuleEntity extends BaseEpmetEntity {
*/
private String enabledFlag;
/**
* 规则显示顺序
*/
private Integer sort;
/**
* 链接页面
*/
private String linkPage;
/**
* 一次性任务1:;0:不是
*/
private String disposable;
@Override
public boolean equals(Object o) {
if (this == o) return true;

10
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointActionLogService.java

@ -22,6 +22,8 @@ import com.epmet.commons.tools.dto.form.mq.eventmsg.BasePointEventMsg;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.UserPointActionLogDTO;
import com.epmet.dto.form.CommonPageUserFormDTO;
import com.epmet.dto.form.MyPointTaskFormDTO;
import com.epmet.dto.result.MyPointTaskResultDTO;
import com.epmet.dto.result.ResiPointLogListResultDTO;
import com.epmet.entity.UserPointActionLogEntity;
import dto.form.SendPointFormDTO;
@ -133,4 +135,12 @@ public interface UserPointActionLogService extends BaseService<UserPointActionLo
* @return java.lang.Integer
*/
Integer getIncrease(String type, String objectId);
/**
* 积分任务列表
*
* @param formDTO
* @return Result<MyPointTaskResultDTO>
*/
List<MyPointTaskResultDTO> queryMyPointTaskList(MyPointTaskFormDTO formDTO);
}

98
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointRuleServiceImpl.java

@ -21,15 +21,19 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.common.enu.PointUnitEnum;
import com.epmet.common.enu.SysResponseEnum;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.PointRuleChangedMQMsg;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.enums.CommonOperateTypeEnum;
import com.epmet.commons.tools.enums.EventEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.IpUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.dao.PointRuleDao;
@ -38,17 +42,16 @@ import com.epmet.dao.RuleOperateLogDao;
import com.epmet.dto.CustomerDTO;
import com.epmet.dto.CustomerStaffDTO;
import com.epmet.dto.InitPointRuleResultDTO;
import com.epmet.dto.form.CustomerFunctionListFormDTO;
import com.epmet.dto.form.PointDetailFormDTO;
import com.epmet.dto.form.PointRuleFormDTO;
import com.epmet.dto.form.PointRuleListFormDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.PointRuleDefaultEntity;
import com.epmet.entity.PointRuleEntity;
import com.epmet.entity.RuleOperateLogEntity;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.OperCrmOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.PointRuleService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -56,7 +59,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicInteger;
@ -81,6 +87,10 @@ public class PointRuleServiceImpl extends BaseServiceImpl<PointRuleDao, PointRul
private OperCrmOpenFeignClient operCrmOpenFeignClient;
@Autowired
private PointRuleDefaultDao pointRuleDefaultDao;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private LoginUserUtil loginUserUtil;
@Override
public List<CustomerFunctionResultDTO> getFunctionList(String customerId) {
@ -145,15 +155,31 @@ public class PointRuleServiceImpl extends BaseServiceImpl<PointRuleDao, PointRul
return resultDTO;
}
/**
* @Description 积分规则修改
* @Param tokenDTO
* @Param formDTO
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void update(TokenDto tokenDTO, PointRuleFormDTO formDTO) {
// 积分规则开启状态参数校验
validateEnableFlag(formDTO);
PointRuleEntity entityDB = baseDao.selectById(formDTO.getRuleId());
//数据库不存在或者客户Id不相等 则抛出异常
if (entityDB == null || !entityDB.getCustomerId().equals(formDTO.getCustomerId())) {
throw new RenException(SysResponseEnum.POINT_RULE_IS_NOT_EXIST.getCode(), SysResponseEnum.POINT_RULE_IS_NOT_EXIST.getMsg());
}
// 校验规则是否有重复名字
Integer sameCount = baseDao.checkSameName(formDTO.getRuleName(), formDTO.getCustomerId(), formDTO.getRuleId());
if (sameCount > NumConstant.ZERO){
throw new RenException(EpmetErrorCode.SAME_RULE_NAME.getCode());
}
// 检验积分上限是不是单位积分的整数倍
Integer remainder = formDTO.getUpLimit() % formDTO.getPoint();
if (remainder > NumConstant.ZERO){
throw new RenException(EpmetErrorCode.UP_LIMIT_POINT.getCode());
}
PointRuleEntity entityNew = ConvertUtils.sourceToTarget(formDTO, PointRuleEntity.class);
entityNew.setId(formDTO.getRuleId());
entityNew.setEnabledFlag(StrConstant.TRUE.equals(formDTO.getEnabledFlag()) ? "1" : "0");
@ -163,6 +189,70 @@ public class PointRuleServiceImpl extends BaseServiceImpl<PointRuleDao, PointRul
}
baseDao.updateByCustomerId(entityNew);
insertOperateRecord(tokenDTO, entityNew, entityDB, CommonOperateTypeEnum.EDIT.getCode());
// 系统日志记录
String messages = disposeLog(formDTO, entityDB);
log.info("要保存的日志========="+messages);
if (StringUtils.isNotBlank(messages)){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
PointRuleChangedMQMsg msg = new PointRuleChangedMQMsg();
msg.setFromApp(loginUserUtil.getLoginUserApp());
msg.setFromClient(loginUserUtil.getLoginUserClient());
msg.setIp(IpUtils.getIpAddr(request));
msg.setOperatingTime(new Date());
msg.setOperationBrief(messages);
msg.setOperatorId(loginUserUtil.getLoginUserId());
msg.setRuleId(formDTO.getRuleId());
SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendPointRuleChangedMqMsg(msg);
}
}
/**
* @Description 变更处理
* @Param f
* @Param e
* @author zxc
* @date 2021/6/18 3:14 下午
*/
private String disposeLog(PointRuleFormDTO f,PointRuleEntity e){
StringBuffer sb = new StringBuffer();
sb.append(String.format(StrConstant.POINT_CHANGE_HEAD,e.getRuleName()));
Boolean appendStatus = false;
// 单位积分
if (!e.getPoint().equals(f.getPoint())){
String s = String.format(StrConstant.POINT_CHANGE, "单位积分", f.getPoint());
sb.append(s).append(",");
appendStatus = true;
}
// 积分上限
if (!e.getUpLimit().equals(f.getUpLimit())){
String s = String.format(StrConstant.POINT_CHANGE, "积分上限", f.getUpLimit());
sb.append(s).append(",");
appendStatus = true;
}
// 积分说明
if (!e.getRuleDesc().equals(f.getRuleDesc())){
String s = String.format(StrConstant.POINT_CHANGE, "积分说明", f.getRuleDesc());
sb.append(s).append(",");
appendStatus = true;
}
// 规则启用 是否启用 0-否,1-是
String webStatus = f.getEnabledFlag().equals("true") ? "启用" : "关闭";
String javaStatus = e.getEnabledFlag().equals(NumConstant.ONE_STR) ? "启用" : "关闭";
if(!webStatus.equals(javaStatus)){
String s = String.format(StrConstant.POINT_CHANGE, "规则启用", webStatus);
sb.append(s).append(",");
appendStatus = true;
}
// 积分事件
if (!e.getRuleName().equals(f.getRuleName())){
String s = String.format(StrConstant.POINT_CHANGE, "积分事件", f.getRuleName());
sb.append(s).append(",");
appendStatus = true;
}
if (appendStatus.equals(false)){
return "";
}
return sb.substring(NumConstant.ZERO,sb.length() - NumConstant.ONE);
}
private void validateEnableFlag(PointRuleFormDTO formDTO) {

53
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java

@ -28,16 +28,23 @@ import com.epmet.commons.tools.enums.EventEnum;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dao.UserPointActionLogDao;
import com.epmet.dto.BizPointTotalDetailDTO;
import com.epmet.dto.BizPointUserTotalDetailDTO;
import com.epmet.dto.UserPointActionLogDTO;
import com.epmet.dto.VolunteerInfoDTO;
import com.epmet.dto.form.CommonPageUserFormDTO;
import com.epmet.dto.form.MyPointTaskFormDTO;
import com.epmet.dto.result.MyPointTaskResultDTO;
import com.epmet.dto.result.ResiPointLogListResultDTO;
import com.epmet.dto.result.ResiPointLogPeriodResultDTO;
import com.epmet.entity.*;
import com.epmet.entity.PointRuleEntity;
import com.epmet.entity.UserPointActionLogEntity;
import com.epmet.entity.UserPointStatisticalDailyEntity;
import com.epmet.entity.UserPointTotalEntity;
import com.epmet.feign.EpmetHeartOpenFeignClient;
import com.epmet.service.*;
import com.epmet.utils.DimIdGenerator;
import com.epmet.utils.ModuleConstant;
@ -54,7 +61,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -78,6 +84,9 @@ public class UserPointActionLogServiceImpl extends BaseServiceImpl<UserPointActi
private BizPointTotalDetailService bizPointTotalDetailService;
@Autowired
private BizPointUserTotalDetailService bizPointUserTotalDetailService;
@Autowired
private EpmetHeartOpenFeignClient epmetHeartOpenFeignClient;
@Override
public PageData<UserPointActionLogDTO> page(Map<String, Object> params) {
IPage<UserPointActionLogEntity> page = baseDao.selectPage(
@ -512,4 +521,42 @@ public class UserPointActionLogServiceImpl extends BaseServiceImpl<UserPointActi
int minusTotal = null == entity2? NumConstant.ZERO : entity2.getPoint();
return plusTotal - minusTotal;
}
/**
* 积分任务列表
*
* @param formDTO
* @return Result<MyPointTaskResultDTO>
*/
@Override
public List<MyPointTaskResultDTO> queryMyPointTaskList(MyPointTaskFormDTO formDTO) {
List<MyPointTaskResultDTO> list=baseDao.queryMyPointTaskList(formDTO.getCustomerId(),formDTO.getUserId(),formDTO.getType(), formDTO.getDateId());
list.forEach(dto->{
if(NumConstant.ZERO==dto.getUpLimit()){
//无上限
dto.setFinishTotalDesc("完成"+dto.getFinishedCount());
dto.setFinishFlag("去完成");
}else{
dto.setFinishTotalDesc("完成".concat(String.valueOf(dto.getFinishedCount())).concat("/").concat(String.valueOf(dto.getUpLimitCount())));
if (dto.getUpLimitCount().equals(dto.getFinishedCount()) || dto.getFinishedCount() > dto.getUpLimitCount()) {
dto.setFinishFlag("已完成");
} else {
dto.setFinishFlag("去完成");
}
}
//一次性任务,已完成。
if("1".equals(dto.getDisposable())&&dto.getFinishedCount().equals(NumConstant.ONE)){
dto.setFinishFlag("已完成");
}
//如果是注册志愿者
if ("register_volunteer".equals(dto.getEventCode())){
Result<VolunteerInfoDTO> volunteerInfoDTOResult= epmetHeartOpenFeignClient.queryUserVolunteerInfo(formDTO.getUserId());
if(volunteerInfoDTOResult.success()&&null!=volunteerInfoDTOResult.getData()){
dto.setFinishFlag("已完成");
dto.setFinishTotalDesc("完成1");
}
}
});
return list;
}
}

29
epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.11__point_rule_sort.sql

@ -0,0 +1,29 @@
alter table point_rule_default add COLUMN SORT INT(11) COMMENT '规则显示顺序' AFTER ENABLED_FLAG ;
alter table point_rule add COLUMN SORT INT(11) COMMENT '规则显示顺序' AFTER ENABLED_FLAG ;
alter table point_rule_default add COLUMN LINK_PAGE VARCHAR(32) COMMENT '链接页面' AFTER SORT ;
alter table point_rule add COLUMN LINK_PAGE VARCHAR(32) COMMENT '链接页面' AFTER SORT ;
alter table point_rule_default add COLUMN DISPOSABLE varchar(1) not null default '0' comment '一次性任务?1:是;0:不是' AFTER LINK_PAGE;
alter table point_rule add COLUMN DISPOSABLE varchar(1) not null default '0' comment '一次性任务?1:是;0:不是' AFTER LINK_PAGE;
update point_rule_default set sort='1001',LINK_PAGE='group' where EVENT_CODE='participate_one_topic' and DEL_FLAG='0';
update point_rule_default set sort='1002',LINK_PAGE='group' where EVENT_CODE='publish_one_topic' and DEL_FLAG='0';
update point_rule_default set sort='1003',LINK_PAGE='group' where EVENT_CODE='invite_resi_into_group' and DEL_FLAG='0';
update point_rule_default set sort='1004',LINK_PAGE='group' where EVENT_CODE='invite_new_into_group' and DEL_FLAG='0';
update point_rule_default set sort='1005',LINK_PAGE='group' where EVENT_CODE='leader_resolve_topic' and DEL_FLAG='0';
update point_rule_default set sort='1006',LINK_PAGE='group' where EVENT_CODE='shift_topic_to_issue' and DEL_FLAG='0';
update point_rule_default set sort='1007',LINK_PAGE='group' where EVENT_CODE='topic_to_issue' and DEL_FLAG='0';
update point_rule_default set sort='1008',LINK_PAGE='group' where EVENT_CODE='topic_to_project' and DEL_FLAG='0';
update point_rule_default set sort='2001',LINK_PAGE='heart',DISPOSABLE='1' where EVENT_CODE='register_volunteer' and DEL_FLAG='0';
update point_rule_default set sort='2002',LINK_PAGE='heart' where EVENT_CODE='active_insert_live' and DEL_FLAG='0';
update point_rule set sort='1001',LINK_PAGE='group' where EVENT_CODE='participate_one_topic' and DEL_FLAG='0';
update point_rule set sort='1002',LINK_PAGE='group' where EVENT_CODE='publish_one_topic' and DEL_FLAG='0';
update point_rule set sort='1003',LINK_PAGE='group' where EVENT_CODE='invite_resi_into_group' and DEL_FLAG='0';
update point_rule set sort='1004',LINK_PAGE='group' where EVENT_CODE='invite_new_into_group' and DEL_FLAG='0';
update point_rule set sort='1005',LINK_PAGE='group' where EVENT_CODE='leader_resolve_topic' and DEL_FLAG='0';
update point_rule set sort='1006',LINK_PAGE='group' where EVENT_CODE='shift_topic_to_issue' and DEL_FLAG='0';
update point_rule set sort='1007',LINK_PAGE='group' where EVENT_CODE='topic_to_issue' and DEL_FLAG='0';
update point_rule set sort='1008',LINK_PAGE='group' where EVENT_CODE='topic_to_project' and DEL_FLAG='0';
update point_rule set sort='2001',LINK_PAGE='heart' ,DISPOSABLE='1' where EVENT_CODE='register_volunteer' and DEL_FLAG='0';
update point_rule set sort='2002',LINK_PAGE='heart' where EVENT_CODE='active_insert_live' and DEL_FLAG='0';

2
epmet-module/epmet-point/epmet-point-server/src/main/resources/logback-spring.xml

@ -138,7 +138,7 @@
</appender>
<!-- 开发、测试环境 -->
<springProfile name="dev,test">
<springProfile name="dev,test,local">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="com.epmet.dao" level="INFO"/>

16
epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/PointRuleDao.xml

@ -33,13 +33,16 @@
CUSTOMER_ID = #{customerId,jdbcType=VARCHAR}
AND FUNCTION_ID = #{functionId,jdbcType=VARCHAR}
AND DEL_FLAG = '0'
order by sort asc
</select>
<update id="updateByCustomerId">
UPDATE point_rule
SET
POINT = #{point,jdbcType=INTEGER},
ENABLED_FLAG = #{enabledFlag,jdbcType=VARCHAR},
UP_LIMIT = #{upLimit,jdbcType=INTEGER}
UP_LIMIT = #{upLimit,jdbcType=INTEGER},
RULE_NAME = #{ruleName},
RULE_DESC = #{ruleDesc}
WHERE id = #{id,jdbcType=VARCHAR} and CUSTOMER_ID = #{customerId,jdbcType=VARCHAR}
</update>
@ -54,4 +57,15 @@
<select id="selectCustomerIds" resultType="java.lang.String">
SELECT DISTINCT CUSTOMER_ID FROM point_rule WHERE DEL_FLAG = '0'
</select>
<!-- 校验重名的规则 -->
<select id="checkSameName" resultType="java.lang.Integer">
SELECT
COUNT( ID )
FROM point_rule
WHERE DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId}
AND RULE_NAME = #{ruleName}
AND ID != #{ruleId}
</select>
</mapper>

69
epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointActionLogDao.xml

@ -73,4 +73,73 @@
AND OBJECT_ID = #{objectId}
AND DATE_FORMAT(CREATED_TIME, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')
</select>
<!-- 未完成:无上限的、一次性任务未完成的、非一次性任务完成数量< 积分上限次数的 -->
<!-- 已完成:有上线并且完成的、一次性任务完成的 -->
<select id="queryMyPointTaskList" parameterType="map" resultType="com.epmet.dto.result.MyPointTaskResultDTO">
select
temp.*
from (
SELECT
pr.RULE_NAME AS ruleName,
pr.RULE_DESC AS ruleDesc,
(
CASE
WHEN pr.OPERATE_TYPE = 'plus' THEN
CONCAT( '积分+', pr.POINT )
WHEN pr.OPERATE_TYPE = 'minus' THEN
CONCAT( '积分-', pr.POINT )
else '未知'
END
) AS pointDesc,
'' AS finishTotalDesc,
'' AS finishFlag,
pr.LINK_PAGE AS linkPage,
pr.EVENT_CODE AS eventCode,
pr.OPERATE_TYPE AS operateType,
pr.UP_LIMIT AS upLimit,
pr.POINT AS point,
(
SELECT
count( 1 )
FROM
user_point_action_log u
WHERE
u.USER_ID = #{userId}
AND u.EVENT_ID = pr.EVENT_CODE
AND u.DEL_FLAG = '0'
AND u.CUSTOMER_ID = #{customerId}
AND DATE_FORMAT( u.CREATED_TIME, '%Y%m%d' ) =#{dateId}
) AS finishedCount,
(case when pr.UP_LIMIT='0' then '0'
else CEIL(pr.UP_LIMIT/pr.point)
end
)as upLimitCount,
pr.sort,
pr.DISPOSABLE as disposable
FROM
point_rule pr
WHERE
pr.DEL_FLAG = '0'
AND pr.CUSTOMER_ID = #{customerId}
AND pr.ENABLED_FLAG = '1'
)temp
where 1=1
<if test='null != type and "unfinished" == type'>
AND (
temp.upLimit='0'
or ( temp.upLimit !='0' and temp.DISPOSABLE = '0' AND temp.finishedCount &lt; upLimitCount )
OR ( temp.upLimit !='0' and temp.DISPOSABLE = '1' AND temp.finishedCount = 0 )
)
</if>
<if test='null != type and "finished" == type'>
and (
( temp.upLimit !='0' and temp.DISPOSABLE='0' and temp.finishedCount=temp.upLimitCount and temp.finishedCount !=0)
or(temp.DISPOSABLE='1'and temp.finishedCount=1)
)
</if>
ORDER BY temp.sort ASC
</select>
</mapper>

10
epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointTotalDao.xml

@ -35,7 +35,15 @@
<select id="selectPointByCustomerUserId" resultType="com.epmet.dto.result.ResiPointDetailResultDTO">
SELECT
USABLE_POINT AS usablePoint,
TOTAL_POINT AS accumulatedPoint
TOTAL_POINT AS accumulatedPoint,
(
select IFNULL(sum(u.POINT),0) from user_point_action_log u
where u.DEL_FLAG='0'
and u.CUSTOMER_ID=#{customerId}
and u.USER_ID=#{userId}
and u.EVENT_ID !='manual'
AND DATE_FORMAT(u.CREATED_TIME, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')
)as todayObtainedPoint
FROM
USER_POINT_TOTAL
WHERE

5
epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/MyResiUserInfoResultDTO.java

@ -47,4 +47,9 @@ public class MyResiUserInfoResultDTO implements Serializable {
* */
private Integer point;
/**
* 今日已获得积分用于积分任务列表显示
* */
private Integer todayObtainedPoint;
}

4
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyResiUserInfoResultDTO.java

@ -48,4 +48,8 @@ public class MyResiUserInfoResultDTO implements Serializable {
* */
private Integer point;
/**
* 今日已获得积分用于积分任务列表显示
* */
private Integer todayObtainedPoint;
}

2
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java

@ -209,6 +209,8 @@ public class UserServiceImpl extends BaseServiceImpl<UserDao, UserEntity> implem
if(pointResult.success() && null != pointResult.getData()){
//累计积分
result.setPoint(pointResult.getData().getUsablePoint());
//今日已获得积分,用于积分任务列表显示
result.setTodayObtainedPoint(pointResult.getData().getTodayObtainedPoint());
}
return result;
}

Loading…
Cancel
Save