Преглед на файлове

用户行为优化1.0.4

huangzhiguo преди 1 година
родител
ревизия
3a5cb41b10

+ 47 - 31
src/main/java/com/caimei365/user/controller/ShopApi.java

@@ -2,10 +2,7 @@ package com.caimei365.user.controller;
 
 import com.caimei365.user.idempotent.IpSave;
 import com.caimei365.user.model.ResponseJson;
-import com.caimei365.user.model.dto.BaikeProductDto;
-import com.caimei365.user.model.dto.ShopArticleDto;
-import com.caimei365.user.model.dto.ShopBannerDto;
-import com.caimei365.user.model.dto.ShopUpdateDto;
+import com.caimei365.user.model.dto.*;
 import com.caimei365.user.model.vo.*;
 import com.caimei365.user.service.ShopService;
 import com.github.pagehelper.PageInfo;
@@ -14,6 +11,7 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -27,6 +25,7 @@ import java.util.Map;
  * @date : 2021/3/9
  */
 @Api(tags = "供应商用户API")
+@Slf4j
 @RestController
 @RequiredArgsConstructor
 @RequestMapping("/user/shop")
@@ -145,16 +144,20 @@ public class ShopApi {
 
     /**
      * 一键排序
-     * @param cmShopCategoryList
+     * @param id
+     * @param sort
      * @return
      */
     @ApiOperation("一键排序")
-    @PostMapping("/renewShopCategory")
-    public ResponseJson renewShopCategory(@RequestBody List<CmShopCategoryVo> cmShopCategoryList) {
-        if (null == cmShopCategoryList) {
-            return ResponseJson.error(-1, "供应商类别信息不能为空", null);
+    @GetMapping("/renewShopCategory")
+    public ResponseJson renewShopCategory(Integer id, Integer sort) {
+        if (null == id) {
+            return ResponseJson.error(-1, "id不能为空", null);
+        }
+        if (null == sort) {
+            return ResponseJson.error(-1, "排序值不能为空", null);
         }
-        return shopService.renewShopCategory(cmShopCategoryList);
+        return shopService.renewShopCategory(id, sort);
     }
 
     /**
@@ -164,7 +167,7 @@ public class ShopApi {
      */
     @ApiOperation("供应商商品类别回显")
     @GetMapping("/echoShopCategory")
-    public ResponseJson<Map<String, Object>> echoShopCategory(Integer id) {
+    public ResponseJson<CmShopCategoryVo> echoShopCategory(Integer id) {
         if (null == id) {
             return ResponseJson.error(-1, "供应商类别id不能为空", null);
         }
@@ -174,44 +177,39 @@ public class ShopApi {
     /**
      * 选择商品
      * @param shopId
-     * @param naem
+     * @param categoryId
+     * @param name
      * @param pageNum
      * @param pageSize
      * @return
      */
     @ApiOperation("选择商品")
     @GetMapping("/getShopProductList")
-    public ResponseJson<PaginationVo<ProductItemVo>> getShopProductList(Integer shopId, String naem,
+    public ResponseJson<PaginationVo<ProductItemVo>> getShopProductList(Integer shopId, Integer categoryId, String name,
                                                                         @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                                         @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
         if (null == shopId) {
             return  ResponseJson.error(-1, "供应商Id不能为空", null);
         }
-         return shopService.getShopProductList(shopId, naem, pageNum, pageSize);
+         return shopService.getShopProductList(shopId, categoryId, name, pageNum, pageSize);
     }
 
     /**
      * 保存供应商类别
-     * @param category
+     * @param jsonParamsDto
      * @return
      */
     @ApiOperation("保存供应商类别")
     @PostMapping("/saveShopCategory")
-    public ResponseJson saveShopCategory(@RequestBody CmShopCategoryVo category) {
-
-        if (null == category) {
+    public ResponseJson saveShopCategory(JsonParamsDto jsonParamsDto) {
+        log.info("jsonParamsDto======"+jsonParamsDto);
+        if (null == jsonParamsDto) {
             return ResponseJson.error(-1, "类别信息不能为空", null);
         }
-        if (null == category.getShopId()) {
-            return ResponseJson.error(-1, "供应商Id不能为空", null);
-        }
-        if (StringUtils.isNotBlank(category.getCategory())) {
-            return ResponseJson.error(-1, "类别名称不能为空", null);
-        }
-        if (null == category.getSort()) {
-            return ResponseJson.error(-1, "类别排序不能为空", null);
+        if (StringUtils.isBlank(jsonParamsDto.getParams()) || StringUtils.isEmpty(jsonParamsDto.getParams())) {
+            return ResponseJson.error(-1, "类别信息不能为空", null);
         }
-        return shopService.saveShopCategory(category);
+        return shopService.saveShopCategory(jsonParamsDto);
     }
 
     /**
@@ -220,8 +218,8 @@ public class ShopApi {
      * @return
      */
     @ApiOperation("删除供应商商品类别")
-    @GetMapping("/removeCategoryId")
-    public ResponseJson removeCategoryId(Integer id) {
+    @GetMapping("/removeCategory")
+    public ResponseJson removeCategory(Integer id) {
         if (null == id) {
             return ResponseJson.error(-1, "供应商类别Id不能为空", null);
         }
@@ -234,13 +232,31 @@ public class ShopApi {
      */
     @ApiOperation("供应商首页-轮播图片(旧:/supplier/home/images(supplierId))")
     @GetMapping("/home/images")
-    public ResponseJson<PaginationVo<ShopBannerVo>> getShopHomeImages(Integer shopId,
+    public ResponseJson<PaginationVo<ShopBannerVo>> getShopHomeImages(Integer shopId, String title,
                                                                       @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                                       @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
         if (null == shopId) {
             return ResponseJson.error("参数异常:供应商Id不能为空!", null);
         }
-        return shopService.getShopHomeImages(shopId, pageNum, pageSize);
+        return shopService.getShopHomeImages(shopId, title, pageNum, pageSize);
+    }
+
+    /**
+     * 供应商banner 排序
+     * @param id
+     * @param sort
+     * @return
+     */
+    @ApiOperation("供应商banner 排序")
+    @GetMapping("/renewShopBannerSort")
+    public ResponseJson renewShopBannerSort(Integer id, Integer sort) {
+        if (null == id) {
+            return ResponseJson.error(-1, "id不能为空", null);
+        }
+        if (null == sort) {
+            return ResponseJson.error(-1, "排序值不能为空", null);
+        }
+        return shopService.updateShopBannerSort(id, sort);
     }
 
     /**

+ 20 - 4
src/main/java/com/caimei365/user/mapper/ShopMapper.java

@@ -90,9 +90,10 @@ public interface ShopMapper {
 
     /**
      * 修改排序
-     * @param cmShopCategory
+     * @param id
+     * @param sort
      */
-    void updateCategorySort(CmShopCategoryVo cmShopCategory);
+    void updateCategorySort(@Param("id") Integer id, @Param("sort") Integer sort);
 
     /**
      * 获取供应商商品分类信息
@@ -106,7 +107,7 @@ public interface ShopMapper {
      * @param categoryId
      * @return
      */
-    List<CmShopCategoryProductVo> getCategoryProductById(@Param("categoryId") Integer categoryId);
+    List<ProductItemVo> getCategoryProductById(@Param("categoryId") Integer categoryId);
 
     /**
      * 选择商品
@@ -116,6 +117,14 @@ public interface ShopMapper {
      */
     List<ProductItemVo> getShopProductList(@Param("shopId") Integer shopId, @Param("name") String name);
 
+    /**
+     * 供应商已选择商品
+     * @param shopId
+     * @param categoryId
+     * @return
+     */
+    List<Integer> getCategoryProductIdList(@Param("shopId") Integer shopId, @Param("categoryId") Integer categoryId);
+
     /**
      * 添加供应商类别
      * @param cmShopCategory
@@ -158,7 +167,14 @@ public interface ShopMapper {
     /**
      * 供应商首页-轮播图片
      */
-    List<ShopBannerVo> getShopHomeImages(Integer shopId);
+    List<ShopBannerVo> getShopHomeImages(@Param("shopId") Integer shopId, @Param("title") String title);
+
+    /**
+     * 排序
+     * @param id
+     * @param sort
+     */
+    void updateShopBannerSort(@Param("id") Integer id, @Param("sort") Integer sort);
     /**
      * 店铺促销活动
      */

+ 5 - 0
src/main/java/com/caimei365/user/model/dto/ShopBannerDto.java

@@ -45,4 +45,9 @@ public class ShopBannerDto implements Serializable {
      */
     @ApiModelProperty("图片")
     private String image;
+    /**
+     * 排序值
+     */
+    @ApiModelProperty("排序值")
+    private Integer sort;
 }

+ 2 - 2
src/main/java/com/caimei365/user/model/vo/CmShopCategoryProductVo.java

@@ -31,9 +31,9 @@ public class CmShopCategoryProductVo {
     /**
      * 商品名称
      */
-    private String productName;
+    private String name;
     /**
      * 商品图片
      */
-    private String mallImage;
+    private String image;
 }

+ 6 - 0
src/main/java/com/caimei365/user/model/vo/CmShopCategoryVo.java

@@ -2,6 +2,8 @@ package com.caimei365.user.model.vo;
 
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * Description
  *
@@ -39,4 +41,8 @@ public class CmShopCategoryVo {
      * 商品Id集合
      */
     private String productIds;
+    /**
+     * 商品集合
+     */
+    private List<ProductItemVo> products;
 }

+ 8 - 0
src/main/java/com/caimei365/user/model/vo/ProductItemVo.java

@@ -23,6 +23,10 @@ public class ProductItemVo implements Serializable {
      * 商品productID
      */
     private Integer productId;
+    /**
+     * 供应商商品分类Id
+     */
+    private Integer categoryId;
     /**
      * 名称name
      */
@@ -238,4 +242,8 @@ public class ProductItemVo implements Serializable {
      * 供应商名称回显
      */
     private String shopName;
+    /**
+     * 是否可选择
+     */
+    private Boolean flag;
 }

+ 8 - 0
src/main/java/com/caimei365/user/model/vo/ShopBannerVo.java

@@ -25,4 +25,12 @@ public class ShopBannerVo implements Serializable {
     private String info;
 
     private String image;
+    /**
+     * 排序值
+     */
+    private Integer sort;
+    /**
+     * 添加时间
+     */
+    private String addTime;
 }

+ 9 - 0
src/main/java/com/caimei365/user/model/vo/ShopHomeVo.java

@@ -3,6 +3,7 @@ package com.caimei365.user.model.vo;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * Description
@@ -90,4 +91,12 @@ public class ShopHomeVo implements Serializable {
      * 授权牌照
      */
     private String authorizationCertificateImage;
+    /**
+     * banner
+     */
+    private List<ShopBannerVo> shopHomeImages;
+    /**
+     * 商品类别
+     */
+    List<CmShopCategoryVo> shopCategory;
 }

+ 20 - 12
src/main/java/com/caimei365/user/service/ShopService.java

@@ -2,10 +2,7 @@ package com.caimei365.user.service;
 
 
 import com.caimei365.user.model.ResponseJson;
-import com.caimei365.user.model.dto.BaikeProductDto;
-import com.caimei365.user.model.dto.ShopArticleDto;
-import com.caimei365.user.model.dto.ShopBannerDto;
-import com.caimei365.user.model.dto.ShopUpdateDto;
+import com.caimei365.user.model.dto.*;
 import com.caimei365.user.model.vo.*;
 import com.github.pagehelper.PageInfo;
 
@@ -93,34 +90,36 @@ public interface ShopService {
 
     /**
      * 一键排序
-     * @param cmShopCategoryList
+     * @param id
+     * @param sort
      * @return
      */
-    ResponseJson renewShopCategory(List<CmShopCategoryVo> cmShopCategoryList);
+    ResponseJson renewShopCategory(Integer id, Integer sort);
 
     /**
      * 供应商商品类别回显
      * @param id
      * @return
      */
-    ResponseJson<Map<String, Object>> echoShopCategory(Integer id);
+    ResponseJson<CmShopCategoryVo> echoShopCategory(Integer id);
 
     /**
      * 选择商品
      * @param shopId
+     * @param categoryId
      * @param name
      * @param pageNum
-     * @param paeSize
+     * @param pageSize
      * @return
      */
-    ResponseJson<PaginationVo<ProductItemVo>> getShopProductList(Integer shopId, String name, int pageNum, int pageSize);
+    ResponseJson<PaginationVo<ProductItemVo>> getShopProductList(Integer shopId, Integer categoryId, String name, int pageNum, int pageSize);
 
     /**
      * 保存商品类别
-     * @param category
+     * @param jsonParamsDto
      * @return
      */
-    ResponseJson saveShopCategory(CmShopCategoryVo category);
+    ResponseJson saveShopCategory(JsonParamsDto jsonParamsDto);
 
     /**
      * 删除供应商商品类别
@@ -132,10 +131,19 @@ public interface ShopService {
     /**
      * 供应商首页-轮播图片
      * @param shopId 供应商Id
+     * @param title 标题
      * @param pageNum
      * @param pageSize
      */
-    ResponseJson<PaginationVo<ShopBannerVo>> getShopHomeImages(Integer shopId, int pageNum, int pageSize);
+    ResponseJson<PaginationVo<ShopBannerVo>> getShopHomeImages(Integer shopId, String title, int pageNum, int pageSize);
+
+    /**
+     * 一键排序
+     * @param id
+     * @param sort
+     * @return
+     */
+    ResponseJson updateShopBannerSort(Integer id, Integer sort);
 
     /**
      * 供应商个人中心数据

+ 109 - 51
src/main/java/com/caimei365/user/service/impl/ShopServiceImpl.java

@@ -6,10 +6,7 @@ import com.caimei365.user.components.RedisService;
 import com.caimei365.user.feign.CommodityFeign;
 import com.caimei365.user.mapper.*;
 import com.caimei365.user.model.ResponseJson;
-import com.caimei365.user.model.dto.BaikeProductDto;
-import com.caimei365.user.model.dto.ShopArticleDto;
-import com.caimei365.user.model.dto.ShopBannerDto;
-import com.caimei365.user.model.dto.ShopUpdateDto;
+import com.caimei365.user.model.dto.*;
 import com.caimei365.user.model.po.*;
 import com.caimei365.user.model.vo.*;
 import com.caimei365.user.service.ShopService;
@@ -36,6 +33,8 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import static com.alibaba.fastjson.JSON.parseObject;
+
 /**
  * Description
  *
@@ -326,6 +325,12 @@ public class ShopServiceImpl implements ShopService {
         if (null != taxLicense && taxLicense.size() > 0) {
             supplier.setMedicalPracticeLicenseImg3(taxLicense.get(0));
         }
+        // banner
+        List<ShopBannerVo> shopHomeImages = shopMapper.getShopHomeImages(shopId, null);
+        supplier.setShopHomeImages(shopHomeImages);
+        // 商品类别
+        List<CmShopCategoryVo> shopCategory = shopMapper.getShopCategory(shopId, null);
+        supplier.setShopCategory(shopCategory);
         return ResponseJson.success(supplier);
     }
 
@@ -349,14 +354,13 @@ public class ShopServiceImpl implements ShopService {
     /**
      * 一键排序
      *
-     * @param cmShopCategoryList
+     * @param id
+     * @param sort
      * @return
      */
     @Override
-    public ResponseJson renewShopCategory(List<CmShopCategoryVo> cmShopCategoryList) {
-        cmShopCategoryList.forEach(category -> {
-            shopMapper.updateCategorySort(category);
-        });
+    public ResponseJson renewShopCategory(Integer id, Integer sort) {
+        shopMapper.updateCategorySort(id, sort);
         return ResponseJson.success();
     }
 
@@ -367,34 +371,43 @@ public class ShopServiceImpl implements ShopService {
      * @return
      */
     @Override
-    public ResponseJson<Map<String, Object>> echoShopCategory(Integer id) {
-        Map<String, Object> map = new HashMap<>();
+    public ResponseJson<CmShopCategoryVo> echoShopCategory(Integer id) {
         CmShopCategoryVo shopCategoryById = shopMapper.getShopCategoryById(id);
-        map.put("category", shopCategoryById);
-        List<CmShopCategoryProductVo> categoryProductList = shopMapper.getCategoryProductById(id);
+        List<ProductItemVo> categoryProductList = shopMapper.getCategoryProductById(id);
         categoryProductList.forEach(product -> {
-            product.setMallImage(ImageUtils.getImageURL("product", product.getMallImage(), 0 , wwwDomain));
+            product.setImage(ImageUtils.getImageURL("product", product.getImage(), 0 , wwwDomain));
         });
-        map.put("categorProduct", categoryProductList);
-        return ResponseJson.success(map);
+        shopCategoryById.setProducts(categoryProductList);
+        return ResponseJson.success(shopCategoryById);
     }
 
     /**
      * 选择商品
      *
      * @param shopId
+     * @param categoryId
      * @param name
      * @param pageNum
      * @param pageSize
      * @return
      */
     @Override
-    public ResponseJson<PaginationVo<ProductItemVo>> getShopProductList(Integer shopId, String name, int pageNum, int pageSize) {
+    public ResponseJson<PaginationVo<ProductItemVo>> getShopProductList(Integer shopId, Integer categoryId, String name, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
         List<ProductItemVo> shopProductList = shopMapper.getShopProductList(shopId, name);
-        shopProductList.forEach(product -> {
+        // 供应商已选择商品, 同类别不可重复选择
+        List<Integer> categoryProductIdList =  new ArrayList<>();
+        if (null != categoryId) {
+            categoryProductIdList = shopMapper.getCategoryProductIdList(shopId, categoryId);
+        }
+        for (ProductItemVo product : shopProductList) {
             product.setImage(ImageUtils.getImageURL("product", product.getImage(), 0 , wwwDomain));
-        });
+            if (null != categoryProductIdList && categoryProductIdList.contains(product.getProductId())) {
+                product.setFlag(false);
+            } else {
+                product.setFlag(true);
+            }
+        }
         PaginationVo<ProductItemVo> page = new PaginationVo<>(shopProductList);
         return ResponseJson.success(page);
     }
@@ -402,44 +415,74 @@ public class ShopServiceImpl implements ShopService {
     /**
      * 保存商品类别
      *
-     * @param category
+     * @param jsonParamsDto
      * @return
      */
     @Override
-    public ResponseJson saveShopCategory(CmShopCategoryVo category) {
-        if(null == category.getId()) {
-            // 新增
-            shopMapper.insertCategory(category);
-        } else {
-            // 修改
-            shopMapper.updateCategory(category);
-        }
-        Integer categoryId = category.getId();
-        if (StringUtils.isNotBlank(category.getProductIds())) {
-            // 处理类别商品
-            List<Integer> productIdList = new ArrayList<>();
-            // 该类别下所有商品
-            List<Integer> categoryProductIds = shopMapper.getCategoryProductIds(categoryId);
-            if (category.getProductIds().contains(",")) {
-                String[] productIds = category.getProductIds().split(",");
-                for (String productId : productIds) {
-                    int proId = Integer.parseInt(productId);
+    public ResponseJson saveShopCategory(JsonParamsDto jsonParamsDto) {
+        try {
+            // 处理json数据
+            JSONObject jsonObject = parseObject(jsonParamsDto.getParams());
+            Integer id = jsonObject.getInteger("id");
+            Integer shopId = jsonObject.getInteger("shopId");
+            String category = jsonObject.getString("category");
+            Integer sort = jsonObject.getInteger("sort");
+            String productIds = jsonObject.getString("productIds");
+            if (null == shopId) {
+                return ResponseJson.error(-1, "供应商Id不能为空", null);
+            }
+            if (StringUtils.isBlank(category) || StringUtils.isEmpty(category)) {
+                return ResponseJson.error(-1, "类别名称不能为空", null);
+            }
+            if (null == sort) {
+                return ResponseJson.error(-1, "类别排序不能为空", null);
+            }
+            if (StringUtils.isBlank(productIds) || StringUtils.isEmpty(productIds)) {
+                return ResponseJson.error(-1, "商品不能为空", null);
+            }
+            CmShopCategoryVo cmShopCategoryVo = new CmShopCategoryVo();
+            cmShopCategoryVo.setId(id);
+            cmShopCategoryVo.setShopId(shopId);
+            cmShopCategoryVo.setCategory(category);
+            cmShopCategoryVo.setSort(sort);
+            cmShopCategoryVo.setProductIds(productIds);
+            if(null == id) {
+                // 新增
+                shopMapper.insertCategory(cmShopCategoryVo);
+            } else {
+                // 修改
+                shopMapper.updateCategory(cmShopCategoryVo);
+            }
+            Integer categoryId = cmShopCategoryVo.getId();
+
+            if (StringUtils.isNotBlank(cmShopCategoryVo.getProductIds())) {
+                // 处理类别商品
+                List<Integer> productIdList = new ArrayList<>();
+                // 该类别下所有商品
+                List<Integer> categoryProductIds = shopMapper.getCategoryProductIds(categoryId);
+                if (cmShopCategoryVo.getProductIds().contains(",")) {
+                    String[] productIdArr = cmShopCategoryVo.getProductIds().split(",");
+                    for (String productId : productIdArr) {
+                        int proId = Integer.parseInt(productId);
+                        productIdList.add(proId);
+                        if (!categoryProductIds.contains(proId)) {
+                            shopMapper.insertCategoryProduct(categoryId, proId);
+                        }
+                    }
+                } else {
+                    int proId = Integer.parseInt(cmShopCategoryVo.getProductIds());
                     productIdList.add(proId);
                     if (!categoryProductIds.contains(proId)) {
                         shopMapper.insertCategoryProduct(categoryId, proId);
                     }
                 }
-            } else {
-                int proId = Integer.parseInt(category.getProductIds());
-                productIdList.add(proId);
-                if (!categoryProductIds.contains(proId)) {
-                    shopMapper.insertCategoryProduct(categoryId, proId);
+                // 排除不在该商品类别的商品
+                if(productIdList.size() > 0) {
+                    shopMapper.updateCategoryProduct(categoryId, productIdList);
                 }
             }
-            // 排除不在该商品类别的商品
-            if(productIdList.size() > 0) {
-                shopMapper.updateCategoryProduct(categoryId, productIdList);
-            }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
         return ResponseJson.success();
     }
@@ -460,15 +503,29 @@ public class ShopServiceImpl implements ShopService {
      * 供应商首页-轮播图片
      *
      * @param shopId 供应商Id
+     * @param title 标题
      */
     @Override
-    public ResponseJson<PaginationVo<ShopBannerVo>> getShopHomeImages(Integer shopId, int pageNum, int pageSize) {
+    public ResponseJson<PaginationVo<ShopBannerVo>> getShopHomeImages(Integer shopId, String title, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
-        List<ShopBannerVo> images = shopMapper.getShopHomeImages(shopId);
+        List<ShopBannerVo> images = shopMapper.getShopHomeImages(shopId, title);
         PaginationVo<ShopBannerVo> page = new PaginationVo<>(images);
         return ResponseJson.success(page);
     }
 
+    /**
+     * 一键排序
+     *
+     * @param id
+     * @param sort
+     * @return
+     */
+    @Override
+    public ResponseJson updateShopBannerSort(Integer id, Integer sort) {
+        shopMapper.updateShopBannerSort(id, sort);
+        return ResponseJson.success();
+    }
+
     /**
      * 供应商-更新轮播图片
      *
@@ -488,13 +545,14 @@ public class ShopServiceImpl implements ShopService {
         if (null != shopBannerDto.getId()) {
             // 更新
             shopBanner.setId(shopBannerDto.getId());
+            shopBanner.setSort(shopBanner.getSort());
             shopMapper.updateShopHomeImage(shopBanner);
         } else {
             // 新增
-            int count = shopMapper.getShopHomeImageCount(shopBannerDto.getShopId());
+            /*int count = shopMapper.getShopHomeImageCount(shopBannerDto.getShopId());
             if (count >= 4) {
                 return ResponseJson.error("主页广告图的上限是4张图!", null);
-            }
+            }*/
             shopMapper.insertShopHomeImage(shopBanner);
         }
         return ResponseJson.success(null);

+ 37 - 25
src/main/resources/mapper/RoosInformationMapper.xml

@@ -3,24 +3,23 @@
 <mapper namespace="com.caimei365.user.mapper.RoosInformationMapper">
     <select id="selIsClick" resultType="integer">
         SELECT isClick FROM cm_roos_information cri
-        <if test="productId != null">
-            LEFT JOIN product p ON p.shopId = cri.shopId
-        </if>
+            left join cm_shop_product csp on csp.id = cri.shopProductId
+            left join cm_shop_statistics css on css.id = csp.statisticsId
         <if test="infoId != null">
-            LEFT JOIN cm_shop_info csi ON csi.shopId = cri.shopId
+            LEFT JOIN cm_shop_info csi ON csi.shopProductId = csp.id
         </if>
         <if test="keyword != null and keyword != ''">
             left join shop s on s.shopId = cri.shopId
-            LEFT JOIN cm_shop_keyword csk ON csk.shopId = cri.shopId
+            LEFT JOIN cm_shop_keyword csk ON csk.shopProductId = csp.id
             left join cm_user_search_frequency cusf on cusf.id = csk.searchId
         </if>
         <where>
             cri.IP = #{IP} and cri.createTime LIKE concat('%',#{createTime},'%')
             <if test="shopId != null">
-                and cri.shopId = #{shopId}
+                and css.shopId = #{shopId}
             </if>
             <if test="productId != null">
-                and p.productId = #{productId}
+                and csp.productId = #{productId}
             </if>
             <if test="infoId != null">
                 and csi.status = 0
@@ -33,26 +32,24 @@
     </select>
 
     <select id="getShopStatus" resultType="java.lang.Integer">
-        select css.status
+        select csp.status
         from cm_shop_statistics css
-        <if test="productId != null">
-            LEFT JOIN product p ON p.shopId = css.shopId
-        </if>
+        left join cm_shop_product csp on csp.statisticsId = css.id
         <if test="infoId != null">
-            LEFT JOIN cm_shop_info csi ON csi.shopId = css.shopId
+            LEFT JOIN cm_shop_info csi ON csi.shopProductId = csp.id
         </if>
         <if test="keyword != null and keyword != ''">
             left join shop s on s.shopId = css.shopId
-            LEFT JOIN cm_shop_keyword csk ON csk.shopId = css.shopId
+            LEFT JOIN cm_shop_keyword csk ON csk.shopProductId = csp.id
             left join cm_user_search_frequency cusf on cusf.id = csk.searchId
         </if>
         <where>
-            css.delFlag = 0
+            css.delFlag = 0 AND csp.delFlag = 0
             <if test="shopId != null">
                 and css.shopId = #{shopId}
             </if>
             <if test="productId != null">
-                and p.productId = #{productId}
+                and csp.productId = #{productId}
             </if>
             <if test="infoId != null">
                 and csi.status = 0
@@ -70,7 +67,7 @@
             csp.productId
         FROM cm_shop_product csp
                  LEFT JOIN cm_shop_statistics css ON css.id = csp.statisticsId
-        WHERE css.shopId = #{shopId}
+        WHERE css.shopId = #{shopId} AND csp.delFlag = 0
     </select>
 
     <select id="getShopAdvert" resultType="com.caimei365.user.model.vo.cmShopAdvertisingImage">
@@ -89,22 +86,23 @@
     <select id="getShopPop" resultType="com.caimei365.user.model.vo.CmShopPopUpVo">
         SELECT
           csp.id,
-          csp.shopId,
+          css.shopId,
           csp.image,
           csp.guidingOne,
           csp.guidingTwo,
           csp.addTime
         FROM cm_shop_popUp csp
         left join cm_shop_product cspd on cspd.id = csp.shopProductId
+        left join cm_shop_statistics css on cspd.statisticsId = css.id
          <if test="infoId != null">
-            LEFT JOIN cm_shop_info csi ON csi.shopId = csp.shopId
+            LEFT JOIN cm_shop_info csi ON csi.shopProductId = cspd.id
          </if>
         <if test="keyword != null and keyword != ''">
             LEFT JOIN cm_shop_keyword csk ON csk.shopId = cspd.id
             left join cm_user_search_frequency cusf on cusf.id = csk.searchId
         </if>
         <where>
-            css.status = 0 and cspd.status = 0
+            css.status = 0 and cspd.status = 0 and cspd.delFlag = 0
             <if test="productId != null">
                 and cspd.productId = #{productId}
             </if>
@@ -123,7 +121,7 @@
     <select id="getProductPop" resultType="com.caimei365.user.model.vo.CmShopPopUpVo">
         SELECT
             csp.id,
-            csp.shopId,
+            css.shopId,
             csp.image,
             csp.guidingOne,
             csp.guidingTwo,
@@ -132,6 +130,7 @@
         left join cm_shop_product cspd on cspd.id = csp.shopProductId
         left join cm_shop_statistics css on css.id = cspd.statisticsId
         where css.shopId = #{shopId}
+          AND cspd.delFlag = 0
         limit 1
     </select>
 
@@ -172,14 +171,27 @@
     </select>
 
     <select id="getShopInfoId" resultType="java.lang.Integer">
-        select infoId from cm_shop_info where shopId = #{shopId} and status = 0 and delFlag = 0
+        select
+            csi.infoId
+        FROM cm_shop_info csi
+        LEFT JOIN cm_shop_product csp ON csp.id = csi.shopProductId
+            LEFT JOIN cm_shop_statistics css ON css.id = csp.statisticsId
+        WHERE css.shopId = #{shopId}
+          AND csi.status = 0 AND csi.delFlag = 0
+          AND csp.status = 0 AND csp.delFlag = 0
+          AND css.status = 0 AND css.delFlag = 0
     </select>
 
     <select id="getShopKeyword" resultType="java.lang.String">
-        select cusf.keyword
-        from cm_shop_keyword csk
-        left join cm_user_search_frequency cusf on cusf.id = csk.searchId
-        where csk.shopId = #{shopId} and csk.status = 0 and csk.delFlag = 0
+        SELECT cusf.keyword
+        FROM cm_shop_keyword csk
+                 LEFT JOIN cm_user_search_frequency cusf ON cusf.id = csk.searchId
+                 LEFT JOIN cm_shop_product csp ON csp.id = csk.shopProductId
+                 LEFT JOIN cm_shop_statistics css ON css.id = csp.statisticsId
+        WHERE css.shopId = #{shopId}
+          AND csk.status = 0 AND csk.delFlag = 0
+          AND csp.status = 0 AND csp.delFlag = 0
+          AND css.status = 0 AND css.delFlag = 0
     </select>
 
     <select id="getBehavior" resultType="java.lang.Integer">

+ 41 - 12
src/main/resources/mapper/ShopMapper.xml

@@ -162,7 +162,7 @@
             csc.sort,
             csc.addTime,
             csc.delFlag,
-            (SELECT COUNT(id) FROM cm_shop_category_product WHERE categoryId = csc.id)
+            (SELECT COUNT(id) FROM cm_shop_category_product WHERE categoryId = csc.id) as productNumber
         FROM cm_shop_category csc
         WHERE csc.delFlag = 0 AND csc.shopId = #{shopId}
         <if test="category != null and category != ''">
@@ -190,16 +190,18 @@
         limit 1
     </select>
 
-    <select id="getCategoryProductById" resultType="com.caimei365.user.model.vo.CmShopCategoryProductVo">
+    <select id="getCategoryProductById" resultType="com.caimei365.user.model.vo.ProductItemVo">
         SELECT
             cscp.id,
             cscp.categoryId,
             cscp.productId,
-            cscp.addTime,
-            p.name AS productName,
-            p.mainImage
+            p.name,
+            p.mainImage as image,
+            s.shopId,
+            s.name AS shopName
         FROM cm_shop_category_product cscp
                  LEFT JOIN product p ON p.productId = cscp.productId
+                 LEFT JOIN shop s ON s.shopId = p.shopId
         WHERE cscp.delFlag = 0 AND cscp.categoryId = #{categoryId}
     </select>
 
@@ -222,12 +224,20 @@
         </where>
     </select>
 
-    <insert id="insertCategory" keyColumn="id" useGeneratedKeys="true">
+    <select id="getCategoryProductIdList" resultType="java.lang.Integer">
+        SELECT
+            cscp.productId
+        FROM cm_shop_category_product cscp
+                 LEFT JOIN cm_shop_category csc ON csc.id = cscp.categoryId
+        WHERE csc.shopId = #{shopId} and cscp.categoryId = #{categoryId} and cscp.delFlag = 0
+    </select>
+
+    <insert id="insertCategory" keyColumn="id" keyProperty="id" useGeneratedKeys="true">
         insert into cm_shop_category(shopId, category, sort, addTime, delFlag)
         values (#{shopId}, #{category}, #{sort}, now(), 0)
     </insert>
 
-    <insert id="insertCategoryProduct" keyColumn="id" useGeneratedKeys="true">
+    <insert id="insertCategoryProduct">
         insert into cm_shop_category_product(categoryId, productId, addTime, delFlag)
         values (#{categoryId}, #{productId}, now(), 0)
     </insert>
@@ -262,9 +272,28 @@
     </update>
 
     <select id="getShopHomeImages" resultType="com.caimei365.user.model.vo.ShopBannerVo">
-        select shopBannerID AS id, shopID AS shopId, image, link, title, info
-        from shopbanner where shopID = #{shopId}
+        select shopBannerID AS id,
+               shopID AS shopId,
+               image,
+               link,
+               title,
+               info,
+               sort,
+               addTime
+        from shopbanner
+        where shopID = #{shopId}
+        <if test="title != null and title != ''">
+            and title like concat('%', #{title}, '%')
+        </if>
+        order by sort asc
     </select>
+
+    <update id="updateShopBannerSort">
+        update shopbanner
+        set sort = #{sort}
+        where shopBannerID = #{id}
+    </update>
+
     <select id="getShopPromotionsByShopId" resultType="com.caimei365.user.model.vo.PromotionsVo">
         select  pr.id,
                 pr.name,
@@ -360,12 +389,12 @@
         SELECT COUNT(*) FROM shopbanner WHERE shopID = #{shopId}
     </select>
     <insert id="insertShopHomeImage">
-        INSERT INTO shopbanner (shopID,title,link,info,image)
-        VALUES (#{shopId},#{title},#{link},#{info},#{image})
+        INSERT INTO shopbanner (shopID,title,link,info,image, sort, addTime)
+        VALUES (#{shopId},#{title},#{link},#{info},#{image}, #{sort}, now())
     </insert>
     <update id="updateShopHomeImage">
         UPDATE shopbanner
-        SET title = #{title}, link = #{link}, info = #{info}, image = #{image}
+        SET title = #{title}, link = #{link}, info = #{info}, image = #{image}, sort = #{sort}
         WHERE shopBannerID = #{id}
     </update>
     <delete id="deleteShopHomeImage">