@ -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); | |||||
} | |||||
} |