diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java index 4d657907..ca0c71f6 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java @@ -179,5 +179,6 @@ public interface ErrorCodeConstants { ErrorCode WX_STORE_ORDER_NOT_EXISTS = new ErrorCode(1_004_032_00, "微信付款码订单不存在"); ErrorCode WX_STORE_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_004_032_01, "微信付款码订单详情不存在"); + ErrorCode ORDER_DETAIL_LOG_NOT_EXISTS = new ErrorCode(1_004_033_01, "打菜日志不存在"); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetaillog/OrderDetailLogController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetaillog/OrderDetailLogController.java new file mode 100644 index 00000000..da720342 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetaillog/OrderDetailLogController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.member.controller.admin.orderdetaillog; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.member.controller.admin.orderdetaillog.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.orderdetaillog.OrderDetailLogDO; +import cn.iocoder.yudao.module.member.service.orderdetaillog.OrderDetailLogService; + +@Tag(name = "管理后台 - 打菜日志") +@RestController +@RequestMapping("/member/order-detail-log") +@Validated +public class OrderDetailLogController { + + @Resource + private OrderDetailLogService orderDetailLogService; + + @PostMapping("/create") + @Operation(summary = "创建打菜日志") + @PreAuthorize("@ss.hasPermission('member:order-detail-log:create')") + public CommonResult createOrderDetailLog(@Valid @RequestBody OrderDetailLogSaveReqVO createReqVO) { + return success(orderDetailLogService.createOrderDetailLog(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新打菜日志") + @PreAuthorize("@ss.hasPermission('member:order-detail-log:update')") + public CommonResult updateOrderDetailLog(@Valid @RequestBody OrderDetailLogSaveReqVO updateReqVO) { + orderDetailLogService.updateOrderDetailLog(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除打菜日志") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:order-detail-log:delete')") + public CommonResult deleteOrderDetailLog(@RequestParam("id") Long id) { + orderDetailLogService.deleteOrderDetailLog(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得打菜日志") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:order-detail-log:query')") + public CommonResult getOrderDetailLog(@RequestParam("id") Long id) { + OrderDetailLogDO orderDetailLog = orderDetailLogService.getOrderDetailLog(id); + return success(BeanUtils.toBean(orderDetailLog, OrderDetailLogRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得打菜日志分页") + @PreAuthorize("@ss.hasPermission('member:order-detail-log:query')") + public CommonResult> getOrderDetailLogPage(@Valid OrderDetailLogPageReqVO pageReqVO) { + PageResult pageResult = orderDetailLogService.getOrderDetailLogPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, OrderDetailLogRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出打菜日志 Excel") + @PreAuthorize("@ss.hasPermission('member:order-detail-log:export')") + @OperateLog(type = EXPORT) + public void exportOrderDetailLogExcel(@Valid OrderDetailLogPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = orderDetailLogService.getOrderDetailLogPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "打菜日志.xls", "数据", OrderDetailLogRespVO.class, + BeanUtils.toBean(list, OrderDetailLogRespVO.class)); + } + +} \ 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/admin/orderdetaillog/vo/OrderDetailLogPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetaillog/vo/OrderDetailLogPageReqVO.java new file mode 100644 index 00000000..5c7b6867 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetaillog/vo/OrderDetailLogPageReqVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.member.controller.admin.orderdetaillog.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 打菜日志分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OrderDetailLogPageReqVO extends PageParam { + + @Schema(description = "设备安卓码") + private String deviceSn; + + @Schema(description = "门店id", example = "32573") + private Long storeId; + + @Schema(description = "请求参数") + private String param; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "存入参数") + private String insertParam; + +} \ 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/admin/orderdetaillog/vo/OrderDetailLogRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetaillog/vo/OrderDetailLogRespVO.java new file mode 100644 index 00000000..3831cf01 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetaillog/vo/OrderDetailLogRespVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.member.controller.admin.orderdetaillog.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 打菜日志 Response VO") +@Data +@ExcelIgnoreUnannotated +public class OrderDetailLogRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25176") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "设备安卓码") + @ExcelProperty("设备安卓码") + private String deviceSn; + + @Schema(description = "门店id", example = "32573") + @ExcelProperty("门店id") + private Long storeId; + + @Schema(description = "请求参数") + @ExcelProperty("请求参数") + private String param; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "存入参数") + @ExcelProperty("存入参数") + private String insertParam; + +} \ 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/admin/orderdetaillog/vo/OrderDetailLogSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetaillog/vo/OrderDetailLogSaveReqVO.java new file mode 100644 index 00000000..9c1e3ef2 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetaillog/vo/OrderDetailLogSaveReqVO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.member.controller.admin.orderdetaillog.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 打菜日志新增/修改 Request VO") +@Data +public class OrderDetailLogSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25176") + private Long id; + + @Schema(description = "设备安卓码") + private String deviceSn; + + @Schema(description = "门店id", example = "32573") + private Long storeId; + + @Schema(description = "请求参数") + private String param; + + @Schema(description = "存入参数") + private String insertParam; + +} \ 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/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 8a8266d3..77794706 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 @@ -57,15 +57,12 @@ public class AppDiningPlatesController { public CommonResult bindByFace(@RequestBody BindVO vo) { return success(diningPlatesService.bindByFace(vo.getDiningPlatesNum(), vo.getFaceId(), vo.getStoreId(), vo.getMobile(),vo.getFaceData())); } - - -// @GetMapping("/bindByFace") -// @Operation(summary = "人脸绑定餐盘") -// public CommonResult bindByFace(String diningPlatesNum, Long faceId,Long storeId,String mobile) { -// return success(diningPlatesService.bindByFace(diningPlatesNum,faceId,storeId,mobile)); -// } - - + + @GetMapping("/bindByFace") + @Operation(summary = "人脸绑定餐盘") + public CommonResult bindByFace(String diningPlatesNum, Long faceId,Long storeId,String mobile) { + return success(diningPlatesService.bindByFace(diningPlatesNum,faceId,storeId,mobile,null)); + } @GetMapping("/checkBind") @Operation(summary = "验证餐盘绑定") diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/orderdetaillog/OrderDetailLogDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/orderdetaillog/OrderDetailLogDO.java new file mode 100644 index 00000000..990e36dd --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/orderdetaillog/OrderDetailLogDO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.orderdetaillog; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 打菜日志 DO + * + * @author 我是秦俊旗 + */ +@TableName("member_order_detail_log") +@KeySequence("member_order_detail_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OrderDetailLogDO extends BaseDO { + + /** + * 主键 + */ + @TableId + private Long id; + /** + * 设备安卓码 + */ + private String deviceSn; + /** + * 门店id + */ + private Long storeId; + /** + * 请求参数 + */ + private String param; + /** + * 存入参数 + */ + private String insertParam; + +} \ 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/mysql/orderdetaillog/OrderDetailLogMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderdetaillog/OrderDetailLogMapper.java new file mode 100644 index 00000000..0da33bd8 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderdetaillog/OrderDetailLogMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.member.dal.mysql.orderdetaillog; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.member.dal.dataobject.orderdetaillog.OrderDetailLogDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.orderdetaillog.vo.*; + +/** + * 打菜日志 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface OrderDetailLogMapper extends BaseMapperX { + + default PageResult selectPage(OrderDetailLogPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(OrderDetailLogDO::getDeviceSn, reqVO.getDeviceSn()) + .eqIfPresent(OrderDetailLogDO::getStoreId, reqVO.getStoreId()) + .eqIfPresent(OrderDetailLogDO::getParam, reqVO.getParam()) + .betweenIfPresent(OrderDetailLogDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(OrderDetailLogDO::getInsertParam, reqVO.getInsertParam()) + .orderByDesc(OrderDetailLogDO::getId)); + } + +} \ 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/async/MemberAsyncService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/async/MemberAsyncService.java index 67e65994..f59856bb 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/async/MemberAsyncService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/async/MemberAsyncService.java @@ -20,4 +20,6 @@ public interface MemberAsyncService { void batchRecord(AddReqVO addReqVO); void saveFace(String faceData,String path); + +// void saveOrderDetailLog(AppOrderDetailSaveReqVO vo); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/async/MemberAsyncServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/async/MemberAsyncServiceImpl.java index bcf47e29..068c12b6 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/async/MemberAsyncServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/async/MemberAsyncServiceImpl.java @@ -14,12 +14,15 @@ import cn.iocoder.yudao.module.member.dal.dataobject.storegoodsinventoryrecord.S import cn.iocoder.yudao.module.member.dal.mysql.diningplates.DiningPlatesMapper; import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper; import cn.iocoder.yudao.module.member.dal.mysql.storegoodsinventoryrecord.StoreGoodsInventoryRecordMapper; +import cn.iocoder.yudao.module.member.service.orderdetaillog.OrderDetailLogService; import cn.iocoder.yudao.module.member.service.storegoods.StoreGoodsService; import cn.iocoder.yudao.module.system.api.dishesnutrition.DishesNutritionApi; import cn.iocoder.yudao.module.system.api.dishesnutrition.dto.DishesNutritionRespDTO; +import jodd.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.File; @@ -54,6 +57,9 @@ public class MemberAsyncServiceImpl implements MemberAsyncService{ @Resource private StoreGoodsService storeGoodsService; + @Resource + private OrderDetailLogService detailLogService; + @Resource private StoreGoodsInventoryRecordMapper storeGoodsInventoryRecordMapper; @@ -68,6 +74,7 @@ public class MemberAsyncServiceImpl implements MemberAsyncService{ @Async @Override + @Transactional(rollbackFor = Exception.class) public void createOrderDetail(AppOrderDetailSaveReqVO createReqVO, OtherVO otherVO) { DishesNutritionRespDTO dishEnergy = dishesNutritionApi.getDishEnergy(createReqVO.getDishesId()); @@ -112,31 +119,39 @@ public class MemberAsyncServiceImpl implements MemberAsyncService{ @Async @Override public void saveFace(String faceData, String path) { - try { - // 解码 Base64 字符串 - // 过滤非法字符 - String s = faceData.replaceAll("\n", ""); - byte[] decodedBytes = Base64.getDecoder().decode(s); + if (StringUtil.isNotBlank(faceData)){ + try { + // 解码 Base64 字符串 + // 过滤非法字符 + String s = faceData.replaceAll("\n", ""); + byte[] decodedBytes = Base64.getDecoder().decode(s); - // 指定保存文件的路径// 根据实际情况修改文件路径和文件名 - String uploadDirPath= "orderFaceData/"; + // 指定保存文件的路径// 根据实际情况修改文件路径和文件名 + String uploadDirPath= "orderFaceData/"; - // 创建上传文件目录 - File uploadDir = new File(uploadDirPath); - if (!uploadDir.exists()) { - uploadDir.mkdir(); + // 创建上传文件目录 + File uploadDir = new File(uploadDirPath); + if (!uploadDir.exists()) { + uploadDir.mkdir(); + } + // 创建文件输出流 + try (FileOutputStream fos = new FileOutputStream(path)) { + // 将解码后的数据写入文件 + fos.write(decodedBytes); + System.out.println("文件保存成功!"); + } + } catch (Exception e) { + e.printStackTrace(); } - // 创建文件输出流 - try (FileOutputStream fos = new FileOutputStream(path)) { - // 将解码后的数据写入文件 - fos.write(decodedBytes); - System.out.println("文件保存成功!"); - } - } catch (Exception e) { - e.printStackTrace(); } } +// @Async +// @Override +// public void saveOrderDetailLog(AppOrderDetailSaveReqVO vo) { +// detailLogService.insertOne(logDO); +// } + public void discard(){ //DishesNutritionRespDTO dishEnergy = dishesNutritionApi.getDishEnergy(createReqVO.getDishesId()); // 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 8d791000..b02be24c 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,8 +1,10 @@ package cn.iocoder.yudao.module.member.service.orderdetail; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.member.controller.admin.orderdetaillog.vo.OrderDetailLogSaveReqVO; import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailPageReqVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailRespVO; @@ -16,6 +18,7 @@ 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.member.service.async.MemberAsyncService; import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService; +import cn.iocoder.yudao.module.member.service.orderdetaillog.OrderDetailLogService; import cn.iocoder.yudao.module.member.util.MemberTimeUtils; import cn.iocoder.yudao.module.system.api.dish.DishesApi; import cn.iocoder.yudao.module.system.api.dish.dto.DishesRespDto; @@ -66,6 +69,8 @@ public class OrderDetailServiceImpl implements OrderDetailService { private HttpServletRequest httpServletRequest; @Resource private MemberAsyncService asyncService; + @Resource + private OrderDetailLogService orderDetailLogService; @Override @@ -81,6 +86,11 @@ public class OrderDetailServiceImpl implements OrderDetailService { diningPlatesDO.setDiningPlatesNum(createReqVO.getDiningPlatesNum()); diningPlatesService.insertDiningPlates(diningPlatesDO); } + //计算新总价 + DishesRespDto dish = dishesApi.getDish(createReqVO.getDishesId()); + if(createReqVO.getWeight().compareTo(new BigDecimal(dish.getErrorNum()))<=0){ + return 0L; + } if(diningPlatesDO.getOrderId() == null){ //创建初始订单 @@ -93,8 +103,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { diningPlatesDO.setStatus(DiningPlatesDO.USE); diningPlatesMapper.updateById(diningPlatesDO); } - //计算新总价 - DishesRespDto dish = dishesApi.getDish(createReqVO.getDishesId()); + String old = stringRedisTemplate.opsForValue().get(createReqVO.getDiningPlatesNum()+"-" +createReqVO.getStoreId()); BigDecimal oldBigDecimal = new BigDecimal(StrUtil.isBlank(old)?"0":old); //计算每个菜品的价格 @@ -103,15 +112,22 @@ public class OrderDetailServiceImpl implements OrderDetailService { BigDecimal newPrice = bigDecimal1.add(oldBigDecimal).setScale(2, RoundingMode.HALF_UP); stringRedisTemplate.opsForValue().set(createReqVO.getDiningPlatesNum() + "-" +createReqVO.getStoreId(), newPrice.toString()); - OtherVO otherVO = new OtherVO(); - otherVO.setSn(getHearder()); + String header = getHearder(); + otherVO.setSn(header); otherVO.setOrderId(diningPlatesDO.getOrderId()); otherVO.setDishesName(dish.getDishesName()); otherVO.setDishesImageUrl(dish.getDishesImageUrl()); otherVO.setPrice(bigDecimal1); otherVO.setUnitPrice(dish.getDishesSumPrice()); asyncService.createOrderDetail(createReqVO,otherVO); + //记录日志 + OrderDetailLogSaveReqVO orderDetailLogSaveReqVO = new OrderDetailLogSaveReqVO(); + orderDetailLogSaveReqVO.setStoreId(createReqVO.getStoreId()); + orderDetailLogSaveReqVO.setDeviceSn(header); + orderDetailLogSaveReqVO.setParam(JSONUtil.toJsonStr(createReqVO)); + orderDetailLogSaveReqVO.setInsertParam(JSONUtil.toJsonStr(otherVO)); + orderDetailLogService.createOrderDetailLog(orderDetailLogSaveReqVO); // 返回写死 return 0L; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetaillog/OrderDetailLogService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetaillog/OrderDetailLogService.java new file mode 100644 index 00000000..915ba27a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetaillog/OrderDetailLogService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.member.service.orderdetaillog; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.orderdetaillog.vo.OrderDetailLogPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.orderdetaillog.vo.OrderDetailLogSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.orderdetaillog.OrderDetailLogDO; + +import javax.validation.Valid; + +/** + * 打菜日志 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface OrderDetailLogService { + + /** + * 创建打菜日志 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createOrderDetailLog(@Valid OrderDetailLogSaveReqVO createReqVO); + + /** + * 更新打菜日志 + * + * @param updateReqVO 更新信息 + */ + void updateOrderDetailLog(@Valid OrderDetailLogSaveReqVO updateReqVO); + + /** + * 删除打菜日志 + * + * @param id 编号 + */ + void deleteOrderDetailLog(Long id); + + /** + * 获得打菜日志 + * + * @param id 编号 + * @return 打菜日志 + */ + OrderDetailLogDO getOrderDetailLog(Long id); + + /** + * 获得打菜日志分页 + * + * @param pageReqVO 分页查询 + * @return 打菜日志分页 + */ + PageResult getOrderDetailLogPage(OrderDetailLogPageReqVO pageReqVO); + +} \ 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/orderdetaillog/OrderDetailLogServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetaillog/OrderDetailLogServiceImpl.java new file mode 100644 index 00000000..7a6cbf4f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetaillog/OrderDetailLogServiceImpl.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.member.service.orderdetaillog; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.member.controller.admin.orderdetaillog.vo.OrderDetailLogPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.orderdetaillog.vo.OrderDetailLogSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.orderdetaillog.OrderDetailLogDO; +import cn.iocoder.yudao.module.member.dal.mysql.orderdetaillog.OrderDetailLogMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ORDER_DETAIL_LOG_NOT_EXISTS; + +/** + * 打菜日志 Service 实现类 + * + * @author 我是秦俊旗 + */ +@Service +@Validated +public class OrderDetailLogServiceImpl implements OrderDetailLogService { + + @Resource + private OrderDetailLogMapper orderDetailLogMapper; + + @Override + public Long createOrderDetailLog(OrderDetailLogSaveReqVO createReqVO) { + // 插入 + OrderDetailLogDO orderDetailLog = BeanUtils.toBean(createReqVO, OrderDetailLogDO.class); + orderDetailLogMapper.insert(orderDetailLog); + // 返回 + return orderDetailLog.getId(); + } + + @Override + public void updateOrderDetailLog(OrderDetailLogSaveReqVO updateReqVO) { + // 校验存在 + validateOrderDetailLogExists(updateReqVO.getId()); + // 更新 + OrderDetailLogDO updateObj = BeanUtils.toBean(updateReqVO, OrderDetailLogDO.class); + orderDetailLogMapper.updateById(updateObj); + } + + @Override + public void deleteOrderDetailLog(Long id) { + // 校验存在 + validateOrderDetailLogExists(id); + // 删除 + orderDetailLogMapper.deleteById(id); + } + + private void validateOrderDetailLogExists(Long id) { + if (orderDetailLogMapper.selectById(id) == null) { + throw exception(ORDER_DETAIL_LOG_NOT_EXISTS); + } + } + + @Override + public OrderDetailLogDO getOrderDetailLog(Long id) { + return orderDetailLogMapper.selectById(id); + } + + @Override + public PageResult getOrderDetailLogPage(OrderDetailLogPageReqVO pageReqVO) { + return orderDetailLogMapper.selectPage(pageReqVO); + } + +} \ 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/dto/DishesRespDto.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dish/dto/DishesRespDto.java index 3dbb5ba6..611e9a48 100644 --- 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 @@ -41,5 +41,7 @@ public class DishesRespDto { */ private BigDecimal dishesNumber; + private Integer errorNum; + } \ No newline at end of file