From 436a38afa78b177479458759215a10480a4274c0 Mon Sep 17 00:00:00 2001 From: GYJ <1157756119@qq.com> Date: Thu, 21 Nov 2024 14:30:28 +0800 Subject: [PATCH 01/71] =?UTF-8?q?=E5=91=98=E5=B7=A5=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shopimpl/TbPlussShopStaffServiceImpl.java | 53 +++++++++++-------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbPlussShopStaffServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbPlussShopStaffServiceImpl.java index 60b3cca6..89303ea2 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbPlussShopStaffServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbPlussShopStaffServiceImpl.java @@ -104,27 +104,8 @@ public class TbPlussShopStaffServiceImpl implements TbPlussShopStaffService { @Override @Transactional(rollbackFor = Exception.class) public TbPlussShopStaffDto create(TbPlussShopStaff resources) { - if (org.apache.commons.lang3.StringUtils.isBlank(resources.getAccount())) { - throw new BadRequestException("员工账号为空"); - } - if (userRepository.findByUsername(resources.getShopId()+"@"+resources.getAccount()) != null) { - throw new BadRequestException("员工账号已存在"); - } - if (!PhoneUtil.validator(resources.getPhone())){ - throw new BadRequestException("手机号格式有误"); - } + checkStaffParams(resources); - if (pattern.matcher(resources.getCode()).find()) { - throw new BadRequestException("员工编号不能包含中文"); - } - - if (resources.getRoleId()==null) { - throw new BadRequestException("请选择角色"); - } - - if (resources.getMaxDiscountAmount().compareTo(new BigDecimal(100000000L)) > 0) { - throw new BadRequestException("最大优惠金额过大"); - } resources.setCreatedAt(Instant.now().toEpochMilli()); //添加收银系统后台账号 @@ -172,9 +153,8 @@ public class TbPlussShopStaffServiceImpl implements TbPlussShopStaffService { resources.setPassword(null); } - if (pattern.matcher(resources.getCode()).find()) { - throw new BadRequestException("员工编号不能包含中文"); - } + checkStaffParams(resources); + TbPlussShopStaff tbPlussShopStaff = tbPlussShopStaffRepository.findById(resources.getId()).orElseGet(TbPlussShopStaff::new); User sysUser = userRepository.findByUsername(resources.getShopId()+"@"+tbPlussShopStaff.getAccount()); if(!tbPlussShopStaff.getAccount().equals(resources.getAccount())){ @@ -207,6 +187,33 @@ public class TbPlussShopStaffServiceImpl implements TbPlussShopStaffService { Integer.valueOf(resources.getShopId()), resources.getId(), resources.getPermissions()); } + private void checkStaffParams(TbPlussShopStaff resources) { + if (StringUtils.isBlank(resources.getAccount())) { + throw new BadRequestException("员工账号为空"); + } + if (userRepository.findByUsername(resources.getShopId()+"@"+resources.getAccount()) != null) { + throw new BadRequestException("员工账号已存在"); + } + if (!PhoneUtil.validator(resources.getPhone())){ + throw new BadRequestException("手机号格式有误"); + } + if (tbPlussShopStaffRepository.queryByAccount(resources.getAccount(),resources.getShopId()) != null) { + throw new BadRequestException("账号已存在"); + } + + if (pattern.matcher(resources.getCode()).find()) { + throw new BadRequestException("员工编号不能包含中文"); + } + + if (resources.getRoleId()==null) { + throw new BadRequestException("请选择角色"); + } + + if (resources.getMaxDiscountAmount().compareTo(new BigDecimal(100000000L)) > 0) { + throw new BadRequestException("最大优惠金额过大"); + } + } + @Override @Transactional(rollbackFor = Exception.class) public void updateStatus(TbPlussShopStaff resources) { From 70d95e318e5b8d2a9d64331b95430b9869c7cd61 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Thu, 21 Nov 2024 14:35:04 +0800 Subject: [PATCH 02/71] =?UTF-8?q?=E8=90=A5=E9=94=80=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/ysk/cashier/controller/AppCenterController.java | 8 ++++++-- .../service/impl/TbPlatformDictTypeServiceImpl.java | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/AppCenterController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/AppCenterController.java index 716887ea..8b2f4b8b 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/AppCenterController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/AppCenterController.java @@ -4,10 +4,12 @@ import cn.ysk.cashier.service.TbPlatformDictService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import org.apache.ibatis.annotations.Param; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequiredArgsConstructor @@ -19,10 +21,12 @@ public class AppCenterController { @GetMapping @ApiOperation("获取应用中心列表") - public ResponseEntity queryBotButtonConfig(){ - return new ResponseEntity<>(tbPlatformDictService.queryByType("appCenter"), HttpStatus.OK); + public ResponseEntity queryBotButtonConfig(@RequestParam(required = false, defaultValue = "appCenter") String type){ + return new ResponseEntity<>(tbPlatformDictService.queryByType(type), HttpStatus.OK); } + + } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbPlatformDictTypeServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbPlatformDictTypeServiceImpl.java index cb4b64be..452d993d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbPlatformDictTypeServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbPlatformDictTypeServiceImpl.java @@ -9,6 +9,7 @@ import cn.ysk.cashier.utils.ValidationUtil; import lombok.RequiredArgsConstructor; import cn.ysk.cashier.repository.TbPlatformDictTypeRepository; import cn.ysk.cashier.service.TbPlatformDictTypeService; +import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.data.domain.Page; @@ -31,6 +32,7 @@ public class TbPlatformDictTypeServiceImpl implements TbPlatformDictTypeService @Override public Map queryAll(TbPlatformDictTypeQueryCriteria criteria, Pageable pageable){ + pageable = PageRequest.of(0,50); Page page = tbPlatformDictTypeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); return PageUtil.toPage(page.map(tbPlatformDictTypeMapper::toDto)); } From 0ff186c92aba52b160b5d3ac9a09721a3dc6987b Mon Sep 17 00:00:00 2001 From: GYJ <1157756119@qq.com> Date: Fri, 22 Nov 2024 10:10:52 +0800 Subject: [PATCH 03/71] =?UTF-8?q?=E5=91=98=E5=B7=A5=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbPlussShopStaffServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbPlussShopStaffServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbPlussShopStaffServiceImpl.java index 89303ea2..ec00978e 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbPlussShopStaffServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbPlussShopStaffServiceImpl.java @@ -153,7 +153,9 @@ public class TbPlussShopStaffServiceImpl implements TbPlussShopStaffService { resources.setPassword(null); } - checkStaffParams(resources); + if (pattern.matcher(resources.getCode()).find()) { + throw new BadRequestException("员工编号不能包含中文"); + } TbPlussShopStaff tbPlussShopStaff = tbPlussShopStaffRepository.findById(resources.getId()).orElseGet(TbPlussShopStaff::new); User sysUser = userRepository.findByUsername(resources.getShopId()+"@"+tbPlussShopStaff.getAccount()); From c7c2c008bb9ec984a8d6e1db49fe3111410bdd7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 18 Nov 2024 11:40:40 +0800 Subject: [PATCH 04/71] =?UTF-8?q?feat:=20=E5=8F=B0=E6=A1=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=A0=B9=E6=8D=AEdetail=E8=A1=A8=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/mapper/TbCashierCartMapper.java | 3 +++ .../impl/shopimpl/TbShopTableServiceImpl.java | 14 +++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbCashierCartMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbCashierCartMapper.java index 82d62dd1..6e8c29da 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbCashierCartMapper.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbCashierCartMapper.java @@ -48,4 +48,7 @@ public interface TbCashierCartMapper extends BaseMapper { @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); + + @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 selectPlaceCart(Integer shopId, long time, String state); } 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 7f235d29..e4d3370a 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 @@ -263,12 +263,13 @@ public class TbShopTableServiceImpl implements TbShopTableService { List tbShopTableList = shopTablePage.getRecords(); ArrayList> infoList = new ArrayList<>(); - List cartList = tbCashierCartMapper.selectList(new LambdaQueryWrapper() - .eq(TbCashierCart::getShopId, criteria.getShopId()) -// .eq(TbCashierCart::getTableId, date.getQrcode()) - .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) - .eq(TbCashierCart::getStatus, "create")); +// List cartList = tbCashierCartMapper.selectList(new LambdaQueryWrapper() +// .eq(TbCashierCart::getShopId, criteria.getShopId()) +//// .eq(TbCashierCart::getTableId, date.getQrcode()) +// .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) +// .eq(TbCashierCart::getStatus, "create")); + List cartList = tbCashierCartMapper.selectPlaceCart(criteria.getShopId(), DateUtil.offsetDay(DateUtil.date(), -1).getTime(), "create"); HashMap countMap = new HashMap<>(); cartList.forEach(item -> { Integer count = countMap.computeIfAbsent(item.getTableId(), k -> 1); @@ -290,8 +291,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { for (TbShopTable date : tbShopTableList) { if (StrUtil.isBlank(date.getQrcode())) { date.setStatus("unbind"); - } else if (countMap.get(date.getQrcode()) != null && countMap.get(date.getQrcode()) < 1 && !TableStateEnum.CLEANING.getState().equals(date.getStatus()) - ) { + } else if (countMap.get(date.getQrcode()) != null && countMap.get(date.getQrcode()) < 1 && !TableStateEnum.CLEANING.getState().equals(date.getStatus())) { date.setStatus("idle"); mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, date.getQrcode()) From cd5d0279e06aef38c87e4a17401cf8e7e5b08675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 18 Nov 2024 11:45:07 +0800 Subject: [PATCH 05/71] =?UTF-8?q?feat:=20=E5=8F=B0=E6=A1=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=A0=B9=E6=8D=AEdetail=E8=A1=A8=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e4d3370a..9ecf0019 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 @@ -291,7 +291,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { for (TbShopTable date : tbShopTableList) { if (StrUtil.isBlank(date.getQrcode())) { date.setStatus("unbind"); - } else if (countMap.get(date.getQrcode()) != null && countMap.get(date.getQrcode()) < 1 && !TableStateEnum.CLEANING.getState().equals(date.getStatus())) { + } else if ((countMap.get(date.getQrcode()) == null || countMap.get(date.getQrcode()) < 1) && !TableStateEnum.CLEANING.getState().equals(date.getStatus())) { date.setStatus("idle"); mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, date.getQrcode()) From 4aae66bd6a66ad9120b38c4671479ba00403756c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 18 Nov 2024 11:46:52 +0800 Subject: [PATCH 06/71] =?UTF-8?q?feat:=20=E5=8F=96=E6=B6=88=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/order/TbOrderInfoServiceImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java index 7f016b97..21df7134 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java @@ -714,6 +714,10 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { memberPointsService.addPoints(Long.valueOf(orderInfo.getMemberId()), orderInfo.getPointsNum(), "订单取消返还: " + orderInfo.getPointsNum() + "积分", Long.valueOf(orderInfo.getId())); } + } catch (Exception e) { + log.error("返还订单积分优惠券失败: 订单信息: {}", orderInfo); + log.error("异常信息: ", e); + }finally { mpCashierCartService.updateStateByOrderId(TableConstant.OrderInfo.Status.CLOSED, orderInfo.getId()); mpOrderDetailService.updateStatusByOrderId(TableConstant.OrderInfo.Status.CLOSED, orderInfo.getId()); @@ -725,9 +729,6 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { .set(TbOrderInfo::getPointsNum, 0) .set(TbOrderInfo::getUpdatedAt, cn.hutool.core.date.DateUtil.current()) .set(TbOrderInfo::getStatus, "cancelled")); - } catch (Exception e) { - log.error("取消订单失败: 订单信息: {}", orderInfo); - log.error("异常信息: ", e); } }); // List ids = tbOrderInfos.stream().map(TbOrderInfo::getId).collect(Collectors.toList()); From 0cae71cd52eed0df9e71d21cf46e2854fa16ce8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 18 Nov 2024 13:53:34 +0800 Subject: [PATCH 07/71] =?UTF-8?q?feat:=20=E8=AE=A2=E5=8D=95=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=A2=9E=E5=8A=A0=E6=98=AF=E5=90=A6=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E4=BB=B7=E5=AD=97=E6=AE=B5=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/product/TbPlaceController.java | 6 +++++ .../dto/shoptable/AddTemporaryDishesDTO.java | 27 +++++++++++++++++++ .../impl/shopimpl/TbShopTableServiceImpl.java | 7 +++++ .../service/shop/TbShopTableService.java | 8 ++++++ 4 files changed, 48 insertions(+) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddTemporaryDishesDTO.java 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 d36df365..bf4bf30c 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 @@ -76,6 +76,12 @@ public class TbPlaceController { return ResponseEntity.ok(tbShopTableService.addCartForUser(addCartDTO)); } + @PostMapping("/temporaryDishes") + @ApiOperation("代客下单/shop/table") + public ResponseEntity addTemporaryDishes(@Valid @RequestBody AddTemporaryDishesDTO temporaryDishesDTO) { + return ResponseEntity.ok(tbShopTableService.addTemporaryDishes(temporaryDishesDTO)); + } + @PutMapping("/choseModel") @ApiOperation("代客下单/shop/table") public ResponseEntity choseModel(@Valid @RequestBody ChoseModelDTO choseModelDTO) { diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddTemporaryDishesDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddTemporaryDishesDTO.java new file mode 100644 index 00000000..c6e2b2f4 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddTemporaryDishesDTO.java @@ -0,0 +1,27 @@ +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; + +@Data +public class AddTemporaryDishesDTO { + @NotEmpty + private String masterId; + @NotNull + private Integer shopId; + private String tableId; + @NotNull + @Min(1) + private Integer num; + private boolean isPack; + private boolean isGift; + private String note; + // 用餐类型 + @NotBlank + private String useType; + private Integer vipUserId; +} 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 9ecf0019..aa787a03 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 @@ -612,6 +612,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { return tbCashierCart; } + + @Override + public TbCashierCart addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO) { + return null; + } + private void setRedisTableCartInfo(String tableId, String shopId, List tbCashierCartList, boolean isAdd) { String tableCartKey = RedisConstant.getTableCartKey(tableId, shopId); String tableCart = redisTemplate.opsForValue().get(tableCartKey); @@ -1516,6 +1522,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setUseType(cashierCart.getUseType()); orderDetail.setProductImg(cashierCart.getCoverImg()); orderDetail.setCartId(cashierCart.getId()); + orderDetail.setIsMember(cashierCart.getIsMember()); orderDetail.setOrderId(orderInfo == null ? null : orderInfo.getId()); orderDetail.setIsMember(cashierCart.getIsMember()); priceDTO.getOrderDetailList().add(orderDetail); 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 10be0f97..ca10d873 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 @@ -98,6 +98,13 @@ public interface TbShopTableService { TbCashierCart addCartForUser(AddCartDTO addCartDTO); + /** + * 添加临时菜 + * @param temporaryDishesDTO 临时菜信息 + */ + TbCashierCart addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO); + + void removeCart(RemoveCartDTO removeCartDTO); void returnCart(ReturnCartDTO returnCartDTO); @@ -149,4 +156,5 @@ public interface TbShopTableService { Object getShopState(Integer shopId, String tableId); Object bindQrcode(BindTableQrCodeDTO bindTableQrCodeDTO); + } From 32448a62a96be30adde9eaaacb421d8cc0a25777 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 18 Nov 2024 11:40:40 +0800 Subject: [PATCH 08/71] =?UTF-8?q?feat:=20=E5=8F=B0=E6=A1=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=A0=B9=E6=8D=AEdetail=E8=A1=A8=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/shopimpl/TbShopTableServiceImpl.java | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) 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 aa787a03..7722c9ef 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 @@ -291,7 +291,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { for (TbShopTable date : tbShopTableList) { if (StrUtil.isBlank(date.getQrcode())) { date.setStatus("unbind"); - } else if ((countMap.get(date.getQrcode()) == null || countMap.get(date.getQrcode()) < 1) && !TableStateEnum.CLEANING.getState().equals(date.getStatus())) { + } else if (countMap.get(date.getQrcode()) != null && countMap.get(date.getQrcode()) < 1 && !TableStateEnum.CLEANING.getState().equals(date.getStatus())) { date.setStatus("idle"); mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, date.getQrcode()) @@ -572,7 +572,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); // tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() == null ? 0 : 1); tbCashierCart.setIsMember(addCartDTO.getVipUserId() == null ? 0 : 1); - tbCashierCart.setMemberPrice(productSku.getMemberPrice()); + if (tbCashierCart.getIsMember() == 1) { + tbCashierCart.setMemberPrice(productSku.getMemberPrice()); + } cashierCartRepository.save(tbCashierCart); } else { @@ -612,12 +614,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { return tbCashierCart; } - - @Override - public TbCashierCart addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO) { - return null; - } - private void setRedisTableCartInfo(String tableId, String shopId, List tbCashierCartList, boolean isAdd) { String tableCartKey = RedisConstant.getTableCartKey(tableId, shopId); String tableCart = redisTemplate.opsForValue().get(tableCartKey); @@ -1522,9 +1518,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setUseType(cashierCart.getUseType()); orderDetail.setProductImg(cashierCart.getCoverImg()); orderDetail.setCartId(cashierCart.getId()); - orderDetail.setIsMember(cashierCart.getIsMember()); orderDetail.setOrderId(orderInfo == null ? null : orderInfo.getId()); - orderDetail.setIsMember(cashierCart.getIsMember()); priceDTO.getOrderDetailList().add(orderDetail); } return priceDTO; @@ -2022,8 +2016,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfo.setProductCouponDiscountAmount(productDiscount); // 更新订单信息 - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(orderInfo.getShopId(), orderInfo.getTableId()); - OrderPriceDTO priceDTO = createOrderDetailWithCoupon(activateCartInfo, orderInfo, payDTO.getShopId(), false, shopEatTypeInfoDTO); + + 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()); From f98e6e6c0620245d1e3210e7e6a5a85fec0a6e47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 18 Nov 2024 11:45:07 +0800 Subject: [PATCH 09/71] =?UTF-8?q?feat:=20=E5=8F=B0=E6=A1=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=A0=B9=E6=8D=AEdetail=E8=A1=A8=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7722c9ef..741f754f 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 @@ -291,7 +291,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { for (TbShopTable date : tbShopTableList) { if (StrUtil.isBlank(date.getQrcode())) { date.setStatus("unbind"); - } else if (countMap.get(date.getQrcode()) != null && countMap.get(date.getQrcode()) < 1 && !TableStateEnum.CLEANING.getState().equals(date.getStatus())) { + } else if ((countMap.get(date.getQrcode()) == null || countMap.get(date.getQrcode()) < 1) && !TableStateEnum.CLEANING.getState().equals(date.getStatus())) { date.setStatus("idle"); mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, date.getQrcode()) From 2ee862b067c67657af2a0addefa7c940c40d3991 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 18 Nov 2024 11:46:52 +0800 Subject: [PATCH 10/71] =?UTF-8?q?fix:=20=E5=90=88=E5=B9=B6test=E9=80=80?= =?UTF-8?q?=E6=AC=BE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) 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 741f754f..a42202fd 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 @@ -391,6 +391,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { } } + @Override + public TbCashierCart addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO) { + return null; + } + @Override public void download(List all, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); From 96ab14e1247627dfc87ba144b71545ebf76255b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 18 Nov 2024 13:53:34 +0800 Subject: [PATCH 11/71] =?UTF-8?q?feat:=20=E8=AE=A2=E5=8D=95=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=A2=9E=E5=8A=A0=E6=98=AF=E5=90=A6=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E4=BB=B7=E5=AD=97=E6=AE=B5=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) 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 a42202fd..50b1f9ec 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 @@ -619,6 +619,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { return tbCashierCart; } + + @Override + public TbCashierCart addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO) { + return null; + } + private void setRedisTableCartInfo(String tableId, String shopId, List tbCashierCartList, boolean isAdd) { String tableCartKey = RedisConstant.getTableCartKey(tableId, shopId); String tableCart = redisTemplate.opsForValue().get(tableCartKey); @@ -1523,6 +1529,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setUseType(cashierCart.getUseType()); orderDetail.setProductImg(cashierCart.getCoverImg()); orderDetail.setCartId(cashierCart.getId()); + orderDetail.setIsMember(cashierCart.getIsMember()); orderDetail.setOrderId(orderInfo == null ? null : orderInfo.getId()); priceDTO.getOrderDetailList().add(orderDetail); } From 6bc294561499dd7752f3681632b930c106f20a26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Tue, 19 Nov 2024 11:37:02 +0800 Subject: [PATCH 12/71] =?UTF-8?q?feat:=201.=E7=82=B9=E9=A4=90num=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=E4=B8=BAdecimal=E7=B1=BB=E5=9E=8B=202.=E7=94=A8?= =?UTF-8?q?=E9=A4=90=E4=BA=BA=E6=95=B0=E6=A0=B9=E6=8D=AEtableId=E8=AE=BE?= =?UTF-8?q?=E7=BD=AEuseType?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ysk/cashier/dto/shoptable/AddCartDTO.java | 10 +- .../dto/shoptable/AddTemporaryDishesDTO.java | 20 +- .../cashier/dto/shoptable/ReturnCartDTO.java | 6 +- .../cashier/dto/shoptable/ReturnOrderDTO.java | 3 +- .../cashier/dto/shoptable/UpdateCartDTO.java | 6 +- .../mybatis/mapper/TbCashierCartMapper.java | 3 +- .../mybatis/mapper/TbOrderDetailMapper.java | 3 +- .../mybatis/mapper/TbProducSkutMapper.java | 4 +- .../mybatis/mapper/TbProductMapper.java | 8 +- .../ysk/cashier/pojo/order/TbCashierCart.java | 20 +- .../ysk/cashier/pojo/order/TbOrderDetail.java | 4 +- .../product/TbProductRepository.java | 4 +- .../impl/order/TbOrderInfoServiceImpl.java | 15 +- .../productimpl/TbProductServiceImpl.java | 4 +- .../impl/shopimpl/TbShopTableServiceImpl.java | 279 ++++++++++++------ .../service/product/TbProductService.java | 5 +- .../cn/ysk/cashier/utils/WxAccountUtil.java | 4 +- .../java/cn/ysk/cashier/utils/WxMsgUtils.java | 4 +- .../cn/ysk/cashier/vo/TbUserCouponVo.java | 2 +- 19 files changed, 257 insertions(+), 147 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddCartDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddCartDTO.java index 6e4d085b..44335aaf 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddCartDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddCartDTO.java @@ -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; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddTemporaryDishesDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddTemporaryDishesDTO.java index c6e2b2f4..bd0e0cde 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddTemporaryDishesDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddTemporaryDishesDTO.java @@ -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 AddTemporaryDishesDTO { @@ -14,11 +12,17 @@ public class AddTemporaryDishesDTO { @NotNull private Integer shopId; private String tableId; + @NotBlank(message = "菜品名不为空") + private String name; + @NotNull(message = "分类不为空") + private Integer categoryId; + @Min(value = 0, message = "价格最低为0") + private BigDecimal price; @NotNull - @Min(1) - private Integer num; - private boolean isPack; - private boolean isGift; + @DecimalMin(value = "0.01") + private BigDecimal num; + @NotBlank(message = "单位不为空") + private String unit; private String note; // 用餐类型 @NotBlank diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ReturnCartDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ReturnCartDTO.java index f8a9cc43..87239935 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ReturnCartDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ReturnCartDTO.java @@ -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; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ReturnOrderDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ReturnOrderDTO.java index 75dc893c..54e1fe2d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ReturnOrderDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ReturnOrderDTO.java @@ -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; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateCartDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateCartDTO.java index db07564f..1606f85f 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateCartDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateCartDTO.java @@ -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 { @@ -17,8 +19,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; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbCashierCartMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbCashierCartMapper.java index 6e8c29da..2d86fa55 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbCashierCartMapper.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbCashierCartMapper.java @@ -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 { @@ -47,7 +48,7 @@ public interface TbCashierCartMapper extends BaseMapper { */ @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 selectPlaceCart(Integer shopId, long time, String state); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbOrderDetailMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbOrderDetailMapper.java index 415eb6ce..ff9623cb 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbOrderDetailMapper.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbOrderDetailMapper.java @@ -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 { @@ -19,7 +20,7 @@ public interface TbOrderDetailMapper extends BaseMapper { */ @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); /** * 查询包含打包费和是否赠送的订单详情信息 diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbProducSkutMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbProducSkutMapper.java index 66fb09e5..dbfa6e0b 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbProducSkutMapper.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbProducSkutMapper.java @@ -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 { @@ -29,5 +31,5 @@ public interface TbProducSkutMapper extends BaseMapper { 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); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbProductMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbProductMapper.java index e8448908..bfe3676d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbProductMapper.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbProductMapper.java @@ -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 { @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 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); } 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 0fdca385..9bbd0a1d 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 @@ -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") @@ -168,6 +168,9 @@ public class TbCashierCart implements Serializable { private Integer userCouponId; private BigDecimal memberPrice = BigDecimal.ZERO; private Integer isMember; + // 是否临时菜品 + private Integer isTemporary; + private String unit; public void copy(TbCashierCart source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); @@ -184,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); } } } @@ -195,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); } } + } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java index 4f55578e..e86c1a45 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java @@ -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") diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java index eb19aa14..0d2fbb15 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java @@ -34,7 +34,7 @@ public interface TbProductRepository extends JpaRepository, @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, @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") diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java index 21df7134..6c85d3fe 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java @@ -178,17 +178,26 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { List details = tbOrderDetailMapper.selectFullInfoByOrderId(tbOrderInfo.getId()); if (!tbOrderInfo.getOrderType().equals("return")) { List tbOrderInfos = tbOrderInfoRepository.selTbOrdersBysource(tbOrderInfo.getId(), tbOrderInfo.getShopId()); - Map map; + Map map; if (!CollectionUtils.isEmpty(tbOrderInfos)) { List ids = tbOrderInfos.stream().map(TbOrderInfo::getId).collect(Collectors.toList()); List 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); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java index 0533e627..1fc5edbc 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java @@ -746,12 +746,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); 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 50b1f9ec..f681ecd4 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 @@ -391,11 +391,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { } } - @Override - public TbCashierCart addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO) { - return null; - } - @Override public void download(List all, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); @@ -430,36 +425,45 @@ 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; } - TbProductSku productSku = productMapper.selectSkuByIdAndShopId(updateCartDTO.getShopId(), updateCartDTO.getSkuId()); - TbProduct product = productMapper.selectByIdAndShopId(updateCartDTO.getShopId(), updateCartDTO.getProductId()); - if (product == null || productSku == null) { - throw new BadRequestException("商品不存在或已下架, id: " + updateCartDTO.getSkuId()); + + TbProduct product = null; + if (updateCartDTO.getProductId() != null && updateCartDTO.getSkuId() != null) { + TbProductSku productSku = productMapper.selectSkuByIdAndShopId(updateCartDTO.getShopId(), updateCartDTO.getSkuId()); + product = productMapper.selectByIdAndShopId(updateCartDTO.getShopId(), updateCartDTO.getProductId()); + if (product == null || productSku == null) { + throw new BadRequestException("商品不存在或已下架, id: " + updateCartDTO.getSkuId()); + } + + tbCashierCart.setCoverImg(product.getCoverImg()); + tbCashierCart.setIsSku(product.getTypeEnum()); + tbCashierCart.setName(product.getName()); + tbCashierCart.setProductId(String.valueOf(product.getId())); + tbCashierCart.setSalePrice(productSku.getSalePrice()); + tbCashierCart.setSkuId(productSku.getId().toString()); + tbCashierCart.setCategoryId(product.getCategoryId()); } - tbCashierCart.setCoverImg(product.getCoverImg()); + tbCashierCart.setCreatedAt(System.currentTimeMillis()); - tbCashierCart.setIsSku(product.getTypeEnum()); - tbCashierCart.setName(product.getName()); - tbCashierCart.setProductId(String.valueOf(product.getId())); - tbCashierCart.setSalePrice(productSku.getSalePrice()); - tbCashierCart.setSkuId(productSku.getId().toString()); tbCashierCart.setTradeDay(DateUtils.getDay()); tbCashierCart.setStatus("create"); - tbCashierCart.setSalePrice(productSku.getSalePrice()); - tbCashierCart.setTotalAmount(new BigDecimal(updateCartDTO.getNum()).multiply(productSku.getSalePrice())); + tbCashierCart.setSalePrice(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 { - tbCashierCart.setPackFee(new BigDecimal(updateCartDTO.getNum()).multiply(product.getPackFee())); - tbCashierCart.setTotalAmount(tbCashierCart.getSalePrice().multiply(BigDecimal.valueOf(updateCartDTO.getNum())) + if (product != null) { + tbCashierCart.setPackFee(updateCartDTO.getNum().multiply(product.getPackFee())); + } + tbCashierCart.setTotalAmount(tbCashierCart.getSalePrice().multiply(updateCartDTO.getNum()) .add(tbCashierCart.getPackFee())); } tbCashierCart.setIsPack(updateCartDTO.getIsPack() ? "true" : "false"); @@ -472,7 +476,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setTotalNumber(updateCartDTO.getNum()); tbCashierCart.setNumber(updateCartDTO.getNum()); - tbCashierCart.setCategoryId(product.getCategoryId()); tbCashierCartMapper.updateById(tbCashierCart); if (tbCashierCart.getOrderId() != null && StrUtil.isNotBlank(updateCartDTO.getNote())) { @@ -556,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())); } @@ -575,22 +578,22 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setCategoryId(product.getCategoryId()); tbCashierCart.setNote(addCartDTO.getNote()); tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); -// tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() == null ? 0 : 1); - tbCashierCart.setIsMember(addCartDTO.getVipUserId() == null ? 0 : 1); + tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() != null ? 1 : 0); +// tbCashierCart.setIsMember(addCartDTO.getVipUserId() == null ? 0 : 1); if (tbCashierCart.getIsMember() == 1) { tbCashierCart.setMemberPrice(productSku.getMemberPrice()); } cashierCartRepository.save(tbCashierCart); } else { - tbCashierCart.setIsMember(addCartDTO.getVipUserId() == null ? 0 : 1); + 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())); } @@ -607,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); } @@ -622,7 +625,58 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override public TbCashierCart addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO) { - return null; + temporaryDishesDTO.setTableId(OrderUseTypeEnum.TAKEOUT.getValue().equals(temporaryDishesDTO.getUseType()) ? null : temporaryDishesDTO.getTableId()); + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(temporaryDishesDTO.getShopId(), temporaryDishesDTO.getTableId(), temporaryDishesDTO.getUseType()); + + TbCashierCart tbCashierCart = mpCashierCartService.selectOneCartByShopEatType(shopEatTypeInfoDTO, temporaryDishesDTO.getMasterId(), null, null, false, true); + // 首次加入 + if (tbCashierCart == null) { + tbCashierCart = new TbCashierCart(); + tbCashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); + tbCashierCart.setCreatedAt(System.currentTimeMillis()); + tbCashierCart.setIsSku("0"); + if (StrUtil.isNotBlank(shopEatTypeInfoDTO.getTableId())) { + tbCashierCart.setTableId(shopEatTypeInfoDTO.getTableId()); + } + tbCashierCart.setName(temporaryDishesDTO.getName()); + tbCashierCart.setSalePrice(temporaryDishesDTO.getPrice()); + tbCashierCart.setMasterId(temporaryDishesDTO.getMasterId()); + tbCashierCart.setShopId(String.valueOf(temporaryDishesDTO.getShopId())); + tbCashierCart.setTradeDay(DateUtils.getDay()); + tbCashierCart.setStatus("create"); + tbCashierCart.setIsPack("false"); + tbCashierCart.setIsGift("false"); + tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); + tbCashierCart.setPackFee(BigDecimal.ZERO); + tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); + tbCashierCart.setNumber(temporaryDishesDTO.getNum()); + tbCashierCart.setCategoryId(String.valueOf(temporaryDishesDTO.getCategoryId())); + tbCashierCart.setNote(temporaryDishesDTO.getNote()); + tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); + tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && temporaryDishesDTO.getVipUserId() != null ? 1 : 0); + tbCashierCart.setIsTemporary(1); + tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); + cashierCartRepository.save(tbCashierCart); + + } else { + tbCashierCart.setIsMember(temporaryDishesDTO.getVipUserId() == null ? 0 : 1); + tbCashierCart.setNote(temporaryDishesDTO.getNote()); + tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); + tbCashierCart.setPackFee(BigDecimal.ZERO); + tbCashierCart.setIsPack("false"); + tbCashierCart.setIsGift("false"); + tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); + tbCashierCart.setNumber(temporaryDishesDTO.getNum()); + tbCashierCart.setUpdatedAt(DateUtil.current()); + tbCashierCart.setIsTemporary(1); + tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); + cashierCartMapper.updateById(tbCashierCart); + } + + if (StrUtil.isNotBlank(temporaryDishesDTO.getTableId())) { + setRedisTableCartInfo(temporaryDishesDTO.getTableId(), temporaryDishesDTO.getShopId().toString(), Collections.singletonList(tbCashierCart), true); + } + return tbCashierCart; } private void setRedisTableCartInfo(String tableId, String shopId, List tbCashierCartList, boolean isAdd) { @@ -709,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()); } @@ -737,8 +791,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { TbOrderDetail tbOrderDetail = orderDetailMapper.selectOne(new LambdaQueryWrapper() .eq(TbOrderDetail::getShopId, removeCartDTO.getShopId()) .eq(TbOrderDetail::getCartId, cashierCart.getId()) - .eq(TbOrderDetail::getProductId, cashierCart.getProductId()) - .eq(TbOrderDetail::getProductSkuId, cashierCart.getSkuId()) .eq(TbOrderDetail::getOrderId, cashierCart.getOrderId())); if (tbOrderDetail == null) { throw new BadRequestException("购物车商品不存在或已退单"); @@ -760,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); @@ -776,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); } @@ -787,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())); } @@ -852,7 +904,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { List records = cartPage.getRecords(); ArrayList skuIds = new ArrayList<>(); - records.forEach(item -> skuIds.add(Integer.valueOf(item.getSkuId()))); + records.forEach(item -> { + if (item.getSkuId() != null) { + skuIds.add(Integer.valueOf(item.getSkuId())); + } + }); AtomicReference mealCashierCart = new AtomicReference<>(); @@ -863,7 +919,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { ArrayList> infos = new ArrayList<>(); records.forEach(item -> { - if (item.getProductId().equals("-999")) { + if (item.getProductId() != null && item.getProductId().equals("-999")) { mealCashierCart.set(item); return; } @@ -932,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); } @@ -943,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) { @@ -988,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; @@ -1041,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; @@ -1054,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()); } } @@ -1212,7 +1268,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { List 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; } } @@ -1223,22 +1279,22 @@ public class TbShopTableServiceImpl implements TbShopTableService { List> usedCouponMap, BigDecimal discountAmount, ArrayList balanceCartList, ArrayList 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 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()); @@ -1247,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); @@ -1263,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()); @@ -1296,7 +1352,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { BigDecimal discountAmount = BigDecimal.ZERO; HashMap> couponMap = new HashMap<>(); couponInfoDTO.getProductCouponMap().values().forEach(item -> { - if (item.getCurrentUseNum() <= 0) { + if (item.getCurrentUseNum().compareTo(BigDecimal.ZERO) <= 0) { return; } List tbUserCouponVos = couponMap.get(item.getProId().toString()); @@ -1310,7 +1366,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { }); HashMap> usedCouponMap = new HashMap<>(); ArrayList outRecords = new ArrayList<>(); + ArrayList resetCouponList = new ArrayList<>(); for (TbCashierCart cashierCart : newCashierCarts) { + if (!couponMap.isEmpty()) { + resetCouponList.add(cashierCart); + cashierCart.setUserCouponId(null); + } discountAmount = reduceProCoupon(couponMap, cashierCart, usedCouponMap, discountAmount, balanceCartList, outRecords, memberId); } @@ -1319,6 +1380,20 @@ public class TbShopTableServiceImpl implements TbShopTableService { mpCashierCartService.saveBatch(balanceCartList); } // 更新购物车信息 + if (!resetCouponList.isEmpty()) { + // 取消之前使用的历史券 + ArrayList resetCartIds = new ArrayList<>(); + resetCouponList.forEach(item -> { + if (item.getUserCouponId() == null) { + resetCartIds.add(item.getId()); + } + }); + if (!resetCartIds.isEmpty()) { + mpCashierCartService.update(new LambdaUpdateWrapper() + .in(TbCashierCart::getId, resetCartIds) + .set(TbCashierCart::getUserCouponId, null)); + } + } mpCashierCartService.updateBatchById(newCashierCarts); couponInfoDTO.setOutRecordList(outRecords); @@ -1358,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; } @@ -1366,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); }); @@ -1495,7 +1570,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) { orderDetail = oldOrderDetailMap.get(cashierCart.getOrderId().toString() + cashierCart.getId()); @@ -1507,8 +1581,14 @@ public class TbShopTableServiceImpl implements TbShopTableService { priceDTO.getNewOrderDetailList().add(orderDetail); } - if (Objects.nonNull(productSku)) { - orderDetail.setProductSkuName(productSku.getSpecSnap()); + if (cashierCart.getIsTemporary() == null || cashierCart.getIsTemporary() == 0) { + TbProductSku productSku = productSkuRepository.findById(Integer.valueOf(cashierCart.getSkuId())).orElse(null); + if (Objects.nonNull(productSku)) { + orderDetail.setProductSkuName(productSku.getSpecSnap()); + } + + orderDetail.setProductSkuId(Integer.valueOf(cashierCart.getSkuId())); + orderDetail.setProductId(Integer.valueOf(cashierCart.getProductId())); } orderDetail.setUserCouponId(cashierCart.getUserCouponId()); @@ -1518,8 +1598,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setNum(cashierCart.getNumber()); orderDetail.setPrice(cashierCart.getSalePrice()); orderDetail.setPriceAmount(cashierCart.getTotalAmount()); - orderDetail.setProductId(Integer.valueOf(cashierCart.getProductId())); - orderDetail.setProductSkuId(Integer.valueOf(cashierCart.getSkuId())); orderDetail.setProductName(cashierCart.getName()); orderDetail.setShopId(Integer.valueOf(cashierCart.getShopId())); orderDetail.setPackAmount(cashierCart.getPackFee()); @@ -1530,6 +1608,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setProductImg(cashierCart.getCoverImg()); orderDetail.setCartId(cashierCart.getId()); orderDetail.setIsMember(cashierCart.getIsMember()); + orderDetail.setIsTemporary(cashierCart.getIsTemporary()); orderDetail.setOrderId(orderInfo == null ? null : orderInfo.getId()); priceDTO.getOrderDetailList().add(orderDetail); } @@ -1577,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())); @@ -1636,7 +1715,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { private void updateCartAndStock(List newAddCashierCarts, TbOrderInfo orderInfo, ShopEatTypeInfoDTO shopEatTypeInfoDTO) { // 更新购物车记录的orderId for (TbCashierCart cashierCart : newAddCashierCarts) { - if (!"-999".equals(cashierCart.getProductId())) { + // 不为座位费临时菜扣除库存 + if (!"-999".equals(cashierCart.getProductId()) && cashierCart.getIsTemporary() != null && cashierCart.getIsTemporary() == 0) { TbProduct product = productMapper.selectById(cashierCart.getProductId()); TbProductSku productSku = productSkuRepository.findById(Integer.valueOf(cashierCart.getSkuId())).orElse(null); @@ -1926,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); @@ -2377,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 query = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, choseCountDTO.getShopId()) .and(q -> q.eq(TbCashierCart::getMasterId, choseCountDTO.getMasterId()).or().isNull(TbCashierCart::getMasterId).or().eq(TbCashierCart::getMasterId, "")) @@ -2404,16 +2487,16 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setProductId("-999"); tbCashierCart.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); } @@ -2535,7 +2618,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { mpCashierCartService.update(new LambdaUpdateWrapper() .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")); @@ -2550,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()) { @@ -2575,7 +2658,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { private HashMap updateReturnOrderInfo(ReturnOrderDTO returnOrderDTO, TbOrderInfo oldOrderInfo, boolean isOnline) { ArrayList detailIds = new ArrayList<>(); - HashMap returnNumMap = new HashMap<>(); + HashMap returnNumMap = new HashMap<>(); returnOrderDTO.getOrderDetails().forEach(item -> { detailIds.add(item.getId()); returnNumMap.put(item.getId().toString(), item.getNum()); @@ -2597,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"); @@ -2619,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); @@ -2707,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()); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java index 82661bc2..762618e2 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/product/TbProductService.java @@ -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); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/utils/WxAccountUtil.java b/eladmin-system/src/main/java/cn/ysk/cashier/utils/WxAccountUtil.java index 4d5cd717..7cdb9f6f 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/utils/WxAccountUtil.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/utils/WxAccountUtil.java @@ -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 data = new HashMap() {{ put("thing22", new HashMap() {{ put("value", shopName); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/utils/WxMsgUtils.java b/eladmin-system/src/main/java/cn/ysk/cashier/utils/WxMsgUtils.java index 94385cda..14f69e6d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/utils/WxMsgUtils.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/utils/WxMsgUtils.java @@ -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 openIds = tbShopOpenIdService.lambdaQuery() .eq(TbShopOpenId::getShopId, shopId) .eq(TbShopOpenId::getStatus, 1) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbUserCouponVo.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbUserCouponVo.java index ea03ff86..5fbdc139 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbUserCouponVo.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbUserCouponVo.java @@ -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); From 12a30b0d66b1c03161eb2a26fc92d9646d4d256f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Tue, 19 Nov 2024 13:41:37 +0800 Subject: [PATCH 13/71] =?UTF-8?q?feat:=20=E8=B4=AD=E7=89=A9=E8=BD=A6?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E5=AD=97=E6=AE=B5=E4=BF=AE=E6=94=B9=E4=B8=BA?= =?UTF-8?q?decimal=EF=BC=8Cjpa=E7=9B=B8=E5=85=B3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/TbOrderDetailRepository.java | 4 ++-- .../service/impl/SummaryServiceImpl.java | 2 +- .../vo/TbOrderSalesCountByDayV2Vo.java | 6 +++--- .../cashier/vo/TbOrderSalesCountByDayVo.java | 20 +++++++++---------- .../cashier/vo/TbOrderSalesCountByTable.java | 12 +++++------ 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java index 41ee7359..01cd41ed 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java @@ -171,8 +171,8 @@ public interface TbOrderDetailRepository extends JpaRepository skus = new ArrayList<>(); - public TbOrderSalesCountByDayV2Vo(String name, Integer productId, String cateName,String typeEnum, Long salesNum, Long refNum, BigDecimal salesAmount, BigDecimal refAmount) { + public TbOrderSalesCountByDayV2Vo(String name, Integer productId, String cateName,String typeEnum, BigDecimal salesNum, BigDecimal refNum, BigDecimal salesAmount, BigDecimal refAmount) { this.name = name; this.productId = productId; this.typeEnum = typeEnum; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByDayVo.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByDayVo.java index 6635bad5..601d0387 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByDayVo.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByDayVo.java @@ -12,21 +12,21 @@ public class TbOrderSalesCountByDayVo { private String cateName; private String unitName; private BigDecimal price; - private Long salesNum; - private Long refNum; + private BigDecimal salesNum; + private BigDecimal refNum; private BigDecimal salesAmount; private BigDecimal refAmount; - private Long num; + private BigDecimal num; private Integer productId; private Integer productSkuId; - public TbOrderSalesCountByDayVo(Long salesNum, Long refNum) { + public TbOrderSalesCountByDayVo(BigDecimal salesNum, BigDecimal refNum) { this.salesNum = salesNum; this.refNum = refNum; } public TbOrderSalesCountByDayVo(String productName, String productSkuName, String cateName,String unitName,BigDecimal price, - Long salesNum, Long refNum, Long num, BigDecimal salesAmount, BigDecimal refAmount) { + BigDecimal salesNum, BigDecimal refNum, BigDecimal num, BigDecimal salesAmount, BigDecimal refAmount) { this.productName = productName; this.productSkuName = productSkuName; this.cateName = cateName; @@ -42,7 +42,7 @@ public class TbOrderSalesCountByDayVo { public TbOrderSalesCountByDayVo(String productName, String productSkuName, String cateName,String unitName,BigDecimal price, - Long salesNum, Long refNum, Long num, BigDecimal salesAmount, BigDecimal refAmount, Integer productId, Integer productSkuId) { + BigDecimal salesNum, BigDecimal refNum, BigDecimal num, BigDecimal salesAmount, BigDecimal refAmount, Integer productId, Integer productSkuId) { this.productName = productName; this.productSkuName = productSkuName; this.cateName = cateName; @@ -58,7 +58,7 @@ public class TbOrderSalesCountByDayVo { count(); } - public TbOrderSalesCountByDayVo(Long salesNum, Long refNum, Long num, BigDecimal salesAmount, BigDecimal refAmount) { + public TbOrderSalesCountByDayVo(BigDecimal salesNum, BigDecimal refNum, BigDecimal num, BigDecimal salesAmount, BigDecimal refAmount) { this.salesNum = salesNum; this.refNum = refNum; this.salesAmount = salesAmount; @@ -68,9 +68,9 @@ public class TbOrderSalesCountByDayVo { } public void count(){ - if (salesNum == null) salesNum = 0l; - if (refNum == null) refNum = 0l; - salesNum = salesNum - refNum; + if (salesNum == null) salesNum = BigDecimal.ZERO; + if (refNum == null) refNum = BigDecimal.ZERO; + salesNum = salesNum.subtract(refNum); if (salesAmount == null) salesAmount = BigDecimal.ZERO; if (refAmount == null) refAmount = BigDecimal.ZERO; salesAmount = salesAmount.subtract(refAmount); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByTable.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByTable.java index b1b8a8ed..da84cd35 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByTable.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByTable.java @@ -14,17 +14,17 @@ public class TbOrderSalesCountByTable { private String cateName; private String unitName; private BigDecimal price; - private Long salesNum; - private Long refNum; + private BigDecimal salesNum; + private BigDecimal refNum; private BigDecimal salesAmount; private BigDecimal refAmount; - private Long num; + private BigDecimal num; private Integer productId; private Integer productSkuId; private String tableId; public TbOrderSalesCountByTable(String productName, String productSkuName, String cateName,String unitName,BigDecimal price, - Long salesNum, Long refNum, Long num, BigDecimal salesAmount, BigDecimal refAmount) { + BigDecimal salesNum, BigDecimal refNum, BigDecimal num, BigDecimal salesAmount, BigDecimal refAmount) { this.productName = productName; this.productSkuName = productSkuName; this.cateName = cateName; @@ -39,7 +39,7 @@ public class TbOrderSalesCountByTable { } public TbOrderSalesCountByTable(String productName, String productSkuName, String cateName,String unitName,BigDecimal price, - Long salesNum, Long refNum, Long num, BigDecimal salesAmount, BigDecimal refAmount, + BigDecimal salesNum, BigDecimal refNum, BigDecimal num, BigDecimal salesAmount, BigDecimal refAmount, Integer productId, Integer productSkuId, String tableId) { this.productName = productName; this.productSkuName = productSkuName; @@ -58,7 +58,7 @@ public class TbOrderSalesCountByTable { } public void count(){ - salesNum=salesNum-refNum; + salesNum= salesNum.subtract(refNum); salesAmount=salesAmount.subtract(refAmount); } From 592fcc483344f803653509112d99490b5ac488db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Tue, 19 Nov 2024 15:19:51 +0800 Subject: [PATCH 14/71] =?UTF-8?q?fix:=20=E5=85=88=E7=82=B9=E9=A4=90?= =?UTF-8?q?=E5=90=8E=E9=80=89=E6=8B=A9=E4=BC=9A=E5=91=98=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E4=BB=B7=E4=B8=8D=E6=AD=A3=E5=B8=B8=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 f681ecd4..7cdd07f0 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 @@ -580,9 +580,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() != null ? 1 : 0); // tbCashierCart.setIsMember(addCartDTO.getVipUserId() == null ? 0 : 1); - if (tbCashierCart.getIsMember() == 1) { - tbCashierCart.setMemberPrice(productSku.getMemberPrice()); - } + tbCashierCart.setMemberPrice(productSku.getMemberPrice()); cashierCartRepository.save(tbCashierCart); } else { From 71c138388f789cf2c5dc08c0c6cc36d9731c955f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 20 Nov 2024 17:33:51 +0800 Subject: [PATCH 15/71] =?UTF-8?q?feat:=201.=E9=80=80=E6=AC=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/shopimpl/TbShopTableServiceImpl.java | 157 +++++++++++++++--- 1 file changed, 130 insertions(+), 27 deletions(-) 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 7cdd07f0..6f98aac9 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 @@ -2,6 +2,7 @@ package cn.ysk.cashier.service.impl.shopimpl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.thread.ThreadUtil; @@ -454,6 +455,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setSalePrice(tbCashierCart.getSalePrice()); tbCashierCart.setTotalAmount(updateCartDTO.getNum().multiply(tbCashierCart.getSalePrice())); tbCashierCart.setNote(updateCartDTO.getNote()); + tbCashierCart.setIsPrint(updateCartDTO.getIsPrint()); if (updateCartDTO.getIsPack() != null) { if (!updateCartDTO.getIsPack()) { @@ -1308,13 +1310,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 创建结余购物车 balanceCart = BeanUtil.copyProperties(cashierCart, TbCashierCart.class); - BigDecimal num = balanceNum; balanceCart.setUserCouponId(null); balanceCart.setId(null); balanceCart.setNumber(balanceNum); balanceCart.setTotalNumber(balanceNum); - balanceCart.setPackFee(singlePackFee.multiply(num)); - balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum).add(singlePackFee.multiply(num))); + balanceCart.setPackFee(singlePackFee.multiply(balanceNum)); + balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum).add(singlePackFee.multiply(balanceNum))); balanceCartList.add(balanceCart); } else { currentUseNum =cashierCart.getNumber(); @@ -1334,6 +1335,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbActivateOutRecord.setCreateTime(DateUtil.date()); tbActivateOutRecord.setRefNum(0); outRecords.add(tbActivateOutRecord); + cashierCart.setUseCouponInfo(JSONObject.toJSONString(tbActivateOutRecord)); couponVo.setFinalDiscountAmount(discountAmount); // 优惠券未消耗完毕 @@ -1526,6 +1528,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { } + /** * 根据商品优惠券 * @@ -1608,6 +1611,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setIsMember(cashierCart.getIsMember()); orderDetail.setIsTemporary(cashierCart.getIsTemporary()); orderDetail.setOrderId(orderInfo == null ? null : orderInfo.getId()); + orderDetail.setIsMember(cashierCart.getIsMember()); + orderDetail.setIsPrint(cashierCart.getIsPrint()); + orderDetail.setUseCouponInfo(cashierCart.getUseCouponInfo()); + priceDTO.getOrderDetailList().add(orderDetail); } return priceDTO; @@ -2106,8 +2113,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfo.setProductCouponDiscountAmount(productDiscount); // 更新订单信息 - - OrderPriceDTO priceDTO = createOrderDetailWithCoupon(activateCartInfo, orderInfo, payDTO.getShopId(), false, null); + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(orderInfo.getShopId(), orderInfo.getTableId()); + OrderPriceDTO priceDTO = createOrderDetailWithCoupon(activateCartInfo, orderInfo, payDTO.getShopId(), false, shopEatTypeInfoDTO); BigDecimal finalAmount = priceDTO.getTotalAmount().multiply(BigDecimal.valueOf(payDTO.getDiscount())).setScale(2, RoundingMode.HALF_UP); orderInfo.setUpdatedAt(System.currentTimeMillis()); @@ -2137,6 +2144,34 @@ public class TbShopTableServiceImpl implements TbShopTableService { return orderInfo.getOrderAmount(); } + /** + * 根据折扣设置订单信息 + */ + private BigDecimal resetAmountByDiscount(PayDTO payDTO, TbOrderInfo orderInfo) { + List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); + List detailList = mpOrderDetailService.selectByOrderId(orderInfo.getId()); + BigDecimal discount = BigDecimal.valueOf(payDTO.getDiscount()); + cashierCarts.forEach(item -> { + item.setTotalAmount(item.getTotalAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); + }); + + detailList.forEach(item -> { + item.setPriceAmount(item.getPriceAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); + }); + + mpCashierCartService.updateBatchById(cashierCarts); + mpOrderDetailService.updateBatchById(detailList); + BigDecimal oldAmount = orderInfo.getOrderAmount(); + BigDecimal finalAmount = orderInfo.getOrderAmount().multiply(BigDecimal.valueOf(payDTO.getDiscount())).setScale(2, RoundingMode.HALF_UP); + BigDecimal discountAmount = oldAmount.subtract(finalAmount); + orderInfo.setDiscountAmount(discountAmount); + orderInfo.setOrderAmount(finalAmount); + orderInfo.setAmount(finalAmount); + orderInfo.setSettlementAmount(finalAmount); + mpOrderInfoService.updateById(orderInfo); + return finalAmount; + } + @Override // @Transactional public Object pay(PayDTO payDTO) { @@ -2156,8 +2191,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { payDTO.setVipUserId(orderInfo.getMemberId() != null ? Integer.valueOf(orderInfo.getMemberId()) : null); } - - if (ObjectUtil.isEmpty(orderInfo)) { throw new BadRequestException("订单不存在"); } @@ -2171,17 +2204,20 @@ public class TbShopTableServiceImpl implements TbShopTableService { payDTO.setDiscount((double) 1); } - // 计算优惠券积分折扣信息 BigDecimal finalAmount = null; + // 计算订单折扣信息 + if (payDTO.getDiscount() != 1) { + finalAmount = resetAmountByDiscount(payDTO, orderInfo); + }else { + finalAmount = orderInfo.getOrderAmount(); + } + + // 计算优惠券积分折扣信息 if (payDTO.getVipUserId() != null) { // 计算商品券折扣 finalAmount = calcDiscountAndUpdateInfo(payDTO, orderInfo); } - if (finalAmount == null) { - finalAmount = orderInfo.getOrderAmount().multiply(BigDecimal.valueOf(payDTO.getDiscount())).setScale(2, RoundingMode.HALF_UP); - } - boolean isOnline = false; switch (payDTO.getPayType()) { @@ -2670,15 +2706,15 @@ public class TbShopTableServiceImpl implements TbShopTableService { throw new BadRequestException("订单明细数量不一致"); } + HashMap data = new HashMap<>(); BigDecimal returnAmount = BigDecimal.ZERO; BigDecimal packAMount = BigDecimal.ZERO; BigDecimal saleAmount = BigDecimal.ZERO; ArrayList remainOrderDetailList = new ArrayList<>(); for (TbOrderDetail orderDetail : detailList) { - if (orderDetail.getUserCouponId() != null) { - throw new BadRequestException("选择了优惠券抵扣商品,无法退款"); - } + // 退款数量 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()); @@ -2699,18 +2735,43 @@ public class TbShopTableServiceImpl implements TbShopTableService { remainOrderDetailList.add(remainOrderDetail); } - returnAmount = returnAmount.add(orderDetail.getPriceAmount() - .divide(orderDetail.getNum(), 2, RoundingMode.DOWN) - .multiply(returnNum)); - saleAmount = saleAmount.add(orderDetail.getPrice()); - packAMount = packAMount.add(orderDetail.getPackAmount() - .divide(orderDetail.getNum(), 2, RoundingMode.DOWN) - .multiply(returnNum)); - BigDecimal returnPackFee = packFee.multiply(returnNum); + BigDecimal currentDetailAMount = BigDecimal.ZERO; + // 优惠券抵扣商品直接退券 + if (StrUtil.isNotBlank(orderDetail.getUseCouponInfo())) { + data.put("isCouponDiscount", true); + TbActivateOutRecord outRecord = JSONObject.parseObject(orderDetail.getUseCouponInfo(), TbActivateOutRecord.class); + outRecord.setRefNum(returnNum.intValue()); + shopCouponService.refund(CollUtil.newArrayList(outRecord)); + currentDetailAMount = returnNum.multiply(orderDetail.getPrice()) + .add(returnPackFee); + // 使用了满减或积分,获取普通付款商品计算退款比例,退部分现金 + }else if (oldOrderInfo.getFullCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0 || oldOrderInfo.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0){ + // 计算当前商品占比 + BigDecimal ratio = calcDetailRatio(orderDetail); + BigDecimal realAmount = orderDetail.getPriceAmount().multiply(ratio); + currentDetailAMount = realAmount + .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) + .multiply(returnNum).setScale(2, RoundingMode.HALF_UP); + returnAmount = returnAmount.add(currentDetailAMount); + saleAmount = saleAmount.add(orderDetail.getPrice()); + packAMount = packAMount.add(orderDetail.getPackAmount() + .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) + .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP); + + }else { + currentDetailAMount = orderDetail.getPriceAmount() + .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) + .multiply(returnNum).setScale(2, RoundingMode.HALF_UP); + returnAmount = returnAmount.add(currentDetailAMount); + saleAmount = saleAmount.add(orderDetail.getPrice()); + packAMount = packAMount.add(orderDetail.getPackAmount() + .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) + .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP); + } + orderDetail.setNum(returnNum); - orderDetail.setPriceAmount(returnNum.multiply(orderDetail.getPrice()) - .add(returnPackFee)); + orderDetail.setPriceAmount(currentDetailAMount); orderDetail.setPackAmount(returnPackFee); orderDetail.setRefundNumber(returnNum); // orderDetail.setStatus(isOnline ? "refunding" : "refund"); @@ -2756,12 +2817,23 @@ public class TbShopTableServiceImpl implements TbShopTableService { updateStockAndRecord(detailList); mpOrderDetailService.updateBatchById(detailList); - HashMap data = new HashMap<>(); data.put("returnOrder", returnOrder); data.put("returnAmount", returnAmount); return data; } + private BigDecimal calcDetailRatio(TbOrderDetail orderDetail) { + List detailList = mpOrderDetailService.selectByOrderIdAndState(orderDetail.getId(), TableConstant.OrderInfo.Status.CLOSED); + BigDecimal totalAmount = BigDecimal.ZERO; + for (TbOrderDetail item : detailList) { + if (item.getUserCouponId() == null) { + totalAmount = totalAmount.add(item.getPriceAmount()); + } + } + + return orderDetail.getPriceAmount().divide(totalAmount, 2, RoundingMode.HALF_UP); + } + private void updateStockAndRecord(List orderDetailList) { // 更新商品库存 for (TbOrderDetail detail : orderDetailList) { @@ -2825,7 +2897,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { String shopId = orderInfo.getShopId(); // // 线上退款 - orderInfo.setRefundAmount(returnOrderInfo.getRefundAmount()); + orderInfo.setRefundAmount(orderInfo.getRefundAmount().add(returnOrderInfo.getRefundAmount())); orderInfo.setRefundRemark(returnOrderDTO.getNote()); if ("scanCode".equals(payType) || "wx_lite".equals(payType)) { payService.returnOrder(Integer.valueOf(shopId), orderInfo, returnOrderInfo); @@ -2841,6 +2913,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { returnOrderDTO.getOrderId(), returnOrderDTO.getOrderDetails().stream().map(ReturnOrderDTO.OrderDetail::getId).collect(Collectors.toList())); } orderInfo.setStatus(TableConstant.OrderInfo.Status.CLOSED.getValue()); + // 订单金额全退,退优惠券以及积分 + if (orderInfo.getPayAmount().compareTo(orderInfo.getRefundAmount()) <= 0) { + returnCoupon(orderInfo); + } orderInfoMapper.updateById(orderInfo); // 打印退款小票 // producer.printMechine(newOrderInfo.getId().toString()); @@ -2893,4 +2969,31 @@ public class TbShopTableServiceImpl implements TbShopTableService { return true; } + + @Override + public TbCashierCart updatePrice(UpdatePriceDTO updatePriceDTO) { + TbCashierCart cashierCart = mpCashierCartService.selectByShopIdAndId(updatePriceDTO.getShopId(), updatePriceDTO.getCartId(), TableConstant.OrderInfo.Status.CREATE); + if (cashierCart == null) { + throw new BadRequestException("购物车商品不存在"); + } + + if (updatePriceDTO.getSaleAmount().compareTo(cashierCart.getDiscountSaleAmount()) == 0) { + return cashierCart; + } + + BigDecimal newTotalPrice = updatePriceDTO.getSaleAmount().multiply(cashierCart.getTotalNumber()).add(cashierCart.getPackFee()); + BigDecimal oldAmount = cashierCart.getTotalAmount(); + cashierCart.setTotalAmount(newTotalPrice); + cashierCart.setUpdatedAt(DateUtil.current()); + cashierCart.setDiscountSaleNote(updatePriceDTO.getNote()); + cashierCart.setDiscountSaleAmount(updatePriceDTO.getSaleAmount()); + mpCashierCartService.updateById(cashierCart); + + // 更新订单和detail价格 + if (cashierCart.getOrderId() != null) { + mpOrderDetailService.updatePriceByCartId(cashierCart.getId(), updatePriceDTO.getSaleAmount(), newTotalPrice); + mpOrderInfoService.incrAmount(cashierCart.getOrderId(), newTotalPrice.subtract(oldAmount)); + } + return cashierCart; + } } From aeac8c56ec711b0a33d8c8032ddac2ecf313f4f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 20 Nov 2024 17:40:37 +0800 Subject: [PATCH 16/71] =?UTF-8?q?feat:=201.=E9=80=80=E6=AC=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/ysk/cashier/service/impl/PayServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/PayServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/PayServiceImpl.java index 5f98c1ff..3ce0a45a 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/PayServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/PayServiceImpl.java @@ -182,7 +182,7 @@ public class PayServiceImpl implements PayService { //修改主单状态 orderInfo.setStatus("closed"); orderInfo.setPayOrderNo(payment.getTradeNumber()); - orderInfo.setPayAmount(orderInfo.getOrderAmount()); +// orderInfo.setPayAmount(orderInfo.getOrderAmount()); orderInfo.setPaidTime(System.currentTimeMillis()); tbOrderInfoMapper.updateById(orderInfo); From 2b1ef2b8c1628e05cb5d5a79f73dbc6f71e77021 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 20 Nov 2024 17:48:13 +0800 Subject: [PATCH 17/71] =?UTF-8?q?feat:=201.=E9=80=80=E6=AC=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/ysk/cashier/service/impl/PayServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/PayServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/PayServiceImpl.java index 3ce0a45a..6ee20bf1 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/PayServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/PayServiceImpl.java @@ -176,7 +176,7 @@ public class PayServiceImpl implements PayService { .eq(TbOrderDetail::getOrderId, orderInfo.getId()) .eq(TbOrderDetail::getUseType, orderInfo.getUseType()) .in(TbOrderDetail::getStatus, "unpaid") - .setSql(StrUtil.format("price_amount=price*num*{}", orderInfo.getDiscountRatio() == null ? 1 : orderInfo.getDiscountRatio())) +// .setSql(StrUtil.format("price_amount=price*num*{}", orderInfo.getDiscountRatio() == null ? 1 : orderInfo.getDiscountRatio())) .set(TbOrderDetail::getStatus, "closed")); //修改主单状态 From aaa046727f39acd1060b498d765c6fd664d18667 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 20 Nov 2024 17:53:36 +0800 Subject: [PATCH 18/71] =?UTF-8?q?feat:=201.=E9=80=80=E6=AC=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 6f98aac9..d945816a 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 @@ -2727,8 +2727,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { BigDecimal remainPackFee = packFee.multiply(remainNum); TbOrderDetail remainOrderDetail = BeanUtil.copyProperties(orderDetail, TbOrderDetail.class); remainOrderDetail.setNum(remainNum); - remainOrderDetail.setPriceAmount(remainNum.multiply(orderDetail.getPrice()) - .add(remainPackFee)); + remainOrderDetail.setPriceAmount(remainNum.multiply(orderDetail.getPriceAmount().divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)) + .add(remainPackFee).setScale(2, RoundingMode.HALF_UP)); remainOrderDetail.setPackAmount(remainPackFee); remainOrderDetail.setReturnNum("0"); remainOrderDetail.setId(null); From e7cdc01d9b71984232990861909e539a4afc5502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 20 Nov 2024 17:59:08 +0800 Subject: [PATCH 19/71] =?UTF-8?q?feat:=201.=E9=80=80=E6=AC=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) 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 d945816a..75d6fa31 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 @@ -2153,10 +2153,15 @@ public class TbShopTableServiceImpl implements TbShopTableService { BigDecimal discount = BigDecimal.valueOf(payDTO.getDiscount()); cashierCarts.forEach(item -> { item.setTotalAmount(item.getTotalAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); + item.setSalePrice(item.getSalePrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); + item.setMemberPrice(item.getMemberPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); + }); detailList.forEach(item -> { item.setPriceAmount(item.getPriceAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); + item.setPrice(item.getPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); + item.setMemberPrice(item.getMemberPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); }); mpCashierCartService.updateBatchById(cashierCarts); From 3cfb312a8badce73bfc346c98e7118046f84d622 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 09:17:09 +0800 Subject: [PATCH 20/71] =?UTF-8?q?fix:=20=E4=BC=9A=E5=91=98=E4=BB=B7?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E5=88=9B=E5=BB=BA=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=88=86=E5=89=B2detail=E7=8A=B6=E6=80=81=E4=B8=A2=E5=A4=B1?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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 75d6fa31..d0f7c11f 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 @@ -581,12 +581,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setNote(addCartDTO.getNote()); tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() != null ? 1 : 0); -// tbCashierCart.setIsMember(addCartDTO.getVipUserId() == null ? 0 : 1); + tbCashierCart.setIsMember(!shopEatTypeInfoDTO.isMemberPrice() ? 0 : addCartDTO.getVipUserId() == null ? 0 : 1); tbCashierCart.setMemberPrice(productSku.getMemberPrice()); cashierCartRepository.save(tbCashierCart); } else { - tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() != null ? 1 : 0); + tbCashierCart.setIsMember(!shopEatTypeInfoDTO.isMemberPrice() ? 0 : addCartDTO.getVipUserId() == null ? 0 : 1); tbCashierCart.setNote(addCartDTO.getNote()); tbCashierCart.setTotalAmount(addCartDTO.getNum().multiply(productSku.getSalePrice())); @@ -1578,6 +1578,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { if (orderDetail == null) { orderDetail = new TbOrderDetail(); + orderDetail.setStatus(TableConstant.CashierCart.Status.RETURN.equalsVals(cashierCart.getStatus()) ? cashierCart.getStatus() : "unpaid"); priceDTO.setHasNewInfo(true); priceDTO.getNewOrderDetailList().add(orderDetail); } @@ -2706,7 +2707,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { .eq(TbOrderDetail::getShopId, returnOrderDTO.getShopId()) .eq(TbOrderDetail::getStatus, "closed") .eq(TbOrderDetail::getOrderId, returnOrderDTO.getOrderId()) - .in(TbOrderDetail::getId, detailIds)); + .in(TbOrderDetail::getId, detailIds) + .orderByDesc(TbOrderDetail::getUserCouponId)); if (detailList.size() != returnOrderDTO.getOrderDetails().size()) { throw new BadRequestException("订单明细数量不一致"); } From a635c1b9e34768f62ab4b1ff313ed459c4fac3cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 09:25:12 +0800 Subject: [PATCH 21/71] =?UTF-8?q?fix:=20=E9=80=80=E6=AC=BE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 d0f7c11f..1426a4ed 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 @@ -2718,6 +2718,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { BigDecimal packAMount = BigDecimal.ZERO; BigDecimal saleAmount = BigDecimal.ZERO; ArrayList remainOrderDetailList = new ArrayList<>(); + boolean hasNormalReturn = false; for (TbOrderDetail orderDetail : detailList) { // 退款数量 BigDecimal returnNum = returnNumMap.get(orderDetail.getId().toString()); @@ -2754,6 +2755,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { .add(returnPackFee); // 使用了满减或积分,获取普通付款商品计算退款比例,退部分现金 }else if (oldOrderInfo.getFullCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0 || oldOrderInfo.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0){ + hasNormalReturn = true; // 计算当前商品占比 BigDecimal ratio = calcDetailRatio(orderDetail); BigDecimal realAmount = orderDetail.getPriceAmount().multiply(ratio); @@ -2767,6 +2769,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP); }else { + hasNormalReturn = true; currentDetailAMount = orderDetail.getPriceAmount() .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) .multiply(returnNum).setScale(2, RoundingMode.HALF_UP); @@ -2785,7 +2788,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setStatus("refund"); } - if (returnAmount.compareTo(BigDecimal.ZERO) <= 0) { + if (hasNormalReturn && returnAmount.compareTo(BigDecimal.ZERO) <= 0) { throw new BadRequestException("退款金额必须大于0"); } From 8dd942119719b671ba13cecb336ab1c0e1ad8ea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 09:54:52 +0800 Subject: [PATCH 22/71] =?UTF-8?q?fix:=20=E9=80=80=E6=AC=BE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/dto/OrderInfoCouponInfoDTO.java | 16 ++++ .../impl/shopimpl/TbShopTableServiceImpl.java | 79 ++++++++++++++++--- .../ysk/cashier/vo/OrderInfoUserCouponVo.java | 10 +++ 3 files changed, 92 insertions(+), 13 deletions(-) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/dto/OrderInfoCouponInfoDTO.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/vo/OrderInfoUserCouponVo.java diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/OrderInfoCouponInfoDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/OrderInfoCouponInfoDTO.java new file mode 100644 index 00000000..264ff4bb --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/OrderInfoCouponInfoDTO.java @@ -0,0 +1,16 @@ +package cn.ysk.cashier.dto; + +import cn.ysk.cashier.mybatis.entity.TbActivateOutRecord; +import cn.ysk.cashier.vo.OrderInfoUserCouponVo; +import cn.ysk.cashier.vo.TbUserCouponVo; +import lombok.Data; + +import java.util.Collection; +import java.util.List; + +@Data +public class OrderInfoCouponInfoDTO { + private List outRecordList; + private Collection fullReductionCoupon; + private Collection productCoupon; +} 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 1426a4ed..7a6d097a 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 @@ -13,6 +13,7 @@ import cn.ysk.cashier.cons.RedisConstant; import cn.ysk.cashier.cons.TableConstant; import cn.ysk.cashier.cons.rabbit.RabbitConstants; import cn.ysk.cashier.dto.CouponDto; +import cn.ysk.cashier.dto.OrderInfoCouponInfoDTO; import cn.ysk.cashier.dto.order.OrderCartInfoDTO; import cn.ysk.cashier.dto.order.OrderCouponInfoDTO; import cn.ysk.cashier.dto.order.OrderPriceDTO; @@ -47,6 +48,7 @@ import cn.ysk.cashier.service.order.TbOrderInfoService; import cn.ysk.cashier.service.shop.TbShopTableService; import cn.ysk.cashier.utils.*; import cn.ysk.cashier.vo.ActivateInInfoVO; +import cn.ysk.cashier.vo.OrderInfoUserCouponVo; import cn.ysk.cashier.vo.PendingCountVO; import cn.ysk.cashier.vo.TbUserCouponVo; import com.alibaba.fastjson.JSONObject; @@ -1511,18 +1513,30 @@ public class TbShopTableServiceImpl implements TbShopTableService { } } - private void returnCoupon(TbOrderInfo orderInfo) { + private void returnCoupon(TbOrderInfo orderInfo, boolean resetInfo) { // 返还优惠券 if (StrUtil.isNotBlank(orderInfo.getCouponInfoList())) { - OrderCouponInfoDTO couponInfoDTO = JSONObject.parseObject(orderInfo.getCouponInfoList(), OrderCouponInfoDTO.class); + OrderInfoCouponInfoDTO couponInfoDTO = JSONObject.parseObject(orderInfo.getCouponInfoList(), OrderInfoCouponInfoDTO.class); + ArrayList couponIds = new ArrayList<>(); + couponInfoDTO.getProductCoupon().forEach(item -> { + if (item.getReturnNum() >= item.getFinalUseNum()) { + couponIds.add(item.getId()); + } + }); // 券返还 if (!couponInfoDTO.getOutRecordList().isEmpty()) { + ArrayList finalReturnList = new ArrayList<>(); couponInfoDTO.getOutRecordList().forEach(item -> { - item.setRefNum(item.getUseNum()); + if (!couponIds.contains(item.getGiveId())) { + item.setRefNum(item.getUseNum()); + finalReturnList.add(item); + } }); - shopCouponService.refund(couponInfoDTO.getOutRecordList()); - couponInfoDTO.setOutRecordList(new ArrayList<>()); - orderInfo.setCouponInfoList(JSONObject.toJSONString(couponInfoDTO)); + shopCouponService.refund(finalReturnList); + if (resetInfo) { + couponInfoDTO.setOutRecordList(new ArrayList<>()); + orderInfo.setCouponInfoList(JSONObject.toJSONString(couponInfoDTO)); + } } } @@ -2091,7 +2105,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { private BigDecimal calcDiscountAndUpdateInfo(PayDTO payDTO, TbOrderInfo orderInfo) { // 返还上次使用的券 - returnCoupon(orderInfo); + returnCoupon(orderInfo, true); + Set productIdSet = new HashSet<>(); List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); @@ -2133,11 +2148,21 @@ public class TbShopTableServiceImpl implements TbShopTableService { consumeCoupon(couponInfo.getOutRecordList(), payDTO.getVipUserId(), orderInfo); couponInfo.setProductCouponMap(BeanUtil.copyProperties(couponInfo.getProductCouponMap(), HashMap.class)); - HashMap map = new HashMap<>(); - map.put("outRecordList", couponInfo.getOutRecordList()); - map.put("fullReductionCoupon", couponInfo.getFullReductionCouponMap().values()); - map.put("productCoupon", couponInfo.getProductCouponMap().values()); - orderInfo.setCouponInfoList(JSONObject.toJSONString(map)); + OrderInfoCouponInfoDTO infoDTO = new OrderInfoCouponInfoDTO(); + infoDTO.setOutRecordList(couponInfo.getOutRecordList()); + + ArrayList productArr = new ArrayList<>(); + couponInfo.getProductCouponMap().values().forEach(item -> { + BeanUtil.copyProperties(item, OrderInfoUserCouponVo.class); + }); + infoDTO.setProductCoupon(productArr); + + ArrayList fullArr = new ArrayList<>(); + couponInfo.getFullReductionCouponMap().values().forEach(item -> { + BeanUtil.copyProperties(item, OrderInfoUserCouponVo.class); + }); + infoDTO.setFullReductionCoupon(fullArr); + orderInfo.setCouponInfoList(JSONObject.toJSONString(infoDTO)); // orderInfo.setCouponInfoList(JSONObject.toJSONString(couponInfo)); // 修改订单detail @@ -2697,6 +2722,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { } private HashMap updateReturnOrderInfo(ReturnOrderDTO returnOrderDTO, TbOrderInfo oldOrderInfo, boolean isOnline) { + String couponInfoList = oldOrderInfo.getCouponInfoList(); + OrderInfoCouponInfoDTO couponInfoDTO = null; + if (StrUtil.isNotBlank(couponInfoList)) { + couponInfoDTO = JSONObject.parseObject(couponInfoList, OrderInfoCouponInfoDTO.class); + } ArrayList detailIds = new ArrayList<>(); HashMap returnNumMap = new HashMap<>(); returnOrderDTO.getOrderDetails().forEach(item -> { @@ -2753,6 +2783,13 @@ public class TbShopTableServiceImpl implements TbShopTableService { shopCouponService.refund(CollUtil.newArrayList(outRecord)); currentDetailAMount = returnNum.multiply(orderDetail.getPrice()) .add(returnPackFee); + // 移除使用的券 + couponInfoDTO.getProductCoupon().forEach(item -> { + if (Objects.equals(item.getId(), outRecord.getGiveId())) { + item.setReturnNum(item.getReturnNum() + outRecord.getRefNum()); + } + }); + // 使用了满减或积分,获取普通付款商品计算退款比例,退部分现金 }else if (oldOrderInfo.getFullCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0 || oldOrderInfo.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0){ hasNormalReturn = true; @@ -2792,6 +2829,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { throw new BadRequestException("退款金额必须大于0"); } + oldOrderInfo.setCouponInfoList(JSONObject.toJSONString(couponInfoDTO)); + // 保存剩余未退款的订单详情 if (!remainOrderDetailList.isEmpty()) { mpOrderDetailService.saveBatch(remainOrderDetailList); @@ -2923,9 +2962,23 @@ public class TbShopTableServiceImpl implements TbShopTableService { returnOrderDTO.getOrderId(), returnOrderDTO.getOrderDetails().stream().map(ReturnOrderDTO.OrderDetail::getId).collect(Collectors.toList())); } orderInfo.setStatus(TableConstant.OrderInfo.Status.CLOSED.getValue()); + // 订单金额全退,退优惠券以及积分 if (orderInfo.getPayAmount().compareTo(orderInfo.getRefundAmount()) <= 0) { - returnCoupon(orderInfo); + String couponInfoList = orderInfo.getCouponInfoList(); + if (StrUtil.isNotBlank(couponInfoList)) { + OrderInfoCouponInfoDTO orderInfoCouponInfoDTO = JSONObject.parseObject(couponInfoList, OrderInfoCouponInfoDTO.class); + int remainNum = 0; + for (OrderInfoUserCouponVo item : orderInfoCouponInfoDTO.getProductCoupon()) { + if (item.getFinalUseNum() > item.getReturnNum()) { + remainNum = remainNum + (item.getFinalUseNum() - item.getReturnNum()); + } + } + + if (remainNum == 0) { + returnCoupon(orderInfo, true); + } + } } orderInfoMapper.updateById(orderInfo); // 打印退款小票 diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/OrderInfoUserCouponVo.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/OrderInfoUserCouponVo.java new file mode 100644 index 00000000..bc4c4c40 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/OrderInfoUserCouponVo.java @@ -0,0 +1,10 @@ +package cn.ysk.cashier.vo; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class OrderInfoUserCouponVo extends TbUserCouponVo{ + private int returnNum = 0; +} From a59f61bf0964287fd8f175eb7682db29d99d6b8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 09:57:00 +0800 Subject: [PATCH 23/71] =?UTF-8?q?fix:=20=E9=80=80=E6=AC=BE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) 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 7a6d097a..427f4bc1 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 @@ -2977,6 +2977,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { if (remainNum == 0) { returnCoupon(orderInfo, true); + // 返还积分 + memberPointsService.addPoints(Long.valueOf(orderInfo.getMemberId()), orderInfo.getPointsNum(), + "用户退款订单积分返还: " + orderInfo.getPointsNum() + "积分", Long.valueOf(orderInfo.getId())); + } } } From 44160878a2c7c300f0dbd6289758f8ca459bb56d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 10:23:20 +0800 Subject: [PATCH 24/71] =?UTF-8?q?fix:=20=E4=BC=9A=E5=91=98=E4=BB=B7?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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 427f4bc1..bcaa957f 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 @@ -1488,6 +1488,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { ArrayList cartIdList = new ArrayList<>(); // 订单总价 for (TbCashierCart tbCashierCart : cartInfoDTO.getCashierCarts()) { + if (shopUser != null) { + tbCashierCart.setIsMember(!shopEatTypeInfoDTO.isMemberPrice() ? 0 : shopUser.getIsVip() == 1 ? 0 : 1); + } + tbCashierCart.resetTotalAmount(); + if (tbCashierCart.getOrderId() != null) { cartInfoDTO.setOrderId(tbCashierCart.getOrderId()); } @@ -1495,10 +1500,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { if (TableConstant.CashierCart.Status.CREATE.equalsVals(tbCashierCart.getStatus())) { cartInfoDTO.setNewAddTotalAmount(cartInfoDTO.getNewAddTotalAmount().add(tbCashierCart.getTotalAmount())); } - if (shopUser != null) { - tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && tbCashierCart.getMemberPrice() == null && shopUser.getIsVip() == 1 ? 0 : 1); - } - tbCashierCart.resetTotalAmount(); cartInfoDTO.setTotalAmount(cartInfoDTO.getTotalAmount().add(tbCashierCart.getTotalAmount())); } @@ -2433,8 +2434,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { .set(TbOrderInfo::getUserId, null) .set(TbOrderInfo::getMemberId, null)); } - if (dto != null) { + dto.setVipUserId(updateVipDTO.getVipUserId()); return createOrder(dto, true); } return "哈哈哈"; From 21cc776b9547cf33c5ad0fc20c91ea4e297e025e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 10:34:15 +0800 Subject: [PATCH 25/71] =?UTF-8?q?fix:=20=E6=94=AF=E4=BB=98=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E4=BC=98=E6=83=A0=E5=88=B8=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 bcaa957f..da2a29e6 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 @@ -2154,13 +2154,13 @@ public class TbShopTableServiceImpl implements TbShopTableService { ArrayList productArr = new ArrayList<>(); couponInfo.getProductCouponMap().values().forEach(item -> { - BeanUtil.copyProperties(item, OrderInfoUserCouponVo.class); + productArr.add(BeanUtil.copyProperties(item, OrderInfoUserCouponVo.class)); }); infoDTO.setProductCoupon(productArr); ArrayList fullArr = new ArrayList<>(); couponInfo.getFullReductionCouponMap().values().forEach(item -> { - BeanUtil.copyProperties(item, OrderInfoUserCouponVo.class); + fullArr.add(BeanUtil.copyProperties(item, OrderInfoUserCouponVo.class)); }); infoDTO.setFullReductionCoupon(fullArr); orderInfo.setCouponInfoList(JSONObject.toJSONString(infoDTO)); From 35a8d2212246b095c70d88b71f9b7ce0acc2381b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 11:24:01 +0800 Subject: [PATCH 26/71] =?UTF-8?q?fix:=20=E9=80=80=E6=AC=BE=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=AF=94=E4=BE=8B=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/service/MpOrderDetailService.java | 2 +- .../impl/MpOrderDetailServiceImpl.java | 12 ++++++++---- .../impl/shopimpl/TbShopTableServiceImpl.java | 19 ++++++++++--------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java index 4c1b57ab..b59cf340 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java @@ -46,7 +46,7 @@ public interface MpOrderDetailService extends IService { /** * 根据订单id和状态获取订单详情 */ - List selectByOrderIdAndState(Integer orderId, TableConstant.OrderInfo.Status state); + List selectByOrderIdAndState(Integer orderId, TableConstant.OrderInfo.Status... states); /** * 根据购物车id和订单id查询订单详情 diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java index 9faa520a..bb1a8502 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java @@ -1,5 +1,6 @@ package cn.ysk.cashier.mybatis.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.ysk.cashier.cons.TableConstant; import cn.ysk.cashier.dto.shoptable.ReturnOrderDTO; import cn.ysk.cashier.enums.OrderStatusEnums; @@ -49,10 +50,13 @@ public class MpOrderDetailServiceImpl extends ServiceImpl selectByOrderIdAndState(Integer orderId, TableConstant.OrderInfo.Status state) { - return list(new LambdaQueryWrapper() - .eq(TbOrderDetail::getStatus, state.getValue()) - .eq(TbOrderDetail::getOrderId, orderId)); + public List selectByOrderIdAndState(Integer orderId, TableConstant.OrderInfo.Status... statuses) { + LambdaQueryWrapper query = new LambdaQueryWrapper() + .eq(TbOrderDetail::getOrderId, orderId); + if (statuses.length != 0) { + query.in(TbOrderDetail::getStatus, CollUtil.newArrayList(statuses)); + } + return list(query); } @Override 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 da2a29e6..fc3bf24a 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 @@ -2795,12 +2795,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { }else if (oldOrderInfo.getFullCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0 || oldOrderInfo.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0){ hasNormalReturn = true; // 计算当前商品占比 - BigDecimal ratio = calcDetailRatio(orderDetail); - BigDecimal realAmount = orderDetail.getPriceAmount().multiply(ratio); - currentDetailAMount = realAmount - .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) + BigDecimal ratio = calcDetailRatio(orderDetail, returnNum); + currentDetailAMount = orderDetail.getPriceAmount().divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) .multiply(returnNum).setScale(2, RoundingMode.HALF_UP); - returnAmount = returnAmount.add(currentDetailAMount); + returnAmount = returnAmount.add(oldOrderInfo.getPayAmount().multiply(ratio)); saleAmount = saleAmount.add(orderDetail.getPrice()); packAMount = packAMount.add(orderDetail.getPackAmount() .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) @@ -2869,11 +2867,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { mpOrderDetailService.updateBatchById(detailList); data.put("returnOrder", returnOrder); data.put("returnAmount", returnAmount); + data.put("hasNormalReturn", hasNormalReturn); return data; } - private BigDecimal calcDetailRatio(TbOrderDetail orderDetail) { - List detailList = mpOrderDetailService.selectByOrderIdAndState(orderDetail.getId(), TableConstant.OrderInfo.Status.CLOSED); + private BigDecimal calcDetailRatio(TbOrderDetail orderDetail, BigDecimal returnNum) { + List detailList = mpOrderDetailService.selectByOrderIdAndState(orderDetail.getOrderId(), TableConstant.OrderInfo.Status.CLOSED, TableConstant.OrderInfo.Status.REFUND); BigDecimal totalAmount = BigDecimal.ZERO; for (TbOrderDetail item : detailList) { if (item.getUserCouponId() == null) { @@ -2881,7 +2880,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { } } - return orderDetail.getPriceAmount().divide(totalAmount, 2, RoundingMode.HALF_UP); + return orderDetail.getPriceAmount().divide(totalAmount, 8, RoundingMode.HALF_UP) + .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP).multiply(returnNum).setScale(2, RoundingMode.HALF_UP); } private void updateStockAndRecord(List orderDetailList) { @@ -2944,12 +2944,13 @@ public class TbShopTableServiceImpl implements TbShopTableService { HashMap returnInfoData = updateReturnOrderInfo(returnOrderDTO, orderInfo, "scanCode".equals(payType) || "wx_lite".equals(payType)); TbOrderInfo returnOrderInfo = (TbOrderInfo) returnInfoData.get("returnOrder"); BigDecimal returnAmount = (BigDecimal) returnInfoData.get("returnAmount"); + boolean hasNormalReturn = (boolean) returnInfoData.get("hasNormalReturn"); String shopId = orderInfo.getShopId(); // // 线上退款 orderInfo.setRefundAmount(orderInfo.getRefundAmount().add(returnOrderInfo.getRefundAmount())); orderInfo.setRefundRemark(returnOrderDTO.getNote()); - if ("scanCode".equals(payType) || "wx_lite".equals(payType)) { + if (hasNormalReturn && ("scanCode".equals(payType) || "wx_lite".equals(payType))) { payService.returnOrder(Integer.valueOf(shopId), orderInfo, returnOrderInfo); returnOrderInfo.setStatus("refund"); mpOrderInfoService.updateById(returnOrderInfo); From 4922d2d576698bf68ebf9d0c438c0121c9d0829d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 13:39:05 +0800 Subject: [PATCH 27/71] =?UTF-8?q?fix:=20=E9=80=80=E6=AC=BE=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E9=80=80=E6=AC=BE=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) 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 fc3bf24a..8735c901 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 @@ -2149,6 +2149,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { consumeCoupon(couponInfo.getOutRecordList(), payDTO.getVipUserId(), orderInfo); couponInfo.setProductCouponMap(BeanUtil.copyProperties(couponInfo.getProductCouponMap(), HashMap.class)); + OrderInfoCouponInfoDTO infoDTO = new OrderInfoCouponInfoDTO(); infoDTO.setOutRecordList(couponInfo.getOutRecordList()); @@ -2820,6 +2821,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setPriceAmount(currentDetailAMount); orderDetail.setPackAmount(returnPackFee); orderDetail.setRefundNumber(returnNum); + orderDetail.setReturnNum(returnNum.toPlainString()); // orderDetail.setStatus(isOnline ? "refunding" : "refund"); orderDetail.setStatus("refund"); } From 2e5e7f2158dd8ffee8c3f84fe5f1277588500e94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 14:17:40 +0800 Subject: [PATCH 28/71] =?UTF-8?q?fix:=20=E5=88=87=E6=8D=A2=E4=BC=9A?= =?UTF-8?q?=E5=91=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/service/MpOrderDetailService.java | 15 ++++++++ .../impl/MpOrderDetailServiceImpl.java | 16 +++++++++ .../impl/shopimpl/TbShopTableServiceImpl.java | 35 +++++++++++-------- 3 files changed, 51 insertions(+), 15 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java index b59cf340..c1d059a3 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java @@ -7,6 +7,7 @@ import cn.ysk.cashier.pojo.order.TbFullOrderDetail; import cn.ysk.cashier.pojo.order.TbOrderDetail; import com.baomidou.mybatisplus.extension.service.IService; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -63,5 +64,19 @@ public interface MpOrderDetailService extends IService { * @param orderId 订单id */ boolean updateStatusByOrderId(TableConstant.OrderInfo.Status status, Integer orderId); + + /** + * 根据购物车id修改detail价格 + * @param cartId 购物车id + * @param totalAmount 总价格 + */ + boolean updatePriceByCartId(Integer cartId, BigDecimal saleAmount, BigDecimal totalAmount); + + /** + * 根据会员id修改detail信息 + * @param orderId 订单id + * @param isMember 会员id + */ + boolean updateMemberByOrderId(Integer orderId, boolean isMember); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java index bb1a8502..ceef2831 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -72,5 +73,20 @@ public class MpOrderDetailServiceImpl extends ServiceImpl() + .eq(TbOrderDetail::getCartId, cartId) + .set(TbOrderDetail::getPrice, saleAmount) + .set(TbOrderDetail::getPriceAmount, totalAmount)); + } + + @Override + public boolean updateMemberByOrderId(Integer orderId, boolean isMember) { + return update(new LambdaUpdateWrapper() + .eq(TbOrderDetail::getOrderId, orderId) + .set(TbOrderDetail::getIsMember, isMember ? 1 : 0)); + } } 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 8735c901..56c1afbb 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 @@ -1210,9 +1210,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { 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); - if (shopInfo == null) throw new BadRequestException("店铺信息不存在"); - TbShopUser shopUser = null; if (createOrderDTO.getVipUserId() != null) { shopUser = tbShopUserMapper.selectById(createOrderDTO.getVipUserId()); @@ -1243,7 +1240,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { // } // 创建订单详情 - OrderPriceDTO detailPriceDTO = createOrderDetailWithCoupon(cartInfoDTO.getCashierCarts(), orderInfo, createOrderDTO.getShopId(), true, shopEatTypeInfoDTO); + OrderPriceDTO detailPriceDTO = createOrderDetailWithCoupon(cartInfoDTO.getCashierCarts(), orderInfo, + createOrderDTO.getShopId(), true, shopEatTypeInfoDTO); // 是否是第一次创建订单 orderInfo = createOrderWithAction(createOrderDTO, detailPriceDTO, shopEatTypeInfoDTO, @@ -2392,10 +2390,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Transactional public Object updateVip(UpdateVipDTO updateVipDTO) { Integer orderId = updateVipDTO.getOrderId(); + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(updateVipDTO.getShopId(), updateVipDTO.getTableId()); if (orderId == null) { - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(updateVipDTO.getShopId(), updateVipDTO.getTableId()); List tbCashierCarts = mpCashierCartService.selectByShopEatType(shopEatTypeInfoDTO, updateVipDTO.getMasterId()); for (TbCashierCart item : tbCashierCarts) { + item.setIsMember(!shopEatTypeInfoDTO.isMemberPrice() ? 0 : updateVipDTO.getType() == 0 ? 1 : 0); if (item.getOrderId() != null) { orderId = item.getOrderId(); } @@ -2423,20 +2422,26 @@ public class TbShopTableServiceImpl implements TbShopTableService { throw new BadRequestException("用户信息不存在"); } - orderInfoMapper.update(null, new LambdaUpdateWrapper() - .eq(TbOrderInfo::getId, orderId) - .set(TbOrderInfo::getUserId, shopUser.getUserId()) - .set(TbOrderInfo::getMemberId, updateVipDTO.getVipUserId())); + if (orderId != null) { + mpOrderDetailService.updateMemberByOrderId(orderId, shopEatTypeInfoDTO.isMemberPrice()); + orderInfoMapper.update(null, new LambdaUpdateWrapper() + .eq(TbOrderInfo::getId, orderId) + .set(TbOrderInfo::getUserId, shopUser.getUserId()) + .set(TbOrderInfo::getMemberId, updateVipDTO.getVipUserId())); + } } else { - mpCashierCartService.updateMemberAndAmountByOrderId(orderId, false); - orderInfoMapper.update(null, new LambdaUpdateWrapper() - .eq(TbOrderInfo::getId, orderId) - .set(TbOrderInfo::getUserId, null) - .set(TbOrderInfo::getMemberId, null)); + if (orderId != null) { + mpOrderDetailService.updateMemberByOrderId(orderId, false); + mpCashierCartService.updateMemberAndAmountByOrderId(orderId, false); + orderInfoMapper.update(null, new LambdaUpdateWrapper() + .eq(TbOrderInfo::getId, orderId) + .set(TbOrderInfo::getUserId, null) + .set(TbOrderInfo::getMemberId, null)); + } } if (dto != null) { - dto.setVipUserId(updateVipDTO.getVipUserId()); + dto.setVipUserId(updateVipDTO.getType() == 0 ? updateVipDTO.getVipUserId() : null); return createOrder(dto, true); } return "哈哈哈"; From 86ed2eebcd8af29ed4f4a6a1152df1a3e9c20fbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 14:25:16 +0800 Subject: [PATCH 29/71] =?UTF-8?q?fix:=20=E6=89=93=E6=8A=98=E4=B8=8D?= =?UTF-8?q?=E4=BF=AE=E6=94=B9detail=E5=8E=9F=E5=A7=8B=E5=94=AE=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 56c1afbb..ac661740 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 @@ -2179,15 +2179,15 @@ public class TbShopTableServiceImpl implements TbShopTableService { BigDecimal discount = BigDecimal.valueOf(payDTO.getDiscount()); cashierCarts.forEach(item -> { item.setTotalAmount(item.getTotalAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); - item.setSalePrice(item.getSalePrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); - item.setMemberPrice(item.getMemberPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); +// item.setSalePrice(item.getSalePrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); +// item.setMemberPrice(item.getMemberPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); }); detailList.forEach(item -> { item.setPriceAmount(item.getPriceAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); - item.setPrice(item.getPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); - item.setMemberPrice(item.getMemberPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); +// item.setPrice(item.getPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); +// item.setMemberPrice(item.getMemberPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); }); mpCashierCartService.updateBatchById(cashierCarts); From a4edefa252f9cbcae4ec1291f3a1ebe6c1cfde63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 14:37:21 +0800 Subject: [PATCH 30/71] =?UTF-8?q?fix:=20=E9=80=80=E6=AC=BE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/shopimpl/TbShopTableServiceImpl.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) 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 ac661740..5e0386fb 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 @@ -2831,7 +2831,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setStatus("refund"); } - if (hasNormalReturn && returnAmount.compareTo(BigDecimal.ZERO) <= 0) { + if (hasNormalReturn && returnAmount.compareTo(new BigDecimal("0.01")) <= 0) { throw new BadRequestException("退款金额必须大于0"); } @@ -2977,19 +2977,21 @@ public class TbShopTableServiceImpl implements TbShopTableService { String couponInfoList = orderInfo.getCouponInfoList(); if (StrUtil.isNotBlank(couponInfoList)) { OrderInfoCouponInfoDTO orderInfoCouponInfoDTO = JSONObject.parseObject(couponInfoList, OrderInfoCouponInfoDTO.class); - int remainNum = 0; - for (OrderInfoUserCouponVo item : orderInfoCouponInfoDTO.getProductCoupon()) { - if (item.getFinalUseNum() > item.getReturnNum()) { - remainNum = remainNum + (item.getFinalUseNum() - item.getReturnNum()); + if (orderInfoCouponInfoDTO.getProductCoupon() != null && !orderInfoCouponInfoDTO.getProductCoupon().isEmpty()) { + int remainNum = 0; + for (OrderInfoUserCouponVo item : orderInfoCouponInfoDTO.getProductCoupon()) { + if (item.getFinalUseNum() > item.getReturnNum()) { + remainNum = remainNum + (item.getFinalUseNum() - item.getReturnNum()); + } } - } - if (remainNum == 0) { - returnCoupon(orderInfo, true); - // 返还积分 - memberPointsService.addPoints(Long.valueOf(orderInfo.getMemberId()), orderInfo.getPointsNum(), - "用户退款订单积分返还: " + orderInfo.getPointsNum() + "积分", Long.valueOf(orderInfo.getId())); + if (remainNum == 0) { + returnCoupon(orderInfo, true); + // 返还积分 + memberPointsService.addPoints(Long.valueOf(orderInfo.getMemberId()), orderInfo.getPointsNum(), + "用户退款订单积分返还: " + orderInfo.getPointsNum() + "积分", Long.valueOf(orderInfo.getId())); + } } } } From 4a0a46b0b476f427c2464a30cb72482c79c577c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 14:50:17 +0800 Subject: [PATCH 31/71] =?UTF-8?q?fix:=20=E6=8A=98=E6=89=A3=E4=BC=98?= =?UTF-8?q?=E6=83=A0=E5=88=B8=E5=90=8C=E6=97=B6=E4=BD=BF=E7=94=A8detail?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E4=B8=8D=E5=87=86=E7=A1=AE=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ysk/cashier/pojo/order/TbCashierCart.java | 18 ++++++++++++++++++ .../impl/shopimpl/TbShopTableServiceImpl.java | 2 ++ 2 files changed, 20 insertions(+) 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 9bbd0a1d..80b0b88b 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 @@ -194,6 +194,24 @@ public class TbCashierCart implements Serializable { } } + /** + * 根据是否会员充值价格 + */ + public void resetTotalAmount(BigDecimal discountRadio) { + if ("false".equals(isPack)) { + packFee = BigDecimal.ZERO; + } + if ("true".equals(isGift)) { + totalAmount = packFee; + } else { + if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { + totalAmount = totalNumber.multiply(memberPrice).add(packFee).multiply(discountRadio); + } else { + totalAmount = totalNumber.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee).multiply(discountRadio); + } + } + } + /** * 获取总价不包含打包费 * 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 5e0386fb..47c4d496 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 @@ -1372,6 +1372,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { resetCouponList.add(cashierCart); cashierCart.setUserCouponId(null); } + cashierCart.resetTotalAmount(orderInfo.getDiscountRatio()); discountAmount = reduceProCoupon(couponMap, cashierCart, usedCouponMap, discountAmount, balanceCartList, outRecords, memberId); } @@ -2196,6 +2197,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { BigDecimal finalAmount = orderInfo.getOrderAmount().multiply(BigDecimal.valueOf(payDTO.getDiscount())).setScale(2, RoundingMode.HALF_UP); BigDecimal discountAmount = oldAmount.subtract(finalAmount); orderInfo.setDiscountAmount(discountAmount); + orderInfo.setDiscountRatio(BigDecimal.valueOf(payDTO.getDiscount())); orderInfo.setOrderAmount(finalAmount); orderInfo.setAmount(finalAmount); orderInfo.setSettlementAmount(finalAmount); From aceb5be7a69069c9c60a1cdd0b96c4a919b71eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 15:03:32 +0800 Subject: [PATCH 32/71] =?UTF-8?q?fix:=20=E8=AE=A2=E5=8D=95=E4=BC=98?= =?UTF-8?q?=E6=83=A0=E5=88=B8=E6=8A=98=E6=89=A3=E9=87=91=E9=A2=9D=E4=B8=8D?= =?UTF-8?q?=E5=87=86=E7=A1=AE=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 47c4d496..73379fa9 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 @@ -1400,7 +1400,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { couponInfoDTO.setOutRecordList(outRecords); couponInfoDTO.setCouponMap(usedCouponMap); - return discountAmount; + return discountAmount.multiply(orderInfo.getDiscountRatio()); } private OrderCouponInfoDTO getCouponInfo(Integer memberId, Integer shopId, List userCouponInfoDTOList, BigDecimal orderAmount, Set productIds) { From 23cc269ae9d544186fd00952ad893cd3777a1382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 15:13:36 +0800 Subject: [PATCH 33/71] =?UTF-8?q?fix:=20=E8=AE=A2=E5=8D=95=E4=BC=98?= =?UTF-8?q?=E6=83=A0=E5=88=B8=E6=8A=98=E6=89=A3=E9=87=91=E9=A2=9D=E4=B8=8D?= =?UTF-8?q?=E5=87=86=E7=A1=AE=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 73379fa9..9755afca 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 @@ -1457,7 +1457,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { OrderCartInfoDTO cartInfoDTO = new OrderCartInfoDTO(); List allCashierCarts; if (orderId != null) { - allCashierCarts = mpCashierCartService.selectByOrderIdAndState(orderId, null); + allCashierCarts = mpCashierCartService.selectByOrderIdAndState(orderId); }else { allCashierCarts = mpCashierCartService.selectByShopEatType(shopEatTypeInfoDTO, masterId); } @@ -2082,7 +2082,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { private BigDecimal getCartCouponDiscount(TbOrderInfo orderInfo, PayDTO payDTO) { Set productIdSet = new HashSet<>(); - List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId(), null); + List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); ArrayList activateCartInfo = new ArrayList<>(); for (TbCashierCart cashierCart : cashierCarts) { productIdSet.add(cashierCart.getProductId()); From 3439a7adff5fc0f8882e39f17f84e5e8e6b5aaca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 16:18:03 +0800 Subject: [PATCH 34/71] =?UTF-8?q?fix:=20=E6=8A=98=E6=89=A3=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 4 ---- 1 file changed, 4 deletions(-) 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 9755afca..8630f22c 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 @@ -2286,10 +2286,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfo.setPaidTime(DateUtil.current()); orderInfo.setPayAmount(finalAmount); orderInfo.setStatus("closed"); - if (payDTO.getDiscount() != null) { - orderInfo.setDiscountRatio(BigDecimal.valueOf(payDTO.getDiscount())); - orderInfo.setDiscountAmount(orderInfo.getAmount().subtract(finalAmount)); - } if (StrUtil.isEmpty(orderInfo.getMemberId())) { orderInfo.setMemberId(Convert.toStr(payDTO.getVipUserId())); } From 1e6981cfb92b957862a1d2852b6d807182d8f935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 16:32:58 +0800 Subject: [PATCH 35/71] =?UTF-8?q?fix:=20=E6=8A=98=E6=89=A3=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/ysk/cashier/dto/shoptable/PayDTO.java | 12 +++++------- .../ysk/cashier/service/impl/TbPayServiceImpl.java | 4 ++-- .../impl/shopimpl/TbShopTableServiceImpl.java | 12 ++++++------ 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PayDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PayDTO.java index 74e34174..b54bfc51 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PayDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PayDTO.java @@ -4,10 +4,8 @@ import cn.ysk.cashier.dto.order.UserCouponInfoDTO; import lombok.Data; import javax.validation.Valid; -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; +import javax.validation.constraints.*; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -19,9 +17,9 @@ public class PayDTO { private Integer orderId; @NotEmpty private String payType; - @Min(0) - @Max(1) - private Double discount; + @DecimalMin("0") + @DecimalMax("1") + private BigDecimal discount; private Integer vipUserId; private String code; private String token; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbPayServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbPayServiceImpl.java index f004ce74..56dace2c 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbPayServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbPayServiceImpl.java @@ -365,12 +365,12 @@ public class TbPayServiceImpl implements TbPayService { // return Result.fail(CodeEnum.PAYTYPENOEXIST); // } - BigDecimal payMount = orderInfo.getOrderAmount().multiply(BigDecimal.valueOf(payDTO.getDiscount())).setScale(2, RoundingMode.HALF_UP); + BigDecimal payMount = orderInfo.getOrderAmount().multiply(payDTO.getDiscount()).setScale(2, RoundingMode.HALF_UP); orderInfo.setPayAmount(payMount); orderInfo.setPayType("cash"); orderInfo.setStatus("closed"); orderInfo.setPayOrderNo("cash".concat(SnowFlakeUtil.generateOrderNo())); - orderInfo.setDiscountRatio(BigDecimal.valueOf(payDTO.getDiscount())); + orderInfo.setDiscountRatio(payDTO.getDiscount()); orderInfo.setDiscountAmount(orderInfo.getAmount().subtract(payMount)); orderInfoMapper.updateById(orderInfo); 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 8630f22c..06fba60d 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 @@ -2131,7 +2131,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 更新订单信息 ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(orderInfo.getShopId(), orderInfo.getTableId()); OrderPriceDTO priceDTO = createOrderDetailWithCoupon(activateCartInfo, orderInfo, payDTO.getShopId(), false, shopEatTypeInfoDTO); - BigDecimal finalAmount = priceDTO.getTotalAmount().multiply(BigDecimal.valueOf(payDTO.getDiscount())).setScale(2, RoundingMode.HALF_UP); + BigDecimal finalAmount = priceDTO.getTotalAmount().multiply(payDTO.getDiscount()).setScale(2, RoundingMode.HALF_UP); orderInfo.setUpdatedAt(System.currentTimeMillis()); orderInfo.setSettlementAmount(finalAmount); @@ -2177,7 +2177,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { private BigDecimal resetAmountByDiscount(PayDTO payDTO, TbOrderInfo orderInfo) { List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); List detailList = mpOrderDetailService.selectByOrderId(orderInfo.getId()); - BigDecimal discount = BigDecimal.valueOf(payDTO.getDiscount()); + BigDecimal discount = payDTO.getDiscount(); cashierCarts.forEach(item -> { item.setTotalAmount(item.getTotalAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); // item.setSalePrice(item.getSalePrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); @@ -2194,10 +2194,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { mpCashierCartService.updateBatchById(cashierCarts); mpOrderDetailService.updateBatchById(detailList); BigDecimal oldAmount = orderInfo.getOrderAmount(); - BigDecimal finalAmount = orderInfo.getOrderAmount().multiply(BigDecimal.valueOf(payDTO.getDiscount())).setScale(2, RoundingMode.HALF_UP); + BigDecimal finalAmount = orderInfo.getOrderAmount().multiply(payDTO.getDiscount()).setScale(2, RoundingMode.HALF_UP); BigDecimal discountAmount = oldAmount.subtract(finalAmount); orderInfo.setDiscountAmount(discountAmount); - orderInfo.setDiscountRatio(BigDecimal.valueOf(payDTO.getDiscount())); + orderInfo.setDiscountRatio(payDTO.getDiscount()); orderInfo.setOrderAmount(finalAmount); orderInfo.setAmount(finalAmount); orderInfo.setSettlementAmount(finalAmount); @@ -2234,12 +2234,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { } if (payDTO.getDiscount() == null) { - payDTO.setDiscount((double) 1); + payDTO.setDiscount(new BigDecimal("1")); } BigDecimal finalAmount = null; // 计算订单折扣信息 - if (payDTO.getDiscount() != 1) { + if (payDTO.getDiscount().compareTo(new BigDecimal("1")) != 0) { finalAmount = resetAmountByDiscount(payDTO, orderInfo); }else { finalAmount = orderInfo.getOrderAmount(); From dcaf9f4adbf511c542eb4125d030b800ef3ea86d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 16:41:18 +0800 Subject: [PATCH 36/71] =?UTF-8?q?fix:=20=E6=8A=98=E6=89=A3=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/shopimpl/TbShopTableServiceImpl.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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 06fba60d..54933f1d 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 @@ -1337,11 +1337,20 @@ public class TbShopTableServiceImpl implements TbShopTableService { outRecords.add(tbActivateOutRecord); cashierCart.setUseCouponInfo(JSONObject.toJSONString(tbActivateOutRecord)); - couponVo.setFinalDiscountAmount(discountAmount); // 优惠券未消耗完毕 if (balanceCart != null && getCanUseCoupon(couponMap, balanceCart.getProductId()) != null) { - discountAmount = reduceProCoupon(couponMap, balanceCart, usedCouponMap, discountAmount, balanceCartList, outRecords, memberId); + // 递归调用并累加递归返回的折扣金额 + discountAmount = discountAmount.add(reduceProCoupon( + couponMap, + balanceCart, + usedCouponMap, + BigDecimal.ZERO, // 避免重复累加,递归时传入新的初始值 + balanceCartList, + outRecords, + memberId + )); } + couponVo.setFinalDiscountAmount(discountAmount); return discountAmount; } return discountAmount; From 8d90986206f8dc5b289d3d9d77d491f972c76116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 17:14:47 +0800 Subject: [PATCH 37/71] =?UTF-8?q?fix:=20=E6=8A=98=E6=89=A3=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ysk/cashier/pojo/order/TbCashierCart.java | 27 ++++++++++++++----- .../impl/shopimpl/TbShopTableServiceImpl.java | 6 ++--- 2 files changed, 23 insertions(+), 10 deletions(-) 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 80b0b88b..b83a735e 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 @@ -15,6 +15,7 @@ */ package cn.ysk.cashier.pojo.order; +import cn.ysk.cashier.mybatis.entity.TbActivateOutRecord; import lombok.Data; import cn.hutool.core.bean.BeanUtil; import io.swagger.annotations.ApiModelProperty; @@ -24,6 +25,7 @@ import javax.persistence.*; import javax.validation.constraints.*; import java.math.BigDecimal; import java.io.Serializable; +import java.math.RoundingMode; /** * @author lyf @@ -171,6 +173,10 @@ public class TbCashierCart implements Serializable { // 是否临时菜品 private Integer isTemporary; private String unit; + private BigDecimal discountSaleAmount; + private String discountSaleNote; + private Boolean isPrint; + private String useCouponInfo; public void copy(TbCashierCart source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); @@ -189,7 +195,7 @@ public class TbCashierCart implements Serializable { if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { totalAmount = totalNumber.multiply(memberPrice).add(packFee); } else { - totalAmount = totalNumber.multiply(salePrice).add(packFee); + totalAmount = totalNumber.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee); } } } @@ -216,15 +222,22 @@ public class TbCashierCart implements Serializable { * 获取总价不包含打包费 * */ - public BigDecimal getTotalAmountByNum(BigDecimal num) { + public BigDecimal getTotalAmountByNum(BigDecimal num, BigDecimal discountRadio) { + if (discountRadio == null) { + discountRadio = new BigDecimal("1"); + } + resetTotalAmount(discountRadio); if (num == null) { num = totalNumber; } - if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { - return num.multiply(memberPrice); - } else { - return num.multiply(salePrice); - } + + return totalAmount.divide(totalNumber, 9, RoundingMode.HALF_UP).multiply(num).setScale(2, RoundingMode.HALF_UP); +// if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { +// return num.multiply(memberPrice); +// } else { +// return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice); +// } } + } 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 54933f1d..4929b533 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 @@ -1287,7 +1287,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { TbCashierCart balanceCart = null; if (cashierCart.getNumber().compareTo(couponVo.getCurrentUseNum()) < 0) { cashierCart.setUserCouponId(couponVo.getId()); - discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null)); + discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null, null)); couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber())); currentUseNum = cashierCart.getNumber(); // 优惠券数量小于购物车数量,分割购物车数据 @@ -1297,7 +1297,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { 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()); + BigDecimal totalAmountByNum = cashierCart.getTotalAmountByNum(couponVo.getCurrentUseNum(), null); cashierCart.setTotalAmount(totalAmountByNum.add(singlePackFee.multiply(currentUseNum))); cashierCart.setNumber(couponVo.getCurrentUseNum()); cashierCart.setTotalNumber(couponVo.getCurrentUseNum()); @@ -1315,7 +1315,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { balanceCart.setNumber(balanceNum); balanceCart.setTotalNumber(balanceNum); balanceCart.setPackFee(singlePackFee.multiply(balanceNum)); - balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum).add(singlePackFee.multiply(balanceNum))); + balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum, null).add(singlePackFee.multiply(balanceNum))); balanceCartList.add(balanceCart); } else { currentUseNum =cashierCart.getNumber(); From 9549aef3bd8298e4ff442cff8bc9e271fe3ff9f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 17:59:06 +0800 Subject: [PATCH 38/71] =?UTF-8?q?fix:=20=E6=8A=98=E6=89=A3=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 1 - 1 file changed, 1 deletion(-) 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 4929b533..d11b2e77 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 @@ -2314,7 +2314,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { .eq(TbOrderDetail::getOrderId, orderInfo.getId()) .eq(TbOrderDetail::getUseType, orderInfo.getUseType()) .eq(TbOrderDetail::getStatus, "unpaid") - .setSql(StrUtil.format("price_amount=price*num*{}", payDTO.getDiscount() == null ? 1 : payDTO.getDiscount())) .set(TbOrderDetail::getStatus, "closed")); JSONObject jsonObject = new JSONObject(); From c3409461c85223c741123a05961f1c231c6b3ca0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 21 Nov 2024 18:19:12 +0800 Subject: [PATCH 39/71] =?UTF-8?q?fix:=20=E6=8A=98=E6=89=A3=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java | 3 +++ .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) 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 b83a735e..caef29d2 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 @@ -204,6 +204,9 @@ public class TbCashierCart implements Serializable { * 根据是否会员充值价格 */ public void resetTotalAmount(BigDecimal discountRadio) { + if (discountRadio == null) { + discountRadio = BigDecimal.ONE; + } if ("false".equals(isPack)) { packFee = BigDecimal.ZERO; } 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 d11b2e77..d78f59fc 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 @@ -1582,7 +1582,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { if (orderInfo != null && shopEatTypeInfoDTO != null) { cashierCart.setIsMember(StrUtil.isBlank(orderInfo.getMemberId()) ? 0 : shopEatTypeInfoDTO.isMemberPrice() ? 1 : 0); } - cashierCart.resetTotalAmount(); + cashierCart.resetTotalAmount(orderInfo == null ? null : orderInfo.getDiscountRatio()); // 已经退款和使用优惠券的商品不进行统计金额 if (!"return".equals(cashierCart.getStatus()) && cashierCart.getUserCouponId() == null) { From 4821892a35e3a28befdd9162049e677aff4a00b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 18 Nov 2024 11:40:40 +0800 Subject: [PATCH 40/71] =?UTF-8?q?fix:=20=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E9=A1=BA=E5=BA=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/shopimpl/TbShopTableServiceImpl.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) 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 d78f59fc..dd334f6a 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 @@ -2187,12 +2187,16 @@ public class TbShopTableServiceImpl implements TbShopTableService { List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); List detailList = mpOrderDetailService.selectByOrderId(orderInfo.getId()); BigDecimal discount = payDTO.getDiscount(); - cashierCarts.forEach(item -> { - item.setTotalAmount(item.getTotalAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); + BigDecimal totalAmount = BigDecimal.ZERO; + for (TbCashierCart cashierCart : cashierCarts) { + if (cashierCart.getUserCouponId() == null) { + cashierCart.setTotalAmount(cashierCart.getTotalAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); + totalAmount = cashierCart.getTotalAmount(); + } // item.setSalePrice(item.getSalePrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); // item.setMemberPrice(item.getMemberPrice().multiply(discount).setScale(2, RoundingMode.HALF_UP)); - }); + } detailList.forEach(item -> { item.setPriceAmount(item.getPriceAmount().multiply(discount).setScale(2, RoundingMode.HALF_UP)); @@ -2203,15 +2207,15 @@ public class TbShopTableServiceImpl implements TbShopTableService { mpCashierCartService.updateBatchById(cashierCarts); mpOrderDetailService.updateBatchById(detailList); BigDecimal oldAmount = orderInfo.getOrderAmount(); - BigDecimal finalAmount = orderInfo.getOrderAmount().multiply(payDTO.getDiscount()).setScale(2, RoundingMode.HALF_UP); - BigDecimal discountAmount = oldAmount.subtract(finalAmount); +// BigDecimal finalAmount = orderInfo.getOrderAmount().multiply(payDTO.getDiscount()).setScale(2, RoundingMode.HALF_UP); + BigDecimal discountAmount = oldAmount.subtract(totalAmount); orderInfo.setDiscountAmount(discountAmount); orderInfo.setDiscountRatio(payDTO.getDiscount()); - orderInfo.setOrderAmount(finalAmount); - orderInfo.setAmount(finalAmount); - orderInfo.setSettlementAmount(finalAmount); + orderInfo.setOrderAmount(totalAmount); + orderInfo.setAmount(totalAmount); + orderInfo.setSettlementAmount(totalAmount); mpOrderInfoService.updateById(orderInfo); - return finalAmount; + return totalAmount; } @Override From bf30e897c687b606dcd29c8e1b03a0f6821ae4bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 10:19:12 +0800 Subject: [PATCH 41/71] =?UTF-8?q?fix:=20=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E9=A1=BA=E5=BA=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ysk/cashier/dto/order/OrderPriceDTO.java | 2 + .../ysk/cashier/pojo/order/TbCashierCart.java | 7 ++- .../impl/shopimpl/TbShopTableServiceImpl.java | 50 ++++++++++--------- 3 files changed, 34 insertions(+), 25 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/order/OrderPriceDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/order/OrderPriceDTO.java index b7b4249a..9f33b66d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/order/OrderPriceDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/order/OrderPriceDTO.java @@ -12,6 +12,8 @@ public class OrderPriceDTO { private BigDecimal originAmount = BigDecimal.ZERO; private BigDecimal totalAmount = BigDecimal.ZERO; private BigDecimal packAmount = BigDecimal.ZERO; + // 打折折扣金额 + private BigDecimal discountAmount = BigDecimal.ZERO; private boolean hasNewInfo = false; private List newOrderDetailList = new ArrayList<>(); private List removeOrderDetailList = new ArrayList<>(); 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 caef29d2..35e4c816 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 @@ -229,12 +229,15 @@ public class TbCashierCart implements Serializable { if (discountRadio == null) { discountRadio = new BigDecimal("1"); } - resetTotalAmount(discountRadio); if (num == null) { num = totalNumber; } - return totalAmount.divide(totalNumber, 9, RoundingMode.HALF_UP).multiply(num).setScale(2, RoundingMode.HALF_UP); + if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { + return num.multiply(memberPrice).multiply(discountRadio).add(packFee).setScale(2, RoundingMode.HALF_UP); + }else { + return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee).multiply(discountRadio).setScale(2, RoundingMode.HALF_UP); + } // if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { // return num.multiply(memberPrice); // } else { 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 dd334f6a..e7d41e52 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 @@ -583,12 +583,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setNote(addCartDTO.getNote()); tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() != null ? 1 : 0); - tbCashierCart.setIsMember(!shopEatTypeInfoDTO.isMemberPrice() ? 0 : addCartDTO.getVipUserId() == null ? 0 : 1); + tbCashierCart.setIsMember(!shopEatTypeInfoDTO.isMemberPrice() ? 0 : addCartDTO.getVipUserId() == null ? 0 : 1); tbCashierCart.setMemberPrice(productSku.getMemberPrice()); cashierCartRepository.save(tbCashierCart); } else { - tbCashierCart.setIsMember(!shopEatTypeInfoDTO.isMemberPrice() ? 0 : addCartDTO.getVipUserId() == null ? 0 : 1); + tbCashierCart.setIsMember(!shopEatTypeInfoDTO.isMemberPrice() ? 0 : addCartDTO.getVipUserId() == null ? 0 : 1); tbCashierCart.setNote(addCartDTO.getNote()); tbCashierCart.setTotalAmount(addCartDTO.getNum().multiply(productSku.getSalePrice())); @@ -1277,7 +1277,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { private BigDecimal reduceProCoupon(HashMap> couponMap, TbCashierCart cashierCart, HashMap> usedCouponMap, BigDecimal discountAmount, ArrayList balanceCartList, - ArrayList outRecords, Integer memberId) { + ArrayList outRecords, Integer memberId) { TbUserCouponVo couponVo = getCanUseCoupon(couponMap, cashierCart.getProductId()); if (couponVo != null && couponVo.getCurrentUseNum().compareTo(BigDecimal.ZERO) > 0) { BigDecimal currentUseNum; @@ -1291,7 +1291,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber())); currentUseNum = cashierCart.getNumber(); // 优惠券数量小于购物车数量,分割购物车数据 - }else if (cashierCart.getNumber().compareTo(couponVo.getCurrentUseNum()) > 0) { + } 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()); @@ -1307,7 +1307,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { currentUseNum = cashierCart.getNumber(); - // 创建结余购物车 balanceCart = BeanUtil.copyProperties(cashierCart, TbCashierCart.class); balanceCart.setUserCouponId(null); @@ -1318,7 +1317,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum, null).add(singlePackFee.multiply(balanceNum))); balanceCartList.add(balanceCart); } else { - currentUseNum =cashierCart.getNumber(); + currentUseNum = cashierCart.getNumber(); discountAmount = discountAmount.add(cashierCart.getTotalAmount()); cashierCart.setUserCouponId(couponVo.getId()); couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber())); @@ -1369,7 +1368,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbUserCouponVos = new ArrayList<>(); tbUserCouponVos.add(item); couponMap.put(item.getProId().toString(), tbUserCouponVos); - }else { + } else { tbUserCouponVos.add(item); } }); @@ -1409,7 +1408,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { couponInfoDTO.setOutRecordList(outRecords); couponInfoDTO.setCouponMap(usedCouponMap); - return discountAmount.multiply(orderInfo.getDiscountRatio()); + return discountAmount; } private OrderCouponInfoDTO getCouponInfo(Integer memberId, Integer shopId, List userCouponInfoDTOList, BigDecimal orderAmount, Set productIds) { @@ -1467,7 +1466,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { List allCashierCarts; if (orderId != null) { allCashierCarts = mpCashierCartService.selectByOrderIdAndState(orderId); - }else { + } else { allCashierCarts = mpCashierCartService.selectByShopEatType(shopEatTypeInfoDTO, masterId); } TbCashierCart seatCart = null; @@ -1586,11 +1585,13 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 已经退款和使用优惠券的商品不进行统计金额 if (!"return".equals(cashierCart.getStatus()) && cashierCart.getUserCouponId() == null) { + BigDecimal originalTotal = cashierCart.getTotalAmountByNum(cashierCart.getTotalNumber(), BigDecimal.ONE); + priceDTO.setDiscountAmount(priceDTO.getDiscountAmount().add(originalTotal.subtract(cashierCart.getTotalAmount()))); priceDTO.setTotalAmount(priceDTO.getTotalAmount().add(cashierCart.getTotalAmount())); priceDTO.setPackAmount(priceDTO.getPackAmount().add(cashierCart.getPackFee())); } - if(!"return".equals(cashierCart.getStatus())) { + if (!"return".equals(cashierCart.getStatus())) { priceDTO.setOriginAmount(priceDTO.getOriginAmount().add(cashierCart.getTotalAmount())); } @@ -2116,6 +2117,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 返还上次使用的券 returnCoupon(orderInfo, true); + // 设置折扣比例 + orderInfo.setDiscountRatio(payDTO.getDiscount()); Set productIdSet = new HashSet<>(); List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); @@ -2140,12 +2143,13 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 更新订单信息 ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(orderInfo.getShopId(), orderInfo.getTableId()); OrderPriceDTO priceDTO = createOrderDetailWithCoupon(activateCartInfo, orderInfo, payDTO.getShopId(), false, shopEatTypeInfoDTO); - BigDecimal finalAmount = priceDTO.getTotalAmount().multiply(payDTO.getDiscount()).setScale(2, RoundingMode.HALF_UP); + BigDecimal finalAmount = priceDTO.getTotalAmount().setScale(2, RoundingMode.HALF_UP); orderInfo.setUpdatedAt(System.currentTimeMillis()); orderInfo.setSettlementAmount(finalAmount); orderInfo.setAmount(finalAmount); orderInfo.setOrderAmount(finalAmount); + orderInfo.setDiscountAmount(priceDTO.getDiscountAmount()); // 计算订单优惠 TbActivateOutRecord outRecord = calcOrderInfoDiscount(payDTO, orderInfo, couponInfo); @@ -2251,17 +2255,17 @@ public class TbShopTableServiceImpl implements TbShopTableService { } BigDecimal finalAmount = null; - // 计算订单折扣信息 - if (payDTO.getDiscount().compareTo(new BigDecimal("1")) != 0) { - finalAmount = resetAmountByDiscount(payDTO, orderInfo); - }else { - finalAmount = orderInfo.getOrderAmount(); - } // 计算优惠券积分折扣信息 if (payDTO.getVipUserId() != null) { // 计算商品券折扣 finalAmount = calcDiscountAndUpdateInfo(payDTO, orderInfo); + } else { + if (payDTO.getDiscount().compareTo(new BigDecimal("1")) != 0) { + finalAmount = resetAmountByDiscount(payDTO, orderInfo); + } else { + finalAmount = orderInfo.getOrderAmount(); + } } boolean isOnline = false; @@ -2414,7 +2418,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { CreateOrderDTO dto = null; if (orderId != null) { TbOrderInfo orderInfo = mpOrderInfoService.getById(orderId); - if(!TableConstant.OrderInfo.Status.UNPAID.equalsVals(orderInfo.getStatus())) { + if (!TableConstant.OrderInfo.Status.UNPAID.equalsVals(orderInfo.getStatus())) { throw new BadRequestException("订单状态异常"); } dto = new CreateOrderDTO(); @@ -2802,13 +2806,13 @@ public class TbShopTableServiceImpl implements TbShopTableService { .add(returnPackFee); // 移除使用的券 couponInfoDTO.getProductCoupon().forEach(item -> { - if (Objects.equals(item.getId(), outRecord.getGiveId())) { - item.setReturnNum(item.getReturnNum() + outRecord.getRefNum()); - } + if (Objects.equals(item.getId(), outRecord.getGiveId())) { + item.setReturnNum(item.getReturnNum() + outRecord.getRefNum()); + } }); // 使用了满减或积分,获取普通付款商品计算退款比例,退部分现金 - }else if (oldOrderInfo.getFullCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0 || oldOrderInfo.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0){ + } else if (oldOrderInfo.getFullCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0 || oldOrderInfo.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0) { hasNormalReturn = true; // 计算当前商品占比 BigDecimal ratio = calcDetailRatio(orderDetail, returnNum); @@ -2820,7 +2824,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP); - }else { + } else { hasNormalReturn = true; currentDetailAMount = orderDetail.getPriceAmount() .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) From 2ac2c6be4401d43badb2f0078b09ae93c3a3e2df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 11:47:12 +0800 Subject: [PATCH 42/71] =?UTF-8?q?fix:=20=E5=90=88=E5=B9=B6test=E9=80=80?= =?UTF-8?q?=E6=AC=BE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/dto/shoptable/UpdateCartDTO.java | 2 +- .../ysk/cashier/pojo/order/TbOrderDetail.java | 4 + .../productimpl/TbProductServiceImpl.java | 2 - .../impl/shopimpl/TbShopTableServiceImpl.java | 129 +++++++----------- 4 files changed, 58 insertions(+), 79 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateCartDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateCartDTO.java index 1606f85f..727fd87d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateCartDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateCartDTO.java @@ -24,5 +24,5 @@ public class UpdateCartDTO { private String note; private Boolean isPack; private Boolean isGift; - + private Boolean isPrint = true; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java index e86c1a45..ecc8a093 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java @@ -131,8 +131,12 @@ public class TbOrderDetail implements Serializable { private BigDecimal memberPrice; private Integer userCouponId; private Integer isMember; + private Integer isTemporary; + private Boolean isPrint; + private String useCouponInfo; public void copy(TbOrderDetail source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); } + } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java index 1fc5edbc..5c37e47b 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java @@ -537,7 +537,6 @@ public class TbProductServiceImpl implements TbProductService { } } product.setIsDel(0); - product.setIsDelete(0); product.setIsFreeFreight(1); product.setStatus(1); product.setUpdatedAt(Instant.now().toEpochMilli()); @@ -770,7 +769,6 @@ public class TbProductServiceImpl implements TbProductService { queryWrapper.eq("is_del", 0) .in("type_enum", "sku", "normal") .eq("shop_id", shopId) - .eq("is_delete", 0) .eq("status", 1) .eq("is_pause_sale", 0); 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 e7d41e52..ede1de6c 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 @@ -627,58 +627,59 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override public TbCashierCart addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO) { - temporaryDishesDTO.setTableId(OrderUseTypeEnum.TAKEOUT.getValue().equals(temporaryDishesDTO.getUseType()) ? null : temporaryDishesDTO.getTableId()); - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(temporaryDishesDTO.getShopId(), temporaryDishesDTO.getTableId(), temporaryDishesDTO.getUseType()); - - TbCashierCart tbCashierCart = mpCashierCartService.selectOneCartByShopEatType(shopEatTypeInfoDTO, temporaryDishesDTO.getMasterId(), null, null, false, true); - // 首次加入 - if (tbCashierCart == null) { - tbCashierCart = new TbCashierCart(); - tbCashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); - tbCashierCart.setCreatedAt(System.currentTimeMillis()); - tbCashierCart.setIsSku("0"); - if (StrUtil.isNotBlank(shopEatTypeInfoDTO.getTableId())) { - tbCashierCart.setTableId(shopEatTypeInfoDTO.getTableId()); - } - tbCashierCart.setName(temporaryDishesDTO.getName()); - tbCashierCart.setSalePrice(temporaryDishesDTO.getPrice()); - tbCashierCart.setMasterId(temporaryDishesDTO.getMasterId()); - tbCashierCart.setShopId(String.valueOf(temporaryDishesDTO.getShopId())); - tbCashierCart.setTradeDay(DateUtils.getDay()); - tbCashierCart.setStatus("create"); - tbCashierCart.setIsPack("false"); - tbCashierCart.setIsGift("false"); - tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); - tbCashierCart.setPackFee(BigDecimal.ZERO); - tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); - tbCashierCart.setNumber(temporaryDishesDTO.getNum()); - tbCashierCart.setCategoryId(String.valueOf(temporaryDishesDTO.getCategoryId())); - tbCashierCart.setNote(temporaryDishesDTO.getNote()); - tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); - tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && temporaryDishesDTO.getVipUserId() != null ? 1 : 0); - tbCashierCart.setIsTemporary(1); - tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); - cashierCartRepository.save(tbCashierCart); - - } else { - tbCashierCart.setIsMember(temporaryDishesDTO.getVipUserId() == null ? 0 : 1); - tbCashierCart.setNote(temporaryDishesDTO.getNote()); - tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); - tbCashierCart.setPackFee(BigDecimal.ZERO); - tbCashierCart.setIsPack("false"); - tbCashierCart.setIsGift("false"); - tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); - tbCashierCart.setNumber(temporaryDishesDTO.getNum()); - tbCashierCart.setUpdatedAt(DateUtil.current()); - tbCashierCart.setIsTemporary(1); - tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); - cashierCartMapper.updateById(tbCashierCart); - } - - if (StrUtil.isNotBlank(temporaryDishesDTO.getTableId())) { - setRedisTableCartInfo(temporaryDishesDTO.getTableId(), temporaryDishesDTO.getShopId().toString(), Collections.singletonList(tbCashierCart), true); - } - return tbCashierCart; +// temporaryDishesDTO.setTableId(OrderUseTypeEnum.TAKEOUT.getValue().equals(temporaryDishesDTO.getUseType()) ? null : temporaryDishesDTO.getTableId()); +// ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(temporaryDishesDTO.getShopId(), temporaryDishesDTO.getTableId(), temporaryDishesDTO.getUseType()); +// +// TbCashierCart tbCashierCart = mpCashierCartService.selectOneCartByShopEatType(shopEatTypeInfoDTO, temporaryDishesDTO.getMasterId(), null, null, false, true); +// // 首次加入 +// if (tbCashierCart == null) { +// tbCashierCart = new TbCashierCart(); +// tbCashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); +// tbCashierCart.setCreatedAt(System.currentTimeMillis()); +// tbCashierCart.setIsSku("0"); +// if (StrUtil.isNotBlank(shopEatTypeInfoDTO.getTableId())) { +// tbCashierCart.setTableId(shopEatTypeInfoDTO.getTableId()); +// } +// tbCashierCart.setName(temporaryDishesDTO.getName()); +// tbCashierCart.setSalePrice(temporaryDishesDTO.getPrice()); +// tbCashierCart.setMasterId(temporaryDishesDTO.getMasterId()); +// tbCashierCart.setShopId(String.valueOf(temporaryDishesDTO.getShopId())); +// tbCashierCart.setTradeDay(DateUtils.getDay()); +// tbCashierCart.setStatus("create"); +// tbCashierCart.setIsPack("false"); +// tbCashierCart.setIsGift("false"); +// tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); +// tbCashierCart.setPackFee(BigDecimal.ZERO); +// tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); +// tbCashierCart.setNumber(temporaryDishesDTO.getNum()); +// tbCashierCart.setCategoryId(String.valueOf(temporaryDishesDTO.getCategoryId())); +// tbCashierCart.setNote(temporaryDishesDTO.getNote()); +// tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); +// tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && temporaryDishesDTO.getVipUserId() != null ? 1 : 0); +// tbCashierCart.setIsTemporary(1); +// tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); +// cashierCartRepository.save(tbCashierCart); +// +// } else { +// tbCashierCart.setIsMember(temporaryDishesDTO.getVipUserId() == null ? 0 : 1); +// tbCashierCart.setNote(temporaryDishesDTO.getNote()); +// tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); +// tbCashierCart.setPackFee(BigDecimal.ZERO); +// tbCashierCart.setIsPack("false"); +// tbCashierCart.setIsGift("false"); +// tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); +// tbCashierCart.setNumber(temporaryDishesDTO.getNum()); +// tbCashierCart.setUpdatedAt(DateUtil.current()); +// tbCashierCart.setIsTemporary(1); +// tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); +// cashierCartMapper.updateById(tbCashierCart); +// } +// +// if (StrUtil.isNotBlank(temporaryDishesDTO.getTableId())) { +// setRedisTableCartInfo(temporaryDishesDTO.getTableId(), temporaryDishesDTO.getShopId().toString(), Collections.singletonList(tbCashierCart), true); +// } +// return tbCashierCart; + return null; } private void setRedisTableCartInfo(String tableId, String shopId, List tbCashierCartList, boolean isAdd) { @@ -1639,7 +1640,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setIsMember(cashierCart.getIsMember()); orderDetail.setIsPrint(cashierCart.getIsPrint()); orderDetail.setUseCouponInfo(cashierCart.getUseCouponInfo()); - priceDTO.getOrderDetailList().add(orderDetail); } return priceDTO; @@ -3062,30 +3062,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { } - @Override - public TbCashierCart updatePrice(UpdatePriceDTO updatePriceDTO) { - TbCashierCart cashierCart = mpCashierCartService.selectByShopIdAndId(updatePriceDTO.getShopId(), updatePriceDTO.getCartId(), TableConstant.OrderInfo.Status.CREATE); - if (cashierCart == null) { - throw new BadRequestException("购物车商品不存在"); - } - if (updatePriceDTO.getSaleAmount().compareTo(cashierCart.getDiscountSaleAmount()) == 0) { - return cashierCart; - } - BigDecimal newTotalPrice = updatePriceDTO.getSaleAmount().multiply(cashierCart.getTotalNumber()).add(cashierCart.getPackFee()); - BigDecimal oldAmount = cashierCart.getTotalAmount(); - cashierCart.setTotalAmount(newTotalPrice); - cashierCart.setUpdatedAt(DateUtil.current()); - cashierCart.setDiscountSaleNote(updatePriceDTO.getNote()); - cashierCart.setDiscountSaleAmount(updatePriceDTO.getSaleAmount()); - mpCashierCartService.updateById(cashierCart); - // 更新订单和detail价格 - if (cashierCart.getOrderId() != null) { - mpOrderDetailService.updatePriceByCartId(cashierCart.getId(), updatePriceDTO.getSaleAmount(), newTotalPrice); - mpOrderInfoService.incrAmount(cashierCart.getOrderId(), newTotalPrice.subtract(oldAmount)); - } - return cashierCart; - } } From 59dc94e5f06f8c44478030f70c0e6c4adf4cabfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 11:48:24 +0800 Subject: [PATCH 43/71] =?UTF-8?q?fix:=20dev=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eladmin-system/src/main/resources/config/application-dev.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index 81fa474f..8dae6283 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -1,10 +1,12 @@ +#PRE_DATABASE: fycashier_pre +#REDIS_HOST: 121.40.109.122 #配置数据源 spring: datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource # driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:p6spy:mysql://rm-bp1kn7h89nz62cno1ro.mysql.rds.aliyuncs.com:3306/fycashier_test?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true + url: jdbc:p6spy:mysql://rm-bp1kn7h89nz62cno1ro.mysql.rds.aliyuncs.com:3306/${PRE_DATABASE:fycashier_test}?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true # url: jdbc:mysql://127.0.0.1:3306/fycashier?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true # url: jdbc:p6spy:mysql://rm-bp1kn7h89nz62cno1ro.mysql.rds.aliyuncs.com:3306/fycashier_pre?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true username: cashier From d6ac222792b0d65d7a75d543dbbcd7bdb6157e16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 14:22:54 +0800 Subject: [PATCH 44/71] =?UTF-8?q?fix:=20=E9=80=80=E6=AC=BE=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=AE=9E=E9=99=85=E9=80=80=E6=AC=BE=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java | 1 + .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 1 + 2 files changed, 2 insertions(+) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java index ecc8a093..0cca2012 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java @@ -134,6 +134,7 @@ public class TbOrderDetail implements Serializable { private Integer isTemporary; private Boolean isPrint; private String useCouponInfo; + private BigDecimal returnAmount; public void copy(TbOrderDetail source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); 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 ede1de6c..424806ed 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 @@ -2841,6 +2841,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setPackAmount(returnPackFee); orderDetail.setRefundNumber(returnNum); orderDetail.setReturnNum(returnNum.toPlainString()); + orderDetail.setReturnAmount(returnAmount); // orderDetail.setStatus(isOnline ? "refunding" : "refund"); orderDetail.setStatus("refund"); } From 560281db00f4e5f7182f42e7ca28158688f83377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 15:02:13 +0800 Subject: [PATCH 45/71] =?UTF-8?q?fix:=20=E6=AF=94=E4=BE=8B=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=A0=B9=E6=8D=AE=E5=8F=AF=E9=80=80=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 424806ed..f0456786 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 @@ -2818,7 +2818,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { BigDecimal ratio = calcDetailRatio(orderDetail, returnNum); currentDetailAMount = orderDetail.getPriceAmount().divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) .multiply(returnNum).setScale(2, RoundingMode.HALF_UP); - returnAmount = returnAmount.add(oldOrderInfo.getPayAmount().multiply(ratio)); + if (oldOrderInfo.getRefundAmount() == null) { + oldOrderInfo.setRefundAmount(BigDecimal.ZERO); + } + returnAmount = returnAmount.add(oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()).multiply(ratio)); saleAmount = saleAmount.add(orderDetail.getPrice()); packAMount = packAMount.add(orderDetail.getPackAmount() .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) @@ -2894,7 +2897,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { } private BigDecimal calcDetailRatio(TbOrderDetail orderDetail, BigDecimal returnNum) { - List detailList = mpOrderDetailService.selectByOrderIdAndState(orderDetail.getOrderId(), TableConstant.OrderInfo.Status.CLOSED, TableConstant.OrderInfo.Status.REFUND); + List detailList = mpOrderDetailService.selectByOrderIdAndState(orderDetail.getOrderId(), TableConstant.OrderInfo.Status.CLOSED); BigDecimal totalAmount = BigDecimal.ZERO; for (TbOrderDetail item : detailList) { if (item.getUserCouponId() == null) { From 389e852f2768466f5a760a30e677ff5ac82aabd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 15:17:16 +0800 Subject: [PATCH 46/71] =?UTF-8?q?fix:=20=E6=AF=94=E4=BE=8B=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=A0=B9=E6=8D=AE=E5=8F=AF=E9=80=80=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 f0456786..0ed526f4 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 @@ -2817,7 +2817,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 计算当前商品占比 BigDecimal ratio = calcDetailRatio(orderDetail, returnNum); currentDetailAMount = orderDetail.getPriceAmount().divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) - .multiply(returnNum).setScale(2, RoundingMode.HALF_UP); + .multiply(returnNum).setScale(2, RoundingMode.DOWN); if (oldOrderInfo.getRefundAmount() == null) { oldOrderInfo.setRefundAmount(BigDecimal.ZERO); } @@ -2905,8 +2905,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { } } - return orderDetail.getPriceAmount().divide(totalAmount, 8, RoundingMode.HALF_UP) - .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP).multiply(returnNum).setScale(2, RoundingMode.HALF_UP); + return orderDetail.getPriceAmount().divide(totalAmount, 10, RoundingMode.DOWN) + .divide(orderDetail.getNum(), 10, RoundingMode.DOWN).multiply(returnNum).setScale(2, RoundingMode.DOWN); } private void updateStockAndRecord(List orderDetailList) { From 77c895dbb212452e51aa677e0b6140b2174ce7db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 15:26:06 +0800 Subject: [PATCH 47/71] =?UTF-8?q?fix:=20=E6=AF=94=E4=BE=8B=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=A0=B9=E6=8D=AE=E5=8F=AF=E9=80=80=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 0ed526f4..83a25ec2 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 @@ -2821,7 +2821,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { if (oldOrderInfo.getRefundAmount() == null) { oldOrderInfo.setRefundAmount(BigDecimal.ZERO); } - returnAmount = returnAmount.add(oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()).multiply(ratio)); + + if (ratio.compareTo(BigDecimal.ONE) == 0) { + returnAmount = oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()); + }else { + returnAmount = returnAmount.add(oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()).multiply(ratio)); + } saleAmount = saleAmount.add(orderDetail.getPrice()); packAMount = packAMount.add(orderDetail.getPackAmount() .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) @@ -2838,6 +2843,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP); } + returnAmount = returnAmount.setScale(2, RoundingMode.DOWN); orderDetail.setNum(returnNum); orderDetail.setPriceAmount(currentDetailAMount); @@ -2904,6 +2910,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { totalAmount = totalAmount.add(item.getPriceAmount()); } } + if (orderDetail.getPriceAmount().compareTo(totalAmount) == 0) { + return BigDecimal.ONE; + } return orderDetail.getPriceAmount().divide(totalAmount, 10, RoundingMode.DOWN) .divide(orderDetail.getNum(), 10, RoundingMode.DOWN).multiply(returnNum).setScale(2, RoundingMode.DOWN); From 0c411b10727d0303e063641e53b8d216f1f87d36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 15:42:21 +0800 Subject: [PATCH 48/71] =?UTF-8?q?fix:=20=E6=AF=94=E4=BE=8B=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=A0=B9=E6=8D=AE=E5=8F=AF=E9=80=80=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/shopimpl/TbShopTableServiceImpl.java | 46 +++++++++++-------- 1 file changed, 26 insertions(+), 20 deletions(-) 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 83a25ec2..d2a5a290 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 @@ -2771,6 +2771,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { ArrayList remainOrderDetailList = new ArrayList<>(); boolean hasNormalReturn = false; for (TbOrderDetail orderDetail : detailList) { + // 原始金额 + BigDecimal originalAmount = orderDetail.getPriceAmount(); + BigDecimal originalPackAmount = orderDetail.getPackAmount(); // 退款数量 BigDecimal returnNum = returnNumMap.get(orderDetail.getId().toString()); // 剩余数量 @@ -2781,19 +2784,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 将未退款的剩余订单详情重新生成记录 BigDecimal packFee = orderDetail.getPackAmount().divide(orderDetail.getNum(), RoundingMode.HALF_UP); - if (remainNum.compareTo(BigDecimal.ZERO) > 0) { - // 单个打包费 - BigDecimal remainPackFee = packFee.multiply(remainNum); - TbOrderDetail remainOrderDetail = BeanUtil.copyProperties(orderDetail, TbOrderDetail.class); - remainOrderDetail.setNum(remainNum); - remainOrderDetail.setPriceAmount(remainNum.multiply(orderDetail.getPriceAmount().divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)) - .add(remainPackFee).setScale(2, RoundingMode.HALF_UP)); - remainOrderDetail.setPackAmount(remainPackFee); - remainOrderDetail.setReturnNum("0"); - remainOrderDetail.setId(null); - remainOrderDetailList.add(remainOrderDetail); - } - BigDecimal returnPackFee = packFee.multiply(returnNum); BigDecimal currentDetailAMount = BigDecimal.ZERO; // 优惠券抵扣商品直接退券 @@ -2834,17 +2824,33 @@ public class TbShopTableServiceImpl implements TbShopTableService { } else { hasNormalReturn = true; - currentDetailAMount = orderDetail.getPriceAmount() - .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) - .multiply(returnNum).setScale(2, RoundingMode.HALF_UP); - returnAmount = returnAmount.add(currentDetailAMount); saleAmount = saleAmount.add(orderDetail.getPrice()); - packAMount = packAMount.add(orderDetail.getPackAmount() - .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) - .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP); + if (remainNum.compareTo(BigDecimal.ZERO) > 0) { + returnAmount = orderDetail.getPriceAmount(); + packAMount = orderDetail.getPackAmount(); + }else { + currentDetailAMount = orderDetail.getPriceAmount() + .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) + .multiply(returnNum).setScale(2, RoundingMode.HALF_UP); + returnAmount = returnAmount.add(currentDetailAMount); + packAMount = packAMount.add(orderDetail.getPackAmount() + .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) + .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP); + } } returnAmount = returnAmount.setScale(2, RoundingMode.DOWN); + if (remainNum.compareTo(BigDecimal.ZERO) > 0) { + // 单个打包费 + TbOrderDetail remainOrderDetail = BeanUtil.copyProperties(orderDetail, TbOrderDetail.class); + remainOrderDetail.setNum(remainNum); + remainOrderDetail.setPriceAmount(originalAmount.subtract(returnAmount)); + remainOrderDetail.setPackAmount(originalPackAmount.subtract(returnPackFee)); + remainOrderDetail.setReturnNum("0"); + remainOrderDetail.setId(null); + remainOrderDetailList.add(remainOrderDetail); + } + orderDetail.setNum(returnNum); orderDetail.setPriceAmount(currentDetailAMount); orderDetail.setPackAmount(returnPackFee); From 76fcad63f02906a691d4d65e2e7e6d307240522d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 15:42:38 +0800 Subject: [PATCH 49/71] =?UTF-8?q?fix:=20=E6=AF=94=E4=BE=8B=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=A0=B9=E6=8D=AE=E5=8F=AF=E9=80=80=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 d2a5a290..4ad2a7c5 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 @@ -2825,7 +2825,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { } else { hasNormalReturn = true; saleAmount = saleAmount.add(orderDetail.getPrice()); - if (remainNum.compareTo(BigDecimal.ZERO) > 0) { + if (remainNum.compareTo(BigDecimal.ZERO) <= 0) { returnAmount = orderDetail.getPriceAmount(); packAMount = orderDetail.getPackAmount(); }else { From 3277124fa51157eb8be971c8b4bf2162a6c4381d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 16:29:44 +0800 Subject: [PATCH 50/71] =?UTF-8?q?fix:=20=E6=AF=94=E4=BE=8B=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=A0=B9=E6=8D=AE=E5=8F=AF=E9=80=80=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 4ad2a7c5..af5a37d2 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 @@ -2118,7 +2118,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { returnCoupon(orderInfo, true); // 设置折扣比例 - orderInfo.setDiscountRatio(payDTO.getDiscount()); + orderInfo.setDiscountRatio(payDTO.getDiscount().setScale(4, RoundingMode.DOWN)); Set productIdSet = new HashSet<>(); List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); From b1c0e7304912a6782271f5c508d314e0181e503c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 17:20:42 +0800 Subject: [PATCH 51/71] =?UTF-8?q?fix:=20=E6=AF=94=E4=BE=8B=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=A0=B9=E6=8D=AE=E5=8F=AF=E9=80=80=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 af5a37d2..27a8ceaf 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 @@ -2190,7 +2190,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { private BigDecimal resetAmountByDiscount(PayDTO payDTO, TbOrderInfo orderInfo) { List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); List detailList = mpOrderDetailService.selectByOrderId(orderInfo.getId()); - BigDecimal discount = payDTO.getDiscount(); + BigDecimal discount = payDTO.getDiscount().setScale(4, RoundingMode.DOWN); BigDecimal totalAmount = BigDecimal.ZERO; for (TbCashierCart cashierCart : cashierCarts) { if (cashierCart.getUserCouponId() == null) { From d50d511c71648f03723c3b9efade3e5ad19ae096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 22 Nov 2024 17:21:12 +0800 Subject: [PATCH 52/71] =?UTF-8?q?fix:=20=E6=AF=94=E4=BE=8B=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=A0=B9=E6=8D=AE=E5=8F=AF=E9=80=80=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 35e4c816..eff0d41e 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 @@ -214,9 +214,10 @@ public class TbCashierCart implements Serializable { totalAmount = packFee; } else { if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { - totalAmount = totalNumber.multiply(memberPrice).add(packFee).multiply(discountRadio); + totalAmount = totalNumber.multiply(memberPrice).add(packFee).multiply(discountRadio).setScale(2, RoundingMode.HALF_UP); } else { - totalAmount = totalNumber.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee).multiply(discountRadio); + totalAmount = totalNumber.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice) + .add(packFee).multiply(discountRadio).setScale(2, RoundingMode.HALF_UP); } } } From 81756dfad5b87bc2114167ecad0ec52f53dd9319 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 23 Nov 2024 09:11:07 +0800 Subject: [PATCH 53/71] =?UTF-8?q?fix:=20=E6=AF=94=E4=BE=8B=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=A0=B9=E6=8D=AE=E5=8F=AF=E9=80=80=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/shopimpl/TbShopTableServiceImpl.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 27a8ceaf..cae67d2d 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 @@ -2118,7 +2118,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { returnCoupon(orderInfo, true); // 设置折扣比例 - orderInfo.setDiscountRatio(payDTO.getDiscount().setScale(4, RoundingMode.DOWN)); + orderInfo.setDiscountRatio(payDTO.getDiscount().setScale(4, RoundingMode.HALF_DOWN)); Set productIdSet = new HashSet<>(); List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); @@ -2190,7 +2190,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { private BigDecimal resetAmountByDiscount(PayDTO payDTO, TbOrderInfo orderInfo) { List cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId()); List detailList = mpOrderDetailService.selectByOrderId(orderInfo.getId()); - BigDecimal discount = payDTO.getDiscount().setScale(4, RoundingMode.DOWN); + BigDecimal discount = payDTO.getDiscount().setScale(4, RoundingMode.HALF_DOWN); BigDecimal totalAmount = BigDecimal.ZERO; for (TbCashierCart cashierCart : cashierCarts) { if (cashierCart.getUserCouponId() == null) { @@ -2807,7 +2807,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 计算当前商品占比 BigDecimal ratio = calcDetailRatio(orderDetail, returnNum); currentDetailAMount = orderDetail.getPriceAmount().divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) - .multiply(returnNum).setScale(2, RoundingMode.DOWN); + .multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN); if (oldOrderInfo.getRefundAmount() == null) { oldOrderInfo.setRefundAmount(BigDecimal.ZERO); } @@ -2838,7 +2838,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP); } } - returnAmount = returnAmount.setScale(2, RoundingMode.DOWN); + returnAmount = returnAmount.setScale(2, RoundingMode.HALF_DOWN); if (remainNum.compareTo(BigDecimal.ZERO) > 0) { // 单个打包费 @@ -2920,8 +2920,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { return BigDecimal.ONE; } - return orderDetail.getPriceAmount().divide(totalAmount, 10, RoundingMode.DOWN) - .divide(orderDetail.getNum(), 10, RoundingMode.DOWN).multiply(returnNum).setScale(2, RoundingMode.DOWN); + return orderDetail.getPriceAmount().divide(totalAmount, 10, RoundingMode.HALF_DOWN) + .divide(orderDetail.getNum(), 10, RoundingMode.HALF_DOWN).multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN); } private void updateStockAndRecord(List orderDetailList) { From f05cb6e841667fd76f3f03c7dc7a357bf1890f66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 23 Nov 2024 09:31:22 +0800 Subject: [PATCH 54/71] =?UTF-8?q?fix:=20=E6=94=AF=E6=8C=81=E9=9B=B6?= =?UTF-8?q?=E5=85=83=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 cae67d2d..e0adfef5 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 @@ -2861,7 +2861,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setStatus("refund"); } - if (hasNormalReturn && returnAmount.compareTo(new BigDecimal("0.01")) <= 0) { + if (returnAmount.compareTo(BigDecimal.ZERO) < 0) { + throw new BadRequestException("退款金额为负数有误"); + } + + if (hasNormalReturn && returnAmount.compareTo(new BigDecimal("0.01")) <= 0 && oldOrderInfo.getPayAmount().compareTo(BigDecimal.ZERO) != 0) { throw new BadRequestException("退款金额必须大于0"); } From 4fbbcd9acdba37fd0fa7d17c489ffdfcac80035d Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Sat, 23 Nov 2024 09:41:17 +0800 Subject: [PATCH 55/71] =?UTF-8?q?=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/shopimpl/TbShopInfoServiceImpl.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopInfoServiceImpl.java index d7277038..8eba3b62 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopInfoServiceImpl.java @@ -11,6 +11,7 @@ import cn.ysk.cashier.exception.BadRequestException; import cn.ysk.cashier.exception.EntityNotFoundException; import cn.ysk.cashier.mapper.shop.TbShopInfoMapper; import cn.ysk.cashier.mybatis.mapper.MpShopInfoMapper; +import cn.ysk.cashier.pojo.product.TbProductGroup; import cn.ysk.cashier.pojo.shop.TbMerchantAccount; import cn.ysk.cashier.pojo.shop.TbMerchantRegister; import cn.ysk.cashier.pojo.shop.TbPlussShopStaff; @@ -18,6 +19,7 @@ import cn.ysk.cashier.pojo.shop.TbShopInfo; import cn.ysk.cashier.repository.TbShopPayTypeRepository; import cn.ysk.cashier.repository.shop.*; import cn.ysk.cashier.service.WxService; +import cn.ysk.cashier.service.product.TbProductGroupService; import cn.ysk.cashier.service.shop.TbShopInfoService; import cn.ysk.cashier.system.domain.Dept; import cn.ysk.cashier.system.domain.Job; @@ -66,7 +68,7 @@ public class TbShopInfoServiceImpl implements TbShopInfoService { private TbShopInfoMapper tbShopInfoMapper; private final TbMerchantAccountRepository merchantAccountRepository; - + private final TbProductGroupService tbProductGroupService; private final UserRepository userRepository; private final UserService userService; @@ -229,8 +231,14 @@ public class TbShopInfoServiceImpl implements TbShopInfoService { if (integer<4){ throw new BadRequestException("请重试"); } - - return tbShopInfoMapper.toDto(new TbShopInfo()); + TbProductGroup tbProductGroup = new TbProductGroup(); + tbProductGroup.setName("热销"); + tbProductGroup.setShopId(save.getId()); + tbProductGroup.setProductIds("[]"); + tbProductGroup.setSortMode("0"); + tbProductGroup.setUseTime(0); + tbProductGroupService.create(tbProductGroup); + return tbShopInfoMapper.toDto(save); } @Override From 20263a41fff31423d2ad3965d7439caa828dd86c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 23 Nov 2024 11:08:20 +0800 Subject: [PATCH 56/71] =?UTF-8?q?fix:=20=E4=BC=9A=E5=91=98=E4=BB=B7?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 e0adfef5..fa4c647f 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 @@ -1496,9 +1496,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { ArrayList cartIdList = new ArrayList<>(); // 订单总价 for (TbCashierCart tbCashierCart : cartInfoDTO.getCashierCarts()) { - if (shopUser != null) { - tbCashierCart.setIsMember(!shopEatTypeInfoDTO.isMemberPrice() ? 0 : shopUser.getIsVip() == 1 ? 0 : 1); - } + tbCashierCart.setIsMember(!shopEatTypeInfoDTO.isMemberPrice() ? 0 : shopUser == null ? 0 : 1); tbCashierCart.resetTotalAmount(); if (tbCashierCart.getOrderId() != null) { From d555f66d3a79f1684b376a0246e7067edd13895a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 23 Nov 2024 16:53:31 +0800 Subject: [PATCH 57/71] =?UTF-8?q?fix:=20=E9=80=80=E6=AC=BE=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=8F=AF=E9=80=80=E6=AC=BE=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ysk/cashier/pojo/order/TbOrderDetail.java | 1 + .../impl/shopimpl/TbShopTableServiceImpl.java | 43 ++++++++++++++++--- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java index 0cca2012..0809f1c3 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java @@ -135,6 +135,7 @@ public class TbOrderDetail implements Serializable { private Boolean isPrint; private String useCouponInfo; private BigDecimal returnAmount; + private BigDecimal canReturnAmount; public void copy(TbOrderDetail source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); 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 fa4c647f..51bb0e82 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 @@ -2111,6 +2111,28 @@ public class TbShopTableServiceImpl implements TbShopTableService { return productDiscount; } + private void updateOrderDetailCanReturn(List orderDetailList, TbOrderInfo orderInfo) { + orderDetailList = orderDetailList.stream().filter(item -> TableConstant.OrderInfo.Status.UNPAID.equalsVals(item.getStatus())).collect(Collectors.toList()); + BigDecimal totalAmount = BigDecimal.ZERO; + BigDecimal lastAmount = BigDecimal.ZERO; + BigDecimal lastReturnAmount = BigDecimal.ZERO; + BigDecimal orderAmount = orderInfo.getOrderAmount(); + for (TbOrderDetail orderDetail : orderDetailList) { + totalAmount = totalAmount.add(orderDetail.getPriceAmount()); + } + for (TbOrderDetail item : orderDetailList) { + if (StrUtil.isNotBlank(orderInfo.getCouponInfoList()) || orderInfo.getPointsNum() != null) { + BigDecimal canReturnAmount = item.getPriceAmount().divide(totalAmount.subtract(lastAmount), 10, RoundingMode.HALF_DOWN) + .multiply(orderAmount.subtract(lastReturnAmount)).setScale(2, RoundingMode.HALF_DOWN); + lastReturnAmount = canReturnAmount; + lastAmount = item.getPriceAmount(); + item.setCanReturnAmount(canReturnAmount); + }else { + item.setCanReturnAmount(item.getPriceAmount()); + } + } + } + private BigDecimal calcDiscountAndUpdateInfo(PayDTO payDTO, TbOrderInfo orderInfo) { // 返还上次使用的券 returnCoupon(orderInfo, true); @@ -2178,6 +2200,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { // orderInfo.setCouponInfoList(JSONObject.toJSONString(couponInfo)); // 修改订单detail + updateOrderDetailCanReturn(priceDTO.getOrderDetailList(), orderInfo); mpOrderDetailService.saveOrUpdateBatch(priceDTO.getOrderDetailList()); return orderInfo.getOrderAmount(); } @@ -2803,6 +2826,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { } else if (oldOrderInfo.getFullCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0 || oldOrderInfo.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0) { hasNormalReturn = true; // 计算当前商品占比 + returnAmount = calcDetailReturnAmount(orderDetail, returnNum); BigDecimal ratio = calcDetailRatio(orderDetail, returnNum); currentDetailAMount = orderDetail.getPriceAmount().divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) .multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN); @@ -2810,11 +2834,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { oldOrderInfo.setRefundAmount(BigDecimal.ZERO); } - if (ratio.compareTo(BigDecimal.ONE) == 0) { - returnAmount = oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()); - }else { - returnAmount = returnAmount.add(oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()).multiply(ratio)); - } +// if (ratio.compareTo(BigDecimal.ONE) == 0) { +// returnAmount = oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()); +// }else { +// returnAmount = returnAmount.add(oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()).multiply(ratio)); +// } saleAmount = saleAmount.add(orderDetail.getPrice()); packAMount = packAMount.add(orderDetail.getPackAmount() .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) @@ -2846,7 +2870,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { remainOrderDetail.setPackAmount(originalPackAmount.subtract(returnPackFee)); remainOrderDetail.setReturnNum("0"); remainOrderDetail.setId(null); + remainOrderDetail.setCanReturnAmount(remainOrderDetail.getCanReturnAmount().subtract(returnAmount)); remainOrderDetailList.add(remainOrderDetail); + orderDetail.setCanReturnAmount(returnAmount); } orderDetail.setNum(returnNum); @@ -2926,6 +2952,13 @@ public class TbShopTableServiceImpl implements TbShopTableService { .divide(orderDetail.getNum(), 10, RoundingMode.HALF_DOWN).multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN); } + private BigDecimal calcDetailReturnAmount(TbOrderDetail orderDetail, BigDecimal returnNum) { + if (orderDetail.getNum().compareTo(returnNum) == 0) { + return orderDetail.getCanReturnAmount(); + } + return orderDetail.getCanReturnAmount().divide(orderDetail.getNum(), 10, RoundingMode.HALF_DOWN).multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN); + } + private void updateStockAndRecord(List orderDetailList) { // 更新商品库存 for (TbOrderDetail detail : orderDetailList) { From b60f4045bc9889eb9f7ffba4fbd84f62aeb2b91e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 23 Nov 2024 14:28:14 +0800 Subject: [PATCH 58/71] =?UTF-8?q?fix:=20=E9=80=80=E6=AC=BE=E6=AF=94?= =?UTF-8?q?=E4=BE=8B=E4=BF=AE=E6=94=B9=EF=BC=8C=E8=BF=94=E8=BF=98=E7=A7=AF?= =?UTF-8?q?=E5=88=86=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/shopimpl/TbShopTableServiceImpl.java | 58 ++++++++++++------- 1 file changed, 36 insertions(+), 22 deletions(-) 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 51bb0e82..5dfa742e 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 @@ -2889,7 +2889,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { throw new BadRequestException("退款金额为负数有误"); } - if (hasNormalReturn && returnAmount.compareTo(new BigDecimal("0.01")) <= 0 && oldOrderInfo.getPayAmount().compareTo(BigDecimal.ZERO) != 0) { + if (hasNormalReturn && returnAmount.compareTo(new BigDecimal("0")) <= 0 && oldOrderInfo.getPayAmount().compareTo(BigDecimal.ZERO) != 0) { throw new BadRequestException("退款金额必须大于0"); } @@ -2944,12 +2944,17 @@ public class TbShopTableServiceImpl implements TbShopTableService { totalAmount = totalAmount.add(item.getPriceAmount()); } } - if (orderDetail.getPriceAmount().compareTo(totalAmount) == 0) { + if (orderDetail.getPriceAmount().compareTo(totalAmount) == 0 && orderDetail.getNum().compareTo(BigDecimal.ONE) == 0) { return BigDecimal.ONE; } + if (orderDetail.getNum().compareTo(returnNum) == 0) { + return orderDetail.getPriceAmount().divide(totalAmount, 2, RoundingMode.HALF_DOWN); + } + return orderDetail.getPriceAmount().divide(totalAmount, 10, RoundingMode.HALF_DOWN) - .divide(orderDetail.getNum(), 10, RoundingMode.HALF_DOWN).multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN); + .divide(orderDetail.getNum(), 10, RoundingMode.HALF_DOWN) + .multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN); } private BigDecimal calcDetailReturnAmount(TbOrderDetail orderDetail, BigDecimal returnNum) { @@ -3042,26 +3047,35 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 订单金额全退,退优惠券以及积分 if (orderInfo.getPayAmount().compareTo(orderInfo.getRefundAmount()) <= 0) { - String couponInfoList = orderInfo.getCouponInfoList(); - if (StrUtil.isNotBlank(couponInfoList)) { - OrderInfoCouponInfoDTO orderInfoCouponInfoDTO = JSONObject.parseObject(couponInfoList, OrderInfoCouponInfoDTO.class); - if (orderInfoCouponInfoDTO.getProductCoupon() != null && !orderInfoCouponInfoDTO.getProductCoupon().isEmpty()) { - int remainNum = 0; - for (OrderInfoUserCouponVo item : orderInfoCouponInfoDTO.getProductCoupon()) { - if (item.getFinalUseNum() > item.getReturnNum()) { - remainNum = remainNum + (item.getFinalUseNum() - item.getReturnNum()); - } - } - - if (remainNum == 0) { - returnCoupon(orderInfo, true); - // 返还积分 - memberPointsService.addPoints(Long.valueOf(orderInfo.getMemberId()), orderInfo.getPointsNum(), - "用户退款订单积分返还: " + orderInfo.getPointsNum() + "积分", Long.valueOf(orderInfo.getId())); - - } - } + long count = mpOrderDetailService.count(new LambdaQueryWrapper() + .eq(TbOrderDetail::getOrderId, orderInfo.getId()) + .eq(TbOrderDetail::getStatus, TableConstant.OrderInfo.Status.CLOSED)); + if (count == 0) { + returnCoupon(orderInfo, true); + // 返还积分 + memberPointsService.addPoints(Long.valueOf(orderInfo.getMemberId()), orderInfo.getPointsNum(), + "用户退款订单积分返还: " + orderInfo.getPointsNum() + "积分", Long.valueOf(orderInfo.getId())); } +// String couponInfoList = orderInfo.getCouponInfoList(); +// if (StrUtil.isNotBlank(couponInfoList)) { +// OrderInfoCouponInfoDTO orderInfoCouponInfoDTO = JSONObject.parseObject(couponInfoList, OrderInfoCouponInfoDTO.class); +// if (orderInfoCouponInfoDTO.getProductCoupon() != null && !orderInfoCouponInfoDTO.getProductCoupon().isEmpty()) { +// int remainNum = 0; +// for (OrderInfoUserCouponVo item : orderInfoCouponInfoDTO.getProductCoupon()) { +// if (item.getFinalUseNum() > item.getReturnNum()) { +// remainNum = remainNum + (item.getFinalUseNum() - item.getReturnNum()); +// } +// } +// +// if (remainNum == 0) { +// returnCoupon(orderInfo, true); +// // 返还积分 +// memberPointsService.addPoints(Long.valueOf(orderInfo.getMemberId()), orderInfo.getPointsNum(), +// "用户退款订单积分返还: " + orderInfo.getPointsNum() + "积分", Long.valueOf(orderInfo.getId())); +// +// } +// } +// } } orderInfoMapper.updateById(orderInfo); // 打印退款小票 From e1e1af9c3be06284c8a916a94e21de01ab5e5ab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 23 Nov 2024 17:31:15 +0800 Subject: [PATCH 59/71] =?UTF-8?q?fix:=200.01=E9=80=80=E6=AC=BE=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) 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 5dfa742e..bfd12f27 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 @@ -2961,6 +2961,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { if (orderDetail.getNum().compareTo(returnNum) == 0) { return orderDetail.getCanReturnAmount(); } + if (returnNum.compareTo(BigDecimal.ONE) == 0 && + orderDetail.getNum().compareTo(BigDecimal.ONE) > 0 && + orderDetail.getCanReturnAmount().compareTo(new BigDecimal("0.01")) <= 0) { + throw new BadRequestException(orderDetail.getProductName() + "总金额为0.01,请选择全部商品数量退回"); + } return orderDetail.getCanReturnAmount().divide(orderDetail.getNum(), 10, RoundingMode.HALF_DOWN).multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN); } From a38fbfd5643598f2b7b533ccc757115ca122847b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 25 Nov 2024 10:03:35 +0800 Subject: [PATCH 60/71] =?UTF-8?q?fix:=20=E5=82=A8=E5=80=BC=E5=8D=A1?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E6=98=8E=E7=BB=86=E8=AE=B0=E5=BD=95=E4=B8=8D?= =?UTF-8?q?=E5=87=86=E7=A1=AE=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java index 6c85d3fe..7761b326 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java @@ -637,7 +637,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { flow.setBizName("会员储值卡退款"); flow.setType("+"); flow.setAmount(returnAmount); - flow.setBalance(user.getAmount()); + flow.setBalance(user.getAmount().add(returnAmount)); flow.setCreateTime(cn.hutool.core.date.DateUtil.date().toTimestamp()); flow.setIsReturn("0"); tbShopUserFlowMapper.insert(flow); From 9d0b0a4c25b10208f691cebe04bb1faf0671257a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Mon, 25 Nov 2024 16:56:12 +0800 Subject: [PATCH 61/71] =?UTF-8?q?fix=E9=85=8D=E7=BD=AEpad=E7=AB=AF?= =?UTF-8?q?=E8=8F=9C=E5=93=81bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TbPadProductCategoryServiceImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbPadProductCategoryServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbPadProductCategoryServiceImpl.java index 85aa89cd..b8277c10 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbPadProductCategoryServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbPadProductCategoryServiceImpl.java @@ -211,7 +211,8 @@ public class TbPadProductCategoryServiceImpl extends ServiceImpl productIdSet = productIdList.stream().collect(Collectors.toSet()); + for (Long productId : productIdSet) { TbPadProductCategoryDetail subEntity = new TbPadProductCategoryDetail(); subEntity.setProductId(productId); subEntity.setPadProductCategoryId(entity.getId()); @@ -269,8 +270,9 @@ public class TbPadProductCategoryServiceImpl extends ServiceImpllambdaQuery().eq(TbPadProductCategoryDetail::getPadProductCategoryId, entity.getId())); + tbPadProductCategoryDetailMapper.delete(Wrappers.lambdaQuery().eq(TbPadProductCategoryDetail::getPadProductCategoryId, entity.getId())); + Set productIdSet = productIdList.stream().collect(Collectors.toSet()); + for (Long productId : productIdSet) { TbPadProductCategoryDetail subEntity = new TbPadProductCategoryDetail(); subEntity.setProductId(productId); subEntity.setPadProductCategoryId(entity.getId()); From c963a8356774e8307a455f1bb0cc28c3b6921dcd Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Mon, 25 Nov 2024 17:16:28 +0800 Subject: [PATCH 62/71] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=8F=8F=E8=BF=B0=20=E8=BF=94=E5=9B=9E=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E5=8C=96=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/mybatis/service/impl/TbShopCouponServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopCouponServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopCouponServiceImpl.java index 5d2d448c..904706e5 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopCouponServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbShopCouponServiceImpl.java @@ -196,7 +196,7 @@ public class TbShopCouponServiceImpl extends ServiceImpl Date: Tue, 26 Nov 2024 10:43:28 +0800 Subject: [PATCH 63/71] =?UTF-8?q?=E7=9B=98=E7=82=B9=20=E5=8F=96=E7=BB=9D?= =?UTF-8?q?=E5=AF=B9=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ysk/cashier/cons/service/impl/TbConCheckServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConCheckServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConCheckServiceImpl.java index d4358b77..21b6ba85 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConCheckServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/cons/service/impl/TbConCheckServiceImpl.java @@ -97,7 +97,7 @@ public class TbConCheckServiceImpl implements TbConCheckService { flow.setConsId(consInfo.getId()); flow.setShopId(consInfo.getShopId()); flow.setConName(consInfo.getConName()); - flow.setAmount(resources.getLpNum()); + flow.setAmount(resources.getLpNum().abs()); flow.setBalance(resources.getStockNumber()); flow.setOperator(SecurityUtils.getCurrentUserNickName()); flow.setCreateTime(new Timestamp(System.currentTimeMillis())); @@ -115,6 +115,7 @@ public class TbConCheckServiceImpl implements TbConCheckService { conCheck.setStockNumber(resources.getStockNumber()); conCheck.setLpNum(resources.getLpNum()); conCheck.setLpAmount(consInfo.getPrice().multiply(resources.getLpNum())); + conCheck.setLpNum(resources.getLpNum()); conCheck.setCreateTime(new Timestamp(System.currentTimeMillis())); conCheck.setRemark(resources.getRemark()); return tbConCheckMapper.toDto(tbConCheckRepository.save(conCheck)); From cbe190ea71970044fc686c2c12b5789ce4176a09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Tue, 10 Dec 2024 15:17:19 +0800 Subject: [PATCH 64/71] =?UTF-8?q?=E8=BD=AC=E5=8F=B0=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/product/TbPlaceController.java | 5 +++++ .../cashier/dto/shoptable/SwitchTableDTO.java | 22 +++++++++++++++++++ .../mybatis/service/MpCashierCartService.java | 10 ++++++++- .../impl/MpCashierCartServiceImpl.java | 7 +++++- .../impl/shopimpl/TbShopTableServiceImpl.java | 10 ++++++++- .../service/shop/TbShopTableService.java | 6 +++++ 6 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/SwitchTableDTO.java 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 3caed88d..089a7c0f 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 @@ -239,6 +239,11 @@ public class TbPlaceController { return ResponseEntity.ok(tbShopTableService.choseCount(choseCountDTO)); } + @PutMapping("/switch") + public ResponseEntity switchTable(@Validated @RequestBody SwitchTableDTO switchTableDTO) { + return ResponseEntity.ok(tbShopTableService.switchTable(switchTableDTO)); + } + @PutMapping("/updateVip") @ApiOperation("代客下单 查询购物车 /shop/table") public ResponseEntity updateVip(@Validated @RequestBody UpdateVipDTO updateVipDTO) { diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/SwitchTableDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/SwitchTableDTO.java new file mode 100644 index 00000000..03a6951e --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/SwitchTableDTO.java @@ -0,0 +1,22 @@ +package cn.ysk.cashier.dto.shoptable; + +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +public class SwitchTableDTO { + @NotNull + private Integer shopId; + @NotEmpty(message = "取餐码不为空") + private String masterId; + private Integer orderId; + private List cartIds; + private boolean isFull; + @NotEmpty(message = "当前台桌id不为空") + private String currentTableId; + @NotEmpty(message = "目标台桌id不为空") + private String targetTableId; +} 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 1c0d33fa..f10f08a6 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 @@ -69,7 +69,15 @@ public interface MpCashierCartService extends IService { List selectByShopEatType(ShopEatTypeInfoDTO shopEatTypeInfoDTO, String masterId, TableConstant.OrderInfo.Status... statuses); - List selectByShopEatTypeAndOrderId(ShopEatTypeInfoDTO shopEatTypeInfoDTO, String masterId, Integer orderId, TableConstant.OrderInfo.Status... statuses); + /** + * 根据就餐模式查询购物车信息 + * @param shopEatTypeInfoDTO 就餐模式 + * @param masterId 取餐码 + * @param orderId 订单id + * @param onlySearchPc 只查询pc + * @param statuses 状态 + */ + List selectByShopEatTypeAndOrderId(ShopEatTypeInfoDTO shopEatTypeInfoDTO, String masterId, Integer orderId, boolean onlySearchPc, TableConstant.OrderInfo.Status... statuses); /** * 根据订单id和状态获取购物车数据 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 7bc07258..6aa766ae 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 @@ -139,7 +139,8 @@ public class MpCashierCartServiceImpl extends ServiceImpl selectByShopEatTypeAndOrderId(ShopEatTypeInfoDTO shopEatTypeInfoDTO, String masterId, Integer orderId, TableConstant.OrderInfo.Status... statuses) { + public List selectByShopEatTypeAndOrderId(ShopEatTypeInfoDTO shopEatTypeInfoDTO, String masterId, + Integer orderId, boolean onlySearchPc, TableConstant.OrderInfo.Status... statuses) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, shopEatTypeInfoDTO.getShopId()) .eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType()) @@ -157,6 +158,10 @@ public class MpCashierCartServiceImpl extends ServiceImpl q.isNull(TbCashierCart::getTableId).or().eq(TbCashierCart::getTableId, "")) 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 2a5506b2..fdb5ca26 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 @@ -3318,7 +3318,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { public Object waitCall(WaitCallDTO waitCallDTO) { ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(waitCallDTO.getShopId(), waitCallDTO.getTableId(), waitCallDTO.getUseType()); List cashierCarts = mpCashierCartService.selectByShopEatTypeAndOrderId(shopEatTypeInfoDTO, - waitCallDTO.getMasterId(), waitCallDTO.getOrderId(), TableConstant.OrderInfo.Status.CREATE, TableConstant.OrderInfo.Status.RETURN, TableConstant.OrderInfo.Status.CLOSED); + waitCallDTO.getMasterId(), waitCallDTO.getOrderId(), false, TableConstant.OrderInfo.Status.CREATE, + TableConstant.OrderInfo.Status.RETURN, TableConstant.OrderInfo.Status.CLOSED); if (cashierCarts.isEmpty()) { throw new BadRequestException("购物车为空"); } @@ -3336,4 +3337,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { mpCashierCartService.updateFieldValByIds(waitCallDTO.getShopId(), cartIds, TbCashierCart::getIsWaitCall, waitCallDTO.getIsWaitCall()); return mpOrderDetailService.updateFieldByCartId(TbOrderDetail::getIsWaitCall, waitCallDTO.getIsWaitCall(), cartIds); } + + @Override + public Object switchTable(SwitchTableDTO switchTableDTO) { + // 查询当前台桌信息 + mpCashierCartService.selectByShopEatTypeAndOrderId() + return null; + } } 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 c94ebc33..4d194042 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 @@ -169,4 +169,10 @@ public interface TbShopTableService { Object checkCoupon(ThirdCouponCheckDTO checkDTO); Object waitCall(WaitCallDTO waitCallDTO); + + /** + * 台桌转台 + * @param switchTableDTO 转台参数 + */ + Object switchTable(SwitchTableDTO switchTableDTO); } From 209d98745ae65ba02ba23b704fa3b91e68685975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Tue, 10 Dec 2024 15:21:35 +0800 Subject: [PATCH 65/71] =?UTF-8?q?fix:=20=E6=B7=BB=E5=8A=A0=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=E5=95=86=E5=93=81=E6=89=93=E5=8D=B0=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E9=BB=98=E8=AE=A4=E5=BC=80=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) 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 2a5506b2..cb285821 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 @@ -656,6 +656,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && addCartDTO.getVipUserId() != null ? 1 : 0); tbCashierCart.setIsMember(!shopEatTypeInfoDTO.isMemberPrice() ? 0 : addCartDTO.getVipUserId() == null ? 0 : 1); tbCashierCart.setMemberPrice(productSku.getMemberPrice()); + tbCashierCart.setIsPrint(true); mpCashierCartService.save(tbCashierCart); } else { @@ -686,6 +687,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setPackFee(product.getPackFee() != null ? product.getPackFee().multiply(addCartDTO.getNum()) : BigDecimal.ZERO); } + tbCashierCart.setIsPrint(true); cashierCartMapper.updateById(tbCashierCart); } From 2ede4f36737e4abd6e4c17f0a8ee41d25be5a7c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Tue, 10 Dec 2024 17:34:07 +0800 Subject: [PATCH 66/71] =?UTF-8?q?fix:=20=E8=BD=AC=E6=A1=8C=E5=B9=B6?= =?UTF-8?q?=E6=A1=8C=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/dto/shoptable/SwitchTableDTO.java | 3 + .../mybatis/service/MpCashierCartService.java | 1 + .../mybatis/service/MpOrderDetailService.java | 12 ++ .../impl/MpCashierCartServiceImpl.java | 64 +++++++++- .../impl/MpOrderDetailServiceImpl.java | 11 ++ .../impl/shopimpl/TbShopTableServiceImpl.java | 112 +++++++++++++++++- 6 files changed, 196 insertions(+), 7 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/SwitchTableDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/SwitchTableDTO.java index 03a6951e..84ea2d51 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/SwitchTableDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/SwitchTableDTO.java @@ -2,6 +2,7 @@ package cn.ysk.cashier.dto.shoptable; import lombok.Data; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.List; @@ -12,6 +13,8 @@ public class SwitchTableDTO { private Integer shopId; @NotEmpty(message = "取餐码不为空") private String masterId; + @NotBlank + private String useType; private Integer orderId; private List cartIds; private boolean isFull; 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 f10f08a6..a50572cf 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 @@ -78,6 +78,7 @@ public interface MpCashierCartService extends IService { * @param statuses 状态 */ List selectByShopEatTypeAndOrderId(ShopEatTypeInfoDTO shopEatTypeInfoDTO, String masterId, Integer orderId, boolean onlySearchPc, TableConstant.OrderInfo.Status... statuses); + Long countByShopEatType(ShopEatTypeInfoDTO shopEatTypeInfoDTO, String masterId, Integer orderId, boolean onlySearchPc, TableConstant.OrderInfo.Status... statuses); /** * 根据订单id和状态获取购物车数据 diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java index bdf3c773..0321b37d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java @@ -82,5 +82,17 @@ public interface MpOrderDetailService extends IService { boolean updateMemberByOrderId(Integer orderId, boolean isMember); boolean updateFieldByCartId(SFunction field, Object val, List cartIds); + + /** + * 根据购物车更改订单台桌信息 + * @param shopId 店铺id + * @param targetTableId 新的台桌id + * @param masterId 取餐码 + * @param cartIds 购物车id + * @return + */ + boolean updateTableInfoByCartIds(Integer shopId, String targetTableId, String masterId, List cartIds); + + boolean removeByCartIds(ArrayList cartIds); } 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 6aa766ae..36fd5552 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 @@ -23,8 +23,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; /** * (TbShopPermission)表服务实现类 @@ -120,7 +122,9 @@ public class MpCashierCartServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper() + .eq(TbCashierCart::getShopId, shopEatTypeInfoDTO.getShopId()) + .eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType()) + .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) + .and(q -> q.eq(TbCashierCart::getMasterId, masterId).or().isNull(TbCashierCart::getMasterId)); + + if (statuses.length == 0) { + queryWrapper.in(TbCashierCart::getStatus, "create", "return"); + } else { + queryWrapper.in(TbCashierCart::getStatus, Arrays.stream(statuses) + .map(TableConstant.OrderInfo.Status::getValue) + .collect(Collectors.toList())); + } + + if (orderId != null) { + queryWrapper.and(q -> q.eq(TbCashierCart::getOrderId, orderId) + .or().isNull(TbCashierCart::getOrderId)); + } + + if (onlySearchPc) { + queryWrapper.ne(TbCashierCart::getPlatformType, "mimiapp"); + } + + // 非堂食校验台桌状态 + 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, "")); + } + + } + return count(queryWrapper); + } + @Override public List selectByOrderIdAndState(Integer orderId, TableConstant.OrderInfo.Status... status) { LambdaQueryChainWrapper queryChainWrapper = lambdaQuery().eq(TbCashierCart::getOrderId, orderId); @@ -220,7 +267,9 @@ public class MpCashierCartServiceImpl extends ServiceImpl selectByIds(Integer shopId, Integer orderId, List ids, TableConstant.OrderInfo.Status... statuses) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, shopId) - .eq(TbCashierCart::getOrderId, orderId) .in(TbCashierCart::getId, ids); + if (orderId != null) { + queryWrapper.eq(TbCashierCart::getOrderId, orderId); + } if (statuses.length != 0) { - queryWrapper.in(TbCashierCart::getStatus, CollUtil.newArrayList(statuses)); + + queryWrapper.in(TbCashierCart::getStatus, Arrays.stream(statuses) + .map(TableConstant.OrderInfo.Status::getValue) + .collect(Collectors.toList())); } return list(queryWrapper); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java index 318090ba..c6e29e87 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java @@ -97,5 +97,16 @@ public class MpOrderDetailServiceImpl extends ServiceImpl cartIds) { + return false; + } + + @Override + public boolean removeByCartIds(ArrayList cartIds) { + return remove(new LambdaQueryWrapper() + .in(TbOrderDetail::getCartId, cartIds)); + } } 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 e66aaef6..efaa2350 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 @@ -3341,9 +3341,117 @@ public class TbShopTableServiceImpl implements TbShopTableService { } @Override + @Transactional public Object switchTable(SwitchTableDTO switchTableDTO) { // 查询当前台桌信息 - mpCashierCartService.selectByShopEatTypeAndOrderId() - return null; + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(switchTableDTO.getShopId(), switchTableDTO.getCurrentTableId(), switchTableDTO.getUseType()); + ShopEatTypeInfoDTO targetShopEatTypeInfoDTO = checkEatModel(switchTableDTO.getShopId(), switchTableDTO.getTargetTableId(), switchTableDTO.getUseType()); + if (!shopEatTypeInfoDTO.isDineInAfter()) { + throw new BadRequestException("仅后付费模式支持转台"); + } + TbShopTable shopTable = mpShopTableService.selectByTableId(switchTableDTO.getTargetTableId(), switchTableDTO.getShopId()); + if (shopTable == null) { + throw new BadRequestException("目标台桌信息不存在"); + } + + if (TableConstant.ShopTable.State.CLEANING.getValue().equals(shopTable.getStatus())) { + throw new BadRequestException("当前台桌清理中,不能转台"); + } + + List cashierCarts; + long totalSize = 99999; + if (switchTableDTO.isFull()) { + cashierCarts = mpCashierCartService.selectByShopEatTypeAndOrderId(shopEatTypeInfoDTO, switchTableDTO.getMasterId(), switchTableDTO.getOrderId(), + true, TableConstant.OrderInfo.Status.CREATE, TableConstant.OrderInfo.Status.RETURN); + }else { + if (switchTableDTO.getCartIds().isEmpty()) { + throw new BadRequestException("请选择转单商品"); + } + + totalSize = mpCashierCartService.countByShopEatType(shopEatTypeInfoDTO, switchTableDTO.getMasterId(), switchTableDTO.getOrderId(), + true, TableConstant.OrderInfo.Status.CREATE, TableConstant.OrderInfo.Status.RETURN); + cashierCarts = mpCashierCartService.selectByIds(switchTableDTO.getShopId(), null, switchTableDTO.getCartIds(), + TableConstant.OrderInfo.Status.CREATE, TableConstant.OrderInfo.Status.RETURN); + } + + if (cashierCarts.isEmpty()) { + throw new BadRequestException("当前台桌购物车为空"); + } + + String masterId = getMasterId(switchTableDTO.getShopId(), switchTableDTO.getTargetTableId(), null, null).getString("masterId"); + // 查询目标购物车 + List targetCarts = mpCashierCartService.selectByShopEatTypeAndOrderId(targetShopEatTypeInfoDTO, masterId, null, false); + TbCashierCart targetSeatFee = null; + Integer targetOrderId = null; + for (TbCashierCart targetCart : targetCarts) { + if (TableConstant.CART_SEAT_ID.equals(targetCart.getId().toString())) { + targetSeatFee = targetCart; + } + + if (targetCart.getOrderId() != null) { + targetOrderId = targetCart.getOrderId(); + } + } + + // 修改原有购物车数据 + ArrayList cartIds = new ArrayList<>(); + Integer orderId = switchTableDTO.getOrderId(); + TbCashierCart currentSeatFee = null; + ArrayList updateCartInfos = new ArrayList<>(); + for (TbCashierCart item : cashierCarts) { + if (targetSeatFee == null || !TableConstant.CART_SEAT_ID.equals(item.getId().toString())) { + item.setTableId(switchTableDTO.getTargetTableId()); + item.setMasterId(masterId); + updateCartInfos.add(item); + } + cartIds.add(item.getId()); + + if (item.getOrderId() != null) { + orderId = item.getOrderId(); + } + + if (TableConstant.CART_SEAT_ID.equals(item.getId().toString())) { + currentSeatFee = item; + } + } + + if (currentSeatFee != null && targetSeatFee != null) { + targetSeatFee.setNumber(currentSeatFee.getNumber().add(targetSeatFee.getNumber())); + targetSeatFee.setTotalNumber(currentSeatFee.getTotalNumber().add(targetSeatFee.getTotalNumber())); + targetSeatFee.setTotalAmount(targetSeatFee.getSalePrice().multiply(targetSeatFee.getTotalNumber())); + mpCashierCartService.removeById(currentSeatFee.getId()); + } + mpCashierCartService.updateBatchById(updateCartInfos); + mpCashierCartService.update(new LambdaUpdateWrapper() + .in(TbCashierCart::getId, cartIds) + .set(TbCashierCart::getOrderId, null) + .set(TbCashierCart::getPlaceNum, null)); + mpOrderDetailService.removeByCartIds(cartIds); + + // 删除原有台桌detail和order信息 + if (switchTableDTO.isFull() || switchTableDTO.getCartIds().size() == totalSize) { + mpOrderInfoService.removeById(orderId); + }else { + // 重新创建订单数据 + CreateOrderDTO createOrderDTO = new CreateOrderDTO(); + createOrderDTO.setMasterId(switchTableDTO.getMasterId()); + createOrderDTO.setShopId(switchTableDTO.getShopId()); + createOrderDTO.setTableId(switchTableDTO.getCurrentTableId()); + createOrderDTO.setUseType(shopEatTypeInfoDTO.getUseType()); + createOrder(createOrderDTO, false); + } + + if (targetOrderId != null) { + // 重新创建订单数据 + CreateOrderDTO createOrderDTO = new CreateOrderDTO(); + createOrderDTO.setMasterId(masterId); + createOrderDTO.setShopId(switchTableDTO.getShopId()); + createOrderDTO.setTableId(switchTableDTO.getTargetTableId()); + createOrderDTO.setUseType(targetShopEatTypeInfoDTO.getUseType()); + createOrder(createOrderDTO, false); + } + + return true; + } } From 904357aea9fb826209fd1bb4dee291495cfbea77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Tue, 10 Dec 2024 17:44:51 +0800 Subject: [PATCH 67/71] =?UTF-8?q?fix:=20=E8=BD=AC=E6=A1=8C=E5=B9=B6?= =?UTF-8?q?=E6=A1=8C=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 efaa2350..dfea39ed 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 @@ -2693,6 +2693,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setNumber(BigDecimal.valueOf(choseCountDTO.getNum())); tbCashierCart.setTotalNumber(BigDecimal.valueOf(choseCountDTO.getNum())); tbCashierCart.setUseType(choseCountDTO.getUseType()); + tbCashierCart.setPlatformType("pc"); tbCashierCartMapper.insert(tbCashierCart); } else { tbCashierCart.setMemberPrice(shopInfo.getTableFee()); @@ -3429,9 +3430,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { mpOrderDetailService.removeByCartIds(cartIds); // 删除原有台桌detail和order信息 - if (switchTableDTO.isFull() || switchTableDTO.getCartIds().size() == totalSize) { + if (orderId != null && (switchTableDTO.isFull() || switchTableDTO.getCartIds().size() == totalSize)) { mpOrderInfoService.removeById(orderId); - }else { + } + + if (!switchTableDTO.isFull() && switchTableDTO.getCartIds().size() != totalSize){ // 重新创建订单数据 CreateOrderDTO createOrderDTO = new CreateOrderDTO(); createOrderDTO.setMasterId(switchTableDTO.getMasterId()); From 13855e0fabeee0119b744d592f2aab03ce4946ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Tue, 10 Dec 2024 17:54:02 +0800 Subject: [PATCH 68/71] =?UTF-8?q?fix:=20=E8=BD=AC=E6=A1=8C=E5=B9=B6?= =?UTF-8?q?=E6=A1=8C=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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 dfea39ed..117dd687 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 @@ -3342,7 +3342,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public Object switchTable(SwitchTableDTO switchTableDTO) { // 查询当前台桌信息 ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(switchTableDTO.getShopId(), switchTableDTO.getCurrentTableId(), switchTableDTO.getUseType()); @@ -3385,7 +3385,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { TbCashierCart targetSeatFee = null; Integer targetOrderId = null; for (TbCashierCart targetCart : targetCarts) { - if (TableConstant.CART_SEAT_ID.equals(targetCart.getId().toString())) { + if (TableConstant.CART_SEAT_ID.equals(targetCart.getProductId())) { targetSeatFee = targetCart; } @@ -3411,7 +3411,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderId = item.getOrderId(); } - if (TableConstant.CART_SEAT_ID.equals(item.getId().toString())) { + if (TableConstant.CART_SEAT_ID.equals(item.getProductId().toString())) { currentSeatFee = item; } } @@ -3420,6 +3420,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { targetSeatFee.setNumber(currentSeatFee.getNumber().add(targetSeatFee.getNumber())); targetSeatFee.setTotalNumber(currentSeatFee.getTotalNumber().add(targetSeatFee.getTotalNumber())); targetSeatFee.setTotalAmount(targetSeatFee.getSalePrice().multiply(targetSeatFee.getTotalNumber())); + mpCashierCartService.updateById(targetSeatFee); mpCashierCartService.removeById(currentSeatFee.getId()); } mpCashierCartService.updateBatchById(updateCartInfos); From ee7e0a8eb07dca0d47b5dc3f643b158fe0d302ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Tue, 10 Dec 2024 18:00:15 +0800 Subject: [PATCH 69/71] =?UTF-8?q?fix:=20=E8=BD=AC=E6=A1=8C=E5=B9=B6?= =?UTF-8?q?=E6=A1=8C=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 117dd687..a95e8954 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 @@ -3400,7 +3400,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { TbCashierCart currentSeatFee = null; ArrayList updateCartInfos = new ArrayList<>(); for (TbCashierCart item : cashierCarts) { - if (targetSeatFee == null || !TableConstant.CART_SEAT_ID.equals(item.getId().toString())) { + if (targetSeatFee == null || !TableConstant.CART_SEAT_ID.equals(item.getProductId())) { item.setTableId(switchTableDTO.getTargetTableId()); item.setMasterId(masterId); updateCartInfos.add(item); @@ -3411,7 +3411,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderId = item.getOrderId(); } - if (TableConstant.CART_SEAT_ID.equals(item.getProductId().toString())) { + if (TableConstant.CART_SEAT_ID.equals(item.getProductId())) { currentSeatFee = item; } } From 1c8461f4209b3bb691c5ff432d635f821d526eee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 11 Dec 2024 09:12:38 +0800 Subject: [PATCH 70/71] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E8=BF=94=E5=9B=9E=E7=9A=84=E8=B4=AD=E7=89=A9=E8=BD=A6?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E4=B8=8D=E6=AD=A3=E5=B8=B8=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 cb285821..5b47f00d 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 @@ -464,8 +464,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { tbCashierCart.setSalePrice(tbCashierCart.getSalePrice()); tbCashierCart.setTotalAmount(updateCartDTO.getNum().multiply(tbCashierCart.getSalePrice())); tbCashierCart.setNote(updateCartDTO.getNote()); - tbCashierCart.setIsPrint(updateCartDTO.getIsPrint()); - tbCashierCart.setIsWaitCall(updateCartDTO.getIsWaitCall()); + if (updateCartDTO.getIsPrint() != null) { + tbCashierCart.setIsPrint(updateCartDTO.getIsPrint()); + } + if (updateCartDTO.getIsWaitCall() != null) { + tbCashierCart.setIsWaitCall(updateCartDTO.getIsWaitCall()); + } if (updateCartDTO.getIsPack() != null) { if (!updateCartDTO.getIsPack()) { From 5fc070b75e5c82baae8404989b1c4aadc2ad41d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 11 Dec 2024 09:27:45 +0800 Subject: [PATCH 71/71] =?UTF-8?q?fix:=20=E6=94=AF=E4=BB=98=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=A2=9E=E5=8A=A0=E6=8C=82=E8=B4=A6=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java index b27dfb3a..5db9d6a2 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java @@ -316,6 +316,9 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { case "deposit": dto.setPayType("储值卡支付"); break; + case "creditBuyer": + dto.setPayType("挂账支付"); + break; default: dto.setPayType(tbOrderInfo.getSendType()); break;