12个文件已修改
104 ■■■■ 已修改文件
src/main/java/com/webmanage/controller/OrderController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/webmanage/dto/OrderApprovalDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/webmanage/entity/OrderApproval.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/webmanage/entity/OrderAttachment.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/webmanage/entity/OrderEvaluation.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/webmanage/service/OrderInfoService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/webmanage/service/TokenService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/webmanage/service/impl/TokenServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-prod.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderInfoMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/webmanage/controller/OrderController.java
@@ -68,7 +68,7 @@
    @GetMapping("/idempotency/token")
    @ApiOperation("获取一次性防重复提交 Token")
    public Result<Object> getIdempotencyToken(@RequestParam(required = false) Long userId) {
    public Result<Object> getIdempotencyToken(@RequestParam(required = false) String userId) {
        try {
            String token = tokenService.generateToken(userId);
            return Result.success("token生成",token);
@@ -192,7 +192,7 @@
            @ApiParam("附件地址") @RequestParam @NotBlank String fileUrl,
            @ApiParam("存储桶名称") @RequestParam String bucketName,
            @ApiParam("对象名称") @RequestParam String objectName,
            @ApiParam("上传用户ID") @RequestParam @NotNull Long uploadUserId,
            @ApiParam("上传用户ID") @RequestParam @NotNull String uploadUserId,
            @ApiParam("上传用户名") @RequestParam @NotBlank String uploadUserName,
            @ApiParam("附件类型") @RequestParam String attachmentType,
            @ApiParam("附件描述") @RequestParam String description) {
@@ -212,7 +212,7 @@
    @ApiOperation("添加订单评价")
    public Result<Boolean> addOrderEvaluation(
            @ApiParam("订单ID") @RequestParam @NotBlank String orderId,
            @ApiParam("评价人ID") @RequestParam @NotNull Long evaluatorId,
            @ApiParam("评价人ID") @RequestParam @NotNull String evaluatorId,
            @ApiParam("评价人姓名") @RequestParam @NotBlank String evaluatorName,
            @ApiParam("评价人类型") @RequestParam @NotBlank String evaluatorType,
            @ApiParam("评价内容") @RequestParam @NotBlank String content,
src/main/java/com/webmanage/dto/OrderApprovalDTO.java
@@ -22,7 +22,7 @@
    @ApiModelProperty("审批人ID")
    @NotNull(message = "审批人ID不能为空")
    private Long approverId;
    private String approverId;
    @ApiModelProperty("审批人姓名")
    @NotBlank(message = "审批人姓名不能为空")
src/main/java/com/webmanage/entity/OrderApproval.java
@@ -39,7 +39,7 @@
    @ApiModelProperty("审批人ID")
    @TableField("approver_id")
    private Long approverId;
    private String approverId;
    @ApiModelProperty("审批人姓名")
    @TableField("approver_name")
src/main/java/com/webmanage/entity/OrderAttachment.java
@@ -59,7 +59,7 @@
    @ApiModelProperty("上传用户ID")
    @TableField("upload_user_id")
    private Long uploadUserId;
    private String uploadUserId;
    @ApiModelProperty("上传用户名")
    @TableField("upload_user_name")
src/main/java/com/webmanage/entity/OrderEvaluation.java
@@ -27,7 +27,7 @@
    @ApiModelProperty("评价人ID")
    @TableField("evaluator_id")
    private Long evaluatorId;
    private String evaluatorId;
    @ApiModelProperty("评价人姓名")
    @TableField("evaluator_name")
src/main/java/com/webmanage/service/OrderInfoService.java
@@ -60,13 +60,13 @@
     */
    Long uploadOrderAttachment(String orderId, String fileName, String originalName, 
                             String fileType, Long fileSize, String fileUrl, 
                             String bucketName, String objectName, Long uploadUserId,
                             String bucketName, String objectName, String uploadUserId,
                             String uploadUserName, String attachmentType, String description);
    /**
     * 添加订单评价
     */
    boolean addOrderEvaluation(String orderId, Long evaluatorId, String evaluatorName,
    boolean addOrderEvaluation(String orderId, String evaluatorId, String evaluatorName,
                             String evaluatorType, String content, Integer rating, 
                             Integer serviceRating, Integer qualityRating, Integer deliveryRating, 
                             Boolean isAnonymous);
src/main/java/com/webmanage/service/TokenService.java
@@ -9,7 +9,7 @@
     * @param userId 可选的用户ID,仅用于追踪
     * @return token 字符串
     */
    String generateToken(Long userId);
    String generateToken(String userId);
    /**
     * 校验并消费 Token(一次性)。成功返回 true,失败/不存在/过期返回 false。
src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
@@ -635,7 +635,7 @@
    @Transactional(rollbackFor = Exception.class)
    public Long uploadOrderAttachment(String orderId, String fileName, String originalName, 
                                    String fileType, Long fileSize, String fileUrl, 
                                    String bucketName, String objectName, Long uploadUserId,
                                    String bucketName, String objectName, String uploadUserId,
                                    String uploadUserName, String attachmentType, String description) {
        // 参数校验
        if (!StringUtils.hasText(orderId)) {
@@ -677,7 +677,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean addOrderEvaluation(String orderId, Long evaluatorId, String evaluatorName,
    public boolean addOrderEvaluation(String orderId, String evaluatorId, String evaluatorName,
                                   String evaluatorType, String content, Integer rating, 
                                   Integer serviceRating, Integer qualityRating, Integer deliveryRating, 
                                   Boolean isAnonymous) {
@@ -1300,46 +1300,50 @@
        try {
            // 1. 删除订单附件(包括MinIO文件和数据库记录)
            log.info("开始删除订单附件,订单ID: {}", orderId);
            List<OrderAttachment> attachments = orderAttachmentMapper.selectByOrderId(orderId);
            for (OrderAttachment attachment : attachments) {
                try {
                    // 删除MinIO中的文件
                    if (StringUtils.hasText(attachment.getObjectName())) {
                        log.info("删除MinIO文件,对象名称: {}", attachment.getObjectName());
                        minioService.deleteFile(attachment.getObjectName());
                    }
                    // 删除数据库记录
                    orderAttachmentMapper.deleteById(attachment.getId());
                    log.info("删除附件记录成功,附件ID: {}", attachment.getId());
                } catch (Exception e) {
                    log.error("删除附件失败,附件ID: {}, 错误: {}", attachment.getId(), e.getMessage());
                    // 继续删除其他附件,不中断整个流程
                }
            }
//            List<OrderAttachment> attachments = orderAttachmentMapper.selectByOrderId(orderId);
//            for (OrderAttachment attachment : attachments) {
//                try {
//                    // 删除MinIO中的文件
//                    if (StringUtils.hasText(attachment.getObjectName())) {
//                        log.info("删除MinIO文件,对象名称: {}", attachment.getObjectName());
//                        minioService.deleteFile(attachment.getObjectName());
//                    }
//                    // 删除数据库记录
//                    orderAttachmentMapper.deleteById(attachment.getId());
//                    log.info("删除附件记录成功,附件ID: {}", attachment.getId());
//                } catch (Exception e) {
//                    log.error("删除附件失败,附件ID: {}, 错误: {}", attachment.getId(), e.getMessage());
//                    // 继续删除其他附件,不中断整个流程
//                }
//            }
            // 2. 逻辑删除订单详情
            log.info("开始逻辑删除订单详情,订单ID: {}", orderId);
            // log.info("开始逻辑删除订单详情,订单ID: {}", orderId);
            // 先查询订单详情列表,然后逐个逻辑删除
            List<OrderDetail> orderDetails = orderDetailMapper.selectByOrderId(orderId);
            int detailDeleted = 0;
            for (OrderDetail detail : orderDetails) {
                int result = orderDetailMapper.deleteById(detail.getId());
                if (result > 0) {
                    detailDeleted++;
                }
            }
            log.info("逻辑删除订单详情完成,影响行数: {}", detailDeleted);
//            List<OrderDetail> orderDetails = orderDetailMapper.selectByOrderId(orderId);
//            int detailDeleted = 0;
//            for (OrderDetail detail : orderDetails) {
//                int result = orderDetailMapper.deleteById(detail.getId());
//                if (result > 0) {
//                    detailDeleted++;
//                }
//            }
//            log.info("逻辑删除订单详情完成,影响行数: {}", detailDeleted);
            // 3. 删除订单信息(逻辑删除)
            log.info("开始删除订单信息,订单ID: {}", orderId);
            int orderDeleted = this.baseMapper.deleteById(orderId);
            log.info("删除订单信息完成,影响行数: {}", orderDeleted);
//            log.info("开始删除订单信息,订单ID: {}", orderId);
//            int orderDeleted = this.baseMapper.deleteById(orderId);
//            log.info("删除订单信息完成,影响行数: {}", orderDeleted);
            // 更新订单状态为已完成
            orderInfo.setOrderStatus("已取消");
            orderInfo.setUpdatedAt(LocalDateTime.now());
            int orderDeleted = this.baseMapper.updateById(orderInfo);
            if (orderDeleted > 0) {
                log.info("订单取消成功,订单ID: {}", orderId);
                return true;
            } else {
                log.error("删除订单信息失败,影响行数为0,订单ID: {}", orderId);
                log.error("更新订单信息失败,影响行数为0,订单ID: {}", orderId);
                throw new BusinessException("删除订单信息失败");
            }
        } catch (Exception e) {
src/main/java/com/webmanage/service/impl/TokenServiceImpl.java
@@ -18,7 +18,7 @@
    private RedisTemplate<String, Object> redisTemplate;
    @Override
    public String generateToken(Long userId) {
    public String generateToken(String userId) {
        String token = UUID.randomUUID().toString().replace("-", "");
        String key = IDEMPOTENCY_TOKEN_PREFIX + token;
        // 值不重要,设置一个标记即可
src/main/resources/application-prod.yml
@@ -64,7 +64,7 @@
   endpoint: http://192.168.20.52:9000
   access-key: minioadmin
   secret-key: AES:c4d4cefddd95e6733df755af0e29839c104ee8baa55eb53cdc24
   part-size: 104857600
   # part-size: 104857600
   bucket-name: dev
src/main/resources/application.yml
@@ -2,6 +2,8 @@
  port: 8089
  servlet:
    context-path: /admin
  tomcat:
    max-swallow-size: 500MB
spring:
  application:
@@ -16,7 +18,11 @@
  #mcv配置
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
      matching-strategy: ant_path_matcher
  servlet:
    multipart:
      max-file-size: 500MB
      max-request-size: 500MB
# MyBatis Plus配置
mybatis-plus:
src/main/resources/mapper/OrderInfoMapper.xml
@@ -153,7 +153,7 @@
        <include refid="Base_Column_List"/>
        FROM tb_order_info
        WHERE deleted = 0
        AND order_status IN ('待上传文件', '待审批授权','待授权', '待交易确认', '已完成', '已取消')
        AND order_status IN ('待审批授权','待授权', '待交易确认', '已完成', '已取消')
        <if test="orderStatus != null and orderStatus != ''">
            AND order_status = #{orderStatus}
        </if>
@@ -203,7 +203,7 @@
        <include refid="Base_Column_List"/>
        FROM tb_order_info
        WHERE deleted = 0
        AND order_status IN ('待上传文件', '待授权', '待审批授权', '待交易确认', '已完成', '已取消')
        AND order_status IN ('待授权', '待审批授权', '待交易确认', '已完成', '已取消')
        <if test="orderStatus != null and orderStatus != ''">
            AND order_status = #{orderStatus}
        </if>