diff --git a/cash-api/market-server/src/main/java/com/czg/controller/admin/DistributionUserController.java b/cash-api/market-server/src/main/java/com/czg/controller/admin/DistributionUserController.java index c7619487..12f10d1e 100644 --- a/cash-api/market-server/src/main/java/com/czg/controller/admin/DistributionUserController.java +++ b/cash-api/market-server/src/main/java/com/czg/controller/admin/DistributionUserController.java @@ -31,6 +31,8 @@ public class DistributionUserController { */ @GetMapping public CzgResult> getDistributionUser(MkDistributionUserDTO param) { + Long shopId = StpKit.USER.getShopId(); + param.setShopId(shopId); return CzgResult.success(distributionUserService.getDistributionUser(param)); } @@ -43,7 +45,7 @@ public class DistributionUserController { @OperationLog("分销员-添加") @SaAdminCheckPermission(value = "distribution:user:add", name = "分销员添加") public CzgResult addDistributionUser(@RequestBody MkDistributionUser param) { - Long shopId = StpKit.USER.getShopId(0L); + Long shopId = StpKit.USER.getShopId(); param.setShopId(shopId); distributionUserService.addDistributionUser(param); return CzgResult.success(); @@ -55,7 +57,7 @@ public class DistributionUserController { */ @PutMapping @OperationLog("分销员-修改") - @SaAdminCheckPermission("distribution:user:update") + @SaAdminCheckPermission(value = "distribution:user:update", name = "分销员修改") public CzgResult updateDistributionUser(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) MkDistributionUserDTO dto) { Long shopId = StpKit.USER.getShopId(0L); dto.setShopId(shopId); @@ -68,7 +70,7 @@ public class DistributionUserController { */ @DeleteMapping @OperationLog("分销员-删除") - @SaAdminCheckPermission("distribution:user::delete") + @SaAdminCheckPermission(value = "distribution:user:delete", name = "分销员删除") public CzgResult deleteDistributionUser(@RequestParam Long id) { AssertUtil.isNull(id, "{}不能为空", "id"); distributionUserService.deleteDistributionUser(id); diff --git a/cash-api/market-server/src/main/java/com/czg/controller/user/UDistributionController.java b/cash-api/market-server/src/main/java/com/czg/controller/user/UDistributionController.java index 9269adf6..9e29c1f3 100644 --- a/cash-api/market-server/src/main/java/com/czg/controller/user/UDistributionController.java +++ b/cash-api/market-server/src/main/java/com/czg/controller/user/UDistributionController.java @@ -1,15 +1,14 @@ package com.czg.controller.user; import com.czg.market.service.MkDistributionUserService; +import com.czg.market.vo.DistributionCenterShopVO; import com.czg.order.dto.MkDistributionPayDTO; import com.czg.resp.CzgResult; import com.czg.sa.StpKit; +import com.mybatisflex.core.paginate.Page; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.Map; @@ -32,10 +31,36 @@ public class UDistributionController { return CzgResult.success(distributionUserService.pay(StpKit.USER.getLoginIdAsLong(), payDTO)); } + /** + * 分销员中心-首页 + */ + @PostMapping("/centerUser") + public CzgResult> centerUser() { + return CzgResult.success(distributionUserService.centerUser(StpKit.USER.getLoginIdAsLong())); + } -// @PostMapping("/center") -// public CzgResult> center() { -// return CzgResult.success(distributionUserService.center(StpKit.USER.getLoginIdAsLong())); -// } + /** + * 分销员中心-已开通的店铺 + */ + @GetMapping("/centerUser/activates") + public CzgResult> activates(@RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "10") Integer size) { + return CzgResult.success(distributionUserService.activates(StpKit.USER.getLoginIdAsLong(), page, size)); + } + + /** + * 分销员中心-未开通的店铺 + */ + @GetMapping("/centerUser/unActivates") + public CzgResult> unActivates(@RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "10") Integer size) { + return CzgResult.success(distributionUserService.unActivates(StpKit.USER.getLoginIdAsLong(), page, size)); + } + + /** + * 分销员中心-配置信息 + */ + @PostMapping("/centerConfig") + public CzgResult> centerConfig() { + return CzgResult.success(distributionUserService.centerConfig(StpKit.USER.getLoginIdAsLong())); + } } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkDistributionUser.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkDistributionUser.java index 95606bdc..9123ec39 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkDistributionUser.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkDistributionUser.java @@ -3,19 +3,17 @@ package com.czg.market.entity; import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.KeyType; import com.mybatisflex.annotation.Table; -import java.io.Serializable; -import java.math.BigDecimal; -import java.sql.Timestamp; - -import java.io.Serial; -import java.time.LocalDateTime; - import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + /** * 分销员表 实体类。 * @@ -49,6 +47,8 @@ public class MkDistributionUser implements Serializable { */ private Long shopId; + private Long userId; + /** * 店铺用户Id */ diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkDistributionUserService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkDistributionUserService.java index 4b930b91..fee9d664 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkDistributionUserService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkDistributionUserService.java @@ -2,6 +2,7 @@ package com.czg.market.service; import com.czg.market.dto.MkDistributionUserDTO; import com.czg.market.entity.MkDistributionUser; +import com.czg.market.vo.DistributionCenterShopVO; import com.czg.order.dto.MkDistributionPayDTO; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.service.IService; @@ -17,6 +18,27 @@ import java.util.Map; */ public interface MkDistributionUserService extends IService { + /** + * 分销员中心-用户信息 + */ + Map centerUser(Long userId); + + /** + * 分销员中心-已激活店铺 + */ + Page activates(Long userId, Integer page, Integer size); + + /** + * 分销员中心-未激活店铺 + */ + Page unActivates(Long userId, Integer page, Integer size); + + + /** + * 分销员中心-配置信息 + */ + Map centerConfig(Long userId); + /** * 获取分销员分页列表 */ @@ -29,7 +51,7 @@ public interface MkDistributionUserService extends IService */ void addDistributionUser(MkDistributionUser param); - /** + /** * 更新分销员 */ void updateDistributionUserById(MkDistributionUserDTO param); @@ -48,6 +70,7 @@ public interface MkDistributionUserService extends IService /** * 分销员开通 + * * @param userId 用户 * @param amount 金额 * @param shopId 店铺id diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/vo/DistributionCenterShopVO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/vo/DistributionCenterShopVO.java new file mode 100644 index 00000000..f01c9fcd --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/vo/DistributionCenterShopVO.java @@ -0,0 +1,37 @@ +package com.czg.market.vo; + +import lombok.Data; + +import java.io.Serializable; + +/** + * + * @author ww + * @description + */ +@Data +public class DistributionCenterShopVO implements Serializable { + + private Long shopId; + //店铺封面 + private String coverImg; + private String shopName; + //店铺地址 + private String shopAddress; + //收益 + private String income; + + //标签内容 + private String labelContent; + //开通方式 pay购买开通 auto自动开通 manual手动开通 + private String openType; + //要求邀请人数 + private Integer shopInviteCount; + //用户已邀请人数 + private Integer userInviteCount; + //是否下过单 + private Integer orderCount; + //是否进过店铺 + private Integer shopUser; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/vo/DistributionCenterTopVO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/vo/DistributionCenterTopVO.java new file mode 100644 index 00000000..4e68b82a --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/vo/DistributionCenterTopVO.java @@ -0,0 +1,41 @@ +package com.czg.market.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author ww + * @description + */ +@Data +public class DistributionCenterTopVO { + /** + * 总收益 + */ + private BigDecimal totalIncome; + /** + * 待入账 + */ + private BigDecimal pendingIncome; + /** + * 已提现 + */ + private BigDecimal cashOutAmount; + + public BigDecimal getTotalIncome() { + return totalIncome == null ? BigDecimal.ZERO : totalIncome; + } + + public BigDecimal getPendingIncome() { + return pendingIncome == null ? BigDecimal.ZERO : pendingIncome; + } + + public BigDecimal getCashOutAmount() { + return cashOutAmount == null ? BigDecimal.ZERO : cashOutAmount; + } + + public BigDecimal getUnCashOutAmount() { + return getTotalIncome().subtract(getPendingIncome()).subtract(getCashOutAmount()); + } +} diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkDistributionUserMapper.java b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkDistributionUserMapper.java index 8c00c2ce..6af9f42d 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkDistributionUserMapper.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkDistributionUserMapper.java @@ -1,8 +1,11 @@ package com.czg.service.market.mapper; +import com.czg.market.vo.DistributionCenterShopVO; import com.mybatisflex.core.BaseMapper; import com.czg.market.entity.MkDistributionUser; +import java.util.List; + /** * 分销员表 映射层。 * @@ -11,4 +14,12 @@ import com.czg.market.entity.MkDistributionUser; */ public interface MkDistributionUserMapper extends BaseMapper { + /** + * 查询我的分销店铺列表 已开通 + */ + List selectMyDistributionShops(Long shopUserId); + /** + * 查询我的分销店铺列表 未开通 + */ + List selectUnDistributionShops(Long shopUserId); } diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java index 5786fdce..15961adf 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java @@ -10,6 +10,16 @@ import com.czg.account.service.ShopUserService; import com.czg.constant.TableValueConstant; import com.czg.exception.CzgException; import com.czg.market.dto.MkDistributionUserDTO; +import com.czg.market.entity.MkDistributionAmountFlow; +import com.czg.market.entity.MkDistributionConfig; +import com.czg.market.entity.MkDistributionLevelConfig; +import com.czg.market.entity.MkDistributionUser; +import com.czg.market.service.MkDistributionAmountFlowService; +import com.czg.market.service.MkDistributionConfigService; +import com.czg.market.service.MkDistributionLevelConfigService; +import com.czg.market.service.MkDistributionUserService; +import com.czg.market.vo.DistributionCenterShopVO; +import com.czg.market.vo.DistributionCenterTopVO; import com.czg.market.entity.*; import com.czg.market.service.*; import com.czg.market.vo.MkDistributionConfigVO; @@ -20,6 +30,9 @@ import com.czg.sa.StpKit; import com.czg.service.market.mapper.MkDistributionUserMapper; import com.czg.system.service.WxService; import com.czg.utils.AssertUtil; +import com.czg.utils.PageUtil; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.czg.utils.FunUtils; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; @@ -30,6 +43,7 @@ import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.util.*; import java.math.RoundingMode; import java.util.HashMap; import java.util.Map; @@ -65,6 +79,61 @@ public class MkDistributionUserServiceImpl extends ServiceImpl centerUser(Long userId) { + QueryWrapper totalIncomeSumQueryWrapper = new QueryWrapper(); + totalIncomeSumQueryWrapper.select("sum(total_income) as totalIncome,sum(pending_income) as pendingIncome,sum(withdrawn_income) as cashOutAmount"); + totalIncomeSumQueryWrapper.eq(MkDistributionUser::getUserId, userId); + totalIncomeSumQueryWrapper.eq(MkDistributionUser::isDel, 0); + DistributionCenterTopVO centerTopVO = getObjAs(totalIncomeSumQueryWrapper, DistributionCenterTopVO.class); + // 封装顶部收益数据 + Map result = new HashMap<>(); + result.put("totalIncome", centerTopVO.getTotalIncome()); + result.put("pendingIncome", centerTopVO.getPendingIncome()); + result.put("cashOutAmount", centerTopVO.getUnCashOutAmount()); + + result.put("activates",activates(userId,1,5)); + result.put("unActivates",unActivates(userId,1,3)); + return result; + } + + @Override + public Page activates(Long userId, Integer page, Integer size) { + PageHelper.startPage(page, size); + List activates = mapper.selectMyDistributionShops(userId); + return PageUtil.convert(new PageInfo<>(activates)); + } + + @Override + public Page unActivates(Long userId, Integer page, Integer size) { + PageHelper.startPage(page, size); + List unActivates = mapper.selectUnDistributionShops(userId); + for (DistributionCenterShopVO unActivate : unActivates) { + + //'pay购买开通 auto自动开通 manual手动开通' + if("pay".equals(unActivate.getOpenType())){ + if(unActivate.getShopUser() == 1){ + unActivate.setLabelContent("曾进入过店铺"); + } + }else if("auto".equals(unActivate.getOpenType())){ + if(unActivate.getOrderCount() == 1){ + unActivate.setLabelContent("在本店下单过"); + } + } +// else if("manual".equals(unActivate.getOpenType())){ +// unActivate.setLabelContent("manual手动开通"); +// } + + } + return PageUtil.convert(new PageInfo<>(unActivates)); + } + + + @Override + public Map centerConfig(Long userId) { + return null; + } + @Override public Page getDistributionUser(MkDistributionUserDTO param) { QueryWrapper queryWrapper = new QueryWrapper(); @@ -103,19 +172,27 @@ public class MkDistributionUserServiceImpl extends ServiceImpl 0) { + throw new CzgException("该用户已被添加为分销员"); + } + //TODO 通过不同的添加方式 增加校验 MkDistributionConfig config = mkDistributionConfigService.getOne( QueryWrapper.create().eq(MkDistributionConfig::getShopId, param.getShopId()) .eq(MkDistributionConfig::getIsEnable, 1)); AssertUtil.isNull(config, "店铺未配置分销"); - if (config.getInviteCount() == 0) { - param.setStatus(1); - MkDistributionLevelConfig levelConfig = levelConfigService.getOne(QueryWrapper.create() - .eq(MkDistributionLevelConfig::getShopId, param.getShopId()) - .eq(MkDistributionLevelConfig::getLevel, 1)); - AssertUtil.isNull(levelConfig, "店铺未配置分销等级"); - param.setDistributionLevelId(levelConfig.getId()); - param.setDistributionLevelName(levelConfig.getName()); - } + param.setStatus(1); + MkDistributionLevelConfig levelConfig = levelConfigService.getOne(QueryWrapper.create() + .eq(MkDistributionLevelConfig::getShopId, param.getShopId()) + .eq(MkDistributionLevelConfig::getLevel, 1)); + AssertUtil.isNull(levelConfig, "店铺未配置分销等级"); + param.setDistributionLevelId(levelConfig.getId()); + param.setDistributionLevelName(levelConfig.getName()); save(param); } diff --git a/cash-service/market-service/src/main/resources/mapper/MkDistributionUserMapper.xml b/cash-service/market-service/src/main/resources/mapper/MkDistributionUserMapper.xml index 5a755d55..c224f10d 100644 --- a/cash-service/market-service/src/main/resources/mapper/MkDistributionUserMapper.xml +++ b/cash-service/market-service/src/main/resources/mapper/MkDistributionUserMapper.xml @@ -4,4 +4,35 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java index 12d4a657..54984a96 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java @@ -855,7 +855,7 @@ public class OrderInfoServiceImpl extends ServiceImpl= 0) { return threshold.getDiscountAmount();