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

Commit 0a57e25c authored by wangyifan's avatar wangyifan

离线支付-精简逻辑

parent 52da284e
package com.liquidnet.service.goblin.dto.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 手环-子订单VO
*/
@Data
public class GoblinBraceletOrderEntitiesVo {
/**
* 订单详情ID
*/
private String orderEntitiesId;
/**
* 订单详情关联ID
*/
private String orderId;
/**
* 商品类型:1:手环 2:充值面值
*/
private Integer goodsType;
/**
* 商品ID wristband_id:手环ID amount_id:充值金额ID
*/
private String goodsId;
/**
* 商品名称
*/
private String goodsName;
/**
* 商品金额
*/
private BigDecimal goodsPrice;
/**
* 订单状态:
* 0 待付款
* 1 已付款
* 2 已关闭
* 3 正在退款
* 4 已退款
* 5 待关闭
* 6 部分退款
*/
private Integer status;
/**
* 支付状态:
* 0 未支付
* 1 已支付
* 2 支付失败
*/
private Integer payStatus;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
}
...@@ -47,6 +47,26 @@ public class GoblinBraceletOrderVo { ...@@ -47,6 +47,26 @@ public class GoblinBraceletOrderVo {
*/ */
private String goodsDesc; private String goodsDesc;
/**
* 手环ID
*/
private String wristbandId;
/**
*手环金额
*/
private BigDecimal wristbandPrice;
/**
*充值金额ID
*/
private String amountId;
/**
*充值金额
*/
private BigDecimal amountPrice;
/** /**
* 请求流水号 * 请求流水号
*/ */
...@@ -72,11 +92,6 @@ public class GoblinBraceletOrderVo { ...@@ -72,11 +92,6 @@ public class GoblinBraceletOrderVo {
*/ */
private String tradeType; private String tradeType;
/**
* ATU真实商户号
*/
private String atuSubMerId;
/** /**
* 用户账单上的交易订单号 * 用户账单上的交易订单号
*/ */
...@@ -141,6 +156,7 @@ public class GoblinBraceletOrderVo { ...@@ -141,6 +156,7 @@ public class GoblinBraceletOrderVo {
* 4 已退款 * 4 已退款
* 5 待关闭 * 5 待关闭
* 6 部分退款 * 6 部分退款
* 7 退款失败
*/ */
private Integer status; private Integer status;
...@@ -182,11 +198,5 @@ public class GoblinBraceletOrderVo { ...@@ -182,11 +198,5 @@ public class GoblinBraceletOrderVo {
*/ */
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
/**
* 订单详细列表VO
*/
private List<GoblinBraceletOrderEntitiesVo> orderEntitiesDetailVoList;
} }
package com.liquidnet.service.goblin.param.dougong;
import lombok.Data;
@Data
public class BaseDougongRequest<T> {
/**
* 系统号
* 渠道商/商户的huifu_id
* (1)当主体为渠道商时,此字段填写渠道商huifu_id;
* (2)当主体为直连商户时,此字段填写商户huifu_id;
*/
private String sysId;
/**
* 产品号
* 汇付分配的产品号,示例值:MCS
*/
private String productId;
/**
* 加签结果
*/
private String sign;
/**
* 数据
*/
private T data;
}
package com.liquidnet.service.goblin.param.dougong;
import lombok.Data;
/**
* 同步返回参数
* @param <T>
*/
@Data
public class BaseDougongResponse<T> {
/**
* 签名
*/
private String sign;
/**
* 响应内容体
*/
private T data;
}
package com.liquidnet.service.goblin.param.dougong; package com.liquidnet.service.goblin.param.dougong;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List; import java.util.List;
...@@ -92,6 +94,8 @@ public class DougongRequestParam { ...@@ -92,6 +94,8 @@ public class DougongRequestParam {
@Data @Data
@NoArgsConstructor
@AllArgsConstructor
public static class WxDataGoodsDetail { public static class WxDataGoodsDetail {
// 商品编码 // 商品编码
......
...@@ -22,7 +22,7 @@ liquidnet: ...@@ -22,7 +22,7 @@ liquidnet:
huifu-id: '6666000171841162' huifu-id: '6666000171841162'
sys-id: '6666000162031620' sys-id: '6666000162031620'
product-id: 'PAYUN' product-id: 'PAYUN'
sub-app-id: 'wxdfe9a5d141f96685' sub-app-id: 'wx4732efeaa2b08086'
public-key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArR8pqWsRMqiunn8uEZGF9AeizJK0vuWjlcNnTbw9Sb96dMVuYu3SRj+Dx4E4SgyEL4CYROou1xwY57kAKEqHdH7o1W41O9jYjXZG38BrtBR+D9Qh9OqGxCZ+e4Gi38XHGg6fn67iXefOqp1kWGd4qc8tIZO1lIDXS19R09D/mESNBMulQdVPyZF7gvd11A+7EEOfRlSOjrtqIoUWV0GIqhLPUtGJk8Uq/d9NLitJyvK3tgz8cvJ4RyK6UpGtRDrqiBiQxbvK9EqMd1sw3zkvM03szSWon4LHFNqvDr6RYfFyFUCvX9UPYmeritENnroEuTBlTFLLb68ed4HZEZDPTQIDAQAB" public-key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArR8pqWsRMqiunn8uEZGF9AeizJK0vuWjlcNnTbw9Sb96dMVuYu3SRj+Dx4E4SgyEL4CYROou1xwY57kAKEqHdH7o1W41O9jYjXZG38BrtBR+D9Qh9OqGxCZ+e4Gi38XHGg6fn67iXefOqp1kWGd4qc8tIZO1lIDXS19R09D/mESNBMulQdVPyZF7gvd11A+7EEOfRlSOjrtqIoUWV0GIqhLPUtGJk8Uq/d9NLitJyvK3tgz8cvJ4RyK6UpGtRDrqiBiQxbvK9EqMd1sw3zkvM03szSWon4LHFNqvDr6RYfFyFUCvX9UPYmeritENnroEuTBlTFLLb68ed4HZEZDPTQIDAQAB"
private-key: "MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDJAOaA1ikJzDL0vUuTyl3/vlHyuSod6/gFLLrSTD6EJkma5Ld34HHu82/5pEojEvbcU113L9j3fUJlpyjX6CFk6j2KjMIuyFxhgrVFi5WT5m74wYohoWNifkQrgwsO3oxI7cewWFu/w7/yCK9dzI4QxasGUKH9iPweI+26IR0DBbOfC9GVudOy2b2xLrGAevEEHdVTNqrQNdlrTzqAH7r3uk8s2vaBZX+O4gyf7eKdHdC4CVSWfYPLO1sA48MxNwI7OExxfGeV+0wmBMGRSoZ5FhWsqZs+f9jGcmfF+uEfAO71PqHjezXYxq7+oWDfDBPCTc5fo9w5v1HV0aZaYOe1AgMBAAECggEBAI4yR98fInse7XF8NOpBwIv6/QhEfAoc9CHdCfFaJOPiHjIo2a5BpvhPWYj288eqU998TmPSAqDbCUzWm6taOb2lhJHukDT+Y3RMPqcLX275Fsp+SJUQEjoMb3eExh7ny8CQDrOvXoDkH3c/M6ic3Gf7Hslh46dz8D/2VOhXIqoObPlSLzniwiMTDBEwB7IRc3Q+r4V6ZnKt8wjKQZpotBA3TlJlEBBj/h5SbWokwMQbTqFkjl7gVe0ase2WfV+cD4qhPZx6CWphPVyWelg+wpDqXOIQdnE8pgri5a9ZkzgPTOrKyCm+EOa9lZAp81tnb2iFhrlkKPSWUW8zLtZzxMECgYEA+sNyF0U9anyxeKxXtlGKKuMHJSnBpZeU6FSvZjTewFH2Sxh3QwZjg6h5BfvTLH1XfNerx3gdpAPJ+EyAZuEibDr47bp+j4CtT27dVolz5XQ5ugOadwzdNZkq6vhuq1aGATmS/mlNE1/pdMEP9F6hi2HYncER6BFOy0xSwMKCnRECgYEAzTNxhvZ0pb2hPKylxHUydkm3Uznq5Zkquv6II6W5aiKvceETHwdRZLoKc+I0kd0/4fBfJI2Jsjexy51ERiG+8y4wVrcrky6NLw6mnXSvnTSQCftbexheJTg9c5dpfKIj+rxtuBeZ3Sj1MJQ6OSBUYu3iTqstO0Rgp/1ofWQJ8GUCgYEAspxzr0+KJ0cZwbI/54S8vT9n33iWjbQiRDnNlScjYij/HQ4YJI1wZF6jlTeBerbskeesWy+bLS/ltA4Jhz3knuKCXBHyA5TL3UBCN1lAS7c1RuE6LIHlLkAi6ap6aV//ou+3W671T0+JobfB/XVJ61WOTQ8wCfQKA5QhfVsOXYECgYEAvzbm3Ysfm6qfazi+p9lGErASov1fhGA8T1AMcJtnsh1sO8Qu20UodaJfRylNL3dqphIltpwl6eq4RTLhgjDEDTvHU6cQdfB1I5qVbDhlxSpL5uFRl91XLXvA18wKQledC3M3Esr7V/loscIOl1knCaD+t6wPVCEdqK0dB2uHT3kCgYEA3p3rlmCmWzkZ/U8jE4087YEkJWV+r86YC63r4YZEqZtfHk4hNchAYke4jYPqkTtmRVZi2C6KuVr5M3ASHmGWorBY0VA9Abd3daniNocZCeMOt4Z7U6MIbqW7KYSrjx8V8HIsdH7HF97ofRuMH6oaz9bFMM6XwrEAMY+zTdH9A4Y=" private-key: "MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDJAOaA1ikJzDL0vUuTyl3/vlHyuSod6/gFLLrSTD6EJkma5Ld34HHu82/5pEojEvbcU113L9j3fUJlpyjX6CFk6j2KjMIuyFxhgrVFi5WT5m74wYohoWNifkQrgwsO3oxI7cewWFu/w7/yCK9dzI4QxasGUKH9iPweI+26IR0DBbOfC9GVudOy2b2xLrGAevEEHdVTNqrQNdlrTzqAH7r3uk8s2vaBZX+O4gyf7eKdHdC4CVSWfYPLO1sA48MxNwI7OExxfGeV+0wmBMGRSoZ5FhWsqZs+f9jGcmfF+uEfAO71PqHjezXYxq7+oWDfDBPCTc5fo9w5v1HV0aZaYOe1AgMBAAECggEBAI4yR98fInse7XF8NOpBwIv6/QhEfAoc9CHdCfFaJOPiHjIo2a5BpvhPWYj288eqU998TmPSAqDbCUzWm6taOb2lhJHukDT+Y3RMPqcLX275Fsp+SJUQEjoMb3eExh7ny8CQDrOvXoDkH3c/M6ic3Gf7Hslh46dz8D/2VOhXIqoObPlSLzniwiMTDBEwB7IRc3Q+r4V6ZnKt8wjKQZpotBA3TlJlEBBj/h5SbWokwMQbTqFkjl7gVe0ase2WfV+cD4qhPZx6CWphPVyWelg+wpDqXOIQdnE8pgri5a9ZkzgPTOrKyCm+EOa9lZAp81tnb2iFhrlkKPSWUW8zLtZzxMECgYEA+sNyF0U9anyxeKxXtlGKKuMHJSnBpZeU6FSvZjTewFH2Sxh3QwZjg6h5BfvTLH1XfNerx3gdpAPJ+EyAZuEibDr47bp+j4CtT27dVolz5XQ5ugOadwzdNZkq6vhuq1aGATmS/mlNE1/pdMEP9F6hi2HYncER6BFOy0xSwMKCnRECgYEAzTNxhvZ0pb2hPKylxHUydkm3Uznq5Zkquv6II6W5aiKvceETHwdRZLoKc+I0kd0/4fBfJI2Jsjexy51ERiG+8y4wVrcrky6NLw6mnXSvnTSQCftbexheJTg9c5dpfKIj+rxtuBeZ3Sj1MJQ6OSBUYu3iTqstO0Rgp/1ofWQJ8GUCgYEAspxzr0+KJ0cZwbI/54S8vT9n33iWjbQiRDnNlScjYij/HQ4YJI1wZF6jlTeBerbskeesWy+bLS/ltA4Jhz3knuKCXBHyA5TL3UBCN1lAS7c1RuE6LIHlLkAi6ap6aV//ou+3W671T0+JobfB/XVJ61WOTQ8wCfQKA5QhfVsOXYECgYEAvzbm3Ysfm6qfazi+p9lGErASov1fhGA8T1AMcJtnsh1sO8Qu20UodaJfRylNL3dqphIltpwl6eq4RTLhgjDEDTvHU6cQdfB1I5qVbDhlxSpL5uFRl91XLXvA18wKQledC3M3Esr7V/loscIOl1knCaD+t6wPVCEdqK0dB2uHT3kCgYEA3p3rlmCmWzkZ/U8jE4087YEkJWV+r86YC63r4YZEqZtfHk4hNchAYke4jYPqkTtmRVZi2C6KuVr5M3ASHmGWorBY0VA9Abd3daniNocZCeMOt4Z7U6MIbqW7KYSrjx8V8HIsdH7HF97ofRuMH6oaz9bFMM6XwrEAMY+zTdH9A4Y="
notify-url: 'https://testgoblin.zhengzai.tv/goblin/bracelet/callback' notify-url: 'https://testgoblin.zhengzai.tv/goblin/bracelet/callback'
...@@ -59,6 +59,26 @@ public class GoblinBraceletOrder implements Serializable { ...@@ -59,6 +59,26 @@ public class GoblinBraceletOrder implements Serializable {
*/ */
private String goodsDesc; private String goodsDesc;
/**
* 手环ID
*/
private String wristbandId;
/**
*手环金额
*/
private BigDecimal wristbandPrice;
/**
*充值金额ID
*/
private String amountId;
/**
*充值金额
*/
private BigDecimal amountPrice;
/** /**
* 请求流水号 * 请求流水号
*/ */
...@@ -84,10 +104,6 @@ public class GoblinBraceletOrder implements Serializable { ...@@ -84,10 +104,6 @@ public class GoblinBraceletOrder implements Serializable {
*/ */
private String tradeType; private String tradeType;
/**
* ATU真实商户号
*/
private String atuSubMerId;
/** /**
* 用户账单上的交易订单号 * 用户账单上的交易订单号
...@@ -153,6 +169,7 @@ public class GoblinBraceletOrder implements Serializable { ...@@ -153,6 +169,7 @@ public class GoblinBraceletOrder implements Serializable {
* 4 已退款 * 4 已退款
* 5 待关闭 * 5 待关闭
* 6 部分退款 * 6 部分退款
* 7 退款失败
*/ */
private Integer status; private Integer status;
......
package com.liquidnet.service.goblin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 手环订单详情表实体类
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinBraceletOrderEntities implements Serializable {
/**
* 主键ID
*/
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 订单详情ID
*/
private String orderEntitiesId;
/**
* 订单详情关联ID
*/
private String orderId;
/**
* 商品类型:1:手环 2:充值面值
*/
private Integer goodsType;
/**
* 商品ID wristband_id:手环ID amount_id:充值金额ID
*/
private String goodsId;
/**
* 商品名称
*/
private String goodsName;
/**
* 商品金额
*/
private BigDecimal goodsPrice;
/**
* 订单状态:
* 0 待付款
* 1 已付款
* 2 已关闭
* 3 正在退款
* 4 已退款
* 5 待关闭
* 6 部分退款
*/
private Integer status;
/**
* 支付状态:
* 0 未支付
* 1 已支付
* 2 支付失败
*/
private Integer payStatus;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
}
...@@ -5,7 +5,10 @@ import com.liquidnet.commons.lang.util.*; ...@@ -5,7 +5,10 @@ import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.goblin.dto.vo.*; import com.liquidnet.service.goblin.dto.vo.GoblinBraceletOrderVo;
import com.liquidnet.service.goblin.dto.vo.GoblinBraceletPayResultVo;
import com.liquidnet.service.goblin.dto.vo.GoblinRechargeAmountVo;
import com.liquidnet.service.goblin.dto.vo.GoblinRechargeWristbandVo;
import com.liquidnet.service.goblin.entity.GoblinBraceletOrder; import com.liquidnet.service.goblin.entity.GoblinBraceletOrder;
import com.liquidnet.service.goblin.enums.OrderStatus; import com.liquidnet.service.goblin.enums.OrderStatus;
import com.liquidnet.service.goblin.enums.PayStatus; import com.liquidnet.service.goblin.enums.PayStatus;
...@@ -15,7 +18,6 @@ import com.liquidnet.service.goblin.param.dougong.DougongJsPayData; ...@@ -15,7 +18,6 @@ import com.liquidnet.service.goblin.param.dougong.DougongJsPayData;
import com.liquidnet.service.goblin.param.dougong.DougongRequestParam; import com.liquidnet.service.goblin.param.dougong.DougongRequestParam;
import com.liquidnet.service.goblin.param.dougong.DougongSyncCallbackparam; import com.liquidnet.service.goblin.param.dougong.DougongSyncCallbackparam;
import com.liquidnet.service.goblin.service.IGoblinBraceletOrderService; import com.liquidnet.service.goblin.service.IGoblinBraceletOrderService;
import com.liquidnet.service.goblin.service.IGoblinBraceletOrderService;
import com.liquidnet.service.goblin.service.IGoblinDougongPayService; import com.liquidnet.service.goblin.service.IGoblinDougongPayService;
import com.liquidnet.service.goblin.service.IGoblinRechargeWristbandService; import com.liquidnet.service.goblin.service.IGoblinRechargeWristbandService;
import com.liquidnet.service.goblin.util.GoblinRedisUtils; import com.liquidnet.service.goblin.util.GoblinRedisUtils;
...@@ -47,13 +49,11 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr ...@@ -47,13 +49,11 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr
@Override @Override
public ResponseDto<GoblinBraceletPayResultVo> checkOrder(GoblinBraceletOrderPayParam payParam) { public ResponseDto<GoblinBraceletPayResultVo> checkOrder(GoblinBraceletOrderPayParam payParam) {
log.info("request param: {}.", JsonUtils.toJson(payParam)); log.info("request param: {}.", JsonUtils.toJson(payParam));
// 1. 检查商品
GoblinRechargeWristbandVo rechargeWristbandVo = rechargeWristbandService.getList(); GoblinRechargeWristbandVo rechargeWristbandVo = rechargeWristbandService.getList();
if (rechargeWristbandVo == null) { if (rechargeWristbandVo == null) {
log.error("查询商品为空"); log.error("查询商品为空");
return ResponseDto.failure("下单失败"); return ResponseDto.failure("下单失败");
} }
// 2. 计算金额
if (!rechargeWristbandVo.getWristbandId().equals(payParam.getWristbandId())) { if (!rechargeWristbandVo.getWristbandId().equals(payParam.getWristbandId())) {
log.error("下单商品不存在"); log.error("下单商品不存在");
return ResponseDto.failure("下单商品不存在"); return ResponseDto.failure("下单商品不存在");
...@@ -76,11 +76,9 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr ...@@ -76,11 +76,9 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr
// 要充值的面额 // 要充值的面额
final GoblinRechargeAmountVo payAmountVo = payAmountList.get(0); final GoblinRechargeAmountVo payAmountVo = payAmountList.get(0);
final String orderId = IDGenerator.nextSnowId();
final GoblinBraceletOrderVo orderVo = getOrderVo(rechargeWristbandVo.getWristbandId(), final GoblinBraceletOrderVo orderVo = buildRechargeOrder(orderId, rechargeWristbandVo.getWristbandId(), rechargeWristbandVo.getPrice(),
rechargeWristbandVo.getName(), payAmountVo.getAmountId(), payAmountVo.getPrice(), payParam);
rechargeWristbandVo.getPrice(),
payAmountVo, payParam);
if (orderVo == null) { if (orderVo == null) {
log.error("下单失败"); log.error("下单失败");
...@@ -96,7 +94,8 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr ...@@ -96,7 +94,8 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr
dougongJsPayData.setTransAmt(orderVo.getPriceTotal().setScale(2, RoundingMode.HALF_UP).toPlainString()); dougongJsPayData.setTransAmt(orderVo.getPriceTotal().setScale(2, RoundingMode.HALF_UP).toPlainString());
dougongJsPayData.setTimeExpire(DateUtil.format(DateUtil.addHour(new Date(), 2), DateUtil.Formatter.yyyyMMddHHmmssTrim)); dougongJsPayData.setTimeExpire(DateUtil.format(DateUtil.addHour(new Date(), 2), DateUtil.Formatter.yyyyMMddHHmmssTrim));
dougongJsPayData.setSubOpenid(payParam.getSubOpenId()); dougongJsPayData.setSubOpenid(payParam.getSubOpenId());
dougongJsPayData.setGoodsDetailList(getGoodsDetailList(orderVo.getOrderEntitiesDetailVoList())); dougongJsPayData.setGoodsDetailList(getGoodsDetailList(rechargeWristbandVo.getWristbandId(),
rechargeWristbandVo.getPrice(), rechargeWristbandVo.getName(), payAmountVo));
Map<String, Object> dougongResponseMap = dougongPayService.jsPay(dougongJsPayData); Map<String, Object> dougongResponseMap = dougongPayService.jsPay(dougongJsPayData);
if (null == dougongResponseMap || dougongResponseMap.isEmpty()) { if (null == dougongResponseMap || dougongResponseMap.isEmpty()) {
...@@ -106,7 +105,6 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr ...@@ -106,7 +105,6 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr
// 根据响应接口填充参数 // 根据响应接口填充参数
orderVo.setHfSeqId((String) dougongResponseMap.get("hf_seq_id")); orderVo.setHfSeqId((String) dougongResponseMap.get("hf_seq_id"));
orderVo.setAtuSubMerId((String) dougongResponseMap.get("atu_sub_mer_id"));
orderVo.setPartyOrderId((String) dougongResponseMap.get("party_order_id")); orderVo.setPartyOrderId((String) dougongResponseMap.get("party_order_id"));
// 5. 根据响应结构写 redis、mysql // 5. 根据响应结构写 redis、mysql
...@@ -115,28 +113,20 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr ...@@ -115,28 +113,20 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr
LinkedList<String> sqls = CollectionUtil.linkedListString(); LinkedList<String> sqls = CollectionUtil.linkedListString();
sqls.add(SqlMapping.get("goblin_bracelet_order_insert")); sqls.add(SqlMapping.get("goblin_bracelet_order_insert"));
sqls.add(SqlMapping.get("goblin_bracelet_order_entities_insert"));
LinkedList<Object[]> sqlDataOrder = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> sqlDataOrder = CollectionUtil.linkedListObjectArr();
sqlDataOrder.add(new Object[]{ sqlDataOrder.add(new Object[]{
orderVo.getOrderId(), orderVo.getUserId(), orderVo.getBindName(), orderVo.getBindMobile(), orderVo.getBindIdcard(), orderVo.getReqDate(), orderVo.getGoodsDesc(), orderVo.getOrderId(), orderVo.getUserId(), orderVo.getBindName(), orderVo.getBindMobile(), orderVo.getBindIdcard(),
orderVo.getReqSeqId(), orderVo.getHfSeqId(), orderVo.getTradeType(), orderVo.getAtuSubMerId(), orderVo.getPartyOrderId(), orderVo.getReqDate(), orderVo.getGoodsDesc(), orderVo.getWristbandId(), orderVo.getWristbandPrice(), orderVo.getAmountId(),
orderVo.getPrice(), orderVo.getPriceTotal(), orderVo.getPriceRefund(), orderVo.getRefundPriceCharges(), orderVo.getAmountPrice(), orderVo.getReqSeqId(), orderVo.getHfSeqId(), orderVo.getTradeType(),
orderVo.getRefundNumber(), orderVo.getStatus(), orderVo.getPayStatus(), orderVo.getCreatedAt(), orderVo.getUpdatedAt() orderVo.getPartyOrderId(), orderVo.getPrice(), orderVo.getPriceTotal(), orderVo.getPriceRefund(),
orderVo.getRefundPriceCharges(), orderVo.getRefundNumber(), orderVo.getStatus(), orderVo.getPayStatus(),
orderVo.getCreatedAt(), orderVo.getUpdatedAt()
}); });
LinkedList<Object[]> sqlDataOrderEntities = CollectionUtil.linkedListObjectArr();
for (GoblinBraceletOrderEntitiesVo entitiesVo : orderVo.getOrderEntitiesDetailVoList()) {
sqlDataOrderEntities.add(new Object[]{
entitiesVo.getOrderEntitiesId(), entitiesVo.getOrderId(), entitiesVo.getGoodsType(), entitiesVo.getGoodsId(), entitiesVo.getGoodsName(),
entitiesVo.getGoodsPrice(), entitiesVo.getStatus(), entitiesVo.getPayStatus(), entitiesVo.getCreatedAt(),
entitiesVo.getUpdatedAt()
});
}
queueUtils.sendMsgByRedis( queueUtils.sendMsgByRedis(
MQConst.GoblinQueue.SQL_GOODS.getKey(), MQConst.GoblinQueue.SQL_GOODS.getKey(),
SqlMapping.gets(sqls, sqlDataOrder, sqlDataOrderEntities) SqlMapping.gets(sqls, sqlDataOrder)
); );
// 6. 响应数据 // 6. 响应数据
...@@ -147,58 +137,36 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr ...@@ -147,58 +137,36 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr
return ResponseDto.success(resultVo); return ResponseDto.success(resultVo);
} }
private List<DougongRequestParam.WxDataGoodsDetail> getGoodsDetailList(List<GoblinBraceletOrderEntitiesVo> orderEntitiesDetailVoList) { private List<DougongRequestParam.WxDataGoodsDetail> getGoodsDetailList(String wristbandId,
if (orderEntitiesDetailVoList.isEmpty()) { BigDecimal wristbandPrice,
return Collections.emptyList(); String wristbandName,
} GoblinRechargeAmountVo payAmountVo) {
List<DougongRequestParam.WxDataGoodsDetail> goodsDetailList = new ArrayList<>(orderEntitiesDetailVoList.size()); List<DougongRequestParam.WxDataGoodsDetail> goodsDetailList = new ArrayList<>();
for (GoblinBraceletOrderEntitiesVo entitiesVo : orderEntitiesDetailVoList) { goodsDetailList.add(new DougongRequestParam.WxDataGoodsDetail(wristbandId, wristbandName, wristbandPrice.toPlainString(), 1));
DougongRequestParam.WxDataGoodsDetail detail = new DougongRequestParam.WxDataGoodsDetail(); goodsDetailList.add(new DougongRequestParam.WxDataGoodsDetail(payAmountVo.getAmountId(), payAmountVo.getName(), payAmountVo.getPrice().toPlainString(), 1));
detail.setGoodsId(entitiesVo.getGoodsId());
detail.setGoodsName(entitiesVo.getGoodsName());
detail.setPrice(entitiesVo.getGoodsPrice().toPlainString());
detail.setQuantity(1);
goodsDetailList.add(detail);
}
return goodsDetailList; return goodsDetailList;
} }
/** /**
* @param wristbandId 手环ID * @param orderId 手环订单ID
* @param name 手环名称 * @param wristbandId 手环ID
* @param price 手环价格 * @param wristbandPrice 手环金额
* @param payAmountVo 充值面额VO * @param amountId 充值金额ID
* @param payParam 请求参数 * @param amountPrice 充值金额
* @return orderId * @param payParam
* @return
*/ */
private GoblinBraceletOrderVo getOrderVo(String wristbandId, private GoblinBraceletOrderVo buildRechargeOrder(String orderId,
String name, String wristbandId,
BigDecimal price, BigDecimal wristbandPrice,
GoblinRechargeAmountVo payAmountVo, String amountId,
GoblinBraceletOrderPayParam payParam) { BigDecimal amountPrice,
// 需付款金额 GoblinBraceletOrderPayParam payParam) {
BigDecimal totalAmount = BigDecimal.ZERO.add(price).add(payAmountVo.getPrice()); BigDecimal totalAmount = BigDecimal.ZERO.add(wristbandPrice).add(amountPrice);
final String uid = CurrentUtil.getCurrentUid(); final String uid = CurrentUtil.getCurrentUid();
log.info("用户下单, 需要支付金额: {}, uid: {}.", totalAmount.toPlainString(), uid); log.info("用户{}需要付款金额: {}.", uid, totalAmount.toPlainString());
final String orderId = IDGenerator.nextSnowId();
try {
List<GoblinBraceletOrderEntitiesVo> list = new ArrayList<>();
list.add(buildRechargeOrderEntitiesVo(wristbandId, name, price, 1, orderId));
list.add(buildRechargeOrderEntitiesVo(payAmountVo.getAmountId(), payAmountVo.getName(), payAmountVo.getPrice(), 2, orderId));
GoblinBraceletOrderVo orderVo = buildRechargeOrder(payParam, orderId, uid, totalAmount);
orderVo.setOrderEntitiesDetailVoList(list);
return orderVo;
} catch (Exception e) {
log.error("error", e);
return null;
}
}
private GoblinBraceletOrderVo buildRechargeOrder(GoblinBraceletOrderPayParam payParam, String orderId, String uid, BigDecimal totalAmount) {
GoblinBraceletOrderVo braceletOrderVo = new GoblinBraceletOrderVo(); GoblinBraceletOrderVo braceletOrderVo = new GoblinBraceletOrderVo();
braceletOrderVo.setOrderId(orderId); braceletOrderVo.setOrderId(orderId);
braceletOrderVo.setUserId(uid); braceletOrderVo.setUserId(uid);
...@@ -207,6 +175,10 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr ...@@ -207,6 +175,10 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr
braceletOrderVo.setBindIdcard(payParam.getIdCard()); braceletOrderVo.setBindIdcard(payParam.getIdCard());
braceletOrderVo.setReqDate(DateUtil.getNowTime("yyyyMMdd")); braceletOrderVo.setReqDate(DateUtil.getNowTime("yyyyMMdd"));
braceletOrderVo.setGoodsDesc(getGoodsDesc()); braceletOrderVo.setGoodsDesc(getGoodsDesc());
braceletOrderVo.setWristbandId(wristbandId);
braceletOrderVo.setWristbandPrice(wristbandPrice);
braceletOrderVo.setAmountId(amountId);
braceletOrderVo.setAmountPrice(amountPrice);
braceletOrderVo.setReqSeqId(IDGenerator.nextSnowId()); braceletOrderVo.setReqSeqId(IDGenerator.nextSnowId());
braceletOrderVo.setTradeType("T_MINIAPP"); braceletOrderVo.setTradeType("T_MINIAPP");
braceletOrderVo.setPrice(totalAmount); braceletOrderVo.setPrice(totalAmount);
...@@ -221,20 +193,6 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr ...@@ -221,20 +193,6 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr
return braceletOrderVo; return braceletOrderVo;
} }
private GoblinBraceletOrderEntitiesVo buildRechargeOrderEntitiesVo(String goodsId, String goodsName, BigDecimal goodsPrice, Integer goodsType, String orderId) {
GoblinBraceletOrderEntitiesVo entitiesVo = new GoblinBraceletOrderEntitiesVo();
entitiesVo.setOrderId(orderId);
entitiesVo.setOrderEntitiesId(IDGenerator.nextSnowId());
entitiesVo.setGoodsType(goodsType);
entitiesVo.setGoodsId(goodsId);
entitiesVo.setGoodsName(goodsName);
entitiesVo.setGoodsPrice(goodsPrice);
entitiesVo.setStatus(OrderStatus.PENDING_PAYMENT.getCode());
entitiesVo.setPayStatus(PayStatus.NOT_PAID.getCode());
entitiesVo.setCreatedAt(LocalDateTime.now());
entitiesVo.setUpdatedAt(LocalDateTime.now());
return entitiesVo;
}
/** /**
* 获取商品描述 * 获取商品描述
...@@ -299,10 +257,13 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr ...@@ -299,10 +257,13 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr
if ("S".equalsIgnoreCase((String) callbackRespDataMap.get("trans_stat"))) { if ("S".equalsIgnoreCase((String) callbackRespDataMap.get("trans_stat"))) {
// 斗拱返回成功 // 斗拱返回成功
updateOrderStatus(OrderStatus.PAID.getCode(), PayStatus.PAID.getCode(), orderVo); orderVo.setStatus(OrderStatus.PAID.getCode());
orderVo.setPayStatus(PayStatus.PAID.getCode());
} else { } else {
// 斗拱返回失败 // 斗拱返回失败
updateOrderStatus(OrderStatus.PENDING_PAYMENT.getCode(), PayStatus.PAYMENT_FAILED.getCode(), orderVo); // orderVo.setStatus(OrderStatus.PAID.getCode());
orderVo.setPayStatus(PayStatus.PAYMENT_FAILED.getCode());
} }
// 更新redis // 更新redis
...@@ -313,13 +274,6 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr ...@@ -313,13 +274,6 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr
SqlMapping.get("gpblin_bracelet_order_update", orderVo.getOutTransId(), orderVo.getEndTime(), SqlMapping.get("gpblin_bracelet_order_update", orderVo.getOutTransId(), orderVo.getEndTime(),
orderVo.getAcctDate(), orderVo.getPriceActual(), orderVo.getTimePay(), orderVo.getUpdatedAt(), orderVo.getOrderId()) orderVo.getAcctDate(), orderVo.getPriceActual(), orderVo.getTimePay(), orderVo.getUpdatedAt(), orderVo.getOrderId())
); );
for (GoblinBraceletOrderEntitiesVo entitiesVo : orderVo.getOrderEntitiesDetailVoList()) {
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_GOODS.getKey(),
SqlMapping.get("goblie_bracelet_order_entities_update", entitiesVo.getStatus(),
entitiesVo.getPayStatus(), entitiesVo.getUpdatedAt(), entitiesVo.getOrderEntitiesId())
);
}
return ResponseDto.success(Boolean.TRUE); return ResponseDto.success(Boolean.TRUE);
} catch (Exception e) { } catch (Exception e) {
log.error("error", e); log.error("error", e);
...@@ -328,14 +282,4 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr ...@@ -328,14 +282,4 @@ public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOr
} }
private void updateOrderStatus(int statusCode, int payStatusCode, GoblinBraceletOrderVo orderVo) {
orderVo.setStatus(statusCode);
orderVo.setPayStatus(payStatusCode);
List<GoblinBraceletOrderEntitiesVo> orderEntitiesDetailVoList = orderVo.getOrderEntitiesDetailVoList();
for (GoblinBraceletOrderEntitiesVo entitiesVo : orderEntitiesDetailVoList) {
entitiesVo.setStatus(statusCode);
entitiesVo.setPayStatus(payStatusCode);
entitiesVo.setUpdatedAt(LocalDateTime.now());
}
}
} }
...@@ -2978,6 +2978,11 @@ public class GoblinRedisUtils { ...@@ -2978,6 +2978,11 @@ public class GoblinRedisUtils {
redisUtil.set(key, orderVo, RedisKeyExpireConst.GOBLIN_BRACELET_USER_EXPIRE); redisUtil.set(key, orderVo, RedisKeyExpireConst.GOBLIN_BRACELET_USER_EXPIRE);
} }
/**
* 获取手环订单信息
* @param orderId
* @return
*/
public GoblinBraceletOrderVo getBraceletOrderVo(String orderId){ public GoblinBraceletOrderVo getBraceletOrderVo(String orderId){
String key = GoblinRedisConst.GOBLIN_BRACELET_ORDERID.concat(orderId); String key = GoblinRedisConst.GOBLIN_BRACELET_ORDERID.concat(orderId);
Object obj = redisUtil.get(key); Object obj = redisUtil.get(key);
......
...@@ -196,9 +196,7 @@ candy_user_coupon.update_apply_refund=UPDATE candy_user_coupon SET state=?,opera ...@@ -196,9 +196,7 @@ candy_user_coupon.update_apply_refund=UPDATE candy_user_coupon SET state=?,opera
#---- #----
#---- #----
# ---- \u624B\u73AF\u8BA2\u5355 ---- # ---- \u624B\u73AF\u8BA2\u5355 ----
goblin_bracelet_order_insert = INSERT INTO `goblin_bracelet_order`(`order_id`, `user_id`, `bind_name`, `bind_mobile`, `bind_idcard`, `req_date`, `goods_desc`, `req_seq_id`, `hf_seq_id`, `trade_type`, `atu_sub_mer_id`, `party_order_id`, `price`, `price_total`, `price_refund`, `refund_price_charges`, `refund_number`, `status`, `pay_status`, `created_at`, `updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) goblin_bracelet_order_insert = INSERT INTO `goblin_bracelet_order`(`order_id`, `user_id`, `bind_name`, `bind_mobile`, `bind_idcard`, `req_date`, `goods_desc`, `wristband_id`, `wristband_price`, `amount_id`, `amount_price`, `req_seq_id`, `hf_seq_id`, `trade_type`, `party_order_id`, `price`, `price_total`, `price_refund`, `refund_price_charges`, `refund_number`, `status`, `pay_status`, `created_at`, `updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
gpblin_bracelet_order_update= update goblin_bracelet_order set out_trans_id=?, end_time=?, acct_date=?, price_actual=?, time_pay=?, updated_at=? where order_id=? gpblin_bracelet_order_update= update goblin_bracelet_order set out_trans_id=?, end_time=?, acct_date=?, price_actual=?, time_pay=?, updated_at=? where order_id=?
goblin_bracelet_order_entities_insert = INSERT INTO `goblin_bracelet_order_entities`(`order_entities_id`, `order_id`, `goods_type`, `goods_id`, `goods_name`, `goods_price`, `status`, `pay_status`, `created_at`, `updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?)
goblin_bracelet_order_update_cardno=UPDATE goblin_bracelet_order SET cardno=?,updated_at=? WHERE order_id=? goblin_bracelet_order_update_cardno=UPDATE goblin_bracelet_order SET cardno=?,updated_at=? WHERE order_id=?
goblin_bracelet_order_update_refund=UPDATE goblin_bracelet_order SET status=?,refund_status=?,refund_status_note=?,updated_at=? WHERE order_id=? goblin_bracelet_order_update_refund=UPDATE goblin_bracelet_order SET status=?,refund_status=?,refund_status_note=?,updated_at=? WHERE order_id=?
goblie_bracelet_order_entities_update = update goblin_bracelet_order_entities set status=?, pay_status=?, updated_at=? where order_entities_id=? \ No newline at end of file
\ No newline at end of file
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