style(java): 统一Springboot3版本代码格式化和优化依赖配置

This commit is contained in:
2025-12-29 12:02:27 +08:00
parent c1521dcb9a
commit 4097e1801f
108 changed files with 4497 additions and 5155 deletions
@@ -36,10 +36,10 @@ import cn.odboy.util.KitRsaEncryptUtil;
import com.wf.captcha.base.Captcha; import com.wf.captcha.base.Captcha;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import jakarta.servlet.http.HttpServletRequest;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@@ -62,18 +62,12 @@ import org.springframework.web.bind.annotation.RestController;
@Api(tags = "系统:系统授权接口") @Api(tags = "系统:系统授权接口")
public class SystemAuthController { public class SystemAuthController {
@Autowired @Autowired private KitRedisHelper redisHelper;
private KitRedisHelper redisHelper; @Autowired private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO;
@Autowired @Autowired private TokenProvider tokenProvider;
private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO; @Autowired private AppProperties properties;
@Autowired @Autowired private PasswordEncoder passwordEncoder;
private TokenProvider tokenProvider; @Autowired private UserDetailsHandler userDetailsService;
@Autowired
private AppProperties properties;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private UserDetailsHandler userDetailsService;
@ApiOperation("登录授权") @ApiOperation("登录授权")
@AnonymousPostMapping(value = "/login") @AnonymousPostMapping(value = "/login")
@@ -35,8 +35,7 @@ import org.springframework.web.bind.annotation.RestController;
@Api(tags = "系统:验证码管理") @Api(tags = "系统:验证码管理")
public class SystemCaptchaController { public class SystemCaptchaController {
@Autowired @Autowired private SystemEmailService systemEmailService;
private SystemEmailService systemEmailService;
@ApiOperation("重置邮箱, 发送验证码") @ApiOperation("重置邮箱, 发送验证码")
@PostMapping(value = "/sendResetEmailCaptcha") @PostMapping(value = "/sendResetEmailCaptcha")
@@ -30,8 +30,7 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api/component") @RequestMapping("/api/component")
public class SystemComponentController { public class SystemComponentController {
@Autowired @Autowired private SystemDeptService systemDeptService;
private SystemDeptService systemDeptService;
@ApiOperation("查询部门下拉选择数据源") @ApiOperation("查询部门下拉选择数据源")
@PostMapping(value = "/queryDeptSelectDataSource") @PostMapping(value = "/queryDeptSelectDataSource")
@@ -24,12 +24,9 @@ import cn.odboy.system.service.SystemDeptService;
import cn.odboy.util.KitPageUtil; import cn.odboy.util.KitPageUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.ArrayList; import jakarta.servlet.http.HttpServletResponse;
import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@@ -46,23 +43,22 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api/dept") @RequestMapping("/api/dept")
public class SystemDeptController { public class SystemDeptController {
@Autowired @Autowired private SystemDeptService systemDeptService;
private SystemDeptService systemDeptService;
@ApiOperation("导出部门数据") @ApiOperation("导出部门数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('dept:list')") @PreAuthorize("@el.check('dept:list')")
public void exportDept(HttpServletResponse response, SystemQueryDeptArgs criteria) throws Exception { public void exportDept(HttpServletResponse response, SystemQueryDeptArgs args) throws Exception {
systemDeptService.exportDeptExcel(systemDeptService.queryAllDept(criteria, false), response); systemDeptService.exportDeptExcel(systemDeptService.queryAllDeptByArgs(args, false), response);
} }
@ApiOperation("查询部门") @ApiOperation("查询部门")
@PostMapping @PostMapping
@PreAuthorize("@el.check('user:list','dept:list')") @PreAuthorize("@el.check('user:list','dept:list')")
public ResponseEntity<KitPageResult<SystemDeptTb>> queryDept( public ResponseEntity<KitPageResult<SystemDeptTb>> queryDept(
@Validated @RequestBody KitPageArgs<SystemQueryDeptArgs> args) throws Exception { @Validated @RequestBody KitPageArgs<SystemQueryDeptArgs> pageArgs) throws Exception {
SystemQueryDeptArgs criteria = args.getArgs(); SystemQueryDeptArgs args = pageArgs.getArgs();
List<SystemDeptTb> depts = systemDeptService.queryAllDept(criteria, true); List<SystemDeptTb> depts = systemDeptService.queryAllDeptByArgs(args, true);
return ResponseEntity.ok(KitPageUtil.toPage(depts)); return ResponseEntity.ok(KitPageUtil.toPage(depts));
} }
@@ -71,24 +67,7 @@ public class SystemDeptController {
@PreAuthorize("@el.check('user:list','dept:list')") @PreAuthorize("@el.check('user:list','dept:list')")
public ResponseEntity<KitPageResult<SystemDeptTb>> queryDeptSuperiorTree(@RequestBody List<Long> ids, public ResponseEntity<KitPageResult<SystemDeptTb>> queryDeptSuperiorTree(@RequestBody List<Long> ids,
@RequestParam(defaultValue = "false") Boolean exclude) { @RequestParam(defaultValue = "false") Boolean exclude) {
Set<SystemDeptTb> deptSet = new LinkedHashSet<>(); return ResponseEntity.ok(systemDeptService.searchDeptTree(ids, exclude));
for (Long id : ids) {
// 同级数据
SystemDeptTb dept = systemDeptService.getDeptById(id);
// 上级数据
List<SystemDeptTb> depts = systemDeptService.querySuperiorDeptListByPid(dept, new ArrayList<>());
if (exclude) {
for (SystemDeptTb data : depts) {
if (data.getId().equals(dept.getPid())) {
data.setSubCount(data.getSubCount() - 1);
}
}
// 编辑部门时不显示自己以及自己下级的数据, 避免出现PID数据环形问题
depts = depts.stream().filter(i -> !ids.contains(i.getId())).collect(Collectors.toList());
}
deptSet.addAll(depts);
}
return ResponseEntity.ok(systemDeptService.buildDeptTree(new ArrayList<>(deptSet)));
} }
@ApiOperation("新增部门") @ApiOperation("新增部门")
@@ -115,7 +94,7 @@ public class SystemDeptController {
Set<SystemDeptTb> depts = systemDeptService.traverseDeptByIdWithPids(ids); Set<SystemDeptTb> depts = systemDeptService.traverseDeptByIdWithPids(ids);
// 验证是否被角色或用户关联 // 验证是否被角色或用户关联
systemDeptService.verifyBindRelationByIds(depts); systemDeptService.verifyBindRelationByIds(depts);
systemDeptService.removeDeptByIds(depts); systemDeptService.deleteDeptByIds(depts);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
} }
@@ -24,10 +24,10 @@ import cn.odboy.system.service.SystemDictService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@@ -43,14 +43,13 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api/dict") @RequestMapping("/api/dict")
public class SystemDictController { public class SystemDictController {
@Autowired @Autowired private SystemDictService systemDictService;
private SystemDictService systemDictService;
@ApiOperation("导出字典数据") @ApiOperation("导出字典数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('dict:list')") @PreAuthorize("@el.check('dict:list')")
public void exportDict(HttpServletResponse response, SystemQueryDictArgs criteria) throws IOException { public void exportDict(HttpServletResponse response, SystemQueryDictArgs args) throws IOException {
systemDictService.exportDictExcel(systemDictService.queryDictByArgs(criteria), response); systemDictService.exportDictExcel(systemDictService.queryDictByArgs(args), response);
} }
@ApiOperation("查询字典") @ApiOperation("查询字典")
@@ -64,15 +63,10 @@ public class SystemDictController {
@PostMapping @PostMapping
@PreAuthorize("@el.check('dict:list')") @PreAuthorize("@el.check('dict:list')")
public ResponseEntity<KitPageResult<SystemDictTb>> queryDictByArgs( public ResponseEntity<KitPageResult<SystemDictTb>> queryDictByArgs(
@Validated @RequestBody KitPageArgs<SystemQueryDictArgs> args) { @Validated @RequestBody KitPageArgs<SystemQueryDictArgs> pageArgs) {
Page<SystemDictTb> page; Page<SystemDictTb> page = new Page<>(pageArgs.getPage(), pageArgs.getSize());
SystemQueryDictArgs criteria = args.getArgs(); SystemQueryDictArgs args = pageArgs.getArgs();
if (args.getSize() != null) { return ResponseEntity.ok(systemDictService.searchDict(args, page));
page = new Page<>(args.getPage(), args.getSize());
} else {
page = new Page<>(criteria.getPage(), criteria.getSize());
}
return ResponseEntity.ok(systemDictService.queryDictByArgs(criteria, page));
} }
@ApiOperation("新增字典") @ApiOperation("新增字典")
@@ -87,7 +81,7 @@ public class SystemDictController {
@PostMapping(value = "/modifyDictById") @PostMapping(value = "/modifyDictById")
@PreAuthorize("@el.check('dict:edit')") @PreAuthorize("@el.check('dict:edit')")
public ResponseEntity<Void> modifyDictById(@Validated(SystemDictTb.Update.class) @RequestBody SystemDictTb args) { public ResponseEntity<Void> modifyDictById(@Validated(SystemDictTb.Update.class) @RequestBody SystemDictTb args) {
systemDictService.modifyDictById(args); systemDictService.updateDictById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -95,7 +89,7 @@ public class SystemDictController {
@PostMapping(value = "/removeDictByIds") @PostMapping(value = "/removeDictByIds")
@PreAuthorize("@el.check('dict:del')") @PreAuthorize("@el.check('dict:del')")
public ResponseEntity<Void> removeDictByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Void> removeDictByIds(@RequestBody Set<Long> ids) {
systemDictService.removeDictByIds(ids); systemDictService.deleteDictByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
} }
@@ -44,8 +44,7 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api/dictDetail") @RequestMapping("/api/dictDetail")
public class SystemDictDetailController { public class SystemDictDetailController {
@Autowired @Autowired private SystemDictDetailService systemDictDetailService;
private SystemDictDetailService systemDictDetailService;
@ApiOperation("查询字典详情") @ApiOperation("查询字典详情")
@PostMapping @PostMapping
@@ -57,10 +56,10 @@ public class SystemDictDetailController {
@ApiOperation("查询字典详情") @ApiOperation("查询字典详情")
@PostMapping(value = "/queryDictDetailByArgs") @PostMapping(value = "/queryDictDetailByArgs")
public ResponseEntity<KitPageResult<SystemDictDetailVo>> queryDictDetailByArgs( public ResponseEntity<KitPageResult<SystemDictDetailVo>> queryDictDetailByArgs(
@Validated @RequestBody KitPageArgs<SystemQueryDictDetailArgs> args) { @Validated @RequestBody KitPageArgs<SystemQueryDictDetailArgs> pageArgs) {
SystemQueryDictDetailArgs criteria = args.getArgs(); SystemQueryDictDetailArgs args = pageArgs.getArgs();
Page<SystemDictDetailTb> page = new Page<>(args.getPage(), args.getSize()); Page<SystemDictDetailTb> page = new Page<>(pageArgs.getPage(), pageArgs.getSize());
return ResponseEntity.ok(systemDictDetailService.queryDictDetailByArgs(criteria, page)); return ResponseEntity.ok(systemDictDetailService.searchDictDetail(args, page));
} }
@ApiOperation("查询多个字典详情") @ApiOperation("查询多个字典详情")
@@ -69,7 +68,7 @@ public class SystemDictDetailController {
String[] names = dictName.split("[,, ]"); String[] names = dictName.split("[,, ]");
Map<String, List<SystemDictDetailVo>> dictMap = new HashMap<>(16); Map<String, List<SystemDictDetailVo>> dictMap = new HashMap<>(16);
for (String name : names) { for (String name : names) {
dictMap.put(name, systemDictDetailService.queryDictDetailByName(name)); dictMap.put(name, systemDictDetailService.listDictDetailByName(name));
} }
return ResponseEntity.ok(dictMap); return ResponseEntity.ok(dictMap);
} }
@@ -87,7 +86,7 @@ public class SystemDictDetailController {
@PreAuthorize("@el.check('dict:edit')") @PreAuthorize("@el.check('dict:edit')")
public ResponseEntity<Void> modifyDictDetailById( public ResponseEntity<Void> modifyDictDetailById(
@Validated(SystemDictDetailTb.Update.class) @RequestBody SystemDictDetailTb args) { @Validated(SystemDictDetailTb.Update.class) @RequestBody SystemDictDetailTb args) {
systemDictDetailService.modifyDictDetailById(args); systemDictDetailService.updateDictDetailById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -95,7 +94,7 @@ public class SystemDictDetailController {
@PostMapping(value = "/removeDictDetailById") @PostMapping(value = "/removeDictDetailById")
@PreAuthorize("@el.check('dict:del')") @PreAuthorize("@el.check('dict:del')")
public ResponseEntity<Void> removeDictDetailById(@RequestBody SystemDictDetailTb args) { public ResponseEntity<Void> removeDictDetailById(@RequestBody SystemDictDetailTb args) {
systemDictDetailService.removeDictDetailById(args.getId()); systemDictDetailService.deleteDictDetailById(args.getId());
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
} }
@@ -36,8 +36,7 @@ import org.springframework.web.bind.annotation.RestController;
@Api(tags = "工具:邮件管理") @Api(tags = "工具:邮件管理")
public class SystemEmailController { public class SystemEmailController {
@Autowired @Autowired private SystemEmailService systemEmailService;
private SystemEmailService systemEmailService;
@ApiOperation("查询配置") @ApiOperation("查询配置")
@PostMapping(value = "/getLastEmailConfig") @PostMapping(value = "/getLastEmailConfig")
@@ -49,7 +48,7 @@ public class SystemEmailController {
@PostMapping(value = "/modifyEmailConfig") @PostMapping(value = "/modifyEmailConfig")
public ResponseEntity<Void> modifyEmailConfig(@Validated @RequestBody SystemEmailConfigTb emailConfig) public ResponseEntity<Void> modifyEmailConfig(@Validated @RequestBody SystemEmailConfigTb emailConfig)
throws Exception { throws Exception {
systemEmailService.modifyEmailConfig(emailConfig); systemEmailService.updateEmailConfigById(emailConfig);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -24,9 +24,9 @@ import cn.odboy.system.service.SystemJobService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.Set; import java.util.Set;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@@ -42,24 +42,23 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api/job") @RequestMapping("/api/job")
public class SystemJobController { public class SystemJobController {
@Autowired @Autowired private SystemJobService systemJobService;
private SystemJobService systemJobService;
@ApiOperation("导出岗位数据") @ApiOperation("导出岗位数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('job:list')") @PreAuthorize("@el.check('job:list')")
public void exportJob(HttpServletResponse response, SystemQueryJobArgs criteria) throws IOException { public void exportJob(HttpServletResponse response, SystemQueryJobArgs args) throws IOException {
systemJobService.exportJobExcel(systemJobService.queryJobByArgs(criteria), response); systemJobService.exportJobExcel(systemJobService.queryJobByArgs(args), response);
} }
@ApiOperation("查询岗位") @ApiOperation("查询岗位")
@PostMapping(value = "/queryAllEnableJob") @PostMapping(value = "/queryAllEnableJob")
@PreAuthorize("@el.check('job:list','user:list')") @PreAuthorize("@el.check('job:list','user:list')")
public ResponseEntity<KitPageResult<SystemJobTb>> queryJobByArgs( public ResponseEntity<KitPageResult<SystemJobTb>> queryJobByArgs(
@Validated @RequestBody KitPageArgs<SystemQueryJobArgs> args) { @Validated @RequestBody KitPageArgs<SystemQueryJobArgs> pageArgs) {
SystemQueryJobArgs criteria = args.getArgs(); SystemQueryJobArgs args = pageArgs.getArgs();
Page<SystemJobTb> page = new Page<>(criteria.getPage(), criteria.getSize()); Page<SystemJobTb> page = new Page<>(args.getPage(), args.getSize());
return ResponseEntity.ok(systemJobService.queryJobByArgs(criteria, page)); return ResponseEntity.ok(systemJobService.searchJobByArgs(args, page));
} }
@ApiOperation("查询岗位") @ApiOperation("查询岗位")
@@ -82,7 +81,7 @@ public class SystemJobController {
@PostMapping(value = "/modifyJobById") @PostMapping(value = "/modifyJobById")
@PreAuthorize("@el.check('job:edit')") @PreAuthorize("@el.check('job:edit')")
public ResponseEntity<Void> modifyJobById(@Validated(SystemJobTb.Update.class) @RequestBody SystemJobTb args) { public ResponseEntity<Void> modifyJobById(@Validated(SystemJobTb.Update.class) @RequestBody SystemJobTb args) {
systemJobService.modifyJobById(args); systemJobService.updateJobById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -92,7 +91,7 @@ public class SystemJobController {
public ResponseEntity<Void> removeJobByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Void> removeJobByIds(@RequestBody Set<Long> ids) {
// 验证是否被用户关联 // 验证是否被用户关联
systemJobService.verifyBindRelationByIds(ids); systemJobService.verifyBindRelationByIds(ids);
systemJobService.removeJobByIds(ids); systemJobService.deleteJobByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
} }
@@ -26,8 +26,8 @@ import cn.odboy.util.KitFileUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.io.IOException;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@@ -45,24 +45,23 @@ import org.springframework.web.multipart.MultipartFile;
@RequestMapping("/api/localStorage") @RequestMapping("/api/localStorage")
public class SystemLocalStorageController { public class SystemLocalStorageController {
@Autowired @Autowired private SystemLocalStorageService localStorageService;
private SystemLocalStorageService localStorageService;
@ApiOperation("查询文件") @ApiOperation("查询文件")
@PostMapping @PostMapping
@PreAuthorize("@el.check('storage:list')") @PreAuthorize("@el.check('storage:list')")
public ResponseEntity<KitPageResult<SystemLocalStorageTb>> queryLocalStorage( public ResponseEntity<KitPageResult<SystemLocalStorageTb>> queryLocalStorage(
@Validated @RequestBody KitPageArgs<SystemQueryStorageArgs> args) { @Validated @RequestBody KitPageArgs<SystemQueryStorageArgs> pageArgs) {
SystemQueryStorageArgs criteria = args.getArgs(); SystemQueryStorageArgs args = pageArgs.getArgs();
Page<SystemLocalStorageTb> page = new Page<>(criteria.getPage(), criteria.getSize()); Page<SystemLocalStorageTb> page = new Page<>(args.getPage(), args.getSize());
return ResponseEntity.ok(localStorageService.queryLocalStorage(criteria, page)); return ResponseEntity.ok(localStorageService.searchLocalStorage(args, page));
} }
@ApiOperation("导出数据") @ApiOperation("导出数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('storage:list')") @PreAuthorize("@el.check('storage:list')")
public void exportFile(HttpServletResponse response, SystemQueryStorageArgs criteria) throws IOException { public void exportFile(HttpServletResponse response, SystemQueryStorageArgs args) throws IOException {
localStorageService.exportLocalStorageExcel(localStorageService.queryLocalStorage(criteria), response); localStorageService.exportLocalStorageExcel(localStorageService.queryLocalStorageByArgs(args), response);
} }
@ApiOperation("上传文件") @ApiOperation("上传文件")
@@ -89,14 +88,14 @@ public class SystemLocalStorageController {
@PostMapping(value = "/modifyLocalStorageById") @PostMapping(value = "/modifyLocalStorageById")
@PreAuthorize("@el.check('storage:edit')") @PreAuthorize("@el.check('storage:edit')")
public ResponseEntity<Void> modifyLocalStorageById(@Validated @RequestBody SystemLocalStorageTb args) { public ResponseEntity<Void> modifyLocalStorageById(@Validated @RequestBody SystemLocalStorageTb args) {
localStorageService.modifyLocalStorageById(args); localStorageService.updateLocalStorageById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("多选删除") @ApiOperation("多选删除")
@PostMapping(value = "/removeFileByIds") @PostMapping(value = "/removeFileByIds")
public ResponseEntity<Void> deleteFileByIds(@RequestBody Long[] ids) { public ResponseEntity<Void> deleteFileByIds(@RequestBody Long[] ids) {
localStorageService.removeFileByIds(ids); localStorageService.deleteFileByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
} }
@@ -28,13 +28,13 @@ import cn.odboy.system.service.SystemMenuService;
import cn.odboy.util.KitPageUtil; import cn.odboy.util.KitPageUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import jakarta.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@@ -51,22 +51,20 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api/menu") @RequestMapping("/api/menu")
public class SystemMenuController { public class SystemMenuController {
@Autowired @Autowired private SystemMenuService systemMenuService;
private SystemMenuService systemMenuService; @Autowired private SystemMenuMapper systemMenuMapper;
@Autowired
private SystemMenuMapper systemMenuMapper;
@ApiOperation("导出菜单数据") @ApiOperation("导出菜单数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('menu:list')") @PreAuthorize("@el.check('menu:list')")
public void exportMenu(HttpServletResponse response, SystemQueryMenuArgs criteria) throws Exception { public void exportMenu(HttpServletResponse response, SystemQueryMenuArgs args) throws Exception {
systemMenuService.exportMenuExcel(systemMenuService.queryAllMenu(criteria, false), response); systemMenuService.exportMenuExcel(systemMenuService.queryAllMenu(args, false), response);
} }
@PostMapping(value = "/buildMenus") @PostMapping(value = "/buildMenus")
@ApiOperation("获取前端所需菜单") @ApiOperation("获取前端所需菜单")
public ResponseEntity<List<SystemMenuVo>> buildMenus() { public ResponseEntity<List<SystemMenuVo>> buildMenus() {
List<SystemMenuTb> menuList = systemMenuService.queryMenuListByUserId(KitSecurityHelper.getCurrentUserId()); List<SystemMenuTb> menuList = systemMenuService.listMenuByUserId(KitSecurityHelper.getCurrentUserId());
List<SystemMenuTb> menus = systemMenuService.buildMenuTree(menuList); List<SystemMenuTb> menus = systemMenuService.buildMenuTree(menuList);
return ResponseEntity.ok(systemMenuService.buildMenuVo(menus)); return ResponseEntity.ok(systemMenuService.buildMenuVo(menus));
} }
@@ -75,7 +73,7 @@ public class SystemMenuController {
@PostMapping(value = "/queryMenuListByPid") @PostMapping(value = "/queryMenuListByPid")
@PreAuthorize("@el.check('menu:list','roles:list')") @PreAuthorize("@el.check('menu:list','roles:list')")
public ResponseEntity<List<SystemMenuTb>> queryMenuListByPid(@RequestParam Long pid) { public ResponseEntity<List<SystemMenuTb>> queryMenuListByPid(@RequestParam Long pid) {
return ResponseEntity.ok(systemMenuService.queryMenuByPid(pid)); return ResponseEntity.ok(systemMenuService.listMenuByPid(pid));
} }
@ApiOperation("根据菜单ID返回所有子节点ID, 包含自身ID") @ApiOperation("根据菜单ID返回所有子节点ID, 包含自身ID")
@@ -83,9 +81,9 @@ public class SystemMenuController {
@PreAuthorize("@el.check('menu:list','roles:list')") @PreAuthorize("@el.check('menu:list','roles:list')")
public ResponseEntity<Set<Long>> queryChildMenuSet(@RequestParam Long id) { public ResponseEntity<Set<Long>> queryChildMenuSet(@RequestParam Long id) {
Set<SystemMenuTb> menuSet = new HashSet<>(); Set<SystemMenuTb> menuSet = new HashSet<>();
List<SystemMenuTb> menuList = systemMenuService.queryMenuByPid(id); List<SystemMenuTb> menuList = systemMenuService.listMenuByPid(id);
menuSet.add(systemMenuMapper.selectById(id)); menuSet.add(systemMenuMapper.selectById(id));
menuSet = systemMenuService.queryChildMenu(menuList, menuSet); menuSet = systemMenuService.queryChildMenuByArgs(menuList, menuSet);
Set<Long> ids = menuSet.stream().map(SystemMenuTb::getId).collect(Collectors.toSet()); Set<Long> ids = menuSet.stream().map(SystemMenuTb::getId).collect(Collectors.toSet());
return ResponseEntity.ok(ids); return ResponseEntity.ok(ids);
} }
@@ -102,9 +100,9 @@ public class SystemMenuController {
@ApiOperation("查询菜单") @ApiOperation("查询菜单")
@PreAuthorize("@el.check('menu:list')") @PreAuthorize("@el.check('menu:list')")
public ResponseEntity<KitPageResult<SystemMenuTb>> queryAllMenu( public ResponseEntity<KitPageResult<SystemMenuTb>> queryAllMenu(
@Validated @RequestBody KitPageArgs<SystemQueryMenuArgs> args) throws Exception { @Validated @RequestBody KitPageArgs<SystemQueryMenuArgs> pageArgs) throws Exception {
SystemQueryMenuArgs criteria = args.getArgs(); SystemQueryMenuArgs args = pageArgs.getArgs();
List<SystemMenuTb> menuList = systemMenuService.queryAllMenu(criteria, true); List<SystemMenuTb> menuList = systemMenuService.queryAllMenu(args, true);
return ResponseEntity.ok(KitPageUtil.toPage(menuList)); return ResponseEntity.ok(KitPageUtil.toPage(menuList));
} }
@@ -114,9 +112,9 @@ public class SystemMenuController {
public ResponseEntity<List<SystemMenuTb>> queryMenuSuperior(@RequestBody List<Long> ids) { public ResponseEntity<List<SystemMenuTb>> queryMenuSuperior(@RequestBody List<Long> ids) {
Set<SystemMenuTb> menus; Set<SystemMenuTb> menus;
if (CollectionUtil.isNotEmpty(ids)) { if (CollectionUtil.isNotEmpty(ids)) {
menus = new LinkedHashSet<>(systemMenuService.queryMenuByIds(ids)); menus = new LinkedHashSet<>(systemMenuService.listMenuByIds(ids));
for (SystemMenuTb menu : menus) { for (SystemMenuTb menu : menus) {
List<SystemMenuTb> menuList = systemMenuService.querySuperiorMenuList(menu, new ArrayList<>()); List<SystemMenuTb> menuList = systemMenuService.querySuperiorMenuByArgs(menu, new ArrayList<>());
for (SystemMenuTb data : menuList) { for (SystemMenuTb data : menuList) {
if (data.getId().equals(menu.getPid())) { if (data.getId().equals(menu.getPid())) {
data.setSubCount(data.getSubCount() - 1); data.setSubCount(data.getSubCount() - 1);
@@ -128,7 +126,7 @@ public class SystemMenuController {
menus = menus.stream().filter(i -> !ids.contains(i.getId())).collect(Collectors.toSet()); menus = menus.stream().filter(i -> !ids.contains(i.getId())).collect(Collectors.toSet());
return ResponseEntity.ok(systemMenuService.buildMenuTree(new ArrayList<>(menus))); return ResponseEntity.ok(systemMenuService.buildMenuTree(new ArrayList<>(menus)));
} }
return ResponseEntity.ok(systemMenuService.queryMenuByPid(null)); return ResponseEntity.ok(systemMenuService.listMenuByPid(null));
} }
@ApiOperation("新增菜单") @ApiOperation("新增菜单")
@@ -146,7 +144,7 @@ public class SystemMenuController {
@PostMapping(value = "/modifyMenuById") @PostMapping(value = "/modifyMenuById")
@PreAuthorize("@el.check('menu:edit')") @PreAuthorize("@el.check('menu:edit')")
public ResponseEntity<Void> modifyMenuById(@Validated(SystemMenuTb.Update.class) @RequestBody SystemMenuTb args) { public ResponseEntity<Void> modifyMenuById(@Validated(SystemMenuTb.Update.class) @RequestBody SystemMenuTb args) {
systemMenuService.modifyMenuById(args); systemMenuService.updateMenuById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -154,7 +152,7 @@ public class SystemMenuController {
@PostMapping(value = "/removeMenuByIds") @PostMapping(value = "/removeMenuByIds")
@PreAuthorize("@el.check('menu:del')") @PreAuthorize("@el.check('menu:del')")
public ResponseEntity<Void> removeMenuByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Void> removeMenuByIds(@RequestBody Set<Long> ids) {
systemMenuService.removeMenuByIds(ids); systemMenuService.deleteMenuByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
} }
@@ -31,13 +31,12 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api/monitor") @RequestMapping("/api/monitor")
public class SystemMonitorController { public class SystemMonitorController {
@Autowired @Autowired private SystemMonitorService systemMonitorService;
private SystemMonitorService systemMonitorService;
@PostMapping(value = "/queryServerMonitorInfo") @PostMapping(value = "/queryServerMonitorInfo")
@ApiOperation("查询服务监控") @ApiOperation("查询服务监控")
@PreAuthorize("@el.check('monitor:list')") @PreAuthorize("@el.check('monitor:list')")
public ResponseEntity<Map<String, Object>> queryServerMonitorInfo() { public ResponseEntity<Map<String, Object>> queryServerMonitorInfo() {
return ResponseEntity.ok(systemMonitorService.queryServerMonitorInfo()); return ResponseEntity.ok(systemMonitorService.getServerMonitorInfo());
} }
} }
@@ -24,9 +24,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.Set; import java.util.Set;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@@ -42,8 +42,7 @@ import org.springframework.web.bind.annotation.RestController;
@Api(tags = "系统:在线用户管理") @Api(tags = "系统:在线用户管理")
public class SystemOnlineController { public class SystemOnlineController {
@Autowired @Autowired private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO;
private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO;
@ApiOperation("查询在线用户") @ApiOperation("查询在线用户")
@PostMapping @PostMapping
@@ -24,8 +24,8 @@ import cn.odboy.system.service.SystemOssStorageService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.io.IOException;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@@ -45,24 +45,23 @@ import org.springframework.web.multipart.MultipartFile;
@RequestMapping("/api/ossStorage") @RequestMapping("/api/ossStorage")
public class SystemOssStorageController { public class SystemOssStorageController {
@Autowired @Autowired private SystemOssStorageService systemOssStorageService;
private SystemOssStorageService systemOssStorageService;
@ApiOperation("查询文件") @ApiOperation("查询文件")
@PostMapping @PostMapping
@PreAuthorize("@el.check('storage:list')") @PreAuthorize("@el.check('storage:list')")
public ResponseEntity<KitPageResult<SystemOssStorageVo>> queryOssStorage( public ResponseEntity<KitPageResult<SystemOssStorageVo>> queryOssStorage(
@Validated @RequestBody KitPageArgs<SystemQueryStorageArgs> args) { @Validated @RequestBody KitPageArgs<SystemQueryStorageArgs> pageArgs) {
SystemQueryStorageArgs criteria = args.getArgs(); SystemQueryStorageArgs args = pageArgs.getArgs();
Page<SystemOssStorageTb> page = new Page<>(criteria.getPage(), criteria.getSize()); Page<SystemOssStorageTb> page = new Page<>(args.getPage(), args.getSize());
return ResponseEntity.ok(systemOssStorageService.queryOssStorage(criteria, page)); return ResponseEntity.ok(systemOssStorageService.searchOssStorage(args, page));
} }
@ApiOperation("导出数据") @ApiOperation("导出数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('storage:list')") @PreAuthorize("@el.check('storage:list')")
public void exportFile(HttpServletResponse response, SystemQueryStorageArgs criteria) throws IOException { public void exportFile(HttpServletResponse response, SystemQueryStorageArgs args) throws IOException {
systemOssStorageService.exportOssStorageExcel(systemOssStorageService.queryOssStorage(criteria), response); systemOssStorageService.exportOssStorageExcel(systemOssStorageService.queryOssStorage(args), response);
} }
@ApiOperation("上传文件") @ApiOperation("上传文件")
@@ -76,7 +75,7 @@ public class SystemOssStorageController {
@ApiOperation("多选删除") @ApiOperation("多选删除")
@PostMapping(value = "/removeFileByIds") @PostMapping(value = "/removeFileByIds")
public ResponseEntity<Void> removeFileByIds(@RequestBody Long[] ids) { public ResponseEntity<Void> removeFileByIds(@RequestBody Long[] ids) {
systemOssStorageService.removeFileByIds(ids); systemOssStorageService.deleteFileByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
} }
@@ -27,9 +27,9 @@ import cn.odboy.system.service.SystemQuartzJobService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.Set; import java.util.Set;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@@ -49,31 +49,30 @@ import org.springframework.web.bind.annotation.RestController;
@Api(tags = "系统:定时任务管理") @Api(tags = "系统:定时任务管理")
public class SystemQuartzJobController { public class SystemQuartzJobController {
@Autowired @Autowired private SystemQuartzJobService systemQuartzJobService;
private SystemQuartzJobService systemQuartzJobService;
@ApiOperation("查询定时任务") @ApiOperation("查询定时任务")
@PostMapping @PostMapping
@PreAuthorize("@el.check('quartzJob:list')") @PreAuthorize("@el.check('quartzJob:list')")
public ResponseEntity<KitPageResult<SystemQuartzJobTb>> queryQuartzJobByCrud( public ResponseEntity<KitPageResult<SystemQuartzJobTb>> queryQuartzJobByCrud(
@Validated @RequestBody KitPageArgs<SystemQueryQuartzJobArgs> args) { @Validated @RequestBody KitPageArgs<SystemQueryQuartzJobArgs> pageArgs) {
SystemQueryQuartzJobArgs criteria = args.getArgs(); SystemQueryQuartzJobArgs args = pageArgs.getArgs();
Page<SystemQuartzJobTb> page = new Page<>(criteria.getPage(), criteria.getSize()); Page<SystemQuartzJobTb> page = new Page<>(args.getPage(), args.getSize());
return ResponseEntity.ok(systemQuartzJobService.queryQuartzJobByArgs(criteria, page)); return ResponseEntity.ok(systemQuartzJobService.searchQuartzJobByArgs(args, page));
} }
@ApiOperation("导出任务数据") @ApiOperation("导出任务数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('quartzJob:list')") @PreAuthorize("@el.check('quartzJob:list')")
public void exportQuartzJob(HttpServletResponse response, SystemQueryQuartzJobArgs criteria) throws IOException { public void exportQuartzJob(HttpServletResponse response, SystemQueryQuartzJobArgs args) throws IOException {
systemQuartzJobService.exportQuartzJobExcel(systemQuartzJobService.queryQuartzJobByArgs(criteria), response); systemQuartzJobService.exportQuartzJobExcel(systemQuartzJobService.queryQuartzJobByArgs(args), response);
} }
@ApiOperation("导出日志数据") @ApiOperation("导出日志数据")
@GetMapping(value = "/logs/download") @GetMapping(value = "/logs/download")
@PreAuthorize("@el.check('quartzJob:list')") @PreAuthorize("@el.check('quartzJob:list')")
public void exportQuartzJobLog(HttpServletResponse response, SystemQueryQuartzJobArgs criteria) throws IOException { public void exportQuartzJobLog(HttpServletResponse response, SystemQueryQuartzJobArgs args) throws IOException {
systemQuartzJobService.exportQuartzLogExcel(systemQuartzJobService.queryQuartzLogByArgs(criteria), response); systemQuartzJobService.exportQuartzLogExcel(systemQuartzJobService.queryQuartzLogByArgs(args), response);
} }
@ApiOperation("查询任务执行日志") @ApiOperation("查询任务执行日志")
@@ -81,7 +80,7 @@ public class SystemQuartzJobController {
@PreAuthorize("@el.check('quartzJob:list')") @PreAuthorize("@el.check('quartzJob:list')")
public ResponseEntity<KitPageResult<SystemQuartzLogTb>> queryQuartzJobLog(SystemQueryQuartzJobArgs args) { public ResponseEntity<KitPageResult<SystemQuartzLogTb>> queryQuartzJobLog(SystemQueryQuartzJobArgs args) {
Page<SystemQuartzLogTb> page = new Page<>(args.getPage(), args.getSize()); Page<SystemQuartzLogTb> page = new Page<>(args.getPage(), args.getSize());
return ResponseEntity.ok(systemQuartzJobService.queryQuartzLogByArgs(args, page)); return ResponseEntity.ok(systemQuartzJobService.searchQuartzLogByArgs(args, page));
} }
@ApiOperation("新增定时任务") @ApiOperation("新增定时任务")
@@ -104,7 +103,7 @@ public class SystemQuartzJobController {
@Validated(SystemQuartzJobTb.Update.class) @RequestBody SystemUpdateQuartzJobArgs args) { @Validated(SystemQuartzJobTb.Update.class) @RequestBody SystemUpdateQuartzJobArgs args) {
// 验证Bean是不是合法的, 合法的定时任务 Bean 需要用 @Service 定义 // 验证Bean是不是合法的, 合法的定时任务 Bean 需要用 @Service 定义
checkBean(args.getBeanName()); checkBean(args.getBeanName());
systemQuartzJobService.modifyQuartzJobResumeCron(args); systemQuartzJobService.updateQuartzJobResumeCron(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -128,7 +127,7 @@ public class SystemQuartzJobController {
@PostMapping(value = "/removeJobByIds") @PostMapping(value = "/removeJobByIds")
@PreAuthorize("@el.check('quartzJob:del')") @PreAuthorize("@el.check('quartzJob:del')")
public ResponseEntity<Void> removeJobByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Void> removeJobByIds(@RequestBody Set<Long> ids) {
systemQuartzJobService.removeJobByIds(ids); systemQuartzJobService.deleteJobByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -28,12 +28,12 @@ import cn.odboy.system.service.SystemRoleService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@@ -49,8 +49,7 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api/role") @RequestMapping("/api/role")
public class SystemRoleController { public class SystemRoleController {
@Autowired @Autowired private SystemRoleService systemRoleService;
private SystemRoleService systemRoleService;
@ApiOperation("获取单个role") @ApiOperation("获取单个role")
@PostMapping(value = "/queryRoleById") @PostMapping(value = "/queryRoleById")
@@ -62,25 +61,25 @@ public class SystemRoleController {
@ApiOperation("导出角色数据") @ApiOperation("导出角色数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('role:list')") @PreAuthorize("@el.check('role:list')")
public void exportRole(HttpServletResponse response, SystemQueryRoleArgs criteria) throws IOException { public void exportRole(HttpServletResponse response, SystemQueryRoleArgs args) throws IOException {
systemRoleService.exportRoleExcel(systemRoleService.queryRoleByArgs(criteria), response); systemRoleService.exportRoleExcel(systemRoleService.queryRoleByArgs(args), response);
} }
@ApiOperation("返回全部的角色") @ApiOperation("返回全部的角色")
@PostMapping(value = "/queryRoleList") @PostMapping(value = "/queryRoleList")
@PreAuthorize("@el.check('roles:list','user:add','user:edit')") @PreAuthorize("@el.check('roles:list','user:add','user:edit')")
public ResponseEntity<List<SystemRoleTb>> queryRoleList() { public ResponseEntity<List<SystemRoleTb>> queryRoleList() {
return ResponseEntity.ok(systemRoleService.queryAllRole()); return ResponseEntity.ok(systemRoleService.listAllRole());
} }
@ApiOperation("查询角色") @ApiOperation("查询角色")
@PostMapping @PostMapping
@PreAuthorize("@el.check('roles:list')") @PreAuthorize("@el.check('roles:list')")
public ResponseEntity<KitPageResult<SystemRoleVo>> queryRoleByArgs( public ResponseEntity<KitPageResult<SystemRoleVo>> queryRoleByArgs(
@Validated @RequestBody KitPageArgs<SystemQueryRoleArgs> args) { @Validated @RequestBody KitPageArgs<SystemQueryRoleArgs> pageArgs) {
SystemQueryRoleArgs criteria = args.getArgs(); SystemQueryRoleArgs args = pageArgs.getArgs();
Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize()); Page<Object> page = new Page<>(args.getPage(), args.getSize());
return ResponseEntity.ok(systemRoleService.queryRoleByArgs(criteria, page)); return ResponseEntity.ok(systemRoleService.searchRoleByArgs(args, page));
} }
@ApiOperation("获取用户级别") @ApiOperation("获取用户级别")
@@ -103,7 +102,7 @@ public class SystemRoleController {
@PreAuthorize("@el.check('roles:edit')") @PreAuthorize("@el.check('roles:edit')")
public ResponseEntity<Void> modifyRoleById(@Validated(SystemRoleTb.Update.class) @RequestBody SystemRoleVo args) { public ResponseEntity<Void> modifyRoleById(@Validated(SystemRoleTb.Update.class) @RequestBody SystemRoleVo args) {
checkRoleLevels(args.getLevel()); checkRoleLevels(args.getLevel());
systemRoleService.modifyRoleById(args); systemRoleService.updateRoleById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -113,7 +112,7 @@ public class SystemRoleController {
public ResponseEntity<Void> modifyBindMenuById(@RequestBody SystemRoleVo args) { public ResponseEntity<Void> modifyBindMenuById(@RequestBody SystemRoleVo args) {
SystemRoleTb role = systemRoleService.getRoleById(args.getId()); SystemRoleTb role = systemRoleService.getRoleById(args.getId());
checkRoleLevels(role.getLevel()); checkRoleLevels(role.getLevel());
systemRoleService.modifyBindMenuById(args); systemRoleService.updateBindMenuById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -127,7 +126,7 @@ public class SystemRoleController {
} }
// 验证是否被用户关联 // 验证是否被用户关联
systemRoleService.verifyBindRelationByIds(ids); systemRoleService.verifyBindRelationByIds(ids);
systemRoleService.removeRoleByIds(ids); systemRoleService.deleteRoleByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -39,12 +39,12 @@ import cn.odboy.util.KitRsaEncryptUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@@ -66,56 +66,49 @@ import org.springframework.web.multipart.MultipartFile;
@RequestMapping("/api/user") @RequestMapping("/api/user")
public class SystemUserController { public class SystemUserController {
@Autowired @Autowired private PasswordEncoder passwordEncoder;
private PasswordEncoder passwordEncoder; @Autowired private SystemUserService systemUserService;
@Autowired @Autowired private SystemDataService systemDataService;
private SystemUserService systemUserService; @Autowired private SystemDeptService systemDeptService;
@Autowired @Autowired private SystemRoleService systemRoleService;
private SystemDataService systemDataService; @Autowired private SystemEmailService systemEmailService;
@Autowired @Autowired private AppProperties properties;
private SystemDeptService systemDeptService;
@Autowired
private SystemRoleService systemRoleService;
@Autowired
private SystemEmailService systemEmailService;
@Autowired
private AppProperties properties;
@ApiOperation("导出用户数据") @ApiOperation("导出用户数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('user:list')") @PreAuthorize("@el.check('user:list')")
public void exportUserExcel(HttpServletResponse response, SystemQueryUserArgs criteria) throws IOException { public void exportUserExcel(HttpServletResponse response, SystemQueryUserArgs args) throws IOException {
systemUserService.exportUserExcel(systemUserService.queryUserByArgs(criteria), response); systemUserService.exportUserExcel(systemUserService.queryUserByArgs(args), response);
} }
@ApiOperation("查询用户") @ApiOperation("查询用户")
@PostMapping @PostMapping
@PreAuthorize("@el.check('user:list')") @PreAuthorize("@el.check('user:list')")
public ResponseEntity<KitPageResult<SystemUserVo>> queryUserByArgs( public ResponseEntity<KitPageResult<SystemUserVo>> queryUserByArgs(
@Validated @RequestBody KitPageArgs<SystemQueryUserArgs> args) { @Validated @RequestBody KitPageArgs<SystemQueryUserArgs> pageArgs) {
Page<SystemUserTb> page = new Page<>(args.getPage(), args.getSize()); Page<SystemUserTb> page = new Page<>(pageArgs.getPage(), pageArgs.getSize());
SystemQueryUserArgs criteria = args.getArgs(); SystemQueryUserArgs args = pageArgs.getArgs();
if (!ObjectUtils.isEmpty(criteria.getDeptId())) { if (!ObjectUtils.isEmpty(args.getDeptId())) {
criteria.getDeptIds().add(criteria.getDeptId()); args.getDeptIds().add(args.getDeptId());
// 先查找是否存在子节点 // 先查找是否存在子节点
List<SystemDeptTb> data = systemDeptService.queryDeptByPid(criteria.getDeptId()); List<SystemDeptTb> data = systemDeptService.listDeptByPid(args.getDeptId());
// 然后把子节点的ID都加入到集合中 // 然后把子节点的ID都加入到集合中
criteria.getDeptIds().addAll(systemDeptService.queryChildDeptIdListByDeptIds(data)); args.getDeptIds().addAll(systemDeptService.queryChildDeptIdByDeptIds(data));
} }
// 数据权限 // 数据权限
List<Long> dataScopes = systemDataService.findDeptIdListByArgs( List<Long> dataScopes = systemDataService.queryDeptIdByArgs(
systemUserService.getUserByUsername(KitSecurityHelper.getCurrentUsername())); systemUserService.getUserByUsername(KitSecurityHelper.getCurrentUsername()));
// criteria.getDeptIds() 不为空并且数据权限不为空则取交集 // args.getDeptIds() 不为空并且数据权限不为空则取交集
if (!CollectionUtils.isEmpty(criteria.getDeptIds()) && !CollectionUtils.isEmpty(dataScopes)) { if (!CollectionUtils.isEmpty(args.getDeptIds()) && !CollectionUtils.isEmpty(dataScopes)) {
// 取交集 // 取交集
criteria.getDeptIds().retainAll(dataScopes); args.getDeptIds().retainAll(dataScopes);
if (!CollectionUtil.isEmpty(criteria.getDeptIds())) { if (!CollectionUtil.isEmpty(args.getDeptIds())) {
return ResponseEntity.ok(systemUserService.queryUserByArgs(criteria, page)); return ResponseEntity.ok(systemUserService.searchUserByArgs(args, page));
} }
} else { } else {
// 否则取并集 // 否则取并集
criteria.getDeptIds().addAll(dataScopes); args.getDeptIds().addAll(dataScopes);
return ResponseEntity.ok(systemUserService.queryUserByArgs(criteria, page)); return ResponseEntity.ok(systemUserService.searchUserByArgs(args, page));
} }
return ResponseEntity.ok(KitPageUtil.emptyData()); return ResponseEntity.ok(KitPageUtil.emptyData());
} }
@@ -136,7 +129,7 @@ public class SystemUserController {
@PreAuthorize("@el.check('user:edit')") @PreAuthorize("@el.check('user:edit')")
public ResponseEntity<Object> modifyUserById(@Validated(SystemUserTb.Update.class) @RequestBody SystemUserVo args) { public ResponseEntity<Object> modifyUserById(@Validated(SystemUserTb.Update.class) @RequestBody SystemUserVo args) {
checkLevel(args); checkLevel(args);
systemUserService.modifyUserById(args); systemUserService.updateUserById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -147,7 +140,7 @@ public class SystemUserController {
if (!args.getId().equals(KitSecurityHelper.getCurrentUserId())) { if (!args.getId().equals(KitSecurityHelper.getCurrentUserId())) {
throw new BadRequestException("不能修改他人资料"); throw new BadRequestException("不能修改他人资料");
} }
systemUserService.modifyUserCenterInfoById(args); systemUserService.updateUserCenterInfoById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -186,7 +179,7 @@ public class SystemUserController {
if (passwordEncoder.matches(newPass, user.getPassword())) { if (passwordEncoder.matches(newPass, user.getPassword())) {
throw new BadRequestException("新密码不能与旧密码相同"); throw new BadRequestException("新密码不能与旧密码相同");
} }
systemUserService.modifyUserPasswordByUsername(user.getUsername(), passwordEncoder.encode(newPass)); systemUserService.updateUserPasswordByUsername(user.getUsername(), passwordEncoder.encode(newPass));
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -201,7 +194,7 @@ public class SystemUserController {
@ApiOperation("修改头像") @ApiOperation("修改头像")
@PostMapping(value = "/modifyUserAvatar") @PostMapping(value = "/modifyUserAvatar")
public ResponseEntity<Object> modifyUserAvatar(@RequestParam MultipartFile avatar) { public ResponseEntity<Object> modifyUserAvatar(@RequestParam MultipartFile avatar) {
return ResponseEntity.ok(systemUserService.modifyUserAvatar(avatar)); return ResponseEntity.ok(systemUserService.updateUserAvatar(avatar));
} }
@ApiOperation("修改邮箱") @ApiOperation("修改邮箱")
@@ -215,7 +208,7 @@ public class SystemUserController {
throw new BadRequestException("密码错误"); throw new BadRequestException("密码错误");
} }
systemEmailService.checkEmailCaptcha(SystemCaptchaBizEnum.EMAIL_RESET_EMAIL_CODE, args.getEmail(), code); systemEmailService.checkEmailCaptcha(SystemCaptchaBizEnum.EMAIL_RESET_EMAIL_CODE, args.getEmail(), code);
systemUserService.modifyUserEmailByUsername(user.getUsername(), args.getEmail()); systemUserService.updateUserEmailByUsername(user.getUsername(), args.getEmail());
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -237,7 +230,8 @@ public class SystemUserController {
@ApiOperation("查询用户基础数据") @ApiOperation("查询用户基础数据")
@PostMapping(value = "/queryUserMetadataOptions") @PostMapping(value = "/queryUserMetadataOptions")
@PreAuthorize("@el.check('user:list')") @PreAuthorize("@el.check('user:list')")
public ResponseEntity<List<KitSelectOptionVo>> queryUserMetadataOptions(@Validated @RequestBody KitPageArgs<SystemQueryUserArgs> args) { public ResponseEntity<List<KitSelectOptionVo>> queryUserMetadataOptions(
@Validated @RequestBody KitPageArgs<SystemQueryUserArgs> args) {
List<KitSelectOptionVo> collect = systemUserService.queryUserMetadataOptions(args); List<KitSelectOptionVo> collect = systemUserService.queryUserMetadataOptions(args);
return ResponseEntity.ok(collect); return ResponseEntity.ok(collect);
} }
@@ -22,11 +22,11 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -35,29 +35,16 @@ import lombok.Setter;
@TableName("system_dept") @TableName("system_dept")
public class SystemDeptTb extends KitBaseUserTimeTb { public class SystemDeptTb extends KitBaseUserTimeTb {
@NotNull(groups = Update.class) @NotNull(groups = Update.class) @TableId(value = "dept_id", type = IdType.AUTO)
@TableId(value = "dept_id", type = IdType.AUTO) @ApiModelProperty(value = "ID", hidden = true) private Long id;
@ApiModelProperty(value = "ID", hidden = true) @TableField(exist = false) @JSONField(serialize = false) @ApiModelProperty(value = "角色") private Set<SystemRoleTb>
private Long id; roles;
@TableField(exist = false) @TableField(exist = false) @ApiModelProperty(value = "子部门") private List<SystemDeptTb> children;
@JSONField(serialize = false) @ApiModelProperty(value = "排序") private Integer deptSort;
@ApiModelProperty(value = "角色") @NotBlank @ApiModelProperty(value = "部门名称") private String name;
private Set<SystemRoleTb> roles; @NotNull @ApiModelProperty(value = "是否启用") private Boolean enabled;
@TableField(exist = false) @ApiModelProperty(value = "上级部门") private Long pid;
@ApiModelProperty(value = "子部门") @ApiModelProperty(value = "子节点数目", hidden = true) private Integer subCount = 0;
private List<SystemDeptTb> children;
@ApiModelProperty(value = "排序")
private Integer deptSort;
@NotBlank
@ApiModelProperty(value = "部门名称")
private String name;
@NotNull
@ApiModelProperty(value = "是否启用")
private Boolean enabled;
@ApiModelProperty(value = "上级部门")
private Long pid;
@ApiModelProperty(value = "子节点数目", hidden = true)
private Integer subCount = 0;
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
@@ -30,17 +30,10 @@ import lombok.Setter;
@TableName("system_dict_detail") @TableName("system_dict_detail")
public class SystemDictDetailTb extends KitBaseUserTimeTb { public class SystemDictDetailTb extends KitBaseUserTimeTb {
@NotNull(groups = Update.class) @NotNull(groups = Update.class) @ApiModelProperty(value = "ID", hidden = true)
@ApiModelProperty(value = "ID", hidden = true) @TableId(value = "id", type = IdType.AUTO) private Long id;
@TableId(value = "id", type = IdType.AUTO) @TableField(value = "dict_id") @ApiModelProperty(hidden = true) private Long dictId;
private Long id; @ApiModelProperty(value = "字典标签") private String label;
@TableField(value = "dict_id") @ApiModelProperty(value = "字典值") private String value;
@ApiModelProperty(hidden = true) @ApiModelProperty(value = "排序") private Integer dictSort = 999;
private Long dictId;
@ApiModelProperty(value = "字典标签")
private String label;
@ApiModelProperty(value = "字典值")
private String value;
@ApiModelProperty(value = "排序")
private Integer dictSort = 999;
} }
@@ -32,14 +32,8 @@ import lombok.Setter;
@TableName("system_dict") @TableName("system_dict")
public class SystemDictTb extends KitBaseUserTimeTb { public class SystemDictTb extends KitBaseUserTimeTb {
@NotNull(groups = Update.class) @NotNull(groups = Update.class) @ApiModelProperty(value = "ID", hidden = true)
@ApiModelProperty(value = "ID", hidden = true) @TableId(value = "id", type = IdType.AUTO) private Long id;
@TableId(value = "id", type = IdType.AUTO) @NotBlank @ApiModelProperty(value = "名称") private String name;
private Long id; @ApiModelProperty(value = "描述") @TableField(updateStrategy = FieldStrategy.ALWAYS) private String description;
@NotBlank
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "描述")
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private String description;
} }
@@ -31,21 +31,10 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class SystemEmailConfigTb extends KitObject { public class SystemEmailConfigTb extends KitObject {
@TableId("config_id") @TableId("config_id") private Long id;
private Long id; @NotBlank @ApiModelProperty(value = "邮件服务器SMTP地址") private String host;
@NotBlank @NotBlank @ApiModelProperty(value = "邮件服务器 SMTP 端口") private String port;
@ApiModelProperty(value = "邮件服务器SMTP地址") @NotBlank @ApiModelProperty(value = "发件者用户名") private String user;
private String host; @NotBlank @ApiModelProperty(value = "密码") private String password;
@NotBlank @NotBlank @ApiModelProperty(value = "收件人") private String fromUser;
@ApiModelProperty(value = "邮件服务器 SMTP 端口")
private String port;
@NotBlank
@ApiModelProperty(value = "发件者用户名")
private String user;
@NotBlank
@ApiModelProperty(value = "密码")
private String password;
@NotBlank
@ApiModelProperty(value = "收件人")
private String fromUser;
} }
@@ -20,9 +20,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.util.Objects;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.util.Objects;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -31,19 +31,11 @@ import lombok.Setter;
@TableName("system_job") @TableName("system_job")
public class SystemJobTb extends KitBaseUserTimeTb { public class SystemJobTb extends KitBaseUserTimeTb {
@NotNull(groups = Update.class) @NotNull(groups = Update.class) @TableId(value = "id", type = IdType.AUTO)
@TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "ID", hidden = true) private Long id;
@ApiModelProperty(value = "ID", hidden = true) @NotBlank @ApiModelProperty(value = "岗位名称") private String name;
private Long id; @NotNull @ApiModelProperty(value = "岗位排序") private Long jobSort;
@NotBlank @NotNull @ApiModelProperty(value = "是否启用") private Boolean enabled;
@ApiModelProperty(value = "岗位名称")
private String name;
@NotNull
@ApiModelProperty(value = "岗位排序")
private Long jobSort;
@NotNull
@ApiModelProperty(value = "是否启用")
private Boolean enabled;
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
@@ -30,23 +30,14 @@ import lombok.Setter;
@TableName("system_local_storage") @TableName("system_local_storage")
public class SystemLocalStorageTb extends KitBaseUserTimeTb { public class SystemLocalStorageTb extends KitBaseUserTimeTb {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "ID", hidden = true) private Long id;
@ApiModelProperty(value = "ID", hidden = true) @ApiModelProperty(value = "真实文件名") private String realName;
private Long id; @ApiModelProperty(value = "文件名") private String name;
@ApiModelProperty(value = "真实文件名") @ApiModelProperty(value = "后缀") private String suffix;
private String realName; @ApiModelProperty(value = "路径") private String path;
@ApiModelProperty(value = "文件名") @ApiModelProperty(value = "类型") private String type;
private String name; @ApiModelProperty(value = "大小") private String size;
@ApiModelProperty(value = "后缀") @ApiModelProperty(value = "日期分组") private String dateGroup;
private String suffix;
@ApiModelProperty(value = "路径")
private String path;
@ApiModelProperty(value = "类型")
private String type;
@ApiModelProperty(value = "大小")
private String size;
@ApiModelProperty(value = "日期分组")
private String dateGroup;
public void copy(SystemLocalStorageTb source) { public void copy(SystemLocalStorageTb source) {
BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
@@ -22,10 +22,10 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotNull;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import jakarta.validation.constraints.NotNull;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -34,43 +34,24 @@ import lombok.Setter;
@TableName("system_menu") @TableName("system_menu")
public class SystemMenuTb extends KitBaseUserTimeTb { public class SystemMenuTb extends KitBaseUserTimeTb {
@NotNull(groups = {Update.class}) @NotNull(groups = {Update.class}) @TableId(value = "menu_id", type = IdType.AUTO)
@TableId(value = "menu_id", type = IdType.AUTO) @ApiModelProperty(value = "ID", hidden = true) private Long id;
@ApiModelProperty(value = "ID", hidden = true) @TableField(exist = false) @JSONField(serialize = false) @ApiModelProperty(value = "菜单角色")
private Long id;
@TableField(exist = false)
@JSONField(serialize = false)
@ApiModelProperty(value = "菜单角色")
private Set<SystemRoleTb> roles; private Set<SystemRoleTb> roles;
@TableField(exist = false) @TableField(exist = false) private List<SystemMenuTb> children;
private List<SystemMenuTb> children; @ApiModelProperty(value = "菜单标题") private String title;
@ApiModelProperty(value = "菜单标题") @TableField(value = "name") @ApiModelProperty(value = "菜单组件名称") private String componentName;
private String title; @ApiModelProperty(value = "排序") private Integer menuSort = 999;
@TableField(value = "name") @ApiModelProperty(value = "组件路径") private String component;
@ApiModelProperty(value = "菜单组件名称") @ApiModelProperty(value = "路由地址") private String path;
private String componentName; @ApiModelProperty(value = "菜单类型,目录、菜单、按钮") private Integer type;
@ApiModelProperty(value = "排序") @ApiModelProperty(value = "权限标识") private String permission;
private Integer menuSort = 999; @ApiModelProperty(value = "菜单图标") private String icon;
@ApiModelProperty(value = "组件路径") @ApiModelProperty(value = "缓存") private Boolean cache;
private String component; @ApiModelProperty(value = "是否隐藏") private Boolean hidden;
@ApiModelProperty(value = "路由地址") @ApiModelProperty(value = "上级菜单") private Long pid;
private String path; @ApiModelProperty(value = "子节点数目", hidden = true) private Integer subCount = 0;
@ApiModelProperty(value = "菜单类型,目录、菜单、按钮") @ApiModelProperty(value = "外链菜单") private Boolean iFrame;
private Integer type;
@ApiModelProperty(value = "权限标识")
private String permission;
@ApiModelProperty(value = "菜单图标")
private String icon;
@ApiModelProperty(value = "缓存")
private Boolean cache;
@ApiModelProperty(value = "是否隐藏")
private Boolean hidden;
@ApiModelProperty(value = "上级菜单")
private Long pid;
@ApiModelProperty(value = "子节点数目", hidden = true)
private Integer subCount = 0;
@ApiModelProperty(value = "外链菜单")
private Boolean iFrame;
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
@@ -46,57 +46,45 @@ public class SystemOperationLogTb extends KitObject {
/** /**
* id * id
*/ */
@ApiModelProperty("id") @ApiModelProperty("id") @TableId(value = "id", type = IdType.AUTO) private Long id;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/** /**
* 业务名称 * 业务名称
*/ */
@TableField("biz_name") @TableField("biz_name") private String bizName;
private String bizName;
/** /**
* 业务方法 * 业务方法
*/ */
@TableField("method") @TableField("method") private String method;
private String method;
/** /**
* 业务参数 * 业务参数
*/ */
@TableField("params") @TableField("params") private String params;
private String params;
/** /**
* 访问来源IP * 访问来源IP
*/ */
@TableField("request_ip") @TableField("request_ip") private String requestIp;
private String requestIp;
/** /**
* 执行时间 * 执行时间
*/ */
@TableField("execute_time") @TableField("execute_time") private Long executeTime;
private Long executeTime;
/** /**
* 用户名 * 用户名
*/ */
@TableField("username") @TableField("username") private String username;
private String username;
/** /**
* 访问来源地址 * 访问来源地址
*/ */
@TableField("address") @TableField("address") private String address;
private String address;
/** /**
* 浏览器信息 * 浏览器信息
*/ */
@TableField("browser_info") @TableField("browser_info") private String browserInfo;
private String browserInfo;
/** /**
* 异常详情 * 异常详情
*/ */
@TableField("exception_detail") @TableField("exception_detail") private String exceptionDetail;
private String exceptionDetail;
/** /**
* 创建时间 * 创建时间
*/ */
@TableField(value = "create_time", fill = FieldFill.INSERT) @TableField(value = "create_time", fill = FieldFill.INSERT) private Date createTime;
private Date createTime;
} }
@@ -39,43 +39,17 @@ import lombok.Setter;
@ApiModel(value = "SystemOssStorage对象", description = "OSS存储") @ApiModel(value = "SystemOssStorage对象", description = "OSS存储")
public class SystemOssStorageTb extends KitBaseUserTimeTb { public class SystemOssStorageTb extends KitBaseUserTimeTb {
@ApiModelProperty("ID") @ApiModelProperty("ID") @TableId(value = "id", type = IdType.AUTO) private Long id;
@TableId(value = "id", type = IdType.AUTO) @TableField("service_type") @ApiModelProperty("类型,比如minio") private String serviceType;
private Long id; @TableField("endpoint") @ApiModelProperty("服务地址") private String endpoint;
@TableField("service_type") @TableField("bucket_name") @ApiModelProperty("存储桶名称") private String bucketName;
@ApiModelProperty("类型,比如minio") @TableField("file_name") @ApiModelProperty("完整文件名称") private String fileName;
private String serviceType; @TableField("file_size") @ApiModelProperty("文件大小, 单位:字节") private Long fileSize;
@TableField("endpoint") @TableField("file_mime") @ApiModelProperty("文件类型") private String fileMime;
@ApiModelProperty("服务地址") @ApiModelProperty("短文件名") @TableField("file_prefix") private String filePrefix;
private String endpoint; @ApiModelProperty("文件后缀") @TableField("file_suffix") private String fileSuffix;
@TableField("bucket_name") @TableField("file_md5") @ApiModelProperty("文件md5") private String fileMd5;
@ApiModelProperty("存储桶名称") @TableField("file_url") @ApiModelProperty("文件链接") private String fileUrl;
private String bucketName; @TableField("file_code") @ApiModelProperty("文件编码") private String fileCode;
@TableField("file_name") @TableField("object_name") @ApiModelProperty("对象路径") private String objectName;
@ApiModelProperty("完整文件名称")
private String fileName;
@TableField("file_size")
@ApiModelProperty("文件大小, 单位:字节")
private Long fileSize;
@TableField("file_mime")
@ApiModelProperty("文件类型")
private String fileMime;
@ApiModelProperty("短文件名")
@TableField("file_prefix")
private String filePrefix;
@ApiModelProperty("文件后缀")
@TableField("file_suffix")
private String fileSuffix;
@TableField("file_md5")
@ApiModelProperty("文件md5")
private String fileMd5;
@TableField("file_url")
@ApiModelProperty("文件链接")
private String fileUrl;
@TableField("file_code")
@ApiModelProperty("文件编码")
private String fileCode;
@TableField("object_name")
@ApiModelProperty("对象路径")
private String objectName;
} }
@@ -33,38 +33,18 @@ import lombok.Setter;
public class SystemQuartzJobTb extends KitBaseUserTimeTb { public class SystemQuartzJobTb extends KitBaseUserTimeTb {
public static final String JOB_KEY = "JOB_KEY"; public static final String JOB_KEY = "JOB_KEY";
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO) @NotNull(groups = {Update.class}) private Long id;
@NotNull(groups = {Update.class}) @TableField(exist = false) @ApiModelProperty(value = "用于子任务唯一标识", hidden = true) private String uuid;
private Long id; @ApiModelProperty(value = "定时器名称") private String jobName;
@TableField(exist = false) @NotBlank @ApiModelProperty(value = "Bean名称") private String beanName;
@ApiModelProperty(value = "用于子任务唯一标识", hidden = true) @NotBlank @ApiModelProperty(value = "方法名称") private String methodName;
private String uuid; @ApiModelProperty(value = "参数") private String params;
@ApiModelProperty(value = "定时器名称") @NotBlank @ApiModelProperty(value = "cron表达式") private String cronExpression;
private String jobName; @ApiModelProperty(value = "状态:暂停或启动") private Boolean isPause = false;
@NotBlank @ApiModelProperty(value = "负责人") private String personInCharge;
@ApiModelProperty(value = "Bean名称") @ApiModelProperty(value = "报警邮箱") private String email;
private String beanName; @ApiModelProperty(value = "子任务") private String subTask;
@NotBlank @ApiModelProperty(value = "失败后暂停") private Boolean pauseAfterFailure;
@ApiModelProperty(value = "方法名称") @NotBlank @ApiModelProperty(value = "备注") @TableField(updateStrategy = FieldStrategy.ALWAYS) private String
private String methodName;
@ApiModelProperty(value = "参数")
private String params;
@NotBlank
@ApiModelProperty(value = "cron表达式")
private String cronExpression;
@ApiModelProperty(value = "状态:暂停或启动")
private Boolean isPause = false;
@ApiModelProperty(value = "负责人")
private String personInCharge;
@ApiModelProperty(value = "报警邮箱")
private String email;
@ApiModelProperty(value = "子任务")
private String subTask;
@ApiModelProperty(value = "失败后暂停")
private Boolean pauseAfterFailure;
@NotBlank
@ApiModelProperty(value = "备注")
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private String
description; description;
} }
@@ -31,26 +31,14 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class SystemQuartzLogTb extends KitObject { public class SystemQuartzLogTb extends KitObject {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "ID", hidden = true) private Long id;
@ApiModelProperty(value = "ID", hidden = true) @ApiModelProperty(value = "任务名称", hidden = true) private String jobName;
private Long id; @ApiModelProperty(value = "bean名称", hidden = true) private String beanName;
@ApiModelProperty(value = "任务名称", hidden = true) @ApiModelProperty(value = "方法名称", hidden = true) private String methodName;
private String jobName; @ApiModelProperty(value = "参数", hidden = true) private String params;
@ApiModelProperty(value = "bean名称", hidden = true) @ApiModelProperty(value = "cron表达式", hidden = true) private String cronExpression;
private String beanName; @ApiModelProperty(value = "状态", hidden = true) private Boolean isSuccess;
@ApiModelProperty(value = "方法名称", hidden = true) @ApiModelProperty(value = "异常详情", hidden = true) private String exceptionDetail;
private String methodName; @ApiModelProperty(value = "执行耗时", hidden = true) private Long time;
@ApiModelProperty(value = "参数", hidden = true) @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "创建时间", hidden = true) private Date createTime;
private String params;
@ApiModelProperty(value = "cron表达式", hidden = true)
private String cronExpression;
@ApiModelProperty(value = "状态", hidden = true)
private Boolean isSuccess;
@ApiModelProperty(value = "异常详情", hidden = true)
private String exceptionDetail;
@ApiModelProperty(value = "执行耗时", hidden = true)
private Long time;
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间", hidden = true)
private Date createTime;
} }
@@ -26,8 +26,6 @@ import lombok.Setter;
@TableName("system_roles_depts") @TableName("system_roles_depts")
public class SystemRoleDeptTb extends KitObject { public class SystemRoleDeptTb extends KitObject {
@TableField(value = "role_id") @TableField(value = "role_id") private Long roleId;
private Long roleId; @TableField(value = "dept_id") private Long deptId;
@TableField(value = "dept_id")
private Long deptId;
} }
@@ -13,8 +13,6 @@ import lombok.Setter;
@TableName("system_roles_menus") @TableName("system_roles_menus")
public class SystemRoleMenuTb { public class SystemRoleMenuTb {
@TableField(value = "role_id") @TableField(value = "role_id") private Long roleId;
private Long roleId; @TableField(value = "menu_id") private Long menuId;
@TableField(value = "menu_id")
private Long menuId;
} }
@@ -23,9 +23,9 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.util.Objects;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.util.Objects;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -37,21 +37,13 @@ import lombok.Setter;
@TableName("system_role") @TableName("system_role")
public class SystemRoleTb extends KitBaseUserTimeTb { public class SystemRoleTb extends KitBaseUserTimeTb {
@NotNull(groups = {Update.class}) @NotNull(groups = {Update.class}) @TableId(value = "role_id", type = IdType.AUTO)
@TableId(value = "role_id", type = IdType.AUTO) @ApiModelProperty(value = "ID", hidden = true) private Long id;
@ApiModelProperty(value = "ID", hidden = true) @NotBlank @ApiModelProperty(value = "名称", hidden = true) private String name;
private Long id; @ApiModelProperty(value = "数据权限,全部 、 本级 、 自定义") private String dataScope =
@NotBlank
@ApiModelProperty(value = "名称", hidden = true)
private String name;
@ApiModelProperty(value = "数据权限,全部 、 本级 、 自定义")
private String dataScope =
SystemDataScopeEnum.THIS_LEVEL.getValue(); SystemDataScopeEnum.THIS_LEVEL.getValue();
@ApiModelProperty(value = "级别,数值越小,级别越大") @ApiModelProperty(value = "级别,数值越小,级别越大") private Integer level = 3;
private Integer level = 3; @ApiModelProperty(value = "描述") @TableField(updateStrategy = FieldStrategy.ALWAYS) private String description;
@ApiModelProperty(value = "描述")
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private String description;
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
@@ -13,8 +13,6 @@ import lombok.Setter;
@TableName("system_users_jobs") @TableName("system_users_jobs")
public class SystemUserJobTb { public class SystemUserJobTb {
@TableField(value = "user_id") @TableField(value = "user_id") private Long userId;
private Long userId; @TableField(value = "job_id") private Long jobId;
@TableField(value = "job_id")
private Long jobId;
} }
@@ -26,8 +26,6 @@ import lombok.Setter;
@TableName("system_users_roles") @TableName("system_users_roles")
public class SystemUserRoleTb extends KitObject { public class SystemUserRoleTb extends KitObject {
@TableField(value = "user_id") @TableField(value = "user_id") private Long userId;
private Long userId; @TableField(value = "role_id") private Long roleId;
@TableField(value = "role_id")
private Long roleId;
} }
@@ -21,11 +21,11 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.Objects;
import jakarta.validation.constraints.Email; import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.util.Date;
import java.util.Objects;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -34,44 +34,21 @@ import lombok.Setter;
@TableName("system_user") @TableName("system_user")
public class SystemUserTb extends KitBaseUserTimeTb { public class SystemUserTb extends KitBaseUserTimeTb {
@NotNull(groups = Update.class) @NotNull(groups = Update.class) @TableId(value = "user_id", type = IdType.AUTO)
@TableId(value = "user_id", type = IdType.AUTO) @ApiModelProperty(value = "ID", hidden = true) private Long id;
@ApiModelProperty(value = "ID", hidden = true) @TableField(value = "dept_id") @ApiModelProperty(hidden = true) private Long deptId;
private Long id; @ApiModelProperty(value = "用户部门") @TableField(exist = false) private SystemDeptTb dept;
@TableField(value = "dept_id") @NotBlank @ApiModelProperty(value = "用户名称") private String username;
@ApiModelProperty(hidden = true) @NotBlank @ApiModelProperty(value = "用户昵称") private String nickName;
private Long deptId; @Email @NotBlank @ApiModelProperty(value = "邮箱") private String email;
@ApiModelProperty(value = "用户部门") @NotBlank @ApiModelProperty(value = "电话号码") private String phone;
@TableField(exist = false) @ApiModelProperty(value = "用户性别") private String gender;
private SystemDeptTb dept; @ApiModelProperty(value = "头像真实名称", hidden = true) private String avatarName;
@NotBlank @ApiModelProperty(value = "头像存储的路径", hidden = true) private String avatarPath;
@ApiModelProperty(value = "用户名称") @ApiModelProperty(value = "密码") private String password;
private String username; @NotNull @ApiModelProperty(value = "是否启用") private Boolean enabled;
@NotBlank @ApiModelProperty(value = "是否为admin账号", hidden = true) private Boolean isAdmin = false;
@ApiModelProperty(value = "用户昵称") @ApiModelProperty(value = "最后修改密码的时间", hidden = true) private Date pwdResetTime;
private String nickName;
@Email
@NotBlank
@ApiModelProperty(value = "邮箱")
private String email;
@NotBlank
@ApiModelProperty(value = "电话号码")
private String phone;
@ApiModelProperty(value = "用户性别")
private String gender;
@ApiModelProperty(value = "头像真实名称", hidden = true)
private String avatarName;
@ApiModelProperty(value = "头像存储的路径", hidden = true)
private String avatarPath;
@ApiModelProperty(value = "密码")
private String password;
@NotNull
@ApiModelProperty(value = "是否启用")
private Boolean enabled;
@ApiModelProperty(value = "是否为admin账号", hidden = true)
private Boolean isAdmin = false;
@ApiModelProperty(value = "最后修改密码的时间", hidden = true)
private Date pwdResetTime;
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
@@ -24,10 +24,7 @@ import lombok.Setter;
@Setter @Setter
public class SystemCheckEmailCaptchaArgs extends KitObject { public class SystemCheckEmailCaptchaArgs extends KitObject {
@NotBlank(message = "邮箱不能为空") @NotBlank(message = "邮箱不能为空") private String email;
private String email; @NotBlank(message = "验证码不能为空") private String code;
@NotBlank(message = "验证码不能为空") @NotBlank(message = "验证码业务标识不能为空") private String bizCode;
private String code;
@NotBlank(message = "验证码业务标识不能为空")
private String bizCode;
} }
@@ -25,10 +25,8 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class SystemCreateDeptArgs extends KitObject { public class SystemCreateDeptArgs extends KitObject {
@NotBlank(message = "部门名称必填") @NotBlank(message = "部门名称必填") private String name;
private String name; @NotNull(message = "部门排序必填") private Integer deptSort;
@NotNull(message = "部门排序必填")
private Integer deptSort;
private Boolean enabled; private Boolean enabled;
private String isTop; private String isTop;
private Long pid; private Long pid;
@@ -24,7 +24,6 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class SystemCreateDictArgs extends KitObject { public class SystemCreateDictArgs extends KitObject {
@NotBlank(message = "字典名称必填") @NotBlank(message = "字典名称必填") private String name;
private String name;
private String description; private String description;
} }
@@ -26,12 +26,8 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class SystemCreateDictDetailArgs extends KitObject { public class SystemCreateDictDetailArgs extends KitObject {
@NotNull(message = "参数dict必填") @NotNull(message = "参数dict必填") private SystemDictTb dict;
private SystemDictTb dict; @NotBlank(message = "字典标签必填") private String label;
@NotBlank(message = "字典标签必填") @NotBlank(message = "字典值必填") private String value;
private String label; @NotNull(message = "字典排序必填") private Integer dictSort;
@NotBlank(message = "字典值必填")
private String value;
@NotNull(message = "字典排序必填")
private Integer dictSort;
} }
@@ -25,9 +25,7 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class SystemCreateJobArgs extends KitObject { public class SystemCreateJobArgs extends KitObject {
@NotBlank(message = "职位名称必填") @NotBlank(message = "职位名称必填") private String name;
private String name; @NotNull(message = "职位排序必填") private Integer jobSort;
@NotNull(message = "职位排序必填")
private Integer jobSort;
private Boolean enabled; private Boolean enabled;
} }
@@ -17,9 +17,9 @@ package cn.odboy.system.dal.model;
import cn.odboy.base.KitObject; import cn.odboy.base.KitObject;
import cn.odboy.system.dal.dataobject.SystemDeptTb; import cn.odboy.system.dal.dataobject.SystemDeptTb;
import java.util.Set;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.util.Set;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@@ -27,12 +27,9 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class SystemCreateRoleArgs extends KitObject { public class SystemCreateRoleArgs extends KitObject {
@NotBlank(message = "角色名称必填") @NotBlank(message = "角色名称必填") private String name;
private String name; @NotNull(message = "角色级别必填") private Integer level;
@NotNull(message = "角色级别必填") @NotBlank(message = "数据范围必填") private String dataScope;
private Integer level;
@NotBlank(message = "数据范围必填")
private String dataScope;
private String description; private String description;
/** /**
* 关联的部门 * 关联的部门
@@ -25,6 +25,5 @@ import lombok.Setter;
@Setter @Setter
public class SystemDictDetailVo extends SystemDictDetailTb { public class SystemDictDetailVo extends SystemDictDetailTb {
@ApiModelProperty(value = "字典") @ApiModelProperty(value = "字典") private SystemDictTb dict;
private SystemDictTb dict;
} }
@@ -26,10 +26,7 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class SystemMenuMetaVo extends KitObject { public class SystemMenuMetaVo extends KitObject {
@ApiModelProperty(value = "菜单标题") @ApiModelProperty(value = "菜单标题") private String title;
private String title; @ApiModelProperty(value = "菜单图标") private String icon;
@ApiModelProperty(value = "菜单图标") @ApiModelProperty(value = "缓存") private Boolean noCache;
private String icon;
@ApiModelProperty(value = "缓存")
private Boolean noCache;
} }
@@ -28,20 +28,12 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class SystemMenuVo extends KitObject { public class SystemMenuVo extends KitObject {
@ApiModelProperty(value = "菜单名称") @ApiModelProperty(value = "菜单名称") private String name;
private String name; @ApiModelProperty(value = "路径") private String path;
@ApiModelProperty(value = "路径") @ApiModelProperty(value = "隐藏状态") private Boolean hidden;
private String path; @ApiModelProperty(value = "重定向") private String redirect;
@ApiModelProperty(value = "隐藏状态") @ApiModelProperty(value = "组件") private String component;
private Boolean hidden; @ApiModelProperty(value = "总是显示") private Boolean alwaysShow;
@ApiModelProperty(value = "重定向") @ApiModelProperty(value = "元数据") private SystemMenuMetaVo meta;
private String redirect; @ApiModelProperty(value = "子路由") private List<SystemMenuVo> children;
@ApiModelProperty(value = "组件")
private String component;
@ApiModelProperty(value = "总是显示")
private Boolean alwaysShow;
@ApiModelProperty(value = "元数据")
private SystemMenuMetaVo meta;
@ApiModelProperty(value = "子路由")
private List<SystemMenuVo> children;
} }
@@ -23,16 +23,10 @@ import lombok.Data;
@Data @Data
public class SystemQueryDeptArgs { public class SystemQueryDeptArgs {
@ApiModelProperty(value = "部门id集合") @ApiModelProperty(value = "部门id集合") private List<Long> ids;
private List<Long> ids; @ApiModelProperty(value = "部门名称") private String name;
@ApiModelProperty(value = "部门名称") @ApiModelProperty(value = "是否启用") private Boolean enabled;
private String name; @ApiModelProperty(value = "上级部门") private Long pid;
@ApiModelProperty(value = "是否启用") @ApiModelProperty(value = "PID为空查询") private Boolean pidIsNull;
private Boolean enabled; @ApiModelProperty(value = "创建时间") private List<Date> createTime;
@ApiModelProperty(value = "上级部门")
private Long pid;
@ApiModelProperty(value = "PID为空查询")
private Boolean pidIsNull;
@ApiModelProperty(value = "创建时间")
private List<Date> createTime;
} }
@@ -21,10 +21,7 @@ import lombok.Data;
@Data @Data
public class SystemQueryDictArgs { public class SystemQueryDictArgs {
@ApiModelProperty(value = "模糊查询") @ApiModelProperty(value = "模糊查询") private String blurry;
private String blurry; @ApiModelProperty(value = "页码", example = "1") private Integer page = 1;
@ApiModelProperty(value = "页码", example = "1") @ApiModelProperty(value = "每页数据量", example = "10") private Integer size = 10;
private Integer page = 1;
@ApiModelProperty(value = "每页数据量", example = "10")
private Integer size = 10;
} }
@@ -24,8 +24,6 @@ import lombok.Setter;
@Setter @Setter
public class SystemQueryDictDetailArgs extends KitObject { public class SystemQueryDictDetailArgs extends KitObject {
@ApiModelProperty(value = "标签") @ApiModelProperty(value = "标签") private String label;
private String label; @ApiModelProperty(value = "字典名称") private String dictName;
@ApiModelProperty(value = "字典名称")
private String dictName;
} }
@@ -25,14 +25,9 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
public class SystemQueryJobArgs { public class SystemQueryJobArgs {
@ApiModelProperty(value = "岗位名称") @ApiModelProperty(value = "岗位名称") private String name;
private String name; @ApiModelProperty(value = "是否启用") private Boolean enabled;
@ApiModelProperty(value = "是否启用") @ApiModelProperty(value = "创建时间") private List<Date> createTime;
private Boolean enabled; @ApiModelProperty(value = "页码", example = "1") private Integer page = 1;
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "每页数据量", example = "10") private Integer size = 10;
private List<Date> createTime;
@ApiModelProperty(value = "页码", example = "1")
private Integer page = 1;
@ApiModelProperty(value = "每页数据量", example = "10")
private Integer size = 10;
} }
@@ -23,12 +23,8 @@ import lombok.Data;
@Data @Data
public class SystemQueryMenuArgs { public class SystemQueryMenuArgs {
@ApiModelProperty(value = "模糊查询") @ApiModelProperty(value = "模糊查询") private String blurry;
private String blurry; @ApiModelProperty(value = "创建时间") private List<Date> createTime;
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "PID为空查询") private Boolean pidIsNull;
private List<Date> createTime; @ApiModelProperty(value = "PID") private Long pid;
@ApiModelProperty(value = "PID为空查询")
private Boolean pidIsNull;
@ApiModelProperty(value = "PID")
private Long pid;
} }
@@ -23,14 +23,9 @@ import lombok.Data;
@Data @Data
public class SystemQueryQuartzJobArgs { public class SystemQueryQuartzJobArgs {
@ApiModelProperty(value = "定时任务名称") @ApiModelProperty(value = "定时任务名称") private String jobName;
private String jobName; @ApiModelProperty(value = "是否成功") private Boolean isSuccess;
@ApiModelProperty(value = "是否成功") @ApiModelProperty(value = "创建时间") private List<Date> createTime;
private Boolean isSuccess; @ApiModelProperty(value = "页码", example = "1") private Integer page = 1;
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "每页数据量", example = "10") private Integer size = 10;
private List<Date> createTime;
@ApiModelProperty(value = "页码", example = "1")
private Integer page = 1;
@ApiModelProperty(value = "每页数据量", example = "10")
private Integer size = 10;
} }
@@ -23,14 +23,9 @@ import lombok.Data;
@Data @Data
public class SystemQueryRoleArgs { public class SystemQueryRoleArgs {
@ApiModelProperty(value = "模糊查询") @ApiModelProperty(value = "模糊查询") private String blurry;
private String blurry; @ApiModelProperty(value = "创建时间") private List<Date> createTime;
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "页码", example = "1") private Integer page = 1;
private List<Date> createTime; @ApiModelProperty(value = "每页数据量", example = "10") private Integer size = 10;
@ApiModelProperty(value = "页码", example = "1") @ApiModelProperty(value = "偏移量", hidden = true) private long offset;
private Integer page = 1;
@ApiModelProperty(value = "每页数据量", example = "10")
private Integer size = 10;
@ApiModelProperty(value = "偏移量", hidden = true)
private long offset;
} }
@@ -23,12 +23,8 @@ import lombok.Data;
@Data @Data
public class SystemQueryStorageArgs { public class SystemQueryStorageArgs {
@ApiModelProperty(value = "模糊查询") @ApiModelProperty(value = "模糊查询") private String blurry;
private String blurry; @ApiModelProperty(value = "创建时间") private List<Date> createTime;
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "页码", example = "1") private Integer page = 1;
private List<Date> createTime; @ApiModelProperty(value = "每页数据量", example = "10") private Integer size = 10;
@ApiModelProperty(value = "页码", example = "1")
private Integer page = 1;
@ApiModelProperty(value = "每页数据量", example = "10")
private Integer size = 10;
} }
@@ -28,20 +28,12 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class SystemQueryUserArgs extends KitObject { public class SystemQueryUserArgs extends KitObject {
@ApiModelProperty(value = "ID") @ApiModelProperty(value = "ID") private Long id;
private Long id; @ApiModelProperty(value = "多个ID") private Set<Long> deptIds = new HashSet<>();
@ApiModelProperty(value = "多个ID") @ApiModelProperty(value = "模糊查询") private String blurry;
private Set<Long> deptIds = new HashSet<>(); @ApiModelProperty(value = "是否启用") private Boolean enabled;
@ApiModelProperty(value = "模糊查询") @ApiModelProperty(value = "部门ID") private Long deptId;
private String blurry; @ApiModelProperty(value = "创建时间") private List<Date> createTime;
@ApiModelProperty(value = "是否启用") @ApiModelProperty(value = "页码", example = "1") private Integer page = 1;
private Boolean enabled; @ApiModelProperty(value = "每页数据量", example = "10") private Integer size = 10;
@ApiModelProperty(value = "部门ID")
private Long deptId;
@ApiModelProperty(value = "创建时间")
private List<Date> createTime;
@ApiModelProperty(value = "页码", example = "1")
private Integer page = 1;
@ApiModelProperty(value = "每页数据量", example = "10")
private Integer size = 10;
} }
@@ -29,6 +29,5 @@ import org.springframework.security.core.GrantedAuthority;
@AllArgsConstructor @AllArgsConstructor
public class SystemRoleCodeVo implements GrantedAuthority { public class SystemRoleCodeVo implements GrantedAuthority {
@ApiModelProperty(value = "角色名") @ApiModelProperty(value = "角色名") private String authority;
private String authority;
} }
@@ -13,10 +13,7 @@ import lombok.Setter;
@Setter @Setter
public class SystemRoleVo extends SystemRoleTb { public class SystemRoleVo extends SystemRoleTb {
@ApiModelProperty(value = "用户", hidden = true) @ApiModelProperty(value = "用户", hidden = true) private Set<SystemUserTb> users;
private Set<SystemUserTb> users; @ApiModelProperty(value = "菜单", hidden = true) private Set<SystemMenuTb> menus;
@ApiModelProperty(value = "菜单", hidden = true) @ApiModelProperty(value = "部门", hidden = true) private Set<SystemDeptTb> depts;
private Set<SystemMenuTb> menus;
@ApiModelProperty(value = "部门", hidden = true)
private Set<SystemDeptTb> depts;
} }
@@ -16,9 +16,9 @@
package cn.odboy.system.dal.model; package cn.odboy.system.dal.model;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import java.util.List;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@@ -31,13 +31,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
public class SystemSendEmailArgs { public class SystemSendEmailArgs {
@NotEmpty @NotEmpty @ApiModelProperty(value = "收件人") private List<String> tos;
@ApiModelProperty(value = "收件人") @NotBlank @ApiModelProperty(value = "主题") private String subject;
private List<String> tos; @NotBlank @ApiModelProperty(value = "内容") private String content;
@NotBlank
@ApiModelProperty(value = "主题")
private String subject;
@NotBlank
@ApiModelProperty(value = "内容")
private String content;
} }
@@ -29,29 +29,17 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class SystemSimpleUserVo extends KitObject { public class SystemSimpleUserVo extends KitObject {
@ApiModelProperty(value = "ID", hidden = true) @ApiModelProperty(value = "ID", hidden = true) private Long id;
private Long id; @ApiModelProperty(value = "用户角色") private Set<SystemRoleTb> roles;
@ApiModelProperty(value = "用户角色") @ApiModelProperty(value = "用户岗位") private Set<SystemJobTb> jobs;
private Set<SystemRoleTb> roles;
@ApiModelProperty(value = "用户岗位")
private Set<SystemJobTb> jobs;
private Long deptId; private Long deptId;
@TableField(exist = false) @TableField(exist = false) private SystemDeptTb dept;
private SystemDeptTb dept; @ApiModelProperty(value = "用户名称") private String username;
@ApiModelProperty(value = "用户名称") @ApiModelProperty(value = "用户昵称") private String nickName;
private String username; @ApiModelProperty(value = "邮箱") private String email;
@ApiModelProperty(value = "用户昵称") @ApiModelProperty(value = "电话号码") private String phone;
private String nickName; @ApiModelProperty(value = "用户性别") private String gender;
@ApiModelProperty(value = "邮箱") @ApiModelProperty(value = "头像真实名称", hidden = true) private String avatarName;
private String email; @ApiModelProperty(value = "是否启用") private Boolean enabled;
@ApiModelProperty(value = "电话号码") @ApiModelProperty(value = "是否为admin账号", hidden = true) private Boolean isAdmin = false;
private String phone;
@ApiModelProperty(value = "用户性别")
private String gender;
@ApiModelProperty(value = "头像真实名称", hidden = true)
private String avatarName;
@ApiModelProperty(value = "是否启用")
private Boolean enabled;
@ApiModelProperty(value = "是否为admin账号", hidden = true)
private Boolean isAdmin = false;
} }
@@ -25,22 +25,17 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class SystemUpdateQuartzJobArgs extends KitObject { public class SystemUpdateQuartzJobArgs extends KitObject {
@NotNull @NotNull private Long id;
private Long id;
private String uuid; private String uuid;
private String jobName; private String jobName;
@NotBlank @NotBlank private String beanName;
private String beanName; @NotBlank private String methodName;
@NotBlank
private String methodName;
private String params; private String params;
@NotBlank @NotBlank private String cronExpression;
private String cronExpression;
private Boolean isPause = false; private Boolean isPause = false;
private String personInCharge; private String personInCharge;
private String email; private String email;
private String subTask; private String subTask;
private Boolean pauseAfterFailure; private Boolean pauseAfterFailure;
@NotBlank @NotBlank private String description;
private String description;
} }
@@ -24,8 +24,6 @@ import lombok.Data;
@Data @Data
public class SystemUpdateUserPasswordArgs { public class SystemUpdateUserPasswordArgs {
@ApiModelProperty(value = "旧密码") @ApiModelProperty(value = "旧密码") private String oldPass;
private String oldPass; @ApiModelProperty(value = "新密码") private String newPass;
@ApiModelProperty(value = "新密码")
private String newPass;
} }
@@ -29,12 +29,9 @@ import org.springframework.security.core.userdetails.UserDetails;
@AllArgsConstructor @AllArgsConstructor
public class SystemUserJwtVo implements UserDetails { public class SystemUserJwtVo implements UserDetails {
@ApiModelProperty(value = "用户") @ApiModelProperty(value = "用户") private final SystemUserTb user;
private final SystemUserTb user; @ApiModelProperty(value = "数据权限") private final List<Long> dataScopes;
@ApiModelProperty(value = "数据权限") @ApiModelProperty(value = "角色") private final List<SystemRoleCodeVo> authorities;
private final List<Long> dataScopes;
@ApiModelProperty(value = "角色")
private final List<SystemRoleCodeVo> authorities;
public Set<String> getRoles() { public Set<String> getRoles() {
return authorities.stream().map(SystemRoleCodeVo::getAuthority).collect(Collectors.toSet()); return authorities.stream().map(SystemRoleCodeVo::getAuthority).collect(Collectors.toSet());
@@ -24,14 +24,8 @@ import lombok.Setter;
@Setter @Setter
public class SystemUserLoginArgs { public class SystemUserLoginArgs {
@NotBlank @NotBlank @ApiModelProperty(value = "用户名") private String username;
@ApiModelProperty(value = "用户名") @NotBlank @ApiModelProperty(value = "密码") private String password;
private String username; @ApiModelProperty(value = "验证码") private String code;
@NotBlank @ApiModelProperty(value = "验证码的key") private String uuid = "";
@ApiModelProperty(value = "密码")
private String password;
@ApiModelProperty(value = "验证码")
private String code;
@ApiModelProperty(value = "验证码的key")
private String uuid = "";
} }
@@ -25,22 +25,13 @@ import lombok.Data;
@Data @Data
public class SystemUserOnlineVo { public class SystemUserOnlineVo {
@ApiModelProperty(value = "Token编号") @ApiModelProperty(value = "Token编号") private String uid;
private String uid; @ApiModelProperty(value = "用户名") private String userName;
@ApiModelProperty(value = "用户名") @ApiModelProperty(value = "昵称") private String nickName;
private String userName; @ApiModelProperty(value = "岗位") private String dept;
@ApiModelProperty(value = "昵称") @ApiModelProperty(value = "浏览器") private String browser;
private String nickName; @ApiModelProperty(value = "IP") private String ip;
@ApiModelProperty(value = "岗位") @ApiModelProperty(value = "地址") private String address;
private String dept; @ApiModelProperty(value = "token") private String key;
@ApiModelProperty(value = "浏览器") @ApiModelProperty(value = "登录时间") private Date loginTime;
private String browser;
@ApiModelProperty(value = "IP")
private String ip;
@ApiModelProperty(value = "地址")
private String address;
@ApiModelProperty(value = "token")
private String key;
@ApiModelProperty(value = "登录时间")
private Date loginTime;
} }
@@ -12,8 +12,6 @@ import lombok.Setter;
@Setter @Setter
public class SystemUserVo extends SystemUserTb { public class SystemUserVo extends SystemUserTb {
@ApiModelProperty(value = "用户角色") @ApiModelProperty(value = "用户角色") private Set<SystemRoleTb> roles;
private Set<SystemRoleTb> roles; @ApiModelProperty(value = "用户岗位") private Set<SystemJobTb> jobs;
@ApiModelProperty(value = "用户岗位")
private Set<SystemJobTb> jobs;
} }
@@ -15,14 +15,9 @@
*/ */
package cn.odboy.system.dal.mysql; package cn.odboy.system.dal.mysql;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.system.dal.dataobject.SystemDeptTb; import cn.odboy.system.dal.dataobject.SystemDeptTb;
import cn.odboy.system.dal.model.SystemQueryDeptArgs;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@@ -33,47 +28,6 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface SystemDeptMapper extends BaseMapper<SystemDeptTb> { public interface SystemDeptMapper extends BaseMapper<SystemDeptTb> {
default List<SystemDeptTb> selectDeptByPidIsNull() {
LambdaQueryWrapper<SystemDeptTb> wrapper = new LambdaQueryWrapper<>();
wrapper.isNull(SystemDeptTb::getPid);
return selectList(wrapper);
}
default long countDeptByPid(Long pid) {
LambdaQueryWrapper<SystemDeptTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemDeptTb::getPid, pid);
return selectCount(wrapper);
}
default List<SystemDeptTb> queryDeptByArgs(SystemQueryDeptArgs criteria) {
LambdaQueryWrapper<SystemDeptTb> wrapper = new LambdaQueryWrapper<>();
if (criteria != null) {
wrapper.in(CollUtil.isNotEmpty(criteria.getIds()), SystemDeptTb::getId, criteria.getIds());
wrapper.like(StrUtil.isNotBlank(criteria.getName()), SystemDeptTb::getName, criteria.getName());
wrapper.eq(criteria.getEnabled() != null, SystemDeptTb::getEnabled, criteria.getEnabled());
wrapper.eq(criteria.getPid() != null, SystemDeptTb::getPid, criteria.getPid());
wrapper.isNull(criteria.getPidIsNull() != null, SystemDeptTb::getPid);
if (CollUtil.isNotEmpty(criteria.getCreateTime()) && criteria.getCreateTime().size() >= 2) {
wrapper.between(SystemDeptTb::getCreateTime, criteria.getCreateTime().get(0),
criteria.getCreateTime().get(1));
}
}
wrapper.orderByAsc(SystemDeptTb::getDeptSort);
return selectList(wrapper);
}
default List<SystemDeptTb> selectEnabledDepts() {
LambdaQueryWrapper<SystemDeptTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemDeptTb::getEnabled, 1);
return selectList(wrapper);
}
default List<SystemDeptTb> selectDeptByPid(long pid) {
LambdaQueryWrapper<SystemDeptTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemDeptTb::getPid, pid);
return selectList(wrapper);
}
default void updateDeptSubCountById(long count, Long deptId) { default void updateDeptSubCountById(long count, Long deptId) {
LambdaUpdateWrapper<SystemDeptTb> wrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<SystemDeptTb> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(SystemDeptTb::getId, deptId); wrapper.eq(SystemDeptTb::getId, deptId);
@@ -15,13 +15,8 @@
*/ */
package cn.odboy.system.dal.mysql; package cn.odboy.system.dal.mysql;
import cn.hutool.core.collection.CollUtil;
import cn.odboy.system.dal.dataobject.SystemDictDetailTb; import cn.odboy.system.dal.dataobject.SystemDictDetailTb;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@@ -32,15 +27,4 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface SystemDictDetailMapper extends BaseMapper<SystemDictDetailTb> { public interface SystemDictDetailMapper extends BaseMapper<SystemDictDetailTb> {
default List<SystemDictDetailTb> selectByDictId(Long dictId) {
LambdaQueryWrapper<SystemDictDetailTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemDictDetailTb::getDictId, dictId);
return selectList(wrapper);
}
default IPage<SystemDictDetailTb> selectDictDetailByArgs(List<Long> dictIds, Page<SystemDictDetailTb> page) {
LambdaQueryWrapper<SystemDictDetailTb> wrapper = new LambdaQueryWrapper<>();
wrapper.in(CollUtil.isNotEmpty(dictIds), SystemDictDetailTb::getDictId, dictIds);
return selectPage(page, wrapper);
}
} }
@@ -15,12 +15,9 @@
*/ */
package cn.odboy.system.dal.mysql; package cn.odboy.system.dal.mysql;
import cn.hutool.core.util.StrUtil;
import cn.odboy.system.dal.dataobject.SystemDictTb; import cn.odboy.system.dal.dataobject.SystemDictTb;
import cn.odboy.system.dal.model.SystemQueryDictArgs;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List; import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -32,28 +29,13 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface SystemDictMapper extends BaseMapper<SystemDictTb> { public interface SystemDictMapper extends BaseMapper<SystemDictTb> {
default void injectQueryParams(SystemQueryDictArgs args, LambdaQueryWrapper<SystemDictTb> wrapper) { default List<SystemDictTb> listAll() {
if (args != null) { return selectList(null);
wrapper.and(StrUtil.isNotBlank(args.getBlurry()), c -> c.like(SystemDictTb::getName, args.getBlurry()).or()
.like(SystemDictTb::getDescription, args.getBlurry()));
}
} }
default List<SystemDictTb> selectDictByArgs(SystemQueryDictArgs args) { default SystemDictTb getByName(String dictName) {
LambdaQueryWrapper<SystemDictTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemDictTb> wrapper = new LambdaQueryWrapper<>();
injectQueryParams(args, wrapper); wrapper.eq(SystemDictTb::getName, dictName);
return selectList(wrapper);
}
default List<SystemDictTb> selectDictByArgs(SystemQueryDictArgs args, Page<SystemDictTb> page) {
LambdaQueryWrapper<SystemDictTb> wrapper = new LambdaQueryWrapper<>();
injectQueryParams(args, wrapper);
return selectList(page, wrapper);
}
default SystemDictTb getByName(String name) {
LambdaQueryWrapper<SystemDictTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemDictTb::getName, name);
return selectOne(wrapper); return selectOne(wrapper);
} }
} }
@@ -15,15 +15,8 @@
*/ */
package cn.odboy.system.dal.mysql; package cn.odboy.system.dal.mysql;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.system.dal.dataobject.SystemJobTb; import cn.odboy.system.dal.dataobject.SystemJobTb;
import cn.odboy.system.dal.model.SystemQueryJobArgs;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@@ -34,33 +27,4 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface SystemJobMapper extends BaseMapper<SystemJobTb> { public interface SystemJobMapper extends BaseMapper<SystemJobTb> {
default SystemJobTb getJobByName(String name) {
LambdaQueryWrapper<SystemJobTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemJobTb::getName, name);
return selectOne(wrapper);
}
default void injectQueryParams(SystemQueryJobArgs criteria, LambdaQueryWrapper<SystemJobTb> wrapper) {
if (criteria != null) {
wrapper.like(StrUtil.isNotBlank(criteria.getName()), SystemJobTb::getName, criteria.getName());
wrapper.eq(criteria.getEnabled() != null, SystemJobTb::getEnabled, criteria.getEnabled());
if (CollUtil.isNotEmpty(criteria.getCreateTime()) && criteria.getCreateTime().size() >= 2) {
wrapper.between(SystemJobTb::getCreateTime, criteria.getCreateTime().get(0),
criteria.getCreateTime().get(1));
}
}
wrapper.orderByDesc(SystemJobTb::getJobSort, SystemJobTb::getId);
}
default IPage<SystemJobTb> selectJobByArgs(SystemQueryJobArgs criteria, Page<SystemJobTb> page) {
LambdaQueryWrapper<SystemJobTb> wrapper = new LambdaQueryWrapper<>();
this.injectQueryParams(criteria, wrapper);
return selectPage(page, wrapper);
}
default List<SystemJobTb> selectJobByArgs(SystemQueryJobArgs criteria) {
LambdaQueryWrapper<SystemJobTb> wrapper = new LambdaQueryWrapper<>();
this.injectQueryParams(criteria, wrapper);
return selectList(wrapper);
}
} }
@@ -15,15 +15,8 @@
*/ */
package cn.odboy.system.dal.mysql; package cn.odboy.system.dal.mysql;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.system.dal.dataobject.SystemLocalStorageTb; import cn.odboy.system.dal.dataobject.SystemLocalStorageTb;
import cn.odboy.system.dal.model.SystemQueryStorageArgs;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@@ -34,31 +27,4 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface SystemLocalStorageMapper extends BaseMapper<SystemLocalStorageTb> { public interface SystemLocalStorageMapper extends BaseMapper<SystemLocalStorageTb> {
default void injectQueryParams(SystemQueryStorageArgs criteria, LambdaQueryWrapper<SystemLocalStorageTb> wrapper) {
if (criteria != null) {
wrapper.and(StrUtil.isNotBlank(criteria.getBlurry()),
c -> c.like(SystemLocalStorageTb::getName, criteria.getBlurry()).or()
.like(SystemLocalStorageTb::getSuffix, criteria.getBlurry()).or()
.like(SystemLocalStorageTb::getType, criteria.getBlurry()).or()
.like(SystemLocalStorageTb::getCreateBy, criteria.getBlurry()));
if (CollUtil.isNotEmpty(criteria.getCreateTime()) && criteria.getCreateTime().size() >= 2) {
wrapper.between(SystemLocalStorageTb::getUpdateTime, criteria.getCreateTime().get(0),
criteria.getCreateTime().get(1));
}
}
wrapper.orderByDesc(SystemLocalStorageTb::getId);
}
default List<SystemLocalStorageTb> selectLocalStorageByArgs(SystemQueryStorageArgs criteria) {
LambdaQueryWrapper<SystemLocalStorageTb> wrapper = new LambdaQueryWrapper<>();
injectQueryParams(criteria, wrapper);
return selectList(wrapper);
}
default IPage<SystemLocalStorageTb> selectLocalStorageByArgs(SystemQueryStorageArgs criteria,
Page<SystemLocalStorageTb> page) {
LambdaQueryWrapper<SystemLocalStorageTb> wrapper = new LambdaQueryWrapper<>();
injectQueryParams(criteria, wrapper);
return selectPage(page, wrapper);
}
} }
@@ -15,14 +15,8 @@
*/ */
package cn.odboy.system.dal.mysql; package cn.odboy.system.dal.mysql;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.system.dal.dataobject.SystemMenuTb; import cn.odboy.system.dal.dataobject.SystemMenuTb;
import cn.odboy.system.dal.model.SystemQueryMenuArgs;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@@ -33,62 +27,4 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface SystemMenuMapper extends BaseMapper<SystemMenuTb> { public interface SystemMenuMapper extends BaseMapper<SystemMenuTb> {
default void updateMenuSubCntByMenuId(Long count, Long menuId) {
if (count != null) {
LambdaUpdateWrapper<SystemMenuTb> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(SystemMenuTb::getId, menuId);
wrapper.set(SystemMenuTb::getSubCount, count);
update(wrapper);
}
}
default SystemMenuTb getMenuByComponentName(String componentName) {
LambdaQueryWrapper<SystemMenuTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemMenuTb::getComponentName, componentName);
return selectOne(wrapper);
}
default SystemMenuTb getMenuByTitle(String title) {
LambdaQueryWrapper<SystemMenuTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemMenuTb::getTitle, title);
return selectOne(wrapper);
}
default Long countMenuByPid(Long pid) {
LambdaQueryWrapper<SystemMenuTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemMenuTb::getPid, pid);
return selectCount(wrapper);
}
default List<SystemMenuTb> selectMenuByArgs(SystemQueryMenuArgs criteria) {
LambdaQueryWrapper<SystemMenuTb> wrapper = new LambdaQueryWrapper<>();
if (criteria != null) {
wrapper.isNull(criteria.getPidIsNull() != null, SystemMenuTb::getPid);
wrapper.eq(criteria.getPid() != null, SystemMenuTb::getPid, criteria.getPid());
wrapper.and(StrUtil.isNotBlank(criteria.getBlurry()),
c -> c.like(SystemMenuTb::getTitle, criteria.getBlurry()).or()
.like(SystemMenuTb::getComponentName, criteria.getBlurry()).or()
.like(SystemMenuTb::getPermission, criteria.getBlurry()));
if (CollUtil.isNotEmpty(criteria.getCreateTime()) && criteria.getCreateTime().size() >= 2) {
wrapper.between(SystemMenuTb::getCreateTime, criteria.getCreateTime().get(0),
criteria.getCreateTime().get(1));
}
}
wrapper.orderByAsc(SystemMenuTb::getMenuSort);
return selectList(wrapper);
}
default List<SystemMenuTb> selectMenuByPid(Long pid) {
LambdaQueryWrapper<SystemMenuTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemMenuTb::getPid, pid);
wrapper.orderByAsc(SystemMenuTb::getMenuSort);
return selectList(wrapper);
}
default List<SystemMenuTb> selectMenuByPidIsNull() {
LambdaQueryWrapper<SystemMenuTb> wrapper = new LambdaQueryWrapper<>();
wrapper.isNull(SystemMenuTb::getPid);
wrapper.orderByAsc(SystemMenuTb::getMenuSort);
return selectList(wrapper);
}
} }
@@ -15,11 +15,7 @@
*/ */
package cn.odboy.system.dal.mysql; package cn.odboy.system.dal.mysql;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.system.dal.dataobject.SystemRoleTb; import cn.odboy.system.dal.dataobject.SystemRoleTb;
import cn.odboy.system.dal.model.SystemQueryRoleArgs;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -31,21 +27,4 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface SystemRoleMapper extends BaseMapper<SystemRoleTb> { public interface SystemRoleMapper extends BaseMapper<SystemRoleTb> {
default Long countRoleByArgs(SystemQueryRoleArgs criteria) {
LambdaQueryWrapper<SystemRoleTb> wrapper = new LambdaQueryWrapper<>();
if (criteria != null) {
wrapper.and(StrUtil.isNotBlank(criteria.getBlurry()),
c -> c.like(SystemRoleTb::getName, criteria.getBlurry()).or()
.like(SystemRoleTb::getDescription, criteria.getBlurry()));
if (CollUtil.isNotEmpty(criteria.getCreateTime()) && criteria.getCreateTime().size() >= 2) {
wrapper.between(SystemRoleTb::getCreateTime, criteria.getCreateTime().get(0),
criteria.getCreateTime().get(1));
}
}
return selectCount(wrapper);
}
default SystemRoleTb getRoleById(Long roleId) {
return selectById(roleId);
}
} }
@@ -15,14 +15,9 @@
*/ */
package cn.odboy.system.dal.mysql; package cn.odboy.system.dal.mysql;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.system.dal.dataobject.SystemUserTb; import cn.odboy.system.dal.dataobject.SystemUserTb;
import cn.odboy.system.dal.model.SystemQueryUserArgs;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Set; import java.util.Set;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -34,51 +29,6 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface SystemUserMapper extends BaseMapper<SystemUserTb> { public interface SystemUserMapper extends BaseMapper<SystemUserTb> {
default SystemUserTb getUserByUsername(String username) {
LambdaQueryWrapper<SystemUserTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemUserTb::getUsername, username);
wrapper.eq(SystemUserTb::getEnabled, 1);
return selectOne(wrapper);
}
default Long countUserByJobIds(Set<Long> jobIds) {
if (CollUtil.isEmpty(jobIds)) {
return 0L;
}
// 需要通过用户岗位关联表查询,这里暂时返回0
// 实际实现需要在Service层通过关联查询
return 0L;
}
default Long countUserByRoleIds(Set<Long> roleIds) {
if (CollUtil.isEmpty(roleIds)) {
return 0L;
}
// 需要通过用户角色关联表查询,这里暂时返回0
// 实际实现需要在Service层通过关联查询
return 0L;
}
default long countUserByDeptIds(Set<Long> deptIds) {
LambdaQueryWrapper<SystemUserTb> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SystemUserTb::getDeptId, deptIds);
return selectCount(wrapper);
}
default SystemUserTb getUserByEmail(String email) {
LambdaQueryWrapper<SystemUserTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemUserTb::getEmail, email);
wrapper.eq(SystemUserTb::getEnabled, 1);
return selectOne(wrapper);
}
default SystemUserTb getUserByPhone(String phone) {
LambdaQueryWrapper<SystemUserTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemUserTb::getPhone, phone);
wrapper.eq(SystemUserTb::getEnabled, 1);
return selectOne(wrapper);
}
default void updateUserPasswordByUsername(String username, String password) { default void updateUserPasswordByUsername(String username, String password) {
LambdaUpdateWrapper<SystemUserTb> wrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<SystemUserTb> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(SystemUserTb::getUsername, username); wrapper.eq(SystemUserTb::getUsername, username);
@@ -14,8 +14,7 @@ import org.springframework.stereotype.Component;
@Component @Component
public class SystemUserInfoDAO { public class SystemUserInfoDAO {
@Autowired @Autowired private KitRedisHelper redisHelper;
private KitRedisHelper redisHelper;
/** /**
* 添加缓存到Redis * 添加缓存到Redis
@@ -13,6 +13,8 @@ import cn.odboy.util.KitFileUtil;
import cn.odboy.util.KitIPUtil; import cn.odboy.util.KitIPUtil;
import cn.odboy.util.KitPageUtil; import cn.odboy.util.KitPageUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -21,8 +23,6 @@ import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -55,7 +55,7 @@ public class UserDetailsHandler implements UserDetailsService {
// 获取用户的权限 // 获取用户的权限
List<SystemRoleCodeVo> authorities = systemRoleService.buildUserRolePermissions(user); List<SystemRoleCodeVo> authorities = systemRoleService.buildUserRolePermissions(user);
// 初始化JwtUserDto // 初始化JwtUserDto
userJwtVo = new SystemUserJwtVo(user, systemDataService.findDeptIdListByArgs(user), authorities); userJwtVo = new SystemUserJwtVo(user, systemDataService.queryDeptIdByArgs(user), authorities);
// 添加缓存数据 // 添加缓存数据
systemUserInfoDAO.saveUserLoginInfoByUserName(username, userJwtVo); systemUserInfoDAO.saveUserLoginInfoByUserName(username, userJwtVo);
} }
@@ -38,7 +38,7 @@ public class ActiveJobRegister implements ApplicationRunner {
*/ */
@Override @Override
public void run(ApplicationArguments applicationArguments) { public void run(ApplicationArguments applicationArguments) {
List<SystemQuartzJobTb> quartzJobs = systemQuartzJobService.queryEnableQuartzJob(); List<SystemQuartzJobTb> quartzJobs = systemQuartzJobService.listEnableQuartzJob();
quartzJobs.forEach(quartzManage::addJob); quartzJobs.forEach(quartzManage::addJob);
log.info("Timing task injection complete"); log.info("Timing task injection complete");
} }
@@ -36,12 +36,9 @@ import org.springframework.stereotype.Service;
@Service @Service
public class SystemDataService { public class SystemDataService {
@Autowired @Autowired private SystemRoleService systemRoleService;
private SystemRoleService systemRoleService; @Autowired private SystemDeptService systemDeptService;
@Autowired @Autowired private SystemRoleDeptService systemRoleDeptService;
private SystemDeptService systemDeptService;
@Autowired
private SystemRoleDeptService systemRoleDeptService;
/** /**
* 获取数据权限 * 获取数据权限
@@ -49,7 +46,7 @@ public class SystemDataService {
* @param user / * @param user /
* @return / * @return /
*/ */
public List<Long> findDeptIdListByArgs(SystemUserTb user) { public List<Long> queryDeptIdByArgs(SystemUserTb user) {
List<Long> deptIds = new ArrayList<>(); List<Long> deptIds = new ArrayList<>();
// 查询用户角色 // 查询用户角色
List<SystemRoleVo> roleList = systemRoleService.queryRoleByUsersId(user.getId()); List<SystemRoleVo> roleList = systemRoleService.queryRoleByUsersId(user.getId());
@@ -61,7 +58,7 @@ public class SystemDataService {
deptIds.add(user.getDept().getId()); deptIds.add(user.getDept().getId());
break; break;
case CUSTOMIZE: case CUSTOMIZE:
deptIds.addAll(this.findCustomDataPermissionList(deptIds, role)); deptIds.addAll(this.queryCustomDataPermissionByArgs(deptIds, role));
break; break;
default: default:
return new ArrayList<>(); return new ArrayList<>();
@@ -77,13 +74,13 @@ public class SystemDataService {
* @param role 角色 * @param role 角色
* @return 数据权限ID * @return 数据权限ID
*/ */
private List<Long> findCustomDataPermissionList(List<Long> deptIds, SystemRoleTb role) { private List<Long> queryCustomDataPermissionByArgs(List<Long> deptIds, SystemRoleTb role) {
List<SystemDeptTb> deptList = systemRoleDeptService.selectDeptByRoleId(role.getId()); List<SystemDeptTb> deptList = systemRoleDeptService.listDeptByRoleId(role.getId());
for (SystemDeptTb dept : deptList) { for (SystemDeptTb dept : deptList) {
deptIds.add(dept.getId()); deptIds.add(dept.getId());
List<SystemDeptTb> deptChildren = systemDeptService.queryDeptByPid(dept.getId()); List<SystemDeptTb> deptChildren = systemDeptService.listDeptByPid(dept.getId());
if (CollUtil.isNotEmpty(deptChildren)) { if (CollUtil.isNotEmpty(deptChildren)) {
deptIds.addAll(systemDeptService.queryChildDeptIdListByDeptIds(deptChildren)); deptIds.addAll(systemDeptService.queryChildDeptIdByDeptIds(deptChildren));
} }
} }
return deptIds; return deptIds;
@@ -29,11 +29,11 @@ import cn.odboy.system.dal.model.SystemProductLineTreeVo;
import cn.odboy.system.dal.model.SystemProductLineVo; import cn.odboy.system.dal.model.SystemProductLineVo;
import cn.odboy.system.dal.model.SystemQueryDeptArgs; import cn.odboy.system.dal.model.SystemQueryDeptArgs;
import cn.odboy.system.dal.mysql.SystemDeptMapper; import cn.odboy.system.dal.mysql.SystemDeptMapper;
import cn.odboy.system.dal.mysql.SystemRoleMapper;
import cn.odboy.system.dal.mysql.SystemUserMapper;
import cn.odboy.system.framework.permission.core.KitSecurityHelper; import cn.odboy.system.framework.permission.core.KitSecurityHelper;
import cn.odboy.util.KitClassUtil; import cn.odboy.util.KitClassUtil;
import cn.odboy.util.KitFileUtil; import cn.odboy.util.KitFileUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
@@ -47,7 +47,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -55,12 +54,9 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class SystemDeptService { public class SystemDeptService {
@Autowired @Autowired private SystemDeptMapper systemDeptMapper;
private SystemDeptMapper systemDeptMapper; @Autowired private SystemUserService systemUserService;
@Autowired @Autowired private SystemRoleService systemRoleService;
private SystemUserMapper systemUserMapper;
@Autowired
private SystemRoleService systemRoleService;
/** /**
* 创建 * 创建
@@ -99,7 +95,7 @@ public class SystemDeptService {
* @param deptSet / * @param deptSet /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void removeDeptByIds(Set<SystemDeptTb> deptSet) { public void deleteDeptByIds(Set<SystemDeptTb> deptSet) {
for (SystemDeptTb dept : deptSet) { for (SystemDeptTb dept : deptSet) {
systemDeptMapper.deleteById(dept.getId()); systemDeptMapper.deleteById(dept.getId());
this.updateDeptSubCnt(dept.getPid()); this.updateDeptSubCnt(dept.getPid());
@@ -133,11 +129,17 @@ public class SystemDeptService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateDeptSubCnt(Long deptId) { public void updateDeptSubCnt(Long deptId) {
if (deptId != null) { if (deptId != null) {
long count = systemDeptMapper.countDeptByPid(deptId); long count = this.countDeptByPid(deptId);
systemDeptMapper.updateDeptSubCountById(count, deptId); systemDeptMapper.updateDeptSubCountById(count, deptId);
} }
} }
private long countDeptByPid(Long pid) {
LambdaQueryWrapper<SystemDeptTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemDeptTb::getPid, pid);
return systemDeptMapper.selectCount(wrapper);
}
/** /**
* 筛选出 list 中没有父部门(即 pid 不在其他部门 id 列表中的部门)的部门列表 * 筛选出 list 中没有父部门(即 pid 不在其他部门 id 列表中的部门)的部门列表
*/ */
@@ -154,21 +156,37 @@ public class SystemDeptService {
return deptList; return deptList;
} }
private List<SystemDeptTb> queryDeptByArgs(SystemQueryDeptArgs args) {
LambdaQueryWrapper<SystemDeptTb> wrapper = new LambdaQueryWrapper<>();
if (args != null) {
wrapper.in(CollUtil.isNotEmpty(args.getIds()), SystemDeptTb::getId, args.getIds());
wrapper.like(StrUtil.isNotBlank(args.getName()), SystemDeptTb::getName, args.getName());
wrapper.eq(args.getEnabled() != null, SystemDeptTb::getEnabled, args.getEnabled());
wrapper.eq(args.getPid() != null, SystemDeptTb::getPid, args.getPid());
wrapper.isNull(args.getPidIsNull() != null, SystemDeptTb::getPid);
if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
wrapper.between(SystemDeptTb::getCreateTime, args.getCreateTime().get(0), args.getCreateTime().get(1));
}
}
wrapper.orderByAsc(SystemDeptTb::getDeptSort);
return systemDeptMapper.selectList(wrapper);
}
/** /**
* 查询所有数据 * 查询所有数据
* *
* @param criteria 条件 * @param args 条件
* @param isQuery / * @param isQuery /
* @return / * @return /
* @throws Exception / * @throws Exception /
*/ */
public List<SystemDeptTb> queryAllDept(SystemQueryDeptArgs criteria, Boolean isQuery) throws Exception { public List<SystemDeptTb> queryAllDeptByArgs(SystemQueryDeptArgs args, Boolean isQuery) throws Exception {
String dataScopeType = KitSecurityHelper.getDataScopeType(); String dataScopeType = KitSecurityHelper.getDataScopeType();
if (isQuery) { if (isQuery) {
if (dataScopeType.equals(SystemDataScopeEnum.ALL.getValue())) { if (dataScopeType.equals(SystemDataScopeEnum.ALL.getValue())) {
criteria.setPidIsNull(true); args.setPidIsNull(true);
} }
List<Field> fields = KitClassUtil.getAllFields(criteria.getClass(), new ArrayList<>()); List<Field> fields = KitClassUtil.getAllFields(args.getClass(), new ArrayList<>());
List<String> fieldNames = new ArrayList<>() {{ List<String> fieldNames = new ArrayList<>() {{
add("pidIsNull"); add("pidIsNull");
add("enabled"); add("enabled");
@@ -176,19 +194,19 @@ public class SystemDeptService {
for (Field field : fields) { for (Field field : fields) {
// 设置对象的访问权限, 保证对private的属性的访问 // 设置对象的访问权限, 保证对private的属性的访问
field.setAccessible(true); field.setAccessible(true);
Object val = field.get(criteria); Object val = field.get(args);
if (fieldNames.contains(field.getName())) { if (fieldNames.contains(field.getName())) {
continue; continue;
} }
if (ObjectUtil.isNotNull(val)) { if (ObjectUtil.isNotNull(val)) {
criteria.setPidIsNull(null); args.setPidIsNull(null);
break; break;
} }
} }
} }
// 数据权限 // 数据权限
criteria.setIds(KitSecurityHelper.getCurrentUserDataScope()); args.setIds(KitSecurityHelper.getCurrentUserDataScope());
List<SystemDeptTb> list = systemDeptMapper.queryDeptByArgs(criteria); List<SystemDeptTb> list = this.queryDeptByArgs(args);
// 如果为空, 就代表为自定义权限或者本级权限, 就需要去重, 不理解可以注释掉,看查询结果 // 如果为空, 就代表为自定义权限或者本级权限, 就需要去重, 不理解可以注释掉,看查询结果
if (StrUtil.isBlank(dataScopeType)) { if (StrUtil.isBlank(dataScopeType)) {
return this.deduplication(list); return this.deduplication(list);
@@ -206,16 +224,6 @@ public class SystemDeptService {
return systemDeptMapper.selectById(id); return systemDeptMapper.selectById(id);
} }
/**
* 根据PID查询
*
* @param pid /
* @return /
*/
public List<SystemDeptTb> queryDeptByPid(long pid) {
return systemDeptMapper.selectDeptByPid(pid);
}
/** /**
* 获取部门下所有关联的部门 * 获取部门下所有关联的部门
* *
@@ -223,30 +231,24 @@ public class SystemDeptService {
* @param depts / * @param depts /
* @return / * @return /
*/ */
public Set<SystemDeptTb> queryRelationDeptSet(List<SystemDeptTb> deptTbList, Set<SystemDeptTb> depts) { private Set<SystemDeptTb> queryRelationDeptByArgs(List<SystemDeptTb> deptTbList, Set<SystemDeptTb> depts) {
for (SystemDeptTb dept : deptTbList) { for (SystemDeptTb dept : deptTbList) {
depts.add(dept); depts.add(dept);
List<SystemDeptTb> deptList = systemDeptMapper.selectDeptByPid(dept.getId()); List<SystemDeptTb> deptList = this.listDeptByPid(dept.getId());
if (CollUtil.isNotEmpty(deptList)) { if (CollUtil.isNotEmpty(deptList)) {
queryRelationDeptSet(deptList, depts); queryRelationDeptByArgs(deptList, depts);
} }
} }
return depts; return depts;
} }
/** public List<Long> queryChildDeptIdByDeptIds(List<SystemDeptTb> deptList) {
* 获取
*
* @param deptList 、
* @return 、
*/
public List<Long> queryChildDeptIdListByDeptIds(List<SystemDeptTb> deptList) {
List<Long> list = new ArrayList<>(); List<Long> list = new ArrayList<>();
for (SystemDeptTb systemDeptTb : deptList) { for (SystemDeptTb systemDeptTb : deptList) {
if (systemDeptTb != null && systemDeptTb.getEnabled()) { if (systemDeptTb != null && systemDeptTb.getEnabled()) {
List<SystemDeptTb> deptList1 = systemDeptMapper.selectDeptByPid(systemDeptTb.getId()); List<SystemDeptTb> deptList1 = this.listDeptByPid(systemDeptTb.getId());
if (CollUtil.isNotEmpty(deptList1)) { if (CollUtil.isNotEmpty(deptList1)) {
list.addAll(queryChildDeptIdListByDeptIds(deptList1)); list.addAll(queryChildDeptIdByDeptIds(deptList1));
} }
list.add(systemDeptTb.getId()); list.add(systemDeptTb.getId());
} }
@@ -261,22 +263,46 @@ public class SystemDeptService {
* @param deptList / * @param deptList /
* @return / * @return /
*/ */
public List<SystemDeptTb> querySuperiorDeptListByPid(SystemDeptTb dept, List<SystemDeptTb> deptList) { private List<SystemDeptTb> querySuperiorDeptByPid(SystemDeptTb dept, List<SystemDeptTb> deptList) {
if (dept.getPid() == null) { if (dept.getPid() == null) {
deptList.addAll(systemDeptMapper.selectDeptByPidIsNull()); deptList.addAll(this.listRootDept());
return deptList; return deptList;
} }
deptList.addAll(systemDeptMapper.selectDeptByPid(dept.getPid())); deptList.addAll(this.listDeptByPid(dept.getPid()));
return querySuperiorDeptListByPid(this.getDeptById(dept.getPid()), deptList); return querySuperiorDeptByPid(this.getDeptById(dept.getPid()), deptList);
}
private List<SystemDeptTb> listRootDept() {
LambdaQueryWrapper<SystemDeptTb> wrapper = new LambdaQueryWrapper<>();
wrapper.isNull(SystemDeptTb::getPid);
return systemDeptMapper.selectList(wrapper);
} }
/** /**
* 构建树形数据 * 构建树形数据
* *
* @param deptList /
* @return / * @return /
*/ */
public KitPageResult<SystemDeptTb> buildDeptTree(List<SystemDeptTb> deptList) { public KitPageResult<SystemDeptTb> searchDeptTree(List<Long> ids, Boolean exclude) {
Set<SystemDeptTb> deptSet1 = new LinkedHashSet<>();
for (Long id : ids) {
// 同级数据
SystemDeptTb dept = this.getDeptById(id);
// 上级数据
List<SystemDeptTb> depts = this.querySuperiorDeptByPid(dept, new ArrayList<>());
if (exclude) {
for (SystemDeptTb data : depts) {
if (data.getId().equals(dept.getPid())) {
data.setSubCount(data.getSubCount() - 1);
}
}
// 编辑部门时不显示自己以及自己下级的数据, 避免出现PID数据环形问题
depts = depts.stream().filter(i -> !ids.contains(i.getId())).collect(Collectors.toList());
}
deptSet1.addAll(depts);
}
ArrayList<SystemDeptTb> deptList = new ArrayList<>(deptSet1);
// 构建部门树
Set<SystemDeptTb> trees = new LinkedHashSet<>(); Set<SystemDeptTb> trees = new LinkedHashSet<>();
Set<SystemDeptTb> deptSet = new LinkedHashSet<>(); Set<SystemDeptTb> deptSet = new LinkedHashSet<>();
List<String> deptNames = deptList.stream().map(SystemDeptTb::getName).collect(Collectors.toList()); List<String> deptNames = deptList.stream().map(SystemDeptTb::getName).collect(Collectors.toList());
@@ -317,7 +343,7 @@ public class SystemDeptService {
*/ */
public void verifyBindRelationByIds(Set<SystemDeptTb> deptSet) { public void verifyBindRelationByIds(Set<SystemDeptTb> deptSet) {
Set<Long> deptIds = deptSet.stream().map(SystemDeptTb::getId).collect(Collectors.toSet()); Set<Long> deptIds = deptSet.stream().map(SystemDeptTb::getId).collect(Collectors.toSet());
if (systemUserMapper.countUserByDeptIds(deptIds) > 0) { if (systemUserService.countUserByDeptIds(deptIds) > 0) {
throw new BadRequestException("所选部门存在用户关联,请解除后再试!"); throw new BadRequestException("所选部门存在用户关联,请解除后再试!");
} }
if (systemRoleService.countRoleByDeptIds(deptIds) > 0) { if (systemRoleService.countRoleByDeptIds(deptIds) > 0) {
@@ -325,6 +351,12 @@ public class SystemDeptService {
} }
} }
private List<SystemDeptTb> listEnabledDepts() {
LambdaQueryWrapper<SystemDeptTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemDeptTb::getEnabled, 1);
return systemDeptMapper.selectList(wrapper);
}
/** /**
* 遍历所有部门和子部门 * 遍历所有部门和子部门
* *
@@ -336,16 +368,16 @@ public class SystemDeptService {
// 根部门 // 根部门
depts.add(this.getDeptById(id)); depts.add(this.getDeptById(id));
// 子部门 // 子部门
List<SystemDeptTb> deptList = queryDeptByPid(id); List<SystemDeptTb> deptList = listDeptByPid(id);
if (CollectionUtil.isNotEmpty(deptList)) { if (CollectionUtil.isNotEmpty(deptList)) {
depts = queryRelationDeptSet(deptList, depts); depts = queryRelationDeptByArgs(deptList, depts);
} }
} }
return depts; return depts;
} }
public List<SystemProductLineVo> queryDeptSelectDataSource() { public List<SystemProductLineVo> queryDeptSelectDataSource() {
List<SystemDeptTb> depts = systemDeptMapper.selectEnabledDepts(); List<SystemDeptTb> depts = this.listEnabledDepts();
return buildDeptSelectOptions(depts); return buildDeptSelectOptions(depts);
} }
@@ -394,7 +426,7 @@ public class SystemDeptService {
} }
public List<SystemProductLineTreeVo> queryDeptSelectProDataSource() { public List<SystemProductLineTreeVo> queryDeptSelectProDataSource() {
List<SystemDeptTb> depts = systemDeptMapper.selectEnabledDepts(); List<SystemDeptTb> depts = this.listEnabledDepts();
// 获取所有部门并按父子关系组织 // 获取所有部门并按父子关系组织
Map<Long, SystemDeptTb> deptMap = Map<Long, SystemDeptTb> deptMap =
depts.stream().collect(Collectors.toMap(SystemDeptTb::getId, Function.identity())); depts.stream().collect(Collectors.toMap(SystemDeptTb::getId, Function.identity()));
@@ -441,4 +473,10 @@ public class SystemDeptService {
vo.setChildren(children); vo.setChildren(children);
return vo; return vo;
} }
public List<SystemDeptTb> listDeptByPid(long pid) {
LambdaQueryWrapper<SystemDeptTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemDeptTb::getPid, pid);
return systemDeptMapper.selectList(wrapper);
}
} }
@@ -41,11 +41,8 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class SystemDictDetailService { public class SystemDictDetailService {
@Autowired private SystemDictDetailMapper systemDictDetailMapper;
@Autowired @Autowired private SystemDictMapper systemDictMapper;
private SystemDictDetailMapper systemDictDetailMapper;
@Autowired
private SystemDictMapper systemDictMapper;
/** /**
* 创建 * 创建
@@ -65,7 +62,7 @@ public class SystemDictDetailService {
* @param args / * @param args /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyDictDetailById(SystemDictDetailTb args) { public void updateDictDetailById(SystemDictDetailTb args) {
SystemDictDetailTb dictDetail = systemDictDetailMapper.selectById(args.getId()); SystemDictDetailTb dictDetail = systemDictDetailMapper.selectById(args.getId());
args.setId(dictDetail.getId()); args.setId(dictDetail.getId());
systemDictDetailMapper.insertOrUpdate(args); systemDictDetailMapper.insertOrUpdate(args);
@@ -77,7 +74,7 @@ public class SystemDictDetailService {
* @param id / * @param id /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void removeDictDetailById(Long id) { public void deleteDictDetailById(Long id) {
systemDictDetailMapper.deleteById(id); systemDictDetailMapper.deleteById(id);
} }
@@ -90,6 +87,18 @@ public class SystemDictDetailService {
} }
} }
private List<SystemDictDetailTb> listDictDetailByDictId(Long dictId) {
LambdaQueryWrapper<SystemDictDetailTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemDictDetailTb::getDictId, dictId);
return systemDictDetailMapper.selectList(wrapper);
}
private IPage<SystemDictDetailTb> searchDictDetailByArgs(List<Long> dictIds, Page<SystemDictDetailTb> page) {
LambdaQueryWrapper<SystemDictDetailTb> wrapper = new LambdaQueryWrapper<>();
wrapper.in(CollUtil.isNotEmpty(dictIds), SystemDictDetailTb::getDictId, dictIds);
return systemDictDetailMapper.selectPage(page, wrapper);
}
/** /**
* 分页查询 * 分页查询
* *
@@ -97,14 +106,14 @@ public class SystemDictDetailService {
* @param page 分页参数 * @param page 分页参数
* @return / * @return /
*/ */
public KitPageResult<SystemDictDetailVo> queryDictDetailByArgs(SystemQueryDictDetailArgs args, public KitPageResult<SystemDictDetailVo> searchDictDetail(SystemQueryDictDetailArgs args,
Page<SystemDictDetailTb> page) { Page<SystemDictDetailTb> page) {
IPage<SystemDictDetailVo> iPage = new Page<>(); IPage<SystemDictDetailVo> iPage = new Page<>();
List<Long> dictIds = new ArrayList<>(); List<Long> dictIds = new ArrayList<>();
List<SystemDictTb> dictTbs = new ArrayList<>(); List<SystemDictTb> dictTbs = new ArrayList<>();
if (args == null) { if (args == null) {
dictTbs.addAll(systemDictMapper.selectList(null)); dictTbs.addAll(systemDictMapper.listAll());
dictIds = dictTbs.stream().map(SystemDictTb::getId).collect(Collectors.toList()); dictIds = dictTbs.stream().map(SystemDictTb::getId).collect(Collectors.toList());
} else { } else {
String dictName = args.getDictName(); String dictName = args.getDictName();
@@ -121,7 +130,7 @@ public class SystemDictDetailService {
} }
Map<Long, SystemDictTb> id2ItemMap = dictTbs.stream().collect(Collectors.toMap(SystemDictTb::getId, i -> i)); Map<Long, SystemDictTb> id2ItemMap = dictTbs.stream().collect(Collectors.toMap(SystemDictTb::getId, i -> i));
iPage = systemDictDetailMapper.selectDictDetailByArgs(dictIds, page) iPage = this.searchDictDetailByArgs(dictIds, page)
.convert(i -> BeanUtil.copyProperties(i, SystemDictDetailVo.class)); .convert(i -> BeanUtil.copyProperties(i, SystemDictDetailVo.class));
for (SystemDictDetailVo record : iPage.getRecords()) { for (SystemDictDetailVo record : iPage.getRecords()) {
record.setDict(id2ItemMap.get(record.getDictId())); record.setDict(id2ItemMap.get(record.getDictId()));
@@ -135,7 +144,7 @@ public class SystemDictDetailService {
* @param name 字典名称 * @param name 字典名称
* @return / * @return /
*/ */
public List<SystemDictDetailVo> queryDictDetailByName(String name) { public List<SystemDictDetailVo> listDictDetailByName(String name) {
if (StrUtil.isBlank(name)) { if (StrUtil.isBlank(name)) {
return new ArrayList<>(); return new ArrayList<>();
} }
@@ -143,11 +152,10 @@ public class SystemDictDetailService {
if (systemDictTb == null) { if (systemDictTb == null) {
return new ArrayList<>(); return new ArrayList<>();
} }
return systemDictDetailMapper.selectByDictId(systemDictTb.getId()).stream().map(m -> { return this.listDictDetailByDictId(systemDictTb.getId()).stream().map(m -> {
SystemDictDetailVo detailVo = BeanUtil.copyProperties(m, SystemDictDetailVo.class); SystemDictDetailVo detailVo = BeanUtil.copyProperties(m, SystemDictDetailVo.class);
detailVo.setDict(systemDictTb); detailVo.setDict(systemDictTb);
return detailVo; return detailVo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
} }
@@ -17,6 +17,7 @@ package cn.odboy.system.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.base.KitPageResult; import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.dataobject.SystemDictDetailTb; import cn.odboy.system.dal.dataobject.SystemDictDetailTb;
import cn.odboy.system.dal.dataobject.SystemDictTb; import cn.odboy.system.dal.dataobject.SystemDictTb;
@@ -26,24 +27,24 @@ import cn.odboy.system.dal.model.SystemQueryDictArgs;
import cn.odboy.system.dal.mysql.SystemDictMapper; import cn.odboy.system.dal.mysql.SystemDictMapper;
import cn.odboy.util.KitFileUtil; import cn.odboy.util.KitFileUtil;
import cn.odboy.util.KitPageUtil; import cn.odboy.util.KitPageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class SystemDictService { public class SystemDictService {
@Autowired
private SystemDictMapper systemDictMapper; @Autowired private SystemDictMapper systemDictMapper;
@Autowired @Autowired private SystemDictDetailService systemDictDetailService;
private SystemDictDetailService systemDictDetailService;
/** /**
* 创建 * 创建
@@ -61,7 +62,7 @@ public class SystemDictService {
* @param args / * @param args /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyDictById(SystemDictTb args) { public void updateDictById(SystemDictTb args) {
SystemDictTb dict = systemDictMapper.selectById(args.getId()); SystemDictTb dict = systemDictMapper.selectById(args.getId());
dict.setName(args.getName()); dict.setName(args.getName());
dict.setDescription(args.getDescription()); dict.setDescription(args.getDescription());
@@ -74,7 +75,7 @@ public class SystemDictService {
* @param ids / * @param ids /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void removeDictByIds(Set<Long> ids) { public void deleteDictByIds(Set<Long> ids) {
// 删除字典 // 删除字典
systemDictMapper.deleteByIds(ids); systemDictMapper.deleteByIds(ids);
// 删除字典详情 // 删除字典详情
@@ -91,7 +92,7 @@ public class SystemDictService {
public void exportDictExcel(List<SystemDictTb> dicts, HttpServletResponse response) throws IOException { public void exportDictExcel(List<SystemDictTb> dicts, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>(); List<Map<String, Object>> list = new ArrayList<>();
for (SystemDictTb dict : dicts) { for (SystemDictTb dict : dicts) {
List<SystemDictDetailVo> dictDetails = systemDictDetailService.queryDictDetailByName(dict.getName()); List<SystemDictDetailVo> dictDetails = systemDictDetailService.listDictDetailByName(dict.getName());
if (CollectionUtil.isNotEmpty(dictDetails)) { if (CollectionUtil.isNotEmpty(dictDetails)) {
for (SystemDictDetailTb dictDetail : dictDetails) { for (SystemDictDetailTb dictDetail : dictDetails) {
Map<String, Object> map = new LinkedHashMap<>(); Map<String, Object> map = new LinkedHashMap<>();
@@ -122,21 +123,23 @@ public class SystemDictService {
* @param page 分页参数 * @param page 分页参数
* @return / * @return /
*/ */
public KitPageResult<SystemDictTb> queryDictByArgs(SystemQueryDictArgs args, Page<SystemDictTb> page) { public KitPageResult<SystemDictTb> searchDict(SystemQueryDictArgs args, Page<SystemDictTb> page) {
return KitPageUtil.toPage(systemDictMapper.selectDictByArgs(args, page)); LambdaQueryWrapper<SystemDictTb> wrapper = new LambdaQueryWrapper<>();
injectQueryParams(args, wrapper);
Page<SystemDictTb> selectPage = systemDictMapper.selectPage(page, wrapper);
return KitPageUtil.toPage(selectPage);
}
private void injectQueryParams(SystemQueryDictArgs args, LambdaQueryWrapper<SystemDictTb> wrapper) {
if (args != null) {
wrapper.and(StrUtil.isNotBlank(args.getBlurry()), c -> c.like(SystemDictTb::getName, args.getBlurry()).or()
.like(SystemDictTb::getDescription, args.getBlurry()));
}
} }
/**
* 查询全部数据
*
* @param args /
* @return /
*/
public List<SystemDictTb> queryDictByArgs(SystemQueryDictArgs args) { public List<SystemDictTb> queryDictByArgs(SystemQueryDictArgs args) {
return systemDictMapper.selectDictByArgs(args); LambdaQueryWrapper<SystemDictTb> wrapper = new LambdaQueryWrapper<>();
} injectQueryParams(args, wrapper);
return systemDictMapper.selectList(wrapper);
public SystemDictTb getById(int id) {
return systemDictMapper.selectById(id);
} }
} }
@@ -39,14 +39,10 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class SystemEmailService { public class SystemEmailService {
@Autowired @Autowired private SystemEmailConfigMapper systemEmailConfigMapper;
private SystemEmailConfigMapper systemEmailConfigMapper; @Autowired private KitRedisHelper redisHelper;
@Autowired @Autowired private AppProperties properties;
private KitRedisHelper redisHelper; @Value("${spring.application.title}") private String applicationTitle;
@Autowired
private AppProperties properties;
@Value("${spring.application.title}")
private String applicationTitle;
/** /**
* 更新邮件配置 * 更新邮件配置
@@ -54,7 +50,7 @@ public class SystemEmailService {
* @param emailConfig 邮箱配置 * @param emailConfig 邮箱配置
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyEmailConfig(SystemEmailConfigTb emailConfig) throws Exception { public void updateEmailConfigById(SystemEmailConfigTb emailConfig) throws Exception {
SystemEmailConfigTb systemEmailConfigTb = getLastEmailConfig(); SystemEmailConfigTb systemEmailConfigTb = getLastEmailConfig();
if (!emailConfig.getPassword().equals(systemEmailConfigTb.getPassword())) { if (!emailConfig.getPassword().equals(systemEmailConfigTb.getPassword())) {
// 对称加密 // 对称加密
@@ -16,23 +16,25 @@
package cn.odboy.system.service; package cn.odboy.system.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.base.KitPageResult; import cn.odboy.base.KitPageResult;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.system.dal.dataobject.SystemJobTb; import cn.odboy.system.dal.dataobject.SystemJobTb;
import cn.odboy.system.dal.model.SystemCreateJobArgs; import cn.odboy.system.dal.model.SystemCreateJobArgs;
import cn.odboy.system.dal.model.SystemQueryJobArgs; import cn.odboy.system.dal.model.SystemQueryJobArgs;
import cn.odboy.system.dal.mysql.SystemJobMapper; import cn.odboy.system.dal.mysql.SystemJobMapper;
import cn.odboy.system.dal.mysql.SystemUserMapper;
import cn.odboy.util.KitFileUtil; import cn.odboy.util.KitFileUtil;
import cn.odboy.util.KitPageUtil; import cn.odboy.util.KitPageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -40,10 +42,8 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class SystemJobService { public class SystemJobService {
@Autowired @Autowired private SystemJobMapper systemJobMapper;
private SystemJobMapper systemJobMapper; @Autowired private SystemUserService systemUserService;
@Autowired
private SystemUserMapper systemUserMapper;
/** /**
* 创建 * 创建
@@ -52,7 +52,7 @@ public class SystemJobService {
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void saveJob(SystemCreateJobArgs args) { public void saveJob(SystemCreateJobArgs args) {
SystemJobTb job = systemJobMapper.getJobByName(args.getName()); SystemJobTb job = this.getJobByName(args.getName());
if (job != null) { if (job != null) {
throw new BadRequestException("职位名称已存在"); throw new BadRequestException("职位名称已存在");
} }
@@ -65,9 +65,9 @@ public class SystemJobService {
* @param args / * @param args /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyJobById(SystemJobTb args) { public void updateJobById(SystemJobTb args) {
SystemJobTb job = systemJobMapper.selectById(args.getId()); SystemJobTb job = systemJobMapper.selectById(args.getId());
SystemJobTb old = systemJobMapper.getJobByName(args.getName()); SystemJobTb old = this.getJobByName(args.getName());
if (old != null && !old.getId().equals(args.getId())) { if (old != null && !old.getId().equals(args.getId())) {
throw new BadRequestException("职位名称已存在"); throw new BadRequestException("职位名称已存在");
} }
@@ -81,7 +81,7 @@ public class SystemJobService {
* @param ids / * @param ids /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void removeJobByIds(Set<Long> ids) { public void deleteJobByIds(Set<Long> ids) {
systemJobMapper.deleteByIds(ids); systemJobMapper.deleteByIds(ids);
} }
@@ -90,7 +90,6 @@ public class SystemJobService {
* *
* @param jobs 待导出的数据 * @param jobs 待导出的数据
* @param response / * @param response /
* @throws IOException
*/ */
public void exportJobExcel(List<SystemJobTb> jobs, HttpServletResponse response) throws IOException { public void exportJobExcel(List<SystemJobTb> jobs, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>(); List<Map<String, Object>> list = new ArrayList<>();
@@ -109,20 +108,21 @@ public class SystemJobService {
* *
* @param args 条件 * @param args 条件
* @param page 分页参数 * @param page 分页参数
* @return
*/ */
public KitPageResult<SystemJobTb> queryJobByArgs(SystemQueryJobArgs args, Page<SystemJobTb> page) { public KitPageResult<SystemJobTb> searchJobByArgs(SystemQueryJobArgs args, Page<SystemJobTb> page) {
return KitPageUtil.toPage(systemJobMapper.selectJobByArgs(args, page)); LambdaQueryWrapper<SystemJobTb> wrapper = new LambdaQueryWrapper<>();
this.injectQueryParams(args, wrapper);
Page<SystemJobTb> selectPage = systemJobMapper.selectPage(page, wrapper);
return KitPageUtil.toPage(selectPage);
} }
/** /**
* 查询全部数据 * 查询全部数据
*
* @param args /
* @return /
*/ */
public List<SystemJobTb> queryJobByArgs(SystemQueryJobArgs args) { public List<SystemJobTb> queryJobByArgs(SystemQueryJobArgs args) {
return systemJobMapper.selectJobByArgs(args); LambdaQueryWrapper<SystemJobTb> wrapper = new LambdaQueryWrapper<>();
this.injectQueryParams(args, wrapper);
return systemJobMapper.selectList(wrapper);
} }
/** /**
@@ -131,8 +131,25 @@ public class SystemJobService {
* @param ids / * @param ids /
*/ */
public void verifyBindRelationByIds(Set<Long> ids) { public void verifyBindRelationByIds(Set<Long> ids) {
if (systemUserMapper.countUserByJobIds(ids) > 0) { if (systemUserService.countUserByJobIds(ids) > 0) {
throw new BadRequestException("所选的岗位中存在用户关联, 请解除关联再试!"); throw new BadRequestException("所选的岗位中存在用户关联, 请解除关联再试!");
} }
} }
public SystemJobTb getJobByName(String name) {
LambdaQueryWrapper<SystemJobTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemJobTb::getName, name);
return systemJobMapper.selectOne(wrapper);
}
public void injectQueryParams(SystemQueryJobArgs args, LambdaQueryWrapper<SystemJobTb> wrapper) {
if (args != null) {
wrapper.like(StrUtil.isNotBlank(args.getName()), SystemJobTb::getName, args.getName());
wrapper.eq(args.getEnabled() != null, SystemJobTb::getEnabled, args.getEnabled());
if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
wrapper.between(SystemJobTb::getCreateTime, args.getCreateTime().get(0), args.getCreateTime().get(1));
}
}
wrapper.orderByDesc(SystemJobTb::getJobSort, SystemJobTb::getId);
}
} }
@@ -15,6 +15,7 @@
*/ */
package cn.odboy.system.service; package cn.odboy.system.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IORuntimeException;
@@ -28,7 +29,9 @@ import cn.odboy.system.dal.model.SystemQueryStorageArgs;
import cn.odboy.system.dal.mysql.SystemLocalStorageMapper; import cn.odboy.system.dal.mysql.SystemLocalStorageMapper;
import cn.odboy.util.KitFileUtil; import cn.odboy.util.KitFileUtil;
import cn.odboy.util.KitPageUtil; import cn.odboy.util.KitPageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
@@ -36,7 +39,6 @@ import java.util.Date;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -45,12 +47,9 @@ import org.springframework.web.multipart.MultipartFile;
@Service @Service
public class SystemLocalStorageService { public class SystemLocalStorageService {
@Autowired @Autowired private SystemLocalStorageMapper systemLocalStorageMapper;
private SystemLocalStorageMapper systemLocalStorageMapper; @Autowired private KitFileLocalUploadHelper fileUploadPathHelper;
@Autowired @Autowired private AppProperties properties;
private KitFileLocalUploadHelper fileUploadPathHelper;
@Autowired
private AppProperties properties;
/** /**
* 上传 * 上传
@@ -96,7 +95,7 @@ public class SystemLocalStorageService {
* @param args 文件信息 * @param args 文件信息
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyLocalStorageById(SystemLocalStorageTb args) { public void updateLocalStorageById(SystemLocalStorageTb args) {
SystemLocalStorageTb localStorage = systemLocalStorageMapper.selectById(args.getId()); SystemLocalStorageTb localStorage = systemLocalStorageMapper.selectById(args.getId());
localStorage.copy(args); localStorage.copy(args);
systemLocalStorageMapper.insertOrUpdate(localStorage); systemLocalStorageMapper.insertOrUpdate(localStorage);
@@ -108,7 +107,7 @@ public class SystemLocalStorageService {
* @param ids / * @param ids /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void removeFileByIds(Long[] ids) { public void deleteFileByIds(Long[] ids) {
for (Long id : ids) { for (Long id : ids) {
SystemLocalStorageTb storage = systemLocalStorageMapper.selectById(id); SystemLocalStorageTb storage = systemLocalStorageMapper.selectById(id);
try { try {
@@ -146,22 +145,36 @@ public class SystemLocalStorageService {
/** /**
* 分页查询 * 分页查询
* *
* @param criteria 条件 * @param args 条件
* @param page 分页参数 * @param page 分页参数
* @return / * @return /
*/ */
public KitPageResult<SystemLocalStorageTb> queryLocalStorage(SystemQueryStorageArgs criteria, public KitPageResult<SystemLocalStorageTb> searchLocalStorage(SystemQueryStorageArgs args,
Page<SystemLocalStorageTb> page) { Page<SystemLocalStorageTb> page) {
return KitPageUtil.toPage(systemLocalStorageMapper.selectLocalStorageByArgs(criteria, page)); LambdaQueryWrapper<SystemLocalStorageTb> wrapper = new LambdaQueryWrapper<>();
this.injectQueryParams(args, wrapper);
Page<SystemLocalStorageTb> selectPage = systemLocalStorageMapper.selectPage(page, wrapper);
return KitPageUtil.toPage(selectPage);
} }
/** private void injectQueryParams(SystemQueryStorageArgs args, LambdaQueryWrapper<SystemLocalStorageTb> wrapper) {
* 查询全部数据 if (args != null) {
* wrapper.and(StrUtil.isNotBlank(args.getBlurry()),
* @param criteria 条件 c -> c.like(SystemLocalStorageTb::getName, args.getBlurry()).or()
* @return / .like(SystemLocalStorageTb::getSuffix, args.getBlurry()).or()
*/ .like(SystemLocalStorageTb::getType, args.getBlurry()).or()
public List<SystemLocalStorageTb> queryLocalStorage(SystemQueryStorageArgs criteria) { .like(SystemLocalStorageTb::getCreateBy, args.getBlurry()));
return systemLocalStorageMapper.selectLocalStorageByArgs(criteria); if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
wrapper.between(SystemLocalStorageTb::getUpdateTime, args.getCreateTime().get(0),
args.getCreateTime().get(1));
}
}
wrapper.orderByDesc(SystemLocalStorageTb::getId);
}
public List<SystemLocalStorageTb> queryLocalStorageByArgs(SystemQueryStorageArgs args) {
LambdaQueryWrapper<SystemLocalStorageTb> wrapper = new LambdaQueryWrapper<>();
this.injectQueryParams(args, wrapper);
return systemLocalStorageMapper.selectList(wrapper);
} }
} }
@@ -34,6 +34,8 @@ import cn.odboy.system.dal.mysql.SystemRoleMenuMapper;
import cn.odboy.util.KitClassUtil; import cn.odboy.util.KitClassUtil;
import cn.odboy.util.KitFileUtil; import cn.odboy.util.KitFileUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
@@ -45,7 +47,6 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -55,14 +56,10 @@ public class SystemMenuService {
private static final String YES_STR = "是"; private static final String YES_STR = "是";
private static final String NO_STR = "否"; private static final String NO_STR = "否";
@Autowired @Autowired private SystemMenuMapper systemMenuMapper;
private SystemMenuMapper systemMenuMapper; @Autowired private SystemRoleMenuMapper systemRoleMenuMapper;
@Autowired @Autowired private SystemRoleService systemRoleService;
private SystemRoleMenuMapper systemRoleMenuMapper; @Autowired private SystemRoleMenuService systemRoleMenuService;
@Autowired
private SystemRoleService systemRoleService;
@Autowired
private SystemRoleMenuService systemRoleMenuService;
/** /**
* 创建 * 创建
@@ -71,11 +68,11 @@ public class SystemMenuService {
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void saveMenu(SystemMenuTb args) { public void saveMenu(SystemMenuTb args) {
if (systemMenuMapper.getMenuByTitle(args.getTitle()) != null) { if (this.getMenuByTitle(args.getTitle()) != null) {
throw new BadRequestException("菜单标题已存在"); throw new BadRequestException("菜单标题已存在");
} }
if (StrUtil.isNotBlank(args.getComponentName())) { if (StrUtil.isNotBlank(args.getComponentName())) {
if (systemMenuMapper.getMenuByComponentName(args.getComponentName()) != null) { if (this.getMenuByComponentName(args.getComponentName()) != null) {
throw new BadRequestException("菜单组件名称已存在"); throw new BadRequestException("菜单组件名称已存在");
} }
} }
@@ -101,7 +98,7 @@ public class SystemMenuService {
* @param args / * @param args /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyMenuById(SystemMenuTb args) { public void updateMenuById(SystemMenuTb args) {
if (args.getId().equals(args.getPid())) { if (args.getId().equals(args.getPid())) {
throw new BadRequestException("上级不能为自己"); throw new BadRequestException("上级不能为自己");
} }
@@ -112,7 +109,7 @@ public class SystemMenuService {
throw new BadRequestException(TransferProtocolConst.PREFIX_HTTPS_BAD_REQUEST); throw new BadRequestException(TransferProtocolConst.PREFIX_HTTPS_BAD_REQUEST);
} }
} }
SystemMenuTb menu1 = systemMenuMapper.getMenuByTitle(args.getTitle()); SystemMenuTb menu1 = this.getMenuByTitle(args.getTitle());
if (menu1 != null && !menu1.getId().equals(menu.getId())) { if (menu1 != null && !menu1.getId().equals(menu.getId())) {
throw new BadRequestException("菜单标题已存在"); throw new BadRequestException("菜单标题已存在");
} }
@@ -123,7 +120,7 @@ public class SystemMenuService {
Long oldPid = menu.getPid(); Long oldPid = menu.getPid();
Long newPid = args.getPid(); Long newPid = args.getPid();
if (StrUtil.isNotBlank(args.getComponentName())) { if (StrUtil.isNotBlank(args.getComponentName())) {
menu1 = systemMenuMapper.getMenuByComponentName(args.getComponentName()); menu1 = this.getMenuByComponentName(args.getComponentName());
if (menu1 != null && !menu1.getId().equals(menu.getId())) { if (menu1 != null && !menu1.getId().equals(menu.getId())) {
throw new BadRequestException("菜单组件名称已存在"); throw new BadRequestException("菜单组件名称已存在");
} }
@@ -153,17 +150,17 @@ public class SystemMenuService {
* 删除 * 删除
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void removeMenuByIds(Set<Long> ids) { public void deleteMenuByIds(Set<Long> ids) {
Set<SystemMenuTb> menuSet = new HashSet<>(); Set<SystemMenuTb> menuSet = new HashSet<>();
for (Long id : ids) { for (Long id : ids) {
List<SystemMenuTb> menuList = this.queryMenuByPid(id); List<SystemMenuTb> menuList = this.listMenuByPid(id);
menuSet.add(systemMenuMapper.selectById(id)); menuSet.add(systemMenuMapper.selectById(id));
menuSet = this.queryChildMenu(menuList, menuSet); menuSet = this.queryChildMenuByArgs(menuList, menuSet);
} }
List<Long> menuIds = List<Long> menuIds =
menuSet.stream().map(SystemMenuTb::getId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); menuSet.stream().map(SystemMenuTb::getId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
if (CollUtil.isNotEmpty(menuIds)) { if (CollUtil.isNotEmpty(menuIds)) {
KitSpringBeanHolder.getBean(SystemMenuService.class).removeRoleMenuByMenuIds(menuIds); KitSpringBeanHolder.getBean(SystemMenuService.class).deleteRoleMenuByMenuIds(menuIds);
systemMenuMapper.deleteByIds(menuIds); systemMenuMapper.deleteByIds(menuIds);
} }
for (SystemMenuTb menu : menuSet) { for (SystemMenuTb menu : menuSet) {
@@ -172,7 +169,7 @@ public class SystemMenuService {
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void removeRoleMenuByMenuIds(List<Long> menuIds) { public void deleteRoleMenuByMenuIds(List<Long> menuIds) {
if (CollUtil.isNotEmpty(menuIds)) { if (CollUtil.isNotEmpty(menuIds)) {
LambdaQueryWrapper<SystemRoleMenuTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemRoleMenuTb> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SystemRoleMenuTb::getMenuId, menuIds); wrapper.in(SystemRoleMenuTb::getMenuId, menuIds);
@@ -206,38 +203,41 @@ public class SystemMenuService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateMenuSubCnt(Long menuId) { public void updateMenuSubCnt(Long menuId) {
if (menuId != null) { if (menuId != null) {
long count = systemMenuMapper.countMenuByPid(menuId); long count = this.countMenuByPid(menuId);
systemMenuMapper.updateMenuSubCntByMenuId(count, menuId); LambdaUpdateWrapper<SystemMenuTb> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(SystemMenuTb::getId, menuId);
wrapper.set(SystemMenuTb::getSubCount, count);
systemMenuMapper.update(wrapper);
} }
} }
/** /**
* 查询全部数据 * 查询全部数据
* *
* @param criteria 条件 * @param args 条件
* @param isQuery / * @param isQuery /
* @return / * @return /
* @throws Exception / * @throws Exception /
*/ */
public List<SystemMenuTb> queryAllMenu(SystemQueryMenuArgs criteria, Boolean isQuery) throws Exception { public List<SystemMenuTb> queryAllMenu(SystemQueryMenuArgs args, Boolean isQuery) throws Exception {
if (Boolean.TRUE.equals(isQuery)) { if (Boolean.TRUE.equals(isQuery)) {
criteria.setPidIsNull(true); args.setPidIsNull(true);
List<Field> fields = KitClassUtil.getAllFields(criteria.getClass(), new ArrayList<>()); List<Field> fields = KitClassUtil.getAllFields(args.getClass(), new ArrayList<>());
for (Field field : fields) { for (Field field : fields) {
//设置对象的访问权限, 保证对private的属性的访问 //设置对象的访问权限, 保证对private的属性的访问
field.setAccessible(true); field.setAccessible(true);
Object val = field.get(criteria); Object val = field.get(args);
if ("pidIsNull".equals(field.getName())) { if ("pidIsNull".equals(field.getName())) {
continue; continue;
} }
// 如果有查询条件, 则不指定pidIsNull // 如果有查询条件, 则不指定pidIsNull
if (ObjectUtil.isNotNull(val)) { if (ObjectUtil.isNotNull(val)) {
criteria.setPidIsNull(null); args.setPidIsNull(null);
break; break;
} }
} }
} }
return systemMenuMapper.selectMenuByArgs(criteria); return this.queryMenuByArgs(args);
} }
/** /**
@@ -246,10 +246,10 @@ public class SystemMenuService {
* @param currentUserId / * @param currentUserId /
* @return / * @return /
*/ */
public List<SystemMenuTb> queryMenuListByUserId(Long currentUserId) { public List<SystemMenuTb> listMenuByUserId(Long currentUserId) {
List<SystemRoleVo> roles = systemRoleService.queryRoleByUsersId(currentUserId); List<SystemRoleVo> roles = systemRoleService.queryRoleByUsersId(currentUserId);
Set<Long> roleIds = roles.stream().map(SystemRoleTb::getId).collect(Collectors.toSet()); Set<Long> roleIds = roles.stream().map(SystemRoleTb::getId).collect(Collectors.toSet());
return new ArrayList<>(systemRoleMenuService.queryMenuByRoleIdsAndType(roleIds, 2)); return new ArrayList<>(systemRoleMenuService.queryMenuByRoleIds(roleIds));
} }
/** /**
@@ -259,12 +259,12 @@ public class SystemMenuService {
* @param menuSet / * @param menuSet /
* @return / * @return /
*/ */
public Set<SystemMenuTb> queryChildMenu(List<SystemMenuTb> menuList, Set<SystemMenuTb> menuSet) { public Set<SystemMenuTb> queryChildMenuByArgs(List<SystemMenuTb> menuList, Set<SystemMenuTb> menuSet) {
for (SystemMenuTb menu : menuList) { for (SystemMenuTb menu : menuList) {
menuSet.add(menu); menuSet.add(menu);
List<SystemMenuTb> menus = systemMenuMapper.selectMenuByPid(menu.getId()); List<SystemMenuTb> menus = this.listMenuByPid(menu.getId());
if (CollUtil.isNotEmpty(menus)) { if (CollUtil.isNotEmpty(menus)) {
queryChildMenu(menus, menuSet); queryChildMenuByArgs(menus, menuSet);
} }
} }
return menuSet; return menuSet;
@@ -276,12 +276,15 @@ public class SystemMenuService {
* @param pid / * @param pid /
* @return / * @return /
*/ */
public List<SystemMenuTb> queryMenuByPid(Long pid) { public List<SystemMenuTb> listMenuByPid(Long pid) {
List<SystemMenuTb> menus; List<SystemMenuTb> menus;
if (pid != null && !pid.equals(0L)) { if (pid != null && !pid.equals(0L)) {
menus = systemMenuMapper.selectMenuByPid(pid); LambdaQueryWrapper<SystemMenuTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemMenuTb::getPid, pid);
wrapper.orderByAsc(SystemMenuTb::getMenuSort);
return systemMenuMapper.selectList(wrapper);
} else { } else {
menus = systemMenuMapper.selectMenuByPidIsNull(); menus = this.listRootMenu();
} }
return menus; return menus;
} }
@@ -293,13 +296,13 @@ public class SystemMenuService {
* @param menus / * @param menus /
* @return / * @return /
*/ */
public List<SystemMenuTb> querySuperiorMenuList(SystemMenuTb menu, List<SystemMenuTb> menus) { public List<SystemMenuTb> querySuperiorMenuByArgs(SystemMenuTb menu, List<SystemMenuTb> menus) {
if (menu.getPid() == null) { if (menu.getPid() == null) {
menus.addAll(systemMenuMapper.selectMenuByPidIsNull()); menus.addAll(this.listRootMenu());
return menus; return menus;
} }
menus.addAll(systemMenuMapper.selectMenuByPid(menu.getPid())); menus.addAll(this.listMenuByPid(menu.getPid()));
return querySuperiorMenuList(systemMenuMapper.selectById(menu.getPid()), menus); return querySuperiorMenuByArgs(systemMenuMapper.selectById(menu.getPid()), menus);
} }
/** /**
@@ -401,7 +404,48 @@ public class SystemMenuService {
return menuVo1; return menuVo1;
} }
public List<SystemMenuTb> queryMenuByIds(List<Long> ids) { public List<SystemMenuTb> listMenuByIds(List<Long> ids) {
return systemMenuMapper.selectByIds(ids); return systemMenuMapper.selectByIds(ids);
} }
private SystemMenuTb getMenuByComponentName(String componentName) {
LambdaQueryWrapper<SystemMenuTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemMenuTb::getComponentName, componentName);
return systemMenuMapper.selectOne(wrapper);
}
private SystemMenuTb getMenuByTitle(String title) {
LambdaQueryWrapper<SystemMenuTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemMenuTb::getTitle, title);
return systemMenuMapper.selectOne(wrapper);
}
private Long countMenuByPid(Long pid) {
LambdaQueryWrapper<SystemMenuTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemMenuTb::getPid, pid);
return systemMenuMapper.selectCount(wrapper);
}
private List<SystemMenuTb> queryMenuByArgs(SystemQueryMenuArgs args) {
LambdaQueryWrapper<SystemMenuTb> wrapper = new LambdaQueryWrapper<>();
if (args != null) {
wrapper.isNull(args.getPidIsNull() != null, SystemMenuTb::getPid);
wrapper.eq(args.getPid() != null, SystemMenuTb::getPid, args.getPid());
wrapper.and(StrUtil.isNotBlank(args.getBlurry()), c -> c.like(SystemMenuTb::getTitle, args.getBlurry()).or()
.like(SystemMenuTb::getComponentName, args.getBlurry()).or()
.like(SystemMenuTb::getPermission, args.getBlurry()));
if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
wrapper.between(SystemMenuTb::getCreateTime, args.getCreateTime().get(0), args.getCreateTime().get(1));
}
}
wrapper.orderByAsc(SystemMenuTb::getMenuSort);
return systemMenuMapper.selectList(wrapper);
}
private List<SystemMenuTb> listRootMenu() {
LambdaQueryWrapper<SystemMenuTb> wrapper = new LambdaQueryWrapper<>();
wrapper.isNull(SystemMenuTb::getPid);
wrapper.orderByAsc(SystemMenuTb::getMenuSort);
return systemMenuMapper.selectList(wrapper);
}
} }
@@ -51,7 +51,7 @@ public class SystemMonitorService {
* *
* @return Map<String, Object> * @return Map<String, Object>
*/ */
public Map<String, Object> queryServerMonitorInfo() { public Map<String, Object> getServerMonitorInfo() {
Map<String, Object> resultMap = new LinkedHashMap<>(8); Map<String, Object> resultMap = new LinkedHashMap<>(8);
try { try {
SystemInfo si = new SystemInfo(); SystemInfo si = new SystemInfo();
@@ -21,14 +21,14 @@ import cn.odboy.system.dal.model.SystemOssStorageVo;
import cn.odboy.system.dal.model.SystemQueryStorageArgs; import cn.odboy.system.dal.model.SystemQueryStorageArgs;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
/** /**
* <p> * <p>
* OSS存储 服务类 * OSS存储接口
* </p> * </p>
* *
* @author codegen * @author codegen
@@ -36,13 +36,13 @@ import org.springframework.web.multipart.MultipartFile;
*/ */
public interface SystemOssStorageService extends IService<SystemOssStorageTb> { public interface SystemOssStorageService extends IService<SystemOssStorageTb> {
KitPageResult<SystemOssStorageVo> queryOssStorage(SystemQueryStorageArgs criteria, Page<SystemOssStorageTb> page); KitPageResult<SystemOssStorageVo> searchOssStorage(SystemQueryStorageArgs args, Page<SystemOssStorageTb> page);
List<SystemOssStorageVo> queryOssStorage(SystemQueryStorageArgs criteria); List<SystemOssStorageVo> queryOssStorage(SystemQueryStorageArgs args);
void exportOssStorageExcel(List<SystemOssStorageVo> list, HttpServletResponse response) throws IOException; void exportOssStorageExcel(List<SystemOssStorageVo> list, HttpServletResponse response) throws IOException;
String uploadFile(MultipartFile file); String uploadFile(MultipartFile file);
void removeFileByIds(Long[] ids); void deleteFileByIds(Long[] ids);
} }
@@ -33,6 +33,7 @@ import cn.odboy.util.KitFileUtil;
import cn.odboy.util.KitPageUtil; import cn.odboy.util.KitPageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@@ -40,7 +41,6 @@ import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import jakarta.servlet.http.HttpServletResponse;
import org.quartz.CronExpression; import org.quartz.CronExpression;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -49,14 +49,10 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class SystemQuartzJobService { public class SystemQuartzJobService {
@Autowired @Autowired private SystemQuartzJobMapper systemQuartzJobMapper;
private SystemQuartzJobMapper systemQuartzJobMapper; @Autowired private SystemQuartzLogMapper systemQuartzLogMapper;
@Autowired @Autowired private QuartzManage quartzManage;
private SystemQuartzLogMapper systemQuartzLogMapper; @Autowired private KitRedisHelper redisHelper;
@Autowired
private QuartzManage quartzManage;
@Autowired
private KitRedisHelper redisHelper;
/** /**
* 创建 * 创建
@@ -78,7 +74,7 @@ public class SystemQuartzJobService {
* @param args / * @param args /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyQuartzJobResumeCron(SystemUpdateQuartzJobArgs args) { public void updateQuartzJobResumeCron(SystemUpdateQuartzJobArgs args) {
if (!CronExpression.isValidExpression(args.getCronExpression())) { if (!CronExpression.isValidExpression(args.getCronExpression())) {
throw new BadRequestException("cron表达式格式错误"); throw new BadRequestException("cron表达式格式错误");
} }
@@ -126,7 +122,7 @@ public class SystemQuartzJobService {
* @param ids / * @param ids /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void removeJobByIds(Set<Long> ids) { public void deleteJobByIds(Set<Long> ids) {
for (Long id : ids) { for (Long id : ids) {
SystemQuartzJobTb quartzJob = systemQuartzJobMapper.selectById(id); SystemQuartzJobTb quartzJob = systemQuartzJobMapper.selectById(id);
quartzManage.deleteJob(quartzJob); quartzManage.deleteJob(quartzJob);
@@ -225,39 +221,37 @@ public class SystemQuartzJobService {
/** /**
* 分页查询 * 分页查询
* *
* @param criteria 条件 * @param args 条件
* @param page 分页参数 * @param page 分页参数
* @return / * @return /
*/ */
public KitPageResult<SystemQuartzJobTb> queryQuartzJobByArgs(SystemQueryQuartzJobArgs criteria, public KitPageResult<SystemQuartzJobTb> searchQuartzJobByArgs(SystemQueryQuartzJobArgs args,
Page<SystemQuartzJobTb> page) { Page<SystemQuartzJobTb> page) {
LambdaQueryWrapper<SystemQuartzJobTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemQuartzJobTb> wrapper = new LambdaQueryWrapper<>();
this.injectQuartzJobQueryParams(criteria, wrapper); this.injectQuartzJobQueryParams(args, wrapper);
return KitPageUtil.toPage(systemQuartzJobMapper.selectPage(page, wrapper)); return KitPageUtil.toPage(systemQuartzJobMapper.selectPage(page, wrapper));
} }
private void injectQuartzJobQueryParams(SystemQueryQuartzJobArgs criteria, private void injectQuartzJobQueryParams(SystemQueryQuartzJobArgs args,
LambdaQueryWrapper<SystemQuartzJobTb> wrapper) { LambdaQueryWrapper<SystemQuartzJobTb> wrapper) {
if (criteria != null) { if (args != null) {
wrapper.like(StrUtil.isNotBlank(criteria.getJobName()), SystemQuartzJobTb::getJobName, wrapper.like(StrUtil.isNotBlank(args.getJobName()), SystemQuartzJobTb::getJobName, args.getJobName());
criteria.getJobName()); if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
if (CollUtil.isNotEmpty(criteria.getCreateTime()) && criteria.getCreateTime().size() >= 2) { wrapper.between(SystemQuartzJobTb::getUpdateTime, args.getCreateTime().get(0),
wrapper.between(SystemQuartzJobTb::getUpdateTime, criteria.getCreateTime().get(0), args.getCreateTime().get(1));
criteria.getCreateTime().get(1));
} }
} }
wrapper.orderByDesc(SystemQuartzJobTb::getId); wrapper.orderByDesc(SystemQuartzJobTb::getId);
} }
private void injectQuartzLogQueryParams(SystemQueryQuartzJobArgs criteria, private void injectQuartzLogQueryParams(SystemQueryQuartzJobArgs args,
LambdaQueryWrapper<SystemQuartzLogTb> wrapper) { LambdaQueryWrapper<SystemQuartzLogTb> wrapper) {
if (criteria != null) { if (args != null) {
wrapper.like(StrUtil.isNotBlank(criteria.getJobName()), SystemQuartzLogTb::getJobName, wrapper.like(StrUtil.isNotBlank(args.getJobName()), SystemQuartzLogTb::getJobName, args.getJobName());
criteria.getJobName()); wrapper.eq(args.getIsSuccess() != null, SystemQuartzLogTb::getIsSuccess, args.getIsSuccess());
wrapper.eq(criteria.getIsSuccess() != null, SystemQuartzLogTb::getIsSuccess, criteria.getIsSuccess()); if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
if (CollUtil.isNotEmpty(criteria.getCreateTime()) && criteria.getCreateTime().size() >= 2) { wrapper.between(SystemQuartzLogTb::getCreateTime, args.getCreateTime().get(0),
wrapper.between(SystemQuartzLogTb::getCreateTime, criteria.getCreateTime().get(0), args.getCreateTime().get(1));
criteria.getCreateTime().get(1));
} }
} }
wrapper.orderByDesc(SystemQuartzLogTb::getId); wrapper.orderByDesc(SystemQuartzLogTb::getId);
@@ -266,38 +260,38 @@ public class SystemQuartzJobService {
/** /**
* 分页查询日志 * 分页查询日志
* *
* @param criteria 条件 * @param args 条件
* @param page 分页参数 * @param page 分页参数
* @return / * @return /
*/ */
public KitPageResult<SystemQuartzLogTb> queryQuartzLogByArgs(SystemQueryQuartzJobArgs criteria, public KitPageResult<SystemQuartzLogTb> searchQuartzLogByArgs(SystemQueryQuartzJobArgs args,
Page<SystemQuartzLogTb> page) { Page<SystemQuartzLogTb> page) {
LambdaQueryWrapper<SystemQuartzLogTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemQuartzLogTb> wrapper = new LambdaQueryWrapper<>();
this.injectQuartzLogQueryParams(criteria, wrapper); this.injectQuartzLogQueryParams(args, wrapper);
return KitPageUtil.toPage(systemQuartzLogMapper.selectPage(page, wrapper)); return KitPageUtil.toPage(systemQuartzLogMapper.selectPage(page, wrapper));
} }
/** /**
* 查询全部 * 查询全部
* *
* @param criteria 条件 * @param args 条件
* @return / * @return /
*/ */
public List<SystemQuartzJobTb> queryQuartzJobByArgs(SystemQueryQuartzJobArgs criteria) { public List<SystemQuartzJobTb> queryQuartzJobByArgs(SystemQueryQuartzJobArgs args) {
LambdaQueryWrapper<SystemQuartzJobTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemQuartzJobTb> wrapper = new LambdaQueryWrapper<>();
this.injectQuartzJobQueryParams(criteria, wrapper); this.injectQuartzJobQueryParams(args, wrapper);
return systemQuartzJobMapper.selectList(wrapper); return systemQuartzJobMapper.selectList(wrapper);
} }
/** /**
* 查询全部 * 查询全部
* *
* @param criteria 条件 * @param args 条件
* @return / * @return /
*/ */
public List<SystemQuartzLogTb> queryQuartzLogByArgs(SystemQueryQuartzJobArgs criteria) { public List<SystemQuartzLogTb> queryQuartzLogByArgs(SystemQueryQuartzJobArgs args) {
LambdaQueryWrapper<SystemQuartzLogTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemQuartzLogTb> wrapper = new LambdaQueryWrapper<>();
this.injectQuartzLogQueryParams(criteria, wrapper); this.injectQuartzLogQueryParams(args, wrapper);
return systemQuartzLogMapper.selectList(wrapper); return systemQuartzLogMapper.selectList(wrapper);
} }
@@ -305,7 +299,7 @@ public class SystemQuartzJobService {
return systemQuartzJobMapper.selectById(id); return systemQuartzJobMapper.selectById(id);
} }
public List<SystemQuartzJobTb> queryEnableQuartzJob() { public List<SystemQuartzJobTb> listEnableQuartzJob() {
LambdaQueryWrapper<SystemQuartzJobTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemQuartzJobTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemQuartzJobTb::getIsPause, 0); wrapper.eq(SystemQuartzJobTb::getIsPause, 0);
return systemQuartzJobMapper.selectList(wrapper); return systemQuartzJobMapper.selectList(wrapper);
@@ -32,10 +32,8 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class SystemRoleDeptService { public class SystemRoleDeptService {
@Autowired @Autowired private SystemRoleDeptMapper systemRoleDeptMapper;
private SystemRoleDeptMapper systemRoleDeptMapper; @Autowired private SystemDeptMapper systemDeptMapper;
@Autowired
private SystemDeptMapper systemDeptMapper;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void batchDeleteRoleDept(Set<Long> roleIds) { public void batchDeleteRoleDept(Set<Long> roleIds) {
@@ -66,7 +64,7 @@ public class SystemRoleDeptService {
* @param roleId / * @param roleId /
* @return / * @return /
*/ */
public List<SystemDeptTb> selectDeptByRoleId(Long roleId) { public List<SystemDeptTb> listDeptByRoleId(Long roleId) {
LambdaQueryWrapper<SystemRoleDeptTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemRoleDeptTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemRoleDeptTb::getRoleId, roleId); wrapper.eq(SystemRoleDeptTb::getRoleId, roleId);
List<SystemRoleDeptTb> systemRoleDeptTbs = systemRoleDeptMapper.selectList(wrapper); List<SystemRoleDeptTb> systemRoleDeptTbs = systemRoleDeptMapper.selectList(wrapper);
@@ -33,10 +33,8 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class SystemRoleMenuService { public class SystemRoleMenuService {
@Autowired @Autowired private SystemRoleMenuMapper systemRoleMenuMapper;
private SystemRoleMenuMapper systemRoleMenuMapper; @Autowired private SystemMenuMapper systemMenuMapper;
@Autowired
private SystemMenuMapper systemMenuMapper;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void deleteRoleMenuByRoleId(Long roleId) { public void deleteRoleMenuByRoleId(Long roleId) {
@@ -68,7 +66,7 @@ public class SystemRoleMenuService {
} }
} }
public LinkedHashSet<SystemMenuTb> queryMenuByRoleIdsAndType(Set<Long> roleIds, int menuType) { public LinkedHashSet<SystemMenuTb> queryMenuByRoleIds(Set<Long> roleIds) {
if (CollUtil.isEmpty(roleIds)) { if (CollUtil.isEmpty(roleIds)) {
return new LinkedHashSet<>(); return new LinkedHashSet<>();
} }
@@ -79,7 +77,6 @@ public class SystemRoleMenuService {
if (CollUtil.isEmpty(menuIds)) { if (CollUtil.isEmpty(menuIds)) {
return new LinkedHashSet<>(); return new LinkedHashSet<>();
} }
LambdaQueryWrapper<SystemMenuTb> menuWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemMenuTb> menuWrapper = new LambdaQueryWrapper<>();
menuWrapper.in(SystemMenuTb::getId, menuIds); menuWrapper.in(SystemMenuTb::getId, menuIds);
// 排除"按钮" // 排除"按钮"
@@ -21,26 +21,24 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.odboy.base.KitPageResult; import cn.odboy.base.KitPageResult;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.system.dal.dataobject.SystemMenuTb;
import cn.odboy.system.dal.dataobject.SystemRoleTb;
import cn.odboy.system.dal.dataobject.SystemUserTb;
import cn.odboy.system.dal.dataobject.SystemRoleMenuTb;
import cn.odboy.system.dal.dataobject.SystemRoleDeptTb;
import cn.odboy.system.dal.dataobject.SystemUserRoleTb;
import cn.odboy.system.dal.dataobject.SystemDeptTb; import cn.odboy.system.dal.dataobject.SystemDeptTb;
import cn.odboy.system.dal.dataobject.SystemMenuTb;
import cn.odboy.system.dal.dataobject.SystemRoleDeptTb;
import cn.odboy.system.dal.dataobject.SystemRoleTb;
import cn.odboy.system.dal.dataobject.SystemUserRoleTb;
import cn.odboy.system.dal.dataobject.SystemUserTb;
import cn.odboy.system.dal.model.SystemCreateRoleArgs; import cn.odboy.system.dal.model.SystemCreateRoleArgs;
import cn.odboy.system.dal.model.SystemQueryRoleArgs; import cn.odboy.system.dal.model.SystemQueryRoleArgs;
import cn.odboy.system.dal.model.SystemRoleCodeVo; import cn.odboy.system.dal.model.SystemRoleCodeVo;
import cn.odboy.system.dal.model.SystemRoleVo; import cn.odboy.system.dal.model.SystemRoleVo;
import cn.odboy.system.dal.mysql.SystemRoleMapper;
import cn.odboy.system.dal.mysql.SystemUserMapper;
import cn.odboy.system.dal.mysql.SystemRoleMenuMapper;
import cn.odboy.system.dal.mysql.SystemRoleDeptMapper; import cn.odboy.system.dal.mysql.SystemRoleDeptMapper;
import cn.odboy.system.dal.mysql.SystemRoleMapper;
import cn.odboy.system.dal.mysql.SystemUserRoleMapper; import cn.odboy.system.dal.mysql.SystemUserRoleMapper;
import cn.odboy.util.KitFileUtil; import cn.odboy.util.KitFileUtil;
import cn.odboy.util.KitPageUtil; import cn.odboy.util.KitPageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -51,28 +49,18 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class SystemRoleService { public class SystemRoleService {
@Autowired private SystemRoleMapper systemRoleMapper;
@Autowired @Autowired private SystemRoleMenuService systemRoleMenuService;
private SystemRoleMapper systemRoleMapper; @Autowired private SystemRoleDeptService systemRoleDeptService;
@Autowired @Autowired private SystemRoleDeptMapper systemRoleDeptMapper;
private SystemRoleMenuService systemRoleMenuService; @Autowired private SystemUserRoleMapper systemUserRoleMapper;
@Autowired @Autowired private SystemUserService systemUserService;
private SystemUserMapper systemUserMapper;
@Autowired
private SystemRoleDeptService systemRoleDeptService;
@Autowired
private SystemRoleMenuMapper systemRoleMenuMapper;
@Autowired
private SystemRoleDeptMapper systemRoleDeptMapper;
@Autowired
private SystemUserRoleMapper systemUserRoleMapper;
/** /**
* 创建 * 创建
@@ -103,7 +91,7 @@ public class SystemRoleService {
* @param args / * @param args /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyRoleById(SystemRoleVo args) { public void updateRoleById(SystemRoleVo args) {
SystemRoleVo role = BeanUtil.copyProperties(systemRoleMapper.selectById(args.getId()), SystemRoleVo.class); SystemRoleVo role = BeanUtil.copyProperties(systemRoleMapper.selectById(args.getId()), SystemRoleVo.class);
SystemRoleTb role1 = this.getRoleByName(args.getName()); SystemRoleTb role1 = this.getRoleByName(args.getName());
if (role1 != null && !role1.getId().equals(role.getId())) { if (role1 != null && !role1.getId().equals(role.getId())) {
@@ -129,7 +117,7 @@ public class SystemRoleService {
* *
* @param role / * @param role /
*/ */
public void modifyBindMenuById(SystemRoleVo role) { public void updateBindMenuById(SystemRoleVo role) {
// 更新菜单 // 更新菜单
systemRoleMenuService.deleteRoleMenuByRoleId(role.getId()); systemRoleMenuService.deleteRoleMenuByRoleId(role.getId());
// 判断是否为空 // 判断是否为空
@@ -144,7 +132,7 @@ public class SystemRoleService {
* @param ids / * @param ids /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void removeRoleByIds(Set<Long> ids) { public void deleteRoleByIds(Set<Long> ids) {
systemRoleMapper.deleteByIds(ids); systemRoleMapper.deleteByIds(ids);
// 删除角色部门关联数据、角色菜单关联数据 // 删除角色部门关联数据、角色菜单关联数据
systemRoleDeptService.batchDeleteRoleDept(ids); systemRoleDeptService.batchDeleteRoleDept(ids);
@@ -173,14 +161,8 @@ public class SystemRoleService {
/** /**
* 查询全部角色 * 查询全部角色
*
* @return
*/ */
public List<SystemRoleTb> queryAllRole() { public List<SystemRoleTb> listAllRole() {
return this.selectAllRole();
}
private List<SystemRoleTb> selectAllRole() {
LambdaQueryWrapper<SystemRoleTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemRoleTb> wrapper = new LambdaQueryWrapper<>();
wrapper.orderByAsc(SystemRoleTb::getLevel); wrapper.orderByAsc(SystemRoleTb::getLevel);
return systemRoleMapper.selectList(wrapper); return systemRoleMapper.selectList(wrapper);
@@ -189,26 +171,22 @@ public class SystemRoleService {
/** /**
* 根据条件查询全部角色 * 根据条件查询全部角色
* *
* @param criteria 条件 * @param args 条件
* @return * @return
*/ */
public List<SystemRoleVo> queryRoleByArgs(SystemQueryRoleArgs criteria) { public List<SystemRoleVo> queryRoleByArgs(SystemQueryRoleArgs args) {
// 查询角色基本信息 // 查询角色基本信息
LambdaQueryWrapper<SystemRoleTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemRoleTb> wrapper = new LambdaQueryWrapper<>();
if (criteria != null) { if (args != null) {
wrapper.and(StrUtil.isNotBlank(criteria.getBlurry()), wrapper.and(StrUtil.isNotBlank(args.getBlurry()), c -> c.like(SystemRoleTb::getName, args.getBlurry()).or()
c -> c.like(SystemRoleTb::getName, criteria.getBlurry()).or() .like(SystemRoleTb::getDescription, args.getBlurry()));
.like(SystemRoleTb::getDescription, criteria.getBlurry())); if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
if (CollUtil.isNotEmpty(criteria.getCreateTime()) && criteria.getCreateTime().size() >= 2) { wrapper.between(SystemRoleTb::getCreateTime, args.getCreateTime().get(0), args.getCreateTime().get(1));
wrapper.between(SystemRoleTb::getCreateTime, criteria.getCreateTime().get(0),
criteria.getCreateTime().get(1));
} }
} }
wrapper.orderByAsc(SystemRoleTb::getLevel); wrapper.orderByAsc(SystemRoleTb::getLevel);
if (args != null && args.getSize() != null) {
// 分页处理 Page<SystemRoleTb> rolePage = new Page<>(args.getPage(), args.getSize());
if (criteria != null && criteria.getOffset() > 0 && criteria.getSize() != null) {
Page<SystemRoleTb> rolePage = new Page<>(criteria.getOffset() / criteria.getSize() + 1, criteria.getSize());
Page<SystemRoleTb> page = systemRoleMapper.selectPage(rolePage, wrapper); Page<SystemRoleTb> page = systemRoleMapper.selectPage(rolePage, wrapper);
List<SystemRoleTb> roles = page.getRecords(); List<SystemRoleTb> roles = page.getRecords();
return roles.stream().map(this::convertToRoleVo).collect(Collectors.toList()); return roles.stream().map(this::convertToRoleVo).collect(Collectors.toList());
@@ -221,14 +199,14 @@ public class SystemRoleService {
/** /**
* 分页查询角色 * 分页查询角色
* *
* @param criteria 条件 * @param args 条件
* @param page 分页参数 * @param page 分页参数
* @return * @return
*/ */
public KitPageResult<SystemRoleVo> queryRoleByArgs(SystemQueryRoleArgs criteria, Page<Object> page) { public KitPageResult<SystemRoleVo> searchRoleByArgs(SystemQueryRoleArgs args, Page<Object> page) {
criteria.setOffset(page.offset()); args.setOffset(page.offset());
List<SystemRoleVo> roles = this.queryRoleByArgs(criteria); List<SystemRoleVo> roles = this.queryRoleByArgs(args);
Long total = systemRoleMapper.countRoleByArgs(criteria); Long total = this.countRoleByArgs(args);
return KitPageUtil.toPage(roles, total); return KitPageUtil.toPage(roles, total);
} }
@@ -243,14 +221,11 @@ public class SystemRoleService {
LambdaQueryWrapper<SystemUserRoleTb> userRoleWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemUserRoleTb> userRoleWrapper = new LambdaQueryWrapper<>();
userRoleWrapper.eq(SystemUserRoleTb::getUserId, userId); userRoleWrapper.eq(SystemUserRoleTb::getUserId, userId);
List<SystemUserRoleTb> userRoles = systemUserRoleMapper.selectList(userRoleWrapper); List<SystemUserRoleTb> userRoles = systemUserRoleMapper.selectList(userRoleWrapper);
if (CollUtil.isEmpty(userRoles)) { if (CollUtil.isEmpty(userRoles)) {
return new ArrayList<>(); return new ArrayList<>();
} }
Set<Long> roleIds = userRoles.stream().map(SystemUserRoleTb::getRoleId).collect(Collectors.toSet()); Set<Long> roleIds = userRoles.stream().map(SystemUserRoleTb::getRoleId).collect(Collectors.toSet());
List<SystemRoleTb> roles = systemRoleMapper.selectByIds(roleIds); List<SystemRoleTb> roles = systemRoleMapper.selectByIds(roleIds);
return roles.stream().map(this::convertToRoleVo).collect(Collectors.toList()); return roles.stream().map(this::convertToRoleVo).collect(Collectors.toList());
} }
@@ -296,7 +271,7 @@ public class SystemRoleService {
* @param ids / * @param ids /
*/ */
public void verifyBindRelationByIds(Set<Long> ids) { public void verifyBindRelationByIds(Set<Long> ids) {
if (systemUserMapper.countUserByRoleIds(ids) > 0) { if (systemUserService.countUserByRoleIds(ids) > 0) {
throw new BadRequestException("所选角色存在用户关联, 请解除关联再试!"); throw new BadRequestException("所选角色存在用户关联, 请解除关联再试!");
} }
} }
@@ -311,56 +286,20 @@ public class SystemRoleService {
return systemRoleMapper.selectById(id); return systemRoleMapper.selectById(id);
} }
/**
* 根据ID查询角色详情(包含关联信息)
*
* @param id /
* @return /
*/
public SystemRoleVo getRoleVoById(Long id) {
SystemRoleTb role = systemRoleMapper.selectById(id);
if (role == null) {
return null;
}
return convertToRoleVo(role);
}
/**
* 根据菜单ID查询角色
*
* @param menuId 菜单ID
* @return /
*/
public List<SystemRoleVo> queryRoleByMenuId(Long menuId) {
// 查询包含该菜单的角色ID列表
LambdaQueryWrapper<SystemRoleMenuTb> roleMenuWrapper = new LambdaQueryWrapper<>();
roleMenuWrapper.eq(SystemRoleMenuTb::getMenuId, menuId);
List<SystemRoleMenuTb> roleMenuList = systemRoleMenuMapper.selectList(roleMenuWrapper);
if (CollUtil.isEmpty(roleMenuList)) {
return new ArrayList<>();
}
Set<Long> roleIds = roleMenuList.stream().map(SystemRoleMenuTb::getRoleId).collect(Collectors.toSet());
List<SystemRoleTb> roles = systemRoleMapper.selectByIds(roleIds);
return roles.stream().map(this::convertToRoleVo).collect(Collectors.toList());
}
/** /**
* 根据部门ID统计角色数量 * 根据部门ID统计角色数量
* *
* @param deptIds 部门ID集合 * @param deptIds 部门ID集合
* @return / * @return /
*/ */
public Integer countRoleByDeptIds(Set<Long> deptIds) { public Long countRoleByDeptIds(Set<Long> deptIds) {
if (CollUtil.isEmpty(deptIds)) { if (CollUtil.isEmpty(deptIds)) {
return 0; return 0L;
} }
LambdaQueryWrapper<SystemRoleDeptTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemRoleDeptTb> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SystemRoleDeptTb::getDeptId, deptIds); wrapper.in(SystemRoleDeptTb::getDeptId, deptIds);
return systemRoleDeptMapper.selectCount(wrapper).intValue(); return systemRoleDeptMapper.selectCount(wrapper);
} }
/** /**
@@ -375,16 +314,26 @@ public class SystemRoleService {
} }
SystemRoleVo roleVo = BeanUtil.copyProperties(role, SystemRoleVo.class); SystemRoleVo roleVo = BeanUtil.copyProperties(role, SystemRoleVo.class);
// 查询关联的菜单信息 // 查询关联的菜单信息
Set<SystemMenuTb> menus = systemRoleMenuService.queryMenuByRoleIdsAndType( Set<SystemMenuTb> menus = systemRoleMenuService.queryMenuByRoleIds(Collections.singleton(role.getId()));
Collections.singleton(role.getId()), -1);
roleVo.setMenus(menus); roleVo.setMenus(menus);
// 查询关联的部门信息 // 查询关联的部门信息
List<SystemDeptTb> depts = systemRoleDeptService.selectDeptByRoleId(role.getId()); List<SystemDeptTb> depts = systemRoleDeptService.listDeptByRoleId(role.getId());
roleVo.setDepts(new LinkedHashSet<>(depts)); roleVo.setDepts(new LinkedHashSet<>(depts));
return roleVo; return roleVo;
} }
public Long countRoleByArgs(SystemQueryRoleArgs args) {
LambdaQueryWrapper<SystemRoleTb> wrapper = new LambdaQueryWrapper<>();
if (args != null) {
wrapper.and(StrUtil.isNotBlank(args.getBlurry()), c -> c.like(SystemRoleTb::getName, args.getBlurry()).or()
.like(SystemRoleTb::getDescription, args.getBlurry()));
if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
wrapper.between(SystemRoleTb::getCreateTime, args.getCreateTime().get(0), args.getCreateTime().get(1));
}
}
return systemRoleMapper.selectCount(wrapper);
}
} }
@@ -30,8 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class SystemUserJobService { public class SystemUserJobService {
@Autowired @Autowired private SystemUserJobMapper systemUserJobMapper;
private SystemUserJobMapper systemUserJobMapper;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void batchInsertUserJob(Set<SystemJobTb> jobs, Long userId) { public void batchInsertUserJob(Set<SystemJobTb> jobs, Long userId) {
@@ -30,8 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class SystemUserRoleService { public class SystemUserRoleService {
@Autowired @Autowired private SystemUserRoleMapper systemUserRoleMapper;
private SystemUserRoleMapper systemUserRoleMapper;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void batchInsertUserRole(Set<SystemRoleTb> roles, Long userId) { public void batchInsertUserRole(Set<SystemRoleTb> roles, Long userId) {
@@ -31,12 +31,12 @@ import cn.odboy.system.dal.dataobject.SystemUserRoleTb;
import cn.odboy.system.dal.dataobject.SystemUserTb; import cn.odboy.system.dal.dataobject.SystemUserTb;
import cn.odboy.system.dal.model.SystemQueryUserArgs; import cn.odboy.system.dal.model.SystemQueryUserArgs;
import cn.odboy.system.dal.model.SystemUserVo; import cn.odboy.system.dal.model.SystemUserVo;
import cn.odboy.system.dal.mysql.SystemUserMapper; import cn.odboy.system.dal.mysql.SystemDeptMapper;
import cn.odboy.system.dal.mysql.SystemUserJobMapper;
import cn.odboy.system.dal.mysql.SystemUserRoleMapper;
import cn.odboy.system.dal.mysql.SystemJobMapper; import cn.odboy.system.dal.mysql.SystemJobMapper;
import cn.odboy.system.dal.mysql.SystemRoleMapper; import cn.odboy.system.dal.mysql.SystemRoleMapper;
import cn.odboy.system.dal.mysql.SystemDeptMapper; import cn.odboy.system.dal.mysql.SystemUserJobMapper;
import cn.odboy.system.dal.mysql.SystemUserMapper;
import cn.odboy.system.dal.mysql.SystemUserRoleMapper;
import cn.odboy.system.dal.redis.SystemUserInfoDAO; import cn.odboy.system.dal.redis.SystemUserInfoDAO;
import cn.odboy.system.dal.redis.SystemUserOnlineInfoDAO; import cn.odboy.system.dal.redis.SystemUserOnlineInfoDAO;
import cn.odboy.system.framework.permission.core.KitSecurityHelper; import cn.odboy.system.framework.permission.core.KitSecurityHelper;
@@ -45,6 +45,7 @@ import cn.odboy.util.KitPageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
@@ -57,7 +58,6 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -66,28 +66,17 @@ import org.springframework.web.multipart.MultipartFile;
@Service @Service
public class SystemUserService { public class SystemUserService {
@Autowired @Autowired private SystemUserMapper systemUserMapper;
private SystemUserMapper systemUserMapper; @Autowired private SystemUserJobService systemUserJobService;
@Autowired @Autowired private SystemUserRoleService systemUserRoleService;
private SystemUserJobService systemUserJobService; @Autowired private SystemUserInfoDAO systemUserInfoDAO;
@Autowired @Autowired private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO;
private SystemUserRoleService systemUserRoleService; @Autowired private KitFileLocalUploadHelper fileUploadPathHelper;
@Autowired @Autowired private SystemUserJobMapper systemUserJobMapper;
private SystemUserInfoDAO systemUserInfoDAO; @Autowired private SystemUserRoleMapper systemUserRoleMapper;
@Autowired @Autowired private SystemJobMapper systemJobMapper;
private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO; @Autowired private SystemRoleMapper systemRoleMapper;
@Autowired @Autowired private SystemDeptMapper systemDeptMapper;
private KitFileLocalUploadHelper fileUploadPathHelper;
@Autowired
private SystemUserJobMapper systemUserJobMapper;
@Autowired
private SystemUserRoleMapper systemUserRoleMapper;
@Autowired
private SystemJobMapper systemJobMapper;
@Autowired
private SystemRoleMapper systemRoleMapper;
@Autowired
private SystemDeptMapper systemDeptMapper;
/** /**
* 新增用户 * 新增用户
@@ -97,13 +86,13 @@ public class SystemUserService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void saveUser(SystemUserVo args) { public void saveUser(SystemUserVo args) {
args.setDeptId(args.getDept().getId()); args.setDeptId(args.getDept().getId());
if (systemUserMapper.getUserByUsername(args.getUsername()) != null) { if (this.getUserByUsername(args.getUsername()) != null) {
throw new BadRequestException("用户名已存在"); throw new BadRequestException("用户名已存在");
} }
if (systemUserMapper.getUserByEmail(args.getEmail()) != null) { if (this.getUserByEmail(args.getEmail()) != null) {
throw new BadRequestException("邮箱已存在"); throw new BadRequestException("邮箱已存在");
} }
if (systemUserMapper.getUserByPhone(args.getPhone()) != null) { if (this.getUserByPhone(args.getPhone()) != null) {
throw new BadRequestException("手机号已存在"); throw new BadRequestException("手机号已存在");
} }
systemUserMapper.insert(args); systemUserMapper.insert(args);
@@ -117,14 +106,13 @@ public class SystemUserService {
* 编辑用户 * 编辑用户
* *
* @param args / * @param args /
* @throws Exception /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyUserById(SystemUserVo args) { public void updateUserById(SystemUserVo args) {
SystemUserTb user = systemUserMapper.selectById(args.getId()); SystemUserTb user = systemUserMapper.selectById(args.getId());
SystemUserTb user1 = systemUserMapper.getUserByUsername(args.getUsername()); SystemUserTb user1 = this.getUserByUsername(args.getUsername());
SystemUserTb user2 = systemUserMapper.getUserByEmail(args.getEmail()); SystemUserTb user2 = this.getUserByEmail(args.getEmail());
SystemUserTb user3 = systemUserMapper.getUserByPhone(args.getPhone()); SystemUserTb user3 = this.getUserByPhone(args.getPhone());
if (user1 != null && !user.getId().equals(user1.getId())) { if (user1 != null && !user.getId().equals(user1.getId())) {
throw new BadRequestException("用户名已存在"); throw new BadRequestException("用户名已存在");
} }
@@ -163,9 +151,9 @@ public class SystemUserService {
* @param args / * @param args /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyUserCenterInfoById(SystemUserTb args) { public void updateUserCenterInfoById(SystemUserTb args) {
SystemUserTb user = systemUserMapper.selectById(args.getId()); SystemUserTb user = systemUserMapper.selectById(args.getId());
SystemUserTb user1 = systemUserMapper.getUserByPhone(args.getPhone()); SystemUserTb user1 = this.getUserByPhone(args.getPhone());
if (user1 != null && !user.getId().equals(user1.getId())) { if (user1 != null && !user.getId().equals(user1.getId())) {
throw new BadRequestException("手机号已存在"); throw new BadRequestException("手机号已存在");
} }
@@ -202,7 +190,7 @@ public class SystemUserService {
* @param encryptPassword 密码 * @param encryptPassword 密码
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyUserPasswordByUsername(String username, String encryptPassword) { public void updateUserPasswordByUsername(String username, String encryptPassword) {
systemUserMapper.updateUserPasswordByUsername(username, encryptPassword); systemUserMapper.updateUserPasswordByUsername(username, encryptPassword);
systemUserInfoDAO.deleteUserLoginInfoByUserName(username); systemUserInfoDAO.deleteUserLoginInfoByUserName(username);
} }
@@ -234,8 +222,8 @@ public class SystemUserService {
* @return / * @return /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Map<String, String> modifyUserAvatar(MultipartFile multipartFile) { public Map<String, String> updateUserAvatar(MultipartFile multipartFile) {
SystemUserTb user = systemUserMapper.getUserByUsername(KitSecurityHelper.getCurrentUsername()); SystemUserTb user = this.getUserByUsername(KitSecurityHelper.getCurrentUsername());
String username = user.getUsername(); String username = user.getUsername();
if (StrUtil.isBlank(username)) { if (StrUtil.isBlank(username)) {
throw new BadRequestException("异常用户数据, 请联系管理员处理"); throw new BadRequestException("异常用户数据, 请联系管理员处理");
@@ -269,7 +257,7 @@ public class SystemUserService {
* @param email 邮箱 * @param email 邮箱
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void modifyUserEmailByUsername(String username, String email) { public void updateUserEmailByUsername(String username, String email) {
systemUserMapper.updateUserEmailByUsername(username, email); systemUserMapper.updateUserEmailByUsername(username, email);
systemUserInfoDAO.deleteUserLoginInfoByUserName(username); systemUserInfoDAO.deleteUserLoginInfoByUserName(username);
} }
@@ -303,33 +291,30 @@ public class SystemUserService {
/** /**
* 查询全部 * 查询全部
* *
* @param criteria 条件 * @param args 条件
* @param page 分页参数 * @param page 分页参数
* @return / * @return /
*/ */
public KitPageResult<SystemUserVo> queryUserByArgs(SystemQueryUserArgs criteria, Page<SystemUserTb> page) { public KitPageResult<SystemUserVo> searchUserByArgs(SystemQueryUserArgs args, Page<SystemUserTb> page) {
// 查询用户基本信息 // 查询用户基本信息
LambdaQueryWrapper<SystemUserTb> wrapper = buildUserQueryWrapper(criteria); LambdaQueryWrapper<SystemUserTb> wrapper = buildUserQueryWrapper(args);
IPage<SystemUserTb> userPage = systemUserMapper.selectPage(page, wrapper); IPage<SystemUserTb> userPage = systemUserMapper.selectPage(page, wrapper);
List<SystemUserTb> users = userPage.getRecords(); List<SystemUserTb> users = userPage.getRecords();
// 转换为SystemUserVo并关联查询 // 转换为SystemUserVo并关联查询
List<SystemUserVo> userVos = users.stream().map(this::convertToUserVo).collect(Collectors.toList()); List<SystemUserVo> userVos = users.stream().map(this::convertToUserVo).collect(Collectors.toList());
return KitPageUtil.toPage(userVos, userPage.getTotal()); return KitPageUtil.toPage(userVos, userPage.getTotal());
} }
/** /**
* 查询全部不分页 * 查询全部不分页
* *
* @param criteria 条件 * @param args 条件
* @return / * @return /
*/ */
public List<SystemUserVo> queryUserByArgs(SystemQueryUserArgs criteria) { public List<SystemUserVo> queryUserByArgs(SystemQueryUserArgs args) {
// 查询用户基本信息 // 查询用户基本信息
LambdaQueryWrapper<SystemUserTb> wrapper = buildUserQueryWrapper(criteria); LambdaQueryWrapper<SystemUserTb> wrapper = buildUserQueryWrapper(args);
List<SystemUserTb> users = systemUserMapper.selectList(wrapper); List<SystemUserTb> users = systemUserMapper.selectList(wrapper);
// 转换为SystemUserVo并关联查询 // 转换为SystemUserVo并关联查询
return users.stream().map(this::convertToUserVo).collect(Collectors.toList()); return users.stream().map(this::convertToUserVo).collect(Collectors.toList());
} }
@@ -344,30 +329,20 @@ public class SystemUserService {
return systemUserMapper.selectById(id); return systemUserMapper.selectById(id);
} }
/** public List<KitSelectOptionVo> queryUserMetadataOptions(KitPageArgs<SystemQueryUserArgs> pageArgs) {
* 根据用户名查询 SystemQueryUserArgs args = pageArgs.getArgs();
*
* @param username /
* @return /
*/
public SystemUserTb getUserByUsername(String username) {
return systemUserMapper.getUserByUsername(username);
}
public List<KitSelectOptionVo> queryUserMetadataOptions(KitPageArgs<SystemQueryUserArgs> args) {
SystemQueryUserArgs criteria = args.getArgs();
LambdaQueryWrapper<SystemUserTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemUserTb> wrapper = new LambdaQueryWrapper<>();
wrapper.select(SystemUserTb::getId, SystemUserTb::getDeptId, SystemUserTb::getEmail, SystemUserTb::getPhone); wrapper.select(SystemUserTb::getId, SystemUserTb::getDeptId, SystemUserTb::getEmail, SystemUserTb::getPhone);
wrapper.and(c -> { wrapper.and(c -> {
c.eq(SystemUserTb::getPhone, criteria.getBlurry()); c.eq(SystemUserTb::getPhone, args.getBlurry());
c.or(); c.or();
c.eq(SystemUserTb::getEmail, criteria.getBlurry()); c.eq(SystemUserTb::getEmail, args.getBlurry());
c.or(); c.or();
c.like(SystemUserTb::getUsername, criteria.getBlurry()); c.like(SystemUserTb::getUsername, args.getBlurry());
c.or(); c.or();
c.like(SystemUserTb::getNickName, criteria.getBlurry()); c.like(SystemUserTb::getNickName, args.getBlurry());
}); });
return systemUserMapper.selectPage(new Page<>(criteria.getPage(), 50), wrapper).getRecords().stream().map(m -> { return systemUserMapper.selectPage(new Page<>(args.getPage(), 50), wrapper).getRecords().stream().map(m -> {
Map<String, Object> ext = new HashMap<>(1); Map<String, Object> ext = new HashMap<>(1);
ext.put("id", m.getId()); ext.put("id", m.getId());
ext.put("deptId", m.getDeptId()); ext.put("deptId", m.getDeptId());
@@ -377,58 +352,6 @@ public class SystemUserService {
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
/**
* 根据角色ID查询用户
*
* @param roleId 角色ID
* @return /
*/
public List<SystemUserVo> selectUserByRoleId(Long roleId) {
// 查询用户角色关联
LambdaQueryWrapper<SystemUserRoleTb> userRoleWrapper = new LambdaQueryWrapper<>();
userRoleWrapper.eq(SystemUserRoleTb::getRoleId, roleId);
List<SystemUserRoleTb> userRoles = systemUserRoleMapper.selectList(userRoleWrapper);
if (CollUtil.isEmpty(userRoles)) {
return new ArrayList<>();
}
Set<Long> userIds = userRoles.stream().map(SystemUserRoleTb::getUserId).collect(Collectors.toSet());
List<SystemUserTb> users = systemUserMapper.selectByIds(userIds);
return users.stream().map(this::convertToUserVo).collect(Collectors.toList());
}
/**
* 根据部门ID查询用户
*
* @param deptId 部门ID
* @return /
*/
public List<SystemUserVo> selectUserByDeptId(Long deptId) {
// 查询部门关联的角色
LambdaQueryWrapper<SystemUserTb> userWrapper = new LambdaQueryWrapper<>();
userWrapper.eq(SystemUserTb::getDeptId, deptId);
List<SystemUserTb> users = systemUserMapper.selectList(userWrapper);
return users.stream().map(this::convertToUserVo).collect(Collectors.toList());
}
/**
* 根据菜单ID查询用户
*
* @param menuId 菜单ID
* @return /
*/
public List<SystemUserVo> selectUserByMenuId(Long menuId) {
// 查询菜单角色关联
LambdaQueryWrapper<SystemUserRoleTb> userRoleWrapper = new LambdaQueryWrapper<>();
// 这里需要通过菜单角色关联表查询,暂时简化处理
List<SystemUserTb> users = systemUserMapper.selectList(null);
return users.stream().map(this::convertToUserVo).collect(Collectors.toList());
}
/** /**
* 根据岗位ID统计用户数量 * 根据岗位ID统计用户数量
* *
@@ -439,7 +362,6 @@ public class SystemUserService {
if (CollUtil.isEmpty(jobIds)) { if (CollUtil.isEmpty(jobIds)) {
return 0L; return 0L;
} }
LambdaQueryWrapper<SystemUserJobTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemUserJobTb> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SystemUserJobTb::getJobId, jobIds); wrapper.in(SystemUserJobTb::getJobId, jobIds);
return systemUserJobMapper.selectCount(wrapper); return systemUserJobMapper.selectCount(wrapper);
@@ -455,52 +377,36 @@ public class SystemUserService {
if (CollUtil.isEmpty(roleIds)) { if (CollUtil.isEmpty(roleIds)) {
return 0L; return 0L;
} }
LambdaQueryWrapper<SystemUserRoleTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemUserRoleTb> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SystemUserRoleTb::getRoleId, roleIds); wrapper.in(SystemUserRoleTb::getRoleId, roleIds);
return systemUserRoleMapper.selectCount(wrapper); return systemUserRoleMapper.selectCount(wrapper);
} }
/**
* 根据用户名查询用户详情(包含关联信息)
*
* @param username 用户名
* @return /
*/
public SystemUserVo getUserVoByUsername(String username) {
SystemUserTb user = systemUserMapper.getUserByUsername(username);
if (user == null) {
return null;
}
return convertToUserVo(user);
}
/** /**
* 构建用户查询条件 * 构建用户查询条件
* *
* @param criteria 查询条件 * @param args 查询条件
* @return / * @return /
*/ */
private LambdaQueryWrapper<SystemUserTb> buildUserQueryWrapper(SystemQueryUserArgs criteria) { private LambdaQueryWrapper<SystemUserTb> buildUserQueryWrapper(SystemQueryUserArgs args) {
LambdaQueryWrapper<SystemUserTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemUserTb> wrapper = new LambdaQueryWrapper<>();
if (criteria != null) { if (args != null) {
if (criteria.getId() != null) { if (args.getId() != null) {
wrapper.eq(SystemUserTb::getId, criteria.getId()); wrapper.eq(SystemUserTb::getId, args.getId());
} }
if (criteria.getEnabled() != null) { if (args.getEnabled() != null) {
wrapper.eq(SystemUserTb::getEnabled, criteria.getEnabled()); wrapper.eq(SystemUserTb::getEnabled, args.getEnabled());
} }
if (CollUtil.isNotEmpty(criteria.getDeptIds())) { if (CollUtil.isNotEmpty(args.getDeptIds())) {
wrapper.in(SystemUserTb::getDeptId, criteria.getDeptIds()); wrapper.in(SystemUserTb::getDeptId, args.getDeptIds());
} }
if (StrUtil.isNotBlank(criteria.getBlurry())) { if (StrUtil.isNotBlank(args.getBlurry())) {
wrapper.and(w -> w.like(SystemUserTb::getUsername, criteria.getBlurry()) wrapper.and(w -> w.like(SystemUserTb::getUsername, args.getBlurry()).or()
.or().like(SystemUserTb::getNickName, criteria.getBlurry()) .like(SystemUserTb::getNickName, args.getBlurry()).or()
.or().like(SystemUserTb::getEmail, criteria.getBlurry())); .like(SystemUserTb::getEmail, args.getBlurry()));
} }
if (CollUtil.isNotEmpty(criteria.getCreateTime()) && criteria.getCreateTime().size() >= 2) { if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
wrapper.between(SystemUserTb::getCreateTime, criteria.getCreateTime().get(0), wrapper.between(SystemUserTb::getCreateTime, args.getCreateTime().get(0), args.getCreateTime().get(1));
criteria.getCreateTime().get(1));
} }
} }
wrapper.orderByDesc(SystemUserTb::getCreateTime); wrapper.orderByDesc(SystemUserTb::getCreateTime);
@@ -547,4 +453,31 @@ public class SystemUserService {
return userVo; return userVo;
} }
public SystemUserTb getUserByUsername(String username) {
LambdaQueryWrapper<SystemUserTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemUserTb::getUsername, username);
wrapper.eq(SystemUserTb::getEnabled, 1);
return systemUserMapper.selectOne(wrapper);
}
public long countUserByDeptIds(Set<Long> deptIds) {
LambdaQueryWrapper<SystemUserTb> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SystemUserTb::getDeptId, deptIds);
return systemUserMapper.selectCount(wrapper);
}
public SystemUserTb getUserByEmail(String email) {
LambdaQueryWrapper<SystemUserTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemUserTb::getEmail, email);
wrapper.eq(SystemUserTb::getEnabled, 1);
return systemUserMapper.selectOne(wrapper);
}
public SystemUserTb getUserByPhone(String phone) {
LambdaQueryWrapper<SystemUserTb> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SystemUserTb::getPhone, phone);
wrapper.eq(SystemUserTb::getEnabled, 1);
return systemUserMapper.selectOne(wrapper);
}
} }
@@ -36,13 +36,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -60,19 +60,15 @@ import org.springframework.web.multipart.MultipartFile;
public class SystemOssStorageServiceImpl extends ServiceImpl<SystemOssStorageMapper, SystemOssStorageTb> public class SystemOssStorageServiceImpl extends ServiceImpl<SystemOssStorageMapper, SystemOssStorageTb>
implements SystemOssStorageService { implements SystemOssStorageService {
@Autowired @Autowired private MinioRepository minioRepository;
private MinioRepository minioRepository; @Autowired private AppProperties properties;
@Autowired @Autowired private KitFileLocalUploadHelper fileLocalUploadHelper;
private AppProperties properties; @Autowired private SystemOssStorageMapper systemOssStorageMapper;
@Autowired
private KitFileLocalUploadHelper fileLocalUploadHelper;
@Autowired
private SystemOssStorageMapper systemOssStorageMapper;
@Override @Override
public KitPageResult<SystemOssStorageVo> queryOssStorage(SystemQueryStorageArgs criteria, public KitPageResult<SystemOssStorageVo> searchOssStorage(SystemQueryStorageArgs args,
Page<SystemOssStorageTb> page) { Page<SystemOssStorageTb> page) {
IPage<SystemOssStorageTb> ossStorageTbs = this.selectOssStorageByArgs(criteria, page); IPage<SystemOssStorageTb> ossStorageTbs = this.selectOssStorageByArgs(args, page);
IPage<SystemOssStorageVo> convert = ossStorageTbs.convert(c -> { IPage<SystemOssStorageVo> convert = ossStorageTbs.convert(c -> {
SystemOssStorageVo storageVo = BeanUtil.copyProperties(c, SystemOssStorageVo.class); SystemOssStorageVo storageVo = BeanUtil.copyProperties(c, SystemOssStorageVo.class);
storageVo.setFileSizeDesc(KitFileUtil.getSize(storageVo.getFileSize())); storageVo.setFileSizeDesc(KitFileUtil.getSize(storageVo.getFileSize()));
@@ -81,18 +77,18 @@ public class SystemOssStorageServiceImpl extends ServiceImpl<SystemOssStorageMap
return KitPageUtil.toPage(convert); return KitPageUtil.toPage(convert);
} }
private IPage<SystemOssStorageTb> selectOssStorageByArgs(SystemQueryStorageArgs criteria, private IPage<SystemOssStorageTb> selectOssStorageByArgs(SystemQueryStorageArgs args,
Page<SystemOssStorageTb> page) { Page<SystemOssStorageTb> page) {
LambdaQueryWrapper<SystemOssStorageTb> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemOssStorageTb> wrapper = new LambdaQueryWrapper<>();
if (criteria != null) { if (args != null) {
wrapper.and(StrUtil.isNotBlank(criteria.getBlurry()), wrapper.and(StrUtil.isNotBlank(args.getBlurry()),
c -> c.like(SystemOssStorageTb::getFileName, criteria.getBlurry()).or() c -> c.like(SystemOssStorageTb::getFileName, args.getBlurry()).or()
.like(SystemOssStorageTb::getFilePrefix, criteria.getBlurry()).or() .like(SystemOssStorageTb::getFilePrefix, args.getBlurry()).or()
.like(SystemOssStorageTb::getFileMime, criteria.getBlurry()).or() .like(SystemOssStorageTb::getFileMime, args.getBlurry()).or()
.like(SystemOssStorageTb::getFileMd5, criteria.getBlurry())); .like(SystemOssStorageTb::getFileMd5, args.getBlurry()));
if (CollUtil.isNotEmpty(criteria.getCreateTime()) && criteria.getCreateTime().size() >= 2) { if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
wrapper.between(SystemOssStorageTb::getUpdateTime, criteria.getCreateTime().get(0), wrapper.between(SystemOssStorageTb::getUpdateTime, args.getCreateTime().get(0),
criteria.getCreateTime().get(1)); args.getCreateTime().get(1));
} }
} }
wrapper.orderByAsc(SystemOssStorageTb::getId); wrapper.orderByAsc(SystemOssStorageTb::getId);
@@ -100,10 +96,10 @@ public class SystemOssStorageServiceImpl extends ServiceImpl<SystemOssStorageMap
} }
@Override @Override
public List<SystemOssStorageVo> queryOssStorage(SystemQueryStorageArgs criteria) { public List<SystemOssStorageVo> queryOssStorage(SystemQueryStorageArgs args) {
// 防止刷数据 // 防止刷数据
Page<SystemOssStorageTb> page = new Page<>(1, 500); Page<SystemOssStorageTb> page = new Page<>(1, 500);
return queryOssStorage(criteria, page).getContent(); return searchOssStorage(args, page).getContent();
} }
@Override @Override
@@ -145,7 +141,7 @@ public class SystemOssStorageServiceImpl extends ServiceImpl<SystemOssStorageMap
} }
// 校验文件md5, 看是否已存在云端(不确定, 可能云端已经删除, 但是正常来说云端是不允许私自删除的, 所以这里忽略云端不存在的情况) // 校验文件md5, 看是否已存在云端(不确定, 可能云端已经删除, 但是正常来说云端是不允许私自删除的, 所以这里忽略云端不存在的情况)
String md5 = KitFileUtil.getMd5(tempFile); String md5 = KitFileUtil.getMd5(tempFile);
SystemOssStorageTb systemOssStorageTb = this.getByMd5(md5); SystemOssStorageTb systemOssStorageTb = this.getOssStorageByMd5(md5);
if (systemOssStorageTb != null) { if (systemOssStorageTb != null) {
// 重新生成7天链接 // 重新生成7天链接
return minioRepository.generatePreviewUrl(systemOssStorageTb.getObjectName()); return minioRepository.generatePreviewUrl(systemOssStorageTb.getObjectName());
@@ -166,7 +162,7 @@ public class SystemOssStorageServiceImpl extends ServiceImpl<SystemOssStorageMap
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void removeFileByIds(Long[] ids) { public void deleteFileByIds(Long[] ids) {
for (Long id : ids) { for (Long id : ids) {
SystemOssStorageTb storage = getById(id); SystemOssStorageTb storage = getById(id);
minioRepository.removeBucketFile(storage.getObjectName()); minioRepository.removeBucketFile(storage.getObjectName());
@@ -174,7 +170,7 @@ public class SystemOssStorageServiceImpl extends ServiceImpl<SystemOssStorageMap
} }
} }
private SystemOssStorageTb getByMd5(String md5) { private SystemOssStorageTb getOssStorageByMd5(String md5) {
return lambdaQuery().eq(SystemOssStorageTb::getFileMd5, md5).one(); return lambdaQuery().eq(SystemOssStorageTb::getFileMd5, md5).one();
} }
} }
@@ -17,14 +17,14 @@
package cn.odboy; package cn.odboy;
import cn.odboy.framework.monitor.service.KitHealthCheckPointService; import cn.odboy.framework.monitor.service.KitHealthCheckPointService;
import cn.odboy.system.service.SystemDictService; import cn.odboy.system.dal.mysql.SystemDictMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
public class HealthCheckPointer implements KitHealthCheckPointService { public class HealthCheckPointer implements KitHealthCheckPointService {
@Autowired private SystemDictService systemDictService; @Autowired private SystemDictMapper systemDictMapper;
/** /**
* 系统准备就绪 * 系统准备就绪
@@ -39,6 +39,6 @@ public class HealthCheckPointer implements KitHealthCheckPointService {
*/ */
@Override @Override
public ResponseEntity<?> doLiveness() { public ResponseEntity<?> doLiveness() {
return ResponseEntity.ok(systemDictService.getById(1)); return ResponseEntity.ok(systemDictMapper.selectById(1));
} }
} }
@@ -20,7 +20,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.odboy.system.dal.dataobject.SystemDeptTb; import cn.odboy.system.dal.dataobject.SystemDeptTb;
import cn.odboy.system.dal.dataobject.SystemJobTb; import cn.odboy.system.dal.dataobject.SystemJobTb;
import cn.odboy.system.dal.dataobject.SystemRoleTb; import cn.odboy.system.dal.dataobject.SystemRoleTb;
import cn.odboy.system.dal.dataobject.SystemUserTb;
import cn.odboy.system.dal.model.SystemUserVo; import cn.odboy.system.dal.model.SystemUserVo;
import cn.odboy.system.service.SystemUserService; import cn.odboy.system.service.SystemUserService;
import java.util.Set; import java.util.Set;