解决当前公开的会员总览接口当会员数过大时加载缓慢的问题 #8
|
|
@ -1,6 +1,7 @@
|
|||
package com.microservices.zone.common.controller;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.microservices.common.core.utils.StringUtils;
|
||||
import com.microservices.common.core.web.controller.BaseController;
|
||||
import com.microservices.common.core.web.domain.AjaxResult;
|
||||
|
|
@ -19,8 +20,11 @@ import com.microservices.zone.detail.service.IZoneDetailService;
|
|||
import com.microservices.zone.member.domain.vo.ZoneMemberDataVo;
|
||||
import com.microservices.zone.member.domain.vo.ZoneMemberOpenSearchVo;
|
||||
import com.microservices.zone.member.domain.vo.ZoneMemberOverviewVo;
|
||||
import com.microservices.zone.member.domain.vo.ZoneMemberSearchVo;
|
||||
import com.microservices.zone.member.domain.vo.ZoneMemberTypeCountVo;
|
||||
import com.microservices.zone.member.domain.vo.ZonePointsTopDocVo;
|
||||
import com.microservices.zone.member.service.IZoneMemberService;
|
||||
import com.microservices.zone.member.service.IZoneMemberTypeService;
|
||||
import com.microservices.zone.member.service.IZonePointsAccountService;
|
||||
import com.microservices.zone.partners.domain.vo.ZonePartnersOverviewVo;
|
||||
import com.microservices.zone.partners.service.IZonePartnersService;
|
||||
|
|
@ -75,6 +79,8 @@ public class OpenController extends BaseController {
|
|||
@Autowired
|
||||
private IZoneMemberService zoneMemberService;
|
||||
@Autowired
|
||||
private IZoneMemberTypeService zoneMemberTypeService;
|
||||
@Autowired
|
||||
private IZonePartnersService zonePartnersService;
|
||||
@Autowired
|
||||
private IZoneProjectService zoneProjectService;
|
||||
|
|
@ -274,6 +280,41 @@ public class OpenController extends BaseController {
|
|||
return getGenericsDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取特色专区会员分类列表(含各分类下已审核会员数量)
|
||||
*/
|
||||
@GetMapping("/{zoneId}/memberType/list")
|
||||
@ApiOperation("获取特色专区会员分类列表(含已审核会员数量)")
|
||||
public GenericsTableDataInfo<ZoneMemberTypeCountVo> memberTypeList(
|
||||
@ApiParam(name = "zoneId", value = "专区Id", required = true) @PathVariable("zoneId") Long zoneId,
|
||||
@ApiParam(name = "name", value = "会员分类名称") String name) {
|
||||
List<ZoneMemberTypeCountVo> list = zoneMemberTypeService.selectZoneMemberTypeListWithCount(zoneId, name);
|
||||
return getGenericsDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取特色专区会员列表(仅已审核会员,支持名称模糊搜索及分类/等级过滤)
|
||||
*/
|
||||
@GetMapping("/{zoneId}/member/list")
|
||||
@ApiOperation("获取特色专区会员列表")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "pageNum", value = "当前页码", paramType = "query", dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页显示记录数(未传默认100)", paramType = "query", dataType = "Integer")
|
||||
})
|
||||
public GenericsTableDataInfo<ZoneMemberDataVo> memberList(
|
||||
@ApiParam(name = "zoneId", value = "专区Id", required = true) @PathVariable("zoneId") Long zoneId,
|
||||
ZoneMemberSearchVo zoneMemberSearchVo,
|
||||
@RequestParam(value = "pageNum", required = false) Integer pageNum,
|
||||
@RequestParam(value = "pageSize", required = false) Integer pageSize) {
|
||||
zoneMemberSearchVo.setZoneId(zoneId);
|
||||
if (pageNum == null || pageNum < 1) {
|
||||
pageNum = 1;
|
||||
}
|
||||
int effectivePageSize = (pageSize == null || pageSize < 1) ? 100 : pageSize;
|
||||
PageHelper.startPage(pageNum, effectivePageSize);
|
||||
return zoneMemberService.selectOpenZoneMemberList(zoneMemberSearchVo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查当前用户是否有该专区的权限
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
package com.microservices.zone.member.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 专区会员分类(含已审核会员数量)对象
|
||||
*
|
||||
* @author otto
|
||||
*/
|
||||
@Data
|
||||
@ApiModel("专区会员分类(含已审核会员数量)对象")
|
||||
public class ZoneMemberTypeCountVo {
|
||||
@ApiModelProperty(value = "专区会员分类Id")
|
||||
private Long id;
|
||||
@ApiModelProperty(value = "专区会员分类名称")
|
||||
private String name;
|
||||
@ApiModelProperty(value = "专区会员分类简介")
|
||||
private String introduction;
|
||||
@ApiModelProperty(value = "排序")
|
||||
private Integer sort;
|
||||
@ApiModelProperty(value = "已审核会员数量")
|
||||
private Long memberCount;
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package com.microservices.zone.member.mapper;
|
|||
|
||||
import com.microservices.zone.member.domain.ZoneMember;
|
||||
import com.microservices.zone.member.domain.vo.ZoneMemberSearchVo;
|
||||
import com.microservices.zone.member.domain.vo.ZoneMemberTypeCountVo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
|
|
@ -121,6 +122,14 @@ public interface ZoneMemberMapper {
|
|||
*/
|
||||
Integer selectCountByZoneId(ZoneMember zoneMember);
|
||||
|
||||
/**
|
||||
* 按会员分类统计专区下已审核会员数量
|
||||
*
|
||||
* @param zoneId 专区Id
|
||||
* @return 每个分类(id)对应的已审核会员数量
|
||||
*/
|
||||
List<ZoneMemberTypeCountVo> selectAuditedMemberCountByType(@Param("zoneId") Long zoneId);
|
||||
|
||||
/**
|
||||
* 获取指定序号的会员
|
||||
*
|
||||
|
|
|
|||
|
|
@ -31,6 +31,14 @@ public interface IZoneMemberService {
|
|||
*/
|
||||
public GenericsTableDataInfo<ZoneMemberDetailVo> selectZoneMemberList(ZoneMemberSearchVo zoneMemberSearchVo, boolean isOpen);
|
||||
|
||||
/**
|
||||
* 查询特色专区已审核会员列表(公开接口,不分页由调用方通过 PageHelper 控制)
|
||||
*
|
||||
* @param zoneMemberSearchVo 特色专区会员查询对象(zoneId、name、memberTypeId、memberLevelId)
|
||||
* @return 特色专区会员集合
|
||||
*/
|
||||
public GenericsTableDataInfo<ZoneMemberDataVo> selectOpenZoneMemberList(ZoneMemberSearchVo zoneMemberSearchVo);
|
||||
|
||||
/**
|
||||
* 新增特色专区会员
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.microservices.zone.member.service;
|
||||
|
||||
import com.microservices.zone.member.domain.ZoneMemberType;
|
||||
import com.microservices.zone.member.domain.vo.ZoneMemberTypeCountVo;
|
||||
import com.microservices.zone.member.domain.vo.ZoneMemberTypeUpdateVo;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -28,6 +29,15 @@ public interface IZoneMemberTypeService {
|
|||
*/
|
||||
public List<ZoneMemberType> selectZoneMemberTypeList(ZoneMemberType zoneMemberType);
|
||||
|
||||
/**
|
||||
* 查询特色专区会员分类列表(含各分类下已审核会员数量)
|
||||
*
|
||||
* @param zoneId 专区Id
|
||||
* @param name 会员分类名称(模糊搜索,可为空)
|
||||
* @return 会员分类集合(含已审核会员数量)
|
||||
*/
|
||||
public List<ZoneMemberTypeCountVo> selectZoneMemberTypeListWithCount(Long zoneId, String name);
|
||||
|
||||
/**
|
||||
* 新增特色专区会员分类
|
||||
*
|
||||
|
|
|
|||
|
|
@ -129,6 +129,26 @@ public class ZoneMemberServiceImpl implements IZoneMemberService {
|
|||
return PageUtils.toPage(zoneMemberList, this::toZoneMemberDetailVo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询特色专区已审核会员列表(公开接口)
|
||||
* 不做数据范围过滤,分页由调用方通过 PageHelper 设置。
|
||||
*
|
||||
* @param zoneMemberSearchVo 特色专区会员查询对象
|
||||
* @return 特色专区会员集合
|
||||
*/
|
||||
@Override
|
||||
public GenericsTableDataInfo<ZoneMemberDataVo> selectOpenZoneMemberList(ZoneMemberSearchVo zoneMemberSearchVo) {
|
||||
zoneMemberSearchVo.setIsAudit(ZoneConstants.MEMBER_AUDIT_PASS);
|
||||
zoneMemberSearchVo.setIsOpen(true);
|
||||
List<ZoneMember> zoneMemberList = zoneMemberMapper.selectZoneMemberList(zoneMemberSearchVo);
|
||||
return PageUtils.toPage(zoneMemberList, this::toOpenZoneMemberDataVo);
|
||||
}
|
||||
|
||||
private ZoneMemberDataVo toOpenZoneMemberDataVo(ZoneMember zoneMember) {
|
||||
String login = zoneMember.getSysUser() != null ? zoneMember.getSysUser().getUserName() : null;
|
||||
return zoneMember.toZoneMemberDataVo(login);
|
||||
}
|
||||
|
||||
private ZoneMemberDetailVo toZoneMemberDetailVo(ZoneMember zoneMember) {
|
||||
ZoneMemberDetailVo zoneMemberDetailVo = new ZoneMemberDetailVo();
|
||||
BeanUtils.copyProperties(zoneMember, zoneMemberDetailVo);
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import com.microservices.zone.detail.service.IZoneDetailService;
|
|||
import com.microservices.zone.member.domain.ZoneMember;
|
||||
import com.microservices.zone.member.domain.ZoneMemberType;
|
||||
import com.microservices.zone.member.domain.vo.ZoneMemberSearchVo;
|
||||
import com.microservices.zone.member.domain.vo.ZoneMemberTypeCountVo;
|
||||
import com.microservices.zone.member.domain.vo.ZoneMemberTypeUpdateVo;
|
||||
import com.microservices.zone.member.mapper.ZoneMemberMapper;
|
||||
import com.microservices.zone.member.mapper.ZoneMemberTypeMapper;
|
||||
|
|
@ -20,7 +21,9 @@ import org.slf4j.LoggerFactory;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
|
@ -67,6 +70,37 @@ public class ZoneMemberTypeServiceImpl implements IZoneMemberTypeService {
|
|||
return zoneMemberTypeMapper.selectZoneMemberTypeList(zoneMemberType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询特色专区会员分类列表(含各分类下已审核会员数量)
|
||||
*
|
||||
* @param zoneId 专区Id
|
||||
* @param name 会员分类名称(模糊搜索,可为空)
|
||||
* @return 会员分类集合(含已审核会员数量)
|
||||
*/
|
||||
@Override
|
||||
public List<ZoneMemberTypeCountVo> selectZoneMemberTypeListWithCount(Long zoneId, String name) {
|
||||
ZoneMemberType query = new ZoneMemberType();
|
||||
query.setZoneId(zoneId);
|
||||
query.setName(name);
|
||||
List<ZoneMemberType> zoneMemberTypeList = zoneMemberTypeMapper.selectZoneMemberTypeList(query);
|
||||
if (zoneMemberTypeList == null || zoneMemberTypeList.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
Map<Long, Long> countMap = zoneMemberMapper.selectAuditedMemberCountByType(zoneId).stream()
|
||||
.collect(Collectors.toMap(ZoneMemberTypeCountVo::getId, ZoneMemberTypeCountVo::getMemberCount));
|
||||
List<ZoneMemberTypeCountVo> result = new ArrayList<>(zoneMemberTypeList.size());
|
||||
for (ZoneMemberType zoneMemberType : zoneMemberTypeList) {
|
||||
ZoneMemberTypeCountVo vo = new ZoneMemberTypeCountVo();
|
||||
vo.setId(zoneMemberType.getId());
|
||||
vo.setName(zoneMemberType.getName());
|
||||
vo.setIntroduction(zoneMemberType.getIntroduction());
|
||||
vo.setSort(zoneMemberType.getSort());
|
||||
vo.setMemberCount(countMap.getOrDefault(zoneMemberType.getId(), 0L));
|
||||
result.add(vo);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增特色专区会员类别
|
||||
*
|
||||
|
|
|
|||
|
|
@ -369,6 +369,14 @@
|
|||
and zm.member_type_id = #{memberTypeId}
|
||||
and zm.member_level_id = #{memberLevelId}
|
||||
</select>
|
||||
<select id="selectAuditedMemberCountByType"
|
||||
resultType="com.microservices.zone.member.domain.vo.ZoneMemberTypeCountVo">
|
||||
select member_type_id as id, count(0) as memberCount
|
||||
from zone_member
|
||||
where zone_id = #{zoneId}
|
||||
and is_audit = '1'
|
||||
group by member_type_id
|
||||
</select>
|
||||
<select id="selectZoneMemberByOrderAndZoneId" resultMap="ZoneMemberResult">
|
||||
<include refid="selectZoneMemberVo"/>
|
||||
where zone_id=#{zoneMember.zoneId}
|
||||
|
|
|
|||
Loading…
Reference in New Issue