diff --git a/db/1000pjcloudx_thirdparty.sql b/db/1000pjcloudx_thirdparty.sql
index 3d7dc89d0..a22f984e7 100644
--- a/db/1000pjcloudx_thirdparty.sql
+++ b/db/1000pjcloudx_thirdparty.sql
@@ -27,4 +27,27 @@ CREATE TABLE `third_zy_log`
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_general_ci
- ROW_FORMAT = DYNAMIC COMMENT ='正元日志表';
\ No newline at end of file
+ ROW_FORMAT = DYNAMIC COMMENT ='正元日志表';
+
+
+-- ----------------------------
+-- Table structure for third_zy_id_dict
+-- ----------------------------
+DROP TABLE IF EXISTS `third_zy_id_dict`;
+CREATE TABLE `third_zy_id_dict`
+(
+ `id` bigint NOT NULL COMMENT '主键',
+ `self_id` varchar(64) NOT NULL COMMENT '自己这边的id映射',
+ `zy_id` varchar(64) NOT NULL COMMENT '正元id映射',
+ `biz_type` tinytext(16) NOT NULL COMMENT '同步类型',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `create_by` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
+ `update_by` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人',
+ `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '删除时间',
+ `tenant_id` bigint(20) DEFAULT NULL,
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_general_ci
+ ROW_FORMAT = DYNAMIC COMMENT ='正元字典id对应 id + bizType 唯一';
\ No newline at end of file
diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql
index 52f9738f0..d6c3530fd 100644
--- a/db/800pjcloudx_wallet.sql
+++ b/db/800pjcloudx_wallet.sql
@@ -37,24 +37,24 @@ CREATE INDEX idx_dept_id ON mch_manage (dept_id);
DROP TABLE IF EXISTS wallet_manage;
CREATE TABLE wallet_manage
(
- id bigint NOT NULL COMMENT '主键',
- user_id bigint NOT NULL COMMENT '饭卡绑定的用户id',
- wallet_type_id bigint NOT NULL COMMENT '饭卡类型id',
- dept_id bigint NOT NULL COMMENT '部门id',
- card_number varchar(64) COMMENT '饭卡卡号',
- balance int DEFAULT 0 NOT NULL COMMENT '余额,单位分',
- total_expense int DEFAULT 0 NOT NULL COMMENT '累计支出,单位分',
- total_recharge int DEFAULT 0 NOT NULL COMMENT '累计充值,单位分',
- freeze_price int DEFAULT 0 NOT NULL COMMENT '冻结金额,单位分',
- is_freeze char(1) DEFAULT '0' NOT NULL COMMENT '是否冻结饭卡',
- active_bind_time timestamp COMMENT '绑定饭卡时间',
- active_bind_status char(10) COMMENT '饭卡绑定状态',
- create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
- create_time datetime DEFAULT NULL COMMENT '创建时间',
- update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人',
- update_time datetime DEFAULT NULL COMMENT '修改时间',
- del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记',
- tenant_id bigint DEFAULT NULL COMMENT '租户ID',
+ id bigint NOT NULL COMMENT '主键',
+ user_id bigint NOT NULL COMMENT '饭卡绑定的用户id',
+ wallet_type_id bigint NOT NULL COMMENT '饭卡类型id',
+ dept_id bigint NOT NULL COMMENT '部门id',
+ card_number varchar(64) COMMENT '饭卡卡号',
+ balance int DEFAULT 0 NOT NULL COMMENT '余额,单位分',
+ total_expense int DEFAULT 0 NOT NULL COMMENT '累计支出,单位分',
+ total_recharge int DEFAULT 0 NOT NULL COMMENT '累计充值,单位分',
+ freeze_price int DEFAULT 0 NOT NULL COMMENT '冻结金额,单位分',
+ is_freeze char(1) DEFAULT '0' NOT NULL COMMENT '是否冻结饭卡',
+ active_bind_time timestamp COMMENT '绑定饭卡时间',
+ status char(10) COMMENT '饭卡绑定状态',
+ create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
+ create_time datetime DEFAULT NULL COMMENT '创建时间',
+ update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人',
+ update_time datetime DEFAULT NULL COMMENT '修改时间',
+ del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记',
+ tenant_id bigint DEFAULT NULL COMMENT '租户ID',
PRIMARY KEY (id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
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 231c3263a..86e4c66bb 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
@@ -138,6 +138,8 @@ public interface CacheConstants {
String THIRDPARTY_ZY_MER_TOKEN = "thirdparty:zy:mer_token";
+ String THIRDPARTY_ZY_REGION_TOKEN = "thirdparty:zy:region";
+
String THIRDPARTY_ZY_SELF_TOKEN = "thirdparty:zy:self_token:";
/* ************************************* end 第三方对接相关 end ************************************* */
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/pom.xml b/pjcloud-hardware/pjcloud-hardware-biz/pom.xml
index d4793a906..737070b51 100644
--- a/pjcloud-hardware/pjcloud-hardware-biz/pom.xml
+++ b/pjcloud-hardware/pjcloud-hardware-biz/pom.xml
@@ -138,6 +138,12 @@
5.7.0
compile
+
+ com.bsd
+ pjcloud-wallet-biz
+ 5.7.0
+ compile
+
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 3a722a141..a3f511ccd 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
@@ -49,15 +49,6 @@ public class HardOrderTotalController {
/* ************************************* start 远程调用 start ************************************* */
- @PostMapping("/zy-card-sync")
- @Operation(summary = "正元本地一卡通交易数据同步")
- public R zyCardSync() {
- HardOrderDto dto = new HardOrderDto();
- dto.setOrderStatusCodes(HardOrderStatusEnum.getPayPrice());
- dto.setOrderTypeCodes(HardOrderTypeEnum.getExternalCodes());
- return R.ok(HardOrderTotalService.totalYearMonthDay(dto));
- }
-
/* ************************************* end 远程调用 end ************************************* */
@PostMapping("/page-list-sb")
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/third/HardThirdZyController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/third/HardThirdZyController.java
new file mode 100644
index 000000000..652c0849b
--- /dev/null
+++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/third/HardThirdZyController.java
@@ -0,0 +1,31 @@
+package com.bsd.pjcloud.hard.controller.third;
+
+import com.bsd.pjcloud.common.core.util.R;
+import com.bsd.pjcloud.hard.service.HardThirdZyService;
+import com.bsd.pjcloud.wallet.api.vo.MchManageVo;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpHeaders;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/hard-third-zy")
+@Tag(description = "hard-third-zy", name = "正元同步")
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class HardThirdZyController {
+
+ private final HardThirdZyService hardThirdZyService;
+
+ @GetMapping("/sync-native-card-trade")
+ @Operation(summary = "交易数据同步")
+ public R syncNativeCardTrade() {
+ hardThirdZyService.syncNativeCardTradeInfo();
+ return R.ok();
+ }
+
+}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdZyService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdZyService.java
new file mode 100644
index 000000000..b6b7c9b36
--- /dev/null
+++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdZyService.java
@@ -0,0 +1,10 @@
+package com.bsd.pjcloud.hard.service;
+
+public interface HardThirdZyService {
+
+ /**
+ * 交易数据同步
+ */
+ void syncNativeCardTradeInfo();
+
+}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/third/HardThirdZyServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/third/HardThirdZyServiceImpl.java
new file mode 100644
index 000000000..acdba707c
--- /dev/null
+++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/third/HardThirdZyServiceImpl.java
@@ -0,0 +1,69 @@
+package com.bsd.pjcloud.hard.service.impl.third;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum;
+import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum;
+import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto;
+import com.bsd.pjcloud.hard.api.vo.order.HardZyCardSyncVo;
+import com.bsd.pjcloud.hard.service.HardOrderTotalService;
+import com.bsd.pjcloud.hard.service.HardThirdZyService;
+import com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdZyService;
+import com.bsd.pjcloud.thirdparty.dto.zy.foreign.ZyForeignSyncNativeCardTradeInfoDto;
+import com.bsd.pjcloud.thirdparty.vo.zy.foreign.ZyForeignSyncNativeCardTradeInfoVo;
+import com.bsd.pjcloud.wallet.service.MchThirdZyService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+@Validated
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class HardThirdZyServiceImpl implements HardThirdZyService {
+
+ private static final String TAG = "硬件模块同步到正元信息";
+
+ private final RemoterThirdZyService thirdZyService;
+
+ private final HardOrderTotalService hardOrderTotalService;
+
+ /**
+ * 交易数据同步
+ */
+ @Override
+ public void syncNativeCardTradeInfo() {
+ // 查询统计数据
+ HardOrderDto dto = new HardOrderDto();
+ dto.setOrderStatusCodes(HardOrderStatusEnum.getPayPrice());
+ dto.setOrderTypeCodes(HardOrderTypeEnum.getExternalCodes());
+ HardZyCardSyncVo total = hardOrderTotalService.totalYearMonthDay(dto);
+ if (ObjectUtil.isEmpty(total)) {
+ log.info("|{}|syncNativeCardTradeInfo交易数据同步到正元全部统计信息错误total为空", TAG);
+ return;
+ }
+ ZyForeignSyncNativeCardTradeInfoDto sync = new ZyForeignSyncNativeCardTradeInfoDto();
+ sync.setTotalMoney(parseMoney(total.getTotalMoney()));
+ sync.setTotalNum(total.getTotalNum());
+ sync.setTotalMoneyYear(parseMoney(total.getTotalMoneyYear()));
+ sync.setTotalNumYear(total.getTotalNumYear());
+ sync.setTotalMoneyMonth(parseMoney(total.getTotalMoneyMonth()));
+ sync.setTotalNumMonth(total.getTotalNumMonth());
+ sync.setTotalMoneyDay(parseMoney(total.getTotalMoneyDay()));
+ sync.setTotalNumDay(total.getTotalNumDay());
+ try {
+ ZyForeignSyncNativeCardTradeInfoVo res = thirdZyService.syncNativeCardTradeInfoApi(sync).getData();
+ if (ObjectUtil.isEmpty(res)) return;
+ } catch (Exception e) {
+ log.error("|{}syncNativeCardTradeInfo调用第三方接口错误|", TAG);
+ }
+ }
+
+ private BigDecimal parseMoney(Long money) {
+ if (ObjectUtil.isEmpty(money)) return BigDecimal.ZERO;
+ return BigDecimal.valueOf(money).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
+ }
+}
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 df786316d..73169050b 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
@@ -191,14 +191,14 @@