Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg

This commit is contained in:
misworga831
2023-09-27 09:20:03 +08:00
30 changed files with 572 additions and 98 deletions

View File

@@ -3,6 +3,7 @@ package cn.lili.modules.distribution.service;
import cn.hutool.core.date.DateTime;
import cn.lili.modules.distribution.entity.dos.DistributionOrder;
import cn.lili.modules.distribution.entity.vos.DistributionOrderSearchParams;
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
import cn.lili.modules.order.order.entity.dos.OrderItem;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -47,7 +48,7 @@ public interface DistributionOrderService extends IService<DistributionOrder> {
*
* @param afterSaleSn 售后单号
*/
void refundOrder(String afterSaleSn);
void refundOrder(AfterSale afterSale);
/**
* 分销订单状态修改

View File

@@ -16,6 +16,7 @@ import cn.lili.modules.distribution.entity.vos.DistributionOrderSearchParams;
import cn.lili.modules.distribution.mapper.DistributionOrderMapper;
import cn.lili.modules.distribution.service.DistributionOrderService;
import cn.lili.modules.distribution.service.DistributionService;
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
import cn.lili.modules.order.order.entity.dos.Order;
import cn.lili.modules.order.order.entity.dos.OrderItem;
import cn.lili.modules.order.order.entity.dos.StoreFlow;
@@ -189,28 +190,31 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
}
@Override
public void refundOrder(String afterSaleSn) {
public void refundOrder(AfterSale afterSale) {
//判断是否为分销订单
StoreFlow storeFlow = storeFlowService.queryOne(StoreFlowQueryDTO.builder().justDistribution(true).refundSn(afterSaleSn).build());
if (storeFlow != null) {
StoreFlow refundStoreFlow = storeFlowService.queryOne(StoreFlowQueryDTO.builder().justDistribution(true).refundSn(afterSale.getSn()).build());
if (refundStoreFlow != null) {
//获取收款分销订单
DistributionOrder distributionOrder = this.getOne(new LambdaQueryWrapper<DistributionOrder>()
.eq(DistributionOrder::getOrderItemSn, storeFlow.getOrderItemSn()));
.eq(DistributionOrder::getOrderItemSn, afterSale.getOrderItemSn()));
//分销订单不存在,则直接返回
if (distributionOrder == null) {
return;
}
if (distributionOrder.getDistributionOrderStatus().equals(DistributionOrderStatusEnum.WAIT_BILL.name())) {
this.update(new LambdaUpdateWrapper<DistributionOrder>()
.eq(DistributionOrder::getOrderItemSn, storeFlow.getOrderItemSn())
.set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.CANCEL.name()));
if (distributionOrder.getSellBackRebate() == null) {
distributionOrder.setSellBackRebate(refundStoreFlow.getDistributionRebate());
} else {
distributionOrder.setSellBackRebate(CurrencyUtil.add(distributionOrder.getSellBackRebate(), refundStoreFlow.getDistributionRebate()));
}
//如果已结算则创建退款分销订单
else {
//修改分销员提成金额
distributionService.subCanRebate(CurrencyUtil.sub(0, storeFlow.getDistributionRebate()), distributionOrder.getDistributionId());
distributionOrder.setRebate(CurrencyUtil.sub(distributionOrder.getRebate(), refundStoreFlow.getDistributionRebate()));
if (distributionOrder.getRebate() == 0) {
distributionOrder.setDistributionOrderStatus(DistributionOrderStatusEnum.REFUND.name());
}
this.updateById(distributionOrder);
// 修改分销员提成金额
distributionService.subCanRebate(CurrencyUtil.sub(0, refundStoreFlow.getDistributionRebate()), distributionOrder.getDistributionId());
}
}
@@ -310,7 +314,8 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
* @param distributionList 分销列表
* @return
*/
public Distribution checkDistribution(String distributionId, List<DistributionOrder> list, List<Distribution> distributionList) {
public Distribution checkDistribution(String
distributionId, List<DistributionOrder> list, List<Distribution> distributionList) {
//获取所有待结算订单分销人员信息
Distribution distribution = distributionList.parallelStream().filter(a -> StrUtil.equals(a.getId(), distributionId)).collect(Collectors.toList()).get(0);

View File

@@ -43,4 +43,7 @@ public class File extends BaseEntity {
@ApiModelProperty(value = "用户类型")
private String userEnums;
@ApiModelProperty(value = "文件夹ID")
private String fileDirectoryId;
}

View File

@@ -0,0 +1,33 @@
package cn.lili.modules.file.entity;
import cn.lili.common.security.enums.UserEnums;
import cn.lili.mybatis.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
@Data
@TableName("li_file_directory")
@ApiModel(value = "文件目录")
public class FileDirectory extends BaseEntity {
/**
* @see UserEnums
*/
@ApiModelProperty(value = "文件目录类型")
private String directoryType;
@ApiModelProperty(value = "拥有者名称")
private String directoryName;
@ApiModelProperty(value = "拥有者id")
private String ownerId;
@ApiModelProperty(value = "父分类ID")
private String parentId;
@ApiModelProperty(value = "层级")
@Min(value = 0, message = "层级最小为0")
@Max(value = 2, message = "层级最大为2")
private Integer level;
}

View File

@@ -0,0 +1,22 @@
package cn.lili.modules.file.entity.dto;
import cn.lili.common.utils.BeanUtil;
import cn.lili.modules.file.entity.FileDirectory;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
public class FileDirectoryDTO extends FileDirectory{
@ApiModelProperty(value = "文件目录列表")
private List<FileDirectory> children= new ArrayList<>();
public FileDirectoryDTO(FileDirectory fileDirectory){
BeanUtil.copyProperties(fileDirectory, this);
}
}

View File

@@ -1,10 +1,16 @@
package cn.lili.modules.file.entity.dto;
import cn.lili.common.utils.DateUtil;
import cn.lili.common.vo.PageVO;
import com.alipay.api.internal.util.StringUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Calendar;
import java.util.Date;
/**
* 文件查询所属者参数对象
*
@@ -14,7 +20,7 @@ import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FileOwnerDTO {
public class FileOwnerDTO extends PageVO {
@ApiModelProperty(value = "拥有者id")
private String ownerId;
@@ -22,4 +28,42 @@ public class FileOwnerDTO {
@ApiModelProperty(value = "用户类型")
private String userEnums;
@ApiModelProperty(value = "原文件名")
private String name;
@ApiModelProperty(value = "存储文件名")
private String fileKey;
@ApiModelProperty(value = "文件类型")
private String fileType;
@ApiModelProperty(value = "文件夹ID")
private String fileDirectoryId;
@ApiModelProperty(value = "起始日期")
private String startDate;
@ApiModelProperty(value = "结束日期")
private String endDate;
public Date getConvertStartDate() {
if (StringUtils.isEmpty(startDate)) {
return null;
}
return DateUtil.toDate(startDate, DateUtil.STANDARD_DATE_FORMAT);
}
public Date getConvertEndDate() {
if (StringUtils.isEmpty(endDate)) {
return null;
}
//结束时间等于结束日期+1天 -1秒
Date date = DateUtil.toDate(endDate, DateUtil.STANDARD_DATE_FORMAT);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + 1);
calendar.set(Calendar.SECOND, -1);
return calendar.getTime();
}
}

View File

@@ -0,0 +1,18 @@
package cn.lili.modules.file.entity.dto;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.SearchVO;
import cn.lili.modules.file.entity.File;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class FileSearchParams extends PageVO {
@ApiModelProperty(value = "文件")
private File file;
@ApiModelProperty(value = "搜索VO")
private SearchVO searchVO;
@ApiModelProperty(value = "文件夹ID")
private String fileDirectoryId;
}

View File

@@ -0,0 +1,14 @@
package cn.lili.modules.file.mapper;
import cn.lili.modules.file.entity.FileDirectory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 文件管理数据处理层
*
* @author Chopper
* @since 2021-02-22 17:20
*/
public interface FileDirectoryMapper extends BaseMapper<FileDirectory> {
}

View File

@@ -0,0 +1,33 @@
package cn.lili.modules.file.service;
import cn.lili.common.security.enums.UserEnums;
import cn.lili.modules.file.entity.FileDirectory;
import cn.lili.modules.file.entity.dto.FileDirectoryDTO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* 文件管理业务层
*
* @author Chopper
*/
public interface FileDirectoryService extends IService<FileDirectory> {
/**
* 添加目录
*
* @param userEnum
* @param id
* @param ownerName
*/
void addFileDirectory(UserEnums userEnum, String id, String ownerName);
/**
* 获取文件目录
*
* @param ownerId 拥有者
* @return
*/
List<FileDirectoryDTO> getFileDirectoryList(String ownerId);
}

View File

@@ -24,6 +24,12 @@ public interface FileService extends IService<File> {
* @param ids
*/
void batchDelete(List<String> ids);
/**
* 根据文件夹ID批量删除
*
* @param directoryId 文件夹ID
*/
void batchDeleteByDirectory(String directoryId);
/**
* 所有者批量删除
@@ -37,22 +43,19 @@ public interface FileService extends IService<File> {
/**
* 自定义搜索分页
*
* @param file
* @param searchVO
* @param pageVo
* @param fileOwnerDTO 文件查询
* @return
*/
IPage<File> customerPage(File file, SearchVO searchVO, PageVO pageVo);
IPage<File> customerPage(FileOwnerDTO fileOwnerDTO);
/**
* 所属文件数据查询
*
* @param file
* @param searchVO
* @param pageVo
* @param ownerDTO
* @param ownerDTO 文件查询
* @return
*/
IPage<File> customerPageOwner(FileOwnerDTO ownerDTO, File file, SearchVO searchVO, PageVO pageVo);
IPage<File> customerPageOwner(FileOwnerDTO ownerDTO);
}

View File

@@ -0,0 +1,68 @@
package cn.lili.modules.file.serviceimpl;
import cn.lili.common.security.enums.UserEnums;
import cn.lili.modules.file.entity.FileDirectory;
import cn.lili.modules.file.entity.dto.FileDirectoryDTO;
import cn.lili.modules.file.mapper.FileDirectoryMapper;
import cn.lili.modules.file.service.FileDirectoryService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 文件管理业务层实现
*
* @author Chopper
* @since 2020/11/26 17:50
*/
@Service
@RequiredArgsConstructor
public class FileDirectoryServiceImpl extends ServiceImpl<FileDirectoryMapper, FileDirectory> implements FileDirectoryService {
@Override
public void addFileDirectory(UserEnums userEnum, String id, String ownerName) {
FileDirectory fileDirectory = new FileDirectory();
fileDirectory.setOwnerId(id);
fileDirectory.setDirectoryName(ownerName);
fileDirectory.setDirectoryType(userEnum.name());
this.save(fileDirectory);
}
@Override
public List<FileDirectoryDTO> getFileDirectoryList(String scene) {
List<FileDirectory> fileDirectoryList = this.list();
List<FileDirectoryDTO> fileDirectoryDTOList = new ArrayList<>();
fileDirectoryList.forEach(item -> {
if (item.getLevel() == 0) {
FileDirectoryDTO fileDirectoryDTO = new FileDirectoryDTO(item);
initChild(fileDirectoryDTO, fileDirectoryList);
fileDirectoryDTOList.add(fileDirectoryDTO);
}
});
return fileDirectoryDTOList;
}
/**
* 递归初始化子树
*/
private void initChild(FileDirectoryDTO fileDirectoryDTO, List<FileDirectory> fileDirectoryList) {
if (fileDirectoryList == null) {
return;
}
fileDirectoryList.stream()
.filter(item -> (item.getParentId().equals(fileDirectoryDTO.getId())))
.forEach(child -> {
FileDirectoryDTO childTree = new FileDirectoryDTO(child);
initChild(childTree, fileDirectoryList);
fileDirectoryDTO.getChildren().add(childTree);
});
}
}

View File

@@ -4,15 +4,14 @@ import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.AuthUser;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.SearchVO;
import cn.lili.modules.file.entity.File;
import cn.lili.modules.file.entity.dto.FileOwnerDTO;
import cn.lili.modules.file.mapper.FileMapper;
import cn.lili.modules.file.plugin.FilePlugin;
import cn.lili.modules.file.plugin.FilePluginFactory;
import cn.lili.modules.file.service.FileService;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -47,6 +46,18 @@ public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements Fi
this.remove(queryWrapper);
}
@Override
public void batchDeleteByDirectory(String directoryId) {
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(File::getFileDirectoryId, directoryId);
List<File> files = this.list(queryWrapper);
List<String> keys = new ArrayList<>();
files.forEach(item -> keys.add(item.getFileKey()));
filePluginFactory.filePlugin().deleteFile(keys);
this.remove(queryWrapper);
}
@Override
public void batchDelete(List<String> ids, AuthUser authUser) {
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
@@ -74,26 +85,28 @@ public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements Fi
}
@Override
public IPage<File> customerPage(File file, SearchVO searchVO, PageVO pageVo) {
public IPage<File> customerPage(FileOwnerDTO fileOwnerDTO) {
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(CharSequenceUtil.isNotEmpty(file.getName()), File::getName, file.getName())
.like(CharSequenceUtil.isNotEmpty(file.getFileKey()), File::getFileKey, file.getFileKey())
.like(CharSequenceUtil.isNotEmpty(file.getFileType()), File::getFileType, file.getFileType())
.between(CharSequenceUtil.isNotEmpty(searchVO.getStartDate()) && CharSequenceUtil.isNotEmpty(searchVO.getEndDate()),
File::getCreateTime, searchVO.getStartDate(), searchVO.getEndDate());
return this.page(PageUtil.initPage(pageVo), queryWrapper);
queryWrapper.like(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getName()), File::getName, fileOwnerDTO.getName())
.eq(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getFileDirectoryId()),File::getFileDirectoryId, fileOwnerDTO.getFileDirectoryId())
.like(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getFileKey()), File::getFileKey, fileOwnerDTO.getFileKey())
.like(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getFileType()), File::getFileType, fileOwnerDTO.getFileType())
.between(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getStartDate()) && CharSequenceUtil.isNotEmpty(fileOwnerDTO.getEndDate()),
File::getCreateTime, fileOwnerDTO.getStartDate(), fileOwnerDTO.getEndDate());
return this.page(PageUtil.initPage(fileOwnerDTO), queryWrapper);
}
@Override
public IPage<File> customerPageOwner(FileOwnerDTO ownerDTO, File file, SearchVO searchVO, PageVO pageVo) {
public IPage<File> customerPageOwner(FileOwnerDTO fileOwnerDTO) {
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CharSequenceUtil.isNotEmpty(ownerDTO.getOwnerId()), File::getOwnerId, ownerDTO.getOwnerId())
.eq(File::getUserEnums, ownerDTO.getUserEnums())
.like(CharSequenceUtil.isNotEmpty(file.getName()), File::getName, file.getName())
.like(CharSequenceUtil.isNotEmpty(file.getFileKey()), File::getFileKey, file.getFileKey())
.like(CharSequenceUtil.isNotEmpty(file.getFileType()), File::getFileType, file.getFileType())
.between(CharSequenceUtil.isNotEmpty(searchVO.getStartDate()) && CharSequenceUtil.isNotEmpty(searchVO.getEndDate()),
File::getCreateTime, searchVO.getStartDate(), searchVO.getEndDate());
return this.page(PageUtil.initPage(pageVo), queryWrapper);
queryWrapper.eq(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getOwnerId()), File::getOwnerId, fileOwnerDTO.getOwnerId())
.eq(File::getUserEnums, fileOwnerDTO.getUserEnums())
.eq(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getFileDirectoryId()),File::getFileDirectoryId, fileOwnerDTO.getFileDirectoryId())
.like(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getName()), File::getName, fileOwnerDTO.getName())
.like(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getFileKey()), File::getFileKey, fileOwnerDTO.getFileKey())
.like(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getFileType()), File::getFileType, fileOwnerDTO.getFileType())
.between(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getStartDate()) && CharSequenceUtil.isNotEmpty(fileOwnerDTO.getEndDate()),
File::getCreateTime, fileOwnerDTO.getStartDate(), fileOwnerDTO.getEndDate());
return this.page(PageUtil.initPage(fileOwnerDTO), queryWrapper);
}
}

View File

@@ -23,9 +23,12 @@ public class StoreFlowQueryDTO {
@ApiModelProperty(value = "售后编号")
private String refundSn;
@ApiModelProperty(value = "售后编号")
@ApiModelProperty(value = "订单编号")
private String orderSn;
@ApiModelProperty(value = "订单货物编号")
private String orderItemSn;
@ApiModelProperty(value = "过滤只看分销订单")
private Boolean justDistribution;

View File

@@ -64,7 +64,8 @@ public class AllowOperation implements Serializable {
}
//新订单
if (CharSequenceUtil.equalsAny(status, OrderStatusEnum.UNPAID.name(), OrderStatusEnum.PAID.name(), OrderStatusEnum.UNDELIVERED.name(), OrderStatusEnum.STAY_PICKED_UP.name())) {
if (CharSequenceUtil.equalsAny(status, OrderStatusEnum.UNPAID.name(), OrderStatusEnum.PAID.name(), OrderStatusEnum.UNDELIVERED.name(),
OrderStatusEnum.STAY_PICKED_UP.name(), OrderStatusEnum.TAKE.name())) {
this.cancel = true;
}
//新订单,允许支付
@@ -86,7 +87,8 @@ public class AllowOperation implements Serializable {
this.showLogistics = order.getDeliverStatus().equals(DeliverStatusEnum.DELIVERED.name()) && status.equals(OrderStatusEnum.DELIVERED.name());
//虚拟订单 或 自提订单可以核销
this.take = (order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name()) && order.getOrderStatus().equals(OrderStatusEnum.TAKE.name())) || (order.getDeliveryMethod().equals(DeliveryMethodEnum.SELF_PICK_UP.name()) && order.getOrderStatus().equals(OrderStatusEnum.STAY_PICKED_UP.name()));
this.take =
(order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name()) && order.getOrderStatus().equals(OrderStatusEnum.TAKE.name())) || (order.getDeliveryMethod().equals(DeliveryMethodEnum.SELF_PICK_UP.name()) && order.getOrderStatus().equals(OrderStatusEnum.STAY_PICKED_UP.name()));
}
/**
@@ -104,8 +106,10 @@ public class AllowOperation implements Serializable {
this.editPrice = true;
}
//新订单
if (CharSequenceUtil.equalsAny(status, OrderStatusEnum.UNPAID.name(), OrderStatusEnum.PAID.name(), OrderStatusEnum.UNDELIVERED.name())) {
//取消判定
if (CharSequenceUtil.equalsAny(status, OrderStatusEnum.UNPAID.name(), OrderStatusEnum.PAID.name(), OrderStatusEnum.UNDELIVERED.name(),
OrderStatusEnum.STAY_PICKED_UP.name(),
OrderStatusEnum.TAKE.name())) {
this.cancel = true;
}

View File

@@ -32,8 +32,9 @@ public interface OrderService extends IService<Order> {
*
* @param orderSn 订单编号
* @param reason 错误原因
* @param refundMoney 是否退款
*/
void systemCancel(String orderSn, String reason);
void systemCancel(String orderSn, String reason,Boolean refundMoney);
/**
* 根据sn查询

View File

@@ -171,7 +171,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
orders.add(order);
String message = "订单[" + item.getSn() + "]创建";
//记录日志
orderLogs.add(new OrderLog(item.getSn(), UserContext.getCurrentUser().getId(), UserContext.getCurrentUser().getRole().getRole(), UserContext.getCurrentUser().getUsername(), message));
orderLogs.add(new OrderLog(item.getSn(), UserContext.getCurrentUser().getId(), UserContext.getCurrentUser().getRole().getRole(),
UserContext.getCurrentUser().getUsername(), message));
item.getCheckedSkuList().forEach(
sku -> {
orderItems.add(new OrderItem(sku, item, tradeDTO));
@@ -260,7 +261,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Order::getOrderPromotionType, PromotionTypeEnum.PINTUAN.name());
queryWrapper.eq(Order::getPromotionId, pintuanId);
queryWrapper.nested(i -> i.eq(Order::getPayStatus, PayStatusEnum.PAID.name()).or(j -> j.eq(Order::getOrderStatus, OrderStatusEnum.PAID.name())));
queryWrapper.nested(i -> i.eq(Order::getPayStatus, PayStatusEnum.PAID.name()).or(j -> j.eq(Order::getOrderStatus,
OrderStatusEnum.PAID.name())));
return this.list(queryWrapper);
}
@@ -299,7 +301,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
OrderStatusEnum.UNDELIVERED.name(),
OrderStatusEnum.UNPAID.name(),
OrderStatusEnum.STAY_PICKED_UP.name(),
OrderStatusEnum.PAID.name())) {
OrderStatusEnum.PAID.name(),
OrderStatusEnum.TAKE.name())) {
order.setOrderStatus(OrderStatusEnum.CANCELLED.name());
order.setCancelReason(reason);
@@ -318,14 +321,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
@Override
@OrderLogPoint(description = "'订单['+#orderSn+']系统取消,原因为:'+#reason", orderSn = "#orderSn")
@Transactional(rollbackFor = Exception.class)
public void systemCancel(String orderSn, String reason) {
public void systemCancel(String orderSn, String reason,Boolean refundMoney) {
Order order = this.getBySn(orderSn);
order.setOrderStatus(OrderStatusEnum.CANCELLED.name());
order.setCancelReason(reason);
this.updateById(order);
//生成店铺退款流水
this.generatorStoreRefundFlow(order);
orderStatusMessage(order);
if(refundMoney){
//生成店铺退款流水
this.generatorStoreRefundFlow(order);
orderStatusMessage(order);
}
}
/**
@@ -409,7 +414,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
BeanUtil.copyProperties(memberAddressDTO, order);
this.updateById(order);
OrderLog orderLog = new OrderLog(orderSn, UserContext.getCurrentUser().getId(), UserContext.getCurrentUser().getRole().getRole(), UserContext.getCurrentUser().getUsername(), message);
OrderLog orderLog = new OrderLog(orderSn, UserContext.getCurrentUser().getId(), UserContext.getCurrentUser().getRole().getRole(),
UserContext.getCurrentUser().getUsername(), message);
orderLogService.save(orderLog);
return order;
@@ -456,8 +462,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
public Order shunFengDelivery(String orderSn) {
OrderDetailVO orderDetailVO = this.queryDetail(orderSn);
String logisticsNo = logisticsService.sfCreateOrder(orderDetailVO);
Logistics logistics = logisticsService.getOne(new LambdaQueryWrapper<Logistics>().eq(Logistics::getCode,"SF"));
return delivery(orderSn,logisticsNo,logistics.getId());
Logistics logistics = logisticsService.getOne(new LambdaQueryWrapper<Logistics>().eq(Logistics::getCode, "SF"));
return delivery(orderSn, logisticsNo, logistics.getId());
}
@Override
@@ -474,7 +480,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
Order order = this.getBySn(orderSn);
//获取店家信息
StoreDeliverGoodsAddressDTO storeDeliverGoodsAddressDTO = storeDetailService.getStoreDeliverGoodsAddressDto(order.getStoreId());
String from = storeDeliverGoodsAddressDTO.getSalesConsignorAddressPath().substring(0, storeDeliverGoodsAddressDTO.getSalesConsignorAddressPath().indexOf(",") - 1);
String from = storeDeliverGoodsAddressDTO.getSalesConsignorAddressPath().substring(0,
storeDeliverGoodsAddressDTO.getSalesConsignorAddressPath().indexOf(",") - 1);
String to = order.getConsigneeAddressPath().substring(0, order.getConsigneeAddressPath().indexOf(",") - 1);
//获取踪迹信息
return logisticsService.getLogisticMapTrack(order.getLogisticsCode(), order.getLogisticsNo(), order.getConsigneeMobile(), from, to);
@@ -582,7 +589,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
@Override
@Transactional(rollbackFor = Exception.class)
public void sendUpdateStatusMessage(OrderMessage orderMessage) {
applicationEventPublisher.publishEvent(new TransactionCommitSendMQEvent("发送订单变更mq消息", rocketmqCustomProperties.getOrderTopic(), OrderTagsEnum.STATUS_CHANGE.name(), JSONUtil.toJsonStr(orderMessage)));
applicationEventPublisher.publishEvent(new TransactionCommitSendMQEvent("发送订单变更mq消息", rocketmqCustomProperties.getOrderTopic(),
OrderTagsEnum.STATUS_CHANGE.name(), JSONUtil.toJsonStr(orderMessage)));
}
@Override
@@ -766,11 +774,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
//如果未开启虚拟成团且已参团人数小于成团人数,则自动取消订单
String reason = "拼团活动结束订单未付款,系统自动取消订单";
if (CharSequenceUtil.isNotEmpty(entry.getKey())) {
this.systemCancel(entry.getKey(), reason);
this.systemCancel(entry.getKey(), reason,true);
} else {
for (Order order : entry.getValue()) {
if (!CharSequenceUtil.equalsAny(order.getOrderStatus(), OrderStatusEnum.COMPLETED.name(), OrderStatusEnum.DELIVERED.name(), OrderStatusEnum.TAKE.name(), OrderStatusEnum.STAY_PICKED_UP.name())) {
this.systemCancel(order.getSn(), reason);
if (!CharSequenceUtil.equalsAny(order.getOrderStatus(), OrderStatusEnum.COMPLETED.name(), OrderStatusEnum.DELIVERED.name(),
OrderStatusEnum.TAKE.name(), OrderStatusEnum.STAY_PICKED_UP.name())) {
this.systemCancel(order.getSn(), reason,true);
}
}
}
@@ -795,7 +804,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
//未付款订单自动取消
if (unpaidOrders != null && !unpaidOrders.isEmpty()) {
for (Order unpaidOrder : unpaidOrders) {
this.systemCancel(unpaidOrder.getSn(), "拼团活动结束订单未付款,系统自动取消订单");
this.systemCancel(unpaidOrder.getSn(), "拼团活动结束订单未付款,系统自动取消订单",false);
}
}
List<Order> paidOrders = listMap.get(PayStatusEnum.PAID.name());
@@ -816,7 +825,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
paidOrders.add(order);
}
for (Order paidOrder : paidOrders) {
if (!CharSequenceUtil.equalsAny(paidOrder.getOrderStatus(), OrderStatusEnum.COMPLETED.name(), OrderStatusEnum.DELIVERED.name(), OrderStatusEnum.TAKE.name(), OrderStatusEnum.STAY_PICKED_UP.name())) {
if (!CharSequenceUtil.equalsAny(paidOrder.getOrderStatus(), OrderStatusEnum.COMPLETED.name(), OrderStatusEnum.DELIVERED.name(),
OrderStatusEnum.TAKE.name(), OrderStatusEnum.STAY_PICKED_UP.name())) {
if (OrderTypeEnum.NORMAL.name().equals(paidOrder.getOrderType())) {
paidOrder.setOrderStatus(OrderStatusEnum.UNDELIVERED.name());
} else if (OrderTypeEnum.VIRTUAL.name().equals(paidOrder.getOrderType())) {
@@ -955,7 +965,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
private void pintuanOrderFailed(List<Order> list) {
for (Order order : list) {
try {
this.systemCancel(order.getSn(), "拼团人数不足,拼团失败!");
this.systemCancel(order.getSn(), "拼团人数不足,拼团失败!",true);
} catch (Exception e) {
log.error("拼团订单取消失败", e);
}

View File

@@ -198,10 +198,13 @@ public class StoreFlowServiceImpl extends ServiceImpl<StoreFlowMapper, StoreFlow
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getRefundSn()),
StoreFlow::getRefundSn, storeFlowQueryDTO.getRefundSn());
//售后编号判定
//订单编号判定
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getOrderSn()),
StoreFlow::getOrderSn, storeFlowQueryDTO.getOrderSn());
//订单货物编号
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getOrderItemSn()),
StoreFlow::getOrderItemSn, storeFlowQueryDTO.getOrderItemSn());
//结算单非空,则校对结算单参数
if (storeFlowQueryDTO.getBill() != null) {
Bill bill = storeFlowQueryDTO.getBill();