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

Commit cfc1022d authored by wangyifan's avatar wangyifan

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

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