Просмотр исходного кода

Merge remote-tracking branch 'origin/sit' into sit

qinxuyang 15 часов назад
Родитель
Сommit
218a74940e

+ 25 - 0
alien-entity/src/main/java/shop/alien/entity/second/vo/SecondGoodsStatusVo.java

@@ -0,0 +1,25 @@
+package shop.alien.entity.second.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 二手商品状态查询(精简)
+ */
+@Data
+@ApiModel("二手商品状态")
+public class SecondGoodsStatusVo {
+
+    @ApiModelProperty("商品ID")
+    private Integer id;
+
+    @ApiModelProperty("商品状态 0草稿 1审核中 2审核失败 3已上架 4已下架 5已售出")
+    private Integer goodsStatus;
+
+    @ApiModelProperty("状态名称")
+    private String goodsStatusName;
+
+    @ApiModelProperty("审核失败原因(仅审核失败时有值)")
+    private String failedReason;
+}

+ 25 - 0
alien-second/src/main/java/shop/alien/second/controller/SecondGoodsController.java

@@ -10,6 +10,8 @@ import org.springframework.web.bind.annotation.*;
 import shop.alien.entity.SecondVideoTask;
 import shop.alien.entity.result.R;
 import shop.alien.entity.second.SecondGoods;
+import shop.alien.entity.second.enums.SecondGoodsStatusEnum;
+import shop.alien.entity.second.vo.SecondGoodsStatusVo;
 import shop.alien.entity.second.vo.SecondGoodsVo;
 import shop.alien.mapper.second.SecondGoodsAuditMapper;
 import shop.alien.second.service.SecondGoodsAuditService;
@@ -71,6 +73,29 @@ public class SecondGoodsController {
     }
 
     /**
+     * 根据商品ID查询商品状态
+     */
+    @GetMapping("/getGoodsStatusById")
+    @ApiOperation("根据商品ID查询商品状态(0草稿 1审核中 2审核失败 3已上架 4已下架 5已售出)")
+    public R<SecondGoodsStatusVo> getGoodsStatusById(@ApiParam("商品ID") @RequestParam Integer id) {
+        log.info("SecondGoodsController.getGoodsStatusById?id={}", id);
+        if (id == null) {
+            return R.fail("商品ID不能为空");
+        }
+        SecondGoods goods = secondGoodsService.getById(id);
+        if (goods == null) {
+            return R.fail("商品不存在");
+        }
+        SecondGoodsStatusVo vo = new SecondGoodsStatusVo();
+        vo.setId(goods.getId());
+        vo.setGoodsStatus(goods.getGoodsStatus());
+        SecondGoodsStatusEnum statusEnum = SecondGoodsStatusEnum.fromCode(goods.getGoodsStatus());
+        vo.setGoodsStatusName(statusEnum != null ? statusEnum.getDescription() : null);
+        vo.setFailedReason(goods.getFailedReason());
+        return R.data(vo, "查询成功");
+    }
+
+    /**
      * 添加二手商品
      */
     @PostMapping("/save")

+ 58 - 33
alien-second/src/main/java/shop/alien/second/util/AiUserViolationUtils.java

@@ -21,6 +21,7 @@ import shop.alien.entity.store.LifeUserViolation;
 import shop.alien.entity.store.vo.LifeUserVo;
 import shop.alien.mapper.LifeMessageMapper;
 import shop.alien.mapper.LifeUserMapper;
+import shop.alien.mapper.LifeUserViolationMapper;
 import shop.alien.mapper.second.SecondGoodsMapper;
 
 import java.text.SimpleDateFormat;
@@ -48,12 +49,14 @@ public class AiUserViolationUtils {
     @Value("${third-party-pass-word.base-url:123456}")
     private String passWord;
 
-    @Value("${third-party-userComplaintRecordUrl.base-url}")
+    @Value("${third-party-ai.report-review.base-url}")
     private String userComplaintRecordUrl;
 
-    @Value("${third-party-goodsComplaintRecordUrl.base-url:${third-party-userComplaintRecordUrl.base-url}}")
+    @Value("${third-party-ai.report-review.base-url}")
     private String goodsComplaintRecordUrl;
 
+    private final LifeUserViolationMapper lifeUserViolationMapper;
+
     /**
      * 登录 AI 服务,获取 token
      *
@@ -112,37 +115,36 @@ public class AiUserViolationUtils {
         analyzeHeaders.set("Authorization", "Bearer " + accessToken);
 
         Map<String, Object> analyzeRequest = new HashedMap<>();
-        // 对应参数
-        if (1 == lifeuserViolation.getDictId()){
-            analyzeRequest.put("complaint_type", "用户违规");
-        } else if (2 == lifeuserViolation.getDictId()){
-            analyzeRequest.put("complaint_type", "色情低俗");
-        } else if (3 == lifeuserViolation.getDictId()){
-            analyzeRequest.put("complaint_type", "违法违规");
-        } else if (4 == lifeuserViolation.getDictId()){
-            analyzeRequest.put("complaint_type", "谩骂嘲讽、煽动对立");
-        } else if (5 == lifeuserViolation.getDictId()){
-            analyzeRequest.put("complaint_type", "涉嫌诈骗");
-        } else if (6 == lifeuserViolation.getDictId()){
-            analyzeRequest.put("complaint_type", "人身攻击");
-        } else if (7 == lifeuserViolation.getDictId()){
-            analyzeRequest.put("complaint_type", "种族歧视");
-        } else if (8 == lifeuserViolation.getDictId()){
-            analyzeRequest.put("complaint_type", "政治敏感");
-        } else if (9 == lifeuserViolation.getDictId()){
-            analyzeRequest.put("complaint_type", "虚假、不实内容");
-        } else if (10 == lifeuserViolation.getDictId()){
-            analyzeRequest.put("complaint_type", "违反公德秩序");
-        } else if (11 == lifeuserViolation.getDictId()){
-            analyzeRequest.put("complaint_type", "危害人身安全");
-        } else if (12 == lifeuserViolation.getDictId()){
-            analyzeRequest.put("complaint_type", "网络暴力");
-        } else {
-            analyzeRequest.put("complaint_type", "其他");
-        }
-
-        analyzeRequest.put("reporter_user_id", lifeuserViolation.getReportingUserId());
-        analyzeRequest.put("reported_user_id", lifeuserViolation.getReportedUserId());
+//        // 对应参数
+//        if (1 == lifeuserViolation.getDictId()){
+//            analyzeRequest.put("complaint_type", "用户违规");
+//        } else if (2 == lifeuserViolation.getDictId()){
+//            analyzeRequest.put("complaint_type", "色情低俗");
+//        } else if (3 == lifeuserViolation.getDictId()){
+//            analyzeRequest.put("complaint_type", "违法违规");
+//        } else if (4 == lifeuserViolation.getDictId()){
+//            analyzeRequest.put("complaint_type", "谩骂嘲讽、煽动对立");
+//        } else if (5 == lifeuserViolation.getDictId()){
+//            analyzeRequest.put("complaint_type", "涉嫌诈骗");
+//        } else if (6 == lifeuserViolation.getDictId()){
+//            analyzeRequest.put("complaint_type", "人身攻击");
+//        } else if (7 == lifeuserViolation.getDictId()){
+//            analyzeRequest.put("complaint_type", "种族歧视");
+//        } else if (8 == lifeuserViolation.getDictId()){
+//            analyzeRequest.put("complaint_type", "政治敏感");
+//        } else if (9 == lifeuserViolation.getDictId()){
+//            analyzeRequest.put("complaint_type", "虚假、不实内容");
+//        } else if (10 == lifeuserViolation.getDictId()){
+//            analyzeRequest.put("complaint_type", "违反公德秩序");
+//        } else if (11 == lifeuserViolation.getDictId()){
+//            analyzeRequest.put("complaint_type", "危害人身安全");
+//        } else if (12 == lifeuserViolation.getDictId()){
+//            analyzeRequest.put("complaint_type", "网络暴力");
+//        } else {
+//            analyzeRequest.put("complaint_type", "其他");
+//        }
+        analyzeRequest.put("id", lifeuserViolation.getId());
+        analyzeRequest.put("type", lifeuserViolation.getReportContextType());
 
         //举报人
         String reporterUserId = lifeuserViolation.getReportingUserId();
@@ -204,6 +206,16 @@ public class AiUserViolationUtils {
                 R.fail("提交用户投诉审核任务返回record_id为空");
                 return  null;
             }
+            // 解析AI审核结果
+            String processingStatus = JSONObject.parseObject(analyzeResp.getBody()).getJSONObject("data").getJSONObject("result").getString("processing_status");
+            boolean success = "1".equals(processingStatus);
+
+            LifeUserViolation lifeUserViolation = lifeUserViolationMapper.selectById(lifeuserViolation.getId());
+
+            // 更新举报处理状态
+            lifeUserViolation.setProcessingStatus(processingStatus);
+            lifeUserViolation.setProcessingTime(new Date());
+            lifeUserViolationMapper.updateById(lifeUserViolation);
             return taskId;
         } else {
             if (analyzeResp != null) {
@@ -305,6 +317,9 @@ public class AiUserViolationUtils {
 
         analyzeRequest.put("evidence_images", lifeuserViolation.getImgUrl());
 
+        analyzeRequest.put("id", lifeuserViolation.getId());
+        analyzeRequest.put("type", lifeuserViolation.getReportContextType());
+
         HttpEntity<Map<String, Object>> analyzeEntity = new HttpEntity<>(analyzeRequest, analyzeHeaders);
 
         ResponseEntity<String> analyzeResp = null;
@@ -331,6 +346,16 @@ public class AiUserViolationUtils {
             }
 
             String taskId = dataJsonObj.getString("task_id");
+            // 解析AI审核结果
+            String processingStatus = JSONObject.parseObject(analyzeResp.getBody()).getJSONObject("data").getJSONObject("result").getString("processing_status");
+            boolean success = "1".equals(processingStatus);
+
+            LifeUserViolation lifeUserViolation = lifeUserViolationMapper.selectById(lifeuserViolation.getId());
+
+            // 更新举报处理状态
+            lifeUserViolation.setProcessingStatus(processingStatus);
+            lifeUserViolation.setProcessingTime(new Date());
+            lifeUserViolationMapper.updateById(lifeUserViolation);
             if (taskId == null) {
                 log.error("提交商品举报审核任务返回task_id为空");
                 return null;

+ 1 - 1
alien-store/src/main/java/shop/alien/store/service/LifeUserStoreService.java

@@ -115,7 +115,7 @@ public class LifeUserStoreService {
             // 遍历所有门店信息,构造返回结果
             for (StoreInfoVo store : storeInfoVoList) {
 
-                //门店营业时间信息
+                //门店营业时间信息 Fixme 流式处理,或用 <assiociate>一次性查询
                 StoreBusinessInfo storeBusinessInfo = storeBusinessInfoMapper.selectOne(new QueryWrapper<StoreBusinessInfo>().eq("store_id", store.getId()).eq("delete_flag", 0).last("limit 1"));
 
                 Map<String, Object> storeMap = new HashMap<>();

+ 1 - 1
alien-store/src/main/java/shop/alien/store/util/ai/AiReportReviewUtil.java

@@ -39,7 +39,7 @@ public class AiReportReviewUtil {
     private final AiAuthTokenUtil aiAuthTokenUtil;
     private final RestTemplate restTemplate;
 
-    @Value("${third-party-ai.report-review.base-url:http://124.93.18.180:9000/ai/auto-review/api/v1/merchant_dynamic_violation_audit_task/submit}")
+    @Value("${third-party-ai.report-review.base-url}")
     private String aiReportReviewUrl;
 
     private final LifeUserViolationMapper lifeUserViolationMapper;