diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/UserPointActionLogDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/UserPointActionLogDTO.java index 254e53bbd6..113572b051 100644 --- a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/UserPointActionLogDTO.java +++ b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/UserPointActionLogDTO.java @@ -53,6 +53,11 @@ public class UserPointActionLogDTO implements Serializable { */ private String actionFlag; + /** + * 来源Id,可以是活动Id + * */ + private String sourceId; + /** * 来源ID 当来源为积分调整时 通过事件Id查找规则ID计算出分数 通过EVENT_ID能查出RUIE_ID */ diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/dto/form/SendPointFormDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/dto/form/SendPointFormDTO.java index ae4c7aeeba..fef7e11cc5 100644 --- a/epmet-module/epmet-point/epmet-point-client/src/main/java/dto/form/SendPointFormDTO.java +++ b/epmet-module/epmet-point/epmet-point-client/src/main/java/dto/form/SendPointFormDTO.java @@ -14,5 +14,50 @@ import lombok.Data; @Data public class SendPointFormDTO { private String pointDesc; + + /** + * 积分 + * */ private Integer point; + + /** + * 操作人机关id + */ + private String opAgencyId; + + /** + * 操作人Id,当有固定的操作人时,传入此值,如果没有则为空 + * */ + private String operatorId; + + /** + * 客户Id + */ + private String customerId; + /** + * 被操作用户id + */ + private String userId; + + /** + * 加减分标识 plus/minus + */ + private String actionFlag; + + + /** + * 是否是通用事件,通用事件不走规则 + */ + private Boolean isCommon; + + /** + * 备注 + */ + private String remark; + + /** + * 业务id eg:活动id + */ + private String sourceId; + } diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/MqPointCallbackController.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/MqPointCallbackController.java index 51146befb0..10b21cf105 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/MqPointCallbackController.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/MqPointCallbackController.java @@ -46,7 +46,7 @@ public class MqPointCallbackController { } SendPointFormDTO formDTO = ConvertUtils.sourceToTarget(mqMsg.getMsg(), SendPointFormDTO.class); try { - //TODO 调用调整积分方法去给用户加减积分 userPointActionLogService. + userPointActionLogService.grantPoint(formDTO); } catch (Exception e) { logger.error("activeSendPoint consume fail,msg:{}",JSON.toJSONString(mqMsg.getMsg())); throw new RenException(EpmetErrorCode.SERVER_ERROR.getMsg()); diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/UserPointActionLogEntity.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/UserPointActionLogEntity.java index 4c72c5659a..b52ed79b2f 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/UserPointActionLogEntity.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/UserPointActionLogEntity.java @@ -54,10 +54,15 @@ public class UserPointActionLogEntity extends BaseEpmetEntity { private String actionFlag; /** - * 来源ID 当来源为积分调整时 通过事件Id查找规则ID计算出分数 通过EVENT_ID能查出RUIE_ID + * 当来源为积分调整时 通过事件Id查找规则ID计算出分数 通过EVENT_ID能查出RUIE_ID */ private String eventId; + /** + * 来源Id,可以是活动Id + * */ + private String sourceId; + /** * 活动描述 获取积分的原因,相关内容,用来拼接【用户参加了xxx活动获取?积分】的文案,取活动的名称;【积分调整文案】;其他…… 如果是管理员手动调整扣减积分,ACTION_FLAG为"minus",但是不会生成核销记录,核销记录只保存用户使用积分兑换商品的核销详情 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 84d6379e22..81873314f7 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 @@ -23,6 +23,7 @@ import com.epmet.dto.UserPointActionLogDTO; import com.epmet.dto.form.CommonPageUserFormDTO; import com.epmet.dto.result.ResiPointLogListResultDTO; import com.epmet.entity.UserPointActionLogEntity; +import dto.form.SendPointFormDTO; import java.util.List; import java.util.Map; @@ -104,5 +105,13 @@ public interface UserPointActionLogService extends BaseService getMyPointRecord(CommonPageUserFormDTO pageUser); + /** + * @Description 消息网关回调进行积分发放 + * @param grantPointParam + * @return + * @author wangc + * @date 2020.07.29 09:11 + **/ + void grantPoint(SendPointFormDTO grantPointParam); } \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java index a3d82366c2..fd06cf41e0 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java @@ -20,6 +20,8 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.enums.EventEnum; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.constant.FieldConstant; @@ -29,10 +31,18 @@ import com.epmet.dto.form.CommonPageUserFormDTO; import com.epmet.dto.result.ResiPointLogListResultDTO; import com.epmet.dto.result.ResiPointLogPeriodResultDTO; import com.epmet.entity.UserPointActionLogEntity; +import com.epmet.entity.UserPointStatisticalDailyEntity; +import com.epmet.entity.UserPointTotalEntity; import com.epmet.service.UserPointActionLogService; +import com.epmet.service.UserPointStatisticalDailyService; +import com.epmet.service.UserPointTotalService; +import com.epmet.utils.DimIdGenerator; +import com.epmet.utils.ModuleConstant; import com.github.pagehelper.PageHelper; import com.google.common.collect.Maps; +import dto.form.SendPointFormDTO; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -48,6 +58,10 @@ import java.util.stream.Collectors; @Service public class UserPointActionLogServiceImpl extends BaseServiceImpl implements UserPointActionLogService { + @Autowired + private UserPointTotalService userPointTotalService; + @Autowired + private UserPointStatisticalDailyService userPointStatisticalDailyService; @Override public PageData page(Map params) { @@ -131,4 +145,62 @@ public class UserPointActionLogServiceImpl extends BaseServiceImpl NumConstant.ZERO){ + //保证负数 + grantPointParam.setPoint(grantPointParam.getPoint() * NumConstant.ONE_NEG); + } + }else{ + //加 + if(grantPointParam.getPoint() < NumConstant.ZERO){ + //保证正数 + grantPointParam.setPoint(grantPointParam.getPoint() * NumConstant.ONE_NEG); + } + } + //1.新增用户积分行为记录 + UserPointActionLogEntity action = new UserPointActionLogEntity(); + action.setCustomerId(grantPointParam.getCustomerId()); + action.setPoint(grantPointParam.getPoint()); + action.setEventStatement(grantPointParam.getPointDesc()); + action.setEventName(EventEnum.ACTIVE_SEND_POINT.getEventDesc()); + action.setEventId(EventEnum.ACTIVE_INSERT_LIVE.getEventTag()); + action.setActionFlag(grantPointParam.getActionFlag()); + action.setUserId(grantPointParam.getUserId()); + action.setCreatedBy(grantPointParam.getOperatorId()); + action.setUpdatedBy(grantPointParam.getOperatorId()); + action.setSourceId(grantPointParam.getSourceId()); + action.setOperatorAgencyId(grantPointParam.getOpAgencyId()); + baseDao.insert(action); + //2.新增/修改用户积分日统计 + DimIdGenerator.DimIdBean dimVal = DimIdGenerator.getDimIdBean(new Date()); + UserPointStatisticalDailyEntity statistical = ConvertUtils.sourceToTarget(dimVal,UserPointStatisticalDailyEntity.class); + statistical.setPointChange(grantPointParam.getPoint()); + statistical.setActionFlag(grantPointParam.getActionFlag()); + statistical.setCustomerId(grantPointParam.getCustomerId()); + statistical.setUserId(grantPointParam.getUserId()); + statistical.setCreatedBy(grantPointParam.getOperatorId()); + statistical.setUpdatedBy(grantPointParam.getOperatorId()); + userPointStatisticalDailyService.insertOrUpdate(statistical); + //3.新增/修改用户总积分 + UserPointTotalEntity point = new UserPointTotalEntity(); + point.setCustomerId(grantPointParam.getCustomerId()); + point.setUserId(grantPointParam.getUserId()); + point.setTotalPoint(grantPointParam.getPoint()); + point.setUsablePoint(grantPointParam.getPoint()); + point.setUsedPoint(NumConstant.ZERO); + point.setCreatedBy(grantPointParam.getOperatorId()); + point.setUpdatedBy(grantPointParam.getOperatorId()); + userPointTotalService.insertOrUpdate(point); + } + } \ No newline at end of file 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 57c6c0b81f..bd81ab9aff 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 @@ -9,6 +9,7 @@ +