| @ -1,5 +1,19 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | <?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"> | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||
| <mapper namespace="org.jeecg.modules.sysMiniapp.product.mapper.AppProductMapper"> | <mapper namespace="org.jeecg.modules.sysMiniapp.product.mapper.AppProductMapper"> | ||||
| <select id="getAppProductsByCateGory" resultType="org.jeecg.modules.sysMiniapp.product.entity.AppProduct"> | |||||
| SELECT | |||||
| p.id as id, | |||||
| p.`name` as name, | |||||
| p.pdf as pdf | |||||
| FROM | |||||
| app_product AS p | |||||
| LEFT JOIN app_product_category_join AS c ON p.id = c.product_id | |||||
| <where> | |||||
| c.category_id = #{categoryId} | |||||
| <if test="name!= null"> | |||||
| AND p.`name` LIKE CONCAT('%',#{name},'%') | |||||
| </if> | |||||
| </where> | |||||
| </select> | |||||
| </mapper> | </mapper> | ||||
| @ -0,0 +1,62 @@ | |||||
| package org.jeecg.modules.miniapp.product.controller; | |||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
| import com.baomidou.mybatisplus.core.metadata.IPage; | |||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import lombok.extern.slf4j.Slf4j; | |||||
| import org.apache.commons.lang.StringUtils; | |||||
| import org.apache.shiro.authz.annotation.RequiresPermissions; | |||||
| import org.jeecg.common.api.vo.Result; | |||||
| import org.jeecg.common.aspect.annotation.AutoLog; | |||||
| import org.jeecg.common.constant.SymbolConstant; | |||||
| import org.jeecg.common.system.base.controller.JeecgController; | |||||
| import org.jeecg.common.system.query.QueryGenerator; | |||||
| import org.jeecg.common.util.oConvertUtils; | |||||
| import org.jeecg.config.shiro.IgnoreAuth; | |||||
| import org.jeecg.modules.miniapp.product.entity.CategoryProductDTO; | |||||
| import org.jeecg.modules.miniapp.product.service.impl.MProductServiceImpl; | |||||
| import org.jeecg.modules.sysMiniapp.product.entity.AppProduct; | |||||
| import org.jeecg.modules.sysMiniapp.product.entity.Product; | |||||
| import org.jeecg.modules.sysMiniapp.product.service.IAppProductService; | |||||
| import org.jeecg.modules.sysMiniapp.productCategoryJoin.entity.AppProductCategoryJoin; | |||||
| import org.jeecg.modules.sysMiniapp.productCategoryJoin.mapper.AppProductCategoryJoinMapper; | |||||
| import org.jeecg.modules.sysMiniapp.productCategoryJoin.service.IAppProductCategoryJoinService; | |||||
| import org.springframework.beans.BeanUtils; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.transaction.annotation.Transactional; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| import javax.servlet.http.HttpServletRequest; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Arrays; | |||||
| import java.util.List; | |||||
| import java.util.Set; | |||||
| import java.util.stream.Collectors; | |||||
| /** | |||||
| * @Description: 产品管理 | |||||
| * @Author: jeecg-boot | |||||
| * @Date: 2025-02-16 | |||||
| * @Version: V1.0 | |||||
| */ | |||||
| @Api(tags="产品管理") | |||||
| @RestController | |||||
| @RequestMapping("/miniapp/product") | |||||
| @Slf4j | |||||
| public class MProductController { | |||||
| @Autowired | |||||
| MProductServiceImpl mProductService; | |||||
| @ApiOperation(value="产品管理-查询所有产品服务", notes="产品管理-查询所有产品服务") | |||||
| @GetMapping(value = "/categories") | |||||
| @IgnoreAuth | |||||
| public Result<List<CategoryProductDTO>> query(@RequestParam(name = "name",required = false)String name) { | |||||
| return mProductService.getAllCateGoryProduct(name); | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,17 @@ | |||||
| package org.jeecg.modules.miniapp.product.entity; | |||||
| import lombok.Data; | |||||
| import org.jeecg.modules.sysMiniapp.product.entity.AppProduct; | |||||
| import java.util.List; | |||||
| /** | |||||
| * @author tanzs | |||||
| * @date 2025/2/18 21:39 | |||||
| */ | |||||
| @Data | |||||
| public class CategoryProductDTO { | |||||
| private Integer categoryId; | |||||
| private String categoryName; | |||||
| private List<AppProduct> products; | |||||
| } | |||||
| @ -0,0 +1,11 @@ | |||||
| package org.jeecg.modules.miniapp.product.service; | |||||
| import org.jeecg.common.api.vo.Result; | |||||
| import org.jeecg.modules.miniapp.product.entity.CategoryProductDTO; | |||||
| import java.util.List; | |||||
| public interface MProductService { | |||||
| Result<List<CategoryProductDTO>> getAllCateGoryProduct(String name); | |||||
| } | |||||
| @ -0,0 +1,80 @@ | |||||
| package org.jeecg.modules.miniapp.product.service.impl; | |||||
| import cn.hutool.core.util.StrUtil; | |||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
| import lombok.extern.slf4j.Slf4j; | |||||
| import org.jeecg.common.api.vo.Result; | |||||
| import org.jeecg.modules.miniapp.product.entity.CategoryProductDTO; | |||||
| import org.jeecg.modules.miniapp.product.service.MProductService; | |||||
| import org.jeecg.modules.sysMiniapp.product.entity.AppProduct; | |||||
| import org.jeecg.modules.sysMiniapp.product.service.impl.AppProductServiceImpl; | |||||
| import org.jeecg.modules.sysMiniapp.productCategory.entity.AppCategory; | |||||
| import org.jeecg.modules.sysMiniapp.productCategory.mapper.AppCategoryMapper; | |||||
| import org.jeecg.modules.sysMiniapp.productCategory.service.impl.AppCategoryServiceImpl; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Collections; | |||||
| import java.util.Comparator; | |||||
| import java.util.List; | |||||
| /** | |||||
| * @author tanzs | |||||
| * @date 2025/2/18 21:37 | |||||
| */ | |||||
| @Service | |||||
| @Slf4j | |||||
| public class MProductServiceImpl implements MProductService { | |||||
| @Autowired | |||||
| AppProductServiceImpl appProductService; | |||||
| @Autowired | |||||
| AppCategoryServiceImpl appCategoryService; | |||||
| /** | |||||
| * 查询所有分类 | |||||
| * @param name | |||||
| * @return | |||||
| */ | |||||
| @Override | |||||
| public Result<List<CategoryProductDTO>> getAllCateGoryProduct(String name) { | |||||
| // 构建全部数据 | |||||
| List<CategoryProductDTO> result = new ArrayList<CategoryProductDTO>(); | |||||
| CategoryProductDTO categoryProductDTO = new CategoryProductDTO(); | |||||
| categoryProductDTO.setCategoryId(0); | |||||
| categoryProductDTO.setCategoryName("全部"); | |||||
| // 查询全部产品服务 | |||||
| List<AppProduct> appProducts = new ArrayList<AppProduct>(); | |||||
| if (StrUtil.isNotEmpty(name)){ | |||||
| LambdaQueryWrapper<AppProduct> productLambdaQueryWrapper = new LambdaQueryWrapper<>(); | |||||
| productLambdaQueryWrapper.like(AppProduct::getName,name); | |||||
| appProducts = appProductService.list(productLambdaQueryWrapper); | |||||
| }else { | |||||
| appProducts = appProductService.list(); | |||||
| } | |||||
| categoryProductDTO.setProducts(appProducts); | |||||
| result.add(categoryProductDTO); | |||||
| // 构建分类与产品的DTO | |||||
| List<AppCategory> appCategories = appCategoryService.list(); | |||||
| for(AppCategory category : appCategories){ | |||||
| CategoryProductDTO categoryProduct = new CategoryProductDTO(); | |||||
| categoryProduct.setCategoryId(category.getId()); | |||||
| categoryProduct.setCategoryName(category.getCategoryName()); | |||||
| // 查询分类下关联的产品 | |||||
| List<AppProduct> categoryProducts = appProductService.getBaseMapper().getAppProductsByCateGory(name,category.getId()); | |||||
| categoryProduct.setProducts(categoryProducts); | |||||
| result.add(categoryProduct); | |||||
| } | |||||
| // 结果升序 | |||||
| Collections.sort(result, new Comparator<CategoryProductDTO>() { | |||||
| @Override | |||||
| public int compare(CategoryProductDTO o1, CategoryProductDTO o2) { | |||||
| // 根据 categoryId 进行升序排序 | |||||
| return o1.getCategoryId().compareTo(o2.getCategoryId()); | |||||
| } | |||||
| }); | |||||
| return Result.OK(result); | |||||
| } | |||||
| } | |||||