feat(用户标签): 添加获取用户标签名称列表功能并支持标签过滤用户列表
在用户标签模块中新增了获取所有标签名称的功能,并在用户列表查询中加入了标签过滤条件。这些改动是为了支持前端展示标签名称列表以及根据标签筛选用户的需求。
This commit is contained in:
parent
3ef4c71258
commit
68bffc0b73
|
@ -65,4 +65,11 @@ public class Ab98UserTagController extends BaseController {
|
||||||
ab98UserTagApplicationService.deleteAb98UserTag(new BulkOperationCommand<>(ids));
|
ab98UserTagApplicationService.deleteAb98UserTag(new BulkOperationCommand<>(ids));
|
||||||
return ResponseDTO.ok();
|
return ResponseDTO.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "获取所有标签名称")
|
||||||
|
@GetMapping("/names")
|
||||||
|
public ResponseDTO<List<String>> getDistinctTagNames() {
|
||||||
|
List<String> tagNames = ab98UserTagApplicationService.selectDistinctTagNames();
|
||||||
|
return ResponseDTO.ok(tagNames);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -58,4 +58,8 @@ public class Ab98UserTagApplicationService {
|
||||||
public Ab98UserTagEntity getByTagId(Long tagId) {
|
public Ab98UserTagEntity getByTagId(Long tagId) {
|
||||||
return ab98UserTagService.getByTagId(tagId);
|
return ab98UserTagService.getByTagId(tagId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> selectDistinctTagNames() {
|
||||||
|
return ab98UserTagService.selectDistinctTagNames();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -35,4 +35,7 @@ public interface Ab98UserTagMapper extends BaseMapper<Ab98UserTagEntity> {
|
||||||
|
|
||||||
@Select("SELECT * FROM ab98_user_tag WHERE tag_id = #{tagId} LIMIT 1")
|
@Select("SELECT * FROM ab98_user_tag WHERE tag_id = #{tagId} LIMIT 1")
|
||||||
Ab98UserTagEntity selectByTagId(@Param("tagId") Long tagId);
|
Ab98UserTagEntity selectByTagId(@Param("tagId") Long tagId);
|
||||||
|
|
||||||
|
@Select("SELECT DISTINCT tag_name FROM ab98_user_tag WHERE deleted = 0")
|
||||||
|
List<String> selectDistinctTagNames();
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,4 +22,6 @@ public interface Ab98UserTagService extends IService<Ab98UserTagEntity> {
|
||||||
Ab98UserTagEntity getFirstEnabledTag();
|
Ab98UserTagEntity getFirstEnabledTag();
|
||||||
|
|
||||||
Ab98UserTagEntity getByTagId(Long tagId);
|
Ab98UserTagEntity getByTagId(Long tagId);
|
||||||
|
|
||||||
|
List<String> selectDistinctTagNames();
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,4 +41,9 @@ public class Ab98UserTagServiceImpl extends ServiceImpl<Ab98UserTagMapper, Ab98U
|
||||||
public Ab98UserTagEntity getByTagId(Long tagId) {
|
public Ab98UserTagEntity getByTagId(Long tagId) {
|
||||||
return baseMapper.selectByTagId(tagId);
|
return baseMapper.selectByTagId(tagId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> selectDistinctTagNames() {
|
||||||
|
return baseMapper.selectDistinctTagNames();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ public class Ab98UserApplicationService {
|
||||||
private final Ab98UserModelFactory userModelFactory;
|
private final Ab98UserModelFactory userModelFactory;
|
||||||
|
|
||||||
public PageDTO<Ab98UserDTO> getUserList(SearchAb98UserQuery<Ab98UserEntity> query) {
|
public PageDTO<Ab98UserDTO> getUserList(SearchAb98UserQuery<Ab98UserEntity> query) {
|
||||||
Page<Ab98UserEntity> page = userService.getUserList(query);
|
Page<Ab98UserEntity> page = userService.getUserListWithTagFilter(query);
|
||||||
List<Ab98UserDTO> dtoList = page.getRecords().stream()
|
List<Ab98UserDTO> dtoList = page.getRecords().stream()
|
||||||
.map(Ab98UserDTO::new)
|
.map(Ab98UserDTO::new)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
|
@ -46,4 +46,13 @@ public interface Ab98UserMapper extends BaseMapper<Ab98UserEntity> {
|
||||||
|
|
||||||
@Select("SELECT * FROM ab98_user WHERE openid = #{openid} AND userid = #{userid} LIMIT 1")
|
@Select("SELECT * FROM ab98_user WHERE openid = #{openid} AND userid = #{userid} LIMIT 1")
|
||||||
Ab98UserEntity selectByOpenidAndUserid(@Param("openid")String openid, @Param("userid")String userid);
|
Ab98UserEntity selectByOpenidAndUserid(@Param("openid")String openid, @Param("userid")String userid);
|
||||||
|
|
||||||
|
@Select("SELECT DISTINCT u.* " +
|
||||||
|
"FROM ab98_user u " +
|
||||||
|
"LEFT JOIN ab98_user_tag t ON u.ab98_user_id = t.ab98_user_id " +
|
||||||
|
"${ew.customSqlSegment}")
|
||||||
|
Page<Ab98UserEntity> getUserListWithTagFilter(
|
||||||
|
Page<Ab98UserEntity> page,
|
||||||
|
@Param(Constants.WRAPPER) Wrapper<Ab98UserEntity> queryWrapper
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package com.agileboot.domain.ab98.user.db;
|
package com.agileboot.domain.ab98.user.db;
|
||||||
|
|
||||||
import com.agileboot.common.core.page.AbstractPageQuery;
|
import com.agileboot.common.core.page.AbstractPageQuery;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
@ -16,7 +18,7 @@ import java.util.List;
|
||||||
* @since 2025-05-10
|
* @since 2025-05-10
|
||||||
*/
|
*/
|
||||||
public interface Ab98UserService extends IService<Ab98UserEntity> {
|
public interface Ab98UserService extends IService<Ab98UserEntity> {
|
||||||
Page<Ab98UserEntity> getUserList(AbstractPageQuery<Ab98UserEntity> query);
|
Page<Ab98UserEntity> getUserListWithTagFilter(AbstractPageQuery<Ab98UserEntity> query);
|
||||||
|
|
||||||
List<Ab98UserEntity> selectAll();
|
List<Ab98UserEntity> selectAll();
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,8 @@ import java.util.List;
|
||||||
public class Ab98UserServiceImpl extends ServiceImpl<Ab98UserMapper, Ab98UserEntity> implements Ab98UserService {
|
public class Ab98UserServiceImpl extends ServiceImpl<Ab98UserMapper, Ab98UserEntity> implements Ab98UserService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<Ab98UserEntity> getUserList(AbstractPageQuery<Ab98UserEntity> query) {
|
public Page<Ab98UserEntity> getUserListWithTagFilter(AbstractPageQuery<Ab98UserEntity> query) {
|
||||||
return this.page(query.toPage(), query.toQueryWrapper());
|
return baseMapper.getUserListWithTagFilter(query.toPage(), query.toQueryWrapper());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -21,21 +21,23 @@ public class SearchAb98UserQuery<T> extends AbstractPageQuery<T> {
|
||||||
private Boolean registered;
|
private Boolean registered;
|
||||||
private Date startTime;
|
private Date startTime;
|
||||||
private Date endTime;
|
private Date endTime;
|
||||||
|
private String tagName;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public QueryWrapper<T> addQueryCondition() {
|
public QueryWrapper<T> addQueryCondition() {
|
||||||
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
||||||
|
|
||||||
queryWrapper
|
queryWrapper
|
||||||
.eq(ab98UserId != null, "ab98_user_id", ab98UserId)
|
.eq(ab98UserId != null, "u.ab98_user_id", ab98UserId)
|
||||||
.eq(StrUtil.isNotEmpty(openid), "openid", openid)
|
.eq(StrUtil.isNotEmpty(openid), "u.openid", openid)
|
||||||
.eq(StrUtil.isNotEmpty(userid), "userid", userid)
|
.eq(StrUtil.isNotEmpty(userid), "u.userid", userid)
|
||||||
.like(StrUtil.isNotEmpty(name), "name", name)
|
.like(StrUtil.isNotEmpty(name), "u.name", name)
|
||||||
.like(StrUtil.isNotEmpty(tel), "tel", tel)
|
.like(StrUtil.isNotEmpty(tel), "u.tel", tel)
|
||||||
.like(StrUtil.isNotEmpty(idnum), "idnum", idnum)
|
.like(StrUtil.isNotEmpty(idnum), "u.idnum", idnum)
|
||||||
.eq(StrUtil.isNotEmpty(sex), "sex", sex)
|
.eq(StrUtil.isNotEmpty(tagName), "t.tag_name", tagName)
|
||||||
.eq(registered != null, "registered", registered)
|
.eq(StrUtil.isNotEmpty(sex), "u.sex", sex)
|
||||||
.between(startTime != null && endTime != null, "create_time", startTime, endTime);
|
.eq(registered != null, "u.registered", registered)
|
||||||
|
.between(startTime != null && endTime != null, "u.create_time", startTime, endTime);
|
||||||
|
|
||||||
this.timeRangeColumn = "create_time";
|
this.timeRangeColumn = "create_time";
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue