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 da073f27e..a1026514e 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,12 +1,16 @@ package com.czg.controller.user; import com.czg.market.dto.MkDistributionWithdrawFlowDTO; +import com.czg.account.entity.UserInfo; +import com.czg.market.dto.MkDistributionUserDTO; import com.czg.market.service.MkDistributionUserService; import com.czg.market.service.MkDistributionWithdrawFlowService; import com.czg.market.vo.DistributionCenterShopVO; +import com.czg.market.vo.InviteUserVO; import com.czg.order.dto.MkDistributionPayDTO; import com.czg.resp.CzgResult; import com.czg.sa.StpKit; +import com.czg.utils.AssertUtil; import com.czg.service.market.service.impl.AppWxServiceImpl; import com.mybatisflex.core.paginate.Page; import jakarta.annotation.Resource; @@ -80,4 +84,50 @@ public class UDistributionController { return CzgResult.success(distributionUserService.withdraw(StpKit.USER.getLoginIdAsLong(), withdrawFlowDTO)); } + /** + * 分销员中心-实名认证 + */ + @PostMapping("/realNameAuth") + public CzgResult> realNameAuth(@RequestBody UserInfo userInfo) { + AssertUtil.isNull(userInfo.getId(), "用户Id不能为空"); + AssertUtil.isNull(userInfo.getRealName(), "用户实名不能为空"); + AssertUtil.isNull(userInfo.getIdCard(), "用户身份信息不能为空"); + distributionUserService.realNameAuth(userInfo); + return CzgResult.success(); + } + + /** + * 分销员中心-绑定邀请人 + */ + @PostMapping("/bindInviteUser") + public CzgResult> bindInviteUser(@RequestBody MkDistributionUserDTO param) { + AssertUtil.isNull(param.getShopId(), "店铺ID不能为空"); + AssertUtil.isNull(param.getParentId(), "店铺用户ID不能为空"); + AssertUtil.isNull(param.getDistributionLevelId(), "分销等级ID不能为空"); + distributionUserService.bindInviteUser(param); + return CzgResult.success(); + } + + /** + * 分销员:获取下级分销员分页列表 + */ + @GetMapping("/childUser") + public CzgResult> getDistributionUser(MkDistributionUserDTO param) { + AssertUtil.isNull(param.getShopId(), "店铺ID不能为空"); + AssertUtil.isNull(param.getParentId(), "父级ID不能为空"); + return CzgResult.success(distributionUserService.getDistributionUser(param)); + } + + /** + * 分销员:获取邀请人分页列表 + */ + @GetMapping("/inviteUser") + public CzgResult> getInviteUser( + @RequestParam Long id, + @RequestParam(required = false, defaultValue = "1") Integer page, + @RequestParam(required = false, defaultValue = "10") Integer size) { + AssertUtil.isNull(id, "邀请人ID"); + return CzgResult.success(distributionUserService.getInviteUser(id, page, size)); + } + } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopUser.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopUser.java index 59bf33d19..73a24cf8f 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopUser.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopUser.java @@ -150,6 +150,12 @@ public class ShopUser implements Serializable { private LocalDateTime nextDeliverTime; // 分销员ID 邀请人id private Long distributionUserId; + // 分销员ID 邀请人上级id + private Long distributionUserParentId; + //邀请人累计收益/一级分润 + private BigDecimal oneIncome; + //邀请人上级累计收益/二级分润 + private BigDecimal twoIncome; @Column(ignore = true) private String memberName; diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MkDistributionUserDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MkDistributionUserDTO.java index ec7907da5..c2b34679a 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MkDistributionUserDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MkDistributionUserDTO.java @@ -106,6 +106,11 @@ public class MkDistributionUserDTO extends TimeQueryParam implements Serializabl */ private LocalDateTime updateTime; + /** + * 用户头像 + */ + private String headImg; + /** * 用户名称 */ 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 b4dfd9a97..6c28a6c3c 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 @@ -1,9 +1,11 @@ package com.czg.market.service; +import com.czg.account.entity.UserInfo; import com.czg.market.dto.MkDistributionUserDTO; import com.czg.market.dto.MkDistributionWithdrawFlowDTO; import com.czg.market.entity.MkDistributionUser; import com.czg.market.vo.DistributionCenterShopVO; +import com.czg.market.vo.InviteUserVO; import com.czg.order.dto.MkDistributionPayDTO; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.service.IService; @@ -40,11 +42,26 @@ public interface MkDistributionUserService extends IService */ Map centerConfig(Long userId, Long shopId); + /** + * 分销员中心-实名认证 + */ + void realNameAuth(UserInfo userInfo); + + /** + * 分销员中心-绑定邀请人 + */ + void bindInviteUser(MkDistributionUserDTO param); + /** * 获取分销员分页列表 */ Page getDistributionUser(MkDistributionUserDTO param); + /** + * 获取分销员邀请人分页列表 + */ + Page getInviteUser(Long id, Integer page, Integer size); + /** * 添加分销员 * shop_id 和 shop_user_id 必填 opening_method 必填 diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/vo/InviteUserVO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/vo/InviteUserVO.java new file mode 100644 index 000000000..50902d598 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/vo/InviteUserVO.java @@ -0,0 +1,31 @@ +package com.czg.market.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author ww + * @description + */ +@Data +public class InviteUserVO { + /** + * 用户头像 + */ + private String headImg; + + /** + * 用户名称 + */ + private String shopUserName; + /** + * 手机号 + */ + private String shopUserPhone; + + /** + * 一级收益 + */ + private BigDecimal oneIncome; +} 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 3f4bfd955..6d411931b 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 @@ -3,8 +3,11 @@ package com.czg.service.market.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.IdcardUtil; +import com.alibaba.fastjson2.JSONObject; import com.czg.account.entity.ShopInfo; import com.czg.account.entity.ShopUser; +import com.czg.account.entity.UserInfo; import com.czg.account.service.ShopInfoService; import com.czg.account.service.ShopUserService; import com.czg.account.service.UserInfoService; @@ -24,6 +27,7 @@ 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.InviteUserVO; import com.czg.market.vo.MkDistributionConfigVO; import com.czg.order.dto.MkDistributionPayDTO; import com.czg.order.entity.OrderPayment; @@ -142,7 +146,7 @@ public class MkDistributionUserServiceImpl extends ServiceImpl getDistributionUser(MkDistributionUserDTO param) { QueryWrapper queryWrapper = new QueryWrapper(); @@ -210,6 +238,7 @@ public class MkDistributionUserServiceImpl extends ServiceImpl getInviteUser(Long id, Integer page, Integer size) { + return pageAs(new Page<>(page, size), QueryWrapper.create() + .select("head_img as headImg,nick_name as shopUserName,phone as shopUserPhone,one_income as oneIncome") + .eq(MkDistributionUser::getShopId, id) + .eq(MkDistributionUser::getParentId, id) + .orderBy(MkDistributionUser::getCreateTime).desc(), InviteUserVO.class); + } + @Override public void addDistributionUser(MkDistributionUser param) { AssertUtil.isNull(param.getShopId(), "店铺ID不能为空");