Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop into pg
This commit is contained in:
commit
8f52a1e2a2
@ -0,0 +1,18 @@
|
|||||||
|
CREATE TABLE `li_file_directory` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||||
|
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建者',
|
||||||
|
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新者',
|
||||||
|
`delete_flag` tinyint(1) NULL DEFAULT 0 COMMENT '删除标志 true/false 删除/未删除',
|
||||||
|
`directory_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '文件目录类型',
|
||||||
|
`directory_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '拥有者名称',
|
||||||
|
`owner_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '拥有者id',
|
||||||
|
`parent_id` bigint NULL DEFAULT NULL COMMENT '父分类ID',
|
||||||
|
`level` int NULL DEFAULT NULL COMMENT '层级',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 1698937596963311619 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '文件夹' ROW_FORMAT = DYNAMIC;
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|
||||||
|
ALTER TABLE li_file ADD file_directory_id varchar(255) COMMENT '文件夹ID';
|
@ -6,11 +6,11 @@
|
|||||||
|
|
||||||
#### PS: **演示站点所有环境均部署master分支。如果有演示站点问题,可以反馈,如果演示站点没问题本地运行有问题,需自行处理**
|
#### PS: **演示站点所有环境均部署master分支。如果有演示站点问题,可以反馈,如果演示站点没问题本地运行有问题,需自行处理**
|
||||||
|
|
||||||
##### 交流 qq 1群 961316482(已满)
|
##### 交流 qq 1群 961316482
|
||||||
##### 交流 qq 2群 875294241(已满)
|
##### 交流 qq 2群 875294241(已满)
|
||||||
##### 交流 qq 3群 263785057(已满)
|
##### 交流 qq 3群 263785057(已满)
|
||||||
##### 交流 qq 4群 674617534 (已满)
|
##### 交流 qq 4群 674617534 (已满)
|
||||||
##### 交流 qq 5群 594675235
|
##### 交流 qq 5群 594675235 (已满)
|
||||||
|
|
||||||
##### 体验 公众号/小程序/APP 体验,扫描二维码
|
##### 体验 公众号/小程序/APP 体验,扫描二维码
|
||||||
|
|
||||||
@ -188,7 +188,7 @@ PS:手机验证码为 ‘111111’
|
|||||||
##### 交流 qq 2群 875294241(已满)
|
##### 交流 qq 2群 875294241(已满)
|
||||||
##### 交流 qq 3群 263785057(已满)
|
##### 交流 qq 3群 263785057(已满)
|
||||||
##### 交流 qq 4群 674617534(已满)
|
##### 交流 qq 4群 674617534(已满)
|
||||||
##### 交流 qq 5群 594675235
|
##### 交流 qq 5群 594675235(已满)
|
||||||
|
|
||||||
### 附录
|
### 附录
|
||||||
有人有自己的学习视频、学习记录文档、希望宣传关联开源项目等均可以私聊仓库所有者。
|
有人有自己的学习视频、学习记录文档、希望宣传关联开源项目等均可以私聊仓库所有者。
|
||||||
|
@ -7,9 +7,7 @@ import cn.lili.common.exception.ServiceException;
|
|||||||
import cn.lili.common.security.AuthUser;
|
import cn.lili.common.security.AuthUser;
|
||||||
import cn.lili.common.security.context.UserContext;
|
import cn.lili.common.security.context.UserContext;
|
||||||
import cn.lili.common.security.enums.UserEnums;
|
import cn.lili.common.security.enums.UserEnums;
|
||||||
import cn.lili.common.vo.PageVO;
|
|
||||||
import cn.lili.common.vo.ResultMessage;
|
import cn.lili.common.vo.ResultMessage;
|
||||||
import cn.lili.common.vo.SearchVO;
|
|
||||||
import cn.lili.modules.file.entity.File;
|
import cn.lili.modules.file.entity.File;
|
||||||
import cn.lili.modules.file.entity.dto.FileOwnerDTO;
|
import cn.lili.modules.file.entity.dto.FileOwnerDTO;
|
||||||
import cn.lili.modules.file.service.FileService;
|
import cn.lili.modules.file.service.FileService;
|
||||||
@ -43,10 +41,9 @@ public class FileController {
|
|||||||
@ApiOperation(value = "获取自己的图片资源")
|
@ApiOperation(value = "获取自己的图片资源")
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@ApiImplicitParam(name = "title", value = "名称模糊匹配")
|
@ApiImplicitParam(name = "title", value = "名称模糊匹配")
|
||||||
public ResultMessage<IPage<File>> getFileList(@RequestHeader String accessToken, File file, SearchVO searchVO, PageVO pageVo) {
|
public ResultMessage<IPage<File>> getFileList(@RequestHeader String accessToken, FileOwnerDTO fileOwnerDTO) {
|
||||||
|
|
||||||
AuthUser authUser = UserContext.getAuthUser(cache, accessToken);
|
AuthUser authUser = UserContext.getAuthUser(cache, accessToken);
|
||||||
FileOwnerDTO fileOwnerDTO = new FileOwnerDTO();
|
|
||||||
//只有买家才写入自己id
|
//只有买家才写入自己id
|
||||||
if (authUser.getRole().equals(UserEnums.MEMBER)) {
|
if (authUser.getRole().equals(UserEnums.MEMBER)) {
|
||||||
fileOwnerDTO.setOwnerId(authUser.getId());
|
fileOwnerDTO.setOwnerId(authUser.getId());
|
||||||
@ -55,7 +52,7 @@ public class FileController {
|
|||||||
fileOwnerDTO.setOwnerId(authUser.getStoreId());
|
fileOwnerDTO.setOwnerId(authUser.getStoreId());
|
||||||
}
|
}
|
||||||
fileOwnerDTO.setUserEnums(authUser.getRole().name());
|
fileOwnerDTO.setUserEnums(authUser.getRole().name());
|
||||||
return ResultUtil.data(fileService.customerPageOwner(fileOwnerDTO, file, searchVO, pageVo));
|
return ResultUtil.data(fileService.customerPageOwner(fileOwnerDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "文件重命名")
|
@ApiOperation(value = "文件重命名")
|
||||||
|
@ -0,0 +1,64 @@
|
|||||||
|
package cn.lili.controller.common;
|
||||||
|
|
||||||
|
import cn.lili.common.enums.ResultUtil;
|
||||||
|
import cn.lili.common.security.context.UserContext;
|
||||||
|
import cn.lili.common.vo.ResultMessage;
|
||||||
|
import cn.lili.modules.file.entity.FileDirectory;
|
||||||
|
import cn.lili.modules.file.entity.dto.FileDirectoryDTO;
|
||||||
|
import cn.lili.modules.file.service.FileDirectoryService;
|
||||||
|
import cn.lili.modules.file.service.FileService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件目录管理接口
|
||||||
|
*
|
||||||
|
* @author Chopper
|
||||||
|
* @since 2020/11/26 15:41
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@Api(tags = "文件目录管理接口")
|
||||||
|
@RequestMapping("/common/resource/fileDirectory")
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class FileDirectoryController {
|
||||||
|
|
||||||
|
private final FileDirectoryService fileDirectoryService;
|
||||||
|
private final FileService fileService;
|
||||||
|
|
||||||
|
@ApiOperation(value = "获取文件目录列表")
|
||||||
|
@GetMapping
|
||||||
|
public ResultMessage<List<FileDirectoryDTO>> getSceneFileList() {
|
||||||
|
return ResultUtil.data(fileDirectoryService.getFileDirectoryList(UserContext.getCurrentUser().getId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "添加文件目录")
|
||||||
|
@PostMapping
|
||||||
|
public ResultMessage<FileDirectory> addSceneFileList(@RequestBody FileDirectory fileDirectory) {
|
||||||
|
fileDirectory.setDirectoryType(UserContext.getCurrentUser().getRole().name());
|
||||||
|
fileDirectoryService.save(fileDirectory);
|
||||||
|
return ResultUtil.data(fileDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "修改文件目录")
|
||||||
|
@PutMapping
|
||||||
|
public ResultMessage<FileDirectory> editSceneFileList(@RequestBody FileDirectory fileDirectory) {
|
||||||
|
fileDirectory.setDirectoryType(UserContext.getCurrentUser().getRole().name());
|
||||||
|
fileDirectoryService.updateById(fileDirectory);
|
||||||
|
return ResultUtil.data(fileDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "删除文件目录")
|
||||||
|
@DeleteMapping("/{id}")
|
||||||
|
public ResultMessage<Object> deleteSceneFileList(@PathVariable String id) {
|
||||||
|
//删除文件夹下面的图片
|
||||||
|
fileService.batchDeleteByDirectory(id);
|
||||||
|
//删除目录
|
||||||
|
fileDirectoryService.removeById(id);
|
||||||
|
return ResultUtil.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package cn.lili.controller.common;
|
package cn.lili.controller.common;
|
||||||
|
|
||||||
import cn.hutool.core.text.CharSequenceUtil;
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.lili.cache.Cache;
|
import cn.lili.cache.Cache;
|
||||||
import cn.lili.common.enums.ResultCode;
|
import cn.lili.common.enums.ResultCode;
|
||||||
import cn.lili.common.enums.ResultUtil;
|
import cn.lili.common.enums.ResultUtil;
|
||||||
@ -21,10 +22,7 @@ import io.swagger.annotations.Api;
|
|||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
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.*;
|
||||||
import org.springframework.web.bind.annotation.RequestHeader;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -55,7 +53,7 @@ public class UploadController {
|
|||||||
@PostMapping(value = "/file")
|
@PostMapping(value = "/file")
|
||||||
public ResultMessage<Object> upload(MultipartFile file,
|
public ResultMessage<Object> upload(MultipartFile file,
|
||||||
String base64,
|
String base64,
|
||||||
@RequestHeader String accessToken) {
|
@RequestHeader String accessToken, @RequestParam String directoryPath) {
|
||||||
|
|
||||||
|
|
||||||
AuthUser authUser = UserContext.getAuthUser(cache, accessToken);
|
AuthUser authUser = UserContext.getAuthUser(cache, accessToken);
|
||||||
@ -89,6 +87,12 @@ public class UploadController {
|
|||||||
try {
|
try {
|
||||||
InputStream inputStream = file.getInputStream();
|
InputStream inputStream = file.getInputStream();
|
||||||
//上传至第三方云服务或服务器
|
//上传至第三方云服务或服务器
|
||||||
|
String scene = UserContext.getCurrentUser().getRole().name();
|
||||||
|
if (StrUtil.equalsAny(UserContext.getCurrentUser().getRole().name(), UserEnums.MEMBER.name(), UserEnums.STORE.name(), UserEnums.SEAT.name())) {
|
||||||
|
scene = scene + "/" + authUser.getId();
|
||||||
|
}
|
||||||
|
fileKey = scene + "/" + directoryPath + "/" + fileKey;
|
||||||
|
//上传至第三方云服务或服务器
|
||||||
result = filePluginFactory.filePlugin().inputStreamUpload(inputStream, fileKey);
|
result = filePluginFactory.filePlugin().inputStreamUpload(inputStream, fileKey);
|
||||||
//保存数据信息至数据库
|
//保存数据信息至数据库
|
||||||
newFile.setName(file.getOriginalFilename());
|
newFile.setName(file.getOriginalFilename());
|
||||||
@ -104,6 +108,15 @@ public class UploadController {
|
|||||||
} else {
|
} else {
|
||||||
newFile.setOwnerId(authUser.getId());
|
newFile.setOwnerId(authUser.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//存储文件目录
|
||||||
|
if (StrUtil.isNotEmpty(directoryPath)) {
|
||||||
|
if (directoryPath.indexOf("/") > 0) {
|
||||||
|
newFile.setFileDirectoryId(directoryPath.substring(directoryPath.lastIndexOf("/") + 1));
|
||||||
|
} else {
|
||||||
|
newFile.setFileDirectoryId(directoryPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
fileService.save(newFile);
|
fileService.save(newFile);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("文件上传失败", e);
|
log.error("文件上传失败", e);
|
||||||
|
@ -5,9 +5,7 @@ import cn.hutool.core.date.DateTime;
|
|||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import cn.lili.event.AfterSaleStatusChangeEvent;
|
import cn.lili.event.AfterSaleStatusChangeEvent;
|
||||||
import cn.lili.event.OrderStatusChangeEvent;
|
import cn.lili.event.OrderStatusChangeEvent;
|
||||||
import cn.lili.modules.distribution.entity.dos.DistributionOrder;
|
|
||||||
import cn.lili.modules.distribution.entity.enums.DistributionOrderStatusEnum;
|
import cn.lili.modules.distribution.entity.enums.DistributionOrderStatusEnum;
|
||||||
import cn.lili.modules.distribution.mapper.DistributionOrderMapper;
|
|
||||||
import cn.lili.modules.distribution.service.DistributionOrderService;
|
import cn.lili.modules.distribution.service.DistributionOrderService;
|
||||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||||
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
import cn.lili.modules.order.order.entity.dto.OrderMessage;
|
||||||
@ -17,13 +15,10 @@ import cn.lili.modules.system.entity.dto.DistributionSetting;
|
|||||||
import cn.lili.modules.system.entity.enums.SettingEnum;
|
import cn.lili.modules.system.entity.enums.SettingEnum;
|
||||||
import cn.lili.modules.system.service.SettingService;
|
import cn.lili.modules.system.service.SettingService;
|
||||||
import cn.lili.timetask.handler.EveryDayExecute;
|
import cn.lili.timetask.handler.EveryDayExecute;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
||||||
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.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分销订单入库
|
* 分销订单入库
|
||||||
*
|
*
|
||||||
@ -78,14 +73,14 @@ public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDa
|
|||||||
//当前时间-结算天数=最终结算时间
|
//当前时间-结算天数=最终结算时间
|
||||||
dateTime = dateTime.offsetNew(DateField.DAY_OF_MONTH, -distributionSetting.getCashDay());
|
dateTime = dateTime.offsetNew(DateField.DAY_OF_MONTH, -distributionSetting.getCashDay());
|
||||||
//分销人员订单结算
|
//分销人员订单结算
|
||||||
distributionOrderService.updateRebate(dateTime,DistributionOrderStatusEnum.WAIT_BILL.name());
|
distributionOrderService.updateRebate(dateTime, DistributionOrderStatusEnum.WAIT_BILL.name());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterSaleStatusChange(AfterSale afterSale) {
|
public void afterSaleStatusChange(AfterSale afterSale) {
|
||||||
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
|
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
|
||||||
distributionOrderService.refundOrder(afterSale.getSn());
|
distributionOrderService.refundOrder(afterSale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ public class FullDiscountExecute implements TradeEvent, OrderStatusChangeEvent {
|
|||||||
searchParams.setOrderPromotionType(OrderPromotionTypeEnum.GIFT.name());
|
searchParams.setOrderPromotionType(OrderPromotionTypeEnum.GIFT.name());
|
||||||
List<Order> orders = orderService.queryListByParams(searchParams);
|
List<Order> orders = orderService.queryListByParams(searchParams);
|
||||||
if (orders != null && !orders.isEmpty()) {
|
if (orders != null && !orders.isEmpty()) {
|
||||||
orderService.systemCancel(orders.get(0).getSn(),"主订单取消,赠送订单字段自动取消");
|
orderService.systemCancel(orders.get(0).getSn(),"主订单取消,赠送订单字段自动取消",true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,20 @@
|
|||||||
package cn.lili.event.impl;
|
package cn.lili.event.impl;
|
||||||
|
|
||||||
|
import cn.lili.event.AfterSaleStatusChangeEvent;
|
||||||
import cn.lili.event.TradeEvent;
|
import cn.lili.event.TradeEvent;
|
||||||
|
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||||
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
||||||
|
import cn.lili.modules.order.order.entity.dos.OrderItem;
|
||||||
|
import cn.lili.modules.order.order.service.OrderItemService;
|
||||||
|
import cn.lili.modules.order.order.service.OrderService;
|
||||||
import cn.lili.modules.order.order.service.TradeService;
|
import cn.lili.modules.order.order.service.TradeService;
|
||||||
|
import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum;
|
||||||
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
|
import cn.lili.modules.payment.entity.enums.PaymentMethodEnum;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单状态处理类
|
* 订单状态处理类
|
||||||
*
|
*
|
||||||
@ -14,11 +22,15 @@ import org.springframework.stereotype.Service;
|
|||||||
* @since 2020-07-03 11:20
|
* @since 2020-07-03 11:20
|
||||||
**/
|
**/
|
||||||
@Service
|
@Service
|
||||||
public class OrderStatusHandlerExecute implements TradeEvent {
|
public class OrderStatusHandlerExecute implements TradeEvent, AfterSaleStatusChangeEvent {
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private TradeService tradeService;
|
private TradeService tradeService;
|
||||||
|
@Autowired
|
||||||
|
private OrderItemService orderItemService;
|
||||||
|
@Autowired
|
||||||
|
private OrderService orderService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void orderCreate(TradeDTO tradeDTO) {
|
public void orderCreate(TradeDTO tradeDTO) {
|
||||||
@ -28,4 +40,24 @@ public class OrderStatusHandlerExecute implements TradeEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterSaleStatusChange(AfterSale afterSale) {
|
||||||
|
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
|
||||||
|
//循环订单货物,判断是否已经全部售后
|
||||||
|
List<OrderItem> orderItems = orderItemService.getByOrderSn(afterSale.getOrderSn());
|
||||||
|
// 总退货数量
|
||||||
|
int returnCount = 0;
|
||||||
|
// 总购买数量
|
||||||
|
int deliverCount = 0;
|
||||||
|
for (OrderItem orderItem : orderItems) {
|
||||||
|
returnCount += orderItem.getReturnGoodsNumber();
|
||||||
|
deliverCount += orderItem.getNum();
|
||||||
|
}
|
||||||
|
if (returnCount == deliverCount) {
|
||||||
|
orderService.systemCancel(afterSale.getOrderSn(),"订单货物全部退款",false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -222,7 +222,7 @@ public class StockUpdateExecute implements OrderStatusChangeEvent {
|
|||||||
* @param orderSn 失败入库订单信息
|
* @param orderSn 失败入库订单信息
|
||||||
*/
|
*/
|
||||||
private void errorOrder(String orderSn) {
|
private void errorOrder(String orderSn) {
|
||||||
orderService.systemCancel(orderSn, outOfStockMessage);
|
orderService.systemCancel(orderSn, outOfStockMessage,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,8 +42,8 @@ public class VerificationOrderExecute implements OrderStatusChangeEvent {
|
|||||||
.eq(Order::getSn, orderMessage.getOrderSn()));
|
.eq(Order::getSn, orderMessage.getOrderSn()));
|
||||||
//修改虚拟订单货物可以进行售后、投诉
|
//修改虚拟订单货物可以进行售后、投诉
|
||||||
orderItemService.update(new LambdaUpdateWrapper<OrderItem>().eq(OrderItem::getOrderSn, orderMessage.getOrderSn())
|
orderItemService.update(new LambdaUpdateWrapper<OrderItem>().eq(OrderItem::getOrderSn, orderMessage.getOrderSn())
|
||||||
.set(OrderItem::getAfterSaleStatus, OrderItemAfterSaleStatusEnum.NOT_APPLIED)
|
.set(OrderItem::getAfterSaleStatus, OrderItemAfterSaleStatusEnum.ALREADY_APPLIED)
|
||||||
.set(OrderItem::getCommentStatus, OrderComplaintStatusEnum.NO_APPLY));
|
.set(OrderItem::getCommentStatus, OrderComplaintStatusEnum.COMPLETE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ public class CancelOrderTaskExecute implements EveryMinuteExecute {
|
|||||||
List<Order> list = orderService.list(queryWrapper);
|
List<Order> list = orderService.list(queryWrapper);
|
||||||
List<String> cancelSnList = list.stream().map(Order::getSn).collect(Collectors.toList());
|
List<String> cancelSnList = list.stream().map(Order::getSn).collect(Collectors.toList());
|
||||||
for (String sn : cancelSnList) {
|
for (String sn : cancelSnList) {
|
||||||
orderService.systemCancel(sn, "超时未支付自动取消");
|
orderService.systemCancel(sn, "超时未支付自动取消",false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package cn.lili.modules.distribution.service;
|
|||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.lili.modules.distribution.entity.dos.DistributionOrder;
|
import cn.lili.modules.distribution.entity.dos.DistributionOrder;
|
||||||
import cn.lili.modules.distribution.entity.vos.DistributionOrderSearchParams;
|
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 cn.lili.modules.order.order.entity.dos.OrderItem;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
@ -47,7 +48,7 @@ public interface DistributionOrderService extends IService<DistributionOrder> {
|
|||||||
*
|
*
|
||||||
* @param afterSaleSn 售后单号
|
* @param afterSaleSn 售后单号
|
||||||
*/
|
*/
|
||||||
void refundOrder(String afterSaleSn);
|
void refundOrder(AfterSale afterSale);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分销订单状态修改
|
* 分销订单状态修改
|
||||||
|
@ -16,6 +16,7 @@ import cn.lili.modules.distribution.entity.vos.DistributionOrderSearchParams;
|
|||||||
import cn.lili.modules.distribution.mapper.DistributionOrderMapper;
|
import cn.lili.modules.distribution.mapper.DistributionOrderMapper;
|
||||||
import cn.lili.modules.distribution.service.DistributionOrderService;
|
import cn.lili.modules.distribution.service.DistributionOrderService;
|
||||||
import cn.lili.modules.distribution.service.DistributionService;
|
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.Order;
|
||||||
import cn.lili.modules.order.order.entity.dos.OrderItem;
|
import cn.lili.modules.order.order.entity.dos.OrderItem;
|
||||||
import cn.lili.modules.order.order.entity.dos.StoreFlow;
|
import cn.lili.modules.order.order.entity.dos.StoreFlow;
|
||||||
@ -189,28 +190,31 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refundOrder(String afterSaleSn) {
|
public void refundOrder(AfterSale afterSale) {
|
||||||
//判断是否为分销订单
|
//判断是否为分销订单
|
||||||
StoreFlow storeFlow = storeFlowService.queryOne(StoreFlowQueryDTO.builder().justDistribution(true).refundSn(afterSaleSn).build());
|
StoreFlow refundStoreFlow = storeFlowService.queryOne(StoreFlowQueryDTO.builder().justDistribution(true).refundSn(afterSale.getSn()).build());
|
||||||
if (storeFlow != null) {
|
if (refundStoreFlow != null) {
|
||||||
|
|
||||||
//获取收款分销订单
|
//获取收款分销订单
|
||||||
DistributionOrder distributionOrder = this.getOne(new LambdaQueryWrapper<DistributionOrder>()
|
DistributionOrder distributionOrder = this.getOne(new LambdaQueryWrapper<DistributionOrder>()
|
||||||
.eq(DistributionOrder::getOrderItemSn, storeFlow.getOrderItemSn()));
|
.eq(DistributionOrder::getOrderItemSn, afterSale.getOrderItemSn()));
|
||||||
//分销订单不存在,则直接返回
|
//分销订单不存在,则直接返回
|
||||||
if (distributionOrder == null) {
|
if (distributionOrder == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (distributionOrder.getDistributionOrderStatus().equals(DistributionOrderStatusEnum.WAIT_BILL.name())) {
|
if (distributionOrder.getSellBackRebate() == null) {
|
||||||
this.update(new LambdaUpdateWrapper<DistributionOrder>()
|
distributionOrder.setSellBackRebate(refundStoreFlow.getDistributionRebate());
|
||||||
.eq(DistributionOrder::getOrderItemSn, storeFlow.getOrderItemSn())
|
} else {
|
||||||
.set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.CANCEL.name()));
|
distributionOrder.setSellBackRebate(CurrencyUtil.add(distributionOrder.getSellBackRebate(), refundStoreFlow.getDistributionRebate()));
|
||||||
}
|
}
|
||||||
//如果已结算则创建退款分销订单
|
|
||||||
else {
|
distributionOrder.setRebate(CurrencyUtil.sub(distributionOrder.getRebate(), refundStoreFlow.getDistributionRebate()));
|
||||||
//修改分销员提成金额
|
if (distributionOrder.getRebate() == 0) {
|
||||||
distributionService.subCanRebate(CurrencyUtil.sub(0, storeFlow.getDistributionRebate()), distributionOrder.getDistributionId());
|
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 分销列表
|
* @param distributionList 分销列表
|
||||||
* @return
|
* @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);
|
Distribution distribution = distributionList.parallelStream().filter(a -> StrUtil.equals(a.getId(), distributionId)).collect(Collectors.toList()).get(0);
|
||||||
|
|
||||||
|
@ -43,4 +43,7 @@ public class File extends BaseEntity {
|
|||||||
|
|
||||||
@ApiModelProperty(value = "用户类型")
|
@ApiModelProperty(value = "用户类型")
|
||||||
private String userEnums;
|
private String userEnums;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "文件夹ID")
|
||||||
|
private String fileDirectoryId;
|
||||||
}
|
}
|
@ -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;
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +1,16 @@
|
|||||||
package cn.lili.modules.file.entity.dto;
|
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 io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件查询所属者参数对象
|
* 文件查询所属者参数对象
|
||||||
*
|
*
|
||||||
@ -14,7 +20,7 @@ import lombok.NoArgsConstructor;
|
|||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class FileOwnerDTO {
|
public class FileOwnerDTO extends PageVO {
|
||||||
|
|
||||||
@ApiModelProperty(value = "拥有者id")
|
@ApiModelProperty(value = "拥有者id")
|
||||||
private String ownerId;
|
private String ownerId;
|
||||||
@ -22,4 +28,42 @@ public class FileOwnerDTO {
|
|||||||
@ApiModelProperty(value = "用户类型")
|
@ApiModelProperty(value = "用户类型")
|
||||||
private String userEnums;
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
}
|
@ -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> {
|
||||||
|
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -24,6 +24,12 @@ public interface FileService extends IService<File> {
|
|||||||
* @param ids
|
* @param ids
|
||||||
*/
|
*/
|
||||||
void batchDelete(List<String> 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 fileOwnerDTO 文件查询
|
||||||
* @param pageVo
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
IPage<File> customerPage(File file, SearchVO searchVO, PageVO pageVo);
|
IPage<File> customerPage(FileOwnerDTO fileOwnerDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 所属文件数据查询
|
* 所属文件数据查询
|
||||||
*
|
*
|
||||||
* @param file
|
* @param ownerDTO 文件查询
|
||||||
* @param searchVO
|
|
||||||
* @param pageVo
|
|
||||||
* @param ownerDTO
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
IPage<File> customerPageOwner(FileOwnerDTO ownerDTO, File file, SearchVO searchVO, PageVO pageVo);
|
IPage<File> customerPageOwner(FileOwnerDTO ownerDTO);
|
||||||
|
|
||||||
}
|
}
|
@ -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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -4,15 +4,14 @@ import cn.hutool.core.text.CharSequenceUtil;
|
|||||||
import cn.lili.common.enums.ResultCode;
|
import cn.lili.common.enums.ResultCode;
|
||||||
import cn.lili.common.exception.ServiceException;
|
import cn.lili.common.exception.ServiceException;
|
||||||
import cn.lili.common.security.AuthUser;
|
import cn.lili.common.security.AuthUser;
|
||||||
import cn.lili.mybatis.util.PageUtil;
|
|
||||||
import cn.lili.common.vo.PageVO;
|
import cn.lili.common.vo.PageVO;
|
||||||
import cn.lili.common.vo.SearchVO;
|
import cn.lili.common.vo.SearchVO;
|
||||||
import cn.lili.modules.file.entity.File;
|
import cn.lili.modules.file.entity.File;
|
||||||
import cn.lili.modules.file.entity.dto.FileOwnerDTO;
|
import cn.lili.modules.file.entity.dto.FileOwnerDTO;
|
||||||
import cn.lili.modules.file.mapper.FileMapper;
|
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.plugin.FilePluginFactory;
|
||||||
import cn.lili.modules.file.service.FileService;
|
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.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
@ -47,6 +46,18 @@ public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements Fi
|
|||||||
this.remove(queryWrapper);
|
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
|
@Override
|
||||||
public void batchDelete(List<String> ids, AuthUser authUser) {
|
public void batchDelete(List<String> ids, AuthUser authUser) {
|
||||||
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
@ -74,26 +85,28 @@ public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements Fi
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<File> customerPage(File file, SearchVO searchVO, PageVO pageVo) {
|
public IPage<File> customerPage(FileOwnerDTO fileOwnerDTO) {
|
||||||
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.like(CharSequenceUtil.isNotEmpty(file.getName()), File::getName, file.getName())
|
queryWrapper.like(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getName()), File::getName, fileOwnerDTO.getName())
|
||||||
.like(CharSequenceUtil.isNotEmpty(file.getFileKey()), File::getFileKey, file.getFileKey())
|
.eq(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getFileDirectoryId()),File::getFileDirectoryId, fileOwnerDTO.getFileDirectoryId())
|
||||||
.like(CharSequenceUtil.isNotEmpty(file.getFileType()), File::getFileType, file.getFileType())
|
.like(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getFileKey()), File::getFileKey, fileOwnerDTO.getFileKey())
|
||||||
.between(CharSequenceUtil.isNotEmpty(searchVO.getStartDate()) && CharSequenceUtil.isNotEmpty(searchVO.getEndDate()),
|
.like(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getFileType()), File::getFileType, fileOwnerDTO.getFileType())
|
||||||
File::getCreateTime, searchVO.getStartDate(), searchVO.getEndDate());
|
.between(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getStartDate()) && CharSequenceUtil.isNotEmpty(fileOwnerDTO.getEndDate()),
|
||||||
return this.page(PageUtil.initPage(pageVo), queryWrapper);
|
File::getCreateTime, fileOwnerDTO.getStartDate(), fileOwnerDTO.getEndDate());
|
||||||
|
return this.page(PageUtil.initPage(fileOwnerDTO), queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<File> customerPageOwner(FileOwnerDTO ownerDTO, File file, SearchVO searchVO, PageVO pageVo) {
|
public IPage<File> customerPageOwner(FileOwnerDTO fileOwnerDTO) {
|
||||||
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<File> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(CharSequenceUtil.isNotEmpty(ownerDTO.getOwnerId()), File::getOwnerId, ownerDTO.getOwnerId())
|
queryWrapper.eq(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getOwnerId()), File::getOwnerId, fileOwnerDTO.getOwnerId())
|
||||||
.eq(File::getUserEnums, ownerDTO.getUserEnums())
|
.eq(File::getUserEnums, fileOwnerDTO.getUserEnums())
|
||||||
.like(CharSequenceUtil.isNotEmpty(file.getName()), File::getName, file.getName())
|
.eq(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getFileDirectoryId()),File::getFileDirectoryId, fileOwnerDTO.getFileDirectoryId())
|
||||||
.like(CharSequenceUtil.isNotEmpty(file.getFileKey()), File::getFileKey, file.getFileKey())
|
.like(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getName()), File::getName, fileOwnerDTO.getName())
|
||||||
.like(CharSequenceUtil.isNotEmpty(file.getFileType()), File::getFileType, file.getFileType())
|
.like(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getFileKey()), File::getFileKey, fileOwnerDTO.getFileKey())
|
||||||
.between(CharSequenceUtil.isNotEmpty(searchVO.getStartDate()) && CharSequenceUtil.isNotEmpty(searchVO.getEndDate()),
|
.like(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getFileType()), File::getFileType, fileOwnerDTO.getFileType())
|
||||||
File::getCreateTime, searchVO.getStartDate(), searchVO.getEndDate());
|
.between(CharSequenceUtil.isNotEmpty(fileOwnerDTO.getStartDate()) && CharSequenceUtil.isNotEmpty(fileOwnerDTO.getEndDate()),
|
||||||
return this.page(PageUtil.initPage(pageVo), queryWrapper);
|
File::getCreateTime, fileOwnerDTO.getStartDate(), fileOwnerDTO.getEndDate());
|
||||||
|
return this.page(PageUtil.initPage(fileOwnerDTO), queryWrapper);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -23,9 +23,12 @@ public class StoreFlowQueryDTO {
|
|||||||
@ApiModelProperty(value = "售后编号")
|
@ApiModelProperty(value = "售后编号")
|
||||||
private String refundSn;
|
private String refundSn;
|
||||||
|
|
||||||
@ApiModelProperty(value = "售后编号")
|
@ApiModelProperty(value = "订单编号")
|
||||||
private String orderSn;
|
private String orderSn;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "订单货物编号")
|
||||||
|
private String orderItemSn;
|
||||||
|
|
||||||
@ApiModelProperty(value = "过滤只看分销订单")
|
@ApiModelProperty(value = "过滤只看分销订单")
|
||||||
private Boolean justDistribution;
|
private Boolean justDistribution;
|
||||||
|
|
||||||
|
@ -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;
|
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.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;
|
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;
|
this.cancel = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -32,8 +32,9 @@ public interface OrderService extends IService<Order> {
|
|||||||
*
|
*
|
||||||
* @param orderSn 订单编号
|
* @param orderSn 订单编号
|
||||||
* @param reason 错误原因
|
* @param reason 错误原因
|
||||||
|
* @param refundMoney 是否退款
|
||||||
*/
|
*/
|
||||||
void systemCancel(String orderSn, String reason);
|
void systemCancel(String orderSn, String reason,Boolean refundMoney);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据sn查询
|
* 根据sn查询
|
||||||
|
@ -171,7 +171,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
orders.add(order);
|
orders.add(order);
|
||||||
String message = "订单[" + item.getSn() + "]创建";
|
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(
|
item.getCheckedSkuList().forEach(
|
||||||
sku -> {
|
sku -> {
|
||||||
orderItems.add(new OrderItem(sku, item, tradeDTO));
|
orderItems.add(new OrderItem(sku, item, tradeDTO));
|
||||||
@ -260,7 +261,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(Order::getOrderPromotionType, PromotionTypeEnum.PINTUAN.name());
|
queryWrapper.eq(Order::getOrderPromotionType, PromotionTypeEnum.PINTUAN.name());
|
||||||
queryWrapper.eq(Order::getPromotionId, pintuanId);
|
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);
|
return this.list(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -299,7 +301,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
OrderStatusEnum.UNDELIVERED.name(),
|
OrderStatusEnum.UNDELIVERED.name(),
|
||||||
OrderStatusEnum.UNPAID.name(),
|
OrderStatusEnum.UNPAID.name(),
|
||||||
OrderStatusEnum.STAY_PICKED_UP.name(),
|
OrderStatusEnum.STAY_PICKED_UP.name(),
|
||||||
OrderStatusEnum.PAID.name())) {
|
OrderStatusEnum.PAID.name(),
|
||||||
|
OrderStatusEnum.TAKE.name())) {
|
||||||
|
|
||||||
order.setOrderStatus(OrderStatusEnum.CANCELLED.name());
|
order.setOrderStatus(OrderStatusEnum.CANCELLED.name());
|
||||||
order.setCancelReason(reason);
|
order.setCancelReason(reason);
|
||||||
@ -318,14 +321,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
@Override
|
@Override
|
||||||
@OrderLogPoint(description = "'订单['+#orderSn+']系统取消,原因为:'+#reason", orderSn = "#orderSn")
|
@OrderLogPoint(description = "'订单['+#orderSn+']系统取消,原因为:'+#reason", orderSn = "#orderSn")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@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 order = this.getBySn(orderSn);
|
||||||
order.setOrderStatus(OrderStatusEnum.CANCELLED.name());
|
order.setOrderStatus(OrderStatusEnum.CANCELLED.name());
|
||||||
order.setCancelReason(reason);
|
order.setCancelReason(reason);
|
||||||
this.updateById(order);
|
this.updateById(order);
|
||||||
//生成店铺退款流水
|
if(refundMoney){
|
||||||
this.generatorStoreRefundFlow(order);
|
//生成店铺退款流水
|
||||||
orderStatusMessage(order);
|
this.generatorStoreRefundFlow(order);
|
||||||
|
orderStatusMessage(order);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -409,7 +414,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
BeanUtil.copyProperties(memberAddressDTO, order);
|
BeanUtil.copyProperties(memberAddressDTO, order);
|
||||||
this.updateById(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);
|
orderLogService.save(orderLog);
|
||||||
|
|
||||||
return order;
|
return order;
|
||||||
@ -456,8 +462,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
public Order shunFengDelivery(String orderSn) {
|
public Order shunFengDelivery(String orderSn) {
|
||||||
OrderDetailVO orderDetailVO = this.queryDetail(orderSn);
|
OrderDetailVO orderDetailVO = this.queryDetail(orderSn);
|
||||||
String logisticsNo = logisticsService.sfCreateOrder(orderDetailVO);
|
String logisticsNo = logisticsService.sfCreateOrder(orderDetailVO);
|
||||||
Logistics logistics = logisticsService.getOne(new LambdaQueryWrapper<Logistics>().eq(Logistics::getCode,"SF"));
|
Logistics logistics = logisticsService.getOne(new LambdaQueryWrapper<Logistics>().eq(Logistics::getCode, "SF"));
|
||||||
return delivery(orderSn,logisticsNo,logistics.getId());
|
return delivery(orderSn, logisticsNo, logistics.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -474,7 +480,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
Order order = this.getBySn(orderSn);
|
Order order = this.getBySn(orderSn);
|
||||||
//获取店家信息
|
//获取店家信息
|
||||||
StoreDeliverGoodsAddressDTO storeDeliverGoodsAddressDTO = storeDetailService.getStoreDeliverGoodsAddressDto(order.getStoreId());
|
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);
|
String to = order.getConsigneeAddressPath().substring(0, order.getConsigneeAddressPath().indexOf(",") - 1);
|
||||||
//获取踪迹信息
|
//获取踪迹信息
|
||||||
return logisticsService.getLogisticMapTrack(order.getLogisticsCode(), order.getLogisticsNo(), order.getConsigneeMobile(), from, to);
|
return logisticsService.getLogisticMapTrack(order.getLogisticsCode(), order.getLogisticsNo(), order.getConsigneeMobile(), from, to);
|
||||||
@ -582,7 +589,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void sendUpdateStatusMessage(OrderMessage orderMessage) {
|
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
|
@Override
|
||||||
@ -766,11 +774,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
//如果未开启虚拟成团且已参团人数小于成团人数,则自动取消订单
|
//如果未开启虚拟成团且已参团人数小于成团人数,则自动取消订单
|
||||||
String reason = "拼团活动结束订单未付款,系统自动取消订单";
|
String reason = "拼团活动结束订单未付款,系统自动取消订单";
|
||||||
if (CharSequenceUtil.isNotEmpty(entry.getKey())) {
|
if (CharSequenceUtil.isNotEmpty(entry.getKey())) {
|
||||||
this.systemCancel(entry.getKey(), reason);
|
this.systemCancel(entry.getKey(), reason,true);
|
||||||
} else {
|
} else {
|
||||||
for (Order order : entry.getValue()) {
|
for (Order order : entry.getValue()) {
|
||||||
if (!CharSequenceUtil.equalsAny(order.getOrderStatus(), OrderStatusEnum.COMPLETED.name(), OrderStatusEnum.DELIVERED.name(), OrderStatusEnum.TAKE.name(), OrderStatusEnum.STAY_PICKED_UP.name())) {
|
if (!CharSequenceUtil.equalsAny(order.getOrderStatus(), OrderStatusEnum.COMPLETED.name(), OrderStatusEnum.DELIVERED.name(),
|
||||||
this.systemCancel(order.getSn(), reason);
|
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()) {
|
if (unpaidOrders != null && !unpaidOrders.isEmpty()) {
|
||||||
for (Order unpaidOrder : unpaidOrders) {
|
for (Order unpaidOrder : unpaidOrders) {
|
||||||
this.systemCancel(unpaidOrder.getSn(), "拼团活动结束订单未付款,系统自动取消订单");
|
this.systemCancel(unpaidOrder.getSn(), "拼团活动结束订单未付款,系统自动取消订单",false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
List<Order> paidOrders = listMap.get(PayStatusEnum.PAID.name());
|
List<Order> paidOrders = listMap.get(PayStatusEnum.PAID.name());
|
||||||
@ -816,7 +825,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|||||||
paidOrders.add(order);
|
paidOrders.add(order);
|
||||||
}
|
}
|
||||||
for (Order paidOrder : paidOrders) {
|
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())) {
|
if (OrderTypeEnum.NORMAL.name().equals(paidOrder.getOrderType())) {
|
||||||
paidOrder.setOrderStatus(OrderStatusEnum.UNDELIVERED.name());
|
paidOrder.setOrderStatus(OrderStatusEnum.UNDELIVERED.name());
|
||||||
} else if (OrderTypeEnum.VIRTUAL.name().equals(paidOrder.getOrderType())) {
|
} 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) {
|
private void pintuanOrderFailed(List<Order> list) {
|
||||||
for (Order order : list) {
|
for (Order order : list) {
|
||||||
try {
|
try {
|
||||||
this.systemCancel(order.getSn(), "拼团人数不足,拼团失败!");
|
this.systemCancel(order.getSn(), "拼团人数不足,拼团失败!",true);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("拼团订单取消失败", e);
|
log.error("拼团订单取消失败", e);
|
||||||
}
|
}
|
||||||
|
@ -198,10 +198,13 @@ public class StoreFlowServiceImpl extends ServiceImpl<StoreFlowMapper, StoreFlow
|
|||||||
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getRefundSn()),
|
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getRefundSn()),
|
||||||
StoreFlow::getRefundSn, storeFlowQueryDTO.getRefundSn());
|
StoreFlow::getRefundSn, storeFlowQueryDTO.getRefundSn());
|
||||||
|
|
||||||
//售后编号判定
|
//订单编号判定
|
||||||
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getOrderSn()),
|
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getOrderSn()),
|
||||||
StoreFlow::getOrderSn, storeFlowQueryDTO.getOrderSn());
|
StoreFlow::getOrderSn, storeFlowQueryDTO.getOrderSn());
|
||||||
|
|
||||||
|
//订单货物编号
|
||||||
|
lambdaQueryWrapper.eq(CharSequenceUtil.isNotEmpty(storeFlowQueryDTO.getOrderItemSn()),
|
||||||
|
StoreFlow::getOrderItemSn, storeFlowQueryDTO.getOrderItemSn());
|
||||||
//结算单非空,则校对结算单参数
|
//结算单非空,则校对结算单参数
|
||||||
if (storeFlowQueryDTO.getBill() != null) {
|
if (storeFlowQueryDTO.getBill() != null) {
|
||||||
Bill bill = storeFlowQueryDTO.getBill();
|
Bill bill = storeFlowQueryDTO.getBill();
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
package cn.lili.controller.file;
|
package cn.lili.controller.file;
|
||||||
|
|
||||||
import cn.lili.common.enums.ResultUtil;
|
import cn.lili.common.enums.ResultUtil;
|
||||||
import cn.lili.common.vo.PageVO;
|
|
||||||
import cn.lili.common.vo.ResultMessage;
|
import cn.lili.common.vo.ResultMessage;
|
||||||
import cn.lili.common.vo.SearchVO;
|
|
||||||
import cn.lili.modules.file.entity.File;
|
import cn.lili.modules.file.entity.File;
|
||||||
|
import cn.lili.modules.file.entity.dto.FileOwnerDTO;
|
||||||
import cn.lili.modules.file.service.FileService;
|
import cn.lili.modules.file.service.FileService;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@ -34,9 +33,9 @@ public class FileManagerController {
|
|||||||
@ApiOperation(value = "管理端管理所有图片")
|
@ApiOperation(value = "管理端管理所有图片")
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@ApiImplicitParam(name = "title", value = "名称模糊匹配")
|
@ApiImplicitParam(name = "title", value = "名称模糊匹配")
|
||||||
public ResultMessage<IPage<File>> adminFiles(File file, SearchVO searchVO, PageVO pageVo) {
|
public ResultMessage<IPage<File>> adminFiles(FileOwnerDTO fileOwnerDTO) {
|
||||||
|
|
||||||
return ResultUtil.data(fileService.customerPage(file, searchVO, pageVo));
|
return ResultUtil.data(fileService.customerPage(fileOwnerDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,78 @@
|
|||||||
|
package cn.lili.controller.permission;
|
||||||
|
|
||||||
|
import cn.lili.common.aop.annotation.DemoSite;
|
||||||
|
import cn.lili.common.enums.ResultUtil;
|
||||||
|
import cn.lili.common.vo.ResultMessage;
|
||||||
|
import cn.lili.modules.member.entity.dos.StoreMenu;
|
||||||
|
import cn.lili.modules.member.entity.vo.StoreMenuVO;
|
||||||
|
import cn.lili.modules.member.service.StoreMenuService;
|
||||||
|
import cn.lili.modules.permission.entity.dos.Menu;
|
||||||
|
import cn.lili.modules.permission.entity.dto.MenuSearchParams;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 管理端,菜单管理接口
|
||||||
|
*
|
||||||
|
* @author Chopper
|
||||||
|
* @since 2020/11/20 12:07
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@RestController
|
||||||
|
@Api(tags = "管理端,菜单管理接口")
|
||||||
|
@RequestMapping("/manager/permission/storeMenu")
|
||||||
|
public class StoreMenuManagerController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private StoreMenuService storeMenuService;
|
||||||
|
|
||||||
|
@ApiOperation(value = "搜索菜单")
|
||||||
|
@GetMapping
|
||||||
|
public ResultMessage<List<StoreMenu>> searchPermissionList(MenuSearchParams searchParams) {
|
||||||
|
return ResultUtil.data(storeMenuService.searchList(searchParams));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "添加")
|
||||||
|
@PostMapping
|
||||||
|
@DemoSite
|
||||||
|
public ResultMessage<StoreMenu> add(StoreMenu menu) {
|
||||||
|
try {
|
||||||
|
storeMenuService.saveOrUpdateMenu(menu);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("添加菜单错误", e);
|
||||||
|
}
|
||||||
|
return ResultUtil.data(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiImplicitParam(name = "id", value = "菜单ID", required = true, paramType = "path", dataType = "String")
|
||||||
|
@ApiOperation(value = "编辑")
|
||||||
|
@PutMapping(value = "/{id}")
|
||||||
|
@DemoSite
|
||||||
|
public ResultMessage<StoreMenu> edit(@PathVariable String id, StoreMenu menu) {
|
||||||
|
menu.setId(id);
|
||||||
|
storeMenuService.saveOrUpdateMenu(menu);
|
||||||
|
return ResultUtil.data(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "批量删除")
|
||||||
|
@DeleteMapping(value = "/{ids}")
|
||||||
|
@DemoSite
|
||||||
|
public ResultMessage<Menu> delByIds(@PathVariable List<String> ids) {
|
||||||
|
storeMenuService.deleteIds(ids);
|
||||||
|
return ResultUtil.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "获取所有菜单")
|
||||||
|
@GetMapping("/tree")
|
||||||
|
public ResultMessage<List<StoreMenuVO>> getAllMenuList() {
|
||||||
|
return ResultUtil.data(storeMenuService.tree());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user