diff --git a/pigx-auth/pom.xml b/pigx-auth/pom.xml index 478f242af..3181b8f46 100644 --- a/pigx-auth/pom.xml +++ b/pigx-auth/pom.xml @@ -68,6 +68,11 @@ org.springframework.boot spring-boot-starter-jdbc + + + com.alibaba + druid-spring-boot-starter + org.springframework.boot diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/endpoint/PigxTokenEndpoint.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/endpoint/PigxTokenEndpoint.java index 540749e52..0be02c86e 100644 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/endpoint/PigxTokenEndpoint.java +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/endpoint/PigxTokenEndpoint.java @@ -115,13 +115,13 @@ public class PigxTokenEndpoint { @DeleteMapping("/logout") public R logout(@RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authHeader) { if (StrUtil.isBlank(authHeader)) { - return R.failed(Boolean.FALSE, "退出失败,token 为空"); + return R.ok(Boolean.FALSE, "退出失败,token 为空"); } String tokenValue = authHeader.replace(OAuth2AccessToken.BEARER_TYPE, StrUtil.EMPTY).trim(); OAuth2AccessToken accessToken = tokenStore.readAccessToken(tokenValue); if (accessToken == null || StrUtil.isBlank(accessToken.getValue())) { - return R.failed(Boolean.FALSE, "退出失败,token 无效"); + return R.ok(Boolean.TRUE, "退出失败,token 无效"); } OAuth2Authentication auth2Authentication = tokenStore.readAuthentication(accessToken); @@ -133,7 +133,7 @@ public class PigxTokenEndpoint { tokenStore.removeAccessToken(accessToken); // 清空 refresh token - OAuth2RefreshToken refreshToken = tokenStore.readRefreshToken(tokenValue); + OAuth2RefreshToken refreshToken = accessToken.getRefreshToken(); tokenStore.removeRefreshToken(refreshToken); return R.ok(Boolean.TRUE); } diff --git a/pigx-common/pigx-common-bom/pom.xml b/pigx-common/pigx-common-bom/pom.xml index c4fe70d00..38a0aa873 100644 --- a/pigx-common/pigx-common-bom/pom.xml +++ b/pigx-common/pigx-common-bom/pom.xml @@ -18,7 +18,8 @@ 3.0.0 3.1.0 - 8.0.15 + 1.1.16 + 8.0.16 1.5.22 3.3.0 @@ -88,6 +89,12 @@ mybatis-plus-boot-starter ${mybatis-plus.version} + + + com.alibaba + druid-spring-boot-starter + ${druid.version} + mysql diff --git a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/CacheConstants.java b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/CacheConstants.java index 64288c4f5..5abc6b303 100644 --- a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/CacheConstants.java +++ b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/CacheConstants.java @@ -44,4 +44,9 @@ public interface CacheConstants { * 参数缓存 */ String PARAMS_DETAILS = "params_details"; + + /** + * 租户缓存 + */ + String TENANT_DETAILS = "tenant_details"; } diff --git a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/enums/DictTypeEnum.java b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/enums/DictTypeEnum.java new file mode 100644 index 000000000..cf7b27f6c --- /dev/null +++ b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/constant/enums/DictTypeEnum.java @@ -0,0 +1,33 @@ +package com.pig4cloud.pigx.common.core.constant.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author lengleng + * @date 2019-05-16 + *

+ * 字典类型 + */ +@Getter +@AllArgsConstructor +public enum DictTypeEnum { + /** + * 字典类型-系统内置(不可修改) + */ + SYSTEM("1", "系统内置"), + + /** + * 字典类型-业务类型 + */ + BIZ("0", "业务类"); + + /** + * 类型 + */ + private String type; + /** + * 描述 + */ + private String description; +} diff --git a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/util/R.java b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/util/R.java index 0d571cd28..dcfd2b350 100644 --- a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/util/R.java +++ b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/util/R.java @@ -77,6 +77,10 @@ public class R implements Serializable { return restResult(null, CommonConstants.FAIL, msg); } + public static R failed(T data) { + return restResult(data, CommonConstants.FAIL, null); + } + public static R failed(T data, String msg) { return restResult(data, CommonConstants.FAIL, msg); } diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantHandler.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantHandler.java index af49345f5..a9f535f41 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantHandler.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantHandler.java @@ -37,6 +37,8 @@ public class PigxTenantHandler implements TenantHandler { /** * 获取租户值 + *

+ * TODO 校验租户状态 * * @return 租户值 */ diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/TenantContextHolder.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/TenantContextHolder.java index 109938258..785ea86c5 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/TenantContextHolder.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/TenantContextHolder.java @@ -36,7 +36,7 @@ public class TenantContextHolder { * * @param tenantId */ - void setTenantId(Integer tenantId) { + public void setTenantId(Integer tenantId) { THREAD_LOCAL_TENANT.set(tenantId); } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysDict.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysDict.java index a29c85a83..8ef35dde0 100755 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysDict.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysDict.java @@ -18,7 +18,6 @@ package com.pig4cloud.pigx.admin.api.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; -import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; import lombok.EqualsAndHashCode; @@ -34,41 +33,45 @@ import java.time.LocalDateTime; @Data @EqualsAndHashCode(callSuper = true) public class SysDict extends Model { -private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - /** - * 编号 - */ - @TableId - private Integer id; - /** - * 类型 - */ - private String type; - /** - * 描述 - */ - private String description; - /** - * 创建时间 - */ - private LocalDateTime createTime; - /** - * 更新时间 - */ - private LocalDateTime updateTime; - /** - * 备注信息 - */ - private String remarks; - /** - * 删除标记 - */ + /** + * 编号 + */ + @TableId + private Integer id; + /** + * 类型 + */ + private String type; + /** + * 描述 + */ + private String description; + /** + * 创建时间 + */ + private LocalDateTime createTime; + /** + * 更新时间 + */ + private LocalDateTime updateTime; + /** + * 是否是系统内置 + */ + private String system; + /** + * 备注信息 + */ + private String remarks; + /** + * 删除标记 + */ @TableLogic - private String delFlag; - /** - * 所属租户 - */ - private Integer tenantId; - + private String delFlag; + /** + * 所属租户 + */ + private Integer tenantId; + } diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysPublicParam.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysPublicParam.java index 718a7cc69..055862894 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysPublicParam.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysPublicParam.java @@ -88,6 +88,11 @@ public class SysPublicParam extends Model { @ApiModelProperty(value = "创建时间", example = "2019-03-21 12:28:48") private LocalDateTime createTime; + /** + * 是否是系统内置 + */ + private String system; + /** * 修改时间 */ @@ -100,4 +105,5 @@ public class SysPublicParam extends Model { @ApiModelProperty(value = "类型[1-检索;2-原文...]", example = "1") private String publicType; + } diff --git a/pigx-upms/pigx-upms-biz/pom.xml b/pigx-upms/pigx-upms-biz/pom.xml index 20c2a6620..bee4afd42 100644 --- a/pigx-upms/pigx-upms-biz/pom.xml +++ b/pigx-upms/pigx-upms-biz/pom.xml @@ -82,6 +82,11 @@ com.baomidou mybatis-plus-boot-starter + + + com.alibaba + druid-spring-boot-starter + mysql diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/DictController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/DictController.java index 22f33e082..ff886434c 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/DictController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/DictController.java @@ -114,7 +114,7 @@ public class DictController { @DeleteMapping("/{id}") @PreAuthorize("@pms.hasPermission('sys_dict_del')") public R removeById(@PathVariable Integer id) { - return R.ok(sysDictService.removeDict(id)); + return sysDictService.removeDict(id); } /** @@ -127,7 +127,7 @@ public class DictController { @SysLog("修改字典") @PreAuthorize("@pms.hasPermission('sys_dict_edit')") public R updateById(@Valid @RequestBody SysDict sysDict) { - return R.ok(sysDictService.updateById(sysDict)); + return sysDictService.updateDict(sysDict); } /** @@ -175,9 +175,8 @@ public class DictController { */ @SysLog("修改字典项") @PutMapping("/item") - @CacheEvict(value = CacheConstants.DICT_DETAILS, allEntries = true) public R updateById(@RequestBody SysDictItem sysDictItem) { - return R.ok(sysDictItemService.updateById(sysDictItem)); + return sysDictItemService.updateDictItem(sysDictItem); } /** @@ -188,8 +187,7 @@ public class DictController { */ @SysLog("删除字典项") @DeleteMapping("/item/{id}") - @CacheEvict(value = CacheConstants.DICT_DETAILS, allEntries = true) public R removeDictItemById(@PathVariable Integer id) { - return R.ok(sysDictItemService.removeById(id)); + return sysDictItemService.removeDictItem(id); } } 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 4bcafae3f..f8aac1f39 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 @@ -108,10 +108,9 @@ public class SysPublicParamController { */ @SysLog("修改公共参数") @PutMapping - @CacheEvict(value = CacheConstants.PARAMS_DETAILS, key = "#sysPublicParam.publicKey") @PreAuthorize("@pms.hasPermission('admin_syspublicparam_edit')") public R updateById(@RequestBody SysPublicParam sysPublicParam) { - return R.ok(sysPublicParamService.updateById(sysPublicParam)); + return sysPublicParamService.updateParam(sysPublicParam); } /** @@ -122,10 +121,9 @@ public class SysPublicParamController { */ @SysLog("删除公共参数") @DeleteMapping("/{publicId}") - @CacheEvict(value = CacheConstants.PARAMS_DETAILS, allEntries = true) @PreAuthorize("@pms.hasPermission('admin_syspublicparam_del')") public R removeById(@PathVariable Long publicId) { - return R.ok(sysPublicParamService.removeById(publicId)); + return sysPublicParamService.removeParam(publicId); } } 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 new file mode 100755 index 000000000..e804e7f89 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTenantController.java @@ -0,0 +1,124 @@ +/* + * 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 com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.pig4cloud.pigx.admin.entity.SysTenant; +import com.pig4cloud.pigx.admin.service.SysTenantService; +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.annotations.Api; +import lombok.AllArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.time.LocalDate; + + +/** + * 租户管理 + * + * @author lengleng + * @date 2019-05-15 15:55:41 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/tenant") +@Api(value = "tenant", tags = "租户管理") +public class SysTenantController { + + private final SysTenantService sysTenantService; + + /** + * 分页查询 + * + * @param page 分页对象 + * @param sysTenant 租户 + * @return + */ + @GetMapping("/page") + public R getSysTenantPage(Page page, SysTenant sysTenant) { + return R.ok(sysTenantService.page(page, Wrappers.query(sysTenant))); + } + + + /** + * 通过id查询租户 + * + * @param id id + * @return R + */ + @GetMapping("/{id}") + public R getById(@PathVariable("id") Integer id) { + return R.ok(sysTenantService.getById(id)); + } + + /** + * 新增租户 + * + * @param sysTenant 租户 + * @return R + */ + @SysLog("新增租户") + @PostMapping + @PreAuthorize("@pms.hasPermission('admin_systenant_add')") + public R save(@RequestBody SysTenant sysTenant) { + return R.ok(sysTenantService.saveTenant(sysTenant)); + } + + /** + * 修改租户 + * + * @param sysTenant 租户 + * @return R + */ + @SysLog("修改租户") + @PutMapping + @PreAuthorize("@pms.hasPermission('admin_systenant_edit')") + public R updateById(@RequestBody SysTenant sysTenant) { + return R.ok(sysTenantService.updateById(sysTenant)); + } + + /** + * 通过id删除租户 + * + * @param id id + * @return R + */ + @SysLog("删除租户") + @DeleteMapping("/{id}") + @PreAuthorize("@pms.hasPermission('admin_systenant_del')") + public R removeById(@PathVariable Integer id) { + return R.ok(sysTenantService.removeById(id)); + } + + /** + * 查询全部有效的租户 + * + * @return + */ + @SysLog("查询全部有效的租户") + @Inner(value = false) + @GetMapping("/list") + public R list() { + return R.ok(sysTenantService.getNormal()); + } + +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/entity/SysTenant.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/entity/SysTenant.java new file mode 100755 index 000000000..1c7cb6482 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/entity/SysTenant.java @@ -0,0 +1,83 @@ +/* + * 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.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 租户 + * + * @author lengleng + * @date 2019-05-15 15:55:41 + */ +@Data +@TableName("sys_tenant") +@EqualsAndHashCode(callSuper = true) +@ApiModel(description = "租户") +public class SysTenant extends Model { + private static final long serialVersionUID = 1L; + + /** + * 租户id + */ + @TableId + private Integer id; + /** + * 租户名称 + */ + private String name; + /** + * 租户编号 + */ + private String code; + /** + * 开始时间 + */ + private LocalDate startTime; + /** + * 结束时间 + */ + private LocalDate endTime; + /** + * 0正常 9-冻结 + */ + private String status; + /** + * 删除标记 + */ + @TableLogic + private String delFlag; + /** + * 创建 + */ + private LocalDateTime createTime; + /** + * 更新时间 + */ + private LocalDateTime updateTime; + +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysTenantMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysTenantMapper.java new file mode 100755 index 000000000..3cdb0d784 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysTenantMapper.java @@ -0,0 +1,31 @@ +/* + * 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.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.pig4cloud.pigx.admin.entity.SysTenant; + +/** + * 租户 + * + * @author lengleng + * @date 2019-05-15 15:55:41 + */ +public interface SysTenantMapper extends BaseMapper { + +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDictItemService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDictItemService.java index bf4e7851e..9732bc56d 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDictItemService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysDictItemService.java @@ -18,6 +18,7 @@ package com.pig4cloud.pigx.admin.service; import com.baomidou.mybatisplus.extension.service.IService; import com.pig4cloud.pigx.admin.api.entity.SysDictItem; +import com.pig4cloud.pigx.common.core.util.R; /** * 字典项 @@ -27,4 +28,19 @@ import com.pig4cloud.pigx.admin.api.entity.SysDictItem; */ public interface SysDictItemService extends IService { + /** + * 删除字典项 + * + * @param id 字典项ID + * @return + */ + R removeDictItem(Integer id); + + /** + * 更新字典项 + * + * @param item 字典项 + * @return + */ + R updateDictItem(SysDictItem item); } 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 b414af3a0..7655f2ba5 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 @@ -18,6 +18,7 @@ package com.pig4cloud.pigx.admin.service; import com.baomidou.mybatisplus.extension.service.IService; import com.pig4cloud.pigx.admin.api.entity.SysDict; +import com.pig4cloud.pigx.common.core.util.R; /** * 字典表 @@ -33,5 +34,13 @@ public interface SysDictService extends IService { * @param id * @return */ - Boolean removeDict(Integer id); + R removeDict(Integer id); + + /** + * 更新字典 + * + * @param sysDict 字典 + * @return + */ + R updateDict(SysDict sysDict); } 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 671d79aad..63f1d37cf 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 @@ -19,6 +19,7 @@ package com.pig4cloud.pigx.admin.service; import com.baomidou.mybatisplus.extension.service.IService; import com.pig4cloud.pigx.admin.api.entity.SysPublicParam; +import com.pig4cloud.pigx.common.core.util.R; /** * 公共参数配置 @@ -30,8 +31,25 @@ public interface SysPublicParamService extends IService { /** * 通过key查询公共参数指定值 + * * @param publicKey * @return */ String getSysPublicParamKeyToValue(String publicKey); + + /** + * 更新参数 + * + * @param sysPublicParam + * @return + */ + R updateParam(SysPublicParam sysPublicParam); + + /** + * 删除参数 + * + * @param publicId + * @return + */ + R removeParam(Long publicId); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysTenantService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysTenantService.java new file mode 100755 index 000000000..443b8315e --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysTenantService.java @@ -0,0 +1,47 @@ +/* + * 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.entity.SysTenant; + +import java.util.List; + +/** + * 租户管理 + * + * @author lengleng + * @date 2019-05-15 15:55:41 + */ +public interface SysTenantService extends IService { + + /** + * 获取正常的租户 + * + * @return + */ + List getNormal(); + + /** + * 保存租户 + * + * @param sysTenant + * @return + */ + Boolean saveTenant(SysTenant sysTenant); +} 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 82bc07eab..c0bc0e291 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 @@ -34,6 +34,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -132,6 +133,7 @@ public class SysDeptServiceImpl extends ServiceImpl impl private List getDeptTree(List depts) { List treeList = depts.stream() .filter(dept -> !dept.getDeptId().equals(dept.getParentId())) + .sorted(Comparator.comparingInt(SysDept::getSort)) .map(dept -> { DeptTree node = new DeptTree(); node.setId(dept.getDeptId()); diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDictItemServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDictItemServiceImpl.java index a7ffdc30e..2e24ca10f 100755 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDictItemServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDictItemServiceImpl.java @@ -17,9 +17,16 @@ package com.pig4cloud.pigx.admin.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.pig4cloud.pigx.admin.api.entity.SysDict; import com.pig4cloud.pigx.admin.api.entity.SysDictItem; import com.pig4cloud.pigx.admin.mapper.SysDictItemMapper; 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.constant.enums.DictTypeEnum; +import com.pig4cloud.pigx.common.core.util.R; +import lombok.AllArgsConstructor; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; /** @@ -29,6 +36,44 @@ import org.springframework.stereotype.Service; * @date 2019/03/19 */ @Service +@AllArgsConstructor public class SysDictItemServiceImpl extends ServiceImpl implements SysDictItemService { + private final SysDictService dictService; + /** + * 删除字典项 + * + * @param id 字典项ID + * @return + */ + @Override + @CacheEvict(value = CacheConstants.DICT_DETAILS, allEntries = true) + public R removeDictItem(Integer id) { + //根据ID查询字典ID + SysDictItem dictItem = this.getById(id); + SysDict dict = dictService.getById(dictItem.getDictId()); + // 系统内置 + if (DictTypeEnum.SYSTEM.getType().equals(dict.getSystem())) { + return R.failed("系统内置字典项目不能删除"); + } + return R.ok(this.removeById(id)); + } + + /** + * 更新字典项 + * + * @param item 字典项 + * @return + */ + @Override + @CacheEvict(value = CacheConstants.DICT_DETAILS, allEntries = true) + public R updateDictItem(SysDictItem item) { + //查询字典 + SysDict dict = dictService.getById(item.getDictId()); + // 系统内置 + if (DictTypeEnum.SYSTEM.getType().equals(dict.getSystem())) { + return R.failed("系统内置字典项目不能删除"); + } + return R.ok(this.updateById(item)); + } } 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 5b53f8ad6..fab794c01 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 @@ -24,6 +24,8 @@ import com.pig4cloud.pigx.admin.mapper.SysDictItemMapper; import com.pig4cloud.pigx.admin.mapper.SysDictMapper; import com.pig4cloud.pigx.admin.service.SysDictService; import com.pig4cloud.pigx.common.core.constant.CacheConstants; +import com.pig4cloud.pigx.common.core.constant.enums.DictTypeEnum; +import com.pig4cloud.pigx.common.core.util.R; import lombok.AllArgsConstructor; import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; @@ -43,17 +45,38 @@ public class SysDictServiceImpl extends ServiceImpl impl /** * 根据ID 删除字典 * - * @param id + * @param id 字典ID * @return */ @Override @CacheEvict(value = CacheConstants.DICT_DETAILS, allEntries = true) @Transactional(rollbackFor = Exception.class) - public Boolean removeDict(Integer id) { - baseMapper.deleteById(id); + public R removeDict(Integer id) { + SysDict dict = this.getById(id); + // 系统内置 + if (DictTypeEnum.SYSTEM.getType().equals(dict.getSystem())) { + return R.failed("系统内置字典不能删除"); + } + baseMapper.deleteById(id); dictItemMapper.delete(Wrappers.lambdaQuery() .eq(SysDictItem::getDictId, id)); - return Boolean.TRUE; + return R.ok(); + } + + /** + * 更新字典 + * + * @param dict 字典 + * @return + */ + @Override + public R updateDict(SysDict dict) { + SysDict sysDict = this.getById(dict.getId()); + // 系统内置 + if (DictTypeEnum.SYSTEM.getType().equals(sysDict.getSystem())) { + return R.failed("系统内置字典不能修改"); + } + return R.ok(this.updateById(dict)); } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPublicParamServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPublicParamServiceImpl.java index cd8a45856..9738214de 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPublicParamServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysPublicParamServiceImpl.java @@ -23,7 +23,10 @@ import com.pig4cloud.pigx.admin.api.entity.SysPublicParam; import com.pig4cloud.pigx.admin.mapper.SysPublicParamMapper; import com.pig4cloud.pigx.admin.service.SysPublicParamService; import com.pig4cloud.pigx.common.core.constant.CacheConstants; +import com.pig4cloud.pigx.common.core.constant.enums.DictTypeEnum; +import com.pig4cloud.pigx.common.core.util.R; import lombok.AllArgsConstructor; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -49,4 +52,38 @@ public class SysPublicParamServiceImpl extends ServiceImpl implements SysTenantService { + private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder(); + private final SysDeptRelationService deptRelationService; + private final SysUserRoleService userRoleService; + private final SysRoleMenuService roleMenuService; + private final SysDictItemService dictItemService; + private final SysUserService userService; + private final SysRoleService roleService; + private final SysMenuService menuService; + private final SysDeptService deptService; + private final SysDictService dictService; + + /** + * 获取正常状态租户 + *

+ * 1. 状态正常 + * 2. 开始时间小于等于当前时间 + * 3. 结束时间大于等于当前时间 + * + * @return + */ + @Override + public List getNormal() { + return list(Wrappers.lambdaQuery() + .eq(SysTenant::getStatus, CommonConstants.STATUS_NORMAL) + .le(SysTenant::getStartTime, LocalDate.now()) + .ge(SysTenant::getEndTime, LocalDate.now())); + } + + /** + * 保存租户 + *

+ * 1. 保存租户 + * 2. 初始化权限相关表 + * - sys_user + * - sys_role + * - sys_user_role + * - sys_role_menu + * - sys_dict + * - sys_dict_item + * + * @param sysTenant 租户实体 + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean saveTenant(SysTenant sysTenant) { + this.save(sysTenant); + + // 查询系统内置字典 + List dictList = dictService.list(Wrappers.lambdaQuery() + .eq(SysDict::getSystem, DictTypeEnum.SYSTEM.getType())) + .stream().map(dict -> { + SysDict sysDict = new SysDict(); + BeanUtils.copyProperties(dict, sysDict, "tenantId"); + return sysDict; + }).collect(Collectors.toList()); + // 查询系统内置字典项目 + List dictIdList = dictList.stream().map(SysDict::getId) + .collect(Collectors.toList()); + List dictItemList = dictItemService.list(Wrappers.lambdaQuery() + .in(SysDictItem::getDictId, dictIdList)) + .stream().map(item -> { + SysDictItem sysDictItem = new SysDictItem(); + BeanUtils.copyProperties(item, sysDictItem, "tenantId"); + return sysDictItem; + }).collect(Collectors.toList()); + + // 保证插入租户为新的租户 + TenantContextHolder.setTenantId(sysTenant.getId()); + Configuration config = getConfig(); + + // 插入部门 + SysDept dept = new SysDept(); + dept.setName(config.getString("defaultDeptName")); + dept.setParentId(0); + deptService.save(dept); + //维护部门关系 + deptRelationService.insertDeptRelation(dept); + // 构造初始化用户 + SysUser user = new SysUser(); + user.setUsername(config.getString("defaultUsername")); + user.setPassword(ENCODER.encode(config.getString("defaultPassword"))); + user.setDeptId(dept.getDeptId()); + userService.save(user); + // 构造新角色 + SysRole role = new SysRole(); + role.setRoleCode(config.getString("defaultRoleCode")); + role.setRoleName(config.getString("defaultRoleName")); + roleService.save(role); + // 用户角色关系 + SysUserRole userRole = new SysUserRole(); + userRole.setUserId(user.getUserId()); + userRole.setRoleId(role.getRoleId()); + userRoleService.save(userRole); + // 查询全部菜单,构造角色菜单关系 + List collect = menuService.list() + .stream().map(menu -> { + SysRoleMenu roleMenu = new SysRoleMenu(); + roleMenu.setRoleId(role.getRoleId()); + roleMenu.setMenuId(menu.getMenuId()); + return roleMenu; + }).collect(Collectors.toList()); + roleMenuService.saveBatch(collect); + // 插入系统字典和字典项 + dictService.saveBatch(dictList); + return dictItemService.saveBatch(dictItemList); + } + + /** + * 获取配置信息 + */ + private Configuration getConfig() { + try { + return new PropertiesConfiguration("tenant/tenant.properties"); + } catch (ConfigurationException e) { + throw new CheckedException("获取配置文件失败,", e); + } + } +} diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysTenantMapper.xml b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysTenantMapper.xml new file mode 100755 index 000000000..b3f725b47 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysTenantMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/tenant/tenant.properties b/pigx-upms/pigx-upms-biz/src/main/resources/tenant/tenant.properties new file mode 100644 index 000000000..edb2c730c --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/resources/tenant/tenant.properties @@ -0,0 +1,6 @@ +# \u79DF\u6237\u521D\u59CB\u5316\u9ED8\u8BA4\u914D\u7F6E +defaultUsername=admin +defaultPassword=123456 +defaultRoleCode=ROLE_admin +defaultRoleName=\u79DF\u6237\u9ED8\u8BA4\u89D2\u8272 +defaultDeptName=\u79DF\u6237\u9ED8\u8BA4\u90E8\u95E8 \ No newline at end of file diff --git a/pigx-visual/pigx-activiti/pom.xml b/pigx-visual/pigx-activiti/pom.xml index 005f1b0fc..139eace01 100644 --- a/pigx-visual/pigx-activiti/pom.xml +++ b/pigx-visual/pigx-activiti/pom.xml @@ -61,6 +61,11 @@ com.baomidou mybatis-plus-boot-starter + + + com.alibaba + druid-spring-boot-starter + org.springframework.boot diff --git a/pigx-visual/pigx-codegen/pom.xml b/pigx-visual/pigx-codegen/pom.xml index d627f1ee3..0d3abe201 100755 --- a/pigx-visual/pigx-codegen/pom.xml +++ b/pigx-visual/pigx-codegen/pom.xml @@ -39,6 +39,11 @@ mysql mysql-connector-java + + + com.alibaba + druid-spring-boot-starter + com.pig4cloud diff --git a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/DruidDataSourceProperties.java b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/DruidDataSourceProperties.java new file mode 100644 index 000000000..d80228ef8 --- /dev/null +++ b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/DruidDataSourceProperties.java @@ -0,0 +1,21 @@ +package com.pig4cloud.pigx.codegen.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @author lengleng + * @date 2019-05-14 + *

+ * 参考DruidDataSourceWrapper + */ +@Data +@Component +@ConfigurationProperties("spring.datasource.druid") +public class DruidDataSourceProperties { + private String username; + private String password; + private String url; + private String driverClassName; +} diff --git a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/DynamicDataSourceConfig.java b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/DynamicDataSourceConfig.java index dd880025e..88bf9ca93 100644 --- a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/DynamicDataSourceConfig.java +++ b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/config/DynamicDataSourceConfig.java @@ -1,12 +1,11 @@ package com.pig4cloud.pigx.codegen.config; +import com.alibaba.druid.pool.DruidDataSource; import com.mysql.cj.jdbc.Driver; import com.pig4cloud.pigx.codegen.util.DataSourceConstants; -import com.zaxxer.hikari.HikariDataSource; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jasypt.encryption.StringEncryptor; -import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.core.JdbcTemplate; @@ -32,14 +31,14 @@ import java.util.Optional; @AllArgsConstructor public class DynamicDataSourceConfig implements TransactionManagementConfigurer { private final Map dataSourceMap = new HashMap<>(8); - private final DataSourceProperties dataSourceProperties; + private final DruidDataSourceProperties dataSourceProperties; private final StringEncryptor stringEncryptor; @Bean("dynamicDataSource") public DynamicDataSource dataSource() { DynamicDataSource ds = new DynamicDataSource(); - HikariDataSource cads = new HikariDataSource(); - cads.setJdbcUrl(dataSourceProperties.getUrl()); + DruidDataSource cads = new DruidDataSource(); + cads.setUrl(dataSourceProperties.getUrl()); cads.setDriverClassName(dataSourceProperties.getDriverClassName()); cads.setUsername(dataSourceProperties.getUsername()); cads.setPassword(dataSourceProperties.getPassword()); @@ -64,8 +63,8 @@ public class DynamicDataSourceConfig implements TransactionManagementConfigurer log.info("开始 -> 初始化动态数据源"); Optional.of(dbList).ifPresent(list -> list.forEach(db -> { log.info("数据源:{}", db.get(DataSourceConstants.DS_NAME)); - HikariDataSource ds = new HikariDataSource(); - ds.setJdbcUrl(String.valueOf(db.get(DataSourceConstants.DS_JDBC_URL))); + DruidDataSource ds = new DruidDataSource(); + ds.setUrl(String.valueOf(db.get(DataSourceConstants.DS_JDBC_URL))); ds.setDriverClassName(Driver.class.getName()); ds.setUsername((String) db.get(DataSourceConstants.DS_USER_NAME)); diff --git a/pigx-visual/pigx-codegen/src/main/resources/template/index.vue.vm b/pigx-visual/pigx-codegen/src/main/resources/template/index.vue.vm index 5edd5af24..3e3e77dc0 100755 --- a/pigx-visual/pigx-codegen/src/main/resources/template/index.vue.vm +++ b/pigx-visual/pigx-codegen/src/main/resources/template/index.vue.vm @@ -84,7 +84,7 @@ this.page.total = response.data.data.total this.tableLoading = false }).catch(() => { - this.listLoading=false + this.tableLoading=false }) }, rowDel: function (row, index) { diff --git a/pigx-visual/pigx-daemon-elastic-job/pom.xml b/pigx-visual/pigx-daemon-elastic-job/pom.xml index 77a891dbc..800a91a8e 100644 --- a/pigx-visual/pigx-daemon-elastic-job/pom.xml +++ b/pigx-visual/pigx-daemon-elastic-job/pom.xml @@ -65,6 +65,11 @@ mysql mysql-connector-java + + + com.alibaba + druid-spring-boot-starter + org.apache.curator diff --git a/pigx-visual/pigx-daemon-quartz/pom.xml b/pigx-visual/pigx-daemon-quartz/pom.xml index a682e1b8c..1f1897e60 100644 --- a/pigx-visual/pigx-daemon-quartz/pom.xml +++ b/pigx-visual/pigx-daemon-quartz/pom.xml @@ -44,6 +44,11 @@ mysql mysql-connector-java + + + com.alibaba + druid-spring-boot-starter + com.pig4cloud diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/controller/RedisController.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/controller/RedisController.java index 882d85c0b..497dfd3d7 100644 --- a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/controller/RedisController.java +++ b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/controller/RedisController.java @@ -28,15 +28,4 @@ public class RedisController { public R memory() { return R.ok(redisService.getInfo()); } - - /** - * 执行用户输入命令 - * - * @param command 命令 - * @return - */ - @GetMapping("/exec") - public R exec(String command) { - return redisService.exec(command); - } } diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/service/RedisService.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/service/RedisService.java index 86feda384..b8f56a134 100644 --- a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/service/RedisService.java +++ b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/service/RedisService.java @@ -1,7 +1,5 @@ package com.pig4cloud.pigx.monitor.service; -import com.pig4cloud.pigx.common.core.util.R; - import java.util.Map; /** @@ -17,12 +15,4 @@ public interface RedisService { * @return */ Map getInfo(); - - /** - * 执行运行命令 - * - * @param command - * @return - */ - R exec(String command); } diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/service/impl/RedisServiceImpl.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/service/impl/RedisServiceImpl.java index 0455a38a7..1d3e3d292 100644 --- a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/service/impl/RedisServiceImpl.java +++ b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/service/impl/RedisServiceImpl.java @@ -2,10 +2,7 @@ package com.pig4cloud.pigx.monitor.service.impl; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ArrayUtil; -import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; -import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.monitor.service.RedisService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -52,33 +49,4 @@ public class RedisServiceImpl implements RedisService { result.put("commandStats", pieList); return result; } - - /** - * 执行运行命令 - * - * @param input 用户输入 - * @return - */ - @Override - public R exec(String input) { - try { - Object result = redisTemplate.execute((RedisCallback) connection -> { - String[] arrs = input.split(StrUtil.SPACE); - if (arrs.length == 1) { - return connection.execute(arrs[0]); - } - - String[] args = ArrayUtil.sub(arrs, 1, arrs.length); - byte[][] bytes = new byte[args.length][]; - for (int i = 0; i < args.length; i++) { - bytes[i] = StrUtil.bytes(args[i], CharsetUtil.UTF_8); - } - return connection.execute(arrs[0], bytes); - }); - return R.ok(StrUtil.str(result, CharsetUtil.UTF_8), "success"); - } catch (Exception e) { - log.error("REDIS 命令执行失败", e); - return R.failed("error"); - } - } } diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/service/impl/RedisServiceImplTest.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/service/impl/RedisServiceImplTest.java deleted file mode 100644 index 3981b770f..000000000 --- a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/service/impl/RedisServiceImplTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.pig4cloud.pigx.monitor.service.impl; - -import org.junit.Test; - -/** - * @author lengleng - * @date 2019-05-09 - */ -public class RedisServiceImplTest { - - @Test - public void exec() { - - } -} \ No newline at end of file diff --git a/pigx-visual/pigx-mp-manager/pom.xml b/pigx-visual/pigx-mp-manager/pom.xml index 8fa48ac31..f40bc2cc0 100755 --- a/pigx-visual/pigx-mp-manager/pom.xml +++ b/pigx-visual/pigx-mp-manager/pom.xml @@ -39,6 +39,11 @@ mysql mysql-connector-java + + + com.alibaba + druid-spring-boot-starter + com.pig4cloud diff --git a/pom.xml b/pom.xml index 2dedb90a6..0b6ee4f83 100644 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,7 @@ - 2.1.4.RELEASE + 2.1.5.RELEASE Greenwich.SR1 Cairo-SR8 UTF-8