소스 검색

1、迁移根据销售获取邀请码

yys 1 주 전
부모
커밋
64737c9049

+ 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);
+    }
 }

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

@@ -66,6 +66,9 @@ 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);
 

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

@@ -287,4 +287,6 @@ public interface ICompanyUserService {
     CompanyUser getInviteCodeByCompanyUserIdAndUserId(Long invitedBySalesId);
 
     void stopLoginOverdue(Date thirtyDaysAgo);
+
+    String getInviteCodeByCompanyUserId(Long salesId);
 }

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

@@ -69,6 +69,7 @@ import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.net.URLDecoder;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -139,6 +140,10 @@ public class CompanyUserServiceImpl implements ICompanyUserService
 //    @Autowired
 //    private ICompanyUserRoleService userRoleService;
 
+    /**
+     * 邀请码缓存
+     */
+    private static final Map<Long, String> CODE_CACHE = new ConcurrentHashMap<>();
 
     /**
      * 查询物业公司管理员信息
@@ -1178,5 +1183,37 @@ public class CompanyUserServiceImpl implements ICompanyUserService
     public void stopLoginOverdue(Date thirtyDaysAgo) {
         companyUserMapper.stopLoginOverdue(thirtyDaysAgo);
     }
+    @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;
+    }
 
+
+    /**
+     * 生成基础邀请码
+     */
+    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);
+    }
 }

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

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