From a81d07227a9aa1033b70dc488575dad9830d5852 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Thu, 23 Oct 2025 15:53:55 +0800
Subject: [PATCH] C2C

---
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cOrderController.java             |   15 +++
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/c2c/C2cOrderController.java          |   95 +++++++++++++++++++++++
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/c2c/model/PaymentMethodAddModel.java |    3 
 trading-order-service/src/main/java/com/yami/trading/service/c2c/impl/C2cOrderServiceImpl.java           |   88 +++++++++++----------
 trading-order-common/src/main/java/com/yami/trading/common/constants/TipConstants.java                   |    5 +
 5 files changed, 160 insertions(+), 46 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/c2c/C2cOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/c2c/C2cOrderController.java
index eb6a362..85de100 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/c2c/C2cOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/c2c/C2cOrderController.java
@@ -2,22 +2,28 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yami.trading.admin.controller.c2c.model.*;
+import com.yami.trading.bean.c2c.C2cAdvert;
 import com.yami.trading.bean.c2c.C2cOrder;
 import com.yami.trading.bean.model.C2cPaymentMethod;
+import com.yami.trading.bean.model.C2cPaymentMethodConfig;
+import com.yami.trading.bean.model.Log;
 import com.yami.trading.bean.model.User;
 import com.yami.trading.common.constants.Constants;
 import com.yami.trading.common.domain.Result;
 import com.yami.trading.common.exception.YamiShopBindException;
 import com.yami.trading.common.util.C2cOrderLock;
+import com.yami.trading.common.util.IPHelper;
 import com.yami.trading.common.util.StringUtils;
 import com.yami.trading.common.util.ThreadUtils;
 import com.yami.trading.security.common.util.SecurityUtils;
 import com.yami.trading.service.c2c.C2cAdvertService;
 import com.yami.trading.service.c2c.C2cOrderService;
+import com.yami.trading.service.c2c.C2cPaymentMethodConfigService;
 import com.yami.trading.service.chat.otc.OtcOnlineChatMessageService;
 import com.yami.trading.service.item.ItemService;
 import com.yami.trading.service.rate.ExchangeRateService;
 import com.yami.trading.service.user.UserService;
+import com.yami.trading.sys.model.SysUser;
 import com.yami.trading.sys.service.SysUserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -25,6 +31,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.text.MessageFormat;
 import java.util.*;
 
 @RestController
@@ -51,6 +58,9 @@
 
     @Autowired
     UserService userService;
+
+    @Autowired
+    C2cPaymentMethodConfigService c2cPaymentMethodConfigService;
 //
 //    private final String action = "normal/adminC2cOrderAction!";
 //
@@ -215,4 +225,89 @@
         return Result.succeed(detail_map);
     }
 
+    public String verifAdd(String orderNo, String method_config_id, String real_name, String param_value1, String login_safeword) {
+        if (StringUtils.isNullOrEmpty(orderNo)) {
+            return "请传入订单号";
+        }
+        if (StringUtils.isNullOrEmpty(method_config_id)) {
+            return "支付方式模板不正确";
+        }
+        if (StringUtils.isNullOrEmpty(real_name)) {
+            return "真实姓名必填";
+        }
+        if (StringUtils.isNullOrEmpty(param_value1)) {
+            return "参数值1必填";
+        }
+        if (StringUtils.isNullOrEmpty(login_safeword)) {
+            return "资金密码错误";
+        }
+        return "";
+    }
+
+    @PostMapping("setC2cOrderPayMethod")
+    @ApiOperation("设置C2C订单支付方式")
+    public Result setC2cOrderPayMethod(@RequestBody @Valid PaymentMethodAddModel model) {
+
+        try {
+            String error = verifAdd(model.getOrderNo(), model.getMethodConfigId(),
+                    model.getRealName(), model.getParamValue1(), model.getLoginSafeword());
+            if (!StringUtils.isNullOrEmpty(error)) {
+                throw new YamiShopBindException(error);
+            }
+
+            sysUserService.checkSafeWord(model.getLoginSafeword());
+
+            C2cOrder c2cOrder = this.c2cOrderService.get(model.getOrderNo());
+            if (null == c2cOrder) {
+                throw new YamiShopBindException("订单不存在");
+            }
+
+            C2cPaymentMethodConfig method = c2cPaymentMethodConfigService.getById(model.getMethodConfigId());
+            if (null == method) {
+                throw new YamiShopBindException("支付方式模板不存在");
+            }
+            c2cOrder.setMethodType(method.getMethodType());
+            c2cOrder.setMethodName(method.getMethodName());
+            c2cOrder.setMethodImg(method.getMethodImg());
+            c2cOrder.setRealName(model.getRealName());
+            c2cOrder.setParamName1(method.getParamName1());
+            c2cOrder.setParamValue1(model.getParamValue1());
+            c2cOrder.setParamName2(method.getParamName2());
+            c2cOrder.setParamValue2(model.getParamValue2());
+            c2cOrder.setParamName3(method.getParamName3());
+            c2cOrder.setParamValue3(model.getParamValue3());
+            c2cOrder.setParamName4(method.getParamName4());
+            c2cOrder.setParamValue4(model.getParamValue4());
+            c2cOrder.setParamName5(method.getParamName5());
+            c2cOrder.setParamValue5(model.getParamValue5());
+            c2cOrder.setParamName6(method.getParamName6());
+            c2cOrder.setParamValue6(model.getParamValue6());
+            c2cOrder.setParamName7(method.getParamName7());
+            c2cOrder.setParamValue7(model.getParamValue7());
+            c2cOrder.setParamName8(method.getParamName8());
+            c2cOrder.setParamValue8(model.getParamValue8());
+            c2cOrder.setParamName9(method.getParamName9());
+            c2cOrder.setParamValue9(model.getParamValue9());
+            c2cOrder.setParamName10(method.getParamName10());
+            c2cOrder.setParamValue10(model.getParamValue10());
+            c2cOrder.setParamName11(method.getParamName11());
+            c2cOrder.setParamValue11(model.getParamValue11());
+            c2cOrder.setParamName12(method.getParamName12());
+            c2cOrder.setParamValue12(model.getParamValue12());
+            c2cOrder.setParamName13(method.getParamName13());
+            c2cOrder.setParamValue13(model.getParamValue13());
+            c2cOrder.setParamName14(method.getParamName14());
+            c2cOrder.setParamValue14(model.getParamValue14());
+            c2cOrder.setParamName15(method.getParamName15());
+            c2cOrder.setParamValue15(model.getParamValue15());
+            c2cOrder.setQrcode(model.getQrcode());
+
+            this.c2cOrderService.updateById(c2cOrder);
+            return Result.ok(null);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Result.failed("设置失败");
+    }
+
 }
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/c2c/model/PaymentMethodAddModel.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/c2c/model/PaymentMethodAddModel.java
index 0b62a6a..14f80b7 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/c2c/model/PaymentMethodAddModel.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/c2c/model/PaymentMethodAddModel.java
@@ -10,6 +10,9 @@
 @ApiModel
 public class PaymentMethodAddModel {
 
+    @ApiModelProperty("订单号")
+    private  String orderNo;
+
     @ApiModelProperty("用户UID")
     private  String userCode;
 
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cOrderController.java
index b87c16c..0fdd53a 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cOrderController.java
@@ -172,10 +172,13 @@
                 throw new YamiShopBindException("广告不存在");
             }
 
-            C2cPaymentMethod method =c2cPaymentMethodService.get(payment_method_id);
-            if (null == method) {
-                throw new YamiShopBindException("支付方式不存在");
+            if (C2cAdvert.DIRECTION_SELL.equals(c2cAdvert.getDirection())) {
+                C2cPaymentMethod method =c2cPaymentMethodService.get(payment_method_id);
+                if (null == method) {
+                    throw new YamiShopBindException("支付方式不存在");
+                }
             }
+
 
             if (StringUtils.isEmptyString(order_type) || !Arrays.asList("by_amount", "by_num").contains(order_type)) {
                 throw new YamiShopBindException("订单类型不正确");
@@ -238,6 +241,7 @@
     public Object pay_finish(HttpServletRequest request) {
         String order_no = request.getParameter("order_no");
         String safe_password = request.getParameter("safe_password");
+        String img = request.getParameter("img");
 
         Result resultObject = new Result();
 
@@ -268,6 +272,10 @@
                 throw new BusinessException("订单不存在");
             }
 
+            if (img == null || img.isEmpty()) {
+                throw new BusinessException("请先上传支付凭证");
+            }
+
             if (partyId.equals(order.getPartyId())) {
                 // 用户操作
                 if (!"buy".equals(order.getDirection())) {
@@ -294,6 +302,7 @@
 
             order.setState("1");
             order.setPayTime(new Date());
+            order.setImg(img);
             this.c2cOrderService.updateById(order);
 
             if (Arrays.asList("0", "1").contains(order.getState())) {
diff --git a/trading-order-common/src/main/java/com/yami/trading/common/constants/TipConstants.java b/trading-order-common/src/main/java/com/yami/trading/common/constants/TipConstants.java
index 50b9fd4..ce70d38 100644
--- a/trading-order-common/src/main/java/com/yami/trading/common/constants/TipConstants.java
+++ b/trading-order-common/src/main/java/com/yami/trading/common/constants/TipConstants.java
@@ -98,6 +98,8 @@
         ACTION_MAP.put(USER_SAFEWORD_APPLY,  "/user-relation-reset");
         ACTION_MAP.put(CONTRACT_ORDER,  "/cryptos-spots-cryptos-spots-transport");
         ACTION_MAP.put(OTCORDER_ONLINECHAT,  "/c2c-c2c_pay_order");
+        ACTION_MAP.put(C2C_ORDER,  "/c2c-c2c_pay_order");
+
 
         ACTION_MAP.put(USER_SAFEWORD_APPLY+"-0",  "/user-relation-reset");
         ACTION_MAP.put(USER_SAFEWORD_APPLY+"-1",  "/user-relation-reset");
@@ -126,6 +128,7 @@
         MESSAGE_MAP.put(USER_SAFEWORD_APPLY+"-3", "您有{0}条新的用户取消邮箱绑定申请");
 //        MESSAGE_MAP.put(ONLINECHAT, "您有{0}条新的聊天消息");
         MESSAGE_MAP.put(OTCORDER_ONLINECHAT, "您的C2C订单有{0}条新的聊天消息");
+        MESSAGE_MAP.put(C2C_ORDER,  "您有{0}条新的C2C订单");
     };
 
     /**
@@ -142,7 +145,7 @@
         MESSAGE_TYPE.put(USER_SAFEWORD_APPLY, "4");
         MESSAGE_TYPE.put(BANK_CARD_ORDER, "4");
         MESSAGE_TYPE.put(CONTRACT_ORDER, "5");
-        MESSAGE_TYPE.put(OTCORDER_ONLINECHAT,  "6");
+        MESSAGE_TYPE.put(C2C_ORDER,  "6");
 //        MESSAGE_MAP.put(BANK_CARD_ORDER, "您有{0}条新的银行卡订单");
 //        MESSAGE_MAP.put(USER_SAFEWORD_APPLY, "您有{0}条新的用户资金密码修改申请");
 //        MESSAGE_MAP.put(ONLINECHAT, "您有{0}条新的聊天消息");
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/c2c/impl/C2cOrderServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/c2c/impl/C2cOrderServiceImpl.java
index 1dbb378..74a44ff 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/c2c/impl/C2cOrderServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/c2c/impl/C2cOrderServiceImpl.java
@@ -517,13 +517,12 @@
             throw new YamiShopBindException("承兑商的用户信息不存在");
         }
 
+
         C2cPaymentMethod method = this.c2cPaymentMethodService.get(c2cOrder.getPaymentMethodId());
-        if (null == method) {
-            throw new YamiShopBindException("支付方式不存在");
-        }
-
         if (C2cAdvert.DIRECTION_SELL.equals(c2cAdvert.getDirection())) {
-
+            if (null == method) {
+                throw new YamiShopBindException("支付方式不存在");
+            }
             if (!party.isWithdrawAuthority()) {
                 throw new YamiShopBindException( "无权限");
             }
@@ -536,9 +535,9 @@
             }
         } else {
 
-            if (!method.getPartyId().equals(c2cUser.getC2cUserPartyId())) {
+            /*if (!method.getPartyId().equals(c2cUser.getC2cUserPartyId())) {
                 throw new YamiShopBindException("支付方式不匹配该承兑商");
-            }
+            }*/
         }
 
         c2cOrder.setC2cUserType(c2cUser.getC2cUserType());
@@ -554,41 +553,46 @@
         c2cOrder.setPayRate(c2cAdvert.getPayRate());
         c2cOrder.setSymbolValue(c2cAdvert.getSymbolValue());
         c2cOrder.setExpireTime(c2cAdvert.getExpireTime());
-        c2cOrder.setMethodType(method.getMethodType());
-        c2cOrder.setMethodName(method.getMethodName());
-        c2cOrder.setMethodImg(method.getMethodImg());
-        c2cOrder.setRealName(method.getRealName());
-        c2cOrder.setParamName1(method.getParamName1());
-        c2cOrder.setParamValue1(method.getParamValue1());
-        c2cOrder.setParamName2(method.getParamName2());
-        c2cOrder.setParamValue2(method.getParamValue2());
-        c2cOrder.setParamName3(method.getParamName3());
-        c2cOrder.setParamValue3(method.getParamValue3());
-        c2cOrder.setParamName4(method.getParamName4());
-        c2cOrder.setParamValue4(method.getParamValue4());
-        c2cOrder.setParamName5(method.getParamName5());
-        c2cOrder.setParamValue5(method.getParamValue5());
-        c2cOrder.setParamName6(method.getParamName6());
-        c2cOrder.setParamValue6(method.getParamValue6());
-        c2cOrder.setParamName7(method.getParamName7());
-        c2cOrder.setParamValue7(method.getParamValue7());
-        c2cOrder.setParamName8(method.getParamName8());
-        c2cOrder.setParamValue8(method.getParamValue8());
-        c2cOrder.setParamName9(method.getParamName9());
-        c2cOrder.setParamValue9(method.getParamValue9());
-        c2cOrder.setParamName10(method.getParamName10());
-        c2cOrder.setParamValue10(method.getParamValue10());
-        c2cOrder.setParamName11(method.getParamName11());
-        c2cOrder.setParamValue11(method.getParamValue11());
-        c2cOrder.setParamName12(method.getParamName12());
-        c2cOrder.setParamValue12(method.getParamValue12());
-        c2cOrder.setParamName13(method.getParamName13());
-        c2cOrder.setParamValue13(method.getParamValue13());
-        c2cOrder.setParamName14(method.getParamName14());
-        c2cOrder.setParamValue14(method.getParamValue14());
-        c2cOrder.setParamName15(method.getParamName15());
-        c2cOrder.setParamValue15(method.getParamValue15());
-        c2cOrder.setQrcode(method.getQrcode());
+
+
+        if (C2cAdvert.DIRECTION_SELL.equals(c2cAdvert.getDirection())) {
+            c2cOrder.setMethodType(method.getMethodType());
+            c2cOrder.setMethodName(method.getMethodName());
+            c2cOrder.setMethodImg(method.getMethodImg());
+            c2cOrder.setRealName(method.getRealName());
+            c2cOrder.setParamName1(method.getParamName1());
+            c2cOrder.setParamValue1(method.getParamValue1());
+            c2cOrder.setParamName2(method.getParamName2());
+            c2cOrder.setParamValue2(method.getParamValue2());
+            c2cOrder.setParamName3(method.getParamName3());
+            c2cOrder.setParamValue3(method.getParamValue3());
+            c2cOrder.setParamName4(method.getParamName4());
+            c2cOrder.setParamValue4(method.getParamValue4());
+            c2cOrder.setParamName5(method.getParamName5());
+            c2cOrder.setParamValue5(method.getParamValue5());
+            c2cOrder.setParamName6(method.getParamName6());
+            c2cOrder.setParamValue6(method.getParamValue6());
+            c2cOrder.setParamName7(method.getParamName7());
+            c2cOrder.setParamValue7(method.getParamValue7());
+            c2cOrder.setParamName8(method.getParamName8());
+            c2cOrder.setParamValue8(method.getParamValue8());
+            c2cOrder.setParamName9(method.getParamName9());
+            c2cOrder.setParamValue9(method.getParamValue9());
+            c2cOrder.setParamName10(method.getParamName10());
+            c2cOrder.setParamValue10(method.getParamValue10());
+            c2cOrder.setParamName11(method.getParamName11());
+            c2cOrder.setParamValue11(method.getParamValue11());
+            c2cOrder.setParamName12(method.getParamName12());
+            c2cOrder.setParamValue12(method.getParamValue12());
+            c2cOrder.setParamName13(method.getParamName13());
+            c2cOrder.setParamValue13(method.getParamValue13());
+            c2cOrder.setParamName14(method.getParamName14());
+            c2cOrder.setParamValue14(method.getParamValue14());
+            c2cOrder.setParamName15(method.getParamName15());
+            c2cOrder.setParamValue15(method.getParamValue15());
+            c2cOrder.setQrcode(method.getQrcode());
+        }
+
         c2cOrder.setCreateTime(new Date());
         c2cOrder.setHandleTime(null);
         c2cOrder.setCloseTime(DateUtils.addMinute(c2cOrder.getCreateTime(), c2cOrder.getExpireTime()));

--
Gitblit v1.9.3