From f18b3023aff3cbf5bf9e491cfee2dfba66d767a3 Mon Sep 17 00:00:00 2001 From: cjw Date: Wed, 23 Oct 2024 15:10:55 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=80=E6=AC=BE=EF=BC=8C=E9=87=8F=E8=A1=A8?= =?UTF-8?q?=E5=A5=97=E9=A4=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-test.yml | 22 +-- .../impl/ReservationRefundServiceImpl.java | 31 +++- .../system/SysScalePackageController.java | 121 +++++++++++++ .../system/domain/SysScalePackage.java | 57 +++++++ .../org/dromara/system/domain/SysTenant.java | 7 +- .../system/domain/bo/SysScalePackageBo.java | 53 ++++++ .../dromara/system/domain/bo/SysTenantBo.java | 20 ++- .../system/domain/vo/SysScalePackageVo.java | 63 +++++++ .../dromara/system/domain/vo/SysTenantVo.java | 14 +- .../system/mapper/SysScalePackageMapper.java | 15 ++ .../system/mapper/SysTenantPackageMapper.java | 2 + .../service/ISysScalePackageService.java | 78 +++++++++ .../impl/SysScalePackageServiceImpl.java | 159 ++++++++++++++++++ .../impl/SysTenantPackageServiceImpl.java | 2 +- .../service/impl/SysTenantServiceImpl.java | 12 +- .../mapper/system/SysScalePackageMapper.xml | 7 + 16 files changed, 622 insertions(+), 41 deletions(-) create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysScalePackageController.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysScalePackage.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysScalePackageBo.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysScalePackageVo.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysScalePackageMapper.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysScalePackageService.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysScalePackageServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysScalePackageMapper.xml diff --git a/ruoyi-admin/src/main/resources/application-test.yml b/ruoyi-admin/src/main/resources/application-test.yml index 1da5bf2..79b3225 100644 --- a/ruoyi-admin/src/main/resources/application-test.yml +++ b/ruoyi-admin/src/main/resources/application-test.yml @@ -53,24 +53,6 @@ spring: url: jdbc:mysql://39.101.193.239:3306/mental_tenant?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&allowMultiQueries=true username: password: -# oracle: -# type: ${spring.datasource.type} -# driverClassName: oracle.jdbc.OracleDriver -# url: jdbc:oracle:thin:@//localhost:1521/XE -# username: ROOT -# password: root -# postgres: -# type: ${spring.datasource.type} -# driverClassName: org.postgresql.Driver -# url: jdbc:postgresql://localhost:5432/postgres?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true -# username: root -# password: root -# sqlserver: -# type: ${spring.datasource.type} -# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver -# url: jdbc:sqlserver://localhost:1433;DatabaseName=tempdb;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true -# username: SA -# password: root hikari: # 最大连接池数量 maxPoolSize: 20 @@ -199,7 +181,7 @@ justauth: client-id: 449c4*********937************759 client-secret: ac7***********1e0************28d redirect-uri: ${justauth.address}/social-callback?source=topiam - scopes: [openid, email, phone, profile] + scopes: [ openid, email, phone, profile ] qq: client-id: 10**********6 client-secret: 1f7d08**********5b7**********29e @@ -262,7 +244,7 @@ wx: appId: wx2e09db4124332242 mchId: 1646701170 mchKey: Mozhekejiyouxiangongsi6296296296 - keyPath: /usr/local/tenant/certs + keyPath: /usr/local/tenant/certs/apiclient_cert.p12 miniapp: configs: - appid: wx2e09db4124332242 diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ReservationRefundServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ReservationRefundServiceImpl.java index 165ab67..8c4de0b 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ReservationRefundServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ReservationRefundServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult; import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest; +import com.github.binarywang.wxpay.bean.result.WxPayRefundResult; import com.github.binarywang.wxpay.service.WxPayService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -41,7 +42,7 @@ public class ReservationRefundServiceImpl implements IReservationRefundService { private final ReservationRefundMapper baseMapper; private final ReservationOrderMapper orderMapper; - private final WxPayService wxService; + private final WxPayService payService; /** * 查询预约退款 @@ -99,9 +100,9 @@ public class ReservationRefundServiceImpl implements IReservationRefundService { @Override public Boolean insertByBo(ReservationRefundBo bo) { Long userId = LoginHelper.getUserId(); + bo.setUserId(userId); ReservationRefund add = MapstructUtils.convert(bo, ReservationRefund.class); ReservationOrder order = validEntityBeforeSave(add); - add.setUserId(userId); add.setOrderPrice(order.getOrderPrice()); add.setActualPrice(order.getActualPrice()); add.setStatus(0); @@ -138,8 +139,30 @@ public class ReservationRefundServiceImpl implements IReservationRefundService { request.setTotalFee(totalFee); request.setRefundFee(totalFee); request.setNotifyUrl("https://api.ysmental.com/tenant/wx/pay/notify/refund/reservation"); - this.wxService.refund(request); - return null; + WxPayRefundResult refund = payService.refund(request); + String returnCode = refund.getReturnCode(); + if ("FAIL".equals(returnCode)) { + log.error("同意退款:{},通信异常。异常原因:{}", refundId, refund.getReturnMsg()); + return false; + } + String resultCode = refund.getResultCode(); + if ("FAIL".equals(resultCode)) { + String errCode = refund.getErrCode(); + String errCodeDes = refund.getErrCodeDes(); + log.error("同意退款:{},支付异常。异常代码:{}。异常原因:{}", refundId, errCode, errCodeDes); + return false; + } +// WxPayRefundV3Request request = new WxPayRefundV3Request(); +// request.setOutTradeNo(orderId.toString()); +// request.setOutRefundNo(refundId.toString()); +// WxPayRefundV3Request.Amount amont = new WxPayRefundV3Request.Amount(); +// amont.setRefund(totalFee); +// amont.setTotal(totalFee); +// amont.setCurrency("CNY"); +// request.setAmount(amont); +// request.setNotifyUrl("https://api.ysmental.com/tenant/wx/pay/notify/refund/reservation"); +// payService.refundV3(request); + return true; } @Override diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysScalePackageController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysScalePackageController.java new file mode 100644 index 0000000..c3ee264 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysScalePackageController.java @@ -0,0 +1,121 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaCheckRole; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.TenantConstants; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysScalePackageBo; +import org.dromara.system.domain.vo.SysScalePackageVo; +import org.dromara.system.service.ISysScalePackageService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 量表套餐 + * + * @author cjw + * @date 2024-10-23 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/scale/package") +public class SysScalePackageController extends BaseController { + + private final ISysScalePackageService sysScalePackageService; + + /** + * 查询量表套餐列表 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:scalePackage:list") + @GetMapping("/list") + public TableDataInfo list(SysScalePackageBo bo, PageQuery pageQuery) { + return sysScalePackageService.queryPageList(bo, pageQuery); + } + + /** + * 查询租户套餐下拉选列表 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:scalePackage:list") + @GetMapping("/selectList") + public R> selectList() { + return R.ok(sysScalePackageService.selectList()); + } + + /** + * 获取量表套餐详细信息 + * + * @param packageId 主键 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:scalePackage:query") + @GetMapping("/{packageId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long packageId) { + return R.ok(sysScalePackageService.queryById(packageId)); + } + + /** + * 新增量表套餐 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:scalePackage:add") + @Log(title = "量表套餐", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysScalePackageBo bo) { + return toAjax(sysScalePackageService.insertByBo(bo)); + } + + /** + * 修改量表套餐 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:scalePackage:edit") + @Log(title = "量表套餐", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysScalePackageBo bo) { + return toAjax(sysScalePackageService.updateByBo(bo)); + } + + /** + * 状态修改 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenantPackage:edit") + @Log(title = "租户套餐", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public R changeStatus(@RequestBody SysScalePackageBo bo) { + return toAjax(sysScalePackageService.updatePackageStatus(bo)); + } + + /** + * 删除量表套餐 + * + * @param packageIds 主键串 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:scalePackage:remove") + @Log(title = "量表套餐", businessType = BusinessType.DELETE) + @DeleteMapping("/{packageIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] packageIds) { + return toAjax(sysScalePackageService.deleteWithValidByIds(List.of(packageIds), true)); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysScalePackage.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysScalePackage.java new file mode 100644 index 0000000..92e5d50 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysScalePackage.java @@ -0,0 +1,57 @@ +package org.dromara.system.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 量表套餐对象 sys_scale_package + * + * @author cjw + * @date 2024-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_scale_package") +public class SysScalePackage extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 量表套餐id + */ + @TableId(value = "package_id") + private Long packageId; + + /** + * 套餐名称 + */ + private String packageName; + + /** + * 关联量表id + */ + private String scaleIds; + + /** + * 备注 + */ + private String remark; + + /** + * 状态(0正常 1停用) + */ + private String status; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java index a564a40..9af3762 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java @@ -77,7 +77,12 @@ public class SysTenant extends BaseEntity { /** * 租户套餐编号 */ - private Long packageId; + private Long tenantPackageId; + + /** + * 量表套餐编号 + */ + private Long scalePackageId; /** * 过期时间 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysScalePackageBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysScalePackageBo.java new file mode 100644 index 0000000..bc0e2cd --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysScalePackageBo.java @@ -0,0 +1,53 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.annotations.AutoMapping; +import org.dromara.system.domain.SysScalePackage; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 量表套餐业务对象 sys_scale_package + * + * @author cjw + * @date 2024-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysScalePackage.class, reverseConvertGenerate = false) +public class SysScalePackageBo extends BaseEntity { + + /** + * 量表套餐id + */ + @NotNull(message = "量表套餐id不能为空", groups = { EditGroup.class }) + private Long packageId; + + /** + * 套餐名称 + */ + @NotBlank(message = "套餐名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String packageName; + + /** + * 关联量表id + */ + @AutoMapping(target = "scaleIds", expression = "java(org.dromara.common.core.utils.StringUtils.join(source.getScaleIds(), \",\"))") + private Long[] scaleIds; + + /** + * 备注 + */ + private String remark; + + /** + * 状态(0正常 1停用) + */ + private String status; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java index e3ac642..b76a6c8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java @@ -1,17 +1,17 @@ package org.dromara.system.domain.bo; -import org.dromara.common.core.validate.AddGroup; -import org.dromara.common.core.validate.EditGroup; -import org.dromara.system.domain.SysTenant; import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; -import jakarta.validation.constraints.*; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysTenant; import java.util.Date; -import org.dromara.common.mybatis.core.domain.BaseEntity; - /** * 租户业务对象 sys_tenant * @@ -93,7 +93,13 @@ public class SysTenantBo extends BaseEntity { * 租户套餐编号 */ @NotNull(message = "租户套餐不能为空", groups = { AddGroup.class }) - private Long packageId; + private Long tenantPackageId; + + /** + * 量表套餐编号 + */ + @NotNull(message = "量表套餐不能为空", groups = { AddGroup.class }) + private Long scalePackageId; /** * 过期时间 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysScalePackageVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysScalePackageVo.java new file mode 100644 index 0000000..3bd4bcb --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysScalePackageVo.java @@ -0,0 +1,63 @@ +package org.dromara.system.domain.vo; + +import org.dromara.system.domain.SysScalePackage; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 量表套餐视图对象 sys_scale_package + * + * @author cjw + * @date 2024-10-23 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysScalePackage.class) +public class SysScalePackageVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 量表套餐id + */ + @ExcelProperty(value = "量表套餐id") + private Long packageId; + + /** + * 套餐名称 + */ + @ExcelProperty(value = "套餐名称") + private String packageName; + + /** + * 关联量表id + */ + @ExcelProperty(value = "关联量表id") + private String scaleIds; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 状态(0正常 1停用) + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=正常,1=停用") + private String status; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java index 6a45315..c5e13b9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java @@ -1,16 +1,16 @@ package org.dromara.system.domain.vo; -import java.util.Date; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.system.domain.SysTenant; -import io.github.linpeilie.annotations.AutoMapper; -import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.util.Date; /** @@ -90,7 +90,13 @@ public class SysTenantVo implements Serializable { * 租户套餐编号 */ @ExcelProperty(value = "租户套餐编号") - private Long packageId; + private Long tenantPackageId; + + /** + * 量表套餐编号 + */ + @ExcelProperty(value = "量表套餐编号") + private Long scalePackageId; /** * 过期时间 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysScalePackageMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysScalePackageMapper.java new file mode 100644 index 0000000..c017b2a --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysScalePackageMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.mapper; + +import org.dromara.system.domain.SysScalePackage; +import org.dromara.system.domain.vo.SysScalePackageVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 量表套餐Mapper接口 + * + * @author cjw + * @date 2024-10-23 + */ +public interface SysScalePackageMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysTenantPackageMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysTenantPackageMapper.java index 10ca170..47c8811 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysTenantPackageMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysTenantPackageMapper.java @@ -1,5 +1,6 @@ package org.dromara.system.mapper; +import org.apache.ibatis.annotations.Mapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.system.domain.SysTenantPackage; import org.dromara.system.domain.vo.SysTenantPackageVo; @@ -9,6 +10,7 @@ import org.dromara.system.domain.vo.SysTenantPackageVo; * * @author Michelle.Chung */ +@Mapper public interface SysTenantPackageMapper extends BaseMapperPlus { } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysScalePackageService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysScalePackageService.java new file mode 100644 index 0000000..ebba2be --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysScalePackageService.java @@ -0,0 +1,78 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysScalePackageBo; +import org.dromara.system.domain.vo.SysScalePackageVo; + +import java.util.Collection; +import java.util.List; + +/** + * 量表套餐Service接口 + * + * @author cjw + * @date 2024-10-23 + */ +public interface ISysScalePackageService { + + /** + * 查询量表套餐 + * + * @param packageId 主键 + * @return 量表套餐 + */ + SysScalePackageVo queryById(Long packageId); + + /** + * 分页查询量表套餐列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 量表套餐分页列表 + */ + TableDataInfo queryPageList(SysScalePackageBo bo, PageQuery pageQuery); + + /** + * 查询租户套餐已启用列表 + */ + List selectList(); + + /** + * 查询符合条件的量表套餐列表 + * + * @param bo 查询条件 + * @return 量表套餐列表 + */ + List queryList(SysScalePackageBo bo); + + /** + * 新增量表套餐 + * + * @param bo 量表套餐 + * @return 是否新增成功 + */ + Boolean insertByBo(SysScalePackageBo bo); + + /** + * 修改量表套餐 + * + * @param bo 量表套餐 + * @return 是否修改成功 + */ + Boolean updateByBo(SysScalePackageBo bo); + + /** + * 修改套餐状态 + */ + int updatePackageStatus(SysScalePackageBo bo); + + /** + * 校验并批量删除量表套餐信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysScalePackageServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysScalePackageServiceImpl.java new file mode 100644 index 0000000..6dc7aea --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysScalePackageServiceImpl.java @@ -0,0 +1,159 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.TenantConstants; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.SysScalePackage; +import org.dromara.system.domain.SysTenant; +import org.dromara.system.domain.bo.SysScalePackageBo; +import org.dromara.system.domain.vo.SysScalePackageVo; +import org.dromara.system.mapper.SysScalePackageMapper; +import org.dromara.system.mapper.SysTenantMapper; +import org.dromara.system.service.ISysScalePackageService; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 量表套餐Service业务层处理 + * + * @author cjw + * @date 2024-10-23 + */ +@RequiredArgsConstructor +@Service +public class SysScalePackageServiceImpl implements ISysScalePackageService { + + private final SysScalePackageMapper baseMapper; + private final SysTenantMapper tenantMapper; + + /** + * 查询量表套餐 + * + * @param packageId 主键 + * @return 量表套餐 + */ + @Override + public SysScalePackageVo queryById(Long packageId) { + return baseMapper.selectVoById(packageId); + } + + /** + * 分页查询量表套餐列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 量表套餐分页列表 + */ + @Override + public TableDataInfo queryPageList(SysScalePackageBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List selectList() { + return baseMapper.selectVoList(new LambdaQueryWrapper() + .eq(SysScalePackage::getStatus, TenantConstants.NORMAL)); + } + + /** + * 查询符合条件的量表套餐列表 + * + * @param bo 查询条件 + * @return 量表套餐列表 + */ + @Override + public List queryList(SysScalePackageBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysScalePackageBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getPackageName()), SysScalePackage::getPackageName, bo.getPackageName()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysScalePackage::getStatus, bo.getStatus()); + lqw.orderByAsc(SysScalePackage::getPackageId); + return lqw; + } + + /** + * 新增量表套餐 + * + * @param bo 量表套餐 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SysScalePackageBo bo) { + SysScalePackage add = MapstructUtils.convert(bo, SysScalePackage.class); + // 保存菜单id + List scaleIds = Arrays.asList(bo.getScaleIds()); + if (CollUtil.isNotEmpty(scaleIds)) { + add.setScaleIds(StringUtils.join(scaleIds, ", ")); + } else { + add.setScaleIds(""); + } + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setPackageId(add.getPackageId()); + } + return flag; + } + + /** + * 修改量表套餐 + * + * @param bo 量表套餐 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SysScalePackageBo bo) { + SysScalePackage update = MapstructUtils.convert(bo, SysScalePackage.class); + // 保存菜单id + List scaleIds = Arrays.asList(bo.getScaleIds()); + if (CollUtil.isNotEmpty(scaleIds)) { + update.setScaleIds(StringUtils.join(scaleIds, ", ")); + } else { + update.setScaleIds(""); + } + return baseMapper.updateById(update) > 0; + } + + + @Override + public int updatePackageStatus(SysScalePackageBo bo) { + SysScalePackage tenantPackage = MapstructUtils.convert(bo, SysScalePackage.class); + return baseMapper.updateById(tenantPackage); + } + + /** + * 校验并批量删除量表套餐信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + boolean exists = tenantMapper.exists(new LambdaQueryWrapper().in(SysTenant::getScalePackageId, ids)); + if (exists) { + throw new ServiceException("租户套餐已被使用"); + } + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java index 5fd04af..fcdff1e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java @@ -135,7 +135,7 @@ public class SysTenantPackageServiceImpl implements ISysTenantPackageService { @Transactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ - boolean exists = tenantMapper.exists(new LambdaQueryWrapper().in(SysTenant::getPackageId, ids)); + boolean exists = tenantMapper.exists(new LambdaQueryWrapper().in(SysTenant::getTenantPackageId, ids)); if (exists) { throw new ServiceException("租户套餐已被使用"); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java index d30750d..0e95fba 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java @@ -99,7 +99,8 @@ public class SysTenantServiceImpl implements ISysTenantService { lqw.eq(StringUtils.isNotBlank(bo.getAddress()), SysTenant::getAddress, bo.getAddress()); lqw.eq(StringUtils.isNotBlank(bo.getIntro()), SysTenant::getIntro, bo.getIntro()); lqw.like(StringUtils.isNotBlank(bo.getDomain()), SysTenant::getDomain, bo.getDomain()); - lqw.eq(bo.getPackageId() != null, SysTenant::getPackageId, bo.getPackageId()); + lqw.eq(bo.getTenantPackageId() != null, SysTenant::getTenantPackageId, bo.getTenantPackageId()); + lqw.eq(bo.getScalePackageId() != null, SysTenant::getScalePackageId, bo.getScalePackageId()); lqw.eq(bo.getExpireTime() != null, SysTenant::getExpireTime, bo.getExpireTime()); lqw.eq(bo.getAccountCount() != null, SysTenant::getAccountCount, bo.getAccountCount()); lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysTenant::getStatus, bo.getStatus()); @@ -117,7 +118,9 @@ public class SysTenantServiceImpl implements ISysTenantService { // 获取所有租户编号 List tenantIds = baseMapper.selectObjs( - new LambdaQueryWrapper().select(SysTenant::getTenantId), x -> {return Convert.toStr(x);}); + new LambdaQueryWrapper().select(SysTenant::getTenantId), x -> { + return Convert.toStr(x); + }); String tenantId = generateTenantId(tenantIds); add.setTenantId(tenantId); boolean flag = baseMapper.insert(add) > 0; @@ -127,7 +130,7 @@ public class SysTenantServiceImpl implements ISysTenantService { bo.setId(add.getId()); // 根据套餐创建角色 - Long roleId = createTenantRole(tenantId, bo.getPackageId()); + Long roleId = createTenantRole(tenantId, bo.getTenantPackageId()); // 创建部门: 公司名是部门名称 SysDept dept = new SysDept(); @@ -253,7 +256,8 @@ public class SysTenantServiceImpl implements ISysTenantService { public Boolean updateByBo(SysTenantBo bo) { SysTenant tenant = MapstructUtils.convert(bo, SysTenant.class); tenant.setTenantId(null); - tenant.setPackageId(null); + tenant.setTenantPackageId(null); + tenant.setScalePackageId(null); return baseMapper.updateById(tenant) > 0; } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysScalePackageMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysScalePackageMapper.xml new file mode 100644 index 0000000..51c1c8f --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysScalePackageMapper.xml @@ -0,0 +1,7 @@ + + + + +