From f4b6b26b1ec37a534fcfc85dda943536d236ebd8 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Thu, 23 Oct 2025 17:24:21 +0800
Subject: [PATCH] 邮箱手机绑定
---
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiC2cOrderController.java | 236 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 232 insertions(+), 4 deletions(-)
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 98a3680..73b05db 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
@@ -17,17 +17,21 @@
import com.yami.trading.service.c2c.C2cPaymentMethodService;
import com.yami.trading.service.syspara.SysparaService;
import com.yami.trading.service.user.UserService;
+import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Arrays;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
@RestController
@Slf4j
@@ -170,10 +174,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("订单类型不正确");
@@ -211,6 +218,7 @@
this.c2cOrderService.saveOpen(c2cOrder,remarks);
data.put("order_no", c2cOrder.getOrderNo());
resultObject.setData(data);
+ resultObject.setCode(0);
} catch (BusinessException e) {
log.error("用户"+direction+"执行异常1当前用户uid:"+party.getUserCode()+"当前用户名:"+party.getUserName()+"生成的订单号:"+orderNo);
resultObject.setCode(1);
@@ -219,7 +227,8 @@
} catch (Throwable t) {
log.error("用户"+direction+"执行异常2当前用户uid:"+party.getUserCode()+"当前用户名:"+party.getUserName()+"生成的订单号:"+orderNo);
resultObject.setCode(1);
- resultObject.setMsg("程序错误");
+ //resultObject.setMsg("程序错误");
+ resultObject.setMsg(t.getMessage());
log.error("error:", t);
} finally {
if (lock) {
@@ -230,4 +239,223 @@
return resultObject;
}
+ @ApiOperation("校验是否设置支付方式")
+ @GetMapping(action + "payMethodCheck.action")
+ public Object payMethodCheck(HttpServletRequest request) {
+ String order_no = request.getParameter("order_no");
+ Result resultObject = new Result();
+
+ try {
+ String partyId = SecurityUtils.getCurrentUserId();
+ if (null == partyId) {
+ throw new BusinessException("请重新登录");
+ }
+ C2cOrder order = this.c2cOrderService.get(order_no);
+ if (null == order) {
+ throw new BusinessException("订单不存在");
+ }
+ if (order.getMethodType() == 0) {
+ throw new BusinessException("订单已提交,请等待商家设置收款方式");
+ }
+ resultObject.setCode(0);
+ } catch (BusinessException e) {
+ resultObject.setCode(1);
+ resultObject.setMsg(e.getMessage());
+ log.error("error: {}", e.getMessage());
+ } catch (Throwable t) {
+ resultObject.setCode(1);
+ //resultObject.setMsg("程序错误");
+ resultObject.setMsg(t.getMessage());
+ log.error("error:", t);
+ }
+ return resultObject;
+ }
+
+ @RequestMapping(action + "pay_finish.action")
+ 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();
+
+ boolean lock = false;
+
+ try {
+
+ String partyId = SecurityUtils.getCurrentUserId();
+ if (null == partyId) {
+ throw new BusinessException("请重新登录");
+ }
+
+ User party = userService.getById(partyId);
+ if (Constants.SECURITY_ROLE_TEST.equals(party.getRoleName())) {
+ throw new BusinessException("无权限");
+ }
+
+ if (!userService.checkLoginSafeword(partyId, safe_password)) {
+ throw new BusinessException("资金密码错误");
+ }
+
+ if (!party.isEnabled()) {
+ return Result.succeed("User is locked");
+ }
+
+ C2cOrder order = this.c2cOrderService.get(order_no);
+ if (null == order) {
+ throw new BusinessException("订单不存在");
+ }
+
+ if (img == null || img.isEmpty()) {
+ throw new BusinessException("请先上传支付凭证");
+ }
+
+ if (partyId.equals(order.getPartyId())) {
+ // 用户操作
+ if (!"buy".equals(order.getDirection())) {
+ throw new BusinessException("用户不能支付卖单");
+ }
+ } else if (partyId.equals(order.getC2cUserPartyId())) {
+ // 承兑商操作
+ if (!"sell".equals(order.getDirection())) {
+ throw new BusinessException("承兑商不能支付买单");
+ }
+ } else {
+ throw new BusinessException("无权限");
+ }
+
+ if (!"0".equals(order.getState())) {
+ throw new BusinessException("订单不是未付款状态");
+ }
+
+ if (!C2cOrderLock.add(order_no)) {
+ throw new BusinessException(1, "请稍后再试");
+ }
+
+ lock = true;
+
+ order.setState("1");
+ order.setPayTime(new Date());
+ order.setImg(img);
+ this.c2cOrderService.updateById(order);
+
+ if (Arrays.asList("0", "1").contains(order.getState())) {
+ // 只有未付款和已付款的订单存入redis
+ redisTemplate.opsForValue().set(RedisKeys.C2C_ORDER_NO + order.getOrderNo(), order);
+ } else {
+ redisTemplate.delete(RedisKeys.C2C_ORDER_NO + order.getOrderNo());
+ }
+
+ // 订单自动取消时间和确认收款超时时间(0未付款/1已付款)
+ Map<String, Long> map = (Map<String, Long>) redisTemplate.opsForValue().get(RedisKeys.C2C_ORDER_NO_EXPIRE_TIME);
+ if (null == map) {
+ map = new ConcurrentHashMap<String, Long>();
+ }
+ if (!Arrays.asList("0", "1").contains(order.getState())) {
+ map.remove(order.getOrderNo() + "_auto_cancel");
+ map.remove(order.getOrderNo() + "_expire");
+ } else {
+ if (Arrays.asList("0").contains(order.getState())) {
+ map.put(order.getOrderNo() + "_auto_cancel", order.getCreateTime().getTime() + (long) order.getExpireTime() * 60 * 1000);
+ map.put(order.getOrderNo() + "_expire", order.getCreateTime().getTime() + (long) order.getExpireTime() * 60 * 1000 * 2);
+ } else if (Arrays.asList("1").contains(order.getState())) {
+ map.put(order.getOrderNo() + "_auto_cancel", order.getCreateTime().getTime() + (long) order.getExpireTime() * 60 * 1000);
+ map.put(order.getOrderNo() + "_expire", order.getPayTime().getTime() + (long) order.getExpireTime() * 60 * 1000);
+ }
+ }
+ this.redisTemplate.opsForValue().set(RedisKeys.C2C_ORDER_NO_EXPIRE_TIME, map);
+
+ resultObject.setCode(0);
+ } catch (BusinessException e) {
+ resultObject.setCode(1);
+ resultObject.setMsg(e.getMessage());
+ log.error("error: {}", e.getMessage());
+ } catch (Throwable t) {
+ resultObject.setCode(1);
+ //resultObject.setMsg("程序错误");
+ resultObject.setMsg(t.getMessage());
+ log.error("error:", t);
+ } finally {
+ if (lock) {
+ ThreadUtils.sleep(100);
+ C2cOrderLock.remove(order_no);
+ }
+ }
+
+ return resultObject;
+ }
+
+ /**
+ * 订单放行
+ */
+ @RequestMapping(action + "order_pass.action")
+ public Object order_pass(HttpServletRequest request) {
+ String order_no = request.getParameter("order_no");
+ String safe_password = request.getParameter("safe_password");
+
+ Result resultObject = new Result();
+ boolean lock = false;
+ try {
+
+ String partyId = SecurityUtils.getCurrentUserId();
+ if (null == partyId) {
+ throw new BusinessException("请重新登录");
+ }
+
+ User party = userService.getById(partyId);
+ if (Constants.SECURITY_ROLE_TEST.equals(party.getRoleName())) {
+ throw new BusinessException("无权限");
+ }
+
+ if (!C2cOrderLock.add(order_no)) {
+ throw new BusinessException(1, "请稍后再试");
+ }
+
+ lock = true;
+
+ if (!userService.checkLoginSafeword(partyId, safe_password)) {
+ throw new BusinessException("资金密码错误");
+ }
+ if (!party.isEnabled()) {
+ return Result.succeed("User is locked");
+ }
+
+ C2cOrder order = this.c2cOrderService.get(order_no);
+ if (null == order || !order.getPartyId().equals(partyId)) {
+ throw new BusinessException("订单不存在");
+ }
+ if ("0".equals(order.getState())) {
+ throw new BusinessException("待付款的订单无法放行");
+ }
+ if ("3".equals(order.getState())) {
+ resultObject.setCode(0);
+ return resultObject;
+ //throw new BusinessException("订单已完成,无法放行");
+ }
+ if ("4".equals(order.getState())) {
+ throw new BusinessException("订单已取消,无法放行");
+ }
+
+ this.c2cOrderService.saveOrderPass(order);
+ resultObject.setCode(0);
+ } catch (BusinessException e) {
+ resultObject.setCode(1);
+ resultObject.setMsg(e.getMessage());
+ log.error("error:{}", e.getMessage());
+ } catch (Throwable t) {
+ resultObject.setCode(1);
+ //resultObject.setMsg("程序错误");
+ resultObject.setMsg(t.getMessage());
+ log.error("error:", t);
+ } finally {
+ if (lock) {
+ ThreadUtils.sleep(100);
+ C2cOrderLock.remove(order_no);
+ }
+ }
+
+ return resultObject;
+ }
+
+
}
--
Gitblit v1.9.3