From c9d7ba76bb5eada4a1f3bec59ccc956f248433fd Mon Sep 17 00:00:00 2001 From: zengtao01 Date: Sun, 7 Apr 2024 17:45:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppDiningPlatesController.java | 6 ++ .../orderdetail/AppOrderDetailController.java | 2 - .../vo/AppOrderDetailSaveReqVO.java | 6 ++ .../dal/dataobject/order/DishOrderDO.java | 5 ++ .../member/job/BalanceDeductionJob.java | 21 ++++-- .../member/service/card/CardServiceImpl.java | 2 +- .../diningplates/DiningPlatesService.java | 3 +- .../diningplates/DiningPlatesServiceImpl.java | 33 ++++++++- .../member/service/order/OrderService.java | 2 +- .../service/order/OrderServiceImpl.java | 7 +- .../orderdetail/OrderDetailServiceImpl.java | 70 ++++++++++++++++++- .../service/user/MemberUserServiceImpl.java | 4 +- .../module/system/api/carteen/CarteenApi.java | 17 +++++ .../api/carteen/dto/CarteenRespDto.java | 51 ++++++++++++++ .../module/system/api/dish/DishesApi.java | 16 +++++ .../system/api/dish/dto/DishesRespDto.java | 36 ++++++++++ .../dishesnutrition/DishesNutritionApi.java | 7 +- .../system/api/carteen/CarteenApiImpl.java | 38 ++++++++++ .../module/system/api/dish/DishesApiImpl.java | 28 ++++++++ .../DishesNutritionApiImpl.java | 10 +++ 20 files changed, 340 insertions(+), 24 deletions(-) create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApi.java create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/carteen/dto/CarteenRespDto.java create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApi.java create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/dto/DishesRespDto.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApiImpl.java create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApiImpl.java diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java index ca39d3ab..78bc73d0 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java @@ -34,4 +34,10 @@ public class AppDiningPlatesController { return success(BeanUtils.toBean(pageResult, DiningPlatesRespVO.class)); } + @GetMapping("/bind") + @Operation(summary = "绑定餐盘") + public CommonResult bind(String diningPlatesNum,String cardId) { + return success(diningPlatesService.bind(diningPlatesNum,cardId)); + } + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/AppOrderDetailController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/AppOrderDetailController.java index 95fbb963..4deed541 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/AppOrderDetailController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/AppOrderDetailController.java @@ -45,7 +45,6 @@ public class AppOrderDetailController { @PostMapping("/create") @Operation(summary = "创建订单明细") - @PreAuthorize("@ss.hasPermission('member:order-detail:create')") public CommonResult createOrderDetail(@Valid @RequestBody AppOrderDetailSaveReqVO createReqVO) { return success(orderDetailService.createOrderDetail(createReqVO)); } @@ -70,7 +69,6 @@ public class AppOrderDetailController { @GetMapping("/get") @Operation(summary = "获得订单明细") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('member:order-detail:query')") public CommonResult getOrderDetail(@RequestParam("id") Long id) { OrderDetailDO orderDetail = orderDetailService.getOrderDetail(id); return success(BeanUtils.toBean(orderDetail, OrderDetailRespVO.class)); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailSaveReqVO.java index 08ac6606..8bebb104 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailSaveReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailSaveReqVO.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.member.controller.app.orderdetail.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import javax.validation.constraints.NotNull; import java.math.BigDecimal; @Schema(description = "管理后台 - 订单明细新增/修改 Request VO") @@ -16,6 +17,7 @@ public class AppOrderDetailSaveReqVO { private Long orderId; @Schema(description = "菜品ID", example = "1216") + @NotNull(message = "菜品ID 不能为空") private Long dishesId; @Schema(description = "菜品", example = "王五") @@ -27,4 +29,8 @@ public class AppOrderDetailSaveReqVO { @Schema(description = "热量") private Double heat; + @Schema(description = "餐盘编号") + private String diningPlatesNum; + + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/order/DishOrderDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/order/DishOrderDO.java index a3c3bf72..ff814fe5 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/order/DishOrderDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/order/DishOrderDO.java @@ -62,4 +62,9 @@ public class DishOrderDO extends BaseDO { * 支付方式 */ private String payMethods; + + /** + * 餐盘编号 + */ + private String diningPlatesNum; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/BalanceDeductionJob.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/BalanceDeductionJob.java index 1d49c4d8..fa1c1612 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/BalanceDeductionJob.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/BalanceDeductionJob.java @@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.member.service.card.CardService; import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService; import cn.iocoder.yudao.module.member.service.order.OrderService; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -35,11 +36,13 @@ public class BalanceDeductionJob implements JobHandler { private OrderService orderService; @Resource private CardService cardService; + @Resource + private StringRedisTemplate stringRedisTemplate; /** * 20分钟之后自动解绑并扣款 */ - private static final Integer EXPIRATION_TIME = 20; + private static final Integer EXPIRATION_TIME = 1; /** * 每次删除间隔的条数,如果值太高可能会造成数据库的压力过大 @@ -57,27 +60,33 @@ public class BalanceDeductionJob implements JobHandler { List ids = diningPlatesToCharging.stream().map(DiningPlatesDO::getId).collect(Collectors.toList()); List users = diningPlatesToCharging.stream().map(DiningPlatesDO::getUserId).collect(Collectors.toList()); //先更改状态防止重复消费 - platesService.updatePayFlag(ids,DiningPlatesDO.PAY); + //platesService.updatePayFlag(ids,DiningPlatesDO.PAY); //获取用户订单 List toPay = orderService.getToPay(users); //扣除余额 List list = new ArrayList<>(); toPay.forEach(dishOrderDO -> { + //新的总价 + BigDecimal total = new BigDecimal(stringRedisTemplate.opsForValue().get(dishOrderDO.getDiningPlatesNum())); Long userId = dishOrderDO.getUserId(); CardDO cardDO = new CardDO(); cardDO.setType(TimePeriodEnum.getTimePeriod(LocalDateTime.now())); BigDecimal oldMoney = cardService.getMoneyByUserId(userId); - cardDO.setMoney(oldMoney.subtract(dishOrderDO.getTotalMoney()).setScale(2, BigDecimal.ROUND_HALF_UP)); + cardDO.setMoney(oldMoney.subtract(total).setScale(2, BigDecimal.ROUND_HALF_UP)); cardDO.setUserId(userId); - cardDO.setChangeMoney(dishOrderDO.getTotalMoney()); + cardDO.setChangeMoney(total); cardDO.setFlag(CardDO.MINUS); list.add(cardDO); + dishOrderDO.setTotalMoney(total); + dishOrderDO.setOrderStatus(DishOrderDO.COMPLETE); + stringRedisTemplate.delete(dishOrderDO.getDiningPlatesNum()); }); cardService.insertBatch(list); size = list.size(); - //餐盘解绑、更改订单状态 + //餐盘解绑 platesService.updateBind(ids); - orderService.updateStatus(users); + //更新订单状态和总价 + orderService.updateBatch(toPay); } log.info("[execute][扣款定时任务扣款数量 ({}) 个]", size); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java index 4d0f138a..9f2a74a1 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java @@ -148,7 +148,7 @@ public class CardServiceImpl implements CardService { @Override public AppCardMonthVO getMonthMoney(Long userId,String flag, String time) { - DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDate parse = LocalDate.parse(time, dateFormatter); // 获取指定日期所在月份的第一天 diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java index fe55783e..fde76663 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java @@ -80,5 +80,6 @@ public interface DiningPlatesService { * 绑定 * @return */ - Boolean bind(String diningPlatesNum); + Boolean bind(String diningPlatesNum,String cardId); + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java index 977ef3a3..a8d3bb2c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java @@ -1,14 +1,19 @@ package cn.iocoder.yudao.module.member.service.diningplates; +import cn.iocoder.yudao.framework.common.exception.ServiceException; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesSaveReqVO; import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO; +import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; +import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.dal.mysql.diningplates.DiningPlatesMapper; +import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper; +import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -31,6 +36,12 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { @Resource private DiningPlatesMapper diningPlatesMapper; + @Resource + private MemberUserMapper memberUserMapper; + @Resource + private DishOrderMapper dishOrderMapper; + @Resource + private StringRedisTemplate stringRedisTemplate; @Override public Long createDiningPlates(DiningPlatesSaveReqVO createReqVO) { @@ -115,14 +126,30 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { @Override @Transactional(rollbackFor = Exception.class) - public Boolean bind(String diningPlatesNum) { + public Boolean bind(String diningPlatesNum,String cardId) { DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.lambdaQuery() .eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum) .last("limit 1")); - diningPlatesDO.setUserId(SecurityFrameworkUtils.getLoginUserId()); + if(diningPlatesDO.getUserId()!=null){ + throw new ServiceException(20001,"餐盘已被绑定"); + } + MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.lambdaQuery() + .eq(MemberUserDO::getCardId, cardId) + .last("limit 1")); + diningPlatesDO.setUserId(memberUserDO.getId()); diningPlatesDO.setStatus(DiningPlatesDO.USE); diningPlatesDO.setBindingTime(LocalDateTime.now()); int i = diningPlatesMapper.updateById(diningPlatesDO); + + //创建初始订单 + DishOrderDO dishOrderDO = new DishOrderDO(); + dishOrderDO.setDiningPlatesNum(diningPlatesNum); + dishOrderDO.setOrderStatus(DishOrderDO.INCOMPLETE); + dishOrderDO.setUserId(memberUserDO.getId()); + dishOrderMapper.insert(dishOrderDO); + + //设置总价 + stringRedisTemplate.opsForValue().set(diningPlatesNum,"0"); return i>0; } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java index ef4c9b96..bcaf5c64 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java @@ -75,7 +75,7 @@ public interface OrderService { * 更改用户的支付状态 * @return */ - void updateStatus(List users); + void updateBatch(List orderDOS); /** * 根据时间获取用户的订单 diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java index 17236612..7e2a688f 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java @@ -198,11 +198,8 @@ public class OrderServiceImpl implements OrderService { } @Override - public void updateStatus(List users) { - dishOrderMapper.update(Wrappers.lambdaUpdate() - .in(DishOrderDO::getUserId, users) - .eq(DishOrderDO::getOrderStatus, DishOrderDO.INCOMPLETE) - .set(DishOrderDO::getOrderStatus,DishOrderDO.COMPLETE)); + public void updateBatch(List orderDOS) { + dishOrderMapper.updateBatch(orderDOS); } @Override diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java index 0e6dfd07..a4cf0b39 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java @@ -1,17 +1,31 @@ package cn.iocoder.yudao.module.member.service.orderdetail; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.exception.ServiceException; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailPageReqVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailRespVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO; +import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper; import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper; +import cn.iocoder.yudao.module.system.api.carteen.CarteenApi; +import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto; +import cn.iocoder.yudao.module.system.api.dish.DishesApi; +import cn.iocoder.yudao.module.system.api.dish.dto.DishesRespDto; +import cn.iocoder.yudao.module.system.api.dishesnutrition.DishesNutritionApi; +import cn.iocoder.yudao.module.system.api.dishesnutrition.dto.DishesNutritionRespDTO; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -29,11 +43,63 @@ public class OrderDetailServiceImpl implements OrderDetailService { @Resource private OrderDetailMapper orderDetailMapper; + @Resource + private CarteenApi carteenApi; + + @Resource + private DishesNutritionApi dishesNutritionApi; + + @Resource + private DishOrderMapper dishOrderMapper; + + @Resource + private DishesApi dishesApi; + + @Resource + private StringRedisTemplate stringRedisTemplate; + @Override + @Transactional(rollbackFor = Exception.class) public Long createOrderDetail(AppOrderDetailSaveReqVO createReqVO) { - //todo:计算热量 - // 插入 + DishesRespDto dish = dishesApi.getDish(createReqVO.getDishesId()); + DishesNutritionRespDTO dishEnergy = dishesNutritionApi.getDishEnergy(createReqVO.getDishesId()); + //餐盘号去获取订单 + DishOrderDO dishOrderDO = dishOrderMapper.selectOne(Wrappers.lambdaQuery().eq(DishOrderDO::getDiningPlatesNum, createReqVO.getDiningPlatesNum()) + .eq(DishOrderDO::getOrderStatus, DishOrderDO.INCOMPLETE) + .orderByDesc(DishOrderDO::getCreateTime) + .last("limit 1")); + if(dishOrderDO==null){ + throw new ServiceException(20002,"该餐盘订单已完成,请重新绑定餐盘"); + } + + // 插入数据 OrderDetailDO orderDetail = BeanUtils.toBean(createReqVO, OrderDetailDO.class); + + //判定门店资料是否录入 + if(dishOrderDO.getStoreId()==null){ + CarteenRespDto carteen = carteenApi.getCarteen(createReqVO.getDishesId()); + dishOrderDO.setStoreId(carteen.getId()).setStoreName(carteen.getStoresName()); + dishOrderMapper.updateById(dishOrderDO); + } + //计算新总价 + String old = stringRedisTemplate.opsForValue().get(createReqVO.getDiningPlatesNum()); + BigDecimal oldBigDecimal = new BigDecimal(old); + // + BigDecimal newPrice = dish.getDishesBasePrice().multiply(createReqVO.getWeight()) + .add(oldBigDecimal).setScale(2, RoundingMode.HALF_UP); + stringRedisTemplate.opsForValue().set(createReqVO.getDiningPlatesNum(),newPrice.toString()); + + //计算热量 + if( dishEnergy !=null && StrUtil.isNotEmpty(dishEnergy.getDishesNumber())){ + BigDecimal dishesNumber = new BigDecimal(dishEnergy.getDishesNumber()); + BigDecimal nutritionNumber = new BigDecimal(dishEnergy.getNutritionNumber()); + if(BigDecimal.ZERO.compareTo(dishesNumber)!=0){ + BigDecimal bigDecimal = createReqVO.getWeight().divide(dishesNumber).multiply(nutritionNumber).setScale(2, RoundingMode.HALF_UP); + orderDetail.setHeat(bigDecimal.doubleValue()); + } + } + + orderDetail.setOrderId(dishOrderDO.getId()).setDishesName(dish.getDishesName()).setDishUrl(dish.getDishesImageUrl()); orderDetailMapper.insert(orderDetail); // 返回 return orderDetail.getId(); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java index f4394005..295d8306 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java @@ -406,7 +406,7 @@ public class MemberUserServiceImpl implements MemberUserService { //获取日期的订单 String start = time+" 00:00:00"; String end = time+" 23:59:59"; - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime startTime = LocalDateTime.parse(start, formatter); LocalDateTime endTime = LocalDateTime.parse(end, formatter); @@ -464,7 +464,7 @@ public class MemberUserServiceImpl implements MemberUserService { //获取日期的订单 String newStart = start + " 00:00:00"; String newEnd = end + " 23:59:59"; - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDateTime startTime = LocalDateTime.parse(newStart, formatter); LocalDateTime endTime = LocalDateTime.parse(newEnd, formatter); diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApi.java new file mode 100644 index 00000000..4495eb0f --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApi.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.system.api.carteen; + + +import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto; + +/** + * 菜品营养 Service 接口 + * + * @author 开发账号 + */ +public interface CarteenApi { + + /** + * 获得门店信息 + */ + public CarteenRespDto getCarteen(Long id); +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/carteen/dto/CarteenRespDto.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/carteen/dto/CarteenRespDto.java new file mode 100644 index 00000000..2c381feb --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/carteen/dto/CarteenRespDto.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.system.api.carteen.dto; + +import lombok.Data; + +/** + * 门店管理 DO + * + * @author 开发账号 + */ + +@Data +public class CarteenRespDto{ + + /** + * 主键id + */ + private Long id; + /** + * 门店名称 + */ + private String storesName; + /** + * 门店状态,1已禁用0已启用 + */ + private Boolean status; + /** + * 多储位管理,1已禁用0已启用 + */ + private Boolean multipleManage; + /** + * 是否启用公众号点餐,1不支持0支持 + */ + private Boolean accountOrder; + /** + * 门店地址 + */ + private String storeAddress; + /** + * 联系电话 + */ + private String phone; + /** + * 租户编号 + */ + private Long tenantId; + /** + * 编码 + */ + private String serialNumber; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApi.java new file mode 100644 index 00000000..5ffd276d --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApi.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.system.api.dish; + +import cn.iocoder.yudao.module.system.api.dish.dto.DishesRespDto; + +/** + * @author zt + * @description + * @since 2024/4/7 + */ +public interface DishesApi { + + /** + * @Description: 根据菜品id 获取菜品属性 + */ + public DishesRespDto getDish(Long id); +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/dto/DishesRespDto.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/dto/DishesRespDto.java new file mode 100644 index 00000000..0ba81bd4 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/dto/DishesRespDto.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.system.api.dish.dto; + + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + + +@Data +public class DishesRespDto { + + + private Long id; + + private String dishesName; + + private String dishesImageUrl; + + private String dishesAttribute; + + private BigDecimal dishesBasePrice; + + private BigDecimal dishesVipBasePrice; + + private BigDecimal dishesWeighPrice; + + private BigDecimal dishesVipWeighPrice; + + private String dishecCook; + + private String dishecType; + + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dishesnutrition/DishesNutritionApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dishesnutrition/DishesNutritionApi.java index 5468dba7..efe1e58e 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dishesnutrition/DishesNutritionApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dishesnutrition/DishesNutritionApi.java @@ -12,10 +12,15 @@ import java.util.List; */ public interface DishesNutritionApi { /** + * @return * @Description: 根据菜品id 获取菜品营养 * @Author: qjq * @Date: 2024/4/2 16:58 - * @return */ public List getDishesList(Long ids); + + /** + * @Description: 根据菜品id 获取菜品能量 + */ + public DishesNutritionRespDTO getDishEnergy(Long id); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApiImpl.java new file mode 100644 index 00000000..240895c2 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/carteen/CarteenApiImpl.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.system.api.carteen; + +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto; +import cn.iocoder.yudao.module.system.dal.dataobject.carteen.CarteenDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; +import cn.iocoder.yudao.module.system.dal.mysql.carteen.CarteenMapper; +import cn.iocoder.yudao.module.system.dal.mysql.dishes.DishesMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +/** + * 门店管理 Service 实现类 + * + * @author 开发账号 + */ +@Service +@Validated +public class CarteenApiImpl implements CarteenApi { + + @Resource + private CarteenMapper carteenMapper; + + @Resource + private DishesMapper dishesMapper; + + @Override + public CarteenRespDto getCarteen(Long id){ + DishesDO dishesDO = dishesMapper.selectById(id); + CarteenDO carteenDO = carteenMapper.selectById(dishesDO.getCarteenId()); + return BeanUtils.toBean(carteenDO, CarteenRespDto.class); + } + + + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApiImpl.java new file mode 100644 index 00000000..ad1c2a38 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dish/DishesApiImpl.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.system.api.dish; + + +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.system.api.dish.dto.DishesRespDto; +import cn.iocoder.yudao.module.system.dal.dataobject.dishes.DishesDO; +import cn.iocoder.yudao.module.system.service.dishes.DishesService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 菜品营养 Service 接口 + * + * @author 开发账号 + */ +@Service +public class DishesApiImpl implements DishesApi { + + @Resource + private DishesService dishesService; + + @Override + public DishesRespDto getDish(Long id) { + DishesDO dishes = dishesService.getDishes(id); + return BeanUtils.toBean(dishes,DishesRespDto.class); + } +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dishesnutrition/DishesNutritionApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dishesnutrition/DishesNutritionApiImpl.java index 29770730..5d548056 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dishesnutrition/DishesNutritionApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dishesnutrition/DishesNutritionApiImpl.java @@ -33,4 +33,14 @@ public class DishesNutritionApiImpl implements DishesNutritionApi { return BeanUtils.toBean(dishesNutritionMapper.selectList(new LambdaQueryWrapperX() .eqIfPresent(DishesNutritionDO::getDishesId,ids)),DishesNutritionRespDTO.class); } + + + @Override + public DishesNutritionRespDTO getDishEnergy(Long id) { + return BeanUtils.toBean(dishesNutritionMapper.selectOne(new LambdaQueryWrapperX() + .eqIfPresent(DishesNutritionDO::getDishesId,id) + .eqIfPresent(DishesNutritionDO::getNutritionName,"能量") + .last("limit 1")),DishesNutritionRespDTO.class); + } + } \ No newline at end of file