xucaiqin 2 лет назад
Родитель
Сommit
6d11f978e4

+ 29 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/JumpUrlConfig.java

@@ -0,0 +1,29 @@
+package com.sckw.payment.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * @author xucaiqin
+ * @date 2023-09-06 18:58:51
+ */
+@Getter
+@Setter
+@Component
+@ConfigurationProperties(prefix = "msg")
+@RefreshScope
+public class JumpUrlConfig {
+    /**
+     * 销售收款对账
+     */
+    private Map<String, String> url = new HashMap<>();
+
+
+}

+ 78 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/constant/JumpEnum.java

@@ -0,0 +1,78 @@
+package com.sckw.payment.model.constant;
+
+import com.sckw.stream.enums.MessageEnum;
+import lombok.Getter;
+
+/**
+ * 跳转地址
+ *
+ * @author xucaiqin
+ * @date 2023-07-11 12:00:52
+ */
+@Getter
+public enum JumpEnum {
+    LEDGER_SELL("ledgerSell", MessageEnum.LEDGER_SELL),
+    LEDGER_REVOCATION_SELL("ledgerSell", MessageEnum.LEDGER_REVOCATION_SELL),
+    LEDGER_CONFIRM_SELL("ledgerSell", MessageEnum.LEDGER_CONFIRM_SELL),
+    LEDGER_SUCCESS_SELL("ledgerSell", MessageEnum.LEDGER_SUCCESS_SELL),
+    LEDGER_BACK_SELL("ledgerSell", MessageEnum.LEDGER_BACK_SELL),
+    LEDGER_PURCHASE("ledgerPurchase", MessageEnum.LEDGER_PURCHASE),
+    LEDGER_REVOCATION_PURCHASE("ledgerPurchase", MessageEnum.LEDGER_REVOCATION_PURCHASE),
+    LEDGER_CONFIRM_PURCHASE("ledgerPurchase", MessageEnum.LEDGER_CONFIRM_PURCHASE),
+    LEDGER_SUCCESS_PURCHASE("ledgerPurchase", MessageEnum.LEDGER_SUCCESS_PURCHASE),
+    LEDGER_BACK_PURCHASE("ledgerPurchase", MessageEnum.LEDGER_BACK_PURCHASE),
+
+    LEDGER_CARRIER("ledgerCarrier", MessageEnum.LEDGER_CARRIER),
+    LEDGER_SHIPPER("ledgerShipper", MessageEnum.LEDGER_SHIPPER),
+    LEDGER_REVOCATION_CARRIER("ledgerCarrier", MessageEnum.LEDGER_REVOCATION_CARRIER),
+    LEDGER_REVOCATION_SHIPPER("ledgerShipper", MessageEnum.LEDGER_REVOCATION_SHIPPER),
+    LEDGER_CONFIRM_CARRIER("ledgerCarrier", MessageEnum.LEDGER_CONFIRM_CARRIER),
+    LEDGER_CONFIRM_SHIPPER("ledgerShipper", MessageEnum.LEDGER_CONFIRM_SHIPPER),
+    LEDGER_SUCCESS_CARRIER("ledgerCarrier", MessageEnum.LEDGER_SUCCESS_CARRIER),
+    LEDGER_SUCCESS_SHIPPER("ledgerShipper", MessageEnum.LEDGER_SUCCESS_SHIPPER),
+    LEDGER_BACK_CARRIER("ledgerCarrier", MessageEnum.LEDGER_BACK_CARRIER),
+    LEDGER_BACK_SHIPPER("ledgerShipper", MessageEnum.LEDGER_BACK_SHIPPER),
+
+    SETTLEMENT_SELL("settlementSell", MessageEnum.SETTLEMENT_SELL),
+    SETTLEMENT_PURCHASE("settlementPurchase", MessageEnum.SETTLEMENT_PURCHASE),
+    SETTLEMENT_CONFIRM_SELL("ledgerPurchase", MessageEnum.SETTLEMENT_CONFIRM_SELL),
+    SETTLEMENT_CONFIRM_PURCHASE("settlementPurchase", MessageEnum.SETTLEMENT_CONFIRM_PURCHASE),
+    SETTLEMENT_START_SELL("settlementSell", MessageEnum.SETTLEMENT_START_SELL),
+    SETTLEMENT_START_PURCHASE("settlementPurchase", MessageEnum.SETTLEMENT_START_PURCHASE),
+
+    SETTLEMENT_CARRIER("settlementCarrier", MessageEnum.SETTLEMENT_CARRIER),
+    SETTLEMENT_SHIPPER("settlementShipper", MessageEnum.SETTLEMENT_SHIPPER),
+    SETTLEMENT_CONFIRM_CARRIER("settlementCarrier", MessageEnum.SETTLEMENT_CONFIRM_CARRIER),
+    SETTLEMENT_CONFIRM_SHIPPER("settlementShipper", MessageEnum.SETTLEMENT_CONFIRM_SHIPPER),
+    SETTLEMENT_START_CARRIER("settlementCarrier", MessageEnum.SETTLEMENT_START_CARRIER),
+    SETTLEMENT_START_SHIPPER("settlementShipper", MessageEnum.SETTLEMENT_START_SHIPPER),
+    ;
+    /**
+     * nacos种配置的前端跳转url
+     */
+    private final String key;
+
+    private final MessageEnum messageEnum;
+
+
+    JumpEnum(String key, MessageEnum messageEnum) {
+        this.key = key;
+        this.messageEnum = messageEnum;
+    }
+
+    /**
+     * 通过消息枚举值,获取跳转地址key
+     *
+     * @param messageEnum
+     * @return
+     */
+    public static String getByEnum(MessageEnum messageEnum) {
+        for (JumpEnum value : JumpEnum.values()) {
+            if (value.getMessageEnum() == messageEnum) {
+                return value.getKey();
+            }
+        }
+        return "";
+    }
+
+}

+ 8 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/IdNo.java

@@ -0,0 +1,8 @@
+package com.sckw.payment.model.dto;
+
+/**
+ * @param id 对账单id
+ * @param no 对账单编号
+ */
+public record IdNo(Long id, String no) {
+}

+ 68 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/dto/wallet/SplitDto.java

@@ -0,0 +1,68 @@
+package com.sckw.payment.model.dto.wallet;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Getter
+@Setter
+public class SplitDto implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -2392867380336186963L;
+    /**
+     * 支付方UID
+     */
+    @JSONField(name = "uid")
+    private String uid;
+    /**
+     * 清分收款方UID
+     */
+    @JSONField(name = "recv_uid")
+    private String recvUid;
+
+    /**
+     * 清分金额
+     */
+    @JSONField(name = "money")
+    private int money;
+    /**
+     * 记录时间
+     */
+    @JSONField(name = "create_time")
+    private String createTime;
+    /**
+     * 业务号
+     */
+    @JSONField(name = "business_no")
+    private String businessNo;
+    /**
+     * 支付通道
+     */
+    @JSONField(name = "channel")
+    private String channel;
+
+    @JSONField(name = "ap_no")
+    private Object apNo;
+    /**
+     * 清分单号
+     */
+    @JSONField(name = "sub_no")
+    private String subNo;
+    /**
+     * 完成时间
+     */
+    @JSONField(name = "finish_time")
+    private String finishTime;
+    /**
+     * 1-成功 2-等待分账 3-分帐中
+     */
+    @JSONField(name = "status")
+    private int status;
+
+    @JSONField(name = "status_label")
+    private String statusLabel;
+
+}

+ 26 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/ApPageRes.java

@@ -0,0 +1,26 @@
+package com.sckw.payment.model.vo.res;
+
+import com.sckw.core.model.page.PageRes;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 返回的分页数据中,有额外需要返回的参数
+ */
+@Getter
+@Setter
+public class ApPageRes<T> extends PageRes<T> {
+    private String apMoney;
+    private String usingApMoney;
+    private String totalApMoney;
+
+    public ApPageRes(int page, int pageSize, long size, int pages, List<T> list) {
+        super(page, pageSize, size, pages, list);
+        this.apMoney = "0.00";
+        this.usingApMoney = "0.00";
+        this.totalApMoney = "0.00";
+    }
+
+}

+ 138 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/MessageSender.java

@@ -0,0 +1,138 @@
+package com.sckw.payment.service;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.sckw.payment.model.JumpUrlConfig;
+import com.sckw.payment.model.KwpLedgerLogisticsTrack;
+import com.sckw.payment.model.KwpLedgerTradeTrack;
+import com.sckw.payment.model.constant.JumpEnum;
+import com.sckw.stream.enums.MessageEnum;
+import com.sckw.stream.model.SckwMessage;
+import com.sckw.stream.model.UserInfo;
+import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.cloud.stream.function.StreamBridge;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * @author xucaiqin
+ * @date 2023-09-06 20:20:45
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class MessageSender {
+    private final StreamBridge streamBridge;
+    private final JumpUrlConfig jumpUrlConfig;
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
+    private final KwpLedgerTradeTrackService tradeTrackService;
+    private final KwpLedgerLogisticsTrackService logisticsTrackService;
+
+    /**
+     * 变更人 当前操作用户,LoginUserHolder.getUserId()
+     * 系统管理员,queryEntCacheById contactsId
+     * 推送创建人
+     *
+     * @param map
+     * @param user        用户id为创建人id,企业id为创建人所在企业
+     * @param messageEnum
+     */
+    public void sendCreate(Long createBy, Map<String, Object> map, UserInfo user, MessageEnum messageEnum) {
+        SckwMessage sckwMessage = new SckwMessage(messageEnum).setMsgUrl(jumpUrlConfig.getUrl().get(JumpEnum.getByEnum(messageEnum))).setParams(map).setUserInfos(Collections.singletonList(user)).setCreateBy(createBy);
+        log.info("推送创建人:{}", JSONObject.toJSONString(sckwMessage));
+        streamBridge.send("sckw-message", JSON.toJSONString(sckwMessage));
+    }
+
+    /**
+     * 推送系统管理员
+     *
+     * @param map
+     * @param entId       对账单关联的企业id
+     * @param messageEnum 消息枚举
+     */
+    public void sendManager(Long createBy, Map<String, Object> map, Long entId, MessageEnum messageEnum) {
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(entId);
+        if (Objects.nonNull(entCacheResDto)) {
+            SckwMessage sckwMessage = new SckwMessage(messageEnum).setMsgUrl(jumpUrlConfig.getUrl().get(JumpEnum.getByEnum(messageEnum))).setParams(map).setUserInfos(Collections.singletonList(new UserInfo(entCacheResDto.getContactsId(), entCacheResDto.getId()))).setCreateBy(createBy);
+            log.info("推送系统管理员:{}", JSONObject.toJSONString(sckwMessage));
+            streamBridge.send("sckw-message", JSON.toJSONString(sckwMessage));
+        }
+    }
+
+    /**
+     * 推送销售变更人
+     *
+     * @param createBy
+     * @param map
+     * @param ledgerId    对账单id
+     * @param messageEnum
+     */
+    private void sendSellChanger(Long createBy, Map<String, Object> map, Long ledgerId, MessageEnum messageEnum) {
+        KwpLedgerTradeTrack kwpLedgerTradeTrack = tradeTrackService.queryLedgered(ledgerId);
+        if (Objects.nonNull(kwpLedgerTradeTrack)) {
+            UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(kwpLedgerTradeTrack.getCreateBy());
+            EntCacheResDto entCacheResDto = Objects.nonNull(userCacheResDto) ? (Objects.nonNull(userCacheResDto.getEntInfo()) ? userCacheResDto.getEntInfo() : new EntCacheResDto()) : new EntCacheResDto();
+            SckwMessage sckwMessage = new SckwMessage(messageEnum).setMsgUrl(jumpUrlConfig.getUrl().get(JumpEnum.getByEnum(messageEnum))).setParams(map).setUserInfos(Collections.singletonList(new UserInfo(kwpLedgerTradeTrack.getCreateBy(), entCacheResDto.getId()))).setCreateBy(createBy);
+            log.info("推送变更人:{}", JSONObject.toJSONString(sckwMessage));
+            streamBridge.send("sckw-message", JSON.toJSONString(sckwMessage));
+        }
+    }
+
+    /**
+     * 推送采购变更人
+     *
+     * @param createBy
+     * @param map
+     * @param ledgerId
+     * @param messageEnum
+     */
+    private void sendPurchaseChanger(Long createBy, Map<String, Object> map, Long ledgerId, MessageEnum messageEnum) {
+        KwpLedgerLogisticsTrack kwpLedgerLogisticsTrack = logisticsTrackService.queryLedgered(ledgerId);
+        if (Objects.nonNull(kwpLedgerLogisticsTrack)) {
+            UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(kwpLedgerLogisticsTrack.getCreateBy());
+            EntCacheResDto entCacheResDto = Objects.nonNull(userCacheResDto) ? (Objects.nonNull(userCacheResDto.getEntInfo()) ? userCacheResDto.getEntInfo() : new EntCacheResDto()) : new EntCacheResDto();
+            SckwMessage sckwMessage = new SckwMessage(messageEnum)
+                    .setMsgUrl(jumpUrlConfig.getUrl().get(JumpEnum.getByEnum(messageEnum)))
+                    .setParams(map).setUserInfos(Collections.singletonList(new UserInfo(kwpLedgerLogisticsTrack.getCreateBy(), entCacheResDto.getId()))).setCreateBy(createBy);
+            log.info("推送变更人:{}", JSONObject.toJSONString(sckwMessage));
+            streamBridge.send("sckw-message", JSON.toJSONString(sckwMessage));
+        }
+    }
+
+    /**
+     * 推送系统管理员和推送销售变更人
+     *
+     * @param createBy
+     * @param map
+     * @param ledgerId    对账单id
+     * @param entId       需要推送的对账单关联的企业
+     * @param messageEnum
+     */
+    public void sendSellBoth(Long createBy, Map<String, Object> map, Long ledgerId, Long entId, MessageEnum messageEnum) {
+        sendManager(createBy, map, entId, messageEnum);
+        sendSellChanger(createBy, map, ledgerId, messageEnum);
+    }
+
+    /**
+     * 推送系统管理员和推送采购变更人
+     *
+     * @param createBy
+     * @param map
+     * @param ledgerId 对账单id
+     * @param entId 需要推送的对账单关联的企业
+     * @param messageEnum
+     */
+    public void sendPurchaseBoth(Long createBy, Map<String, Object> map, Long ledgerId, Long entId, MessageEnum messageEnum) {
+        sendManager(createBy, map, entId, messageEnum);
+        sendPurchaseChanger(createBy, map, ledgerId, messageEnum);
+    }
+}