diff --git a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java index aa0a20b..6e23cc6 100644 --- a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java +++ b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java @@ -111,4 +111,7 @@ public interface ErrorCodeConstants { ErrorCode BUILD_ORDER_GIFT_VOUCHER_STOCK_NOT_ENOUGH = new ErrorCode(1_011_009_002, "商品 SKU 库存不足"); ErrorCode BUILD_ORDER_GIFT_VOUCHER_SPU_NOT_EXISTS = new ErrorCode(1_011_009_003, "商品 SPU 不存在"); ErrorCode BUILD_ORDER_GIFT_VOUCHER_SPU_NOT_ENABLE = new ErrorCode(1_011_009_004, "商品 SPU【{}】不处于上架状态"); + + // ========== 贩卖机出货日志 1-011-010-000 ========== + ErrorCode DEVICE_LOG_NOT_EXISTS = new ErrorCode(1_011_010_000, "贩卖机出货日志不存在"); } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/devicelog/DeviceLogController.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/devicelog/DeviceLogController.java new file mode 100644 index 0000000..56f89fa --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/devicelog/DeviceLogController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.trade.controller.admin.devicelog; + +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.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.trade.controller.admin.devicelog.vo.*; +import cn.iocoder.yudao.module.trade.dal.dataobject.devicelog.DeviceLogDO; +import cn.iocoder.yudao.module.trade.service.devicelog.DeviceLogService; + +@Tag(name = "管理后台 - 贩卖机出货日志") +@RestController +@RequestMapping("/trade/device-log") +@Validated +public class DeviceLogController { + + @Resource + private DeviceLogService deviceLogService; + + @PostMapping("/create") + @Operation(summary = "创建贩卖机出货日志") + @PreAuthorize("@ss.hasPermission('trade:device-log:create')") + public CommonResult createDeviceLog(@Valid @RequestBody DeviceLogSaveReqVO createReqVO) { + return success(deviceLogService.createDeviceLog(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新贩卖机出货日志") + @PreAuthorize("@ss.hasPermission('trade:device-log:update')") + public CommonResult updateDeviceLog(@Valid @RequestBody DeviceLogSaveReqVO updateReqVO) { + deviceLogService.updateDeviceLog(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除贩卖机出货日志") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('trade:device-log:delete')") + public CommonResult deleteDeviceLog(@RequestParam("id") Long id) { + deviceLogService.deleteDeviceLog(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得贩卖机出货日志") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('trade:device-log:query')") + public CommonResult getDeviceLog(@RequestParam("id") Long id) { + DeviceLogDO deviceLog = deviceLogService.getDeviceLog(id); + return success(BeanUtils.toBean(deviceLog, DeviceLogRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得贩卖机出货日志分页") + @PreAuthorize("@ss.hasPermission('trade:device-log:query')") + public CommonResult> getDeviceLogPage(@Valid DeviceLogPageReqVO pageReqVO) { + PageResult pageResult = deviceLogService.getDeviceLogPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DeviceLogRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出贩卖机出货日志 Excel") + @PreAuthorize("@ss.hasPermission('trade:device-log:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportDeviceLogExcel(@Valid DeviceLogPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = deviceLogService.getDeviceLogPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "贩卖机出货日志.xls", "数据", DeviceLogRespVO.class, + BeanUtils.toBean(list, DeviceLogRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/devicelog/vo/DeviceLogPageReqVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/devicelog/vo/DeviceLogPageReqVO.java new file mode 100644 index 0000000..91f53cb --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/devicelog/vo/DeviceLogPageReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.trade.controller.admin.devicelog.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 DeviceLogPageReqVO extends PageParam { + + @Schema(description = "用户编号", example = "7104") + private Long userId; + + @Schema(description = "订单号", example = "1703") + private Long orderId; + + @Schema(description = "订单流水号") + private String orderNo; + + @Schema(description = "设备IMEI", example = "23208") + private String deviceId; + + @Schema(description = "出货状态", example = "1") + private Integer deviceStatus; + + @Schema(description = "内容") + private String content; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/devicelog/vo/DeviceLogRespVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/devicelog/vo/DeviceLogRespVO.java new file mode 100644 index 0000000..ea9b673 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/devicelog/vo/DeviceLogRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.trade.controller.admin.devicelog.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +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 DeviceLogRespVO { + + @Schema(description = "日志主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19186") + @ExcelProperty("日志主键") + private Long id; + + @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7104") + @ExcelProperty("用户编号") + private Long userId; + + @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1703") + @ExcelProperty("订单号") + private Long orderId; + + @Schema(description = "订单流水号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("订单流水号") + private String orderNo; + + @Schema(description = "设备IMEI", example = "23208") + @ExcelProperty("设备IMEI") + private String deviceId; + + @Schema(description = "出货状态", example = "1") + @ExcelProperty("出货状态") + private Integer deviceStatus; + + @Schema(description = "内容", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("内容") + private String content; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/devicelog/vo/DeviceLogSaveReqVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/devicelog/vo/DeviceLogSaveReqVO.java new file mode 100644 index 0000000..0a28d6e --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/devicelog/vo/DeviceLogSaveReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.trade.controller.admin.devicelog.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 贩卖机出货日志新增/修改 Request VO") +@Data +public class DeviceLogSaveReqVO { + + @Schema(description = "日志主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19186") + private Long id; + + @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7104") + @NotNull(message = "用户编号不能为空") + private Long userId; + + @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1703") + @NotNull(message = "订单号不能为空") + private Long orderId; + + @Schema(description = "订单流水号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "订单流水号不能为空") + private String orderNo; + + @Schema(description = "设备IMEI", example = "23208") + private String deviceId; + + @Schema(description = "出货状态", example = "1") + private Integer deviceStatus; + + @Schema(description = "内容", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "内容不能为空") + private String content; + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/devicelog/DeviceLogDO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/devicelog/DeviceLogDO.java new file mode 100644 index 0000000..2e915b3 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/devicelog/DeviceLogDO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.trade.dal.dataobject.devicelog; + +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("trade_device_log") +@KeySequence("trade_device_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DeviceLogDO extends BaseDO { + + /** + * 日志主键 + */ + @TableId + private Long id; + /** + * 用户编号 + */ + private Long userId; + /** + * 订单号 + */ + private Long orderId; + /** + * 订单流水号 + */ + private String orderNo; + /** + * 设备IMEI + */ + private String deviceId; + /** + * 出货状态 + */ + private Integer deviceStatus; + /** + * 内容 + */ + private String content; + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/devicelog/DeviceLogMapper.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/devicelog/DeviceLogMapper.java new file mode 100644 index 0000000..ead4eac --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/devicelog/DeviceLogMapper.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.trade.dal.mysql.devicelog; + +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.trade.dal.dataobject.devicelog.DeviceLogDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.trade.controller.admin.devicelog.vo.*; + +/** + * 贩卖机出货日志 Mapper + * + * @author 小如之家 + */ +@Mapper +public interface DeviceLogMapper extends BaseMapperX { + + default PageResult selectPage(DeviceLogPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DeviceLogDO::getUserId, reqVO.getUserId()) + .eqIfPresent(DeviceLogDO::getOrderId, reqVO.getOrderId()) + .eqIfPresent(DeviceLogDO::getOrderNo, reqVO.getOrderNo()) + .eqIfPresent(DeviceLogDO::getDeviceId, reqVO.getDeviceId()) + .eqIfPresent(DeviceLogDO::getDeviceStatus, reqVO.getDeviceStatus()) + .eqIfPresent(DeviceLogDO::getContent, reqVO.getContent()) + .betweenIfPresent(DeviceLogDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DeviceLogDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/devicelog/DeviceLogService.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/devicelog/DeviceLogService.java new file mode 100644 index 0000000..036e818 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/devicelog/DeviceLogService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.trade.service.devicelog; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.trade.controller.admin.devicelog.vo.*; +import cn.iocoder.yudao.module.trade.dal.dataobject.devicelog.DeviceLogDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 贩卖机出货日志 Service 接口 + * + * @author 小如之家 + */ +public interface DeviceLogService { + + /** + * 创建贩卖机出货日志 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDeviceLog(@Valid DeviceLogSaveReqVO createReqVO); + + /** + * 更新贩卖机出货日志 + * + * @param updateReqVO 更新信息 + */ + void updateDeviceLog(@Valid DeviceLogSaveReqVO updateReqVO); + + /** + * 删除贩卖机出货日志 + * + * @param id 编号 + */ + void deleteDeviceLog(Long id); + + /** + * 获得贩卖机出货日志 + * + * @param id 编号 + * @return 贩卖机出货日志 + */ + DeviceLogDO getDeviceLog(Long id); + + /** + * 获得贩卖机出货日志分页 + * + * @param pageReqVO 分页查询 + * @return 贩卖机出货日志分页 + */ + PageResult getDeviceLogPage(DeviceLogPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/devicelog/DeviceLogServiceImpl.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/devicelog/DeviceLogServiceImpl.java new file mode 100644 index 0000000..bc0f998 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/devicelog/DeviceLogServiceImpl.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.trade.service.devicelog; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.trade.controller.admin.devicelog.vo.*; +import cn.iocoder.yudao.module.trade.dal.dataobject.devicelog.DeviceLogDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.trade.dal.mysql.devicelog.DeviceLogMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; + +/** + * 贩卖机出货日志 Service 实现类 + * + * @author 小如之家 + */ +@Service +@Validated +public class DeviceLogServiceImpl implements DeviceLogService { + + @Resource + private DeviceLogMapper deviceLogMapper; + + @Override + public Long createDeviceLog(DeviceLogSaveReqVO createReqVO) { + // 插入 + DeviceLogDO deviceLog = BeanUtils.toBean(createReqVO, DeviceLogDO.class); + deviceLogMapper.insert(deviceLog); + // 返回 + return deviceLog.getId(); + } + + @Override + public void updateDeviceLog(DeviceLogSaveReqVO updateReqVO) { + // 校验存在 + validateDeviceLogExists(updateReqVO.getId()); + // 更新 + DeviceLogDO updateObj = BeanUtils.toBean(updateReqVO, DeviceLogDO.class); + deviceLogMapper.updateById(updateObj); + } + + @Override + public void deleteDeviceLog(Long id) { + // 校验存在 + validateDeviceLogExists(id); + // 删除 + deviceLogMapper.deleteById(id); + } + + private void validateDeviceLogExists(Long id) { + if (deviceLogMapper.selectById(id) == null) { + throw exception(DEVICE_LOG_NOT_EXISTS); + } + } + + @Override + public DeviceLogDO getDeviceLog(Long id) { + return deviceLogMapper.selectById(id); + } + + @Override + public PageResult getDeviceLogPage(DeviceLogPageReqVO pageReqVO) { + return deviceLogMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeDeviceOrderHandler.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeDeviceOrderHandler.java index 9293136..90308ba 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeDeviceOrderHandler.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeDeviceOrderHandler.java @@ -9,10 +9,12 @@ import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO; import cn.iocoder.yudao.module.product.enums.spu.ProductSpuTypesEnum; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; +import cn.iocoder.yudao.module.trade.controller.admin.devicelog.vo.DeviceLogSaveReqVO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderMapper; import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum; +import cn.iocoder.yudao.module.trade.service.devicelog.DeviceLogService; import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; import cn.iocoder.yudao.module.trade.service.order.bo.DispenseRequestBo; @@ -62,6 +64,9 @@ public class TradeDeviceOrderHandler implements TradeOrderHandler { @Resource private DeviceApi deviceApi; + @Resource + private DeviceLogService deviceLogService; + // TOKEN @Value("${xr.cabinet.token}") private String token; @@ -83,6 +88,11 @@ public class TradeDeviceOrderHandler implements TradeOrderHandler { // System.out.println("商品SPU ID列表 为空"); // return; // } + + DeviceLogSaveReqVO deviceLogSaveReqVO = new DeviceLogSaveReqVO(); + deviceLogSaveReqVO.setUserId(order.getUserId()); + deviceLogSaveReqVO.setOrderId(order.getId()); + deviceLogSaveReqVO.setOrderNo(order.getNo()); //查询spu表 List spuList = productSpuApi.getSpuList(spuIds); //判断商品类型是否有不是提货柜商品的 @@ -163,9 +173,18 @@ public class TradeDeviceOrderHandler implements TradeOrderHandler { System.out.println("响应结果: " + body); if (body.getCode() == 0) { System.out.println("出货成功!详情: " + body.getData()); + + deviceLogSaveReqVO.setDeviceId(user.getDeviceId()); + deviceLogSaveReqVO.setDeviceStatus(body.getCode()); + deviceLogSaveReqVO.setContent(body.getData()); + deviceLogService.createDeviceLog(deviceLogSaveReqVO); } else { System.out.println("操作失败!原因: " + body.getMsg()); log.error("订单--{}:[出货失败]:原因: {}",order.getNo(), body.getMsg()); + deviceLogSaveReqVO.setDeviceId(user.getDeviceId()); + deviceLogSaveReqVO.setDeviceStatus(body.getCode()); + deviceLogSaveReqVO.setContent(body.getData()); + deviceLogService.createDeviceLog(deviceLogSaveReqVO); } } // 3. 更新 TradeOrderDO 状态为已完成 @@ -178,19 +197,33 @@ public class TradeDeviceOrderHandler implements TradeOrderHandler { } catch (Exception e) { System.err.println("请求异常: " + e.getMessage()); log.error("订单--{}:[出货异常]:原因: {}",order.getNo(), e.getMessage()); + deviceLogSaveReqVO.setDeviceId(user.getDeviceId()); + deviceLogSaveReqVO.setDeviceStatus(500); + deviceLogSaveReqVO.setContent("[出货异常]原因:"+e.getMessage()); + deviceLogService.createDeviceLog(deviceLogSaveReqVO); } }else { System.out.println("订单明细中包含多个通道类型"); log.error("订单:{},明细中包含多个通道类型",order.getNo()); + deviceLogSaveReqVO.setDeviceId(user.getDeviceId()); + deviceLogSaveReqVO.setDeviceStatus(500); + deviceLogSaveReqVO.setContent("[出货异常]原因:订单明细中包含多个通道类型"); + deviceLogService.createDeviceLog(deviceLogSaveReqVO); } } else { System.out.println("订单明细中包含多个商品创建人"); log.error("订单:{},明细中包含多个商品创建人",order.getNo()); + deviceLogSaveReqVO.setDeviceStatus(500); + deviceLogSaveReqVO.setContent("[出货异常]原因:订单明细中包含多台贩卖机商品"); + deviceLogService.createDeviceLog(deviceLogSaveReqVO); } } }else { System.out.println("提货柜订单spu列表为空"); log.error("订单:{},提货柜订单spu列表为空",order.getNo()); + deviceLogSaveReqVO.setDeviceStatus(500); + deviceLogSaveReqVO.setContent("[出货异常]原因:提货柜订单spu列表为空"); + deviceLogService.createDeviceLog(deviceLogSaveReqVO); } } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeGiftVoucherOrderHandler.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeGiftVoucherOrderHandler.java index 77519c7..7df2895 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeGiftVoucherOrderHandler.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeGiftVoucherOrderHandler.java @@ -11,10 +11,12 @@ import cn.iocoder.yudao.module.promotion.api.giftvoucher.GiftVoucherApi; import cn.iocoder.yudao.module.promotion.api.giftvoucher.dto.GiftVoucherUseReqDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; +import cn.iocoder.yudao.module.trade.controller.admin.devicelog.vo.DeviceLogSaveReqVO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderMapper; import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum; +import cn.iocoder.yudao.module.trade.service.devicelog.DeviceLogService; import cn.iocoder.yudao.module.trade.service.order.bo.DispenseRequestBo; import cn.iocoder.yudao.module.trade.service.order.bo.DispenseResponseBo; import lombok.extern.slf4j.Slf4j; @@ -58,6 +60,9 @@ public class TradeGiftVoucherOrderHandler implements TradeOrderHandler { @Resource private DeviceApi deviceApi; + @Resource + private DeviceLogService deviceLogService; + // TOKEN @Value("${xr.cabinet.token}") private String token; @@ -81,6 +86,10 @@ public class TradeGiftVoucherOrderHandler implements TradeOrderHandler { // System.out.println("商品SPU ID列表 为空"); // return; // } + DeviceLogSaveReqVO deviceLogSaveReqVO = new DeviceLogSaveReqVO(); + deviceLogSaveReqVO.setUserId(order.getUserId()); + deviceLogSaveReqVO.setOrderId(order.getId()); + deviceLogSaveReqVO.setOrderNo(order.getNo()); //查询spu表 List spuList = productSpuApi.getSpuList(spuIds); //判断商品类型是否有不是提货柜商品的 @@ -161,9 +170,17 @@ public class TradeGiftVoucherOrderHandler implements TradeOrderHandler { System.out.println("响应结果: " + body); if (body.getCode() == 0) { System.out.println("出货成功!详情: " + body.getData()); + deviceLogSaveReqVO.setDeviceId(user.getDeviceId()); + deviceLogSaveReqVO.setDeviceStatus(body.getCode()); + deviceLogSaveReqVO.setContent(body.getData()); + deviceLogService.createDeviceLog(deviceLogSaveReqVO); } else { System.out.println("操作失败!原因: " + body.getMsg()); log.error("订单--{}:[出货失败]:原因: {}",order.getNo(), body.getMsg()); + deviceLogSaveReqVO.setDeviceId(user.getDeviceId()); + deviceLogSaveReqVO.setDeviceStatus(body.getCode()); + deviceLogSaveReqVO.setContent(body.getData()); + deviceLogService.createDeviceLog(deviceLogSaveReqVO); } } // 3. 更新 TradeOrderDO 状态为已完成 @@ -176,19 +193,33 @@ public class TradeGiftVoucherOrderHandler implements TradeOrderHandler { } catch (Exception e) { System.err.println("请求异常: " + e.getMessage()); log.error("订单--{}:[出货异常]:原因: {}",order.getNo(), e.getMessage()); + deviceLogSaveReqVO.setDeviceId(user.getDeviceId()); + deviceLogSaveReqVO.setDeviceStatus(500); + deviceLogSaveReqVO.setContent("[出货异常]原因:"+e.getMessage()); + deviceLogService.createDeviceLog(deviceLogSaveReqVO); } }else { System.out.println("订单明细中包含多个通道类型"); log.error("订单:{},明细中包含多个通道类型",order.getNo()); + deviceLogSaveReqVO.setDeviceId(user.getDeviceId()); + deviceLogSaveReqVO.setDeviceStatus(500); + deviceLogSaveReqVO.setContent("[出货异常]原因:订单明细中包含多个通道类型"); + deviceLogService.createDeviceLog(deviceLogSaveReqVO); } } else { System.out.println("订单明细中包含多个商品创建人"); log.error("订单:{},明细中包含多个商品创建人",order.getNo()); + deviceLogSaveReqVO.setDeviceStatus(500); + deviceLogSaveReqVO.setContent("[出货异常]原因:订单明细中包含多台贩卖机商品"); + deviceLogService.createDeviceLog(deviceLogSaveReqVO); } } }else { System.out.println("提货柜订单spu列表为空"); log.error("订单:{},提货柜订单spu列表为空",order.getNo()); + deviceLogSaveReqVO.setDeviceStatus(500); + deviceLogSaveReqVO.setContent("[出货异常]原因:提货柜订单spu列表为空"); + deviceLogService.createDeviceLog(deviceLogSaveReqVO); } // 提货券更改为已使用 giftVoucherApi.useGiftVoucher(new GiftVoucherUseReqDTO().setId(order.getGiftVoucherId()).setUserId(order.getUserId())