diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/db/Ab98UserMapper.java b/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/db/Ab98UserMapper.java index 5943b7c..3f75b10 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/db/Ab98UserMapper.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/db/Ab98UserMapper.java @@ -61,15 +61,13 @@ public interface Ab98UserMapper extends BaseMapper { ); @Select("SELECT * FROM (" + - "SELECT DISTINCT u.ab98_user_id, u.openid, u.userid, u.qy_user_id, u.name, u.tel, u.idnum, u.sex, u.face_img, u.idcard_front, u.idcard_back, u.address, u.registered, u.creator_id, u.create_time, u.updater_id, u.update_time, u.deleted, u.ab98_balance, ub.balance, ub.use_balance, ub.balance_limit, w.wx_user_id, w.openid as wx_user_openid, w.nick_name as wx_nick_name, w.avatar as wx_avatar, mtm.tag_id " + + "SELECT DISTINCT u.ab98_user_id, u.openid, u.userid, u.qy_user_id, u.name, u.tel, u.idnum, u.sex, u.face_img, u.idcard_front, u.idcard_back, u.address, u.registered, u.creator_id, u.create_time, u.updater_id, u.update_time, u.deleted, u.ab98_balance, ub.balance, ub.use_balance, ub.balance_limit, w.wx_user_id, w.openid as wx_user_openid, w.nick_name as wx_nick_name, w.avatar as wx_avatar " + "FROM ab98_user u " + - "LEFT JOIN membership_tag_member mtm ON u.ab98_user_id = mtm.ab98_user_id " + - "LEFT JOIN user_balance ub ON u.ab98_user_id = ub.ab98_user_id " + - "LEFT JOIN wx_user w ON u.ab98_user_id = w.ab98_user_id " + + "LEFT JOIN user_balance ub ON u.ab98_user_id = ub.ab98_user_id and ub.deleted = 0 " + + "LEFT JOIN wx_user w ON u.ab98_user_id = w.ab98_user_id and w.deleted = 0 " + " UNION ALL " + - "SELECT NULL as ab98_user_id, NULL as openid, NULL as userid, NULL as qy_user_id, NULL as name, NULL as tel, NULL as idnum, NULL as sex, NULL as face_img, NULL as idcard_front, NULL as idcard_back, NULL as address, NULL as registered, NULL as creator_id, w.create_time as create_time, NULL as updater_id, w.update_time as update_time, NULL as deleted, NULL as ab98_balance, NULL as balance, NULL as use_balance, NULL as balance_limit, w.wx_user_id, w.openid as wx_user_openid, w.nick_name as wx_nick_name, w.avatar as wx_avatar, mtm.tag_id " + + "SELECT NULL as ab98_user_id, NULL as openid, NULL as userid, NULL as qy_user_id, NULL as name, NULL as tel, NULL as idnum, NULL as sex, NULL as face_img, NULL as idcard_front, NULL as idcard_back, NULL as address, NULL as registered, NULL as creator_id, w.create_time as create_time, NULL as updater_id, w.update_time as update_time, NULL as deleted, NULL as ab98_balance, NULL as balance, NULL as use_balance, NULL as balance_limit, w.wx_user_id, w.openid as wx_user_openid, w.nick_name as wx_nick_name, w.avatar as wx_avatar " + "FROM wx_user w " + - "LEFT JOIN membership_tag_member mtm ON w.wx_user_id = mtm.wx_user_id " + "WHERE w.ab98_user_id IS NULL" + ") t ${ew.customSqlSegment} ORDER BY create_time DESC") Page getUserListWithWx( diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/query/SearchAb98UserWithWxQuery.java b/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/query/SearchAb98UserWithWxQuery.java index 1f3dd3d..7895ff2 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/query/SearchAb98UserWithWxQuery.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/query/SearchAb98UserWithWxQuery.java @@ -3,7 +3,12 @@ package com.agileboot.domain.ab98.user.query; import cn.hutool.core.util.StrUtil; import com.agileboot.common.core.page.AbstractPageQuery; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; + +import java.util.Collections; import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + import lombok.Data; import lombok.EqualsAndHashCode; @@ -21,7 +26,7 @@ public class SearchAb98UserWithWxQuery extends AbstractPageQuery { private Boolean registered; private Date startTime; private Date endTime; - private Long tagId; + private String tagIds; private String corpid; private String wxUserOpenid; private Boolean hasAb98UserId; @@ -32,17 +37,33 @@ public class SearchAb98UserWithWxQuery extends AbstractPageQuery { queryWrapper .eq(ab98UserId != null, "ab98_user_id", ab98UserId) - .eq(StrUtil.isNotEmpty(openid), "openid", openid) - .eq(StrUtil.isNotEmpty(userid), "userid", userid) - .like(StrUtil.isNotEmpty(name), "name", name) - .like(StrUtil.isNotEmpty(tel), "tel", tel) - .like(StrUtil.isNotEmpty(idnum), "idnum", idnum) - .eq(StrUtil.isNotEmpty(sex), "sex", sex) + .eq(StrUtil.isNotBlank(openid), "openid", openid) + .eq(StrUtil.isNotBlank(userid), "userid", userid) + .like(StrUtil.isNotBlank(name), "name", name) + .like(StrUtil.isNotBlank(tel), "tel", tel) + .like(StrUtil.isNotBlank(idnum), "idnum", idnum) + .eq(StrUtil.isNotBlank(sex), "sex", sex) .eq(registered != null, "registered", registered) - .eq(StrUtil.isNotEmpty(wxUserOpenid), "wx_user_openid", wxUserOpenid) - .eq(tagId != null, "tag_id", tagId) + .eq(StrUtil.isNotBlank(wxUserOpenid), "wx_user_openid", wxUserOpenid) + /* .in(StrUtil.isNotBlank(tagIds), "tag_id", StrUtil.split(tagIds, ",") + .stream().map(Long::valueOf).collect(Collectors.toList())) */ .between(startTime != null && endTime != null, "create_time", startTime, endTime); + // 修改标签查询逻辑,使用EXISTS代替IN + if (StrUtil.isNotBlank(tagIds)) { + + // 构建EXISTS子查询 + String existsSql = "EXISTS (SELECT 1 FROM membership_tag_member mtm " + + "WHERE (mtm.ab98_user_id = t.ab98_user_id " + + "OR mtm.wx_user_id = t.wx_user_id) " + + "AND mtm.deleted = 0 " + + "AND mtm.tag_id IN (" + + tagIds + + "))"; + + queryWrapper.apply(existsSql); + } + // 添加是否绑定ab98UserId的条件 if (hasAb98UserId != null) { if (hasAb98UserId) { diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/membership/tagmember/MembershipTagMemberApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/membership/tagmember/MembershipTagMemberApplicationService.java index f8e0405..5397e2e 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/membership/tagmember/MembershipTagMemberApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/membership/tagmember/MembershipTagMemberApplicationService.java @@ -53,7 +53,7 @@ public class MembershipTagMemberApplicationService { public void deleteTagMember(BulkOperationCommand command) { for (Long tagMemberId : command.getIds()) { MembershipTagMemberModel model = tagMemberModelFactory.loadById(tagMemberId); - model.deleteById(); + model.removeById(); } } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/membership/tagmember/db/MembershipTagMemberEntity.java b/agileboot-domain/src/main/java/com/agileboot/domain/membership/tagmember/db/MembershipTagMemberEntity.java index 52a13f3..cc5e44a 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/membership/tagmember/db/MembershipTagMemberEntity.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/membership/tagmember/db/MembershipTagMemberEntity.java @@ -4,6 +4,7 @@ import com.agileboot.common.core.base.BaseEntity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import io.swagger.annotations.ApiModel; @@ -31,6 +32,13 @@ public class MembershipTagMemberEntity extends BaseEntity