diff --git a/crmeb-admin/src/main/java/com/zbkj/admin/controller/extend/TestController.java b/crmeb-admin/src/main/java/com/zbkj/admin/controller/extend/TestController.java index 12b0b0d..cc59738 100644 --- a/crmeb-admin/src/main/java/com/zbkj/admin/controller/extend/TestController.java +++ b/crmeb-admin/src/main/java/com/zbkj/admin/controller/extend/TestController.java @@ -1,15 +1,27 @@ 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.RetryService; +import com.zbkj.service.service.StoreOrderRefundService; +import com.zbkj.service.service.WechatNewService; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; 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.RestController; +import java.util.List; + /** * 测试接口 * @author wyq @@ -22,7 +34,18 @@ public class TestController { @Autowired private OrderTaskService orderTaskService; + @Autowired + private StoreOrderDao storeOrderDao; + @Autowired - private RetryService retryService; + private StoreOrderRefundService storeOrderRefundService; + @PostMapping("/aa") + String createDelivery(@RequestBody MallDelivery mallDelivery){ + StoreOrder storeOrder = storeOrderDao.selectOne(new LambdaQueryWrapper().eq(StoreOrder::getOrderId, mallDelivery.getPlatformCode())); + StoreOrderRefundRequest request=new StoreOrderRefundRequest(); + request.setAmount(storeOrder.getRefundPrice()); + storeOrderRefundService.refund(request,storeOrder); + return ""; + } } diff --git a/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProduct.java b/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProduct.java index 61f6107..5aec7e8 100644 --- a/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProduct.java +++ b/crmeb-common/src/main/java/com/zbkj/common/model/product/StoreProduct.java @@ -51,7 +51,7 @@ public class StoreProduct implements Serializable { private String storeName; @ApiModelProperty(value = "商品简介") - private String storeInfo = ""; + private String storeInfo ; @ApiModelProperty(value = "关键字") private String keyword; diff --git a/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAddRequest.java b/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAddRequest.java index 88c15c5..27f46cc 100644 --- a/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAddRequest.java +++ b/crmeb-common/src/main/java/com/zbkj/common/request/StoreProductAddRequest.java @@ -53,10 +53,10 @@ public class StoreProductAddRequest implements Serializable { @Length(max = 128, message = "商品名称长度不能超过128个字符") private String storeName; -// @ApiModelProperty(value = "商品简介", required = true) + @ApiModelProperty(value = "商品简介", required = true) // @NotBlank(message = "商品简介不能为空") -// @Length(max = 256, message = "商品简介长度不能超过256个字符") -// private String storeInfo; + @Length(max = 256, message = "商品简介长度不能超过256个字符") + private String storeInfo; @ApiModelProperty(value = "关键字", required = true) @Length(max = 255, message = "关键字长度不能超过255个字符") diff --git a/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderTaskServiceImpl.java b/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderTaskServiceImpl.java index 04b62e1..bcbbce4 100644 --- a/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderTaskServiceImpl.java +++ b/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderTaskServiceImpl.java @@ -161,6 +161,12 @@ public class OrderTaskServiceImpl implements OrderTaskService { if (ObjectUtil.isNull(storeOrder)) { 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.refundOrder(storeOrder); if (!result) { @@ -168,6 +174,7 @@ public class OrderTaskServiceImpl implements OrderTaskService { redisUtil.lPush(redisKey, orderId); } } catch (Exception e) { + retryService.systemErrNc("订单退款错误:" + e); logger.error("订单退款错误:" + e.getMessage()); redisUtil.lPush(redisKey, orderId); } diff --git a/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderTaskServiceImpl.java b/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderTaskServiceImpl.java index 8a4b1c1..72a503a 100644 --- a/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderTaskServiceImpl.java +++ b/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderTaskServiceImpl.java @@ -327,10 +327,7 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { logger.error("订单退款处理,对应的用户不存在,storeOrder===>" + storeOrder); 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()); 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 -> { //写订单日志 storeOrderStatusService.saveRefund(storeOrder.getId(), storeOrder.getRefundPrice(), "成功"); @@ -441,6 +458,14 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService { 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; + } + /** * 超时未支付系统自动取消 */ diff --git a/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductServiceImpl.java b/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductServiceImpl.java index 7ffe676..3dc196e 100644 --- a/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductServiceImpl.java +++ b/crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreProductServiceImpl.java @@ -271,6 +271,11 @@ public class StoreProductServiceImpl extends ServiceImpl { + if (StringUtils.isBlank(item.getBarCode())) { + throw new CrmebException("商品编码不可为空"); + } + }); // 多规格需要校验规格参数 if (!request.getSpecType()) { if (request.getAttrValue().size() > 1) { @@ -435,6 +440,11 @@ public class StoreProductServiceImpl extends ServiceImpl { + if (StringUtils.isBlank(item.getBarCode())) { + throw new CrmebException("商品编码不可为空"); + } + }); if (ObjectUtil.isNull(storeProductRequest.getId())) { throw new CrmebException("商品ID不能为空"); } diff --git a/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatNewServiceImpl.java b/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatNewServiceImpl.java index 9fbb55c..8d32c7b 100644 --- a/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatNewServiceImpl.java +++ b/crmeb-service/src/main/java/com/zbkj/service/service/impl/WechatNewServiceImpl.java @@ -615,8 +615,10 @@ public class WechatNewServiceImpl implements WechatNewService { HashMap map = CollUtil.newHashMap(); String xml = ""; try { + log.info("申请退款入参:{}",JSON.toJSONString(wxRefundVo)); xml = restTemplateUtil.postWXRefundXml(url, xmlStr, wxRefundVo.getMch_id(), path); map = XmlUtil.xmlToMap(xml); + log.info("申请退款返回:{}",JSON.toJSONString(map)); } catch (Exception e) { e.printStackTrace(); throw new CrmebException("xmlToMap错误,xml = " + xml);