优化今日菜品
This commit is contained in:
		| @ -116,6 +116,7 @@ public interface ErrorCodeConstants { | |||||||
|     ErrorCode AMOUNT_NOT_ENOUGH = new ErrorCode(1_007_904_008, "金额不足"); |     ErrorCode AMOUNT_NOT_ENOUGH = new ErrorCode(1_007_904_008, "金额不足"); | ||||||
|     ErrorCode CODE_NOT_TIME = new ErrorCode(1_007_904_008, "二维码过期"); |     ErrorCode CODE_NOT_TIME = new ErrorCode(1_007_904_008, "二维码过期"); | ||||||
|     ErrorCode STATUS_ERROR = new ErrorCode(1_007_904_007, "订单已完成或已退款"); |     ErrorCode STATUS_ERROR = new ErrorCode(1_007_904_007, "订单已完成或已退款"); | ||||||
|  |     ErrorCode STATUS_ERROR_REFUND = new ErrorCode(1_007_904_007, "订单已退款"); | ||||||
|     ErrorCode STATUS_ERROR_CANCEL = new ErrorCode(1_007_904_007, "订单已取消"); |     ErrorCode STATUS_ERROR_CANCEL = new ErrorCode(1_007_904_007, "订单已取消"); | ||||||
|     ErrorCode ORDER_FAIL = new ErrorCode(1_007_904_008, "下单失败"); |     ErrorCode ORDER_FAIL = new ErrorCode(1_007_904_008, "下单失败"); | ||||||
|     ErrorCode ORDER_CANCEL_FAIL = new ErrorCode(1_007_904_008, "订单取消失败"); |     ErrorCode ORDER_CANCEL_FAIL = new ErrorCode(1_007_904_008, "订单取消失败"); | ||||||
|  | |||||||
| @ -64,4 +64,7 @@ public class MemberUserBaseVO { | |||||||
|     private String cardId; |     private String cardId; | ||||||
|     @Schema(description = "人脸") |     @Schema(description = "人脸") | ||||||
|     private Long faceId; |     private Long faceId; | ||||||
|  |  | ||||||
|  |     @Schema(description = "人脸") | ||||||
|  |     private String type; | ||||||
| } | } | ||||||
|  | |||||||
| @ -106,7 +106,7 @@ public class AppStoreOrderController { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @GetMapping("/refund") |     @GetMapping("/refund") | ||||||
|     @Operation(summary = "退款") |     @Operation(summary = "用户退款申请") | ||||||
|     public CommonResult<Long> refund(Integer orderId) { |     public CommonResult<Long> refund(Integer orderId) { | ||||||
|         return success(storeOrderService.refund(orderId)); |         return success(storeOrderService.refund(orderId)); | ||||||
|     } |     } | ||||||
| @ -117,4 +117,15 @@ public class AppStoreOrderController { | |||||||
|         storeOrderService.reduction(orderId, money); |         storeOrderService.reduction(orderId, money); | ||||||
|         return CommonResult.success(true); |         return CommonResult.success(true); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("/refundAdmin") | ||||||
|  |     @Operation(summary = "管理员执行退款") | ||||||
|  |     public CommonResult<Boolean> refundAdmin(Integer orderId) { | ||||||
|  |         AddReqVO addReqVO = storeOrderService.refundAdmin(orderId); | ||||||
|  |         //记录 | ||||||
|  |         memberAsyncService.batchRecord(addReqVO); | ||||||
|  |         return success(true); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
| @ -9,6 +9,7 @@ import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserInfoCardVO; | |||||||
| import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO; | import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO; | ||||||
|  |  | ||||||
| import javax.validation.Valid; | import javax.validation.Valid; | ||||||
|  | import java.math.BigDecimal; | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| @ -108,4 +109,6 @@ public interface DiningPlatesService { | |||||||
|     List<String> getBindDiningPlatesList(); |     List<String> getBindDiningPlatesList(); | ||||||
|  |  | ||||||
|     Map<String, String> checkBindAndUnBind(String diningPlatesNum, Long storeId); |     Map<String, String> checkBindAndUnBind(String diningPlatesNum, Long storeId); | ||||||
|  |  | ||||||
|  |     BigDecimal getOrderMoney(Long orderId); | ||||||
| } | } | ||||||
| @ -524,4 +524,11 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { | |||||||
|         return map; |         return map; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public BigDecimal getOrderMoney(Long orderId) { | ||||||
|  |         DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.<DiningPlatesDO>lambdaQuery() | ||||||
|  |                 .eq(DiningPlatesDO::getOrderId, orderId)); | ||||||
|  |         String s = stringRedisTemplate.opsForValue().get(diningPlatesDO.getDiningPlatesNum() + "-" + diningPlatesDO.getStoreId()); | ||||||
|  |         return StrUtil.isNotBlank(s)?new BigDecimal(s):null; | ||||||
|  |     } | ||||||
| } | } | ||||||
| @ -31,6 +31,7 @@ import cn.iocoder.yudao.module.member.enums.CostTypeEnum; | |||||||
| import cn.iocoder.yudao.module.member.enums.TimePeriodEnum; | import cn.iocoder.yudao.module.member.enums.TimePeriodEnum; | ||||||
| import cn.iocoder.yudao.module.member.service.amount.DeductionService; | import cn.iocoder.yudao.module.member.service.amount.DeductionService; | ||||||
| import cn.iocoder.yudao.module.member.service.business.BusinessService; | import cn.iocoder.yudao.module.member.service.business.BusinessService; | ||||||
|  | import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService; | ||||||
| import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; | import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; | ||||||
| import cn.iocoder.yudao.module.member.service.refund.RefundService; | import cn.iocoder.yudao.module.member.service.refund.RefundService; | ||||||
| import cn.iocoder.yudao.module.member.util.MemberConstants; | import cn.iocoder.yudao.module.member.util.MemberConstants; | ||||||
| @ -87,6 +88,8 @@ public class OrderServiceImpl implements OrderService { | |||||||
|     private BusinessService businessService; |     private BusinessService businessService; | ||||||
|     @Resource |     @Resource | ||||||
|     private DeductionService deductionService; |     private DeductionService deductionService; | ||||||
|  |     @Resource | ||||||
|  |     private DiningPlatesService diningPlatesService; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public Long createOrder(AppOrderSaveReqVO createReqVO) { |     public Long createOrder(AppOrderSaveReqVO createReqVO) { | ||||||
| @ -478,7 +481,12 @@ public class OrderServiceImpl implements OrderService { | |||||||
|             } |             } | ||||||
|  |  | ||||||
|         } else { |         } else { | ||||||
|             dishOrderDO.setReductionAmount(dishOrderDO.getReductionAmount().add(money)); |             BigDecimal orderMoney = diningPlatesService.getOrderMoney(orderId); | ||||||
|  |             BigDecimal add = dishOrderDO.getReductionAmount().add(money); | ||||||
|  |             if (orderMoney != null && orderMoney.compareTo(add) < 0) { | ||||||
|  |                 add = orderMoney; | ||||||
|  |             } | ||||||
|  |             dishOrderDO.setReductionAmount(add); | ||||||
|         } |         } | ||||||
|         dishOrderMapper.updateById(dishOrderDO); |         dishOrderMapper.updateById(dishOrderDO); | ||||||
|  |  | ||||||
|  | |||||||
| @ -94,4 +94,6 @@ public interface StoreOrderService { | |||||||
|     Long refund(Integer orderId); |     Long refund(Integer orderId); | ||||||
|  |  | ||||||
|     List<StoreOrderDO> selectPayOrder(); |     List<StoreOrderDO> selectPayOrder(); | ||||||
|  |  | ||||||
|  |     AddReqVO refundAdmin(Integer orderId); | ||||||
| } | } | ||||||
| @ -309,6 +309,10 @@ public class StoreOrderServiceImpl implements StoreOrderService { | |||||||
|     @Override |     @Override | ||||||
|     public void reduction(Long orderId, BigDecimal money) { |     public void reduction(Long orderId, BigDecimal money) { | ||||||
|         StoreOrderDO storeOrderDO = storeOrderMapper.selectById(orderId); |         StoreOrderDO storeOrderDO = storeOrderMapper.selectById(orderId); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         Double totalPrice = storeOrderDO.getTotalPrice(); |         Double totalPrice = storeOrderDO.getTotalPrice(); | ||||||
|         BigDecimal total = BigDecimal.valueOf(totalPrice).setScale(2, RoundingMode.HALF_UP); |         BigDecimal total = BigDecimal.valueOf(totalPrice).setScale(2, RoundingMode.HALF_UP); | ||||||
|         Double reductionPrice = storeOrderDO.getReductionPrice(); |         Double reductionPrice = storeOrderDO.getReductionPrice(); | ||||||
| @ -571,6 +575,58 @@ public class StoreOrderServiceImpl implements StoreOrderService { | |||||||
|                 .eq(StoreOrderDO::getStatus,StoreOrderStatusEnum.PAY.getCode())); |                 .eq(StoreOrderDO::getStatus,StoreOrderStatusEnum.PAY.getCode())); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public AddReqVO refundAdmin(Integer orderId) { | ||||||
|  |         StoreOrderDO storeOrderDO; | ||||||
|  |         synchronized (getStoreOrderLock(LockManager.CANCEL_KEY)) { | ||||||
|  |             storeOrderDO = storeOrderMapper.selectById(orderId); | ||||||
|  |             if(ObjectUtil.isEmpty(storeOrderDO)){ | ||||||
|  |                 throw exception(STORE_ORDER_NOT_EXISTS); | ||||||
|  |             } | ||||||
|  |             if( storeOrderDO.getStatus().equals(StoreOrderStatusEnum.REFUND.getCode())){ | ||||||
|  |                 throw exception(STATUS_ERROR_REFUND); | ||||||
|  |             } | ||||||
|  |             if(storeOrderDO.getStatus().equals(StoreOrderStatusEnum.CANCEL.getCode())){ | ||||||
|  |                 throw exception(STATUS_ERROR_CANCEL); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         //修改状态 | ||||||
|  |         storeOrderDO.setStatus(StoreOrderStatusEnum.REFUND.getCode()); | ||||||
|  |         storeOrderMapper.updateById(storeOrderDO); | ||||||
|  |  | ||||||
|  |         //退款 | ||||||
|  |         deductionService.reduction(storeOrderDO.getUserId(),BigDecimal.valueOf(storeOrderDO.getTotalPrice()) | ||||||
|  |                 ,BigDecimal.ZERO,BigDecimal.valueOf(storeOrderDO.getTotalPrice()),BigDecimal.ZERO); | ||||||
|  |  | ||||||
|  |         //更新库存 | ||||||
|  |         List<StoreOrderDetailDO> listByOrderId = orderDetailService.getListByOrderId(storeOrderDO.getOrderId()); | ||||||
|  |  | ||||||
|  |         AddReqVO addReqVO = new AddReqVO(); | ||||||
|  |         addReqVO.setType(InventoryTypeEnum.IN.getCode()); | ||||||
|  |         addReqVO.setOutType(OutTypeEnum.ORDER_ADD.getCode()); | ||||||
|  |         List<GoodsInfoReqVO> infos = new ArrayList<>(); | ||||||
|  |         for (StoreOrderDetailDO detail : listByOrderId){ | ||||||
|  |             GoodsInfoReqVO vo = new GoodsInfoReqVO(); | ||||||
|  |             BeanUtil.copyProperties(detail,vo); | ||||||
|  |             vo.setCarteenId(storeOrderDO.getCarteenId()); | ||||||
|  |             infos.add(vo); | ||||||
|  |         } | ||||||
|  |         addReqVO.setList(infos); | ||||||
|  |         storeGoodsInventoryService.createStoreGoodsInventory(addReqVO); | ||||||
|  |  | ||||||
|  |         //营业数据 | ||||||
|  |         StatisticsVo statisticsVo = new StatisticsVo(); | ||||||
|  |         statisticsVo.setCarteenId(storeOrderDO.getCarteenId()); | ||||||
|  |         statisticsVo.setTotalMoney(BigDecimal.valueOf(storeOrderDO.getTotalPrice()).negate()); | ||||||
|  |         statisticsVo.setOrderSum(-1); | ||||||
|  |         statisticsVo.setTime(storeOrderDO.getCreateTime()); | ||||||
|  |         statisticsVo.setOrderId(storeOrderDO.getOrderId().longValue()); | ||||||
|  |         storeBusinessService.updateStatistics(statisticsVo); | ||||||
|  |  | ||||||
|  |         return addReqVO; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public void test() { |     public void test() { | ||||||
|         //计算金额 |         //计算金额 | ||||||
|         //if (total.compareTo(wxAmount) <= 0) { |         //if (total.compareTo(wxAmount) <= 0) { | ||||||
|  | |||||||
| @ -77,10 +77,11 @@ public class QRCodeWithJWTUtil { | |||||||
|  |  | ||||||
|  |  | ||||||
|     public static void main(String[] args) { |     public static void main(String[] args) { | ||||||
|         String encode = DigestUtil.md5Hex("340"+ System.currentTimeMillis()); |         String encode = "https://yclhit.com:8896/qrCodes/code?id=177799"; | ||||||
|         System.out.println(encode); | //      System.out.println(encode); | ||||||
|         String fileName = "QRCode_" + "test" + ".png"; |         String fileName = "QRCode_" + "test" + ".png"; | ||||||
|         String path = QRCodeWithJWTUtil.BASE_PATH+fileName; |         String path = QRCodeWithJWTUtil.BASE_PATH+fileName; | ||||||
|         QRCodeWithJWTUtil.generateQRCode(encode, 350, 350, path); |         String s = QRCodeWithJWTUtil.generateQRCode(encode, 350, 350, path); | ||||||
|  |         System.out.println(s); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -67,4 +67,6 @@ public class DishesSaveReqVO { | |||||||
|     private String weekTime; |     private String weekTime; | ||||||
|  |  | ||||||
|     private String timeSlot; |     private String timeSlot; | ||||||
|  |  | ||||||
|  |     private Integer dailySigns; | ||||||
| } | } | ||||||
| @ -80,4 +80,6 @@ public class DishesDO extends BaseDO { | |||||||
|     private String weekTime; |     private String weekTime; | ||||||
|  |  | ||||||
|     private String timeSlot; |     private String timeSlot; | ||||||
|  |  | ||||||
|  |     private Integer dailySigns; | ||||||
| } | } | ||||||
| @ -31,7 +31,9 @@ import org.springframework.validation.annotation.Validated; | |||||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||||
|  | import java.time.LocalDate; | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
|  | import java.time.format.DateTimeFormatter; | ||||||
| import java.time.format.TextStyle; | import java.time.format.TextStyle; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -74,7 +76,7 @@ public class DishesServiceImpl implements DishesService { | |||||||
|         LocalDateTime today = LocalDateTime.now(); |         LocalDateTime today = LocalDateTime.now(); | ||||||
|         int hour = today.getHour(); |         int hour = today.getHour(); | ||||||
|         String time = dishesMapper.getTime(hour); |         String time = dishesMapper.getTime(hour); | ||||||
|         String dayOfWeekInChinese = today.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE); |         String dayOfWeekInChinese = getToday(); | ||||||
|         if(StrUtil.isBlank(createReqVO.getWeekTime())){ |         if(StrUtil.isBlank(createReqVO.getWeekTime())){ | ||||||
|             dishes.setWeekTime(dayOfWeekInChinese); |             dishes.setWeekTime(dayOfWeekInChinese); | ||||||
|         } |         } | ||||||
| @ -124,7 +126,7 @@ public class DishesServiceImpl implements DishesService { | |||||||
|         LocalDateTime today = LocalDateTime.now(); |         LocalDateTime today = LocalDateTime.now(); | ||||||
|         int hour = today.getHour(); |         int hour = today.getHour(); | ||||||
|         String time = dishesMapper.getTime(hour); |         String time = dishesMapper.getTime(hour); | ||||||
|         String dayOfWeekInChinese = today.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE); |         String dayOfWeekInChinese = getToday(); | ||||||
|         dishes.setWeekTime(dayOfWeekInChinese); |         dishes.setWeekTime(dayOfWeekInChinese); | ||||||
|         dishes.setTimeSlot(time); |         dishes.setTimeSlot(time); | ||||||
|         //计算每g多少钱 |         //计算每g多少钱 | ||||||
| @ -274,11 +276,7 @@ public class DishesServiceImpl implements DishesService { | |||||||
|         LocalDateTime today = LocalDateTime.now(); |         LocalDateTime today = LocalDateTime.now(); | ||||||
|         int hour = today.getHour(); |         int hour = today.getHour(); | ||||||
|         String time = dishesMapper.getTime(hour); |         String time = dishesMapper.getTime(hour); | ||||||
|         String dayOfWeekInChinese = today.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE); |         String dayOfWeekInChinese = getToday(); | ||||||
|  |  | ||||||
|         ArrayList<String> week = new ArrayList<>(); |  | ||||||
|         week.add(dayOfWeekInChinese); |  | ||||||
|         week.add("整周"); |  | ||||||
|  |  | ||||||
|         ArrayList<String> todayTime = new ArrayList<>(); |         ArrayList<String> todayTime = new ArrayList<>(); | ||||||
|         todayTime.add(time); |         todayTime.add(time); | ||||||
| @ -287,9 +285,9 @@ public class DishesServiceImpl implements DishesService { | |||||||
|         Long carteenId = deviceInfoService.getCarteen(getHearder()); |         Long carteenId = deviceInfoService.getCarteen(getHearder()); | ||||||
|         List<DishesDO> dishesDOS = dishesMapper.selectList(Wrappers.<DishesDO>lambdaQuery() |         List<DishesDO> dishesDOS = dishesMapper.selectList(Wrappers.<DishesDO>lambdaQuery() | ||||||
|                 .eq(DishesDO::getCarteenId, carteenId) |                 .eq(DishesDO::getCarteenId, carteenId) | ||||||
|                 .in(DishesDO::getWeekTime, week) |                 .and(w->w.eq(DishesDO::getWeekTime, dayOfWeekInChinese).or().eq(DishesDO::getDailySigns, 1)) | ||||||
|                 .in(DishesDO::getTimeSlot, todayTime) |                 .in(DishesDO::getTimeSlot, todayTime) | ||||||
|                 .orderByDesc(DishesDO::getCreateTime)); |                 .orderByDesc(DishesDO::getDailySigns,DishesDO::getCreateTime)); | ||||||
|         return dishesDOS; |         return dishesDOS; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @ -302,15 +300,12 @@ public class DishesServiceImpl implements DishesService { | |||||||
|     } |     } | ||||||
|     @Override |     @Override | ||||||
|     public List<DishesDO> getTodayDishesNew() { |     public List<DishesDO> getTodayDishesNew() { | ||||||
|         LocalDateTime today = LocalDateTime.now(); |         String dayOfWeekInChinese = getToday(); | ||||||
|         String dayOfWeekInChinese = today.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE); |  | ||||||
|  |  | ||||||
|         ArrayList<String> week = new ArrayList<>(); |  | ||||||
|         week.add(dayOfWeekInChinese); |  | ||||||
|         week.add("整周"); |  | ||||||
|  |  | ||||||
|         List<DishesDO> dishesDOS = dishesMapper.selectList(Wrappers.<DishesDO>lambdaQuery() |         List<DishesDO> dishesDOS = dishesMapper.selectList(Wrappers.<DishesDO>lambdaQuery() | ||||||
|                 .in(DishesDO::getWeekTime, week) |                 .eq(DishesDO::getWeekTime, dayOfWeekInChinese) | ||||||
|  |                 .or() | ||||||
|  |                 .eq(DishesDO::getDailySigns,1) | ||||||
|                 .orderByDesc(DishesDO::getCreateTime)); |                 .orderByDesc(DishesDO::getCreateTime)); | ||||||
|         return dishesDOS; |         return dishesDOS; | ||||||
|     } |     } | ||||||
| @ -326,4 +321,11 @@ public class DishesServiceImpl implements DishesService { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public String getToday(){ | ||||||
|  |         LocalDate currentDate = LocalDate.now(); | ||||||
|  |         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); | ||||||
|  |         return currentDate.format(formatter); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user
	 seesaw
					seesaw