|
@@ -19,6 +19,7 @@ import com.chelvc.cloud.vehicle.server.dao.RegionMapper;
|
|
|
import com.chelvc.cloud.vehicle.server.entity.RankAwardConfig;
|
|
|
import com.chelvc.cloud.vehicle.server.entity.RankAwardRecord;
|
|
|
import com.chelvc.cloud.vehicle.server.entity.Region;
|
|
|
+import com.chelvc.cloud.vehicle.server.service.CategoryService;
|
|
|
import com.chelvc.cloud.vehicle.server.service.MerchantService;
|
|
|
import com.chelvc.cloud.vehicle.server.service.RankAwardConfigService;
|
|
|
import com.chelvc.framework.common.exception.ResourceUnavailableException;
|
|
@@ -49,6 +50,7 @@ public class RankAwardRecordServiceImpl extends ServiceImpl<RankAwardRecordMappe
|
|
|
private final RankAwardConfigService rankAwardConfigService;
|
|
|
private final RegionMapper regionMapper;
|
|
|
private final MerchantService merchantService;
|
|
|
+ private final CategoryService categoryService;
|
|
|
|
|
|
@Override
|
|
|
public Pagination<RankAwardRecordDTO> queryPageList(QueryRankAwardRecordParam param) {
|
|
@@ -125,39 +127,46 @@ public class RankAwardRecordServiceImpl extends ServiceImpl<RankAwardRecordMappe
|
|
|
Map<Integer, RankAwardConfig> map =
|
|
|
rankAwardConfigs.stream().collect(Collectors.toMap(RankAwardConfig::getRank, (p) -> p));
|
|
|
int limit = rankAwardConfigs.size();
|
|
|
+ //查询一级分类
|
|
|
+ List<Long> categoryIds = categoryService.queryFirstLevelIds();
|
|
|
+ if(categoryIds == null){
|
|
|
+ return;
|
|
|
+ }
|
|
|
for (Integer id : ids) {
|
|
|
- List<RankAwardRecord> list = new ArrayList<>();
|
|
|
- List<MerchantRankCountDTO> result = merchantService.rankMerchants(id, limit, level);
|
|
|
- BigDecimal totalCommissionAmount = merchantService.queryTotalCommissionAmountByLastMonth(id, level);
|
|
|
- if (totalCommissionAmount == null || totalCommissionAmount.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
- break;
|
|
|
- }
|
|
|
- //查询区县已发出的奖励
|
|
|
- BigDecimal totalAmount = baseMapper.queryAmountByRegion(id, DateTimeUtils.getLastYearMonth());
|
|
|
- if (totalAmount != null && totalAmount.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- totalCommissionAmount = totalCommissionAmount.subtract(totalAmount);
|
|
|
- }
|
|
|
- for (int i = 1; i <= result.size(); i++) {
|
|
|
- MerchantRankCountDTO merchantRankCountDTO = result.get(i);
|
|
|
- RankAwardConfig config = map.get(i);
|
|
|
- BigDecimal bonus =
|
|
|
- totalCommissionAmount.multiply(new BigDecimal(config.getCommissionRatio()).divide(new BigDecimal("100"), 2, RoundingMode.FLOOR))
|
|
|
- .multiply(new BigDecimal(config.getRatio()).divide(new BigDecimal("100"), 2,
|
|
|
- RoundingMode.FLOOR));
|
|
|
- RankAwardRecord rankAwardRecord = new RankAwardRecord();
|
|
|
- rankAwardRecord.setRank(i);
|
|
|
- rankAwardRecord.setUserId(merchantRankCountDTO.getUserId());
|
|
|
- rankAwardRecord.setBonus(bonus);
|
|
|
- rankAwardRecord.setPeriod(DateTimeUtils.getLastYearMonth());
|
|
|
- rankAwardRecord.setType(2);
|
|
|
- rankAwardRecord.setPlatformType(2);
|
|
|
- rankAwardRecord.setRegionLevel(level);
|
|
|
- rankAwardRecord.setStatus(0);
|
|
|
- rankAwardRecord.setAwardTime(LocalDateTime.now());
|
|
|
- rankAwardRecord.setCreateTime(LocalDateTime.now());
|
|
|
- list.add(rankAwardRecord);
|
|
|
+ for (Long categoryId : categoryIds) {
|
|
|
+ List<RankAwardRecord> list = new ArrayList<>();
|
|
|
+ List<MerchantRankCountDTO> result = merchantService.rankMerchants(id, limit, level, categoryId);
|
|
|
+ BigDecimal totalCommissionAmount = merchantService.queryTotalCommissionAmountByLastMonth(id, level, categoryId);
|
|
|
+ if (totalCommissionAmount == null || totalCommissionAmount.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ //查询区县已发出的奖励
|
|
|
+ BigDecimal totalAmount = baseMapper.queryAmountByRegion(id, DateTimeUtils.getLastYearMonth());
|
|
|
+ if (totalAmount != null && totalAmount.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ totalCommissionAmount = totalCommissionAmount.subtract(totalAmount);
|
|
|
+ }
|
|
|
+ for (int i = 1; i <= result.size(); i++) {
|
|
|
+ MerchantRankCountDTO merchantRankCountDTO = result.get(i);
|
|
|
+ RankAwardConfig config = map.get(i);
|
|
|
+ BigDecimal bonus =
|
|
|
+ totalCommissionAmount.multiply(new BigDecimal(config.getCommissionRatio()).divide(new BigDecimal("100"), 2, RoundingMode.FLOOR))
|
|
|
+ .multiply(new BigDecimal(config.getRatio()).divide(new BigDecimal("100"), 2,
|
|
|
+ RoundingMode.FLOOR));
|
|
|
+ RankAwardRecord rankAwardRecord = new RankAwardRecord();
|
|
|
+ rankAwardRecord.setRank(i);
|
|
|
+ rankAwardRecord.setUserId(merchantRankCountDTO.getUserId());
|
|
|
+ rankAwardRecord.setBonus(bonus);
|
|
|
+ rankAwardRecord.setPeriod(DateTimeUtils.getLastYearMonth());
|
|
|
+ rankAwardRecord.setType(2);
|
|
|
+ rankAwardRecord.setPlatformType(2);
|
|
|
+ rankAwardRecord.setRegionLevel(level);
|
|
|
+ rankAwardRecord.setStatus(0);
|
|
|
+ rankAwardRecord.setAwardTime(LocalDateTime.now());
|
|
|
+ rankAwardRecord.setCreateTime(LocalDateTime.now());
|
|
|
+ list.add(rankAwardRecord);
|
|
|
+ }
|
|
|
+ baseMapper.batchInsert(list);
|
|
|
}
|
|
|
- baseMapper.batchInsert(list);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -168,6 +177,11 @@ public class RankAwardRecordServiceImpl extends ServiceImpl<RankAwardRecordMappe
|
|
|
if (CollectionUtils.isEmpty(rankAwardConfigs)) {
|
|
|
return;
|
|
|
}
|
|
|
+ //查询一级分类
|
|
|
+ List<Long> categoryIds = categoryService.queryFirstLevelIds();
|
|
|
+ if(categoryIds == null){
|
|
|
+ return;
|
|
|
+ }
|
|
|
Map<Integer, RankAwardConfig> map =
|
|
|
rankAwardConfigs.stream().collect(Collectors.toMap(RankAwardConfig::getRank, (p) -> p));
|
|
|
LambdaQueryWrapper<Region> wrapper = Wrappers.lambdaQuery();
|
|
@@ -184,30 +198,32 @@ public class RankAwardRecordServiceImpl extends ServiceImpl<RankAwardRecordMappe
|
|
|
List<Integer> ids = regionMapper.queryPageIdsByLevel(level, pageNum, pageSize);
|
|
|
int limit = rankAwardConfigs.size();
|
|
|
for (Integer id : ids) {
|
|
|
- List<MerchantRankCountDTO> result = merchantService.rankMerchants(id, limit, level);
|
|
|
- BigDecimal totalCommissionAmount = merchantService.queryTotalCommissionAmountByLastMonth(id, level);
|
|
|
- if (totalCommissionAmount == null || totalCommissionAmount.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
- break;
|
|
|
- }
|
|
|
- for (int i = 1; i <= result.size(); i++) {
|
|
|
- MerchantRankCountDTO merchantRankCountDTO = result.get(i);
|
|
|
- RankAwardConfig config = map.get(i);
|
|
|
- BigDecimal bonus =
|
|
|
- totalCommissionAmount.multiply(new BigDecimal(config.getCommissionRatio()).divide(new BigDecimal("100"), 2, RoundingMode.FLOOR))
|
|
|
- .multiply(new BigDecimal(config.getRatio()).divide(new BigDecimal("100"), 2,
|
|
|
- RoundingMode.FLOOR));
|
|
|
- RankAwardRecord rankAwardRecord = new RankAwardRecord();
|
|
|
- rankAwardRecord.setRank(i);
|
|
|
- rankAwardRecord.setUserId(merchantRankCountDTO.getUserId());
|
|
|
- rankAwardRecord.setBonus(bonus);
|
|
|
- rankAwardRecord.setPeriod(DateTimeUtils.getLastYearMonth());
|
|
|
- rankAwardRecord.setType(2);
|
|
|
- rankAwardRecord.setPlatformType(2);
|
|
|
- rankAwardRecord.setRegionLevel(level);
|
|
|
- rankAwardRecord.setStatus(0);
|
|
|
- rankAwardRecord.setAwardTime(LocalDateTime.now());
|
|
|
- rankAwardRecord.setCreateTime(LocalDateTime.now());
|
|
|
- list.add(rankAwardRecord);
|
|
|
+ for (Long categoryId : categoryIds) {
|
|
|
+ List<MerchantRankCountDTO> result = merchantService.rankMerchants(id, limit, level, categoryId);
|
|
|
+ BigDecimal totalCommissionAmount = merchantService.queryTotalCommissionAmountByLastMonth(id, level, categoryId);
|
|
|
+ if (totalCommissionAmount == null || totalCommissionAmount.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ for (int i = 1; i <= result.size(); i++) {
|
|
|
+ MerchantRankCountDTO merchantRankCountDTO = result.get(i);
|
|
|
+ RankAwardConfig config = map.get(i);
|
|
|
+ BigDecimal bonus =
|
|
|
+ totalCommissionAmount.multiply(new BigDecimal(config.getCommissionRatio()).divide(new BigDecimal("100"), 2, RoundingMode.FLOOR))
|
|
|
+ .multiply(new BigDecimal(config.getRatio()).divide(new BigDecimal("100"), 2,
|
|
|
+ RoundingMode.FLOOR));
|
|
|
+ RankAwardRecord rankAwardRecord = new RankAwardRecord();
|
|
|
+ rankAwardRecord.setRank(i);
|
|
|
+ rankAwardRecord.setUserId(merchantRankCountDTO.getUserId());
|
|
|
+ rankAwardRecord.setBonus(bonus);
|
|
|
+ rankAwardRecord.setPeriod(DateTimeUtils.getLastYearMonth());
|
|
|
+ rankAwardRecord.setType(2);
|
|
|
+ rankAwardRecord.setPlatformType(2);
|
|
|
+ rankAwardRecord.setRegionLevel(level);
|
|
|
+ rankAwardRecord.setStatus(0);
|
|
|
+ rankAwardRecord.setAwardTime(LocalDateTime.now());
|
|
|
+ rankAwardRecord.setCreateTime(LocalDateTime.now());
|
|
|
+ list.add(rankAwardRecord);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
baseMapper.batchInsert(list);
|