Quellcode durchsuchen

web品牌管理接口

bmmx vor 1 Jahr
Ursprung
Commit
c8e18bd986

+ 6 - 0
.idea/JavaSceneConfigState.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="SmartInputSourceJavaSceneConfigState">
+    <option name="customChineseScenes" value="{&quot;capsLockState&quot;:false,&quot;code&quot;:&quot;;BadReqException(message);ApiModelProperty(value)&quot;,&quot;enable&quot;:true,&quot;languageType&quot;:&quot;CHINESE&quot;,&quot;name&quot;:&quot;自定义中文切换&quot;,&quot;tip&quot;:&quot;&quot;}" />
+  </component>
+</project>

+ 0 - 1
.idea/vcs.xml

@@ -2,6 +2,5 @@
 <project version="4">
   <component name="VcsDirectoryMappings">
     <mapping directory="$PROJECT_DIR$" vcs="Git" />
-    <mapping directory="$PROJECT_DIR$/yanxin-admin" vcs="Git" />
   </component>
 </project>

+ 25 - 12
.idea/workspace.xml

@@ -4,18 +4,15 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="46b159bd-08ca-42f0-b80f-41d4944a8a29" name="Changes" comment="初始化运维项目">
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/entity/dto/AdminAddDTO.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/entity/dto/AdminQueryPageDTO.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/entity/vo/AdminQueryPageVO.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/utils/CommonUtil.java" afterDir="false" />
+    <list default="true" id="46b159bd-08ca-42f0-b80f-41d4944a8a29" name="Changes" comment="管理员电话和邮箱修改">
+      <change afterPath="$PROJECT_DIR$/.idea/JavaSceneConfigState.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/entity/dto/BrandDTO.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/entity/dto/BrandQueryPageDTO.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/entity/vo/BrandQueryPageVO.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/om/entity/vo/BrandVO.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/om/controller/admin/AdminController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/om/controller/admin/AdminController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/om/entity/vo/AdminLoginVO.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/om/entity/vo/AdminLoginVO.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/om/handler/GlobalExceptionHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/om/handler/GlobalExceptionHandler.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/om/service/IAdminService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/om/service/IAdminService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/om/service/impl/AdminServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/om/service/impl/AdminServiceImpl.java" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -161,6 +158,13 @@
       <workItem from="1706785269288" duration="21000" />
       <workItem from="1706838288496" duration="1975000" />
       <workItem from="1707095903203" duration="11627000" />
+      <workItem from="1707108708796" duration="122000" />
+      <workItem from="1707113093610" duration="1998000" />
+      <workItem from="1707124341633" duration="1141000" />
+      <workItem from="1707273858155" duration="5510000" />
+      <workItem from="1707295344394" duration="5919000" />
+      <workItem from="1707355242246" duration="627000" />
+      <workItem from="1707355884110" duration="7776000" />
     </task>
     <task id="LOCAL-00001" summary="管理员登录">
       <option name="closed" value="true" />
@@ -194,7 +198,15 @@
       <option name="project" value="LOCAL" />
       <updated>1706773538956</updated>
     </task>
-    <option name="localTasksCounter" value="5" />
+    <task id="LOCAL-00005" summary="管理员电话和邮箱修改">
+      <option name="closed" value="true" />
+      <created>1707108782511</created>
+      <option name="number" value="00005" />
+      <option name="presentableId" value="LOCAL-00005" />
+      <option name="project" value="LOCAL" />
+      <updated>1707108782511</updated>
+    </task>
+    <option name="localTasksCounter" value="6" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -203,7 +215,8 @@
   <component name="VcsManagerConfiguration">
     <MESSAGE value="管理员登录" />
     <MESSAGE value="初始化运维项目" />
-    <option name="LAST_COMMIT_MESSAGE" value="初始化运维项目" />
+    <MESSAGE value="管理员电话和邮箱修改" />
+    <option name="LAST_COMMIT_MESSAGE" value="管理员电话和邮箱修改" />
   </component>
   <component name="XDebuggerManager">
     <breakpoint-manager>

+ 1 - 1
src/main/java/com/om/controller/admin/AdminController.java

@@ -65,7 +65,7 @@ public class AdminController {
 
     @PostMapping("getPageList")
     @ApiOperation("分页查询管理员列表")
-    public Result<AdminQueryPageVO> getPageList(@RequestBody AdminQueryPageDTO dto){
+    public Result<AdminQueryPageVO> getPageList(@RequestBody AdminQueryPageDTO dto) {
         return adminService.getPageList(dto);
     }
 

+ 75 - 0
src/main/java/com/om/controller/admin/BrandController.java

@@ -0,0 +1,75 @@
+package com.om.controller.admin;
+
+
+import com.om.entity.dto.BrandDTO;
+import com.om.entity.dto.BrandQueryPageDTO;
+import com.om.entity.vo.BrandQueryPageVO;
+import com.om.entity.vo.BrandVO;
+import com.om.service.IBrandService;
+import com.om.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-02-07
+ */
+@RestController
+@RequestMapping("/web/diagnostic-brand")
+@Api(tags = "品牌管理相关接口")
+public class BrandController {
+
+    @Resource
+    private IBrandService brandService;
+
+    @PostMapping("/create")
+    @ApiOperation("新增品牌信息")
+    public Result createBrand(@RequestBody BrandDTO dto){
+        return brandService.createBrand(dto);
+    }
+
+
+    @GetMapping("/delete")
+    @ApiOperation("删除品牌信息")
+    public Result deleteBrand(@RequestParam Integer id){
+        return brandService.deleteBrand(id);
+    }
+
+    @GetMapping("/getById")
+    @ApiOperation("根据id品牌信息")
+    public Result<BrandVO>  queryById(@RequestParam Integer id){
+        return brandService.queryById(id);
+    }
+
+
+    @PostMapping("/update")
+    @ApiOperation("修改品牌信息")
+    public Result updateBrand(@RequestBody BrandDTO dto){
+        return brandService.updateBrand(dto);
+    }
+
+    @GetMapping("/getList")
+    @ApiOperation("查询品牌信息列表")
+    public Result<List<BrandVO>> queryList(){
+        return brandService.queryList();
+    }
+
+
+    @PostMapping("/getPageList")
+    @ApiOperation("分页查询品牌信息列表")
+    public Result<BrandQueryPageVO> queryPageList(@RequestBody BrandQueryPageDTO dto) {
+        return brandService.queryPageList(dto);
+    }
+
+
+
+
+}

+ 33 - 0
src/main/java/com/om/entity/dto/BrandDTO.java

@@ -0,0 +1,33 @@
+package com.om.entity.dto;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+public class BrandDTO {
+    @ApiModelProperty(value = "品牌id")
+    private Integer id;
+
+    @ApiModelProperty(value = "品牌代码")
+    private String brandCode;
+
+    @ApiModelProperty(value = "品牌中文名")
+    private String brandCn;
+
+    @ApiModelProperty(value = "品牌英文名")
+    private String brandEn;
+
+    @ApiModelProperty(value = "客户端id集合")
+    private List<Integer> clientIds;
+
+
+    @ApiModelProperty(value = "客户端路径")
+    private String clientPath;
+}

+ 21 - 0
src/main/java/com/om/entity/dto/BrandQueryPageDTO.java

@@ -0,0 +1,21 @@
+package com.om.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class BrandQueryPageDTO {
+    @ApiModelProperty(value = "当前页码")
+    private Integer pageIndex;
+
+    @ApiModelProperty(value = "每个页码的大小")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "搜索字段---搜索品牌中文名")
+    private String searchCn;
+
+    @ApiModelProperty(value = "搜索字段---搜索品牌英文名")
+    private String searchEn;
+}

+ 54 - 0
src/main/java/com/om/entity/po/Brand.java

@@ -0,0 +1,54 @@
+package com.om.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-02-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("brand")
+@ApiModel(value="Brand对象", description="")
+public class Brand implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "品牌id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "品牌代码")
+    private String brandCode;
+
+    @ApiModelProperty(value = "品牌中文名")
+    private String brandCn;
+
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "品牌英文名")
+    private String brandEn;
+
+    @ApiModelProperty(value = "客户端路径")
+    private String clientPath;
+
+
+}

+ 41 - 0
src/main/java/com/om/entity/po/BrandClient.java

@@ -0,0 +1,41 @@
+package com.om.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-02-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("brand_client")
+@ApiModel(value="BrandClient对象", description="")
+public class BrandClient implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "品牌和客户端关联表id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "品牌id")
+    private Integer brandId;
+
+    @ApiModelProperty(value = "客户端id")
+    private Integer clientId;
+
+
+}

+ 31 - 0
src/main/java/com/om/entity/vo/BrandQueryPageVO.java

@@ -0,0 +1,31 @@
+package com.om.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+public class BrandQueryPageVO {
+
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    @ApiModelProperty(value = "总页码")
+    private Integer pages;
+
+    @ApiModelProperty(value = "每个页码的大小")
+    private Integer size;
+
+    @ApiModelProperty(value = "总数量")
+    private Integer total;
+
+    @ApiModelProperty(value = "是否是查询")
+    private Boolean searchCount = false;
+
+    @ApiModelProperty(value = "结果集")
+    private List<BrandVO> records;
+
+}

+ 36 - 0
src/main/java/com/om/entity/vo/BrandVO.java

@@ -0,0 +1,36 @@
+package com.om.entity.vo;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+public class BrandVO {
+    @ApiModelProperty(value = "品牌id")
+    private Integer id;
+
+    @ApiModelProperty(value = "品牌代码")
+    private String brandCode;
+
+    @ApiModelProperty(value = "品牌中文名")
+    private String brandCn;
+
+    @ApiModelProperty(value = "品牌英文名")
+    private String brandEn;
+
+    @ApiModelProperty(value = "客户端id集合")
+    private List<Integer> clientIds;
+
+    @ApiModelProperty(value = "客户端路径")
+    private String clientPath;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+}

+ 16 - 0
src/main/java/com/om/mapper/BrandClientMapper.java

@@ -0,0 +1,16 @@
+package com.om.mapper;
+
+import com.om.entity.po.BrandClient;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-02-07
+ */
+public interface BrandClientMapper extends BaseMapper<BrandClient> {
+
+}

+ 16 - 0
src/main/java/com/om/mapper/BrandMapper.java

@@ -0,0 +1,16 @@
+package com.om.mapper;
+
+import com.om.entity.po.Brand;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-02-07
+ */
+public interface BrandMapper extends BaseMapper<Brand> {
+
+}

+ 16 - 0
src/main/java/com/om/service/IBrandClientService.java

@@ -0,0 +1,16 @@
+package com.om.service;
+
+import com.om.entity.po.BrandClient;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-02-07
+ */
+public interface IBrandClientService extends IService<BrandClient> {
+
+}

+ 34 - 0
src/main/java/com/om/service/IBrandService.java

@@ -0,0 +1,34 @@
+package com.om.service;
+
+import com.om.entity.dto.BrandDTO;
+import com.om.entity.dto.BrandQueryPageDTO;
+import com.om.entity.po.Brand;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.om.entity.vo.BrandQueryPageVO;
+import com.om.entity.vo.BrandVO;
+import com.om.utils.Result;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-02-07
+ */
+public interface IBrandService extends IService<Brand> {
+
+    Result createBrand(BrandDTO dto);
+
+    Result deleteBrand(Integer id);
+
+    Result<BrandVO> queryById(Integer id);
+
+    Result updateBrand(BrandDTO dto);
+
+    Result<List<BrandVO>> queryList();
+
+    Result<BrandQueryPageVO> queryPageList(BrandQueryPageDTO dto);
+}

+ 20 - 0
src/main/java/com/om/service/impl/BrandClientServiceImpl.java

@@ -0,0 +1,20 @@
+package com.om.service.impl;
+
+import com.om.entity.po.BrandClient;
+import com.om.mapper.BrandClientMapper;
+import com.om.service.IBrandClientService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-02-07
+ */
+@Service
+public class BrandClientServiceImpl extends ServiceImpl<BrandClientMapper, BrandClient> implements IBrandClientService {
+
+}

+ 246 - 0
src/main/java/com/om/service/impl/BrandServiceImpl.java

@@ -0,0 +1,246 @@
+package com.om.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.om.entity.dto.BrandDTO;
+import com.om.entity.dto.BrandQueryPageDTO;
+import com.om.entity.po.Brand;
+import com.om.entity.po.BrandClient;
+import com.om.entity.vo.BrandQueryPageVO;
+import com.om.entity.vo.BrandVO;
+import com.om.exception.BadReqException;
+import com.om.mapper.BrandMapper;
+import com.om.service.IBrandClientService;
+import com.om.service.IBrandService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.om.utils.Result;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-02-07
+ */
+@Service
+public class BrandServiceImpl extends ServiceImpl<BrandMapper, Brand> implements IBrandService {
+
+    @Resource
+    private IBrandClientService brandClientService;
+
+    @Override
+    @Transactional
+    public Result createBrand(BrandDTO dto) {
+        if (BeanUtil.isEmpty(dto)) {
+            throw new BadReqException("数据为空");
+        }
+
+        //保存品牌
+        Brand brand = BeanUtil.copyProperties(dto, Brand.class);
+        LocalDateTime now = LocalDateTime.now();
+        brand.setCreateTime(now);
+        brand.setUpdateTime(now);
+
+        this.save(brand);
+
+        //保存客户端和品牌的关联
+        List<Integer> clientIds = dto.getClientIds();
+        if (!CollectionUtil.isEmpty(clientIds)) {
+            //重新查询一遍
+            Brand one = this.getById(brand);
+            List<BrandClient> brandClients = new ArrayList<>();
+            for (Integer clientId : clientIds) {
+                BrandClient brandClient = new BrandClient();
+                brandClient.setBrandId(one.getId());
+                brandClient.setClientId(clientId);
+                brandClients.add(brandClient);
+            }
+            // 批量保存
+            brandClientService.saveBatch(brandClients);
+        }
+
+        return Result.ok();
+    }
+
+    @Override
+    @Transactional
+    public Result deleteBrand(Integer id) {
+        //根据id查询数据库
+        Brand brand = this.getById(id);
+        //判断是否存在
+        if (BeanUtil.isEmpty(brand)) {
+            throw new BadReqException("该品牌不存在");
+        }
+
+        //先 删除 品牌和客户端的关联表
+        List<BrandClient> list = brandClientService.lambdaQuery()
+                .eq(BrandClient::getBrandId, brand.getId())
+                .list();
+
+        if (!CollectionUtil.isEmpty(list)) {
+            List<Integer> collect = list.stream().map(c -> c.getId()).collect(Collectors.toList());
+
+            brandClientService.removeByIds(collect);
+        }
+
+        //删除品牌表
+        this.removeById(brand);
+
+        return Result.ok();
+    }
+
+    @Override
+    public Result<BrandVO> queryById(Integer id) {
+        //根据id查询
+        Brand brand = this.getById(id);
+        //判断是否存在
+        if (BeanUtil.isEmpty(brand)) {
+            throw new BadReqException("该品牌不存在");
+        }
+
+        //封装vo
+        BrandVO brandVO = BeanUtil.copyProperties(brand, BrandVO.class);
+        //查询 品牌和客户端的关联表
+        List<BrandClient> list = brandClientService.lambdaQuery()
+                .eq(BrandClient::getBrandId, id)
+                .list();
+
+        if (!CollectionUtil.isEmpty(list)) {
+            List<Integer> clientIds = list.stream().map(c -> c.getClientId()).collect(Collectors.toList());
+            brandVO.setClientIds(clientIds);
+        }
+
+
+        return Result.ok(brandVO);
+    }
+
+    @Override
+    @Transactional
+    public Result updateBrand(BrandDTO dto) {
+        if (BeanUtil.isEmpty(dto)) {
+            throw new BadReqException("数据为空");
+        }
+
+        //修改品牌
+        //根据dto查询数据库
+        Brand brand = this.getById(dto.getId());
+        if (BeanUtil.isEmpty(brand)) {
+            throw new BadReqException("该品牌不存在");
+        }
+        BeanUtil.copyProperties(dto, brand);
+        LocalDateTime now = LocalDateTime.now();
+        brand.setUpdateTime(now);
+
+        this.updateById(brand);
+
+        //修改 客户端和品牌的关联
+
+        //先删除   后新增
+        //批量查询
+        List<BrandClient> brandClients = brandClientService.lambdaQuery()
+                .eq(BrandClient::getBrandId, brand.getId())
+                .list();
+
+        if (!CollectionUtil.isEmpty(brandClients)) {
+            //删除
+            List<Integer> ids = brandClients.stream().map(c -> c.getId()).collect(Collectors.toList());
+            brandClientService.removeByIds(ids);
+        }
+        //新增
+        List<Integer> clientIds = dto.getClientIds();
+        if (!CollectionUtil.isEmpty(clientIds)) {
+
+            List<BrandClient> brandClientList = new ArrayList<>();
+            for (Integer clientId : clientIds) {
+                BrandClient brandClient = new BrandClient();
+                brandClient.setClientId(clientId);
+                brandClient.setBrandId(brand.getId());
+                brandClientList.add(brandClient);
+            }
+            // 批量保存
+            brandClientService.saveBatch(brandClientList);
+        }
+
+        return Result.ok();
+    }
+
+    @Override
+    public Result<List<BrandVO>> queryList() {
+        List<Brand> list = this.list();
+
+        List<BrandVO> brandVOS = BeanUtil.copyToList(list, BrandVO.class);
+        if (CollectionUtil.isEmpty(brandVOS)) {
+            return Result.ok(Collections.emptyList());
+        }
+        //根据品牌ids 批量查询
+        for (BrandVO brandVO : brandVOS) {
+
+            List<BrandClient> brandClients = brandClientService.lambdaQuery()
+                    .eq(BrandClient::getBrandId, brandVO.getId())
+                    .list();
+            List<Integer> collect = brandClients.stream().map(c -> c.getClientId()).collect(Collectors.toList());
+
+            brandVO.setClientIds(collect);
+        }
+
+
+
+        return Result.ok(brandVOS);
+    }
+
+    @Override
+    public Result<BrandQueryPageVO> queryPageList(BrandQueryPageDTO dto) {
+        //从dto中取数据
+        Integer pageIndex = dto.getPageIndex();
+        Integer pageSize = dto.getPageSize();
+        String searchCn = dto.getSearchCn();
+        String searchEn = dto.getSearchEn();
+
+        //分页查询
+        Page<Brand> page = this.lambdaQuery()
+                .like(searchCn != null, Brand::getBrandCn, searchCn)
+                .like(searchEn != null, Brand::getBrandEn, searchEn)
+                .orderByDesc(Brand::getCreateTime)
+                .page(new Page<>(pageIndex, pageSize));
+
+        //封装vo
+        BrandQueryPageVO brandQueryPageVO = new BrandQueryPageVO();
+        brandQueryPageVO.setCurrent((int) page.getCurrent());
+        brandQueryPageVO.setSize((int) page.getSize());
+        brandQueryPageVO.setPages((int) page.getPages());
+        brandQueryPageVO.setTotal((int) page.getTotal());
+        if (searchCn !=null || searchEn !=null){
+            brandQueryPageVO.setSearchCount(true);
+        }
+        List<Brand> records = page.getRecords();
+        List<BrandVO> list = new ArrayList<>();
+        for (Brand record : records) {
+            BrandVO brandVO = BeanUtil.copyProperties(record, BrandVO.class);
+            //根据id查询 关联表
+            List<BrandClient> clients = brandClientService.lambdaQuery()
+                    .eq(BrandClient::getBrandId, record.getId())
+                    .list();
+            if (!CollectionUtil.isEmpty(clients)){
+                List<Integer> collect = clients.stream().map(c -> c.getClientId()).collect(Collectors.toList());
+                brandVO.setClientIds(collect);
+
+            }
+            list.add(brandVO);
+
+        }
+        brandQueryPageVO.setRecords(list);
+        return Result.ok(brandQueryPageVO);
+    }
+}

+ 5 - 0
src/main/resources/mapper/BrandClientMapper.xml

@@ -0,0 +1,5 @@
+<?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.om.mapper.BrandClientMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/BrandMapper.xml

@@ -0,0 +1,5 @@
+<?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.om.mapper.BrandMapper">
+
+</mapper>