Bladeren bron

Merge branch 'developer' into developerB

plf 3 jaren geleden
bovenliggende
commit
511cb9e6db

+ 6 - 4
pom.xml

@@ -157,10 +157,6 @@
             <version>3.0.0</version>
         </dependency>
 
-
-
-
-
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-test</artifactId>
@@ -179,6 +175,12 @@
             <version>3.2.1-1.3</version>
         </dependency>
 
+        <!--对象存储oss-->
+        <dependency>
+            <groupId>com.aliyun.oss</groupId>
+            <artifactId>aliyun-sdk-oss</artifactId>
+            <version>3.10.2</version>
+        </dependency>
     </dependencies>
 
     <profiles>

+ 26 - 0
src/main/java/com/caimei365/commodity/controller/ProductPageApi.java

@@ -249,4 +249,30 @@ public class ProductPageApi {
         return pageService.getProductRepair(code);
     }
 
+
+    /**
+     * 商品资料列表
+     */
+    @ApiOperation("商品资料列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = false, name = "keyword", value = "搜索关键词"),
+            @ApiImplicitParam(required = false, name = "productType", value = "商品属性:1产品,2仪器"),
+            @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
+            @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
+    })
+    @GetMapping("/product/archive")
+    public ResponseJson<PaginationVo<ArchiveVo>> getProductArchive(String keyword, Integer productType, Integer pageNum, Integer pageSize) {
+        return pageService.getProductArchive(keyword, productType, pageNum, pageSize);
+    }
+
+    /**
+     * 商品资料详情
+     */
+    @GetMapping("/product/archive/detail")
+    public ResponseJson<ArchiveDetailVo> getArchiveDetail(Integer archiveId, Integer userId) {
+        if (null == archiveId || null == userId) {
+            return ResponseJson.error("参数错误",  null);
+        }
+        return pageService.getArchiveDetail(archiveId, userId);
+    }
 }

+ 75 - 0
src/main/java/com/caimei365/commodity/mapper/PageMapper.java

@@ -1,5 +1,7 @@
 package com.caimei365.commodity.mapper;
 
+import com.caimei365.commodity.model.po.ArchiveFilePo;
+import com.caimei365.commodity.model.po.ArchivePo;
 import com.caimei365.commodity.model.search.ProductListVo;
 import com.caimei365.commodity.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
@@ -184,4 +186,77 @@ public interface PageMapper {
      * @return
      */
     List<Integer> findAllProductId(@Param("couponId") Integer couponId, @Param("source") Integer source);
+
+    /**
+     * 查询商品资料列表
+     *
+     * @param keyword     搜索关键词
+     * @param productType 商品属性:1产品,2仪器
+     * @return
+     */
+    List<ArchiveVo> getProductArchiveList(@Param("keyword") String keyword, @Param("productType") Integer productType);
+
+    /**
+     * 获取图片资料列表
+     * @param archiveId   商品资料id
+     * @return
+     */
+    List<ArchiveContentVo> getImageArchiveList(Integer archiveId);
+
+    /**
+     * 获取视频资料列表
+     * @param archiveId   商品资料id
+     * @return
+     */
+    List<ArchiveContentVo> getVideoArchiveList(Integer archiveId);
+
+    /**
+     * 获取文件资料列表
+     * @param archiveId   商品资料id
+     * @return
+     */
+    List<ArchiveContentVo> getFileArchiveList(Integer archiveId);
+
+    /**
+     * 获取图片资料图片列表
+     * @param archiveContentId  资料内容id
+     * @return
+     */
+    List<String> getArchiveImageList(Integer archiveContentId);
+
+    /**
+     * 获取商品资料文件
+     * @param archiveContentId  资料内容id
+     * @return
+     */
+    ArchiveFilePo getArchiveFile(Integer archiveContentId);
+
+    /**
+     * 获取商品资料信息
+     * @param archiveId 商品资料id
+     * @return
+     */
+    ArchivePo getArchiveByArchiveId(Integer archiveId);
+
+    /**
+     * 获取机构类型
+     * @param userId 用户id
+     * @return
+     */
+    Integer getClubTypeByUserId(Integer userId);
+
+    /**
+     * 根据商品id获取资料id
+     * @param productId 商品id
+     * @return
+     */
+    Integer getArchiveIdById(Integer productId);
+
+    /**
+     * 查询商品资料抵扣采美豆记录
+     * @param userId
+     * @param archiveId
+     * @return
+     */
+    Integer findBeansHistoryByArchiveId(Integer userId, Integer archiveId);
 }

+ 39 - 0
src/main/java/com/caimei365/commodity/model/po/ArchiveFilePo.java

@@ -0,0 +1,39 @@
+package com.caimei365.commodity.model.po;
+
+import com.caimei365.commodity.model.vo.ArchiveContentVo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Aslee
+ * @date : 2021/9/9
+ */
+@ApiModel("商品资料文件")
+@Data
+public class ArchiveFilePo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 文件名称
+     */
+    private String fileName;
+    /**
+     * 文件oss链接
+     */
+    private String fileUrl;
+    /**
+     * oss名称
+     */
+    private String ossName;
+    /**
+     * 上传时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date uploadTime;
+}

+ 50 - 0
src/main/java/com/caimei365/commodity/model/po/ArchivePo.java

@@ -0,0 +1,50 @@
+package com.caimei365.commodity.model.po;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Aslee
+ * @date : 2021/9/9
+ */
+@ApiModel("商品资料")
+@Data
+public class ArchivePo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 资料库id
+     */
+    private Integer archiveId;
+    /**
+     * 商品id
+     */
+    private Integer productId;
+    /**
+     * 商品名称
+     */
+    private String productName;
+    /**
+     * 商品图片
+     */
+    private String productImage;
+    /**
+     * 供应商名称
+     */
+    private String shopName;
+    /**
+     * 商品属性:1产品,2仪器
+     */
+    private Integer productType;
+    /**
+     * 资料等级:1一类资料,2二类资料,3三类资料
+     */
+    private Integer archiveLevel;
+    /**
+     * 商品分类:1医美,2生美
+     */
+    private Integer productClassify;
+}

+ 52 - 0
src/main/java/com/caimei365/commodity/model/vo/ArchiveContentVo.java

@@ -0,0 +1,52 @@
+package com.caimei365.commodity.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Aslee
+ * @date : 2021/9/9
+ */
+@ApiModel("资料内容")
+@Data
+public class ArchiveContentVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 资料内容id
+     */
+    private Integer archiveContentId;
+    /**
+     * 图片列表
+     */
+    private List<String> imageList;
+    /**
+     * 图片数量
+     */
+    private Integer imageNum;
+    /**
+     * 文件名称
+     */
+    private String fileName;
+    /**
+     * 文件oss链接
+     */
+    private String fileUrl;
+    /**
+     * 文件oss链接
+     */
+    private String htmlUrl;
+    /**
+     * 资料标题
+     */
+    private String title;
+    /**
+     * 添加时间
+     */
+    private Date addTime;
+}

+ 51 - 0
src/main/java/com/caimei365/commodity/model/vo/ArchiveDetailVo.java

@@ -0,0 +1,51 @@
+package com.caimei365.commodity.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Aslee
+ * @date : 2021/9/9
+ */
+@ApiModel("商品资料详情")
+@Data
+public class ArchiveDetailVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 图片资料列表
+     */
+    List<ArchiveContentVo> imageArchiveList;
+    /**
+     * 视频资料列表
+     */
+    List<ArchiveContentVo> videoArchiveList;
+    /**
+     * 文件资料列表
+     */
+    List<ArchiveContentVo> fileArchiveList;
+    /**
+     * 查看权限:0可查看,1未登录,2需升级会员机构,3需升级医美会员机构,4需要抵扣采美豆,5无权限查看
+     */
+    Integer permission;
+    /**
+     * 商品名称
+     */
+    private String productName;
+    /**
+     * 商品图片
+     */
+    private String productImage;
+    /**
+     * 供应商名称
+     */
+    private String shopName;
+    /**
+     * 商品属性:1产品,2仪器
+     */
+    private Integer productType;
+}

+ 51 - 0
src/main/java/com/caimei365/commodity/model/vo/ArchiveVo.java

@@ -0,0 +1,51 @@
+package com.caimei365.commodity.model.vo;
+
+import com.caimei365.commodity.model.po.ProductDetailInfoPo;
+import com.caimei365.commodity.model.po.ProductImagePo;
+import com.caimei365.commodity.model.po.ProductParameterPo;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Aslee
+ * @date : 2021/9/9
+ */
+@ApiModel("商品资料")
+@Data
+public class ArchiveVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 商品资料id
+     */
+    private Integer archiveId;
+    /**
+     * 商品productID
+     */
+    private Integer productId;
+    /**
+     * 商品名称
+     */
+    private String productName;
+    /**
+     * 商品图片
+     */
+    private String productImage;
+    /**
+     * 供应商名称
+     */
+    private String shopName;
+    /**
+     * 商品属性:1产品,2仪器
+     */
+    private Integer productType;
+    /**
+     * 跳转页面:1商品详情,2自定义页面
+     */
+    private Integer redirectType;
+}

+ 4 - 0
src/main/java/com/caimei365/commodity/model/vo/ProductDetailVo.java

@@ -307,4 +307,8 @@ public class ProductDetailVo implements Serializable {
      * 商品小程序端活动类型,0无活动,1云上美博会
      */
     private Integer appletsActType;
+    /**
+     * 商品资料id
+     */
+    private Integer archiveId;
 }

+ 18 - 1
src/main/java/com/caimei365/commodity/service/PageService.java

@@ -5,7 +5,6 @@ import com.caimei365.commodity.model.po.ProductParameterPo;
 import com.caimei365.commodity.model.search.ProductListVo;
 import com.caimei365.commodity.model.vo.*;
 
-import java.text.ParseException;
 import java.util.List;
 import java.util.Map;
 
@@ -136,4 +135,22 @@ public interface PageService {
      * @return
      */
     Boolean setCouponsLogo(Integer userId, Integer productId, Integer source);
+
+    /**
+     * 商品资料列表
+     * @param keyword       搜索关键词
+     * @param productType   商品属性:1产品,2仪器
+     * @param pageNum       页码
+     * @param pageSize      每页数量
+     * @return
+     */
+    ResponseJson<PaginationVo<ArchiveVo>> getProductArchive(String keyword, Integer productType, Integer pageNum, Integer pageSize);
+
+    /**
+     * 商品资料详情
+     * @param archiveId     商品资料id
+     * @param userId        用户id
+     * @return
+     */
+    ResponseJson<ArchiveDetailVo> getArchiveDetail(Integer archiveId, Integer userId);
 }

+ 167 - 3
src/main/java/com/caimei365/commodity/service/impl/PageServiceImpl.java

@@ -1,11 +1,11 @@
 package com.caimei365.commodity.service.impl;
 
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
 import com.caimei365.commodity.components.PriceUtilService;
 import com.caimei365.commodity.mapper.*;
 import com.caimei365.commodity.model.ResponseJson;
-import com.caimei365.commodity.model.po.ProductDetailInfoPo;
-import com.caimei365.commodity.model.po.ProductImagePo;
-import com.caimei365.commodity.model.po.ProductParameterPo;
+import com.caimei365.commodity.model.po.*;
 import com.caimei365.commodity.model.search.ProductListVo;
 import com.caimei365.commodity.model.vo.*;
 import com.caimei365.commodity.service.PageService;
@@ -21,6 +21,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -52,6 +54,14 @@ public class PageServiceImpl implements PageService {
     private PageService pageService;
     @Resource
     private CouponMapper couponMapper;
+    @Value("${spring.cloud.config.profile}")
+    private String active;
+
+
+    private String endpoint = "https://oss-cn-shenzhen.aliyuncs.com";
+    private String accessKeyId = "LTAI4GBL3o4YkWnbKYgf2Xia";
+    private String accessKeySecret = "dBjAXqbYiEPP6Ukuk2ZsXQeET7FVkK";
+    private String bucketName = "caimei-oss";
 
     /**
      * 获取分类列表
@@ -421,6 +431,9 @@ public class PageServiceImpl implements PageService {
         Integer appletsBeautyStatus = shopMapper.getAppletsBeautyStatusById(product.getProductId());
         product.setPcActType(null != pcBeautyStatus ? 1 : 0);
         product.setAppletsActType(null != appletsBeautyStatus ? 1 : 0);
+        // 商品资料id
+        Integer archiveId = pageMapper.getArchiveIdById(product.getProductId());
+        product.setArchiveId(null != archiveId ? archiveId : 0);
         //供应商信息
         ShopVo shop = shopMapper.getProductShopById(product.getShopId());
         if (null != shop) {
@@ -852,4 +865,155 @@ public class PageServiceImpl implements PageService {
         }
         return couponsLogo;
     }
+
+    /**
+     * 商品资料列表
+     * @param keyword       搜索关键词
+     * @param productType   商品属性:1产品,2仪器
+     * @param pageNum       页码
+     * @param pageSize      每页数量
+     * @return
+     */
+    @Override
+    public ResponseJson<PaginationVo<ArchiveVo>> getProductArchive(String keyword, Integer productType, Integer pageNum, Integer pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<ArchiveVo> archiveList = pageMapper.getProductArchiveList(keyword, productType);
+        archiveList.forEach(archive->{
+            if (null != archive.getProductId()) {
+                String imageURL = ImageUtils.getImageURL("product", archive.getProductImage(), 0, domain);
+                archive.setProductImage(imageURL);
+            }
+        });
+        PaginationVo<ArchiveVo> pageData = new PaginationVo<>(archiveList);
+        return ResponseJson.success(pageData);
+    }
+
+    /**
+     * 商品资料内容
+     * @param archiveId     商品资料id
+     * @param userId        用户id
+     * @return
+     */
+    @Override
+    public ResponseJson<ArchiveDetailVo> getArchiveDetail(Integer archiveId, Integer userId) {
+        ArchivePo archive = pageMapper.getArchiveByArchiveId(archiveId);
+        if (null == archive) {
+            return ResponseJson.error("商品资料不存在", null);
+        }
+        // 判断该用户是否拥有访问该资料的权限
+        int permission = checkArchivePermission(archive, userId);
+        List<ArchiveContentVo> imageArchiveList = pageMapper.getImageArchiveList(archiveId);
+        List<ArchiveContentVo> videoArchiveList = pageMapper.getVideoArchiveList(archiveId);
+        List<ArchiveContentVo> fileArchiveList = pageMapper.getFileArchiveList(archiveId);
+        if (imageArchiveList.size() == 0 && videoArchiveList.size() == 0 && fileArchiveList.size() == 0) {
+            // 没有文件的时候,用户可查看资料
+            permission = 0;
+        }
+        int finalPermission = permission;
+        imageArchiveList.forEach(imageArchive->{
+            List<String> imageList = pageMapper.getArchiveImageList(imageArchive.getArchiveContentId());
+            if (0 == finalPermission) {
+                imageArchive.setImageList(imageList);
+            }
+            imageArchive.setImageNum(imageList.size());
+        });
+        videoArchiveList.forEach(videoArchive->{
+            ArchiveFilePo archiveFile = pageMapper.getArchiveFile(videoArchive.getArchiveContentId());
+            if (0 == finalPermission) {
+                String fileUrl = generateFileUrl(archiveFile);
+                videoArchive.setFileUrl(fileUrl);
+            }
+        });
+        fileArchiveList.forEach(fileArchive->{
+            ArchiveFilePo archiveFile = pageMapper.getArchiveFile(fileArchive.getArchiveContentId());
+            fileArchive.setFileName(archiveFile.getFileName());
+            if (0 == finalPermission) {
+                String fileUrl = generateFileUrl(archiveFile);
+                fileArchive.setFileUrl(fileUrl);
+            }
+        });
+        ArchiveDetailVo archiveDetail = new ArchiveDetailVo();
+        archiveDetail.setImageArchiveList(imageArchiveList);
+        archiveDetail.setVideoArchiveList(videoArchiveList);
+        archiveDetail.setFileArchiveList(fileArchiveList);
+        archiveDetail.setPermission(permission);
+        archiveDetail.setProductImage(archive.getProductImage());
+        archiveDetail.setProductName(archive.getProductName());
+        archiveDetail.setProductType(archive.getProductType());
+        archiveDetail.setShopName(archive.getShopName());
+        return ResponseJson.success(archiveDetail);
+    }
+
+    private Integer checkArchivePermission(ArchivePo archive, Integer userId) {
+        //资料等级:1一类资料,2二类资料,3三类资料
+        Integer archiveLevel = archive.getArchiveLevel();
+        //商品分类:1医美,2生美
+        Integer productClassify = archive.getProductClassify();
+        // 根据用户Id查询用户身份
+        Integer identity = priceMapper.getIdentityByUserId(userId);
+        // 1生美机构,2医美机构
+        Integer clubType = pageMapper.getClubTypeByUserId(userId);
+        // permission:0可查看,1未登录,2需升级会员机构,3需升级医美会员机构,4需要抵扣采美豆,5无权限查看
+        int permission;
+        if (null == identity) {
+            // 未登录
+            permission = 1;
+        } else if (1 == identity) {
+            //协销可查看所有资料
+            permission = 0;
+        } else if (4 == identity) {
+            // 普通机构
+            if (archiveLevel > 1) {
+                // 二级资料,普通机构
+                permission = 2 == productClassify ? 2 : 3;
+            } else {
+                permission = 0;
+            }
+        } else if (2 == identity) {
+            // 会员机构
+            if (2 == archiveLevel && 1 == productClassify && (0 == clubType || 2 == clubType)) {
+                // 二级医美资料,生美会员机构
+                permission = 3;
+            } else if (3 == archiveLevel) {
+                // 查询用户对该资料的抵扣记录
+                Integer historyId = pageMapper.findBeansHistoryByArchiveId(userId, archive.getArchiveId());
+                if (1 == productClassify && (0 == clubType || 2 == clubType)) {
+                    // 三级医美资料,生美会员机构
+                    permission = 3;
+                } else if (null == historyId){
+                    permission = 4;
+                } else {
+                    permission = 0;
+                }
+            } else {
+                permission = 0;
+            }
+        } else{
+            permission = 5;
+        }
+        return permission;
+    }
+
+
+    public String generateFileUrl(ArchiveFilePo archiveFile) {
+        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+        String ossName = archiveFile.getOssName();
+        // 设置URL过期时间为1个小时
+        Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000);
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            Date dateOne = format.parse("2021-06-01 00:00:00");
+            Date dateTwo = format.parse("2021-09-17 18:00:00");
+            if (archiveFile.getUploadTime() != null && archiveFile.getUploadTime().compareTo(dateOne) > 0 && archiveFile.getUploadTime().compareTo(dateTwo) < 0) {
+                ossName = active + "/" + ossName;
+            } else if (archiveFile.getUploadTime() != null && archiveFile.getUploadTime().compareTo(dateTwo)>0){
+                ossName = active + "/archiveFile/" + ossName;
+            }
+        } catch (ParseException e) {
+            log.info("格式化时间错误", e);
+        }
+        String url = ossClient.generatePresignedUrl(bucketName, ossName, expiration).toString();
+        ossClient.shutdown();
+        return url;
+    }
 }

+ 2 - 2
src/main/java/com/caimei365/commodity/service/impl/SecondHandServiceImpl.java

@@ -364,7 +364,7 @@ public class SecondHandServiceImpl implements SecondHandService {
         product.setIncludedTax(0);
         product.setRecommendType(0);
         product.setInvoiceType(0);
-        product.setVisibility(3);
+        product.setVisibility(1);
         product.setAddTime(current);
         product.setUpdateTime(current);
         product.setOnlineTime(date);
@@ -435,7 +435,7 @@ public class SecondHandServiceImpl implements SecondHandService {
         secondPo.setCommitmentImage(secondDto.getCommitmentImage());
         /* 保存商品二手附加详细信息 */
         secondHandMapper.saveSencondHandProduct(secondPo);
-        return ResponseJson.success(secondPo.getId());
+        return ResponseJson.success(product.getProductId());
     }
 
 

+ 6 - 0
src/main/java/com/caimei365/commodity/utils/AppletsLinkUtil.java

@@ -134,6 +134,10 @@ public class AppletsLinkUtil {
      * 24美博会优惠券页
      */
     public static final Pattern pattern40 = Pattern.compile("/user/beautyfair");
+    /**
+     * 25商品资料库列表
+     */
+    public static final Pattern pattern41 = Pattern.compile("/document/beauty-archive.html");
 
     /**
      * 根据链接判断链接类型
@@ -190,6 +194,8 @@ public class AppletsLinkUtil {
                 return 23;
             } else if (pattern40.matcher(link).find()) {
                 return 24;
+            } else if (pattern41.matcher(link).find()) {
+                return 25;
             } else {
                 return -1;
             }

+ 71 - 0
src/main/resources/mapper/PageMapper.xml

@@ -408,5 +408,76 @@
               AND appletsStatus = 1
           </if>
     </select>
+    <select id="getProductArchiveList" resultType="com.caimei365.commodity.model.vo.ArchiveVo">
+        select cpa.id AS "archiveId",
+        cpa.productId AS "productId",
+        if(cpa.productId is not null, p.name, cpa.productName) AS "productName",
+        if(cpa.productId is not null, s.name, cpa.shopName) AS "shopName",
+        if(cpa.productId is not null, p.mainImage, cpa.productImage) AS "productImage",
+        if(cpa.productId is not null, ifnull(p.commodityType, cpa.productType),cpa.productType) AS "productType",
+        if(cpa.productId is not null,1,2) AS "redirectType"
+        from cm_product_archive cpa
+        left join product p on cpa.productId = p.productID
+        left join shop s on p.shopID = s.shopID
+        <where>
+            <if test="keyword != null and keyword != ''">
+                and (cpa.productName LIKE concat('%', #{keyword}, '%') or p.name like concat('%', #{keyword}, '%')
+                or cpa.shopName LIKE concat('%', #{keyword}, '%') or s.name like concat('%', #{keyword}, '%'))
+            </if>
+            <if test="productType != null and productType != 0">
+                and if(cpa.productId is not null and p.commodityType is not null,p.commodityType = #{productType},
+                cpa.productType = #{productType})
+            </if>
+        </where>
+        order by cpa.addTime desc
+    </select>
+    <select id="getImageArchiveList" resultType="com.caimei365.commodity.model.vo.ArchiveContentVo">
+        select id as archiveContentId, title, addTime
+        from cm_product_archive_content
+        where productArchiveId = #{archiveId} and type = 1
+        order by addTime desc
+    </select>
+    <select id="getVideoArchiveList" resultType="com.caimei365.commodity.model.vo.ArchiveContentVo">
+        select id as archiveContentId, title, addTime
+        from cm_product_archive_content
+        where productArchiveId = #{archiveId} and type = 2
+        order by addTime desc
+    </select>
+    <select id="getFileArchiveList" resultType="com.caimei365.commodity.model.vo.ArchiveContentVo">
+        select id as archiveContentId, title, addTime
+        from cm_product_archive_content
+        where productArchiveId = #{archiveId} and type = 3
+        order by addTime desc
+    </select>
+    <select id="getArchiveImageList" resultType="java.lang.String">
+        select ossUrl from cm_product_archive_file where archiveContentId = #{archiveContentId}
+    </select>
+    <select id="getArchiveFile" resultType="com.caimei365.commodity.model.po.ArchiveFilePo">
+        select fileName,ossName,uploadTime from cm_product_archive_file where archiveContentId = #{archiveContentId}
+    </select>
+    <select id="getArchiveByArchiveId" resultType="com.caimei365.commodity.model.po.ArchivePo">
+        select cpa.id                                                                                   AS "archiveId",
+               cpa.productId                                                                            AS "productId",
+               if(cpa.productId is not null, p.name, cpa.productName)                                   AS "productName",
+               if(cpa.productId is not null, s.name, cpa.shopName)                                      AS "shopName",
+               if(cpa.productId is not null, p.mainImage, cpa.productImage)                             AS "productImage",
+               cpa.archiveLevel                                                                         AS "archiveLevel",
+               if(cpa.productId is not null, ifnull(p.commodityType, cpa.productType),
+                  cpa.productType)                                                                      AS "productType",
+               cpa.productClassify                                                                      AS "productClassify"
+        from cm_product_archive cpa
+                 left join product p on cpa.productId = p.productID
+                 left join shop s on p.shopID = s.shopID
+        where cpa.id = #{archiveId}
+    </select>
+    <select id="getClubTypeByUserId" resultType="java.lang.Integer">
+        select ifnull(firstClubType,0) from club where userID = #{userId}
+    </select>
+    <select id="getArchiveIdById" resultType="java.lang.Integer">
+        select id from cm_product_archive where productId = #{productId}
+    </select>
+    <select id="findBeansHistoryByArchiveId" resultType="java.lang.Integer">
+        select id from user_beans_history where userId = #{userId} and archiveId = #{archiveId}
+    </select>
 
 </mapper>