diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/RouterFunctionConfiguration.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/RouterFunctionConfiguration.java index 6c2eea798..f74edccc1 100644 --- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/RouterFunctionConfiguration.java +++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/RouterFunctionConfiguration.java @@ -44,7 +44,7 @@ public class RouterFunctionConfiguration { @Bean public RouterFunction routerFunction() { return RouterFunctions - .route(RequestPredicates.path("/code").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), + .route(RequestPredicates.path("/code/create").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), imageCodeCreateHandler) .andRoute(RequestPredicates.POST("/code/check").and(RequestPredicates.accept(MediaType.ALL)), imageCodeCheckHandler); diff --git a/pigx-upms/pigx-upms-api/pom.xml b/pigx-upms/pigx-upms-api/pom.xml index 1b1d28f7c..109ca6ae1 100644 --- a/pigx-upms/pigx-upms-api/pom.xml +++ b/pigx-upms/pigx-upms-api/pom.xml @@ -54,5 +54,10 @@ com.pig4cloud pigx-common-excel + + + org.javers + javers-core + diff --git a/pigx-upms/pigx-upms-biz/pom.xml b/pigx-upms/pigx-upms-biz/pom.xml index c7e6c8c46..c606dcc83 100644 --- a/pigx-upms/pigx-upms-biz/pom.xml +++ b/pigx-upms/pigx-upms-biz/pom.xml @@ -102,6 +102,11 @@ com.pig4cloud pigx-common-xss + + + com.pig4cloud + pigx-common-audit + com.pig4cloud diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/MobileController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/MobileController.java index b38e863c7..d28eee5ff 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/MobileController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/MobileController.java @@ -20,15 +20,20 @@ package com.pig4cloud.pigx.admin.controller; import com.pig4cloud.pigx.admin.service.MobileService; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.security.annotation.Inner; + import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; +import me.chanjar.weixin.cp.bean.external.WxCpUserExternalGroupChatStatistic; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.ArrayList; +import java.util.List; + /** * @author lengleng * @date 2018/11/14 diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/RegisterController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/RegisterController.java index b64953102..c674ec178 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/RegisterController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/RegisterController.java @@ -5,10 +5,8 @@ import com.pig4cloud.pigx.admin.service.SysUserService; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.log.annotation.SysLog; import com.pig4cloud.pigx.common.security.annotation.Inner; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import lombok.RequiredArgsConstructor; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -24,7 +22,6 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/register") @RequiredArgsConstructor @ConditionalOnProperty(name = "register.user", matchIfMissing = true) -@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class RegisterController { private final SysUserService userService; diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAuditLogController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAuditLogController.java index 4915ec179..f53e9d758 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAuditLogController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAuditLogController.java @@ -17,20 +17,21 @@ package com.pig4cloud.pigx.admin.controller; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.pig4cloud.pigx.common.core.util.R; -import com.pig4cloud.pigx.common.log.annotation.SysLog; import com.pig4cloud.pigx.admin.api.entity.SysAuditLog; import com.pig4cloud.pigx.admin.service.SysAuditLogService; -import com.pig4cloud.pigx.common.security.annotation.Inner; -import org.springframework.security.access.prepost.PreAuthorize; +import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; -import org.springframework.http.HttpHeaders; -import io.swagger.v3.oas.annotations.tags.Tag; +import com.pig4cloud.pigx.common.log.annotation.SysLog; +import com.pig4cloud.pigx.common.security.annotation.Inner; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpHeaders; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -38,13 +39,13 @@ import java.util.List; /** * 审计记录表 * - * @author pigx code generator - * @date 2023-02-27 22:33:30 + * @author PIG + * @date 2023-02-28 20:12:23 */ @RestController @RequiredArgsConstructor @RequestMapping("/audit") -@Tag(description = "sysauditlog", name = "审计记录表管理") +@Tag(description = "audit", name = "审计记录表管理") @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class SysAuditLogController { @@ -58,9 +59,8 @@ public class SysAuditLogController { */ @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") - @PreAuthorize("@pms.hasPermission('admin_sysauditlog_view')") - public R getSysAuditLogPage(Page page, SysAuditLog sysAuditLog) { - return R.ok(sysAuditLogService.page(page, Wrappers.query(sysAuditLog))); + public R getsysAuditLogPage(Page page, SysAuditLog sysAuditLog) { + return R.ok(sysAuditLogService.getAuditsByScope(page, sysAuditLog)); } /** @@ -70,7 +70,6 @@ public class SysAuditLogController { */ @Operation(summary = "通过id查询", description = "通过id查询") @GetMapping("/{id}") - @PreAuthorize("@pms.hasPermission('admin_sysauditlog_view')") public R getById(@PathVariable("id") Long id) { return R.ok(sysAuditLogService.getById(id)); } @@ -87,30 +86,17 @@ public class SysAuditLogController { return R.ok(sysAuditLogService.saveBatch(auditLogList)); } - /** - * 修改审计记录表 - * @param sysAuditLog 审计记录表 - * @return R - */ - @Operation(summary = "修改审计记录表", description = "修改审计记录表") - @SysLog("修改审计记录表") - @PutMapping - @PreAuthorize("@pms.hasPermission('admin_sysauditlog_edit')") - public R updateById(@RequestBody SysAuditLog sysAuditLog) { - return R.ok(sysAuditLogService.updateById(sysAuditLog)); - } - /** * 通过id删除审计记录表 - * @param id id + * @param ids id列表 * @return R */ @Operation(summary = "通过id删除审计记录表", description = "通过id删除审计记录表") @SysLog("通过id删除审计记录表") - @DeleteMapping("/{id}") - @PreAuthorize("@pms.hasPermission('admin_sysauditlog_del')") - public R removeById(@PathVariable Long id) { - return R.ok(sysAuditLogService.removeById(id)); + @DeleteMapping + @PreAuthorize("@pms.hasPermission('sys_audit_del')") + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysAuditLogService.removeBatchByIds(CollUtil.toList(ids))); } /** @@ -120,7 +106,7 @@ public class SysAuditLogController { */ @ResponseExcel @GetMapping("/export") - @PreAuthorize("@pms.hasPermission('admin_sysauditlog_export')") + @PreAuthorize("@pms.hasPermission('sys_audit_export')") public List export(SysAuditLog sysAuditLog) { return sysAuditLogService.list(Wrappers.query(sysAuditLog)); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysClientController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysClientController.java index 3661ae51c..5b9f9ac8f 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysClientController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysClientController.java @@ -19,22 +19,32 @@ package com.pig4cloud.pigx.admin.controller; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pig4cloud.pigx.admin.api.dto.SysOauthClientDetailsDTO; import com.pig4cloud.pigx.admin.api.entity.SysOauthClientDetails; +import com.pig4cloud.pigx.admin.config.ClientDetailsInitRunner; import com.pig4cloud.pigx.admin.service.SysOauthClientDetailsService; +import com.pig4cloud.pigx.common.core.constant.CommonConstants; import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.core.util.SpringContextHolder; +import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; import com.pig4cloud.pigx.common.log.annotation.SysLog; import com.pig4cloud.pigx.common.security.annotation.Inner; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; import org.springframework.http.HttpHeaders; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -60,8 +70,18 @@ public class SysClientController { */ @GetMapping("/{clientId}") public R getByClientId(@PathVariable String clientId) { - return R.ok(clientDetailsService - .list(Wrappers.lambdaQuery().eq(SysOauthClientDetails::getClientId, clientId))); + SysOauthClientDetails details = clientDetailsService + .getOne(Wrappers.lambdaQuery().eq(SysOauthClientDetails::getClientId, clientId)); + String information = details.getAdditionalInformation(); + String captchaFlag = JSONUtil.parseObj(information).getStr(CommonConstants.CAPTCHA_FLAG); + String encFlag = JSONUtil.parseObj(information).getStr(CommonConstants.ENC_FLAG); + String onlineQuantity = JSONUtil.parseObj(information).getStr(CommonConstants.ONLINE_QUANTITY); + SysOauthClientDetailsDTO dto = new SysOauthClientDetailsDTO(); + BeanUtils.copyProperties(details, dto); + dto.setCaptchaFlag(captchaFlag); + dto.setEncFlag(encFlag); + dto.setOnlineQuantity(onlineQuantity); + return R.ok(dto); } /** @@ -72,7 +92,12 @@ public class SysClientController { */ @GetMapping("/page") public R getOauthClientDetailsPage(Page page, SysOauthClientDetails sysOauthClientDetails) { - return R.ok(clientDetailsService.queryPage(page, sysOauthClientDetails)); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .like(StrUtil.isNotBlank(sysOauthClientDetails.getClientId()), SysOauthClientDetails::getClientId, + sysOauthClientDetails.getClientId()) + .like(StrUtil.isNotBlank(sysOauthClientDetails.getClientSecret()), + SysOauthClientDetails::getClientSecret, sysOauthClientDetails.getClientSecret()); + return R.ok(clientDetailsService.page(page, wrapper)); } /** @@ -89,14 +114,16 @@ public class SysClientController { /** * 删除 - * @param clientId ID + * @param ids ID 列表 * @return success/false */ @SysLog("删除终端") - @DeleteMapping("/{clientId}") + @DeleteMapping @PreAuthorize("@pms.hasPermission('sys_client_del')") - public R removeById(@PathVariable String clientId) { - return R.ok(clientDetailsService.removeByClientId(clientId)); + public R removeById(@RequestBody Long[] ids) { + clientDetailsService.removeBatchByIds(CollUtil.toList(ids)); + SpringContextHolder.publishEvent(new ClientDetailsInitRunner.ClientDetailsInitEvent(ids)); + return R.ok(); } /** @@ -138,4 +165,15 @@ public class SysClientController { return clientDetailsService.syncClientCache(); } + /** + * 导出所有客户端 + * @return excel + */ + @ResponseExcel + @SysLog("导出excel") + @GetMapping("/export") + public List export(SysOauthClientDetails sysOauthClientDetails) { + return clientDetailsService.list(Wrappers.query(sysOauthClientDetails)); + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDeptController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDeptController.java index bd69001c4..ed3894e3c 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDeptController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDeptController.java @@ -19,11 +19,8 @@ package com.pig4cloud.pigx.admin.controller; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.pig4cloud.pigx.admin.api.entity.SysDept; -import com.pig4cloud.pigx.admin.api.entity.SysDeptRelation; import com.pig4cloud.pigx.admin.api.vo.DeptExcelVo; -import com.pig4cloud.pigx.admin.service.SysDeptRelationService; import com.pig4cloud.pigx.admin.service.SysDeptService; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.excel.annotation.RequestExcel; @@ -56,8 +53,6 @@ import java.util.List; @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class SysDeptController { - private final SysDeptRelationService relationService; - private final SysDeptService sysDeptService; /** @@ -97,7 +92,7 @@ public class SysDeptController { @PostMapping @PreAuthorize("@pms.hasPermission('sys_dept_add')") public R save(@Valid @RequestBody SysDept sysDept) { - return R.ok(sysDeptService.saveDept(sysDept)); + return R.ok(sysDeptService.save(sysDept)); } /** @@ -122,7 +117,7 @@ public class SysDeptController { @PreAuthorize("@pms.hasPermission('sys_dept_edit')") public R update(@Valid @RequestBody SysDept sysDept) { sysDept.setUpdateTime(LocalDateTime.now()); - return R.ok(sysDeptService.updateDeptById(sysDept)); + return R.ok(sysDeptService.updateById(sysDept)); } /** @@ -131,8 +126,7 @@ public class SysDeptController { */ @GetMapping(value = "/getDescendantList/{deptId}") public R getDescendantList(@PathVariable Long deptId) { - return R.ok( - relationService.list(Wrappers.lambdaQuery().eq(SysDeptRelation::getAncestor, deptId))); + return R.ok(sysDeptService.listDescendant(deptId)); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java index abdab2876..f114c6b62 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java @@ -19,6 +19,7 @@ package com.pig4cloud.pigx.admin.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -28,6 +29,7 @@ import com.pig4cloud.pigx.admin.service.SysDictItemService; import com.pig4cloud.pigx.admin.service.SysDictService; import com.pig4cloud.pigx.common.core.constant.CacheConstants; import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; import com.pig4cloud.pigx.common.log.annotation.SysLog; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; @@ -65,11 +67,21 @@ public class SysDictController { * @param id ID * @return 字典信息 */ - @GetMapping("/{id}") + @GetMapping("/details/{id}") public R getById(@PathVariable Long id) { return R.ok(sysDictService.getById(id)); } + /** + * 查询字典信息 + * @param query 查询信息 + * @return 字典信息 + */ + @GetMapping("/details") + public R getDetails(SysDict query) { + return R.ok(sysDictService.getOne(Wrappers.query(query), false)); + } + /** * 分页查询字典信息 * @param page 分页对象 @@ -77,7 +89,11 @@ public class SysDictController { */ @GetMapping("/page") public R getDictPage(Page page, SysDict sysDict) { - return R.ok(sysDictService.page(page, Wrappers.query(sysDict))); + return R.ok(sysDictService.page(page, + Wrappers.lambdaQuery() + .eq(StrUtil.isNotBlank(sysDict.getSystemFlag()), SysDict::getSystemFlag, + sysDict.getSystemFlag()) + .like(StrUtil.isNotBlank(sysDict.getDictType()), SysDict::getDictType, sysDict.getDictType()))); } /** @@ -100,19 +116,21 @@ public class SysDictController { @PostMapping @PreAuthorize("@pms.hasPermission('sys_dict_add')") public R save(@Valid @RequestBody SysDict sysDict) { - return R.ok(sysDictService.save(sysDict)); + sysDictService.save(sysDict); + return R.ok(sysDict); } /** * 删除字典,并且清除字典缓存 - * @param id ID + * @param ids ID * @return R */ @SysLog("删除字典") - @DeleteMapping("/{id}") + @DeleteMapping @PreAuthorize("@pms.hasPermission('sys_dict_del')") - public R removeById(@PathVariable Long id) { - return sysDictService.removeDict(id); + @CacheEvict(value = CacheConstants.DICT_DETAILS, allEntries = true) + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysDictService.removeDictByIds(ids)); } /** @@ -127,6 +145,18 @@ public class SysDictController { return sysDictService.updateDict(sysDict); } + /** + * 分页查询 + * @param name 名称或者字典项 + * @return + */ + @GetMapping("/list") + public R getDictList(String name) { + return R.ok(sysDictService + .list(Wrappers.lambdaQuery().like(StrUtil.isNotBlank(name), SysDict::getDictType, name).or() + .like(StrUtil.isNotBlank(name), SysDict::getDescription, name))); + } + /** * 分页查询 * @param page 分页对象 @@ -143,11 +173,21 @@ public class SysDictController { * @param id id * @return R */ - @GetMapping("/item/{id}") + @GetMapping("/item/details/{id}") public R getDictItemById(@PathVariable("id") Long id) { return R.ok(sysDictItemService.getById(id)); } + /** + * 查询字典项详情 + * @param query 查询条件 + * @return R + */ + @GetMapping("/item/details") + public R getDictItemDetails(SysDictItem query) { + return R.ok(sysDictItemService.getOne(Wrappers.query(query), false)); + } + /** * 新增字典项 * @param sysDictItem 字典项 @@ -192,4 +232,10 @@ public class SysDictController { return sysDictService.syncDictCache(); } + @ResponseExcel + @GetMapping("/export") + public List export(SysDictItem sysDictItem) { + return sysDictItemService.list(Wrappers.query(sysDictItem)); + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java index f38f7cd08..14776845e 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java @@ -18,6 +18,8 @@ package com.pig4cloud.pigx.admin.controller; import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pig4cloud.pigx.admin.api.entity.SysFile; @@ -62,20 +64,25 @@ public class SysFileController { @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") public R getSysFilePage(Page page, SysFile sysFile) { - return R.ok(sysFileService.page(page, Wrappers.query(sysFile))); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .like(StrUtil.isNotBlank(sysFile.getOriginal()), SysFile::getOriginal, sysFile.getOriginal()); + return R.ok(sysFileService.page(page, wrapper)); } /** * 通过id删除文件管理 - * @param id id + * @param ids id 列表 * @return R */ @Operation(summary = "通过id删除文件管理", description = "通过id删除文件管理") @SysLog("删除文件管理") - @DeleteMapping("/{id}") + @DeleteMapping @PreAuthorize("@pms.hasPermission('sys_file_del')") - public R removeById(@PathVariable Long id) { - return R.ok(sysFileService.deleteFile(id)); + public R removeById(@RequestBody Long[] ids) { + for (Long id : ids) { + sysFileService.deleteFile(id); + } + return R.ok(); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysI18nController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysI18nController.java new file mode 100644 index 000000000..05de98ddc --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysI18nController.java @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2018-2025, lengleng All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: lengleng (wangiegie@gmail.com) + */ + +package com.pig4cloud.pigx.admin.controller; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.pig4cloud.pigx.admin.api.entity.SysI18nEntity; +import com.pig4cloud.pigx.admin.service.SysI18nService; +import com.pig4cloud.pigx.common.core.constant.CacheConstants; +import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; +import com.pig4cloud.pigx.common.log.annotation.SysLog; +import com.pig4cloud.pigx.common.security.annotation.Inner; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.http.HttpHeaders; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 系统表-国际化 + * + * @author PIG + * @date 2023-02-14 09:07:01 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/i18n") +@Tag(description = "i18n", name = "系统表-国际化管理") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class SysI18nController { + + private final SysI18nService sysI18nService; + + /** + * 分页查询 + * @param page 分页对象 + * @param sysI18n 系统表-国际化 + * @return + */ + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('sys_i18n_view')") + public R getsysI18nPage(Page page, SysI18nEntity sysI18n) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.like(StrUtil.isNotBlank(sysI18n.getName()), SysI18nEntity::getName, sysI18n.getName()); + wrapper.like(StrUtil.isNotBlank(sysI18n.getZhCn()), SysI18nEntity::getZhCn, sysI18n.getZhCn()); + wrapper.like(StrUtil.isNotBlank(sysI18n.getEn()), SysI18nEntity::getEn, sysI18n.getEn()); + return R.ok(sysI18nService.page(page, wrapper)); + } + + /** + * 通过id查询系统表-国际化 + * @param id id + * @return R + */ + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/details/{id}") + public R getById(@PathVariable("id") Long id) { + return R.ok(sysI18nService.getById(id)); + } + + @GetMapping("/details") + public R getDetails(SysI18nEntity entity) { + return R.ok(sysI18nService.getOne(Wrappers.query(entity))); + } + + /** + * 新增系统表-国际化 + * @param sysI18n 系统表-国际化 + * @return R + */ + @Operation(summary = "新增系统表-国际化", description = "新增系统表-国际化") + @SysLog("新增系统表-国际化") + @PostMapping + @CacheEvict(value = CacheConstants.I18N_DETAILS, allEntries = true) + @PreAuthorize("@pms.hasPermission('sys_i18n_add')") + public R save(@RequestBody SysI18nEntity sysI18n) { + return R.ok(sysI18nService.save(sysI18n)); + } + + /** + * 修改系统表-国际化 + * @param sysI18n 系统表-国际化 + * @return R + */ + @Operation(summary = "修改系统表-国际化", description = "修改系统表-国际化") + @SysLog("修改系统表-国际化") + @PutMapping + @CacheEvict(value = CacheConstants.I18N_DETAILS, allEntries = true) + @PreAuthorize("@pms.hasPermission('sys_i18n_edit')") + public R updateById(@RequestBody SysI18nEntity sysI18n) { + return R.ok(sysI18nService.updateById(sysI18n)); + } + + /** + * 通过id删除系统表-国际化 + * @param ids id 列表 + * @return R + */ + @Operation(summary = "通过id删除系统表-国际化", description = "通过id删除系统表-国际化") + @SysLog("通过id删除系统表-国际化") + @DeleteMapping + @CacheEvict(value = CacheConstants.I18N_DETAILS, allEntries = true) + @PreAuthorize("@pms.hasPermission('sys_i18n_del')") + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysI18nService.removeBatchByIds(CollUtil.toList(ids))); + } + + /** + * 导出excel 表格 + * @param sysI18n 查询条件 + * @return excel 文件流 + */ + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('sys_i18n_export')") + public List export(SysI18nEntity sysI18n) { + return sysI18nService.list(Wrappers.query(sysI18n)); + } + + /** + * 获取系统I18N配置 + * @return I18N 配置 + */ + @Operation(summary = "获取系统配置-国际化", description = "获取系统配置-国际化") + @Inner(false) + @GetMapping("/info") + public R list() { + return R.ok(sysI18nService.listMap()); + } + + /** + * 同步数据 + * @return R + */ + @SysLog("同步数据") + @PutMapping("/sync") + public R sync() { + return sysI18nService.syncI18nCache(); + } + +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysLogController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysLogController.java index 39cccd2a1..d08f25e76 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysLogController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysLogController.java @@ -67,17 +67,6 @@ public class SysLogController { return R.ok(sysLogService.getLogByPage(page, sysLog)); } - /** - * 删除日志 - * @param id ID - * @return success/false - */ - @DeleteMapping("/{id}") - @PreAuthorize("@pms.hasPermission('sys_log_del')") - public R removeById(@PathVariable Long id) { - return R.ok(sysLogService.removeById(id)); - } - /** * 批量删除日志 * @param ids ID diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMenuController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMenuController.java index afa9c1111..86ac36b60 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMenuController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMenuController.java @@ -57,7 +57,6 @@ public class SysMenuController { */ @GetMapping public R getUserMenu(String type, Long parentId) { - // 获取符合条件的菜单 Set all = new HashSet<>(); SecurityUtils.getRoles().forEach(roleId -> all.addAll(sysMenuService.findMenuByRoleId(roleId))); @@ -71,8 +70,8 @@ public class SysMenuController { * @return 树形菜单 */ @GetMapping(value = "/tree") - public R getTree(Long parentId, String menuName) { - return R.ok(sysMenuService.treeMenu(parentId, menuName)); + public R getTree(Long parentId, String menuName, String type) { + return R.ok(sysMenuService.treeMenu(parentId, menuName, type)); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysPostController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysPostController.java index 851df52de..e0d704280 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysPostController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysPostController.java @@ -17,6 +17,8 @@ package com.pig4cloud.pigx.admin.controller; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pig4cloud.pigx.admin.api.entity.SysPost; @@ -67,11 +69,12 @@ public class SysPostController { * @param sysPost 岗位信息表 * @return */ - @Operation(summary = "分页查询", description = "分页查询") + @Operation(description = "分页查询", summary = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('sys_post_view')") public R getSysPostPage(Page page, SysPost sysPost) { - return R.ok(sysPostService.page(page, Wrappers.query(sysPost))); + return R.ok(sysPostService.page(page, Wrappers.lambdaQuery() + .like(StrUtil.isNotBlank(sysPost.getPostName()), SysPost::getPostName, sysPost.getPostName()))); } /** @@ -79,19 +82,31 @@ public class SysPostController { * @param postId id * @return R */ - @Operation(summary = "通过id查询", description = "通过id查询") - @GetMapping("/{postId}") + @Operation(description = "通过id查询", summary = "通过id查询") + @GetMapping("/details/{postId}") @PreAuthorize("@pms.hasPermission('sys_post_view')") public R getById(@PathVariable("postId") Long postId) { return R.ok(sysPostService.getById(postId)); } + /** + * 查询岗位信息信息 + * @param query 查询条件 + * @return R + */ + @Operation(description = "查询角色信息", summary = "查询角色信息") + @GetMapping("/details") + @PreAuthorize("@pms.hasPermission('sys_post_view')") + public R getDetails(SysPost query) { + return R.ok(sysPostService.getOne(Wrappers.query(query), false)); + } + /** * 新增岗位信息表 * @param sysPost 岗位信息表 * @return R */ - @Operation(summary = "新增岗位信息表", description = "新增岗位信息表") + @Operation(description = "新增岗位信息表", summary = "新增岗位信息表") @SysLog("新增岗位信息表") @PostMapping @PreAuthorize("@pms.hasPermission('sys_post_add')") @@ -104,7 +119,7 @@ public class SysPostController { * @param sysPost 岗位信息表 * @return R */ - @Operation(summary = "修改岗位信息表", description = "修改岗位信息表") + @Operation(description = "修改岗位信息表", summary = "修改岗位信息表") @SysLog("修改岗位信息表") @PutMapping @PreAuthorize("@pms.hasPermission('sys_post_edit')") @@ -114,15 +129,15 @@ public class SysPostController { /** * 通过id删除岗位信息表 - * @param postId id + * @param ids id 列表 * @return R */ - @Operation(summary = "通过id删除岗位信息表", description = "通过id删除岗位信息表") + @Operation(description = "通过id删除岗位信息表", summary = "通过id删除岗位信息表") @SysLog("通过id删除岗位信息表") - @DeleteMapping("/{postId}") + @DeleteMapping @PreAuthorize("@pms.hasPermission('sys_post_del')") - public R removeById(@PathVariable Long postId) { - return R.ok(sysPostService.removeById(postId)); + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysPostService.removeBatchByIds(CollUtil.toList(ids))); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysPublicParamController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysPublicParamController.java index 979b738dd..633d03c1f 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysPublicParamController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysPublicParamController.java @@ -17,11 +17,14 @@ package com.pig4cloud.pigx.admin.controller; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pig4cloud.pigx.admin.api.entity.SysPublicParam; import com.pig4cloud.pigx.admin.service.SysPublicParamService; import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; import com.pig4cloud.pigx.common.log.annotation.SysLog; import com.pig4cloud.pigx.common.security.annotation.Inner; import io.swagger.v3.oas.annotations.Operation; @@ -32,6 +35,8 @@ import org.springframework.http.HttpHeaders; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 公共参数 * @@ -53,7 +58,7 @@ public class SysPublicParamController { * @return */ @Inner(value = false) - @Operation(summary = "查询公共参数值", description = "根据key查询公共参数值") + @Operation(description = "查询公共参数值", summary = "根据key查询公共参数值") @GetMapping("/publicValue/{publicKey}") public R publicKey(@PathVariable("publicKey") String publicKey) { return R.ok(sysPublicParamService.getSysPublicParamKeyToValue(publicKey)); @@ -65,10 +70,18 @@ public class SysPublicParamController { * @param sysPublicParam 公共参数 * @return */ - @Operation(summary = "分页查询", description = "分页查询") + @Operation(description = "分页查询", summary = "分页查询") @GetMapping("/page") public R getSysPublicParamPage(Page page, SysPublicParam sysPublicParam) { - return R.ok(sysPublicParamService.page(page, Wrappers.query(sysPublicParam))); + LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate() + .like(StrUtil.isNotBlank(sysPublicParam.getPublicName()), SysPublicParam::getPublicName, + sysPublicParam.getPublicName()) + .like(StrUtil.isNotBlank(sysPublicParam.getPublicKey()), SysPublicParam::getPublicKey, + sysPublicParam.getPublicKey()) + .eq(StrUtil.isNotBlank(sysPublicParam.getSystemFlag()), SysPublicParam::getSystemFlag, + sysPublicParam.getSystemFlag()); + + return R.ok(sysPublicParamService.page(page, wrapper)); } /** @@ -76,21 +89,26 @@ public class SysPublicParamController { * @param publicId id * @return R */ - @Operation(summary = "通过id查询公共参数", description = "通过id查询公共参数") - @GetMapping("/{publicId}") + @Operation(description = "通过id查询公共参数", summary = "通过id查询公共参数") + @GetMapping("/details/{publicId}") public R getById(@PathVariable("publicId") Long publicId) { return R.ok(sysPublicParamService.getById(publicId)); } + @GetMapping("/details") + public R getDetail(SysPublicParam param) { + return R.ok(sysPublicParamService.getOne(Wrappers.query(param), false)); + } + /** * 新增公共参数 * @param sysPublicParam 公共参数 * @return R */ - @Operation(summary = "新增公共参数", description = "新增公共参数") + @Operation(description = "新增公共参数", summary = "新增公共参数") @SysLog("新增公共参数") @PostMapping - @PreAuthorize("@pms.hasPermission('admin_syspublicparam_add')") + @PreAuthorize("@pms.hasPermission('sys_syspublicparam_add')") public R save(@RequestBody SysPublicParam sysPublicParam) { return R.ok(sysPublicParamService.save(sysPublicParam)); } @@ -100,10 +118,10 @@ public class SysPublicParamController { * @param sysPublicParam 公共参数 * @return R */ - @Operation(summary = "修改公共参数", description = "修改公共参数") + @Operation(description = "修改公共参数", summary = "修改公共参数") @SysLog("修改公共参数") @PutMapping - @PreAuthorize("@pms.hasPermission('admin_syspublicparam_edit')") + @PreAuthorize("@pms.hasPermission('sys_syspublicparam_edit')") public R updateById(@RequestBody SysPublicParam sysPublicParam) { return sysPublicParamService.updateParam(sysPublicParam); } @@ -113,12 +131,23 @@ public class SysPublicParamController { * @param publicId id * @return R */ - @Operation(summary = "删除公共参数", description = "删除公共参数") + @Operation(description = "删除公共参数", summary = "删除公共参数") @SysLog("删除公共参数") - @DeleteMapping("/{publicId}") - @PreAuthorize("@pms.hasPermission('admin_syspublicparam_del')") - public R removeById(@PathVariable Long publicId) { - return sysPublicParamService.removeParam(publicId); + @DeleteMapping + @PreAuthorize("@pms.hasPermission('sys_syspublicparam_del')") + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysPublicParamService.removeParamByIds(ids)); + } + + /** + * 导出excel 表格 + * @return + */ + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('sys_syspublicparam_edit')") + public List export() { + return sysPublicParamService.list(); } /** @@ -127,6 +156,7 @@ public class SysPublicParamController { */ @SysLog("同步参数") @PutMapping("/sync") + @PreAuthorize("@pms.hasPermission('sys_syspublicparam_edit')") public R sync() { return sysPublicParamService.syncParamCache(); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRoleController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRoleController.java index 50047ef01..1451c7a96 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRoleController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRoleController.java @@ -62,19 +62,19 @@ public class SysRoleController { * @param id ID * @return 角色信息 */ - @GetMapping("/{id}") + @GetMapping("/details/{id}") public R getById(@PathVariable Long id) { return R.ok(sysRoleService.getById(id)); } /** - * 通过角色编码查询角色信息 - * @param code 角色Code + * 查询角色信息 + * @param query 查询条件 * @return 角色信息 */ - @GetMapping("/code/{code}") - public R getByRoleCode(@PathVariable String code) { - return R.ok(sysRoleService.list(Wrappers.lambdaQuery().eq(SysRole::getRoleCode, code))); + @GetMapping("/details") + public R getDetails(SysRole query) { + return R.ok(sysRoleService.getOne(Wrappers.query(query), false)); } /** @@ -105,15 +105,15 @@ public class SysRoleController { /** * 删除角色 - * @param id + * @param ids * @return */ @SysLog("删除角色") - @DeleteMapping("/{id}") + @DeleteMapping @PreAuthorize("@pms.hasPermission('sys_role_del')") @CacheEvict(value = CacheConstants.ROLE_DETAILS, allEntries = true) - public R removeById(@PathVariable Long id) { - return R.ok(sysRoleService.removeRoleById(id)); + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysRoleService.removeRoleByIds(ids)); } /** @@ -133,7 +133,8 @@ public class SysRoleController { */ @GetMapping("/page") public R getRolePage(Page page, SysRole role) { - return R.ok(sysRoleService.page(page, Wrappers.query(role))); + return R.ok(sysRoleService.page(page, Wrappers.lambdaQuery() + .like(StrUtil.isNotBlank(role.getRoleName()), SysRole::getRoleName, role.getRoleName()))); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysScheduleController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysScheduleController.java new file mode 100644 index 000000000..bb5a0b395 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysScheduleController.java @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2018-2025, lengleng All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: lengleng (wangiegie@gmail.com) + */ + +package com.pig4cloud.pigx.admin.controller; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.pig4cloud.pigx.admin.api.entity.SysScheduleEntity; +import com.pig4cloud.pigx.admin.service.SysScheduleService; +import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; +import com.pig4cloud.pigx.common.log.annotation.SysLog; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpHeaders; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 日程 + * + * @author aeizzz + * @date 2023-03-06 14:26:23 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/schedule") +@Tag(description = "schedule", name = "日程管理") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class SysScheduleController { + + private final SysScheduleService sysScheduleService; + + /** + * 分页查询 + * @param page 分页对象 + * @param sysSchedule 日程 + * @return + */ + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + public R getSchedulePage(Page page, SysScheduleEntity sysSchedule) { + return R.ok(sysScheduleService.getScheduleByScope(page, sysSchedule)); + } + + /** + * 通过id查询日程 + * @param id id + * @return R + */ + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/{id}") + public R getById(@PathVariable("id") Long id) { + return R.ok(sysScheduleService.getById(id)); + } + + /** + * 新增日程 + * @param sysSchedule 日程 + * @return R + */ + @Operation(summary = "新增日程", description = "新增日程") + @SysLog("新增日程") + @PostMapping + public R save(@RequestBody SysScheduleEntity sysSchedule) { + return R.ok(sysScheduleService.save(sysSchedule)); + } + + /** + * 修改日程 + * @param sysSchedule 日程 + * @return R + */ + @Operation(summary = "修改日程", description = "修改日程") + @SysLog("修改日程") + @PutMapping + public R updateById(@RequestBody SysScheduleEntity sysSchedule) { + return R.ok(sysScheduleService.updateById(sysSchedule)); + } + + /** + * 通过id删除日程 + * @param ids id列表 + * @return R + */ + @Operation(summary = "通过id删除日程", description = "通过id删除日程") + @SysLog("通过id删除日程") + @DeleteMapping + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysScheduleService.removeBatchByIds(CollUtil.toList(ids))); + } + + /** + * 导出excel 表格 + * @param sysSchedule 查询条件 + * @return excel 文件流 + */ + @ResponseExcel + @GetMapping("/export") + public List export(SysScheduleEntity sysSchedule) { + return sysScheduleService.list(Wrappers.query(sysSchedule)); + } + + @Operation(summary = "列表查询", description = "列表查询") + @GetMapping("/list") + public R list(String month) { + List list = sysScheduleService.selectListByScope(month); + return R.ok(list); + } + +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSocialDetailsController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSocialDetailsController.java index 44db61e49..695091b88 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSocialDetailsController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysSocialDetailsController.java @@ -17,10 +17,12 @@ package com.pig4cloud.pigx.admin.controller; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pig4cloud.pigx.admin.api.entity.SysSocialDetails; import com.pig4cloud.pigx.admin.service.SysSocialDetailsService; +import com.pig4cloud.pigx.app.api.entity.AppSocialDetails; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.core.util.ValidGroup; import com.pig4cloud.pigx.common.log.annotation.SysLog; @@ -34,6 +36,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** * 系统社交登录账号表 @@ -72,6 +75,11 @@ public class SysSocialDetailsController { .list(Wrappers.lambdaQuery().eq(SysSocialDetails::getType, type))); } + @GetMapping("/getById/{id}") + public R info(@PathVariable("id") Long id) { + return R.ok(sysSocialDetailsService.getById(id)); + } + /** * 保存 * @param sysSocialDetails @@ -99,14 +107,14 @@ public class SysSocialDetailsController { /** * 删除 - * @param id + * @param ids id 列表 * @return R */ @SysLog("删除三方信息") - @DeleteMapping("/{id}") + @DeleteMapping @PreAuthorize("@pms.hasPermission('sys_social_details_del')") - public R removeById(@PathVariable Long id) { - return R.ok(sysSocialDetailsService.removeById(id)); + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysSocialDetailsService.removeBatchByIds(CollUtil.toList(ids))); } /** @@ -131,4 +139,12 @@ public class SysSocialDetailsController { return R.ok(sysSocialDetailsService.bindSocial(state, code)); } + /** + * 导出 + */ + @GetMapping("/export") + public List export(SysSocialDetails sysSocialDetails) { + return sysSocialDetailsService.list(Wrappers.query(sysSocialDetails)); + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantController.java index 1388b8ee2..2ba4109c2 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantController.java @@ -17,12 +17,15 @@ package com.pig4cloud.pigx.admin.controller; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pig4cloud.pigx.admin.api.entity.SysTenant; import com.pig4cloud.pigx.admin.service.SysTenantService; import com.pig4cloud.pigx.common.core.constant.CacheConstants; import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; import com.pig4cloud.pigx.common.log.annotation.SysLog; import com.pig4cloud.pigx.common.security.annotation.Inner; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -60,17 +63,28 @@ public class SysTenantController { */ @GetMapping("/page") public R getSysTenantPage(Page page, SysTenant sysTenant) { - return R.ok(sysTenantService.page(page, Wrappers.query(sysTenant))); + return R.ok(sysTenantService.page(page, Wrappers.lambdaQuery() + .like(StrUtil.isNotBlank(sysTenant.getName()), SysTenant::getName, sysTenant.getName()))); + } + + /** + * 通过ID 查询租户信息 + * @param id ID + * @return R + */ + @GetMapping("/details/{id}") + public R getById(@PathVariable Long id) { + return R.ok(sysTenantService.getById(id)); } /** * 查询租户信息 - * @param tenant 查询条件 + * @param query 查询条件 * @return 租户信息 */ - @GetMapping - public R getByObj(SysTenant tenant) { - return R.ok(sysTenantService.list(Wrappers.query(tenant))); + @GetMapping("/details") + public R getDetails(SysTenant query) { + return R.ok(sysTenantService.getOne(Wrappers.query(query), false)); } /** @@ -80,7 +94,7 @@ public class SysTenantController { */ @SysLog("新增租户") @PostMapping - @PreAuthorize("@pms.hasPermission('admin_systenant_add')") + @PreAuthorize("@pms.hasPermission('sys_systenant_add')") @CacheEvict(value = CacheConstants.TENANT_DETAILS, allEntries = true) public R save(@RequestBody SysTenant sysTenant) { return R.ok(sysTenantService.saveTenant(sysTenant)); @@ -93,7 +107,7 @@ public class SysTenantController { */ @SysLog("修改租户") @PutMapping - @PreAuthorize("@pms.hasPermission('admin_systenant_edit')") + @PreAuthorize("@pms.hasPermission('sys_systenant_edit')") @CacheEvict(value = CacheConstants.TENANT_DETAILS, allEntries = true) public R updateById(@RequestBody SysTenant sysTenant) { return R.ok(sysTenantService.updateById(sysTenant)); @@ -101,15 +115,17 @@ public class SysTenantController { /** * 通过id删除租户 - * @param id id + *

+ * 为了保证安全,这里只删除租户表的数据,不删除基础表中的租户初始化数据。 + * @param ids id 列表 * @return R */ @SysLog("删除租户") - @DeleteMapping("/{id}") - @PreAuthorize("@pms.hasPermission('admin_systenant_del')") + @DeleteMapping + @PreAuthorize("@pms.hasPermission('sys_systenant_del')") @CacheEvict(value = CacheConstants.TENANT_DETAILS, allEntries = true) - public R removeById(@PathVariable Long id) { - return R.ok(sysTenantService.removeById(id)); + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysTenantService.removeBatchByIds(CollUtil.toList(ids))); } /** @@ -125,4 +141,15 @@ public class SysTenantController { return R.ok(tenants); } + /** + * 导出excel 表格 + * @return + */ + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('sys_systenant_export')") + public List export(SysTenant sysTenant) { + return sysTenantService.list(Wrappers.query(sysTenant)); + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantMenuController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantMenuController.java index f296d22fa..c6a69da85 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantMenuController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantMenuController.java @@ -63,7 +63,7 @@ public class SysTenantMenuController { */ @SysLog("新增租户") @PostMapping - @PreAuthorize("@pms.hasPermission('admin_systenantmenu_add')") + @PreAuthorize("@pms.hasPermission('sys_systenantmenu_add')") @CacheEvict(value = CacheConstants.TENANT_DETAILS, allEntries = true) public R save(@RequestBody SysTenantMenu sysTenantMenu) { return R.ok(sysTenantMenuService.saveTenant(sysTenantMenu)); @@ -76,7 +76,7 @@ public class SysTenantMenuController { */ @SysLog("修改租户") @PutMapping - @PreAuthorize("@pms.hasPermission('admin_systenantmenu_edit')") + @PreAuthorize("@pms.hasPermission('sys_systenantmenu_edit')") @CacheEvict(value = CacheConstants.TENANT_DETAILS, allEntries = true) public R updateById(@RequestBody SysTenantMenu sysTenantMenu) { return R.ok(sysTenantMenuService.updateById(sysTenantMenu)); @@ -89,7 +89,7 @@ public class SysTenantMenuController { */ @SysLog("删除租户") @DeleteMapping("/{id}") - @PreAuthorize("@pms.hasPermission('admin_systenantmenu_del')") + @PreAuthorize("@pms.hasPermission('sys_systenantmenu_del')") @CacheEvict(value = CacheConstants.TENANT_DETAILS, allEntries = true) public R removeById(@PathVariable Long id) { return R.ok(sysTenantMenuService.removeById(id)); @@ -112,7 +112,7 @@ public class SysTenantMenuController { Long defaultId = ParamResolver.getLong("TENANT_DEFAULT_ID", 1L); List> trees = new ArrayList<>(); TenantBroker.runAs(defaultId, (id) -> { - trees.addAll(sysMenuService.treeMenu(null, null)); + trees.addAll(sysMenuService.treeMenu(null, null, null)); }); return R.ok(trees); diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java index 562d9cf58..2da5d54f9 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java @@ -19,15 +19,13 @@ package com.pig4cloud.pigx.admin.controller; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pig4cloud.pigx.admin.api.dto.UserDTO; import com.pig4cloud.pigx.admin.api.entity.SysUser; -import com.pig4cloud.pigx.admin.api.vo.CpUserExcelVo; -import com.pig4cloud.pigx.admin.api.vo.DingUserExcelVo; import com.pig4cloud.pigx.admin.api.vo.UserExcelVO; import com.pig4cloud.pigx.admin.service.SysUserService; +import com.pig4cloud.pigx.common.core.constant.CommonConstants; import com.pig4cloud.pigx.common.core.exception.ErrorCodes; import com.pig4cloud.pigx.common.core.util.MsgUtils; import com.pig4cloud.pigx.common.core.util.R; @@ -94,47 +92,34 @@ public class SysUserController { * @param id ID * @return 用户信息 */ - @GetMapping("/{id}") + @GetMapping("/details/{id}") public R user(@PathVariable Long id) { return R.ok(userService.selectUserVoById(id)); } /** - * 根据用户名查询用户信息 - * @param username 用户名 - * @return + * 查询用户信息 + * @param query 查询条件 + * @return 不为空返回用户名 */ - @GetMapping("/details/{username}") - public R user(@PathVariable String username) { - SysUser condition = new SysUser(); - condition.setUsername(username); - return R.ok(userService.getOne(new QueryWrapper<>(condition))); - } - - /** - * 根据手机号查询用户信息 - * @param phone 用户名 - * @return - */ - @GetMapping("/detailsByPhone/{phone}") - public R detailsByPhone(@PathVariable String phone) { - SysUser condition = new SysUser(); - condition.setPhone(phone); - return R.ok(userService.getOne(new QueryWrapper<>(condition))); + @Inner(value = false) + @GetMapping("/details") + public R getDetails(SysUser query) { + SysUser sysUser = userService.getOne(Wrappers.query(query), false); + return R.ok(sysUser == null ? null : CommonConstants.SUCCESS); } /** * 删除用户信息 - * @param id ID + * @param ids ID * @return R */ @SysLog("删除用户信息") - @DeleteMapping("/{id}") + @DeleteMapping @PreAuthorize("@pms.hasPermission('sys_user_del')") @Operation(summary = "删除用户", description = "根据ID删除用户") - public R userDel(@PathVariable Long id) { - SysUser sysUser = userService.getById(id); - return R.ok(userService.deleteUserById(sysUser)); + public R userDel(@RequestBody Long[] ids) { + return R.ok(userService.deleteUserByIds(ids)); } /** @@ -158,7 +143,7 @@ public class SysUserController { @PutMapping @PreAuthorize("@pms.hasPermission('sys_user_edit')") public R updateUser(@Valid @RequestBody UserDTO userDto) { - return userService.updateUser(userDto); + return R.ok(userService.updateUser(userDto)); } /** @@ -216,31 +201,32 @@ public class SysUserController { return userService.importUser(excelVOList, bindingResult); } - /** - * 导入钉钉用户 - * @param excelVOList - * @param bindingResult - * @return - */ - @PostMapping("/importDingUser") - public R importDingUser(@RequestExcel List excelVOList, BindingResult bindingResult) { - return userService.importDingUser(excelVOList, bindingResult); - } - - @PostMapping("/importCpUser") - public R importCpUser(@RequestExcel List excelVOList, BindingResult bindingResult) { - return userService.importCpUser(excelVOList, bindingResult); - } - /** * 锁定指定用户 * @param username 用户名 * @return R */ - @Inner(value = false) + @Inner @PutMapping("/lock/{username}") public R lockUser(@PathVariable String username) { return userService.lockUser(username); } + @PutMapping("/password") + public R password(@RequestBody UserDTO userDto) { + String username = SecurityUtils.getUser().getUsername(); + userDto.setUsername(username); + return userService.changePassword(userDto); + } + + @PostMapping("/unbinding") + public R unbinding(String type) { + return userService.unbinding(type); + } + + @PostMapping("/check") + public R check(String password) { + return userService.checkPassword(password); + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java new file mode 100644 index 000000000..b29127eba --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2018-2025, lengleng All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: lengleng (wangiegie@gmail.com) + */ + +package com.pig4cloud.pigx.admin.handler; + +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.pig4cloud.pigx.admin.api.dto.UserInfo; +import com.pig4cloud.pigx.admin.api.entity.SysSocialDetails; +import com.pig4cloud.pigx.admin.api.entity.SysUser; +import com.pig4cloud.pigx.admin.mapper.SysSocialDetailsMapper; +import com.pig4cloud.pigx.admin.service.SysUserService; +import com.pig4cloud.pigx.common.core.constant.SecurityConstants; +import com.pig4cloud.pigx.common.core.constant.enums.LoginTypeEnum; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author lengleng + * @date 2019年11月02日 + *

+ * 微信小程序 + */ +@Slf4j +@Component("MINI") +@AllArgsConstructor +public class MiniAppLoginHandler extends AbstractLoginHandler { + + private final SysUserService sysUserService; + + private final SysSocialDetailsMapper sysSocialDetailsMapper; + + /** + * 小程序登录传入code + *

+ * 通过code 调用qq 获取唯一标识 + * @param code + * @return + */ + @Override + public String identify(String code) { + SysSocialDetails condition = new SysSocialDetails(); + condition.setType(LoginTypeEnum.MINI_APP.getType()); + SysSocialDetails socialDetails = sysSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); + + String url = String.format(SecurityConstants.MINI_APP_AUTHORIZATION_CODE_URL, socialDetails.getAppId(), + socialDetails.getAppSecret(), code); + String result = HttpUtil.get(url); + log.debug("微信小程序响应报文:{}", result); + + Object obj = JSONUtil.parseObj(result).get("openid"); + return obj.toString(); + } + + /** + * openId 获取用户信息 + * @param openId + * @return + */ + @Override + public UserInfo info(String openId) { + SysUser user = sysUserService.getOne(Wrappers.query().lambda().eq(SysUser::getMiniOpenid, openId)); + + if (user == null) { + log.info("微信小程序未绑定:{}", openId); + return null; + } + return sysUserService.findUserInfo(user); + } + + /** + * 绑定逻辑 + * @param user 用户实体 + * @param identify 渠道返回唯一标识 + * @return + */ + @Override + public Boolean bind(SysUser user, String identify) { + user.setMiniOpenid(identify); + sysUserService.updateById(user); + return true; + } + +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysAuditLogMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysAuditLogMapper.java index d6eb0e457..b5c60e419 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysAuditLogMapper.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysAuditLogMapper.java @@ -24,8 +24,8 @@ import org.apache.ibatis.annotations.Mapper; /** * 审计记录表 * - * @author pigx code generator - * @date 2023-02-27 22:33:30 + * @author PIG + * @date 2023-02-28 20:12:23 */ @Mapper public interface SysAuditLogMapper extends PigxBaseMapper { diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysDeptMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysDeptMapper.java index e50fb1848..53f2d62ac 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysDeptMapper.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysDeptMapper.java @@ -23,6 +23,8 @@ import com.pig4cloud.pigx.admin.api.entity.SysDept; import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** *

* 部门管理 Mapper 接口 @@ -34,4 +36,11 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface SysDeptMapper extends PigxBaseMapper { + /** + * 获取部门的所有后代部门列表 + * @param deptId 部门ID + * @return 后代部门列表 + */ + List listDescendant(Long deptId); + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysDeptRelationMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysDeptRelationMapper.java deleted file mode 100644 index 9250bb62e..000000000 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysDeptRelationMapper.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * - * Copyright (c) 2018-2025, lengleng All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the pig4cloud.com developer nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * Author: lengleng (wangiegie@gmail.com) - * - */ - -package com.pig4cloud.pigx.admin.mapper; - -import com.pig4cloud.pigx.admin.api.entity.SysDeptRelation; -import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - *

- * Mapper 接口 - *

- * - * @author lengleng - * @since 2018-02-12 - */ -@Mapper -public interface SysDeptRelationMapper extends PigxBaseMapper { - - /** - * 删除部门 > 删除所有关联此部门子节点的闭包关系 - * @param id 部门ID - */ - void deleteDeptRelationsByDeptId(Long id); - - /** - * 删除节点数据 - * @param deptRelation 关系节点 - */ - void deleteDeptRelations(SysDeptRelation deptRelation); - - /** - * 新增节点数据 - * @param deptRelation 关系节点 - */ - void insertDeptRelations(SysDeptRelation deptRelation); - -} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysI18nMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysI18nMapper.java new file mode 100644 index 000000000..846ae3d13 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysI18nMapper.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2018-2025, lengleng All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: lengleng (wangiegie@gmail.com) + */ + +package com.pig4cloud.pigx.admin.mapper; + +import com.pig4cloud.pigx.admin.api.entity.SysI18nEntity; +import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 系统表-国际化 + * + * @author PIG + * @date 2023-02-14 09:07:01 + */ +@Mapper +public interface SysI18nMapper extends PigxBaseMapper { + +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysRouteConfMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysRouteConfMapper.java old mode 100755 new mode 100644 diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysScheduleMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysScheduleMapper.java new file mode 100644 index 000000000..d81ceeec4 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysScheduleMapper.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2018-2025, lengleng All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: lengleng (wangiegie@gmail.com) + */ + +package com.pig4cloud.pigx.admin.mapper; + +import com.pig4cloud.pigx.admin.api.entity.SysScheduleEntity; +import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 日程 + * + * @author aeizzz + * @date 2023-03-06 14:26:23 + */ +@Mapper +public interface SysScheduleMapper extends PigxBaseMapper { + +} \ No newline at end of file diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysUserRoleMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysUserRoleMapper.java index 4080595c1..22d37d9f9 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysUserRoleMapper.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysUserRoleMapper.java @@ -22,7 +22,6 @@ package com.pig4cloud.pigx.admin.mapper; import com.pig4cloud.pigx.admin.api.entity.SysUserRole; import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper; import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; /** *

@@ -35,13 +34,4 @@ import org.apache.ibatis.annotations.Param; @Mapper public interface SysUserRoleMapper extends PigxBaseMapper { - /** - * 根据用户Id删除该用户的角色关系 - * @param userId 用户ID - * @return boolean - * @author 寻欢·李 - * @date 2017年12月7日 16:31:38 - */ - Boolean deleteByUserId(@Param("userId") Long userId); - } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysAuditLogService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysAuditLogService.java index 3c387ad7a..93ee03f82 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysAuditLogService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysAuditLogService.java @@ -17,15 +17,24 @@ package com.pig4cloud.pigx.admin.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.pig4cloud.pigx.admin.api.entity.SysAuditLog; /** * 审计记录表 * - * @author pigx code generator - * @date 2023-02-27 22:33:30 + * @author PIG + * @date 2023-02-28 20:12:23 */ public interface SysAuditLogService extends IService { + /** + * 分页查询审计日志(数据权限处理) + * @param page 分页条件 + * @param sysAuditLog 查询条件 + * @return page + */ + Page getAuditsByScope(Page page, SysAuditLog sysAuditLog); + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDeptRelationService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDeptRelationService.java deleted file mode 100644 index 4b65ea593..000000000 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDeptRelationService.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * Copyright (c) 2018-2025, lengleng All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the pig4cloud.com developer nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * Author: lengleng (wangiegie@gmail.com) - * - */ - -package com.pig4cloud.pigx.admin.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.pig4cloud.pigx.admin.api.entity.SysDept; -import com.pig4cloud.pigx.admin.api.entity.SysDeptRelation; - -/** - *

- * 服务类 - *

- * - * @author lengleng - * @since 2018-02-12 - */ -public interface SysDeptRelationService extends IService { - - /** - * 新建部门关系 - * @param sysDept 部门 - */ - void insertDeptRelation(SysDept sysDept); - - /** - * 通过ID删除部门关系 - * @param id - */ - void deleteAllDeptRealtion(Long id); - - /** - * 更新部门关系 - * @param relation - */ - void updateDeptRealtion(SysDeptRelation relation); - -} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDeptService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDeptService.java index 09c736c8d..80293f3a6 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDeptService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDeptService.java @@ -40,18 +40,11 @@ public interface SysDeptService extends IService { /** * 查询部门树菜单 - * @return 树 * @param deptName 部门名称 + * @return 树 */ List> selectTree(String deptName); - /** - * 添加信息部门 - * @param sysDept - * @return - */ - Boolean saveDept(SysDept sysDept); - /** * 删除部门 * @param id 部门 ID @@ -59,15 +52,15 @@ public interface SysDeptService extends IService { */ Boolean removeDeptById(Long id); - /** - * 更新部门 - * @param sysDept 部门信息 - * @return 成功、失败 - */ - Boolean updateDeptById(SysDept sysDept); - List listExcelVo(); R importDept(List excelVOList, BindingResult bindingResult); + /** + * 获取部门的所有后代部门列表 + * @param deptId 部门ID + * @return 后代部门列表 + */ + List listDescendant(Long deptId); + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDictService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDictService.java index 654ed33af..265cebdf0 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDictService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDictService.java @@ -30,10 +30,10 @@ public interface SysDictService extends IService { /** * 根据ID 删除字典 - * @param id + * @param ids ID列表 * @return */ - R removeDict(Long id); + R removeDictByIds(Long[] ids); /** * 更新字典 diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysI18nService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysI18nService.java new file mode 100644 index 000000000..e735b1aa7 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysI18nService.java @@ -0,0 +1,20 @@ +package com.pig4cloud.pigx.admin.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.pig4cloud.pigx.admin.api.entity.SysI18nEntity; +import com.pig4cloud.pigx.admin.api.entity.SysLog; +import com.pig4cloud.pigx.common.core.util.R; + +import java.util.Map; + +public interface SysI18nService extends IService { + + Map listMap(); + + /** + * 同步数据 + * @return R + */ + R syncI18nCache(); + +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMenuService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMenuService.java index deaeb6d2a..02de41df8 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMenuService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMenuService.java @@ -64,7 +64,7 @@ public interface SysMenuService extends IService { * @param menuName 菜单名称 * @return */ - List> treeMenu(Long parentId, String menuName); + List> treeMenu(Long parentId, String menuName, String type); /** * 查询菜单 diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysOauthClientDetailsService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysOauthClientDetailsService.java index bf46c5152..f7fdad9a8 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysOauthClientDetailsService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysOauthClientDetailsService.java @@ -35,13 +35,6 @@ import com.pig4cloud.pigx.common.core.util.R; */ public interface SysOauthClientDetailsService extends IService { - /** - * 通过ID删除客户端 - * @param clientId - * @return - */ - Boolean removeByClientId(String clientId); - /** * 根据客户端信息 * @param clientDetailsDTO diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysPublicParamService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysPublicParamService.java index 64934d38f..a9117f77b 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysPublicParamService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysPublicParamService.java @@ -45,10 +45,10 @@ public interface SysPublicParamService extends IService { /** * 删除参数 - * @param publicId + * @param publicIds 参数列表 * @return */ - R removeParam(Long publicId); + R removeParamByIds(Long[] publicIds); /** * 同步缓存 diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRoleService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRoleService.java index 7f1055060..e0d30d7f0 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRoleService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRoleService.java @@ -55,10 +55,10 @@ public interface SysRoleService extends IService { /** * 通过角色ID,删除角色 - * @param id + * @param ids * @return */ - Boolean removeRoleById(Long id); + Boolean removeRoleByIds(Long[] ids); /** * 根据角色菜单列表 diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRouteConfService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRouteConfService.java old mode 100755 new mode 100644 diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysScheduleService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysScheduleService.java new file mode 100644 index 000000000..860cdb334 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysScheduleService.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2018-2025, lengleng All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: lengleng (wangiegie@gmail.com) + */ + +package com.pig4cloud.pigx.admin.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.pig4cloud.pigx.admin.api.entity.SysScheduleEntity; + +import java.util.List; + +/** + * 日程 + * + * @author aeizzz + * @date 2023-03-06 14:26:23 + */ +public interface SysScheduleService extends IService { + + IPage getScheduleByScope(Page page, SysScheduleEntity sysSchedule); + + List selectListByScope(String month); + +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserRoleService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserRoleService.java index 3f932419e..5b3d23262 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserRoleService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserRoleService.java @@ -32,13 +32,4 @@ import com.pig4cloud.pigx.admin.api.entity.SysUserRole; */ public interface SysUserRoleService extends IService { - /** - * 根据用户Id删除该用户的角色关系 - * @param userId 用户ID - * @return boolean - * @author 寻欢·李 - * @date 2017年12月7日 16:31:38 - */ - Boolean deleteByUserId(Long userId); - } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java index 5f5a441a8..c37cb7c06 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysUserService.java @@ -25,8 +25,6 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.pig4cloud.pigx.admin.api.dto.UserDTO; import com.pig4cloud.pigx.admin.api.dto.UserInfo; import com.pig4cloud.pigx.admin.api.entity.SysUser; -import com.pig4cloud.pigx.admin.api.vo.CpUserExcelVo; -import com.pig4cloud.pigx.admin.api.vo.DingUserExcelVo; import com.pig4cloud.pigx.admin.api.vo.UserExcelVO; import com.pig4cloud.pigx.admin.api.vo.UserVO; import com.pig4cloud.pigx.common.core.util.R; @@ -57,10 +55,10 @@ public interface SysUserService extends IService { /** * 删除用户 - * @param sysUser 用户 + * @param ids 用户 * @return boolean */ - Boolean deleteUserById(SysUser sysUser); + Boolean deleteUserByIds(Long[] ids); /** * 更新当前用户基本信息 @@ -74,7 +72,7 @@ public interface SysUserService extends IService { * @param userDto 用户信息 * @return */ - R updateUser(UserDTO userDto); + Boolean updateUser(UserDTO userDto); /** * 通过ID查询用户信息 @@ -126,8 +124,10 @@ public interface SysUserService extends IService { */ R lockUser(String username); - R importDingUser(List excelVOList, BindingResult bindingResult); + R changePassword(UserDTO userDto); - R importCpUser(List excelVOList, BindingResult bindingResult); + R unbinding(String type); + + R checkPassword(String password); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/ConnectServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/ConnectServiceImpl.java index a821daee5..c15cfcb01 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/ConnectServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/ConnectServiceImpl.java @@ -90,7 +90,7 @@ public class ConnectServiceImpl implements ConnectService { // 保存部门以及部门关系 if (CollectionUtils.isNotEmpty(syncDept)) { - syncDept.forEach(sysDeptService::saveDept); + syncDept.forEach(sysDeptService::save); } return Boolean.TRUE; @@ -196,7 +196,7 @@ public class ConnectServiceImpl implements ConnectService { sysDept.setParentId(dept.getParentId()); sysDept.setSortOrder(dept.getOrder().intValue()); return sysDept; - }).forEach(sysDeptService::saveDept); + }).forEach(sysDeptService::save); return R.ok(); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysAuditLogServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysAuditLogServiceImpl.java index 0fdcbfb9c..7634febab 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysAuditLogServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysAuditLogServiceImpl.java @@ -16,19 +16,47 @@ */ package com.pig4cloud.pigx.admin.service.impl; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.pig4cloud.pigx.admin.api.entity.SysAuditLog; import com.pig4cloud.pigx.admin.mapper.SysAuditLogMapper; import com.pig4cloud.pigx.admin.service.SysAuditLogService; +import com.pig4cloud.pigx.common.data.datascope.DataScope; +import com.pig4cloud.pigx.common.security.util.SecurityUtils; import org.springframework.stereotype.Service; /** * 审计记录表 * - * @author pigx code generator - * @date 2023-02-27 22:33:30 + * @author PIG + * @date 2023-02-28 20:12:23 */ @Service public class SysAuditLogServiceImpl extends ServiceImpl implements SysAuditLogService { + /** + * 分页查询审计日志(数据权限处理) + * @param page 分页条件 + * @param sysAuditLog 查询条件 + * @return page + */ + @Override + public Page getAuditsByScope(Page page, SysAuditLog sysAuditLog) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.like(StrUtil.isNotBlank(sysAuditLog.getAuditName()), SysAuditLog::getAuditName, + sysAuditLog.getAuditName()); + wrapper.like(StrUtil.isNotBlank(sysAuditLog.getAuditField()), SysAuditLog::getAuditField, + sysAuditLog.getAuditField()); + wrapper.like(StrUtil.isNotBlank(sysAuditLog.getCreateBy()), SysAuditLog::getCreateBy, + sysAuditLog.getCreateBy()); + + // 数据权限限制,只查询本人的审计日志 + DataScope dataScope = new DataScope(); + dataScope.setUsername(SecurityUtils.getUser().getUsername()); + return baseMapper.selectPageByScope(page, wrapper, dataScope); + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptRelationServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptRelationServiceImpl.java deleted file mode 100644 index 4fb0373ea..000000000 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptRelationServiceImpl.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * - * Copyright (c) 2018-2025, lengleng All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the pig4cloud.com developer nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * Author: lengleng (wangiegie@gmail.com) - * - */ - -package com.pig4cloud.pigx.admin.service.impl; - -import cn.hutool.core.collection.CollUtil; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.pig4cloud.pigx.admin.api.entity.SysDept; -import com.pig4cloud.pigx.admin.api.entity.SysDeptRelation; -import com.pig4cloud.pigx.admin.mapper.SysDeptRelationMapper; -import com.pig4cloud.pigx.admin.service.SysDeptRelationService; -import lombok.AllArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.stream.Collectors; - -/** - *

- * 服务实现类 - *

- * - * @author lengleng - * @since 2018-02-12 - */ -@Service -@AllArgsConstructor -public class SysDeptRelationServiceImpl extends ServiceImpl - implements SysDeptRelationService { - - private final SysDeptRelationMapper sysDeptRelationMapper; - - /** - * 维护部门关系 - * @param sysDept 部门 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void insertDeptRelation(SysDept sysDept) { - // 增加部门关系表 - List relationList = sysDeptRelationMapper.selectList( - Wrappers.query().lambda().eq(SysDeptRelation::getDescendant, sysDept.getParentId())) - .stream().map(relation -> { - relation.setDescendant(sysDept.getDeptId()); - return relation; - }).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(relationList)) { - relationList.forEach(ele -> baseMapper.insert(ele)); - } - - // 自己也要维护到关系表中 - SysDeptRelation own = new SysDeptRelation(); - own.setDescendant(sysDept.getDeptId()); - own.setAncestor(sysDept.getDeptId()); - sysDeptRelationMapper.insert(own); - } - - /** - * 通过ID删除部门关系 - * @param id - */ - @Override - public void deleteAllDeptRealtion(Long id) { - baseMapper.deleteDeptRelationsByDeptId(id); - } - - /** - * 更新部门关系 - * @param relation - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void updateDeptRealtion(SysDeptRelation relation) { - baseMapper.deleteDeptRelations(relation); - baseMapper.insertDeptRelations(relation); - } - -} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptServiceImpl.java index 62e2be923..a50cfa679 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptServiceImpl.java @@ -27,10 +27,8 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.pig4cloud.pigx.admin.api.entity.SysDept; -import com.pig4cloud.pigx.admin.api.entity.SysDeptRelation; import com.pig4cloud.pigx.admin.api.vo.DeptExcelVo; import com.pig4cloud.pigx.admin.mapper.SysDeptMapper; -import com.pig4cloud.pigx.admin.service.SysDeptRelationService; import com.pig4cloud.pigx.admin.service.SysDeptService; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.data.datascope.DataScope; @@ -56,25 +54,8 @@ import java.util.stream.Collectors; @AllArgsConstructor public class SysDeptServiceImpl extends ServiceImpl implements SysDeptService { - private final SysDeptRelationService sysDeptRelationService; - private final SysDeptMapper deptMapper; - /** - * 添加信息部门 - * @param dept 部门 - * @return - */ - @Override - @Transactional(rollbackFor = Exception.class) - public Boolean saveDept(SysDept dept) { - SysDept sysDept = new SysDept(); - BeanUtils.copyProperties(dept, sysDept); - this.save(sysDept); - sysDeptRelationService.insertDeptRelation(sysDept); - return Boolean.TRUE; - } - /** * 删除部门 * @param id 部门 ID @@ -84,97 +65,17 @@ public class SysDeptServiceImpl extends ServiceImpl impl @Transactional(rollbackFor = Exception.class) public Boolean removeDeptById(Long id) { // 级联删除部门 - List idList = sysDeptRelationService - .list(Wrappers.query().lambda().eq(SysDeptRelation::getAncestor, id)).stream() - .map(SysDeptRelation::getDescendant).collect(Collectors.toList()); + List idList = baseMapper.listDescendant(id).stream().map(SysDept::getDeptId).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(idList)) { - this.removeByIds(idList); - } + Optional.ofNullable(idList).filter(CollUtil::isNotEmpty).ifPresent(this::removeByIds); - // 删除部门级联关系 - sysDeptRelationService.deleteAllDeptRealtion(id); return Boolean.TRUE; } - /** - * 更新部门 - * @param sysDept 部门信息 - * @return 成功、失败 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public Boolean updateDeptById(SysDept sysDept) { - // 更新部门状态 - this.updateById(sysDept); - // 更新部门关系 - SysDeptRelation relation = new SysDeptRelation(); - relation.setAncestor(sysDept.getParentId()); - relation.setDescendant(sysDept.getDeptId()); - sysDeptRelationService.updateDeptRealtion(relation); - return Boolean.TRUE; - } - - /** - * 导出部门 - * @return - */ - @Override - public List listExcelVo() { - List list = this.list(); - List deptExcelVos = list.stream().map(item -> { - DeptExcelVo deptExcelVo = new DeptExcelVo(); - deptExcelVo.setName(item.getName()); - Optional first = this.list().stream().filter(it -> item.getParentId().equals(it.getDeptId())) - .map(SysDept::getName).findFirst(); - deptExcelVo.setParentName(first.orElse("跟部门")); - deptExcelVo.setSortOrder(item.getSortOrder()); - return deptExcelVo; - }).collect(Collectors.toList()); - return deptExcelVos; - } - - @Override - public R importDept(List excelVOList, BindingResult bindingResult) { - List errorMessageList = (List) bindingResult.getTarget(); - - List deptList = this.list(); - for (DeptExcelVo item : excelVOList) { - Set errorMsg = new HashSet<>(); - boolean exsitUsername = deptList.stream().anyMatch(sysDept -> item.getName().equals(sysDept.getName())); - if (exsitUsername) { - errorMsg.add("部门名称已经存在"); - } - SysDept one = this.getOne(Wrappers.lambdaQuery().eq(SysDept::getName, item.getParentName())); - if (item.getParentName().equals("跟部门")) { - one = new SysDept(); - one.setDeptId(0L); - } - if (one == null) { - errorMsg.add("上级部门不存在"); - } - if (CollUtil.isEmpty(errorMsg)) { - SysDept sysDept = new SysDept(); - sysDept.setName(item.getName()); - sysDept.setParentId(one.getDeptId()); - sysDept.setSortOrder(item.getSortOrder()); - this.saveDept(sysDept); - } - else { - // 数据不合法情况 - errorMessageList.add(new ErrorMessage(item.getLineNum(), errorMsg)); - } - } - if (CollUtil.isNotEmpty(errorMessageList)) { - return R.failed(errorMessageList); - } - return R.ok(null, "部门导入成功"); - } - /** * 查询全部部门树 - * @return 树 部门名称 * @param deptName + * @return 树 部门名称 */ @Override public List> selectTree(String deptName) { @@ -216,4 +117,70 @@ public class SysDeptServiceImpl extends ServiceImpl impl return TreeUtil.build(collect, 0L); } + /** + * 导出部门 + * @return + */ + @Override + public List listExcelVo() { + List list = this.list(); + List deptExcelVos = list.stream().map(item -> { + DeptExcelVo deptExcelVo = new DeptExcelVo(); + deptExcelVo.setName(item.getName()); + Optional first = this.list().stream().filter(it -> item.getParentId().equals(it.getDeptId())) + .map(SysDept::getName).findFirst(); + deptExcelVo.setParentName(first.orElse("根部门")); + deptExcelVo.setSortOrder(item.getSortOrder()); + return deptExcelVo; + }).collect(Collectors.toList()); + return deptExcelVos; + } + + @Override + public R importDept(List excelVOList, BindingResult bindingResult) { + List errorMessageList = (List) bindingResult.getTarget(); + + List deptList = this.list(); + for (DeptExcelVo item : excelVOList) { + Set errorMsg = new HashSet<>(); + boolean exsitUsername = deptList.stream().anyMatch(sysDept -> item.getName().equals(sysDept.getName())); + if (exsitUsername) { + errorMsg.add("部门名称已经存在"); + } + SysDept one = this.getOne(Wrappers.lambdaQuery().eq(SysDept::getName, item.getParentName())); + if (item.getParentName().equals("根部门")) { + one = new SysDept(); + one.setDeptId(0L); + } + if (one == null) { + errorMsg.add("上级部门不存在"); + } + if (CollUtil.isEmpty(errorMsg)) { + SysDept sysDept = new SysDept(); + sysDept.setName(item.getName()); + sysDept.setParentId(one.getDeptId()); + sysDept.setSortOrder(item.getSortOrder()); + baseMapper.insert(sysDept); + } + else { + // 数据不合法情况 + errorMessageList.add(new ErrorMessage(item.getLineNum(), errorMsg)); + } + } + if (CollUtil.isNotEmpty(errorMessageList)) { + return R.failed(errorMessageList); + } + return R.ok(null, "部门导入成功"); + } + + /** + * 获取部门的所有后代部门列表 + * @param deptId 部门ID + * @return 后代部门列表 + */ + @Override + public List listDescendant(Long deptId) { + return baseMapper.listDescendant(deptId); + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDictServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDictServiceImpl.java index 1bff7aac1..c62e3912f 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDictServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDictServiceImpl.java @@ -16,6 +16,7 @@ */ package com.pig4cloud.pigx.admin.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.pig4cloud.pigx.admin.api.entity.SysDict; @@ -33,6 +34,9 @@ import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; +import java.util.stream.Collectors; + /** * 字典表 * @@ -47,21 +51,21 @@ public class SysDictServiceImpl extends ServiceImpl impl /** * 根据ID 删除字典 - * @param id 字典ID + * @param ids 字典ID 列表 * @return */ @Override @Transactional(rollbackFor = Exception.class) @CacheEvict(value = CacheConstants.DICT_DETAILS, allEntries = true) - public R removeDict(Long id) { - SysDict dict = this.getById(id); - // 系统内置 - if (DictTypeEnum.SYSTEM.getType().equals(dict.getSystemFlag())) { - return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_DICT_DELETE_SYSTEM)); - } + public R removeDictByIds(Long[] ids) { - baseMapper.deleteById(id); - dictItemMapper.delete(Wrappers.lambdaQuery().eq(SysDictItem::getDictId, id)); + List dictIdList = baseMapper.selectBatchIds(CollUtil.toList(ids)).stream() + .filter(sysDict -> !sysDict.getSystemFlag().equals(DictTypeEnum.SYSTEM.getType()))// 系统内置类型不删除 + .map(SysDict::getId).collect(Collectors.toList()); + + baseMapper.deleteBatchIds(dictIdList); + + dictItemMapper.delete(Wrappers.lambdaQuery().in(SysDictItem::getDictId, dictIdList)); return R.ok(); } @@ -78,7 +82,8 @@ public class SysDictServiceImpl extends ServiceImpl impl if (DictTypeEnum.SYSTEM.getType().equals(sysDict.getSystemFlag())) { return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_DICT_UPDATE_SYSTEM)); } - return R.ok(this.updateById(dict)); + this.updateById(dict); + return R.ok(dict); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java index b68e85374..cd7a1e3cf 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java @@ -37,8 +37,10 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; +import java.util.Objects; /** * 文件管理 @@ -107,6 +109,9 @@ public class SysFileServiceImpl extends ServiceImpl impl @Transactional(rollbackFor = Exception.class) public Boolean deleteFile(Long id) { SysFile file = this.getById(id); + if (Objects.isNull(file)) { + return Boolean.FALSE; + } fileTemplate.removeObject(properties.getBucketName(), file.getFileName()); return this.removeById(id); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysI18nServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysI18nServiceImpl.java new file mode 100644 index 000000000..dd97a2457 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysI18nServiceImpl.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2018-2025, lengleng All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: lengleng (wangiegie@gmail.com) + */ +package com.pig4cloud.pigx.admin.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.pig4cloud.pigx.admin.api.entity.SysI18nEntity; +import com.pig4cloud.pigx.admin.mapper.SysI18nMapper; +import com.pig4cloud.pigx.admin.service.SysI18nService; +import com.pig4cloud.pigx.common.core.constant.CacheConstants; +import com.pig4cloud.pigx.common.core.util.R; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 系统表-国际化 + * + * @author PIG + * @date 2023-02-14 09:07:01 + */ +@Service +public class SysI18nServiceImpl extends ServiceImpl implements SysI18nService { + + /** + * 生成前段需要的i18n 格式内容 + * @return + */ + @Override + @Cacheable(value = CacheConstants.I18N_DETAILS) + public Map listMap() { + List sysI18nEntities = baseMapper.selectList(null); + HashMap>> stringListHashMap = new HashMap<>(); + List> zhCh = new ArrayList<>(); + List> en = new ArrayList<>(); + sysI18nEntities.forEach(item -> { + HashMap zhChMap = new HashMap<>(); + HashMap enMap = new HashMap<>(); + zhChMap.put(item.getName(), item.getZhCn()); + enMap.put(item.getName(), item.getEn()); + zhCh.add(zhChMap); + en.add(enMap); + }); + stringListHashMap.put("zh-cn", zhCh); + stringListHashMap.put("en", en); + return stringListHashMap; + } + + /** + * 同步数据 + * @return + */ + @Override + @CacheEvict(value = CacheConstants.I18N_DETAILS, allEntries = true) + public R syncI18nCache() { + return R.ok(); + } + +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java index 9f21a9f8a..436511a88 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMenuServiceImpl.java @@ -23,13 +23,16 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNode; import cn.hutool.core.lang.tree.TreeUtil; +import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.pig4cloud.pigx.admin.api.entity.SysI18nEntity; import com.pig4cloud.pigx.admin.api.entity.SysMenu; import com.pig4cloud.pigx.admin.api.entity.SysRoleMenu; import com.pig4cloud.pigx.admin.mapper.SysMenuMapper; import com.pig4cloud.pigx.admin.mapper.SysRoleMenuMapper; +import com.pig4cloud.pigx.admin.service.SysI18nService; import com.pig4cloud.pigx.admin.service.SysMenuService; import com.pig4cloud.pigx.common.core.constant.CacheConstants; import com.pig4cloud.pigx.common.core.constant.CommonConstants; @@ -38,6 +41,7 @@ import com.pig4cloud.pigx.common.core.exception.ErrorCodes; import com.pig4cloud.pigx.common.core.util.MsgUtils; import com.pig4cloud.pigx.common.core.util.R; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -45,10 +49,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.validation.constraints.NotNull; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -63,10 +64,13 @@ import java.util.stream.Collectors; */ @Service @AllArgsConstructor +@Slf4j public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService { private final SysRoleMenuMapper sysRoleMenuMapper; + private final SysI18nService sysI18nService; + @Override @Cacheable(value = CacheConstants.MENU_DETAILS, key = "#roleId", unless = "#result.isEmpty()") public List findMenuByRoleId(Long roleId) { @@ -101,13 +105,13 @@ public class SysMenuServiceImpl extends ServiceImpl impl * @return */ @Override - public List> treeMenu(Long parentId, String menuName) { + public List> treeMenu(Long parentId, String menuName, String type) { Long parent = parentId == null ? CommonConstants.MENU_TREE_ROOT_ID : parentId; List> collect = baseMapper - .selectList( - Wrappers.lambdaQuery().like(StrUtil.isNotBlank(menuName), SysMenu::getName, menuName) - .orderByAsc(SysMenu::getSortOrder)) + .selectList(Wrappers.lambdaQuery() + .like(StrUtil.isNotBlank(menuName), SysMenu::getName, menuName) + .eq(StrUtil.isNotBlank(type), SysMenu::getMenuType, type).orderByAsc(SysMenu::getSortOrder)) .stream().map(getNodeFunction()).collect(Collectors.toList()); // 模糊查询 不组装树结构 直接返回 表格方便编辑 @@ -132,8 +136,14 @@ public class SysMenuServiceImpl extends ServiceImpl impl */ @Override public List> filterMenu(Set all, String type, Long parentId) { - List> collect = all.stream().filter(menuTypePredicate(type)).map(getNodeFunction()) - .collect(Collectors.toList()); + List list = sysI18nService.list(); + List> collect = all.stream().filter(menuTypePredicate(type)).peek(item -> { + Optional first = list.stream().filter(it -> it.getZhCn().equals(item.getName())).findFirst(); + if (first.isPresent()) { + item.setName(first.get().getName()); + } + }).map(getNodeFunction()).collect(Collectors.toList()); + Long parent = parentId == null ? CommonConstants.MENU_TREE_ROOT_ID : parentId; return TreeUtil.build(collect, parent); } @@ -148,14 +158,22 @@ public class SysMenuServiceImpl extends ServiceImpl impl node.setWeight(menu.getSortOrder()); // 扩展属性 Map extra = new HashMap<>(); - extra.put("icon", menu.getIcon()); extra.put("path", menu.getPath()); extra.put("menuType", menu.getMenuType()); extra.put("permission", menu.getPermission()); - extra.put("label", menu.getName()); extra.put("sortOrder", menu.getSortOrder()); - extra.put("keepAlive", menu.getKeepAlive()); - extra.put("visible", menu.getVisible()); + + // 适配 vue3 + Map meta = new HashMap<>(); + meta.put("title", menu.getName()); + meta.put("isLink", menu.getPath() != null && menu.getPath().startsWith("http") ? menu.getPath() : ""); + meta.put("isHide", !BooleanUtil.toBooleanObject(menu.getVisible())); + meta.put("isKeepAlive", BooleanUtil.toBooleanObject(menu.getKeepAlive())); + meta.put("isAffix", false); + meta.put("isIframe", BooleanUtil.toBooleanObject(menu.getEmbedded())); + meta.put("icon", menu.getIcon()); + + extra.put("meta", meta); node.setExtra(extra); return node; }; diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysOauthClientDetailsServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysOauthClientDetailsServiceImpl.java index 07d76fb99..2e625f041 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysOauthClientDetailsServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysOauthClientDetailsServiceImpl.java @@ -55,30 +55,14 @@ import java.util.stream.Collectors; public class SysOauthClientDetailsServiceImpl extends ServiceImpl implements SysOauthClientDetailsService { - /** - * 通过ID删除客户端 - * @param clientId - * @return - */ - @Override - @CacheEvict(value = CacheConstants.CLIENT_DETAILS_KEY, key = "#clientId") - public Boolean removeByClientId(String clientId) { - // 更新库 - baseMapper - .delete(Wrappers.lambdaQuery().eq(SysOauthClientDetails::getClientId, clientId)); - // 更新Redis - SpringContextHolder.publishEvent(new ClientDetailsInitRunner.ClientDetailsInitEvent(clientId)); - return Boolean.TRUE; - } - /** * 根据客户端信息 * @param clientDetailsDTO * @return */ @Override - @Transactional(rollbackFor = Exception.class) @CacheEvict(value = CacheConstants.CLIENT_DETAILS_KEY, key = "#clientDetailsDTO.clientId") + @Transactional(rollbackFor = Exception.class) public Boolean updateClientById(SysOauthClientDetailsDTO clientDetailsDTO) { this.insertOrUpdate(clientDetailsDTO); return Boolean.TRUE; @@ -152,7 +136,6 @@ public class SysOauthClientDetailsServiceImpl extends ServiceImpl idList = this.baseMapper.selectBatchIds(CollUtil.toList(publicIds)).stream() + .filter(p -> !p.getSystemFlag().equals(DictTypeEnum.SYSTEM.getType()))// 系统内置的跳过不能删除 + .map(SysPublicParam::getPublicId).collect(Collectors.toList()); + return R.ok(this.removeBatchByIds(idList)); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleMenuServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleMenuServiceImpl.java index 63c5bbc10..6a245e1cd 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleMenuServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleMenuServiceImpl.java @@ -74,7 +74,7 @@ public class SysRoleMenuServiceImpl extends ServiceImpl baseMapper.insert(ele)); + this.saveBatch(roleMenuList); return Boolean.TRUE; } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java index b08c06031..16fe89f92 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysRoleServiceImpl.java @@ -77,21 +77,22 @@ public class SysRoleServiceImpl extends ServiceImpl impl * @return */ @Override - @Cacheable(value = CacheConstants.ROLE_DETAILS, key = "#key") + @Cacheable(value = CacheConstants.ROLE_DETAILS, key = "#key", unless = "#result.isEmpty()") public List findRolesByRoleIds(List roleIdList, String key) { return baseMapper.selectBatchIds(roleIdList); } /** * 通过角色ID,删除角色,并清空角色菜单缓存 - * @param id + * @param ids * @return */ @Override @Transactional(rollbackFor = Exception.class) - public Boolean removeRoleById(Long id) { - roleMenuService.remove(Wrappers.update().lambda().eq(SysRoleMenu::getRoleId, id)); - return this.removeById(id); + public Boolean removeRoleByIds(Long[] ids) { + roleMenuService + .remove(Wrappers.update().lambda().in(SysRoleMenu::getRoleId, CollUtil.toList(ids))); + return this.removeBatchByIds(CollUtil.toList(ids)); } /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysScheduleServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysScheduleServiceImpl.java new file mode 100644 index 000000000..0704a874d --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysScheduleServiceImpl.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2018-2025, lengleng All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: lengleng (wangiegie@gmail.com) + */ +package com.pig4cloud.pigx.admin.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.pig4cloud.pigx.admin.api.entity.SysScheduleEntity; +import com.pig4cloud.pigx.admin.mapper.SysScheduleMapper; +import com.pig4cloud.pigx.admin.service.SysScheduleService; +import com.pig4cloud.pigx.common.data.datascope.DataScope; +import com.pig4cloud.pigx.common.security.util.SecurityUtils; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAdjusters; +import java.util.List; +import java.util.Objects; + +/** + * 日程 + * + * @author aeizzz + * @date 2023-03-06 14:26:23 + */ +@Service +public class SysScheduleServiceImpl extends ServiceImpl + implements SysScheduleService { + + @Override + public IPage getScheduleByScope(Page page, SysScheduleEntity sysSchedule) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.like(StrUtil.isNotBlank(sysSchedule.getTitle()), SysScheduleEntity::getTitle, sysSchedule.getTitle()); + wrapper.like(StrUtil.isNotBlank(sysSchedule.getType()), SysScheduleEntity::getType, sysSchedule.getType()); + wrapper.eq(Objects.nonNull(sysSchedule.getDate()), SysScheduleEntity::getDate, sysSchedule.getDate()); + DataScope dataScope = new DataScope(); + dataScope.setUsername(SecurityUtils.getUser().getUsername()); + return baseMapper.selectPageByScope(page, wrapper, dataScope); + } + + @Override + public List selectListByScope(String month) { + LocalDate parse = LocalDate.parse(month, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + LocalDate firstDay = parse.with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天 + LocalDate lastDay = parse.with(TemporalAdjusters.lastDayOfMonth()); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.between(SysScheduleEntity::getDate, firstDay, lastDay); + DataScope dataScope = new DataScope(); + dataScope.setUsername(SecurityUtils.getUser().getUsername()); + return baseMapper.selectListByScope(wrapper, dataScope); + } + +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java index 8d4c3fc18..1d49c27da 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysTenantServiceImpl.java @@ -43,7 +43,7 @@ import java.util.stream.Collectors; /** * 租户 - * + *

* mybatis-plus 3.4.3.3 特殊处理 https://github.com/baomidou/mybatis-plus/pull/3592 * * @author lengleng @@ -57,8 +57,6 @@ public class SysTenantServiceImpl extends ServiceImpl dictList = new ArrayList<>(32); List dictIdList = new ArrayList<>(32); List dictItemList = new ArrayList<>(64); + List menuList = new ArrayList<>(128); List clientDetailsList = new ArrayList<>(16); List publicParamList = new ArrayList<>(64); - List menuList = new ArrayList<>(); TenantBroker.runAs(defaultId, (id) -> { // 查询系统内置字典 @@ -129,27 +127,24 @@ public class SysTenantServiceImpl extends ServiceImpllambdaQuery().in(SysDictItem::getDictId, dictIdList))); + SysTenantMenu tenantMenu = sysTenantMenuService.getById(sysTenant.getMenuId()); + String[] split = tenantMenu.getMenuIds().split(","); + List newMenuList = menuService.list(Wrappers.lambdaQuery().in(SysMenu::getMenuId, split)); + // 查询当前租户菜单 + menuList.addAll(newMenuList); // 查询客户端配置 clientDetailsList.addAll(clientServices.list()); // 查询系统参数配置 publicParamList.addAll(paramService.list()); - - SysTenantMenu tenantMenu = sysTenantMenuService.getById(sysTenant.getMenuId()); - String[] split = tenantMenu.getMenuIds().split(","); - List newMenuList = menuService.list(Wrappers.lambdaQuery().in(SysMenu::getMenuId, split)); - menuList.addAll(newMenuList); }); // 保证插入租户为新的租户 TenantBroker.applyAs(sysTenant.getId(), (id -> { - // 插入部门 SysDept dept = new SysDept(); dept.setName(defaultDeptName); dept.setParentId(0L); deptService.save(dept); - // 维护部门关系 - deptRelationService.insertDeptRelation(dept); // 构造初始化用户 SysUser user = new SysUser(); user.setUsername(defaultUsername); @@ -176,7 +171,6 @@ public class SysTenantServiceImpl extends ServiceImpl implements SysUserRoleService { - /** - * 根据用户Id删除该用户的角色关系 - * @param userId 用户ID - * @return boolean - * @author 寻欢·李 - * @date 2017年12月7日 16:31:38 - */ - @Override - public Boolean deleteByUserId(Long userId) { - return baseMapper.deleteByUserId(userId); - } - } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java index 13e7b7e94..0ef47b365 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysUserServiceImpl.java @@ -22,6 +22,8 @@ package com.pig4cloud.pigx.admin.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -29,13 +31,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.pig4cloud.pigx.admin.api.dto.UserDTO; import com.pig4cloud.pigx.admin.api.dto.UserInfo; import com.pig4cloud.pigx.admin.api.entity.*; -import com.pig4cloud.pigx.admin.api.vo.CpUserExcelVo; -import com.pig4cloud.pigx.admin.api.vo.DingUserExcelVo; import com.pig4cloud.pigx.admin.api.vo.UserExcelVO; import com.pig4cloud.pigx.admin.api.vo.UserVO; import com.pig4cloud.pigx.admin.mapper.SysUserMapper; import com.pig4cloud.pigx.admin.mapper.SysUserPostMapper; +import com.pig4cloud.pigx.admin.mapper.SysUserRoleMapper; import com.pig4cloud.pigx.admin.service.*; +import com.pig4cloud.pigx.common.audit.annotation.Audit; import com.pig4cloud.pigx.common.core.constant.CacheConstants; import com.pig4cloud.pigx.common.core.constant.CommonConstants; import com.pig4cloud.pigx.common.core.exception.ErrorCodes; @@ -44,9 +46,13 @@ import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.data.datascope.DataScope; import com.pig4cloud.pigx.common.data.resolver.ParamResolver; import com.pig4cloud.pigx.common.excel.vo.ErrorMessage; +import com.pig4cloud.pigx.common.security.service.PigxUser; +import com.pig4cloud.pigx.common.security.util.SecurityUtils; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CacheEvict; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; @@ -73,12 +79,16 @@ public class SysUserServiceImpl extends ServiceImpl impl private final SysRoleService sysRoleService; + private final SysPostService sysPostService; + private final SysDeptService sysDeptService; - private final SysUserRoleService sysUserRoleService; + private final SysUserRoleMapper sysUserRoleMapper; private final SysUserPostMapper sysUserPostMapper; + private final CacheManager cacheManager; + /** * 保存用户信息 * @param userDto DTO 对象 @@ -112,13 +122,14 @@ public class SysUserServiceImpl extends ServiceImpl impl userDto.setRole(Collections.singletonList(sysRole.getRoleId())); } - List userRoleList = userDto.getRole().stream().map(roleId -> { + // 插入用户角色关系表 + userDto.getRole().stream().map(roleId -> { SysUserRole userRole = new SysUserRole(); userRole.setUserId(sysUser.getUserId()); userRole.setRoleId(roleId); return userRole; - }).collect(Collectors.toList()); - return sysUserRoleService.saveBatch(userRoleList); + }).forEach(sysUserRoleMapper::insert); + return Boolean.TRUE; } /** @@ -170,16 +181,21 @@ public class SysUserServiceImpl extends ServiceImpl impl /** * 删除用户 - * @param sysUser 用户 + * @param ids 用户ID 列表 * @return Boolean */ @Override - @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#sysUser.username") - public Boolean deleteUserById(SysUser sysUser) { - sysUserRoleService.deleteByUserId(sysUser.getUserId()); - // 删除用户部门信息 - sysUserPostMapper.delete(Wrappers.lambdaQuery().eq(SysUserPost::getUserId, sysUser.getUserId())); - this.removeById(sysUser.getUserId()); + @Transactional(rollbackFor = Exception.class) + public Boolean deleteUserByIds(Long[] ids) { + // 删除 spring cache + List userList = baseMapper.selectBatchIds(CollUtil.toList(ids)); + Cache cache = cacheManager.getCache(CacheConstants.USER_DETAILS); + for (SysUser sysUser : userList) { + cache.evict(sysUser.getUsername()); + } + + sysUserRoleMapper.delete(Wrappers.lambdaQuery().in(SysUserRole::getUserId, CollUtil.toList(ids))); + this.removeBatchByIds(CollUtil.toList(ids)); return Boolean.TRUE; } @@ -187,15 +203,8 @@ public class SysUserServiceImpl extends ServiceImpl impl @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") public R updateUserInfo(UserDTO userDto) { UserVO userVO = baseMapper.getUserVoByUsername(userDto.getUsername()); - if (!ENCODER.matches(userDto.getPassword(), userVO.getPassword())) { - log.info("原密码错误,修改个人信息失败:{}", userDto.getUsername()); - return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_UPDATE_PASSWORDERROR)); - } SysUser sysUser = new SysUser(); - if (StrUtil.isNotBlank(userDto.getNewpassword1())) { - sysUser.setPassword(ENCODER.encode(userDto.getNewpassword1())); - } sysUser.setPhone(userDto.getPhone()); sysUser.setUserId(userVO.getUserId()); sysUser.setAvatar(userDto.getAvatar()); @@ -207,40 +216,36 @@ public class SysUserServiceImpl extends ServiceImpl impl @Override @Transactional(rollbackFor = Exception.class) + @Audit(name = "用户更新", spel = "@sysUserMapper.selectById(#userDto.userId)") @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") - public R updateUser(UserDTO userDto) { + public Boolean updateUser(UserDTO userDto) { + // 更新用户表信息 SysUser sysUser = new SysUser(); - - boolean exists = baseMapper.exists(Wrappers.lambdaQuery().eq(SysUser::getPhone, userDto.getPhone()) - .ne(SysUser::getUserId, userDto.getUserId())); - if (exists) { - return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_PHONE_EXISTING, userDto.getPhone())); - } - BeanUtils.copyProperties(userDto, sysUser); sysUser.setUpdateTime(LocalDateTime.now()); - if (StrUtil.isNotBlank(userDto.getPassword())) { sysUser.setPassword(ENCODER.encode(userDto.getPassword())); } this.updateById(sysUser); - sysUserRoleService - .remove(Wrappers.update().lambda().eq(SysUserRole::getUserId, userDto.getUserId())); - userDto.getRole().forEach(roleId -> { + // 更新用户角色表 + sysUserRoleMapper.delete(Wrappers.lambdaQuery().eq(SysUserRole::getUserId, userDto.getUserId())); + userDto.getRole().stream().map(roleId -> { SysUserRole userRole = new SysUserRole(); userRole.setUserId(sysUser.getUserId()); userRole.setRoleId(roleId); - userRole.insert(); - }); + return userRole; + }).forEach(SysUserRole::insert); + + // 更新用户岗位表 sysUserPostMapper.delete(Wrappers.lambdaQuery().eq(SysUserPost::getUserId, userDto.getUserId())); - userDto.getPost().forEach(postId -> { + userDto.getPost().stream().map(postId -> { SysUserPost userPost = new SysUserPost(); userPost.setUserId(sysUser.getUserId()); userPost.setPostId(postId); - userPost.insert(); - }); - return R.ok(); + return userPost; + }).forEach(SysUserPost::insert); + return Boolean.TRUE; } /** @@ -277,6 +282,9 @@ public class SysUserServiceImpl extends ServiceImpl impl String roleNameList = userVO.getRoleList().stream().map(SysRole::getRoleName) .collect(Collectors.joining(StrUtil.COMMA)); excelVO.setRoleNameList(roleNameList); + String postNameList = userVO.getPostList().stream().map(SysPost::getPostName) + .collect(Collectors.joining(StrUtil.COMMA)); + excelVO.setPostNameList(postNameList); return excelVO; }).collect(Collectors.toList()); return userExcelVOList; @@ -292,14 +300,15 @@ public class SysUserServiceImpl extends ServiceImpl impl public R importUser(List excelVOList, BindingResult bindingResult) { // 通用校验获取失败的数据 List errorMessageList = (List) bindingResult.getTarget(); - - // 个性化校验逻辑 - List userList = this.list(); List deptList = sysDeptService.list(); List roleList = sysRoleService.list(); + List postList = sysPostService.list(); // 执行数据插入操作 组装 UserDto for (UserExcelVO excel : excelVOList) { + // 个性化校验逻辑 + List userList = this.list(); + Set errorMsg = new HashSet<>(); // 校验用户名是否存在 boolean exsitUserName = userList.stream() @@ -326,9 +335,19 @@ public class SysUserServiceImpl extends ServiceImpl impl errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_ROLE_ROLENAME_INEXISTENCE, excel.getRoleNameList())); } + // 判断输入的部门名称列表是否合法 + List postNameList = StrUtil.split(excel.getPostNameList(), StrUtil.COMMA); + List postCollList = postList.stream() + .filter(post -> postNameList.stream().anyMatch(name -> post.getPostName().equals(name))) + .collect(Collectors.toList()); + + if (postCollList.size() != postNameList.size()) { + errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_POST_POSTNAME_INEXISTENCE, excel.getPostNameList())); + } + // 数据合法情况 if (CollUtil.isEmpty(errorMsg)) { - insertExcelUser(excel, deptOptional, roleCollList); + insertExcelUser(excel, deptOptional, roleCollList, postCollList); } else { // 数据不合法情况 @@ -346,7 +365,8 @@ public class SysUserServiceImpl extends ServiceImpl impl /** * 插入excel User */ - private void insertExcelUser(UserExcelVO excel, Optional deptOptional, List roleCollList) { + private void insertExcelUser(UserExcelVO excel, Optional deptOptional, List roleCollList, + List postCollList) { UserDTO userDTO = new UserDTO(); userDTO.setUsername(excel.getUsername()); userDTO.setPhone(excel.getPhone()); @@ -357,6 +377,9 @@ public class SysUserServiceImpl extends ServiceImpl impl userDTO.setPassword(userDTO.getPhone()); // 根据部门名称查询部门ID userDTO.setDeptId(deptOptional.get().getDeptId()); + // 插入岗位名称 + List postIdList = postCollList.stream().map(SysPost::getPostId).collect(Collectors.toList()); + userDTO.setPost(postIdList); // 根据角色名称查询角色ID List roleIdList = roleCollList.stream().map(SysRole::getRoleId).collect(Collectors.toList()); userDTO.setRole(roleIdList); @@ -394,122 +417,77 @@ public class SysUserServiceImpl extends ServiceImpl impl sysUser.setLockFlag(CommonConstants.STATUS_LOCK); baseMapper.updateById(sysUser); } - return R.ok(); } @Override - public R importDingUser(List excelVOList, BindingResult bindingResult) { - List errorMessageList = (List) bindingResult.getTarget(); - // 个性化校验逻辑 - List userList = this.list(); - List deptList = sysDeptService.list(); - - for (DingUserExcelVo item : excelVOList) { - Set errorMsg = new HashSet<>(); - boolean exsitUser = userList.stream().anyMatch(sysUser -> item.getName().equals(sysUser.getName())); - if (exsitUser) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, item.getName())); - } - // 删除手机号中的 +86 前缀 - String phone = item.getPhone().split("-")[1]; - - boolean exsitPhone = userList.stream().anyMatch(sysUser -> phone.equals(sysUser.getPhone())); - if (exsitPhone) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_USER_PHONE_EXISTING, item.getPhone())); - } - // 根据规则获取部门信息 - String[] deptNameList = item.getDeptName().split(",")[0].split("-"); - String deptName = deptNameList[deptNameList.length - 1]; - // 判断输入的部门名称列表是否合法 - Optional deptOptional = deptList.stream().filter(dept -> deptName.equals(dept.getName())) - .findFirst(); - if (!deptOptional.isPresent()) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_DEPT_DEPTNAME_INEXISTENCE, item.getDeptName())); - } - - // 数据合法情况 - if (CollUtil.isEmpty(errorMsg)) { - UserDTO userDTO = new UserDTO(); - userDTO.setName(item.getName()); - // 批量导入初始密码为手机号 - userDTO.setPassword(phone); - userDTO.setUsername(phone); - userDTO.setPhone(phone); - userDTO.setDeptId(deptOptional.get().getDeptId()); - userDTO.setDelFlag(item.getLockFlag()); - userDTO.setEmail(item.getEmail()); - this.saveUser(userDTO); - } - else { - // 数据不合法情况 - errorMessageList.add(new ErrorMessage(item.getLineNum(), errorMsg)); - } + @CacheEvict(value = CacheConstants.USER_DETAILS, key = "#userDto.username") + public R changePassword(UserDTO userDto) { + UserVO userVO = baseMapper.getUserVoByUsername(userDto.getUsername()); + if (Objects.isNull(userVO)) { + return R.failed("用户不存在"); } - if (CollUtil.isNotEmpty(errorMessageList)) { - return R.failed(errorMessageList); + + if (StrUtil.isEmpty(userDto.getPassword())) { + return R.failed("原密码不能为空"); } - return R.ok(null, MsgUtils.getMessage(ErrorCodes.SYS_USER_IMPORT_SUCCEED)); + + if (!ENCODER.matches(userDto.getPassword(), userVO.getPassword())) { + log.info("原密码错误,修改个人信息失败:{}", userDto.getUsername()); + return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_UPDATE_PASSWORDERROR)); + } + + if (StrUtil.isEmpty(userDto.getNewpassword1())) { + return R.failed("新密码不能为空"); + } + String password = ENCODER.encode(userDto.getNewpassword1()); + + this.update(Wrappers.lambdaUpdate().set(SysUser::getPassword, password).eq(SysUser::getUserId, + userVO.getUserId())); + return R.ok(); } - /** - * 企业微信用户导入 - * @param excelVOList - * @param bindingResult - * @return - */ @Override - public R importCpUser(List excelVOList, BindingResult bindingResult) { - List errorMessageList = (List) bindingResult.getTarget(); - - // 个性化校验逻辑 - List userList = this.list(); - List deptList = sysDeptService.list(); - - for (CpUserExcelVo item : excelVOList) { - Set errorMsg = new HashSet<>(); - boolean exsitUsername = userList.stream() - .anyMatch(sysUser -> item.getUsername().equals(sysUser.getUsername())); - if (exsitUsername) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, item.getUsername())); - } - boolean exsitPhone = userList.stream().anyMatch(sysUser -> item.getPhone().equals(sysUser.getPhone())); - if (exsitPhone) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_USER_PHONE_EXISTING, item.getPhone())); - } - // 多部门获取第一个 到部门获取自己点 - String[] deptNameList = item.getDeptName().split(";")[0].split("/"); - String deptName = deptNameList[deptNameList.length - 1]; - // 判断输入的部门名称列表是否合法 - Optional deptOptional = deptList.stream().filter(dept -> deptName.equals(dept.getName())) - .findFirst(); - if (!deptOptional.isPresent()) { - errorMsg.add(MsgUtils.getMessage(ErrorCodes.SYS_DEPT_DEPTNAME_INEXISTENCE, deptName)); - } - - // 数据合法情况 - if (CollUtil.isEmpty(errorMsg)) { - UserDTO userDTO = new UserDTO(); - userDTO.setName(item.getName()); - // 批量导入初始密码为手机号 - userDTO.setPassword(item.getPhone()); - userDTO.setUsername(item.getUsername()); - userDTO.setPhone(item.getPhone()); - userDTO.setDeptId(deptOptional.get().getDeptId()); - userDTO.setDelFlag(item.getLockFlag()); - userDTO.setEmail(item.getEmail()); - userDTO.setNickname(item.getNickname()); - this.saveUser(userDTO); - } - else { - // 数据不合法情况 - errorMessageList.add(new ErrorMessage(item.getLineNum(), errorMsg)); - } + public R unbinding(String type) { + PigxUser user = SecurityUtils.getUser(); + LambdaUpdateWrapper wrapper = null; + if (type.equals("wechat")) { + wrapper = Wrappers.lambdaUpdate().set(SysUser::getWxOpenid, null).eq(SysUser::getUserId, + user.getId()); } - if (CollUtil.isNotEmpty(errorMessageList)) { - return R.failed(errorMessageList); + else if (type.equals("gitee")) { + wrapper = Wrappers.lambdaUpdate().set(SysUser::getGiteeLogin, null).eq(SysUser::getUserId, + user.getId()); + } + else if (type.equals("osc")) { + wrapper = Wrappers.lambdaUpdate().set(SysUser::getOscId, null).eq(SysUser::getUserId, + user.getId()); + } + else if (type.equals("tencent")) { + wrapper = Wrappers.lambdaUpdate().set(SysUser::getTenantId, null).eq(SysUser::getUserId, + user.getId()); + } + if (wrapper == null) { + return R.failed("解绑账号类型不存在"); + } + this.update(wrapper); + return R.ok(); + } + + @Override + public R checkPassword(String password) { + String username = SecurityUtils.getUser().getUsername(); + SysUser condition = new SysUser(); + condition.setUsername(username); + SysUser sysUser = this.getOne(new QueryWrapper<>(condition)); + + if (!ENCODER.matches(password, sysUser.getPassword())) { + log.info("原密码错误"); + return R.failed("密码输入错误"); + } + else { + return R.ok(); } - return R.ok(null, MsgUtils.getMessage(ErrorCodes.SYS_USER_IMPORT_SUCCEED)); } } diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/file/approle.xlsx b/pigx-upms/pigx-upms-biz/src/main/resources/file/approle.xlsx new file mode 100644 index 000000000..0c986e8bd Binary files /dev/null and b/pigx-upms/pigx-upms-biz/src/main/resources/file/approle.xlsx differ diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/file/appuser.xlsx b/pigx-upms/pigx-upms-biz/src/main/resources/file/appuser.xlsx new file mode 100644 index 000000000..2794a814e Binary files /dev/null and b/pigx-upms/pigx-upms-biz/src/main/resources/file/appuser.xlsx differ diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/file/dept.xlsx b/pigx-upms/pigx-upms-biz/src/main/resources/file/dept.xlsx index e17580ab0..69439e53f 100644 Binary files a/pigx-upms/pigx-upms-biz/src/main/resources/file/dept.xlsx and b/pigx-upms/pigx-upms-biz/src/main/resources/file/dept.xlsx differ diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/file/user.xlsx b/pigx-upms/pigx-upms-biz/src/main/resources/file/user.xlsx index 764935442..bb557ba59 100644 Binary files a/pigx-upms/pigx-upms-biz/src/main/resources/file/user.xlsx and b/pigx-upms/pigx-upms-biz/src/main/resources/file/user.xlsx differ diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysAuditLogMapper.xml b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysAuditLogMapper.xml deleted file mode 100644 index 93dfa6042..000000000 --- a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysAuditLogMapper.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysUserRoleMapper.xml b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysDeptMapper.xml similarity index 62% rename from pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysUserRoleMapper.xml rename to pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysDeptMapper.xml index 1777eeeac..de00e1ebc 100644 --- a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysUserRoleMapper.xml +++ b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysDeptMapper.xml @@ -19,17 +19,17 @@ --> - - - - - - - - - - - DELETE FROM sys_user_role WHERE user_id = #{userId} - - + + + diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysDeptRelationMapper.xml b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysDeptRelationMapper.xml deleted file mode 100644 index fd6b7ebd2..000000000 --- a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysDeptRelationMapper.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - DELETE FROM sys_dept_relation - WHERE - descendant IN ( SELECT temp.descendant FROM - ( SELECT descendant FROM sys_dept_relation WHERE ancestor = #{descendant} ) temp ) - AND ancestor IN ( SELECT temp.ancestor FROM ( SELECT ancestor FROM - sys_dept_relation WHERE descendant = #{descendant} AND ancestor != descendant ) temp ) - - - - - INSERT INTO sys_dept_relation (ancestor, descendant) - SELECT a.ancestor, b.descendant - FROM sys_dept_relation a - CROSS JOIN sys_dept_relation b - WHERE a.descendant = #{ancestor} - AND b.ancestor = #{descendant} - - - - - DELETE - FROM - sys_dept_relation - WHERE - descendant IN ( - SELECT - temp.descendant - FROM - ( - SELECT - descendant - FROM - sys_dept_relation - WHERE - ancestor = #{id} - ) temp - ) - - diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysMenuMapper.xml b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysMenuMapper.xml index 2d0b545ce..2853e68d0 100644 --- a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysMenuMapper.xml +++ b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysMenuMapper.xml @@ -35,6 +35,8 @@ + + @@ -48,10 +50,11 @@ sys_menu.sort_order, sys_menu.keep_alive, sys_menu.menu_type, - sys_menu.visible, sys_menu.create_time, sys_menu.update_time, - sys_menu.del_flag + sys_menu.del_flag, + sys_menu.embedded, + sys_menu.visible FROM sys_menu LEFT JOIN sys_role_menu ON sys_menu.menu_id = sys_role_menu.menu_id WHERE sys_menu.del_flag = '0' diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysUserMapper.xml b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysUserMapper.xml index 630cc5f03..441f9aab3 100644 --- a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysUserMapper.xml +++ b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysUserMapper.xml @@ -30,6 +30,8 @@ + + @@ -81,6 +83,8 @@ u.avatar, u.wx_openid, u.qq_openid, + u.gitee_login, + u.osc_id, u.del_flag, u.lock_flag, u.tenant_id, @@ -90,12 +94,6 @@ u.create_by, u.create_time ucreate_time, u.update_time uupdate_time, - r.role_id, - r.role_name, - r.role_code, - r.role_desc, - r.create_time rcreate_time, - r.update_time rupdate_time, d.name dept_name, d.dept_id @@ -115,8 +113,6 @@ FROM sys_user u - LEFT JOIN sys_user_role urole ON urole.user_id = u.user_id - LEFT JOIN sys_role r ON r.role_id = urole.role_id LEFT JOIN sys_dept d ON d.dept_id = u.dept_id WHERE u.user_id = #{id}