Răsfoiți Sursa

添加平台端交易管理页面

qrs 3 luni în urmă
părinte
comite
460d44cadb

+ 12 - 0
alien-entity/src/main/java/shop/alien/entity/second/vo/SecondTradeRecordVo.java

@@ -24,6 +24,18 @@ public class SecondTradeRecordVo extends SecondTradeRecord {
     @ApiModelProperty(value = "分页条数")
     private Integer pageSize;
 
+    @ApiModelProperty(value = "买方姓名")
+    private String buyerName;
+
+    @ApiModelProperty(value = "买方联系方式")
+    private String buyerPhone;
+
+    @ApiModelProperty(value = "卖方姓名")
+    private String sellerName;
+
+    @ApiModelProperty(value = "卖方联系方式")
+    private String sellerPhone;
+
     @ApiModelProperty(value = "商品标题")
     private String title;
 

+ 17 - 0
alien-entity/src/main/java/shop/alien/mapper/second/SecondGoodsMapper.java

@@ -322,4 +322,21 @@ public interface SecondGoodsMapper extends BaseMapper<SecondGoods> {
             "on lu.id = sg.user_id " +
             "${ew.customSqlSegment}")
     SecondGoodsVo getGoodsById(@Param(Constants.WRAPPER) QueryWrapper<SecondGoodsVo> queryWrapper);
+
+    @Select("SELECT " +
+            "sg.*, " +
+            "lu.user_name as userName, " +
+            "lu.user_phone as userPhone, " +
+            "sgc1.category_name as categoryOneName, " +
+            "sgc2.category_name as categoryTwoName " +
+            "FROM second_goods_record sg " +
+            "join second_goods goods on goods.id = sg.goods_id " +
+            "left JOIN second_goods_category sgc1 " +
+            "on sg.category_one_id = sgc1.id " +
+            "left JOIN second_goods_category sgc2 " +
+            "on sg.category_two_id = sgc2.id " +
+            "left JOIN life_user lu " +
+            "on lu.id = goods.user_id " +
+            "${ew.customSqlSegment}")
+    SecondGoodsVo getGoodsRecordById(@Param(Constants.WRAPPER) QueryWrapper<SecondGoodsVo> queryWrapper);
 }

+ 3 - 3
alien-entity/src/main/java/shop/alien/mapper/second/SecondTradeRecordMapper.java

@@ -34,9 +34,9 @@ public interface SecondTradeRecordMapper extends BaseMapper<SecondTradeRecord> {
             "${ew.customSqlSegment} ")
     List<SecondTradeRecordVo> getTradeRecord(@Param(Constants.WRAPPER) QueryWrapper<SecondTradeRecord> wrapper);
 
-    @Select("select trade.id, goods.title, goods.home_image, goods.price, trade.transaction_amount, trade.trade_status, trade.transaction_time, trade.seller_id, " +
-            "       trade.transaction_latitude_longitude, trade.transaction_latitude_longitude_address, trade.transaction_location, trade.created_user_id, " +
-            "       if (now() >= trade.transaction_time, 1, 0) timeOutFlag " +
+    @Select("select trade.id, trade.trade_no, trade.goods_id, goods.title, goods.home_image, goods.price, trade.transaction_amount, trade.trade_status, " +
+            "trade.transaction_time, trade.seller_id, trade.transaction_latitude_longitude, trade.transaction_latitude_longitude_address, " +
+            "trade.transaction_location, trade.created_user_id, if (now() >= trade.transaction_time, 1, 0) timeOutFlag " +
             "from second_trade_record trade " +
             "left join second_goods goods on goods.id = trade.goods_id " +
             "${ew.customSqlSegment} ")

+ 2 - 2
alien-second/src/main/java/shop/alien/second/platform/PlatformSecondTradeController.java

@@ -17,7 +17,7 @@ import java.util.List;
 @CrossOrigin
 @RequiredArgsConstructor
 @RestController
-@RequestMapping("/platformSecondTradeController")
+@RequestMapping("/platformSecondTrade")
 public class PlatformSecondTradeController {
 
     private final PlatformSecondTradeService secondTradeRecordService;
@@ -32,7 +32,7 @@ public class PlatformSecondTradeController {
 
     @ApiOperation("交易详情")
     @ApiOperationSupport(order = 2)
-    @PostMapping("/getTradeRecordById")
+    @GetMapping("/getTradeRecordById")
     public R<SecondTradeRecordVo> getTradeRecordById(Integer id) throws Exception {
         log.info("PlatformSecondTradeController.getTradeRecordById?id={}",id);
         return R.data(secondTradeRecordService.getTradeRecordById(id));

+ 1 - 0
alien-second/src/main/java/shop/alien/second/service/PlatformSecondTradeService.java

@@ -3,6 +3,7 @@ package shop.alien.second.service;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.context.annotation.Lazy;
 import shop.alien.entity.second.SecondTradeRecord;
 import shop.alien.entity.second.vo.SecondTradeRecordVo;
 

+ 7 - 0
alien-second/src/main/java/shop/alien/second/service/SecondGoodsService.java

@@ -194,4 +194,11 @@ public interface SecondGoodsService extends IService<SecondGoods> {
      * @return 处理后的商品详情信息
      */
     SecondGoodsDetailVo dealSecondGoodsInfo(Integer goodsId);
+
+    /**
+     * 处理商品记录信息(管理后台使用)
+     * @param goodsId 商品记录ID
+     * @return 处理后的商品详情信息
+     */
+    SecondGoodsVo dealSecondGoodsRecordInfo(Integer goodsId);
 }

+ 15 - 11
alien-second/src/main/java/shop/alien/second/service/impl/PlatformSecondTradeServiceImpl.java

@@ -9,15 +9,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import shop.alien.entity.second.SecondTradeOperation;
 import shop.alien.entity.second.SecondTradeRecord;
-import shop.alien.entity.second.vo.SecondGoodsVo;
 import shop.alien.entity.second.vo.SecondTradeRecordVo;
-import shop.alien.mapper.second.SecondGoodsMapper;
 import shop.alien.mapper.second.SecondTradeOperationMapper;
 import shop.alien.mapper.second.SecondTradeRecordMapper;
 import shop.alien.second.service.PlatformSecondTradeService;
+import shop.alien.second.service.SecondGoodsService;
 
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
@@ -29,12 +30,15 @@ import java.util.stream.Collectors;
 
 @Slf4j
 @Service
-@RequiredArgsConstructor
 public class PlatformSecondTradeServiceImpl extends ServiceImpl<SecondTradeRecordMapper, SecondTradeRecord> implements PlatformSecondTradeService {
 
-    private final SecondTradeRecordMapper secondTradeRecordMapper;
-    private final SecondGoodsMapper secondGoodsMapper;
-    private final SecondTradeOperationMapper secondTradeOperationMapper;
+    @Autowired
+    private SecondTradeRecordMapper secondTradeRecordMapper;
+    @Autowired
+    private SecondTradeOperationMapper secondTradeOperationMapper;
+    @Lazy
+    @Autowired
+    private SecondGoodsService secondGoodsService;
 
     @Override
     public IPage<SecondTradeRecordVo> getTradeRecordPage(SecondTradeRecordVo vo) throws Exception {
@@ -56,12 +60,12 @@ public class PlatformSecondTradeServiceImpl extends ServiceImpl<SecondTradeRecor
     @Override
     public SecondTradeRecordVo getTradeRecordById(Integer id) throws Exception {
         try {
+            // 交易信息
             SecondTradeRecordVo vo = secondTradeRecordMapper.getTradeRecordById(id);
+            // 交易流程
             vo.setOperationJsonList(getOperationJsonList(id));
-
-            QueryWrapper<SecondGoodsVo> wrapper = new QueryWrapper<>();
-            wrapper.eq("sg.id", vo.getGoodsId());
-            vo.setGoodsInfo(secondGoodsMapper.getGoodsDetails(wrapper));
+            // 商品信息
+            vo.setGoodsInfo(secondGoodsService.dealSecondGoodsRecordInfo(vo.getGoodsRecordId()));
             return vo;
         } catch (Exception e) {
             log.error("PlatformSecondTradeServiceImpl.getTradeRecordById(): Error Msg={}", e.getMessage());
@@ -174,7 +178,7 @@ public class PlatformSecondTradeServiceImpl extends ServiceImpl<SecondTradeRecor
             }
 
             // 签到后取消交易
-            if (CollectionUtil.isEmpty(successFail) && 7 == operationList.get(operationList.size() - 1).getType()) {
+            if (CollectionUtil.isEmpty(successFail) && CollectionUtil.isNotEmpty(operationList) && 7 == operationList.get(operationList.size() - 1).getType()) {
                 JSONObject cancelJson = new JSONObject();
                 cancelJson.put("flag", 1);
                 cancelJson.put("message", "取消交易");

+ 28 - 0
alien-second/src/main/java/shop/alien/second/service/impl/SecondGoodsServiceImpl.java

@@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import shop.alien.entity.SecondVideoTask;
@@ -275,6 +276,33 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
         return SecondGoodsDetailVo;
     }
 
+    @Override
+    public SecondGoodsVo dealSecondGoodsRecordInfo(Integer goodsId) {
+        QueryWrapper<SecondGoodsVo> goodsVoQueryWrapper = new QueryWrapper<>();
+        goodsVoQueryWrapper.eq("sg.id", goodsId);
+        // 1. 获取商品基本信息
+        SecondGoodsVo goodsInfo = secondGoodsMapper.getGoodsRecordById(goodsVoQueryWrapper);
+
+        // 2. 获取商品图片列表
+        QueryWrapper<StoreImg> imageQueryWrapper = new QueryWrapper<>();
+        imageQueryWrapper.lambda()
+                .eq(StoreImg::getStoreId, goodsId)
+                .eq(StoreImg::getImgType, Constants.ImageType.SECOND_HAND_RECORD)
+                .eq(StoreImg::getDeleteFlag, Constants.DeleteFlag.NOT_DELETED)
+                .orderByAsc(StoreImg::getImgSort);
+        List<StoreImg> imageList = storeImgMapper.selectList(imageQueryWrapper);
+        // 提取图片URL列表
+        if (CollectionUtil.isNotEmpty(imageList)) {
+            List<String> imageUrls = imageList.stream()
+                    .map(StoreImg::getImgUrl)
+                    .collect(Collectors.toList());
+            List<Map<String, Object>> imgList = processReportImages(imageUrls);
+            goodsInfo.setImgList(imgList);
+            goodsInfo.setImgUrl(imageUrls);
+        }
+        return goodsInfo;
+    }
+
     /**
      * 记录商品操作历史
      * @param goods 商品信息