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 @@