|
|
@@ -11,6 +11,7 @@ import com.cyksj.common.constant.TaskTypeEnum;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
import com.cyksj.common.util.Jsons;
|
|
|
import com.cyksj.mapper.GoodsDonMapper;
|
|
|
+import com.cyksj.mapper.GoodsDonSkuMapper;
|
|
|
import com.cyksj.mapper.UserDistributeSharedRelateUnbindMapper;
|
|
|
import com.cyksj.mapper.UserMapper;
|
|
|
import com.cyksj.mapper.manage.coupon.CouponDistributePopularizeMapper;
|
|
|
@@ -26,6 +27,7 @@ import com.cyksj.model.request.UserDistributeReq;
|
|
|
import com.cyksj.redis.RedisService;
|
|
|
import com.cyksj.service.claude.ClaudeCodeService;
|
|
|
import com.cyksj.service.distribute.DistributeService;
|
|
|
+import com.cyksj.service.distribute.UserDistributeRateChangeRecordService;
|
|
|
import com.cyksj.service.market.task.TaskService;
|
|
|
import com.cyksj.service.relation.GroupRelationFrontService;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
@@ -35,10 +37,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Optional;
|
|
|
+import java.util.*;
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -94,6 +93,14 @@ public class DistributeServiceImpl implements DistributeService {
|
|
|
|
|
|
private final GroupRelationFrontService groupRelationFrontService;
|
|
|
|
|
|
+ private final BusinessDistributeDefaultRateConfigMapper businessDistributeDefaultRateConfigMapper;
|
|
|
+
|
|
|
+ private final BusinessDistributeDefaultSkuRateConfigMapper businessDistributeDefaultSkuRateConfigMapper;
|
|
|
+
|
|
|
+ private final GoodsDonSkuMapper skuMapper;
|
|
|
+
|
|
|
+ private final UserDistributeRateChangeRecordService userDistributeRateChangeRecordService;
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
public void insertDistribute(UserDistributeReq userDistributeReq) {
|
|
|
@@ -196,6 +203,7 @@ public class DistributeServiceImpl implements DistributeService {
|
|
|
YhShop yhShop = yhShopMapper.selectOne(Wrappers.lambdaQuery(YhShop.class)
|
|
|
.eq(YhShop::getUserId, userDistribute.getUserId())
|
|
|
.eq(YhShop::getVerifyStatus, YhShop.Status.success).last("limit 1"));
|
|
|
+ List<UserDistributeRateChangeRecord> userDistributeRateChangeRecords = new ArrayList<>();
|
|
|
for (UserPlatDistributeRate rate : userDistributeReq.getRates()) {
|
|
|
if (rate.getRate() == null) {
|
|
|
rate.setRate(0);
|
|
|
@@ -221,6 +229,8 @@ public class DistributeServiceImpl implements DistributeService {
|
|
|
rate.setDistributeId(userDistribute.getId());
|
|
|
if (rate.getId() == null) {
|
|
|
try {
|
|
|
+ //平台比例更变记录
|
|
|
+ recordGoodsRateSaveChange(userDistribute, rate.getGoodsId(), rate.getRate(), goodsDon.getTitle(), userDistributeRateChangeRecords);
|
|
|
userPlatDistributeRateMapper.insert(rate);
|
|
|
} catch (DuplicateKeyException e) {
|
|
|
userPlatDistributeRateMapper.update(null, Wrappers.lambdaUpdate(UserPlatDistributeRate.class)
|
|
|
@@ -246,6 +256,8 @@ public class DistributeServiceImpl implements DistributeService {
|
|
|
} else {
|
|
|
UserPlatDistributeRate dbPlateRate = userPlatDistributeRateMapper.selectById(rate.getId());
|
|
|
if (dbPlateRate == null) {
|
|
|
+ //平台比例更变记录
|
|
|
+ recordGoodsRateSaveChange(userDistribute, rate.getGoodsId(), rate.getRate(), goodsDon.getTitle(), userDistributeRateChangeRecords);
|
|
|
continue;
|
|
|
}
|
|
|
if (dbPlateRate.getRate() != rate.getRate() || dbPlateRate.getSecondRate() != rate.getSecondRate()) {
|
|
|
@@ -257,6 +269,10 @@ public class DistributeServiceImpl implements DistributeService {
|
|
|
.eq(YhShopUserPlatDistributeRate::getGoodsId, rate.getGoodsId())
|
|
|
.set(YhShopUserPlatDistributeRate::getRate, rate.getRate()));
|
|
|
}
|
|
|
+ if (dbPlateRate.getRate() != rate.getRate()) {
|
|
|
+ //变更记录
|
|
|
+ recordGoodsRateChange(userDistribute, goodsDon.getTitle(), rate, userDistributeRateChangeRecords);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -265,6 +281,10 @@ public class DistributeServiceImpl implements DistributeService {
|
|
|
List<UserPlatSkuDistributeRate> skuRates = userDistributeReq.getSkuRates();
|
|
|
if (CollUtil.isNotEmpty(skuRates)) {
|
|
|
List<Long> skuIds = skuRates.stream().map(UserPlatSkuDistributeRate::getSkuId).collect(Collectors.toList());
|
|
|
+ List<UserPlatSkuDistributeRate> delSkuRateList = userPlatSkuDistributeRateMapper.selectList(Wrappers.lambdaQuery(UserPlatSkuDistributeRate.class).eq(UserPlatSkuDistributeRate::getDistributeId,userDistribute.getId()).notIn(UserPlatSkuDistributeRate::getSkuId, skuIds).orderByAsc(UserPlatSkuDistributeRate::getGoodsId));
|
|
|
+ //sku比例更变记录
|
|
|
+ recordSkuRateDelChange(userDistribute, delSkuRateList, userDistributeRateChangeRecords);
|
|
|
+
|
|
|
userPlatSkuDistributeRateMapper.delete(Wrappers.lambdaQuery(UserPlatSkuDistributeRate.class)
|
|
|
.notIn(UserPlatSkuDistributeRate::getSkuId, skuIds)
|
|
|
.eq(UserPlatSkuDistributeRate::getDistributeId, userDistribute.getId()));
|
|
|
@@ -289,20 +309,35 @@ public class DistributeServiceImpl implements DistributeService {
|
|
|
checkDistributorAndBusinessRate(skuRate.getRate(), goodsDon.getId(), goodsDon.getTitle());
|
|
|
}
|
|
|
if (skuRate.getId() != null) {
|
|
|
+ UserPlatSkuDistributeRate dbUserPlatSkuDistributeRate = userPlatSkuDistributeRateMapper.selectOne(Wrappers.lambdaQuery(UserPlatSkuDistributeRate.class).eq(UserPlatSkuDistributeRate::getId, skuRate.getId()).last("limit 1"));
|
|
|
userPlatSkuDistributeRateMapper.updateById(skuRate);
|
|
|
+ if (dbUserPlatSkuDistributeRate != null && dbUserPlatSkuDistributeRate.getRate() != skuRate.getRate()) {
|
|
|
+ recordSkuRateChange(userDistribute, goodsDon.getTitle(), skuRate, userDistributeRateChangeRecords);
|
|
|
+ }
|
|
|
continue;
|
|
|
}
|
|
|
try {
|
|
|
skuRate.setDistributeId(userDistribute.getId());
|
|
|
userPlatSkuDistributeRateMapper.insert(skuRate);
|
|
|
+ //不存在 变更
|
|
|
+ recordNoExistsSkuRateChange(skuRate, userDistribute, goodsDon.getTitle(), userDistributeRateChangeRecords);
|
|
|
} catch (DuplicateKeyException e) {
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
+ //sku比例更变记录
|
|
|
+ List<UserPlatSkuDistributeRate> delSkuRateList = userPlatSkuDistributeRateMapper.selectList(Wrappers.lambdaQuery(UserPlatSkuDistributeRate.class).eq(UserPlatSkuDistributeRate::getDistributeId, userDistribute.getId()).orderByAsc(UserPlatSkuDistributeRate::getGoodsId));
|
|
|
+ recordSkuRateDelChange(userDistribute, delSkuRateList, userDistributeRateChangeRecords);
|
|
|
+
|
|
|
userPlatSkuDistributeRateMapper.delete(Wrappers.lambdaQuery(UserPlatSkuDistributeRate.class)
|
|
|
.eq(UserPlatSkuDistributeRate::getDistributeId, userDistribute.getId()));
|
|
|
}
|
|
|
handlerDistributeOtherFunc(userDistribute, userDistributeReq);
|
|
|
+
|
|
|
+ if (CollUtil.isNotEmpty(userDistributeRateChangeRecords)) {
|
|
|
+ userDistributeRateChangeRecords.sort(Comparator.comparing(UserDistributeRateChangeRecord::getGoodsId));
|
|
|
+ userDistributeRateChangeRecordService.saveBatch(userDistributeRateChangeRecords);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -682,4 +717,75 @@ public class DistributeServiceImpl implements DistributeService {
|
|
|
couponDistributePopularizeMapper.insert(newPopularizeCode);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private void recordGoodsRateChange(UserDistribute userDistribute, String title, UserPlatDistributeRate rate, List<UserDistributeRateChangeRecord> userDistributeRateChangeRecords) {
|
|
|
+ //记录更变记录
|
|
|
+ UserDistributeRateChangeRecord userDistributeRateChangeRecord = new UserDistributeRateChangeRecord();
|
|
|
+ userDistributeRateChangeRecord.setDistributeId(userDistribute.getId());
|
|
|
+ userDistributeRateChangeRecord.setUserId(userDistribute.getUserId());
|
|
|
+ userDistributeRateChangeRecord.setGoodsId(rate.getGoodsId());
|
|
|
+ String changeInfo = String.format("%s全规格分销比例变为%s%%", title, rate.getRate());
|
|
|
+ userDistributeRateChangeRecord.setChangeInfo(changeInfo);
|
|
|
+ userDistributeRateChangeRecords.add(userDistributeRateChangeRecord);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void recordSkuRateChange(UserDistribute userDistribute, String title, UserPlatSkuDistributeRate skuRate, List<UserDistributeRateChangeRecord> userDistributeRateChangeRecords) {
|
|
|
+ //记录更变记录
|
|
|
+ UserDistributeRateChangeRecord userDistributeRateChangeRecord = new UserDistributeRateChangeRecord();
|
|
|
+ userDistributeRateChangeRecord.setDistributeId(userDistribute.getId());
|
|
|
+ userDistributeRateChangeRecord.setUserId(userDistribute.getUserId());
|
|
|
+ userDistributeRateChangeRecord.setGoodsId(skuRate.getGoodsId());
|
|
|
+ userDistributeRateChangeRecord.setSkuId(skuRate.getSkuId());
|
|
|
+ GoodsDonSku sku = skuMapper.selectById(skuRate.getSkuId());
|
|
|
+ String changeInfo = String.format("%s%s规格分销比例变为%s%%", title, sku.getSpecVal(), skuRate.getRate());
|
|
|
+ userDistributeRateChangeRecord.setChangeInfo(changeInfo);
|
|
|
+ userDistributeRateChangeRecords.add(userDistributeRateChangeRecord);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void recordSkuRateDelChange(UserDistribute userDistribute, List<UserPlatSkuDistributeRate> delSkuRateList, List<UserDistributeRateChangeRecord> userDistributeRateChangeRecords) {
|
|
|
+ for (UserPlatSkuDistributeRate userPlatSkuDistributeRate : delSkuRateList) {
|
|
|
+ //记录更变记录
|
|
|
+ UserDistributeRateChangeRecord userDistributeRateChangeRecord = new UserDistributeRateChangeRecord();
|
|
|
+ userDistributeRateChangeRecord.setDistributeId(userDistribute.getId());
|
|
|
+ userDistributeRateChangeRecord.setUserId(userDistribute.getUserId());
|
|
|
+ userDistributeRateChangeRecord.setGoodsId(userPlatSkuDistributeRate.getGoodsId());
|
|
|
+ userDistributeRateChangeRecord.setSkuId(userPlatSkuDistributeRate.getSkuId());
|
|
|
+ GoodsDon goodsDon = goodsDonMapper.selectById(userPlatSkuDistributeRate.getGoodsId());
|
|
|
+ GoodsDonSku sku = skuMapper.selectById(userPlatSkuDistributeRate.getSkuId());
|
|
|
+ UserPlatDistributeRate userPlatDistributeRate = userPlatDistributeRateMapper.selectOne(Wrappers.lambdaQuery(UserPlatDistributeRate.class).eq(UserPlatDistributeRate::getDistributeId, userDistribute.getId()).eq(UserPlatDistributeRate::getGoodsId, userPlatSkuDistributeRate.getGoodsId()).last("limit 1"));
|
|
|
+ String changeInfo = String.format("%s%s规格分销比例变为%s%%", goodsDon.getTitle(), sku.getSpecVal(), userPlatDistributeRate.getRate());
|
|
|
+ userDistributeRateChangeRecord.setChangeInfo(changeInfo);
|
|
|
+ userDistributeRateChangeRecords.add(userDistributeRateChangeRecord);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void recordGoodsRateSaveChange(UserDistribute userDistribute, Long goodsId, Integer goodsRate, String title, List<UserDistributeRateChangeRecord> userDistributeRateChangeRecords) {
|
|
|
+ BusinessDistributeDefaultRateConfig businessDistributeDefaultRateConfig = businessDistributeDefaultRateConfigMapper.selectOne(Wrappers.lambdaQuery(BusinessDistributeDefaultRateConfig.class).eq(BusinessDistributeDefaultRateConfig::getGoodsId, goodsId).last("limit 1"));
|
|
|
+ if (businessDistributeDefaultRateConfig == null || businessDistributeDefaultRateConfig.getRate() != goodsRate) {
|
|
|
+ //记录更变记录
|
|
|
+ UserDistributeRateChangeRecord userDistributeRateChangeRecord = new UserDistributeRateChangeRecord();
|
|
|
+ userDistributeRateChangeRecord.setDistributeId(userDistribute.getId());
|
|
|
+ userDistributeRateChangeRecord.setUserId(userDistribute.getUserId());
|
|
|
+ userDistributeRateChangeRecord.setGoodsId(goodsId);
|
|
|
+ String changeInfo = String.format("%s全规格分销比例变为%s%%", title, goodsRate);
|
|
|
+ userDistributeRateChangeRecord.setChangeInfo(changeInfo);
|
|
|
+ userDistributeRateChangeRecords.add(userDistributeRateChangeRecord);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void recordNoExistsSkuRateChange(UserPlatSkuDistributeRate skuRate, UserDistribute userDistribute, String title, List<UserDistributeRateChangeRecord> userDistributeRateChangeRecords) {
|
|
|
+ BusinessDistributeDefaultSkuRateConfig rateConfig = businessDistributeDefaultSkuRateConfigMapper.selectOne(Wrappers.lambdaQuery(BusinessDistributeDefaultSkuRateConfig.class).eq(BusinessDistributeDefaultSkuRateConfig::getSkuId, skuRate.getSkuId()).last("limit 1"));
|
|
|
+ if (rateConfig == null || rateConfig.getRate() != skuRate.getRate()) {
|
|
|
+ if (rateConfig == null) {
|
|
|
+ //查看平台默认比例
|
|
|
+ UserPlatDistributeRate userPlatDistributeRate = userPlatDistributeRateMapper.selectOne(Wrappers.lambdaQuery(UserPlatDistributeRate.class).eq(UserPlatDistributeRate::getDistributeId, userDistribute.getId()).eq(UserPlatDistributeRate::getGoodsId, skuRate.getGoodsId()).last("limit 1"));
|
|
|
+ //相同不记录
|
|
|
+ if (userPlatDistributeRate != null && userPlatDistributeRate.getRate() == skuRate.getRate()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ recordSkuRateChange(userDistribute, title, skuRate, userDistributeRateChangeRecords);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|