浏览代码

优化小票审核

lutong 2 月之前
父节点
当前提交
ca80a07b53
共有 1 个文件被更改,包括 51 次插入22 次删除
  1. 51 22
      alien-store/src/main/java/shop/alien/store/service/impl/CommonRatingServiceImpl.java

+ 51 - 22
alien-store/src/main/java/shop/alien/store/service/impl/CommonRatingServiceImpl.java

@@ -194,7 +194,8 @@ public class CommonRatingServiceImpl extends ServiceImpl<CommonRatingMapper, Com
             }
             
             // 检查条件2:图片中包含该店铺的小票(如果有图片)
-            if (!condition1Passed && !imageUrls.isEmpty()) {
+            // 注意:无论打卡是否通过,只要有图片就进行小票审核
+            if (!imageUrls.isEmpty()) {
                 try {
                     // 获取店铺名称用于小票审核
                     String storeName = null;
@@ -227,22 +228,27 @@ public class CommonRatingServiceImpl extends ServiceImpl<CommonRatingMapper, Com
                     if (auditReason == null) {
                         auditReason = "小票审核异常";
                     }
+                    condition2Passed = false; // 异常时视为不通过
                 }
             }
             
-            // 如果两个条件都不满足,设置审核状态为不通过并记录审核原因
+            // 判断审核结果:如果两个条件都不满足,判定为审核不通过;至少满足一个条件,算审核通过
             if (!condition1Passed && !condition2Passed) {
-                // 如果还没有审核原因,设置默认原因
+                // 两个条件都不满足,判定为审核不通过
                 if (auditReason == null) {
-                    auditReason = "不满足审核条件:1) 用户未在该店铺打过卡;2) 上传的图片不包含该店铺的小票";
+                    if (imageUrls.isEmpty()) {
+                        auditReason = "不满足审核条件:用户未在该店铺打过卡";
+                    } else {
+                        auditReason = "不满足审核条件:1) 用户未在该店铺打过卡;2) 上传的图片不包含该店铺的小票";
+                    }
                 }
                 // 设置审核状态为不通过(2-驳回)
                 commonRating.setAuditStatus(2);
                 commonRating.setAuditReason(auditReason);
-                log.warn("评论审核不通过:内容审核通过,但不满足其他条件。条件1(打过卡)={}, 条件2(有小票)={}, 审核原因={}", 
+                log.warn("评论审核不通过:内容审核通过,但两个条件都不满足。条件1(打过卡)={}, 条件2(有小票)={}, 审核原因={}", 
                         condition1Passed, condition2Passed, auditReason);
             } else {
-                // 满足条件,审核状态保持为待审核(0),等待视频审核
+                // 至少满足一个条件,审核通过,审核状态保持为待审核(0),等待视频审核
                 log.info("评论审核通过:内容审核通过,且满足条件1(打过卡)={} 或 条件2(有小票)={}", 
                         condition1Passed, condition2Passed);
             }
@@ -327,24 +333,39 @@ public class CommonRatingServiceImpl extends ServiceImpl<CommonRatingMapper, Com
                             log.info("视频审核不通过,已更新状态,ratingID:{},原因:{}",
                                     rating.getId(), videoAuditResult.getFailureReason());
                         } else if (Objects.nonNull(videoAuditResult) && videoAuditResult.isPassed()) {
-                            // 审核通过也更新状态
+                            // 视频审核通过,但需要检查之前的审核状态
+                            // 如果之前因为小票/打卡不通过而设置为2(不通过),则保持为2,不改为1
                             CommonRating rating = this.getById(commonRating.getId());
                             if (Objects.nonNull(rating)) {
-                                rating.setAuditStatus(1);
-                                this.saveOrUpdate(rating);
-                                // 对不同的businessType进行不同的处理,
-                                doBusinessWithType(commonRating);
-                                log.info("视频审核通过,已更新状态,ratingID:{}", rating.getId());
+                                // 只有当前状态为待审核(0)时,才改为通过(1)
+                                // 如果已经是2(不通过),说明之前因为小票/打卡不通过,保持为2
+                                if (rating.getAuditStatus() == null || rating.getAuditStatus() == 0) {
+                                    rating.setAuditStatus(1);
+                                    this.saveOrUpdate(rating);
+                                    // 对不同的businessType进行不同的处理,
+                                    doBusinessWithType(commonRating);
+                                    log.info("视频审核通过,已更新状态为通过,ratingID:{}", rating.getId());
+                                } else if (rating.getAuditStatus() == 2) {
+                                    // 之前因为小票/打卡不通过,即使视频通过,也保持为不通过
+                                    log.info("视频审核通过,但之前因小票/打卡不通过,保持审核状态为不通过,ratingID:{}", rating.getId());
+                                }
                             }
                         } else {
                             // 视频审核结果为空,可能是没有视频或审核服务异常
-                            // 如果文本/图片已通过,且没有视频,则设置为审核通过
+                            // 需要检查之前的审核状态,如果之前因为小票/打卡不通过而设置为2,则保持为2
                             CommonRating rating = this.getById(commonRating.getId());
                             if (Objects.nonNull(rating)) {
-                                rating.setAuditStatus(1);
-                                this.saveOrUpdate(rating);
-                                doBusinessWithType(commonRating);
-                                log.info("无视频或视频审核结果为空,文本/图片已通过,设置为审核通过,ratingID:{}", rating.getId());
+                                // 只有当前状态为待审核(0)时,才改为通过(1)
+                                // 如果已经是2(不通过),说明之前因为小票/打卡不通过,保持为2
+                                if (rating.getAuditStatus() == null || rating.getAuditStatus() == 0) {
+                                    rating.setAuditStatus(1);
+                                    this.saveOrUpdate(rating);
+                                    doBusinessWithType(commonRating);
+                                    log.info("无视频或视频审核结果为空,文本/图片已通过,设置为审核通过,ratingID:{}", rating.getId());
+                                } else if (rating.getAuditStatus() == 2) {
+                                    // 之前因为小票/打卡不通过,保持为不通过
+                                    log.info("无视频或视频审核结果为空,但之前因小票/打卡不通过,保持审核状态为不通过,ratingID:{}", rating.getId());
+                                }
                             }
                         }
                     } catch (Exception e) {
@@ -358,13 +379,21 @@ public class CommonRatingServiceImpl extends ServiceImpl<CommonRatingMapper, Com
                     }
                 }, commonVideoTaskExecutor);
             } else {
-                // 7. 没有视频,文本/图片审核已通过,直接设置为审核通过
+                // 7. 没有视频,文本/图片审核已通过,但需要检查之前的审核状态
+                // 如果之前因为小票/打卡不通过而设置为2(不通过),则保持为2,不改为1
                 CommonRating rating = this.getById(commonRating.getId());
                 if (Objects.nonNull(rating)) {
-                    rating.setAuditStatus(1);
-                    this.saveOrUpdate(rating);
-                    doBusinessWithType(commonRating);
-                    log.info("无视频,文本/图片审核已通过,设置为审核通过,ratingID:{}", rating.getId());
+                    // 只有当前状态为待审核(0)时,才改为通过(1)
+                    // 如果已经是2(不通过),说明之前因为小票/打卡不通过,保持为2
+                    if (rating.getAuditStatus() == null || rating.getAuditStatus() == 0) {
+                        rating.setAuditStatus(1);
+                        this.saveOrUpdate(rating);
+                        doBusinessWithType(commonRating);
+                        log.info("无视频,文本/图片审核已通过,设置为审核通过,ratingID:{}", rating.getId());
+                    } else if (rating.getAuditStatus() == 2) {
+                        // 之前因为小票/打卡不通过,保持为不通过
+                        log.info("无视频,文本/图片审核已通过,但之前因小票/打卡不通过,保持审核状态为不通过,ratingID:{}", rating.getId());
+                    }
                 }
             }