diff --git a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/RocketMQConsumerRegister.java b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/RocketMQConsumerRegister.java index ef71399b7d..1399fe6a13 100644 --- a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/RocketMQConsumerRegister.java +++ b/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(); diff --git a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/PointOperationLogListener.java b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/PointOperationLogListener.java new file mode 100644 index 0000000000..f953c35edc --- /dev/null +++ b/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 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); + } + } +} diff --git a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java index ef5970dbb3..890d19acf1 100644 --- a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java +++ b/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"; } diff --git a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java index 70d4e006f8..8fe36aa53a 100644 --- a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java +++ b/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"; } diff --git a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/PointRuleChangedMQMsg.java b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/PointRuleChangedMQMsg.java new file mode 100644 index 0000000000..073d18821c --- /dev/null +++ b/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; +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java index 25cfa3e0b2..c601d2fd71 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java +++ b/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规则,"; } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index 2538492bb8..b23c50ee42 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/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; diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java index f57bb25da3..50efc65a6e 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java +++ b/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> getPublishedAct(@PathVariable("staffId") String staffId); + + /** + * @return com.epmet.commons.tools.utils.Result + * @param userId + * @author yinzuomei + * @description 根据用户id,查询用户的注册志愿者信息 + * @Date 2021/6/28 9:30 + **/ + @PostMapping("/heart/resi/volunteer/queryuservolunteerinfo/{userId}") + Result queryUserVolunteerInfo(@PathVariable("userId") String userId); } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java index 8c4f0be34a..9e4d671a3b 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java +++ b/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> getPublishedAct(String staffId) { return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "getPublishedAct", staffId); } + + /** + * @param userId + * @return com.epmet.commons.tools.utils.Result + * @author yinzuomei + * @description 根据用户id,查询用户的注册志愿者信息 + * @Date 2021/6/28 9:30 + **/ + @Override + public Result queryUserVolunteerInfo(String userId) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "queryUserVolunteerInfo", userId); + } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java index 4f31298977..00a07440ca 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java +++ b/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>().ok(volunteerInfoService.getVolunteerIds(customerFormDTO)); } + + /** + * @return com.epmet.commons.tools.utils.Result + * @param userId + * @author yinzuomei + * @description 根据用户id,查询用户的注册志愿者信息 + * @Date 2021/6/28 9:34 + **/ + @PostMapping("queryuservolunteerinfo/{userId}") + public Result queryUserVolunteerInfo(@PathVariable("userId")String userId){ + return new Result().ok(volunteerInfoService.queryUserVolunteerInfo(userId)); + } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java index 398d48aa5b..53ac849cb8 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java +++ b/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 { * @date 2020.08.13 10:22 **/ List getVolunteerIds(CommonCustomerFormDTO customerFormDTO); + + /** + * 根据用户id,查询用户的注册志愿者信息 + * + * @param userId + * @return com.epmet.dto.VolunteerInfoDTO + */ + VolunteerInfoDTO queryUserVolunteerInfo(String userId); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java index 6949505c9f..71b318ba0a 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java @@ -208,4 +208,16 @@ public class VolunteerInfoServiceImpl extends BaseServiceImpljar - + + com.epmet + epmet-message-client + 2.0.0 + com.epmet epmet-commons-tools @@ -93,6 +97,12 @@ 2.0.0 compile + + com.epmet + epmet-heart-client + 2.0.0 + compile + diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/PointRuleController.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/PointRuleController.java index 9027eac8e1..6b097270d7 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/PointRuleController.java +++ b/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 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().ok(true); } diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/ResiPointController.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/ResiPointController.java index 5c3b666fa1..b52a602ede 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/ResiPointController.java +++ b/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 resultDTOS = userPointStatisticalDailyService.listAroundPartyPointRank(formDTO); return new Result>().ok(resultDTOS); } + + /** + * @return com.epmet.commons.tools.utils.Result> + * @param tokenDto + * @param formDTO + * @author yinzuomei + * @description 积分任务列表 + * @Date 2021/6/18 14:19 + **/ + @PostMapping("mytasklist") + public Result> 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>().ok(pointActionLogService.queryMyPointTaskList(formDTO)); + } } diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/PointRuleDao.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/PointRuleDao.java index 9d5dbecdd3..0d304b8ae3 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/PointRuleDao.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/PointRuleDao.java @@ -56,4 +56,13 @@ public interface PointRuleDao extends BaseDao { List 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); + } \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointActionLogDao.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointActionLogDao.java index a2c1963e85..1db465d453 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/UserPointActionLogDao.java +++ b/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 * @return java.lang.Integer */ Integer selectIncrease(@Param("type")String type, @Param("objectId")String objectId); + + List queryMyPointTaskList(@Param("customerId")String customerId, + @Param("userId")String userId, + @Param("type")String type, + @Param("dateId")String dateId); } \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleDefaultEntity.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleDefaultEntity.java index bbb6055148..9b5cd7f6bc 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleDefaultEntity.java +++ b/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; } diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleEntity.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleEntity.java index 6468d86afb..7191215345 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleEntity.java +++ b/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; diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointActionLogService.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointActionLogService.java index 892fd67a11..314b9b46db 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointActionLogService.java +++ b/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 + */ + List queryMyPointTaskList(MyPointTaskFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointRuleServiceImpl.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointRuleServiceImpl.java index de0f13ac4d..1291a777e2 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointRuleServiceImpl.java +++ b/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 getFunctionList(String customerId) { @@ -145,15 +155,31 @@ public class PointRuleServiceImpl extends BaseServiceImpl 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 page(Map params) { IPage page = baseDao.selectPage( @@ -512,4 +521,42 @@ public class UserPointActionLogServiceImpl extends BaseServiceImpl + */ + @Override + public List queryMyPointTaskList(MyPointTaskFormDTO formDTO) { + List 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 volunteerInfoDTOResult= epmetHeartOpenFeignClient.queryUserVolunteerInfo(formDTO.getUserId()); + if(volunteerInfoDTOResult.success()&&null!=volunteerInfoDTOResult.getData()){ + dto.setFinishFlag("已完成"); + dto.setFinishTotalDesc("完成1"); + } + } + }); + return list; + } } \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.11__point_rule_sort.sql b/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.11__point_rule_sort.sql new file mode 100644 index 0000000000..76f4b2addd --- /dev/null +++ b/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'; \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/logback-spring.xml b/epmet-module/epmet-point/epmet-point-server/src/main/resources/logback-spring.xml index 916c58edbb..319395e4f4 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/resources/logback-spring.xml +++ b/epmet-module/epmet-point/epmet-point-server/src/main/resources/logback-spring.xml @@ -138,7 +138,7 @@ - + diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/PointRuleDao.xml b/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/PointRuleDao.xml index c18c78976b..4bde53c962 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/PointRuleDao.xml +++ b/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 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} @@ -54,4 +57,15 @@ + + + diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointActionLogDao.xml b/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointActionLogDao.xml index c7c6bf89c2..d2a4f0f212 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointActionLogDao.xml +++ b/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') + + + + + + \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointTotalDao.xml b/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointTotalDao.xml index bcf4735cb8..e9fb92c22f 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointTotalDao.xml +++ b/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointTotalDao.xml @@ -35,7 +35,15 @@