定时任务

master
wyq 7 months ago
parent 97e83574bc
commit e9e0841d1d
  1. 25
      crmeb-admin/src/main/java/com/zbkj/admin/controller/extend/TestController.java
  2. 2
      crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProduct.java
  3. 6
      crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAddRequest.java
  4. 7
      crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderTaskServiceImpl.java
  5. 35
      crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderTaskServiceImpl.java
  6. 10
      crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductServiceImpl.java
  7. 2
      crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatNewServiceImpl.java

@ -1,15 +1,27 @@
package com.zbkj.admin.controller.extend; package com.zbkj.admin.controller.extend;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zbkj.common.model.extend.MallDelivery;
import com.zbkj.common.model.order.StoreOrder;
import com.zbkj.common.request.StoreOrderRefundRequest;
import com.zbkj.service.dao.StoreOrderDao;
import com.zbkj.service.service.OrderTaskService; import com.zbkj.service.service.OrderTaskService;
import com.zbkj.service.service.RetryService; import com.zbkj.service.service.RetryService;
import com.zbkj.service.service.StoreOrderRefundService;
import com.zbkj.service.service.WechatNewService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/** /**
* 测试接口 * 测试接口
* @author wyq * @author wyq
@ -22,7 +34,18 @@ public class TestController {
@Autowired @Autowired
private OrderTaskService orderTaskService; private OrderTaskService orderTaskService;
@Autowired
private StoreOrderDao storeOrderDao;
@Autowired @Autowired
private RetryService retryService; private StoreOrderRefundService storeOrderRefundService;
@PostMapping("/aa")
String createDelivery(@RequestBody MallDelivery mallDelivery){
StoreOrder storeOrder = storeOrderDao.selectOne(new LambdaQueryWrapper<StoreOrder>().eq(StoreOrder::getOrderId, mallDelivery.getPlatformCode()));
StoreOrderRefundRequest request=new StoreOrderRefundRequest();
request.setAmount(storeOrder.getRefundPrice());
storeOrderRefundService.refund(request,storeOrder);
return "";
}
} }

@ -51,7 +51,7 @@ public class StoreProduct implements Serializable {
private String storeName; private String storeName;
@ApiModelProperty(value = "商品简介") @ApiModelProperty(value = "商品简介")
private String storeInfo = ""; private String storeInfo ;
@ApiModelProperty(value = "关键字") @ApiModelProperty(value = "关键字")
private String keyword; private String keyword;

@ -53,10 +53,10 @@ public class StoreProductAddRequest implements Serializable {
@Length(max = 128, message = "商品名称长度不能超过128个字符") @Length(max = 128, message = "商品名称长度不能超过128个字符")
private String storeName; private String storeName;
// @ApiModelProperty(value = "商品简介", required = true) @ApiModelProperty(value = "商品简介", required = true)
// @NotBlank(message = "商品简介不能为空") // @NotBlank(message = "商品简介不能为空")
// @Length(max = 256, message = "商品简介长度不能超过256个字符") @Length(max = 256, message = "商品简介长度不能超过256个字符")
// private String storeInfo; private String storeInfo;
@ApiModelProperty(value = "关键字", required = true) @ApiModelProperty(value = "关键字", required = true)
@Length(max = 255, message = "关键字长度不能超过255个字符") @Length(max = 255, message = "关键字长度不能超过255个字符")

@ -161,6 +161,12 @@ public class OrderTaskServiceImpl implements OrderTaskService {
if (ObjectUtil.isNull(storeOrder)) { if (ObjectUtil.isNull(storeOrder)) {
throw new CrmebException("订单不存在,orderNo = " + orderId); throw new CrmebException("订单不存在,orderNo = " + orderId);
} }
boolean lock =
redisLock.lock(Constants.ORDER_LOCK + storeOrder.getOrderId(),5);
if (!lock) {
logger.error("订单未获取到锁orderNo = " + orderId);
continue;
}
// boolean result = storeOrderTaskService.refundApply(storeOrder); // boolean result = storeOrderTaskService.refundApply(storeOrder);
boolean result = storeOrderTaskService.refundOrder(storeOrder); boolean result = storeOrderTaskService.refundOrder(storeOrder);
if (!result) { if (!result) {
@ -168,6 +174,7 @@ public class OrderTaskServiceImpl implements OrderTaskService {
redisUtil.lPush(redisKey, orderId); redisUtil.lPush(redisKey, orderId);
} }
} catch (Exception e) { } catch (Exception e) {
retryService.systemErrNc("订单退款错误:" + e);
logger.error("订单退款错误:" + e.getMessage()); logger.error("订单退款错误:" + e.getMessage());
redisUtil.lPush(redisKey, orderId); redisUtil.lPush(redisKey, orderId);
} }

@ -327,10 +327,7 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
logger.error("订单退款处理,对应的用户不存在,storeOrder===>" + storeOrder); logger.error("订单退款处理,对应的用户不存在,storeOrder===>" + storeOrder);
return Boolean.FALSE; return Boolean.FALSE;
} }
// WxRefundResponseVo wxRefundResponseVo = wechatNewService.payRefundQuery(storeOrder);
StoreOrderRefundRequest request = new StoreOrderRefundRequest();
request.setAmount(storeOrder.getRefundPrice());
storeOrderRefundService.refund(request, storeOrder);
// 回滚经验 // 回滚经验
UserExperienceRecord userExperienceRecord = userExperienceRecordService.getByOrderNoAndUid(storeOrder.getOrderId(), storeOrder.getUid()); UserExperienceRecord userExperienceRecord = userExperienceRecordService.getByOrderNoAndUid(storeOrder.getOrderId(), storeOrder.getUid());
user.setExperience(user.getExperience() - userExperienceRecord.getExperience()); user.setExperience(user.getExperience() - userExperienceRecord.getExperience());
@ -380,7 +377,27 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
} }
}); });
} }
/* //申请售后时 已发货 需要验证 确认回寄物流信息并最后退款
if (storeOrder.getStatus()>0){*/
//判断是否同意退款请求
if (storeOrder.getRefundRequestStatus() == null) {
logger.error("订单退款处理,售后申请状态为空,订单号:{} " ,storeOrder.getOrderId());
return Boolean.FALSE;
}
if ( storeOrder.getRefundRequestStatus() != 1 ) {
logger.error("订单退款处理,售后申请未同意,订单号:{} " ,storeOrder.getOrderId());
return Boolean.FALSE;
}
/* }*/
String mdbRefundNo = createAfterSale(storeOrder, user);
if (StrUtil.isNotBlank(mdbRefundNo)) {
storeOrder.setAfterSalesStatus("已退款");
storeOrder.setRefundStatus(2);
storeOrder.setMdbRefundNo(mdbRefundNo);
}else {
logger.error("买单吧查询创建/退款查询失败,订单号:{} " ,storeOrder.getOrderId());
return Boolean.FALSE;
}
Boolean execute = transactionTemplate.execute(e -> { Boolean execute = transactionTemplate.execute(e -> {
//写订单日志 //写订单日志
storeOrderStatusService.saveRefund(storeOrder.getId(), storeOrder.getRefundPrice(), "成功"); storeOrderStatusService.saveRefund(storeOrder.getId(), storeOrder.getRefundPrice(), "成功");
@ -441,6 +458,14 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
return execute; return execute;
} }
private String createAfterSale(StoreOrder storeOrder, User user) {
// WxRefundResponseVo wxRefundResponseVo = wechatNewService.payRefundQuery(storeOrder);
// StoreOrderRefundRequest request = new StoreOrderRefundRequest();
// request.setAmount(storeOrder.getRefundPrice());
// storeOrderRefundService.refund(request, storeOrder);
return null;
}
/** /**
* 超时未支付系统自动取消 * 超时未支付系统自动取消
*/ */

@ -271,6 +271,11 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
*/ */
@Override @Override
public Boolean save(StoreProductAddRequest request) { public Boolean save(StoreProductAddRequest request) {
request.getAttrValue().forEach(item -> {
if (StringUtils.isBlank(item.getBarCode())) {
throw new CrmebException("商品编码不可为空");
}
});
// 多规格需要校验规格参数 // 多规格需要校验规格参数
if (!request.getSpecType()) { if (!request.getSpecType()) {
if (request.getAttrValue().size() > 1) { if (request.getAttrValue().size() > 1) {
@ -435,6 +440,11 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
*/ */
@Override @Override
public Boolean update(StoreProductAddRequest storeProductRequest) { public Boolean update(StoreProductAddRequest storeProductRequest) {
storeProductRequest.getAttrValue().forEach(item -> {
if (StringUtils.isBlank(item.getBarCode())) {
throw new CrmebException("商品编码不可为空");
}
});
if (ObjectUtil.isNull(storeProductRequest.getId())) { if (ObjectUtil.isNull(storeProductRequest.getId())) {
throw new CrmebException("商品ID不能为空"); throw new CrmebException("商品ID不能为空");
} }

@ -615,8 +615,10 @@ public class WechatNewServiceImpl implements WechatNewService {
HashMap<String, Object> map = CollUtil.newHashMap(); HashMap<String, Object> map = CollUtil.newHashMap();
String xml = ""; String xml = "";
try { try {
log.info("申请退款入参:{}",JSON.toJSONString(wxRefundVo));
xml = restTemplateUtil.postWXRefundXml(url, xmlStr, wxRefundVo.getMch_id(), path); xml = restTemplateUtil.postWXRefundXml(url, xmlStr, wxRefundVo.getMch_id(), path);
map = XmlUtil.xmlToMap(xml); map = XmlUtil.xmlToMap(xml);
log.info("申请退款返回:{}",JSON.toJSONString(map));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
throw new CrmebException("xmlToMap错误,xml = " + xml); throw new CrmebException("xmlToMap错误,xml = " + xml);

Loading…
Cancel
Save