Bladeren bron

二手商品状态常量/枚举创建

wxd 1 week geleden
bovenliggende
commit
0e9848c45e

+ 61 - 0
alien-entity/src/main/java/shop/alien/entity/second/enums/SecondGoodsStatusEnum.java

@@ -0,0 +1,61 @@
+package shop.alien.entity.second.enums;
+
+import lombok.Getter;
+
+/**
+ * 二手商品状态枚举
+ */
+@Getter
+public enum SecondGoodsStatusEnum {
+    /**
+     * 草稿
+     */
+    DRAFT(0, "草稿"),
+    
+    /**
+     * 审核中
+     */
+    UNDER_REVIEW(1, "审核中"),
+    
+    /**
+     * 审核失败
+     */
+    REVIEW_FAILED(2, "审核失败"),
+    
+    /**
+     * 已上架
+     */
+    LISTED(3, "已上架"),
+    
+    /**
+     * 已下架
+     */
+    DELISTED(4, "已下架"),
+    
+    /**
+     * 已售出
+     */
+    SOLD(5, "已售出");
+
+    private final Integer code;
+    private final String description;
+
+    SecondGoodsStatusEnum(Integer code, String description) {
+        this.code = code;
+        this.description = description;
+    }
+
+    /**
+     * 根据code获取枚举
+     * @param code 状态码
+     * @return 对应的枚举值
+     */
+    public static SecondGoodsStatusEnum fromCode(Integer code) {
+        for (SecondGoodsStatusEnum status : SecondGoodsStatusEnum.values()) {
+            if (status.getCode().equals(code)) {
+                return status;
+            }
+        }
+        return null;
+    }
+}

+ 48 - 50
alien-second/src/main/java/shop/alien/second/service/impl/SecondGoodsServiceImpl.java

@@ -9,14 +9,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
-import com.google.gson.JsonObject;
 import lombok.RequiredArgsConstructor;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import shop.alien.entity.second.SecondGoods;
 import shop.alien.entity.second.SecondGoodsAudit;
+import shop.alien.entity.second.enums.SecondGoodsStatusEnum;
 import shop.alien.entity.second.vo.SecondGoodsVo;
 import shop.alien.entity.second.vo.SellGoodsVo;
 import shop.alien.entity.store.*;
@@ -25,9 +24,8 @@ import shop.alien.mapper.*;
 import shop.alien.mapper.second.SecondGoodsAuditMapper;
 import shop.alien.mapper.second.SecondGoodsMapper;
 import shop.alien.second.service.SecondGoodsService;
+import shop.alien.util.common.Constants;
 import shop.alien.util.common.VideoUtils;
-import shop.alien.util.common.netease.ImageCheckUtil;
-import shop.alien.util.common.netease.TextCheckUtil;
 import shop.alien.util.common.safe.*;
 
 import java.util.Collections;
@@ -104,7 +102,7 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
         SecondGoods secondGoods = new SecondGoods();
         BeanUtils.copyProperties(goods, secondGoods);
         // 设置商品状态为草稿
-        goods.setGoodsStatus(0); // TODO: 使用常量或枚举代替硬编码
+        goods.setGoodsStatus(SecondGoodsStatusEnum.DRAFT.getCode());
         // 保存商品基本信息
         if (!save(goods)) {
             return false; // 保存失败直接返回
@@ -178,10 +176,10 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
         
         if ("high".equals(textCheckResult.getRiskLevel())) {
             // 文本审核不通过或存在高风险
-            goods.setGoodsStatus(2); // 审核失败
+            goods.setGoodsStatus(SecondGoodsStatusEnum.REVIEW_FAILED.getCode()); // 审核失败
             goods.setFailedReason("文本审核不通过:" + (textCheckResult.getRiskWords() != null ? textCheckResult.getRiskWords() : "存在高风险内容"));
             // 插入审核记录
-            createGoodsAudit(goods, textCheckResult.getRiskWords(),2);
+            createGoodsAudit(goods, textCheckResult.getRiskWords(), Constants.AuditStatus.FAILED);
             // 发送审核失败消息
             sendFailedMsg(goods);
             return false;
@@ -199,10 +197,10 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
                 ImageModerationResultVO response = imageModerationUtil.productPublishCheck(imageUrl,imgServicesList);
                 if ("high".equals(response.getRiskLevel())) {
                     // 文本审核不通过或存在高风险
-                    goods.setGoodsStatus(2); // 审核失败
+                    goods.setGoodsStatus(SecondGoodsStatusEnum.REVIEW_FAILED.getCode()); // 审核失败
                     goods.setFailedReason("图片审核不通过:图片中包含" + (response.getDescriptions() != null ? response.getDescriptions() : "高风险内容"));
                     // 插入审核记录
-                    createGoodsAudit(goods, response.getDescriptions(),2);
+                    createGoodsAudit(goods, response.getDescriptions(), Constants.AuditStatus.FAILED);
                     // 发送审核失败消息
                     sendFailedMsg(goods);
                     return false;
@@ -211,12 +209,12 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
         }
 
         // 如果所有审核都通过,设置为上架状态
-        goods.setGoodsStatus(3); // 上架
+        goods.setGoodsStatus(SecondGoodsStatusEnum.LISTED.getCode()); // 上架
         goods.setFailedReason("");
         goods.setReleaseTime(new Date()); // 上架时间
         updateById(goods);
         // 插入审核记录
-        createGoodsAudit(goods, "",1);
+        createGoodsAudit(goods, "", Constants.AuditStatus.PASSED);
         // 发送审核成功消息
         sendMessage(goods);
         return true;
@@ -235,7 +233,7 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
         SecondGoodsAudit auditRecord = new SecondGoodsAudit();
         auditRecord.setGoodsId(goods.getId());
         auditRecord.setGoodsStatus(goodsStatus); // 审核失败
-        if (goodsStatus == 2) {
+        if (Constants.AuditStatus.FAILED.equals(goodsStatus)) {
             auditRecord.setFailedReason("文本审核不通过:" + (riskWords != null ? riskWords : "存在高风险内容"));
         }
         auditRecord.setCreatedUserId(goods.getUserId());
@@ -271,10 +269,10 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
         for(int i = 0; i < imgUrl.size(); i++){
             StoreImg storeImg = new StoreImg();
             storeImg.setStoreId(savedGoodsId);
-            storeImg.setImgType(18);
+            storeImg.setImgType(Constants.ImageType.SECOND_HAND_GOODS);
             storeImg.setImgSort(i);
             storeImg.setImgDescription("发布二手商品图片");
-            storeImg.setDeleteFlag(0);
+            storeImg.setDeleteFlag(Constants.DeleteFlag.NOT_DELETED);
             storeImg.setCreatedTime(new Date());
             storeImg.setUpdatedTime(new Date());
             storeImg.setCreatedUserId(1);
@@ -304,8 +302,7 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
         jsonObject.put("status", "true");
         jsonObject.put("message", "恭喜您的商品已发成功");
         lifeNotice.setContext(jsonObject.toJSONString());
-//        lifeNotice.setContext("恭喜您的商品已发成功");
-        lifeNotice.setNoticeType(1); // 系统通知
+        lifeNotice.setNoticeType(Constants.Notice.SYSTEM_NOTICE); // 系统通知
         lifeNotice.setIsRead(0);
         lifeNoticeMapper.insert(lifeNotice);
     }
@@ -331,9 +328,7 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
         jsonObject.put("status", "false");
         jsonObject.put("message", "抱歉您的商品发布失败,图片或文字存在违规行为。请您修改后从新发布");
         lifeNotice.setContext(jsonObject.toJSONString());
-//        lifeNotice.setContext("商品审核失败,原因为:" + goods.getFailedReason());
-//        lifeNotice.setContext("抱歉您的商品发布失败,图片或文字存在违规行为。请您修改后从新发布");
-        lifeNotice.setNoticeType(1); // 系统通知
+        lifeNotice.setNoticeType(Constants.Notice.SYSTEM_NOTICE); // 系统通知
         lifeNotice.setIsRead(0);
         lifeNoticeMapper.insert(lifeNotice);
     }
@@ -471,7 +466,7 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
                 LambdaUpdateWrapper<LifeLikeRecord> updateWrapper = new LambdaUpdateWrapper<>();
                 updateWrapper.eq(LifeLikeRecord::getHuifuId, goods.getId())
                         .eq(LifeLikeRecord::getDianzanId, "user_"+phone).
-                        eq(LifeLikeRecord::getType, 6); // 6-二手商品
+                        eq(LifeLikeRecord::getType, Constants.LikeType.SECOND_HAND_GOODS); // 6-二手商品
                 if (lifeLikeRecordMapper.selectCount(updateWrapper) > 0) {
                     goods.setLikeStatus(1);
                 }
@@ -491,8 +486,8 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
             if (userId != null) {
                 LambdaUpdateWrapper<LifeCollect> updateWrapper = new LambdaUpdateWrapper<>();
                 updateWrapper.eq(LifeCollect::getUserId, "user_"+phone)
-                        .eq(LifeCollect::getBusinessType, 1)
-                        .eq(LifeCollect::getDeleteFlag, 0)
+                        .eq(LifeCollect::getBusinessType, Constants.CollectBusinessType.DEFAULT)
+                        .eq(LifeCollect::getDeleteFlag, Constants.DeleteFlag.NOT_DELETED)
                         .eq(LifeCollect::getBusinessId, goods.getId());
                         if (lifeCollectMapper.selectCount(updateWrapper) > 0) {
                             goods.setCollectStatus(1);
@@ -520,13 +515,13 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
     public SecondGoodsVo getSecondGoodsById(Integer id) {
         QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("sg.id", id)
-                .eq("sg.delete_flag", 0);
+                .eq("sg.delete_flag", Constants.DeleteFlag.NOT_DELETED);
         SecondGoodsVo secondGoods = secondGoodsMapper.getGoodsDetails(queryWrapper);
         // 设置图片信息
         QueryWrapper<StoreImg> query = new QueryWrapper<>();
         query.lambda()
-                .eq(StoreImg::getImgType, 18) // 商品 图片
-                .eq(StoreImg::getDeleteFlag, 0)
+                .eq(StoreImg::getImgType, Constants.ImageType.SECOND_HAND_GOODS) // 商品 图片
+                .eq(StoreImg::getDeleteFlag, Constants.DeleteFlag.NOT_DELETED)
                 .in(StoreImg::getStoreId, id);
         List<StoreImg> storeImgs = storeImgMapper.selectList(query);
         // 设置图片信息
@@ -539,8 +534,8 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
     @Override
     public IPage<SecondGoodsVo> getShieldedGoodsPage(IPage<SecondGoodsVo> page, Integer userId) {
         QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("sg.delete_flag", 0)
-                .eq("ss.delete_flag", 0)
+        queryWrapper.eq("sg.delete_flag", Constants.DeleteFlag.NOT_DELETED)
+                .eq("ss.delete_flag", Constants.DeleteFlag.NOT_DELETED)
                 .eq("ss.user_id", userId)
                 .eq("ss.shield_type", 1);
         return secondGoodsMapper.getShieldedGoodsPage(page, queryWrapper);
@@ -557,8 +552,8 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
     public IPage<SecondGoodsVo> getCollectGoodsPage(IPage<SecondGoodsVo> page, int userId) {
         LifeUser lifeUser = lifeUserMapper.selectById(userId);
         QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("sg.delete_flag", 0)
-                .eq("lc.delete_flag", 0)
+        queryWrapper.eq("sg.delete_flag", Constants.DeleteFlag.NOT_DELETED)
+                .eq("lc.delete_flag", Constants.DeleteFlag.NOT_DELETED)
                 .eq("lc.user_id", "user_"+lifeUser.getUserPhone());
         return secondGoodsMapper.getCollectGoodsPage(page, queryWrapper);
     }
@@ -572,10 +567,10 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
     @Override
     public IPage<SecondGoodsVo> getBuyGoodsPage(IPage<SecondGoodsVo> page, int userId) {
         QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("sg.delete_flag", 0)
-                .eq("str.delete_flag", 0)
+        queryWrapper.eq("sg.delete_flag", Constants.DeleteFlag.NOT_DELETED)
+                .eq("str.delete_flag", Constants.DeleteFlag.NOT_DELETED)
                 .eq("str.buyer_id", userId) // 买家ID
-                .eq("str.trade_status", 1); // 1-交易成功
+                .eq("str.trade_status", Constants.TradeStatus.SUCCESS); // 1-交易成功
         return secondGoodsMapper.getBuyGoodsPage(page, queryWrapper);
     }
 
@@ -588,7 +583,7 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
     @Override
     public IPage<SecondGoodsVo> getSellGoodsPage(IPage<SecondGoodsVo> page, SecondGoodsVo secondGoodsVo,int userId) {
         QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("sg.delete_flag", 0)
+        queryWrapper.eq("sg.delete_flag", Constants.DeleteFlag.NOT_DELETED)
                 .eq("sg.user_id", userId)
                 .eq("sg.goods_status", secondGoodsVo.getGoodsStatus()); // 5-已售出 ,0-草稿
         return secondGoodsMapper.getSellGoodsPage(page, queryWrapper);
@@ -603,9 +598,9 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
     @Override
     public IPage<SecondGoodsVo> getUserGoodsPage(IPage<SecondGoodsVo> page, Double currentLatitude , Double currentLongitude, Integer userId) {
         QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("sg.delete_flag", 0)
+        queryWrapper.eq("sg.delete_flag", Constants.DeleteFlag.NOT_DELETED)
                 .eq("sg.user_id", userId) // 主页用户ID
-                .in("sg.goods_status",3,5) // 3-上架 5-已售出
+                .in("sg.goods_status", SecondGoodsStatusEnum.LISTED.getCode(), SecondGoodsStatusEnum.SOLD.getCode()) // 3-上架 5-已售出
                 .orderByAsc("FIELD(sg.goods_status, 3, 5)")
                 .orderByDesc("sg.release_time");
         return secondGoodsMapper.getUserGoodsPage(page, currentLatitude, currentLongitude, queryWrapper);
@@ -620,9 +615,12 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
     @Override
     public IPage<SecondGoodsVo> getMyGoodsPage(IPage<SecondGoodsVo> page, int userId) {
         QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("sg.delete_flag", 0)
+        queryWrapper.eq("sg.delete_flag", Constants.DeleteFlag.NOT_DELETED)
                 .eq("sg.user_id", userId) // 用户ID
-                .in("sg.goods_status", 2, 3, 4, 5) // 3-上架 5-已售出
+                .in("sg.goods_status", SecondGoodsStatusEnum.REVIEW_FAILED.getCode(), 
+                        SecondGoodsStatusEnum.DELISTED.getCode(), 
+                        SecondGoodsStatusEnum.SOLD.getCode(), 
+                        SecondGoodsStatusEnum.LISTED.getCode()) // 3-上架 5-已售出
                 .orderByAsc("FIELD(sg.goods_status, 2, 4, 5, 3)")
                 .orderByDesc("sg.release_time");
         return secondGoodsMapper.getMyGoodsPage(page, queryWrapper);
@@ -637,9 +635,9 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
     @Override
     public IPage<SecondGoodsVo> getDraftList(IPage<SecondGoodsVo> page, int userId) {
         QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("sg.delete_flag", 0)
+        queryWrapper.eq("sg.delete_flag", Constants.DeleteFlag.NOT_DELETED)
                 .eq("sg.user_id", userId) // 用户ID
-                .eq("sg.goods_status", 0);
+                .eq("sg.goods_status", SecondGoodsStatusEnum.DRAFT.getCode());
         return secondGoodsMapper.getDraftList(page, queryWrapper);
     }
 
@@ -653,10 +651,10 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
     @Override
     public IPage<SecondGoodsVo> getLikeGoodsPage(IPage<SecondGoodsVo> page, int userId, String phone) {
         QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("sg.delete_flag", 0)
-                .eq("lc.delete_flag",0)
+        queryWrapper.eq("sg.delete_flag", Constants.DeleteFlag.NOT_DELETED)
+                .eq("lc.delete_flag", Constants.DeleteFlag.NOT_DELETED)
                 .eq("lc.dianzan_id", "user_"+phone)
-                .eq("lc.type", 6) // 6-二手商品
+                .eq("lc.type", Constants.LikeType.SECOND_HAND_GOODS) // 6-二手商品
                 .eq("sg.user_id", userId); // 用户ID
         return secondGoodsMapper.getLikeGoodsPage(page, queryWrapper);
     }
@@ -665,14 +663,14 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
      * 获取交易列表
      * @param page 分页参数
      * @param userId 用户ID
-     * @return IPage<SecondGoodsVo> 交易列表
+     * @return IPage<SellGoodsVo> 交易列表
      */
     @Override
     public IPage<SellGoodsVo> getTransactionList(IPage<SellGoodsVo> page, Integer userId) {
         IPage<SellGoodsVo> result = new Page<>();
         QueryWrapper<SellGoodsVo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("sg.delete_flag", 0)
-                .eq("str.delete_flag", 0)
+        queryWrapper.eq("sg.delete_flag", Constants.DeleteFlag.NOT_DELETED)
+                .eq("str.delete_flag", Constants.DeleteFlag.NOT_DELETED)
                 .and(wrapper -> wrapper.eq("str.buyer_id", userId)
                         .or()
                         .eq("str.seller_id", userId));
@@ -711,8 +709,8 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
         QueryWrapper<SecondGoodsVo> queryWrapper = new QueryWrapper<>();
         queryWrapper.notIn(CollectionUtil.isNotEmpty(shieldedGoodsIds), "sg.id", shieldedGoodsIds)
                 .notIn(CollectionUtil.isNotEmpty(userIdList), "sg.user_id", userIdList)
-                .eq("sg.goods_status", 3)// 3-上架
-                .eq("sg.delete_flag", 0);
+                .eq("sg.goods_status", SecondGoodsStatusEnum.LISTED.getCode())// 3-上架
+                .eq("sg.delete_flag", Constants.DeleteFlag.NOT_DELETED);
         // 添加对 searchData 的模糊查询
         if (!StringUtils.isEmpty(secondGoodsVo.getSearchData())) {
             String searchData = "%" + secondGoodsVo.getSearchData() + "%";
@@ -799,8 +797,8 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
                     // 批量获取图片信息
                     QueryWrapper<StoreImg> queryWrapper = new QueryWrapper<>();
                     queryWrapper.lambda()
-                            .eq(StoreImg::getImgType, 18) // 商品 图片
-                            .eq(StoreImg::getDeleteFlag, 0)
+                            .eq(StoreImg::getImgType, Constants.ImageType.SECOND_HAND_GOODS) // 商品 图片
+                            .eq(StoreImg::getDeleteFlag, Constants.DeleteFlag.NOT_DELETED)
                             .in(StoreImg::getStoreId, goodsIds);
                     List<StoreImg> imagesList= storeImgMapper.getImgsByGoodsIds(queryWrapper);
                     // 集合根據商品id进行分组返回map
@@ -837,7 +835,7 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
 
             QueryWrapper<LifeUserVo> queryWrapper = new QueryWrapper<>();
             queryWrapper.in("id", userIds)
-                    .eq("delete_flag", 0);
+                    .eq("delete_flag", Constants.DeleteFlag.NOT_DELETED);
 
             List<LifeUserVo> userInfoList = lifeUserMapper.getUserByIds(queryWrapper);
             Map<Integer, LifeUserVo> userInfoMap = userInfoList.stream()

+ 87 - 0
alien-util/src/main/java/shop/alien/util/common/Constants.java

@@ -0,0 +1,87 @@
+package shop.alien.util.common;
+
+/**
+ * 项目通用常量定义类
+ */
+public class Constants {
+    
+    /**
+     * 通知相关常量
+     */
+    public static class Notice {
+        /**
+         * 系统通知类型
+         */
+        public static final Integer SYSTEM_NOTICE = 1;
+    }
+    
+    /**
+     * 图片类型常量
+     */
+    public static class ImageType {
+        /**
+         * 二手商品图片类型
+         */
+        public static final Integer SECOND_HAND_GOODS = 18;
+    }
+    
+    /**
+     * 删除标志常量
+     */
+    public static class DeleteFlag {
+        /**
+         * 未删除
+         */
+        public static final Integer NOT_DELETED = 0;
+        
+        /**
+         * 已删除
+         */
+        public static final Integer DELETED = 1;
+    }
+    
+    /**
+     * 审核状态常量
+     */
+    public static class AuditStatus {
+        /**
+         * 审核失败
+         */
+        public static final Integer FAILED = 2;
+        
+        /**
+         * 审核通过
+         */
+        public static final Integer PASSED = 1;
+    }
+    
+    /**
+     * 点赞类型常量
+     */
+    public static class LikeType {
+        /**
+         * 二手商品点赞
+         */
+        public static final Integer SECOND_HAND_GOODS = 6;
+    }
+    
+    /**
+     * 收藏业务类型常量
+     */
+    public static class CollectBusinessType {
+        /**
+         * 默认业务类型
+         */
+        public static final Integer DEFAULT = 1;
+    }
+    
+    /**
+     * 交易状态常量
+     */
+    public static class TradeStatus {
+        /**
+         * 交易成功
+         */
+        public static final Integer SUCCESS = 1;
+    }
+}