定时任务

master
wyq 7 months ago
parent 7b37f10b56
commit bd04519d70
  1. 5
      crmeb-admin/src/main/java/com/zbkj/admin/controller/extend/TestController.java
  2. 2
      crmeb-admin/src/main/resources/logback-spring.xml
  3. 1
      crmeb-service/src/main/java/com/zbkj/service/service/impl/CallbackServiceImpl.java
  4. 5
      crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderPayServiceImpl.java
  5. 6
      crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderTaskServiceImpl.java
  6. 46
      crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderServiceImpl.java
  7. 45
      crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderTaskServiceImpl.java

@ -40,6 +40,9 @@ public class TestController {
private StoreOrderRefundService storeOrderRefundService; private StoreOrderRefundService storeOrderRefundService;
@Autowired @Autowired
private WechatNewService wechatNewService; private WechatNewService wechatNewService;
@Autowired
private OrderTaskService orderTaskService;
@PostMapping("/aa") @PostMapping("/aa")
String createDelivery(@RequestBody MallDelivery mallDelivery){ String createDelivery(@RequestBody MallDelivery mallDelivery){
StoreOrder storeOrder = storeOrderDao.selectOne(new LambdaQueryWrapper<StoreOrder>().eq(StoreOrder::getOrderId, mallDelivery.getPlatformCode())); StoreOrder storeOrder = storeOrderDao.selectOne(new LambdaQueryWrapper<StoreOrder>().eq(StoreOrder::getOrderId, mallDelivery.getPlatformCode()));
@ -53,8 +56,8 @@ public class TestController {
String bb(@RequestBody MallDelivery mallDelivery){ String bb(@RequestBody MallDelivery mallDelivery){
StoreOrder storeOrder = storeOrderDao.selectOne(new LambdaQueryWrapper<StoreOrder>().eq(StoreOrder::getOrderId, mallDelivery.getPlatformCode())); StoreOrder storeOrder = storeOrderDao.selectOne(new LambdaQueryWrapper<StoreOrder>().eq(StoreOrder::getOrderId, mallDelivery.getPlatformCode()));
orderTaskService.refundApply();
wechatNewService.payRefundQuery(storeOrder);
return ""; return "";
} }

@ -254,7 +254,7 @@
</rollingPolicy> </rollingPolicy>
<!-- 设置此 appender 的最低日志级别 --> <!-- 设置此 appender 的最低日志级别 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level> <level>DEBUG</level>
</filter> </filter>
</appender> </appender>

@ -530,6 +530,7 @@ public class CallbackServiceImpl implements CallbackService {
logger.warn("微信退款订单已确认成功==>" + refundRecord.getColumns() + ", rawData==>" + xmlInfo + ", data==>" + notifyRecord); logger.warn("微信退款订单已确认成功==>" + refundRecord.getColumns() + ", rawData==>" + xmlInfo + ", data==>" + notifyRecord);
return refundRecord.getStr("returnXml"); return refundRecord.getStr("returnXml");
} }
storeOrder.setAfterSalesStatus("已退款");
storeOrder.setRefundStatus(2); storeOrder.setRefundStatus(2);
boolean update = storeOrderService.updateById(storeOrder); boolean update = storeOrderService.updateById(storeOrder);
if (update) { if (update) {

@ -14,6 +14,7 @@ import com.alipay.api.domain.AlipayTradeWapPayModel;
import com.alipay.api.request.AlipayTradeAppPayRequest; import com.alipay.api.request.AlipayTradeAppPayRequest;
import com.alipay.api.request.AlipayTradeWapPayRequest; import com.alipay.api.request.AlipayTradeWapPayRequest;
import com.alipay.api.response.AlipayTradeAppPayResponse; import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zbkj.common.constants.*; import com.zbkj.common.constants.*;
import com.zbkj.common.exception.CrmebException; import com.zbkj.common.exception.CrmebException;
import com.zbkj.common.model.combination.StoreCombination; import com.zbkj.common.model.combination.StoreCombination;
@ -39,6 +40,7 @@ import com.zbkj.common.utils.CrmebDateUtil;
import com.zbkj.common.utils.RedisUtil; import com.zbkj.common.utils.RedisUtil;
import com.zbkj.common.utils.WxPayUtil; import com.zbkj.common.utils.WxPayUtil;
import com.zbkj.common.vo.*; import com.zbkj.common.vo.*;
import com.zbkj.service.dao.StoreOrderInfoDao;
import com.zbkj.service.delete.OrderUtils; import com.zbkj.service.delete.OrderUtils;
import com.zbkj.service.service.*; import com.zbkj.service.service.*;
import lombok.Data; import lombok.Data;
@ -111,7 +113,8 @@ public class OrderPayServiceImpl implements OrderPayService {
@Autowired @Autowired
private OrderUtils orderUtils; private OrderUtils orderUtils;
@Autowired
private StoreOrderInfoDao storeOrderInfoDao;
//订单类 //订单类
private StoreOrder order; private StoreOrder order;

@ -29,6 +29,7 @@ import com.zbkj.service.dao.UserAddressDao;
import com.zbkj.service.pojo.TradeOrderItemCreateReqDTO; import com.zbkj.service.pojo.TradeOrderItemCreateReqDTO;
import com.zbkj.service.service.*; import com.zbkj.service.service.*;
import com.zbkj.service.util.RedisLockUtil; import com.zbkj.service.util.RedisLockUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -55,6 +56,7 @@ import java.util.stream.Collectors;
* +---------------------------------------------------------------------- * +----------------------------------------------------------------------
*/ */
@Service @Service
@Slf4j
public class OrderTaskServiceImpl implements OrderTaskService { public class OrderTaskServiceImpl implements OrderTaskService {
//日志 //日志
private static final Logger logger = LoggerFactory.getLogger(OrderTaskServiceImpl.class); private static final Logger logger = LoggerFactory.getLogger(OrderTaskServiceImpl.class);
@ -165,7 +167,7 @@ public class OrderTaskServiceImpl implements OrderTaskService {
redisLock.lock(Constants.ORDER_LOCK + storeOrder.getOrderId(),5); redisLock.lock(Constants.ORDER_LOCK + storeOrder.getOrderId(),5);
if (!lock) { if (!lock) {
logger.error("订单未获取到锁orderNo = " + orderId); logger.error("订单未获取到锁orderNo = " + orderId);
continue; throw new CrmebException("单号被锁,orderNo = " + orderId);
} }
// boolean result = storeOrderTaskService.refundApply(storeOrder); // boolean result = storeOrderTaskService.refundApply(storeOrder);
boolean result = storeOrderTaskService.refundOrder(storeOrder); boolean result = storeOrderTaskService.refundOrder(storeOrder);
@ -174,8 +176,8 @@ public class OrderTaskServiceImpl implements OrderTaskService {
redisUtil.lPush(redisKey, orderId); redisUtil.lPush(redisKey, orderId);
} }
} catch (Exception e) { } catch (Exception e) {
log.error("订单退款错误:" , e);
retryService.systemErrNc("订单退款错误:" + e); retryService.systemErrNc("订单退款错误:" + e);
logger.error("订单退款错误:" + e.getMessage());
redisUtil.lPush(redisKey, orderId); redisUtil.lPush(redisKey, orderId);
} }
} }

@ -567,6 +567,9 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
throw new CrmebException("系统繁忙,请稍后再试"); throw new CrmebException("系统繁忙,请稍后再试");
} }
StoreOrder storeOrder = getInfoException(request.getOrderNo()); StoreOrder storeOrder = getInfoException(request.getOrderNo());
if("退货退款".equals(storeOrder.getAfterSalesType()) && StrUtil.isBlank(storeOrder.getReshippingAddress())){
throw new CrmebException("请先同意退货");
}
if (!storeOrder.getPaid()) { if (!storeOrder.getPaid()) {
throw new CrmebException("未支付无法退款"); throw new CrmebException("未支付无法退款");
} }
@ -585,22 +588,22 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
User user = userService.getById(storeOrder.getUid()); User user = userService.getById(storeOrder.getUid());
//退款 //退款
if (storeOrder.getPayType().equals(Constants.PAY_TYPE_WE_CHAT) && request.getAmount().compareTo(BigDecimal.ZERO) > 0) { // if (storeOrder.getPayType().equals(Constants.PAY_TYPE_WE_CHAT) && request.getAmount().compareTo(BigDecimal.ZERO) > 0) {
try { // try {
storeOrderRefundService.refund(request, storeOrder); // storeOrderRefundService.refund(request, storeOrder);
} catch (Exception e) { // } catch (Exception e) {
e.printStackTrace(); // e.printStackTrace();
throw new CrmebException("微信申请退款失败!"); // throw new CrmebException("微信申请退款失败!");
} // }
} // }
if (storeOrder.getPayType().equals(Constants.PAY_TYPE_ALI_PAY) && request.getAmount().compareTo(BigDecimal.ZERO) > 0) { // if (storeOrder.getPayType().equals(Constants.PAY_TYPE_ALI_PAY) && request.getAmount().compareTo(BigDecimal.ZERO) > 0) {
try { // try {
aliPayService.refund(request, storeOrder); // aliPayService.refund(request, storeOrder);
} catch (Exception e) { // } catch (Exception e) {
e.printStackTrace(); // e.printStackTrace();
throw new CrmebException("支付宝申请退款失败!"); // throw new CrmebException("支付宝申请退款失败!");
} // }
} // }
//修改订单退款状态 //修改订单退款状态
storeOrder.setRefundStatus(3); storeOrder.setRefundStatus(3);
@ -619,7 +622,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
// 退款task // 退款task
redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER, storeOrder.getId()); redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER, storeOrder.getId());
} }
if (storeOrder.getPayType().equals(Constants.PAY_TYPE_WE_CHAT) && request.getAmount().compareTo(BigDecimal.ZERO) == 0) { if (storeOrder.getPayType().equals(Constants.PAY_TYPE_WE_CHAT) && request.getAmount().compareTo(BigDecimal.ZERO) != 0) {
//新增日志 //新增日志
userBillService.saveRefundBill(request, user); userBillService.saveRefundBill(request, user);
@ -2368,6 +2371,11 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
return; return;
} }
switch (status) { switch (status) {
case Constants.ORDER_STATUS_REFUNDING_REQUEST: //申请退款
queryWrapper.eq("paid", 1);
queryWrapper.in("refund_status", 1);
queryWrapper.eq("is_del", 0);
break;
case Constants.ORDER_STATUS_UNPAID: //未支付 case Constants.ORDER_STATUS_UNPAID: //未支付
queryWrapper.eq("paid", 0);//支付状态 queryWrapper.eq("paid", 0);//支付状态
queryWrapper.eq("status", 0); //订单状态 queryWrapper.eq("status", 0); //订单状态
@ -2407,7 +2415,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
break; break;
case Constants.ORDER_STATUS_REFUNDING: //退款中 case Constants.ORDER_STATUS_REFUNDING: //退款中
queryWrapper.eq("paid", 1); queryWrapper.eq("paid", 1);
queryWrapper.in("refund_status", 1,3); queryWrapper.in("refund_status", 3);
queryWrapper.eq("is_del", 0); queryWrapper.eq("is_del", 0);
break; break;
case Constants.ORDER_STATUS_REFUNDED: //已退款 case Constants.ORDER_STATUS_REFUNDED: //已退款
@ -2420,7 +2428,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
break; break;
default: default:
queryWrapper.eq("paid", 1); queryWrapper.eq("paid", 1);
queryWrapper.ne("refund_status", 2); // queryWrapper.ne("refund_status", 2);
break; break;
} }
queryWrapper.eq("is_system_del", 0); queryWrapper.eq("is_system_del", 0);

@ -6,6 +6,7 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUnit;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.zbkj.common.constants.*; import com.zbkj.common.constants.*;
import com.zbkj.common.exception.CrmebException; import com.zbkj.common.exception.CrmebException;
import com.zbkj.common.model.product.StoreProduct; import com.zbkj.common.model.product.StoreProduct;
@ -27,9 +28,11 @@ import com.zbkj.common.model.order.StoreOrderInfo;
import com.zbkj.common.model.product.StoreProductAttrValue; import com.zbkj.common.model.product.StoreProductAttrValue;
import com.zbkj.common.model.system.SystemAdmin; import com.zbkj.common.model.system.SystemAdmin;
import com.zbkj.common.vo.ShopOrderPayVo; import com.zbkj.common.vo.ShopOrderPayVo;
import com.zbkj.common.vo.WxRefundQueryResponseVo;
import com.zbkj.common.vo.WxRefundResponseVo; import com.zbkj.common.vo.WxRefundResponseVo;
import com.zbkj.service.delete.OrderUtils; import com.zbkj.service.delete.OrderUtils;
import com.zbkj.service.service.*; import com.zbkj.service.service.*;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -56,6 +59,7 @@ import java.util.stream.Collectors;
* +---------------------------------------------------------------------- * +----------------------------------------------------------------------
*/ */
@Service @Service
@Slf4j
public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
//日志 //日志
private static final Logger logger = LoggerFactory.getLogger(StoreOrderTaskServiceImpl.class); private static final Logger logger = LoggerFactory.getLogger(StoreOrderTaskServiceImpl.class);
@ -361,9 +365,7 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
List<UserIntegralRecord> addIntegralList = integralRecordList.stream().filter(e -> ObjectUtil.isNull(e.getId())).collect(Collectors.toList()); List<UserIntegralRecord> addIntegralList = integralRecordList.stream().filter(e -> ObjectUtil.isNull(e.getId())).collect(Collectors.toList());
List<UserIntegralRecord> updateIntegralList = integralRecordList.stream().filter(e -> ObjectUtil.isNotNull(e.getId())).collect(Collectors.toList()); List<UserIntegralRecord> updateIntegralList = integralRecordList.stream().filter(e -> ObjectUtil.isNotNull(e.getId())).collect(Collectors.toList());
StoreOrder tempOrder = new StoreOrder();
tempOrder.setId(storeOrder.getId());
tempOrder.setRefundStatus(2);
// 佣金处理:只处理冻结期佣金 // 佣金处理:只处理冻结期佣金
// 查询佣金记录 // 查询佣金记录
List<UserBrokerageRecord> brokerageRecordList = CollUtil.newArrayList(); List<UserBrokerageRecord> brokerageRecordList = CollUtil.newArrayList();
@ -389,16 +391,15 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
return Boolean.FALSE; return Boolean.FALSE;
} }
/* }*/ /* }*/
String mdbRefundNo = createAfterSale(storeOrder, user); boolean mdbRefundNo = createAfterSale(storeOrder, user);
if (StrUtil.isNotBlank(mdbRefundNo)) { if (!mdbRefundNo) {
storeOrder.setAfterSalesStatus("已退款"); logger.error("查询创建/退款查询失败,订单号:{} " ,storeOrder.getOrderId());
storeOrder.setRefundStatus(2);
storeOrder.setMdbRefundNo(mdbRefundNo);
}else {
logger.error("买单吧查询创建/退款查询失败,订单号:{} " ,storeOrder.getOrderId());
return Boolean.FALSE; return Boolean.FALSE;
} }
Boolean execute = transactionTemplate.execute(e -> { Boolean execute = transactionTemplate.execute(e -> {
storeOrder.setAfterSalesStatus("已退款");
storeOrder.setRefundStatus(2);
storeOrderService.updateById(storeOrder);
//写订单日志 //写订单日志
storeOrderStatusService.saveRefund(storeOrder.getId(), storeOrder.getRefundPrice(), "成功"); storeOrderStatusService.saveRefund(storeOrder.getId(), storeOrder.getRefundPrice(), "成功");
@ -428,7 +429,7 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
throw new CrmebException("回滚库存失败"); throw new CrmebException("回滚库存失败");
} }
storeOrderService.updateById(tempOrder);
// 拼团状态处理 // 拼团状态处理
if (storeOrder.getCombinationId() > 0) { if (storeOrder.getCombinationId() > 0) {
@ -458,12 +459,22 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
return execute; return execute;
} }
private String createAfterSale(StoreOrder storeOrder, User user) { private boolean createAfterSale(StoreOrder storeOrder, User user) {
// WxRefundResponseVo wxRefundResponseVo = wechatNewService.payRefundQuery(storeOrder); WxRefundQueryResponseVo vo=null;
// StoreOrderRefundRequest request = new StoreOrderRefundRequest(); try {
// request.setAmount(storeOrder.getRefundPrice()); vo =wechatNewService.payRefundQuery(storeOrder);
// storeOrderRefundService.refund(request, storeOrder); }catch(Exception e){
return null; log.error("查询创建/退款查询失败,订单号:{} " ,storeOrder.getOrderId());
}
log.info("查询创建/退款查询结果:{}" , JSON.toJSONString(vo));
if (vo==null || !"SUCCESS".equals(vo.getRefundStatus0())){
StoreOrderRefundRequest request = new StoreOrderRefundRequest();
request.setAmount(storeOrder.getRefundPrice());
storeOrderRefundService.refund(request, storeOrder);
//创建申请退款后继续返回false 等下次定时任务扫描 重新查询退款成功状态返回true
return false;
}
return true;
} }
/** /**

Loading…
Cancel
Save