Browse Source

活动积分发放 MqCallback

dev_shibei_match
wangchao 5 years ago
parent
commit
36ab80c42f
  1. 5
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/UserPointActionLogDTO.java
  2. 45
      epmet-module/epmet-point/epmet-point-client/src/main/java/dto/form/SendPointFormDTO.java
  3. 2
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/MqPointCallbackController.java
  4. 7
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/UserPointActionLogEntity.java
  5. 9
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointActionLogService.java
  6. 72
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java
  7. 1
      epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointActionLogDao.xml

5
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; private String actionFlag;
/**
* 来源Id可以是活动Id
* */
private String sourceId;
/** /**
* 来源ID 当来源为积分调整时 通过事件Id查找规则ID计算出分数 通过EVENT_ID能查出RUIE_ID * 来源ID 当来源为积分调整时 通过事件Id查找规则ID计算出分数 通过EVENT_ID能查出RUIE_ID
*/ */

45
epmet-module/epmet-point/epmet-point-client/src/main/java/dto/form/SendPointFormDTO.java

@ -14,5 +14,50 @@ import lombok.Data;
@Data @Data
public class SendPointFormDTO { public class SendPointFormDTO {
private String pointDesc; private String pointDesc;
/**
* 积分
* */
private Integer point; 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;
} }

2
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); SendPointFormDTO formDTO = ConvertUtils.sourceToTarget(mqMsg.getMsg(), SendPointFormDTO.class);
try { try {
//TODO 调用调整积分方法去给用户加减积分 userPointActionLogService. userPointActionLogService.grantPoint(formDTO);
} catch (Exception e) { } catch (Exception e) {
logger.error("activeSendPoint consume fail,msg:{}",JSON.toJSONString(mqMsg.getMsg())); logger.error("activeSendPoint consume fail,msg:{}",JSON.toJSONString(mqMsg.getMsg()));
throw new RenException(EpmetErrorCode.SERVER_ERROR.getMsg()); throw new RenException(EpmetErrorCode.SERVER_ERROR.getMsg());

7
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; private String actionFlag;
/** /**
* 来源ID 当来源为积分调整时 通过事件Id查找规则ID计算出分数 通过EVENT_ID能查出RUIE_ID * 当来源为积分调整时 通过事件Id查找规则ID计算出分数 通过EVENT_ID能查出RUIE_ID
*/ */
private String eventId; private String eventId;
/**
* 来源Id可以是活动Id
* */
private String sourceId;
/** /**
* 活动描述 获取积分的原因相关内容用来拼接用户参加了xxx活动获取积分的文案取活动的名称积分调整文案其他 * 活动描述 获取积分的原因相关内容用来拼接用户参加了xxx活动获取积分的文案取活动的名称积分调整文案其他
如果是管理员手动调整扣减积分ACTION_FLAG为"minus"但是不会生成核销记录核销记录只保存用户使用积分兑换商品的核销详情 如果是管理员手动调整扣减积分ACTION_FLAG为"minus"但是不会生成核销记录核销记录只保存用户使用积分兑换商品的核销详情

9
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.form.CommonPageUserFormDTO;
import com.epmet.dto.result.ResiPointLogListResultDTO; import com.epmet.dto.result.ResiPointLogListResultDTO;
import com.epmet.entity.UserPointActionLogEntity; import com.epmet.entity.UserPointActionLogEntity;
import dto.form.SendPointFormDTO;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -104,5 +105,13 @@ public interface UserPointActionLogService extends BaseService<UserPointActionLo
**/ **/
List<ResiPointLogListResultDTO> getMyPointRecord(CommonPageUserFormDTO pageUser); List<ResiPointLogListResultDTO> getMyPointRecord(CommonPageUserFormDTO pageUser);
/**
* @Description 消息网关回调进行积分发放
* @param grantPointParam
* @return
* @author wangc
* @date 2020.07.29 09:11
**/
void grantPoint(SendPointFormDTO grantPointParam);
} }

72
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.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; 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.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant; 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.ResiPointLogListResultDTO;
import com.epmet.dto.result.ResiPointLogPeriodResultDTO; import com.epmet.dto.result.ResiPointLogPeriodResultDTO;
import com.epmet.entity.UserPointActionLogEntity; import com.epmet.entity.UserPointActionLogEntity;
import com.epmet.entity.UserPointStatisticalDailyEntity;
import com.epmet.entity.UserPointTotalEntity;
import com.epmet.service.UserPointActionLogService; 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.github.pagehelper.PageHelper;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import dto.form.SendPointFormDTO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -48,6 +58,10 @@ import java.util.stream.Collectors;
@Service @Service
public class UserPointActionLogServiceImpl extends BaseServiceImpl<UserPointActionLogDao, UserPointActionLogEntity> implements UserPointActionLogService { public class UserPointActionLogServiceImpl extends BaseServiceImpl<UserPointActionLogDao, UserPointActionLogEntity> implements UserPointActionLogService {
@Autowired
private UserPointTotalService userPointTotalService;
@Autowired
private UserPointStatisticalDailyService userPointStatisticalDailyService;
@Override @Override
public PageData<UserPointActionLogDTO> page(Map<String, Object> params) { public PageData<UserPointActionLogDTO> page(Map<String, Object> params) {
@ -131,4 +145,62 @@ public class UserPointActionLogServiceImpl extends BaseServiceImpl<UserPointActi
return result; return result;
} }
/**
* @Description 消息网关回调进行积分发放
* @param grantPointParam
* @return
* @author wangc
* @date 2020.07.29 09:11
**/
@Override
public void grantPoint(SendPointFormDTO grantPointParam){
if(StringUtils.equals(ModuleConstant.OPERATION_TYPE_MINUS,grantPointParam.getActionFlag())){
//减
if(grantPointParam.getPoint() > 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);
}
} }

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

@ -9,6 +9,7 @@
<result property="customerId" column="CUSTOMER_ID"/> <result property="customerId" column="CUSTOMER_ID"/>
<result property="actionFlag" column="ACTION_FLAG"/> <result property="actionFlag" column="ACTION_FLAG"/>
<result property="eventId" column="EVENT_ID"/> <result property="eventId" column="EVENT_ID"/>
<result property="sourceId" column="SOURCE_ID" />
<result property="eventStatement" column="EVENT_STATEMENT"/> <result property="eventStatement" column="EVENT_STATEMENT"/>
<result property="eventName" column="EVENT_NAME"/> <result property="eventName" column="EVENT_NAME"/>
<result property="point" column="POINT"/> <result property="point" column="POINT"/>

Loading…
Cancel
Save