Bläddra i källkod

导入分类记录

fubojin 1 dag sedan
förälder
incheckning
46fb2c4b8f
20 ändrade filer med 394 tillägg och 82 borttagningar
  1. 10 4
      yami-shop-bean/src/main/java/com/yami/shop/bean/model/ShopCategoryLog.java
  2. 2 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/model/ShopSku.java
  3. 52 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ShopCategoryLogExportVO.java
  4. 32 0
      yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ShopCategoryLogVO.java
  5. 4 0
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/CategoryPropController.java
  6. 6 6
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/OrderRefundController.java
  7. 1 1
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopCategoryController.java
  8. 99 0
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopCategoryLogController.java
  9. 4 5
      yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopSkuController.java
  10. 7 0
      yami-shop-service/src/main/java/com/yami/shop/dao/ShopCategoryLogMapper.java
  11. 10 0
      yami-shop-service/src/main/java/com/yami/shop/dao/ShopSkuMapper.java
  12. 23 0
      yami-shop-service/src/main/java/com/yami/shop/service/IShopCategoryLogService.java
  13. 1 1
      yami-shop-service/src/main/java/com/yami/shop/service/IShopCategoryService.java
  14. 2 3
      yami-shop-service/src/main/java/com/yami/shop/service/ShopSkuService.java
  15. 52 0
      yami-shop-service/src/main/java/com/yami/shop/service/impl/ShopCategoryLogServiceImpl.java
  16. 21 31
      yami-shop-service/src/main/java/com/yami/shop/service/impl/ShopCategoryServiceImpl.java
  17. 4 14
      yami-shop-service/src/main/java/com/yami/shop/service/impl/ShopSkuServiceImpl.java
  18. 1 0
      yami-shop-service/src/main/resources/mapper/ProductMapper.xml
  19. 25 0
      yami-shop-service/src/main/resources/mapper/ShopCategoryLogMapper.xml
  20. 38 17
      yami-shop-service/src/main/resources/mapper/ShopSkuMapper.xml

+ 10 - 4
yami-shop-bean/src/main/java/com/yami/shop/bean/model/ShopCategoryLog.java

@@ -47,11 +47,8 @@ public class ShopCategoryLog implements Serializable {
     /**
      * 操作人
      */
-    private Long sysUserId;
+    private Long createBy;
     /**
-     * 操作人名称
-     */
-    private String sysUserName;
 
     /**
      * 一级分类名称
@@ -68,6 +65,15 @@ public class ShopCategoryLog implements Serializable {
      */
     private String subSubName;
 
+    /**
+     * 任务名称
+     */
+    private String taskName;
+    /**
+     * 任务编号
+     */
+    private String taskCode;
+
     /**
      * 创建时间
      */

+ 2 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/model/ShopSku.java

@@ -39,6 +39,8 @@ public class ShopSku implements Serializable {
 
     @TableField(exist = false)
     private String shopName;
+    @TableField(exist = false)
+    private String skuName;
 
     /**
      * 单品ID

+ 52 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ShopCategoryLogExportVO.java

@@ -0,0 +1,52 @@
+package com.yami.shop.bean.vo;
+
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 分类导入失败导出VO
+ */
+@Data
+public class ShopCategoryLogExportVO {
+    /**
+     * 失败原因
+     */
+    @ExcelProperty(value = "失败原因", index = 0)
+    @ColumnWidth(40)
+    private String reason;
+
+    /**
+     * 海博门店ID
+     */
+    @ExcelProperty(value = "门店ID", index = 1)
+    @ColumnWidth(30)
+    private String hbShopId;
+
+    /**
+     * 一级分类名称
+     */
+    @ExcelProperty(value = "一级分类名称", index = 2)
+    @ColumnWidth(30)
+    private String name;
+
+    /**
+     * 二级分类名称
+     */
+    @ExcelProperty(value = "二级分类名称", index = 3)
+    @ColumnWidth(30)
+    private String subName;
+
+    /**
+     * 三级分类名称
+     */
+    @ExcelProperty(value = "三级分类名称", index = 4)
+    @ColumnWidth(30)
+    private String subSubName;
+
+}

+ 32 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/vo/ShopCategoryLogVO.java

@@ -0,0 +1,32 @@
+package com.yami.shop.bean.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ShopCategoryLogVO {
+
+    @ApiModelProperty("任务编号")
+    private String taskCode;
+
+    @ApiModelProperty("任务名称")
+    private String taskName;
+
+    @ApiModelProperty("创建时间")
+    private String createTime;
+
+    @ApiModelProperty("操作人")
+    private String createBy;
+
+    @ApiModelProperty("成功状态数量")
+    private Integer successStatus;
+
+    @ApiModelProperty("失败状态数量")
+    private Integer failureStatus;
+
+    @ApiModelProperty("操作人名称")
+    private String createByName;
+    @ApiModelProperty("操作人角色")
+    private String  createByRole;
+
+}

+ 4 - 0
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/CategoryPropController.java

@@ -48,6 +48,10 @@ public class CategoryPropController {
 	@Autowired
 	private CategoryProdService categoryProdService;
 
+	/**
+	 * 通过商品id查询分类绑定商品
+	 */
+
 
 
 

+ 6 - 6
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/OrderRefundController.java

@@ -65,12 +65,12 @@ public class OrderRefundController {
      * @param refundId id
      * @return 查询详细信息
      */
-    @GetMapping("/info")
-    @PreAuthorize("@pms.hasPermission('platform:orderRefund:info')")
-    public R<OrderRefund> info(@RequestParam("refundId") Long refundId, @RequestParam("shopId") Long shopId) {
-        OrderRefund orderRefund = orderRefundService.getOrderRefundById(refundId, shopId);
-        return R.SUCCESS(orderRefund);
-    }
+//    @GetMapping("/info")
+////    @PreAuthorize("@pms.hasPermission('platform:orderRefund:info')")
+//    public R<OrderRefund> info(@RequestParam("refundId") Long refundId, @RequestParam("shopId") Long shopId) {
+//        OrderRefund orderRefund = orderRefundService.getOrderRefundById(refundId, shopId);
+//        return R.SUCCESS(orderRefund);
+//    }
 
     /**
      * 通过ID查询详情

+ 1 - 1
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopCategoryController.java

@@ -95,7 +95,7 @@ public class ShopCategoryController {
     @ApiOperation(value = "导入门店前台类目", notes = "导入门店前台类目")
     public R importCategory(@RequestParam("file") MultipartFile file) {
         YamiSysUser sysUser = SecurityUtils.getSysUser();
-        shopCategoryService.importCategory(file, sysUser.getUserId(), sysUser.getUsername());
+        shopCategoryService.importCategory(file, sysUser.getUserId());
         return R.SUCCESS();
     }
 

+ 99 - 0
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopCategoryLogController.java

@@ -0,0 +1,99 @@
+package com.yami.shop.platform.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yami.shop.bean.model.PointsFailureRecord;
+import com.yami.shop.bean.model.ShopCategory;
+import com.yami.shop.bean.model.ShopCategoryLog;
+import com.yami.shop.bean.vo.RecordExportVO;
+import com.yami.shop.bean.vo.ShopCategoryLogExportVO;
+import com.yami.shop.bean.vo.ShopCategoryLogVO;
+import com.yami.shop.common.util.PageParam;
+import com.yami.shop.common.util.R;
+import com.yami.shop.service.IShopCategoryLogService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 门店前台类目导入记录接口
+ *
+ * @author fbj
+ * @since 2025-09-XX
+ */
+@Slf4j
+@RestController
+@RequestMapping("/platform/shopCategoryLog")
+@Api(tags = "门店前台类目导入记录接口")
+@AllArgsConstructor
+public class ShopCategoryLogController {
+
+    private final IShopCategoryLogService shopCategoryLogService;
+
+
+    @GetMapping("/page")
+    @ApiOperation(value = "分页查询门店前台类目导入记录", notes = "分页查询门店前台类目导入记录")
+    public R<IPage<ShopCategoryLog>> page(PageParam<ShopCategoryLog> pageParam, ShopCategory shopCategory) {
+        IPage<ShopCategoryLog> page = shopCategoryLogService.page(
+                pageParam, new LambdaQueryWrapper<ShopCategoryLog>()
+                        .like(shopCategory.getName() != null, ShopCategoryLog::getName, shopCategory.getName())
+                        .eq(shopCategory.getShopId() != null, ShopCategoryLog::getShopId, shopCategory.getShopId())
+                       );
+        return R.SUCCESS(page);
+    }
+
+    @GetMapping("/list")
+    @ApiOperation(value = "查询门店前台类目导入记录", notes = "查询门店前台类目导入记录")
+    public R<List<ShopCategoryLogVO>> list(ShopCategoryLog shopCategoryLog) {
+        List<ShopCategoryLogVO> list = shopCategoryLogService.groupByCode(shopCategoryLog);
+        return R.SUCCESS(list);
+    }
+
+
+    /**
+     * 导出门店前台类目导入失败记录
+     */
+    @GetMapping("/export")
+    @ApiOperation(value = "导出门店前台类目导入失败记录", notes = "导出门店前台类目导入失败记录")
+    public void export(HttpServletResponse response, ShopCategoryLog shopCategoryLog) {
+        List<ShopCategoryLog> list = shopCategoryLogService.list(new LambdaQueryWrapper<ShopCategoryLog>()
+                .eq(ShopCategoryLog::getTaskCode, shopCategoryLog.getTaskCode())
+                .eq(ShopCategoryLog::getIsFail, false));
+        // 转换为导出VO
+        List<ShopCategoryLogExportVO> exportData = new ArrayList<>();
+        for (ShopCategoryLog record : list) {
+            ShopCategoryLogExportVO exportVO = new ShopCategoryLogExportVO();
+
+            exportVO.setHbShopId(record.getHbShopId());
+            exportVO.setReason(record.getReason());
+            exportVO.setName(record.getName());
+            exportVO.setSubName(record.getSubName());
+            exportVO.setSubSubName(record.getSubSubName());
+            exportData.add(exportVO);
+
+        }
+        try {
+            // 设置响应头
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setCharacterEncoding("utf-8");
+            String fileName = URLEncoder.encode("积分导入失败数据导出", "UTF-8").replaceAll("\\+", "%20");
+            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
+            // 写入Excel
+            EasyExcel.write(response.getOutputStream(), ShopCategoryLogExportVO.class)
+                    .sheet("积分导入失败数据")
+                    .doWrite(exportData);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 4 - 5
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/ShopSkuController.java

@@ -8,7 +8,9 @@
 package com.yami.shop.platform.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yami.shop.bean.dto.OrderRefundDto;
 import com.yami.shop.bean.model.ShopSku;
+import com.yami.shop.common.util.PageParam;
 import com.yami.shop.common.util.R;
 import com.yami.shop.service.ShopSkuService;
 import lombok.AllArgsConstructor;
@@ -41,11 +43,8 @@ public class ShopSkuController {
      * 分页查询门店对应商品详细
      */
     @GetMapping("/page")
-    public R<IPage<ShopSku>> page(@RequestParam(defaultValue = "1") Integer current,
-                                  @RequestParam(defaultValue = "10") Integer size,
-                                  ShopSku shopSku) {
-        IPage<ShopSku> page = shopProdService.shopSkuPage(current,size,shopSku);
-        return R.SUCCESS(page);
+    public R<IPage<ShopSku>> page(PageParam<ShopSku> page, ShopSku shopSku) {
+        return R.SUCCESS(shopProdService.shopSkuPage(page,shopSku));
     }
 
 

+ 7 - 0
yami-shop-service/src/main/java/com/yami/shop/dao/ShopCategoryLogMapper.java

@@ -2,9 +2,12 @@
 package com.yami.shop.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yami.shop.bean.model.PointsFailureRecord;
 import com.yami.shop.bean.model.ShopCategory;
 import com.yami.shop.bean.model.ShopCategoryLog;
 import com.yami.shop.bean.vo.FrontCategoryVO;
+import com.yami.shop.bean.vo.PointsFailureRecordVO;
+import com.yami.shop.bean.vo.ShopCategoryLogVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -14,5 +17,9 @@ import java.util.List;
  */
 public interface ShopCategoryLogMapper extends BaseMapper<ShopCategoryLog> {
 
+    /**
+     * 通过条件code分组获取积分充值失败记录列表
+     */
+    List<ShopCategoryLogVO> groupByCode(ShopCategoryLog shopCategoryLog);
 
 }

+ 10 - 0
yami-shop-service/src/main/java/com/yami/shop/dao/ShopSkuMapper.java

@@ -11,7 +11,9 @@
 package com.yami.shop.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yami.shop.bean.model.ShopSku;
+import com.yami.shop.common.util.PageParam;
 import org.apache.ibatis.annotations.Param;
 
 /**
@@ -26,4 +28,12 @@ public interface ShopSkuMapper extends BaseMapper<ShopSku> {
      * @param prodId 商品id
      */
     void deleteByProdId(@Param("prodId")Long prodId);
+
+    /**
+     * 分页查询门店商品
+     * @param page 分页参数
+     * @param shopSku 门店商品
+     * @return 门店商品
+     */
+    IPage<ShopSku> selectShopSkuPage(@Param("page")PageParam<ShopSku> page, @Param("shopSku")ShopSku shopSku);
 }

+ 23 - 0
yami-shop-service/src/main/java/com/yami/shop/service/IShopCategoryLogService.java

@@ -0,0 +1,23 @@
+package com.yami.shop.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yami.shop.bean.model.ShopCategoryLog;
+import com.yami.shop.bean.vo.ShopCategoryLogVO;
+
+import java.util.List;
+
+
+/**
+ * 门店前台类目记录服务接口
+ *
+ * @author fbj
+ * @since 2025-09-XX
+ */
+public interface IShopCategoryLogService extends IService<ShopCategoryLog> {
+
+
+    /**
+     * 通过条件code分组获取门店前台类目记录列表
+     */
+    List<ShopCategoryLogVO> groupByCode(ShopCategoryLog shopCategoryLog);
+}

+ 1 - 1
yami-shop-service/src/main/java/com/yami/shop/service/IShopCategoryService.java

@@ -35,7 +35,7 @@ public interface IShopCategoryService extends IService<ShopCategory> {
      * 导入类目
      * @param file  文件
      */
-    void importCategory(MultipartFile file, Long userId, String username);
+    void importCategory(MultipartFile file, Long userId);
     /**
      * 根据店铺id和顶级分类id,获取分类
      * @param parentId

+ 2 - 3
yami-shop-service/src/main/java/com/yami/shop/service/ShopSkuService.java

@@ -4,6 +4,7 @@ package com.yami.shop.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yami.shop.bean.model.ShopSku;
+import com.yami.shop.common.util.PageParam;
 
 /**
  * 门店对应商品价格和库存管理
@@ -14,10 +15,8 @@ public interface ShopSkuService extends IService<ShopSku> {
 
     /**
      * 分页查询
-     * @param current 当前页
-     * @param size 每页数量
      * @param shopSku 查询参数
      * @return 分页数据
      */
-    IPage<ShopSku> shopSkuPage(Integer current, Integer size, ShopSku shopSku);
+    IPage<ShopSku> shopSkuPage(PageParam<ShopSku> page, ShopSku shopSku);
 }

+ 52 - 0
yami-shop-service/src/main/java/com/yami/shop/service/impl/ShopCategoryLogServiceImpl.java

@@ -0,0 +1,52 @@
+package com.yami.shop.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.yami.shop.bean.dto.ShopCategoryExcelDTO;
+import com.yami.shop.bean.model.*;
+import com.yami.shop.bean.param.CategoryProductDTO;
+import com.yami.shop.bean.vo.ShopCategoryLogVO;
+import com.yami.shop.common.exception.GlobalException;
+import com.yami.shop.dao.*;
+import com.yami.shop.service.IShopCategoryLogService;
+import com.yami.shop.service.IShopCategoryService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 门店前台类目服务实现类
+ *
+ * @author YourName
+ * @since 2025-09-XX
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class ShopCategoryLogServiceImpl extends ServiceImpl<ShopCategoryLogMapper, ShopCategoryLog> implements IShopCategoryLogService {
+
+    private final ShopCategoryLogMapper shopCategoryLogMapper;
+
+    @Override
+    public List<ShopCategoryLogVO> groupByCode(ShopCategoryLog shopCategoryLog) {
+        return shopCategoryLogMapper.groupByCode(shopCategoryLog);
+    }
+}

+ 21 - 31
yami-shop-service/src/main/java/com/yami/shop/service/impl/ShopCategoryServiceImpl.java

@@ -102,7 +102,7 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void importCategory(MultipartFile file, Long userId, String username) {
+    public void importCategory(MultipartFile file, Long userId) {
         try {
             // 检查文件是否为空
             if (file == null || file.isEmpty()) {
@@ -118,6 +118,8 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
 
             // 批量保存数据
             if (!shopCategories.isEmpty()) {
+                Date date = new Date();
+                String code = generateUniqueCode();
                 for (int i = 0; i < shopCategories.size(); i++) {
                     ShopCategoryExcelDTO category = shopCategories.get(i);
 
@@ -127,15 +129,16 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
                     shopCategoryLog.setSubSubName(category.getSubSubName());
                     shopCategoryLog.setHbShopId(category.getHbShopId());
                     shopCategoryLog.setIsFail(true);
+                    shopCategoryLog.setTaskCode(code);
+                    shopCategoryLog.setTaskName("导入前台类目");
                     // 设置操作人 获取当前操作人信息
-                    shopCategoryLog.setSysUserId(userId);
-                    shopCategoryLog.setSysUserName(username);
-                    shopCategoryLog.setCreateTime(new Date());
-                    shopCategoryLog.setUpdateTime(new Date());
+                    shopCategoryLog.setCreateBy(userId);
+                    shopCategoryLog.setCreateTime(date);
+                    shopCategoryLog.setUpdateTime(date);
 
                     try {
                         // 检查数据有效性 及 添加
-                        validateShopCategories(category, i);
+                        validateShopCategories(category, i, code);
                     } catch (Exception e) {
                         shopCategoryLog.setReason(e.getMessage());
                         shopCategoryLog.setIsFail(false);
@@ -269,28 +272,6 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
         return excelDataList;
     }
 
-    /**
-     * 将Excel数据转换为ShopCategory对象
-     *
-     * @param excelDTO Excel数据传输对象
-     * @return ShopCategory对象
-     */
-    private ShopCategory convertToShopCategory(ShopCategoryExcelDTO excelDTO) {
-        if (excelDTO == null) {
-            return null;
-        }
-
-        ShopCategory shopCategory = new ShopCategory();
-        shopCategory.setName(excelDTO.getName());
-        shopCategory.setSubName(excelDTO.getSubName());
-        shopCategory.setSubSubName(excelDTO.getSubSubName());
-        shopCategory.setCode(generateUniqueCode());
-        shopCategory.setHbShopId(excelDTO.getHbShopId());
-        shopCategory.setIsDelete(0); // 默认未删除
-        shopCategory.setParentCode("0"); // 默认未删除
-
-        return shopCategory;
-    }
 
     /**
      * 生成唯一编码
@@ -310,7 +291,7 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
      *
      * @param category 门店前台类目
      */
-    private void validateShopCategories(ShopCategoryExcelDTO category, int i) {
+    private void validateShopCategories(ShopCategoryExcelDTO category, int i, String code) {
 
             // 检查必填字段
             if (ObjectUtils.isEmpty(category.getHbShopId())) {
@@ -348,10 +329,19 @@ public class ShopCategoryServiceImpl extends ServiceImpl<ShopCategoryMapper, Sho
                 shopCategoryByCode1 = addShopCategory(frontCategory, shopDetail.getHbStationId(), shopDetail.getShopId(), shopCategoryByCode1.getId());
             }
 
-            ShopCategory shopCategory = new ShopCategory();
+        ShopCategory shopCategory1 = shopCategoryMapper.selectOne(new LambdaQueryWrapper<ShopCategory>()
+                .eq(ShopCategory::getParentCode, frontCategory.getCode())
+                .eq(ShopCategory::getIsDelete, 0)
+                .eq(ShopCategory::getShopId, shopDetail.getShopId())
+                .eq(ShopCategory::getName, category.getSubSubName()));
+            if (shopCategory1 != null){
+                throw new GlobalException("第" + (i + 1) + "行:三级类目已经存在");
+            }
+
+        ShopCategory shopCategory = new ShopCategory();
             shopCategory.setPid(shopCategoryByCode1.getId());
             shopCategory.setName(category.getSubSubName());
-            shopCategory.setCode(generateUniqueCode());
+            shopCategory.setCode(code);
             shopCategory.setParentCode(shopCategoryByCode1.getCode());
             shopCategory.setParentName(shopCategoryByCode1.getName());
             shopCategory.setLevel(3);

+ 4 - 14
yami-shop-service/src/main/java/com/yami/shop/service/impl/ShopSkuServiceImpl.java

@@ -33,26 +33,16 @@ public class ShopSkuServiceImpl extends ServiceImpl<ShopSkuMapper, ShopSku> impl
     }
 
     @Override
-    public IPage<ShopSku> shopSkuPage(Integer current, Integer size, ShopSku shopSku) {
-        PageParam<ShopSku> pageParam = new PageParam<>();
-        pageParam.setCurrent(current);
-        pageParam.setSize(size);
-
-        LambdaQueryWrapper<ShopSku> queryWrapper = new LambdaQueryWrapper<>();
-                queryWrapper.eq(ObjectUtils.isNotEmpty(shopSku.getShopId()),ShopSku::getShopId, shopSku.getShopId());
-                queryWrapper.eq(ObjectUtils.isNotEmpty(shopSku.getSkuId()),ShopSku::getSkuId, shopSku.getSkuId());
-                queryWrapper.eq(ShopSku::getIsDelete, 0);
-        IPage<ShopSku> page = shopProdMapper.selectPage(pageParam, queryWrapper);
-
-
+    public IPage<ShopSku> shopSkuPage(PageParam<ShopSku> page,  ShopSku shopSku) {
+        IPage<ShopSku> page1 = shopProdMapper.selectShopSkuPage(page, shopSku);
         //循环获取sku和渠道价格设置信息
-        for (ShopSku record : page.getRecords()) {
+        for (ShopSku record : page1.getRecords()) {
             ShopDetail shopDetail = shopDetailMapper.selectById(record.getShopId());
             record.setShopName(shopDetail.getShopName());
             record.setSku(skuMapper.selectById(record.getSkuId()));
             List<ChannelProd> channelProds = channelProdMapper.selectListAll(record.getSkuId(), record.getShopId());
             record.setChannelProdList(channelProds);
         }
-        return page;
+        return page1;
     }
 }

+ 1 - 0
yami-shop-service/src/main/resources/mapper/ProductMapper.xml

@@ -824,6 +824,7 @@
         WHERE
             tp.STATUS = 1 and tp.`is_delete`=0
           AND tcp.is_delete = 0
+          AND cp.is_delete = 0
           AND tsc.is_delete = 0
           AND cp.channel_prod_price IS NOT NULL
           AND tsc.shop_id=#{prodByCategoryIdAndShopIdDTO.shopId}

+ 25 - 0
yami-shop-service/src/main/resources/mapper/ShopCategoryLogMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yami.shop.dao.ShopCategoryLogMapper">
+
+
+    <select id="groupByCode" resultType="com.yami.shop.bean.vo.ShopCategoryLogVO">
+        SELECT
+        p.task_code AS taskCode,
+        p.task_name  AS taskName,
+        max(p.create_time) AS createTime,
+        p.create_by AS createBy,
+        COUNT(IF(p.is_fail = 1, 1, NULL)) AS successStatus,
+        COUNT(IF(p.is_fail = 0, 1, NULL)) AS failureStatus,
+        u.username AS createByName,
+        r.role_name AS createByRole
+        from tz_shop_category_log p
+        left join tz_sys_user u on p.create_by = u.user_id
+        left join tz_sys_user_role ur on u.user_id = ur.user_id
+        left join tz_sys_role r on ur.role_id = r.role_id
+        <where>
+            <if test="shopId != null">p.shop_id = #{shopId}</if>
+        </where>
+        GROUP BY p.task_code,p.task_name, p.create_by, u.username, r.role_name
+    </select>
+</mapper>

+ 38 - 17
yami-shop-service/src/main/resources/mapper/ShopSkuMapper.xml

@@ -4,24 +4,45 @@
 <mapper namespace="com.yami.shop.dao.ShopSkuMapper">
 
 
-  <resultMap id="shopProdMap" type="com.yami.shop.bean.model.ShopSku">
-    <id column="id" property="id"/>
-    <result column="shop_id" property="shopId"/>
-    <result column="sku_id" property="skuId"/>
-    <result column="shop_prod_price" property="shopSkuPrice"/>
-    <result column="shop_prod_stocks" property="shopSkuStocks"/>
-    <result column="is_delete" property="isDelete"/>
-    <result column="update_time" property="updateTime"/>
-    <result column="rec_time" property="recTime"/>
-  </resultMap>
-
-  <update id="deleteByProdId">
-    UPDATE tz_shop_sku SET is_delete = 1 WHERE spu_id = #{prodId}
-  </update>
+    <resultMap id="shopProdMap" type="com.yami.shop.bean.model.ShopSku">
+        <id column="id" property="id"/>
+        <result column="shop_id" property="shopId"/>
+        <result column="sku_id" property="skuId"/>
+        <result column="shop_prod_price" property="shopSkuPrice"/>
+        <result column="shop_prod_stocks" property="shopSkuStocks"/>
+        <result column="is_delete" property="isDelete"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="rec_time" property="recTime"/>
+    </resultMap>
+
+    <update id="deleteByProdId">
+        UPDATE tz_shop_sku
+        SET is_delete = 1
+        WHERE spu_id = #{prodId}
+    </update>
 
     <select id="selectByShopAndProd" resultMap="shopProdMap">
-    SELECT * FROM tz_shop_sku
-    WHERE shop_id = #{shopId} AND sku_id = #{skuId} AND is_delete = 0
-  </select>
+        SELECT *
+        FROM tz_shop_sku
+        WHERE shop_id = #{shopId}
+          AND sku_id = #{skuId}
+          AND is_delete = 0
+    </select>
+
+
+    <select id="selectShopSkuPage" resultMap="shopProdMap">
+        SELECT sk.* FROM tz_shop_sku sk join tz_sku s on sk.sku_id = s.sku_id
+        WHERE s.is_delete = 0 and sk.is_delete = 0
+        <if test="shopSku.shopId != null">
+            AND sk.shop_id = #{shopSku.shopId}
+        </if>
+        <if test="shopSku.skuId != null">
+            AND sk.sku_id = #{shopSku.sku}
+        </if>
+        <if test="shopSku.skuName != null">
+            AND s.sku_name LIKE CONCAT('%',#{shopSku.skuName},'%')
+        </if>
+        order by sk.rec_time desc
+    </select>
 
 </mapper>