Ver código fonte

邀请码可以批量根据指定手机号创建

liyanbo 3 semanas atrás
pai
commit
03501b6ce0

+ 3 - 0
byzs-module-system/src/main/java/cn/iocoder/byzs/module/system/controller/admin/invitecode/vo/InviteCodeSaveReqVO.java

@@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Schema(description = "管理后台 - 邀请码新增/修改 Request VO")
 @Data
@@ -16,6 +17,8 @@ public class InviteCodeSaveReqVO {
     private String type;
     //批量数量
     private Integer batchCount;
+    //批量手机号
+    private List<String> onlyPhoneList;
 
     @Schema(description = "邀请码")
     private String code;

+ 2 - 2
byzs-module-system/src/main/java/cn/iocoder/byzs/module/system/dal/mysql/invitecode/InviteCodeMapper.java

@@ -17,14 +17,14 @@ public interface InviteCodeMapper extends BaseMapperX<InviteCodeDO> {
 
     default PageResult<InviteCodeDO> selectPage(InviteCodePageReqVO reqVO) {
         return selectPage(reqVO, new LambdaQueryWrapperX<InviteCodeDO>()
-                .eqIfPresent(InviteCodeDO::getCode, reqVO.getCode())
+                .likeIfPresent(InviteCodeDO::getCode, reqVO.getCode())
 //                .eqIfPresent(InviteCodeDO::getRoleIds, reqVO.getRoleName())
                 .eqIfPresent(InviteCodeDO::getValidTime, reqVO.getValidTime())
                 .betweenIfPresent(InviteCodeDO::getExpireTime, reqVO.getExpireTime())
 //                .eqIfPresent(InviteCodeDO::getUseUserId, reqVO.getUseUserName())
 //                .eqIfPresent(InviteCodeDO::getUseUserTenantId, reqVO.getUseUserTenantName())
                 .eqIfPresent(InviteCodeDO::getStatus, reqVO.getStatus())
-                .eqIfPresent(InviteCodeDO::getOnlyPhone, reqVO.getOnlyPhone())
+                .likeIfPresent(InviteCodeDO::getOnlyPhone, reqVO.getOnlyPhone())
                 .betweenIfPresent(InviteCodeDO::getCreateTime, reqVO.getCreateTime())
                 .eqIfPresent(InviteCodeDO::getTenantId, reqVO.getTenantId())
                 .orderByDesc(InviteCodeDO::getId));

+ 27 - 0
byzs-module-system/src/main/java/cn/iocoder/byzs/module/system/service/invitecode/InviteCodeServiceImpl.java

@@ -76,6 +76,33 @@ public class InviteCodeServiceImpl implements InviteCodeService {
             // 返回第一个生成的邀请码ID
             return inviteCodeList.get(0).getId();
         }
+        // 批量手机号生成邀请码
+        else if ("batchPhone".equals(createReqVO.getType())) {
+            List<String> batchPhones = createReqVO.getOnlyPhoneList();
+
+            // 生成批量邀请码
+            List<InviteCodeDO> inviteCodeList = new ArrayList<>(batchPhones.size());
+            for (String phone : batchPhones) {
+                InviteCodeDO inviteCode = BeanUtils.toBean(createReqVO, InviteCodeDO.class);
+                // 设置手机号
+                inviteCode.setOnlyPhone(phone);
+                // 生成随机邀请码
+                String randomCode = generateRandomCode(10);
+                // 如果有前缀,则拼接前缀
+                if (createReqVO.getCode() != null && !createReqVO.getCode().isEmpty()) {
+                    inviteCode.setCode(createReqVO.getCode() + randomCode);
+                } else {
+                    inviteCode.setCode(randomCode);
+                }
+                inviteCodeList.add(inviteCode);
+            }
+
+            // 批量插入
+            inviteCodeMapper.insertBatch(inviteCodeList);
+
+            // 返回第一个生成的邀请码ID
+            return inviteCodeList.get(0).getId();
+        }
         // 单条插入
         else {
             InviteCodeDO inviteCode = BeanUtils.toBean(createReqVO, InviteCodeDO.class);