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

Commit 6ef3710b authored by 胡佳晨's avatar 胡佳晨

修改 redis key

parent dc8978db
......@@ -5,7 +5,6 @@ import com.alipay.api.request.AlipayTradeFastpayRefundQueryRequest;
import com.alipay.api.request.AlipayTradeRefundRequest;
import com.alipay.api.response.AlipayTradeFastpayRefundQueryResponse;
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.HttpUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
......@@ -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.WePayRefundReturnCallBackDto;
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.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.utils.PayAlipayUtils;
import com.liquidnet.service.dragon.utils.PayWepayUtils;
import com.liquidnet.service.dragon.utils.XmlUtil;
import com.liquidnet.service.dragon.utils.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
......@@ -30,8 +30,6 @@ import org.apache.http.entity.StringEntity;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
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.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
......@@ -43,7 +41,8 @@ import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.SortedMap;
import java.util.TreeMap;
@Slf4j
@Service
......@@ -52,7 +51,9 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
@Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
RedisUtil redisUtil;
DataUtils dataUtils;
@Autowired
MqHandleUtil mqHandleUtil;
@Value("${liquidnet.dragon.url}")
private String url;
......@@ -62,11 +63,12 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
LocalDateTime nowTime = LocalDateTime.now();
String refundCode = IDGenerator.refundCode();
//创建退款单
boolean insertResult = sendMySqlRedis(
boolean insertResult = mqHandleUtil.sendMySqlRedis(
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;
String localWePayCallBackUrl = url + "/refund/callBack/wepay";
if (insertResult) {
......@@ -176,9 +178,10 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
refundError = wePayRefundReturnDto.getReturnMsg();
}
// 修改退款订单
sendMySqlRedis(
mqHandleUtil.sendMySqlRedis(
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) {
e.printStackTrace();
......@@ -200,17 +203,19 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
}
// 创建退款日志
sendMySqlRedis(
mqHandleUtil.sendMySqlRedis(
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 {
if (wePayRefundReturnDto.getReturnCode().equalsIgnoreCase("SUCCESS")) {
refundStatus = DragonConstant.RefundStatusEnum.STATUS_REFUNDED.getCode();
}
sendMySqlRedis(
mqHandleUtil.sendMySqlRedis(
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) {
e.printStackTrace();
......@@ -266,9 +271,10 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
refundError = response.getSubMsg();
}
// 修改退款订单
sendMySqlRedis(
mqHandleUtil.sendMySqlRedis(
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) {
e.printStackTrace();
......@@ -290,9 +296,10 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
}
// 创建退款日志
sendMySqlRedis(
mqHandleUtil.sendMySqlRedis(
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 {
String refundAt = "";
......@@ -302,9 +309,10 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
} else {
refundStatus = DragonConstant.RefundStatusEnum.STATUS_REFUNDING.getCode();
}
sendMySqlRedis(
mqHandleUtil.sendMySqlRedis(
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) {
e.printStackTrace();
......@@ -356,13 +364,15 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
String outRefundNo = info.getOutRefundNo();
String refundAt = info.getSuccessTime();
try {
sendMySqlRedis(
mqHandleUtil.sendMySqlRedis(
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"),
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();
......@@ -418,14 +428,16 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
if (response.isSuccess()) {
try {
sendMySqlRedis(
mqHandleUtil.sendMySqlRedis(
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");
sendMySqlRedis(
mqHandleUtil.sendMySqlRedis(
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");
NotifyUrlDto dto = new NotifyUrlDto();
......@@ -459,41 +471,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) {
LocalDateTime nowTime = LocalDateTime.now();
MultiValueMap<String, String> params = new LinkedMultiValueMap();
......@@ -504,17 +481,19 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
// params.add("refundId", notifyUrlDto.getRefundId());
params.add("refundPrice", notifyUrlDto.getRefundPrice());
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);
if (response.equals("success")) {
sendMySqlRedis(
mqHandleUtil.sendMySqlRedis(
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 {
sendMySqlRedis(
mqHandleUtil.sendMySqlRedis(
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()
);
}
}
......
......@@ -18,25 +18,33 @@ public class DataUtils {
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)) {
//TODO 是否降级处理
}
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)) {
//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);
}
public void updateOrderStatus(String code,DragonOrdersDto dragonOrdersDto){
public void updateOrderStatus(String code, DragonOrdersDto 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 {
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