新版仿ok交易所-后端
C2C
zyy
2025-10-23 a81d07227a9aa1033b70dc488575dad9830d5852
C2C
5 files modified
206 ■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/admin/controller/c2c/C2cOrderController.java 95 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/controller/c2c/model/PaymentMethodAddModel.java 3 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cOrderController.java 15 ●●●● patch | view | raw | blame | history
trading-order-common/src/main/java/com/yami/trading/common/constants/TipConstants.java 5 ●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/c2c/impl/C2cOrderServiceImpl.java 88 ●●●● patch | view | raw | blame | history
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("设置失败");
    }
}
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;
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())) {
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}条新的聊天消息");
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()));