Merge remote-tracking branch 'origin/test' into dev

This commit is contained in:
Tankaikai
2024-11-19 15:26:08 +08:00
12 changed files with 519 additions and 1888 deletions

View File

@@ -117,7 +117,6 @@ public class LoginContoller {
if (!hasOpenId) { if (!hasOpenId) {
return Result.fail("登录失败:" + wxResp.getString("errmsg")); return Result.fail("登录失败:" + wxResp.getString("errmsg"));
} }
String a = "{\"width\":\"58\",\"printerNum\":\"1\",\"categoryList\":[{\"id\":30,\"name\":\"奶茶\",\"shortName\":null,\"tree\":null,\"pid\":null,\"pic\":null,\"merchantId\":null,\"shopId\":null,\"style\":null,\"isShow\":null,\"detail\":null,\"sort\":null,\"keyWord\":null,\"createdAt\":null,\"updatedAt\":null},{\"id\":35,\"name\":\"酒水饮料\",\"shortName\":null,\"tree\":null,\"pid\":null,\"pic\":null,\"merchantId\":null,\"shopId\":null,\"style\":null,\"isShow\":null,\"detail\":null,\"sort\":null,\"keyWord\":null,\"createdAt\":null,\"updatedAt\":null},{\"id\":65,\"name\":\"火锅\",\"shortName\":null,\"tree\":null,\"pid\":null,\"pic\":null,\"merchantId\":null,\"shopId\":null,\"style\":null,\"isShow\":null,\"detail\":null,\"sort\":null,\"keyWord\":null,\"createdAt\":null,\"updatedAt\":null},{\"id\":95,\"name\":\"串串\",\"shortName\":null,\"tree\":null,\"pid\":null,\"pic\":null,\"merchantId\":null,\"shopId\":null,\"style\":null,\"isShow\":null,\"detail\":null,\"sort\":null,\"keyWord\":null,\"createdAt\":null,\"updatedAt\":null},{\"id\":96,\"name\":\"烧烤\",\"shortName\":null,\"tree\":null,\"pid\":null,\"pic\":null,\"merchantId\":null,\"shopId\":null,\"style\":null,\"isShow\":null,\"detail\":null,\"sort\":null,\"keyWord\":null,\"createdAt\":null,\"updatedAt\":null}],\"model\":\"normal\",\"feet\":\"0\",\"autoCut\":\"1\"}";
// 3.接收微信接口服务 获取返回的参数 // 3.接收微信接口服务 获取返回的参数
String openid = wxResp.getString("openid"); String openid = wxResp.getString("openid");
return loginService.wxCustomLogin(openid, "", "", "", IpUtil.getIpAddr(request)); return loginService.wxCustomLogin(openid, "", "", "", IpUtil.getIpAddr(request));

View File

@@ -96,10 +96,9 @@ public class ProductController {
@RequestParam(value = "code", required = false) String code, @RequestParam(value = "code", required = false) String code,
@RequestParam("shopId") String shopId, @RequestParam("shopId") String shopId,
@RequestParam("productId") String productId, @RequestParam("productId") String productId,
@RequestParam("spec_tag") String spec_tag, @RequestParam("spec_tag") String spec_tag
@RequestParam("isVip") String isVip
) { ) {
return productService.queryProductSku(code,shopId, productId, spec_tag,isVip); return productService.queryProductSku(code,shopId, productId, spec_tag);
} }
@PostMapping("addCart") @PostMapping("addCart")

View File

@@ -1,7 +1,6 @@
package com.chaozhanggui.system.cashierservice.dao; package com.chaozhanggui.system.cashierservice.dao;
import com.chaozhanggui.system.cashierservice.entity.TbProduct; import com.chaozhanggui.system.cashierservice.entity.TbProduct;
import com.chaozhanggui.system.cashierservice.entity.TbProductWithBLOBs;
import com.chaozhanggui.system.cashierservice.entity.vo.ShopGroupInfoVo; import com.chaozhanggui.system.cashierservice.entity.vo.ShopGroupInfoVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -15,7 +14,7 @@ import java.util.Set;
@Mapper @Mapper
public interface TbProductMapper { public interface TbProductMapper {
TbProductWithBLOBs selectByPrimaryKey(Integer id); TbProduct selectByPrimaryKey(Integer id);
TbProduct selectById(Integer id); TbProduct selectById(Integer id);
@@ -27,7 +26,7 @@ public interface TbProductMapper {
List<TbProduct> selectByIds(@Param("list") List<String> ids); List<TbProduct> selectByIds(@Param("list") List<String> ids);
Integer selectByQcode(@Param("code") String code,@Param("productId") Integer productId,@Param("shopId") String shopId); Integer selectByQcode(@Param("code") String code,@Param("productId") Integer productId,@Param("shopId") String shopId);
Integer selectByCodeAndSkuId(@Param("code") String code,@Param("skuId") Integer skuId,@Param("shopId") String shopId,@Param("isVip") String isVip); Integer selectByCodeAndSkuId(@Param("code") String code,@Param("skuId") Integer skuId,@Param("shopId") String shopId);
Integer selectByNewQcode(@Param("code") String code,@Param("productId") Integer productId,@Param("shopId") String shopId,@Param("list") List<String> list); Integer selectByNewQcode(@Param("code") String code,@Param("productId") Integer productId,@Param("shopId") String shopId,@Param("list") List<String> list);
List<ShopGroupInfoVo> selGroups(@Param("proName") String proName,@Param("type") String type, List<ShopGroupInfoVo> selGroups(@Param("proName") String proName,@Param("type") String type,
@@ -39,9 +38,9 @@ public interface TbProductMapper {
@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("startTime") String startTime, @Param("endTime") String endTime,
@Param("cities") String cities, @Param("orderBy") String orderBy, @Param("lng") String lng, @Param("lat") String lat); @Param("cities") String cities, @Param("orderBy") String orderBy, @Param("lng") String lng, @Param("lat") String lat);
@Update("update tb_product set real_sales_number = real_sales_number + #{number,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER}")
void upGroupRealSalesNumber(@Param("id") String id,@Param("number") Integer number); void upGroupRealSalesNumber(@Param("id") String id,@Param("number") Integer number);
@Update("update tb_product set stock_number = stock_number - #{num,jdbcType=INTEGER} where id = #{productId}")
void updateStockById(@Param("productId") String productId, @Param("num") Integer num); void updateStockById(@Param("productId") String productId, @Param("num") Integer num);
@Update("update tb_product set stock_number=stock_number-#{num} WHERE id=#{id} and stock_number-#{num} >= 0") @Update("update tb_product set stock_number=stock_number-#{num} WHERE id=#{id} and stock_number-#{num} >= 0")

View File

@@ -1,685 +1,164 @@
package com.chaozhanggui.system.cashierservice.entity; package com.chaozhanggui.system.cashierservice.entity;
import lombok.Data;
import org.springframework.data.annotation.Transient; import org.springframework.data.annotation.Transient;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
/**
* (TbProduct)实体类
*
* @author ww
* @since 2024-11-18 14:41:53
*/
@Data
public class TbProduct implements Serializable { public class TbProduct implements Serializable {
private static final long serialVersionUID = -40921077034892720L;
/**
* id
*/
private Integer id; private Integer id;
/**
* 商品分类
*/
private String categoryId; private String categoryId;
/**
* 商品规格
*/
private Integer specId; private Integer specId;
/**
private String sourcePath; * 商户Id
*/
private Integer brandId;
private String merchantId; private String merchantId;
private String shopId; private String shopId;
/**
* 商品名称
*/
private String name; private String name;
/**
* 短标题--促销语
*/
private String shortTitle; private String shortTitle;
/**
* 商品类型(属性):普通商品 normal 套餐商品 package 称重商品 weigh 团购券商品 coupon
*/
private String type; private String type;
/**
* 包装费
*/
private BigDecimal packFee; private BigDecimal packFee;
/**
* 商品最低价
*/
private BigDecimal lowPrice; private BigDecimal lowPrice;
private BigDecimal lowMemberPrice; private BigDecimal lowMemberPrice;
/**
private String unitId; * 单位Id
*/
private Integer unitId;
private String unitSnap; private String unitSnap;
/**
* 商品封面图
*/
private String coverImg; private String coverImg;
/**
private String shareImg; * 商品图片(第一张为缩略图,其他为详情)
*/
private String images; private String images;
/**
private String videoCoverImg; * 排序
*/
private Integer sort; private Integer sort;
/**
private Integer limitNumber; * 0--待审核 1审核通过 -1审核失败 -2违规下架
*/
private Integer productScore; private Integer status;
/**
private Byte status; * 审核失败原因
*/
private String failMsg; private String failMsg;
/**
private Byte isRecommend; * 是否热销
*/
private Byte isHot; private Integer isHot;
/**
private Byte isNew; * 计量商品 normal
* 称重商品 weight
private Byte isOnSale; * 多规格商品 sku
* 套餐商品 group
private Byte isShow; * 时价商品 currentPrice
*/
private String typeEnum; private String typeEnum;
/**
private Byte isDel; * 是否回收站 0-否1回收站
*/
private Byte isStock; private Integer isDel;
/**
private Byte isPauseSale; * 是否开启库存
*/
private Byte isFreeFreight; private Integer isStock;
/**
private Long freightId; * 是否暂停销售
*/
private String strategyType; private Integer isPauseSale;
private Integer strategyId;
private Byte isVip;
private Byte isDelete;
private Long createdAt; private Long createdAt;
private Long updatedAt; private Long updatedAt;
/**
private Double baseSalesNumber; * 套餐内容
*/
private Integer realSalesNumber; private String groupSnap;
/**
private Integer salesNumber; * 规格详情
*/
private Integer thumbCount; private String specInfo;
/**
private Integer storeCount; * 已选择的规格
*/
private Integer furnishMeal; private String selectSpec;
/**
private Integer furnishExpress; * 已选规格表格头部
*/
private Integer furnishDraw;
private Integer furnishVir;
private Byte isCombo;
private Byte isShowCash;
private Byte isShowMall;
private Byte isNeedExamine;
private Byte showOnMallStatus;
private Long showOnMallTime;
private String showOnMallErrorMsg;
private Byte enableLabel;
private String taxConfigId;
private String specTableHeaders; private String specTableHeaders;
/**
* 团购卷分类,可有多个分类
*/
private String groupCategoryId;
/**
* 销量
*/
private Integer realSalesNumber;
/**
* 商品级库存数量
*/
private Integer stockNumber;
/**
* 是否上架
*/
private Integer isGrounding;
/**
* 退款是否退回库存
*/
private Integer isRefundStock;
/**
* 库存警戒线
*/
private Integer warnLine;
private String cartNumber="0"; private String cartNumber="0";
private String groupCategoryId;
private Integer stockNumber; private Integer isVip;
private Integer suit;
//是否可售 1 可售 0非可售 //是否可售 1 可售 0非可售
private Integer isSale = 1; private Integer isSale = 1;
private Integer warnLine = 0;
public String getImages() {
return images;
}
public void setImages(String images) {
this.images = images;
}
public String getCartNumber() {
return cartNumber;
}
public void setCartNumber(String cartNumber) {
this.cartNumber = cartNumber;
}
@Transient @Transient
private TbProductSkuResult productSkuResult; private TbProductSkuResult productSkuResult;
public TbProductSkuResult getProductSkuResult() {
return productSkuResult;
}
public void setProductSkuResult(TbProductSkuResult productSkuResult) {
this.productSkuResult = productSkuResult;
}
private static final long serialVersionUID = 1L;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCategoryId() {
return categoryId;
}
public void setCategoryId(String categoryId) {
this.categoryId = categoryId == null ? null : categoryId.trim();
}
public Integer getSpecId() {
return specId;
}
public void setSpecId(Integer specId) {
this.specId = specId;
}
public String getSourcePath() {
return sourcePath;
}
public void setSourcePath(String sourcePath) {
this.sourcePath = sourcePath == null ? null : sourcePath.trim();
}
public Integer getBrandId() {
return brandId;
}
public void setBrandId(Integer brandId) {
this.brandId = brandId;
}
public String getMerchantId() {
return merchantId;
}
public void setMerchantId(String merchantId) {
this.merchantId = merchantId == null ? null : merchantId.trim();
}
public String getShopId() {
return shopId;
}
public void setShopId(String shopId) {
this.shopId = shopId == null ? null : shopId.trim();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public String getShortTitle() {
return shortTitle;
}
public void setShortTitle(String shortTitle) {
this.shortTitle = shortTitle == null ? null : shortTitle.trim();
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type == null ? null : type.trim();
}
public BigDecimal getPackFee() {
return packFee;
}
public void setPackFee(BigDecimal packFee) {
this.packFee = packFee;
}
public BigDecimal getLowPrice() {
return lowPrice;
}
public void setLowPrice(BigDecimal lowPrice) {
this.lowPrice = lowPrice;
}
public BigDecimal getLowMemberPrice() {
return lowMemberPrice;
}
public void setLowMemberPrice(BigDecimal lowMemberPrice) {
this.lowMemberPrice = lowMemberPrice;
}
public String getUnitId() {
return unitId;
}
public void setUnitId(String unitId) {
this.unitId = unitId == null ? null : unitId.trim();
}
public String getUnitSnap() {
return unitSnap;
}
public void setUnitSnap(String unitSnap) {
this.unitSnap = unitSnap == null ? null : unitSnap.trim();
}
public String getCoverImg() {
return coverImg;
}
public void setCoverImg(String coverImg) {
this.coverImg = coverImg == null ? null : coverImg.trim();
}
public String getShareImg() {
return shareImg;
}
public void setShareImg(String shareImg) {
this.shareImg = shareImg == null ? null : shareImg.trim();
}
public String getVideoCoverImg() {
return videoCoverImg;
}
public void setVideoCoverImg(String videoCoverImg) {
this.videoCoverImg = videoCoverImg == null ? null : videoCoverImg.trim();
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public Integer getLimitNumber() {
return limitNumber;
}
public void setLimitNumber(Integer limitNumber) {
this.limitNumber = limitNumber;
}
public Integer getProductScore() {
return productScore;
}
public void setProductScore(Integer productScore) {
this.productScore = productScore;
}
public Byte getStatus() {
return status;
}
public void setStatus(Byte status) {
this.status = status;
}
public String getFailMsg() {
return failMsg;
}
public void setFailMsg(String failMsg) {
this.failMsg = failMsg == null ? null : failMsg.trim();
}
public Byte getIsRecommend() {
return isRecommend;
}
public void setIsRecommend(Byte isRecommend) {
this.isRecommend = isRecommend;
}
public Byte getIsHot() {
return isHot;
}
public void setIsHot(Byte isHot) {
this.isHot = isHot;
}
public Byte getIsNew() {
return isNew;
}
public void setIsNew(Byte isNew) {
this.isNew = isNew;
}
public Byte getIsOnSale() {
return isOnSale;
}
public void setIsOnSale(Byte isOnSale) {
this.isOnSale = isOnSale;
}
public Byte getIsShow() {
return isShow;
}
public void setIsShow(Byte isShow) {
this.isShow = isShow;
}
public String getTypeEnum() {
return typeEnum;
}
public void setTypeEnum(String typeEnum) {
this.typeEnum = typeEnum == null ? null : typeEnum.trim();
}
public Byte getIsDel() {
return isDel;
}
public void setIsDel(Byte isDel) {
this.isDel = isDel;
}
public Byte getIsStock() {
return isStock;
}
public void setIsStock(Byte isStock) {
this.isStock = isStock;
}
public Byte getIsPauseSale() {
return isPauseSale;
}
public void setIsPauseSale(Byte isPauseSale) {
this.isPauseSale = isPauseSale;
}
public Byte getIsFreeFreight() {
return isFreeFreight;
}
public void setIsFreeFreight(Byte isFreeFreight) {
this.isFreeFreight = isFreeFreight;
}
public Long getFreightId() {
return freightId;
}
public void setFreightId(Long freightId) {
this.freightId = freightId;
}
public String getStrategyType() {
return strategyType;
}
public void setStrategyType(String strategyType) {
this.strategyType = strategyType == null ? null : strategyType.trim();
}
public Integer getStrategyId() {
return strategyId;
}
public void setStrategyId(Integer strategyId) {
this.strategyId = strategyId;
}
public Byte getIsVip() {
return isVip;
}
public void setIsVip(Byte isVip) {
this.isVip = isVip;
}
public Byte getIsDelete() {
return isDelete;
}
public void setIsDelete(Byte isDelete) {
this.isDelete = isDelete;
}
public Long getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Long createdAt) {
this.createdAt = createdAt;
}
public Long getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Long updatedAt) {
this.updatedAt = updatedAt;
}
public Double getBaseSalesNumber() {
return baseSalesNumber;
}
public void setBaseSalesNumber(Double baseSalesNumber) {
this.baseSalesNumber = baseSalesNumber;
}
public Integer getRealSalesNumber() {
return realSalesNumber;
}
public void setRealSalesNumber(Integer realSalesNumber) {
this.realSalesNumber = realSalesNumber;
}
public Integer getSalesNumber() {
return salesNumber;
}
public void setSalesNumber(Integer salesNumber) {
this.salesNumber = salesNumber;
}
public Integer getThumbCount() {
return thumbCount;
}
public void setThumbCount(Integer thumbCount) {
this.thumbCount = thumbCount;
}
public Integer getStoreCount() {
return storeCount;
}
public void setStoreCount(Integer storeCount) {
this.storeCount = storeCount;
}
public Integer getFurnishMeal() {
return furnishMeal;
}
public void setFurnishMeal(Integer furnishMeal) {
this.furnishMeal = furnishMeal;
}
public Integer getFurnishExpress() {
return furnishExpress;
}
public void setFurnishExpress(Integer furnishExpress) {
this.furnishExpress = furnishExpress;
}
public Integer getFurnishDraw() {
return furnishDraw;
}
public void setFurnishDraw(Integer furnishDraw) {
this.furnishDraw = furnishDraw;
}
public Integer getFurnishVir() {
return furnishVir;
}
public void setFurnishVir(Integer furnishVir) {
this.furnishVir = furnishVir;
}
public Byte getIsCombo() {
return isCombo;
}
public void setIsCombo(Byte isCombo) {
this.isCombo = isCombo;
}
public Byte getIsShowCash() {
return isShowCash;
}
public void setIsShowCash(Byte isShowCash) {
this.isShowCash = isShowCash;
}
public Byte getIsShowMall() {
return isShowMall;
}
public void setIsShowMall(Byte isShowMall) {
this.isShowMall = isShowMall;
}
public Byte getIsNeedExamine() {
return isNeedExamine;
}
public void setIsNeedExamine(Byte isNeedExamine) {
this.isNeedExamine = isNeedExamine;
}
public Byte getShowOnMallStatus() {
return showOnMallStatus;
}
public void setShowOnMallStatus(Byte showOnMallStatus) {
this.showOnMallStatus = showOnMallStatus;
}
public Long getShowOnMallTime() {
return showOnMallTime;
}
public void setShowOnMallTime(Long showOnMallTime) {
this.showOnMallTime = showOnMallTime;
}
public String getShowOnMallErrorMsg() {
return showOnMallErrorMsg;
}
public void setShowOnMallErrorMsg(String showOnMallErrorMsg) {
this.showOnMallErrorMsg = showOnMallErrorMsg == null ? null : showOnMallErrorMsg.trim();
}
public Byte getEnableLabel() {
return enableLabel;
}
public void setEnableLabel(Byte enableLabel) {
this.enableLabel = enableLabel;
}
public String getTaxConfigId() {
return taxConfigId;
}
public void setTaxConfigId(String taxConfigId) {
this.taxConfigId = taxConfigId == null ? null : taxConfigId.trim();
}
public String getSpecTableHeaders() {
return specTableHeaders;
}
public String getGroupCategoryId() {
return groupCategoryId;
}
public void setGroupCategoryId(String groupCategoryId) {
this.groupCategoryId = groupCategoryId;
}
public void setSpecTableHeaders(String specTableHeaders) {
this.specTableHeaders = specTableHeaders == null ? null : specTableHeaders.trim();
}
public void setStockNumber(Integer stockNumber) {
this.stockNumber = stockNumber;
}
public Integer getStockNumber() {
return this.stockNumber;
}
public Integer getSuit() {
return suit;
}
public void setSuit(Integer suit) {
this.suit = suit;
}
public Integer getIsSale() {
return isSale;
}
public void setIsSale(Integer isSale) {
this.isSale = isSale;
}
public Integer getWarnLine() {
return warnLine;
}
public void setWarnLine(Integer warnLine) {
this.warnLine = warnLine;
}
} }

View File

@@ -1,67 +0,0 @@
package com.chaozhanggui.system.cashierservice.entity;
import java.io.Serializable;
public class TbProductWithBLOBs extends TbProduct implements Serializable {
private String images;
private String video;
private String notice;
private String groupSnap;
private String specInfo;
private String selectSpec;
private static final long serialVersionUID = 1L;
public String getImages() {
return images;
}
public void setImages(String images) {
this.images = images == null ? null : images.trim();
}
public String getVideo() {
return video;
}
public void setVideo(String video) {
this.video = video == null ? null : video.trim();
}
public String getNotice() {
return notice;
}
public void setNotice(String notice) {
this.notice = notice == null ? null : notice.trim();
}
public String getGroupSnap() {
return groupSnap;
}
public void setGroupSnap(String groupSnap) {
this.groupSnap = groupSnap == null ? null : groupSnap.trim();
}
public String getSpecInfo() {
return specInfo;
}
public void setSpecInfo(String specInfo) {
this.specInfo = specInfo == null ? null : specInfo.trim();
}
public String getSelectSpec() {
return selectSpec;
}
public void setSelectSpec(String selectSpec) {
this.selectSpec = selectSpec == null ? null : selectSpec.trim();
}
}

View File

@@ -50,6 +50,9 @@ public class RedisCst {
public static final String DINE_IN_TABLE_CART = "DINE_IN_TABLE_CART:"; public static final String DINE_IN_TABLE_CART = "DINE_IN_TABLE_CART:";
// 当前台桌人数 // 当前台桌人数
public static final String CURRENT_TABLE_SEAR_COUNT = "CURRENT_TABLE_SEAR_COUNT:"; public static final String CURRENT_TABLE_SEAR_COUNT = "CURRENT_TABLE_SEAR_COUNT:";
// 取餐码
public static final String MASTER_ID = "SHOP:CODE:USER:pc:";
public static String getCurrentOrderKey(String tableId, String shopId) { public static String getCurrentOrderKey(String tableId, String shopId) {
@@ -87,4 +90,8 @@ public class RedisCst {
public static String getCurrentTableSeatCount(Object shopId, String tableId) { public static String getCurrentTableSeatCount(Object shopId, String tableId) {
return CURRENT_TABLE_SEAR_COUNT + (shopId + ":" + tableId); return CURRENT_TABLE_SEAR_COUNT + (shopId + ":" + tableId);
} }
public static String getMasterIdKey(String shopId, String day, String tableId) {
return MASTER_ID + shopId + ":" + day + ":" + tableId;
}
} }

View File

@@ -45,6 +45,7 @@ import java.time.Instant;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -293,7 +294,6 @@ public class CartService {
String skuId = jsonObject.getString("skuId"); String skuId = jsonObject.getString("skuId");
Integer type = jsonObject.getInteger("type"); Integer type = jsonObject.getInteger("type");
Integer buyNum = jsonObject.getInteger("num"); Integer buyNum = jsonObject.getInteger("num");
Integer isVip = jsonObject.getInteger("isVip");
Integer userId = jsonObject.getInteger("userId"); Integer userId = jsonObject.getInteger("userId");
// 商品备注 // 商品备注
String note = jsonObject.getString("note"); String note = jsonObject.getString("note");
@@ -355,7 +355,7 @@ public class CartService {
if (Objects.isNull(array) || array.isEmpty()) { if (Objects.isNull(array) || array.isEmpty()) {
if (type == 1) { if (type == 1) {
TbCashierCart cashierCart = addCart(productId, skuId, TbCashierCart cashierCart = addCart(productId, skuId,
jsonObject.getInteger("userId"), buyNum, tableId, shopId, isVip, note, shopEatTypeInfoDTO); jsonObject.getInteger("userId"), buyNum, tableId, shopId, note, shopEatTypeInfoDTO);
jsonArray.add(cashierCart); jsonArray.add(cashierCart);
cashierCart.setPlaceNum(cashierCart.getPlaceNum() == null ? 0 : cashierCart.getPlaceNum()); cashierCart.setPlaceNum(cashierCart.getPlaceNum() == null ? 0 : cashierCart.getPlaceNum());
cashierCartArrayList.add(cashierCart); cashierCartArrayList.add(cashierCart);
@@ -374,11 +374,11 @@ public class CartService {
TbCashierCart cashierCart = JSONUtil.parseJSONStr2T(object.toJSONString(), TbCashierCart.class); TbCashierCart cashierCart = JSONUtil.parseJSONStr2T(object.toJSONString(), TbCashierCart.class);
cashierCart.setPlaceNum(cashierCart.getPlaceNum() == null ? 0 : cashierCart.getPlaceNum()); cashierCart.setPlaceNum(cashierCart.getPlaceNum() == null ? 0 : cashierCart.getPlaceNum());
if (cashierCart.getSkuId().equals(skuId) && (isVip == null || cashierCart.getIsVip().intValue() == isVip)) { if (cashierCart.getSkuId().equals(skuId)) {
cashierCart.setTotalNumber(buyNum); cashierCart.setTotalNumber(buyNum);
cashierCart.setNumber(buyNum); cashierCart.setNumber(buyNum);
cashierCart.setNote(note); cashierCart.setNote(note);
if (tbProductSkuWithBLOBs != null && type == 0 && isVip != null && isVip == 0 && tbProductSkuWithBLOBs.getSuit() != null if (tbProductSkuWithBLOBs != null && type == 0 && tbProductSkuWithBLOBs.getSuit() != null
&& tbProductSkuWithBLOBs.getSuit() > 1 && cashierCart.getNumber() < tbProductSkuWithBLOBs.getSuit()) { && tbProductSkuWithBLOBs.getSuit() > 1 && cashierCart.getNumber() < tbProductSkuWithBLOBs.getSuit()) {
cashierCartMapper.deleteByPrimaryKey(cashierCart.getId()); cashierCartMapper.deleteByPrimaryKey(cashierCart.getId());
continue; continue;
@@ -402,11 +402,11 @@ public class CartService {
product.getPackFee().multiply(BigDecimal.valueOf(buyNum)) : BigDecimal.ZERO); product.getPackFee().multiply(BigDecimal.valueOf(buyNum)) : BigDecimal.ZERO);
} }
if (isVip != null && isVip == 1) { // if (isVip != null && isVip == 1) {
cashierCart.setTotalAmount(BigDecimal.ZERO); // cashierCart.setTotalAmount(BigDecimal.ZERO);
} else { // } else {
cashierCart.resetTotalAmount(); cashierCart.resetTotalAmount();
} // }
cashierCart.setUpdatedAt(Instant.now().toEpochMilli()); cashierCart.setUpdatedAt(Instant.now().toEpochMilli());
mpCashierCartMapper.updateById(cashierCart); mpCashierCartMapper.updateById(cashierCart);
} else { } else {
@@ -429,7 +429,7 @@ public class CartService {
if (flag && type == 1) { if (flag && type == 1) {
TbCashierCart cashierCart = addCart(productId, skuId, TbCashierCart cashierCart = addCart(productId, skuId,
jsonObject.getInteger("userId"), buyNum, tableId, shopId, isVip, note, shopEatTypeInfoDTO); jsonObject.getInteger("userId"), buyNum, tableId, shopId, note, shopEatTypeInfoDTO);
jsonArray.add(cashierCart); jsonArray.add(cashierCart);
amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee()))); amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee())));
BigDecimal mPrice = cashierCart.getIsMember() != null && cashierCart.getIsMember() == 1 && BigDecimal mPrice = cashierCart.getIsMember() != null && cashierCart.getIsMember() == 1 &&
@@ -442,19 +442,17 @@ public class CartService {
} else { } else {
if (type == 1) { if (type == 1) {
TbCashierCart cashierCart = addCart(productId, skuId, TbCashierCart cashierCart = addCart(productId, skuId,
jsonObject.getInteger("userId"), buyNum, tableId, shopId, isVip, note, shopEatTypeInfoDTO); jsonObject.getInteger("userId"), buyNum, tableId, shopId, note, shopEatTypeInfoDTO);
if (!TableConstant.CART_SEAT_ID.equals(productId)) { if (!TableConstant.CART_SEAT_ID.equals(productId)) {
jsonArray.add(cashierCart); jsonArray.add(cashierCart);
} }
cashierCart.setPlaceNum(cashierCart.getPlaceNum() == null ? 0 : cashierCart.getPlaceNum()); cashierCart.setPlaceNum(cashierCart.getPlaceNum() == null ? 0 : cashierCart.getPlaceNum());
cashierCartArrayList.add(cashierCart); cashierCartArrayList.add(cashierCart);
if (isVip != 1) { amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee())));
amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee()))); BigDecimal mPrice = cashierCart.getIsMember() != null && cashierCart.getIsMember() == 1 &&
BigDecimal mPrice = cashierCart.getIsMember() != null && cashierCart.getIsMember() == 1 && cashierCart.getMemberPrice() != null && cashierCart.getMemberPrice().compareTo(BigDecimal.ZERO) > 0 ? cashierCart.getMemberPrice() : cashierCart.getSalePrice();
cashierCart.getMemberPrice() != null && cashierCart.getMemberPrice().compareTo(BigDecimal.ZERO) > 0 ? cashierCart.getMemberPrice() : cashierCart.getSalePrice(); memberAmount = memberAmount.add(mPrice.multiply(BigDecimal.valueOf(cashierCart.getTotalNumber())).add(cashierCart.getPackFee()));
memberAmount = memberAmount.add(mPrice.multiply(BigDecimal.valueOf(cashierCart.getTotalNumber())).add(cashierCart.getPackFee()));
}
} }
} }
} catch (MsgException e) { } catch (MsgException e) {
@@ -579,7 +577,7 @@ public class CartService {
} }
private TbCashierCart addCart(String productId, String skuId, Integer userId, Integer num, private TbCashierCart addCart(String productId, String skuId, Integer userId, Integer num,
String tableId, String shopId, Integer isVip, String note, ShopEatTypeInfoDTO shopEatTypeInfoDTO) throws Exception { String tableId, String shopId, String note, ShopEatTypeInfoDTO shopEatTypeInfoDTO) throws Exception {
try { try {
// 查询用户信息 // 查询用户信息
TbShopUser shopUser = shopUserMapper.selectByUserIdAndShopId(String.valueOf(userId), shopId); TbShopUser shopUser = shopUserMapper.selectByUserIdAndShopId(String.valueOf(userId), shopId);
@@ -591,7 +589,7 @@ public class CartService {
String key = tableId + "-" + shopId; String key = tableId + "-" + shopId;
TbProductSkuWithBLOBs productSku = productSkuMapper.selectByPrimaryKey(Integer.valueOf(skuId)); TbProductSkuWithBLOBs productSku = productSkuMapper.selectByPrimaryKey(Integer.valueOf(skuId));
TbCashierCart cashierCart = new TbCashierCart(); TbCashierCart cashierCart = new TbCashierCart();
if (productSku.getSuit() != null && productSku.getSuit() > 1 && isVip != 1) { if (productSku.getSuit() != null && productSku.getSuit() > 1) {
if (product.getIsStock() == 1) { if (product.getIsStock() == 1) {
boolean isSale = false; boolean isSale = false;
if (num > productSku.getSuit()) { if (num > productSku.getSuit()) {
@@ -642,14 +640,8 @@ public class CartService {
if (shopEatTypeInfoDTO.isTakeout() && product.getPackFee() != null) { if (shopEatTypeInfoDTO.isTakeout() && product.getPackFee() != null) {
cashierCart.setPackFee(product.getPackFee().multiply(BigDecimal.valueOf(num))); cashierCart.setPackFee(product.getPackFee().multiply(BigDecimal.valueOf(num)));
} }
if (isVip == 1) { cashierCart.setIsVip((byte) 0);
cashierCart.setIsVip(Byte.parseByte("1")); cashierCart.resetTotalAmount();
cashierCart.setTotalAmount(BigDecimal.ZERO);
cashierCart.setSalePrice(BigDecimal.ZERO);
} else {
cashierCart.setIsVip((byte) 0);
cashierCart.resetTotalAmount();
}
cashierCart.setPlatformType(PlatformTypeEnum.MINI_APP.getValue()); cashierCart.setPlatformType(PlatformTypeEnum.MINI_APP.getValue());
mpCashierCartMapper.insert(cashierCart); mpCashierCartMapper.insert(cashierCart);
@@ -984,8 +976,19 @@ public class CartService {
} }
public synchronized void addGlobalCode(String day, String clientType, String shopId) {
String code = stringRedisTemplate.opsForValue().get("SHOP:CODE:" + clientType + ":" + shopId + ":" + day);
if (StrUtil.isBlank(code)) {
stringRedisTemplate.opsForValue().set("SHOP:CODE:" + clientType + ":" + shopId + ":" + day, "1");
} else {
stringRedisTemplate.opsForValue().get("SHOP:CODE:" + clientType + ":" + shopId + ":" + (Integer.parseInt(code) + 1));
}
stringRedisTemplate.opsForValue().setIfAbsent("SHOP:CODE:SET" + clientType + ":" + shopId + ":" + day, "1");
}
private TbOrderInfo createOrderInfoWithCoupon(CreateOrderDTO createOrderDTO, OrderPriceDTO priceDTO, ShopEatTypeInfoDTO eatTypeInfoDTO, private TbOrderInfo createOrderInfoWithCoupon(CreateOrderDTO createOrderDTO, OrderPriceDTO priceDTO, ShopEatTypeInfoDTO eatTypeInfoDTO,
TbOrderInfo orderInfo, TbCashierCart seatCart, TbShopUser shopUser, TbShopTable shopTable, OrderCouponInfoDTO couponInfoDTO) { TbOrderInfo orderInfo, TbCashierCart seatCart, TbShopUser shopUser, TbShopTable shopTable, OrderCouponInfoDTO couponInfoDTO, String masterId) {
Integer placeNum = getCurrentPlaceNum(eatTypeInfoDTO.getTableId(), eatTypeInfoDTO.getShopInfo().getId(), eatTypeInfoDTO); Integer placeNum = getCurrentPlaceNum(eatTypeInfoDTO.getTableId(), eatTypeInfoDTO.getShopInfo().getId(), eatTypeInfoDTO);
// 修改订单信息 // 修改订单信息
if (orderInfo == null) { if (orderInfo == null) {
@@ -1005,8 +1008,16 @@ public class CartService {
} }
orderInfo.setMerchantId(merchantAccount.getId().toString()); orderInfo.setMerchantId(merchantAccount.getId().toString());
orderInfo.setIsPostpaid(eatTypeInfoDTO.isDineInAfter() ? 1 : 0); orderInfo.setIsPostpaid(eatTypeInfoDTO.isDineInAfter() ? 1 : 0);
if (eatTypeInfoDTO.isIncrMaterId()) {
String key = RedisCst.getMasterIdKey(String.valueOf(createOrderDTO.getShopId()), DateUtils.getDay(), orderInfo.getTableId());
stringRedisTemplate.delete(key);
} else {
addGlobalCode(DateUtils.getDay(), "pc", String.valueOf(createOrderDTO.getShopId()));
}
} }
// 更新取餐号 // 更新取餐号
orderInfo.setMasterId(masterId);
orderInfo.setOutNumber(getOutNumber(createOrderDTO.getShopId().toString()).toString()); orderInfo.setOutNumber(getOutNumber(createOrderDTO.getShopId().toString()).toString());
orderInfo.setUpdatedAt(System.currentTimeMillis()); orderInfo.setUpdatedAt(System.currentTimeMillis());
orderInfo.setSettlementAmount(priceDTO.getTotalAmount()); orderInfo.setSettlementAmount(priceDTO.getTotalAmount());
@@ -1038,9 +1049,8 @@ public class CartService {
} }
private OrderPriceDTO createOrderDetailWithCoupon(List<TbCashierCart> fullCashierCarts, Integer orderId, private OrderPriceDTO createOrderDetailWithCoupon(List<TbCashierCart> fullCashierCarts, Integer orderId,
Integer shopId, ShopEatTypeInfoDTO shopEatTypeInfoDTO, boolean onlyChangeCoupon) { Integer shopId, ShopEatTypeInfoDTO shopEatTypeInfoDTO, boolean onlyChangeCoupon, String masterId) {
OrderPriceDTO priceDTO = new OrderPriceDTO(); OrderPriceDTO priceDTO = new OrderPriceDTO();
List<Integer> cartIds = fullCashierCarts.stream().map(TbCashierCart::getId).collect(Collectors.toList()); List<Integer> cartIds = fullCashierCarts.stream().map(TbCashierCart::getId).collect(Collectors.toList());
// 查询历史orderDetail // 查询历史orderDetail
List<TbOrderDetail> oldOrderDetailList = orderDetailService List<TbOrderDetail> oldOrderDetailList = orderDetailService
@@ -1056,6 +1066,9 @@ public class CartService {
}); });
for (TbCashierCart cashierCart : fullCashierCarts) { for (TbCashierCart cashierCart : fullCashierCarts) {
// if (StrUtil.isNotBlank(cashierCart.getMasterId())) {
cashierCart.setMasterId(masterId);
// }
// 设置打包费 // 设置打包费
if (shopEatTypeInfoDTO.isTakeout() && !TableConstant.CashierCart.ID.equals(cashierCart.getProductId())) { if (shopEatTypeInfoDTO.isTakeout() && !TableConstant.CashierCart.ID.equals(cashierCart.getProductId())) {
cashierCart.setTableId(""); cashierCart.setTableId("");
@@ -1151,7 +1164,7 @@ public class CartService {
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber()); couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber());
currentUseNum = BigDecimal.valueOf(cashierCart.getNumber()); currentUseNum = BigDecimal.valueOf(cashierCart.getNumber());
// 优惠券数量小于购物车数量,分割购物车数据 // 优惠券数量小于购物车数量,分割购物车数据
}else if (cashierCart.getNumber() > couponVo.getCurrentUseNum()) { } else if (cashierCart.getNumber() > couponVo.getCurrentUseNum()) {
currentUseNum = BigDecimal.valueOf(couponVo.getCurrentUseNum()); currentUseNum = BigDecimal.valueOf(couponVo.getCurrentUseNum());
BigDecimal cartNum = BigDecimal.valueOf(cashierCart.getNumber()); BigDecimal cartNum = BigDecimal.valueOf(cashierCart.getNumber());
int balanceNum = cashierCart.getTotalNumber() - couponVo.getCurrentUseNum(); int balanceNum = cashierCart.getTotalNumber() - couponVo.getCurrentUseNum();
@@ -1225,13 +1238,18 @@ public class CartService {
tbUserCouponVos = new ArrayList<>(); tbUserCouponVos = new ArrayList<>();
tbUserCouponVos.add(item); tbUserCouponVos.add(item);
couponMap.put(item.getProId().toString(), tbUserCouponVos); couponMap.put(item.getProId().toString(), tbUserCouponVos);
}else { } else {
tbUserCouponVos.add(item); tbUserCouponVos.add(item);
} }
}); });
HashMap<String, List<TbUserCouponVo>> usedCouponMap = new HashMap<>(); HashMap<String, List<TbUserCouponVo>> usedCouponMap = new HashMap<>();
ArrayList<TbActivateOutRecord> outRecords = new ArrayList<>(); ArrayList<TbActivateOutRecord> outRecords = new ArrayList<>();
ArrayList<TbCashierCart> resetCouponList = new ArrayList<>();
for (TbCashierCart cashierCart : cartInfoDTO.getNewCashierCarts()) { for (TbCashierCart cashierCart : cartInfoDTO.getNewCashierCarts()) {
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);
} }
@@ -1241,6 +1259,21 @@ public class CartService {
cashierCartService.saveBatch(balanceCartList); cashierCartService.saveBatch(balanceCartList);
} }
// 更新购物车信息 // 更新购物车信息
if (!resetCouponList.isEmpty()) {
// 取消之前使用的历史券
ArrayList<Integer> resetCartIds = new ArrayList<>();
resetCouponList.forEach(item -> {
if (item.getUserCouponId() == null) {
resetCartIds.add(item.getId());
}
});
if (!resetCartIds.isEmpty()) {
cashierCartService.update(new LambdaUpdateWrapper<TbCashierCart>()
.in(TbCashierCart::getId, resetCartIds)
.set(TbCashierCart::getUserCouponId, null));
}
}
cashierCartService.updateBatchById(cartInfoDTO.getNewCashierCarts()); cashierCartService.updateBatchById(cartInfoDTO.getNewCashierCarts());
couponInfoDTO.setOutRecordList(outRecords); couponInfoDTO.setOutRecordList(outRecords);
@@ -1262,7 +1295,7 @@ public class CartService {
// 设置会员信息及价格 // 设置会员信息及价格
if (shopUser.getIsVip() == 0) { if (shopUser.getIsVip() == 0) {
tbCashierCart.setIsMember(0); tbCashierCart.setIsMember(0);
}else { } else {
if (!TableConstant.CashierCart.ID.equals(tbCashierCart.getProductId())) { if (!TableConstant.CashierCart.ID.equals(tbCashierCart.getProductId())) {
TbProductSkuWithBLOBs sku = productSkuMapper.selectByPrimaryKey(Integer.valueOf(tbCashierCart.getSkuId())); TbProductSkuWithBLOBs sku = productSkuMapper.selectByPrimaryKey(Integer.valueOf(tbCashierCart.getSkuId()));
tbCashierCart.setIsMember(sku.getMemberPrice() != null && sku.getMemberPrice().compareTo(BigDecimal.ZERO) > 0 ? 1 : 0); tbCashierCart.setIsMember(sku.getMemberPrice() != null && sku.getMemberPrice().compareTo(BigDecimal.ZERO) > 0 ? 1 : 0);
@@ -1325,6 +1358,42 @@ public class CartService {
return null; return null;
} }
private String getMasterId(String shopId, String tableId) {
String day = DateUtils.getDay();
JSONObject jsonObject = new JSONObject();
// 当前台桌码
String key = RedisCst.getMasterIdKey(shopId, day, tableId);
String userCode = stringRedisTemplate.opsForValue().get(key);
if (StringUtils.isEmpty(userCode) || "null".equals(userCode) || "#null".equals(userCode)) {
String code = "#" + generateOrderCode(day, "pc", String.valueOf(shopId));
stringRedisTemplate.opsForValue().set(key, code);
return code;
} else {
return userCode;
}
}
public synchronized String generateOrderCode(String day, String clientType, String shopId) {
String code = stringRedisTemplate.opsForValue().get("SHOP:CODE:" + clientType + ":" + shopId + ":" + day);
// 使用顺序递增的计数器生成取餐码
String orderCode = "";
if (StringUtils.isEmpty(code) || "null".equals(code)) {
orderCode = "1";
stringRedisTemplate.opsForValue().set("SHOP:CODE:" + clientType + ":" + shopId + ":" + day, "1");
} else {
orderCode = String.valueOf(Integer.parseInt(code.replace("#", "")) + 1);
}
stringRedisTemplate.opsForValue().set("SHOP:CODE:" + clientType + ":" + shopId + ":" + day, orderCode);
boolean flag = Boolean.TRUE.equals(stringRedisTemplate.opsForValue().setIfAbsent("SHOP:CODE:SET" + clientType + ":" + shopId + ":" + day, orderCode));
if (flag) {
return generateOrderCode(day, clientType, shopId);
}
// 增加计数器
return orderCode;
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result createOrder(CreateOrderDTO orderDTO) { public Result createOrder(CreateOrderDTO orderDTO) {
try { try {
@@ -1357,7 +1426,7 @@ public class CartService {
List<TbCashierCart> cashierCartList; List<TbCashierCart> cashierCartList;
if (orderDTO.isOnlyChangeCoupon()) { if (orderDTO.isOnlyChangeCoupon()) {
cashierCartList = cashierCartService.selectByOrderId(orderDTO.getShopId(), orderDTO.getOrderId()); cashierCartList = cashierCartService.selectByOrderId(orderDTO.getShopId(), orderDTO.getOrderId());
}else { } else {
cashierCartList = cashierCartService.selectByShopEatTypeInfo(shopEatTypeInfoDTO, orderDTO.getUserId()); cashierCartList = cashierCartService.selectByShopEatTypeInfo(shopEatTypeInfoDTO, orderDTO.getUserId());
} }
if (cashierCartList.isEmpty()) { if (cashierCartList.isEmpty()) {
@@ -1394,12 +1463,14 @@ public class CartService {
} }
// 创建订单详情数据 // 创建订单详情数据
OrderPriceDTO detailPriceDTO = createOrderDetailWithCoupon(cartInfoDTO.getCashierCarts(), cartInfoDTO.getOrderId(), orderDTO.getShopId(), shopEatTypeInfoDTO, orderDTO.isOnlyChangeCoupon()); String masterId = getMasterId(shopId, shopEatTypeInfoDTO.getTableId());
OrderPriceDTO detailPriceDTO = createOrderDetailWithCoupon(cartInfoDTO.getCashierCarts(), cartInfoDTO.getOrderId(),
orderDTO.getShopId(), shopEatTypeInfoDTO, orderDTO.isOnlyChangeCoupon(), masterId);
detailPriceDTO.setProductDiscountAmount(discountAmount); detailPriceDTO.setProductDiscountAmount(discountAmount);
// 是否是第一次创建订单 // 是否是第一次创建订单
orderInfo = createOrderInfoWithCoupon(orderDTO, detailPriceDTO, shopEatTypeInfoDTO, orderInfo = createOrderInfoWithCoupon(orderDTO, detailPriceDTO, shopEatTypeInfoDTO,
orderInfo, cartInfoDTO.getSeatCart(), tbShopUser, shopTable, couponInfo); orderInfo, cartInfoDTO.getSeatCart(), tbShopUser, shopTable, couponInfo, masterId);
if (orderInfo.getId() == null) { if (orderInfo.getId() == null) {
mpOrderInfoMapper.insert(orderInfo); mpOrderInfoMapper.insert(orderInfo);
@@ -1407,7 +1478,7 @@ public class CartService {
// 计算订单满减优惠 // 计算订单满减优惠
TbActivateOutRecord outRecord = calcOrderInfoDiscount(orderDTO, orderInfo, couponInfo, Integer.valueOf(tbShopUser.getId())); TbActivateOutRecord outRecord = calcOrderInfoDiscount(orderDTO, orderInfo, couponInfo, Integer.valueOf(tbShopUser.getId()));
if (couponInfo != null) { if (couponInfo != null) {
if (outRecord != null) { if (outRecord != null) {
couponInfo.getOutRecordList().add(outRecord); couponInfo.getOutRecordList().add(outRecord);
} }
@@ -1441,6 +1512,7 @@ public class CartService {
mpOrderInfoMapper.updateById(orderInfo); mpOrderInfoMapper.updateById(orderInfo);
if (!orderDTO.isOnlyChangeCoupon()) { if (!orderDTO.isOnlyChangeCoupon()) {
String tableCartKey = RedisCst.getTableCartKey(shopId, shopEatTypeInfoDTO.isOpenDineIn() ? tableId : null, Integer.valueOf(userId)); String tableCartKey = RedisCst.getTableCartKey(shopId, shopEatTypeInfoDTO.isOpenDineIn() ? tableId : null, Integer.valueOf(userId));
redisUtil.deleteByKey(tableCartKey); redisUtil.deleteByKey(tableCartKey);
} }
@@ -1572,7 +1644,7 @@ public class CartService {
// .eq(TbCashierCart::getTableId, choseEatModelDTO.getTableId()) // .eq(TbCashierCart::getTableId, choseEatModelDTO.getTableId())
.and(q -> q.eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType()).or().isNull(TbCashierCart::getUseType).or().eq(TbCashierCart::getUseType, "")) .and(q -> q.eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType()).or().isNull(TbCashierCart::getUseType).or().eq(TbCashierCart::getUseType, ""))
.eq(TbCashierCart::getStatus, "create"); .eq(TbCashierCart::getStatus, "create");
}else { } else {
queryWrapper = new LambdaQueryWrapper<TbCashierCart>() queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, choseEatModelDTO.getShopId()) .eq(TbCashierCart::getShopId, choseEatModelDTO.getShopId())
.gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime())

View File

@@ -86,7 +86,7 @@ public class GroupOrderInfoService {
result.setAddress(shopInfo.getAddress()); result.setAddress(shopInfo.getAddress());
result.setShopPhone(shopInfo.getPhone()); result.setShopPhone(shopInfo.getPhone());
TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(groupOrder.getProId()); TbProduct product = tbProductMapper.selectByPrimaryKey(groupOrder.getProId());
result.setTagVos(JSONUtil.parseListTNewList(product.getGroupSnap(), ProductVo.class)); result.setTagVos(JSONUtil.parseListTNewList(product.getGroupSnap(), ProductVo.class));

View File

@@ -558,7 +558,13 @@ public class PayService {
return Result.fail("订单十五分钟内有效,当前已超时,请重新下单。"); return Result.fail("订单十五分钟内有效,当前已超时,请重新下单。");
} }
TbUserInfo userInfo = tbUserInfoMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getUserId())); TbShopUser user = tbShopUserMapper.selectByPrimaryKey(memberId);
if (ObjectUtil.isEmpty(user) || user.getIsVip() == null || !"1".equals(user.getIsVip().toString())) {
// return Result.failCode("会员卡余额不足","1");
return Result.success(CodeEnum.SUCCESS, "4");
}
TbUserInfo userInfo = tbUserInfoMapper.selectByPrimaryKey(Integer.valueOf(user.getUserId()));
if (ObjectUtil.isEmpty(userInfo)) { if (ObjectUtil.isEmpty(userInfo)) {
return Result.fail("未获取到用户信息"); return Result.fail("未获取到用户信息");
} }
@@ -583,11 +589,6 @@ public class PayService {
} }
TbShopUser user = tbShopUserMapper.selectByPrimaryKey(memberId);
if (ObjectUtil.isEmpty(user) || user.getIsVip() == null || !"1".equals(user.getIsVip().toString())) {
// return Result.failCode("会员卡余额不足","1");
return Result.success(CodeEnum.SUCCESS, "4");
}
if (N.gt(orderInfo.getOrderAmount(), user.getAmount())) { if (N.gt(orderInfo.getOrderAmount(), user.getAmount())) {
// return Result.failCode("会员卡余额不足","2"); // return Result.failCode("会员卡余额不足","2");
@@ -615,6 +616,7 @@ public class PayService {
orderInfo.setPayAmount(orderInfo.getOrderAmount()); orderInfo.setPayAmount(orderInfo.getOrderAmount());
orderInfo.setMemberId(memberId); orderInfo.setMemberId(memberId);
orderInfo.setUserId(userInfo.getId().toString());
orderInfo.setPayType("deposit"); orderInfo.setPayType("deposit");
orderInfo.setStatus("closed"); orderInfo.setStatus("closed");
orderInfo.setPaidTime(System.currentTimeMillis()); orderInfo.setPaidTime(System.currentTimeMillis());
@@ -684,6 +686,12 @@ public class PayService {
// 重置台桌状态 // 重置台桌状态
if (StrUtil.isNotBlank(orderInfo.getTableId())) { if (StrUtil.isNotBlank(orderInfo.getTableId())) {
// 增加台桌取餐码
if (TableConstant.OrderInfo.UseType.DINE_IN_AFTER.equalsVals(orderInfo.getUseType())) {
String key = RedisCst.getMasterIdKey(String.valueOf(orderInfo.getShopId()), DateUtils.getDay(), orderInfo.getTableId());
stringRedisTemplate.delete(key);
}
TbShopTable shopTable = mpShopTableService.selectByQrcode(orderInfo.getTableId()); TbShopTable shopTable = mpShopTableService.selectByQrcode(orderInfo.getTableId());
if (shopTable.getAutoClear() != null && shopTable.getAutoClear() == 1) { if (shopTable.getAutoClear() != null && shopTable.getAutoClear() == 1) {
mpShopTableService.updateStateByQrcode(orderInfo.getTableId(), TableConstant.ShopTable.State.IDLE); mpShopTableService.updateStateByQrcode(orderInfo.getTableId(), TableConstant.ShopTable.State.IDLE);
@@ -1333,6 +1341,12 @@ public class PayService {
// 重置台桌状态 // 重置台桌状态
if (StrUtil.isNotBlank(orderInfo.getTableId())) { if (StrUtil.isNotBlank(orderInfo.getTableId())) {
// 增加台桌取餐码
if (TableConstant.OrderInfo.UseType.DINE_IN_AFTER.equalsVals(orderInfo.getUseType())) {
String key = RedisCst.getMasterIdKey(String.valueOf(orderInfo.getShopId()), DateUtils.getDay(), orderInfo.getTableId());
stringRedisTemplate.delete(key);
}
TbShopTable shopTable = mpShopTableService.selectByQrcode(orderInfo.getTableId()); TbShopTable shopTable = mpShopTableService.selectByQrcode(orderInfo.getTableId());
if (shopTable.getAutoClear() != null && shopTable.getAutoClear() == 1) { if (shopTable.getAutoClear() != null && shopTable.getAutoClear() == 1) {
mpShopTableService.updateStateByQrcode(orderInfo.getTableId(), TableConstant.ShopTable.State.IDLE); mpShopTableService.updateStateByQrcode(orderInfo.getTableId(), TableConstant.ShopTable.State.IDLE);
@@ -1509,7 +1523,7 @@ public class PayService {
//充值送积分 //充值送积分
TbActivate activate = tbActivateMapper.selectByAmountScope(tbShopUser.getShopId(), memberIn.getAmount()); TbActivate activate = tbActivateMapper.selectByAmountScope(tbShopUser.getShopId(), memberIn.getAmount());
if (ObjectUtil.isNotNull(activate)) { if (ObjectUtil.isNotNull(activate)) {
tbMemberPointsService.addPoints(Convert.toLong(tbShopUser.getId()), activate.getGiftAmount(), StrUtil.format("充值¥{}送{}积分", memberIn.getAmount(), activate.getGiftAmount()), null, memberIn.getOrderNo()); tbMemberPointsService.addPoints(Convert.toLong(tbShopUser.getId()), activate.getGiftPoints(), StrUtil.format("充值¥{}送{}积分", memberIn.getAmount(), activate.getGiftPoints()), null, memberIn.getOrderNo());
} }
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
@@ -1711,7 +1725,7 @@ public class PayService {
//充值送积分 //充值送积分
TbActivate activate = tbActivateMapper.selectByAmountScope(tbShopUser.getShopId(), memberIn.getAmount()); TbActivate activate = tbActivateMapper.selectByAmountScope(tbShopUser.getShopId(), memberIn.getAmount());
if (ObjectUtil.isNotNull(activate)) { if (ObjectUtil.isNotNull(activate)) {
tbMemberPointsService.addPoints(Convert.toLong(tbShopUser.getId()), activate.getGiftAmount(), StrUtil.format("充值¥{}送{}积分", memberIn.getAmount(), activate.getGiftAmount()), null, memberIn.getOrderNo()); tbMemberPointsService.addPoints(Convert.toLong(tbShopUser.getId()), activate.getGiftPoints(), StrUtil.format("充值¥{}送{}积分", memberIn.getAmount(), activate.getGiftPoints()), null, memberIn.getOrderNo());
} }
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("shopId", memberIn.getShopId()); jsonObject.put("shopId", memberIn.getShopId());

View File

@@ -424,7 +424,7 @@ public class ProductService {
spec.put("isGrounding", true); spec.put("isGrounding", true);
TbProductSku sku = (TbProductSku) spec.get("info"); TbProductSku sku = (TbProductSku) spec.get("info");
if (sku != null) { if (sku != null) {
tbProduct.setIsPauseSale(sku.getIsPauseSale().byteValue()); tbProduct.setIsPauseSale(sku.getIsPauseSale());
checkPauseSale(tbProduct, new ArrayList<>(Collections.singletonList(sku)), true); checkPauseSale(tbProduct, new ArrayList<>(Collections.singletonList(sku)), true);
spec.put("isPauseSale", tbProduct.getIsPauseSale()); spec.put("isPauseSale", tbProduct.getIsPauseSale());
}else { }else {
@@ -441,7 +441,7 @@ public class ProductService {
itemMap.put("isGrounding", false); itemMap.put("isGrounding", false);
TbProductSku sku = unGroundingMap.get("specSnap"); TbProductSku sku = unGroundingMap.get("specSnap");
if (sku != null) { if (sku != null) {
tbProduct.setIsPauseSale(sku.getIsPauseSale().byteValue()); tbProduct.setIsPauseSale(sku.getIsPauseSale());
checkPauseSale(tbProduct, Collections.singletonList(sku), true); checkPauseSale(tbProduct, Collections.singletonList(sku), true);
itemMap.put("isPauseSale", tbProduct.getIsPauseSale()); itemMap.put("isPauseSale", tbProduct.getIsPauseSale());
}else { }else {
@@ -515,7 +515,7 @@ public class ProductService {
} }
if (item.getMemberPrice() == null || item.getMemberPrice().compareTo(BigDecimal.ZERO) <= 0) { if (item.getMemberPrice() == null || item.getMemberPrice().compareTo(BigDecimal.ZERO) <= 0) {
item.setMealPrice(item.getSalePrice()); item.setMemberPrice(item.getSalePrice());
} }
} }
// 销量 // 销量
@@ -535,7 +535,7 @@ public class ProductService {
it.setProductSkuResult(skuResult); it.setProductSkuResult(skuResult);
if (isVip) { if (isVip) {
it.setLowPrice(BigDecimal.ZERO); it.setLowPrice(BigDecimal.ZERO);
it.setIsVip(Byte.parseByte("1")); it.setIsVip(1);
} }
}); });
return products; return products;
@@ -547,7 +547,7 @@ public class ProductService {
public void checkPauseSale(TbProduct tbProduct, List<TbProductSku> skus, boolean isSingle) { public void checkPauseSale(TbProduct tbProduct, List<TbProductSku> skus, boolean isSingle) {
if (tbProduct.getIsStock() == 1) {//库存开关 1开启 if (tbProduct.getIsStock() == 1) {//库存开关 1开启
if (tbProduct.getStockNumber() != null && tbProduct.getStockNumber() <= 0) { if (tbProduct.getStockNumber() != null && tbProduct.getStockNumber() <= 0) {
tbProduct.setIsPauseSale(Byte.parseByte("1"));//售罄 1暂停 tbProduct.setIsPauseSale(1);//售罄 1暂停
return; return;
} }
@@ -573,14 +573,14 @@ public class ProductService {
} }
} }
if (CollectionUtils.isEmpty(skus)) { if (CollectionUtils.isEmpty(skus)) {
tbProduct.setIsPauseSale(Byte.parseByte("1"));//售罄 1暂停 tbProduct.setIsPauseSale(1);//售罄 1暂停
} }
} }
} }
public Result queryProductSku(String code, String shopId, String productId, String spec_tag,String isVip) { public Result queryProductSku(String code, String shopId, String productId, String spec_tag) {
if (ObjectUtil.isEmpty(shopId) || ObjectUtil.isEmpty(productId) || StringUtils.isEmpty(isVip)|| isVip.equals("undefined") ) { if (ObjectUtil.isEmpty(shopId) || ObjectUtil.isEmpty(productId) ) {
return Result.fail("参数错误"); return Result.fail("参数错误");
} }
TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByShopIdAndProductIdAndSpec(shopId, productId, spec_tag); TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByShopIdAndProductIdAndSpec(shopId, productId, spec_tag);
@@ -593,7 +593,7 @@ public class ProductService {
tbProductSkuWithBLOBs.setId(null); tbProductSkuWithBLOBs.setId(null);
}else { }else {
if (StringUtils.isNotBlank(code)) { if (StringUtils.isNotBlank(code)) {
Integer sum = tbProductMapper.selectByCodeAndSkuId(code, tbProductSkuWithBLOBs.getId(), shopId,isVip); Integer sum = tbProductMapper.selectByCodeAndSkuId(code, tbProductSkuWithBLOBs.getId(), shopId);
tbProductSkuWithBLOBs.setNumber(sum); tbProductSkuWithBLOBs.setNumber(sum);
} }
} }
@@ -704,7 +704,11 @@ public class ProductService {
homeVO.setDiscount(BigDecimalUtils.getDiscount(tbProductSku.getOriginPrice(), tbProductSku.getSalePrice())); homeVO.setDiscount(BigDecimalUtils.getDiscount(tbProductSku.getOriginPrice(), tbProductSku.getSalePrice()));
} }
//销量 //销量
homeVO.setRealSalesNumber(new BigDecimal(o.getNumber())); if (o.getNumber() == null) {
homeVO.setRealSalesNumber(BigDecimal.ZERO);
}else {
homeVO.setRealSalesNumber(new BigDecimal(o.getNumber()));
}
//现价 //现价
homeVO.setSalePrice(new BigDecimal(tbProductSku.getSalePrice().toString())); homeVO.setSalePrice(new BigDecimal(tbProductSku.getSalePrice().toString()));
// 共省金额 // 共省金额
@@ -734,13 +738,13 @@ public class ProductService {
lat = "34.343207"; lat = "34.343207";
lng = "108.939645"; lng = "108.939645";
} }
CompletableFuture<TbProductWithBLOBs> product = CompletableFuture.supplyAsync(() -> CompletableFuture<TbProduct> product = CompletableFuture.supplyAsync(() ->
tbProductMapper.selectByPrimaryKey(productId)); tbProductMapper.selectByPrimaryKey(productId));
CompletableFuture<List<TbProductSku>> productSku = CompletableFuture.supplyAsync(() -> CompletableFuture<List<TbProductSku>> productSku = CompletableFuture.supplyAsync(() ->
tbProductSkuMapper.selectSku(productId.toString())); tbProductSkuMapper.selectSku(productId.toString()));
Threads.call(product, productSku); Threads.call(product, productSku);
TbProductWithBLOBs tbProduct = product.get(); TbProduct tbProduct = product.get();
TbShopInfo tbShopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(tbProduct.getShopId())); TbShopInfo tbShopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(tbProduct.getShopId()));
TbPurchaseNotice tbPurchaseNotice = purchaseNoticeMapper.queryByCouponId(tbProduct.getId()); TbPurchaseNotice tbPurchaseNotice = purchaseNoticeMapper.queryByCouponId(tbProduct.getId());

File diff suppressed because it is too large Load Diff

View File

@@ -406,7 +406,7 @@
LEFT JOIN tb_product_sku sku ON pro.id = sku.product_id LEFT JOIN tb_product_sku sku ON pro.id = sku.product_id
WHERE WHERE
pro.type_enum = 'group' pro.type_enum = 'group'
AND pro.is_combo = '1' # AND pro.is_combo = '1'
GROUP BY GROUP BY
sku.product_id sku.product_id
ORDER BY ORDER BY
@@ -426,7 +426,7 @@
LEFT JOIN tb_product_sku sku ON pro.id = sku.product_id LEFT JOIN tb_product_sku sku ON pro.id = sku.product_id
WHERE WHERE
pro.type_enum = 'group' pro.type_enum = 'group'
AND pro.is_combo = '1' # AND pro.is_combo = '1'
GROUP BY GROUP BY
sku.product_id sku.product_id
ORDER BY ORDER BY