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

Commit 1053ad7e authored by 张国柄's avatar 张国柄

~admin:会员管理:会员订单:退款逻辑调整;

parent ef02988e
...@@ -129,90 +129,102 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder ...@@ -129,90 +129,102 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
@Override @Override
@Transactional @Transactional
public AjaxResult refundProcessing(AdamMemberOrderRefundParam param, AdamMemberOrder memberOrder) { public AjaxResult refundProcessing(AdamMemberOrderRefundParam param, AdamMemberOrder memberOrder) {
LinkedMultiValueMap<String, String> linkedMultiValueMap = new LinkedMultiValueMap<>(); String refundNo, price, reason;
AdamMemberRefund existsRefund = adamMemberRefundMapper.selectOne(Wrappers.lambdaQuery(AdamMemberRefund.class)
String refundNo = IDGenerator.nextTimeId2().concat("VR"); .eq(AdamMemberRefund::getOrderNo, memberOrder.getOrderNo()).eq(AdamMemberRefund::getRefundState, 9));
if (null == existsRefund) {
refundNo = IDGenerator.nextTimeId2().concat("VR");
price = String.valueOf(param.getRefundAmt());
reason = param.getReason();
{// 修改订单状态,同步REDIS
LocalDateTime now = LocalDateTime.now();
AdamMemberRefund memberRefund = new AdamMemberRefund();
memberRefund.setRefundNo(refundNo);
memberRefund.setOrderNo(memberOrder.getOrderNo());
memberRefund.setRefundPrice(param.getRefundAmt());
memberRefund.setRefundReason(param.getReason());
memberRefund.setRenewable(param.getRenewable());
memberRefund.setRefundState(9);
memberRefund.setRefundNo(refundNo);
memberRefund.setOperator(ShiroUtils.getLoginName());
memberRefund.setCreatedAt(now);
adamMemberRefundMapper.insert(memberRefund);
AdamMemberOrder updateInfoMemberOrder = new AdamMemberOrder();
updateInfoMemberOrder.setMid(memberOrder.getMid());
updateInfoMemberOrder.setState(4);
updateInfoMemberOrder.setUpdatedAt(now);
updateInfoMemberOrder.setComment("R");
adamMemberOrderMapper.updateById(updateInfoMemberOrder);
String moKey = AdamRedisConst.INFO_MEMBER_ORDER + memberOrder.getUid();
ArrayList<AdamMemberOrderVo> vos = (ArrayList<AdamMemberOrderVo>) redisDataSourceUtil.getRedisAdamUtil().get(moKey);
int idx = IntStream.range(0, vos.size())
.filter(i -> vos.get(i).getOrderNo().equals(memberOrder.getOrderNo()))
.findFirst().orElse(-1);
AdamMemberOrderVo vo = vos.get(idx);
vo.setState(4);
vo.setUpdatedAt(now);
vos.set(idx, vo);
redisDataSourceUtil.getRedisAdamUtil().set(moKey, vos);
if (memberRefund.getRenewable() == 2) {// 拉黑用户,直接更新用户会员状态信息
AdamUserMember updateUserMember = new AdamUserMember();
updateUserMember.setState(2);
updateUserMember.setExpiryAt(now);
updateUserMember.setUpdatedAt(now);
updateUserMember.setComment("R");
LambdaUpdateWrapper<AdamUserMember> userMemberLambdaUpdateWrapper = Wrappers.lambdaUpdate(AdamUserMember.class);
userMemberLambdaUpdateWrapper.eq(AdamUserMember::getUid, memberOrder.getUid());
adamUserMemberMapper.update(updateUserMember, userMemberLambdaUpdateWrapper);
String umkey = AdamRedisConst.INFO_USER_MEMBER + memberOrder.getUid();
AdamUserMemberVo userMemberVo = (AdamUserMemberVo) redisDataSourceUtil.getRedisAdamUtil().get(umkey);
userMemberVo.setState(2);
userMemberVo.setExpiryAt(now);
userMemberVo.setUpdatedAt(now);
redisDataSourceUtil.getRedisAdamUtil().set(umkey, userMemberVo);
List<String> uidBlackList = (List<String>) redisDataSourceUtil.getRedisAdamUtil().get(AdamRedisConst.BLK_LIST_MEMBER_UID);
if (CollectionUtils.isEmpty(uidBlackList)) {
uidBlackList = CollectionUtil.arrayListString();
}
uidBlackList.add(memberOrder.getUid());
redisDataSourceUtil.getRedisAdamUtil().set(AdamRedisConst.BLK_LIST_MEMBER_UID, uidBlackList);
}
}
} else {
log.warn("会员管理:会员订单:退款:该订单正在退款中[AdamMemberOrderRefundParam={}]", JsonUtils.toJson(param));
refundNo = existsRefund.getRefundNo();
price = String.valueOf(existsRefund.getRefundPrice());
reason = existsRefund.getRefundReason();
}
LinkedMultiValueMap<String, String> linkedMultiValueMap = new LinkedMultiValueMap<>();
linkedMultiValueMap.add("code", memberOrder.getPayNo()); linkedMultiValueMap.add("code", memberOrder.getPayNo());
linkedMultiValueMap.add("notifyUrl", notifyUrl); linkedMultiValueMap.add("notifyUrl", notifyUrl);
linkedMultiValueMap.add("orderCode", memberOrder.getOrderNo()); linkedMultiValueMap.add("orderCode", memberOrder.getOrderNo());
linkedMultiValueMap.add("orderRefundCode", refundNo); linkedMultiValueMap.add("orderRefundCode", refundNo);
linkedMultiValueMap.add("paymentId", memberOrder.getPaymentId()); linkedMultiValueMap.add("paymentId", memberOrder.getPaymentId());
linkedMultiValueMap.add("paymentType", (memberOrder.getDeviceFrom() + memberOrder.getPayType()).toUpperCase()); linkedMultiValueMap.add("paymentType", (memberOrder.getDeviceFrom() + memberOrder.getPayType()).toUpperCase());
linkedMultiValueMap.add("price", String.valueOf(param.getRefundAmt())); linkedMultiValueMap.add("price", price);
linkedMultiValueMap.add("priceTotal", String.valueOf(memberOrder.getPricePaid())); linkedMultiValueMap.add("priceTotal", String.valueOf(memberOrder.getPricePaid()));
linkedMultiValueMap.add("reason", param.getReason()); linkedMultiValueMap.add("reason", reason);
log.info("会员退款:支付中心请求参数:{}", linkedMultiValueMap); log.info("会员管理:会员订单:退款:支付中心请求参数:{}", linkedMultiValueMap);
String postResult = HttpUtil.post(applyUrl, linkedMultiValueMap); String postResult = HttpUtil.post(applyUrl, linkedMultiValueMap);
log.info("会员退款:支付中心返回数据:{}", postResult); log.info("会员管理:会员订单:退款:支付中心返回数据:{}", postResult);
JsonNode postResultJNode = JsonUtils.fromJson(postResult, JsonNode.class); JsonNode postResultJNode = JsonUtils.fromJson(postResult, JsonNode.class);
if (!postResultJNode.get("success").asBoolean()) { if (!postResultJNode.get("success").asBoolean()) {
return AjaxResult.warn("会员退款请求支付中心失败"); return AjaxResult.warn("会员退款请求支付中心失败");
} }
// 退款请求成功,修改订单状态,同步REDIS
LocalDateTime now = LocalDateTime.now();
AdamMemberRefund memberRefund = new AdamMemberRefund();
memberRefund.setRefundNo(refundNo);
memberRefund.setOrderNo(memberOrder.getOrderNo());
memberRefund.setRefundPrice(param.getRefundAmt());
memberRefund.setRefundReason(param.getReason());
memberRefund.setRenewable(param.getRenewable());
memberRefund.setRefundState(9);
memberRefund.setRefundNo(refundNo);
memberRefund.setOperator(ShiroUtils.getLoginName());
memberRefund.setCreatedAt(now);
adamMemberRefundMapper.insert(memberRefund);
AdamMemberOrder updateInfoMemberOrder = new AdamMemberOrder();
updateInfoMemberOrder.setMid(memberOrder.getMid());
updateInfoMemberOrder.setState(4);
updateInfoMemberOrder.setUpdatedAt(now);
updateInfoMemberOrder.setComment("R");
adamMemberOrderMapper.updateById(updateInfoMemberOrder);
String moKey = AdamRedisConst.INFO_MEMBER_ORDER + memberOrder.getUid();
ArrayList<AdamMemberOrderVo> vos = (ArrayList<AdamMemberOrderVo>) redisDataSourceUtil.getRedisAdamUtil().get(moKey);
int idx = IntStream.range(0, vos.size())
.filter(i -> vos.get(i).getOrderNo().equals(memberOrder.getOrderNo()))
.findFirst().orElse(-1);
AdamMemberOrderVo vo = vos.get(idx);
vo.setState(4);
vo.setUpdatedAt(now);
vos.set(idx, vo);
redisDataSourceUtil.getRedisAdamUtil().set(moKey, vos);
if (memberRefund.getRenewable() == 2) {// 拉黑用户,直接更新用户会员状态信息
AdamUserMember updateUserMember = new AdamUserMember();
updateUserMember.setState(2);
updateUserMember.setExpiryAt(now);
updateUserMember.setUpdatedAt(now);
updateUserMember.setComment("R");
LambdaUpdateWrapper<AdamUserMember> userMemberLambdaUpdateWrapper = Wrappers.lambdaUpdate(AdamUserMember.class);
userMemberLambdaUpdateWrapper.eq(AdamUserMember::getUid, memberOrder.getUid());
adamUserMemberMapper.update(updateUserMember, userMemberLambdaUpdateWrapper);
String umkey = AdamRedisConst.INFO_USER_MEMBER + memberOrder.getUid();
AdamUserMemberVo userMemberVo = (AdamUserMemberVo) redisDataSourceUtil.getRedisAdamUtil().get(umkey);
userMemberVo.setState(2);
userMemberVo.setExpiryAt(now);
userMemberVo.setUpdatedAt(now);
redisDataSourceUtil.getRedisAdamUtil().set(umkey, userMemberVo);
List<String> uidBlackList = (List<String>) redisDataSourceUtil.getRedisAdamUtil().get(AdamRedisConst.BLK_LIST_MEMBER_UID);
if (CollectionUtils.isEmpty(uidBlackList)) {
uidBlackList = CollectionUtil.arrayListString();
}
uidBlackList.add(memberOrder.getUid());
redisDataSourceUtil.getRedisAdamUtil().set(AdamRedisConst.BLK_LIST_MEMBER_UID, uidBlackList);
}
return AjaxResult.success(); return AjaxResult.success();
} }
......
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