Compare commits
2 Commits
2eaf9a37d5
...
7c72e60a32
| Author | SHA1 | Date | |
|---|---|---|---|
| 7c72e60a32 | |||
| 0cab423604 |
@@ -0,0 +1,55 @@
|
||||
package com.yolo.keyboard.api.invitecode;
|
||||
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.yolo.keyboard.dal.dataobject.userinvitecodes.KeyboardUserInviteCodesDO;
|
||||
import com.yolo.keyboard.dal.mysql.userinvitecodes.KeyboardUserInviteCodesMapper;
|
||||
import com.yolo.keyboard.module.system.api.invitecode.UserInviteCodeApi;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 用户邀请码 API 实现类
|
||||
*
|
||||
* @author ziin
|
||||
*/
|
||||
@Service
|
||||
public class UserInviteCodeApiImpl implements UserInviteCodeApi {
|
||||
|
||||
@Resource
|
||||
private KeyboardUserInviteCodesMapper userInviteCodesMapper;
|
||||
|
||||
@Override
|
||||
public String createInviteCodeForAgent(Long userId, Long tenantId) {
|
||||
String inviteCode = generateUniqueInviteCode();
|
||||
KeyboardUserInviteCodesDO inviteCodeDO = KeyboardUserInviteCodesDO.builder()
|
||||
.code(inviteCode)
|
||||
.ownerSystemUserId(userId)
|
||||
.ownerTenantId(tenantId)
|
||||
.status((short) 1)
|
||||
.createdAt(LocalDateTime.now())
|
||||
.usedCount(0)
|
||||
.inviteType("AGENT")
|
||||
.build();
|
||||
userInviteCodesMapper.insert(inviteCodeDO);
|
||||
return inviteCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成唯一的6位邀请码(字母和数字混合)
|
||||
*/
|
||||
private String generateUniqueInviteCode() {
|
||||
String code;
|
||||
int maxAttempts = 100;
|
||||
int attempt = 0;
|
||||
do {
|
||||
code = RandomUtil.randomString("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", 6);
|
||||
attempt++;
|
||||
if (attempt >= maxAttempts) {
|
||||
throw new RuntimeException("无法生成唯一的邀请码,请稍后重试");
|
||||
}
|
||||
} while (userInviteCodesMapper.selectOne(KeyboardUserInviteCodesDO::getCode, code) != null);
|
||||
return code;
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ public class KeyboardUserInviteCodesPageReqVO extends PageParam {
|
||||
private Long ownerTenantId;
|
||||
|
||||
@Schema(description = "邀请码所属系统用户", example = "772")
|
||||
private Long owenrSystemUserId;
|
||||
private Long ownerSystemUserId;
|
||||
|
||||
@Schema(description = "邀请码类型", example = "1")
|
||||
private String inviteType;
|
||||
|
||||
@@ -54,7 +54,7 @@ public class KeyboardUserInviteCodesRespVO {
|
||||
|
||||
@Schema(description = "邀请码所属系统用户", example = "772")
|
||||
@ExcelProperty("邀请码所属系统用户")
|
||||
private Long owenrSystemUserId;
|
||||
private Long ownerSystemUserId;
|
||||
|
||||
@Schema(description = "邀请码类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@ExcelProperty("邀请码类型")
|
||||
|
||||
@@ -47,7 +47,7 @@ public class KeyboardUserInviteCodesSaveReqVO {
|
||||
private Long ownerTenantId;
|
||||
|
||||
@Schema(description = "邀请码所属系统用户", example = "772")
|
||||
private Long owenrSystemUserId;
|
||||
private Long ownerSystemUserId;
|
||||
|
||||
@Schema(description = "邀请码类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotEmpty(message = "邀请码类型不能为空")
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.yolo.keyboard.framework.mybatis.core.dataobject.BaseDO;
|
||||
* @author ziin
|
||||
*/
|
||||
@TableName("keyboard_user_invite_codes")
|
||||
@KeySequence("keyboard_user_invite_codes_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@KeySequence("invite_codes_id_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@@ -67,7 +67,7 @@ public class KeyboardUserInviteCodesDO {
|
||||
/**
|
||||
* 邀请码所属系统用户
|
||||
*/
|
||||
private Long owenrSystemUserId;
|
||||
private Long ownerSystemUserId;
|
||||
/**
|
||||
* 邀请码类型
|
||||
*/
|
||||
|
||||
@@ -28,7 +28,7 @@ public interface KeyboardUserInviteCodesMapper extends BaseMapperX<KeyboardUserI
|
||||
.eqIfPresent(KeyboardUserInviteCodesDO::getUsedCount, reqVO.getUsedCount())
|
||||
.eqIfPresent(KeyboardUserInviteCodesDO::getSystemUserId, reqVO.getSystemUserId())
|
||||
.eqIfPresent(KeyboardUserInviteCodesDO::getOwnerTenantId, reqVO.getOwnerTenantId())
|
||||
.eqIfPresent(KeyboardUserInviteCodesDO::getOwenrSystemUserId, reqVO.getOwenrSystemUserId())
|
||||
.eqIfPresent(KeyboardUserInviteCodesDO::getOwnerSystemUserId, reqVO.getOwnerSystemUserId())
|
||||
.eqIfPresent(KeyboardUserInviteCodesDO::getInviteType, reqVO.getInviteType())
|
||||
.orderByDesc(KeyboardUserInviteCodesDO::getId));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.yolo.keyboard.module.system.api.invitecode;
|
||||
|
||||
/**
|
||||
* 用户邀请码 API 接口
|
||||
*
|
||||
* @author ziin
|
||||
*/
|
||||
public interface UserInviteCodeApi {
|
||||
|
||||
/**
|
||||
* 为代理租户创建邀请码
|
||||
*
|
||||
* @param userId 系统用户ID
|
||||
* @param tenantId 租户ID
|
||||
* @return 生成的邀请码
|
||||
*/
|
||||
String createInviteCodeForAgent(Long userId, Long tenantId);
|
||||
|
||||
}
|
||||
@@ -21,6 +21,7 @@ import com.yolo.keyboard.module.system.dal.dataobject.permission.RoleDO;
|
||||
import com.yolo.keyboard.module.system.dal.dataobject.tenant.TenantDO;
|
||||
import com.yolo.keyboard.module.system.dal.dataobject.tenant.TenantPackageDO;
|
||||
import com.yolo.keyboard.module.system.dal.mysql.tenant.TenantMapper;
|
||||
import com.yolo.keyboard.module.system.api.invitecode.UserInviteCodeApi;
|
||||
import com.yolo.keyboard.module.system.enums.permission.RoleCodeEnum;
|
||||
import com.yolo.keyboard.module.system.enums.permission.RoleTypeEnum;
|
||||
import com.yolo.keyboard.module.system.service.permission.MenuService;
|
||||
@@ -75,6 +76,9 @@ public class TenantServiceImpl implements TenantService {
|
||||
@Resource
|
||||
private PermissionService permissionService;
|
||||
|
||||
@Autowired(required = false)
|
||||
private UserInviteCodeApi userInviteCodeApi;
|
||||
|
||||
@Override
|
||||
public List<Long> getTenantIdList() {
|
||||
List<TenantDO> tenants = tenantMapper.selectList();
|
||||
@@ -135,6 +139,10 @@ public class TenantServiceImpl implements TenantService {
|
||||
Long userId = createUser(roleId, createReqVO);
|
||||
// 修改租户的管理员
|
||||
tenantMapper.updateById(new TenantDO().setId(tenant.getId()).setContactUserId(userId));
|
||||
// 为代理租户创建邀请码
|
||||
if ("代理".equals(createReqVO.getTenantType()) && userInviteCodeApi != null) {
|
||||
userInviteCodeApi.createInviteCodeForAgent(userId, tenant.getId());
|
||||
}
|
||||
});
|
||||
return tenant.getId();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user