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

Commit 3abc9cb7 authored by 姜秀龙's avatar 姜秀龙

离线支付-迈之补充退款相关实现

parent 99ba68d6
...@@ -363,6 +363,8 @@ public class GoblinRedisConst { ...@@ -363,6 +363,8 @@ public class GoblinRedisConst {
public static final String GOBLIN_RECHARGE_MAIZHI_TOKEN = PREFIX.concat("recharge:maizhitoken"); public static final String GOBLIN_RECHARGE_MAIZHI_TOKEN = PREFIX.concat("recharge:maizhitoken");
// 获取设备编号定时任务最后一次的时间 // 获取设备编号定时任务最后一次的时间
public static final String GOBLIN_RECHARGE_DEVICE_NUMBER_ENDTIME = PREFIX.concat("recharge:deviceNumber:endtime:operationNo:"); public static final String GOBLIN_RECHARGE_DEVICE_NUMBER_ENDTIME = PREFIX.concat("recharge:deviceNumber:endtime:operationNo:");
// 通过分订单号获取订单 id
public static final String GOBLIN_RECHARGE_FOUT_TRADE_NO = PREFIX.concat("recharge:foutTradeNo:");
// 手环订单 // 手环订单
public static final String GOBLIN_BRACELET_ORDERID = PREFIX.concat("bracelet:orderId:"); public static final String GOBLIN_BRACELET_ORDERID = PREFIX.concat("bracelet:orderId:");
......
...@@ -162,6 +162,16 @@ public class GoblinBraceletOrderVo { ...@@ -162,6 +162,16 @@ public class GoblinBraceletOrderVo {
*/ */
private String cardno; private String cardno;
/**
* 迈之的分订单号
*/
private String refundStatus;
/**
* 迈之的设备编号
*/
private String refundStatusNote;
/** /**
* 创建时间 * 创建时间
*/ */
......
...@@ -172,5 +172,7 @@ public class MaiZhiAllVo { ...@@ -172,5 +172,7 @@ public class MaiZhiAllVo {
public static class ChangeDeviceStatusResponse { public static class ChangeDeviceStatusResponse {
private String msg; private String msg;
private Integer errcode; private Integer errcode;
private Integer status;
private String note;
} }
} }
package com.liquidnet.service.goblin.service; package com.liquidnet.service.goblin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinBraceletPayResultVo; import com.liquidnet.service.goblin.dto.vo.GoblinBraceletPayResultVo;
import com.liquidnet.service.goblin.entity.GoblinBraceletOrder;
import com.liquidnet.service.goblin.param.GoblinBraceletOrderPayParam; import com.liquidnet.service.goblin.param.GoblinBraceletOrderPayParam;
import com.liquidnet.service.goblin.param.dougong.DougongSyncCallbackparam; import com.liquidnet.service.goblin.param.dougong.DougongSyncCallbackparam;
public interface IGoblinBraceletOrderService { public interface IGoblinBraceletOrderService extends IService<GoblinBraceletOrder> {
/** /**
* 下单 * 下单
......
...@@ -164,6 +164,26 @@ public class GoblinBraceletOrder implements Serializable { ...@@ -164,6 +164,26 @@ public class GoblinBraceletOrder implements Serializable {
*/ */
private Integer payStatus; private Integer payStatus;
/**
* 迈之的分订单号
*/
private String foutTradeNo;
/**
* 迈之的设备编号
*/
private String cardno;
/**
* 迈之的分订单号
*/
private String refundStatus;
/**
* 迈之的设备编号
*/
private String refundStatusNote;
/** /**
* 创建时间 * 创建时间
*/ */
......
package com.liquidnet.service.goblin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.goblin.entity.GoblinBraceletOrder;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jxl
*/
public interface GoblinBraceletOrderMapper extends BaseMapper<GoblinBraceletOrder> {
}
package com.liquidnet.service.goblin.service.impl; package com.liquidnet.service.goblin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.commons.lang.util.*; 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.*;
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;
import com.liquidnet.service.goblin.mapper.GoblinBraceletOrderMapper;
import com.liquidnet.service.goblin.param.GoblinBraceletOrderPayParam; import com.liquidnet.service.goblin.param.GoblinBraceletOrderPayParam;
import com.liquidnet.service.goblin.param.dougong.DougongJsPayData; 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;
...@@ -28,7 +32,7 @@ import java.util.stream.Collectors; ...@@ -28,7 +32,7 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service @Service
public class GoblinBraceletOrderServiceImpl implements IGoblinBraceletOrderService { public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOrderMapper, GoblinBraceletOrder> implements IGoblinBraceletOrderService {
@Autowired @Autowired
GoblinRedisUtils goblinRedisUtils; GoblinRedisUtils goblinRedisUtils;
...@@ -296,7 +300,7 @@ public class GoblinBraceletOrderServiceImpl implements IGoblinBraceletOrderServi ...@@ -296,7 +300,7 @@ public class GoblinBraceletOrderServiceImpl implements IGoblinBraceletOrderServi
if ("S".equalsIgnoreCase((String) callbackRespDataMap.get("trans_stat"))) { if ("S".equalsIgnoreCase((String) callbackRespDataMap.get("trans_stat"))) {
// 斗拱返回成功 // 斗拱返回成功
updateOrderStatus(OrderStatus.PAID.getCode(), PayStatus.PAID.getCode(), orderVo); updateOrderStatus(OrderStatus.PAID.getCode(), PayStatus.PAID.getCode(), orderVo);
}else { } else {
// 斗拱返回失败 // 斗拱返回失败
updateOrderStatus(OrderStatus.PENDING_PAYMENT.getCode(), PayStatus.PAYMENT_FAILED.getCode(), orderVo); updateOrderStatus(OrderStatus.PENDING_PAYMENT.getCode(), PayStatus.PAYMENT_FAILED.getCode(), orderVo);
} }
......
package com.liquidnet.service.goblin.service.impl; package com.liquidnet.service.goblin.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.goblin.dto.vo.GoblinBraceletOrderVo;
import com.liquidnet.service.goblin.dto.vo.GoblinRechargeAmountVo; import com.liquidnet.service.goblin.dto.vo.GoblinRechargeAmountVo;
import com.liquidnet.service.goblin.dto.vo.GoblinRechargeWristbandVo; import com.liquidnet.service.goblin.dto.vo.GoblinRechargeWristbandVo;
import com.liquidnet.service.goblin.dto.vo.MaiZhiAllVo.*; import com.liquidnet.service.goblin.dto.vo.MaiZhiAllVo.*;
import com.liquidnet.service.goblin.entity.GoblinBraceletOrder;
import com.liquidnet.service.goblin.entity.GoblinRechargeAmount; import com.liquidnet.service.goblin.entity.GoblinRechargeAmount;
import com.liquidnet.service.goblin.entity.GoblinRechargeWristband; import com.liquidnet.service.goblin.entity.GoblinRechargeWristband;
import com.liquidnet.service.goblin.mapper.GoblinRechargeAmountMapper; import com.liquidnet.service.goblin.mapper.GoblinRechargeAmountMapper;
import com.liquidnet.service.goblin.mapper.GoblinRechargeWristbandMapper; import com.liquidnet.service.goblin.mapper.GoblinRechargeWristbandMapper;
import com.liquidnet.service.goblin.service.IGoblinBraceletOrderService;
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;
import com.liquidnet.service.goblin.util.QueueUtils;
import com.liquidnet.service.goblin.util.ThirdMaiZhiUtils; import com.liquidnet.service.goblin.util.ThirdMaiZhiUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; import java.util.List;
/** /**
...@@ -33,6 +43,9 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar ...@@ -33,6 +43,9 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar
@Autowired @Autowired
GoblinRedisUtils goblinRedisUtils; GoblinRedisUtils goblinRedisUtils;
@Autowired
private QueueUtils queueUtils;
@Autowired @Autowired
ThirdMaiZhiUtils thirdMaiZhiUtils; ThirdMaiZhiUtils thirdMaiZhiUtils;
...@@ -42,6 +55,9 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar ...@@ -42,6 +55,9 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar
@Autowired @Autowired
private GoblinRechargeWristbandMapper rechargeWristbandMapper; private GoblinRechargeWristbandMapper rechargeWristbandMapper;
@Autowired
private IGoblinBraceletOrderService iGoblinBraceletOrderService;
@Override @Override
public GoblinRechargeWristbandVo getList() { public GoblinRechargeWristbandVo getList() {
GoblinRechargeWristbandVo result = goblinRedisUtils.getRechargeWristbandVo(); GoblinRechargeWristbandVo result = goblinRedisUtils.getRechargeWristbandVo();
...@@ -125,7 +141,26 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar ...@@ -125,7 +141,26 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar
DeviceNumberResponse res = thirdMaiZhiUtils.getDeviceNumber(accessToken, operationNo, endtime, String.valueOf(timestamp)); DeviceNumberResponse res = thirdMaiZhiUtils.getDeviceNumber(accessToken, operationNo, endtime, String.valueOf(timestamp));
if (null != res && res.getErrcode() == 200) { if (null != res && res.getErrcode() == 200) {
for (DeviceNumberResponse.NumberList info : res.getList()) { for (DeviceNumberResponse.NumberList info : res.getList()) {
// jxl todo 把分订单号对应的设备编号写入 redis and 数据库 String orderId = goblinRedisUtils.getOrderIdByFoutTradeNo(info.getFout_trade_no());
GoblinBraceletOrderVo orderVo = goblinRedisUtils.getBraceletOrderVo(orderId);
if (null != orderVo) {
orderVo.setCardno(info.getCardno());
goblinRedisUtils.setBraceletOrderVo(orderVo);
LinkedList<String> sqls = CollectionUtil.linkedListString();
sqls.add(SqlMapping.get("goblin_bracelet_order_update_cardno"));
LinkedList<Object[]> sqlDataOrder = CollectionUtil.linkedListObjectArr();
sqlDataOrder.add(new Object[]{
info.getCardno(), LocalDateTime.now(), orderId
});
queueUtils.sendMsgByRedis(
MQConst.GoblinQueue.GOBLIN_NFT_ORDER.getKey(),
SqlMapping.gets(sqls, sqlDataOrder)
);
}
} }
goblinRedisUtils.setDeviceNumberEndTime(operationNo, String.valueOf(timestamp)); goblinRedisUtils.setDeviceNumberEndTime(operationNo, String.valueOf(timestamp));
return true; return true;
...@@ -156,6 +191,7 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar ...@@ -156,6 +191,7 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar
public ChangeDeviceStatusResponse changeDeviceStatus(String cardno, int type) { public ChangeDeviceStatusResponse changeDeviceStatus(String cardno, int type) {
String accessToken = this.getAccessToken(); String accessToken = this.getAccessToken();
if (null != accessToken) { if (null != accessToken) {
// todo 更改订单状态为退款中
return thirdMaiZhiUtils.changeDeviceStatus(accessToken, cardno, type); return thirdMaiZhiUtils.changeDeviceStatus(accessToken, cardno, type);
} }
return null; return null;
...@@ -165,10 +201,22 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar ...@@ -165,10 +201,22 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar
public Boolean refundRes() { public Boolean refundRes() {
String accessToken = this.getAccessToken(); String accessToken = this.getAccessToken();
if (null != accessToken) { if (null != accessToken) {
// jxl todo 查询所有退款中状态的设备编号 然后循环查询结果 List<GoblinBraceletOrder> list = iGoblinBraceletOrderService.list(Wrappers.lambdaQuery(GoblinBraceletOrder.class).eq(GoblinBraceletOrder::getStatus, 3));
String cardno = "sss"; for (GoblinBraceletOrder order : list) {
ChangeDeviceStatusResponse res = thirdMaiZhiUtils.refundRes(accessToken, cardno); String cardno = order.getCardno();
// jxl todo 把结果写入 redis and mysql String orderId = order.getOrderId();
if (null != cardno && !cardno.isEmpty()) {
ChangeDeviceStatusResponse res = thirdMaiZhiUtils.refundRes(accessToken, cardno);
if (null != res && res.getErrcode() == 200) {
GoblinBraceletOrderVo orderVo = goblinRedisUtils.getBraceletOrderVo(orderId);
if (res.getStatus() == 1) {
} else if (res.getStatus() == 2) {
}
}
}
}
return true; return true;
} else { } else {
return false; return false;
......
...@@ -3004,6 +3004,21 @@ public class GoblinRedisUtils { ...@@ -3004,6 +3004,21 @@ public class GoblinRedisUtils {
redisUtil.set(key, endTime); redisUtil.set(key, endTime);
} }
public String getOrderIdByFoutTradeNo(String foutTradeNo) {
String key = GoblinRedisConst.GOBLIN_RECHARGE_FOUT_TRADE_NO.concat(foutTradeNo);
Object obj = redisUtil.get(key);
if (obj == null) {
return null;
} else {
return (String) obj;
}
}
public void setOrderIdByFoutTradeNo(String foutTradeNo, String orderId) {
String key = GoblinRedisConst.GOBLIN_RECHARGE_FOUT_TRADE_NO.concat(foutTradeNo);
redisUtil.set(key, orderId);
}
/* ---------------------------------------- ---------------------------------------- */ /* ---------------------------------------- ---------------------------------------- */
/* ---------------------------------------- ---------------------------------------- */ /* ---------------------------------------- ---------------------------------------- */
......
...@@ -199,4 +199,5 @@ candy_user_coupon.update_apply_refund=UPDATE candy_user_coupon SET state=?,opera ...@@ -199,4 +199,5 @@ candy_user_coupon.update_apply_refund=UPDATE candy_user_coupon SET state=?,opera
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`, `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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
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_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=?
goblie_bracelet_order_entities_update = update goblin_bracelet_order_entities set status=?, pay_status=?, updated_at=? where order_entities_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
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