diff --git a/smart-admin-api/pom.xml b/smart-admin-api/pom.xml
index 1231a8ab..b08d256d 100644
--- a/smart-admin-api/pom.xml
+++ b/smart-admin-api/pom.xml
@@ -36,6 +36,7 @@
3.12.0
4.4
1.13
+ 1.9
2.12.0
3.3.2
5.2.4
@@ -52,6 +53,7 @@
1.59
2.13.4
1.2.0
+ 3.25.0
@@ -193,6 +195,12 @@
+
+ org.apache.commons
+ commons-text
+ ${commons-text.version}
+
+
org.apache.logging.log4j
log4j-spring-boot
@@ -306,6 +314,33 @@
smartdb
${smartdb.version}
+
+
+
+ org.redisson
+ redisson-spring-boot-starter
+ ${redisson.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.redisson
+ redisson-spring-data-32
+
+
+ objenesis
+ org.objenesis
+
+
+
+
+ org.redisson
+ redisson-spring-data-27
+ ${redisson.version}
+
+
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminSwaggerTagConst.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminSwaggerTagConst.java
index 9388b482..c5319d63 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminSwaggerTagConst.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminSwaggerTagConst.java
@@ -25,6 +25,7 @@ public class AdminSwaggerTagConst extends SwaggerTagConst {
public static final String OA_INVOICE = "OA办公-发票信息";
public static final String OA_NOTICE = "OA办公-通知公告";
+
}
@@ -48,6 +49,8 @@ public class AdminSwaggerTagConst extends SwaggerTagConst {
public static final String SYSTEM_ROLE_MENU = "系统-角色-菜单";
+ public static final String SYSTEM_POSITION = "系统-职务管理";
+
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java
index f52e28b5..3566f877 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java
@@ -3,6 +3,8 @@ package net.lab1024.sa.admin.module.system.department.domain.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
+import java.time.LocalDateTime;
+
/**
* 部门
*
@@ -33,4 +35,10 @@ public class DepartmentVO {
@Schema(description = "排序")
private Integer sort;
+ @Schema(description = "更新时间")
+ private LocalDateTime updateTime;
+
+ @Schema(description = "创建时间")
+ private LocalDateTime createTime;
+
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java
index 05a6b41f..a79b4355 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java
@@ -52,6 +52,20 @@ public class EmployeeController {
return employeeService.updateEmployee(employeeUpdateForm);
}
+ @Operation(summary = "更新登录人信息 @author 善逸")
+ @PostMapping("/employee/update/login")
+ public ResponseDTO updateByLogin(@Valid @RequestBody EmployeeUpdateForm employeeUpdateForm) {
+ employeeUpdateForm.setEmployeeId(SmartRequestUtil.getRequestUserId());
+ return employeeService.updateEmployee(employeeUpdateForm);
+ }
+
+ @Operation(summary = "更新登录人头像 @author 善逸")
+ @PostMapping("/employee/update/avatar")
+ public ResponseDTO updateAvatar(@Valid @RequestBody EmployeeUpdateAvatarForm employeeUpdateAvatarForm) {
+ employeeUpdateAvatarForm.setEmployeeId(SmartRequestUtil.getRequestUserId());
+ return employeeService.updateAvatar(employeeUpdateAvatarForm);
+ }
+
@Operation(summary = "更新员工禁用/启用状态 @author 卓大")
@GetMapping("/employee/update/disabled/{employeeId}")
@SaCheckPermission("system:employee:disabled")
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/entity/EmployeeEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/entity/EmployeeEntity.java
index b84ba8b8..692f831a 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/entity/EmployeeEntity.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/entity/EmployeeEntity.java
@@ -38,6 +38,11 @@ public class EmployeeEntity {
*/
private String actualName;
+ /**
+ * 头像
+ */
+ private String avatar;
+
/**
* 性别
*/
@@ -53,6 +58,11 @@ public class EmployeeEntity {
*/
private Long departmentId;
+ /**
+ * 职务级别ID
+ */
+ private Long positionId;
+
/**
* 是否为超级管理员: 0 不是,1是
*/
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeAddForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeAddForm.java
index 367aa81c..bd7b4e63 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeAddForm.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeAddForm.java
@@ -53,4 +53,12 @@ public class EmployeeAddForm {
@Schema(description = "角色列表")
private List roleIdList;
+
+ @Schema(description = "备注")
+ @Length(max = 30, message = "备注最多200字符")
+ private String remark;
+
+ @Schema(description = "职务级别ID")
+ private Long positionId;
+
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateAvatarForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateAvatarForm.java
new file mode 100644
index 00000000..dc280542
--- /dev/null
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateAvatarForm.java
@@ -0,0 +1,28 @@
+package net.lab1024.sa.admin.module.system.employee.domain.form;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import net.lab1024.sa.base.common.util.SmartVerificationUtil;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
+
+/**
+ * 修改登录人头像
+ *
+ * @Author 1024创新实验室: 善逸
+ * @Date 2024年6月30日00:26:35
+ * @Wechat zhuoda1024
+ * @Email lab1024@163.com
+ * @Copyright 1024创新实验室
+ */
+@Data
+public class EmployeeUpdateAvatarForm {
+
+ @Schema(hidden = true)
+ private Long employeeId;
+
+ @Schema(description = "头像")
+ @NotBlank(message = "头像不能为空哦")
+ private String avatar;
+}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/vo/EmployeeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/vo/EmployeeVO.java
index 42110a4d..5ab64c53 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/vo/EmployeeVO.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/vo/EmployeeVO.java
@@ -55,4 +55,11 @@ public class EmployeeVO {
@Schema(description = "角色名称列表")
private List roleNameList;
+
+ @Schema(description = "职务ID")
+ private Long positionId;
+
+ @Schema(description = "职务名称")
+ private String positionName;
+
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java
index 1f734cb8..eb037d42 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java
@@ -12,6 +12,9 @@ import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity;
import net.lab1024.sa.admin.module.system.employee.domain.form.*;
import net.lab1024.sa.admin.module.system.employee.domain.vo.EmployeeVO;
import net.lab1024.sa.admin.module.system.employee.manager.EmployeeManager;
+import net.lab1024.sa.admin.module.system.login.service.LoginService;
+import net.lab1024.sa.admin.module.system.position.dao.PositionDao;
+import net.lab1024.sa.admin.module.system.position.domain.entity.PositionEntity;
import net.lab1024.sa.admin.module.system.role.dao.RoleEmployeeDao;
import net.lab1024.sa.admin.module.system.role.domain.vo.RoleEmployeeVO;
import net.lab1024.sa.base.common.code.UserErrorCode;
@@ -24,6 +27,7 @@ import net.lab1024.sa.base.common.util.SmartPageUtil;
import net.lab1024.sa.base.module.support.securityprotect.service.ProtectPasswordService;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -37,7 +41,7 @@ import java.util.stream.Collectors;
* @Date 2021-12-29 21:52:46
* @Wechat zhuoda1024
* @Email lab1024@163.com
- * @Copyright 1024创新实验室
+ * @Copyright 1024创新实验室
*/
@Service
public class EmployeeService {
@@ -62,6 +66,13 @@ public class EmployeeService {
@Resource
private ProtectPasswordService protectPasswordService;
+ @Resource
+ @Lazy
+ private LoginService loginService;
+
+ @Resource
+ private PositionDao positionDao;
+
public EmployeeEntity getById(Long employeeId) {
return employeeDao.selectById(employeeId);
}
@@ -69,7 +80,6 @@ public class EmployeeService {
/**
* 查询员工列表
- *
*/
public ResponseDTO> queryEmployee(EmployeeQueryForm employeeQueryForm) {
employeeQueryForm.setDeletedFlag(false);
@@ -86,16 +96,22 @@ public class EmployeeService {
return ResponseDTO.ok(pageResult);
}
- List employeeIdList = employeeList.stream().map(EmployeeVO::getEmployeeId).collect(Collectors.toList());
// 查询员工角色
- List roleEmployeeEntityList = roleEmployeeDao.selectRoleByEmployeeIdList(employeeIdList);
+ List employeeIdList = employeeList.stream().map(EmployeeVO::getEmployeeId).collect(Collectors.toList());
+ List roleEmployeeEntityList = employeeIdList.isEmpty() ? Collections.emptyList() : roleEmployeeDao.selectRoleByEmployeeIdList(employeeIdList);
Map> employeeRoleIdListMap = roleEmployeeEntityList.stream().collect(Collectors.groupingBy(RoleEmployeeVO::getEmployeeId, Collectors.mapping(RoleEmployeeVO::getRoleId, Collectors.toList())));
Map> employeeRoleNameListMap = roleEmployeeEntityList.stream().collect(Collectors.groupingBy(RoleEmployeeVO::getEmployeeId, Collectors.mapping(RoleEmployeeVO::getRoleName, Collectors.toList())));
+ // 查询员工职位
+ List positionIdList = employeeList.stream().map(EmployeeVO::getPositionId).filter(Objects::nonNull).collect(Collectors.toList());
+ List positionEntityList = positionIdList.isEmpty() ? Collections.emptyList() : positionDao.selectBatchIds(positionIdList);
+ Map positionNameMap = positionEntityList.stream().collect(Collectors.toMap(PositionEntity::getPositionId, PositionEntity::getPositionName));
+
employeeList.forEach(e -> {
e.setRoleIdList(employeeRoleIdListMap.getOrDefault(e.getEmployeeId(), Lists.newArrayList()));
e.setRoleNameList(employeeRoleNameListMap.getOrDefault(e.getEmployeeId(), Lists.newArrayList()));
e.setDepartmentName(departmentService.getDepartmentPath(e.getDepartmentId()));
+ e.setPositionName(positionNameMap.get(e.getPositionId()));
});
PageResult pageResult = SmartPageUtil.convert2PageResult(pageParam, employeeList);
return ResponseDTO.ok(pageResult);
@@ -103,7 +119,6 @@ public class EmployeeService {
/**
* 新增员工
- *
*/
public synchronized ResponseDTO addEmployee(EmployeeAddForm employeeAddForm) {
// 校验名称是否重复
@@ -143,7 +158,6 @@ public class EmployeeService {
/**
* 更新员工
- *
*/
public synchronized ResponseDTO updateEmployee(EmployeeUpdateForm employeeUpdateForm) {
@@ -183,12 +197,38 @@ public class EmployeeService {
// 更新数据
employeeManager.updateEmployee(entity, employeeUpdateForm.getRoleIdList());
+ // 清除员工缓存
+ loginService.clearLoginEmployeeCache(employeeId);
+
+ return ResponseDTO.ok();
+ }
+
+
+ /**
+ * 更新登录人头像
+ *
+ * @param employeeUpdateAvatarForm
+ * @return
+ */
+ public ResponseDTO updateAvatar(EmployeeUpdateAvatarForm employeeUpdateAvatarForm) {
+ Long employeeId = employeeUpdateAvatarForm.getEmployeeId();
+ EmployeeEntity employeeEntity = employeeDao.selectById(employeeId);
+ if (employeeEntity == null) {
+ return ResponseDTO.error(UserErrorCode.DATA_NOT_EXIST);
+ }
+ // 更新头像
+ EmployeeEntity updateEntity = new EmployeeEntity();
+ updateEntity.setEmployeeId(employeeId);
+ updateEntity.setAvatar(employeeUpdateAvatarForm.getAvatar());
+ employeeDao.updateById(updateEntity);
+
+ // 清除员工缓存
+ loginService.clearLoginEmployeeCache(employeeId);
return ResponseDTO.ok();
}
/**
* 更新禁用/启用状态
- *
*/
public ResponseDTO updateDisableFlag(Long employeeId) {
if (null == employeeId) {
@@ -210,7 +250,6 @@ public class EmployeeService {
/**
* 批量删除员工
- *
*/
public ResponseDTO batchUpdateDeleteFlag(List employeeIdList) {
if (CollectionUtils.isEmpty(employeeIdList)) {
@@ -239,7 +278,6 @@ public class EmployeeService {
/**
* 批量更新部门
- *
*/
public ResponseDTO batchUpdateDepartment(EmployeeBatchUpdateDepartmentForm batchUpdateDepartmentForm) {
List employeeIdList = batchUpdateDepartmentForm.getEmployeeIdList();
@@ -262,7 +300,6 @@ public class EmployeeService {
/**
* 更新密码
- *
*/
public ResponseDTO updatePassword(EmployeeUpdatePasswordForm updatePasswordForm) {
Long employeeId = updatePasswordForm.getEmployeeId();
@@ -299,7 +336,6 @@ public class EmployeeService {
/**
* 获取某个部门的员工信息
- *
*/
public ResponseDTO> getAllEmployeeByDepartmentId(Long departmentId, Boolean disabledFlag) {
List employeeEntityList = employeeDao.selectByDepartmentId(departmentId, disabledFlag);
@@ -326,7 +362,6 @@ public class EmployeeService {
/**
* 重置密码
- *
*/
public ResponseDTO resetPassword(Integer employeeId) {
String password = protectPasswordService.randomPassword();
@@ -336,7 +371,6 @@ public class EmployeeService {
/**
* 获取 加密后 的密码
- *
*/
public static String getEncryptPwd(String password) {
return DigestUtils.md5Hex(String.format(PASSWORD_SALT_FORMAT, password));
@@ -345,7 +379,6 @@ public class EmployeeService {
/**
* 查询全部员工
- *
*/
public ResponseDTO> queryAllEmployee(Boolean disabledFlag) {
List employeeList = employeeDao.selectEmployeeByDisabledAndDeleted(disabledFlag, Boolean.FALSE);
@@ -354,7 +387,6 @@ public class EmployeeService {
/**
* 根据登录名获取员工
- *
*/
public EmployeeEntity getByLoginName(String loginName) {
return employeeDao.getByLoginName(loginName, null);
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/RequestEmployee.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/RequestEmployee.java
index 600d8fc9..5ba92785 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/RequestEmployee.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/RequestEmployee.java
@@ -31,6 +31,9 @@ public class RequestEmployee implements RequestUser {
@Schema(description = "员工名称")
private String actualName;
+ @Schema(description = "头像")
+ private String avatar;
+
@SchemaEnum(GenderEnum.class)
private Integer gender;
@@ -43,9 +46,15 @@ public class RequestEmployee implements RequestUser {
@Schema(description = "部门名称")
private String departmentName;
+ @Schema(description = "是否禁用")
+ private Boolean disabledFlag;
+
@Schema(description = "是否为超管")
private Boolean administratorFlag;
+ @Schema(description = "备注")
+ private String remark;
+
@Schema(description = "请求ip")
private String ip;
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java
index c2cf7346..e32e177f 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java
@@ -32,6 +32,7 @@ import net.lab1024.sa.base.module.support.captcha.CaptchaService;
import net.lab1024.sa.base.module.support.captcha.domain.CaptchaVO;
import net.lab1024.sa.base.module.support.config.ConfigKeyEnum;
import net.lab1024.sa.base.module.support.config.ConfigService;
+import net.lab1024.sa.base.module.support.file.service.IFileStorageService;
import net.lab1024.sa.base.module.support.loginlog.LoginLogResultEnum;
import net.lab1024.sa.base.module.support.loginlog.LoginLogService;
import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogEntity;
@@ -39,6 +40,7 @@ import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogVO;
import net.lab1024.sa.base.module.support.securityprotect.domain.LoginFailEntity;
import net.lab1024.sa.base.module.support.securityprotect.service.ProtectLoginService;
import net.lab1024.sa.base.module.support.securityprotect.service.ProtectPasswordService;
+import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@@ -110,6 +112,9 @@ public class LoginService implements StpInterface {
@Resource
private ProtectPasswordService profectPasswordService;
+ @Resource
+ private IFileStorageService fileStorageService;
+
/**
* 获取验证码
*/
@@ -252,6 +257,15 @@ public class LoginService implements StpInterface {
DepartmentVO department = departmentService.getDepartmentById(employeeEntity.getDepartmentId());
requestEmployee.setDepartmentName(null == department ? StringConst.EMPTY : department.getName());
+ // 头像信息
+ String avatar = employeeEntity.getAvatar();
+ if(StringUtils.isNotBlank(avatar)){
+ ResponseDTO getFileUrl = fileStorageService.getFileUrl(avatar);
+ if(BooleanUtils.isTrue(getFileUrl.getOk())){
+ requestEmployee.setAvatar(getFileUrl.getData());
+ }
+ }
+
return requestEmployee;
}
@@ -341,6 +355,15 @@ public class LoginService implements StpInterface {
return ResponseDTO.ok();
}
+ /**
+ * 清除员工登录缓存
+ * @param employeeId
+ */
+ public void clearLoginEmployeeCache(Long employeeId){
+ // 清空登录信息缓存
+ loginEmployeeCache.remove(employeeId);
+ }
+
/**
* 保存登录日志
*/
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/controller/PositionController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/controller/PositionController.java
new file mode 100644
index 00000000..5a6c83ba
--- /dev/null
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/controller/PositionController.java
@@ -0,0 +1,75 @@
+package net.lab1024.sa.admin.module.system.position.controller;
+
+import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
+import net.lab1024.sa.admin.module.system.position.domain.form.PositionAddForm;
+import net.lab1024.sa.admin.module.system.position.domain.form.PositionQueryForm;
+import net.lab1024.sa.admin.module.system.position.domain.form.PositionUpdateForm;
+import net.lab1024.sa.admin.module.system.position.domain.vo.PositionVO;
+import net.lab1024.sa.admin.module.system.position.service.PositionService;
+import net.lab1024.sa.base.common.domain.ValidateList;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import net.lab1024.sa.base.common.domain.ResponseDTO;
+import net.lab1024.sa.base.common.domain.PageResult;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 职务表 Controller
+ *
+ * @Author kaiyun
+ * @Date 2024-06-23 23:31:38
+ * @Copyright 1024创新实验室
+ */
+
+@RestController
+@Tag(name = AdminSwaggerTagConst.System.SYSTEM_POSITION)
+public class PositionController {
+
+ @Resource
+ private PositionService positionService;
+
+ @Operation(summary = "分页查询 @author kaiyun")
+ @PostMapping("/position/queryPage")
+ public ResponseDTO> queryPage(@RequestBody @Valid PositionQueryForm queryForm) {
+ return ResponseDTO.ok(positionService.queryPage(queryForm));
+ }
+
+ @Operation(summary = "添加 @author kaiyun")
+ @PostMapping("/position/add")
+ public ResponseDTO add(@RequestBody @Valid PositionAddForm addForm) {
+ return positionService.add(addForm);
+ }
+
+ @Operation(summary = "更新 @author kaiyun")
+ @PostMapping("/position/update")
+ public ResponseDTO update(@RequestBody @Valid PositionUpdateForm updateForm) {
+ return positionService.update(updateForm);
+ }
+
+ @Operation(summary = "批量删除 @author kaiyun")
+ @PostMapping("/position/batchDelete")
+ public ResponseDTO batchDelete(@RequestBody ValidateList idList) {
+ return positionService.batchDelete(idList);
+ }
+
+ @Operation(summary = "单个删除 @author kaiyun")
+ @GetMapping("/position/delete/{positionId}")
+ public ResponseDTO batchDelete(@PathVariable Long positionId) {
+ return positionService.delete(positionId);
+ }
+
+
+ @Operation(summary = "不分页查询 @author kaiyun")
+ @GetMapping("/position/queryList")
+ public ResponseDTO> queryList() {
+ return ResponseDTO.ok(positionService.queryList());
+ }
+}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/dao/PositionDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/dao/PositionDao.java
new file mode 100644
index 00000000..fbd9b9b3
--- /dev/null
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/dao/PositionDao.java
@@ -0,0 +1,41 @@
+package net.lab1024.sa.admin.module.system.position.dao;
+
+import java.util.List;
+import net.lab1024.sa.admin.module.system.position.domain.entity.PositionEntity;
+import net.lab1024.sa.admin.module.system.position.domain.form.PositionQueryForm;
+import net.lab1024.sa.admin.module.system.position.domain.vo.PositionVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+/**
+ * 职务表 Dao
+ *
+ * @Author kaiyun
+ * @Date 2024-06-23 23:31:38
+ * @Copyright 1024创新实验室
+ */
+
+@Mapper
+@Component
+public interface PositionDao extends BaseMapper {
+
+ /**
+ * 分页 查询
+ *
+ * @param page
+ * @param queryForm
+ * @return
+ */
+ List queryPage(Page page, @Param("queryForm") PositionQueryForm queryForm);
+
+
+ /**
+ * 查询
+ * @param deletedFlag
+ * @return
+ */
+ List queryList(@Param("deletedFlag") Boolean deletedFlag);
+}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/entity/PositionEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/entity/PositionEntity.java
new file mode 100644
index 00000000..0beac2a3
--- /dev/null
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/entity/PositionEntity.java
@@ -0,0 +1,61 @@
+package net.lab1024.sa.admin.module.system.position.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.time.LocalDateTime;
+
+import lombok.Data;
+
+/**
+ * 职务表 实体类
+ *
+ * @Author kaiyun
+ * @Date 2024-06-23 23:31:38
+ * @Copyright 1024创新实验室
+ */
+
+@Data
+@TableName("t_position")
+public class PositionEntity {
+
+ /**
+ * 职务ID
+ */
+ @TableId(type = IdType.AUTO)
+ private Long positionId;
+
+ /**
+ * 职务名称
+ */
+ private String positionName;
+
+ /**
+ * 职级
+ */
+ private String level;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+ private Boolean deletedFlag;
+
+ /**
+ * 创建时间
+ */
+ private LocalDateTime createTime;
+
+ /**
+ * 更新时间
+ */
+ private LocalDateTime updateTime;
+
+}
\ No newline at end of file
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/form/PositionAddForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/form/PositionAddForm.java
new file mode 100644
index 00000000..58d89ed8
--- /dev/null
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/form/PositionAddForm.java
@@ -0,0 +1,34 @@
+package net.lab1024.sa.admin.module.system.position.domain.form;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+/**
+ * 职务表 新建表单
+ *
+ * @Author kaiyun
+ * @Date 2024-06-23 23:31:38
+ * @Copyright 1024创新实验室
+ */
+
+@Data
+public class PositionAddForm {
+
+ @Schema(description = "职务名称", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotBlank(message = "职务名称 不能为空")
+ private String positionName;
+
+ @Schema(description = "职级")
+ private String level;
+
+ @Schema(description = "排序")
+ @NotNull(message = "排序不能为空")
+ private Integer sort;
+
+ @Schema(description = "备注")
+ private String remark;
+
+}
\ No newline at end of file
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/form/PositionQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/form/PositionQueryForm.java
new file mode 100644
index 00000000..c6b71550
--- /dev/null
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/form/PositionQueryForm.java
@@ -0,0 +1,23 @@
+package net.lab1024.sa.admin.module.system.position.domain.form;
+
+import net.lab1024.sa.base.common.domain.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 职务表 分页查询表单
+ *
+ * @Author kaiyun
+ * @Date 2024-06-23 23:31:38
+ * @Copyright 1024创新实验室
+ */
+
+@Data
+public class PositionQueryForm extends PageParam{
+
+ @Schema(description = "关键字查询")
+ private String keywords;
+
+ @Schema(hidden = true)
+ private Boolean deletedFlag;
+}
\ No newline at end of file
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/form/PositionUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/form/PositionUpdateForm.java
new file mode 100644
index 00000000..298334c8
--- /dev/null
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/form/PositionUpdateForm.java
@@ -0,0 +1,24 @@
+package net.lab1024.sa.admin.module.system.position.domain.form;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+/**
+ * 职务表 更新表单
+ *
+ * @Author kaiyun
+ * @Date 2024-06-23 23:31:38
+ * @Copyright 1024创新实验室
+ */
+
+@Data
+public class PositionUpdateForm extends PositionAddForm {
+
+ @Schema(description = "职务ID", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "职务ID 不能为空")
+ private Long positionId;
+
+}
\ No newline at end of file
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/vo/PositionVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/vo/PositionVO.java
new file mode 100644
index 00000000..ee178840
--- /dev/null
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/domain/vo/PositionVO.java
@@ -0,0 +1,40 @@
+package net.lab1024.sa.admin.module.system.position.domain.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import java.time.LocalDateTime;
+import lombok.Data;
+
+/**
+ * 职务表 列表VO
+ *
+ * @Author kaiyun
+ * @Date 2024-06-23 23:31:38
+ * @Copyright 1024创新实验室
+ */
+
+@Data
+public class PositionVO {
+
+
+ @Schema(description = "职务ID")
+ private Long positionId;
+
+ @Schema(description = "职务名称")
+ private String positionName;
+
+ @Schema(description = "职级")
+ private String level;
+
+ @Schema(description = "排序")
+ private Integer sort;
+
+ @Schema(description = "备注")
+ private String remark;
+
+ @Schema(description = "创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(description = "更新时间")
+ private LocalDateTime updateTime;
+
+}
\ No newline at end of file
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/manager/PositionManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/manager/PositionManager.java
new file mode 100644
index 00000000..1759de88
--- /dev/null
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/manager/PositionManager.java
@@ -0,0 +1,20 @@
+package net.lab1024.sa.admin.module.system.position.manager;
+
+import net.lab1024.sa.admin.module.system.position.dao.PositionDao;
+import net.lab1024.sa.admin.module.system.position.domain.entity.PositionEntity;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 职务表 Manager
+ *
+ * @Author kaiyun
+ * @Date 2024-06-23 23:31:38
+ * @Copyright 1024创新实验室
+ */
+@Service
+public class PositionManager extends ServiceImpl {
+
+
+}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/service/PositionService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/service/PositionService.java
new file mode 100644
index 00000000..1d132969
--- /dev/null
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/service/PositionService.java
@@ -0,0 +1,105 @@
+package net.lab1024.sa.admin.module.system.position.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import net.lab1024.sa.admin.module.system.position.dao.PositionDao;
+import net.lab1024.sa.admin.module.system.position.domain.entity.PositionEntity;
+import net.lab1024.sa.admin.module.system.position.domain.form.PositionAddForm;
+import net.lab1024.sa.admin.module.system.position.domain.form.PositionQueryForm;
+import net.lab1024.sa.admin.module.system.position.domain.form.PositionUpdateForm;
+import net.lab1024.sa.admin.module.system.position.domain.vo.PositionVO;
+import net.lab1024.sa.base.common.domain.PageResult;
+import net.lab1024.sa.base.common.domain.ResponseDTO;
+import net.lab1024.sa.base.common.util.SmartBeanUtil;
+import net.lab1024.sa.base.common.util.SmartPageUtil;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 职务表 Service
+ *
+ * @Author kaiyun
+ * @Date 2024-06-23 23:31:38
+ * @Copyright 1024创新实验室
+ */
+
+@Service
+public class PositionService {
+
+ @Resource
+ private PositionDao positionDao;
+
+ /**
+ * 分页查询
+ *
+ * @param queryForm
+ * @return
+ */
+ public PageResult queryPage(PositionQueryForm queryForm) {
+ queryForm.setDeletedFlag(Boolean.FALSE);
+ Page> page = SmartPageUtil.convert2PageQuery(queryForm);
+ List list = positionDao.queryPage(page, queryForm);
+ PageResult pageResult = SmartPageUtil.convert2PageResult(page, list);
+ return pageResult;
+ }
+
+ /**
+ * 添加
+ */
+ public ResponseDTO add(PositionAddForm addForm) {
+ PositionEntity positionEntity = SmartBeanUtil.copy(addForm, PositionEntity.class);
+ positionDao.insert(positionEntity);
+ return ResponseDTO.ok();
+ }
+
+ /**
+ * 更新
+ *
+ * @param updateForm
+ * @return
+ */
+ public ResponseDTO update(PositionUpdateForm updateForm) {
+ PositionEntity positionEntity = SmartBeanUtil.copy(updateForm, PositionEntity.class);
+ positionDao.updateById(positionEntity);
+ return ResponseDTO.ok();
+ }
+
+ /**
+ * 批量删除
+ *
+ * @param idList
+ * @return
+ */
+ public ResponseDTO batchDelete(List idList) {
+ if (CollectionUtils.isEmpty(idList)){
+ return ResponseDTO.ok();
+ }
+
+ positionDao.deleteBatchIds(idList);
+ return ResponseDTO.ok();
+ }
+
+ /**
+ * 单个删除
+ */
+ public ResponseDTO delete(Long positionId) {
+ if (null == positionId){
+ return ResponseDTO.ok();
+ }
+
+ positionDao.deleteById(positionId);
+ return ResponseDTO.ok();
+ }
+
+ /**
+ * 分页查询
+ *
+ * @return
+ */
+ public List queryList() {
+ List list = positionDao.queryList(Boolean.FALSE);
+ return list;
+ }
+}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java
index e403f19f..f8fbd6f2 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java
@@ -2,10 +2,10 @@ package net.lab1024.sa.admin.module.system.role.manager;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.lab1024.sa.admin.module.system.role.dao.RoleEmployeeDao;
+import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEmployeeEntity;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEmployeeEntity;
import java.util.List;
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminLoginLogController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminLoginLogController.java
index 48d9b716..ba3f5a02 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminLoginLogController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminLoginLogController.java
@@ -5,7 +5,9 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import net.lab1024.sa.base.common.controller.SupportBaseController;
import net.lab1024.sa.base.common.domain.PageResult;
+import net.lab1024.sa.base.common.domain.RequestUser;
import net.lab1024.sa.base.common.domain.ResponseDTO;
+import net.lab1024.sa.base.common.util.SmartRequestUtil;
import net.lab1024.sa.base.constant.SwaggerTagConst;
import net.lab1024.sa.base.module.support.loginlog.LoginLogService;
import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogQueryForm;
@@ -39,5 +41,14 @@ public class AdminLoginLogController extends SupportBaseController {
return loginLogService.queryByPage(queryForm);
}
+ @Operation(summary = "分页查询当前登录人信息 @author 善逸")
+ @PostMapping("/loginLog/page/query/login")
+ public ResponseDTO> queryByPageLogin(@RequestBody LoginLogQueryForm queryForm) {
+ RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ queryForm.setUserId(requestUser.getUserId());
+ queryForm.setUserType(requestUser.getUserType().getValue());
+ return loginLogService.queryByPage(queryForm);
+ }
+
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminOperateLogController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminOperateLogController.java
index b7c082f7..8624cbc8 100644
--- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminOperateLogController.java
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminOperateLogController.java
@@ -5,7 +5,9 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import net.lab1024.sa.base.common.controller.SupportBaseController;
import net.lab1024.sa.base.common.domain.PageResult;
+import net.lab1024.sa.base.common.domain.RequestUser;
import net.lab1024.sa.base.common.domain.ResponseDTO;
+import net.lab1024.sa.base.common.util.SmartRequestUtil;
import net.lab1024.sa.base.constant.SwaggerTagConst;
import net.lab1024.sa.base.module.support.operatelog.OperateLogService;
import net.lab1024.sa.base.module.support.operatelog.domain.OperateLogQueryForm;
@@ -44,4 +46,13 @@ public class AdminOperateLogController extends SupportBaseController {
return operateLogService.detail(operateLogId);
}
+ @Operation(summary = "分页查询当前登录人信息 @author 善逸")
+ @PostMapping("/operateLog/page/query/login")
+ public ResponseDTO> queryByPageLogin(@RequestBody OperateLogQueryForm queryForm) {
+ RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ queryForm.setOperateUserId(requestUser.getUserId());
+ queryForm.setOperateUserType(requestUser.getUserType().getValue());
+ return operateLogService.queryByPage(queryForm);
+ }
+
}
diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminSmartJobController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminSmartJobController.java
new file mode 100644
index 00000000..d987ca39
--- /dev/null
+++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminSmartJobController.java
@@ -0,0 +1,79 @@
+package net.lab1024.sa.admin.module.system.support;
+
+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.RequestUser;
+import net.lab1024.sa.base.common.domain.ResponseDTO;
+import net.lab1024.sa.base.common.util.SmartRequestUtil;
+import net.lab1024.sa.base.constant.SwaggerTagConst;
+import net.lab1024.sa.base.module.support.job.api.SmartJobService;
+import net.lab1024.sa.base.module.support.job.api.domain.*;
+import net.lab1024.sa.base.module.support.job.config.SmartJobAutoConfiguration;
+import net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 定时任务 管理接口
+ *
+ * @author huke
+ * @date 2024/6/17 20:41
+ */
+@Tag(name = SwaggerTagConst.Support.JOB)
+@RestController
+@ConditionalOnBean(SmartJobAutoConfiguration.class)
+public class AdminSmartJobController extends SupportBaseController {
+
+ @Autowired
+ private SmartJobService jobService;
+
+ @Operation(summary = "定时任务-立即执行 @huke")
+ @PostMapping("/job/execute")
+ @RepeatSubmit
+ public ResponseDTO execute(@RequestBody @Valid SmartJobExecuteForm executeForm) {
+ RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ executeForm.setUpdateName(requestUser.getUserName());
+ return jobService.execute(executeForm);
+ }
+
+ @Operation(summary = "定时任务-查询详情 @huke")
+ @GetMapping("/job/{jobId}")
+ public ResponseDTO queryJobInfo(@PathVariable Integer jobId) {
+ return jobService.queryJobInfo(jobId);
+ }
+
+ @Operation(summary = "定时任务-分页查询 @huke")
+ @PostMapping("/job/query")
+ public ResponseDTO> queryJob(@RequestBody @Valid SmartJobQueryForm queryForm) {
+ return jobService.queryJob(queryForm);
+ }
+
+ @Operation(summary = "定时任务-更新-任务信息 @huke")
+ @PostMapping("/job/update")
+ @RepeatSubmit
+ public ResponseDTO updateJob(@RequestBody @Valid SmartJobUpdateForm updateForm) {
+ RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ updateForm.setUpdateName(requestUser.getUserName());
+ return jobService.updateJob(updateForm);
+ }
+
+ @Operation(summary = "定时任务-更新-开启状态 @huke")
+ @PostMapping("/job/update/enabled")
+ @RepeatSubmit
+ public ResponseDTO updateJobEnabled(@RequestBody @Valid SmartJobEnabledUpdateForm updateForm) {
+ RequestUser requestUser = SmartRequestUtil.getRequestUser();
+ updateForm.setUpdateName(requestUser.getUserName());
+ return jobService.updateJobEnabled(updateForm);
+ }
+
+ @Operation(summary = "定时任务-执行记录-分页查询 @huke")
+ @PostMapping("/job/log/query")
+ public ResponseDTO> queryJobLog(@RequestBody @Valid SmartJobLogQueryForm queryForm) {
+ return jobService.queryJobLog(queryForm);
+ }
+}
\ No newline at end of file
diff --git a/smart-admin-api/sa-admin/src/main/resources/dev/application.yaml b/smart-admin-api/sa-admin/src/main/resources/dev/application.yaml
index f0e4b2b2..ba540719 100644
--- a/smart-admin-api/sa-admin/src/main/resources/dev/application.yaml
+++ b/smart-admin-api/sa-admin/src/main/resources/dev/application.yaml
@@ -8,7 +8,7 @@
# 项目配置: 名称、日志目录
project:
name: sa-admin
- log-directory: /home/logs/smart_admin_v3/${project.name}/${spring.profiles.active}
+ log-directory: ${localPath:/home}/logs/smart_admin_v3/${project.name}/${spring.profiles.active}
# 项目端口和url根路径
server:
@@ -21,12 +21,6 @@ spring:
profiles:
active: '@profiles.active@'
-# swagger文档
-swagger:
- host: localhost:${server.port}
- tag-class: net.lab1024.sa.admin.constant.AdminSwaggerTagConst
-
-
####################################### 安全等级保护 相关配置 ##################################################
# #
# 建议开启 "三级等保" 所要求的配置,具体如下: #
diff --git a/smart-admin-api/sa-admin/src/main/resources/mapper/system/PositionMapper.xml b/smart-admin-api/sa-admin/src/main/resources/mapper/system/PositionMapper.xml
new file mode 100644
index 00000000..bdc93ea5
--- /dev/null
+++ b/smart-admin-api/sa-admin/src/main/resources/mapper/system/PositionMapper.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/smart-admin-api/sa-admin/src/main/resources/pre/application.yaml b/smart-admin-api/sa-admin/src/main/resources/pre/application.yaml
index f0e4b2b2..cbac6806 100644
--- a/smart-admin-api/sa-admin/src/main/resources/pre/application.yaml
+++ b/smart-admin-api/sa-admin/src/main/resources/pre/application.yaml
@@ -21,12 +21,6 @@ spring:
profiles:
active: '@profiles.active@'
-# swagger文档
-swagger:
- host: localhost:${server.port}
- tag-class: net.lab1024.sa.admin.constant.AdminSwaggerTagConst
-
-
####################################### 安全等级保护 相关配置 ##################################################
# #
# 建议开启 "三级等保" 所要求的配置,具体如下: #
diff --git a/smart-admin-api/sa-admin/src/main/resources/prod/application.yaml b/smart-admin-api/sa-admin/src/main/resources/prod/application.yaml
index f0e4b2b2..cbac6806 100644
--- a/smart-admin-api/sa-admin/src/main/resources/prod/application.yaml
+++ b/smart-admin-api/sa-admin/src/main/resources/prod/application.yaml
@@ -21,12 +21,6 @@ spring:
profiles:
active: '@profiles.active@'
-# swagger文档
-swagger:
- host: localhost:${server.port}
- tag-class: net.lab1024.sa.admin.constant.AdminSwaggerTagConst
-
-
####################################### 安全等级保护 相关配置 ##################################################
# #
# 建议开启 "三级等保" 所要求的配置,具体如下: #
diff --git a/smart-admin-api/sa-admin/src/main/resources/test/application.yaml b/smart-admin-api/sa-admin/src/main/resources/test/application.yaml
index f0e4b2b2..e6af9476 100644
--- a/smart-admin-api/sa-admin/src/main/resources/test/application.yaml
+++ b/smart-admin-api/sa-admin/src/main/resources/test/application.yaml
@@ -8,11 +8,11 @@
# 项目配置: 名称、日志目录
project:
name: sa-admin
- log-directory: /home/logs/smart_admin_v3/${project.name}/${spring.profiles.active}
+ log-directory: /home/project/smartadmin/sit/log
# 项目端口和url根路径
server:
- port: 1024
+ port: 11024
servlet:
context-path: /
@@ -21,12 +21,6 @@ spring:
profiles:
active: '@profiles.active@'
-# swagger文档
-swagger:
- host: localhost:${server.port}
- tag-class: net.lab1024.sa.admin.constant.AdminSwaggerTagConst
-
-
####################################### 安全等级保护 相关配置 ##################################################
# #
# 建议开启 "三级等保" 所要求的配置,具体如下: #
diff --git a/smart-admin-api/sa-base/pom.xml b/smart-admin-api/sa-base/pom.xml
index ac20877c..870fb9d8 100644
--- a/smart-admin-api/sa-base/pom.xml
+++ b/smart-admin-api/sa-base/pom.xml
@@ -113,6 +113,11 @@
commons-pool2
+
+ org.apache.commons
+ commons-text
+
+
org.springframework
spring-mock
@@ -264,6 +269,14 @@
${smartdb.version}
+
+ org.redisson
+ redisson-spring-boot-starter
+
+
+ org.redisson
+ redisson-spring-data-27
+
diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java
index 7a81a14e..fceba7b4 100644
--- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java
+++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java
@@ -40,7 +40,7 @@ public class DictValueVoSerializer extends JsonSerializer {
List dictValueVOList = Lists.newArrayList();
valueCodeList.forEach(e->{
if(StringUtils.isNotBlank(e)){
- DictValueVO dictValueVO = dictCacheService.selectValueByValueCode(value);
+ DictValueVO dictValueVO = dictCacheService.selectValueByValueCode(e);
if(dictValueVO != null){
dictValueVOList.add(dictValueVO);
}
diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/enumeration/EnumSerialize.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/enumeration/EnumSerialize.java
new file mode 100644
index 00000000..ace962b5
--- /dev/null
+++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/enumeration/EnumSerialize.java
@@ -0,0 +1,25 @@
+package net.lab1024.sa.base.common.json.serializer.enumeration;
+
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import net.lab1024.sa.base.common.enumeration.BaseEnum;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 枚举类 序列化 注解
+ *
+ * @author huke
+ * @date 2024年6月29日
+ */
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+@JacksonAnnotationsInside
+@JsonSerialize(using = EnumSerializer.class, nullsUsing = EnumSerializer.class)
+public @interface EnumSerialize {
+
+ Class extends BaseEnum> value();
+}
diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/enumeration/EnumSerializer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/enumeration/EnumSerializer.java
new file mode 100644
index 00000000..9cd2324d
--- /dev/null
+++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/enumeration/EnumSerializer.java
@@ -0,0 +1,53 @@
+package net.lab1024.sa.base.common.json.serializer.enumeration;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.BeanProperty;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.ser.ContextualSerializer;
+import net.lab1024.sa.base.common.constant.StringConst;
+import net.lab1024.sa.base.common.enumeration.BaseEnum;
+import net.lab1024.sa.base.common.util.SmartEnumUtil;
+import net.lab1024.sa.base.common.util.SmartStringUtil;
+
+import java.io.IOException;
+import java.util.stream.Collectors;
+
+/**
+ * 枚举 序列化
+ *
+ * @author huke
+ * @date 2024年6月29日
+ */
+public class EnumSerializer extends JsonSerializer