wyq 7 months ago
parent d5f6bd93ae
commit 51f46a6352
  1. 138
      crmeb-common/src/main/java/com/zbkj/common/model/XsOrderDeliveryInfo.java
  2. 54
      crmeb-common/src/main/java/com/zbkj/common/request/ApplyInvoicingReq.java
  3. 36
      crmeb-common/src/main/java/com/zbkj/common/request/OrderCancelRefund.java
  4. 21
      crmeb-common/src/main/java/com/zbkj/common/request/RefundExpressUpdate.java
  5. 19
      crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderDetailInfoResponse.java
  6. 23
      crmeb-common/src/main/java/com/zbkj/common/response/StoreOrderInfoResponse.java
  7. 5
      crmeb-front/pom.xml
  8. 47
      crmeb-front/src/main/java/com/zbkj/front/controller/StoreOrderController.java
  9. 64
      crmeb-front/src/main/java/com/zbkj/front/util/ContentCheckUtil.java
  10. 5
      crmeb-service/src/main/java/com/zbkj/service/dao/XsbuyDao.java
  11. 4
      crmeb-service/src/main/java/com/zbkj/service/service/OrderService.java
  12. 140
      crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderServiceImpl.java
  13. 14
      crmeb-service/src/main/java/com/zbkj/service/service/impl/StoreOrderServiceImpl.java
  14. 6
      crmeb-service/src/main/resources/mapper/store/XsSkuInfoMapper.xml

@ -0,0 +1,138 @@
package com.zbkj.common.model;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author wyq
*/
@Data
public class XsOrderDeliveryInfo {
// 主键,自增
private int id;
// 订单id
private int orderId;
// erp单号,默认为空字符串
private String erpCode;
// 平台单号
private String platformCode;
// 发货单号,默认为空字符串
private String code;
// 发货状态0未发货2全部发货,默认为0
private byte deliveryStatus;
// 仓库名称
private String warehouseCode;
// 串码
private String uniqueCodes;
// 仓库代码
private String warehouseName;
// 快递名称
private String expressName;
// 快递代码
private String expressCode;
// 快递号
private String expressNo;
// 创建时间
private LocalDateTime createdAt;
// 更新时间
private LocalDateTime updatedAt;
// 删除时间
private LocalDateTime deletedAt;
// 是否删除,默认为0
private Integer isDel;
// 物流信息
private String expressInfo;
// 订阅状态 0未订阅 1已订阅 2聚链系统订阅
private Integer hasSub;
// 商品代码, 分割,默认为空字符串
private String goodCode;
// 订阅错误信息
private String subErr;
// 配货时间
private LocalDateTime assignAt;
// 是否配货逾期0否1是,默认为0
private Integer isAssignOverdue;
// 配货到期时间
private LocalDateTime assignExpireDate;
// 仓库发货时间
private LocalDateTime deliveryAt;
// 是否发货逾期0否1是,默认为0
private byte isDeliveryOverdue;
// 发货到期时间
private LocalDateTime deliveryExpireDate;
// 揽件时间
private LocalDateTime pickupAt;
// 是否揽件逾期0否1是,默认为0
private byte isPickupOverdue;
// 揽件到期时间
private LocalDateTime pickupExpireDate;
// 签收时间
private LocalDateTime deliveryReceiptAt;
// 发货数量,默认为0
private short deliveryNum;
// 发货方式 1自有仓发货 2聚链代发3由你代发4线下代发,默认为1
private byte deliveryType;
// 查询物流次数,默认为0
private int queryExpressTime;
// 最后查询物流时间
private LocalDateTime queryExpressDate;
}

@ -0,0 +1,54 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 创建订单请求对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="ApplyInvoicingReq", description="请求开票")
public class ApplyInvoicingReq implements Serializable {
private static final long serialVersionUID = -6133994384851333872L;
@ApiModelProperty(value = "订单号")
@NotBlank(message = "订单号不可为空")
private String platformCode;
@ApiModelProperty(value = "抬头类型: 0 个人 1公司")
@NotNull(message = "抬头类型不能为空")
@Range(min = 0, max = 1, message = "抬头类型有误")
private Integer invoiceTitleType;
@ApiModelProperty(value = "抬头名称 填个人名/公司抬头")
@NotBlank(message = "抬头名称不能为空")
private String invoiceTitleName;
@ApiModelProperty(value = "单位税号")
private String invoiceTitleNo;
@ApiModelProperty(value = "开票手机号")
private String invoiceingPhone;
@ApiModelProperty(value = "开票邮箱")
private String invoiceingEmail;
}

@ -0,0 +1,36 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
/**
* 添加购物车参数Request对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="OrderRefundApplyRequest对象", description="订单申请退款")
public class OrderCancelRefund {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "备注说明")
private String explain;
@ApiModelProperty(value = "待退款订单")
@NotNull(message = "待退款订单 不能为空")
private String orderNo;
}

@ -0,0 +1,21 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author wyq
*/
@Data
@ApiModel("更新退货物流")
public class RefundExpressUpdate {
@ApiModelProperty(value = "订单编号")
private String orderNo;
@ApiModelProperty(value = "退货物流单号")
private String refundExpressNo;
@ApiModelProperty(value = "退货物流公司编码")
private String refundExpressCode;
@ApiModelProperty(value = "退货物流公司")
private String refundExpressName;
}

@ -1,5 +1,6 @@
package com.zbkj.common.response;
import com.zbkj.common.model.parcel.ParcelPO;
import com.zbkj.common.model.system.SystemStore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -32,6 +33,24 @@ public class StoreOrderDetailInfoResponse implements Serializable {
private static final long serialVersionUID = -4324222121352855551L;
private String afterSalesType;
private String afterSalesStatus;
@ApiModelProperty(value = "开票手机号")
private String invoiceingPhone;
@ApiModelProperty(value = "开票邮箱")
private String invoiceingEmail;
@ApiModelProperty(value = "商家寄件快递公司编码")
private String refundExpressCode;
@ApiModelProperty(value = "商家寄件快递公司名称")
private String refundExpressName;
@ApiModelProperty(value = "多包裹")
private List<ParcelPO> parcelList;
@ApiModelProperty(value = "商家寄件快递单号")
private String refundExpressNo;
@ApiModelProperty(value = "退款申请是否通过 0 否 1 是 3 发起申请初始状态")
private Integer refundRequestStatus;
@ApiModelProperty(value = "订单ID")
private Integer id;

@ -1,5 +1,7 @@
package com.zbkj.common.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zbkj.common.model.parcel.ParcelPO;
import com.zbkj.common.vo.StoreOrderInfoOldVo;
import com.zbkj.common.model.system.SystemStore;
import io.swagger.annotations.ApiModel;
@ -10,6 +12,7 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -36,7 +39,25 @@ public class StoreOrderInfoResponse implements Serializable {
@ApiModelProperty(value = "订单ID")
private Integer id;
@ApiModelProperty(value = "售后状态")
private String afterSalesStatus;
@ApiModelProperty(value = "售后类型")
private String afterSalesType;
@ApiModelProperty(value = "退款原因")
private String refundReasonWap;
@ApiModelProperty(value = "退货物流名")
private String refundExpressName;
@ApiModelProperty(value = "退货物流单号")
private String refundExpressNo;
@ApiModelProperty(value = "包裹集合")
private List<ParcelPO> parcelList;
@ApiModelProperty(value = "回寄包裹时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime refundExpressTime;
@ApiModelProperty(value = "退款用户说明")
private String refundReasonWapExplain;
@ApiModelProperty(value = "订单号")
private String orderId;

@ -22,6 +22,11 @@
<artifactId>crmeb-service</artifactId>
<version>${crmeb-service}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>green20220302</artifactId>
<version>2.2.8</version>
</dependency>
</dependencies>
<build>

@ -4,13 +4,16 @@ import com.zbkj.common.page.CommonPage;
import com.zbkj.common.request.*;
import com.zbkj.common.response.*;
import com.zbkj.common.result.CommonResult;
import com.zbkj.front.util.ContentCheckUtil;
import com.zbkj.service.service.OrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -37,7 +40,10 @@ public class StoreOrderController {
@Autowired
private OrderService orderService;
@Value("${alis.accessKey}")
private String accessKey;
@Value("${alis.accessKeySecret}")
private String accessKeySecret;
/**
* 预下单
*/
@ -125,7 +131,16 @@ public class StoreOrderController {
return CommonResult.failed();
}
}
/**
* 更新退货物流
*/
@ApiOperation(value = "更新退货物流")
@RequestMapping(value = "/updateRefundExpress", method = RequestMethod.POST)
public CommonResult<String> updateRefundExpress(@RequestBody @Validated RefundExpressUpdate request) {
orderService.updateRefundExpress(request);
return CommonResult.success("");
}
/**
* 订单评价
* @param request StoreProductReplyAddRequest 评论参数
@ -133,13 +148,31 @@ public class StoreOrderController {
@ApiOperation(value = "评价订单")
@RequestMapping(value = "/comment", method = RequestMethod.POST)
public CommonResult<Boolean> comment(@RequestBody @Validated StoreProductReplyAddRequest request) {
if(StringUtils.isNotEmpty(request.getComment())){
String result= ContentCheckUtil.checkContent(request.getComment(),accessKey,accessKeySecret);
if(result!=null){
return CommonResult.failed(result);
}
}
if(orderService.reply(request)) {
return CommonResult.success();
}else{
return CommonResult.failed();
}
}
/**
* 取消售后
* @param request OrderRefundApplyRequest 订单id
*/
@ApiOperation(value = "取消售后")
@RequestMapping(value = "/cancelRefund", method = RequestMethod.POST)
public CommonResult<Boolean> cancelRefund(@RequestBody @Validated OrderCancelRefund request) {
if(orderService.cancelRefund(request)) {
return CommonResult.success();
}else{
return CommonResult.failed();
}
}
/**
* 订单收货
* @param id Integer 订单id
@ -153,7 +186,15 @@ public class StoreOrderController {
return CommonResult.failed();
}
}
/**
* 申请开票
* @param request
*/
@ApiOperation(value = "申请开票")
@RequestMapping(value = "/applyInvoicing", method = RequestMethod.POST)
public CommonResult<Boolean> applyInvoicing(@Validated @RequestBody ApplyInvoicingReq request) {
return CommonResult.success(orderService.applyInvoicing(request));
}
/**
* 订单取消
* @param id Integer 订单id

@ -0,0 +1,64 @@
package com.zbkj.front.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.green20220302.Client;
import com.aliyun.green20220302.models.TextModerationRequest;
import com.aliyun.green20220302.models.TextModerationResponse;
import com.aliyun.green20220302.models.TextModerationResponseBody;
import com.aliyun.teaopenapi.models.Config;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@Slf4j
public class ContentCheckUtil {
public static Client createClient(String accessKey, String accessKeySecret) throws Exception {
Config config = new Config();
config.setAccessKeyId(accessKey)
.setAccessKeySecret(accessKeySecret)
.setRegionId("cn-shanghai")
.setEndpoint("green-cip.cn-shanghai.aliyuncs.com")
.setReadTimeout(6000)
//读取时超时时间,单位毫秒(ms)。
.setConnectTimeout(3000);
return new Client(config);
}
public static void main(String[] args) {
System.out.println(checkContent("中国很垃圾","LTAI5tRHmAmcSo3ytLajCLyK","k3dhdkIa2eG8Q5hTGpyspVB0Aeo7SV"));
}
public static String checkContent(String content, String accessKey, String accessKeySecret) {
try {
Client client = ContentCheckUtil.createClient(accessKey, accessKeySecret);
JSONObject serviceParameters = new JSONObject();
serviceParameters.put("content", content);
TextModerationRequest textModerationPlusRequest = new TextModerationRequest();
// 检测类型
textModerationPlusRequest.setService("comment_detection");
textModerationPlusRequest.setServiceParameters(serviceParameters.toJSONString());
TextModerationResponse response = client.textModeration(textModerationPlusRequest);
if (response.getStatusCode() == 200) {
TextModerationResponseBody result = response.getBody();
log.info(JSON.toJSONString(result));
Integer code = result.getCode();
if (200 == code) {
TextModerationResponseBody.TextModerationResponseBodyData data = result.getData();
if(StringUtils.isEmpty(data.getLabels())){
return null;
}else{
return "评论文字中存在不合法描述";
}
}
}
return "系统繁忙,请稍后重试";
} catch (Exception e) {
log.error("调用校验内容异常:",e);
return "系统繁忙,请稍后重试";
}
}
}

@ -1,5 +1,6 @@
package com.zbkj.service.dao;
import com.zbkj.common.model.XsOrderDeliveryInfo;
import com.zbkj.service.pojo.XsSkuInfo;
import org.apache.ibatis.annotations.Param;
@ -10,6 +11,10 @@ import java.util.List;
*/
public interface XsbuyDao {
List<XsSkuInfo> selectListNew(@Param("content") String content,@Param("pageIndex") long l,@Param("pageSize") Long pageSize);
XsSkuInfo selectBySkuNo (@Param("skuNo") String skuNo);
List<XsSkuInfo> selectBySkuNos (@Param("list") List<String> skuNo);
List<XsOrderDeliveryInfo> selectExpress(String platformCode);
}

@ -20,7 +20,9 @@ import java.util.List;
* +----------------------------------------------------------------------
*/
public interface OrderService {
void updateRefundExpress(RefundExpressUpdate request);
boolean cancelRefund(OrderCancelRefund request);
boolean applyInvoicing(ApplyInvoicingReq request);
/**
* 订单列表
* @param type 类型

@ -6,8 +6,10 @@ import cn.hutool.core.util.ObjectUtil;
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.zbkj.common.constants.*;
import com.zbkj.common.exception.CrmebException;
import com.zbkj.common.model.XsOrderDeliveryInfo;
import com.zbkj.common.model.bargain.StoreBargain;
import com.zbkj.common.model.bargain.StoreBargainUser;
import com.zbkj.common.model.cat.StoreCart;
@ -21,6 +23,7 @@ import com.zbkj.common.model.express.ShippingTemplatesRegion;
import com.zbkj.common.model.order.StoreOrder;
import com.zbkj.common.model.order.StoreOrderInfo;
import com.zbkj.common.model.order.StoreOrderStatus;
import com.zbkj.common.model.parcel.ParcelPO;
import com.zbkj.common.model.product.StoreProduct;
import com.zbkj.common.model.product.StoreProductAttrValue;
import com.zbkj.common.model.seckill.StoreSeckill;
@ -41,24 +44,33 @@ import com.zbkj.common.response.*;
import com.zbkj.common.utils.CrmebUtil;
import com.zbkj.common.utils.CrmebDateUtil;
import com.zbkj.common.utils.RedisUtil;
import com.zbkj.common.utils.RestTemplateUtil;
import com.zbkj.common.vo.*;
import com.zbkj.service.dao.ParcelDao;
import com.zbkj.service.dao.XsbuyDao;
import com.zbkj.service.delete.OrderUtils;
import com.zbkj.service.pojo.WebResponse;
import com.zbkj.service.service.*;
import com.zbkj.service.util.RedisLockUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionTemplate;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -74,10 +86,12 @@ import java.util.stream.Collectors;
* +----------------------------------------------------------------------
*/
@Service
@Slf4j
public class OrderServiceImpl implements OrderService {
private final Logger logger = LoggerFactory.getLogger(OrderServiceImpl.class);
@Value("${ruoyi.applyInvoicingUrl}")
private String applyInvoicingUrl;
@Autowired
private UserService userService;
@ -108,10 +122,14 @@ public class OrderServiceImpl implements OrderService {
private RedisLockUtil redisLock;
@Autowired
private RedisUtil redisUtil;
@Resource
private RestTemplateUtil restTemplateUtil;
@Autowired
private ParcelDao parcelDao;
@Autowired
private SystemStoreService systemStoreService;
@Autowired
private XsbuyDao xsbuyDao;
@Autowired
private OrderUtils orderUtils;
@ -447,7 +465,114 @@ public class OrderServiceImpl implements OrderService {
return storeOrderService.updateBatchById(orderList, 100);
}
@Override
public boolean applyInvoicing(ApplyInvoicingReq request) {
StoreOrder storeOrderPram = new StoreOrder();
storeOrderPram.setOrderId(request.getPlatformCode());
StoreOrder existStoreOrder = storeOrderService.getByEntityOne(storeOrderPram);
if (null == existStoreOrder) throw new CrmebException("支付订单不存在");
/*if (existStoreOrder.getStatus()<2 || existStoreOrder.getRefundStatus()!=0){
throw new CrmebException("未收货/未发起售后申请订单,无法申请开票");
}*/
existStoreOrder.setInvoiceTitleNo(request.getInvoiceTitleNo());
existStoreOrder.setInvoiceTitleType(request.getInvoiceTitleType());
existStoreOrder.setInvoiceTitleName(request.getInvoiceTitleName());
existStoreOrder.setInvoiceingPhone(request.getInvoiceingPhone());
existStoreOrder.setInvoiceingEmail(request.getInvoiceingEmail());
applyInvoicingCustom(request);
storeOrderService.updateById(existStoreOrder);
return true;
}
public void applyInvoicingCustom(ApplyInvoicingReq request) {
Map<String, Object> params = new HashMap<>();
params.put("platformCode", request.getPlatformCode());
params.put("invoiceTitleType", request.getInvoiceTitleType());
params.put("invoiceTitleName", request.getInvoiceTitleName());
params.put("invoiceTitleNo", request.getInvoiceTitleNo());
params.put("email", request.getInvoiceingEmail());
params.put("phone", request.getInvoiceingPhone());
log.info("申请开票参数:{}", JSON.toJSONString(params));
String result = restTemplateUtil.postMapData(applyInvoicingUrl, params, new HashMap<>());
log.info("申请开票返回:{}", JSON.toJSONString(result));
WebResponse webResponse = JSON.parseObject(result, WebResponse.class);
if (!"200".equals(webResponse.getStatus())) {
throw new RuntimeException(String.format("申请开票异常订单号:%s", request.getPlatformCode()));
}
}
@Override
public boolean cancelRefund(OrderCancelRefund request) {
boolean lock =
redisLock.lock(Constants.ORDER_LOCK + request.getOrderNo(),5);
if (!lock) {
throw new CrmebException("系统繁忙,请稍后再试");
}
StoreOrder storeOrderPram = new StoreOrder();
StoreOrder existStoreOrder;
try {
storeOrderPram.setOrderId(request.getOrderNo());
existStoreOrder = storeOrderService.getByEntityOne(storeOrderPram);
if (null == existStoreOrder) throw new CrmebException("支付订单不存在");
if (existStoreOrder.getRefundStatus() <=0 ) {
throw new CrmebException("订单未发起售后");
}
if (existStoreOrder.getRefundStatus() == 2) {
throw new CrmebException("订单已退款");
}
if (existStoreOrder.getRefundStatus() == 3) {
throw new CrmebException("退款中无法取消");
}
existStoreOrder.setRefundStatus(0);
existStoreOrder.setRefundExpressName("");
existStoreOrder.setRefundExpressNo("");
existStoreOrder.setRefundPrice(BigDecimal.ZERO);
existStoreOrder.setRefundExpressCode("");
existStoreOrder.setRefundReasonTime(null);
existStoreOrder.setRefundExpressTime(null);
existStoreOrder.setRefundRequestStatus(null);
existStoreOrder.setRefundOrderNo("");
/*if (existStoreOrder.getHasSync()==1){
retryService.updateOrderRefundStatus(existStoreOrder,"取消退款");
}*/
Boolean execute = transactionTemplate.execute(e -> {
existStoreOrder.setAfterSalesStatus("售后关闭");
storeOrderService.updateById(existStoreOrder);
storeOrderStatusService.createLog(existStoreOrder.getId(), Constants.ORDER_LOG_REFUND_APPLY, "用户取消申请退款原因:" + request.getExplain());
return Boolean.TRUE;
});
}catch (Exception e){
throw e;
}finally {
redisLock.unLock(Constants.ORDER_LOCK + request.getOrderNo());
}
return true;
}
@Override
public void updateRefundExpress(RefundExpressUpdate request) {
StoreOrder storeOrder = getByOrderIdException(request.getOrderNo());
if(storeOrder.getRefundStatus()==0){
throw new CrmebException("还未申请退款无法修改");
}
if(StrUtil.isNotBlank(storeOrder.getRefundExpressCode())||StrUtil.isNotBlank(storeOrder.getRefundExpressName())||StrUtil.isNotBlank(storeOrder.getRefundExpressNo())){
throw new CrmebException("已填写退货物流,无法修改");
}
storeOrder.setAfterSalesStatus("待商家收货");
storeOrder.setRefundExpressCode(request.getRefundExpressCode());
storeOrder.setRefundExpressName(request.getRefundExpressName());
storeOrder.setRefundExpressNo(request.getRefundExpressNo());
storeOrder.setRefundExpressTime(LocalDateTime.now());
transactionTemplate.execute(e -> {
storeOrderService.updateById(storeOrder);
storeOrderStatusService.createLog(storeOrder.getId(), Constants.ORDER_STATUS_APPLY_REFUNDING, "用户回寄包裹");
return true;
});
}
/**
* 订单列表
*
@ -601,6 +726,15 @@ public class OrderServiceImpl implements OrderService {
storeOrderDetailResponse.setStatusPic(orderStatusVo.getStr("statusPic"));
storeOrderDetailResponse.setOrderStatusMsg(orderStatusVo.getStr("msg"));
storeOrderDetailResponse.setPayTypeStr(orderStatusVo.getStr("payTypeStr"));
List<ParcelPO> parcelPOS = parcelDao.selectList(new LambdaQueryWrapper<ParcelPO>().eq(ParcelPO::getPlatformCode, storeOrder.getOrderId()).eq(ParcelPO::getDeleted, 0));
Map<String, XsOrderDeliveryInfo> map=xsbuyDao.selectExpress(storeOrder.getOrderId()).stream().collect(Collectors.toMap(XsOrderDeliveryInfo::getExpressNo, Function.identity(),(v1, v2)->v2) );
parcelPOS.forEach(item->{
XsOrderDeliveryInfo deliveryInfo = map.get(item.getExpressNo());
if (deliveryInfo!=null){
item.setExpressInfo(deliveryInfo.getExpressInfo());
}
});
storeOrderDetailResponse.setParcelList(parcelPOS);
BigDecimal proTotalPrice = storeOrderDetailResponse.getPayPrice().add(storeOrderDetailResponse.getCouponPrice()).add(storeOrderDetailResponse.getDeductionPrice()).subtract(storeOrderDetailResponse.getPayPostage());
storeOrderDetailResponse.setProTotalPrice(proTotalPrice);
return storeOrderDetailResponse;

@ -16,6 +16,7 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zbkj.common.constants.*;
import com.zbkj.common.exception.CrmebException;
import com.zbkj.common.model.XsOrderDeliveryInfo;
import com.zbkj.common.model.combination.StorePink;
import com.zbkj.common.model.express.Express;
import com.zbkj.common.model.extend.MallExpressInfoDto;
@ -44,6 +45,7 @@ import com.zbkj.common.vo.*;
import com.zbkj.service.dao.ParcelDao;
import com.zbkj.service.dao.StoreOrderDao;
import com.zbkj.service.dao.StoreProductAttrValueDao;
import com.zbkj.service.dao.XsbuyDao;
import com.zbkj.service.delete.OrderUtils;
import com.zbkj.service.service.*;
import com.zbkj.service.util.RedisLockUtil;
@ -85,6 +87,8 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
@Autowired
private SystemStoreService systemStoreService;
@Autowired
private XsbuyDao xsbuyDao;
@Autowired
private ParcelDao parcelDao;
@Autowired
private StoreProductAttrValueDao storeProductAttrValueDao;
@ -712,7 +716,15 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
systemStorePram.setId(storeOrder.getStoreId());
storeOrderInfoResponse.setSystemStore(systemStoreService.getByCondition(systemStorePram));
}
List<ParcelPO> parcelPOS = parcelDao.selectList(new LambdaQueryWrapper<ParcelPO>().eq(ParcelPO::getPlatformCode, storeOrder.getOrderId()).eq(ParcelPO::getDeleted, 0));
Map<String, XsOrderDeliveryInfo> map=xsbuyDao.selectExpress(storeOrder.getOrderId()).stream().collect(Collectors.toMap(XsOrderDeliveryInfo::getExpressNo, Function.identity(), (v1, v2)->v2));
parcelPOS.forEach(item->{
XsOrderDeliveryInfo deliveryInfo = map.get(item.getExpressNo());
if (deliveryInfo!=null){
item.setExpressInfo(deliveryInfo.getExpressInfo());
}
});
storeOrderInfoResponse.setParcelList(parcelPOS);
//用户信息
User user = userService.getById(storeOrder.getUid());
storeOrderInfoResponse.setNikeName(user.getNickname());

@ -24,4 +24,10 @@
</select>
<select id="selectExpress" resultType="com.zbkj.common.model.XsOrderDeliveryInfo">
select * from m_xsbuy_cn.xs_order_delivery_info where platform_code=#{platformCode} and is_del=0
</select>
<select id="selectBySkuNo" resultMap="BaseMap">
select good_code sku_no,good_name sku_name,brand_code,brand_name,category_name,category_code from m_xsbuy_cn.xs_goods where is_show=1 and good_code=#{skuNo}
</select>
</mapper>

Loading…
Cancel
Save