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

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

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

parent 99ba68d6
......@@ -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_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:");
......
......@@ -162,6 +162,16 @@ public class GoblinBraceletOrderVo {
*/
private String cardno;
/**
* 迈之的分订单号
*/
private String refundStatus;
/**
* 迈之的设备编号
*/
private String refundStatusNote;
/**
* 创建时间
*/
......
......@@ -172,5 +172,7 @@ public class MaiZhiAllVo {
public static class ChangeDeviceStatusResponse {
private String msg;
private Integer errcode;
private Integer status;
private String note;
}
}
package com.liquidnet.service.goblin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.base.ResponseDto;
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.dougong.DougongSyncCallbackparam;
public interface IGoblinBraceletOrderService {
public interface IGoblinBraceletOrderService extends IService<GoblinBraceletOrder> {
/**
* 下单
......
......@@ -164,6 +164,26 @@ public class GoblinBraceletOrder implements Serializable {
*/
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;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
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.PayStatus;
import com.liquidnet.service.goblin.mapper.GoblinBraceletOrderMapper;
import com.liquidnet.service.goblin.param.GoblinBraceletOrderPayParam;
import com.liquidnet.service.goblin.param.dougong.DougongJsPayData;
import com.liquidnet.service.goblin.param.dougong.DougongRequestParam;
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.IGoblinDougongPayService;
import com.liquidnet.service.goblin.service.IGoblinRechargeWristbandService;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
......@@ -28,7 +32,7 @@ import java.util.stream.Collectors;
@Slf4j
@Service
public class GoblinBraceletOrderServiceImpl implements IGoblinBraceletOrderService {
public class GoblinBraceletOrderServiceImpl extends ServiceImpl<GoblinBraceletOrderMapper, GoblinBraceletOrder> implements IGoblinBraceletOrderService {
@Autowired
GoblinRedisUtils goblinRedisUtils;
......@@ -296,7 +300,7 @@ public class GoblinBraceletOrderServiceImpl implements IGoblinBraceletOrderServi
if ("S".equalsIgnoreCase((String) callbackRespDataMap.get("trans_stat"))) {
// 斗拱返回成功
updateOrderStatus(OrderStatus.PAID.getCode(), PayStatus.PAID.getCode(), orderVo);
}else {
} else {
// 斗拱返回失败
updateOrderStatus(OrderStatus.PENDING_PAYMENT.getCode(), PayStatus.PAYMENT_FAILED.getCode(), orderVo);
}
......
package com.liquidnet.service.goblin.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.GoblinRechargeWristbandVo;
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.GoblinRechargeWristband;
import com.liquidnet.service.goblin.mapper.GoblinRechargeAmountMapper;
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.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.QueueUtils;
import com.liquidnet.service.goblin.util.ThirdMaiZhiUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
......@@ -33,6 +43,9 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar
@Autowired
GoblinRedisUtils goblinRedisUtils;
@Autowired
private QueueUtils queueUtils;
@Autowired
ThirdMaiZhiUtils thirdMaiZhiUtils;
......@@ -42,6 +55,9 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar
@Autowired
private GoblinRechargeWristbandMapper rechargeWristbandMapper;
@Autowired
private IGoblinBraceletOrderService iGoblinBraceletOrderService;
@Override
public GoblinRechargeWristbandVo getList() {
GoblinRechargeWristbandVo result = goblinRedisUtils.getRechargeWristbandVo();
......@@ -125,7 +141,26 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar
DeviceNumberResponse res = thirdMaiZhiUtils.getDeviceNumber(accessToken, operationNo, endtime, String.valueOf(timestamp));
if (null != res && res.getErrcode() == 200) {
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));
return true;
......@@ -156,6 +191,7 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar
public ChangeDeviceStatusResponse changeDeviceStatus(String cardno, int type) {
String accessToken = this.getAccessToken();
if (null != accessToken) {
// todo 更改订单状态为退款中
return thirdMaiZhiUtils.changeDeviceStatus(accessToken, cardno, type);
}
return null;
......@@ -165,10 +201,22 @@ public class GoblinRechargeWristbandServiceImpl extends ServiceImpl<GoblinRechar
public Boolean refundRes() {
String accessToken = this.getAccessToken();
if (null != accessToken) {
// jxl todo 查询所有退款中状态的设备编号 然后循环查询结果
String cardno = "sss";
ChangeDeviceStatusResponse res = thirdMaiZhiUtils.refundRes(accessToken, cardno);
// jxl todo 把结果写入 redis and mysql
List<GoblinBraceletOrder> list = iGoblinBraceletOrderService.list(Wrappers.lambdaQuery(GoblinBraceletOrder.class).eq(GoblinBraceletOrder::getStatus, 3));
for (GoblinBraceletOrder order : list) {
String cardno = order.getCardno();
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;
} else {
return false;
......
......@@ -3004,6 +3004,21 @@ public class GoblinRedisUtils {
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
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=?
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=?
\ 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