|
|
|
|
@ -1,46 +1,54 @@
|
|
|
|
|
package com.cyl.manager.oms.service;
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
|
import com.cyl.manager.act.service.MemberCouponService;
|
|
|
|
|
import com.cyl.manager.oms.convert.OrderOperateHistoryConvert;
|
|
|
|
|
import com.cyl.manager.oms.domain.entity.Order;
|
|
|
|
|
import com.cyl.manager.oms.domain.entity.OrderItem;
|
|
|
|
|
import com.cyl.manager.oms.domain.entity.OrderOperateHistory;
|
|
|
|
|
import com.cyl.manager.oms.mapper.OrderItemMapper;
|
|
|
|
|
import com.cyl.manager.oms.mapper.OrderMapper;
|
|
|
|
|
import com.cyl.manager.oms.mapper.OrderOperateHistoryMapper;
|
|
|
|
|
import com.cyl.manager.oms.domain.entity.*;
|
|
|
|
|
import com.cyl.manager.oms.mapper.*;
|
|
|
|
|
import com.cyl.manager.oms.domain.form.DealWithAftersaleForm;
|
|
|
|
|
import com.cyl.manager.oms.domain.form.ManagerAftersaleOrderForm;
|
|
|
|
|
import com.cyl.manager.oms.domain.vo.*;
|
|
|
|
|
import com.cyl.manager.pms.mapper.SkuMapper;
|
|
|
|
|
import com.cyl.manager.ums.domain.entity.Member;
|
|
|
|
|
import com.cyl.manager.ums.domain.entity.MemberWechat;
|
|
|
|
|
import com.cyl.manager.ums.mapper.MemberMapper;
|
|
|
|
|
import com.cyl.manager.ums.mapper.MemberWechatMapper;
|
|
|
|
|
import com.cyl.wechat.WechatPayService;
|
|
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
|
|
import com.ruoyi.common.constant.Constants;
|
|
|
|
|
import com.ruoyi.common.constant.HttpStatus;
|
|
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
|
|
import com.ruoyi.common.core.domain.model.LoginUser;
|
|
|
|
|
import com.ruoyi.common.enums.AftersaleStatus;
|
|
|
|
|
import com.ruoyi.common.enums.OrderRefundStatus;
|
|
|
|
|
import com.wechat.pay.java.service.refund.model.Refund;
|
|
|
|
|
import com.wechat.pay.java.service.refund.model.RefundNotification;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import com.cyl.manager.oms.mapper.AftersaleMapper;
|
|
|
|
|
import com.cyl.manager.oms.domain.entity.Aftersale;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 订单售后Service业务层处理
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* @author zcc
|
|
|
|
|
*/
|
|
|
|
|
@Service
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class AftersaleService {
|
|
|
|
|
@Autowired
|
|
|
|
|
private AftersaleMapper aftersaleMapper;
|
|
|
|
|
@ -61,6 +69,16 @@ public class AftersaleService {
|
|
|
|
|
private OrderOperateHistoryConvert historyConvert;
|
|
|
|
|
@Autowired
|
|
|
|
|
private SkuMapper skuMapper;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MemberCouponService memberCouponService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private WechatPaymentHistoryMapper wechatPaymentHistoryMapper;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MemberWechatMapper memberWechatMapper;
|
|
|
|
|
@Autowired(required = false)
|
|
|
|
|
private WechatPayService wechatPayService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private OrderOperateHistoryMapper operateHistoryMapper;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询订单售后
|
|
|
|
|
@ -70,7 +88,7 @@ public class AftersaleService {
|
|
|
|
|
*/
|
|
|
|
|
public ManagerRefundOrderDetailVO selectById(Long id) {
|
|
|
|
|
Order order = orderMapper.selectById(id);
|
|
|
|
|
if (order == null){
|
|
|
|
|
if (order == null) {
|
|
|
|
|
throw new RuntimeException("无该订单信息");
|
|
|
|
|
}
|
|
|
|
|
ManagerRefundOrderDetailVO result = new ManagerRefundOrderDetailVO();
|
|
|
|
|
@ -129,6 +147,9 @@ public class AftersaleService {
|
|
|
|
|
refundInfo.setDescription(aftersale.getDescription());
|
|
|
|
|
refundInfo.setProofPics(aftersale.getProofPics());
|
|
|
|
|
refundInfo.setRefundStatus(aftersale.getStatus());
|
|
|
|
|
refundInfo.setRefundWpCode(aftersale.getRefundWpCode());
|
|
|
|
|
refundInfo.setRefundWaybillCode(aftersale.getRefundWaybillCode());
|
|
|
|
|
refundInfo.setRefundStatus(aftersale.getStatus());
|
|
|
|
|
refundInfo.setRemark(aftersale.getHandleNote());
|
|
|
|
|
refundInfoList.add(refundInfo);
|
|
|
|
|
});
|
|
|
|
|
@ -140,18 +161,18 @@ public class AftersaleService {
|
|
|
|
|
* 查询订单售后列表
|
|
|
|
|
*
|
|
|
|
|
* @param query 查询条件
|
|
|
|
|
* @param page 分页条件
|
|
|
|
|
* @param page 分页条件
|
|
|
|
|
* @return 订单售后
|
|
|
|
|
*/
|
|
|
|
|
public List<ManagerRefundOrderVO> selectList(ManagerAftersaleOrderForm query, Pageable page) {
|
|
|
|
|
if (page != null) {
|
|
|
|
|
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
|
|
|
|
}
|
|
|
|
|
if (StrUtil.isNotBlank(query.getOrderSn()) && query.getOrderSn().length() > 7){
|
|
|
|
|
if (StrUtil.isNotBlank(query.getOrderSn()) && query.getOrderSn().length() > 7) {
|
|
|
|
|
query.setOrderSn(query.getOrderSn().substring(7));
|
|
|
|
|
}
|
|
|
|
|
List<ManagerRefundOrderVO> managerRefundOrderVOS = aftersaleMapper.selectManagerRefundOrder(query);
|
|
|
|
|
if (CollectionUtil.isEmpty(managerRefundOrderVOS)){
|
|
|
|
|
if (CollectionUtil.isEmpty(managerRefundOrderVOS)) {
|
|
|
|
|
return managerRefundOrderVOS;
|
|
|
|
|
}
|
|
|
|
|
Set<Long> idSet = managerRefundOrderVOS.stream().map(ManagerRefundOrderVO::getOrderId).collect(Collectors.toSet());
|
|
|
|
|
@ -216,35 +237,40 @@ public class AftersaleService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 售后处理
|
|
|
|
|
*
|
|
|
|
|
* @param request 请求体
|
|
|
|
|
* @param user 操作人
|
|
|
|
|
* @param user 操作人
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Transactional
|
|
|
|
|
public String dealWith(DealWithAftersaleForm request, LoginUser user) {
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void dealWith(DealWithAftersaleForm request, Long userId, String optUserName) {
|
|
|
|
|
Order order = orderMapper.selectById(request.getOrderId());
|
|
|
|
|
if (order == null){
|
|
|
|
|
if (order == null) {
|
|
|
|
|
throw new RuntimeException("无该订单");
|
|
|
|
|
}
|
|
|
|
|
//目前售后类型只有退款,没有退货退款
|
|
|
|
|
//所以目前只需要查看是否有待处理的售后单
|
|
|
|
|
QueryWrapper<Aftersale> aftersaleQw = new QueryWrapper<>();
|
|
|
|
|
aftersaleQw.eq("status", AftersaleStatus.APPLY.getType());
|
|
|
|
|
aftersaleQw.eq("order_id", request.getOrderId());
|
|
|
|
|
if (request.getOptType() == 3) {
|
|
|
|
|
aftersaleQw.eq("status", 1);
|
|
|
|
|
} else {
|
|
|
|
|
aftersaleQw.eq("status", 0);
|
|
|
|
|
}
|
|
|
|
|
Aftersale aftersale = aftersaleMapper.selectOne(aftersaleQw);
|
|
|
|
|
if (aftersale == null){
|
|
|
|
|
if (aftersale == null) {
|
|
|
|
|
throw new RuntimeException("没有售后单");
|
|
|
|
|
}
|
|
|
|
|
//售后状态与售后类型是否对应
|
|
|
|
|
boolean ifAgree = Constants.OptType.AGREE.equals(request.getOptType());
|
|
|
|
|
boolean ifRefuse = Constants.OptType.REFUSE.equals(request.getOptType());
|
|
|
|
|
if (ifAgree || ifRefuse){
|
|
|
|
|
if (!AftersaleStatus.APPLY.getType().equals(aftersale.getStatus())){
|
|
|
|
|
throw new RuntimeException("订单状态有误,请刷新后重试");
|
|
|
|
|
if (Constants.OptType.AGREE.equals(request.getOptType()) || Constants.OptType.REFUSE.equals(request.getOptType())) {
|
|
|
|
|
if (!AftersaleStatus.APPLY.getType().equals(aftersale.getStatus())) {
|
|
|
|
|
throw new RuntimeException("订单状态错误,请刷新页面后重试!");
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (!AftersaleStatus.WAIT.getType().equals(aftersale.getStatus())) {
|
|
|
|
|
throw new RuntimeException("订单状态错误,请刷新页面后重试!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//拒绝则理由必填
|
|
|
|
|
if (ifRefuse && StrUtil.isBlank(request.getRemark())){
|
|
|
|
|
if (Constants.OptType.REFUSE.equals(request.getOptType()) && StrUtil.isBlank(request.getRemark())) {
|
|
|
|
|
throw new RuntimeException("请填写拒绝理由");
|
|
|
|
|
}
|
|
|
|
|
LocalDateTime optDate = LocalDateTime.now();
|
|
|
|
|
@ -254,55 +280,177 @@ public class AftersaleService {
|
|
|
|
|
optHistory.setOrderSn(order.getOrderSn());
|
|
|
|
|
optHistory.setOperateMan("后台管理员");
|
|
|
|
|
optHistory.setCreateTime(optDate);
|
|
|
|
|
optHistory.setCreateBy(user.getUserId());
|
|
|
|
|
optHistory.setUpdateBy(user.getUserId());
|
|
|
|
|
optHistory.setCreateBy(userId);
|
|
|
|
|
optHistory.setUpdateBy(userId);
|
|
|
|
|
optHistory.setUpdateTime(optDate);
|
|
|
|
|
//封装售后wrapper
|
|
|
|
|
UpdateWrapper<Aftersale> aftersaleWrapper = new UpdateWrapper<>();
|
|
|
|
|
aftersaleWrapper.eq("order_id", request.getOrderId());
|
|
|
|
|
aftersaleWrapper.eq("status", AftersaleStatus.APPLY.getType());
|
|
|
|
|
aftersaleWrapper.set("handle_man", user.getUser().getNickName());
|
|
|
|
|
aftersaleWrapper.set("handle_man", optUserName);
|
|
|
|
|
aftersaleWrapper.set("update_time", optDate);
|
|
|
|
|
aftersaleWrapper.set("handle_time", optDate);
|
|
|
|
|
aftersaleWrapper.set("update_by", user.getUserId());
|
|
|
|
|
aftersaleWrapper.set("update_by", userId);
|
|
|
|
|
//封装订单wrapper
|
|
|
|
|
UpdateWrapper<Order> orderWrapper = new UpdateWrapper<>();
|
|
|
|
|
orderWrapper.eq("id", request.getOrderId());
|
|
|
|
|
orderWrapper.set("update_time", optDate);
|
|
|
|
|
orderWrapper.set("update_by", user.getUserId());
|
|
|
|
|
orderWrapper.set("update_by", userId);
|
|
|
|
|
//更新订单、售后单,创建操作记录
|
|
|
|
|
if (ifRefuse){
|
|
|
|
|
if (request.getOptType().equals(Constants.OptType.REFUSE)) {
|
|
|
|
|
aftersaleWrapper.set("status", AftersaleStatus.REJECT.getType());
|
|
|
|
|
aftersaleWrapper.set("handle_note", request.getRemark());
|
|
|
|
|
orderWrapper.set("aftersale_status", OrderRefundStatus.NO_REFUND.getType());
|
|
|
|
|
optHistory.setOrderStatus(14);
|
|
|
|
|
}else if (ifAgree){
|
|
|
|
|
//如果是未发货的情况下,直接增加库存
|
|
|
|
|
if (order.getStatus() == 1) {
|
|
|
|
|
OrderItem orderItem = orderItemMapper.selectOne(new QueryWrapper<OrderItem>().eq("order_id", order.getId()));
|
|
|
|
|
skuMapper.updateStockById(orderItem.getSkuId(),LocalDateTime.now(),-1*orderItem.getQuantity());
|
|
|
|
|
//todo 微信直接退款
|
|
|
|
|
aftersaleWrapper.set("status", AftersaleStatus.SUCCESS.getType());
|
|
|
|
|
orderWrapper.set("aftersale_status", OrderRefundStatus.SUCCESS.getType());
|
|
|
|
|
} else {
|
|
|
|
|
aftersaleWrapper.set("status", AftersaleStatus.WAIT.getType());
|
|
|
|
|
orderWrapper.set("aftersale_status", OrderRefundStatus.WAIT.getType());
|
|
|
|
|
}
|
|
|
|
|
} else if (request.getOptType().equals(Constants.OptType.AGREE)) {
|
|
|
|
|
aftersaleWrapper.set("status", AftersaleStatus.WAIT.getType());
|
|
|
|
|
orderWrapper.set("aftersale_status", Objects.equals(aftersale.getType(), 1) ? 3 : 2);
|
|
|
|
|
optHistory.setOrderStatus(12);
|
|
|
|
|
} else {
|
|
|
|
|
//如果是退货退款 order身上的售后状态应该是保持不变的 仅退款的话就进入退款了
|
|
|
|
|
orderWrapper.set("aftersale_status", 3);
|
|
|
|
|
int row = orderMapper.update(null, orderWrapper);
|
|
|
|
|
if (row != 1) {
|
|
|
|
|
throw new RuntimeException("修改订单状态失败");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int rows = aftersaleMapper.update(null, aftersaleWrapper);
|
|
|
|
|
if (rows < 1){
|
|
|
|
|
throw new RuntimeException("更新售后单失败");
|
|
|
|
|
}
|
|
|
|
|
// if (rows < 1) {
|
|
|
|
|
// throw new RuntimeException("更新售后单失败");
|
|
|
|
|
// }
|
|
|
|
|
rows = orderMapper.update(null, orderWrapper);
|
|
|
|
|
if (rows < 1){
|
|
|
|
|
if (rows < 1) {
|
|
|
|
|
throw new RuntimeException("更新订单失败");
|
|
|
|
|
}
|
|
|
|
|
rows = orderOperateHistoryMapper.insert(optHistory);
|
|
|
|
|
if (rows < 1){
|
|
|
|
|
if (rows < 1) {
|
|
|
|
|
throw new RuntimeException("创建订单操作记录失败");
|
|
|
|
|
}
|
|
|
|
|
return "操作成功";
|
|
|
|
|
// 是否需要发起退款
|
|
|
|
|
if ((request.getOptType() == Constants.OptType.GIVING || (request.getOptType() == Constants.OptType.AGREE && aftersale.getType() == 1))) {
|
|
|
|
|
tradeRefund(aftersale, order, optDate, userId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void tradeRefund(Aftersale returnApply, Order order, LocalDateTime optDate, Long userId) {
|
|
|
|
|
//查一下微信订单
|
|
|
|
|
QueryWrapper<WechatPaymentHistory> qw = new QueryWrapper<>();
|
|
|
|
|
qw.eq("order_id", order.getPayId()).eq("op_type", 1);
|
|
|
|
|
WechatPaymentHistory history = wechatPaymentHistoryMapper.selectOne(qw);
|
|
|
|
|
//查用户的微信信息
|
|
|
|
|
QueryWrapper<MemberWechat> wechatQw = new QueryWrapper<>();
|
|
|
|
|
wechatQw.eq("member_id", order.getMemberId());
|
|
|
|
|
MemberWechat memberWechat = memberWechatMapper.selectOne(wechatQw);
|
|
|
|
|
//查订单item
|
|
|
|
|
QueryWrapper<OrderItem> itemQw = new QueryWrapper<>();
|
|
|
|
|
itemQw.eq("order_id", order.getId());
|
|
|
|
|
OrderItem orderItem = orderItemMapper.selectOne(itemQw);
|
|
|
|
|
//开始退款
|
|
|
|
|
Refund wechatResponse = wechatPayService.refundPay(returnApply.getId() + "",
|
|
|
|
|
order.getPayId() + "",
|
|
|
|
|
"https://mall.younigou.net/api/no-auth/wechat/weChatRefundNotify",
|
|
|
|
|
returnApply.getReturnAmount().multiply(new BigDecimal("100")).longValue(),
|
|
|
|
|
history.getMoney().multiply(new BigDecimal("100")).longValue(), returnApply.getReason());
|
|
|
|
|
log.info("发起微信退款返回信息,tradeRefund:{}", JSONObject.toJSONString(wechatResponse == null ? "" : wechatResponse));
|
|
|
|
|
|
|
|
|
|
if (wechatResponse != null && Arrays.asList("PROCESSING", "SUCCESS").contains(wechatResponse.getStatus().name())) {
|
|
|
|
|
qw = new QueryWrapper<>();
|
|
|
|
|
qw.eq("order_id", order.getId()).eq("op_type", 3);
|
|
|
|
|
WechatPaymentHistory refundHistory = wechatPaymentHistoryMapper.selectOne(qw);
|
|
|
|
|
if (refundHistory == null) {
|
|
|
|
|
WechatPaymentHistory wechatPaymentHistory = new WechatPaymentHistory();
|
|
|
|
|
wechatPaymentHistory.setPaymentId(wechatResponse.getRefundId());
|
|
|
|
|
wechatPaymentHistory.setMemberId(order.getMemberId());
|
|
|
|
|
wechatPaymentHistory.setOpenid(memberWechat.getOpenid());
|
|
|
|
|
wechatPaymentHistory.setTitle(orderItem.getProductName());
|
|
|
|
|
wechatPaymentHistory.setOrderId(order.getId());
|
|
|
|
|
wechatPaymentHistory.setMoney(returnApply.getReturnAmount().multiply(new BigDecimal("100")));
|
|
|
|
|
wechatPaymentHistory.setOpType(3);
|
|
|
|
|
wechatPaymentHistory.setPaymentStatus(0);
|
|
|
|
|
wechatPaymentHistory.setResponseBody(JSON.toJSONString(wechatResponse));
|
|
|
|
|
wechatPaymentHistory.setCreateTime(optDate);
|
|
|
|
|
wechatPaymentHistory.setUpdateTime(optDate);
|
|
|
|
|
wechatPaymentHistory.setCreateBy(userId);
|
|
|
|
|
wechatPaymentHistory.setUpdateBy(userId);
|
|
|
|
|
wechatPaymentHistoryMapper.insert(wechatPaymentHistory);
|
|
|
|
|
} else {
|
|
|
|
|
UpdateWrapper<WechatPaymentHistory> updateWrapper = new UpdateWrapper<>();
|
|
|
|
|
updateWrapper.eq("id", refundHistory.getId())
|
|
|
|
|
.set("payment_id", wechatResponse.getRefundId()).set("update_time", optDate);
|
|
|
|
|
wechatPaymentHistoryMapper.update(null, updateWrapper);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 订单退款回调MQ
|
|
|
|
|
*
|
|
|
|
|
* @param weChatRefundNotify
|
|
|
|
|
*/
|
|
|
|
|
@Transactional
|
|
|
|
|
public void refundOrderExc(RefundNotification weChatRefundNotify) {
|
|
|
|
|
log.info("收到订单回调MQ:" + JSONObject.toJSONString(weChatRefundNotify));
|
|
|
|
|
if ("PROCESSING".equals(weChatRefundNotify.getRefundStatus().name())) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//查一下微信订单
|
|
|
|
|
QueryWrapper<WechatPaymentHistory> qw = new QueryWrapper<>();
|
|
|
|
|
qw.eq("payment_id", weChatRefundNotify.getRefundId()).eq("op_type", 3);
|
|
|
|
|
WechatPaymentHistory history = wechatPaymentHistoryMapper.selectOne(qw);
|
|
|
|
|
if (history == null) {
|
|
|
|
|
log.info("未找到退款单");
|
|
|
|
|
throw new RuntimeException();
|
|
|
|
|
}
|
|
|
|
|
LocalDateTime optDate = LocalDateTime.now();
|
|
|
|
|
QueryWrapper<Order> orderQw = new QueryWrapper<>();
|
|
|
|
|
orderQw.eq("id", history.getOrderId());
|
|
|
|
|
Order order = orderMapper.selectOne(orderQw);
|
|
|
|
|
if (order.getStatus() == OrderRefundStatus.SUCCESS.getType()) {
|
|
|
|
|
log.info("订单已经是退款成功状态");
|
|
|
|
|
throw new RuntimeException();
|
|
|
|
|
}
|
|
|
|
|
QueryWrapper<Aftersale> aftersaleQw = new QueryWrapper<>();
|
|
|
|
|
aftersaleQw.eq("order_id", history.getOrderId()).eq("status", AftersaleStatus.WAIT.getType());
|
|
|
|
|
if ("SUCCESS".equals(weChatRefundNotify.getRefundStatus().name())) {
|
|
|
|
|
//更改订单表
|
|
|
|
|
UpdateWrapper<Order> orderUpdateWrapper = new UpdateWrapper<>();
|
|
|
|
|
orderUpdateWrapper.eq("id", history.getOrderId())
|
|
|
|
|
.set("aftersale_status", OrderRefundStatus.SUCCESS.getType());
|
|
|
|
|
orderMapper.update(null, orderUpdateWrapper);
|
|
|
|
|
|
|
|
|
|
//更改 售后表
|
|
|
|
|
UpdateWrapper<Aftersale> aftersaleWrapper = new UpdateWrapper<>();
|
|
|
|
|
aftersaleWrapper.eq("order_id", history.getOrderId()).set("status", AftersaleStatus.SUCCESS.getType());
|
|
|
|
|
aftersaleMapper.update(null, aftersaleWrapper);
|
|
|
|
|
|
|
|
|
|
//更改 微信表
|
|
|
|
|
UpdateWrapper<WechatPaymentHistory> paymentWrapper = new UpdateWrapper<>();
|
|
|
|
|
paymentWrapper.eq("payment_id", weChatRefundNotify.getRefundId()).eq("op_type", 3)
|
|
|
|
|
.set("payment_status", 1);
|
|
|
|
|
wechatPaymentHistoryMapper.update(null, paymentWrapper);
|
|
|
|
|
OrderOperateHistory optHistory = new OrderOperateHistory();
|
|
|
|
|
optHistory.setOrderId(order.getId());
|
|
|
|
|
optHistory.setOperateMan("系统");
|
|
|
|
|
optHistory.setCreateTime(optDate);
|
|
|
|
|
optHistory.setCreateBy(order.getMemberId());
|
|
|
|
|
optHistory.setUpdateBy(order.getMemberId());
|
|
|
|
|
optHistory.setUpdateTime(optDate);
|
|
|
|
|
optHistory.setOrderStatus(13);
|
|
|
|
|
operateHistoryMapper.insert(optHistory);
|
|
|
|
|
// 回滚商品和sku销量
|
|
|
|
|
OrderItem orderItem = orderItemMapper.selectOne(new QueryWrapper<OrderItem>().eq("order_id", order.getId()));
|
|
|
|
|
skuMapper.updateStockById(orderItem.getSkuId(), LocalDateTime.now(), -1 * orderItem.getQuantity());
|
|
|
|
|
//退还优惠券
|
|
|
|
|
if (order.getMemberCouponId() != null) {
|
|
|
|
|
memberCouponService.backCoupon(Arrays.asList(order.getMemberCouponId()));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//更改订单表
|
|
|
|
|
UpdateWrapper<Order> orderUpdateWrapper = new UpdateWrapper<>();
|
|
|
|
|
orderUpdateWrapper.eq("id", history.getOrderId())
|
|
|
|
|
.set("aftersale_status", OrderRefundStatus.FAIL.getType());
|
|
|
|
|
orderMapper.update(null, orderUpdateWrapper);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<OrderOperateHistoryVO> log(Long orderId) {
|
|
|
|
|
@ -313,4 +461,11 @@ public class AftersaleService {
|
|
|
|
|
List<OrderOperateHistory> historyList = orderOperateHistoryMapper.selectList(wrapper);
|
|
|
|
|
return historyConvert.dos2vos(historyList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Aftersale queryAfterSale(Long orderId) {
|
|
|
|
|
QueryWrapper<Aftersale> itemQw = new QueryWrapper<>();
|
|
|
|
|
itemQw.eq("order_id",orderId);
|
|
|
|
|
itemQw.in("status",Arrays.asList(AftersaleStatus.APPLY.getType(),AftersaleStatus.WAIT.getType()));
|
|
|
|
|
return aftersaleMapper.selectOne(itemQw);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|