v3.15.0【新增】升级SaToken到最新版本;【新增】重磅优化 数据字典;【新增】升级wangEditor-next;【新增】优化缓存实现redis与caffeine

This commit is contained in:
zhuoda
2025-03-31 23:19:41 +08:00
parent 7ef9000c62
commit 4683e31290
347 changed files with 4203 additions and 3792 deletions

View File

@@ -3,6 +3,7 @@ package net.lab1024.sa.admin.interceptor;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.exception.SaTokenException;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.strategy.SaAnnotationStrategy;
import cn.dev33.satoken.strategy.SaStrategy;
import lombok.extern.slf4j.Slf4j;
import net.lab1024.sa.admin.module.system.login.domain.RequestEmployee;
@@ -83,7 +84,7 @@ public class AdminInterceptor implements HandlerInterceptor {
// --------------- 第三步: 校验 权限 ---------------
SmartRequestUtil.setRequestUser(requestEmployee);
if (SaStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) {
if (SaAnnotationStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) {
return true;
}
@@ -92,7 +93,7 @@ public class AdminInterceptor implements HandlerInterceptor {
return true;
}
SaStrategy.instance.checkMethodAnnotation.accept(method);
SaAnnotationStrategy.instance.checkMethodAnnotation.accept(method);
} catch (SaTokenException e) {
/*

View File

@@ -1,24 +0,0 @@
package net.lab1024.sa.admin.listener;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
/**
* admin 应用启动加载
*
* @Author 1024创新实验室-主任:卓大
* @Date 2021-08-26 18:46:32
* @Wechat zhuoda1024
* @Email lab1024@163.com
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Slf4j
@Component
public class AdminStartupRunner implements CommandLineRunner {
@Override
public void run(String... args) {
}
}

View File

@@ -18,7 +18,6 @@ import java.util.List;
* @Email lab1024@163.com
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Component
@Mapper
public interface CategoryDao extends BaseMapper<CategoryEntity> {

View File

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
@@ -15,11 +16,13 @@ import java.time.LocalDateTime;
* @Date 2021/08/05 21:26:58
* @Wechat zhuoda1024
* @Email lab1024@163.com
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Data
@TableName("t_category")
public class CategoryEntity {
public class CategoryEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Long categoryId;

View File

@@ -3,6 +3,7 @@ package net.lab1024.sa.admin.module.business.category.domain.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
@@ -12,10 +13,12 @@ import java.util.List;
* @Date 2021/08/05 21:26:58
* @Wechat zhuoda1024
* @Email lab1024@163.com
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Data
public class CategoryTreeVO {
public class CategoryTreeVO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "类目id")
private Long categoryId;

View File

@@ -21,7 +21,6 @@ import java.util.List;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface GoodsDao extends BaseMapper<GoodsEntity> {
/**

View File

@@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum;
import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer;
import net.lab1024.sa.base.common.json.deserializer.DictDataDeserializer;
import net.lab1024.sa.base.common.swagger.SchemaEnum;
import net.lab1024.sa.base.common.validator.enumeration.CheckEnum;
@@ -39,7 +39,7 @@ public class GoodsAddForm {
@Schema(description = "产地")
@NotBlank(message = "产地 不能为空 ")
@JsonDeserialize(using = DictValueVoDeserializer.class)
@JsonDeserialize(using = DictDataDeserializer.class)
private String place;
@Schema(description = "商品价格")

View File

@@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum;
import net.lab1024.sa.base.common.domain.PageParam;
import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer;
import net.lab1024.sa.base.common.json.deserializer.DictDataDeserializer;
import net.lab1024.sa.base.common.swagger.SchemaEnum;
import net.lab1024.sa.base.common.validator.enumeration.CheckEnum;
import org.hibernate.validator.constraints.Length;
@@ -34,7 +34,7 @@ public class GoodsQueryForm extends PageParam {
private Integer goodsStatus;
@Schema(description = "产地")
@JsonDeserialize(using = DictValueVoDeserializer.class)
@JsonDeserialize(using = DictDataDeserializer.class)
private String place;
@Schema(description = "上架状态")

View File

@@ -1,6 +1,5 @@
package net.lab1024.sa.admin.module.business.goods.domain.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum;

View File

@@ -25,7 +25,6 @@ import net.lab1024.sa.base.common.util.SmartEnumUtil;
import net.lab1024.sa.base.common.util.SmartPageUtil;
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum;
import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService;
import net.lab1024.sa.base.module.support.dict.service.DictCacheService;
import net.lab1024.sa.base.module.support.dict.service.DictService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
@@ -60,7 +59,7 @@ public class GoodsService {
private DataTracerService dataTracerService;
@Resource
private DictCacheService dictCacheService;
private DictService dictService;
/**
* 添加商品
@@ -194,13 +193,13 @@ public class GoodsService {
*/
public List<GoodsExcelVO> getAllGoods() {
List<GoodsEntity> goodsEntityList = goodsDao.selectList(null);
String keyCode="GODOS_PLACE";
String dictCode = "GOODS_PLACE";
return goodsEntityList.stream()
.map(e ->
GoodsExcelVO.builder()
.goodsStatus(SmartEnumUtil.getEnumDescByValue(e.getGoodsStatus(), GoodsStatusEnum.class))
.categoryName(categoryQueryService.queryCategoryName(e.getCategoryId()))
.place(Arrays.stream(e.getPlace().split(",")).map(code -> dictCacheService.selectValueNameByValueCode(keyCode,code)).collect(Collectors.joining(",")))
.place(Arrays.stream(e.getPlace().split(",")).map(code -> dictService.getDictDataLabel(dictCode, code)).collect(Collectors.joining(",")))
.price(e.getPrice())
.goodsName(e.getGoodsName())
.remark(e.getRemark())

View File

@@ -21,7 +21,6 @@ import java.util.List;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface BankDao extends BaseMapper<BankEntity> {
/**

View File

@@ -23,7 +23,6 @@ import java.util.List;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface EnterpriseDao extends BaseMapper<EnterpriseEntity> {
/**

View File

@@ -22,7 +22,6 @@ import java.util.List;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface EnterpriseEmployeeDao extends BaseMapper<EnterpriseEmployeeEntity> {

View File

@@ -21,7 +21,6 @@ import java.util.List;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface InvoiceDao extends BaseMapper<InvoiceEntity> {
/**

View File

@@ -27,7 +27,6 @@ import java.util.List;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface NoticeDao extends BaseMapper<NoticeEntity> {
// ================================= 数据范围相关 【子表】 =================================

View File

@@ -15,7 +15,6 @@ import org.springframework.stereotype.Component;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface NoticeTypeDao extends BaseMapper<NoticeTypeEntity> {
}

View File

@@ -18,7 +18,6 @@ import java.util.List;
* @Email lab1024@163.com
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Component
@Mapper
public interface DepartmentDao extends BaseMapper<DepartmentEntity> {

View File

@@ -3,6 +3,7 @@ package net.lab1024.sa.admin.module.system.department.domain.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
@@ -12,10 +13,12 @@ import java.time.LocalDateTime;
* @Date 2022-01-12 20:37:48
* @Wechat zhuoda1024
* @Email lab1024@163.com
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Data
public class DepartmentVO {
public class DepartmentVO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "部门id")
private Long departmentId;

View File

@@ -22,7 +22,6 @@ import java.util.List;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface EmployeeDao extends BaseMapper<EmployeeEntity> {
/**
* 查询员工列表

View File

@@ -169,12 +169,12 @@ public class LoginService implements StpInterface {
// 验证账号状态
if (employeeEntity.getDeletedFlag()) {
saveLoginLog(employeeEntity, ip, userAgent, "账号已删除", LoginLogResultEnum.LOGIN_FAIL);
saveLoginLog(employeeEntity, ip, userAgent, "账号已删除", LoginLogResultEnum.LOGIN_FAIL, loginDeviceEnum);
return ResponseDTO.userErrorParam("您的账号已被删除,请联系工作人员!");
}
if (employeeEntity.getDisabledFlag()) {
saveLoginLog(employeeEntity, ip, userAgent, "账号已禁用", LoginLogResultEnum.LOGIN_FAIL);
saveLoginLog(employeeEntity, ip, userAgent, "账号已禁用", LoginLogResultEnum.LOGIN_FAIL, loginDeviceEnum);
return ResponseDTO.userErrorParam("您的账号已被禁用,请联系工作人员!");
}
@@ -208,9 +208,9 @@ public class LoginService implements StpInterface {
}
// 密码错误
if ( !SecurityPasswordService.matchesPwd(requestPassword,employeeEntity.getLoginPwd()) ) {
if (!SecurityPasswordService.matchesPwd(requestPassword, employeeEntity.getLoginPwd())) {
// 记录登录失败
saveLoginLog(employeeEntity, ip, userAgent, "密码错误", LoginLogResultEnum.LOGIN_FAIL);
saveLoginLog(employeeEntity, ip, userAgent, "密码错误", LoginLogResultEnum.LOGIN_FAIL, loginDeviceEnum);
// 记录等级保护次数
String msg = securityLoginService.recordLoginFail(employeeEntity.getEmployeeId(), UserTypeEnum.ADMIN_EMPLOYEE, employeeEntity.getLoginName(), loginFailEntityResponseDTO.getData());
return msg == null ? ResponseDTO.userErrorParam("登录名或密码错误!") : ResponseDTO.error(UserErrorCode.LOGIN_FAIL_WILL_LOCK, msg);
@@ -239,7 +239,7 @@ public class LoginService implements StpInterface {
LoginResultVO loginResultVO = getLoginResult(requestEmployee, token);
//保存登录记录
saveLoginLog(employeeEntity, ip, userAgent, superPasswordFlag ? "万能密码登录" : loginDeviceEnum.getDesc(), LoginLogResultEnum.LOGIN_SUCCESS);
saveLoginLog(employeeEntity, ip, userAgent, superPasswordFlag ? "万能密码登录" : StringConst.EMPTY, LoginLogResultEnum.LOGIN_SUCCESS, loginDeviceEnum);
// 设置 token
loginResultVO.setToken(token);
@@ -413,7 +413,7 @@ public class LoginService implements StpInterface {
/**
* 保存登录日志
*/
private void saveLoginLog(EmployeeEntity employeeEntity, String ip, String userAgent, String remark, LoginLogResultEnum result) {
private void saveLoginLog(EmployeeEntity employeeEntity, String ip, String userAgent, String remark, LoginLogResultEnum result, LoginDeviceEnum loginDeviceEnum) {
LoginLogEntity loginEntity = LoginLogEntity.builder()
.userId(employeeEntity.getEmployeeId())
.userType(UserTypeEnum.ADMIN_EMPLOYEE.getValue())
@@ -422,6 +422,7 @@ public class LoginService implements StpInterface {
.loginIp(ip)
.loginIpRegion(SmartIpUtil.getRegion(ip))
.remark(remark)
.loginDevice(loginDeviceEnum.getDesc())
.loginResult(result.getValue())
.createTime(LocalDateTime.now())
.build();

View File

@@ -19,7 +19,6 @@ import java.util.List;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface MenuDao extends BaseMapper<MenuEntity> {
/**

View File

@@ -19,7 +19,6 @@ import org.springframework.stereotype.Component;
*/
@Mapper
@Component
public interface PositionDao extends BaseMapper<PositionEntity> {
/**

View File

@@ -16,7 +16,6 @@ import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEntity;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface RoleDao extends BaseMapper<RoleEntity> {
/**

View File

@@ -19,7 +19,6 @@ import java.util.List;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface RoleDataScopeDao extends BaseMapper<RoleDataScopeEntity> {
/**

View File

@@ -25,7 +25,6 @@ import java.util.Set;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface RoleEmployeeDao extends BaseMapper<RoleEmployeeEntity> {
/**

View File

@@ -19,7 +19,6 @@ import java.util.List;
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Mapper
@Component
public interface RoleMenuDao extends BaseMapper<RoleMenuEntity> {
/**

View File

@@ -1,8 +1,8 @@
package net.lab1024.sa.admin.module.system.support;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import net.lab1024.sa.base.common.controller.SupportBaseController;
import net.lab1024.sa.base.common.domain.ResponseDTO;
import net.lab1024.sa.base.constant.SwaggerTagConst;

View File

@@ -1,33 +1,31 @@
package net.lab1024.sa.admin.module.system.support;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import net.lab1024.sa.base.common.controller.SupportBaseController;
import net.lab1024.sa.base.common.domain.PageResult;
import net.lab1024.sa.base.common.domain.ResponseDTO;
import net.lab1024.sa.base.common.domain.ValidateList;
import net.lab1024.sa.base.constant.SwaggerTagConst;
import net.lab1024.sa.base.module.support.dict.domain.form.*;
import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO;
import net.lab1024.sa.base.module.support.dict.service.DictCacheService;
import net.lab1024.sa.base.module.support.dict.domain.vo.DictDataVO;
import net.lab1024.sa.base.module.support.dict.domain.vo.DictVO;
import net.lab1024.sa.base.module.support.dict.service.DictService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
/**
* 字典
* 数据字典 Controller
*
* @Author 1024创新实验室: 罗伊
* @Date 2022/5/26 19:40:55
* @Author 1024创新实验室-主任-卓大
* @Date 2025-03-25 22:25:04
* @Wechat zhuoda1024
* @Email lab1024@163.com
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Tag(name = SwaggerTagConst.Support.DICT)
@RestController
@@ -36,60 +34,106 @@ public class AdminDictController extends SupportBaseController {
@Resource
private DictService dictService;
@Resource
private DictCacheService dictCacheService;
// ------------------- 获取全部数据 -------------------
@Operation(summary = "分页查询数据字典KEY - @author 罗伊")
@PostMapping("/dict/key/query")
public ResponseDTO<PageResult<DictKeyVO>> keyQuery(@Valid @RequestBody DictKeyQueryForm queryForm) {
return dictService.keyQuery(queryForm);
@Operation(summary = "获取全部数据(供前端缓存使用) @author 1024创新实验室-主任-卓大")
@GetMapping("/dict/getAllDictData")
public ResponseDTO<List<DictDataVO>> getAll() {
return ResponseDTO.ok(dictService.getAll());
}
@Operation(summary = "数据字典KEY-添加- @author 罗伊")
@PostMapping("/dict/key/add")
@SaCheckPermission("support:dict:add")
public ResponseDTO<String> keyAdd(@Valid @RequestBody DictKeyAddForm keyAddForm) {
return dictService.keyAdd(keyAddForm);
@Operation(summary = "获取所有字典code @author 1024创新实验室-主任-卓大")
@GetMapping("/dict/getAllDict")
public ResponseDTO<List<DictVO>> getAllDict() {
return ResponseDTO.ok(dictService.getAllDict());
}
@Operation(summary = "数据字典缓存-刷新- @author 罗伊")
@GetMapping("/dict/cache/refresh")
@SaCheckPermission("support:dict:refresh")
public ResponseDTO<String> cacheRefresh() {
return dictCacheService.cacheRefresh();
// ------------------- 字典 -------------------
@Operation(summary = "分页查询 @author 1024创新实验室-主任-卓大")
@PostMapping("/dict/queryPage")
@SaCheckPermission("dict:query")
public ResponseDTO<PageResult<DictVO>> queryPage(@RequestBody @Valid DictQueryForm queryForm) {
return ResponseDTO.ok(dictService.queryPage(queryForm));
}
@Operation(summary = "数据字典Value-添加- @author 罗伊")
@PostMapping("/dict/value/add")
public ResponseDTO<String> valueAdd(@Valid @RequestBody DictValueAddForm valueAddForm) {
return dictService.valueAdd(valueAddForm);
@Operation(summary = "添加 @author 1024创新实验室-主任-卓大")
@PostMapping("/dict/add")
@SaCheckPermission("dict:add")
public ResponseDTO<String> add(@RequestBody @Valid DictAddForm addForm) {
return dictService.add(addForm);
}
@Operation(summary = "数据字典KEY-更新- @author 罗伊")
@PostMapping("/dict/key/edit")
@SaCheckPermission("support:dict:edit")
public ResponseDTO<String> keyEdit(@Valid @RequestBody DictKeyUpdateForm keyUpdateForm) {
return dictService.keyEdit(keyUpdateForm);
@Operation(summary = "更新 @author 1024创新实验室-主任-卓大")
@PostMapping("/dict/update")
@SaCheckPermission("dict:update")
public ResponseDTO<String> update(@RequestBody @Valid DictUpdateForm updateForm) {
return dictService.update(updateForm);
}
@Operation(summary = "数据字典Value-更新- @author 罗伊")
@PostMapping("/dict/value/edit")
public ResponseDTO<String> valueEdit(@Valid @RequestBody DictValueUpdateForm valueUpdateForm) {
return dictService.valueEdit(valueUpdateForm);
@Operation(summary = "字典数据 启用/禁用 @author 1024创新实验室-主任-卓大")
@GetMapping("/dict/updateDisabled/{dictId}")
@SaCheckPermission("dictData:updateDisabled")
public ResponseDTO<String> updateDisabled(@PathVariable Long dictId) {
return dictService.updateDisabled(dictId);
}
@Operation(summary = "数据字典KEY-删除- @author 罗伊")
@PostMapping("/dict/key/delete")
@SaCheckPermission("support:dict:delete")
public ResponseDTO<String> keyDelete(@RequestBody List<Long> keyIdList) {
return dictService.keyDelete(keyIdList);
@Operation(summary = "批量删除 @author 1024创新实验室-主任-卓大")
@PostMapping("/dict/batchDelete")
@SaCheckPermission("dict:delete")
public ResponseDTO<String> batchDelete(@RequestBody ValidateList<Long> idList) {
return dictService.batchDelete(idList);
}
@Operation(summary = "数据字典Value-删除- @author 罗伊")
@PostMapping("/dict/value/delete")
public ResponseDTO<String> valueDelete(@RequestBody List<Long> valueIdList) {
return dictService.valueDelete(valueIdList);
@Operation(summary = "单个删除 @author 1024创新实验室-主任-卓大")
@GetMapping("/dict/delete/{dictId}")
@SaCheckPermission("dict:delete")
public ResponseDTO<String> batchDelete(@PathVariable Long dictId) {
return dictService.delete(dictId);
}
// ------------------- 字典数据 -------------------
@Operation(summary = "字典数据 分页查询 @author 1024创新实验室-主任-卓大")
@GetMapping("/dict/dictData/queryDictData/{dictId}")
@SaCheckPermission("dictData:query")
public ResponseDTO<List<DictDataVO>> queryDictData(@PathVariable Long dictId) {
return ResponseDTO.ok(dictService.queryDictData(dictId));
}
@Operation(summary = "字典数据 启用/禁用 @author 1024创新实验室-主任-卓大")
@GetMapping("/dict/dictData/updateDisabled/{dictDataId}")
@SaCheckPermission("dictData:updateDisabled")
public ResponseDTO<String> updateDictDataDisabled(@PathVariable Long dictDataId) {
return dictService.updateDictDataDisabled(dictDataId);
}
@Operation(summary = "字典数据 添加 @author 1024创新实验室-主任-卓大")
@PostMapping("/dict/dictData/add")
@SaCheckPermission("dictData:add")
public ResponseDTO<String> addDictData(@RequestBody @Valid DictDataAddForm addForm) {
return dictService.addDictData(addForm);
}
@Operation(summary = "字典数据 更新 @author 1024创新实验室-主任-卓大")
@PostMapping("/dict/dictData/update")
@SaCheckPermission("dictData:update")
public ResponseDTO<String> updateDictData(@RequestBody @Valid DictDataUpdateForm updateForm) {
return dictService.updateDictData(updateForm);
}
@Operation(summary = "字典数据 批量删除 @author 1024创新实验室-主任-卓大")
@PostMapping("/dict/dictData/batchDelete")
@SaCheckPermission("dictData:delete")
public ResponseDTO<String> batchDeleteDictData(@RequestBody ValidateList<Long> idList) {
return dictService.batchDeleteDictData(idList);
}
@Operation(summary = "字典数据 单个删除 @author 1024创新实验室-主任-卓大")
@GetMapping("/dict/dictData/delete/{dictDataId}")
@SaCheckPermission("dictData:delete")
public ResponseDTO<String> deleteDictData(@PathVariable Long dictDataId) {
return dictService.deleteDictData(dictDataId);
}
}