瀏覽代碼

举报提交

zjy 1 周之前
父節點
當前提交
93800eddfa

+ 52 - 0
alien-entity/src/main/java/shop/alien/entity/second/vo/SecondReportingVo.java

@@ -0,0 +1,52 @@
+package shop.alien.entity.second.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Data
+@JsonInclude
+@ApiModel(value = "二手商品", description = "举报详情")
+public class SecondReportingVo{
+
+    @ApiModelProperty(value = "通知标题")
+    private Integer id;
+
+    @ApiModelProperty(value = "商品标题")
+    private String title;
+
+    @ApiModelProperty(value = "商品封面图片")
+    private String homeImage;
+
+    @ApiModelProperty(value = "商品描述")
+    private String description;
+
+    @ApiModelProperty(value = "商品价格(元,保留小数后两位)")
+    private String price;
+
+    @ApiModelProperty(value = "反馈内容")
+    private String feedbackContext;
+
+    @ApiModelProperty(value = "举报内容")
+    private String reportingContext;
+
+    @ApiModelProperty(value = "举报类型")
+    private String reportContextType;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "举报时间")
+    private Date reportingTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "反馈时间")
+    private Date feedbackTime;
+
+    @ApiModelProperty(value = "图片集合")
+    private List<Map<String, Object>> imgList;
+}

+ 31 - 0
alien-second/src/main/java/shop/alien/second/controller/SecondGoodsReportingController.java

@@ -0,0 +1,31 @@
+package shop.alien.second.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiSort;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import shop.alien.entity.result.R;
+import shop.alien.entity.second.vo.SecondReportingVo;
+import shop.alien.second.service.SecondGoodsReportingService;
+
+@Slf4j
+@Api(tags = {"二手平台-举报详情"})
+@ApiSort(9)
+@CrossOrigin
+@RestController
+@RequestMapping("/second/reporting")
+@RequiredArgsConstructor
+public class SecondGoodsReportingController {
+
+    private final SecondGoodsReportingService service;
+
+    @ApiOperation("举报详情")
+    @PostMapping("/queryReportingDetail")
+    public R<SecondReportingVo> queryReportingDetail(@RequestParam(value = "id", required = false) Integer id) {
+        log.info("SecondGoodsReportingController.reportingDetail?id={}", id);
+        return R.data(service.queryReportingDetail(id), "查询成功");
+    }
+
+}

+ 21 - 0
alien-second/src/main/java/shop/alien/second/service/SecondGoodsReportingService.java

@@ -0,0 +1,21 @@
+package shop.alien.second.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.second.vo.SecondReportingVo;
+
+
+/**
+ * 二手商品服务接口
+ */
+public interface SecondGoodsReportingService {
+
+
+    /**
+     * 查询商品详情信息
+     * @param id ID
+     * @return 举报详情
+     */
+    SecondReportingVo queryReportingDetail(Integer id);
+
+
+}

+ 119 - 0
alien-second/src/main/java/shop/alien/second/service/impl/SecondGoodsReportingServiceImpl.java

@@ -0,0 +1,119 @@
+package shop.alien.second.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import shop.alien.entity.second.SecondGoods;
+import shop.alien.entity.second.vo.SecondReportingVo;
+import shop.alien.entity.store.*;
+import shop.alien.mapper.LifeNoticeMapper;
+import shop.alien.mapper.LifeUserMapper;
+import shop.alien.mapper.LifeUserViolationMapper;
+import shop.alien.mapper.StoreDictionaryMapper;
+import shop.alien.mapper.second.SecondGoodsMapper;
+import shop.alien.second.service.SecondGoodsReportingService;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
+/**
+ * 二手商品服务实现类
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class SecondGoodsReportingServiceImpl implements SecondGoodsReportingService {
+
+    List<String> videoFileType = Arrays.asList("mp4", "avi", "flv", "mkv", "rmvb", "wmv", "3gp", "mov");
+
+    @Autowired
+    private final LifeNoticeMapper lifeNoticeMapper;
+
+    @Autowired
+    private final LifeUserViolationMapper lifeUserViolationMapper;
+
+    @Autowired
+    private final StoreDictionaryMapper StoreDictionaryMapper;
+
+    @Autowired
+    private final LifeUserMapper lifeUserMapper;
+
+    @Autowired
+    private final SecondGoodsMapper secondGoodsMapper;
+
+    @Override
+    public SecondReportingVo queryReportingDetail (Integer id) {
+        SecondReportingVo secondReportingVo = new SecondReportingVo();
+
+        // 获取举报信息
+        LifeNotice lifeNotice = lifeNoticeMapper.selectById(id);
+
+        // 获取举报内容
+        LifeUserViolation lifeUserViolation = lifeUserViolationMapper.selectById(lifeNotice.getBusinessId());
+
+        // 获取举报类型
+        QueryWrapper<StoreDictionary> query = new QueryWrapper<>();
+        query.lambda()
+                .eq(StoreDictionary::getTypeName, lifeUserViolation.getDictType())
+                .eq(StoreDictionary::getDictId, lifeUserViolation.getDictId());
+        // 获取枚举
+        StoreDictionary storeDictionary =StoreDictionaryMapper.selectOne(query);
+
+        // 定义原始格式
+        DateTimeFormatter originalFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        // 定义目标格式
+        DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
+        // 创建格式化器
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        // 执行格式化
+        String formattedDate = formatter.format(lifeNotice.getCreatedTime());
+        // 解析为 LocalDateTime 对象
+        LocalDateTime dateTime = LocalDateTime.parse(formattedDate, originalFormatter);
+
+        if (lifeUserViolation.getReportContextType().equals("4")) {
+            // 获取商品信息
+            SecondGoods secondGoods = secondGoodsMapper.selectById(lifeUserViolation.getBusinessId());
+            secondReportingVo.setPrice(secondGoods.getPrice() != null ? secondGoods.getPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString() : null);
+            secondReportingVo.setHomeImage(secondGoods.getHomeImage());
+            secondReportingVo.setTitle(secondGoods.getTitle());
+            secondReportingVo.setDescription(secondGoods.getDescription());
+            String context = "您于" + dateTime.format(targetFormatter) + "举报“" + secondGoods.getTitle() + "”“" + storeDictionary.getDictDetail() + "”举报内容为“"
+                    + lifeUserViolation.getOtherReasonContent()  + "”";
+            secondReportingVo.setReportingContext(context);
+        } else if (lifeUserViolation.getReportContextType().equals("5")) {
+            // 获取用户信息
+            LifeUser lifeUser = lifeUserMapper.selectById(lifeUserViolation.getReportedUserId());
+            String context = "您于" + dateTime.format(targetFormatter) + "举报“" + lifeUser.getUserName() + "”“" + storeDictionary.getDictDetail() + "”举报内容为“"
+                    + lifeUserViolation.getOtherReasonContent()  + "”";
+            secondReportingVo.setReportingContext(context);
+        }
+
+        secondReportingVo.setFeedbackContext("平台已受理,感谢您的反馈!");
+        secondReportingVo.setReportingTime(lifeNotice.getCreatedTime());
+        secondReportingVo.setFeedbackTime(lifeNotice.getCreatedTime());
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (String row : lifeUserViolation.getReportEvidenceImg().split(",")) {
+            Map<String, Object> map = new HashMap<>();
+            String fileType = row.substring(row.lastIndexOf(".") + 1);
+            if (videoFileType.contains(fileType.toLowerCase())) {
+                map.put("type", "video");
+                map.put("imgUrl", row);
+                map.put("videoUrl", row);
+            } else {
+                map.put("type", "image");
+                map.put("imgUrl", row);
+            }
+            list.add(map);
+        }
+        secondReportingVo.setImgList(list);
+        secondReportingVo.setReportContextType(lifeUserViolation.getReportContextType());
+        secondReportingVo.setId(id);
+        return secondReportingVo;
+
+    }
+}

+ 23 - 7
alien-store/src/main/java/shop/alien/store/controller/UserViolationController.java

@@ -1,6 +1,8 @@
 package shop.alien.store.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -12,6 +14,7 @@ import shop.alien.entity.store.UserLoginInfo;
 import shop.alien.entity.store.dto.LifeUserViolationDto;
 import shop.alien.mapper.LifeNoticeMapper;
 import shop.alien.store.service.LifeUserViolationService;
+import shop.alien.util.common.JwtUtil;
 import shop.alien.util.common.TokenInfo;
 import springfox.documentation.annotations.ApiIgnore;
 
@@ -47,18 +50,31 @@ public class UserViolationController {
         if (0 == reporting) {
             return R.fail("举报失败");
         } else {
-            LifeNotice lifeNotice = new LifeNotice();
-            lifeNotice.setSenderId("system");
-            lifeNotice.setReceiverId(lifeuserViolation.getReportingUserId());
-            lifeNotice.setBusinessId(lifeuserViolation.getId());
-            lifeNotice.setTitle("平台已受理");
-            lifeNotice.setContext("平台已受理,感谢您的反馈!");
-            lifeNotice.setNoticeType(1);
+            LifeNotice lifeNotice = getLifeNotice(lifeuserViolation);
             lifeNoticeMapper.insert(lifeNotice);
             return R.data("举报成功");
         }
     }
 
+    private static LifeNotice getLifeNotice(LifeUserViolation lifeuserViolation) throws JsonProcessingException {
+        JSONObject data = JwtUtil.getCurrentUserInfo();
+        String phoneId = null;
+        if (data != null) {
+            phoneId = data.getString("phone");
+        }
+        LifeNotice lifeNotice = new LifeNotice();
+        lifeNotice.setSenderId("system");
+        lifeNotice.setReceiverId("user_" + phoneId);
+        lifeNotice.setBusinessId(lifeuserViolation.getId());
+        lifeNotice.setTitle("举报通知");
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("title", "平台已受理");
+        jsonObject.put("message", "平台已受理,感谢您的反馈!");
+        lifeNotice.setContext(jsonObject.toJSONString());
+        lifeNotice.setNoticeType(1);
+        return lifeNotice;
+    }
+
     @ApiOperation("举报结果")
     @ApiOperationSupport(order = 2)
     @GetMapping("/reportListByUserId")