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

Commit 4d8e9cb6 authored by jiangxiulong's avatar jiangxiulong

Merge remote-tracking branch 'origin/dev' into dev

parents 40b1a298 28c7ae24
...@@ -141,7 +141,7 @@ public class DragonConstant { ...@@ -141,7 +141,7 @@ public class DragonConstant {
public enum PayTypeEnum{ public enum PayTypeEnum{
PAYMENT_TYPE_APP_ALIPAY("APPALIPAY","alipay","app","App内支付宝支付"), PAYMENT_TYPE_APP_ALIPAY("APPALIPAY","alipay","app","App内支付宝支付"),
PAYMENT_TYPE_APP_WEPAY("APPWEPAY","wepay","app","App内微信支付"), PAYMENT_TYPE_APP_WEPAY("APPWEPAY","wepay","app","App内微信支付"),
PAYMENT_TYPE_APP_IAP("APPIAP","applepay","app","App内IAP(In-App Purchase)支付,iOS虚拟道具支付"), PAYMENT_TYPE_APP_IAP("APPIAP","iap","app","App内IAP(In-App Purchase)支付,iOS虚拟道具支付"),
PAYMENT_TYPE_WAP_ALIPAY("WAPALIPAY","alipay","wap","手机网页内支付宝支付"), PAYMENT_TYPE_WAP_ALIPAY("WAPALIPAY","alipay","wap","手机网页内支付宝支付"),
PAYMENT_TYPE_WAP_WEPAY("WAPWEPAY","wepay","wap","手机网页调起微信支付"), PAYMENT_TYPE_WAP_WEPAY("WAPWEPAY","wepay","wap","手机网页调起微信支付"),
PAYMENT_TYPE_WEB_ALIPAY("WEBALIPAY","alipay","web","电脑网页内支付宝即时到账支付"), PAYMENT_TYPE_WEB_ALIPAY("WEBALIPAY","alipay","web","电脑网页内支付宝即时到账支付"),
...@@ -153,7 +153,7 @@ public class DragonConstant { ...@@ -153,7 +153,7 @@ public class DragonConstant {
private String message; private String message;
private String payType; private String payType;
private String deviceFrom; private String deviceFrom;
PayTypeEnum(String code, String message,String payType,String deviceFrom) { PayTypeEnum(String code,String payType,String deviceFrom,String message) {
this.code = code; this.code = code;
this.message = message; this.message = message;
this.payType = payType; this.payType = payType;
...@@ -217,8 +217,8 @@ public class DragonConstant { ...@@ -217,8 +217,8 @@ public class DragonConstant {
* MYSQL_REDIS_QUEUE * MYSQL_REDIS_QUEUE
*/ */
public enum MysqlRedisQueueEnum{ public enum MysqlRedisQueueEnum{
DRAGON_PAY_KEY("dragon-pay","同步数据-支付"), DRAGON_PAY_KEY("dragon:stream:dragon-pay","同步数据-支付"),
DRAGON_REFUND_KEY ("dragon-refund","同步数据-退款"), DRAGON_REFUND_KEY ("dragon:stream:dragon-refund","同步数据-退款"),
DRAGON_PAY_GROUP("dragon-pay-group","同步数据-支付-组"), DRAGON_PAY_GROUP("dragon-pay-group","同步数据-支付-组"),
DRAGON_REFUND_GROUP ("dragon-refund-group","同步数据-退款-组"); DRAGON_REFUND_GROUP ("dragon-refund-group","同步数据-退款-组");
private String code; private String code;
......
package com.liquidnet.service.dragon.dto; package com.liquidnet.service.dragon.dto;
import com.alibaba.fastjson.JSON;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -31,4 +32,9 @@ public class DragonPayBaseReqDto { ...@@ -31,4 +32,9 @@ public class DragonPayBaseReqDto {
private String quitUrl; private String quitUrl;
private String showUrl; private String showUrl;
private String returnUrl; private String returnUrl;
@Override
public String toString(){
return JSON.toJSONString(this);
}
} }
...@@ -56,10 +56,13 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService { ...@@ -56,10 +56,13 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
@Override @Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void edit(AdamUserInfoVo userInfoVo) { public void edit(AdamUserInfoVo userInfoVo) {
userInfoVo.setCreateAt(null);
Document updateDoc = Document.parse(JsonUtils.toJson(userInfoVo));
updateDoc.replace("updatedAt", userInfoVo.getUpdatedAt());
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
UpdateResult updateResult = mongoTemplate.getCollection(AdamUserInfoVo.class.getSimpleName()).updateOne( UpdateResult updateResult = mongoTemplate.getCollection(AdamUserInfoVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("uid").is(userInfoVo.getUid())).getQueryObject(), Query.query(Criteria.where("uid").is(userInfoVo.getUid())).getQueryObject(),
new Document("$set", Document.parse(JsonUtils.toJson(userInfoVo))) new Document("$set", updateDoc)
); );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (updateResult.getModifiedCount() <= 0) { if (updateResult.getModifiedCount() <= 0) {
......
...@@ -44,7 +44,7 @@ public abstract class DragonPayBiz { ...@@ -44,7 +44,7 @@ public abstract class DragonPayBiz {
orders.setOrderCode(dragonPayBaseReqDto.getOrderCode()); orders.setOrderCode(dragonPayBaseReqDto.getOrderCode());
orders.setClientIp(dragonPayBaseReqDto.getClientIp()); orders.setClientIp(dragonPayBaseReqDto.getClientIp());
orders.setNotifyUrl(dragonPayBaseReqDto.getNotifyUrl()); orders.setNotifyUrl(dragonPayBaseReqDto.getNotifyUrl());
orders.setPaymentType(DragonConstant.PayTypeEnum.PAYMENT_TYPE_APP_IAP.getCode()); orders.setPaymentType((dragonPayBaseReqDto.getDeviceFrom()+dragonPayBaseReqDto.getPayType()).toUpperCase());
// orders.setPaymentId(); // orders.setPaymentId();
orders.setPaymentAt(LocalDateTime.now()); orders.setPaymentAt(LocalDateTime.now());
// orders.setFinishedAt(); // orders.setFinishedAt();
......
...@@ -5,7 +5,6 @@ import com.alipay.api.request.AlipayTradeFastpayRefundQueryRequest; ...@@ -5,7 +5,6 @@ import com.alipay.api.request.AlipayTradeFastpayRefundQueryRequest;
import com.alipay.api.request.AlipayTradeRefundRequest; import com.alipay.api.request.AlipayTradeRefundRequest;
import com.alipay.api.response.AlipayTradeFastpayRefundQueryResponse; import com.alipay.api.response.AlipayTradeFastpayRefundQueryResponse;
import com.alipay.api.response.AlipayTradeRefundResponse; import com.alipay.api.response.AlipayTradeRefundResponse;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.HttpUtil; import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
...@@ -15,13 +14,14 @@ import com.liquidnet.service.base.SqlMapping; ...@@ -15,13 +14,14 @@ import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.dragon.channel.wepay.resp.AliPayRefundReturnCallBackDto; import com.liquidnet.service.dragon.channel.wepay.resp.AliPayRefundReturnCallBackDto;
import com.liquidnet.service.dragon.channel.wepay.resp.WePayRefundReturnCallBackDto; import com.liquidnet.service.dragon.channel.wepay.resp.WePayRefundReturnCallBackDto;
import com.liquidnet.service.dragon.channel.wepay.resp.WePayRefundReturnCallBackInfoDto; import com.liquidnet.service.dragon.channel.wepay.resp.WePayRefundReturnCallBackInfoDto;
import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.*;
import com.liquidnet.service.dragon.channel.wepay.resp.WePayRefundReturnDto; import com.liquidnet.service.dragon.channel.wepay.resp.WePayRefundReturnDto;
import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.DragonRefundAppDto;
import com.liquidnet.service.dragon.dto.DragonRefundChannelDto;
import com.liquidnet.service.dragon.dto.NotifyUrlDto;
import com.liquidnet.service.dragon.dto.RefundContentDto;
import com.liquidnet.service.dragon.service.IDragonOrderRefundsService; import com.liquidnet.service.dragon.service.IDragonOrderRefundsService;
import com.liquidnet.service.dragon.utils.PayAlipayUtils; import com.liquidnet.service.dragon.utils.*;
import com.liquidnet.service.dragon.utils.PayWepayUtils;
import com.liquidnet.service.dragon.utils.XmlUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity; import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
...@@ -30,8 +30,6 @@ import org.apache.http.entity.StringEntity; ...@@ -30,8 +30,6 @@ import org.apache.http.entity.StringEntity;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
...@@ -43,7 +41,8 @@ import java.io.ByteArrayOutputStream; ...@@ -43,7 +41,8 @@ import java.io.ByteArrayOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.SortedMap;
import java.util.TreeMap;
@Slf4j @Slf4j
@Service @Service
...@@ -52,7 +51,9 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -52,7 +51,9 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
@Autowired @Autowired
StringRedisTemplate stringRedisTemplate; StringRedisTemplate stringRedisTemplate;
@Autowired @Autowired
RedisUtil redisUtil; DataUtils dataUtils;
@Autowired
MqHandleUtil mqHandleUtil;
@Value("${liquidnet.dragon.url}") @Value("${liquidnet.dragon.url}")
private String url; private String url;
...@@ -62,11 +63,12 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -62,11 +63,12 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
LocalDateTime nowTime = LocalDateTime.now(); LocalDateTime nowTime = LocalDateTime.now();
String refundCode = IDGenerator.refundCode(); String refundCode = IDGenerator.refundCode();
//创建退款单 //创建退款单
boolean insertResult = sendMySqlRedis( boolean insertResult = mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund.insert"), SqlMapping.get("dragon_order_refund.insert"),
new Object[]{code, refundCode, orderRefundCode, price, reason, notifyUrl, paymentType, nowTime, nowTime} new Object[]{code, refundCode, orderRefundCode, price, reason, notifyUrl, paymentType, nowTime, nowTime},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
redisUtil.set(DragonConstant.REFUND_REDIS_KET + code, notifyUrl); dataUtils.setRefundNotifyUrl(DragonConstant.REFUND_REDIS_KET + code, notifyUrl);
DragonRefundChannelDto dto = null; DragonRefundChannelDto dto = null;
String localWePayCallBackUrl = url + "/refund/callBack/wepay"; String localWePayCallBackUrl = url + "/refund/callBack/wepay";
if (insertResult) { if (insertResult) {
...@@ -176,9 +178,10 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -176,9 +178,10 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
refundError = wePayRefundReturnDto.getReturnMsg(); refundError = wePayRefundReturnDto.getReturnMsg();
} }
// 修改退款订单 // 修改退款订单
sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_error.update"), SqlMapping.get("dragon_order_refund_error.update"),
new Object[]{nowTime, refundError, refundStatus, code} new Object[]{nowTime, refundError, refundStatus, code},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -200,17 +203,19 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -200,17 +203,19 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
} }
// 创建退款日志 // 创建退款日志
sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_log.insert"), SqlMapping.get("dragon_order_refund_log.insert"),
new Object[]{orderRefundId, paymentType, data, nowTime, nowTime} new Object[]{orderRefundId, paymentType, data, nowTime, nowTime},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
try { try {
if (wePayRefundReturnDto.getReturnCode().equalsIgnoreCase("SUCCESS")) { if (wePayRefundReturnDto.getReturnCode().equalsIgnoreCase("SUCCESS")) {
refundStatus = DragonConstant.RefundStatusEnum.STATUS_REFUNDED.getCode(); refundStatus = DragonConstant.RefundStatusEnum.STATUS_REFUNDED.getCode();
} }
sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_success.update"), SqlMapping.get("dragon_order_refund_success.update"),
new Object[]{nowTime, null, refundStatus, code} new Object[]{nowTime, null, refundStatus, code},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -266,9 +271,10 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -266,9 +271,10 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
refundError = response.getSubMsg(); refundError = response.getSubMsg();
} }
// 修改退款订单 // 修改退款订单
sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_error.update"), SqlMapping.get("dragon_order_refund_error.update"),
new Object[]{nowTime, refundError, refundStatus, code} new Object[]{nowTime, refundError, refundStatus, code},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -290,9 +296,10 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -290,9 +296,10 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
} }
// 创建退款日志 // 创建退款日志
sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_log.insert"), SqlMapping.get("dragon_order_refund_log.insert"),
new Object[]{orderRefundId, paymentType, JSON.toJSONString(response.getBody()), nowTime, nowTime} new Object[]{orderRefundId, paymentType, JSON.toJSONString(response.getBody()), nowTime, nowTime},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
try { try {
String refundAt = ""; String refundAt = "";
...@@ -302,9 +309,10 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -302,9 +309,10 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
} else { } else {
refundStatus = DragonConstant.RefundStatusEnum.STATUS_REFUNDING.getCode(); refundStatus = DragonConstant.RefundStatusEnum.STATUS_REFUNDING.getCode();
} }
sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_success.update"), SqlMapping.get("dragon_order_refund_success.update"),
new Object[]{nowTime, refundAt, refundStatus, code} new Object[]{nowTime, refundAt, refundStatus, code},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -356,13 +364,15 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -356,13 +364,15 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
String outRefundNo = info.getOutRefundNo(); String outRefundNo = info.getOutRefundNo();
String refundAt = info.getSuccessTime(); String refundAt = info.getSuccessTime();
try { try {
sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_log.insert"), SqlMapping.get("dragon_order_refund_log.insert"),
new Object[]{outRefundNo, info.getRefundRequestSource(), JSON.toJSONString(info), nowTime, nowTime} new Object[]{outRefundNo, info.getRefundRequestSource(), JSON.toJSONString(info), nowTime, nowTime},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_success.update"), SqlMapping.get("dragon_order_refund_success.update"),
new Object[]{nowTime, refundAt, DragonConstant.RefundStatusEnum.STATUS_REFUNDED.getCode(), outRefundNo} new Object[]{nowTime, refundAt, DragonConstant.RefundStatusEnum.STATUS_REFUNDED.getCode(), outRefundNo},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
NotifyUrlDto dto = new NotifyUrlDto(); NotifyUrlDto dto = new NotifyUrlDto();
...@@ -371,20 +381,9 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -371,20 +381,9 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
} else { } else {
dto.setStatus(0); dto.setStatus(0);
} }
// dto.setOrderCode();
// dto.setCode();
// dto.setType();
// dto.setPrice();
// dto.setPaymentType();
// dto.setPaymentId();
// dto.setPaymentAt();
dto.setOrderRefundCode(info.getOutRefundNo()); dto.setOrderRefundCode(info.getOutRefundNo());
dto.setRefundCode(info.getOutTradeNo()); dto.setRefundCode(info.getOutTradeNo());
dto.setRefundPrice(info.getRefundFee()); dto.setRefundPrice(info.getRefundFee());
// dto.setRefundReason();
// dto.setRefundId(info.getRefundId());
// dto.setRefundType(info.getrefund);
dto.setRefundAt(refundAt); dto.setRefundAt(refundAt);
dto.setRefundError(callBackDto.getReturnMsg()); dto.setRefundError(callBackDto.getReturnMsg());
sendNotifyUrl(dto); sendNotifyUrl(dto);
...@@ -418,14 +417,16 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -418,14 +417,16 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
if (response.isSuccess()) { if (response.isSuccess()) {
try { try {
sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_log.insert"), SqlMapping.get("dragon_order_refund_log.insert"),
new Object[]{response.getOutRequestNo(), response.getRefundReason(), jsonStr, nowTime, nowTime} new Object[]{response.getOutRequestNo(), response.getRefundReason(), jsonStr, nowTime, nowTime},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
log.debug("SEND MQ INSERT"); log.debug("SEND MQ INSERT");
sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_success.update"), SqlMapping.get("dragon_order_refund_success.update"),
new Object[]{nowTime, callBackDto.getGmtRefund(), DragonConstant.RefundStatusEnum.STATUS_REFUNDED.getCode(), response.getOutRequestNo()} new Object[]{nowTime, callBackDto.getGmtRefund(), DragonConstant.RefundStatusEnum.STATUS_REFUNDED.getCode(), response.getOutRequestNo()},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
log.debug("SEND MQ UPDATE"); log.debug("SEND MQ UPDATE");
NotifyUrlDto dto = new NotifyUrlDto(); NotifyUrlDto dto = new NotifyUrlDto();
...@@ -459,41 +460,6 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -459,41 +460,6 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
} }
} }
/**
* out_biz_no -> orderRefundCode
* trade_no -> paymentId
* orderCode -> 不存在
* code -> out_trade_no
*
*/
/**
* 给 REDIS 队列发送消息 数据库相关
*
* @param sql sql语句
* @param data 需要操作的数据
* @return
*/
private boolean sendMySqlRedis(String sql, Object[] data) {
try {
LinkedList<String> sqls = new LinkedList<>();
sqls.add(sql);
LinkedList<Object[]> sqlsData = new LinkedList();
sqlsData.add(data);
String sqlData = SqlMapping.gets(sqls, sqlsData);
HashMap<String, String> map = new HashMap<>();
map.put("message", sqlData);
MapRecord<String, String, String> record = StreamRecords.mapBacked(map).withStreamKey(DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode());
stringRedisTemplate.opsForStream().add(record);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
private void sendNotifyUrl(NotifyUrlDto notifyUrlDto) { private void sendNotifyUrl(NotifyUrlDto notifyUrlDto) {
LocalDateTime nowTime = LocalDateTime.now(); LocalDateTime nowTime = LocalDateTime.now();
MultiValueMap<String, String> params = new LinkedMultiValueMap(); MultiValueMap<String, String> params = new LinkedMultiValueMap();
...@@ -501,20 +467,21 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -501,20 +467,21 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
params.add("refundAt", notifyUrlDto.getRefundAt()); params.add("refundAt", notifyUrlDto.getRefundAt());
params.add("refundCode", notifyUrlDto.getRefundCode()); params.add("refundCode", notifyUrlDto.getRefundCode());
params.add("refundError", notifyUrlDto.getRefundError()); params.add("refundError", notifyUrlDto.getRefundError());
// params.add("refundId", notifyUrlDto.getRefundId());
params.add("refundPrice", notifyUrlDto.getRefundPrice()); params.add("refundPrice", notifyUrlDto.getRefundPrice());
params.add("status", notifyUrlDto.getStatus().toString()); params.add("status", notifyUrlDto.getStatus().toString());
String response = HttpUtil.post((String) redisUtil.get(DragonConstant.REFUND_REDIS_KET + notifyUrlDto.getOrderRefundCode()), params); String response = HttpUtil.post( dataUtils.getRefundNotifyUrl(DragonConstant.REFUND_REDIS_KET + notifyUrlDto.getOrderRefundCode()), params);
log.debug("RETURN RESPONSE=" + response); log.debug("RETURN RESPONSE=" + response);
if (response.equals("success")) { if (response.equals("success")) {
sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_call_back.update"), SqlMapping.get("dragon_order_refund_call_back.update"),
new Object[]{nowTime, DateUtil.Formatter.yyyyMMddHHmmss.format(nowTime), DragonConstant.RefundStatusEnum.STATUS_SUCCESS.getCode(), notifyUrlDto.getRefundCode()} new Object[]{nowTime, DateUtil.Formatter.yyyyMMddHHmmss.format(nowTime), DragonConstant.RefundStatusEnum.STATUS_SUCCESS.getCode(), notifyUrlDto.getRefundCode()},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
} else { } else {
sendMySqlRedis( mqHandleUtil.sendMySqlRedis(
SqlMapping.get("dragon_order_refund_call_back.update"), SqlMapping.get("dragon_order_refund_call_back.update"),
new Object[]{nowTime, DateUtil.Formatter.yyyyMMddHHmmss.format(nowTime), DragonConstant.RefundStatusEnum.STATUS_FAIL.getCode(), notifyUrlDto.getRefundCode()} new Object[]{nowTime, DateUtil.Formatter.yyyyMMddHHmmss.format(nowTime), DragonConstant.RefundStatusEnum.STATUS_FAIL.getCode(), notifyUrlDto.getRefundCode()},
DragonConstant.MysqlRedisQueueEnum.DRAGON_REFUND_KEY.getCode()
); );
} }
} }
......
...@@ -36,6 +36,7 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService { ...@@ -36,6 +36,7 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService {
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) { public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) {
//设置支付编号 //设置支付编号
dragonPayBaseReqDto.setCode(IDGenerator.payCode()); dragonPayBaseReqDto.setCode(IDGenerator.payCode());
log.info("dragon:dragonPay:req:dragonPayBaseReqDto : {}",dragonPayBaseReqDto.toString());
return payChannelStrategyContext.getStrategy(dragonPayBaseReqDto.getPayType()).dragonPay(dragonPayBaseReqDto); return payChannelStrategyContext.getStrategy(dragonPayBaseReqDto.getPayType()).dragonPay(dragonPayBaseReqDto);
} }
...@@ -50,7 +51,8 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService { ...@@ -50,7 +51,8 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService {
if(StringUtil.isEmpty(ordersDto)){ if(StringUtil.isEmpty(ordersDto)){
throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_ERROR_NOT_EXISTS.getCode(),DragonErrorCodeEnum.TRADE_ERROR_NOT_EXISTS.getMessage()); throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_ERROR_NOT_EXISTS.getCode(),DragonErrorCodeEnum.TRADE_ERROR_NOT_EXISTS.getMessage());
} }
return payChannelStrategyContext.getStrategy(DragonConstant.PayTypeEnum.getEnumByCode(ordersDto.getPaymentType()).getPayType()).checkOrderStatus(code); String payType = DragonConstant.PayTypeEnum.getEnumByCode(ordersDto.getPaymentType()).getPayType();
return payChannelStrategyContext.getStrategy(payType).checkOrderStatus(code);
} }
@Override @Override
......
...@@ -12,31 +12,38 @@ public class DataUtils { ...@@ -12,31 +12,38 @@ public class DataUtils {
private RedisUtil redisUtil; private RedisUtil redisUtil;
public void createPayOrder(String orderCode, String code, DragonOrdersDto ordersDto) { public void createPayOrder(String orderCode, String code, DragonOrdersDto ordersDto) {
if (redisUtil.hasKey(DragonConstant.REDIS_KET_PAY_ORDERCODE + orderCode)) { if (!redisUtil.hasKey(DragonConstant.REDIS_KET_PAY_ORDERCODE + orderCode)) {
} else {
redisUtil.set(DragonConstant.REDIS_KET_PAY_ORDERCODE + orderCode, code); redisUtil.set(DragonConstant.REDIS_KET_PAY_ORDERCODE + orderCode, code);
redisUtil.set(DragonConstant.REDIS_KET_PAY_CODE + code, ordersDto); redisUtil.set(DragonConstant.REDIS_KET_PAY_CODE + code, ordersDto);
} }
} }
public DragonOrdersDto getPayOrderByCode(String code){ public DragonOrdersDto getPayOrderByCode(String code) {
if (!redisUtil.hasKey(DragonConstant.REDIS_KET_PAY_CODE + code)) { if (!redisUtil.hasKey(DragonConstant.REDIS_KET_PAY_CODE + code)) {
//TODO 是否降级处理 //TODO 是否降级处理
} }
return (DragonOrdersDto) redisUtil.get(DragonConstant.REDIS_KET_PAY_CODE + code); return (DragonOrdersDto) redisUtil.get(DragonConstant.REDIS_KET_PAY_CODE + code);
} }
public DragonOrdersDto getPayOrderByOrderCode(String orderCode){ public DragonOrdersDto getPayOrderByOrderCode(String orderCode) {
if (!redisUtil.hasKey(DragonConstant.REDIS_KET_PAY_ORDERCODE + orderCode)) { if (!redisUtil.hasKey(DragonConstant.REDIS_KET_PAY_ORDERCODE + orderCode)) {
//TODO 是否降级处理 //TODO 是否降级处理
} }
//获取支付订单号 //获取支付订单号
String code = (String)redisUtil.get(DragonConstant.REDIS_KET_PAY_ORDERCODE + orderCode); String code = (String) redisUtil.get(DragonConstant.REDIS_KET_PAY_ORDERCODE + orderCode);
return (DragonOrdersDto) redisUtil.get(DragonConstant.REDIS_KET_PAY_CODE + code); return (DragonOrdersDto) redisUtil.get(DragonConstant.REDIS_KET_PAY_CODE + code);
} }
public void updateOrderStatus(String code,DragonOrdersDto dragonOrdersDto){ public void updateOrderStatus(String code, DragonOrdersDto dragonOrdersDto) {
redisUtil.set(DragonConstant.REDIS_KET_PAY_CODE + code, dragonOrdersDto); redisUtil.set(DragonConstant.REDIS_KET_PAY_CODE + code, dragonOrdersDto);
} }
public void setRefundNotifyUrl(String code, String notifyUrl) {
redisUtil.set(DragonConstant.REFUND_REDIS_KET + code, notifyUrl);
}
public String getRefundNotifyUrl(String code) {
return (String) redisUtil.get(DragonConstant.REFUND_REDIS_KET + code);
}
} }
...@@ -87,4 +87,30 @@ public class MqHandleUtil { ...@@ -87,4 +87,30 @@ public class MqHandleUtil {
return false; return false;
} }
} }
/**
* 给 REDIS 队列发送消息 数据库相关
*
* @param sql sql语句
* @param data 需要操作的数据
* @return
*/
public boolean sendMySqlRedis(String sql, Object[] data , String redisKey) {
try {
LinkedList<String> sqls = new LinkedList<>();
sqls.add(sql);
LinkedList<Object[]> sqlsData = new LinkedList();
sqlsData.add(data);
String sqlData = SqlMapping.gets(sqls, sqlsData);
HashMap<String, String> map = new HashMap<>();
map.put("message", sqlData);
MapRecord<String, String, String> record = StreamRecords.mapBacked(map).withStreamKey(redisKey);
stringRedisTemplate.opsForStream().add(record);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
} }
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