From 8f812a710931b510973be5a6736f4cda1a15f7b9 Mon Sep 17 00:00:00 2001 From: Xubx <1827135378@qq.com> Date: Mon, 28 Apr 2025 18:26:34 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=88=90=E8=A7=84=E5=88=99=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=A1=8C=E6=94=BF=E4=BA=BA=E5=91=98=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=96=B0=E5=A2=9E=E4=BA=BA=E5=91=98=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contoller/CeesAdminInfoController.java | 155 +++++++++++++ .../modules/contoller/CeesUserController.java | 4 +- .../jeecg/modules/entity/CeesAdminInfo.java | 89 ++++++++ .../modules/mapper/CeesAdminInfoMapper.java | 14 ++ .../mapper/xml/CeesAdminInfoMapper.xml | 5 + .../service/ICeesAdminInfoService.java | 14 ++ .../modules/service/ICeesUserService.java | 2 +- .../impl/CeesAdminInfoServiceImpl.java | 18 ++ .../service/impl/CeesUserServiceImpl.java | 211 ++++++++++++++---- 9 files changed, 469 insertions(+), 43 deletions(-) create mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesAdminInfoController.java create mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesAdminInfo.java create mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/mapper/CeesAdminInfoMapper.java create mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/mapper/xml/CeesAdminInfoMapper.xml create mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesAdminInfoService.java create mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesAdminInfoServiceImpl.java diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesAdminInfoController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesAdminInfoController.java new file mode 100644 index 00000000..2f493a85 --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesAdminInfoController.java @@ -0,0 +1,155 @@ +package org.jeecg.modules.contoller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +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.CeesAdminInfo; +import org.jeecg.modules.service.ICeesAdminInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; + +/** +* @Description: cees_admin_info +* @Author: jeecg-boot +* @Date: 2025-04-27 +* @Version: V1.0 +*/ +@Api(tags="cees_admin_info") +@RestController +@RequestMapping("/cees/ceesAdminInfo") +@Slf4j +public class CeesAdminInfoController extends JeecgController { + @Autowired + private ICeesAdminInfoService ceesAdminInfoService; + + /** + * 分页列表查询 + * + * @param ceesAdminInfo + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "cees_admin_info-分页列表查询") + @ApiOperation(value="cees_admin_info-分页列表查询", notes="cees_admin_info-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(CeesAdminInfo ceesAdminInfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(ceesAdminInfo, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = ceesAdminInfoService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param ceesAdminInfo + * @return + */ + @AutoLog(value = "cees_admin_info-添加") + @ApiOperation(value="cees_admin_info-添加", notes="cees_admin_info-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CeesAdminInfo ceesAdminInfo) { + ceesAdminInfoService.save(ceesAdminInfo); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param ceesAdminInfo + * @return + */ + @AutoLog(value = "cees_admin_info-编辑") + @ApiOperation(value="cees_admin_info-编辑", notes="cees_admin_info-编辑") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody CeesAdminInfo ceesAdminInfo) { + ceesAdminInfoService.updateById(ceesAdminInfo); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "cees_admin_info-通过id删除") + @ApiOperation(value="cees_admin_info-通过id删除", notes="cees_admin_info-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + ceesAdminInfoService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "cees_admin_info-批量删除") + @ApiOperation(value="cees_admin_info-批量删除", notes="cees_admin_info-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.ceesAdminInfoService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "cees_admin_info-通过id查询") + @ApiOperation(value="cees_admin_info-通过id查询", notes="cees_admin_info-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CeesAdminInfo ceesAdminInfo = ceesAdminInfoService.getById(id); + if(ceesAdminInfo==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(ceesAdminInfo); + } + + /** + * 导出excel + * + * @param request + * @param ceesAdminInfo + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, CeesAdminInfo ceesAdminInfo) { + return super.exportXls(request, ceesAdminInfo, CeesAdminInfo.class, "cees_admin_info"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, CeesAdminInfo.class); + } + +} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesUserController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesUserController.java index 94d5496b..eaa9eb04 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesUserController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesUserController.java @@ -78,11 +78,11 @@ public class CeesUserController extends JeecgController createAccount(@RequestBody CreateAccountDto createAccountDto) { try { - ceesUserService.createAccount(createAccountDto); + return Result.OK(ceesUserService.createAccount(createAccountDto)); } catch (Exception e) { return Result.error(e.getMessage()); } - return Result.OK(); + } /** diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesAdminInfo.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesAdminInfo.java new file mode 100644 index 00000000..876f3022 --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesAdminInfo.java @@ -0,0 +1,89 @@ +package org.jeecg.modules.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: cees_admin_info + * @Author: jeecg-boot + * @Date: 2025-04-27 + * @Version: V1.0 + */ +@Data +@TableName("cees_admin_info") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cees_admin_info对象", description="cees_admin_info") +public class CeesAdminInfo implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private Integer id; + /**工号*/ + @Excel(name = "工号", width = 15) + @ApiModelProperty(value = "工号") + private String workNumber; + /**姓名*/ + @Excel(name = "姓名", width = 15) + @ApiModelProperty(value = "姓名") + private String userName; + /**用户id*/ + @Excel(name = "用户id", width = 15) + @ApiModelProperty(value = "用户id") + private String userId; + /**用户专业id*/ + @Excel(name = "用户专业id", width = 15) + @ApiModelProperty(value = "用户专业id") + private String userMajorId; + /**专业id,0表示未选择*/ + @Excel(name = "专业id,0表示未选择", width = 15) + @ApiModelProperty(value = "专业id,0表示未选择") + private Integer majorId; + /**组别*/ + @Excel(name = "组别", width = 15) + @ApiModelProperty(value = "组别") + private String groupId; + /**组级别*/ + @Excel(name = "组级别", width = 15) + @ApiModelProperty(value = "组级别") + private String beforeGroupLevel; + /**组级别*/ + @Excel(name = "组级别", width = 15) + @ApiModelProperty(value = "组级别") + private String groupLevel; + /**之前的职务*/ + @Excel(name = "之前的职务", width = 15) + @ApiModelProperty(value = "之前的职务") + private String beforeDuty; + /**职务*/ + @Excel(name = "职务", width = 15) + @ApiModelProperty(value = "职务") + private String duty; + /**部门*/ + @Excel(name = "部门", width = 15) + @ApiModelProperty(value = "部门") + private String department; + /**岗位*/ + @Excel(name = "岗位", width = 15) + @ApiModelProperty(value = "岗位") + private String job; + /**时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "时间") + private Date updateTime; +} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/mapper/CeesAdminInfoMapper.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/mapper/CeesAdminInfoMapper.java new file mode 100644 index 00000000..d791134b --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/mapper/CeesAdminInfoMapper.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.entity.CeesAdminInfo; + +/** + * @Description: cees_admin_info + * @Author: jeecg-boot + * @Date: 2025-04-27 + * @Version: V1.0 + */ +public interface CeesAdminInfoMapper extends BaseMapper { + +} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/mapper/xml/CeesAdminInfoMapper.xml b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/mapper/xml/CeesAdminInfoMapper.xml new file mode 100644 index 00000000..1ea0fc94 --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/mapper/xml/CeesAdminInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesAdminInfoService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesAdminInfoService.java new file mode 100644 index 00000000..2359fbdf --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesAdminInfoService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.entity.CeesAdminInfo; + +/** + * @Description: cees_admin_info + * @Author: jeecg-boot + * @Date: 2025-04-27 + * @Version: V1.0 + */ +public interface ICeesAdminInfoService extends IService { + +} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesUserService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesUserService.java index e5bdf374..b742804f 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesUserService.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICeesUserService.java @@ -22,5 +22,5 @@ public interface ICeesUserService extends IService { Result getGroupName(String groupId); - void createAccount(CreateAccountDto createAccountDto); + Result createAccount(CreateAccountDto createAccountDto); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesAdminInfoServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesAdminInfoServiceImpl.java new file mode 100644 index 00000000..10ebd477 --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesAdminInfoServiceImpl.java @@ -0,0 +1,18 @@ +package org.jeecg.modules.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.entity.CeesAdminInfo; +import org.jeecg.modules.mapper.CeesAdminInfoMapper; +import org.jeecg.modules.service.ICeesAdminInfoService; +import org.springframework.stereotype.Service; + +/** + * @Description: cees_admin_info + * @Author: jeecg-boot + * @Date: 2025-04-27 + * @Version: V1.0 + */ +@Service +public class CeesAdminInfoServiceImpl extends ServiceImpl implements ICeesAdminInfoService { + +} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesUserServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesUserServiceImpl.java index 57405482..a252202e 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesUserServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesUserServiceImpl.java @@ -38,6 +38,8 @@ public class CeesUserServiceImpl extends ServiceImpl i @Resource CeesGroupMapper ceesGroupMapper; @Resource + CeesAdminInfoMapper ceesAdminInfoMapper; + @Resource CeesLocalTeacherMapper ceesLocalTeacherMapper; @Resource CeesWaiTeacherMapper ceesWaiTeacherMapper; @@ -115,9 +117,20 @@ public class CeesUserServiceImpl extends ServiceImpl i } // 检查四个身份 switch (user.getIdentity().toString()) { - //1管理员 + //1行政人员 case "1": - + LambdaQueryWrapper adminInfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); + adminInfoLambdaQueryWrapper.eq(CeesAdminInfo::getUserId, user.getUserId()); + CeesAdminInfo ceesAdminInfo = ceesAdminInfoMapper.selectOne(adminInfoLambdaQueryWrapper); + if (ceesAdminInfo != null) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("userId", user.getUserId()); + jsonObject.put("router", "/leaderShip"); + jsonObject.put("status", "2"); //无需填写信息 + return Result.ok(jsonObject); + } else { + return Result.error("管理员账号还未申请通过!"); + } // 2学生 case "2": LambdaQueryWrapper studentLambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -193,6 +206,19 @@ public class CeesUserServiceImpl extends ServiceImpl i JSONObject jsonObject = new JSONObject(); if (ceesUser.getIdentity() == 1) { // 管理员 + jsonObject.put("show0", false); + jsonObject.put("show1", true); + jsonObject.put("show3", false); + jsonObject.put("show5", false); + jsonObject.put("show6", true); + jsonObject.put("show7", true); + jsonObject.put("show8", false); + LambdaQueryWrapper adminInfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); + adminInfoLambdaQueryWrapper.eq(CeesAdminInfo::getUserId, userId); + CeesAdminInfo ceesAdminInfo = ceesAdminInfoMapper.selectOne(adminInfoLambdaQueryWrapper); + if (ceesAdminInfo != null) { + jsonObject.put("user", ceesAdminInfo); + } } else if (ceesUser.getIdentity() == 2) { // 学生 jsonObject.put("show0", true); @@ -260,47 +286,48 @@ public class CeesUserServiceImpl extends ServiceImpl i * @return */ @Override - public void createAccount(CreateAccountDto createAccountDto) { + public Result 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("参数无效"); - } - - // 获取生成规则 - CeesGenerativeRules rules = getGenerativeRules(); - if (rules == null) { - throw new IllegalArgumentException("找不到对应的账号生成规则"); - } - - // 存储已存在的用户ID - Set set = new HashSet<>(); - // 存储与majorID相关的用户专业id - List userMIDList = new ArrayList<>(); - // 存储新生成的用户对象 - List h5Users = new ArrayList<>(); - // 获取所有用户 - List list = this.list(); - - // 遍历现有用户 - list.forEach(item -> { - set.add(item.getUserId()); - if (Objects.equals(item.getMajorId(), majorId)) { - userMIDList.add(item.getUserMajorId()); + if (groupType != 1) { + // 参数校验 + if (groupType == null || num == null || majorId == null || num <= 0) { + throw new IllegalArgumentException("参数无效"); } - }); - // 根据专业 ID 生成账号 - String prefix = getPrefixByMajorId(majorId); - String startId = userMIDList.isEmpty() ? getDefaultStartId(majorId) : userMIDList.get(userMIDList.size() - 1); - saveAccount(num, set, groupType, h5Users, majorId, startId, prefix, rules); + // 获取生成规则 + CeesGenerativeRules rules = getGenerativeRules(); + if (rules == null) { + throw new IllegalArgumentException("找不到对应的账号生成规则"); + } - // 保存生成的用户账号 - this.saveBatch(h5Users); + // 存储已存在的用户ID + Set set = new HashSet<>(); + // 存储与majorID相关的用户专业id + List userMIDList = new ArrayList<>(); + // 存储新生成的用户对象 + List h5Users = new ArrayList<>(); + // 获取所有用户 + List list = this.list(); - //TODO 邀请函生成 + // 遍历现有用户 + 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, rules); + + // 保存生成的用户账号 + this.saveBatch(h5Users); + + //TODO 邀请函生成 // if (groupType == 9) { // List h5Invitations = h5Users.stream() // .map(item -> new H5Invitation(item.getUserId(), item.getGroupId(), item.getUserMajorId(), item.getMajorId())) @@ -308,10 +335,16 @@ public class CeesUserServiceImpl extends ServiceImpl i // h5InvitationService.saveBatch(h5Invitations); // } - // 清理资源 - h5Users.clear(); - set.clear(); - userMIDList.clear(); + // 清理资源 + h5Users.clear(); + set.clear(); + userMIDList.clear(); + return Result.ok("生成账号成功!"); + } else { + //行政人员账号生成 + createAdminAccount(num, groupType); + return Result.ok("生成账号成功!"); + } } // 获取生成规则 @@ -435,4 +468,102 @@ public class CeesUserServiceImpl extends ServiceImpl i h5User.setUpdateTime(LocalDateTime.now()); return h5User; } + /** + * 生成行政人员账号 + * @param num 生成数量 + * @param groupType 账号类型(1表示行政人员) + */ + private void createAdminAccount(Integer num, Integer groupType) { + // 参数校验 + if (num == null || num <= 0) { + throw new IllegalArgumentException("生成数量必须大于0"); + } + if (groupType == null || groupType != 1) { + throw new IllegalArgumentException("账号类型必须是行政人员(1)"); + } + + // 获取生成规则 + CeesGenerativeRules rules = getGenerativeRules(); + if (rules == null) { + throw new IllegalArgumentException("找不到对应的账号生成规则"); + } + + // 存储已存在的用户ID + Set existingAccounts = new HashSet<>(); + // 存储新生成的用户对象 + List newUsers = new ArrayList<>(); + + // 获取所有已有账号 + this.list().forEach(user -> existingAccounts.add(user.getUserId())); + + // 生成账号 + while (num > 0) { + String randomNum = getRandomNum(8); + // 生成账号 - 只考虑groupType,不需要majorId + String account = generateAdminAccount(randomNum, groupType, rules); + + if (!existingAccounts.contains(account)) { + num--; + CeesUser adminUser = createAdminUser(account, groupType); + newUsers.add(adminUser); + } + } + + // 批量保存新账号 + if (!newUsers.isEmpty()) { + this.saveBatch(newUsers); + } + } + + /** + * 生成行政人员账号 + * @param randomNum 随机数 + * @param groupType 账号类型 + * @param rules 生成规则 + * @return 生成的账号 + */ + private String generateAdminAccount(String randomNum, Integer groupType, CeesGenerativeRules rules) { + char[] accountParts = new char[8]; // 账号长度为8 + char[] randomDigits = randomNum.toCharArray(); + + // 填充随机数部分 + int randomIndex = 0; + for (int i = 0; i < accountParts.length; i++) { + // 检查当前位置是否被规则占用(只需要处理groupType位置) + boolean isGroupTypePos = (i + 1) == rules.getGroupType(); + + if (isGroupTypePos) { + accountParts[i] = groupType.toString().charAt(0); + } else { + // 使用随机数填充 + if (randomIndex < randomDigits.length) { + accountParts[i] = randomDigits[randomIndex++]; + } else { + accountParts[i] = '0'; // 默认值 + } + } + } + + return new String(accountParts); + } + + /** + * 创建行政人员用户对象 + * @param account 账号 + * @param groupType 账号类型(1) + * @return 用户对象 + */ + private CeesUser createAdminUser(String account, Integer groupType) { + CeesUser adminUser = new CeesUser(); + adminUser.setUserId(account); + adminUser.setIdentity(groupType); + adminUser.setUserName(""); // 初始为空,后续由用户填写 + adminUser.setMajorId(null); // 行政人员无学科类别 + adminUser.setUserMajorId("A" + account); // 行政人员专业ID前缀为A + adminUser.setStatus(0); // 初始状态 + adminUser.setWorkload(0); // 初始工作量为0 + adminUser.setCreateTime(LocalDateTime.now()); + adminUser.setUpdateTime(LocalDateTime.now()); + return adminUser; + } }