|
@@ -2,18 +2,25 @@ package cn.newfeifan.mall.module.distri.service.duser;
|
|
|
|
|
|
import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
import cn.newfeifan.mall.module.distri.controller.admin.integral.vo.IntegralSaveReqVO;
|
|
|
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.bo.SocialStatusBO;
|
|
|
import cn.newfeifan.mall.module.distri.controller.app.sharepath.vo.SharePathSaveReqVO;
|
|
|
import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
|
|
|
+import cn.newfeifan.mall.module.distri.dal.dataobject.orderpercentage.OrderPercentageDO;
|
|
|
+import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatus.SocialStatusDO;
|
|
|
+import cn.newfeifan.mall.module.distri.dal.mysql.orderpercentage.OrderPercentageMapper;
|
|
|
+import cn.newfeifan.mall.module.distri.enums.SocialStatusEnum;
|
|
|
import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
|
|
|
import cn.newfeifan.mall.module.distri.service.ptprofitlog.PtProfitLogService;
|
|
|
import cn.newfeifan.mall.module.distri.service.sharepath.SharePathService;
|
|
|
import cn.newfeifan.mall.module.distri.service.socialstatus.SocialStatusService;
|
|
|
+import cn.newfeifan.mall.module.distri.service.socialstatuschangelog.SocialStatusChangeLogService;
|
|
|
import cn.newfeifan.mall.module.member.dal.dataobject.user.MemberUserDO;
|
|
|
import cn.newfeifan.mall.module.member.service.user.MemberUserService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
import cn.newfeifan.mall.module.distri.controller.admin.duser.vo.*;
|
|
@@ -24,8 +31,10 @@ import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
|
|
|
import cn.newfeifan.mall.module.distri.dal.mysql.duser.DuserMapper;
|
|
|
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
+import static cn.newfeifan.mall.module.distri.constant.DistriConstants.PT_ID;
|
|
|
import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.*;
|
|
|
|
|
|
/**
|
|
@@ -49,6 +58,12 @@ public class DuserServiceImpl implements DuserService {
|
|
|
@Resource
|
|
|
private PtProfitLogService ptProfitLogService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private OrderPercentageMapper orderPercentageMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private SocialStatusChangeLogService socialStatusChangeLogService;
|
|
|
+
|
|
|
@Override
|
|
|
public Long createDuser(DuserSaveReqVO createReqVO) {
|
|
|
// 插入
|
|
@@ -110,7 +125,8 @@ public class DuserServiceImpl implements DuserService {
|
|
|
|
|
|
@Override
|
|
|
public DuserInfoVO getDuserInfo(Long userId) {
|
|
|
-
|
|
|
+ DuserDO duser = getDuserByUser(userId);
|
|
|
+ SocialStatusDO socialStatus = socialStatusService.getSocialStatus(duser.getSocialStatusId());
|
|
|
|
|
|
hasUserAndCreat(userId);
|
|
|
// 先初始化
|
|
@@ -135,8 +151,15 @@ public class DuserServiceImpl implements DuserService {
|
|
|
totalLog = ptProfitLogService.getTotalLog(sonsId);
|
|
|
}
|
|
|
|
|
|
- return duserInfoVOBuilder.descPrice(Long.parseLong(yesterday))
|
|
|
- .descTotalPrice(Long.parseLong(totalLog)).build();
|
|
|
+ return duserInfoVOBuilder
|
|
|
+ .descPrice(Long.parseLong(yesterday))
|
|
|
+ .descTotalPrice(Long.parseLong(totalLog))
|
|
|
+ .socialUpNeed(duser.getSocialUpNeed())
|
|
|
+ .socialStatusId(duser.getSocialStatusId())
|
|
|
+ .socialStatusPoint(duser.getSocialStatusPoint())
|
|
|
+ .socialStatusLevel(socialStatus.getLevel())
|
|
|
+ .socialStatusLevelName(socialStatus.getName())
|
|
|
+ .build();
|
|
|
|
|
|
}
|
|
|
|
|
@@ -158,6 +181,9 @@ public class DuserServiceImpl implements DuserService {
|
|
|
integralDO = new IntegralDO().setId(integralId);
|
|
|
}
|
|
|
if (duserDO == null) {
|
|
|
+ OrderPercentageDO orderPercentageDO = orderPercentageMapper.selectList().get(0);
|
|
|
+ SocialStatusBO socialStatusBO = socialStatusService.calculateSocial(Long.valueOf(orderPercentageDO.getRegisterSocialStatus()));
|
|
|
+
|
|
|
// 创建一个新的营销用户
|
|
|
DuserSaveReqVO duserSaveReqVO = DuserSaveReqVO.builder()
|
|
|
.userId(userId)
|
|
@@ -166,11 +192,39 @@ public class DuserServiceImpl implements DuserService {
|
|
|
.nickName(user.getNickname())
|
|
|
.integralId(integralDO.getId())
|
|
|
.source(userId)
|
|
|
- .socialStatus(1L)
|
|
|
- .socialStatusPoint(0L)
|
|
|
+ .socialStatusPoint(Long.valueOf(orderPercentageDO.getRegisterSocialStatus()))
|
|
|
+ .socialStatusId(socialStatusBO.getId())
|
|
|
+ .socialUpNeed(socialStatusBO.getSocialUpNeed())
|
|
|
.build();
|
|
|
duserMapper.insert(BeanUtils.toBean(duserSaveReqVO, DuserDO.class));
|
|
|
+ socialStatusChangeLogService.createSocialStatusChangeLog(userId, Long.valueOf(orderPercentageDO.getRegisterAncestorSocialStatus()),userId, SocialStatusEnum.REGISTER_SOCIAL);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void updateDuserSocial(Long userId, Long social, Integer socialStatus) {
|
|
|
+
|
|
|
+ //平台不参与身价
|
|
|
+ if(Objects.equals(userId, PT_ID)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //计算本次获得的身价
|
|
|
+ DuserDO duser = getDuserByUser(userId);
|
|
|
+ duser.setSocialStatusPoint(duser.getSocialStatusPoint() + social);
|
|
|
+
|
|
|
+ SocialStatusBO socialStatusBO = socialStatusService.calculateSocial(duser.getSocialStatusPoint());
|
|
|
+ duser.setSocialUpNeed(socialStatusBO.getSocialUpNeed());
|
|
|
+ duser.setSocialStatusId(socialStatusBO.getId());
|
|
|
+ duserMapper.updateById(duser);
|
|
|
+
|
|
|
+ socialStatusChangeLogService.createSocialStatusChangeLog(userId, social,userId, SocialStatusEnum.getSocialStatusEnumByCode(socialStatus));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public DuserDO getDuserByUser(Long id) {
|
|
|
+ return duserMapper.selectOne(new LambdaQueryWrapperX<DuserDO>().eq(DuserDO::getUserId, id));
|
|
|
+ }
|
|
|
+
|
|
|
}
|