From 9c1f16842bd2eba2a56687b079a2dcd4a94b84a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A1=BE=E5=90=9B=E7=A6=B9?= <2673609096@qq.com> Date: Fri, 29 Aug 2025 16:37:12 +0800 Subject: [PATCH] =?UTF-8?q?farm=E6=A8=A1=E5=9D=97-=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=8F=8A=E8=A7=92=E8=89=B2=E5=85=B3=E8=81=94=EF=BC=8C=E7=BA=A7?= =?UTF-8?q?=E8=81=94=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/dict/DictController.java | 7 +-- .../PersonnelManagementController.java | 8 ++- .../admin/plotinfo/PlotInfoController.java | 14 ++--- .../personnelmanagement/SystemUserRoleDO.java | 30 +++++++++ .../SystemUserRoleMapper.java | 9 +++ .../PersonnelManagementServiceImpl.java | 40 ++++++++++-- .../specieslibrary/SpeciesLibraryService.java | 6 +- .../SpeciesLibraryServiceImpl.java | 61 +++++++++++++++++++ .../dal/mysql/user/PersonnelMapper.java | 3 + .../service/user/AdminUserServiceImpl.java | 24 +++++++- .../src/main/resources/application.yaml | 2 +- 11 files changed, 180 insertions(+), 24 deletions(-) create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/personnelmanagement/SystemUserRoleDO.java create mode 100644 yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/personnelmanagement/SystemUserRoleMapper.java diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java index 8053c83e..5ff6ec2b 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java @@ -307,12 +307,9 @@ public class DictController { @Operation(summary = "字典数据维护-下拉框列表-二级物种类别") @GetMapping("/list/two-library") - public CommonResult> getTwoLibraryList() { + public CommonResult> getTwoLibraryList() { try { - // 获取物种类别字典数据 - List dictList = sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_3); - // 使用工具类构建二级树结构 - List twoList = TreeStructureUtil.buildTwoLevelTree(dictList); + List twoList = speciesLibraryService.getSpeciesTwoLevelTree(); return success(twoList); } catch (Exception e) { log.error("获取二级物种类别列表失败", e); diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/PersonnelManagementController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/PersonnelManagementController.java index 5b4ba08b..a1d07510 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/PersonnelManagementController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/personnelmanagement/PersonnelManagementController.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.util.List; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - 人员管理") @@ -38,7 +39,12 @@ public class PersonnelManagementController { @PostMapping("/create") @Operation(summary = "创建人员管理") public CommonResult createPersonnelManagement(@Valid @RequestBody PersonnelManagementSaveReqVO createReqVO) { - return success(personnelManagementService.createPersonnelManagement(createReqVO)); + String management = personnelManagementService.createPersonnelManagement(createReqVO); + if (management.length() > 0) { + return success(management); + } else { + return error(501,"手机号重复!"); + } } @PutMapping("/reset") diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/PlotInfoController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/PlotInfoController.java index 10bbc378..595a4f42 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/PlotInfoController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/plotinfo/PlotInfoController.java @@ -8,7 +8,9 @@ import jakarta.validation.Valid; import jakarta.validation.Valid; import jakarta.validation.Valid; import jakarta.servlet.http.HttpServletResponse; + import java.util.List; + import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import jakarta.annotation.Resource; @@ -24,6 +26,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; @@ -44,14 +47,12 @@ public class PlotInfoController { @PostMapping("/create") @Operation(summary = "创建地块") - public CommonResult createPlotInfo(@Valid @RequestBody PlotInfoSaveReqVO createReqVO) { return success(plotInfoService.createPlotInfo(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新地块") - public CommonResult updatePlotInfo(@Valid @RequestBody PlotInfoSaveReqVO updateReqVO) { plotInfoService.updatePlotInfo(updateReqVO); return success(true); @@ -60,7 +61,6 @@ public class PlotInfoController { @DeleteMapping("/delete") @Operation(summary = "删除地块") @Parameter(name = "id", description = "编号", required = true) - public CommonResult deletePlotInfo(@RequestParam("id") String id) { plotInfoService.deletePlotInfo(id); return success(true); @@ -69,7 +69,6 @@ public class PlotInfoController { @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除地块") - public CommonResult deletePlotInfoList(@RequestParam("ids") List ids) { plotInfoService.deletePlotInfoListByIds(ids); return success(true); @@ -78,7 +77,6 @@ public class PlotInfoController { @GetMapping("/get") @Operation(summary = "获得地块") @Parameter(name = "id", description = "编号", required = true, example = "1024") - public CommonResult getPlotInfo(@RequestParam("id") String id) { PlotInfoDO plotInfo = plotInfoService.getPlotInfo(id); return success(BeanUtils.toBean(plotInfo, PlotInfoRespVO.class)); @@ -86,7 +84,6 @@ public class PlotInfoController { @GetMapping("/page") @Operation(summary = "获得地块分页") - public CommonResult> getPlotInfoPage(@Valid PlotInfoPageReqVO pageReqVO) { PageResult pageResult = plotInfoService.getPlotInfoPage(pageReqVO); return success(BeanUtils.toBean(pageResult, PlotInfoRespVO.class)); @@ -94,15 +91,14 @@ public class PlotInfoController { @GetMapping("/export-excel") @Operation(summary = "导出地块 Excel") - @ApiAccessLog(operateType = EXPORT) public void exportPlotInfoExcel(@Valid PlotInfoPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = plotInfoService.getPlotInfoPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "地块.xls", "数据", PlotInfoRespVO.class, - BeanUtils.toBean(list, PlotInfoRespVO.class)); + BeanUtils.toBean(list, PlotInfoRespVO.class)); } } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/personnelmanagement/SystemUserRoleDO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/personnelmanagement/SystemUserRoleDO.java new file mode 100644 index 00000000..70800305 --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/personnelmanagement/SystemUserRoleDO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.farm.dal.dataobject.personnelmanagement; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +@TableName("system_user_role") +@KeySequence("system_user_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SystemUserRoleDO extends BaseDO { + /** + * 自增主键 + */ + @TableId + private Long id; + /** + * 用户 ID + */ + private Long userId; + /** + * 角色 ID + */ + private Long roleId; +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/personnelmanagement/SystemUserRoleMapper.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/personnelmanagement/SystemUserRoleMapper.java new file mode 100644 index 00000000..15fc1aea --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/personnelmanagement/SystemUserRoleMapper.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.module.farm.dal.mysql.personnelmanagement; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.farm.dal.dataobject.personnelmanagement.SystemUserRoleDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SystemUserRoleMapper extends BaseMapperX { +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/personnelmanagement/PersonnelManagementServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/personnelmanagement/PersonnelManagementServiceImpl.java index b3599467..652fb2d7 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/personnelmanagement/PersonnelManagementServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/personnelmanagement/PersonnelManagementServiceImpl.java @@ -9,8 +9,10 @@ import cn.iocoder.yudao.module.farm.controller.admin.personnelmanagement.vo.Pers import cn.iocoder.yudao.module.farm.controller.admin.personnelmanagement.vo.PersonnelManagementSaveReqVO; import cn.iocoder.yudao.module.farm.dal.dataobject.personnelmanagement.PersonnelManagementDO; import cn.iocoder.yudao.module.farm.dal.dataobject.personnelmanagement.SystemUserDO; +import cn.iocoder.yudao.module.farm.dal.dataobject.personnelmanagement.SystemUserRoleDO; import cn.iocoder.yudao.module.farm.dal.mysql.personnelmanagement.PersonnelManagementMapper; import cn.iocoder.yudao.module.farm.dal.mysql.personnelmanagement.SystemUserMapper; +import cn.iocoder.yudao.module.farm.dal.mysql.personnelmanagement.SystemUserRoleMapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import jakarta.annotation.Resource; import org.springframework.security.crypto.password.PasswordEncoder; @@ -38,15 +40,21 @@ public class PersonnelManagementServiceImpl implements PersonnelManagementServic private SystemUserMapper userMapper; @Resource private PasswordEncoder passwordEncoder; + @Resource + private SystemUserRoleMapper systemUserRoleMapper; @Override public String createPersonnelManagement(PersonnelManagementSaveReqVO createReqVO) { LoginUser user = getLoginUser(); + // 插入 PersonnelManagementDO personnelManagement = BeanUtils.toBean(createReqVO, PersonnelManagementDO.class); personnelManagement.setId(IdUtil.fastUUID()); personnelManagement.setTenantId(String.valueOf(user.getTenantId())); - + SystemUserDO userDO = userMapper.selectByPhone(personnelManagement.getPhone()); + if (userDO != null) { + return ""; + } // 处理图片集合转换 handleImageConversion(personnelManagement, createReqVO); @@ -59,7 +67,14 @@ public class PersonnelManagementServiceImpl implements PersonnelManagementServic adminUserDO.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启 String substring = personnelManagement.getPhone().substring(personnelManagement.getPhone().length() - 6); adminUserDO.setPassword(encodePassword(substring)); // 加密密码 - userMapper.insert(adminUserDO); + userMapper.insert(adminUserDO);// 系统用户同步新增 + // 用户角色关联 + for (String s : personnelManagement.getRole().split(",")) { + SystemUserRoleDO userRoleDO = new SystemUserRoleDO(); + userRoleDO.setUserId(adminUserDO.getId()); + userRoleDO.setRoleId(Long.valueOf(s)); + systemUserRoleMapper.insert(userRoleDO); + } personnelManagementMapper.insert(personnelManagement); // 返回 return personnelManagement.getId(); @@ -69,12 +84,25 @@ public class PersonnelManagementServiceImpl implements PersonnelManagementServic public void updatePersonnelManagement(PersonnelManagementSaveReqVO updateReqVO) { // 校验存在 validatePersonnelManagementExists(updateReqVO.getId()); + PersonnelManagementDO managementDO = personnelManagementMapper.selectById(updateReqVO.getId()); + + // 更新 PersonnelManagementDO updateObj = BeanUtils.toBean(updateReqVO, PersonnelManagementDO.class); - + SystemUserDO userDO = userMapper.selectByPhone(managementDO.getPhone()); + if (updateReqVO.getPhone() != null) userDO.setUsername(updateReqVO.getPhone()); + if (updateReqVO.getName() != null) userDO.setNickname(updateReqVO.getName()); + if (updateReqVO.getPhone() != null) userDO.setMobile(updateReqVO.getPhone()); + if (updateReqVO.getPicture() != null) userDO.setAvatar(updateReqVO.getPicture()); // 处理图片集合转换 handleImageConversion(updateObj, updateReqVO); - + for (String s : managementDO.getRole().split(",")) { + SystemUserRoleDO userRoleDO = new SystemUserRoleDO(); + userRoleDO.setUserId(userDO.getId()); + userRoleDO.setRoleId(Long.valueOf(s)); + systemUserRoleMapper.insert(userRoleDO); + } + userMapper.updateById(userDO); personnelManagementMapper.updateById(updateObj); } @@ -82,6 +110,10 @@ public class PersonnelManagementServiceImpl implements PersonnelManagementServic public void deletePersonnelManagement(String id) { // 校验存在 validatePersonnelManagementExists(id); + PersonnelManagementDO managementDO = personnelManagementMapper.selectById(id); + SystemUserDO userDO = userMapper.selectByPhone(managementDO.getPhone()); + userMapper.deleteById(userDO.getId()); + systemUserRoleMapper.delete(SystemUserRoleDO::getUserId, userDO.getId()); // 删除 personnelManagementMapper.deleteById(id); } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java index 4d54dae7..4a55f58c 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java @@ -69,11 +69,11 @@ public interface SpeciesLibraryService { */ Map getSpeciesLibraryForLifeCycMap(); - /** - * 基于 speciesName1 -> speciesName2 -> cultivarName 构建三级树 - */ + List getSpeciesThreeLevelTree(); + + List getSpeciesTwoLevelTree(); /** * 物种与模型 * @return diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java index cbf1d7c8..db550083 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java @@ -305,6 +305,67 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { return result; } + @Override + public List getSpeciesTwoLevelTree() { + List dictTree = twoDictService.getTwoDictTree(); + if (dictTree == null || dictTree.isEmpty()) { + return new ArrayList<>(); + } + + // 1级:parentId == null 的节点 + List level1Nodes = dictTree.stream() + .filter(n -> n != null && n.getParentId() == null) + .sorted(java.util.Comparator.comparing(TwoDictTreeRespVO::getName, java.util.Comparator.nullsLast(String::compareTo))) + .collect(Collectors.toList()); + + // 收集所有二级分类ID,一次性查询物种,避免 N+1 + List level2Ids = dictTree.stream() + .filter(n -> n != null && n.getParentId() != null) // 非根即二级(在当前两级分类中) + .map(TwoDictTreeRespVO::getId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + // 批量查询所有二级分类下的物种,避免 N+1 查询 + Map> categoryToSpeciesMap; + if (level2Ids.isEmpty()) { + categoryToSpeciesMap = java.util.Collections.emptyMap(); + } else { + // 构建查询条件:查询所有二级分类下的物种 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(SpeciesLibraryDO::getCategory, level2Ids.stream().map(String::valueOf).collect(Collectors.toList())); + queryWrapper.eq(SpeciesLibraryDO::getTenantId, String.valueOf(getLoginUser().getTenantId())); + + List allSpecies = speciesLibraryMapper.selectList(queryWrapper); + + // 按分类ID分组 + categoryToSpeciesMap = allSpecies.stream() + .collect(Collectors.groupingBy(SpeciesLibraryDO::getCategory)); + } + + List result = new ArrayList<>(); + for (TwoDictTreeRespVO lvl1 : level1Nodes) { + SpeciesThreeLevelTreeRespVO lvl1Vo = new SpeciesThreeLevelTreeRespVO(); + lvl1Vo.setName(lvl1.getName()); + lvl1Vo.setId(lvl1.getId().toString()); + List lvl2Vos = new ArrayList<>(); + + if (lvl1.getChildren() != null && !lvl1.getChildren().isEmpty()) { + // 二级按名称排序 + List lvl2Children = new ArrayList<>(lvl1.getChildren()); + lvl2Children.sort(java.util.Comparator.comparing(TwoDictTreeRespVO::getName, java.util.Comparator.nullsLast(String::compareTo))); + for (TwoDictTreeRespVO lvl2 : lvl2Children) { + SpeciesThreeLevelTreeRespVO lvl2Vo = new SpeciesThreeLevelTreeRespVO(); + lvl2Vo.setName(lvl2.getName()); + lvl2Vo.setId(lvl2.getId().toString()); + lvl2Vos.add(lvl2Vo); + } + } + lvl1Vo.setChildren(lvl2Vos); + result.add(lvl1Vo); + } + return result; + } + private String splitSpeciesName(String speciesName, int index) { if (speciesName == null) { return ""; diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/PersonnelMapper.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/PersonnelMapper.java index e593e51c..65f728d7 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/PersonnelMapper.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/PersonnelMapper.java @@ -7,4 +7,7 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface PersonnelMapper extends BaseMapperX { + default PersonnelDO selectByPhone(String mobile) { + return selectOne(PersonnelDO::getPhone, mobile); + } } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index 638d3f6b..7299790c 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -176,6 +176,27 @@ public class AdminUserServiceImpl implements AdminUserService { // 2.1 更新用户 AdminUserDO updateObj = BeanUtils.toBean(updateReqVO, AdminUserDO.class); userMapper.updateById(updateObj); + AdminUserDO adminUserDO = userMapper.selectById(updateObj.getId()); + PersonnelDO userDo = personnelMapper.selectByPhone(adminUserDO.getMobile()); + if (updateObj.getNickname() != null) userDo.setName(updateObj.getNickname()); + if (updateObj.getMobile() != null) userDo.setPhone(updateObj.getMobile()); + if (updateObj.getDeptId() != null) userDo.setDepartment(updateObj.getDeptId().toString()); + if (updateObj.getTenantId() != null) userDo.setTenantId(updateObj.getTenantId().toString()); + if (updateObj.getAvatar() != null) userDo.setPicture(updateObj.getAvatar()); + userDo.setAccountStatus(0); + List userPostDOS = convertList(updateObj.getPostIds(), + postId -> new UserPostDO().setUserId(updateObj.getId()).setPostId(postId)); + String roles = ""; + for (UserPostDO up : userPostDOS) { + if (roles.length() > 0) { + roles += "," + up.getPostId(); + } else { + roles = up.getPostId().toString(); + } + } + userDo.setRole(roles); + personnelMapper.updateById(userDo); + // 2.2 更新岗位 updateUserPost(updateReqVO, updateObj); @@ -262,7 +283,8 @@ public class AdminUserServiceImpl implements AdminUserService { public void deleteUser(Long id) { // 1. 校验用户存在 AdminUserDO user = validateUserExists(id); - + AdminUserDO adminUserDO = userMapper.selectById(id); + personnelMapper.delete(PersonnelDO::getPhone, adminUserDO.getMobile()); // 2.1 删除用户 userMapper.deleteById(id); // 2.2 删除用户关联数据 diff --git a/yudao-server/src/main/resources/application.yaml b/yudao-server/src/main/resources/application.yaml index 3c0b3c88..765b0521 100644 --- a/yudao-server/src/main/resources/application.yaml +++ b/yudao-server/src/main/resources/application.yaml @@ -108,7 +108,7 @@ aj: cache-number: 1000 # local 缓存的阈值,达到这个值,清除缓存 timing-clear: 180 # local定时清除过期缓存(单位秒),设置为0代表不执行 type: blockPuzzle # 验证码类型 default 三种都实例化。blockPuzzle 滑块拼图、clickWord 文字点选、pictureWord 文本输入 - water-mark: 芋道源码 # 右下角水印文字(我的水印),可使用 https://tool.chinaz.com/tools/unicode.aspx 中文转 Unicode,Linux 可能需要转 unicode + water-mark: 江西云戈 # 右下角水印文字(我的水印),可使用 https://tool.chinaz.com/tools/unicode.aspx 中文转 Unicode,Linux 可能需要转 unicode interference-options: 0 # 滑动干扰项(0/1/2) req-frequency-limit-enable: false # 接口请求次数一分钟限制是否开启 true|false req-get-lock-limit: 5 # 验证失败 5 次,get接口锁定