diff --git a/eladmin-common/src/main/java/cn/ysk/cashier/utils/JSONUtil.java b/eladmin-common/src/main/java/cn/ysk/cashier/utils/JSONUtil.java index 23a32691..0e75d57a 100644 --- a/eladmin-common/src/main/java/cn/ysk/cashier/utils/JSONUtil.java +++ b/eladmin-common/src/main/java/cn/ysk/cashier/utils/JSONUtil.java @@ -88,6 +88,18 @@ public class JSONUtil { } } + + public static List parseJSONStrTList(String jsonStr, Class clazz) { + ObjectMapper objectMapper = new ObjectMapper(); + try { + // 将JSON字符串转换为List + return objectMapper.readValue(jsonStr, objectMapper.getTypeFactory().constructCollectionType(List.class, clazz)); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + /** * @param list 某集合 * @param clazz 要转成的实体 diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbShopShareController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbShopShareController.java new file mode 100644 index 00000000..e467b652 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbShopShareController.java @@ -0,0 +1,59 @@ +package cn.ysk.cashier.controller; + + +import cn.ysk.cashier.mybatis.entity.TbShopShare; +import cn.ysk.cashier.mybatis.service.TbShopShareService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Arrays; + +/** + * 店铺分享(TbShopShare)表控制层 + * + * @author ww + * @since 2024-11-06 15:47:37 + */ +@Api(tags = "分享") +@RestController +@RequestMapping("tbShopShare") +public class TbShopShareController { + + @Resource + private TbShopShareService tbShopShareService; + + @GetMapping("byShopId") + @ApiOperation("通过shopId查询详情") + public ResponseEntity getByShopId( + @RequestParam Integer shopId + ) { + return ResponseEntity.ok(tbShopShareService.getByShopId(shopId)); + } + + @PostMapping + @ApiOperation("新增") + public ResponseEntity insert(@RequestBody TbShopShare tbShopShare) { + return new ResponseEntity<>(tbShopShareService.save(tbShopShare), HttpStatus.CREATED); + } + + @PutMapping + @ApiOperation("通过id修改") + public ResponseEntity update(@RequestBody TbShopShare tbShopShare) { + tbShopShareService.updateById(tbShopShare); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + + + @DeleteMapping + @ApiOperation("删除") + public ResponseEntity delete(@RequestBody Integer[] ids) { + tbShopShareService.removeByIds(Arrays.asList(ids)); + return new ResponseEntity<>(HttpStatus.OK); + } +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java index e0f749dd..d36df365 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java @@ -147,7 +147,7 @@ public class TbPlaceController { @PostMapping("/order") @ApiOperation("代客下单 查询购物车 /shop/table") public ResponseEntity createOrder(@RequestBody CreateOrderDTO createOrderDTO) { - return ResponseEntity.ok(tbShopTableService.createOrder(createOrderDTO, !createOrderDTO.isPostPay(), true)); + return ResponseEntity.ok(tbShopTableService.createOrder(createOrderDTO, false)); } @PostMapping("/pending") diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ShopEatTypeInfoDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ShopEatTypeInfoDTO.java index a472da78..b62e0c5d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ShopEatTypeInfoDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ShopEatTypeInfoDTO.java @@ -21,6 +21,7 @@ public class ShopEatTypeInfoDTO { private boolean isNoneTable; // 是否增加masterId private boolean isIncrMaterId; + private boolean isMemberPrice; private TbShopInfo shopInfo; private String useType; private Object shopId; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopShare.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopShare.java new file mode 100644 index 00000000..757bba78 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbShopShare.java @@ -0,0 +1,98 @@ +package cn.ysk.cashier.mybatis.entity; + +import java.util.Date; + +import cn.hutool.core.collection.CollectionUtil; +import cn.ysk.cashier.utils.JSONUtil; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +import java.io.Serializable; +import java.util.List; + +/** + * 店铺分享(TbShopShare)表实体类 + * + * @author ww + * @since 2024-11-06 15:47:37 + */ +@Data +@SuppressWarnings("serial") +public class TbShopShare extends Model { + + @TableId(type = IdType.AUTO) + private Integer id; + //店铺Id + private Integer shopId; + //标题 + private String title; + //分享封面图 + private String shareImg; + //邀请顶部图 + private String invitedImg; + //被邀顶部图 + private String beInvitedImg; + //活动开始时间 + private Date startTime; + //活动结束时间 + private Date endTime; + //新用户获得券 + private String newCoupon; + //邀请num人数 可获奖励券 + private Integer invitedNum; + //奖励券 + private String rewardCoupon; + //获取方法 get-新用户领取获得 use-新用户使用获得 + private String getMethod; + + private Integer status; + + @TableField(exist = false) + private List newCoupons; + + @TableField(exist = false) + private List rewardCoupons; + + public void setNewCoupon(String newCoupon) { + this.newCoupon = newCoupon; + if(StringUtils.isNotBlank(newCoupon)){ + this.newCoupons = JSONUtil.parseJSONStrTList(newCoupon,ShareCoupons.class); + } + } + + public void setRewardCoupon(String rewardCoupon) { + this.rewardCoupon = rewardCoupon; + if(StringUtils.isNotBlank(rewardCoupon)){ + this.rewardCoupons = JSONUtil.parseJSONStrTList(rewardCoupon,ShareCoupons.class); + } + } + + public void setNewCoupons(List newCoupons) { + this.newCoupons = newCoupons; + if(CollectionUtil.isNotEmpty(newCoupons)){ + this.newCoupon = JSONUtil.toJSONString(newCoupons); + } + } + + public void setRewardCoupons(List rewardCoupons) { + this.rewardCoupons = rewardCoupons; + if(CollectionUtil.isNotEmpty(rewardCoupons)){ + this.rewardCoupon = JSONUtil.toJSONString(rewardCoupons); + } + } + + @Data + public static class ShareCoupons { + //优惠券Id + private Integer couponId; + //优惠券名称 + private String couponName; + //优惠券数量 + private Integer couponNum; + } +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbShopShareMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbShopShareMapper.java new file mode 100644 index 00000000..54b3e894 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbShopShareMapper.java @@ -0,0 +1,15 @@ +package cn.ysk.cashier.mybatis.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import cn.ysk.cashier.mybatis.entity.TbShopShare; + +/** + * 店铺分享(TbShopShare)表数据库访问层 + * + * @author ww + * @since 2024-11-06 15:47:37 + */ +public interface TbShopShareMapper extends BaseMapper { + +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java index ca9ca5a6..101e4c21 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java @@ -72,6 +72,6 @@ public interface MpCashierCartService extends IService { List selectByOrderIdAndState(Integer orderId, TableConstant.OrderInfo.Status status); - boolean updateMemberByOrderId(Integer orderId, boolean isMember); + boolean updateMemberAndAmountByOrderId(Integer orderId, boolean isMember); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopShareService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopShareService.java new file mode 100644 index 00000000..e93a7682 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbShopShareService.java @@ -0,0 +1,18 @@ +package cn.ysk.cashier.mybatis.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import cn.ysk.cashier.mybatis.entity.TbShopShare; + +import java.util.Map; + +/** + * 店铺分享(TbShopShare)表服务接口 + * + * @author ww + * @since 2024-11-06 15:47:37 + */ +public interface TbShopShareService extends IService { + TbShopShare getByShopId(Integer shopId); + +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java index ee749e70..ffda60de 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java @@ -99,9 +99,10 @@ public class MpCashierCartServiceImpl extends ServiceImpl() .eq(TbCashierCart::getOrderId, orderId) + .setSql(StrUtil.format("total_amount=total_number*{}", isMember ? "member_price" : "sale_price")) .set(TbCashierCart::getIsMember, isMember ? 1 : 0)); } @@ -115,13 +116,11 @@ public class MpCashierCartServiceImpl extends ServiceImpl q.eq(TbCashierCart::getMasterId, masterId).or().isNull(TbCashierCart::getMasterId)); // 非堂食校验台桌状态 - TbShopTable tbShopTable; if (shopEatTypeInfoDTO.isTakeout()) { queryWrapper.and(q -> q.isNull(TbCashierCart::getTableId).or().eq(TbCashierCart::getTableId, "")) .in(TbCashierCart::getPlatformType, OrderPlatformTypeEnum.PC.getValue(), OrderPlatformTypeEnum.CASH.getValue()); } else { if (StrUtil.isNotBlank(shopEatTypeInfoDTO.getTableId())) { - queryWrapper.eq(TbCashierCart::getTableId, shopEatTypeInfoDTO.getTableId()); } else { queryWrapper.and(q -> q.isNull(TbCashierCart::getTableId).or().eq(TbCashierCart::getTableId, "")); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopShareServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopShareServiceImpl.java new file mode 100644 index 00000000..5216c3de --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopShareServiceImpl.java @@ -0,0 +1,35 @@ +package cn.ysk.cashier.mybatis.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import cn.ysk.cashier.mybatis.mapper.TbShopShareMapper; +import cn.ysk.cashier.mybatis.entity.TbShopShare; +import cn.ysk.cashier.mybatis.service.TbShopShareService; +import org.springframework.stereotype.Service; +import org.apache.commons.lang3.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.springframework.beans.factory.annotation.Autowired; +import cn.ysk.cashier.utils.PageUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import java.util.Map; + +/** + * 店铺分享(TbShopShare)表服务实现类 + * + * @author ww + * @since 2024-11-06 15:47:37 + */ +@Service("tbShopShareService") +public class TbShopShareServiceImpl extends ServiceImpl implements TbShopShareService { + + @Autowired + private TbShopShareMapper tbShopSharemapper; + + @Override + public TbShopShare getByShopId(Integer shopId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("shop_id", shopId); + return tbShopSharemapper.selectOne(wrapper); + } +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java index 4915beac..d3712b1e 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java @@ -176,10 +176,17 @@ public class TbCashierCart implements Serializable { * 根据是否会员充值价格 */ public void resetTotalAmount() { - if (isMember != null && isMember == 1) { - totalAmount = BigDecimal.valueOf(totalNumber).multiply(memberPrice).add(packFee); + if ("false".equals(isPack)) { + packFee = BigDecimal.ZERO; + } + if ("true".equals(isGift)) { + totalAmount = packFee; }else { - totalAmount = BigDecimal.valueOf(totalNumber).multiply(salePrice).add(packFee); + if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { + totalAmount = BigDecimal.valueOf(totalNumber).multiply(memberPrice).add(packFee); + }else { + totalAmount = BigDecimal.valueOf(totalNumber).multiply(salePrice).add(packFee); + } } } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 973ea7e1..cac0cc36 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -206,11 +206,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { boolean isDineInBefore = hasTable && isMunchies && !isTakeout; // 是否无台桌 boolean isNoneTable = !hasTable && !isTakeout; + boolean isMemberPrice = shopInfo.getIsMemberPrice() != null && shopInfo.getIsMemberPrice() == 1; - boolean needSeatFee = shopInfo.getIsTableFee() == null || shopInfo.getIsTableFee() == 0; + boolean needSeatFee = !isTakeout && (shopInfo.getIsTableFee() == null || shopInfo.getIsTableFee() == 0); boolean isIncrMasterId = isTakeout || isNoneTable; - return new ShopEatTypeInfoDTO(isTakeout, isMunchies, isDineInAfter, isDineInBefore, needSeatFee, isNoneTable, isIncrMasterId, shopInfo, isTakeout ? TableConstant.OrderInfo.UseType.TAKEOUT.getValue() : + return new ShopEatTypeInfoDTO(isTakeout, isMunchies, isDineInAfter, isDineInBefore, needSeatFee, isNoneTable, isIncrMasterId, isMemberPrice, shopInfo, isTakeout ? TableConstant.OrderInfo.UseType.TAKEOUT.getValue() : isDineInBefore ? TableConstant.OrderInfo.UseType.DINE_IN_BEFORE.getValue() : isNoneTable ? TableConstant.OrderInfo.UseType.NONE_TABLE.getValue() : TableConstant.OrderInfo.UseType.DINE_IN_AFTER.getValue(), shopId, tableId, isTakeout ? OrderSendTypeEnums.TAKE_SELF.getValue() : OrderSendTypeEnums.TABLE.getValue()); } @@ -550,8 +551,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setCategoryId(product.getCategoryId()); tbCashierCart.setNote(addCartDTO.getNote()); tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); - tbCashierCart.setMemberPrice(productSku.getMemberPrice() == null || productSku.getMemberPrice().compareTo(BigDecimal.ZERO) <= 0 ? productSku.getSalePrice() : productSku.getMemberPrice()); - tbCashierCart.setIsMember(addCartDTO.getVipUserId() == null ? 0 : 1); + tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() == null ? 0 : 1); + if (tbCashierCart.getIsMember() == 1) { + tbCashierCart.setMemberPrice(productSku.getMemberPrice()); + } cashierCartRepository.save(tbCashierCart); } else { @@ -1115,7 +1118,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override @Transactional - public TbOrderInfo createOrder(CreateOrderDTO createOrderDTO, boolean addMaterId, boolean isPrint) { + public TbOrderInfo createOrder(CreateOrderDTO createOrderDTO, boolean byOrderId) { createOrderDTO.setTableId(OrderUseTypeEnum.TAKEOUT.getValue().equals(createOrderDTO.getUseType()) ? null : createOrderDTO.getTableId()); return Utils.runFunAndCheckKey(() -> { TbShopInfo shopInfo = shopInfoRepository.findById(createOrderDTO.getShopId()).orElse(null); @@ -1130,7 +1133,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 就餐模式信息 ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(createOrderDTO.getShopId(), createOrderDTO.getTableId(), createOrderDTO.getUseType()); - OrderCartInfoDTO cartInfoDTO = getCartForCreateOrder(shopEatTypeInfoDTO, createOrderDTO.getMasterId(), shopUser); + OrderCartInfoDTO cartInfoDTO = getCartForCreateOrder(shopEatTypeInfoDTO, createOrderDTO.getMasterId(), shopUser, byOrderId ? createOrderDTO.getOrderId() : null, byOrderId); if (cartInfoDTO.getOrderId() == null) { createOrderDTO.setOrderId(shopEatTypeInfoDTO.isDineInAfter() ? getCurrentOrderId(shopEatTypeInfoDTO) : null); @@ -1151,7 +1154,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { // } // 创建订单详情 - OrderPriceDTO detailPriceDTO = createOrderDetailWithCoupon(cartInfoDTO.getCashierCarts(), orderInfo, createOrderDTO.getShopId(), true); + OrderPriceDTO detailPriceDTO = createOrderDetailWithCoupon(cartInfoDTO.getCashierCarts(), orderInfo, createOrderDTO.getShopId(), true, shopEatTypeInfoDTO); // 是否是第一次创建订单 orderInfo = createOrderWithAction(createOrderDTO, detailPriceDTO, shopEatTypeInfoDTO, @@ -1309,10 +1312,14 @@ public class TbShopTableServiceImpl implements TbShopTableService { return infoDTO; } - private OrderCartInfoDTO getCartForCreateOrder(ShopEatTypeInfoDTO shopEatTypeInfoDTO, String masterId, TbShopUser shopUser) { + private OrderCartInfoDTO getCartForCreateOrder(ShopEatTypeInfoDTO shopEatTypeInfoDTO, String masterId, TbShopUser shopUser, Integer orderId, boolean ignoreEmpty) { OrderCartInfoDTO cartInfoDTO = new OrderCartInfoDTO(); - - List allCashierCarts = mpCashierCartService.selectByShopEatType(shopEatTypeInfoDTO, masterId); + List allCashierCarts; + if (orderId != null) { + allCashierCarts = mpCashierCartService.selectByOrderIdAndState(orderId, null); + }else { + allCashierCarts = mpCashierCartService.selectByShopEatType(shopEatTypeInfoDTO, masterId); + } TbCashierCart seatCart = null; for (TbCashierCart cashierCart : allCashierCarts) { if (TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId())) { @@ -1325,10 +1332,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { cartInfoDTO.getCashierCarts().add(cashierCart); } - if (StrUtil.isNotBlank(shopEatTypeInfoDTO.getTableId()) + if (!ignoreEmpty && (StrUtil.isNotBlank(shopEatTypeInfoDTO.getTableId()) && (cartInfoDTO.getCashierCarts().isEmpty() || (shopEatTypeInfoDTO.isNeedSeatFee() && !shopEatTypeInfoDTO.isTakeout() && seatCart != null && cartInfoDTO.getCashierCarts().size() < 2) - || (shopEatTypeInfoDTO.isNeedSeatFee() && !shopEatTypeInfoDTO.isTakeout() && seatCart == null))) { + || (shopEatTypeInfoDTO.isNeedSeatFee() && !shopEatTypeInfoDTO.isTakeout() && seatCart == null)))) { throw new BadRequestException("购物车为空或未选择餐位费,请先添加商品或选择餐位费"); } @@ -1347,7 +1354,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { cartInfoDTO.setNewAddTotalAmount(cartInfoDTO.getNewAddTotalAmount().add(tbCashierCart.getTotalAmount())); } if (shopUser != null) { - tbCashierCart.setIsMember(tbCashierCart.getMemberPrice() == null && shopUser.getIsVip() == 1 ? 0 : 1); + tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && tbCashierCart.getMemberPrice() == null && shopUser.getIsVip() == 1 ? 0 : 1); } tbCashierCart.resetTotalAmount(); @@ -1390,7 +1397,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { * @param updateState * @return */ - private OrderPriceDTO createOrderDetailWithCoupon(List fullCashierCarts, TbOrderInfo orderInfo, Integer shopId, boolean updateState) { + private OrderPriceDTO createOrderDetailWithCoupon(List fullCashierCarts, TbOrderInfo orderInfo, Integer shopId, boolean updateState, ShopEatTypeInfoDTO shopEatTypeInfoDTO) { OrderPriceDTO priceDTO = new OrderPriceDTO(); List cartIds = fullCashierCarts.stream().map(TbCashierCart::getId).collect(Collectors.toList()); @@ -1408,10 +1415,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { }); for (TbCashierCart cashierCart : fullCashierCarts) { - if (orderInfo != null) { - cashierCart.setIsMember(orderInfo.getMemberId() == null ? 0 : 1); - cashierCart.resetTotalAmount(); + if (orderInfo != null && shopEatTypeInfoDTO != null) { + cashierCart.setIsMember(orderInfo.getMemberId() == null ? 0 : shopEatTypeInfoDTO.isMemberPrice() ? 1 : 0); } + cashierCart.resetTotalAmount(); // 已经退款和使用优惠券的商品不进行统计金额 if (!"return".equals(cashierCart.getStatus()) && cashierCart.getUserCouponId() == null) { @@ -1423,7 +1430,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { priceDTO.setOriginAmount(priceDTO.getOriginAmount().add(cashierCart.getTotalAmount())); } - TbProductSku productSku = productSkuRepository.findById(Integer.valueOf(cashierCart.getSkuId())).orElse(null); TbOrderDetail orderDetail = null; if (cashierCart.getOrderId() != null) { @@ -1752,7 +1758,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { createOrderDTO.setMasterId(pendingDTO.getMasterId()); createOrderDTO.setNote(pendingDTO.getNote()); createOrderDTO.setUseType(pendingDTO.getUseType()); - orderId = createOrder(createOrderDTO, true, false).getId(); + orderId = createOrder(createOrderDTO, false).getId(); } @@ -1954,7 +1960,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 更新订单信息 - OrderPriceDTO priceDTO = createOrderDetailWithCoupon(activateCartInfo, orderInfo, payDTO.getShopId(), false); + OrderPriceDTO priceDTO = createOrderDetailWithCoupon(activateCartInfo, orderInfo, payDTO.getShopId(), false, null); BigDecimal finalAmount = priceDTO.getTotalAmount().multiply(BigDecimal.valueOf(payDTO.getDiscount())).setScale(2, RoundingMode.HALF_UP); orderInfo.setUpdatedAt(System.currentTimeMillis()); @@ -1991,8 +1997,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 计算优惠券价格信息 if (payDTO.getVipUserId() == null) { - - payDTO.setVipUserId(Integer.valueOf(orderInfo.getMemberId())); + payDTO.setVipUserId(orderInfo.getMemberId() != null ? Integer.valueOf(orderInfo.getMemberId()) : null); } @@ -2159,24 +2164,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { } @Override + @Transactional public Object updateVip(UpdateVipDTO updateVipDTO) { Integer orderId = updateVipDTO.getOrderId(); if (orderId == null) { ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(updateVipDTO.getShopId(), updateVipDTO.getTableId()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .in(TbCashierCart::getStatus, "create", "return") - .eq(TbCashierCart::getShopId, updateVipDTO.getShopId()) - .eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType()) - .and(q -> q.eq(TbCashierCart::getMasterId, updateVipDTO.getMasterId()).or().isNull(TbCashierCart::getMasterId)); - - if (!shopEatTypeInfoDTO.isTakeout()) { - queryWrapper.eq(TbCashierCart::getTableId, updateVipDTO.getTableId()); - } else { - queryWrapper.and(q -> q.isNull(TbCashierCart::getTableId).or().eq(TbCashierCart::getTableId, "")) - .in(TbCashierCart::getPlatformType, OrderPlatformTypeEnum.PC.getValue(), OrderPlatformTypeEnum.CASH.getValue()); - } - - List tbCashierCarts = cashierCartMapper.selectList(queryWrapper.isNotNull(TbCashierCart::getOrderId)); + List tbCashierCarts = mpCashierCartService.selectByShopEatType(shopEatTypeInfoDTO, updateVipDTO.getMasterId()); for (TbCashierCart item : tbCashierCarts) { if (item.getOrderId() != null) { orderId = item.getOrderId(); @@ -2184,23 +2177,45 @@ public class TbShopTableServiceImpl implements TbShopTableService { } } + CreateOrderDTO dto = null; + if (orderId != null) { + TbOrderInfo orderInfo = mpOrderInfoService.getById(orderId); + if(!TableConstant.OrderInfo.Status.UNPAID.equalsVals(orderInfo.getStatus())) { + throw new BadRequestException("订单状态异常"); + } + dto = new CreateOrderDTO(); + dto.setTableId(orderInfo.getTableId()); + dto.setOrderId(orderInfo.getId()); + dto.setShopId(Integer.valueOf(orderInfo.getShopId())); + dto.setMasterId(orderInfo.getMasterId()); + dto.setUseType(orderInfo.getUseType()); + } + + if (updateVipDTO.getType() == 0) { TbShopUser shopUser = tbShopUserMapper.selectById(updateVipDTO.getVipUserId()); if (shopUser == null) { throw new BadRequestException("用户信息不存在"); } - mpCashierCartService.updateMemberByOrderId(orderId, true); - return orderInfoMapper.update(null, new LambdaUpdateWrapper() + + orderInfoMapper.update(null, new LambdaUpdateWrapper() .eq(TbOrderInfo::getId, orderId) .set(TbOrderInfo::getUserId, shopUser.getUserId()) .set(TbOrderInfo::getMemberId, updateVipDTO.getVipUserId())); + } else { - mpCashierCartService.updateMemberByOrderId(orderId, false); - return orderInfoMapper.update(null, new LambdaUpdateWrapper() + mpCashierCartService.updateMemberAndAmountByOrderId(orderId, false); + orderInfoMapper.update(null, new LambdaUpdateWrapper() .eq(TbOrderInfo::getId, orderId) .set(TbOrderInfo::getUserId, null) .set(TbOrderInfo::getMemberId, null)); } + + if (dto != null) { + return createOrder(dto, true); + } + return "哈哈哈"; + } @@ -2301,6 +2316,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setTableId(choseCountDTO.getTableId()); tbCashierCart.setName("客座费"); tbCashierCart.setSalePrice(shopInfo.getTableFee()); + tbCashierCart.setMemberPrice(shopInfo.getTableFee()); tbCashierCart.setMasterId(choseCountDTO.getMasterId()); tbCashierCart.setShopId(String.valueOf(choseCountDTO.getShopId())); tbCashierCart.setTradeDay(DateUtils.getDay()); @@ -2315,6 +2331,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { 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()); @@ -2645,18 +2662,16 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfo.setRefundRemark(returnOrderDTO.getNote()); if ("scanCode".equals(payType) || "wx_lite".equals(payType)) { payService.returnOrder(Integer.valueOf(shopId), orderInfo, returnOrderInfo); - orderInfo.setStatus("refund"); // 储值卡支付退款 } else if ("deposit".equals(payType)) { orderInfoService.depositReturn(Integer.valueOf(orderInfo.getUserId()), Integer.valueOf(orderInfo.getShopId()), returnAmount); - orderInfo.setStatus("refund"); mpOrderDetailService.updateStatusByOrderIdAndIds(OrderStatusEnums.REFUNDING, OrderStatusEnums.REFUND, returnOrderDTO.getOrderId(), returnOrderDTO.getOrderDetails().stream().map(ReturnOrderDTO.OrderDetail::getId).collect(Collectors.toList())); } else if ("cash".equals(payType)) { - orderInfo.setStatus("refund"); mpOrderDetailService.updateStatusByOrderIdAndIds(OrderStatusEnums.REFUNDING, OrderStatusEnums.REFUND, returnOrderDTO.getOrderId(), returnOrderDTO.getOrderDetails().stream().map(ReturnOrderDTO.OrderDetail::getId).collect(Collectors.toList())); } + orderInfo.setStatus(TableConstant.OrderInfo.Status.CLOSED.getValue()); orderInfoMapper.updateById(orderInfo); // 打印退款小票 // producer.printMechine(newOrderInfo.getId().toString()); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopTableService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopTableService.java index 58fd4474..10be0f97 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopTableService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopTableService.java @@ -110,7 +110,7 @@ public interface TbShopTableService { void pack(PackCartDTO packCartDTO); - Object createOrder(CreateOrderDTO createOrderDTO, boolean addMasterId, boolean isPrint); + Object createOrder(CreateOrderDTO createOrderDTO, boolean addMasterId); JSONObject getMasterId(Integer shopId, String tableId, String useType, Integer orderId);