feat: 1.点餐num更改为decimal类型 2.用餐人数根据tableId设置useType
This commit is contained in:
@@ -2,10 +2,8 @@ package cn.ysk.cashier.dto.shoptable;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class AddCartDTO {
|
||||
@@ -19,8 +17,8 @@ public class AddCartDTO {
|
||||
private Integer shopId;
|
||||
private String tableId;
|
||||
@NotNull
|
||||
@Min(1)
|
||||
private Integer num;
|
||||
@DecimalMin("0.01")
|
||||
private BigDecimal num;
|
||||
private boolean isPack;
|
||||
private boolean isGift;
|
||||
private Integer cartId;
|
||||
|
||||
@@ -2,10 +2,7 @@ package cn.ysk.cashier.dto.shoptable;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@@ -22,8 +19,10 @@ public class AddTemporaryDishesDTO {
|
||||
@Min(value = 0, message = "价格最低为0")
|
||||
private BigDecimal price;
|
||||
@NotNull
|
||||
@Min(1)
|
||||
private Integer num;
|
||||
@DecimalMin(value = "0.01")
|
||||
private BigDecimal num;
|
||||
@NotBlank(message = "单位不为空")
|
||||
private String unit;
|
||||
private String note;
|
||||
// 用餐类型
|
||||
@NotBlank
|
||||
|
||||
@@ -2,8 +2,10 @@ package cn.ysk.cashier.dto.shoptable;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.DecimalMin;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class ReturnCartDTO {
|
||||
@@ -13,7 +15,7 @@ public class ReturnCartDTO {
|
||||
private Integer shopId;
|
||||
private Long tableId;
|
||||
@NotNull
|
||||
@Min(value = 1, message = "最小数量为1")
|
||||
private Integer num;
|
||||
@DecimalMin(value = "0.01", message = "最小数量为0.01")
|
||||
private BigDecimal num;
|
||||
private String note;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import javax.validation.Valid;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@@ -17,7 +18,7 @@ public class ReturnOrderDTO {
|
||||
private Integer id;
|
||||
@NotNull
|
||||
@Min(1)
|
||||
private Integer num;
|
||||
private BigDecimal num;
|
||||
}
|
||||
@NotNull
|
||||
private Integer orderId;
|
||||
|
||||
@@ -2,9 +2,11 @@ package cn.ysk.cashier.dto.shoptable;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.DecimalMin;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class UpdateCartDTO {
|
||||
@@ -15,8 +17,8 @@ public class UpdateCartDTO {
|
||||
@NotNull
|
||||
private Integer shopId;
|
||||
@NotNull
|
||||
@Min(0)
|
||||
private Integer num;
|
||||
@DecimalMin("0")
|
||||
private BigDecimal num;
|
||||
private String note;
|
||||
private Boolean isPack;
|
||||
private Boolean isGift;
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.apache.ibatis.annotations.Update;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
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} " +
|
||||
"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;")
|
||||
List<TbCashierCart> selectPlaceCart(Integer shopId, long time, String state);
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.apache.ibatis.annotations.Update;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
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} " +
|
||||
"where id=#{id}")
|
||||
int updateNumAmountStatus(Integer id, String status, int changeNum);
|
||||
int updateNumAmountStatus(Integer id, String status, BigDecimal changeNum);
|
||||
|
||||
/**
|
||||
* 查询包含打包费和是否赠送的订单详情信息
|
||||
|
||||
@@ -6,6 +6,8 @@ import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.apache.ibatis.annotations.Update;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
|
||||
public interface TbProducSkutMapper extends BaseMapper<TbProductSku> {
|
||||
|
||||
@@ -29,5 +31,5 @@ public interface TbProducSkutMapper extends BaseMapper<TbProductSku> {
|
||||
int decrStockUnCheck(String id, int num);
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@ import org.apache.ibatis.annotations.Select;
|
||||
import org.apache.ibatis.annotations.Update;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
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}")
|
||||
@@ -17,11 +19,11 @@ public interface TbProductMapper extends BaseMapper<TbProduct> {
|
||||
TbProduct selectByIdAndShopId(@Param("shopId") Integer shopId, @Param("id") Integer 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")
|
||||
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}")
|
||||
int decrStockUnCheck(Integer id, int num);
|
||||
int decrStockUnCheck(Integer id, BigDecimal num);
|
||||
}
|
||||
|
||||
@@ -85,15 +85,15 @@ public class TbCashierCart implements Serializable {
|
||||
@Column(name = "`number`", nullable = false)
|
||||
@NotNull
|
||||
@ApiModelProperty(value = "结余数量")
|
||||
private Integer number;
|
||||
private BigDecimal number;
|
||||
|
||||
@Column(name = "`total_number`")
|
||||
@ApiModelProperty(value = "总下单数量")
|
||||
private Integer totalNumber;
|
||||
private BigDecimal totalNumber;
|
||||
|
||||
@Column(name = "`refund_number`")
|
||||
@ApiModelProperty(value = "退单数量")
|
||||
private Integer refundNumber;
|
||||
private BigDecimal refundNumber;
|
||||
|
||||
@Column(name = "`category_id`")
|
||||
@ApiModelProperty(value = "分类Id")
|
||||
@@ -170,6 +170,7 @@ public class TbCashierCart implements Serializable {
|
||||
private Integer isMember;
|
||||
// 是否临时菜品
|
||||
private Integer isTemporary;
|
||||
private String unit;
|
||||
|
||||
public void copy(TbCashierCart source) {
|
||||
BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
|
||||
@@ -186,9 +187,9 @@ public class TbCashierCart implements Serializable {
|
||||
totalAmount = packFee;
|
||||
} else {
|
||||
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 {
|
||||
totalAmount = BigDecimal.valueOf(totalNumber).multiply(salePrice).add(packFee);
|
||||
totalAmount = totalNumber.multiply(salePrice).add(packFee);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -197,14 +198,15 @@ public class TbCashierCart implements Serializable {
|
||||
* 获取总价不包含打包费
|
||||
*
|
||||
*/
|
||||
public BigDecimal getTotalAmountByNum(Integer num) {
|
||||
public BigDecimal getTotalAmountByNum(BigDecimal num) {
|
||||
if (num == null) {
|
||||
num = totalNumber;
|
||||
}
|
||||
if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
|
||||
return BigDecimal.valueOf(num).multiply(memberPrice);
|
||||
return num.multiply(memberPrice);
|
||||
} else {
|
||||
return BigDecimal.valueOf(num).multiply(salePrice);
|
||||
return num.multiply(salePrice);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ public class TbOrderDetail implements Serializable {
|
||||
|
||||
@Column(name = "`num`")
|
||||
@ApiModelProperty(value = "num")
|
||||
private Integer num;
|
||||
private BigDecimal num;
|
||||
|
||||
@Column(name = "`product_name`")
|
||||
@ApiModelProperty(value = "productName")
|
||||
@@ -103,7 +103,7 @@ public class TbOrderDetail implements Serializable {
|
||||
@Transient
|
||||
@ApiModelProperty(value = "退单数量")
|
||||
@TableField(exist = false)
|
||||
private Integer refundNumber;
|
||||
private BigDecimal refundNumber;
|
||||
|
||||
@Column(name = "`is_vip`")
|
||||
@ApiModelProperty(value = "isVip")
|
||||
|
||||
@@ -34,7 +34,7 @@ public interface TbProductRepository extends JpaRepository<TbProduct, Integer>,
|
||||
|
||||
@Modifying
|
||||
@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
|
||||
@Modifying
|
||||
@@ -44,7 +44,7 @@ public interface TbProductRepository extends JpaRepository<TbProduct, Integer>,
|
||||
|
||||
@Modifying
|
||||
@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")
|
||||
|
||||
@@ -178,17 +178,26 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService {
|
||||
List<TbFullOrderDetail> details = tbOrderDetailMapper.selectFullInfoByOrderId(tbOrderInfo.getId());
|
||||
if (!tbOrderInfo.getOrderType().equals("return")) {
|
||||
List<TbOrderInfo> tbOrderInfos = tbOrderInfoRepository.selTbOrdersBysource(tbOrderInfo.getId(), tbOrderInfo.getShopId());
|
||||
Map<Integer, Integer> map;
|
||||
Map<Integer, BigDecimal> map;
|
||||
if (!CollectionUtils.isEmpty(tbOrderInfos)) {
|
||||
List<Integer> ids = tbOrderInfos.stream().map(TbOrderInfo::getId).collect(Collectors.toList());
|
||||
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);
|
||||
} else {
|
||||
map = new HashMap<>();
|
||||
}
|
||||
details.parallelStream().forEach(detail -> {
|
||||
Integer refundNumber = map.get(detail.getProductSkuId());
|
||||
BigDecimal refundNumber = map.get(detail.getProductSkuId());
|
||||
if (refundNumber != null) {
|
||||
detail.setRefundNumber(refundNumber);
|
||||
}
|
||||
|
||||
@@ -735,12 +735,12 @@ public class TbProductServiceImpl implements TbProductService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incrStockNumber(String productId, Integer number) {
|
||||
public void incrStockNumber(String productId, BigDecimal number) {
|
||||
tbProductRepository.incrProductStockNumber(Integer.valueOf(productId), number);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void returnStockByPro(Integer productId, Integer productSkuId, Integer num) {
|
||||
public void returnStockByPro(Integer productId, Integer productSkuId, BigDecimal num) {
|
||||
if (productId > 0) {
|
||||
log.info("开始返还库存,订单超时取消,商品id:{}", productId);
|
||||
TbProduct product = tbProductRepository.findById(productId).orElse(null);
|
||||
|
||||
@@ -425,7 +425,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
throw new BadRequestException("已下单商品仅支持退单操作");
|
||||
}
|
||||
|
||||
if (updateCartDTO.getNum() == 0) {
|
||||
if (updateCartDTO.getNum().compareTo(BigDecimal.ZERO) == 0) {
|
||||
cashierCartRepository.deleteById(updateCartDTO.getCartId());
|
||||
return null;
|
||||
}
|
||||
@@ -452,18 +452,18 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
tbCashierCart.setTradeDay(DateUtils.getDay());
|
||||
tbCashierCart.setStatus("create");
|
||||
tbCashierCart.setSalePrice(tbCashierCart.getSalePrice());
|
||||
tbCashierCart.setTotalAmount(new BigDecimal(updateCartDTO.getNum()).multiply(tbCashierCart.getSalePrice()));
|
||||
tbCashierCart.setTotalAmount(updateCartDTO.getNum().multiply(tbCashierCart.getSalePrice()));
|
||||
tbCashierCart.setNote(updateCartDTO.getNote());
|
||||
|
||||
if (updateCartDTO.getIsPack() != null) {
|
||||
if (!updateCartDTO.getIsPack()) {
|
||||
tbCashierCart.setPackFee(BigDecimal.ZERO);
|
||||
tbCashierCart.setTotalAmount(tbCashierCart.getSalePrice().multiply(BigDecimal.valueOf(updateCartDTO.getNum())));
|
||||
tbCashierCart.setTotalAmount(tbCashierCart.getSalePrice().multiply(updateCartDTO.getNum()));
|
||||
} else {
|
||||
if (product != null) {
|
||||
tbCashierCart.setPackFee(new BigDecimal(updateCartDTO.getNum()).multiply(product.getPackFee()));
|
||||
tbCashierCart.setPackFee(updateCartDTO.getNum().multiply(product.getPackFee()));
|
||||
}
|
||||
tbCashierCart.setTotalAmount(tbCashierCart.getSalePrice().multiply(BigDecimal.valueOf(updateCartDTO.getNum()))
|
||||
tbCashierCart.setTotalAmount(tbCashierCart.getSalePrice().multiply(updateCartDTO.getNum())
|
||||
.add(tbCashierCart.getPackFee()));
|
||||
}
|
||||
tbCashierCart.setIsPack(updateCartDTO.getIsPack() ? "true" : "false");
|
||||
@@ -559,14 +559,14 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
tbCashierCart.setIsPack(String.valueOf(addCartDTO.isPack()));
|
||||
tbCashierCart.setIsGift(String.valueOf(addCartDTO.isGift()));
|
||||
tbCashierCart.setSalePrice(productSku.getSalePrice());
|
||||
tbCashierCart.setTotalAmount(new BigDecimal(addCartDTO.getNum()).multiply(productSku.getSalePrice()));
|
||||
tbCashierCart.setTotalAmount(addCartDTO.getNum().multiply(productSku.getSalePrice()));
|
||||
tbCashierCart.setSkuName(productSku.getSpecSnap());
|
||||
// 设置打包费
|
||||
if (!addCartDTO.isPack() && !shopEatTypeInfoDTO.isTakeout()) {
|
||||
tbCashierCart.setPackFee(BigDecimal.ZERO);
|
||||
} else {
|
||||
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()));
|
||||
|
||||
}
|
||||
@@ -588,12 +588,12 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
} else {
|
||||
tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() != null ? 1 : 0);
|
||||
tbCashierCart.setNote(addCartDTO.getNote());
|
||||
tbCashierCart.setTotalAmount(new BigDecimal(addCartDTO.getNum()).multiply(productSku.getSalePrice()));
|
||||
tbCashierCart.setTotalAmount(addCartDTO.getNum().multiply(productSku.getSalePrice()));
|
||||
|
||||
if (!addCartDTO.isPack()) {
|
||||
tbCashierCart.setPackFee(BigDecimal.ZERO);
|
||||
} else {
|
||||
tbCashierCart.setPackFee(new BigDecimal(addCartDTO.getNum()).multiply(product.getPackFee()));
|
||||
tbCashierCart.setPackFee(addCartDTO.getNum().multiply(product.getPackFee()));
|
||||
tbCashierCart.setTotalAmount(tbCashierCart.getTotalAmount().add(tbCashierCart.getPackFee()));
|
||||
|
||||
}
|
||||
@@ -610,7 +610,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
// 设置打包费
|
||||
if (shopEatTypeInfoDTO.isTakeout()) {
|
||||
tbCashierCart.setPackFee(product.getPackFee() != null ?
|
||||
product.getPackFee().multiply(BigDecimal.valueOf(addCartDTO.getNum())) : BigDecimal.ZERO);
|
||||
product.getPackFee().multiply(addCartDTO.getNum()) : BigDecimal.ZERO);
|
||||
}
|
||||
cashierCartMapper.updateById(tbCashierCart);
|
||||
}
|
||||
@@ -646,7 +646,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
tbCashierCart.setStatus("create");
|
||||
tbCashierCart.setIsPack("false");
|
||||
tbCashierCart.setIsGift("false");
|
||||
tbCashierCart.setTotalAmount(new BigDecimal(temporaryDishesDTO.getNum()).multiply(temporaryDishesDTO.getPrice()));
|
||||
tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice()));
|
||||
tbCashierCart.setPackFee(BigDecimal.ZERO);
|
||||
tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum());
|
||||
tbCashierCart.setNumber(temporaryDishesDTO.getNum());
|
||||
@@ -655,12 +655,13 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
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(new BigDecimal(temporaryDishesDTO.getNum()).multiply(temporaryDishesDTO.getPrice()));
|
||||
tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice()));
|
||||
tbCashierCart.setPackFee(BigDecimal.ZERO);
|
||||
tbCashierCart.setIsPack("false");
|
||||
tbCashierCart.setIsGift("false");
|
||||
@@ -668,6 +669,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
tbCashierCart.setNumber(temporaryDishesDTO.getNum());
|
||||
tbCashierCart.setUpdatedAt(DateUtil.current());
|
||||
tbCashierCart.setIsTemporary(1);
|
||||
tbCashierCart.setUnit(temporaryDishesDTO.getUnit());
|
||||
cashierCartMapper.updateById(tbCashierCart);
|
||||
}
|
||||
|
||||
@@ -761,7 +763,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
throw new BadRequestException("购物车商品不存在或已退单");
|
||||
}
|
||||
|
||||
if (removeCartDTO.getNum() > cashierCart.getNumber()) {
|
||||
if (removeCartDTO.getNum().compareTo(cashierCart.getNumber()) > 0) {
|
||||
throw new BadRequestException("最大退菜数量为: {}", cashierCart.getNumber());
|
||||
}
|
||||
|
||||
@@ -810,7 +812,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
returnCart.setNumber(removeCartDTO.getNum());
|
||||
returnCart.setId(null);
|
||||
returnCart.setTotalNumber(removeCartDTO.getNum());
|
||||
BigDecimal returnCartAmount = returnCart.getSalePrice().multiply(BigDecimal.valueOf(returnCart.getNumber()));
|
||||
BigDecimal returnCartAmount = returnCart.getSalePrice().multiply(returnCart.getNumber());
|
||||
returnCart.setTotalAmount(returnCartAmount);
|
||||
returnCart.setStatus("return");
|
||||
cashierCartMapper.insert(returnCart);
|
||||
@@ -826,8 +828,8 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
returnOrderDetail.setRefundRemark(removeCartDTO.getNote());
|
||||
orderDetailMapper.insert(returnOrderDetail);
|
||||
|
||||
cashierCartMapper.updateNumAmountStatus(cashierCart.getId(), cashierCart.getStatus(), -returnCart.getNumber());
|
||||
orderDetailMapper.updateNumAmountStatus(orderDetail.getId(), orderDetail.getStatus(), -returnCart.getNumber());
|
||||
cashierCartMapper.updateNumAmountStatus(cashierCart.getId(), cashierCart.getStatus(), returnCart.getNumber().negate());
|
||||
orderDetailMapper.updateNumAmountStatus(orderDetail.getId(), orderDetail.getStatus(), returnCart.getNumber().negate());
|
||||
if (TableConstant.OrderInfo.UseType.DINE_IN_AFTER.equalsVals(tbOrderDetail.getUseType()) && !isSeatCart) {
|
||||
rabbitMsgUtils.printDishesTicket(returnOrderDetail.getOrderId(), true, returnOrderDetail);
|
||||
}
|
||||
@@ -837,9 +839,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
|
||||
if (cashierCart.getOrderId() != null) {
|
||||
// 减少订单金额
|
||||
orderInfoMapper.updateOrderAmount(cashierCart.getOrderId(), orderDetail.getPriceAmount().divide(BigDecimal.valueOf(orderDetail.getNum()), RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(removeCartDTO.getNum())), orderDetail.getPackAmount().divide(BigDecimal.valueOf(orderDetail.getNum()), RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(removeCartDTO.getNum())));
|
||||
orderInfoMapper.updateOrderAmount(cashierCart.getOrderId(), orderDetail.getPriceAmount().divide(orderDetail.getNum(), RoundingMode.HALF_UP)
|
||||
.multiply(removeCartDTO.getNum()), orderDetail.getPackAmount().divide(orderDetail.getNum(), RoundingMode.HALF_UP)
|
||||
.multiply(removeCartDTO.getNum()));
|
||||
}
|
||||
|
||||
|
||||
@@ -986,7 +988,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
* @param skuId sku
|
||||
* @param addNum 增加的库存数量
|
||||
*/
|
||||
public void incrStock(Integer productId, Integer skuId, Integer addNum) {
|
||||
public void incrStock(Integer productId, Integer skuId, BigDecimal addNum) {
|
||||
productMapper.incrStock(productId, addNum);
|
||||
}
|
||||
|
||||
@@ -997,7 +999,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
* @param skuId sku
|
||||
* @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);
|
||||
if (product.getIsStock() == 1) {
|
||||
if (productMapper.decrStock(productId, decrNum) < 1) {
|
||||
@@ -1042,14 +1044,14 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
if (cashierCart.getOrderId() != null) {
|
||||
String message = redisTemplate.opsForValue().get(RedisConstant.ORDER_PRODUCT_NUM + cashierCart.getId());
|
||||
if (message != null) {
|
||||
int lastNum = Integer.parseInt(message);
|
||||
BigDecimal lastNum = new BigDecimal(message);
|
||||
// 数量减少, 返还库存
|
||||
if (lastNum > cashierCart.getNumber()) {
|
||||
incrStock(Integer.parseInt(cashierCart.getProductId()), Integer.parseInt(cashierCart.getSkuId()), lastNum - cashierCart.getNumber());
|
||||
if (lastNum.compareTo(cashierCart.getNumber()) > 0) {
|
||||
incrStock(Integer.parseInt(cashierCart.getProductId()), Integer.parseInt(cashierCart.getSkuId()), lastNum.subtract(cashierCart.getNumber()));
|
||||
} 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;
|
||||
|
||||
@@ -1095,7 +1097,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
*
|
||||
* @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);
|
||||
if (product.getWarnLine() == null) {
|
||||
return;
|
||||
@@ -1108,9 +1110,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
if (product.getStockNumber() == null) {
|
||||
product.setStockNumber(0);
|
||||
}
|
||||
if (product.getStockNumber() - num <= product.getWarnLine()) {
|
||||
if (product.getStockNumber() - num.doubleValue() <= product.getWarnLine()) {
|
||||
wxMsgUtils.aboardStockMsg(shopInfo.getShopName(), shopId, product.getName(),
|
||||
product.getStockNumber() - num);
|
||||
product.getStockNumber() - num.doubleValue());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1266,7 +1268,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
List<TbUserCouponVo> tbUserCouponVos = couponMap.get(productId);
|
||||
if (tbUserCouponVos == null || tbUserCouponVos.isEmpty()) return null;
|
||||
for (TbUserCouponVo tbUserCouponVo : tbUserCouponVos) {
|
||||
if (tbUserCouponVo.getCurrentUseNum() > 0) {
|
||||
if (tbUserCouponVo.getCurrentUseNum().compareTo(BigDecimal.ZERO) > 0) {
|
||||
return tbUserCouponVo;
|
||||
}
|
||||
}
|
||||
@@ -1277,22 +1279,22 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
List<TbUserCouponVo>> usedCouponMap, BigDecimal discountAmount, ArrayList<TbCashierCart> balanceCartList,
|
||||
ArrayList<TbActivateOutRecord> outRecords, Integer memberId) {
|
||||
TbUserCouponVo couponVo = getCanUseCoupon(couponMap, cashierCart.getProductId());
|
||||
if (couponVo != null && couponVo.getCurrentUseNum() > 0) {
|
||||
if (couponVo != null && couponVo.getCurrentUseNum().compareTo(BigDecimal.ZERO) > 0) {
|
||||
BigDecimal currentUseNum;
|
||||
List<TbUserCouponVo> tbUserCouponVos = usedCouponMap.computeIfAbsent(Integer.valueOf(cashierCart.getProductId()), k -> new ArrayList<>());
|
||||
tbUserCouponVos.add(couponVo);
|
||||
|
||||
TbCashierCart balanceCart = null;
|
||||
if (cashierCart.getNumber() < couponVo.getCurrentUseNum()) {
|
||||
if (cashierCart.getNumber().compareTo(couponVo.getCurrentUseNum()) < 0) {
|
||||
cashierCart.setUserCouponId(couponVo.getId());
|
||||
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null));
|
||||
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber());
|
||||
currentUseNum = BigDecimal.valueOf(cashierCart.getNumber());
|
||||
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber()));
|
||||
currentUseNum = cashierCart.getNumber();
|
||||
// 优惠券数量小于购物车数量,分割购物车数据
|
||||
}else if (cashierCart.getNumber() > couponVo.getCurrentUseNum()) {
|
||||
currentUseNum = BigDecimal.valueOf(couponVo.getCurrentUseNum());
|
||||
BigDecimal cartNum = BigDecimal.valueOf(cashierCart.getNumber());
|
||||
int balanceNum = cashierCart.getTotalNumber() - couponVo.getCurrentUseNum();
|
||||
}else if (cashierCart.getNumber().compareTo(couponVo.getCurrentUseNum()) > 0) {
|
||||
currentUseNum = couponVo.getCurrentUseNum();
|
||||
BigDecimal cartNum = BigDecimal.valueOf(cashierCart.getNumber().intValue());
|
||||
BigDecimal balanceNum = cashierCart.getTotalNumber().subtract(couponVo.getCurrentUseNum());
|
||||
BigDecimal singlePackFee = cashierCart.getPackFee().divide(cartNum, RoundingMode.HALF_UP);
|
||||
cashierCart.setPackFee(singlePackFee.multiply(currentUseNum));
|
||||
BigDecimal totalAmountByNum = cashierCart.getTotalAmountByNum(couponVo.getCurrentUseNum());
|
||||
@@ -1301,14 +1303,14 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
cashierCart.setTotalNumber(couponVo.getCurrentUseNum());
|
||||
cashierCart.setUserCouponId(couponVo.getId());
|
||||
discountAmount = discountAmount.add(totalAmountByNum);
|
||||
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber());
|
||||
currentUseNum = BigDecimal.valueOf(cashierCart.getNumber());
|
||||
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber()));
|
||||
currentUseNum = cashierCart.getNumber();
|
||||
|
||||
|
||||
|
||||
// 创建结余购物车
|
||||
balanceCart = BeanUtil.copyProperties(cashierCart, TbCashierCart.class);
|
||||
BigDecimal num = BigDecimal.valueOf(balanceNum);
|
||||
BigDecimal num = balanceNum;
|
||||
balanceCart.setUserCouponId(null);
|
||||
balanceCart.setId(null);
|
||||
balanceCart.setNumber(balanceNum);
|
||||
@@ -1317,10 +1319,10 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum).add(singlePackFee.multiply(num)));
|
||||
balanceCartList.add(balanceCart);
|
||||
} else {
|
||||
currentUseNum = BigDecimal.valueOf(cashierCart.getNumber());
|
||||
currentUseNum =cashierCart.getNumber();
|
||||
discountAmount = discountAmount.add(cashierCart.getTotalAmount());
|
||||
cashierCart.setUserCouponId(couponVo.getId());
|
||||
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber());
|
||||
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber()));
|
||||
}
|
||||
// 消耗并返还商品优惠券
|
||||
Integer shopId = Integer.valueOf(cashierCart.getShopId());
|
||||
@@ -1350,7 +1352,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
BigDecimal discountAmount = BigDecimal.ZERO;
|
||||
HashMap<String, List<TbUserCouponVo>> couponMap = new HashMap<>();
|
||||
couponInfoDTO.getProductCouponMap().values().forEach(item -> {
|
||||
if (item.getCurrentUseNum() <= 0) {
|
||||
if (item.getCurrentUseNum().compareTo(BigDecimal.ZERO) <= 0) {
|
||||
return;
|
||||
}
|
||||
List<TbUserCouponVo> tbUserCouponVos = couponMap.get(item.getProId().toString());
|
||||
@@ -1431,7 +1433,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
if (couponVo.getNum() < item.getNum()) {
|
||||
throw new BadRequestException(couponVo.getName() + "数量不足: " + couponVo.getNum());
|
||||
}
|
||||
couponVo.setCurrentUseNum(item.getNum());
|
||||
couponVo.setCurrentUseNum(BigDecimal.valueOf(item.getNum()));
|
||||
infoDTO.getFullReductionCouponMap().put(couponVo.getId(), couponVo);
|
||||
return;
|
||||
}
|
||||
@@ -1439,7 +1441,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
if (couponVo == null) {
|
||||
throw new BadRequestException("存在不可用优惠券");
|
||||
}
|
||||
couponVo.setCurrentUseNum(item.getNum());
|
||||
couponVo.setCurrentUseNum(BigDecimal.valueOf(item.getNum()));
|
||||
couponVo.setFinalUseNum(item.getNum());
|
||||
infoDTO.getProductCouponMap().put(item.getUserCouponId(), couponVo);
|
||||
});
|
||||
@@ -1654,7 +1656,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
orderInfo.setUseType(eatTypeInfoDTO.getUseType());
|
||||
if (seatCart != null) {
|
||||
orderInfo.setSeatAmount(seatCart.getTotalAmount());
|
||||
orderInfo.setSeatCount(seatCart.getNumber());
|
||||
orderInfo.setSeatCount(seatCart.getNumber().intValue());
|
||||
}
|
||||
if (createOrderDTO.getVipUserId() != null) {
|
||||
orderInfo.setMemberId(String.valueOf(shopUser.getId()));
|
||||
@@ -2004,7 +2006,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
tbActivateOutRecord.setGiveId(couponVo.getId());
|
||||
tbActivateOutRecord.setVipUserId(payDTO.getVipUserId());
|
||||
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.setCreateTime(DateUtil.date());
|
||||
tbActivateOutRecord.setRefNum(0);
|
||||
@@ -2455,6 +2457,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
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>()
|
||||
.eq(TbCashierCart::getShopId, choseCountDTO.getShopId())
|
||||
.and(q -> q.eq(TbCashierCart::getMasterId, choseCountDTO.getMasterId()).or().isNull(TbCashierCart::getMasterId).or().eq(TbCashierCart::getMasterId, ""))
|
||||
@@ -2482,16 +2487,16 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
tbCashierCart.setProductId("-999");
|
||||
tbCashierCart.setSkuId("-999");
|
||||
tbCashierCart.setPackFee(BigDecimal.ZERO);
|
||||
tbCashierCart.setNumber(choseCountDTO.getNum());
|
||||
tbCashierCart.setTotalNumber(choseCountDTO.getNum());
|
||||
tbCashierCart.setNumber(BigDecimal.valueOf(choseCountDTO.getNum()));
|
||||
tbCashierCart.setTotalNumber(BigDecimal.valueOf(choseCountDTO.getNum()));
|
||||
tbCashierCart.setUseType(choseCountDTO.getUseType());
|
||||
tbCashierCartMapper.insert(tbCashierCart);
|
||||
} else {
|
||||
tbCashierCart.setMemberPrice(shopInfo.getTableFee());
|
||||
tbCashierCart.setStatus(TableConstant.CashierCart.Status.CREATE.getValue());
|
||||
tbCashierCart.setTotalAmount(new BigDecimal(choseCountDTO.getNum()).multiply(shopInfo.getTableFee()));
|
||||
tbCashierCart.setNumber(choseCountDTO.getNum());
|
||||
tbCashierCart.setTotalNumber(choseCountDTO.getNum());
|
||||
tbCashierCart.setNumber(BigDecimal.valueOf(choseCountDTO.getNum()));
|
||||
tbCashierCart.setTotalNumber(BigDecimal.valueOf(choseCountDTO.getNum()));
|
||||
tbCashierCart.setUseType(choseCountDTO.getUseType());
|
||||
tbCashierCartMapper.updateById(tbCashierCart);
|
||||
}
|
||||
@@ -2613,7 +2618,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
mpCashierCartService.update(new LambdaUpdateWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getId, item.getId())
|
||||
.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::getUseType, OrderUseTypeEnum.TAKEOUT.getValue())
|
||||
.set(TbCashierCart::getIsPack, "true"));
|
||||
@@ -2628,7 +2633,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
TbProduct product = productMap.get(item.getProductId().toString());
|
||||
// 设置打包费
|
||||
item.setPackAmount(product.getPackFee() != null ?
|
||||
product.getPackFee().multiply(BigDecimal.valueOf(item.getNum())) : BigDecimal.ZERO);
|
||||
product.getPackFee().multiply(item.getNum()) : BigDecimal.ZERO);
|
||||
});
|
||||
|
||||
if (!detailList.isEmpty()) {
|
||||
@@ -2653,7 +2658,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
|
||||
private HashMap<String, Object> updateReturnOrderInfo(ReturnOrderDTO returnOrderDTO, TbOrderInfo oldOrderInfo, boolean isOnline) {
|
||||
ArrayList<Integer> detailIds = new ArrayList<>();
|
||||
HashMap<String, Integer> returnNumMap = new HashMap<>();
|
||||
HashMap<String, BigDecimal> returnNumMap = new HashMap<>();
|
||||
returnOrderDTO.getOrderDetails().forEach(item -> {
|
||||
detailIds.add(item.getId());
|
||||
returnNumMap.put(item.getId().toString(), item.getNum());
|
||||
@@ -2675,20 +2680,20 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
if (orderDetail.getUserCouponId() != null) {
|
||||
throw new BadRequestException("选择了优惠券抵扣商品,无法退款");
|
||||
}
|
||||
Integer returnNum = returnNumMap.get(orderDetail.getId().toString());
|
||||
int remainNum = orderDetail.getNum() - returnNum;
|
||||
if (remainNum < 0) {
|
||||
BigDecimal returnNum = returnNumMap.get(orderDetail.getId().toString());
|
||||
BigDecimal remainNum = orderDetail.getNum().subtract(returnNum);
|
||||
if (remainNum.compareTo(BigDecimal.ZERO) < 0) {
|
||||
throw new BadRequestException("{}最多可退数量为: {}", orderDetail.getProductName(), orderDetail.getNum());
|
||||
}
|
||||
|
||||
// 将未退款的剩余订单详情重新生成记录
|
||||
BigDecimal packFee = orderDetail.getPackAmount().divide(BigDecimal.valueOf(orderDetail.getNum()), RoundingMode.HALF_UP);
|
||||
if (remainNum > 0) {
|
||||
BigDecimal packFee = orderDetail.getPackAmount().divide(orderDetail.getNum(), RoundingMode.HALF_UP);
|
||||
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);
|
||||
remainOrderDetail.setNum(remainNum);
|
||||
remainOrderDetail.setPriceAmount(BigDecimal.valueOf(remainNum).multiply(orderDetail.getPrice())
|
||||
remainOrderDetail.setPriceAmount(remainNum.multiply(orderDetail.getPrice())
|
||||
.add(remainPackFee));
|
||||
remainOrderDetail.setPackAmount(remainPackFee);
|
||||
remainOrderDetail.setReturnNum("0");
|
||||
@@ -2697,16 +2702,16 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
}
|
||||
|
||||
returnAmount = returnAmount.add(orderDetail.getPriceAmount()
|
||||
.divide(new BigDecimal(orderDetail.getNum()), 2, RoundingMode.DOWN)
|
||||
.multiply(BigDecimal.valueOf(returnNum)));
|
||||
.divide(orderDetail.getNum(), 2, RoundingMode.DOWN)
|
||||
.multiply(returnNum));
|
||||
saleAmount = saleAmount.add(orderDetail.getPrice());
|
||||
packAMount = packAMount.add(orderDetail.getPackAmount()
|
||||
.divide(new BigDecimal(orderDetail.getNum()), 2, RoundingMode.DOWN)
|
||||
.multiply(BigDecimal.valueOf(returnNum)));
|
||||
.divide(orderDetail.getNum(), 2, RoundingMode.DOWN)
|
||||
.multiply(returnNum));
|
||||
|
||||
BigDecimal returnPackFee = packFee.multiply(BigDecimal.valueOf(returnNum));
|
||||
BigDecimal returnPackFee = packFee.multiply(returnNum);
|
||||
orderDetail.setNum(returnNum);
|
||||
orderDetail.setPriceAmount(BigDecimal.valueOf(returnNum).multiply(orderDetail.getPrice())
|
||||
orderDetail.setPriceAmount(returnNum.multiply(orderDetail.getPrice())
|
||||
.add(returnPackFee));
|
||||
orderDetail.setPackAmount(returnPackFee);
|
||||
orderDetail.setRefundNumber(returnNum);
|
||||
@@ -2785,7 +2790,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||
|
||||
productMapper.incrStock(product.getId(), detail.getNum());
|
||||
tbProductStockDetail.setLeftNumber(product.getStockNumber());
|
||||
tbProductStockDetail.setStockNumber(Double.valueOf(detail.getNum()));
|
||||
tbProductStockDetail.setStockNumber(detail.getNum().doubleValue());
|
||||
|
||||
producSkutMapper.decrRealSalesNumber(productSku.getId(), detail.getNum());
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import cn.ysk.cashier.dto.product.TbProductDto;
|
||||
import cn.ysk.cashier.dto.product.TbProductQueryCriteria;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Map;
|
||||
import java.util.List;
|
||||
import java.io.IOException;
|
||||
@@ -96,7 +97,7 @@ public interface TbProductService {
|
||||
* @param productId 商品id
|
||||
* @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 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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
Integer finalStock = stock;
|
||||
double finalStock = stock;
|
||||
Map<String, Object> data = new HashMap<String, Object>() {{
|
||||
put("thing22", new HashMap<String, Object>() {{
|
||||
put("value", shopName);
|
||||
|
||||
@@ -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)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
List<TbShopOpenId> openIds = tbShopOpenIdService.lambdaQuery()
|
||||
.eq(TbShopOpenId::getShopId, shopId)
|
||||
.eq(TbShopOpenId::getStatus, 1)
|
||||
|
||||
@@ -28,7 +28,7 @@ public class TbUserCouponVo {
|
||||
private String useRestrictions;
|
||||
private boolean isUse = false;
|
||||
//当前使用数量
|
||||
private Integer currentUseNum;
|
||||
private BigDecimal currentUseNum;
|
||||
private Integer finalUseNum;
|
||||
private BigDecimal finalDiscountAmount = new BigDecimal(0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user