瀏覽代碼

增加对应关系

gaohp 11 月之前
父節點
當前提交
8f4b5fdce9

+ 1 - 0
feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ErrorCodeConstants.java

@@ -8,5 +8,6 @@ public interface ErrorCodeConstants {
     ErrorCode SOCIAL_STATUS_NOT_EXISTS = new ErrorCode(1_002_030_001, "身价不存在");
     ErrorCode SOURCE_NOT_EXISTS = new ErrorCode(1_002_030_002, "分销来源不存在");
     ErrorCode USER_NOT_EXISTS = new ErrorCode(1_002_030_003, "分销用户不存在");
+    ErrorCode IS_EXISTS = new ErrorCode(1_002_030_003, "当前推销人已经存在上级");
 
 }

+ 4 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/user/UserMapper.java

@@ -6,6 +6,7 @@ import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
 import cn.newfeifan.mall.module.distri.dal.dataobject.user.UserDO;
+import io.swagger.v3.oas.models.security.SecurityScheme;
 import org.apache.ibatis.annotations.Mapper;
 import cn.newfeifan.mall.module.distri.controller.admin.user.vo.*;
 
@@ -30,4 +31,7 @@ public interface UserMapper extends BaseMapperX<UserDO> {
                 .orderByDesc(UserDO::getId));
     }
 
+
+    int hasParent(Long userId);
+
 }

+ 10 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/user/UserService.java

@@ -2,6 +2,7 @@ package cn.newfeifan.mall.module.distri.service.user;
 
 import java.util.*;
 import javax.validation.*;
+
 import cn.newfeifan.mall.module.distri.controller.admin.user.vo.*;
 import cn.newfeifan.mall.module.distri.dal.dataobject.user.UserDO;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
@@ -52,4 +53,13 @@ public interface UserService {
      */
     PageResult<UserDO> getUserPage(UserPageReqVO pageReqVO);
 
+    /**
+     * 当前推销人
+     *
+     * @param distributor 被推销人
+     * @param parent      推销人
+     */
+    void addDistributor(Long distributor, Long parent);
+
+
 }

+ 53 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/user/UserServiceImpl.java

@@ -1,11 +1,17 @@
 package cn.newfeifan.mall.module.distri.service.user;
 
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.module.system.dal.dataobject.user.AdminUserDO;
+import cn.newfeifan.mall.module.system.service.user.AdminUserService;
 import org.springframework.stereotype.Service;
+
 import javax.annotation.Resource;
+
 import org.springframework.validation.annotation.Validated;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+
 import cn.newfeifan.mall.module.distri.controller.admin.user.vo.*;
 import cn.newfeifan.mall.module.distri.dal.dataobject.user.UserDO;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
@@ -29,6 +35,10 @@ public class UserServiceImpl implements UserService {
     @Resource
     private UserMapper userMapper;
 
+    @Resource
+    private AdminUserService adminUserService;
+
+
     @Override
     public Long createUser(UserSaveReqVO createReqVO) {
         // 插入
@@ -68,7 +78,50 @@ public class UserServiceImpl implements UserService {
 
     @Override
     public PageResult<UserDO> getUserPage(UserPageReqVO pageReqVO) {
+
+        /*@Query(value = "
+        SELECT DISTINCT d.* FROM Distributors d INNER JOIN DistributorPaths dp ON d.id = dp.descendant WHERE dp.ancestor
+        IN (SELECT dp2.ancestor FROM DistributorPaths dp2 WHERE dp2.descendant = :distributorId AND dp2.depth = 1)
+        AND dp.depth = 1 AND d.id < :distributorId", nativeQuery = true)
+         */
+
         return userMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public void addDistributor(Long distributor, Long parent) {
+
+        int i = userMapper.hasParent(distributor);
+        if (i >0){
+            throw exception(IS_EXISTS);
+        }
+
+
+        AdminUserDO user = adminUserService.getUser(distributor);
+        if (user != null) {
+            // 创建分销人员表
+            // 判断当前推销人是否有数据, 如果没有, 同样需要创建一个新的分销用户
+            UserDO distributorDO = new UserDO().setUserId(distributor).setName(user.getUsername()).setMobile(user.getMobile());
+            userMapper.insert(distributorDO);
+        }
+        UserDO userDO = selectByUserId(parent);
+        if (userDO == null) {
+            AdminUserDO parentUser = adminUserService.getUser(parent);
+            if (parentUser != null){
+                UserDO parentDO = new UserDO().setUserId(parent).setName(parentUser.getUsername()).setMobile(parentUser.getMobile());
+                userMapper.insert(parentDO);
+            }
+        }
+
+
+    }
+
+
+    public UserDO selectByUserId(Long userId) {
+
+        return userMapper.selectOne(new LambdaQueryWrapperX<UserDO>().eqIfPresent(UserDO::getUserId, userId));
+
+    }
+
+
 }

+ 21 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/user/UserMapper.xml

@@ -8,5 +8,26 @@
         代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
         文档可见:https://www.zhongxing.cn/MyBatis/x-plugins/
      -->
+    <resultMap id="BaseResultMap" type="cn.newfeifan.mall.module.distri.dal.dataobject.user.UserDO">
+        <id column="id" property="id" />
+        <result column="user_id" property="userId" />
+        <result column="name" property="name" />
+        <result column="mobile" property="mobile" />
+        <result column="source" property="source" />
+        <result column="integral" property="integral" />
+        <result column="social_status" property="socialStatus" />
+        <result column="social_status_kandian" property="socialStatusKandian" />
+        <result column="creator" property="creator" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="deleted" property="deleted" />
+    </resultMap>
+
+    <select id="hasParent" resultType="Integer" >
+       SELECT COUNT(dp) > 0 FROM distri_share_path dp WHERE dp.descendant =  #{distributorId}  AND dp.depth = 1
+    </select>
+
+
+
 
 </mapper>