parent
fa36cd135f
commit
7ca93edc5a
|
|
@ -12,6 +12,7 @@ import com.czg.order.vo.OrderInfoVo;
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
import com.czg.service.order.service.PayService;
|
import com.czg.service.order.service.PayService;
|
||||||
|
import com.czg.utils.AssertUtil;
|
||||||
import com.czg.utils.ServletUtil;
|
import com.czg.utils.ServletUtil;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
|
@ -100,4 +101,17 @@ public class AdminOrderController {
|
||||||
public CzgResult<Boolean> printOrder(@Validated @RequestBody OrderInfoPrintDTO orderInfoPrintDTO) {
|
public CzgResult<Boolean> printOrder(@Validated @RequestBody OrderInfoPrintDTO orderInfoPrintDTO) {
|
||||||
return CzgResult.success(orderInfoService.printOrder(StpKit.USER.getShopId(), orderInfoPrintDTO));
|
return CzgResult.success(orderInfoService.printOrder(StpKit.USER.getShopId(), orderInfoPrintDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/cancelOrder")
|
||||||
|
public CzgResult<Void> cancelOrder(@Validated @RequestBody OrderCannelDTO param) {
|
||||||
|
orderInfoService.cancelledOrder(param.getShopId(), param.getOrderId());
|
||||||
|
return CzgResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/rmPlaceOrder")
|
||||||
|
public CzgResult<Void> cancelledPlaceOrder(@Validated @RequestBody OrderCannelDTO param) {
|
||||||
|
AssertUtil.isNull(param.getPlaceNum(), "{}不能为空", "取消单次");
|
||||||
|
orderInfoService.cancelledPlaceOrder(param.getShopId(), param.getOrderId(), param.getPlaceNum());
|
||||||
|
return CzgResult.success();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
package com.czg.controller.user;
|
package com.czg.controller.user;
|
||||||
|
|
||||||
import com.czg.annotation.Debounce;
|
import com.czg.annotation.Debounce;
|
||||||
|
import com.czg.exception.CzgException;
|
||||||
|
import com.czg.order.dto.OrderCannelDTO;
|
||||||
import com.czg.order.dto.OrderInfoAddDTO;
|
import com.czg.order.dto.OrderInfoAddDTO;
|
||||||
import com.czg.order.dto.OrderInfoQueryDTO;
|
import com.czg.order.dto.OrderInfoQueryDTO;
|
||||||
import com.czg.order.entity.OrderInfo;
|
import com.czg.order.entity.OrderInfo;
|
||||||
|
|
@ -9,11 +11,13 @@ import com.czg.order.vo.HistoryOrderVo;
|
||||||
import com.czg.order.vo.OrderInfoVo;
|
import com.czg.order.vo.OrderInfoVo;
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
|
import com.czg.service.order.enums.OrderStatusEnums;
|
||||||
import com.czg.utils.AssertUtil;
|
import com.czg.utils.AssertUtil;
|
||||||
import com.czg.utils.ServletUtil;
|
import com.czg.utils.ServletUtil;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -70,10 +74,30 @@ public class UserOrderController {
|
||||||
public CzgResult<Void> upOrderIsDel(@PathVariable("id") Long id) {
|
public CzgResult<Void> upOrderIsDel(@PathVariable("id") Long id) {
|
||||||
//效验数据
|
//效验数据
|
||||||
AssertUtil.isNull(id, "{}不能为空", "订单Id");
|
AssertUtil.isNull(id, "{}不能为空", "订单Id");
|
||||||
|
OrderInfo orderInfo = orderInfoService.getById(id);
|
||||||
|
AssertUtil.isNull(orderInfo, "删除失败订单不存在");
|
||||||
|
if (orderInfo.getStatus().equals(OrderStatusEnums.UNPAID.getCode())) {
|
||||||
|
throw new CzgException("待支付订单不可删除");
|
||||||
|
}
|
||||||
orderInfoService.updateChain()
|
orderInfoService.updateChain()
|
||||||
.set(OrderInfo::getIsDel, 1)
|
.set(OrderInfo::getIsDel, 1)
|
||||||
.eq(OrderInfo::getId, id)
|
.eq(OrderInfo::getId, id)
|
||||||
.update();
|
.update();
|
||||||
return CzgResult.success();
|
return CzgResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/cancelOrder")
|
||||||
|
@Debounce(value = "#param.orderId")
|
||||||
|
public CzgResult<Void> cancelOrder(@Validated @RequestBody OrderCannelDTO param) {
|
||||||
|
orderInfoService.cancelledOrder(param.getShopId(), param.getOrderId());
|
||||||
|
return CzgResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/rmPlaceOrder")
|
||||||
|
@Debounce(value = "#param.orderId")
|
||||||
|
public CzgResult<Void> cancelledPlaceOrder(@Validated @RequestBody OrderCannelDTO param) {
|
||||||
|
AssertUtil.isNull(param.getPlaceNum(), "{}不能为空", "取消单次");
|
||||||
|
orderInfoService.cancelledPlaceOrder(param.getShopId(), param.getOrderId(), param.getPlaceNum());
|
||||||
|
return CzgResult.success();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.czg.order.dto;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ww
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class OrderCannelDTO {
|
||||||
|
@NotNull(message = "店铺ID不可为空")
|
||||||
|
private Long shopId;
|
||||||
|
@NotNull(message = "订单ID不可为空")
|
||||||
|
private Long orderId;
|
||||||
|
private Integer placeNum;
|
||||||
|
}
|
||||||
|
|
@ -60,4 +60,8 @@ public interface OrderInfoService extends IService<OrderInfo> {
|
||||||
|
|
||||||
|
|
||||||
Boolean removeOrderDetail(Long shopId, Long orderId, Long detailId);
|
Boolean removeOrderDetail(Long shopId, Long orderId, Long detailId);
|
||||||
|
|
||||||
|
Boolean cancelledOrder(Long shopId, Long orderId);
|
||||||
|
|
||||||
|
Boolean cancelledPlaceOrder(Long shopId, Long orderId, Integer placeNum);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,4 +15,5 @@ import java.util.Map;
|
||||||
@Data
|
@Data
|
||||||
public class HistoryOrderPrintVo extends OrderInfo {
|
public class HistoryOrderPrintVo extends OrderInfo {
|
||||||
private Map<String, List<OrderDetailPrintVo>> detailMap;
|
private Map<String, List<OrderDetailPrintVo>> detailMap;
|
||||||
|
private long orderNum;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import com.czg.account.entity.ShopInfo;
|
||||||
import com.czg.account.service.ShopInfoService;
|
import com.czg.account.service.ShopInfoService;
|
||||||
import com.czg.order.entity.OrderDetail;
|
import com.czg.order.entity.OrderDetail;
|
||||||
import com.czg.order.entity.OrderInfo;
|
import com.czg.order.entity.OrderInfo;
|
||||||
|
import com.czg.service.order.enums.OrderStatusEnums;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
|
|
@ -110,6 +111,9 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl {
|
||||||
@Override
|
@Override
|
||||||
protected void normalOrderPrint(OrderInfo orderInfo, boolean isPre, PrintMachine machine, String balance, List<OrderDetail> detailList) {
|
protected void normalOrderPrint(OrderInfo orderInfo, boolean isPre, PrintMachine machine, String balance, List<OrderDetail> detailList) {
|
||||||
ShopInfo shopInfo = shopInfoService.getById(orderInfo.getShopId());
|
ShopInfo shopInfo = shopInfoService.getById(orderInfo.getShopId());
|
||||||
|
long count = orderInfoService.queryChain()
|
||||||
|
.eq(OrderInfo::getTradeDay, orderInfo.getTradeDay())
|
||||||
|
.eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode()).count();
|
||||||
String printerNum = "1";
|
String printerNum = "1";
|
||||||
if (StrUtil.isNotBlank(machine.getPrintQty())) {
|
if (StrUtil.isNotBlank(machine.getPrintQty())) {
|
||||||
printerNum = machine.getPrintQty().split("\\^")[1];
|
printerNum = machine.getPrintQty().split("\\^")[1];
|
||||||
|
|
@ -122,6 +126,8 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl {
|
||||||
.setBalance(balance).setPayType((ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType())).setIntegral("0")
|
.setBalance(balance).setPayType((ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType())).setIntegral("0")
|
||||||
.setOutNumber(orderInfo.getTakeCode()).setPrintTitle(isPre ? "预结算单" : "结算单")
|
.setOutNumber(orderInfo.getTakeCode()).setPrintTitle(isPre ? "预结算单" : "结算单")
|
||||||
.setRemark(orderInfo.getRemark()).setDiscountAmount(orderInfo.getOriginAmount().subtract(orderInfo.getPayAmount()).toPlainString());
|
.setRemark(orderInfo.getRemark()).setDiscountAmount(orderInfo.getOriginAmount().subtract(orderInfo.getPayAmount()).toPlainString());
|
||||||
|
printInfoDTO.setPrintTitle(printInfoDTO.getPrintTitle() + " #" + count);
|
||||||
|
|
||||||
String string = buildOrderPrintData(printInfoDTO, detailList);
|
String string = buildOrderPrintData(printInfoDTO, detailList);
|
||||||
Object resp = sendPrintRequest(machine.getAddress(), string, null, printerNum);
|
Object resp = sendPrintRequest(machine.getAddress(), string, null, printerNum);
|
||||||
printMachineLogService.save(machine, "结算单", string, resp);
|
printMachineLogService.save(machine, "结算单", string, resp);
|
||||||
|
|
|
||||||
|
|
@ -125,6 +125,7 @@ public abstract class PrinterHandler {
|
||||||
private String outNumber;
|
private String outNumber;
|
||||||
private String discountAmount;
|
private String discountAmount;
|
||||||
private String discountRadio;
|
private String discountRadio;
|
||||||
|
private String orderNum;
|
||||||
// 是否退款单
|
// 是否退款单
|
||||||
private boolean isReturn;
|
private boolean isReturn;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import com.czg.account.entity.ShopInfo;
|
||||||
import com.czg.account.service.ShopInfoService;
|
import com.czg.account.service.ShopInfoService;
|
||||||
import com.czg.order.entity.OrderDetail;
|
import com.czg.order.entity.OrderDetail;
|
||||||
import com.czg.order.entity.OrderInfo;
|
import com.czg.order.entity.OrderInfo;
|
||||||
|
import com.czg.service.order.enums.OrderStatusEnums;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpEntity;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
|
|
@ -156,13 +157,16 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl {
|
||||||
@Override
|
@Override
|
||||||
protected void normalOrderPrint(OrderInfo orderInfo, boolean isPre, PrintMachine machine, String balance, List<OrderDetail> detailList) {
|
protected void normalOrderPrint(OrderInfo orderInfo, boolean isPre, PrintMachine machine, String balance, List<OrderDetail> detailList) {
|
||||||
ShopInfo shopInfo = shopInfoService.getById(orderInfo.getShopId());
|
ShopInfo shopInfo = shopInfoService.getById(orderInfo.getShopId());
|
||||||
|
long count = orderInfoService.queryChain()
|
||||||
|
.eq(OrderInfo::getTradeDay, orderInfo.getTradeDay())
|
||||||
|
.eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode()).count();
|
||||||
PrintInfoDTO printInfoDTO = new PrintInfoDTO().setShopName(shopInfo.getShopName()).setPrintType("普通打印").setPickupNum(getPickupNum(orderInfo))
|
PrintInfoDTO printInfoDTO = new PrintInfoDTO().setShopName(shopInfo.getShopName()).setPrintType("普通打印").setPickupNum(getPickupNum(orderInfo))
|
||||||
.setOrderNo(orderInfo.getOrderNo()).setTradeDate(DateUtil.format(orderInfo.getCreateTime(), "yyyy-MM-dd HH:mm:ss")).setOperator("【POS-1】001").setPayAmount(orderInfo.getPayAmount().toPlainString())
|
.setOrderNo(orderInfo.getOrderNo()).setTradeDate(DateUtil.format(orderInfo.getCreateTime(), "yyyy-MM-dd HH:mm:ss")).setOperator("【POS-1】001").setPayAmount(orderInfo.getPayAmount().toPlainString())
|
||||||
.setOriginalAmount(orderInfo.getOriginAmount().toPlainString()).setReturn(isReturn(orderInfo))
|
.setOriginalAmount(orderInfo.getOriginAmount().toPlainString()).setReturn(isReturn(orderInfo))
|
||||||
.setBalance(balance).setPayType((ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType())).setIntegral("0")
|
.setBalance(balance).setPayType((ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType())).setIntegral("0")
|
||||||
.setOutNumber(orderInfo.getTakeCode()).setPrintTitle(isPre ? "预结算单" : "结算单")
|
.setOutNumber(orderInfo.getTakeCode()).setPrintTitle(isPre ? "预结算单" : "结算单")
|
||||||
.setRemark(orderInfo.getRemark()).setDiscountAmount(orderInfo.getOriginAmount().subtract(orderInfo.getPayAmount()).toPlainString());
|
.setRemark(orderInfo.getRemark()).setDiscountAmount(orderInfo.getOriginAmount().subtract(orderInfo.getPayAmount()).toPlainString());
|
||||||
|
printInfoDTO.setPrintTitle(printInfoDTO.getPrintTitle()+" #"+count);
|
||||||
String data = buildOrderPrintData(printInfoDTO, detailList);
|
String data = buildOrderPrintData(printInfoDTO, detailList);
|
||||||
String voiceJson = "{\"PbizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}";
|
String voiceJson = "{\"PbizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}";
|
||||||
// String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}";
|
// String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}";
|
||||||
|
|
@ -178,7 +182,7 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void callNumPrint(PrintMachine machine, String callNum, String shopName, String tableName, String tableNote, String preNum, String codeUrl, LocalDateTime takeTime, String shopNote) {
|
protected void callNumPrint(PrintMachine machine, String callNum, String shopName, String tableName, String tableNote, String preNum, String codeUrl, LocalDateTime takeTime, String shopNote) {
|
||||||
String resp = buildCallTicketData(shopName, tableName, callNum, preNum, codeUrl,shopNote, takeTime);
|
String resp = buildCallTicketData(shopName, tableName, callNum, preNum, codeUrl, shopNote, takeTime);
|
||||||
sendPrintRequest(machine.getAddress(), resp, null, "1");
|
sendPrintRequest(machine.getAddress(), resp, null, "1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
.eq(OrderInfo::getUserId, param.getUserId())
|
.eq(OrderInfo::getUserId, param.getUserId())
|
||||||
.eq(OrderInfo::getTableCode, CzgStrUtils.getStrOrNull(param.getTableCode()))
|
.eq(OrderInfo::getTableCode, CzgStrUtils.getStrOrNull(param.getTableCode()))
|
||||||
.eq(OrderInfo::getOrderNo, CzgStrUtils.getStrOrNull(param.getOrderNo()))
|
.eq(OrderInfo::getOrderNo, CzgStrUtils.getStrOrNull(param.getOrderNo()))
|
||||||
|
.eq(OrderInfo::getIsDel, param.getIsDel())
|
||||||
.gt(OrderInfo::getCreateTime, CzgStrUtils.getStrOrNull(param.getStartTime()))
|
.gt(OrderInfo::getCreateTime, CzgStrUtils.getStrOrNull(param.getStartTime()))
|
||||||
.le(OrderInfo::getCreateTime, CzgStrUtils.getStrOrNull(param.getEndTime()))
|
.le(OrderInfo::getCreateTime, CzgStrUtils.getStrOrNull(param.getEndTime()))
|
||||||
.in(OrderInfo::getId, like)
|
.in(OrderInfo::getId, like)
|
||||||
|
|
@ -145,6 +146,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
public CzgResult<HistoryOrderPrintVo> getOrderByIdPrint(Long orderId) {
|
public CzgResult<HistoryOrderPrintVo> getOrderByIdPrint(Long orderId) {
|
||||||
HistoryOrderPrintVo historyOrderVo = getOneAs(new QueryWrapper()
|
HistoryOrderPrintVo historyOrderVo = getOneAs(new QueryWrapper()
|
||||||
.eq(OrderInfo::getId, orderId), HistoryOrderPrintVo.class);
|
.eq(OrderInfo::getId, orderId), HistoryOrderPrintVo.class);
|
||||||
|
AssertUtil.isNull(historyOrderVo, "订单不存在");
|
||||||
List<OrderDetailPrintVo> orderDetails = orderDetailService.getOrderDetailPrint(orderId);
|
List<OrderDetailPrintVo> orderDetails = orderDetailService.getOrderDetailPrint(orderId);
|
||||||
Map<String, List<OrderDetailPrintVo>> resultMap = new HashMap<>();
|
Map<String, List<OrderDetailPrintVo>> resultMap = new HashMap<>();
|
||||||
// 遍历订单详情列表
|
// 遍历订单详情列表
|
||||||
|
|
@ -159,6 +161,10 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
resultMap.computeIfAbsent(placeNum.toString(), k -> new ArrayList<>()).add(orderDetail);
|
resultMap.computeIfAbsent(placeNum.toString(), k -> new ArrayList<>()).add(orderDetail);
|
||||||
}
|
}
|
||||||
historyOrderVo.setDetailMap(resultMap);
|
historyOrderVo.setDetailMap(resultMap);
|
||||||
|
long count = queryChain()
|
||||||
|
.eq(OrderInfo::getTradeDay, historyOrderVo.getTradeDay())
|
||||||
|
.eq(OrderInfo::getStatus,OrderStatusEnums.DONE.getCode()).count();
|
||||||
|
historyOrderVo.setOrderNum(count);
|
||||||
return CzgResult.success(historyOrderVo);
|
return CzgResult.success(historyOrderVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -840,7 +846,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
orderInfo.setOriginAmount(param.getOriginAmount());
|
orderInfo.setOriginAmount(param.getOriginAmount());
|
||||||
if (param.getOrderAmount() != null && param.getOrderAmount().compareTo(BigDecimal.ZERO) >= 0) {
|
if (param.getOrderAmount() != null && param.getOrderAmount().compareTo(BigDecimal.ZERO) >= 0) {
|
||||||
orderInfo.setOrderAmount(param.getOrderAmount());
|
orderInfo.setOrderAmount(param.getOrderAmount());
|
||||||
}else {
|
} else {
|
||||||
orderInfo.setOrderAmount(BigDecimal.ZERO);
|
orderInfo.setOrderAmount(BigDecimal.ZERO);
|
||||||
}
|
}
|
||||||
orderInfo.setPackFee(orderInfo.getPackFee().add(param.getPackFee()));
|
orderInfo.setPackFee(orderInfo.getPackFee().add(param.getPackFee()));
|
||||||
|
|
@ -985,4 +991,85 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
}
|
}
|
||||||
throw new ApiNotPrintException("操作失败");
|
throw new ApiNotPrintException("操作失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public Boolean cancelledOrder(Long shopId, Long orderId) {
|
||||||
|
OrderInfo orderInfo = getById(orderId);
|
||||||
|
if (orderInfo == null) {
|
||||||
|
throw new ApiNotPrintException("订单不存在");
|
||||||
|
}
|
||||||
|
if (!OrderStatusEnums.UNPAID.getCode().equals(orderInfo.getStatus())) {
|
||||||
|
throw new ApiNotPrintException("订单不可取消");
|
||||||
|
}
|
||||||
|
updateChain()
|
||||||
|
.set(OrderInfo::getStatus, OrderStatusEnums.CANCELLED.getCode())
|
||||||
|
.eq(OrderInfo::getShopId, shopId)
|
||||||
|
.eq(OrderInfo::getId, orderId)
|
||||||
|
.update();
|
||||||
|
redisService.del(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId());
|
||||||
|
throw new ApiNotPrintException("操作失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public Boolean cancelledPlaceOrder(Long shopId, Long orderId, Integer placeNum) {
|
||||||
|
OrderInfo orderInfo = getById(orderId);
|
||||||
|
if (orderInfo == null) {
|
||||||
|
throw new ApiNotPrintException("订单不存在");
|
||||||
|
}
|
||||||
|
if (!OrderStatusEnums.UNPAID.getCode().equals(orderInfo.getStatus())) {
|
||||||
|
throw new ApiNotPrintException("订单不可取消");
|
||||||
|
}
|
||||||
|
if (orderInfo.getPlaceNum().equals(1)) {
|
||||||
|
updateChain()
|
||||||
|
.set(OrderInfo::getStatus, OrderStatusEnums.CANCELLED.getCode())
|
||||||
|
.eq(OrderInfo::getShopId, shopId)
|
||||||
|
.eq(OrderInfo::getId, orderId);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
orderDetailService.remove(new QueryWrapper().eq(OrderDetail::getOrderId, orderId).eq(OrderDetail::getPlaceNum, placeNum));
|
||||||
|
List<OrderDetail> list = orderDetailService.queryChain().eq(OrderDetail::getOrderId, orderId).eq(OrderDetail::getShopId, shopId).list();
|
||||||
|
if (CollUtil.isEmpty(list)) {
|
||||||
|
updateChain()
|
||||||
|
.set(OrderInfo::getStatus, OrderStatusEnums.CANCELLED.getCode())
|
||||||
|
.set(OrderInfo::getOriginAmount, BigDecimal.ZERO)
|
||||||
|
.eq(OrderInfo::getShopId, shopId)
|
||||||
|
.eq(OrderInfo::getId, orderId);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
BigDecimal totalAmount = BigDecimal.ZERO;
|
||||||
|
for (OrderDetail orderDetail : list) {
|
||||||
|
BigDecimal subtract = orderDetail.getNum().subtract(orderDetail.getReturnNum());
|
||||||
|
if (subtract.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
BigDecimal unitPrice;
|
||||||
|
if (orderDetail.getDiscountSaleAmount().compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
unitPrice = orderDetail.getDiscountSaleAmount();
|
||||||
|
} else {
|
||||||
|
unitPrice = orderDetail.getPrice();
|
||||||
|
}
|
||||||
|
totalAmount = totalAmount.add((orderDetail.getNum().subtract(orderDetail.getReturnNum())))
|
||||||
|
.multiply(unitPrice);
|
||||||
|
}
|
||||||
|
if (subtract.compareTo(BigDecimal.ZERO) > 0
|
||||||
|
&& orderDetail.getPackAmount().compareTo(BigDecimal.ZERO) > 0
|
||||||
|
&& orderDetail.getPackNumber().compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
totalAmount = totalAmount.add(orderDetail.getPackAmount().multiply(orderDetail.getPackNumber()));
|
||||||
|
}
|
||||||
|
if (orderDetail.getPlaceNum() > placeNum) {
|
||||||
|
orderDetailService.updateChain()
|
||||||
|
.eq(OrderDetail::getId, orderDetail.getId())
|
||||||
|
.set(OrderDetail::getPlaceNum, orderDetail.getPlaceNum() - 1)
|
||||||
|
.update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateChain().eq(OrderInfo::getId, orderId)
|
||||||
|
.eq(OrderInfo::getShopId, shopId)
|
||||||
|
.set(OrderInfo::getOriginAmount, totalAmount)
|
||||||
|
.set(OrderInfo::getPlaceNum, orderInfo.getPlaceNum() - 1)
|
||||||
|
.update();
|
||||||
|
}
|
||||||
|
throw new ApiNotPrintException("操作失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue