Parcourir la source

APP 邀请码修改 达人视频查询修改

xgb il y a 1 mois
Parent
commit
4cd3bc2055

+ 0 - 3
fs-admin/src/main/java/com/fs/course/controller/FsUserTalentController.java

@@ -124,9 +124,6 @@ public class FsUserTalentController extends BaseController
     @GetMapping("/listBySearch")
     public R listBySearCh(FsUserTalent fsUserTalent)
     {
-        if (Objects.nonNull(fsUserTalent) && StringUtils.isNotBlank(fsUserTalent.getPhone())){
-            fsUserTalent.setPhone(PhoneUtil.encryptPhone(fsUserTalent.getPhone()));
-        }
         List<FsUserTalent> list = fsUserTalentService.selectFsUserTalentList(fsUserTalent);
         return R.ok().put("data",list);
     }

+ 12 - 0
fs-company-app/src/main/java/com/fs/app/controller/CompanyUserController.java

@@ -610,4 +610,16 @@ public class CompanyUserController extends AppBaseController {
         }
         return null;
     }
+
+    /**
+     * 根据销售获取邀请码
+     *
+     * @return
+     */
+    @GetMapping("/getInviteCode")
+    @ApiOperation("根据销售获取邀请码")
+    public R getInviteCode(Long salesId) {
+        String inviteCode = companyUserService.getInviteCodeByCompanyUserId(salesId);
+        return R.ok().put("inviteCode", inviteCode);
+    }
 }

+ 7 - 0
fs-service/src/main/java/com/fs/company/domain/CompanyUser.java

@@ -194,6 +194,13 @@ public class CompanyUser extends BaseEntity
     /** 绑定的公司用户ID */
     private Long bindCompanyUserId;
 
+    /** 邀请码 */
+    private String invitationCode;
+
+    /** 邀请人名称 */
+    @TableField(exist = false)
+    private String invitationName;
+
     @TableField(exist = false)
     private List<Long> deptList;
 

+ 10 - 0
fs-service/src/main/java/com/fs/company/mapper/CompanyUserMapper.java

@@ -36,6 +36,9 @@ public interface CompanyUserMapper
      */
     public CompanyUser selectCompanyUserById(Long userId);
 
+    @Select("select * from company_user where user_id=#{invitedSalesId} and del_flag=0")
+     CompanyUser getInviteCodeByCompanyUserIdAndUserId(@Param("invitedSalesId") Long invitedSalesId);
+
     /**
      * 查询物业公司管理员信息列表
      *
@@ -60,6 +63,13 @@ public interface CompanyUserMapper
      */
     public int updateCompanyUser(CompanyUser companyUser);
 
+    @Select("select invitation_code from company_user where user_id=#{companyUserId} and del_flag=0")
+    String selectCodeByUserId(@Param("companyUserId") Long companyUserId);
+
+    @Select("select user_id from company_user where invitation_code=#{inviteCode} and del_flag=0")
+    Long selectCompanyUserIdByInviteCode(@Param("inviteCode") String inviteCode);
+
+
     @Update("UPDATE company_user SET qw_user_id = NULL,qw_status=0 where user_id=#{userId}")
     public int updateCompanyUserByNullQwUserID(@Param("userId") Long companyUserId);
 

+ 10 - 0
fs-service/src/main/java/com/fs/company/service/ICompanyUserService.java

@@ -264,4 +264,14 @@ public interface ICompanyUserService {
      * @return 绑定的用户列表
      */
     List<com.fs.hisStore.domain.FsUserScrm> selectBoundFsUsersByCompanyUserId(Long companyUserId);
+
+    /**
+     * 根据销售获取邀请码
+     */
+    String getInviteCodeByCompanyUserId(Long companyUserId);
+
+    /**
+     * 根据销售绑定关系获取销售邀请码
+     */
+    CompanyUser getInviteCodeByCompanyUserIdAndUserId( Long userId);
 }

+ 47 - 0
fs-service/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java

@@ -64,6 +64,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -128,6 +129,10 @@ public class CompanyUserServiceImpl implements ICompanyUserService
 //    @Autowired
 //    private ICompanyUserRoleService userRoleService;
 
+    /**
+     * 邀请码缓存
+     */
+    private static final Map<Long, String> CODE_CACHE = new ConcurrentHashMap<>();
 
     /**
      * 查询物业公司管理员信息
@@ -1096,4 +1101,46 @@ public class CompanyUserServiceImpl implements ICompanyUserService
     public List<com.fs.hisStore.domain.FsUserScrm> selectBoundFsUsersByCompanyUserId(Long companyUserId) {
         return companyUserMapper.selectBoundFsUsersByCompanyUserId(companyUserId);
     }
+    @Override
+    public String getInviteCodeByCompanyUserId(Long companyUserId) {
+        if (CODE_CACHE.containsKey(companyUserId)) {
+            return CODE_CACHE.get(companyUserId);
+        }
+        //是否存在
+        String code = companyUserMapper.selectCodeByUserId(companyUserId);
+        if (StringUtils.isNotBlank(code)) {
+            return code;
+        }
+        String inviteCode = generateBaseCode(companyUserId);
+        CompanyUser companyUser = new CompanyUser();
+        companyUser.setUserId(companyUserId);
+        companyUser.setInvitationCode(inviteCode);
+        companyUserMapper.updateCompanyUser(companyUser);
+        CODE_CACHE.put(companyUserId, inviteCode);
+        return inviteCode;
+    }
+
+    @Override
+    public CompanyUser getInviteCodeByCompanyUserIdAndUserId(Long userId) {
+        CompanyUser companyUser = companyUserMapper.getInviteCodeByCompanyUserIdAndUserId(userId);
+        if (companyUser != null) {
+            return companyUser;
+        }
+        return null;
+    }
+
+    /**
+     * 生成基础邀请码
+     */
+    private static String generateBaseCode(Long salesId) {
+        // 简单的算法:销售ID经过简单变换
+        long transformed = (salesId * 31L + 12345L) % 1000000L;
+
+        // 决定长度:4-6位
+        int length = 4 + (int)(salesId % 3);
+
+        // 格式化为指定位数
+        return String.format("%0" + length + "d", transformed);
+    }
+
 }

+ 12 - 4
fs-service/src/main/java/com/fs/course/service/impl/FsUserTalentServiceImpl.java

@@ -1,12 +1,10 @@
 package com.fs.course.service.impl;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.DateUtils;
+import com.fs.common.utils.StringUtils;
 import com.fs.course.domain.FsUserVideo;
 import com.fs.course.service.IFsBlackTalentService;
 import com.fs.course.service.IFsUserTalentFollowService;
@@ -63,6 +61,16 @@ public class FsUserTalentServiceImpl implements IFsUserTalentService
     @Override
     public List<FsUserTalent> selectFsUserTalentList(FsUserTalent fsUserTalent)
     {
+        List<FsUserTalent>  list=fsUserTalentMapper.selectFsUserTalentList(fsUserTalent);
+        if(list != null && !list.isEmpty()){
+            return list;
+        }
+
+        if (Objects.nonNull(fsUserTalent) && StringUtils.isNotBlank(fsUserTalent.getPhone())){
+            fsUserTalent.setPhone(PhoneUtil.encryptPhone(fsUserTalent.getPhone()));
+        }
+
+
         return fsUserTalentMapper.selectFsUserTalentList(fsUserTalent);
     }
 

+ 2 - 0
fs-service/src/main/java/com/fs/his/domain/FsUser.java

@@ -186,6 +186,8 @@ public class FsUser extends BaseEntity
     /** app登录后不为null(表示是否下载app) */
     private String historyApp;
 
+    private  Long invitedBySalesId;//邀请人销售id
+
     public void setNickName(String nickname)
     {
         if(StringUtils.isNotEmpty(nickname)){

+ 15 - 0
fs-service/src/main/java/com/fs/his/dto/FsUserBindSalesParamDTO.java

@@ -0,0 +1,15 @@
+package com.fs.his.dto;
+
+import lombok.Data;
+
+@Data
+public class FsUserBindSalesParamDTO {
+    /**
+     * 用户id
+     */
+    private Long userId;
+    /**
+     * 销售id
+     */
+    private String inviteCode;
+}

+ 5 - 0
fs-service/src/main/java/com/fs/his/service/IFsUserService.java

@@ -237,4 +237,9 @@ public interface IFsUserService
     List<FsUser> selectFsUserListByPhone(String phone);
 
     R updatePasswordByPhone(String password, String encryptPhone);
+
+    /**
+     * 销售分享app下载链接给用户
+     */
+    Boolean  bindUserToSales(Long userId, String inviteCode);
 }

+ 20 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java

@@ -25,6 +25,7 @@ import com.fs.common.core.domain.entity.SysDictData;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.enums.ImTypeEnum;
+import com.fs.common.exception.CustomException;
 import com.fs.common.param.LoginMaWxParam;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.DictUtils;
@@ -1607,4 +1608,23 @@ public class FsUserServiceImpl implements IFsUserService {
         fsUserMapper.updatePasswordByPhone(password, encryptPhone);
         return R.ok();
     }
+
+    @Override
+    public Boolean bindUserToSales(Long userId, String inviteCode) {
+        FsUser fsUser = fsUserMapper.selectFsUserById(userId);
+        if (fsUser == null) {
+            throw new CustomException("用户不存在");
+        }
+        Long salesId = companyUserMapper.selectCompanyUserIdByInviteCode(inviteCode);
+        if (salesId == null) {
+            throw new CustomException("邀请码不存在");
+        }
+        if(fsUser.getInvitedBySalesId() != null){
+            if(fsUser.getInvitedBySalesId().equals(salesId)){
+                throw new CustomException("已发送给app下载链接给该用户");
+            }
+        }
+        fsUser.setInvitedBySalesId(salesId);
+        return fsUserMapper.updateFsUser(fsUser)>0;
+    }
 }

+ 1 - 0
fs-service/src/main/resources/mapper/company/CompanyUserMapper.xml

@@ -317,6 +317,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isAudit != null">`is_audit` = #{isAudit},</if>
             <if test="doctorId != null">`doctor_id` = #{doctorId},</if>
             <if test="unionId != null">`union_id` = #{unionId},</if>
+            <if test="invitationCode != null">`invitation_code` = #{invitationCode},</if>
         </trim>
         where user_id = #{userId}
     </update>

+ 3 - 1
fs-service/src/main/resources/mapper/his/FsUserMapper.xml

@@ -54,7 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectFsUserVo">
-        select user_id,qw_ext_id,sex,is_buy,is_show,`level`,course_ma_open_id,is_push,is_add_qw,source,login_device,is_individuation_push,store_open_id,password,jpush_id, is_vip,vip_start_date,vip_end_date,vip_level,vip_status,nick_name,integral_status, avatar, phone, integral,sign_num, status, tui_user_id, tui_time, tui_user_count, ma_open_id, mp_open_id, union_id, is_del, user_code, remark, create_time, update_time, last_ip, balance,is_weixin_auth,parent_id,qw_user_id,app_id,company_id,company_user_id,is_promoter,now_money,brokerage_price,spread_user_id, spread_time,pay_count, spread_count,user_type from fs_user
+        select user_id,qw_ext_id,sex,is_buy,`level`,course_ma_open_id,is_push,is_add_qw,source,login_device,is_individuation_push,store_open_id,password,jpush_id, is_vip,vip_start_date,vip_end_date,vip_level,vip_status,nick_name,integral_status, avatar, phone, integral,sign_num, status, tui_user_id, tui_time, tui_user_count, ma_open_id, mp_open_id, union_id, is_del, user_code, remark, create_time, update_time, last_ip, balance,is_weixin_auth,parent_id,qw_user_id,app_id,company_id,company_user_id,is_promoter,now_money,brokerage_price,spread_user_id, spread_time,pay_count, spread_count,user_type,invited_by_sales_id from fs_user
     </sql>
 
     <select id="selectFsUserList" parameterType="FsUser" resultMap="FsUserResult">
@@ -695,6 +695,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="orderCount != null">order_count = #{orderCount},</if>
             <if test="companyUserId != null">company_user_id = #{companyUserId},</if>
             <if test="appId != null">app_id = #{appId},</if>
+            <if test="invitedBySalesId != null">invited_by_sales_id = #{invitedBySalesId},</if>
+
         </trim>
         where user_id = #{userId}
     </update>

+ 11 - 1
fs-user-app/src/main/java/com/fs/app/controller/CompanyUserController.java

@@ -481,6 +481,16 @@ public class CompanyUserController extends  AppBaseController {
         return AjaxResult.success(fsUserInformationCollectionService.getInfo(fsUserInformationCollection));
     }
 
-
+    /**
+     * 根据销售获取邀请码
+     *
+     * @return
+     */
+    @GetMapping("/getInviteCode")
+    @ApiOperation("根据销售获取邀请码")
+    public R getInviteCode(Long salesId) {
+        String inviteCode = companyUserService.getInviteCodeByCompanyUserId(salesId);
+        return R.ok().put("inviteCode", inviteCode);
+    }
 
 }

+ 15 - 1
fs-user-app/src/main/java/com/fs/app/controller/UserController.java

@@ -11,6 +11,8 @@ import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.sign.Md5Utils;
+import com.fs.company.domain.CompanyUser;
+import com.fs.company.service.ICompanyUserService;
 import com.fs.course.service.IFsUserCourseVideoService;
 import com.fs.his.domain.FsDoctor;
 import com.fs.his.domain.FsUser;
@@ -81,6 +83,10 @@ public class UserController extends  AppBaseController {
 
     @Autowired
     private IFsUserService fsUserService;
+
+    @Autowired
+    private ICompanyUserService companyUserService;
+
     @Login
     @ApiOperation("获取用户信息")
     @PostMapping("/friendsSearch")
@@ -127,7 +133,15 @@ public class UserController extends  AppBaseController {
                 }
             }
 
-            return R.ok().put("user",user);
+            CompanyUser companyUser =new CompanyUser();
+            if(user.getInvitedBySalesId()!=null){
+                companyUser = companyUserService.getInviteCodeByCompanyUserIdAndUserId(user.getInvitedBySalesId());
+                if(companyUser!=null){
+                    companyUser.setInvitationName(StringUtils.isNotEmpty(companyUser.getNickName())?companyUser.getNickName():"");
+                }
+            }
+
+            return R.ok().put("user",user).put("inviteInfo",companyUser);
         } catch (Exception e){
             return R.error("操作异常");
         }

+ 18 - 0
fs-user-app/src/main/java/com/fs/app/controller/course/CourseFsUserController.java

@@ -25,7 +25,9 @@ import com.fs.course.service.*;
 import com.fs.course.vo.FsUserCourseVideoH5VO;
 import com.fs.course.vo.newfs.FsUserCourseVideoLinkDetailsVO;
 import com.fs.his.domain.FsUser;
+import com.fs.his.dto.FsUserBindSalesParamDTO;
 import com.fs.his.enums.FsUserOperationEnum;
+import com.fs.his.service.IFsUserService;
 import com.fs.im.dto.OpenImResponseDTO;
 import com.fs.im.service.OpenIMService;
 import io.swagger.annotations.Api;
@@ -65,6 +67,9 @@ public class CourseFsUserController extends AppBaseController {
     @Autowired
     private RedisTemplate redisTemplate;
 
+    @Autowired
+    private IFsUserService fsUserService;
+
 
 
     @Login
@@ -174,4 +179,17 @@ public class CourseFsUserController extends AppBaseController {
         logger.error("zyp \n【h5看课中途报错】:{}",msg);
     }
 
+
+
+
+    @PostMapping("/bindSales")
+    @ApiOperation("销售分享app下载链接给用户")
+    public R bindSalesToUser(@RequestBody FsUserBindSalesParamDTO param) {
+        Boolean r = fsUserService.bindUserToSales(param.getUserId(), param.getInviteCode());
+        if (r) {
+            return R.ok();
+        }
+        return R.error();
+    }
+
 }