From 5ab3150f648d873a1ac0058696a8f1d6ebf52a87 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 27 Feb 2025 19:14:40 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat:=E6=AD=A3=E5=85=83=E5=AF=B9=E6=8E=A5?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ZyForeignGetRegionIdByTokenDto.java | 10 +++ .../ZyForeignSyncNativeCardTradeInfoDto.java | 57 +++++++++++++++++ .../dto/zy/mer/ZyMerGetTokenDto.java | 15 +++++ .../dto/zy/mer/ZyMerSyncAccClassInfoDto.java | 30 +++++++++ .../dto/zy/mer/ZyMerSyncAccountInfoDto.java | 61 +++++++++++++++++++ .../dto/zy/mer/ZyMerSyncDealerInfoDto.java | 40 ++++++++++++ .../zy/mer/ZyMerSyncEnterpriseInfoDto.java | 31 ++++++++++ .../zy/self/ZySelfCheckSystemStatusDto.java | 11 ++++ .../dto/zy/self/ZySelfCorrectDto.java | 35 +++++++++++ .../dto/zy/self/ZySelfGetTokenDto.java | 20 ++++++ .../thirdparty/dto/zy/self/ZySelfPayDto.java | 46 ++++++++++++++ .../zy/stride/ZyStrideAuthenticationDto.java | 45 ++++++++++++++ .../dto/zy/stride/ZyStrideConsumptionDto.java | 35 +++++++++++ .../dto/zy/stride/ZyStrideCorrectDto.java | 31 ++++++++++ .../pjcloud/thirdparty/vo/zy/ZyBaseVo.java | 12 ++++ .../ZyForeignGetRegionIdByTokenVo.java | 30 +++++++++ .../ZyForeignSyncNativeCardTradeInfoVo.java | 12 ++++ .../thirdparty/vo/zy/mer/ZyMerGetTokenVo.java | 16 +++++ .../vo/zy/mer/ZyMerSyncAccClassInfoVo.java | 11 ++++ .../vo/zy/mer/ZyMerSyncAccountInfoVo.java | 25 ++++++++ .../vo/zy/mer/ZyMerSyncDealerInfoVo.java | 13 ++++ .../vo/zy/mer/ZyMerSyncEnterpriseInfoVo.java | 12 ++++ .../vo/zy/self/ZySelfCheckSystemStatusVo.java | 19 ++++++ .../vo/zy/self/ZySelfCorrectVo.java | 13 ++++ .../vo/zy/self/ZySelfGetTokenVo.java | 15 +++++ .../thirdparty/vo/zy/self/ZySelfPayVo.java | 11 ++++ .../zy/stride/ZyStrideAuthenticationVo.java | 56 +++++++++++++++++ .../vo/zy/stride/ZyStrideConsumptionVo.java | 36 +++++++++++ .../vo/zy/stride/ZyStrideCorrectVo.java | 41 +++++++++++++ .../thirdparty/utils/zy/api/ZyApi.java | 52 ++++++++++++++++ 30 files changed, 841 insertions(+) create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/foreign/ZyForeignGetRegionIdByTokenDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/foreign/ZyForeignSyncNativeCardTradeInfoDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerGetTokenDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncAccClassInfoDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncAccountInfoDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncDealerInfoDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncEnterpriseInfoDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfCheckSystemStatusDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfCorrectDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfGetTokenDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfPayDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/stride/ZyStrideAuthenticationDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/stride/ZyStrideConsumptionDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/stride/ZyStrideCorrectDto.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/ZyBaseVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/foreign/ZyForeignGetRegionIdByTokenVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/foreign/ZyForeignSyncNativeCardTradeInfoVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerGetTokenVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncAccClassInfoVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncAccountInfoVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncDealerInfoVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncEnterpriseInfoVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfCheckSystemStatusVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfCorrectVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfGetTokenVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfPayVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/stride/ZyStrideAuthenticationVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/stride/ZyStrideConsumptionVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/stride/ZyStrideCorrectVo.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/zy/api/ZyApi.java diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/foreign/ZyForeignGetRegionIdByTokenDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/foreign/ZyForeignGetRegionIdByTokenDto.java new file mode 100644 index 000000000..035d77329 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/foreign/ZyForeignGetRegionIdByTokenDto.java @@ -0,0 +1,10 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.foreign; + +import lombok.Data; + +/** + * 获取区域编码 + */ +@Data +public class ZyForeignGetRegionIdByTokenDto { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/foreign/ZyForeignSyncNativeCardTradeInfoDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/foreign/ZyForeignSyncNativeCardTradeInfoDto.java new file mode 100644 index 000000000..bb377f4db --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/foreign/ZyForeignSyncNativeCardTradeInfoDto.java @@ -0,0 +1,57 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.foreign; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 本地一卡通交易数据同步 + */ +@Data +public class ZyForeignSyncNativeCardTradeInfoDto { + + /** + * 区域编码,取【获取区域编码】接口返回值参regionCode + */ + private String regionCode; + + /** + * 就餐总人数,从推广公务餐之日起,即总人数 + */ + private Long totalNum; + + /** + * 就餐总金额,从推广公务餐之日起,即总金额 + */ + private BigDecimal totalMoney; + + /** + * 当年就餐总人数,从当年1月1日开始 + */ + private Long totalNumYear; + + /** + * 当年就餐总金额,从当年1月1日开始 + */ + private BigDecimal totalMoneyYear; + + /** + * 当月就餐总人数,从当月1日开始 + */ + private Long totalNumMonth; + + /** + * 当月就餐总金额,从当月1日开始 + */ + private BigDecimal totalMoneyMonth; + + /** + * 当日就餐总人数 + */ + private Long totalNumDay; + + /** + * 当日就餐总金额 + */ + private BigDecimal totalMoneyDay; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerGetTokenDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerGetTokenDto.java new file mode 100644 index 000000000..1da71a2ec --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerGetTokenDto.java @@ -0,0 +1,15 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.mer; + +import lombok.Data; + +/** + * 获取token + */ +@Data +public class ZyMerGetTokenDto { + + private String appid; + + private String appsecret; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncAccClassInfoDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncAccClassInfoDto.java new file mode 100644 index 000000000..7709a21ce --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncAccClassInfoDto.java @@ -0,0 +1,30 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.mer; + +import lombok.Data; + +/** + * 身份信息同步 + */ +@Data +public class ZyMerSyncAccClassInfoDto { + + /** + * 身份编号 + */ + private String AccClassID; + + /** + * 身份名称 + */ + private String AccClassName; + + /** + * 所属记账单位编号 + */ + private String EPID; + + /** + * 每次推送版本号,格式化为14位字符串,如果是数字不足14位的,前面补0。 + */ + private String FixId; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncAccountInfoDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncAccountInfoDto.java new file mode 100644 index 000000000..073c59a16 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncAccountInfoDto.java @@ -0,0 +1,61 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.mer; + +import lombok.Data; + +/** + * 账户信息同步 + */ +@Data +public class ZyMerSyncAccountInfoDto { + + /** + * 账户姓名 + */ + private String AccName; + + /** + * 账号,人员的唯一属性 + */ + private String AccNum; + + /** + * 卡账号,卡片的唯一属性 + */ + private Long CardAccNum; + + /** + * 物理卡号,行业标准 + */ + private String CardSID; + + /** + * 卡片状态,0销卡;1有效;2挂失;3冻结;4预销卡;5锁卡,默认1 + */ + private String CardStatus; + + /** + * 该卡在所属接入系统中的所属单位编号 + */ + private String EPID; + + /** + * 人员编号 + */ + private String PerCode; + + /** + * 身份编号,必须是【身份信息】中的值 + */ + private String AccClassID; + + /** + * 手机号码,建议同步,否则将无法使用移动端应用 + */ + private String PhoneNo; + + /** + * 版本号,规则同记账单位同步 + */ + private String FixId; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncDealerInfoDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncDealerInfoDto.java new file mode 100644 index 000000000..af90c697e --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncDealerInfoDto.java @@ -0,0 +1,40 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.mer; + + +import lombok.Data; + +/** + * 商户信息同步 + */ +@Data +public class ZyMerSyncDealerInfoDto { + /** + * 商户所在系统的键值 + */ + private String DealerKeyObj; + + /** + * 商户名称 + */ + private String DealerName; + + /** + * 商户是否有效0:禁用 1:有效 + */ + private String IsValid; + + /** + * 所属记账单位编号 + */ + private String EPID; + + /** + * 每次推送版本号,格式化为14位字符串,如果是数字不足14位的,前面补0。 + */ + private String FixId; + + /** + * 商户类型,0食堂餐厅,1超市,2普通商家,3其他;不传默认是食堂餐厅类型 + */ + private String DealerType; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncEnterpriseInfoDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncEnterpriseInfoDto.java new file mode 100644 index 000000000..8b3a76b7b --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncEnterpriseInfoDto.java @@ -0,0 +1,31 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.mer; + +import lombok.Data; + +/** + * 记账单位同步 + */ +@Data +public class ZyMerSyncEnterpriseInfoDto { + + /** + * 记账单位在自己系统中的编号,必须使用数字,禁止字母、汉字、特殊字符等其他字符串 + */ + private String EPID; + + /** + * 记账单位名称,即不同接入单位的名称,本地一卡通可根据实际情况自行判断属性范围 + */ + private String EPName; + + /** + * 记账单位是否有效0:禁用 1:有效 + */ + private String IsValid; + + /** + * 每次推送版本号,格式化为14位字符串,如果是数字不足14位的,前面补0。 + */ + private String FixId; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfCheckSystemStatusDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfCheckSystemStatusDto.java new file mode 100644 index 000000000..31695e104 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfCheckSystemStatusDto.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.self; + +import lombok.Data; + +/** + * 第三方url健康探测 + */ +@Data +public class ZySelfCheckSystemStatusDto { + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfCorrectDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfCorrectDto.java new file mode 100644 index 000000000..0e0d491a2 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfCorrectDto.java @@ -0,0 +1,35 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.self; + +import lombok.Data; + +/** + * 第三方一卡通系统提供冲正接口 + */ +@Data +public class ZySelfCorrectDto { + + /** + * 智慧园区通刷服务平台冲正所产生的平台记录流水号 + */ + private String serialNum; + + /** + * 待冲正流水号,该流水号是调用第三方扣费接口返回的流水号,即第三方的订单号 + */ + private String correctSerialNum; + + /** + * 冲正金额,不传表示全额冲正,且仅支持全额冲正退款 + */ + private String amount; + + /** + * 访问对接系统中配置的opId值,即该退款账户所在的记账单位编号 + */ + private String opId; + + /** + * 签名值,明文不加密 + */ + private String sign; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfGetTokenDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfGetTokenDto.java new file mode 100644 index 000000000..f94193ba5 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfGetTokenDto.java @@ -0,0 +1,20 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.self; + +import lombok.Data; + +/** + * 第三方提供获取token + */ +@Data +public class ZySelfGetTokenDto { + + /** + * 第三方app用户id + */ + private String appid; + + /** + * 第三方app用户密钥 + */ + private String appsecret; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfPayDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfPayDto.java new file mode 100644 index 000000000..fb673523d --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/self/ZySelfPayDto.java @@ -0,0 +1,46 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.self; + +import lombok.Data; + +/** + * 第三方一卡通系统提供扣费接口 + */ +@Data +public class ZySelfPayDto { + + /** + * 一卡通帐号,可以通过【获取账户信息接口】获得 + */ + private String accNum; + + /** + * 卡账号,用户多卡情况下选择对应卡账号来扣费,不填的是默认用户主卡扣费。 + */ + private String cardAccNum; + + /** + * 消费金额,格式是XX.XX元 + */ + private String amount; + + /** + * 智慧园区通刷服务平台扣费流水号 + */ + private String serialNum; + + /** + * 交易时间,格式:yyyy-MM-dd HH:mm:ss + */ + private String dealTime; + + /** + * 在访问对接配置里面配置的opId值,第三方一卡通系统根据需要获取 + */ + private String opId; + + /** + * 签名 + */ + private String sign; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/stride/ZyStrideAuthenticationDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/stride/ZyStrideAuthenticationDto.java new file mode 100644 index 000000000..810a8d15c --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/stride/ZyStrideAuthenticationDto.java @@ -0,0 +1,45 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.stride; + +import lombok.Data; + +/** + * 统一身份验证功能 + */ +@Data +public class ZyStrideAuthenticationDto { + + /** + * 物理卡号,当Type不传(默认为0)时,该值必填;当Type为1时,该值可为空 + */ + private String CardSID; + + /** + * 商户号(商户所在单位主键) + */ + private String DealerKeyObj; + + /** + * 消费机设备序列号(唯一),用于终端查流水使用 + */ + private String TerminalNum; + + /** + * 商户所在系统的单位编号 + */ + private String EPID; + + /** + * 消费认证方式(0-刷卡;1-扫码),默认为0 + */ + private String Type; + + /** + * 设备读取到的完整的二维码字符串,当Type为1时,该值必填 + */ + private String Qrcode; + + /** + * 签名,明文传输 + */ + private String sign; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/stride/ZyStrideConsumptionDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/stride/ZyStrideConsumptionDto.java new file mode 100644 index 000000000..66958b231 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/stride/ZyStrideConsumptionDto.java @@ -0,0 +1,35 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.stride; + +import lombok.Data; + +/** + * 智慧园区通刷平台提供消费接口 + */ +@Data +public class ZyStrideConsumptionDto { + + /** + * 商户在所在系统的编号(主键值) + */ + private String DealerKeyObj; + + /** + * 消费金额(元) + */ + private String money; + + /** + * 订单号(统一身份验证通过后返回的订单号) + */ + private String recNum; + + /** + * POS机发起交易的时间,yyyy-MM-dd HH:mm:ss + */ + private String dealTime; + + /** + * 签名值,明文不加密 + */ + private String sign; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/stride/ZyStrideCorrectDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/stride/ZyStrideCorrectDto.java new file mode 100644 index 000000000..15ad858b4 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/stride/ZyStrideCorrectDto.java @@ -0,0 +1,31 @@ +package com.bsd.pjcloud.thirdparty.dto.zy.stride; + +import lombok.Data; + +/** + * 智慧园区通刷平台提供冲正接口 + */ +@Data +public class ZyStrideCorrectDto { + + /** + * 消费金额(元),末笔全额冲正,现在只支持全额冲正,传过来也无效 + */ + private String money; + + /** + * POS机收到的末笔订单号(统一身份验证通过后智慧园区通刷服务平台返回的订单号) + */ + private String recNum; + + /** + * POS机发起冲正的时间,yyyy-MM-dd HH:mm:ss + */ + private String dealTime; + + /** + * 签名值,明文不加密 + */ + private String sign; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/ZyBaseVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/ZyBaseVo.java new file mode 100644 index 000000000..4017d5b49 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/ZyBaseVo.java @@ -0,0 +1,12 @@ +package com.bsd.pjcloud.thirdparty.vo.zy; + +import lombok.Data; + +@Data +public class ZyBaseVo { + + private Integer code; + + private String msg; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/foreign/ZyForeignGetRegionIdByTokenVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/foreign/ZyForeignGetRegionIdByTokenVo.java new file mode 100644 index 000000000..48ac20905 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/foreign/ZyForeignGetRegionIdByTokenVo.java @@ -0,0 +1,30 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.foreign; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 获取区域编码 + */ +@Data +public class ZyForeignGetRegionIdByTokenVo extends ZyBaseVo { + + private VoData data; + + @Data + static class VoData { + /** + * 区域编码 + */ + private String regionCode; + /** + * 地市全名称 + */ + private String regionAllName; + /** + * 地市简称 + */ + private String regionName; + } + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/foreign/ZyForeignSyncNativeCardTradeInfoVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/foreign/ZyForeignSyncNativeCardTradeInfoVo.java new file mode 100644 index 000000000..ac472008a --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/foreign/ZyForeignSyncNativeCardTradeInfoVo.java @@ -0,0 +1,12 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.foreign; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 本地一卡通交易数据同步 + */ +@Data +public class ZyForeignSyncNativeCardTradeInfoVo extends ZyBaseVo { + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerGetTokenVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerGetTokenVo.java new file mode 100644 index 000000000..232334eef --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerGetTokenVo.java @@ -0,0 +1,16 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.mer; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 获取token + */ +@Data +public class ZyMerGetTokenVo extends ZyBaseVo { + + private String access_token; + + private String expires_in; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncAccClassInfoVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncAccClassInfoVo.java new file mode 100644 index 000000000..7d0df1827 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncAccClassInfoVo.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.mer; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 身份信息同步 + */ +@Data +public class ZyMerSyncAccClassInfoVo extends ZyBaseVo { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncAccountInfoVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncAccountInfoVo.java new file mode 100644 index 000000000..196478127 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncAccountInfoVo.java @@ -0,0 +1,25 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.mer; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 账户信息同步 + */ +@Data +public class ZyMerSyncAccountInfoVo extends ZyBaseVo { + + @Data + static class DataVo{ + /** + * 当前智慧园区通刷服务平台保存的最新同步版本号,返回该版本号,要求第三方一卡通系统同步这个大于这个版本号的数据 + */ + private String currentFixId; + + /** + * 签名 + */ + private String sign; + } + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncDealerInfoVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncDealerInfoVo.java new file mode 100644 index 000000000..f2435518a --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncDealerInfoVo.java @@ -0,0 +1,13 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.mer; + + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 商户信息同步 + */ +@Data +public class ZyMerSyncDealerInfoVo extends ZyBaseVo { + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncEnterpriseInfoVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncEnterpriseInfoVo.java new file mode 100644 index 000000000..56d845ab4 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/mer/ZyMerSyncEnterpriseInfoVo.java @@ -0,0 +1,12 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.mer; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 记账单位同步 + */ +@Data +public class ZyMerSyncEnterpriseInfoVo extends ZyBaseVo { + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfCheckSystemStatusVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfCheckSystemStatusVo.java new file mode 100644 index 000000000..08d7e8d16 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfCheckSystemStatusVo.java @@ -0,0 +1,19 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.self; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +import javax.xml.stream.events.StartDocument; + +/** + * 第三方url健康探测 + */ +@Data +public class ZySelfCheckSystemStatusVo extends ZyBaseVo { + + /** + * 当前系统时间 格式yyyy-MM-dd HH:mm:ss + */ + private String systemTime; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfCorrectVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfCorrectVo.java new file mode 100644 index 000000000..462a5d028 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfCorrectVo.java @@ -0,0 +1,13 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.self; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 第三方一卡通系统提供冲正接口 + */ +@Data +public class ZySelfCorrectVo extends ZyBaseVo { + + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfGetTokenVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfGetTokenVo.java new file mode 100644 index 000000000..c0eb4310f --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfGetTokenVo.java @@ -0,0 +1,15 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.self; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 第三方提供获取token + */ +@Data +public class ZySelfGetTokenVo extends ZyBaseVo { + + private String access_token; + + private String expires_in; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfPayVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfPayVo.java new file mode 100644 index 000000000..6900edd3d --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/self/ZySelfPayVo.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.self; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 第三方一卡通系统提供扣费接口 + */ +@Data +public class ZySelfPayVo extends ZyBaseVo { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/stride/ZyStrideAuthenticationVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/stride/ZyStrideAuthenticationVo.java new file mode 100644 index 000000000..1c2671d1b --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/stride/ZyStrideAuthenticationVo.java @@ -0,0 +1,56 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.stride; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 统一身份验证功能 + */ +@Data +public class ZyStrideAuthenticationVo extends ZyBaseVo { + + /** + * 物理卡号 + */ + private String CardSID; + + /** + * 如果返回成功,则返回订单号 + */ + private String recNum; + + /** + * 卡户所属单位名称 + */ + private String deptName; + + /** + * 姓名 + */ + private String AccName; + + /** + * 个人编号 + */ + private String PerCode; + + /** + * 是否是本地一卡通人员,true-是,false-不是 + */ + private String IsOwner; + + /** + * 个人账号 + */ + private String AccNum; + + /** + * 易通为记账单位编号,4.0为园区号 + */ + private String ChargeId; + + /** + * 签名 + */ + private String sign; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/stride/ZyStrideConsumptionVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/stride/ZyStrideConsumptionVo.java new file mode 100644 index 000000000..ff5b1f3bc --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/stride/ZyStrideConsumptionVo.java @@ -0,0 +1,36 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.stride; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 智慧园区通刷平台提供消费接口 + */ +@Data +public class ZyStrideConsumptionVo extends ZyBaseVo { + + /** + * 商户在所在系统的编号(主键值) + */ + private String DealerKeyObj; + + /** + * 消费金额(元) + */ + private String money; + + /** + * 订单号(统一身份验证通过后返回的订单号) + */ + private String recNum; + + /** + * POS机发起交易的时间,yyyy-MM-dd HH:mm:ss + */ + private String dealTime; + + /** + * 签名值,明文不加密 + */ + private String sign; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/stride/ZyStrideCorrectVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/stride/ZyStrideCorrectVo.java new file mode 100644 index 000000000..9b634c003 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/stride/ZyStrideCorrectVo.java @@ -0,0 +1,41 @@ +package com.bsd.pjcloud.thirdparty.vo.zy.stride; + +import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo; +import lombok.Data; + +/** + * 智慧园区通刷平台提供冲正接口 + */ +@Data +public class ZyStrideCorrectVo extends ZyBaseVo { + + /** + * 订单号 + */ + private String recNum; + + /** + * 入流水时间(服务器) + */ + private String dealTime; + + /** + * 冲正金额 + */ + private String money; + + /** + * 姓名 + */ + private String accName; + + /** + * 个人编号 + */ + private String perCode; + + /** + * 签名 + */ + private String sign; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/zy/api/ZyApi.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/zy/api/ZyApi.java new file mode 100644 index 000000000..24d42f464 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/zy/api/ZyApi.java @@ -0,0 +1,52 @@ +package com.bsd.pjcloud.thirdparty.utils.zy.api; + +import lombok.experimental.UtilityClass; + +@UtilityClass +public class ZyApi { + + // 商户信息同步 + class Mer { + // 获取token + static final String GET_TOKEN = "/getToken?appId={appid}&appSecret={appsecret}"; + // 商户信息同步 + static final String SYNC_DEALER_INFO = "/syncDealerInfo?access_token={access_token}"; + // 记账单位同步 + static final String SYNC_ENTERPRISE_INFO = "/syncEnterpriseInfo?access_token={access_token}"; + // 账户信息同步 + static final String SYNC_ACCOUNT_INFO = "/syncAccountInfo?access_token={access_token}"; + // 身份信息同步 + static final String SYNC_ACC_CLASS_INFO = "/syncAccClassInfo?access_token={access_token}"; + } + + // 统一身份验证功能 + class Stride { + // 统一身份验证功能 + static final String AUTHENTICATION = "/authentication?access_token={access_token}"; + // 智慧园区通刷平台提供消费接口 + static final String CONSUMPTION = "/consumption?access_token={access_token}"; + // 智慧园区通刷平台提供冲正接口 + static final String CORRECT = "/correct?access_token={access_token}"; + } + + // 本地一卡通交易数据同步 + class Foreign { + // 本地一卡通交易数据同步 + static final String SYNC_NATIVE_CARD_TRADE_INFO = "/getToken/syncNativeCardTradeInfo?access_token={access_token}"; + // 获取区域编码 + static final String GET_REGION_ID_BY_TOKEN = "/getRegionIdByToken?access_token={access_token}"; + } + + // 第三方需提供的接口 + class Self { + // 第三方url健康探测 + static final String CHECK_SYSTEM_STATUS = "/checkSystemStatus"; + // 第三方一卡通系统提供冲正接口 + static final String CORRECT = "/correct?access_token={access_token}"; + // 第三方一卡通系统提供扣费接口 + static final String PAY = "/pay?access_token={access_token}"; + // 第三方提供获取token + static final String GET_TOKEN = "/getToken?appId={appid}&appSecret={appsecret}_1730169197889"; + } + +} From dd1991fead89623c4254276c3d25f321a5fd8853 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 27 Feb 2025 20:16:54 +0800 Subject: [PATCH 2/7] =?UTF-8?q?feat:=E8=B4=A2=E5=8A=A1=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A0=91=E5=BD=A2=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/api/dto/order/HardDeptTotalDto.java | 8 +++- .../hard/api/dto/order/HardOrderDto.java | 5 +- .../impl/order/HardOrderTotalServiceImpl.java | 48 +------------------ .../mapper/order/HardOrderMapper.xml | 12 ++++- .../pjcloud/admin/api/dto/DeptAllListDto.java | 4 +- .../bsd/pjcloud/admin/api/dto/UserDTO.java | 13 +++-- .../bsd/pjcloud/admin/api/utils/DataUtil.java | 5 +- .../vo/base/BaseIsDeepDeptTreeInterface.java | 27 +++++++++++ .../vo/base/BaseIsIncludeTreeInterface.java | 20 ++++++++ .../service/impl/SysUserServiceImpl.java | 22 --------- .../main/resources/mapper/SysDeptMapper.xml | 12 ++++- .../main/resources/mapper/SysUserMapper.xml | 24 +++++++++- .../wallet/api/dto/WalletManageDto.java | 13 ++--- .../wallet/api/dto/WalletTransactionDto.java | 13 ++--- .../dto/recharge/WalletRechargeImportDto.java | 17 +++++-- .../controller/WalletManageController.java | 9 +++- .../WalletTransactionController.java | 1 - .../wallet/mapper/WalletManageMapper.java | 20 +++++++- .../mapper/WalletTransactionMapper.java | 20 +++++++- .../wallet/service/WalletManageService.java | 2 + .../service/impl/WalletManageServiceImpl.java | 27 ++--------- .../impl/WalletTransactionServiceImpl.java | 22 --------- .../WalletRechargeImportServiceImpl.java | 22 --------- .../pjcloud/wallet/utils/dept/DeptUtil.java | 36 ++++++++++++++ .../recharge/WalletRechargeImportMapper.xml | 12 ++++- 25 files changed, 236 insertions(+), 178 deletions(-) create mode 100644 pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/base/BaseIsDeepDeptTreeInterface.java create mode 100644 pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/base/BaseIsIncludeTreeInterface.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/dept/DeptUtil.java diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardDeptTotalDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardDeptTotalDto.java index 7f4ec051d..4eb5bc81f 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardDeptTotalDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardDeptTotalDto.java @@ -1,5 +1,6 @@ package com.bsd.pjcloud.hard.api.dto.order; +import com.bsd.pjcloud.admin.api.vo.base.BaseIsIncludeTreeInterface; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -7,7 +8,7 @@ import java.time.LocalDateTime; import java.util.List; @Data -public class HardDeptTotalDto { +public class HardDeptTotalDto implements BaseIsIncludeTreeInterface { @Schema(description = "饭卡类型id") private Long walletTypeId; @@ -18,10 +19,13 @@ public class HardDeptTotalDto { @Schema(description = "部门id") private Long deptId; - @Schema(description = "是否深度搜索deptId") + @Schema(description = "是否深度搜索deptIds") private Boolean isDeepDept; @Schema(description = "部门ids") private List deptIds; + @Schema(description = "是否包含deptIds") + private Boolean isInclude = false; + } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java index dee26ad8f..a677caac5 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java @@ -1,5 +1,6 @@ package com.bsd.pjcloud.hard.api.dto.order; +import com.bsd.pjcloud.admin.api.vo.base.BaseIsIncludeTreeInterface; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import lombok.Data; @@ -8,7 +9,7 @@ import java.time.LocalDateTime; import java.util.List; @Data -public class HardOrderDto extends HardOrderEntity { +public class HardOrderDto extends HardOrderEntity implements BaseIsIncludeTreeInterface { /** * 订单部门id极其子部门id @@ -17,7 +18,7 @@ public class HardOrderDto extends HardOrderEntity { private List deptIds; - private Boolean isDeepDept = false; + private Boolean isInclude = false; private List userIds; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java index 3d864c734..4d2c6dd28 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java @@ -52,16 +52,6 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { @Override public Page pageListSb(Page page, HardOrderDto dto) { - if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getDeptId())) { - List deptList = remoteDeptService.getDescendantList(dto.getDeptId()).getData(); - dto.setDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } - if (ObjectUtil.isNotEmpty(dto.getDeptIds())) { - dto.setDeptId(null); - } Page list = hardOrderMapper.pageListSb(page, dto); if (ObjectUtil.isNotEmpty(list)) { // 商户 @@ -88,16 +78,6 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { @Override public List listSb(HardOrderDto dto) { - if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getDeptId())) { - List deptList = remoteDeptService.getDescendantList(dto.getDeptId()).getData(); - dto.setDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } - if (ObjectUtil.isNotEmpty(dto.getDeptIds())) { - dto.setDeptId(null); - } List list = hardOrderMapper.listSb(dto); if (ObjectUtil.isNotEmpty(list)) { // 商户 @@ -124,16 +104,6 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { @Override public Page pageListCs(Page page, HardOrderDto dto) { - if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getDeptId())) { - List deptList = remoteDeptService.getDescendantList(dto.getDeptId()).getData(); - dto.setDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } - if (ObjectUtil.isNotEmpty(dto.getDeptIds())) { - dto.setDeptId(null); - } Page list = hardOrderMapper.pageListCs(page, dto); if (ObjectUtil.isNotEmpty(list)) { // 商户 @@ -150,16 +120,6 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { @Override public List listCs(HardOrderDto dto) { - if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getDeptId())) { - List deptList = remoteDeptService.getDescendantList(dto.getDeptId()).getData(); - dto.setDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } - if (ObjectUtil.isNotEmpty(dto.getDeptIds())) { - dto.setDeptId(null); - } List list = hardOrderMapper.listCs(dto); if (ObjectUtil.isNotEmpty(list)) { // 商户 @@ -177,15 +137,9 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { @Override public List pageListDept(HardDeptTotalDto dto) { // 查询部门 - if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getDeptId())) { - List deptList = remoteDeptService.getDescendantList(dto.getDeptId()).getData(); - dto.setDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } CompletableFuture> deptFuture = CompletableFuture.supplyAsync(() -> { DeptAllListDto deptDto = new DeptAllListDto(); + deptDto.setIsInclude(dto.getIsInclude()); if (ObjectUtil.isNotEmpty(dto.getDeptId())) { deptDto.setDeptId(dto.getDeptId()); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml index 40aee211c..c45b4df98 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml @@ -81,7 +81,17 @@ and a.dept_id = #{dto.deptId} - and a.dept_id in + + + and a.dept_id IN + + + and a.dept_id NOT IN + + + and a.dept_id IN + + #{v} diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/DeptAllListDto.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/DeptAllListDto.java index 3ab530b89..a7b225a54 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/DeptAllListDto.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/DeptAllListDto.java @@ -5,10 +5,12 @@ import lombok.Data; import java.util.List; @Data -public class DeptAllListDto { +public class DeptAllListDto { private Long deptId; private List deptIds; + private Boolean isInclude; + } diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDTO.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDTO.java index 5589448aa..bfec27d8a 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDTO.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDTO.java @@ -20,6 +20,7 @@ package com.bsd.pjcloud.admin.api.dto; import com.bsd.pjcloud.admin.api.entity.SysUser; +import com.bsd.pjcloud.admin.api.vo.base.BaseIsIncludeTreeInterface; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -34,7 +35,7 @@ import java.util.List; @Data @Schema(description = "系统用户传输对象") @EqualsAndHashCode(callSuper = true) -public class UserDTO extends SysUser { +public class UserDTO extends SysUser implements BaseIsIncludeTreeInterface { /** * 角色ID @@ -72,11 +73,13 @@ public class UserDTO extends SysUser { private List userIds; /** - * false 当前部门 - * true 当前部门及子部门 + * 部门ids */ - private Boolean isDeepDept = false; - private List deptIds; + /** + * 是否包含部门ids + */ + private Boolean isInclude; + } diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/utils/DataUtil.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/utils/DataUtil.java index 54d1d2e82..20cec39b9 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/utils/DataUtil.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/utils/DataUtil.java @@ -7,10 +7,7 @@ import com.bsd.pjcloud.admin.api.entity.SysMenu; import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.vo.SysUserFaceVo; import com.bsd.pjcloud.admin.api.vo.UserVO; -import com.bsd.pjcloud.admin.api.vo.base.BaseDeptInterface; -import com.bsd.pjcloud.admin.api.vo.base.BaseFacesInterface; -import com.bsd.pjcloud.admin.api.vo.base.BaseUserDeptInterface; -import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; +import com.bsd.pjcloud.admin.api.vo.base.*; import com.bsd.pjcloud.common.core.util.CollectionUtils; import lombok.experimental.UtilityClass; diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/base/BaseIsDeepDeptTreeInterface.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/base/BaseIsDeepDeptTreeInterface.java new file mode 100644 index 000000000..52b667b44 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/base/BaseIsDeepDeptTreeInterface.java @@ -0,0 +1,27 @@ +package com.bsd.pjcloud.admin.api.vo.base; + +import java.util.List; + +public interface BaseIsDeepDeptTreeInterface { + /** + * 部门ids + */ + List getDeptIds(); + + void setDeptIds(List deptIds); + + /** + * 部门id + */ + Long getDeptId(); + + void setDeptId(Long deptId); + + /** + * 是否深度搜索deptIds + * @return + */ + Boolean getIsDeepDept(); + + void setIsDeepDept(Boolean isDeepDept); +} diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/base/BaseIsIncludeTreeInterface.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/base/BaseIsIncludeTreeInterface.java new file mode 100644 index 000000000..84e4b4c6a --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/base/BaseIsIncludeTreeInterface.java @@ -0,0 +1,20 @@ +package com.bsd.pjcloud.admin.api.vo.base; + +import java.util.List; + +public interface BaseIsIncludeTreeInterface { + + /** + * 是否包含部门ids + */ + Boolean getIsInclude(); + + void setIsInclude(Boolean isInclude); + + /** + * 部门ids + */ + List getDeptIds(); + + void setDeptIds(List deptIds); +} diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java index fd637c1a1..c2306bb67 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java @@ -220,17 +220,6 @@ public class SysUserServiceImpl extends ServiceImpl impl */ @Override public IPage getUsersWithRolePage(Page page, UserDTO userDTO) { - // 部门 - if (ObjectUtil.isNotEmpty(userDTO.getIsDeepDept()) && userDTO.getIsDeepDept() && ObjectUtil.isNotEmpty(userDTO.getDeptId())) { - List deptList = sysDeptService.listDescendant(userDTO.getDeptId()); - userDTO.setDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - userDTO.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } - if (ObjectUtil.isNotEmpty(userDTO.getDeptIds())) { - userDTO.setDeptId(null); - } IPage list = baseMapper.getUserVosPage(page, userDTO, DataScope.of()); if (ObjectUtil.isNotEmpty(list.getRecords())) { List userIds = list.getRecords().stream().map(UserVO::getUserId).distinct().toList(); @@ -367,17 +356,6 @@ public class SysUserServiceImpl extends ServiceImpl impl */ @Override public List listUser(UserDTO userDTO, Long[] ids) { - // 部门 - if (ObjectUtil.isNotEmpty(userDTO.getIsDeepDept()) && userDTO.getIsDeepDept() && ObjectUtil.isNotEmpty(userDTO.getDeptId())) { - List deptList = sysDeptService.listDescendant(userDTO.getDeptId()); - userDTO.setDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - userDTO.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } - if (ObjectUtil.isNotEmpty(userDTO.getDeptIds())) { - userDTO.setDeptId(null); - } // 根据数据权限查询全部的用户信息 List voList = baseMapper.selectVoListByScope(userDTO, ids, DataScope.of()); // 转换成execl 对象输出 diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysDeptMapper.xml b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysDeptMapper.xml index ba70eee4e..2b0f16b9b 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysDeptMapper.xml +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysDeptMapper.xml @@ -51,7 +51,17 @@ AND a.dept_id = #{dto.deptId} - and a.dept_id IN + + + and a.dept_id IN + + + and a.dept_id NOT IN + + + and a.dept_id IN + + #{v} diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserMapper.xml b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserMapper.xml index 3621fb244..2a341dd0c 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserMapper.xml +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserMapper.xml @@ -182,7 +182,17 @@ AND u.dept_id = #{query.deptId} - and u.dept_id IN + + + and u.dept_id IN + + + and u.dept_id NOT IN + + + and u.dept_id IN + + #{v} @@ -248,7 +258,17 @@ AND u.dept_id = #{query.deptId} - AND u.dept_id in + + + and u.dept_id IN + + + and u.dept_id NOT IN + + + and u.dept_id IN + + #{id} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletManageDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletManageDto.java index 4f8aa8e00..c2611195f 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletManageDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletManageDto.java @@ -1,5 +1,6 @@ package com.bsd.pjcloud.wallet.api.dto; +import com.bsd.pjcloud.admin.api.vo.base.BaseIsIncludeTreeInterface; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import lombok.Data; @@ -8,7 +9,7 @@ import java.time.LocalDateTime; import java.util.List; @Data -public class WalletManageDto extends WalletManageEntity { +public class WalletManageDto extends WalletManageEntity implements BaseIsIncludeTreeInterface { private List userIds; @@ -16,14 +17,14 @@ public class WalletManageDto extends WalletManageEntity { private LocalDateTime[] createTimeList; - /** - * 是否深度搜索deptId - */ - private Boolean isDeepDept; - /** * 部门ids */ private List deptIds; + /** + * 是否深度搜索deptId + */ + private Boolean isInclude; + } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionDto.java index d5555cdc2..76c8a076d 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletTransactionDto.java @@ -1,5 +1,6 @@ package com.bsd.pjcloud.wallet.api.dto; +import com.bsd.pjcloud.admin.api.vo.base.BaseIsIncludeTreeInterface; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -8,7 +9,7 @@ import java.time.LocalDate; import java.util.List; @Data -public class WalletTransactionDto extends WalletTransactionEntity { +public class WalletTransactionDto extends WalletTransactionEntity implements BaseIsIncludeTreeInterface { /** * 类型 - 收入 @@ -40,14 +41,14 @@ public class WalletTransactionDto extends WalletTransactionEntity { */ private Boolean isFindOrder = false; - /** - * 是否深度搜索deptId - */ - private Boolean isDeepDept; - /** * 部门ids */ private List deptIds; + /** + * 是否包含部门ids + */ + private Boolean isInclude; + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeImportDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeImportDto.java index 379b1fd73..0220b4202 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeImportDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/recharge/WalletRechargeImportDto.java @@ -1,5 +1,6 @@ package com.bsd.pjcloud.wallet.api.dto.recharge; +import com.bsd.pjcloud.admin.api.vo.base.BaseIsIncludeTreeInterface; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeImportEntity; import lombok.Data; @@ -7,7 +8,7 @@ import java.time.LocalDateTime; import java.util.List; @Data -public class WalletRechargeImportDto extends WalletRechargeImportEntity { +public class WalletRechargeImportDto extends WalletRechargeImportEntity implements BaseIsIncludeTreeInterface { private String processStatus; @@ -19,16 +20,22 @@ public class WalletRechargeImportDto extends WalletRechargeImportEntity { private Long userDeptId; - /** - * 是否深度搜索deptId - */ - private Boolean isDeepDept; /** * 部门ids */ private List userDeptIds; + /** + * 没有使用 + */ + private List deptIds; + + /** + * 是否包含部门ids + */ + private Boolean isInclude; + private LocalDateTime[] createTimeList; private LocalDateTime[] processTimeList; diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java index d8f568536..fb9b518ff 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java @@ -1,6 +1,5 @@ package com.bsd.pjcloud.wallet.controller; -import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -22,7 +21,6 @@ import com.bsd.pjcloud.wallet.service.WalletCodeUseService; import com.bsd.pjcloud.wallet.service.WalletManageService; import jakarta.servlet.http.HttpServletResponse; import org.springframework.security.access.prepost.PreAuthorize; -import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.HttpHeaders; @@ -181,6 +179,13 @@ public class WalletManageController { return R.ok(walletManageService.removeBatchByIds(CollUtil.toList(ids))); } + @Operation(summary = "钱包记录分页", description = "钱包记录分页") + @PostMapping("/page-qb") + public R pageQb(@ParameterObject Page page, @RequestBody WalletManageDto dto) { + DataScope dataScope = new DataScope(); + return R.ok(walletManageService.scopeQbPageList(page, dto, dataScope)); + } + @PostMapping("/export") @PreAuthorize("@pms.hasPermission('wallet_walletManage_export')") public void export(HttpServletResponse response, @ParameterObject Page page, @RequestBody WalletManageDto dto) { diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java index b25496c28..f2524644a 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java @@ -96,7 +96,6 @@ public class WalletTransactionController { @PostMapping("/page-cz") public R pageCz(@ParameterObject Page page, @RequestBody WalletTransactionDto dto) { dto.setBizTypes(WalletBizEnum.getTopUpCodes()); - // dto.setType(WalletTransactionDto.TYPE_INCOME); DataScope dataScope = new DataScope(); return R.ok(walletTransactionService.scopePageList(page, dto, dataScope)); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletManageMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletManageMapper.java index afe5b1307..a4c1b34a0 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletManageMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletManageMapper.java @@ -110,7 +110,6 @@ public interface WalletManageMapper extends PjcloudBaseMapper list = selectListByScope(wrapper, dataScope); return BeanUtils.toBean(list, WalletManageVo.class); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java index 873e39393..8fe2c23e1 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletTransactionMapper.java @@ -31,7 +31,6 @@ public interface WalletTransactionMapper extends PjcloudBaseMapper { Page scopePageList(Page page, WalletManageDto dto, DataScope dataScope); + Page scopeQbPageList(Page page, WalletManageDto dto, DataScope dataScope); + List scopeList(WalletManageDto dto, DataScope dataScope); WalletManageVo join(Long user, Long walletId); diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java index 614b6bd33..5cf51fa49 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java @@ -219,17 +219,6 @@ public class WalletManageServiceImpl extends ServiceImpl scopeList(WalletManageDto dto, DataScope dataScope) { - // 查询部门 - if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getDeptId())) { - List deptList = deptService.getDescendantList(dto.getDeptId()).getData(); - dto.setDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } - if (ObjectUtil.isNotEmpty(dto.getDeptIds())) { - dto.setDeptId(null); - } List list = baseMapper.scopeList(dto, dataScope); disposeList(list, dto); return list; @@ -237,17 +226,6 @@ public class WalletManageServiceImpl extends ServiceImpl scopePageList(Page page, WalletManageDto dto, DataScope dataScope) { - // 查询部门 - if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getDeptId())) { - List deptList = deptService.getDescendantList(dto.getDeptId()).getData(); - dto.setDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } - if (ObjectUtil.isNotEmpty(dto.getDeptIds())) { - dto.setDeptId(null); - } Page list = baseMapper.scopePageList(page, dto, dataScope); disposeList(list.getRecords(), dto); return list; @@ -266,6 +244,11 @@ public class WalletManageServiceImpl extends ServiceImpl scopeQbPageList(Page page, WalletManageDto dto, DataScope dataScope) { + return null; + } + @Override public void export(HttpServletResponse response, Page page, WalletManageDto dto) { String fileName = "file/账户余额.xlsx"; diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java index 88421782a..0237f6b48 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java @@ -165,17 +165,6 @@ public class WalletTransactionServiceImpl extends ServiceImpl scopePageList(Page page, WalletTransactionDto dto, DataScope dataScope) { - // 查询部门 - if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getDeptId())) { - List deptList = deptService.getDescendantList(dto.getDeptId()).getData(); - dto.setDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } - if (ObjectUtil.isNotEmpty(dto.getDeptIds())) { - dto.setDeptId(null); - } Page list = baseMapper.scopePageList(page, dto, dataScope); disposeList(list.getRecords(), dto); return list; @@ -183,17 +172,6 @@ public class WalletTransactionServiceImpl extends ServiceImpl scopeList(WalletTransactionDto dto, DataScope dataScope) { - // 查询部门 - if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getDeptId())) { - List deptList = deptService.getDescendantList(dto.getDeptId()).getData(); - dto.setDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } - if (ObjectUtil.isNotEmpty(dto.getDeptIds())) { - dto.setDeptId(null); - } List list = baseMapper.scopeList(dto, dataScope); disposeList(list, dto); return list; diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeImportServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeImportServiceImpl.java index de97a2ea3..4e43d7932 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeImportServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeImportServiceImpl.java @@ -94,17 +94,6 @@ public class WalletRechargeImportServiceImpl extends ServiceImpl scopePageList(Page page, WalletRechargeImportDto dto, DataScope dataScope) { - // 查询部门 - if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getUserDeptId())) { - List deptList = deptService.getDescendantList(dto.getUserDeptId()).getData(); - dto.setUserDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setUserDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } - if (ObjectUtil.isNotEmpty(dto.getUserDeptIds())) { - dto.setUserDeptId(null); - } Page list = baseMapper.scopePageList(page, dto, dataScope); disposeList(list.getRecords(), dto); return list; @@ -112,17 +101,6 @@ public class WalletRechargeImportServiceImpl extends ServiceImpl scopeList(WalletRechargeImportDto dto, DataScope dataScope) { - // 查询部门 - if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getUserDeptId())) { - List deptList = deptService.getDescendantList(dto.getUserDeptId()).getData(); - dto.setUserDeptId(null); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setUserDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); - } - } - if (ObjectUtil.isNotEmpty(dto.getUserDeptIds())) { - dto.setUserDeptId(null); - } List list = baseMapper.scopeList(dto, dataScope); disposeList(list, dto); return list; diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/dept/DeptUtil.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/dept/DeptUtil.java new file mode 100644 index 000000000..183387e6a --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/utils/dept/DeptUtil.java @@ -0,0 +1,36 @@ +package com.bsd.pjcloud.wallet.utils.dept; + +import cn.hutool.core.util.ObjectUtil; +import com.bsd.pjcloud.admin.api.entity.SysDept; +import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; +import com.bsd.pjcloud.admin.api.vo.base.BaseIsDeepDeptTreeInterface; +import com.bsd.pjcloud.admin.api.vo.base.BaseIsIncludeTreeInterface; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +@Component +@RequiredArgsConstructor +public class DeptUtil { + + private final RemoteDeptService deptService; + + public void disposeIsIncludeTreeDto(T dto) { + if (ObjectUtil.isEmpty(dto)) return; + } + + public void disposeIsDeepDeptTreeDto(T dto) { + if (ObjectUtil.isEmpty(dto)) return; + // 查询部门 + if (ObjectUtil.isNotEmpty(dto.getIsDeepDept()) && dto.getIsDeepDept() && ObjectUtil.isNotEmpty(dto.getDeptId())) { + List deptList = deptService.getDescendantList(dto.getDeptId()).getData(); + dto.setDeptId(null); + if (ObjectUtil.isNotEmpty(deptList)) { + dto.setDeptIds(deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList())); + } + } + } + +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeImportMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeImportMapper.xml index 3331804cd..24ac7129d 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeImportMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/recharge/WalletRechargeImportMapper.xml @@ -50,7 +50,17 @@ - and a.user_dept_id in + + + and a.user_dept_id IN + + + and a.user_dept_id NOT IN + + + and a.user_dept_id IN + + #{v} From de1448e9d2e05263f166f2eae9657bf5a721c04e Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 28 Feb 2025 14:34:04 +0800 Subject: [PATCH 3/7] =?UTF-8?q?feat:=E6=AF=8F=E6=9C=88=E9=92=B1=E5=8C=85?= =?UTF-8?q?=E4=BD=99=E9=A2=9D=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/api/dto/order/HardOrderDto.java | 5 - .../order/HardOrderTotalController.java | 2 +- .../hard/mapper/order/HardOrderMapper.java | 36 ++---- .../impl/order/HardOrderServiceImpl.java | 8 -- .../api/dto/WalletManageBalanceDto.java | 23 ++++ .../wallet/api/vo/WalletManageBalanceVo.java | 22 ++++ .../pjcloud/wallet/api/vo/WalletManageVo.java | 8 ++ .../controller/WalletManageController.java | 21 ++-- .../WalletRechargeImportController.java | 2 +- .../wallet/mapper/WalletManageMapper.java | 88 +++++++------- .../wallet/service/WalletManageService.java | 16 ++- .../service/impl/WalletManageServiceImpl.java | 108 +++++++++++++++++- .../impl/WalletTransactionServiceImpl.java | 2 +- .../main/resources/file/个人钱包记录明细.xlsx | Bin 0 -> 10004 bytes .../resources/mapper/WalletManageMapper.xml | 91 ++++++++++++++- 15 files changed, 324 insertions(+), 108 deletions(-) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletManageBalanceDto.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageBalanceVo.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/file/个人钱包记录明细.xlsx diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java index a677caac5..6ab0fe157 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java @@ -11,11 +11,6 @@ import java.util.List; @Data public class HardOrderDto extends HardOrderEntity implements BaseIsIncludeTreeInterface { - /** - * 订单部门id极其子部门id - */ - private Long deptIdIdDeepen; - private List deptIds; private Boolean isInclude = false; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java index be5acfdcd..3f49abf34 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java @@ -163,7 +163,7 @@ public class HardOrderTotalController { if (ObjectUtil.isNotEmpty(dto.getCreateTimeList())) { map.put("timeSpan", " 到 "); map.put("startTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[0], DatePattern.NORM_DATETIME_PATTERN)); - map.put("endTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[0], DatePattern.NORM_DATETIME_PATTERN)); + map.put("endTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[1], DatePattern.NORM_DATETIME_PATTERN)); } if (ObjectUtil.isNotEmpty(list)) { // 批量充值 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java index 3991e32e4..5bbbd35ba 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java @@ -24,12 +24,14 @@ import java.util.List; @Mapper public interface HardOrderMapper extends PjcloudBaseMapper { - default Page scopePageList(Page page, HardOrderDto dto) { + private LambdaQueryWrapper commonWrapper(HardOrderDto dto) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper() .eq(ObjectUtil.isNotEmpty(dto.getOrderType()), HardOrderEntity::getOrderType, dto.getOrderType()) .eq(ObjectUtil.isNotEmpty(dto.getPayType()), HardOrderEntity::getPayType, dto.getPayType()) .eq(ObjectUtil.isNotEmpty(dto.getOrderStatus()), HardOrderEntity::getOrderStatus, dto.getOrderStatus()) .eq(ObjectUtil.isNotEmpty(dto.getHourType()), HardOrderEntity::getHourType, dto.getHourType()) + .eq(ObjectUtil.isNotEmpty(dto.getDeptId()), HardOrderEntity::getDeptId, dto.getDeptId()) + .eq(ObjectUtil.isNotEmpty(dto.getUserId()), HardOrderEntity::getUserId, dto.getUserId()) .in(ObjectUtil.isNotEmpty(dto.getOrderIds()), HardOrderEntity::getId, dto.getOrderIds()) .in(ObjectUtil.isNotEmpty(dto.getUserIds()), HardOrderEntity::getUserId, dto.getUserIds()) .in(ObjectUtil.isNotEmpty(dto.getHardIds()), HardOrderEntity::getHardId, dto.getHardIds()) @@ -48,7 +50,11 @@ public interface HardOrderMapper extends PjcloudBaseMapper { ObjectUtil.isNotEmpty(dto.getPayTimeList()) ? dto.getPayTimeList()[1] : null ) .orderByDesc(HardOrderEntity::getCreateTime); - Page list = selectPageByScope(page, wrapper, DataScope.of()); + return wrapper; + } + + default Page scopePageList(Page page, HardOrderDto dto) { + Page list = selectPageByScope(page, commonWrapper(dto), DataScope.of()); list.setRecords(BeanUtils.toBean(list.getRecords(), HardOrderVo.class)); return list; } @@ -60,6 +66,7 @@ public interface HardOrderMapper extends PjcloudBaseMapper { .selectAs(HardManagerEntity::getType, HardOrderVo::getHardType) .leftJoin(HardManagerEntity.class, HardManagerEntity::getId, HardOrderEntity::getHardId) .eqIfExists(HardOrderEntity::getUserId, dto.getUserId()) + .eqIfExists(HardOrderEntity::getDeptId, dto.getDeptId()) .eqIfExists(HardOrderEntity::getOrderType, dto.getOrderType()) .eqIfExists(HardOrderEntity::getPayType, dto.getPayType()) .eqIfExists(HardOrderEntity::getOrderStatus, dto.getOrderStatus()) @@ -79,30 +86,7 @@ public interface HardOrderMapper extends PjcloudBaseMapper { } default List list(HardOrderDto dto) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper() - .eq(ObjectUtil.isNotEmpty(dto.getOrderType()), HardOrderEntity::getOrderType, dto.getOrderType()) - .eq(ObjectUtil.isNotEmpty(dto.getPayType()), HardOrderEntity::getPayType, dto.getPayType()) - .eq(ObjectUtil.isNotEmpty(dto.getOrderStatus()), HardOrderEntity::getOrderStatus, dto.getOrderStatus()) - .eq(ObjectUtil.isNotEmpty(dto.getHourType()), HardOrderEntity::getHourType, dto.getHourType()) - .in(ObjectUtil.isNotEmpty(dto.getOrderIds()), HardOrderEntity::getId, dto.getOrderIds()) - .in(ObjectUtil.isNotEmpty(dto.getUserIds()), HardOrderEntity::getUserId, dto.getUserIds()) - .in(ObjectUtil.isNotEmpty(dto.getHardIds()), HardOrderEntity::getHardId, dto.getHardIds()) - .in(ObjectUtil.isNotEmpty(dto.getMchIds()), HardOrderEntity::getMerchantId, dto.getMchIds()) - .in(ObjectUtil.isNotEmpty(dto.getUserDeptIds()), HardOrderEntity::getDeptId, dto.getUserDeptIds()) - .between( - ObjectUtil.isNotEmpty(dto.getCreateTimeList()), - HardOrderEntity::getCreateTime, - ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[0] : null, - ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[1] : null - ) - .between( - ObjectUtil.isNotEmpty(dto.getPayTimeList()), - HardOrderEntity::getPayTime, - ObjectUtil.isNotEmpty(dto.getPayTimeList()) ? dto.getPayTimeList()[0] : null, - ObjectUtil.isNotEmpty(dto.getPayTimeList()) ? dto.getPayTimeList()[1] : null - ) - .orderByDesc(HardOrderEntity::getCreateTime); - return selectListByScope(wrapper, DataScope.of()); + return selectListByScope(commonWrapper(dto), DataScope.of()); } Page pageListSb(Page page, @Param("dto") HardOrderDto dto); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index e5843ab36..cc82de11b 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -116,14 +116,6 @@ public class HardOrderServiceImpl extends ServiceImpl scopePageList(Page page, HardOrderDto dto) { - if (ObjectUtil.isNotEmpty(dto.getDeptIdIdDeepen())) { - List deptList = deptService.getDescendantList(dto.getDeptIdIdDeepen()).getData(); - if (ObjectUtil.isNotEmpty(deptList)) { - dto.setUserDeptIds(deptList.stream().map(SysDept::getDeptId).toList()); - } else { - dto.setUserDeptIds(List.of(-1L)); - } - } Page list = baseMapper.scopePageList(page, dto); if (ObjectUtil.isNotEmpty(list.getRecords())) { // 用户 diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletManageBalanceDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletManageBalanceDto.java new file mode 100644 index 000000000..9457a596c --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletManageBalanceDto.java @@ -0,0 +1,23 @@ +package com.bsd.pjcloud.wallet.api.dto; + +import com.bsd.pjcloud.admin.api.vo.base.BaseIsIncludeTreeInterface; +import lombok.Data; + +import java.util.List; + +@Data +public class WalletManageBalanceDto implements BaseIsIncludeTreeInterface { + + private String walletRecordMonth; + + private Long userId; + + private List userIds; + + private Long walletTypeId; + + private Boolean isInclude; + + private List deptIds; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageBalanceVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageBalanceVo.java new file mode 100644 index 000000000..e6cbe23a9 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageBalanceVo.java @@ -0,0 +1,22 @@ +package com.bsd.pjcloud.wallet.api.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class WalletManageBalanceVo { + + private Long userId; + + private Long walletId; + + private Long walletTypeId; + + private String walletTypeName; + + private Integer balance; + + private LocalDateTime createTime; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageVo.java index 3965ec476..618419e43 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageVo.java @@ -6,6 +6,9 @@ import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.vo.base.BaseWalletTypeInterface; import lombok.Data; +import java.time.LocalDateTime; +import java.util.List; + @Data public class WalletManageVo extends WalletManageEntity implements BaseUserInterface, BaseDeptInterface, BaseWalletTypeInterface { @@ -39,4 +42,9 @@ public class WalletManageVo extends WalletManageEntity implements BaseUserInterf * 导出相关 */ private Long lineNumber; + + /** + * 最后充值时间 + */ + private LocalDateTime lastTopUpTime; } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java index fb9b518ff..696e2207a 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java @@ -13,6 +13,7 @@ import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto; import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; @@ -148,6 +149,13 @@ public class WalletManageController { return R.ok(walletManageService.scopePageList(page, dto, DataScope.of())); } + @Operation(summary = "钱包记录分页", description = "钱包记录分页") + @PostMapping("/page-join-qb") + public R pageJoinQb(@ParameterObject Page page, @RequestBody WalletManageBalanceDto dto) { + DataScope dataScope = new DataScope(); + return R.ok(walletManageService.scopeQbPage(page, dto, dataScope)); + } + @Operation(summary = "通过id查询", description = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('wallet_walletManage_view')") @@ -179,16 +187,15 @@ public class WalletManageController { return R.ok(walletManageService.removeBatchByIds(CollUtil.toList(ids))); } - @Operation(summary = "钱包记录分页", description = "钱包记录分页") - @PostMapping("/page-qb") - public R pageQb(@ParameterObject Page page, @RequestBody WalletManageDto dto) { - DataScope dataScope = new DataScope(); - return R.ok(walletManageService.scopeQbPageList(page, dto, dataScope)); - } - @PostMapping("/export") @PreAuthorize("@pms.hasPermission('wallet_walletManage_export')") public void export(HttpServletResponse response, @ParameterObject Page page, @RequestBody WalletManageDto dto) { walletManageService.export(response, page, dto); } + + @PostMapping("/export-qb") + // @PreAuthorize("@pms.hasPermission('wallet_walletManage_export')") + public void exportQb(HttpServletResponse response, @ParameterObject Page page, @RequestBody WalletManageBalanceDto dto) { + walletManageService.exportQb(response, page, dto); + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeImportController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeImportController.java index c01b1db70..f5f0f08e8 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeImportController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeImportController.java @@ -125,7 +125,7 @@ public class WalletRechargeImportController { if (ObjectUtil.isNotEmpty(dto.getCreateTimeList())) { map.put("timeSpan", " 到 "); map.put("startTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[0], DatePattern.NORM_DATETIME_PATTERN)); - map.put("endTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[0], DatePattern.NORM_DATETIME_PATTERN)); + map.put("endTime", LocalDateTimeUtil.format(dto.getCreateTimeList()[1], DatePattern.NORM_DATETIME_PATTERN)); } if (ObjectUtil.isNotEmpty(list)) { BigDecimal priceStrSum = BigDecimal.ZERO; diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletManageMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletManageMapper.java index a4c1b34a0..6f7afb967 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletManageMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletManageMapper.java @@ -7,17 +7,48 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto; import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletManageBalanceVo; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface WalletManageMapper extends PjcloudBaseMapper { + + private LambdaQueryWrapper commonQuery(WalletManageDto dto) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .eq(ObjectUtil.isNotEmpty(dto.getUserId()), WalletManageEntity::getUserId, dto.getUserId()) + .eq(ObjectUtil.isNotEmpty(dto.getDeptId()), WalletManageEntity::getDeptId, dto.getDeptId()) + .eq(ObjectUtil.isNotEmpty(dto.getWalletTypeId()), WalletManageEntity::getWalletTypeId, dto.getWalletTypeId()) + .eq(ObjectUtil.isNotEmpty(dto.getIsFreeze()), WalletManageEntity::getIsFreeze, dto.getIsFreeze()) + .in(ObjectUtil.isNotEmpty(dto.getWalletIds()), WalletManageEntity::getId, dto.getWalletIds()) + .in(ObjectUtil.isNotEmpty(dto.getUserIds()), WalletManageEntity::getUserId, dto.getUserIds()) + .between( + ObjectUtil.isNotEmpty(dto.getCreateTimeList()), + WalletManageEntity::getCreateTime, + ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[0] : null, + ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[1] : null + ) + .orderByDesc(WalletManageEntity::getCreateTime); + if (ObjectUtil.isNotEmpty(dto.getIsInclude())) { + if (dto.getIsInclude()) { + wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); + } else { + wrapper.notIn(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); + } + } else { + wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); + } + return wrapper; + } + /** * 当消费时候, 更新钱包 * @@ -102,61 +133,20 @@ public interface WalletManageMapper extends PjcloudBaseMapper scopePageList(Page page, WalletManageDto dto, DataScope dataScope) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper() - .eq(ObjectUtil.isNotEmpty(dto.getUserId()), WalletManageEntity::getUserId, dto.getUserId()) - .eq(ObjectUtil.isNotEmpty(dto.getDeptId()), WalletManageEntity::getDeptId, dto.getDeptId()) - .eq(ObjectUtil.isNotEmpty(dto.getWalletTypeId()), WalletManageEntity::getWalletTypeId, dto.getWalletTypeId()) - .eq(ObjectUtil.isNotEmpty(dto.getIsFreeze()), WalletManageEntity::getIsFreeze, dto.getIsFreeze()) - .in(ObjectUtil.isNotEmpty(dto.getWalletIds()), WalletManageEntity::getId, dto.getWalletIds()) - .in(ObjectUtil.isNotEmpty(dto.getUserIds()), WalletManageEntity::getUserId, dto.getUserIds()) - .between( - ObjectUtil.isNotEmpty(dto.getCreateTimeList()), - WalletManageEntity::getCreateTime, - ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[0] : null, - ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[1] : null - ) - .orderByDesc(WalletManageEntity::getCreateTime); - if (ObjectUtil.isNotEmpty(dto.getIsInclude())) { - if (dto.getIsInclude()) { - wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); - } else { - wrapper.notIn(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); - } - } else { - wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); - } - Page list = selectPageByScope(page, wrapper, dataScope); + default Page scopePage(Page page, WalletManageDto dto, DataScope dataScope) { + Page list = selectPageByScope(page, commonQuery(dto), dataScope); list.setRecords(BeanUtils.toBean(list.getRecords(), WalletManageVo.class)); return list; } default List scopeList(WalletManageDto dto, DataScope dataScope) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper() - .eq(ObjectUtil.isNotEmpty(dto.getUserId()), WalletManageEntity::getUserId, dto.getUserId()) - .eq(ObjectUtil.isNotEmpty(dto.getDeptId()), WalletManageEntity::getDeptId, dto.getDeptId()) - .eq(ObjectUtil.isNotEmpty(dto.getWalletTypeId()), WalletManageEntity::getWalletTypeId, dto.getWalletTypeId()) - .eq(ObjectUtil.isNotEmpty(dto.getIsFreeze()), WalletManageEntity::getIsFreeze, dto.getIsFreeze()) - .in(ObjectUtil.isNotEmpty(dto.getWalletIds()), WalletManageEntity::getId, dto.getWalletIds()) - .in(ObjectUtil.isNotEmpty(dto.getUserIds()), WalletManageEntity::getUserId, dto.getUserIds()) - .between( - ObjectUtil.isNotEmpty(dto.getCreateTimeList()), - WalletManageEntity::getCreateTime, - ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[0] : null, - ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[1] : null - ) - .orderByDesc(WalletManageEntity::getCreateTime); - if (ObjectUtil.isNotEmpty(dto.getIsInclude())) { - if (dto.getIsInclude()) { - wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); - } else { - wrapper.notIn(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); - } - } else { - wrapper.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), WalletManageEntity::getDeptId, dto.getDeptIds()); - } - List list = selectListByScope(wrapper, dataScope); + List list = selectListByScope(commonQuery(dto), dataScope); return BeanUtils.toBean(list, WalletManageVo.class); } + Page scopeUserPage(Page page, @Param("dto") WalletManageDto dto, @Param("dataScope") DataScope dataScope); + + List scopeUserList(@Param("dto") WalletManageDto dto, @Param("dataScope") DataScope dataScope); + + List selectBalance(@Param("dto") WalletManageBalanceDto walletDto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletManageService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletManageService.java index 722f6b3e8..0188713ce 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletManageService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletManageService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto; import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; @@ -82,10 +83,12 @@ public interface WalletManageService extends IService { Page scopePageList(Page page, WalletManageDto dto, DataScope dataScope); - Page scopeQbPageList(Page page, WalletManageDto dto, DataScope dataScope); - List scopeList(WalletManageDto dto, DataScope dataScope); + Page scopeQbPage(Page page, WalletManageBalanceDto dto, DataScope dataScope); + + List scopeQbList(WalletManageBalanceDto dto, DataScope dataScope); + WalletManageVo join(Long user, Long walletId); /** @@ -102,4 +105,13 @@ public interface WalletManageService extends IService { * @param dto */ void export(HttpServletResponse response, Page page, WalletManageDto dto); + + /** + * 钱包记录导出 + * + * @param response + * @param page + * @param dto + */ + void exportQb(HttpServletResponse response, Page page, WalletManageBalanceDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java index 5cf51fa49..1fd34f771 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java @@ -32,11 +32,13 @@ import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; import com.bsd.pjcloud.hard.api.dto.code.QRCodeDto; import com.bsd.pjcloud.hard.api.dto.code.QRCodeExtraDto; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto; import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.dto.WalletTypeDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; +import com.bsd.pjcloud.wallet.api.vo.WalletManageBalanceVo; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletSettingVo; import com.bsd.pjcloud.wallet.mapper.WalletManageMapper; @@ -59,7 +61,6 @@ import java.math.RoundingMode; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; -import java.util.stream.Collectors; /** * 钱包管理 @@ -226,7 +227,7 @@ public class WalletManageServiceImpl extends ServiceImpl scopePageList(Page page, WalletManageDto dto, DataScope dataScope) { - Page list = baseMapper.scopePageList(page, dto, dataScope); + Page list = baseMapper.scopePage(page, dto, dataScope); disposeList(list.getRecords(), dto); return list; } @@ -245,8 +246,75 @@ public class WalletManageServiceImpl extends ServiceImpl scopeQbPageList(Page page, WalletManageDto dto, DataScope dataScope) { - return null; + public Page scopeQbPage(Page page, WalletManageBalanceDto dto, DataScope dataScope) { + WalletManageDto walletDto = BeanUtils.toBean(dto, WalletManageDto.class); + Page walletPage = baseMapper.scopePage(page, walletDto, dataScope); + if (walletPage.getTotal() == 0) return walletPage; + walletPage.getRecords().forEach(v -> { + v.setBalance(0); + v.setTotalRecharge(0); + v.setTotalExpense(0); + }); + List userIds = walletPage.getRecords().stream().map(WalletManageVo::getUserId).distinct().toList(); + // 查询钱包类表 + List walletTypeList = walletTypeService.list(); + if (ObjectUtil.isEmpty(walletTypeList)) return walletPage; + // 查询所有钱包类型的流水记录 + for (WalletTypeEntity i : walletTypeList) { + dto.setWalletTypeId(i.getId()); + if (ObjectUtil.isEmpty(dto.getUserId())) { + dto.setUserIds(userIds); + } + List itemList = baseMapper.selectBalance(dto); + if (ObjectUtil.isEmpty(itemList)) continue; + for (WalletManageBalanceVo j : itemList) { + j.setWalletTypeName(i.getName()); + walletPage.getRecords().stream().filter(v -> ObjectUtil.equals(v.getUserId(), j.getUserId())).findFirst().ifPresent(v -> { + if (ObjectUtil.isNotEmpty(j.getBalance())) { + v.setBalance(j.getBalance()); + v.setLastTopUpTime(j.getCreateTime()); + } + }); + } + } + disposeList(walletPage.getRecords(), walletDto); + return walletPage; + } + + @Override + public List scopeQbList(WalletManageBalanceDto dto, DataScope dataScope) { + WalletManageDto walletDto = BeanUtils.toBean(dto, WalletManageDto.class); + List walletList = baseMapper.scopeList(walletDto, dataScope); + if (ObjectUtil.isEmpty(walletList)) return walletList; + walletList.forEach(v -> { + v.setBalance(0); + v.setTotalRecharge(0); + v.setTotalExpense(0); + }); + List userIds = walletList.stream().map(WalletManageVo::getUserId).distinct().toList(); + // 查询钱包类表 + List walletTypeList = walletTypeService.list(); + if (ObjectUtil.isEmpty(walletTypeList)) return walletList; + // 查询所有钱包类型的流水记录 + for (WalletTypeEntity i : walletTypeList) { + dto.setWalletTypeId(i.getId()); + if (ObjectUtil.isEmpty(dto.getUserId())) { + dto.setUserIds(userIds); + } + List itemList = baseMapper.selectBalance(dto); + if (ObjectUtil.isEmpty(itemList)) continue; + for (WalletManageBalanceVo j : itemList) { + j.setWalletTypeName(i.getName()); + walletList.stream().filter(v -> ObjectUtil.equals(v.getUserId(), j.getUserId())).findFirst().ifPresent(v -> { + if (ObjectUtil.isNotEmpty(j.getBalance())) { + v.setBalance(j.getBalance()); + v.setLastTopUpTime(j.getCreateTime()); + } + }); + } + } + disposeList(walletList, walletDto); + return walletList; } @Override @@ -260,7 +328,7 @@ public class WalletManageServiceImpl extends ServiceImpl list = scopeQbList(dto, DataScope.of()); + try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream(fileName)).build()) { + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); + Map map = new HashMap(); + map.put("walletRecordMonth", dto.getWalletRecordMonth()); + if (ObjectUtil.isNotEmpty(list)) { + Long lineNumber = 1L; + BigDecimal balanceSum = BigDecimal.ZERO; + for (WalletManageVo v : list) { + v.setLineNumber(lineNumber); + lineNumber++; + if (ObjectUtil.isNotEmpty(v.getBalance())) { + balanceSum = balanceSum.add(BigDecimal.valueOf(v.getBalance())); + v.setBalance(BigDecimal.valueOf(v.getBalance()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue()); + } + } + map.put("balanceSum", balanceSum.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString()); + } + excelWriter.fill(map, writeSheet); + excelWriter.fill(list, fillConfig, writeSheet); + } catch (IOException e) { + e.printStackTrace(); + log.error("|{}|导入错误,dto:|{}|,fileName:|{}|,error:|{}|", TAG, JSON.toJSONString(dto), fileName, e.getMessage()); + } + } + private void disposeList(List list, WalletManageDto dto) { if (ObjectUtil.isNotEmpty(list)) { // 用户 diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java index 0237f6b48..b03e31605 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletTransactionServiceImpl.java @@ -186,7 +186,7 @@ public class WalletTransactionServiceImpl extends ServiceImplXVLg@Kj6tgV%`9fK@L3=Px)`%_HO zIYNvY91M&B0t^iKpJKY!*7VL6=4sJglD&**qPIRz$kiDVZ-T@nSP+BuO`8i(^&hxj z8^=cRjD)Ri_WQ3BHeOnxJt9tH)aH~gx80uZ>}qx=wA2Ie?=s7VOt{}sg6Ej$jgc43 z?erao#dv*ItgeE#Z4MMj*t`qET;)D51Vmx!3duAC(d*L|($zAL=9p*8Yph9zm8>yp z%&B)ZDLK($8HAE@8CD82qARl8qKgmomi9aaC@WvPZ{#nxz|!6gH@&3^uF6y8!bXv( zYTq<>-Af?)w(9?d4|Y{|)?4UEV)C}?-X}%_JM-PB2}N5xw7#tsZi23*rU1jLcKYgj zLOy~FuFwZ(-2Ng5?xWYyF9SI7aK3p(lfVc1<@G~%H`C`1@Ow>Dop&;BMsN->)MlBx zZ;R1>`(bhc_dBk;i0^~ngK+%-!WHG8xawQk8a@N-AG0Re!-&;)_F^q-yB(M^!z8q{ zK?v>B0k_`?y4$d4ZSkWt5=aROd-KyH<}Yp5>dz*&>n{_D%W2%ZjTaAh_wCh62vu` zr5?Rvz>x-_ZIFUemY1|ien9{33=~S<4N8zRkU`FP{hKo!?Ch;9p52ibJpt@tL>oBs zc@iFM8;dO0Vp)t}TM^))ENqc9nJ$|oC6g!+eq0+%RN!%*T5@ym+4EQh*1La#6C zE3*|BLiCmmw{)u;*_hrU7Y9_9D_igyli50>VbF&jl^n0`%VEtSAn*t+;GL%7V!|#M zF&J0~6VhbZFAgr=&mKpeHn*dEvLvU96Gq#DVvBW9hu*?`neGzm`;Df0W^8EOk}xu7 zj;{LM9g6+uYm1j_#fd6PVOw71*soy84Lgb1Us;DR(NV2c&OG4zTwEmzWttwSba*s= zop&_V+aXupZ69jg!b)Azp7vmJ_GyTgA61HSZDK};pM*zy!<8LWMyk+ zXKZL_|7R!?eX?7=2YKia1`G`AKV*NZFg?5KlhQ~;3M1Nz${|0|S)f>q1i9Q`p-a6y zP56W6o81^y$izjN#QSgWmmuMy`t0?)E;jC#6O#Dbx09TpiyA5QQ11a3nL5N9eE{-~ zkCtZyK?SUIsL8<)dYAAaJoJ1Y6IF!xN=UqJWV2+MxJ<&1|GCj+BPYZYhO5i5l0ZiGs_Q{y;>_36^qg zi^e*@BxYK1@nf+fAI++!CK+WiRHh0=o@jf1a!lW{^11|cs7p6fX#Q2YA1irA_JXAd zazoe}9<{^uu}Sk2I5r~^Ts{1S6vDB;GkY%stpD33)G%VhNAtE-DoLhcoRn8l!bX5%iDa$W>}|51@w$1 zA}(Qt^ctAI{6O3jYkh5NnVjy-;BS8j{a&Rti9b> zB}`Q(Z)wbVNADGM^i;a=or{BT^Q>qSG0xbHQC$Q?UQ~0*p$L4Ra zx7hXfuo4r=<0X2GcVKZx6rHV~+Tls??flGgzD@2g`q1O++xI2bW0&xe9M%p!K<6oh zjv+}FU@hUs$*?&__?W$ZXHO+YBZn28HWAF;9L_;&RMa7s=75LNycWaTtB{O9 zE-8H#V!^q2x3dqa`;Hvh_CC}jd2O{)89NOeanV^GC3r&v`D;`iPp6IgcU?}@{y4Cd zgwzGj__#7=@POTHV3Sjr@jxK9kRx;VtGqKgQc|A%JEiY?DvlM3lQOy@JJ1?EmYGlR zE!{+^mIquetn?IRbGX;L?+>&g3pEF>HNG2ls69-Bp+QxCP7OV%sajh-V}maRALi$F zzg2HLN%rS>w5qUKH7oQ)s1R&=dcgU}xG#i8*9yIJ*N@Zw-paz^2;;r4t-Br4TJh=i zAstAHiR{20Ny~z@p(S)CJ_;@eM#i~Cj45B~qn0orxb7ws$W}G#l_GEFG3}$Y7u&9Wajqtf0Mh#y2tI|kcwq1<3-2Q)q+*W z#{=kYK6Pf-`|D}`bbgQfu|3Zp=e^)-TgK+yVx(Q&Ey3?v-_Uy39dyo*ULo931$I??ifU;(! zcxRH%>w^`FRX*bJsIb9#>fF33a0wy?J4`|GI`otrw^hEJa;4kzs&GFf??T^4SOuD} zxk;()-W^*%R8#0j^=Iwh4c68ibVO$p1#rrQAG$;nR|t zN}gxvT}Z)lI=I6&TKa%LegLIg#!Pe^|DJ-BSE2PQ_Uee^z}i-ClgmrxUf0*B{FGC? ztUxRMdGsT?!#1G~72_w*ipi9l%cZ%UJTza)k{+Fpo3ndo23r?yLX`N!Tz!E;8J#a! zGp)gVhh?<6ZCvn2^zI5BnWc0#h$Cvl2a+EB2A#2T5M|ETw7G&sHn>sW_d_k?Tvtvv zbWf|<_I5wcs+APs8qpI#4DC4A$wl;p3-0b4nYqMLub97bROuD;{=>=I?E+$gKo;?vU8+=eQaRe_lrDzE!(cQqAnaUAMEytTFvLJOpR=TeNh zFf-(ylC+8@RRU3bE}v8AWthJda@4<5G_#ZE7$K!W8fIG~u|K#^K(2?jnaw@3?_%6) zQob}2r+%eK8KR2Cs-Ex^-Y05@MoQL*zbP~K-mMI%Z@D(6e8UvAd?tS8DW?fP$&Z=YgiyaZKRRSL94mU z4GMlfA>A5+g83}f!jw&%=J~>ZqOSX1F-04%ly(8}GjCYWYb&V_k1u^t&1y}ly#OfZ zAqDYbETrek)o9g*-^*C@g&fD`e3}C;ZA5CY(DD1wzT%bVwdUq@d}3m3M>h-b!U0g> zY;ejW%_0`hNRO09+s)5AOt8yGvxwL&u+S;VX-${u%_4@fSE7!Dvbp%q5cf{fkG;$Q z-WG4yW2!gU%22jILA8cut4(o$gxq=jNX;Q>H_d#@Lg@H~HS}^dfKiEC*t{h^jhPd~a2QkG(9>W}7S}N{g|Y&e>=-u?;f-;jsFQO@0+8i_)lz7(qLNlJ zbN*W3A)*m(ov79Q9wCO8S0l~m?wt{ZVB(TjMeZNf3+4^QYg{@FF3%7@L+qBrFg{Tv z23SiAC(lSr!44W$Hl5MhlGD_!9(hzu2OnMUZ;)`CUA43X&`S$Hy?pfh@*arafmqm3 zQ0x+?ob%mxKRZ@8(&=<_R%?+UqjpAj-pXlaMlkt$bz&=JgbDpLtU%6QPGu|rURcR9 zRDHtci0Y(pH)uqMDwFKo%$E^)okdC)R(+c+!9Wm(rztM&+d^sGNf)v(-0RWf(qbqC z6C10Un&q%~MZ2@F7p^)1Yqm7t-#Pr!HDm5y{O%hxjy}#dkZ<}y`{-AH?|${HtjwO> z60RU;mBNVpF{AcL=ROT9W)d2$PzX*vFTc2&b}60wRfG<@xj{;_>7r+b_oU?^>xKRD z{kPN8mN&B;d&MIB0@UQrUTI0;DCdd>VHpsQ2T`gtVR899IeF{I>mOwA$laeTSK#lj zw1OxMP_5C|g^m^}MDkuJDvpUDEw^q9DJ$Ztqz4s~O-iAIHB%2Q*H?&(Vh;#IYs(A) zE>rW6Lu-q?jsU@aF{ab))T(9HjpJ%?1A-{o4&Mc6rf-{i3v(r{Sn>e~=iQCj{&QZT z(dLJRx_K_w7&mya=c3y=tTF{RgPBSd7vrLITS>nD}s^8GxL#~Cgx2_Ve zIvJ3!v^eFb>xX6YCxi@cDA>669Mzf;vMI2*2Bf2Hz*q@^z zJ~&ntI8akY*{rT^nM%8CM$x{~JXB$`xJR%5!)O~Fm?uj-SEHzCka&~Q$3^qG#{2MX zvK#E2FndQRdBQ%Bkq`oN#uNSg)`nuI`v>89PSXG?xlint$ofgoX=O@K+ZsW;hfKZ? zM+@bu)PU8^x3RgNn-Nu?N4w142}gftGVsJ!SR|srUR(yZjTe zV>Dv=z-B{Emg#hJC7gsK^r1w=<18+&`C|8P0m>)Jxk)AO0-6oqg_R9gF_ma8{J2bD z|8QDmsL9WYr~-izyP&)?=}>@Mw`gu{9Cp26=w>Rlo)Uc$=77n^4O6%9h3RSo5hc7V zS+kh#f?uk7XVg`(3~yGhb1)2>o8nIJD9iy*#9`}g0JZl+Z{SsPY3inj?hH*q=gB*!rOEUuJ*}I4?t7ZaNh5P z?!B^U5?)CXWCP?%zi8|E)Jwy~4qm-)7%mQYI?Iu7=fU>i9U4s0j~&f^xZHlJ$BSG@ zY1E^7D#Q!pzQv*D0Bmp@UmO#+d-;h*a(< z$OF?vE5m^zfYQ4Rv(<=PExa_7P0d8^D>u%=2q|+81J_seAiMNko6nU;%H-iTMtoU7 z0Ye2d(=MMOCo3m})??9l8j!nR>qNby6?0 zEXf*{BsoJ{AJUFaDwC|zHQL5RHG2CIpxeJv@@Qt)vd+kIi2%n!(h8nE~@|%L*fU_|E9^CPDd_C6qS8#m3g3&WgTNyA&o-$33vr857id;bJSI z7Yh}i`)HAUnMgTa_%ua$D4wUBPbnIrCFjFRBtlg!loAN(PVCoyps#N{J|OrKE+A*{ zG*uL8EZpbqqoi1oQ(XKqIo|~JQiJb^UwXs7t?Dc?GundCAhH1>K-dO_{c~PwDLbgg z+yIt&aZt9kI9%B6WeO02$2Hmj3tqimF}X0Uh!g^-U{bx9EKk;F%Zj8td?7T)b(B|` zZ+*?XVpQ%N)AYXL1-Bq%Pjz|D>adfT;5%_aH;;(7qr15C820&&!P8QvD_+#bpsbZ^&IbCY;`pE~gENTTc z6ysRx8IHZJ_6=j_Na8Y@#bO%F944u*@}zz#d|$C-WZig_f?_N}y93%lzrH&(RyCH4 z?k_9JCWtk%X8BB}^c>rvOK&x`b3~}KF{HLdJB8I+u?mQtIch>^_H~)y zO1yD2CQ2s#rc&V(rDeH3urdb|s8bcA`Iy+KGfDFlC}oxFsoNO4W2t~+gxV=-z6n~7 z&-_$B9EUk~$p+?OI2CPjB%p<}vh7-#@?moVB? zG4CT38_YS)rHoPwc;-{vsKKpb=J79v$8TS9e#(j{OBtSA(BSx#wWm@$%$Xo~qj!UQ z(Gu>XNs(ptww^ll!-PymYY*jWMheEUC&dE7IR?Pl`nK;YOlZc_@p0SQoq;SDHnXj+ zf5*yDtldKeMd$~9Pse`RWd=N+CO?Gpy9;0aV-7tD1xE5h4`vl-8IAS5MI z+}*KCVoc${WafLGPXVt`MU8)WoE>lMjcD`U>}2w>apnQfLpT-%yW;t`USl8RP~WLy+9BZtKnNhv;P zd=fy08ZbrzFHejowjShX^ED`wvSvP@AyZB(=_; zgP_$gW)F7wPZ`c02QULaSYx3A@-ZSaV0K)@2Zh9G`MBVQzZysR8*{dNoyMFAZ+)12#usNzu3>Hl28rac~HqMjvEXZfDa3SikAJnaDL~l z8|o$fCJiaFh&^5f_YtwSS#!%1& zau>k`&^NtdcXu&+a7(1b9)fp3Li0-PWP>LH5Y|wE*^Kr8U7YjZk*SCFfj^98Smj_MvPR@a#lOS zUf&FpYFeX*l0}_m^z7NAuJEEynIrF+uYvCm#-4$nrs7fntr@A?t*=BB-PO9PGVi*7 zWD#+f#h1FsBE0xeZWaf}7ak;|&?CHH7Ej2&88XMXc5BEk+d=N~rV`K{^1Pi)R+`T#V()Z#MR_hZgwC?ju_8NPp_-3Mb4ovM z#Wy!BoesB|0_8pxS9dgMub9lW%(%7{oHo=p=MRrH=+X*?FE^~OI&kV8Zvv&Q2p8kM z^L$YZ?)=3fZFXL5U}7QeY22J-auU?^qdQrsx)=br0JfS3(Fdc;=@w%H=Q%Ia*`19E z#B>g#FP$~fRR|Ek9LifFxY!`DonfQIh2!9(qs!Uy^xKa6*a)Cd^Yynv$hS;%b{xel zoZMDSHKuQhB`X%nPp@3Vi<>*9CvR|8EK3?<(dLaab@Fl4Ig06D`HAQ1(DP(Dr&84P zb8Jf{ZoYf%=&>4kn22?f#8gQk4A64zMUmX~*cQE`dmVy?_mz_n)mu-JCm2PHbLJJ| z7;EW-_%h~&iaUBuFCrP^jKho-s zCAr%hwx-3hGshCiX=A0C*;9h;xYg6u^!(W!*E0(+iifQD@SFhKc0%Ez61Go|ItZHj zld|ka7>@=aTV(GUyx$j`)l-iKmh2N#G0Vf$brG)xEz;frl1`q$|L-(6H0WlZxfWG{n88*nRLIKvgU5kg1bWWo+&?~)yF~3N5E>(v0d)m-C1?TN4&Ic2GT{* zx*MwH@KW!apYJYD+#)?`w3fU4By->!s#ue$14UVZj5lne1zi04B);rzma>+^mv8$s z2xO&s`c|of+*+V*IQ?7it*nZV#@Bh1a)c*XXtouj(;UpB(8GM)bLKmcuSKDuxh8BK z_(sm0Bm+y!jOdU=HT@G6LY8+lJ8Wo^1~g>|L&!46?ggf&_qw~Hr!;Cu#JT;*vX7of znFo5e<6ZdJw8d>N=}MgbZ!G^+GWc(B4w^669)nzPcmGaE{0m)a z(;h}-|6Bi6!O`~kw0L>RZF5P$(k!o6RDXOh9o*Q}KtqK!z=kLn*9yuCy6tvMd}(EZ zGl)Uz3rs~OwIuSsbYtP|x&~KR0(2?y$`UK9dMi%j@r1$aXc5PY+)k!} z4^%^(cx>o^?1?n?Tsgb=qFA{U-_vJwcw4>_ zGsKx>#5Dl^AmB21OO=?*DT49xcwnaE_n-K}3w65>pmYrqsI>B2Qq~Z*va~m}wAWU2 zu{N~RdQRDt#f`{7Frfw9lDGHdYOp9+>xSv-Y#0`iZbE*!>14f%Pxm>$NvG0*5cCd9 zk>EbL?|6D_LwrkP7D6WSWp$=h`&t!T#x-xH)QB)P;W8aP(NCe<8HP;*vU=+L!IV)A zrqibwf3{SDipM&l8l0x`5*%+#%A=NeigDZ-*_Pg@)5@*w4SgGMT|P-2i5-upOOaNJ zI$h<;ZHv@LP?^UPqrNmb7&$DSI9j3I{?JR_5)NHymu-IEi^IV8BFE2h*QvAqG(0<4 zU62WbsSO^;-gs$?=OG{yP~4#uF@H5(6fb~-07OxotS=S#)Yu8tO z_D4{u9~=VhXFBs2qvcP}fSdyc4n_nzY6JeOpMDMS-)q*-5$9KXCdUjC{2hOOH~MD; zde-@6^!P8GpDX5n8GBxmzuL30=k^cM&hPgAr0qNl|FTE%PqlxMc>aXwPjbrN+Mb|S z`Y)sZrmFm@{wJN{Z*@da^73!>zsME;>!F`%1HanyLmNW<3^)Hv;dhkKi2f0u{+#Ha zf$Z7NFO=T=Q|&*(+Mnb6nK%D?95fKA;lE|k{~Q7BkDTA%BP4^^LC+)nl>z+!fA$R! zQ39m;@2c - - + @@ -21,6 +20,92 @@ - + + + select a.id, + a.user_id, + a.wallet_type_id, + a.dept_id, + a.card_number, + a.balance, + a.total_expense, + a.total_recharge, + a.freeze_price, + a.is_freeze, + a.active_bind_time, + a.active_bind_status, + a.create_by, + a.create_time, + a.update_by, + a.update_time, + a.del_flag, + a.tenant_id, + + + + + + + + + + select a.user_id from wallet_manage a + + a.del_flag = 0 + + + + and a.dept_id IN + + + and a.dept_id NOT IN + + + and a.dept_id IN + + + + #{v} + + + + group by a.user_id; + + + + + + + \ No newline at end of file From 3eb4684b08da9c468d9f4204b6d031eaff6c4c5b Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 28 Feb 2025 16:19:54 +0800 Subject: [PATCH 4/7] =?UTF-8?q?feat:=E6=AD=A3=E5=85=83service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thirdparty/service/impl/ZyForeignService.java | 4 ++++ .../thirdparty/service/impl/ZyMerService.java | 4 ++++ .../thirdparty/service/impl/ZySelfService.java | 4 ++++ .../thirdparty/service/impl/ZyStrideService.java | 4 ++++ .../service/impl/zy/ZyForeignServiceImpl.java | 15 +++++++++++++++ .../service/impl/zy/ZyMerServiceImpl.java | 14 ++++++++++++++ .../service/impl/zy/ZySelfServiceImpl.java | 14 ++++++++++++++ .../service/impl/zy/ZyStrideServiceImpl.java | 14 ++++++++++++++ 8 files changed, 73 insertions(+) create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyForeignService.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyMerService.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZySelfService.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyStrideService.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyForeignServiceImpl.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyMerServiceImpl.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZySelfServiceImpl.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyStrideServiceImpl.java diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyForeignService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyForeignService.java new file mode 100644 index 000000000..1cc265553 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyForeignService.java @@ -0,0 +1,4 @@ +package com.bsd.pjcloud.thirdparty.service.impl; + +public interface ZyForeignService { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyMerService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyMerService.java new file mode 100644 index 000000000..8b37c36fc --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyMerService.java @@ -0,0 +1,4 @@ +package com.bsd.pjcloud.thirdparty.service.impl; + +public interface ZyMerService { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZySelfService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZySelfService.java new file mode 100644 index 000000000..013f5c6b7 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZySelfService.java @@ -0,0 +1,4 @@ +package com.bsd.pjcloud.thirdparty.service.impl; + +public interface ZySelfService { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyStrideService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyStrideService.java new file mode 100644 index 000000000..be6ca45b4 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyStrideService.java @@ -0,0 +1,4 @@ +package com.bsd.pjcloud.thirdparty.service.impl; + +public interface ZyStrideService { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyForeignServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyForeignServiceImpl.java new file mode 100644 index 000000000..fafc7401c --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyForeignServiceImpl.java @@ -0,0 +1,15 @@ +package com.bsd.pjcloud.thirdparty.service.impl.zy; + +import com.bsd.pjcloud.thirdparty.service.impl.ZyForeignService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +@Service +@Validated +@Slf4j +@RequiredArgsConstructor +public class ZyForeignServiceImpl implements ZyForeignService { + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyMerServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyMerServiceImpl.java new file mode 100644 index 000000000..05b2d6271 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyMerServiceImpl.java @@ -0,0 +1,14 @@ +package com.bsd.pjcloud.thirdparty.service.impl.zy; + +import com.bsd.pjcloud.thirdparty.service.impl.ZyMerService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +@Service +@Validated +@Slf4j +@RequiredArgsConstructor +public class ZyMerServiceImpl implements ZyMerService { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZySelfServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZySelfServiceImpl.java new file mode 100644 index 000000000..813f39309 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZySelfServiceImpl.java @@ -0,0 +1,14 @@ +package com.bsd.pjcloud.thirdparty.service.impl.zy; + +import com.bsd.pjcloud.thirdparty.service.impl.ZySelfService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +@Service +@Validated +@Slf4j +@RequiredArgsConstructor +public class ZySelfServiceImpl implements ZySelfService { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyStrideServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyStrideServiceImpl.java new file mode 100644 index 000000000..09b9d2cc2 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyStrideServiceImpl.java @@ -0,0 +1,14 @@ +package com.bsd.pjcloud.thirdparty.service.impl.zy; + +import com.bsd.pjcloud.thirdparty.service.impl.ZyStrideService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +@Service +@Validated +@Slf4j +@RequiredArgsConstructor +public class ZyStrideServiceImpl implements ZyStrideService { +} From 49056d4563fb2ea429c2837f89dbaf14956b2a08 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 28 Feb 2025 16:23:35 +0800 Subject: [PATCH 5/7] =?UTF-8?q?feat:=E8=AE=BE=E5=A4=87=E4=BA=A4=E6=98=93?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E7=AE=97=E4=B8=8A=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/api/constant/order/HardOrderStatusEnum.java | 8 ++++++++ .../service/impl/order/HardOrderTotalServiceImpl.java | 2 +- .../thirdparty/service/impl/zy/ZyStrideServiceImpl.java | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java index fdf1d8a4c..7f3596b26 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java @@ -30,6 +30,14 @@ public enum HardOrderStatusEnum { ); } + public static List getPayPrice() { + return List.of( + HardOrderStatusEnum.PAY.type, + HardOrderStatusEnum.CANCEL.type, + HardOrderStatusEnum.REFUND.type + ); + } + public static List getPayErrorCodes() { return List.of( HardOrderStatusEnum.REFUND.type diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java index 4d2c6dd28..93acc7c1e 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java @@ -218,7 +218,7 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { CompletableFuture> payFuture = CompletableFuture.supplyAsync(() -> { HardOrderSumAndCountDto payDto = new HardOrderSumAndCountDto(); payDto.setDeptIds(deptIds); - payDto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + payDto.setOrderStatusCodes(HardOrderStatusEnum.getPayPrice()); if (ObjectUtil.isNotEmpty(dto.getCreateTimeList())) { payDto.setCreateTimeList(dto.getCreateTimeList()); } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyStrideServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyStrideServiceImpl.java index 09b9d2cc2..7b0280c95 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyStrideServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyStrideServiceImpl.java @@ -11,4 +11,5 @@ import org.springframework.validation.annotation.Validated; @Slf4j @RequiredArgsConstructor public class ZyStrideServiceImpl implements ZyStrideService { + } From cd99c104c328fd3b29a8afd84a54304a61d5521f Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 28 Feb 2025 20:09:49 +0800 Subject: [PATCH 6/7] =?UTF-8?q?feat:=E6=AD=A3=E5=85=83=E5=95=86=E6=88=B7?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/constant/CacheConstants.java | 6 + .../pjcloud-thirdparty-api/pom.xml | 2 +- .../dto/zy/mer/ZyMerSyncDealerInfoDto.java | 8 +- .../zy/mer/ZyMerSyncEnterpriseInfoDto.java | 6 + .../pjcloud/thirdparty/vo/zy/ZyBaseVo.java | 7 + .../pjcloud-thirdparty-biz/pom.xml | 15 +- .../pjcloud/thirdparty/config/ZyConfig.java | 19 ++ .../thirdparty/service/impl/ZyMerService.java | 32 +++ .../service/impl/zy/ZyMerServiceImpl.java | 200 ++++++++++++++++++ .../thirdparty/utils/zy/api/ZyApi.java | 38 ++-- .../src/main/resources/application.yml | 15 +- .../java/com/bsd/pjcloud/admin/ZyTest.java | 148 +++++++++++++ 12 files changed, 461 insertions(+), 35 deletions(-) create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/ZyConfig.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/ZyTest.java diff --git a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java index 3bb34fe97..95ecb3d15 100644 --- a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java +++ b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java @@ -133,4 +133,10 @@ public interface CacheConstants { String WALLET_SETTING_DETAIL = "wallet:detail:setting"; /* ************************************* end 钱包相关 end ************************************* */ + + /* ************************************* start 第三方对接相关 start ************************************* */ + + String THIRDPARTY_ZY_MER_TOKEN = "thirdparty:zy:mer_token"; + + /* ************************************* end 第三方对接相关 end ************************************* */ } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/pom.xml b/pjcloud-thirdparty/pjcloud-thirdparty-api/pom.xml index 93f903039..e1fa6f100 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/pom.xml +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/pom.xml @@ -42,5 +42,5 @@ com.bsd pjcloud-common-excel - + diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncDealerInfoDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncDealerInfoDto.java index af90c697e..5343dbe2c 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncDealerInfoDto.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncDealerInfoDto.java @@ -1,11 +1,17 @@ package com.bsd.pjcloud.thirdparty.dto.zy.mer; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; /** * 商户信息同步 */ +@Builder +@AllArgsConstructor +@NoArgsConstructor @Data public class ZyMerSyncDealerInfoDto { /** @@ -21,7 +27,7 @@ public class ZyMerSyncDealerInfoDto { /** * 商户是否有效0:禁用 1:有效 */ - private String IsValid; + private Integer IsValid; /** * 所属记账单位编号 diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncEnterpriseInfoDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncEnterpriseInfoDto.java index 8b3a76b7b..5898e0e92 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncEnterpriseInfoDto.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/zy/mer/ZyMerSyncEnterpriseInfoDto.java @@ -1,10 +1,16 @@ package com.bsd.pjcloud.thirdparty.dto.zy.mer; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; /** * 记账单位同步 */ +@Builder +@AllArgsConstructor +@NoArgsConstructor @Data public class ZyMerSyncEnterpriseInfoDto { diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/ZyBaseVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/ZyBaseVo.java index 4017d5b49..6b00ddec4 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/ZyBaseVo.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/zy/ZyBaseVo.java @@ -1,12 +1,19 @@ package com.bsd.pjcloud.thirdparty.vo.zy; +import cn.hutool.core.util.ObjectUtil; import lombok.Data; @Data public class ZyBaseVo { + public static String successCode = "0"; + private Integer code; private String msg; + public boolean isSuccess() { + return ObjectUtil.equal(code, ZyBaseVo.successCode); + } + } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/pom.xml b/pjcloud-thirdparty/pjcloud-thirdparty-biz/pom.xml index 6ae45b447..478f3da97 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/pom.xml +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/pom.xml @@ -76,13 +76,13 @@ com.baomidou - mybatis-plus-spring-boot3-starter - + mybatis-plus-spring-boot3-starter + com.alibaba - druid-spring-boot-3-starter - + druid-spring-boot-3-starter + com.mysql @@ -97,8 +97,9 @@ org.springframework.boot spring-boot-starter-test + test - + com.bsd pjcloud-common-seata @@ -115,7 +116,7 @@ org.springframework.boot spring-boot-maven-plugin - + repackage @@ -125,7 +126,7 @@ - + io.fabric8 docker-maven-plugin diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/ZyConfig.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/ZyConfig.java new file mode 100644 index 000000000..f7e1a9805 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/ZyConfig.java @@ -0,0 +1,19 @@ +package com.bsd.pjcloud.thirdparty.config; + + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "zy") +@Data +public class ZyConfig { + + private String baseUrl; + + private String appId; + + private String appSecret; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyMerService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyMerService.java index 8b37c36fc..a4f58c4a9 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyMerService.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyMerService.java @@ -1,4 +1,36 @@ package com.bsd.pjcloud.thirdparty.service.impl; +import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncAccClassInfoDto; +import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncAccountInfoDto; +import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncDealerInfoDto; +import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncEnterpriseInfoDto; +import com.bsd.pjcloud.thirdparty.vo.zy.mer.*; + public interface ZyMerService { + + /** + * 获取token + */ + ZyMerGetTokenVo getTokenApi(); + + /** + * 商户信息同步 + */ + ZyMerSyncDealerInfoVo syncDealerInfoApi(ZyMerSyncDealerInfoDto dto); + + /** + * 记账单位同步 + */ + ZyMerSyncEnterpriseInfoVo syncEnterpriseInfoApi(ZyMerSyncEnterpriseInfoDto dto); + + /** + * 账户信息同步 + */ + ZyMerSyncAccountInfoVo syncAccountInfoApi(ZyMerSyncAccountInfoDto dto); + + /** + * 身份信息同步 + */ + ZyMerSyncAccClassInfoVo syncAccClassInfo(ZyMerSyncAccClassInfoDto dto); + } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyMerServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyMerServiceImpl.java index 05b2d6271..5e80c2875 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyMerServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyMerServiceImpl.java @@ -1,14 +1,214 @@ package com.bsd.pjcloud.thirdparty.service.impl.zy; +import cn.hutool.core.lang.Pair; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONUtil; +import com.bsd.pjcloud.common.core.constant.CacheConstants; +import com.bsd.pjcloud.thirdparty.config.ZyConfig; +import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncAccClassInfoDto; +import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncAccountInfoDto; +import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncDealerInfoDto; +import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncEnterpriseInfoDto; import com.bsd.pjcloud.thirdparty.service.impl.ZyMerService; +import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApi; +import com.bsd.pjcloud.thirdparty.vo.zy.mer.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.HashMap; +import java.util.Map; + +import static org.apache.commons.codec.digest.DigestUtils.md5Hex; + @Service @Validated @Slf4j @RequiredArgsConstructor public class ZyMerServiceImpl implements ZyMerService { + + private final String TAG = "ZyMerServiceImpl"; + + private final ZyConfig zyConfig; + + private final StringRedisTemplate redisTemplate; + + /** + * 获取token + * + * @return + */ + @Override + public ZyMerGetTokenVo getTokenApi() { + String url = zyConfig.getBaseUrl() + ZyApi.Mer.GET_TOKEN; + url = String.format(url, zyConfig.getAppId(), zyConfig.getAppSecret()); + try { + String res = HttpRequest.get(url) + .contentType("application/x-www-form-urlencoded") + .execute() + .body(); + if (ObjectUtil.isEmpty(res)) { + throw new RuntimeException("response is empty"); + } + ZyMerGetTokenVo vo = JSONUtil.toBean(res, ZyMerGetTokenVo.class); + if (!vo.isSuccess()) { + throw new RuntimeException(String.format("请求错误res|%s|url|%s|", res, url)); + } + return vo; + } catch (Exception e) { + log.error("|{}||getTokenApi|意外的错误error", e.getMessage()); + } + return null; + } + + /** + * 商户信息同步 + */ + @Override + public ZyMerSyncDealerInfoVo syncDealerInfoApi(ZyMerSyncDealerInfoDto dto) { + String url = zyConfig.getBaseUrl() + ZyApi.Mer.SYNC_DEALER_INFO; + try { + url = String.format(url, getToken()); + Map encryptionBody = new HashMap<>(); + encryptionBody.put("dealers", dto); + String body = getEncryptionDto(encryptionBody); + String res = HttpRequest.post(url) + .body(body) + .execute() + .body(); + if (ObjectUtil.isEmpty(res)) { + throw new RuntimeException("response is empty"); + } + ZyMerSyncDealerInfoVo vo = JSONUtil.toBean(res, ZyMerSyncDealerInfoVo.class); + if (!vo.isSuccess()) { + throw new RuntimeException(String.format("请求错误res|%s|url|%s|body|%s|", res, url, body)); + } + return vo; + } catch (Exception e) { + log.error("|{}||syncDealerInfo|意外的错误error", e.getMessage()); + } + return null; + } + + /** + * 记账单位同步 + */ + @Override + public ZyMerSyncEnterpriseInfoVo syncEnterpriseInfoApi(ZyMerSyncEnterpriseInfoDto dto) { + String url = zyConfig.getBaseUrl() + ZyApi.Mer.SYNC_ENTERPRISE_INFO; + try { + url = String.format(url, getToken()); + Map encryptionBody = new HashMap<>(); + encryptionBody.put("enterprises", dto); + String body = getEncryptionDto(encryptionBody); + String res = HttpRequest.post(url) + .body(body) + .execute() + .body(); + if (ObjectUtil.isEmpty(res)) { + throw new RuntimeException("response is empty"); + } + ZyMerSyncEnterpriseInfoVo vo = JSONUtil.toBean(res, ZyMerSyncEnterpriseInfoVo.class); + if (!vo.isSuccess()) { + throw new RuntimeException(String.format("请求错误res|%s|url|%s|body|%s|", res, url, body)); + } + return vo; + } catch (Exception e) { + log.error("|{}||syncEnterpriseInfo|意外的错误error", e.getMessage()); + } + return null; + } + + /** + * 账户信息同步 + */ + @Override + public ZyMerSyncAccountInfoVo syncAccountInfoApi(ZyMerSyncAccountInfoDto dto) { + String url = zyConfig.getBaseUrl() + ZyApi.Mer.SYNC_ACCOUNT_INFO; + try { + url = String.format(url, getToken()); + Map encryptionBody = new HashMap<>(); + encryptionBody.put("accounts", dto); + String body = getEncryptionDto(encryptionBody); + String res = HttpRequest.post(url) + .body(body) + .execute() + .body(); + if (ObjectUtil.isEmpty(res)) { + throw new RuntimeException("response is empty"); + } + ZyMerSyncAccountInfoVo vo = JSONUtil.toBean(res, ZyMerSyncAccountInfoVo.class); + if (!vo.isSuccess()) { + throw new RuntimeException(String.format("请求错误res|%s|url|%s|body|%s|", res, url, body)); + } + return vo; + } catch (Exception e) { + log.error("|{}||syncAccountInfo|意外的错误error", e.getMessage()); + } + return null; + } + + /** + * 身份信息同步 + */ + @Override + public ZyMerSyncAccClassInfoVo syncAccClassInfo(ZyMerSyncAccClassInfoDto dto) { + String url = zyConfig.getBaseUrl() + ZyApi.Mer.SYNC_ACC_CLASS_INFO; + try { + url = String.format(url, getToken()); + Map encryptionBody = new HashMap<>(); + encryptionBody.put("accClasses", dto); + String body = getEncryptionDto(encryptionBody); + String res = HttpRequest.post(url) + .body(body) + .execute() + .body(); + if (ObjectUtil.isEmpty(res)) { + throw new RuntimeException("response is empty"); + } + ZyMerSyncAccClassInfoVo vo = JSONUtil.toBean(res, ZyMerSyncAccClassInfoVo.class); + if (!vo.isSuccess()) { + throw new RuntimeException(String.format("请求错误res|%s|url|%s|body|%s|", res, url, body)); + } + return vo; + }catch (Exception e){ + log.error("|{}||syncAccClassInfo|意外的错误error", e.getMessage()); + } + return null; + } + + private String getToken() { + try { + String redisKey = CacheConstants.THIRDPARTY_ZY_MER_TOKEN; + String token = redisTemplate.opsForValue().get(redisKey); + if (ObjectUtil.isEmpty(token)) { + ZyMerGetTokenVo vo = getTokenApi(); + if (ObjectUtil.isNotEmpty(vo)) { + String accessToken = vo.getAccess_token(); + redisTemplate.opsForValue().set(redisKey, accessToken); + return accessToken; + } + } + return token; + } catch (Exception e) { + log.error("|{}|token获取错误无法进行,意外的错误error", e.getMessage()); + } + return null; + } + + private String getEncryptionDto(T params) { + String json = JSONUtil.toJsonStr(params); + String encodedData = Base64.getEncoder().encodeToString(json.getBytes(StandardCharsets.UTF_8)); + String stringToSign = String.format("data=%s&key=%s", json, zyConfig.getAppId()); + String sign = md5Hex(stringToSign); + Map body = new HashMap<>(); + body.put("data", encodedData); + body.put("sign", sign); + return JSONUtil.toJsonStr(body); + } } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/zy/api/ZyApi.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/zy/api/ZyApi.java index 24d42f464..c37f9e508 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/zy/api/ZyApi.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/zy/api/ZyApi.java @@ -5,48 +5,50 @@ import lombok.experimental.UtilityClass; @UtilityClass public class ZyApi { + + // 商户信息同步 - class Mer { + public static class Mer { // 获取token - static final String GET_TOKEN = "/getToken?appId={appid}&appSecret={appsecret}"; + public static final String GET_TOKEN = "/api/getToken?appId=%s&appSecret=%s"; // 商户信息同步 - static final String SYNC_DEALER_INFO = "/syncDealerInfo?access_token={access_token}"; + public static final String SYNC_DEALER_INFO = "/api/syncDealerInfo?access_token=%s"; // 记账单位同步 - static final String SYNC_ENTERPRISE_INFO = "/syncEnterpriseInfo?access_token={access_token}"; + public static final String SYNC_ENTERPRISE_INFO = "/api/syncEnterpriseInfo?access_token=%s"; // 账户信息同步 - static final String SYNC_ACCOUNT_INFO = "/syncAccountInfo?access_token={access_token}"; + public static final String SYNC_ACCOUNT_INFO = "/api/syncAccountInfo?access_token=%s"; // 身份信息同步 - static final String SYNC_ACC_CLASS_INFO = "/syncAccClassInfo?access_token={access_token}"; + public static final String SYNC_ACC_CLASS_INFO = "/api/syncAccClassInfo?access_token=%s"; } // 统一身份验证功能 - class Stride { + public class Stride { // 统一身份验证功能 - static final String AUTHENTICATION = "/authentication?access_token={access_token}"; + public static final String AUTHENTICATION = "/authentication?access_token={access_token}"; // 智慧园区通刷平台提供消费接口 - static final String CONSUMPTION = "/consumption?access_token={access_token}"; + public static final String CONSUMPTION = "/consumption?access_token={access_token}"; // 智慧园区通刷平台提供冲正接口 - static final String CORRECT = "/correct?access_token={access_token}"; + public static final String CORRECT = "/correct?access_token={access_token}"; } // 本地一卡通交易数据同步 - class Foreign { + public static class Foreign { // 本地一卡通交易数据同步 - static final String SYNC_NATIVE_CARD_TRADE_INFO = "/getToken/syncNativeCardTradeInfo?access_token={access_token}"; + public static final String SYNC_NATIVE_CARD_TRADE_INFO = "/getToken/syncNativeCardTradeInfo?access_token={access_token}"; // 获取区域编码 - static final String GET_REGION_ID_BY_TOKEN = "/getRegionIdByToken?access_token={access_token}"; + public static final String GET_REGION_ID_BY_TOKEN = "/getRegionIdByToken?access_token={access_token}"; } // 第三方需提供的接口 - class Self { + public static class Self { // 第三方url健康探测 - static final String CHECK_SYSTEM_STATUS = "/checkSystemStatus"; + public static final String CHECK_SYSTEM_STATUS = "/checkSystemStatus"; // 第三方一卡通系统提供冲正接口 - static final String CORRECT = "/correct?access_token={access_token}"; + public static final String CORRECT = "/correct?access_token={access_token}"; // 第三方一卡通系统提供扣费接口 - static final String PAY = "/pay?access_token={access_token}"; + public static final String PAY = "/pay?access_token={access_token}"; // 第三方提供获取token - static final String GET_TOKEN = "/getToken?appId={appid}&appSecret={appsecret}_1730169197889"; + public static final String GET_TOKEN = "/getToken?appId={appid}&appSecret={appsecret}_1730169197889"; } } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml index d2ed93d4c..041447b11 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml @@ -40,11 +40,10 @@ oauth2: shjn_token_url: /prod-api/login/shpj # 浙证钉和诗画公用的获取用户信息接口 zzd_sh_user_info_url: /prod-api/oauth2/apis/sso/v1/fetch_user_by_uabase_token -# datasource: -# type: com.alibaba.druid.pool.DruidDataSource -# druid: -# driver-class-name: com.mysql.cj.jdbc.Driver -# username: root -# password: root -# # url: jdbc:mysql://pjcloud-mysql:3306/pjcloudx_thirdparty?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true -# url: jdbc:mysql://${MYSQL_HOST:pjcloud-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pjcloudx_thirdparty}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true \ No newline at end of file + +# 正元智慧 +# https://gwyc.zj.gov.cn/API/%E7%9C%81%E5%B9%B3%E5%8F%B0API%E5%AF%B9%E6%8E%A5%E6%8E%A5%E5%8F%A3.html +zy: + base-url: http://60.191.37.212:18079 + app-id: 03D9608D1735D424F984733BA71321C6 + app-secret: 65497A86DB1401B252FEA6DE0A080766 \ No newline at end of file diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/ZyTest.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/ZyTest.java new file mode 100644 index 000000000..79b9d3fc8 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/ZyTest.java @@ -0,0 +1,148 @@ +package com.bsd.pjcloud.admin; + +import cn.hutool.json.JSONUtil; +import com.bsd.pjcloud.thirdparty.ThirdPartyApp; +import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncAccClassInfoDto; +import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncAccountInfoDto; +import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncDealerInfoDto; +import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncEnterpriseInfoDto; +import com.bsd.pjcloud.thirdparty.service.impl.ZyMerService; +import com.bsd.pjcloud.thirdparty.vo.zy.mer.*; +import jakarta.annotation.Resource; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import java.security.MessageDigest; +import java.util.Base64; +import java.util.HashMap; +import java.util.Map; + +@SpringBootTest(classes = ThirdPartyApp.class) +public class ZyTest { + + @Resource + private ZyMerService zyMerService; + + /************************** start mer start **************************/ + + /** + * 获取token + */ + @Test + public void merGetTokenApi() { + ZyMerGetTokenVo vo = zyMerService.getTokenApi(); + System.out.println(1); + } + + /** + * 商户信息同步 + */ + @Test + public void merSyncDealerInfo() { + ZyMerSyncDealerInfoDto dto = ZyMerSyncDealerInfoDto + .builder() + .DealerKeyObj("123") + .DealerName("食堂") + .IsValid(1) + .EPID("1") + .FixId("20190920100101") + .build(); + ZyMerSyncDealerInfoVo vo = zyMerService.syncDealerInfoApi(dto); + System.out.println(vo); + } + + /** + * 记账单位同步 + */ + @Test + public void merSyncEnterpriseInfo(){ + ZyMerSyncEnterpriseInfoDto dto = new ZyMerSyncEnterpriseInfoDto(); + ZyMerSyncEnterpriseInfoVo vo = zyMerService.syncEnterpriseInfoApi(dto); + System.out.println(vo); + } + + /** + * 账户信息同步 + */ + @Test + public void merSyncAccountInfoApi(){ + ZyMerSyncAccountInfoDto dto = new ZyMerSyncAccountInfoDto(); + ZyMerSyncAccountInfoVo vo = zyMerService.syncAccountInfoApi(dto); + System.out.println(vo); + } + + /** + * 身份信息同步 + */ + @Test + public void merSyncAccClassInfo(){ + ZyMerSyncAccClassInfoDto dto = new ZyMerSyncAccClassInfoDto(); + ZyMerSyncAccClassInfoVo vo = zyMerService.syncAccClassInfo(dto); + System.out.println(vo); + } + + /************************** end mer end **************************/ + + + /************************** start mer start **************************/ + + + + /************************** end mer end **************************/ + + + @Test + public void encryption() { + try { + + // 1. 构建业务数据 + Map dealer = new HashMap<>(); + dealer.put("EPID", "1"); + dealer.put("DealerKeyObj", "123"); + dealer.put("IsValid", 1); + dealer.put("DealerName", "食堂"); + dealer.put("FixId", "20190920100101"); + + Map data = new HashMap<>(); + data.put("dealers", new Object[]{dealer}); + + // 2. 生成 data 参数(Base64 编码) + String jsonData = JSONUtil.toJsonStr(data); + String base64Data = Base64.getEncoder().encodeToString(jsonData.getBytes("UTF-8")); + + // 3. 生成签名 + String signStr = String.format("data=%s&key=%s", jsonData, "03D9608D1735D424F984733BA71321C6"); + String sign = md5(signStr).toUpperCase(); + + // 4. 构建请求参数 + Map params = new HashMap<>(); + params.put("data", base64Data); + params.put("sign", sign); + System.out.println(params); + } catch (Exception e) { + e.printStackTrace(); + } + } + + // MD5 加密方法 + private static String md5(String input) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] messageDigest = md.digest(input.getBytes()); + StringBuilder hexString = new StringBuilder(); + + for (byte b : messageDigest) { + String hex = Integer.toHexString(0xFF & b); + if (hex.length() == 1) { + hexString.append('0'); + } + hexString.append(hex); + } + + return hexString.toString(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + +} From d2e62d2fbfe6365e62020223f2784c9a652e2d9f Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 28 Feb 2025 20:15:11 +0800 Subject: [PATCH 7/7] =?UTF-8?q?feat:=E5=B0=81=E8=A3=85=E6=AD=A3=E5=85=83?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thirdparty/service/impl/ZyMerService.java | 5 -- .../service/impl/zy/ZyMerServiceImpl.java | 84 +++--------------- .../thirdparty/utils/zy/api/ZyApiTool.java | 87 +++++++++++++++++++ .../java/com/bsd/pjcloud/admin/ZyTest.java | 8 +- 4 files changed, 107 insertions(+), 77 deletions(-) create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/zy/api/ZyApiTool.java diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyMerService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyMerService.java index a4f58c4a9..afe80813f 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyMerService.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ZyMerService.java @@ -8,11 +8,6 @@ import com.bsd.pjcloud.thirdparty.vo.zy.mer.*; public interface ZyMerService { - /** - * 获取token - */ - ZyMerGetTokenVo getTokenApi(); - /** * 商户信息同步 */ diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyMerServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyMerServiceImpl.java index 5e80c2875..645ff09d0 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyMerServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ZyMerServiceImpl.java @@ -12,6 +12,7 @@ import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncDealerInfoDto; import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncEnterpriseInfoDto; import com.bsd.pjcloud.thirdparty.service.impl.ZyMerService; import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApi; +import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApiTool; import com.bsd.pjcloud.thirdparty.vo.zy.mer.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -36,35 +37,7 @@ public class ZyMerServiceImpl implements ZyMerService { private final ZyConfig zyConfig; - private final StringRedisTemplate redisTemplate; - - /** - * 获取token - * - * @return - */ - @Override - public ZyMerGetTokenVo getTokenApi() { - String url = zyConfig.getBaseUrl() + ZyApi.Mer.GET_TOKEN; - url = String.format(url, zyConfig.getAppId(), zyConfig.getAppSecret()); - try { - String res = HttpRequest.get(url) - .contentType("application/x-www-form-urlencoded") - .execute() - .body(); - if (ObjectUtil.isEmpty(res)) { - throw new RuntimeException("response is empty"); - } - ZyMerGetTokenVo vo = JSONUtil.toBean(res, ZyMerGetTokenVo.class); - if (!vo.isSuccess()) { - throw new RuntimeException(String.format("请求错误res|%s|url|%s|", res, url)); - } - return vo; - } catch (Exception e) { - log.error("|{}||getTokenApi|意外的错误error", e.getMessage()); - } - return null; - } + private final ZyApiTool zyApiTool; /** * 商户信息同步 @@ -73,10 +46,10 @@ public class ZyMerServiceImpl implements ZyMerService { public ZyMerSyncDealerInfoVo syncDealerInfoApi(ZyMerSyncDealerInfoDto dto) { String url = zyConfig.getBaseUrl() + ZyApi.Mer.SYNC_DEALER_INFO; try { - url = String.format(url, getToken()); + url = String.format(url, zyApiTool.getToken()); Map encryptionBody = new HashMap<>(); encryptionBody.put("dealers", dto); - String body = getEncryptionDto(encryptionBody); + String body = zyApiTool.getEncryptionDto(encryptionBody); String res = HttpRequest.post(url) .body(body) .execute() @@ -90,7 +63,7 @@ public class ZyMerServiceImpl implements ZyMerService { } return vo; } catch (Exception e) { - log.error("|{}||syncDealerInfo|意外的错误error", e.getMessage()); + log.error("|{}||syncDealerInfo|意外的错误error|{}|", TAG, e.getMessage()); } return null; } @@ -102,10 +75,10 @@ public class ZyMerServiceImpl implements ZyMerService { public ZyMerSyncEnterpriseInfoVo syncEnterpriseInfoApi(ZyMerSyncEnterpriseInfoDto dto) { String url = zyConfig.getBaseUrl() + ZyApi.Mer.SYNC_ENTERPRISE_INFO; try { - url = String.format(url, getToken()); + url = String.format(url, zyApiTool.getToken()); Map encryptionBody = new HashMap<>(); encryptionBody.put("enterprises", dto); - String body = getEncryptionDto(encryptionBody); + String body = zyApiTool.getEncryptionDto(encryptionBody); String res = HttpRequest.post(url) .body(body) .execute() @@ -119,7 +92,7 @@ public class ZyMerServiceImpl implements ZyMerService { } return vo; } catch (Exception e) { - log.error("|{}||syncEnterpriseInfo|意外的错误error", e.getMessage()); + log.error("|{}||syncEnterpriseInfo|意外的错误error|{}|", TAG, e.getMessage()); } return null; } @@ -131,10 +104,10 @@ public class ZyMerServiceImpl implements ZyMerService { public ZyMerSyncAccountInfoVo syncAccountInfoApi(ZyMerSyncAccountInfoDto dto) { String url = zyConfig.getBaseUrl() + ZyApi.Mer.SYNC_ACCOUNT_INFO; try { - url = String.format(url, getToken()); + url = String.format(url, zyApiTool.getToken()); Map encryptionBody = new HashMap<>(); encryptionBody.put("accounts", dto); - String body = getEncryptionDto(encryptionBody); + String body = zyApiTool.getEncryptionDto(encryptionBody); String res = HttpRequest.post(url) .body(body) .execute() @@ -148,7 +121,7 @@ public class ZyMerServiceImpl implements ZyMerService { } return vo; } catch (Exception e) { - log.error("|{}||syncAccountInfo|意外的错误error", e.getMessage()); + log.error("|{}||syncAccountInfo|意外的错误error|{}|", TAG, e.getMessage()); } return null; } @@ -160,10 +133,10 @@ public class ZyMerServiceImpl implements ZyMerService { public ZyMerSyncAccClassInfoVo syncAccClassInfo(ZyMerSyncAccClassInfoDto dto) { String url = zyConfig.getBaseUrl() + ZyApi.Mer.SYNC_ACC_CLASS_INFO; try { - url = String.format(url, getToken()); + url = String.format(url, zyApiTool.getToken()); Map encryptionBody = new HashMap<>(); encryptionBody.put("accClasses", dto); - String body = getEncryptionDto(encryptionBody); + String body = zyApiTool.getEncryptionDto(encryptionBody); String res = HttpRequest.post(url) .body(body) .execute() @@ -176,39 +149,10 @@ public class ZyMerServiceImpl implements ZyMerService { throw new RuntimeException(String.format("请求错误res|%s|url|%s|body|%s|", res, url, body)); } return vo; - }catch (Exception e){ - log.error("|{}||syncAccClassInfo|意外的错误error", e.getMessage()); - } - return null; - } - - private String getToken() { - try { - String redisKey = CacheConstants.THIRDPARTY_ZY_MER_TOKEN; - String token = redisTemplate.opsForValue().get(redisKey); - if (ObjectUtil.isEmpty(token)) { - ZyMerGetTokenVo vo = getTokenApi(); - if (ObjectUtil.isNotEmpty(vo)) { - String accessToken = vo.getAccess_token(); - redisTemplate.opsForValue().set(redisKey, accessToken); - return accessToken; - } - } - return token; } catch (Exception e) { - log.error("|{}|token获取错误无法进行,意外的错误error", e.getMessage()); + log.error("|{}||syncAccClassInfo|意外的错误error|{}|", TAG, e.getMessage()); } return null; } - private String getEncryptionDto(T params) { - String json = JSONUtil.toJsonStr(params); - String encodedData = Base64.getEncoder().encodeToString(json.getBytes(StandardCharsets.UTF_8)); - String stringToSign = String.format("data=%s&key=%s", json, zyConfig.getAppId()); - String sign = md5Hex(stringToSign); - Map body = new HashMap<>(); - body.put("data", encodedData); - body.put("sign", sign); - return JSONUtil.toJsonStr(body); - } } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/zy/api/ZyApiTool.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/zy/api/ZyApiTool.java new file mode 100644 index 000000000..9daf770e2 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/zy/api/ZyApiTool.java @@ -0,0 +1,87 @@ +package com.bsd.pjcloud.thirdparty.utils.zy.api; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONUtil; +import com.bsd.pjcloud.common.core.constant.CacheConstants; +import com.bsd.pjcloud.thirdparty.config.ZyConfig; +import com.bsd.pjcloud.thirdparty.vo.zy.mer.ZyMerGetTokenVo; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.HashMap; +import java.util.Map; + +import static org.apache.commons.codec.digest.DigestUtils.md5Hex; + +@Component +@Validated +@Slf4j +@RequiredArgsConstructor +public class ZyApiTool { + + private final String TAG = "正元请求工具类"; + + private final ZyConfig zyConfig; + + private final StringRedisTemplate redisTemplate; + + public ZyMerGetTokenVo getTokenApi() { + String url = zyConfig.getBaseUrl() + ZyApi.Mer.GET_TOKEN; + url = String.format(url, zyConfig.getAppId(), zyConfig.getAppSecret()); + try { + String res = HttpRequest.get(url) + .contentType("application/x-www-form-urlencoded") + .execute() + .body(); + if (ObjectUtil.isEmpty(res)) { + throw new RuntimeException("response is empty"); + } + ZyMerGetTokenVo vo = JSONUtil.toBean(res, ZyMerGetTokenVo.class); + if (!vo.isSuccess()) { + throw new RuntimeException(String.format("请求错误res|%s|url|%s|", res, url)); + } + return vo; + } catch (Exception e) { + log.error("|{}||getTokenApi|意外的错误error|{}|", TAG, e.getMessage()); + } + return null; + } + + public String getToken() { + try { + String redisKey = CacheConstants.THIRDPARTY_ZY_MER_TOKEN; + String token = redisTemplate.opsForValue().get(redisKey); + if (ObjectUtil.isEmpty(token)) { + ZyMerGetTokenVo vo = getTokenApi(); + if (ObjectUtil.isNotEmpty(vo)) { + String accessToken = vo.getAccess_token(); + redisTemplate.opsForValue().set(redisKey, accessToken); + return accessToken; + } + } + return token; + } catch (Exception e) { + log.error("|{}|token获取错误无法进行,意外的错误error|{}|", TAG, e.getMessage()); + } + return null; + } + + public String getEncryptionDto(T params) { + String json = JSONUtil.toJsonStr(params); + String encodedData = Base64.getEncoder().encodeToString(json.getBytes(StandardCharsets.UTF_8)); + String stringToSign = String.format("data=%s&key=%s", json, zyConfig.getAppId()); + String sign = md5Hex(stringToSign); + Map body = new HashMap<>(); + body.put("data", encodedData); + body.put("sign", sign); + return JSONUtil.toJsonStr(body); + } + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/ZyTest.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/ZyTest.java index 79b9d3fc8..da980b754 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/ZyTest.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/ZyTest.java @@ -7,6 +7,7 @@ import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncAccountInfoDto; import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncDealerInfoDto; import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncEnterpriseInfoDto; import com.bsd.pjcloud.thirdparty.service.impl.ZyMerService; +import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApiTool; import com.bsd.pjcloud.thirdparty.vo.zy.mer.*; import jakarta.annotation.Resource; import org.junit.jupiter.api.Test; @@ -23,6 +24,9 @@ public class ZyTest { @Resource private ZyMerService zyMerService; + @Resource + private ZyApiTool zyApiTool; + /************************** start mer start **************************/ /** @@ -30,8 +34,8 @@ public class ZyTest { */ @Test public void merGetTokenApi() { - ZyMerGetTokenVo vo = zyMerService.getTokenApi(); - System.out.println(1); + ZyMerGetTokenVo vo = zyApiTool.getTokenApi(); + System.out.println(vo); } /**