feat: 1.点餐num更改为decimal类型 2.用餐人数根据tableId设置useType

This commit is contained in:
张松
2024-11-19 11:37:02 +08:00
parent 96ab14e124
commit 6bc2945614
19 changed files with 257 additions and 147 deletions

View File

@@ -2,10 +2,8 @@ package cn.ysk.cashier.dto.shoptable;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Min; import javax.validation.constraints.*;
import javax.validation.constraints.NotBlank; import java.math.BigDecimal;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@Data @Data
public class AddCartDTO { public class AddCartDTO {
@@ -19,8 +17,8 @@ public class AddCartDTO {
private Integer shopId; private Integer shopId;
private String tableId; private String tableId;
@NotNull @NotNull
@Min(1) @DecimalMin("0.01")
private Integer num; private BigDecimal num;
private boolean isPack; private boolean isPack;
private boolean isGift; private boolean isGift;
private Integer cartId; private Integer cartId;

View File

@@ -2,10 +2,8 @@ package cn.ysk.cashier.dto.shoptable;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Min; import javax.validation.constraints.*;
import javax.validation.constraints.NotBlank; import java.math.BigDecimal;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@Data @Data
public class AddTemporaryDishesDTO { public class AddTemporaryDishesDTO {
@@ -14,11 +12,17 @@ public class AddTemporaryDishesDTO {
@NotNull @NotNull
private Integer shopId; private Integer shopId;
private String tableId; private String tableId;
@NotBlank(message = "菜品名不为空")
private String name;
@NotNull(message = "分类不为空")
private Integer categoryId;
@Min(value = 0, message = "价格最低为0")
private BigDecimal price;
@NotNull @NotNull
@Min(1) @DecimalMin(value = "0.01")
private Integer num; private BigDecimal num;
private boolean isPack; @NotBlank(message = "单位不为空")
private boolean isGift; private String unit;
private String note; private String note;
// 用餐类型 // 用餐类型
@NotBlank @NotBlank

View File

@@ -2,8 +2,10 @@ package cn.ysk.cashier.dto.shoptable;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Min; import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Data @Data
public class ReturnCartDTO { public class ReturnCartDTO {
@@ -13,7 +15,7 @@ public class ReturnCartDTO {
private Integer shopId; private Integer shopId;
private Long tableId; private Long tableId;
@NotNull @NotNull
@Min(value = 1, message = "最小数量为1") @DecimalMin(value = "0.01", message = "最小数量为0.01")
private Integer num; private BigDecimal num;
private String note; private String note;
} }

View File

@@ -6,6 +6,7 @@ import javax.validation.Valid;
import javax.validation.constraints.Min; import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
@Data @Data
@@ -17,7 +18,7 @@ public class ReturnOrderDTO {
private Integer id; private Integer id;
@NotNull @NotNull
@Min(1) @Min(1)
private Integer num; private BigDecimal num;
} }
@NotNull @NotNull
private Integer orderId; private Integer orderId;

View File

@@ -2,9 +2,11 @@ package cn.ysk.cashier.dto.shoptable;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Min; import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Data @Data
public class UpdateCartDTO { public class UpdateCartDTO {
@@ -17,8 +19,8 @@ public class UpdateCartDTO {
@NotNull @NotNull
private Integer shopId; private Integer shopId;
@NotNull @NotNull
@Min(0) @DecimalMin("0")
private Integer num; private BigDecimal num;
private String note; private String note;
private Boolean isPack; private Boolean isPack;
private Boolean isGift; private Boolean isGift;

View File

@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
public interface TbCashierCartMapper extends BaseMapper<TbCashierCart> { public interface TbCashierCartMapper extends BaseMapper<TbCashierCart> {
@@ -47,7 +48,7 @@ public interface TbCashierCartMapper extends BaseMapper<TbCashierCart> {
*/ */
@Update("update tb_cashier_cart set status=#{status}, total_amount=(number+#{changeNum})*sale_price,number=number+#{changeNum},total_number=total_number+#{changeNum} " + @Update("update tb_cashier_cart set status=#{status}, total_amount=(number+#{changeNum})*sale_price,number=number+#{changeNum},total_number=total_number+#{changeNum} " +
"where id=#{id}") "where id=#{id}")
int updateNumAmountStatus(Integer id, String status, Integer changeNum); int updateNumAmountStatus(Integer id, String status, BigDecimal changeNum);
@Select("select a.* from tb_cashier_cart as a left join tb_order_detail as b on a.id=b.cart_id where a.shop_id=#{shopId} and a.status=#{state} and a.created_at>#{time} and b.id is not null;") @Select("select a.* from tb_cashier_cart as a left join tb_order_detail as b on a.id=b.cart_id where a.shop_id=#{shopId} and a.status=#{state} and a.created_at>#{time} and b.id is not null;")
List<TbCashierCart> selectPlaceCart(Integer shopId, long time, String state); List<TbCashierCart> selectPlaceCart(Integer shopId, long time, String state);

View File

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
public interface TbOrderDetailMapper extends BaseMapper<TbOrderDetail> { public interface TbOrderDetailMapper extends BaseMapper<TbOrderDetail> {
@@ -19,7 +20,7 @@ public interface TbOrderDetailMapper extends BaseMapper<TbOrderDetail> {
*/ */
@Update("update tb_order_detail set status=#{status}, price_amount=(num+#{changeNum})*price,num=num+#{changeNum} " + @Update("update tb_order_detail set status=#{status}, price_amount=(num+#{changeNum})*price,num=num+#{changeNum} " +
"where id=#{id}") "where id=#{id}")
int updateNumAmountStatus(Integer id, String status, int changeNum); int updateNumAmountStatus(Integer id, String status, BigDecimal changeNum);
/** /**
* 查询包含打包费和是否赠送的订单详情信息 * 查询包含打包费和是否赠送的订单详情信息

View File

@@ -6,6 +6,8 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import java.math.BigDecimal;
public interface TbProducSkutMapper extends BaseMapper<TbProductSku> { public interface TbProducSkutMapper extends BaseMapper<TbProductSku> {
@@ -29,5 +31,5 @@ public interface TbProducSkutMapper extends BaseMapper<TbProductSku> {
int decrStockUnCheck(String id, int num); int decrStockUnCheck(String id, int num);
@Update("update tb_product_sku set real_sales_number=real_sales_number-#{num} WHERE id=#{skuId}") @Update("update tb_product_sku set real_sales_number=real_sales_number-#{num} WHERE id=#{skuId}")
int decrRealSalesNumber(@Param("skuId") Integer skuId, @Param("num") Integer num); int decrRealSalesNumber(@Param("skuId") Integer skuId, @Param("num") BigDecimal num);
} }

View File

@@ -8,6 +8,8 @@ import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import java.math.BigDecimal;
public interface TbProductMapper extends BaseMapper<TbProduct> { public interface TbProductMapper extends BaseMapper<TbProduct> {
@Select("select * from tb_product_sku as sku where sku.is_del=0 and sku.is_grounding=1 and sku.is_pause_sale=0 and sku.shop_id=#{shopId} and sku.id=#{skuId}") @Select("select * from tb_product_sku as sku where sku.is_del=0 and sku.is_grounding=1 and sku.is_pause_sale=0 and sku.shop_id=#{shopId} and sku.id=#{skuId}")
@@ -17,11 +19,11 @@ public interface TbProductMapper extends BaseMapper<TbProduct> {
TbProduct selectByIdAndShopId(@Param("shopId") Integer shopId, @Param("id") Integer id); TbProduct selectByIdAndShopId(@Param("shopId") Integer shopId, @Param("id") Integer id);
@Update("update tb_product set stock_number=stock_number+#{addNum} WHERE id=#{id}") @Update("update tb_product set stock_number=stock_number+#{addNum} WHERE id=#{id}")
int incrStock(@Param("id") Integer id, @Param("addNum") Integer addNum); int incrStock(@Param("id") Integer id, @Param("addNum") BigDecimal addNum);
@Update("update tb_product set stock_number=stock_number-#{decrNum} WHERE id=#{productId} and stock_number-#{decrNum} >= 0") @Update("update tb_product set stock_number=stock_number-#{decrNum} WHERE id=#{productId} and stock_number-#{decrNum} >= 0")
int decrStock(@Param("productId") Integer productId, @Param("decrNum") int decrNum); int decrStock(@Param("productId") Integer productId, @Param("decrNum") BigDecimal decrNum);
@Update("update tb_product set stock_number=stock_number-#{num} WHERE id=#{id}") @Update("update tb_product set stock_number=stock_number-#{num} WHERE id=#{id}")
int decrStockUnCheck(Integer id, int num); int decrStockUnCheck(Integer id, BigDecimal num);
} }

View File

@@ -85,15 +85,15 @@ public class TbCashierCart implements Serializable {
@Column(name = "`number`", nullable = false) @Column(name = "`number`", nullable = false)
@NotNull @NotNull
@ApiModelProperty(value = "结余数量") @ApiModelProperty(value = "结余数量")
private Integer number; private BigDecimal number;
@Column(name = "`total_number`") @Column(name = "`total_number`")
@ApiModelProperty(value = "总下单数量") @ApiModelProperty(value = "总下单数量")
private Integer totalNumber; private BigDecimal totalNumber;
@Column(name = "`refund_number`") @Column(name = "`refund_number`")
@ApiModelProperty(value = "退单数量") @ApiModelProperty(value = "退单数量")
private Integer refundNumber; private BigDecimal refundNumber;
@Column(name = "`category_id`") @Column(name = "`category_id`")
@ApiModelProperty(value = "分类Id") @ApiModelProperty(value = "分类Id")
@@ -168,6 +168,9 @@ public class TbCashierCart implements Serializable {
private Integer userCouponId; private Integer userCouponId;
private BigDecimal memberPrice = BigDecimal.ZERO; private BigDecimal memberPrice = BigDecimal.ZERO;
private Integer isMember; private Integer isMember;
// 是否临时菜品
private Integer isTemporary;
private String unit;
public void copy(TbCashierCart source) { public void copy(TbCashierCart source) {
BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
@@ -184,9 +187,9 @@ public class TbCashierCart implements Serializable {
totalAmount = packFee; totalAmount = packFee;
} else { } else {
if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
totalAmount = BigDecimal.valueOf(totalNumber).multiply(memberPrice).add(packFee); totalAmount = totalNumber.multiply(memberPrice).add(packFee);
} else { } else {
totalAmount = BigDecimal.valueOf(totalNumber).multiply(salePrice).add(packFee); totalAmount = totalNumber.multiply(salePrice).add(packFee);
} }
} }
} }
@@ -195,14 +198,15 @@ public class TbCashierCart implements Serializable {
* 获取总价不包含打包费 * 获取总价不包含打包费
* *
*/ */
public BigDecimal getTotalAmountByNum(Integer num) { public BigDecimal getTotalAmountByNum(BigDecimal num) {
if (num == null) { if (num == null) {
num = totalNumber; num = totalNumber;
} }
if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
return BigDecimal.valueOf(num).multiply(memberPrice); return num.multiply(memberPrice);
} else { } else {
return BigDecimal.valueOf(num).multiply(salePrice); return num.multiply(salePrice);
} }
} }
} }

View File

@@ -61,7 +61,7 @@ public class TbOrderDetail implements Serializable {
@Column(name = "`num`") @Column(name = "`num`")
@ApiModelProperty(value = "num") @ApiModelProperty(value = "num")
private Integer num; private BigDecimal num;
@Column(name = "`product_name`") @Column(name = "`product_name`")
@ApiModelProperty(value = "productName") @ApiModelProperty(value = "productName")
@@ -103,7 +103,7 @@ public class TbOrderDetail implements Serializable {
@Transient @Transient
@ApiModelProperty(value = "退单数量") @ApiModelProperty(value = "退单数量")
@TableField(exist = false) @TableField(exist = false)
private Integer refundNumber; private BigDecimal refundNumber;
@Column(name = "`is_vip`") @Column(name = "`is_vip`")
@ApiModelProperty(value = "isVip") @ApiModelProperty(value = "isVip")

View File

@@ -34,7 +34,7 @@ public interface TbProductRepository extends JpaRepository<TbProduct, Integer>,
@Modifying @Modifying
@Query("update FROM TbProduct pro set pro.stockNumber=pro.stockNumber+:number WHERE pro.id =:productId") @Query("update FROM TbProduct pro set pro.stockNumber=pro.stockNumber+:number WHERE pro.id =:productId")
void incrProductStockNumber(Integer productId, Integer number); void incrProductStockNumber(Integer productId, BigDecimal number);
@Transactional @Transactional
@Modifying @Modifying
@@ -44,7 +44,7 @@ public interface TbProductRepository extends JpaRepository<TbProduct, Integer>,
@Modifying @Modifying
@Query("update TbProduct set stockNumber=stockNumber+:num where id=:id") @Query("update TbProduct set stockNumber=stockNumber+:num where id=:id")
void incrStock(@Param("id") Integer id, @Param("num") Integer num); void incrStock(@Param("id") Integer id, @Param("num") BigDecimal num);
@Query("select product from TbProduct product where product.shopId=:shopId") @Query("select product from TbProduct product where product.shopId=:shopId")

View File

@@ -178,17 +178,26 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
List<TbFullOrderDetail> details = tbOrderDetailMapper.selectFullInfoByOrderId(tbOrderInfo.getId()); List<TbFullOrderDetail> details = tbOrderDetailMapper.selectFullInfoByOrderId(tbOrderInfo.getId());
if (!tbOrderInfo.getOrderType().equals("return")) { if (!tbOrderInfo.getOrderType().equals("return")) {
List<TbOrderInfo> tbOrderInfos = tbOrderInfoRepository.selTbOrdersBysource(tbOrderInfo.getId(), tbOrderInfo.getShopId()); List<TbOrderInfo> tbOrderInfos = tbOrderInfoRepository.selTbOrdersBysource(tbOrderInfo.getId(), tbOrderInfo.getShopId());
Map<Integer, Integer> map; Map<Integer, BigDecimal> map;
if (!CollectionUtils.isEmpty(tbOrderInfos)) { if (!CollectionUtils.isEmpty(tbOrderInfos)) {
List<Integer> ids = tbOrderInfos.stream().map(TbOrderInfo::getId).collect(Collectors.toList()); List<Integer> ids = tbOrderInfos.stream().map(TbOrderInfo::getId).collect(Collectors.toList());
List<TbOrderDetail> refundOrderDetail = tbOrderDetailRepository.searchDetailByOrderIds(ids); List<TbOrderDetail> refundOrderDetail = tbOrderDetailRepository.searchDetailByOrderIds(ids);
map = refundOrderDetail.stream().collect(Collectors.groupingBy(TbOrderDetail::getProductSkuId, Collectors.summingInt(TbOrderDetail::getNum))); map = refundOrderDetail.stream()
.collect(Collectors.groupingBy(
TbOrderDetail::getProductSkuId,
Collectors.reducing(
BigDecimal.ZERO,
TbOrderDetail::getNum,
BigDecimal::add
)
));
refundAmount = tbOrderInfos.stream().map(TbOrderInfo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add); refundAmount = tbOrderInfos.stream().map(TbOrderInfo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
} else { } else {
map = new HashMap<>(); map = new HashMap<>();
} }
details.parallelStream().forEach(detail -> { details.parallelStream().forEach(detail -> {
Integer refundNumber = map.get(detail.getProductSkuId()); BigDecimal refundNumber = map.get(detail.getProductSkuId());
if (refundNumber != null) { if (refundNumber != null) {
detail.setRefundNumber(refundNumber); detail.setRefundNumber(refundNumber);
} }

View File

@@ -746,12 +746,12 @@ public class TbProductServiceImpl implements TbProductService {
} }
@Override @Override
public void incrStockNumber(String productId, Integer number) { public void incrStockNumber(String productId, BigDecimal number) {
tbProductRepository.incrProductStockNumber(Integer.valueOf(productId), number); tbProductRepository.incrProductStockNumber(Integer.valueOf(productId), number);
} }
@Override @Override
public void returnStockByPro(Integer productId, Integer productSkuId, Integer num) { public void returnStockByPro(Integer productId, Integer productSkuId, BigDecimal num) {
if (productId > 0) { if (productId > 0) {
log.info("开始返还库存订单超时取消商品id{}", productId); log.info("开始返还库存订单超时取消商品id{}", productId);
TbProduct product = tbProductRepository.findById(productId).orElse(null); TbProduct product = tbProductRepository.findById(productId).orElse(null);

View File

@@ -391,11 +391,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
} }
} }
@Override
public TbCashierCart addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO) {
return null;
}
@Override @Override
public void download(List<TbShopTableDto> all, HttpServletResponse response) throws IOException { public void download(List<TbShopTableDto> all, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>(); List<Map<String, Object>> list = new ArrayList<>();
@@ -430,36 +425,45 @@ public class TbShopTableServiceImpl implements TbShopTableService {
throw new BadRequestException("已下单商品仅支持退单操作"); throw new BadRequestException("已下单商品仅支持退单操作");
} }
if (updateCartDTO.getNum() == 0) { if (updateCartDTO.getNum().compareTo(BigDecimal.ZERO) == 0) {
cashierCartRepository.deleteById(updateCartDTO.getCartId()); cashierCartRepository.deleteById(updateCartDTO.getCartId());
return null; return null;
} }
TbProductSku productSku = productMapper.selectSkuByIdAndShopId(updateCartDTO.getShopId(), updateCartDTO.getSkuId());
TbProduct product = productMapper.selectByIdAndShopId(updateCartDTO.getShopId(), updateCartDTO.getProductId()); TbProduct product = null;
if (product == null || productSku == null) { if (updateCartDTO.getProductId() != null && updateCartDTO.getSkuId() != null) {
throw new BadRequestException("商品不存在或已下架, id: " + updateCartDTO.getSkuId()); TbProductSku productSku = productMapper.selectSkuByIdAndShopId(updateCartDTO.getShopId(), updateCartDTO.getSkuId());
product = productMapper.selectByIdAndShopId(updateCartDTO.getShopId(), updateCartDTO.getProductId());
if (product == null || productSku == null) {
throw new BadRequestException("商品不存在或已下架, id: " + updateCartDTO.getSkuId());
}
tbCashierCart.setCoverImg(product.getCoverImg());
tbCashierCart.setIsSku(product.getTypeEnum());
tbCashierCart.setName(product.getName());
tbCashierCart.setProductId(String.valueOf(product.getId()));
tbCashierCart.setSalePrice(productSku.getSalePrice());
tbCashierCart.setSkuId(productSku.getId().toString());
tbCashierCart.setCategoryId(product.getCategoryId());
} }
tbCashierCart.setCoverImg(product.getCoverImg());
tbCashierCart.setCreatedAt(System.currentTimeMillis()); tbCashierCart.setCreatedAt(System.currentTimeMillis());
tbCashierCart.setIsSku(product.getTypeEnum());
tbCashierCart.setName(product.getName());
tbCashierCart.setProductId(String.valueOf(product.getId()));
tbCashierCart.setSalePrice(productSku.getSalePrice());
tbCashierCart.setSkuId(productSku.getId().toString());
tbCashierCart.setTradeDay(DateUtils.getDay()); tbCashierCart.setTradeDay(DateUtils.getDay());
tbCashierCart.setStatus("create"); tbCashierCart.setStatus("create");
tbCashierCart.setSalePrice(productSku.getSalePrice()); tbCashierCart.setSalePrice(tbCashierCart.getSalePrice());
tbCashierCart.setTotalAmount(new BigDecimal(updateCartDTO.getNum()).multiply(productSku.getSalePrice())); tbCashierCart.setTotalAmount(updateCartDTO.getNum().multiply(tbCashierCart.getSalePrice()));
tbCashierCart.setNote(updateCartDTO.getNote()); tbCashierCart.setNote(updateCartDTO.getNote());
if (updateCartDTO.getIsPack() != null) { if (updateCartDTO.getIsPack() != null) {
if (!updateCartDTO.getIsPack()) { if (!updateCartDTO.getIsPack()) {
tbCashierCart.setPackFee(BigDecimal.ZERO); tbCashierCart.setPackFee(BigDecimal.ZERO);
tbCashierCart.setTotalAmount(tbCashierCart.getSalePrice().multiply(BigDecimal.valueOf(updateCartDTO.getNum()))); tbCashierCart.setTotalAmount(tbCashierCart.getSalePrice().multiply(updateCartDTO.getNum()));
} else { } else {
tbCashierCart.setPackFee(new BigDecimal(updateCartDTO.getNum()).multiply(product.getPackFee())); if (product != null) {
tbCashierCart.setTotalAmount(tbCashierCart.getSalePrice().multiply(BigDecimal.valueOf(updateCartDTO.getNum())) tbCashierCart.setPackFee(updateCartDTO.getNum().multiply(product.getPackFee()));
}
tbCashierCart.setTotalAmount(tbCashierCart.getSalePrice().multiply(updateCartDTO.getNum())
.add(tbCashierCart.getPackFee())); .add(tbCashierCart.getPackFee()));
} }
tbCashierCart.setIsPack(updateCartDTO.getIsPack() ? "true" : "false"); tbCashierCart.setIsPack(updateCartDTO.getIsPack() ? "true" : "false");
@@ -472,7 +476,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
tbCashierCart.setTotalNumber(updateCartDTO.getNum()); tbCashierCart.setTotalNumber(updateCartDTO.getNum());
tbCashierCart.setNumber(updateCartDTO.getNum()); tbCashierCart.setNumber(updateCartDTO.getNum());
tbCashierCart.setCategoryId(product.getCategoryId());
tbCashierCartMapper.updateById(tbCashierCart); tbCashierCartMapper.updateById(tbCashierCart);
if (tbCashierCart.getOrderId() != null && StrUtil.isNotBlank(updateCartDTO.getNote())) { if (tbCashierCart.getOrderId() != null && StrUtil.isNotBlank(updateCartDTO.getNote())) {
@@ -556,14 +559,14 @@ public class TbShopTableServiceImpl implements TbShopTableService {
tbCashierCart.setIsPack(String.valueOf(addCartDTO.isPack())); tbCashierCart.setIsPack(String.valueOf(addCartDTO.isPack()));
tbCashierCart.setIsGift(String.valueOf(addCartDTO.isGift())); tbCashierCart.setIsGift(String.valueOf(addCartDTO.isGift()));
tbCashierCart.setSalePrice(productSku.getSalePrice()); tbCashierCart.setSalePrice(productSku.getSalePrice());
tbCashierCart.setTotalAmount(new BigDecimal(addCartDTO.getNum()).multiply(productSku.getSalePrice())); tbCashierCart.setTotalAmount(addCartDTO.getNum().multiply(productSku.getSalePrice()));
tbCashierCart.setSkuName(productSku.getSpecSnap()); tbCashierCart.setSkuName(productSku.getSpecSnap());
// 设置打包费 // 设置打包费
if (!addCartDTO.isPack() && !shopEatTypeInfoDTO.isTakeout()) { if (!addCartDTO.isPack() && !shopEatTypeInfoDTO.isTakeout()) {
tbCashierCart.setPackFee(BigDecimal.ZERO); tbCashierCart.setPackFee(BigDecimal.ZERO);
} else { } else {
tbCashierCart.setPackFee(product.getPackFee() != null ? tbCashierCart.setPackFee(product.getPackFee() != null ?
product.getPackFee().multiply(BigDecimal.valueOf(addCartDTO.getNum())) : BigDecimal.ZERO); product.getPackFee().multiply(addCartDTO.getNum()) : BigDecimal.ZERO);
tbCashierCart.setTotalAmount(tbCashierCart.getTotalAmount().add(tbCashierCart.getPackFee())); tbCashierCart.setTotalAmount(tbCashierCart.getTotalAmount().add(tbCashierCart.getPackFee()));
} }
@@ -575,22 +578,22 @@ public class TbShopTableServiceImpl implements TbShopTableService {
tbCashierCart.setCategoryId(product.getCategoryId()); tbCashierCart.setCategoryId(product.getCategoryId());
tbCashierCart.setNote(addCartDTO.getNote()); tbCashierCart.setNote(addCartDTO.getNote());
tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue());
// tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() == null ? 0 : 1); tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() != null ? 1 : 0);
tbCashierCart.setIsMember(addCartDTO.getVipUserId() == null ? 0 : 1); // tbCashierCart.setIsMember(addCartDTO.getVipUserId() == null ? 0 : 1);
if (tbCashierCart.getIsMember() == 1) { if (tbCashierCart.getIsMember() == 1) {
tbCashierCart.setMemberPrice(productSku.getMemberPrice()); tbCashierCart.setMemberPrice(productSku.getMemberPrice());
} }
cashierCartRepository.save(tbCashierCart); cashierCartRepository.save(tbCashierCart);
} else { } else {
tbCashierCart.setIsMember(addCartDTO.getVipUserId() == null ? 0 : 1); tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() != null ? 1 : 0);
tbCashierCart.setNote(addCartDTO.getNote()); tbCashierCart.setNote(addCartDTO.getNote());
tbCashierCart.setTotalAmount(new BigDecimal(addCartDTO.getNum()).multiply(productSku.getSalePrice())); tbCashierCart.setTotalAmount(addCartDTO.getNum().multiply(productSku.getSalePrice()));
if (!addCartDTO.isPack()) { if (!addCartDTO.isPack()) {
tbCashierCart.setPackFee(BigDecimal.ZERO); tbCashierCart.setPackFee(BigDecimal.ZERO);
} else { } else {
tbCashierCart.setPackFee(new BigDecimal(addCartDTO.getNum()).multiply(product.getPackFee())); tbCashierCart.setPackFee(addCartDTO.getNum().multiply(product.getPackFee()));
tbCashierCart.setTotalAmount(tbCashierCart.getTotalAmount().add(tbCashierCart.getPackFee())); tbCashierCart.setTotalAmount(tbCashierCart.getTotalAmount().add(tbCashierCart.getPackFee()));
} }
@@ -607,7 +610,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
// 设置打包费 // 设置打包费
if (shopEatTypeInfoDTO.isTakeout()) { if (shopEatTypeInfoDTO.isTakeout()) {
tbCashierCart.setPackFee(product.getPackFee() != null ? tbCashierCart.setPackFee(product.getPackFee() != null ?
product.getPackFee().multiply(BigDecimal.valueOf(addCartDTO.getNum())) : BigDecimal.ZERO); product.getPackFee().multiply(addCartDTO.getNum()) : BigDecimal.ZERO);
} }
cashierCartMapper.updateById(tbCashierCart); cashierCartMapper.updateById(tbCashierCart);
} }
@@ -622,7 +625,58 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override @Override
public TbCashierCart addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO) { public TbCashierCart addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO) {
return null; temporaryDishesDTO.setTableId(OrderUseTypeEnum.TAKEOUT.getValue().equals(temporaryDishesDTO.getUseType()) ? null : temporaryDishesDTO.getTableId());
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(temporaryDishesDTO.getShopId(), temporaryDishesDTO.getTableId(), temporaryDishesDTO.getUseType());
TbCashierCart tbCashierCart = mpCashierCartService.selectOneCartByShopEatType(shopEatTypeInfoDTO, temporaryDishesDTO.getMasterId(), null, null, false, true);
// 首次加入
if (tbCashierCart == null) {
tbCashierCart = new TbCashierCart();
tbCashierCart.setUseType(shopEatTypeInfoDTO.getUseType());
tbCashierCart.setCreatedAt(System.currentTimeMillis());
tbCashierCart.setIsSku("0");
if (StrUtil.isNotBlank(shopEatTypeInfoDTO.getTableId())) {
tbCashierCart.setTableId(shopEatTypeInfoDTO.getTableId());
}
tbCashierCart.setName(temporaryDishesDTO.getName());
tbCashierCart.setSalePrice(temporaryDishesDTO.getPrice());
tbCashierCart.setMasterId(temporaryDishesDTO.getMasterId());
tbCashierCart.setShopId(String.valueOf(temporaryDishesDTO.getShopId()));
tbCashierCart.setTradeDay(DateUtils.getDay());
tbCashierCart.setStatus("create");
tbCashierCart.setIsPack("false");
tbCashierCart.setIsGift("false");
tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice()));
tbCashierCart.setPackFee(BigDecimal.ZERO);
tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum());
tbCashierCart.setNumber(temporaryDishesDTO.getNum());
tbCashierCart.setCategoryId(String.valueOf(temporaryDishesDTO.getCategoryId()));
tbCashierCart.setNote(temporaryDishesDTO.getNote());
tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue());
tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && temporaryDishesDTO.getVipUserId() != null ? 1 : 0);
tbCashierCart.setIsTemporary(1);
tbCashierCart.setUnit(temporaryDishesDTO.getUnit());
cashierCartRepository.save(tbCashierCart);
} else {
tbCashierCart.setIsMember(temporaryDishesDTO.getVipUserId() == null ? 0 : 1);
tbCashierCart.setNote(temporaryDishesDTO.getNote());
tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice()));
tbCashierCart.setPackFee(BigDecimal.ZERO);
tbCashierCart.setIsPack("false");
tbCashierCart.setIsGift("false");
tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum());
tbCashierCart.setNumber(temporaryDishesDTO.getNum());
tbCashierCart.setUpdatedAt(DateUtil.current());
tbCashierCart.setIsTemporary(1);
tbCashierCart.setUnit(temporaryDishesDTO.getUnit());
cashierCartMapper.updateById(tbCashierCart);
}
if (StrUtil.isNotBlank(temporaryDishesDTO.getTableId())) {
setRedisTableCartInfo(temporaryDishesDTO.getTableId(), temporaryDishesDTO.getShopId().toString(), Collections.singletonList(tbCashierCart), true);
}
return tbCashierCart;
} }
private void setRedisTableCartInfo(String tableId, String shopId, List<TbCashierCart> tbCashierCartList, boolean isAdd) { private void setRedisTableCartInfo(String tableId, String shopId, List<TbCashierCart> tbCashierCartList, boolean isAdd) {
@@ -709,7 +763,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
throw new BadRequestException("购物车商品不存在或已退单"); throw new BadRequestException("购物车商品不存在或已退单");
} }
if (removeCartDTO.getNum() > cashierCart.getNumber()) { if (removeCartDTO.getNum().compareTo(cashierCart.getNumber()) > 0) {
throw new BadRequestException("最大退菜数量为: {}", cashierCart.getNumber()); throw new BadRequestException("最大退菜数量为: {}", cashierCart.getNumber());
} }
@@ -737,8 +791,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
TbOrderDetail tbOrderDetail = orderDetailMapper.selectOne(new LambdaQueryWrapper<TbOrderDetail>() TbOrderDetail tbOrderDetail = orderDetailMapper.selectOne(new LambdaQueryWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getShopId, removeCartDTO.getShopId()) .eq(TbOrderDetail::getShopId, removeCartDTO.getShopId())
.eq(TbOrderDetail::getCartId, cashierCart.getId()) .eq(TbOrderDetail::getCartId, cashierCart.getId())
.eq(TbOrderDetail::getProductId, cashierCart.getProductId())
.eq(TbOrderDetail::getProductSkuId, cashierCart.getSkuId())
.eq(TbOrderDetail::getOrderId, cashierCart.getOrderId())); .eq(TbOrderDetail::getOrderId, cashierCart.getOrderId()));
if (tbOrderDetail == null) { if (tbOrderDetail == null) {
throw new BadRequestException("购物车商品不存在或已退单"); throw new BadRequestException("购物车商品不存在或已退单");
@@ -760,7 +812,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
returnCart.setNumber(removeCartDTO.getNum()); returnCart.setNumber(removeCartDTO.getNum());
returnCart.setId(null); returnCart.setId(null);
returnCart.setTotalNumber(removeCartDTO.getNum()); returnCart.setTotalNumber(removeCartDTO.getNum());
BigDecimal returnCartAmount = returnCart.getSalePrice().multiply(BigDecimal.valueOf(returnCart.getNumber())); BigDecimal returnCartAmount = returnCart.getSalePrice().multiply(returnCart.getNumber());
returnCart.setTotalAmount(returnCartAmount); returnCart.setTotalAmount(returnCartAmount);
returnCart.setStatus("return"); returnCart.setStatus("return");
cashierCartMapper.insert(returnCart); cashierCartMapper.insert(returnCart);
@@ -776,8 +828,8 @@ public class TbShopTableServiceImpl implements TbShopTableService {
returnOrderDetail.setRefundRemark(removeCartDTO.getNote()); returnOrderDetail.setRefundRemark(removeCartDTO.getNote());
orderDetailMapper.insert(returnOrderDetail); orderDetailMapper.insert(returnOrderDetail);
cashierCartMapper.updateNumAmountStatus(cashierCart.getId(), cashierCart.getStatus(), -returnCart.getNumber()); cashierCartMapper.updateNumAmountStatus(cashierCart.getId(), cashierCart.getStatus(), returnCart.getNumber().negate());
orderDetailMapper.updateNumAmountStatus(orderDetail.getId(), orderDetail.getStatus(), -returnCart.getNumber()); orderDetailMapper.updateNumAmountStatus(orderDetail.getId(), orderDetail.getStatus(), returnCart.getNumber().negate());
if (TableConstant.OrderInfo.UseType.DINE_IN_AFTER.equalsVals(tbOrderDetail.getUseType()) && !isSeatCart) { if (TableConstant.OrderInfo.UseType.DINE_IN_AFTER.equalsVals(tbOrderDetail.getUseType()) && !isSeatCart) {
rabbitMsgUtils.printDishesTicket(returnOrderDetail.getOrderId(), true, returnOrderDetail); rabbitMsgUtils.printDishesTicket(returnOrderDetail.getOrderId(), true, returnOrderDetail);
} }
@@ -787,9 +839,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
if (cashierCart.getOrderId() != null) { if (cashierCart.getOrderId() != null) {
// 减少订单金额 // 减少订单金额
orderInfoMapper.updateOrderAmount(cashierCart.getOrderId(), orderDetail.getPriceAmount().divide(BigDecimal.valueOf(orderDetail.getNum()), RoundingMode.HALF_UP) orderInfoMapper.updateOrderAmount(cashierCart.getOrderId(), orderDetail.getPriceAmount().divide(orderDetail.getNum(), RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(removeCartDTO.getNum())), orderDetail.getPackAmount().divide(BigDecimal.valueOf(orderDetail.getNum()), RoundingMode.HALF_UP) .multiply(removeCartDTO.getNum()), orderDetail.getPackAmount().divide(orderDetail.getNum(), RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(removeCartDTO.getNum()))); .multiply(removeCartDTO.getNum()));
} }
@@ -852,7 +904,11 @@ public class TbShopTableServiceImpl implements TbShopTableService {
List<TbCashierCart> records = cartPage.getRecords(); List<TbCashierCart> records = cartPage.getRecords();
ArrayList<Integer> skuIds = new ArrayList<>(); ArrayList<Integer> skuIds = new ArrayList<>();
records.forEach(item -> skuIds.add(Integer.valueOf(item.getSkuId()))); records.forEach(item -> {
if (item.getSkuId() != null) {
skuIds.add(Integer.valueOf(item.getSkuId()));
}
});
AtomicReference<TbCashierCart> mealCashierCart = new AtomicReference<>(); AtomicReference<TbCashierCart> mealCashierCart = new AtomicReference<>();
@@ -863,7 +919,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
ArrayList<Map<String, Object>> infos = new ArrayList<>(); ArrayList<Map<String, Object>> infos = new ArrayList<>();
records.forEach(item -> { records.forEach(item -> {
if (item.getProductId().equals("-999")) { if (item.getProductId() != null && item.getProductId().equals("-999")) {
mealCashierCart.set(item); mealCashierCart.set(item);
return; return;
} }
@@ -932,7 +988,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
* @param skuId sku * @param skuId sku
* @param addNum 增加的库存数量 * @param addNum 增加的库存数量
*/ */
public void incrStock(Integer productId, Integer skuId, Integer addNum) { public void incrStock(Integer productId, Integer skuId, BigDecimal addNum) {
productMapper.incrStock(productId, addNum); productMapper.incrStock(productId, addNum);
} }
@@ -943,7 +999,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
* @param skuId sku * @param skuId sku
* @param decrNum 减少的数量 * @param decrNum 减少的数量
*/ */
public void decrStock(Integer productId, String skuId, int decrNum) { public void decrStock(Integer productId, String skuId, BigDecimal decrNum) {
TbProduct product = productMapper.selectById(productId); TbProduct product = productMapper.selectById(productId);
if (product.getIsStock() == 1) { if (product.getIsStock() == 1) {
if (productMapper.decrStock(productId, decrNum) < 1) { if (productMapper.decrStock(productId, decrNum) < 1) {
@@ -988,14 +1044,14 @@ public class TbShopTableServiceImpl implements TbShopTableService {
if (cashierCart.getOrderId() != null) { if (cashierCart.getOrderId() != null) {
String message = redisTemplate.opsForValue().get(RedisConstant.ORDER_PRODUCT_NUM + cashierCart.getId()); String message = redisTemplate.opsForValue().get(RedisConstant.ORDER_PRODUCT_NUM + cashierCart.getId());
if (message != null) { if (message != null) {
int lastNum = Integer.parseInt(message); BigDecimal lastNum = new BigDecimal(message);
// 数量减少, 返还库存 // 数量减少, 返还库存
if (lastNum > cashierCart.getNumber()) { if (lastNum.compareTo(cashierCart.getNumber()) > 0) {
incrStock(Integer.parseInt(cashierCart.getProductId()), Integer.parseInt(cashierCart.getSkuId()), lastNum - cashierCart.getNumber()); incrStock(Integer.parseInt(cashierCart.getProductId()), Integer.parseInt(cashierCart.getSkuId()), lastNum.subtract(cashierCart.getNumber()));
} else { } else {
decrStock(Integer.parseInt(cashierCart.getProductId()), cashierCart.getSkuId(), cashierCart.getNumber() - lastNum); decrStock(Integer.parseInt(cashierCart.getProductId()), cashierCart.getSkuId(), cashierCart.getNumber().subtract(lastNum));
} }
redisTemplate.opsForValue().set(RedisConstant.ORDER_PRODUCT_NUM + cashierCart.getId(), cashierCart.getNumber().toString(), 24 * 60 * 60, TimeUnit.SECONDS); redisTemplate.opsForValue().set(RedisConstant.ORDER_PRODUCT_NUM + cashierCart.getId(), cashierCart.getNumber().toPlainString(), 24 * 60 * 60, TimeUnit.SECONDS);
} }
return false; return false;
@@ -1041,7 +1097,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
* *
* @param productSku sku * @param productSku sku
*/ */
private void checkWarnLineAndSendMsg(TbProductSku productSku, TbProduct product, Integer shopId, Integer num) { private void checkWarnLineAndSendMsg(TbProductSku productSku, TbProduct product, Integer shopId, BigDecimal num) {
TbShopInfo shopInfo = shopInfoRepository.getById(shopId); TbShopInfo shopInfo = shopInfoRepository.getById(shopId);
if (product.getWarnLine() == null) { if (product.getWarnLine() == null) {
return; return;
@@ -1054,9 +1110,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
if (product.getStockNumber() == null) { if (product.getStockNumber() == null) {
product.setStockNumber(0); product.setStockNumber(0);
} }
if (product.getStockNumber() - num <= product.getWarnLine()) { if (product.getStockNumber() - num.doubleValue() <= product.getWarnLine()) {
wxMsgUtils.aboardStockMsg(shopInfo.getShopName(), shopId, product.getName(), wxMsgUtils.aboardStockMsg(shopInfo.getShopName(), shopId, product.getName(),
product.getStockNumber() - num); product.getStockNumber() - num.doubleValue());
} }
} }
@@ -1212,7 +1268,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
List<TbUserCouponVo> tbUserCouponVos = couponMap.get(productId); List<TbUserCouponVo> tbUserCouponVos = couponMap.get(productId);
if (tbUserCouponVos == null || tbUserCouponVos.isEmpty()) return null; if (tbUserCouponVos == null || tbUserCouponVos.isEmpty()) return null;
for (TbUserCouponVo tbUserCouponVo : tbUserCouponVos) { for (TbUserCouponVo tbUserCouponVo : tbUserCouponVos) {
if (tbUserCouponVo.getCurrentUseNum() > 0) { if (tbUserCouponVo.getCurrentUseNum().compareTo(BigDecimal.ZERO) > 0) {
return tbUserCouponVo; return tbUserCouponVo;
} }
} }
@@ -1223,22 +1279,22 @@ public class TbShopTableServiceImpl implements TbShopTableService {
List<TbUserCouponVo>> usedCouponMap, BigDecimal discountAmount, ArrayList<TbCashierCart> balanceCartList, List<TbUserCouponVo>> usedCouponMap, BigDecimal discountAmount, ArrayList<TbCashierCart> balanceCartList,
ArrayList<TbActivateOutRecord> outRecords, Integer memberId) { ArrayList<TbActivateOutRecord> outRecords, Integer memberId) {
TbUserCouponVo couponVo = getCanUseCoupon(couponMap, cashierCart.getProductId()); TbUserCouponVo couponVo = getCanUseCoupon(couponMap, cashierCart.getProductId());
if (couponVo != null && couponVo.getCurrentUseNum() > 0) { if (couponVo != null && couponVo.getCurrentUseNum().compareTo(BigDecimal.ZERO) > 0) {
BigDecimal currentUseNum; BigDecimal currentUseNum;
List<TbUserCouponVo> tbUserCouponVos = usedCouponMap.computeIfAbsent(Integer.valueOf(cashierCart.getProductId()), k -> new ArrayList<>()); List<TbUserCouponVo> tbUserCouponVos = usedCouponMap.computeIfAbsent(Integer.valueOf(cashierCart.getProductId()), k -> new ArrayList<>());
tbUserCouponVos.add(couponVo); tbUserCouponVos.add(couponVo);
TbCashierCart balanceCart = null; TbCashierCart balanceCart = null;
if (cashierCart.getNumber() < couponVo.getCurrentUseNum()) { if (cashierCart.getNumber().compareTo(couponVo.getCurrentUseNum()) < 0) {
cashierCart.setUserCouponId(couponVo.getId()); cashierCart.setUserCouponId(couponVo.getId());
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null)); discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null));
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber()); couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber()));
currentUseNum = BigDecimal.valueOf(cashierCart.getNumber()); currentUseNum = cashierCart.getNumber();
// 优惠券数量小于购物车数量,分割购物车数据 // 优惠券数量小于购物车数量,分割购物车数据
}else if (cashierCart.getNumber() > couponVo.getCurrentUseNum()) { }else if (cashierCart.getNumber().compareTo(couponVo.getCurrentUseNum()) > 0) {
currentUseNum = BigDecimal.valueOf(couponVo.getCurrentUseNum()); currentUseNum = couponVo.getCurrentUseNum();
BigDecimal cartNum = BigDecimal.valueOf(cashierCart.getNumber()); BigDecimal cartNum = BigDecimal.valueOf(cashierCart.getNumber().intValue());
int balanceNum = cashierCart.getTotalNumber() - couponVo.getCurrentUseNum(); BigDecimal balanceNum = cashierCart.getTotalNumber().subtract(couponVo.getCurrentUseNum());
BigDecimal singlePackFee = cashierCart.getPackFee().divide(cartNum, RoundingMode.HALF_UP); BigDecimal singlePackFee = cashierCart.getPackFee().divide(cartNum, RoundingMode.HALF_UP);
cashierCart.setPackFee(singlePackFee.multiply(currentUseNum)); cashierCart.setPackFee(singlePackFee.multiply(currentUseNum));
BigDecimal totalAmountByNum = cashierCart.getTotalAmountByNum(couponVo.getCurrentUseNum()); BigDecimal totalAmountByNum = cashierCart.getTotalAmountByNum(couponVo.getCurrentUseNum());
@@ -1247,14 +1303,14 @@ public class TbShopTableServiceImpl implements TbShopTableService {
cashierCart.setTotalNumber(couponVo.getCurrentUseNum()); cashierCart.setTotalNumber(couponVo.getCurrentUseNum());
cashierCart.setUserCouponId(couponVo.getId()); cashierCart.setUserCouponId(couponVo.getId());
discountAmount = discountAmount.add(totalAmountByNum); discountAmount = discountAmount.add(totalAmountByNum);
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber()); couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber()));
currentUseNum = BigDecimal.valueOf(cashierCart.getNumber()); currentUseNum = cashierCart.getNumber();
// 创建结余购物车 // 创建结余购物车
balanceCart = BeanUtil.copyProperties(cashierCart, TbCashierCart.class); balanceCart = BeanUtil.copyProperties(cashierCart, TbCashierCart.class);
BigDecimal num = BigDecimal.valueOf(balanceNum); BigDecimal num = balanceNum;
balanceCart.setUserCouponId(null); balanceCart.setUserCouponId(null);
balanceCart.setId(null); balanceCart.setId(null);
balanceCart.setNumber(balanceNum); balanceCart.setNumber(balanceNum);
@@ -1263,10 +1319,10 @@ public class TbShopTableServiceImpl implements TbShopTableService {
balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum).add(singlePackFee.multiply(num))); balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum).add(singlePackFee.multiply(num)));
balanceCartList.add(balanceCart); balanceCartList.add(balanceCart);
} else { } else {
currentUseNum = BigDecimal.valueOf(cashierCart.getNumber()); currentUseNum =cashierCart.getNumber();
discountAmount = discountAmount.add(cashierCart.getTotalAmount()); discountAmount = discountAmount.add(cashierCart.getTotalAmount());
cashierCart.setUserCouponId(couponVo.getId()); cashierCart.setUserCouponId(couponVo.getId());
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber()); couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber()));
} }
// 消耗并返还商品优惠券 // 消耗并返还商品优惠券
Integer shopId = Integer.valueOf(cashierCart.getShopId()); Integer shopId = Integer.valueOf(cashierCart.getShopId());
@@ -1296,7 +1352,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
BigDecimal discountAmount = BigDecimal.ZERO; BigDecimal discountAmount = BigDecimal.ZERO;
HashMap<String, List<TbUserCouponVo>> couponMap = new HashMap<>(); HashMap<String, List<TbUserCouponVo>> couponMap = new HashMap<>();
couponInfoDTO.getProductCouponMap().values().forEach(item -> { couponInfoDTO.getProductCouponMap().values().forEach(item -> {
if (item.getCurrentUseNum() <= 0) { if (item.getCurrentUseNum().compareTo(BigDecimal.ZERO) <= 0) {
return; return;
} }
List<TbUserCouponVo> tbUserCouponVos = couponMap.get(item.getProId().toString()); List<TbUserCouponVo> tbUserCouponVos = couponMap.get(item.getProId().toString());
@@ -1310,7 +1366,12 @@ public class TbShopTableServiceImpl implements TbShopTableService {
}); });
HashMap<Integer, List<TbUserCouponVo>> usedCouponMap = new HashMap<>(); HashMap<Integer, List<TbUserCouponVo>> usedCouponMap = new HashMap<>();
ArrayList<TbActivateOutRecord> outRecords = new ArrayList<>(); ArrayList<TbActivateOutRecord> outRecords = new ArrayList<>();
ArrayList<TbCashierCart> resetCouponList = new ArrayList<>();
for (TbCashierCart cashierCart : newCashierCarts) { for (TbCashierCart cashierCart : newCashierCarts) {
if (!couponMap.isEmpty()) {
resetCouponList.add(cashierCart);
cashierCart.setUserCouponId(null);
}
discountAmount = reduceProCoupon(couponMap, cashierCart, usedCouponMap, discountAmount, balanceCartList, outRecords, memberId); discountAmount = reduceProCoupon(couponMap, cashierCart, usedCouponMap, discountAmount, balanceCartList, outRecords, memberId);
} }
@@ -1319,6 +1380,20 @@ public class TbShopTableServiceImpl implements TbShopTableService {
mpCashierCartService.saveBatch(balanceCartList); mpCashierCartService.saveBatch(balanceCartList);
} }
// 更新购物车信息 // 更新购物车信息
if (!resetCouponList.isEmpty()) {
// 取消之前使用的历史券
ArrayList<Integer> resetCartIds = new ArrayList<>();
resetCouponList.forEach(item -> {
if (item.getUserCouponId() == null) {
resetCartIds.add(item.getId());
}
});
if (!resetCartIds.isEmpty()) {
mpCashierCartService.update(new LambdaUpdateWrapper<TbCashierCart>()
.in(TbCashierCart::getId, resetCartIds)
.set(TbCashierCart::getUserCouponId, null));
}
}
mpCashierCartService.updateBatchById(newCashierCarts); mpCashierCartService.updateBatchById(newCashierCarts);
couponInfoDTO.setOutRecordList(outRecords); couponInfoDTO.setOutRecordList(outRecords);
@@ -1358,7 +1433,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
if (couponVo.getNum() < item.getNum()) { if (couponVo.getNum() < item.getNum()) {
throw new BadRequestException(couponVo.getName() + "数量不足: " + couponVo.getNum()); throw new BadRequestException(couponVo.getName() + "数量不足: " + couponVo.getNum());
} }
couponVo.setCurrentUseNum(item.getNum()); couponVo.setCurrentUseNum(BigDecimal.valueOf(item.getNum()));
infoDTO.getFullReductionCouponMap().put(couponVo.getId(), couponVo); infoDTO.getFullReductionCouponMap().put(couponVo.getId(), couponVo);
return; return;
} }
@@ -1366,7 +1441,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
if (couponVo == null) { if (couponVo == null) {
throw new BadRequestException("存在不可用优惠券"); throw new BadRequestException("存在不可用优惠券");
} }
couponVo.setCurrentUseNum(item.getNum()); couponVo.setCurrentUseNum(BigDecimal.valueOf(item.getNum()));
couponVo.setFinalUseNum(item.getNum()); couponVo.setFinalUseNum(item.getNum());
infoDTO.getProductCouponMap().put(item.getUserCouponId(), couponVo); infoDTO.getProductCouponMap().put(item.getUserCouponId(), couponVo);
}); });
@@ -1495,7 +1570,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
priceDTO.setOriginAmount(priceDTO.getOriginAmount().add(cashierCart.getTotalAmount())); priceDTO.setOriginAmount(priceDTO.getOriginAmount().add(cashierCart.getTotalAmount()));
} }
TbProductSku productSku = productSkuRepository.findById(Integer.valueOf(cashierCart.getSkuId())).orElse(null);
TbOrderDetail orderDetail = null; TbOrderDetail orderDetail = null;
if (cashierCart.getOrderId() != null) { if (cashierCart.getOrderId() != null) {
orderDetail = oldOrderDetailMap.get(cashierCart.getOrderId().toString() + cashierCart.getId()); orderDetail = oldOrderDetailMap.get(cashierCart.getOrderId().toString() + cashierCart.getId());
@@ -1507,8 +1581,14 @@ public class TbShopTableServiceImpl implements TbShopTableService {
priceDTO.getNewOrderDetailList().add(orderDetail); priceDTO.getNewOrderDetailList().add(orderDetail);
} }
if (Objects.nonNull(productSku)) { if (cashierCart.getIsTemporary() == null || cashierCart.getIsTemporary() == 0) {
orderDetail.setProductSkuName(productSku.getSpecSnap()); TbProductSku productSku = productSkuRepository.findById(Integer.valueOf(cashierCart.getSkuId())).orElse(null);
if (Objects.nonNull(productSku)) {
orderDetail.setProductSkuName(productSku.getSpecSnap());
}
orderDetail.setProductSkuId(Integer.valueOf(cashierCart.getSkuId()));
orderDetail.setProductId(Integer.valueOf(cashierCart.getProductId()));
} }
orderDetail.setUserCouponId(cashierCart.getUserCouponId()); orderDetail.setUserCouponId(cashierCart.getUserCouponId());
@@ -1518,8 +1598,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
orderDetail.setNum(cashierCart.getNumber()); orderDetail.setNum(cashierCart.getNumber());
orderDetail.setPrice(cashierCart.getSalePrice()); orderDetail.setPrice(cashierCart.getSalePrice());
orderDetail.setPriceAmount(cashierCart.getTotalAmount()); orderDetail.setPriceAmount(cashierCart.getTotalAmount());
orderDetail.setProductId(Integer.valueOf(cashierCart.getProductId()));
orderDetail.setProductSkuId(Integer.valueOf(cashierCart.getSkuId()));
orderDetail.setProductName(cashierCart.getName()); orderDetail.setProductName(cashierCart.getName());
orderDetail.setShopId(Integer.valueOf(cashierCart.getShopId())); orderDetail.setShopId(Integer.valueOf(cashierCart.getShopId()));
orderDetail.setPackAmount(cashierCart.getPackFee()); orderDetail.setPackAmount(cashierCart.getPackFee());
@@ -1530,6 +1608,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
orderDetail.setProductImg(cashierCart.getCoverImg()); orderDetail.setProductImg(cashierCart.getCoverImg());
orderDetail.setCartId(cashierCart.getId()); orderDetail.setCartId(cashierCart.getId());
orderDetail.setIsMember(cashierCart.getIsMember()); orderDetail.setIsMember(cashierCart.getIsMember());
orderDetail.setIsTemporary(cashierCart.getIsTemporary());
orderDetail.setOrderId(orderInfo == null ? null : orderInfo.getId()); orderDetail.setOrderId(orderInfo == null ? null : orderInfo.getId());
priceDTO.getOrderDetailList().add(orderDetail); priceDTO.getOrderDetailList().add(orderDetail);
} }
@@ -1577,7 +1656,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
orderInfo.setUseType(eatTypeInfoDTO.getUseType()); orderInfo.setUseType(eatTypeInfoDTO.getUseType());
if (seatCart != null) { if (seatCart != null) {
orderInfo.setSeatAmount(seatCart.getTotalAmount()); orderInfo.setSeatAmount(seatCart.getTotalAmount());
orderInfo.setSeatCount(seatCart.getNumber()); orderInfo.setSeatCount(seatCart.getNumber().intValue());
} }
if (createOrderDTO.getVipUserId() != null) { if (createOrderDTO.getVipUserId() != null) {
orderInfo.setMemberId(String.valueOf(shopUser.getId())); orderInfo.setMemberId(String.valueOf(shopUser.getId()));
@@ -1636,7 +1715,8 @@ public class TbShopTableServiceImpl implements TbShopTableService {
private void updateCartAndStock(List<TbCashierCart> newAddCashierCarts, TbOrderInfo orderInfo, ShopEatTypeInfoDTO shopEatTypeInfoDTO) { private void updateCartAndStock(List<TbCashierCart> newAddCashierCarts, TbOrderInfo orderInfo, ShopEatTypeInfoDTO shopEatTypeInfoDTO) {
// 更新购物车记录的orderId // 更新购物车记录的orderId
for (TbCashierCart cashierCart : newAddCashierCarts) { for (TbCashierCart cashierCart : newAddCashierCarts) {
if (!"-999".equals(cashierCart.getProductId())) { // 不为座位费临时菜扣除库存
if (!"-999".equals(cashierCart.getProductId()) && cashierCart.getIsTemporary() != null && cashierCart.getIsTemporary() == 0) {
TbProduct product = productMapper.selectById(cashierCart.getProductId()); TbProduct product = productMapper.selectById(cashierCart.getProductId());
TbProductSku productSku = productSkuRepository.findById(Integer.valueOf(cashierCart.getSkuId())).orElse(null); TbProductSku productSku = productSkuRepository.findById(Integer.valueOf(cashierCart.getSkuId())).orElse(null);
@@ -1926,7 +2006,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
tbActivateOutRecord.setGiveId(couponVo.getId()); tbActivateOutRecord.setGiveId(couponVo.getId());
tbActivateOutRecord.setVipUserId(payDTO.getVipUserId()); tbActivateOutRecord.setVipUserId(payDTO.getVipUserId());
tbActivateOutRecord.setType(TableConstant.ActivateOutRecord.Type.FULL_REDUCTION.getValue()); tbActivateOutRecord.setType(TableConstant.ActivateOutRecord.Type.FULL_REDUCTION.getValue());
tbActivateOutRecord.setUseNum(couponVo.getCurrentUseNum()); tbActivateOutRecord.setUseNum(couponVo.getCurrentUseNum().intValue());
tbActivateOutRecord.setStatus(TableConstant.ActivateOutRecord.Status.CLOSED.getValue()); tbActivateOutRecord.setStatus(TableConstant.ActivateOutRecord.Status.CLOSED.getValue());
tbActivateOutRecord.setCreateTime(DateUtil.date()); tbActivateOutRecord.setCreateTime(DateUtil.date());
tbActivateOutRecord.setRefNum(0); tbActivateOutRecord.setRefNum(0);
@@ -2377,6 +2457,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
throw new BadRequestException("当前台桌最大人数为: " + shopTable.getMaxCapacity()); throw new BadRequestException("当前台桌最大人数为: " + shopTable.getMaxCapacity());
} }
choseCountDTO.setUseType(!TableConstant.OrderInfo.UseType.TAKEOUT.equalsVals(choseCountDTO.getUseType())
&& StrUtil.isBlank(choseCountDTO.getTableId()) ? TableConstant.OrderInfo.UseType.NONE_TABLE.getValue() : choseCountDTO.getUseType());
LambdaQueryWrapper<TbCashierCart> query = new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> query = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, choseCountDTO.getShopId()) .eq(TbCashierCart::getShopId, choseCountDTO.getShopId())
.and(q -> q.eq(TbCashierCart::getMasterId, choseCountDTO.getMasterId()).or().isNull(TbCashierCart::getMasterId).or().eq(TbCashierCart::getMasterId, "")) .and(q -> q.eq(TbCashierCart::getMasterId, choseCountDTO.getMasterId()).or().isNull(TbCashierCart::getMasterId).or().eq(TbCashierCart::getMasterId, ""))
@@ -2404,16 +2487,16 @@ public class TbShopTableServiceImpl implements TbShopTableService {
tbCashierCart.setProductId("-999"); tbCashierCart.setProductId("-999");
tbCashierCart.setSkuId("-999"); tbCashierCart.setSkuId("-999");
tbCashierCart.setPackFee(BigDecimal.ZERO); tbCashierCart.setPackFee(BigDecimal.ZERO);
tbCashierCart.setNumber(choseCountDTO.getNum()); tbCashierCart.setNumber(BigDecimal.valueOf(choseCountDTO.getNum()));
tbCashierCart.setTotalNumber(choseCountDTO.getNum()); tbCashierCart.setTotalNumber(BigDecimal.valueOf(choseCountDTO.getNum()));
tbCashierCart.setUseType(choseCountDTO.getUseType()); tbCashierCart.setUseType(choseCountDTO.getUseType());
tbCashierCartMapper.insert(tbCashierCart); tbCashierCartMapper.insert(tbCashierCart);
} else { } else {
tbCashierCart.setMemberPrice(shopInfo.getTableFee()); tbCashierCart.setMemberPrice(shopInfo.getTableFee());
tbCashierCart.setStatus(TableConstant.CashierCart.Status.CREATE.getValue()); tbCashierCart.setStatus(TableConstant.CashierCart.Status.CREATE.getValue());
tbCashierCart.setTotalAmount(new BigDecimal(choseCountDTO.getNum()).multiply(shopInfo.getTableFee())); tbCashierCart.setTotalAmount(new BigDecimal(choseCountDTO.getNum()).multiply(shopInfo.getTableFee()));
tbCashierCart.setNumber(choseCountDTO.getNum()); tbCashierCart.setNumber(BigDecimal.valueOf(choseCountDTO.getNum()));
tbCashierCart.setTotalNumber(choseCountDTO.getNum()); tbCashierCart.setTotalNumber(BigDecimal.valueOf(choseCountDTO.getNum()));
tbCashierCart.setUseType(choseCountDTO.getUseType()); tbCashierCart.setUseType(choseCountDTO.getUseType());
tbCashierCartMapper.updateById(tbCashierCart); tbCashierCartMapper.updateById(tbCashierCart);
} }
@@ -2535,7 +2618,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
mpCashierCartService.update(new LambdaUpdateWrapper<TbCashierCart>() mpCashierCartService.update(new LambdaUpdateWrapper<TbCashierCart>()
.eq(TbCashierCart::getId, item.getId()) .eq(TbCashierCart::getId, item.getId())
.set(TbCashierCart::getPackFee, product.getPackFee() != null ? .set(TbCashierCart::getPackFee, product.getPackFee() != null ?
product.getPackFee().multiply(BigDecimal.valueOf(item.getNumber())) : BigDecimal.ZERO) product.getPackFee().multiply(item.getNumber()) : BigDecimal.ZERO)
.set(TbCashierCart::getTableId, null) .set(TbCashierCart::getTableId, null)
.set(TbCashierCart::getUseType, OrderUseTypeEnum.TAKEOUT.getValue()) .set(TbCashierCart::getUseType, OrderUseTypeEnum.TAKEOUT.getValue())
.set(TbCashierCart::getIsPack, "true")); .set(TbCashierCart::getIsPack, "true"));
@@ -2550,7 +2633,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
TbProduct product = productMap.get(item.getProductId().toString()); TbProduct product = productMap.get(item.getProductId().toString());
// 设置打包费 // 设置打包费
item.setPackAmount(product.getPackFee() != null ? item.setPackAmount(product.getPackFee() != null ?
product.getPackFee().multiply(BigDecimal.valueOf(item.getNum())) : BigDecimal.ZERO); product.getPackFee().multiply(item.getNum()) : BigDecimal.ZERO);
}); });
if (!detailList.isEmpty()) { if (!detailList.isEmpty()) {
@@ -2575,7 +2658,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
private HashMap<String, Object> updateReturnOrderInfo(ReturnOrderDTO returnOrderDTO, TbOrderInfo oldOrderInfo, boolean isOnline) { private HashMap<String, Object> updateReturnOrderInfo(ReturnOrderDTO returnOrderDTO, TbOrderInfo oldOrderInfo, boolean isOnline) {
ArrayList<Integer> detailIds = new ArrayList<>(); ArrayList<Integer> detailIds = new ArrayList<>();
HashMap<String, Integer> returnNumMap = new HashMap<>(); HashMap<String, BigDecimal> returnNumMap = new HashMap<>();
returnOrderDTO.getOrderDetails().forEach(item -> { returnOrderDTO.getOrderDetails().forEach(item -> {
detailIds.add(item.getId()); detailIds.add(item.getId());
returnNumMap.put(item.getId().toString(), item.getNum()); returnNumMap.put(item.getId().toString(), item.getNum());
@@ -2597,20 +2680,20 @@ public class TbShopTableServiceImpl implements TbShopTableService {
if (orderDetail.getUserCouponId() != null) { if (orderDetail.getUserCouponId() != null) {
throw new BadRequestException("选择了优惠券抵扣商品,无法退款"); throw new BadRequestException("选择了优惠券抵扣商品,无法退款");
} }
Integer returnNum = returnNumMap.get(orderDetail.getId().toString()); BigDecimal returnNum = returnNumMap.get(orderDetail.getId().toString());
int remainNum = orderDetail.getNum() - returnNum; BigDecimal remainNum = orderDetail.getNum().subtract(returnNum);
if (remainNum < 0) { if (remainNum.compareTo(BigDecimal.ZERO) < 0) {
throw new BadRequestException("{}最多可退数量为: {}", orderDetail.getProductName(), orderDetail.getNum()); throw new BadRequestException("{}最多可退数量为: {}", orderDetail.getProductName(), orderDetail.getNum());
} }
// 将未退款的剩余订单详情重新生成记录 // 将未退款的剩余订单详情重新生成记录
BigDecimal packFee = orderDetail.getPackAmount().divide(BigDecimal.valueOf(orderDetail.getNum()), RoundingMode.HALF_UP); BigDecimal packFee = orderDetail.getPackAmount().divide(orderDetail.getNum(), RoundingMode.HALF_UP);
if (remainNum > 0) { if (remainNum.compareTo(BigDecimal.ZERO) > 0) {
// 单个打包费 // 单个打包费
BigDecimal remainPackFee = packFee.multiply(BigDecimal.valueOf(remainNum)); BigDecimal remainPackFee = packFee.multiply(remainNum);
TbOrderDetail remainOrderDetail = BeanUtil.copyProperties(orderDetail, TbOrderDetail.class); TbOrderDetail remainOrderDetail = BeanUtil.copyProperties(orderDetail, TbOrderDetail.class);
remainOrderDetail.setNum(remainNum); remainOrderDetail.setNum(remainNum);
remainOrderDetail.setPriceAmount(BigDecimal.valueOf(remainNum).multiply(orderDetail.getPrice()) remainOrderDetail.setPriceAmount(remainNum.multiply(orderDetail.getPrice())
.add(remainPackFee)); .add(remainPackFee));
remainOrderDetail.setPackAmount(remainPackFee); remainOrderDetail.setPackAmount(remainPackFee);
remainOrderDetail.setReturnNum("0"); remainOrderDetail.setReturnNum("0");
@@ -2619,16 +2702,16 @@ public class TbShopTableServiceImpl implements TbShopTableService {
} }
returnAmount = returnAmount.add(orderDetail.getPriceAmount() returnAmount = returnAmount.add(orderDetail.getPriceAmount()
.divide(new BigDecimal(orderDetail.getNum()), 2, RoundingMode.DOWN) .divide(orderDetail.getNum(), 2, RoundingMode.DOWN)
.multiply(BigDecimal.valueOf(returnNum))); .multiply(returnNum));
saleAmount = saleAmount.add(orderDetail.getPrice()); saleAmount = saleAmount.add(orderDetail.getPrice());
packAMount = packAMount.add(orderDetail.getPackAmount() packAMount = packAMount.add(orderDetail.getPackAmount()
.divide(new BigDecimal(orderDetail.getNum()), 2, RoundingMode.DOWN) .divide(orderDetail.getNum(), 2, RoundingMode.DOWN)
.multiply(BigDecimal.valueOf(returnNum))); .multiply(returnNum));
BigDecimal returnPackFee = packFee.multiply(BigDecimal.valueOf(returnNum)); BigDecimal returnPackFee = packFee.multiply(returnNum);
orderDetail.setNum(returnNum); orderDetail.setNum(returnNum);
orderDetail.setPriceAmount(BigDecimal.valueOf(returnNum).multiply(orderDetail.getPrice()) orderDetail.setPriceAmount(returnNum.multiply(orderDetail.getPrice())
.add(returnPackFee)); .add(returnPackFee));
orderDetail.setPackAmount(returnPackFee); orderDetail.setPackAmount(returnPackFee);
orderDetail.setRefundNumber(returnNum); orderDetail.setRefundNumber(returnNum);
@@ -2707,7 +2790,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
productMapper.incrStock(product.getId(), detail.getNum()); productMapper.incrStock(product.getId(), detail.getNum());
tbProductStockDetail.setLeftNumber(product.getStockNumber()); tbProductStockDetail.setLeftNumber(product.getStockNumber());
tbProductStockDetail.setStockNumber(Double.valueOf(detail.getNum())); tbProductStockDetail.setStockNumber(detail.getNum().doubleValue());
producSkutMapper.decrRealSalesNumber(productSku.getId(), detail.getNum()); producSkutMapper.decrRealSalesNumber(productSku.getId(), detail.getNum());
} }

View File

@@ -8,6 +8,7 @@ import cn.ysk.cashier.dto.product.TbProductDto;
import cn.ysk.cashier.dto.product.TbProductQueryCriteria; import cn.ysk.cashier.dto.product.TbProductQueryCriteria;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import java.math.BigDecimal;
import java.util.Map; import java.util.Map;
import java.util.List; import java.util.List;
import java.io.IOException; import java.io.IOException;
@@ -96,7 +97,7 @@ public interface TbProductService {
* @param productId 商品id * @param productId 商品id
* @param number 增加数量 * @param number 增加数量
*/ */
void incrStockNumber(String productId, Integer number); void incrStockNumber(String productId, BigDecimal number);
/** /**
* 返还库存 * 返还库存
@@ -104,7 +105,7 @@ public interface TbProductService {
* @param productSkuId sku * @param productSkuId sku
* @param num 数量 * @param num 数量
*/ */
void returnStockByPro(Integer productId, Integer productSkuId, Integer num); void returnStockByPro(Integer productId, Integer productSkuId, BigDecimal num);
Object activateProduct(Integer page, Integer size, Integer categoryId, Integer shopId, Integer productId); Object activateProduct(Integer page, Integer size, Integer categoryId, Integer shopId, Integer productId);
} }

View File

@@ -133,10 +133,10 @@ public class WxAccountUtil {
} }
public void sendStockMsg(String shopName, String productName, int stock, String openId, ShopWxMsgTypeEnum shopWxMsgTypeEnum, Integer shopId) { public void sendStockMsg(String shopName, String productName, double stock, String openId, ShopWxMsgTypeEnum shopWxMsgTypeEnum, Integer shopId) {
stock = Math.max(stock, 0); stock = Math.max(stock, 0);
Integer finalStock = stock; double finalStock = stock;
Map<String, Object> data = new HashMap<String, Object>() {{ Map<String, Object> data = new HashMap<String, Object>() {{
put("thing22", new HashMap<String, Object>() {{ put("thing22", new HashMap<String, Object>() {{
put("value", shopName); put("value", shopName);

View File

@@ -95,11 +95,11 @@ public class WxMsgUtils {
} }
} }
public void aboardStockMsg(String shopName, Integer shopId, String proName, Integer stock) { public void aboardStockMsg(String shopName, Integer shopId, String proName, double stock) {
if (!checkIsOpen(shopId, ShopWxMsgTypeEnum.OPERATION_MSG)) { if (!checkIsOpen(shopId, ShopWxMsgTypeEnum.OPERATION_MSG)) {
return; return;
} }
List<TbShopOpenId> openIds = tbShopOpenIdService.lambdaQuery() List<TbShopOpenId> openIds = tbShopOpenIdService.lambdaQuery()
.eq(TbShopOpenId::getShopId, shopId) .eq(TbShopOpenId::getShopId, shopId)
.eq(TbShopOpenId::getStatus, 1) .eq(TbShopOpenId::getStatus, 1)

View File

@@ -28,7 +28,7 @@ public class TbUserCouponVo {
private String useRestrictions; private String useRestrictions;
private boolean isUse = false; private boolean isUse = false;
//当前使用数量 //当前使用数量
private Integer currentUseNum; private BigDecimal currentUseNum;
private Integer finalUseNum; private Integer finalUseNum;
private BigDecimal finalDiscountAmount = new BigDecimal(0); private BigDecimal finalDiscountAmount = new BigDecimal(0);