重置分销组

This commit is contained in:
wangw 2025-10-29 11:16:44 +08:00
parent 464bb80755
commit f8788a7786
3 changed files with 65 additions and 5 deletions

View File

@ -73,12 +73,23 @@ public class DistributionUserController {
@OperationLog("分销员-修改") @OperationLog("分销员-修改")
@SaAdminCheckPermission(value = "distribution:user:update", name = "分销员修改") @SaAdminCheckPermission(value = "distribution:user:update", name = "分销员修改")
public CzgResult<Void> updateDistributionUser(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) MkDistributionUserDTO dto) { public CzgResult<Void> updateDistributionUser(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) MkDistributionUserDTO dto) {
Long shopId = StpKit.USER.getShopId(0L); Long shopId = StpKit.USER.getShopId();
dto.setShopId(shopId); dto.setShopId(shopId);
distributionUserService.updateDistributionUserById(dto); distributionUserService.updateDistributionUserById(dto);
return CzgResult.success(); return CzgResult.success();
} }
@PostMapping("/resetLevel")
@OperationLog("分销员-重置分销组")
@SaAdminCheckPermission(value = "distribution:user:update", name = "重置分销组")
public CzgResult<Void> resetDistributionUserLevel(@RequestBody MkDistributionUserDTO dto) {
Long shopId = StpKit.USER.getShopId();
dto.setShopId(shopId);
distributionUserService.resetDistributionUserLevel(dto);
return CzgResult.success();
}
/** /**
* 分销员:删除 * 分销员:删除
*/ */

View File

@ -83,6 +83,10 @@ public interface MkDistributionUserService extends IService<MkDistributionUser>
* 更新分销员 * 更新分销员
*/ */
void updateDistributionUserById(MkDistributionUserDTO param); void updateDistributionUserById(MkDistributionUserDTO param);
/**
* 重置分销员等级
*/
void resetDistributionUserLevel(MkDistributionUserDTO param);
/** /**

View File

@ -220,8 +220,8 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
} }
MkDistributionUser mkDistributionUser = this.getOne(QueryWrapper.create() MkDistributionUser mkDistributionUser = this.getOne(QueryWrapper.create()
.eq(MkDistributionUser::getId, shopUser.getId()).eq(MkDistributionUser::getShopId, shopId)); .eq(MkDistributionUser::getId, shopUser.getId()).eq(MkDistributionUser::getShopId, shopId));
if(mkDistributionUser == null){ if (mkDistributionUser == null) {
mkDistributionUser= new MkDistributionUser(); mkDistributionUser = new MkDistributionUser();
mkDistributionUser.setId(shopUser.getId()); mkDistributionUser.setId(shopUser.getId());
mkDistributionUser.setShopId(shopId); mkDistributionUser.setShopId(shopId);
mkDistributionUser.setOpeningMethod("自主申请"); mkDistributionUser.setOpeningMethod("自主申请");
@ -321,6 +321,7 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
List<Long> userIds = shopUserService.listAs(QueryWrapper.create() List<Long> userIds = shopUserService.listAs(QueryWrapper.create()
.select(ShopUser::getUserId) .select(ShopUser::getUserId)
.eq(ShopUser::getDistributionUserId, shopUserId), Long.class); .eq(ShopUser::getDistributionUserId, shopUserId), Long.class);
userIds.add(distributionUser.getUserId());
BigDecimal totalAmount = orderInfoService.getOneAs(QueryWrapper.create() BigDecimal totalAmount = orderInfoService.getOneAs(QueryWrapper.create()
.select("sum(pay_amount)") .select("sum(pay_amount)")
.eq(OrderInfo::getShopId, shopId) .eq(OrderInfo::getShopId, shopId)
@ -328,9 +329,9 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
.in(OrderInfo::getUserId, userIds), BigDecimal.class); .in(OrderInfo::getUserId, userIds), BigDecimal.class);
MkDistributionLevelConfig levelConfig = levelConfigService.getOne(QueryWrapper.create() MkDistributionLevelConfig levelConfig = levelConfigService.getOne(QueryWrapper.create()
.eq(MkDistributionLevelConfig::getShopId, distributionUser.getShopId()) .eq(MkDistributionLevelConfig::getShopId, distributionUser.getShopId())
.le(MkDistributionLevelConfig::getInviteCount, distributionUser.getInviteCount()) .le(MkDistributionLevelConfig::getCostAmount, totalAmount)
.gt(MkDistributionLevelConfig::getId, distributionUser.getDistributionLevelId()) .gt(MkDistributionLevelConfig::getId, distributionUser.getDistributionLevelId())
.orderBy(MkDistributionLevelConfig::getLevel).desc().limit(1)); .orderBy(MkDistributionLevelConfig::getId).asc().limit(1));
if (levelConfig != null) { if (levelConfig != null) {
if (totalAmount.compareTo(levelConfig.getCostAmount()) >= 0) { if (totalAmount.compareTo(levelConfig.getCostAmount()) >= 0) {
MkDistributionUser newDistributionUser = new MkDistributionUser(); MkDistributionUser newDistributionUser = new MkDistributionUser();
@ -427,6 +428,50 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
updateById(distributionUser); updateById(distributionUser);
} }
@Override
public void resetDistributionUserLevel(MkDistributionUserDTO param) {
AssertUtil.isNull(param.getId(), "分销员ID不能为空");
MkDistributionUser distributionUser = getById(param.getId());
AssertUtil.isNull(distributionUser, "分销员不存在");
MkDistributionConfigVO detail = mkDistributionConfigService.detail(param.getShopId());
AssertUtil.isNull(detail, "店铺未配置分销");
MkDistributionUser newDistributionUser = new MkDistributionUser();
newDistributionUser.setId(distributionUser.getId());
MkDistributionLevelConfig levelConfig = new MkDistributionLevelConfig();
if ("not_upgrade".equals(detail.getUpgradeType())) {
levelConfig = levelConfigService.getOne(QueryWrapper.create()
.eq(MkDistributionLevelConfig::getShopId, param.getShopId())
.orderBy(MkDistributionLevelConfig::getId).asc().limit(1));
} else if ("invite".equals(detail.getUpgradeType())) {
levelConfig = levelConfigService.getOne(QueryWrapper.create()
.eq(MkDistributionLevelConfig::getShopId, param.getShopId())
.le(MkDistributionLevelConfig::getInviteCount, distributionUser.getInviteCount())
.orderBy(MkDistributionLevelConfig::getInviteCount).asc().limit(1));
} else if ("cost".equals(detail.getUpgradeType())) {
List<Long> userIds = shopUserService.listAs(QueryWrapper.create()
.select(ShopUser::getUserId)
.eq(ShopUser::getDistributionUserId, distributionUser.getId()), Long.class);
userIds.add(distributionUser.getUserId());
BigDecimal totalAmount = orderInfoService.getOneAs(QueryWrapper.create()
.select("sum(pay_amount)")
.eq(OrderInfo::getShopId, param.getShopId())
.eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())
.in(OrderInfo::getUserId, userIds), BigDecimal.class);
levelConfig = levelConfigService.getOne(QueryWrapper.create()
.eq(MkDistributionLevelConfig::getShopId, distributionUser.getShopId())
.le(MkDistributionLevelConfig::getCostAmount, totalAmount)
.orderBy(MkDistributionLevelConfig::getId).asc().limit(1));
}
if (levelConfig != null) {
distributionUser.setDistributionLevelId(levelConfig.getId());
distributionUser.setDistributionLevelName(levelConfig.getName());
} else {
distributionUser.setDistributionLevelId(0L);
distributionUser.setDistributionLevelName("无等级");
}
updateById(newDistributionUser);
}
@Override @Override
public void deleteDistributionUser(Long id) { public void deleteDistributionUser(Long id) {
AssertUtil.isNull(id, "分销员ID不能为空"); AssertUtil.isNull(id, "分销员ID不能为空");