| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- package com.ydtech.modules.partner.utils;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.extra.spring.SpringUtil;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.ydtech.modules.admin.model.SysUser;
- import com.ydtech.modules.admin.service.SysUserService;
- import com.ydtech.modules.admin.service.impl.SysUserServiceImpl;
- import com.ydtech.modules.partner.dao.PartnerUserMapper;
- import com.ydtech.modules.partner.model.PartnerAttribute;
- import com.ydtech.modules.partner.model.PartnerLiftingRecord;
- import com.ydtech.modules.partner.model.PartnerUser;
- import com.ydtech.modules.partner.model.param.PartnerRuleEntity;
- import com.ydtech.modules.partner.service.PartnerLiftingRecordService;
- import com.ydtech.modules.partner.service.PartnerRuleService;
- import com.ydtech.utils.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import org.springframework.transaction.annotation.Transactional;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.Date;
- import java.util.List;
- import java.util.Objects;
- /**
- * 降级辅助 类
- */
- @Component
- public class ExpiredCommissionUtils {
- @Autowired
- private PartnerUserMapper partnerUserMapper;
- @Autowired
- private PartnerRuleService partnerRuleService;
- @Autowired
- private PartnerLiftingRecordService liftingRecordService;
- @Autowired
- private SysUserService sysUserService;
- /**
- * 登录初始化用户升级时间
- */
- @Transactional(rollbackFor = Exception.class)
- public void initCommissionExpireTime(String userId) {
- // 等级规则
- List<PartnerRuleEntity> partnerRuleEntities = partnerRuleService.queryAll();
- List<PartnerUser> partnerUsers = partnerUserMapper.selectList(new QueryWrapper<PartnerUser>().eq("user_id", userId));
- for (PartnerUser partnerUser : partnerUsers) {
- if (1 == partnerUser.getGrade()) {
- continue;
- }
- PartnerRuleEntity rule = getRule(String.valueOf(partnerUser.getGrade()), partnerRuleEntities);
- PartnerAttribute cycle = rule.getCycle();
- String grade = String.valueOf(partnerUser.getGrade());
- if ("1".equals(cycle.getCycle())) {
- Date upgradeTime = partnerUserMapper.selectUpgradeTime(userId, grade);
- if (upgradeTime == null) {
- partnerUserMapper.updateUpgradeTime(userId, grade);
- }
- } else if ("2".equals(cycle.getCycle())) {
- Date upgradeTime = partnerUserMapper.selectUpgradeTime(userId, grade);
- if (upgradeTime == null) {
- partnerUserMapper.updateUpgradeTime(userId, grade);
- upgradeTime = partnerUserMapper.selectUpgradeTime(userId, grade);
- }
- String fixedDays = cycle.getFixedDays();
- if (!PartnerDateUtils.isWithinDays(upgradeTime, Integer.valueOf(fixedDays))) {
- updateUpgradeTimeByDate(upgradeTime, Integer.valueOf(fixedDays), userId, partnerUser.getGrade());
- }
- } else if ("3".equals(cycle.getCycle())) {
- // TODO: 添加相应的逻辑处理
- }
- }
- }
- public PartnerRuleEntity getRule(String grade,List<PartnerRuleEntity> partnerRuleEntities) {
- return partnerRuleEntities.stream().filter(partnerRuleEntity -> StringUtils.equals(partnerRuleEntity.getGrade(), grade)).findAny().orElse(null);
- }
- private void updateUpgradeTimeByDate(Date assessmentTime, int days, String userId,Integer grade) {
- Date newDate = PartnerDateUtils.addDaysToday(assessmentTime, days);
- while (!PartnerDateUtils.isWithinDays(newDate, days)) {
- newDate = PartnerDateUtils.addDaysToday(newDate, days);
- }
- partnerUserMapper.updateUpgradeTimeByDate(userId, newDate,grade);
- }
- /**
- * 登录初始化过期时间
- */
- @Transactional(rollbackFor = Exception.class)
- public void initializeExpirationTime(String userId) {
- List<PartnerUser> partnerUsers = partnerUserMapper.selectList(new QueryWrapper<PartnerUser>().eq("user_id", userId));
- for (PartnerUser partnerUser : partnerUsers) {
- if (null == partnerUser.getUpgradeCycleStartTime()){
- partnerUserMapper.updateUpgradeStartTime(userId, partnerUser.getGrade());
- }
- }
- }
- /**
- * TODO: 登录计算用户身份是否过期
- */
- // @Transactional(rollbackFor = Exception.class)
- // public void checkCommissionExpireTime(String userId) {
- // // TODO等级规则
- // List<PartnerRuleEntity> partnerRuleEntities = partnerRuleService.queryAll();
- // SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- // List<PartnerUser> partnerUsers = partnerUserMapper.selectList(new QueryWrapper<PartnerUser>().eq("user_id", userId));
- // for (PartnerUser partnerUser : partnerUsers) {
- // if (1 == partnerUser.getGrade() || partnerUser.isIdentityStatus()) {
- // continue;
- // }
- // PartnerRuleEntity rule = getRule(String.valueOf(partnerUser.getGrade()), partnerRuleEntities);
- // Integer khDays = rule.getKhDays();
- // Date upgradeStartTime = partnerUserMapper.selectUpgradeStartTime(userId, partnerUser.getGrade());
- // if (upgradeStartTime == null) {
- // partnerUserMapper.updateUpgradeStartTime(userId, partnerUser.getGrade());
- // }else {
- // //TODO 更新考核周期
- // updateUpgradeCycleTime(partnerUser,rule, upgradeStartTime);
- // }
- // upgradeStartTime = partnerUserMapper.selectUpgradeStartTime(userId, partnerUser.getGrade());
- // System.out.println("开始时间:" + formatter.format(upgradeStartTime));
- // // 生成结束时间
- // Date upgradeEndTime = PartnerDateUtils.addDays(upgradeStartTime, khDays);
- // System.out.println("结束时间:" + formatter.format(upgradeEndTime));
- // // 判断当前时间是否大于考核周期时间
- // boolean withinDays = PartnerDateUtils.isBefore(upgradeEndTime);
- // if (withinDays){
- // List<PartnerAttribute> strategyArray = rule.getStrategyArray();
- // String appraise = rule.getAppraise();
- // // TODO考核条件 不满足时需锁定
- // boolean checked = checkUpgradeConditions(partnerUser, appraise, strategyArray);
- // if (checked){
- // // TODO 满足
- // }else {
- // //TODO 不满足
- // generateLockRecords(partnerUser);
- // }
- //
- // }
- // }
- // }
- // public void updateUpgradeCycleTime(PartnerUser partnerUser,PartnerRuleEntity rule,Date upgradeTime) {
- // Integer khDays = rule.getKhDays();
- // while (!PartnerDateUtils.isWithinDays(upgradeTime, khDays)) {
- // upgradeTime = PartnerDateUtils.addDaysToday(upgradeTime, khDays);
- // }
- // partnerUserMapper.updateUpgradeCycleStartTime(partnerUser.getUserId(), upgradeTime,partnerUser.getGrade());
- // }
- /**
- * TODO 生成降级记录
- * @param partnerUser
- */
- public void generateLockRecords(PartnerUser partnerUser){
- // Long aLong = liftingRecordService.selectQueryDowngradeStatus(partnerUser.getUserId(), partnerUser.getGrade());
- // if (aLong > 0){
- // return;
- // }
- PartnerUser selectOne = partnerUserMapper.selectOne(new QueryWrapper<PartnerUser>().eq("user_id", partnerUser.getUserId()).eq("grade", (partnerUser.getGrade() + 1)));
- PartnerUser user = new PartnerUser();
- BeanUtil.copyProperties(partnerUser,user);
- user.setGrade(4 == partnerUser.getGrade() ? 4 : partnerUser.getGrade() + 1);
- user.setReferrerId(partnerUser.getUserId());
- user.setId(null);
- if (Objects.isNull(selectOne) && 4 != partnerUser.getGrade()){
- if (4 == user.getGrade()){
- SysUser sysUser = sysUserService.getById(user.getUserId());
- String deptId = SpringUtil.getBean(SysUserServiceImpl.class).addDeptUser(sysUser, "4");
- user.setDeptId(deptId);
- }
- partnerUserMapper.insert(user);
- }
- partnerUser.setIdentityStatus(true);
- partnerUser.setCommissionRate(null);
- partnerUser.setIdentityTime(PartnerDateUtils.addDaysToday(new Date(),0));
- partnerUserMapper.updateById(partnerUser);
- partnerUserMapper.resetFixedRatio(partnerUser.getUserId(),user.getGrade());
- PartnerLiftingRecord liftingRecord = getLiftingRecord(partnerUser, user);
- liftingRecordService.saveLiftingRecord(liftingRecord);
- }
- private static PartnerLiftingRecord getLiftingRecord(PartnerUser partnerUser, PartnerUser user) {
- PartnerLiftingRecord liftingRecord = new PartnerLiftingRecord();
- liftingRecord.setName(partnerUser.getName());
- liftingRecord.setMobile(partnerUser.getMobile());
- liftingRecord.setUserId(partnerUser.getUserId());
- liftingRecord.setDeptId(partnerUser.getDeptId());
- liftingRecord.setDeptName(partnerUser.getDeptName());
- liftingRecord.setType("1");
- liftingRecord.setOriginalLevel(String.valueOf(partnerUser.getGrade()));
- liftingRecord.setAfterChange(String.valueOf(user.getGrade()));
- liftingRecord.setCreateTime(new Date());
- return liftingRecord;
- }
- public boolean checkUpgradeConditions(PartnerUser partnerUser) {
- return partnerRuleService.verifyDowngradeUpgradeConditions(partnerUser.getUserId(),String.valueOf(partnerUser.getGrade()));
- }
- /**
- * TODO 生成降级时间
- * @param grade
- */
- public String generateDowngradeTime(String grade,String startTime) {
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
- // TODO等级规则
- List<PartnerRuleEntity> partnerRuleEntities = partnerRuleService.queryAll();
- PartnerRuleEntity rule = getRule(grade, partnerRuleEntities);
- Integer khDays = rule.getKhDays();
- try {
- LocalDateTime dateTime = LocalDateTime.parse(startTime, formatter);
- // 加一天然后减一秒,得到目标日期时间
- LocalDateTime resultDateTime = dateTime.plusDays(khDays).minusSeconds(1);
- return resultDateTime.format(formatter);
- }catch (Exception e){
- e.printStackTrace();
- }
- return "";
- }
- }
|