|  | @@ -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));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  }
 |