记得上下班打卡 | git大法好,push需谨慎

Commit cfc1022d authored by wangyifan's avatar wangyifan

创建订单设置 收钱吧orderSn与 正在orderId对应关系

parent 50ce76a2
......@@ -445,8 +445,16 @@ public class GoblinRedisConst {
*/
public static final String SQB_ORDER_LOCK = PREFIX.concat("sqb:order:lock:");
/**
* 收钱吧订单扩展 key
*/
public static final String SQB_GOBLIN_GOODS_EXT_KEY = PREFIX.concat("sqb:goods:ext:");
/**
* 收钱吧 orderSn与正在orderId 对应关系 key
*/
public static final String SQB_GOBLIN_ORDER_SN_KEY = PREFIX.concat("sqb:orderSn:");
/**
* 收钱吧 用户订单列表
*/
......
......@@ -2,8 +2,6 @@ package com.liquidnet.common.third.sqb.param.response.data;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.liquidnet.common.third.sqb.param.request.CommonRequest;
import lombok.Data;
import java.util.List;
......@@ -16,114 +14,168 @@ import java.util.List;
@JsonIgnoreProperties(ignoreUnknown = true)
public class CashierQueryData {
/** 支付工具列表 */
/**
* 支付工具列表
*/
private List<PayTool> payTools;
/** 已选中的支付工具签名 */
/**
* 已选中的支付工具签名
*/
private String selectedSignature;
/** 全局提示 */
/**
* 全局提示
*/
private List<String> globalTips;
/** 响应唯一序列号 */
/**
* 响应唯一序列号
*/
private String seq;
/** 收单金额 */
/**
* 收单金额
*/
private Long amount;
/** 收款方信息 */
/**
* 收款方信息
*/
private Payee payee;
/** 业务信息 */
/**
* 业务信息
*/
private BizInfo bizInfo;
/** 金额模型 */
/**
* 金额模型
*/
private CashierAmount cashierAmount;
@Data
/**
* 支付工具详情
*/
* 支付工具详情
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class PayTool {
/** 支付工具id */
/**
* 支付工具id
*/
private Long id;
/** 支付工具代码 */
/**
* 支付工具代码
*/
private String code;
/** 支付工具名称 */
/**
* 支付工具名称
*/
private String name;
/** 支付工具类型 (0表示微信) */
/**
* 支付工具类型 (0表示微信)
*/
private Integer type;
/** 是否可选 */
/**
* 是否可选
*/
private Boolean selectable;
/** 是否选中 */
/**
* 是否选中
*/
private Boolean selected;
/** 展示金额 */
/**
* 展示金额
*/
private Long showAmount;
/** 提示列表 */
/**
* 提示列表
*/
private List<String> tips;
/** 金额构成 */
/**
* 金额构成
*/
private CommonRequest.AmountComposition amountComposition;
}
@Data
/**
* 收款方信息
*/
* 收款方信息
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Payee {
/** 商户id */
/**
* 商户id
*/
private String merchantId;
/** 商户名称 */
/**
* 商户名称
*/
private String merchantName;
/** 门店id */
/**
* 门店id
*/
private String storeId;
/** 门店名称 */
/**
* 门店名称
*/
private String storeName;
/** 终端号 */
/**
* 终端号
*/
private String terminalSn;
}
@Data
/**
* 业务信息
*/
* 业务信息
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class BizInfo {
/** 业务方 */
/**
* 业务方
*/
private String bizParty;
/** 交易应用 */
/**
* 交易应用
*/
private String tradeApp;
}
@Data
/**
* 金额明细模型
*/
* 金额明细模型
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class CashierAmount {
/** 原始支付金额 */
/**
* 原始支付金额
*/
private Long oriPaymentAmount;
/** 实际支付金额 */
/**
* 实际支付金额
*/
private Long discPaymentAmount;
/** 优惠金额 */
/**
* 优惠金额
*/
private Long discAmount;
}
......
......@@ -41,10 +41,10 @@ public class CreateWechatPrepayOrderData {
*/
private ChannelInfo channelInfo;
@Data
/**
* 订单金额明细
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class AmountDetails {
......@@ -102,10 +102,11 @@ public class CreateWechatPrepayOrderData {
private String nonceStr;
}
@Data
/**
* 通道信息详情
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class ChannelInfo {
......
......@@ -14,6 +14,7 @@ import com.liquidnet.common.third.sqb.param.response.data.OrderCreateData;
import com.liquidnet.common.third.sqb.param.response.data.SettlementCreateData;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.manage.GoblinSqbOrderParam;
......@@ -202,7 +203,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
CreateWechatPrepayOrderData.PaymentVoucher pv = prepayData.getPaymentVoucher();
log.info("[收钱吧下单] 创建微信预支付订单成功,timeStamp={}", pv.getTimeStamp());
String orderId = IDGenerator.nextSnowId();
final String orderId = IDGenerator.nextSnowId();
String masterOrderCode = IDGenerator.nextTimeId();
String orderCode = IDGenerator.nextTimeId();
String now = LocalDateTime.now().format(DTF);
......@@ -290,6 +291,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
goblinSqbRedisUtils.setSqbOrder(orderId, orderVo);
goblinSqbRedisUtils.addSqbOrderList(userId, orderId);
goblinSqbRedisUtils.setOrderIdBySqbOrderSn(sqbOrderSn, orderId);
log.info("[收钱吧下单] 订单写入 Redis 成功,orderId={}", orderId);
// Step 6: 写 MongoDB + 发送复用的 SQL MQ
......@@ -414,11 +416,11 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
@Override
public ResponseDto<String> handlePayCallback(OrderCallbackContent orderCallbackContent) {
log.info("[收钱吧支付回调] 收到回调参数: {}", orderCallbackContent);
// TODO 可能需要根据收钱吧的orderSn查询正在的orderId
String sqbOrderSn = orderCallbackContent.getOrderSn();
if (sqbOrderSn == null) return ResponseDto.failure("缺少订单标识");
if (StringUtil.isBlank(sqbOrderSn)) return ResponseDto.failure("缺少订单标识");
String orderId = "";
// 可能需要根据收钱吧的orderSn查询正在的orderId
final String orderId = goblinSqbRedisUtils.getOrderIdBySqbOrderSn(sqbOrderSn);
GoblinSqbOrderVo orderVo = goblinSqbRedisUtils.getSqbOrder(orderId);
if (orderVo == null) return ResponseDto.failure("订单不存在");
......@@ -436,9 +438,12 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
@Override
public ResponseDto<String> handleRefundCallback(RefundCallbackContent refundCallbackContent) {
log.info("[收钱吧退款回调] 收到回调参数: {}", refundCallbackContent);
// TODO 可能需要根据收钱吧的orderSn查询正在的orderId
String orderId = refundCallbackContent.getOrderSn();
if (orderId == null) return ResponseDto.failure("缺少订单标识");
String sqbOrderSn = refundCallbackContent.getOrderSn();
if (StringUtil.isBlank(sqbOrderSn)) return ResponseDto.failure("缺少订单标识");
// 可能需要根据收钱吧的orderSn查询正在的orderId
final String orderId = goblinSqbRedisUtils.getOrderIdBySqbOrderSn(sqbOrderSn);
GoblinSqbOrderVo orderVo = goblinSqbRedisUtils.getSqbOrder(orderId);
if (orderVo == null) return ResponseDto.failure("订单不存在");
......@@ -457,9 +462,12 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
@Override
public ResponseDto<String> handleCouponCallback(CouponCallbackContent callbackContent) {
log.info("[收钱吧券状态回调] 收到回调参数: {}", callbackContent);
// TODO 可能需要根据收钱吧的orderSn查询正在的orderId
String orderId = callbackContent.getOrderSn();
if (orderId == null) return ResponseDto.failure("缺少订单标识");
String sqbOrderSn = callbackContent.getOrderSn();
if (StringUtil.isBlank(sqbOrderSn)) return ResponseDto.failure("缺少订单标识");
// 可能需要根据收钱吧的orderSn查询正在的orderId
final String orderId = goblinSqbRedisUtils.getOrderIdBySqbOrderSn(sqbOrderSn);
GoblinSqbOrderVo orderVo = goblinSqbRedisUtils.getSqbOrder(orderId);
if (orderVo == null) return ResponseDto.failure("订单不存在");
......
......@@ -139,4 +139,28 @@ public class GoblinSqbRedisUtils {
return (GoblinSqbGoodsExtVo) obj;
}
}
/**
* 设置 收钱吧orderSn 与正在orderId 对应关系
* @param sqbOrderSn
* @param orderId
*/
public void setOrderIdBySqbOrderSn(String sqbOrderSn, String orderId) {
String redisKey = GoblinRedisConst.SQB_GOBLIN_ORDER_SN_KEY.concat(sqbOrderSn);
redisUtil.set(redisKey, orderId);
}
/**
* 获取 收钱吧orderSn 与正在orderId 对应关系
* @return
*/
public String getOrderIdBySqbOrderSn(String sqbOrderSn) {
String redisKey = GoblinRedisConst.SQB_GOBLIN_ORDER_SN_KEY.concat(sqbOrderSn);
Object object = redisUtil.get(redisKey);
if (object == null) {
return null;
} else {
return (String) object;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment