feat(foundations):增加查询区域上架服务类型的功能

This commit is contained in:
JIAN
2024-08-25 16:38:04 +08:00
parent 9e78b3de0d
commit 1e9a265ecc
4 changed files with 64 additions and 7 deletions

View File

@@ -1,8 +1,10 @@
package com.jzo2o.foundations.mapper;
import com.jzo2o.foundations.model.domain.ServeType;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import com.jzo2o.foundations.model.domain.ServeType;
import com.jzo2o.foundations.model.dto.response.ServeAggregationTypeSimpleResDTO;
import java.util.List;
/**
* <p>
@@ -13,4 +15,8 @@ import org.apache.ibatis.annotations.Mapper;
* @since 2023-07-03
*/
public interface ServeTypeMapper extends BaseMapper<ServeType> {
}
/**
* 根据区域id查询简略列表
*/
List<ServeAggregationTypeSimpleResDTO> getServeTypeListByRegionId(Long regionId);
}

View File

@@ -6,6 +6,7 @@ import com.jzo2o.common.model.PageResult;
import com.jzo2o.foundations.model.domain.ServeType;
import com.jzo2o.foundations.model.dto.request.ServeTypePageQueryReqDTO;
import com.jzo2o.foundations.model.dto.request.ServeTypeUpsertReqDTO;
import com.jzo2o.foundations.model.dto.response.ServeAggregationTypeSimpleResDTO;
import com.jzo2o.foundations.model.dto.response.ServeTypeResDTO;
import java.util.List;
@@ -67,4 +68,9 @@ public interface IServeTypeService extends IService<ServeType> {
* @return 服务类型列表
*/
List<ServeTypeSimpleResDTO> queryServeTypeListByActiveStatus(Integer activeStatus);
}
/**
* 根据区域id查询简略列表
*/
List<ServeAggregationTypeSimpleResDTO> getServeTypeList(Long regionId);
}

View File

@@ -12,21 +12,30 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jzo2o.api.foundations.dto.response.ServeTypeSimpleResDTO;
import com.jzo2o.common.expcetions.ForbiddenOperationException;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.common.utils.CollUtils;
import com.jzo2o.common.utils.ObjectUtils;
import com.jzo2o.foundations.constants.RedisConstants;
import com.jzo2o.foundations.enums.FoundationStatusEnum;
import com.jzo2o.foundations.mapper.RegionMapper;
import com.jzo2o.foundations.mapper.ServeTypeMapper;
import com.jzo2o.foundations.model.domain.Region;
import com.jzo2o.foundations.model.domain.ServeType;
import com.jzo2o.foundations.model.dto.request.ServeSyncUpdateReqDTO;
import com.jzo2o.foundations.model.dto.request.ServeTypePageQueryReqDTO;
import com.jzo2o.foundations.model.dto.request.ServeTypeUpsertReqDTO;
import com.jzo2o.foundations.model.dto.response.ServeAggregationTypeSimpleResDTO;
import com.jzo2o.foundations.model.dto.response.ServeTypeResDTO;
import com.jzo2o.foundations.service.IServeItemService;
import com.jzo2o.foundations.service.IServeSyncService;
import com.jzo2o.foundations.service.IServeTypeService;
import com.jzo2o.mysql.utils.PageUtils;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
/**
@@ -41,6 +50,8 @@ public class ServeTypeServiceImpl extends ServiceImpl<ServeTypeMapper, ServeType
private IServeItemService serveItemService;
@Resource
private IServeSyncService serveSyncService;
@Resource
private RegionMapper regionMapper;
/**
* 服务类型新增
@@ -192,4 +203,26 @@ public class ServeTypeServiceImpl extends ServiceImpl<ServeTypeMapper, ServeType
List<ServeType> serveTypeList = baseMapper.selectList(queryWrapper);
return BeanUtil.copyToList(serveTypeList, ServeTypeSimpleResDTO.class);
}
}
@Override
@Caching(cacheable = {
@Cacheable(value = RedisConstants.CacheName.SERVE_TYPE, key = "#regionId",
cacheManager = RedisConstants.CacheManager.THIRTY_MINUTES,
unless = "#result.size() != 0"), // 防止缓存穿透
@Cacheable(value = RedisConstants.CacheName.SERVE_TYPE, key = "#regionId",
cacheManager = RedisConstants.CacheManager.FOREVER,
unless = "#result.size() == 0")})
public List<ServeAggregationTypeSimpleResDTO> getServeTypeList(Long regionId) {
Region region = regionMapper.selectById(regionId);
if (ObjectUtils.isEmpty(region)) {
return Collections.emptyList();
}
List<ServeAggregationTypeSimpleResDTO> serveTypeList = baseMapper.getServeTypeListByRegionId(regionId);
if (CollUtils.isEmpty(serveTypeList)) {
return Collections.emptyList();
}
return serveTypeList;
}
}

View File

@@ -1,5 +1,17 @@
<?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.jzo2o.foundations.mapper.ServeTypeMapper">
</mapper>
<select id="getServeTypeListByRegionId"
resultType="com.jzo2o.foundations.model.dto.response.ServeAggregationTypeSimpleResDTO">
SELECT distinct serve_type_id,
type.name serveTypeName,
type.img serveTypeImg,
type.sort_num serveTypeSortNum
FROM serve
JOIN serve_item item ON serve.serve_item_id = item.id
JOIN serve_type type ON item.serve_type_id = type.id
WHERE serve.region_id = #{regionId}
AND serve.sale_status = 2 # 保证上架服务
ORDER BY type.sort_num
</select>
</mapper>