From be7654d6ca3f4c00833796222837512695f1b78d Mon Sep 17 00:00:00 2001 From: lbw Date: Thu, 6 Apr 2023 14:24:56 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20Refactoring=20code.=20=E9=80=82?= =?UTF-8?q?=E9=85=8D=E6=9C=80=E6=96=B0=20V5=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/RouterFunctionConfiguration.java | 2 +- pigx-upms/pigx-upms-api/pom.xml | 5 + pigx-upms/pigx-upms-biz/pom.xml | 5 + .../admin/controller/MobileController.java | 5 + .../admin/controller/RegisterController.java | 3 - .../controller/SysAuditLogController.java | 52 ++-- .../admin/controller/SysClientController.java | 52 +++- .../admin/controller/SysDeptController.java | 12 +- .../admin/controller/SysDictController.java | 62 +++- .../admin/controller/SysFileController.java | 17 +- .../admin/controller/SysI18nController.java | 166 +++++++++++ .../admin/controller/SysLogController.java | 11 - .../admin/controller/SysMenuController.java | 5 +- .../admin/controller/SysPostController.java | 37 ++- .../controller/SysPublicParamController.java | 58 +++- .../admin/controller/SysRoleController.java | 23 +- .../controller/SysScheduleController.java | 129 +++++++++ .../SysSocialDetailsController.java | 24 +- .../admin/controller/SysTenantController.java | 51 +++- .../controller/SysTenantMenuController.java | 8 +- .../admin/controller/SysUserController.java | 80 +++-- .../admin/handler/MiniAppLoginHandler.java | 101 +++++++ .../pigx/admin/mapper/SysAuditLogMapper.java | 4 +- .../pigx/admin/mapper/SysDeptMapper.java | 9 + .../admin/mapper/SysDeptRelationMapper.java | 55 ---- .../pigx/admin/mapper/SysI18nMapper.java | 33 +++ .../pigx/admin/mapper/SysRouteConfMapper.java | 0 .../pigx/admin/mapper/SysScheduleMapper.java | 33 +++ .../pigx/admin/mapper/SysUserRoleMapper.java | 10 - .../admin/service/SysAuditLogService.java | 13 +- .../admin/service/SysDeptRelationService.java | 54 ---- .../pigx/admin/service/SysDeptService.java | 23 +- .../pigx/admin/service/SysDictService.java | 4 +- .../pigx/admin/service/SysI18nService.java | 20 ++ .../pigx/admin/service/SysMenuService.java | 2 +- .../service/SysOauthClientDetailsService.java | 7 - .../admin/service/SysPublicParamService.java | 4 +- .../pigx/admin/service/SysRoleService.java | 4 +- .../admin/service/SysRouteConfService.java | 0 .../admin/service/SysScheduleService.java | 39 +++ .../admin/service/SysUserRoleService.java | 9 - .../pigx/admin/service/SysUserService.java | 14 +- .../service/impl/ConnectServiceImpl.java | 4 +- .../service/impl/SysAuditLogServiceImpl.java | 32 +- .../impl/SysDeptRelationServiceImpl.java | 96 ------ .../service/impl/SysDeptServiceImpl.java | 171 +++++------ .../service/impl/SysDictServiceImpl.java | 25 +- .../service/impl/SysFileServiceImpl.java | 5 + .../service/impl/SysI18nServiceImpl.java | 77 +++++ .../service/impl/SysMenuServiceImpl.java | 46 ++- .../SysOauthClientDetailsServiceImpl.java | 19 +- .../impl/SysPublicParamServiceImpl.java | 18 +- .../service/impl/SysRoleMenuServiceImpl.java | 2 +- .../service/impl/SysRoleServiceImpl.java | 11 +- .../service/impl/SysScheduleServiceImpl.java | 71 +++++ .../service/impl/SysTenantServiceImpl.java | 20 +- .../service/impl/SysUserRoleServiceImpl.java | 12 - .../service/impl/SysUserServiceImpl.java | 274 ++++++++---------- .../src/main/resources/file/approle.xlsx | Bin 0 -> 8834 bytes .../src/main/resources/file/appuser.xlsx | Bin 0 -> 9284 bytes .../src/main/resources/file/dept.xlsx | Bin 9980 -> 10037 bytes .../src/main/resources/file/user.xlsx | Bin 8891 -> 8923 bytes .../resources/mapper/SysAuditLogMapper.xml | 37 --- ...ysUserRoleMapper.xml => SysDeptMapper.xml} | 26 +- .../mapper/SysDeptRelationMapper.xml | 64 ---- .../main/resources/mapper/SysMenuMapper.xml | 7 +- .../main/resources/mapper/SysUserMapper.xml | 12 +- 67 files changed, 1368 insertions(+), 906 deletions(-) create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysI18nController.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysScheduleController.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/handler/MiniAppLoginHandler.java delete mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysDeptRelationMapper.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysI18nMapper.java mode change 100755 => 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysRouteConfMapper.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysScheduleMapper.java delete mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDeptRelationService.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysI18nService.java mode change 100755 => 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysRouteConfService.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysScheduleService.java delete mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptRelationServiceImpl.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysI18nServiceImpl.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysScheduleServiceImpl.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/resources/file/approle.xlsx create mode 100644 pigx-upms/pigx-upms-biz/src/main/resources/file/appuser.xlsx delete mode 100644 pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysAuditLogMapper.xml rename pigx-upms/pigx-upms-biz/src/main/resources/mapper/{SysUserRoleMapper.xml => SysDeptMapper.xml} (62%) delete mode 100644 pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysDeptRelationMapper.xml 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 0000000000000000000000000000000000000000..0c986e8bdee6e584a5648f86436797751f807516 GIT binary patch literal 8834 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2794a814e60ac48d990c1d48283435a5b1e55b2c GIT binary patch literal 9284 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 literal 0 HcmV?d00001 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 e17580ab018be702d752cdc1a52168e40bb89569..69439e53fa2a391340e7025f3114c1d9037e4420 100644 GIT binary patch delta 3113 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 delta 3097 zcmZ9Oc{tQ-8^?b$Lt{@4H4GVQ?CY_XWl(5@WGf>hBxD&G%}ka?wvbfwLkw|DW3-W7 z%DyDBg^(qZ^(9Lv+2(c5dzR}x&p*%iy6*dV{4NxiJ=b2vpvWAiQI%b6fjjWTD*#i2m7ouxH2F|FOcbLx2Wz`3z1 zDYG}W>2^6sPp=%IYHWn9t-t$dHn){)`-2N$Vz0XSr)<=;@;KTO845B|#kQ}Q2V+CN zW>{#@Ga}WUc`$sDgR1fmUYed-3svj8(yXEF;NaMiC8xb$jx0dupa zpvp2u#7L=f{Cg3k`Efh#Cr-iY0rV09E9tMb?Y;p5^ul2(w~4uPihgg~;}ipkcP%=c znayD+1vf7=FpT;kwI0@S_~pCLSt&`Fw+f#;npH0z-Ov<+_-f&?rUBtcpa-yITtAY}HV~p^imR79hnjLd~j~i4} z3xe-YIna_vbsNj)@VLPBu9TT-m0UXB_^_ZWq@X@am`6P6MoF#K03Q$UHYYA8*U99; zG;Ij_0mr1!lnVIYy81b;qj(4Dywq9PB*(AWOBN)7ThRW779Hm5; zey1g>_o{xDK@>tlHl0zXOqwHg%P$%S+%>_>mEXRHdUAc&c3P@N8D#8*b-x)Wi0dJqVQGg@dDC-FYzs6uIX#e%rPI@V0h};`!_pWW)AMN zDtz5(&IZ67m~crsw+57YA2vFhKa{d-qOc82dk1@t@}eEXrDM}JBa)@k zdVzSHU5^r09&*GF-N9mFvLt1BEyBiG)QL7Rxj9}+NbTlE&Y*L}I=>O>lv)kbit8&) zT~(}mM7EqWO0n!39UgWKIqeLuN|4S!pT#1wDm8;qN~2nQ&I7h}UW&*0W%vZ)3Gl=* zo#J&_`oV#5P4aNTL#}7eC!goiKBGaHwm%Oc{CSC8lJIk#eYVj;K#7eD)R%cSkHm!n}rz$fmEY`2}Om7cQC zXuH_E0~}k=2|Y!}@^^BdF=!hxThHU7UNN(ary3)R9S+RT}^)9V+bTR z=Ol~UThHp7lO&^%r^4fO=>l6pN#+Kkf#%>H7@VOL;FTQL34cbFkiFYu96cjxI=FOq zzV}kncEw3b=h^5TxscJgW)vF&0BrW&e%b6W(3vMnP0+ML+R4a{>gr%27@CXWJFUH%|=kJThxn zJ-^Y1x@x3Dv=7p-NE&;i<)2*Y)@vprCKMa3^&wm9Dh~@+r(yZzqwrWnXtY@)YeAsu zR3_G}ZoXAE{)pNKhRMO8T0?k$6c4g#_)>M6km{c98@~LP3T+EfN8<&a!=F^V`&)JW zsW5m^>H{614}gV>_#0&e1c;)~Nx}Q?A`|?n2{o^sUu#VEiQR^3$e&6OV48Im zzo@mi5`J-#WFAKXO#0-9d|Z_EUv!eAzie7Ko~*;<+Kc<1f0}>pT*5d*J41KXWGp*G z-0mhWnzKt1)=;$R=2}@fDbgQ&Li7Xtc8qwID&8-~p3)d`<(HGXWctOYCV6MW1%1N> zZ}nbirQ%XIc>)cbQZ;4w&vjN;-dcrl-^-2_ZpxC(n*8)wR@yX6`bXc}TgA*|lL2d$ zA0~Nni+oPDwWLLL*mc;XCsrlhUOzq z_#raS#>->PvRykU)i3d!q|$ND-R18Uwd^ntZt6ne(;NcM`j>e!l-NcdC*2VpmD@!5 zEn%pZ3LsHfC6AmmaBt}4WiQyZ${}<9+((HLrWuI$b@$NSqjb5V*qGkxF$slPUr5wo zYTc&G@+XBbu7-^j%z}TE znlnrC%ECD=zrK%atn$PfuQ>9wTb@|gd!zT6FY=3wX$ZWW`s* zrpqPn#74(J>5Iv6J(@ZiS&g((@ME$Kwc~1)_NH9m8ne#YZkKo8j1VuXMWsma*a`QG zODhr=92N>=EfDFiMHWOIPY(w+ZeDji;30O%TUI2T-{_H$ff9Z7QNsrbA3xpR1XkqC z25c@1^H%HN^zH342$MwO@_ROnunuoFzeDaJwR{h3SI=PVU;4DOx}|!ATRXH(lPZ!w z&XQ@7h;Y(8@ypg_fwG@#L*EU}ZcYd@n?hMjNmQ0Mg`FxK+?7LrIG`A!S{8Ha{qk;4 zCbGV-2?)pct1T=Ce@|e|=4DLjtbXV?9_+OnG;Q{a(Cbx7Wzd(|kV;(s%#B%Bw*D(% z`&L(N^^1rr#-)!%F9_K`@H5{f6`slUF7=)p26?>iR(3T$Ve1QokquU0I`oNjy$ox2 zvIP9|6)|PP#5Mhi!89Yw zhvSldejM+ZnkiC~SA*VE#XO6*D%`FaYgZe~J3e5lQgFf4@VD4eM`U#4QRd+-F_q3U zq$DFjXG{OX-98B2$fS>-Y)>jpsL)~)EA>-pw04nHTuv|ot4g(xnUZ@}!z>Qc&TT)Y z5>z=5AlcRs!f`)Z%&8F)C${7H^%ZqU?weUr`kBRpy`R64O2b6uTg_S}sm+c7tHHI1 z8bWc`t(nW4gCp(Q^#d)#>;d`;#qj!$glb7zN_dcCJl@FAN^2o%+*p*iuABd*3g6_W zr0B5P*dMkH=E4L^km3v|#|Y$kX-WNIZ3tup+>q3#+D(d{M&~&wOPzqLd1txenU)6} zeb3L~ZkD4FUH6$%mY&|e`O*kvIj6DJxOh+eJdXFus2!n@u>b}DEpEE?P^GCp+YxBE zmf-sXtsf)o^<1t2ooeY64tlVCeBtGxS8H@dFA`!^f>ue zmD5rH4V*)1!9?O&B~nuEFz&x|G?;kQ8bSkyk18Yo9ZmMe@aJg;kDyH<+Mo|w2KjH} z|EmW8n!%@N6!LF~_CON;r?{sW;1t>z+J^+?#nGUZi~_V@98{E$SF|||fhzCy?gRER m5g-NpK5xst*Y0~c|G@wKKmt2t452?!Aiu2izPcm7*ZvE@U6F(U 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 764935442a6daa709fdffe34237a595133995033..bb557ba597388091dc88d146ce3385f819b936df 100644 GIT binary patch delta 4893 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 WUsG*3&>kE{Xf+2p9)k66=YIgAVhP{? delta 4836 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 W|EH=Pg2qDF(eL>f$ct|LlldP@==H1s 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}