用户账号生成
This commit is contained in:
parent
bdb310da38
commit
db79ce46bf
|
@ -11,6 +11,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
|
|||
import org.jeecg.common.system.base.controller.JeecgController;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.jeecg.modules.entity.CeesUser;
|
||||
import org.jeecg.modules.entity.dto.CreateAccountDto;
|
||||
import org.jeecg.modules.enums.IdentityEnum;
|
||||
import org.jeecg.modules.enums.MajorEnum;
|
||||
import org.jeecg.modules.service.ICeesUserService;
|
||||
|
@ -70,12 +71,20 @@ public class CeesUserController extends JeecgController<CeesUser, ICeesUserServi
|
|||
@ApiOperation(value = "CEES用户表-添加", notes = "CEES用户表-添加")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody CeesUser ceesUser) {
|
||||
ceesUser.setUserHeadingCode(ceesUserService.createIdentityID(ceesUser));
|
||||
ceesUser.setWorkload(0);
|
||||
ceesUserService.save(ceesUser);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
@PostMapping("/createAccount")
|
||||
public Result<?> createAccount(@RequestBody CreateAccountDto createAccountDto) {
|
||||
try {
|
||||
ceesUserService.createAccount(createAccountDto);
|
||||
} catch (Exception e) {
|
||||
return Result.error(e.getMessage());
|
||||
}
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
|
|
|
@ -14,7 +14,7 @@ import org.jeecgframework.poi.excel.annotation.Excel;
|
|||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @Description: CEES用户表
|
||||
|
@ -41,7 +41,7 @@ public class CeesUser implements Serializable {
|
|||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建日期")
|
||||
private Date createTime;
|
||||
private LocalDateTime createTime;
|
||||
/**更新人*/
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private String updateBy;
|
||||
|
@ -49,7 +49,7 @@ public class CeesUser implements Serializable {
|
|||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新日期")
|
||||
private Date updateTime;
|
||||
private LocalDateTime updateTime;
|
||||
/**所属部门*/
|
||||
@ApiModelProperty(value = "所属部门")
|
||||
private String sysOrgCode;
|
||||
|
@ -62,9 +62,9 @@ public class CeesUser implements Serializable {
|
|||
@ApiModelProperty(value = "用户身份码")
|
||||
private String userId;
|
||||
/**用户识别码*/
|
||||
@Excel(name = "用户识别码", width = 15)
|
||||
@ApiModelProperty(value = "用户识别码")
|
||||
private String userHeadingCode;
|
||||
// @Excel(name = "用户识别码", width = 15)
|
||||
// @ApiModelProperty(value = "用户识别码")
|
||||
// private String userHeadingCode;
|
||||
/**工作量*/
|
||||
@Excel(name = "工作量", width = 15)
|
||||
@ApiModelProperty(value = "工作量")
|
||||
|
@ -75,7 +75,7 @@ public class CeesUser implements Serializable {
|
|||
private String groupId;
|
||||
/**身份:管理员1 学生2,老师 3 ,外校老师4*/
|
||||
@Excel(name = "身份:管理员1 学生2,老师 3 ,外校老师4", width = 15)
|
||||
@ApiModelProperty(value = "身份:管理员1 学生2,老师 3 ,外校老师4")
|
||||
@ApiModelProperty(value = "身份:管理员1 学生2,本校老师 3 ,外校老师4")
|
||||
private Integer identity;
|
||||
/**
|
||||
* 身份描述
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
package org.jeecg.modules.entity.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class CreateAccountDto {
|
||||
private Integer group;
|
||||
private Integer majorId;
|
||||
private Integer num;
|
||||
}
|
|
@ -20,7 +20,7 @@ public enum IdentityEnum {
|
|||
/**
|
||||
* 老师
|
||||
*/
|
||||
TEACHER(3, "老师"),
|
||||
TEACHER(3, "本校老师"),
|
||||
/**
|
||||
* 外校老师
|
||||
*/
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.jeecg.modules.service;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.modules.entity.CeesUser;
|
||||
import org.jeecg.modules.entity.dto.CreateAccountDto;
|
||||
|
||||
/**
|
||||
* @Description: CEES用户表
|
||||
|
@ -20,4 +21,6 @@ public interface ICeesUserService extends IService<CeesUser> {
|
|||
Result<?> getUser(String userId);
|
||||
|
||||
Result<?> getGroupName(String groupId);
|
||||
|
||||
void createAccount(CreateAccountDto createAccountDto);
|
||||
}
|
||||
|
|
|
@ -10,13 +10,17 @@ import org.jeecg.modules.entity.CeesLocalTeacher;
|
|||
import org.jeecg.modules.entity.CeesUser;
|
||||
import org.jeecg.modules.entity.CeesWaiTeacher;
|
||||
import org.jeecg.modules.entity.Student;
|
||||
import org.jeecg.modules.entity.dto.CreateAccountDto;
|
||||
import org.jeecg.modules.enums.identity.MajorLetterEnum;
|
||||
import org.jeecg.modules.enums.identity.StudentLetterEnum;
|
||||
import org.jeecg.modules.mapper.*;
|
||||
import org.jeecg.modules.service.ICeesUserService;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Description: CEES用户表
|
||||
|
@ -41,6 +45,10 @@ public class CeesUserServiceImpl extends ServiceImpl<CeesUserMapper, CeesUser> i
|
|||
@Resource
|
||||
CeesWaiTeacherMapper ceesWaiTeacherMapper;
|
||||
|
||||
/**
|
||||
* @param ceesUser
|
||||
* @return {@link String }
|
||||
*/
|
||||
@Override
|
||||
public String createIdentityID(CeesUser ceesUser) {
|
||||
String res = null;
|
||||
|
@ -161,7 +169,7 @@ public class CeesUserServiceImpl extends ServiceImpl<CeesUserMapper, CeesUser> i
|
|||
jsonObject.put("router", "/waiTeacher");
|
||||
jsonObject.put("status", "1"); //1是填写信息
|
||||
return Result.ok(jsonObject);
|
||||
} else{
|
||||
} else {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("userId", user.getUserId());
|
||||
jsonObject.put("router", "/mainPage");
|
||||
|
@ -247,4 +255,146 @@ public class CeesUserServiceImpl extends ServiceImpl<CeesUserMapper, CeesUser> i
|
|||
public Result<?> getGroupName(String groupId) {
|
||||
return Result.ok(ceesGroupMapper.selectById(groupId).getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param createAccountDto
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void createAccount(CreateAccountDto createAccountDto) {
|
||||
Integer groupType = createAccountDto.getGroup();
|
||||
Integer num = createAccountDto.getNum();
|
||||
Integer majorId = createAccountDto.getMajorId();
|
||||
// 参数校验
|
||||
if (groupType == null || num == null || majorId == null || num <= 0) {
|
||||
throw new IllegalArgumentException("参数无效");
|
||||
}
|
||||
|
||||
// 存储已存在的用户ID
|
||||
Set<String> set = new HashSet<>();
|
||||
// 存储与majorID相关的用户专业id
|
||||
List<String> userMIDList = new ArrayList<>();
|
||||
// 存储新生成的用户对象
|
||||
List<CeesUser> h5Users = new ArrayList<>();
|
||||
// 获取所有用户
|
||||
List<CeesUser> list = this.list();
|
||||
|
||||
// 遍历现有用户
|
||||
list.forEach(item -> {
|
||||
set.add(item.getUserId());
|
||||
if (Objects.equals(item.getMajorId(), majorId)) {
|
||||
userMIDList.add(item.getUserMajorId());
|
||||
}
|
||||
});
|
||||
|
||||
// 根据专业 ID 生成账号
|
||||
String prefix = getPrefixByMajorId(majorId);
|
||||
String startId = userMIDList.isEmpty() ? getDefaultStartId(majorId) : userMIDList.get(userMIDList.size() - 1);
|
||||
saveAccount(num, set, groupType, h5Users, majorId, startId, prefix);
|
||||
|
||||
// 保存生成的用户账号
|
||||
this.saveBatch(h5Users);
|
||||
|
||||
//TODO 邀请函生成
|
||||
// if (groupType == 9) {
|
||||
// List<H5Invitation> h5Invitations = h5Users.stream()
|
||||
// .map(item -> new H5Invitation(item.getUserId(), item.getGroupId(), item.getUserMajorId(), item.getMajorId()))
|
||||
// .collect(Collectors.toList());
|
||||
// h5InvitationService.saveBatch(h5Invitations);
|
||||
// }
|
||||
|
||||
// 清理资源
|
||||
h5Users.clear();
|
||||
set.clear();
|
||||
userMIDList.clear();
|
||||
}
|
||||
|
||||
private String getPrefixByMajorId(Integer majorId) {
|
||||
switch (majorId) {
|
||||
case 1:
|
||||
return "W";
|
||||
case 4:
|
||||
return "D";
|
||||
case 7:
|
||||
return "L";
|
||||
case 8:
|
||||
return "M";
|
||||
default:
|
||||
throw new IllegalArgumentException("未知专业 ID");
|
||||
}
|
||||
}
|
||||
|
||||
private String getDefaultStartId(Integer majorId) {
|
||||
switch (majorId) {
|
||||
case 1:
|
||||
return "W240000";
|
||||
case 4:
|
||||
return "D241000";
|
||||
case 7:
|
||||
return "L242000";
|
||||
case 8:
|
||||
return "M243000";
|
||||
default:
|
||||
throw new IllegalArgumentException("未知专业 ID");
|
||||
}
|
||||
}
|
||||
public void saveAccount(
|
||||
Integer num, Set<String> set, Integer groupType, List<CeesUser> h5Users,
|
||||
Integer majorId, @NotNull String code, String label
|
||||
) {
|
||||
// 参数校验
|
||||
if (num == null || num <= 0) {
|
||||
throw new IllegalArgumentException("账号数量必须大于0");
|
||||
}
|
||||
if (groupType == null || majorId == null) {
|
||||
throw new IllegalArgumentException("用户组类型和专业 ID 不能为空");
|
||||
}
|
||||
if (code == null || code.isEmpty()) {
|
||||
throw new IllegalArgumentException("起始用户专业 ID 不能为空");
|
||||
}
|
||||
|
||||
int newCode = Integer.parseInt(code.substring(1)); // 提取数字部分
|
||||
|
||||
while (num != 0) {
|
||||
String randomNum = getRandomNum(8);
|
||||
// 生成账号
|
||||
String account = generateAccount(randomNum, groupType, majorId);
|
||||
|
||||
if (!set.contains(account)) {
|
||||
num--;
|
||||
CeesUser h5User = createH5User(account, groupType, majorId, label, newCode);
|
||||
h5Users.add(h5User);
|
||||
newCode++;
|
||||
}
|
||||
}
|
||||
}
|
||||
public static String getRandomNum(int length) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append((int) (Math.random() * 9) + 1); // 第一位不能为0
|
||||
for (int i = 1; i < length; i++) {
|
||||
sb.append((int) (Math.random() * 10));
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private String generateAccount(String randomNum, Integer groupType, Integer majorId) {
|
||||
//从随机数中提取前 3 位和后 3 位,拼接 groupType 和 majorId,生成 account。
|
||||
String prefix = randomNum.substring(0, 3);
|
||||
String suffix = randomNum.substring(5, 8);
|
||||
return prefix + groupType + majorId + suffix;
|
||||
}
|
||||
|
||||
private CeesUser createH5User(String account, Integer groupType, Integer majorId, String label, int newCode) {
|
||||
CeesUser h5User = new CeesUser();
|
||||
h5User.setUserId(account);
|
||||
h5User.setIdentity(groupType);
|
||||
h5User.setUserName("");
|
||||
h5User.setMajorId(majorId);
|
||||
h5User.setUserMajorId(label + newCode);
|
||||
h5User.setStatus(0);
|
||||
h5User.setWorkload(0);
|
||||
h5User.setCreateTime(LocalDateTime.now());
|
||||
h5User.setUpdateTime(LocalDateTime.now());
|
||||
return h5User;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue