package com.ruoyi.user.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import com.ruoyi.user.domain.AccountUser; import com.ruoyi.user.domain.vo.AccountUserVo; import com.ruoyi.user.domain.vo.MemberOptionVo; /** * 会员用户 数据层 * * @author ruoyi */ public interface AccountUserMapper { /** * 根据会员ID查询 */ public AccountUser selectAccountUserById(Long userId); /** * 根据用户名查询(查重用) */ public AccountUser selectAccountUserByUsername(String userName); /** * 根据手机号查询(查重用) */ public AccountUser selectAccountUserByPhone(String phone); /** * 查询会员列表 */ public List selectAccountUserList(AccountUser accountUser); /** * 新增会员 */ public int insertAccountUser(AccountUser accountUser); /** * 修改会员 */ public int updateAccountUser(AccountUser accountUser); /** * 逻辑删除会员 */ public int deleteAccountUserById(Long userId); /** * 批量逻辑删除会员 */ public int deleteAccountUserByIds(Long[] userIds); /** * 查询会员详情(含推荐人/供货人的手机号、等级、昵称派生列) */ public AccountUserVo selectAccountUserVoById(Long userId); /** * 修改推荐人/供货人关系(只更新关系相关的 4 列) */ public int updateUserRelation(AccountUser accountUser); /** * 修改账户状态(只更新 status 列) */ public int updateUserStatus(AccountUser accountUser); /** * 修改认证状态(只更新 auth_status 列,主体认证审核通过/驳回时回写) */ public int updateUserAuthStatus(AccountUser accountUser); /** * 修改服务商标识(只更新 provider_flag 列,服务商建档时置 '1') * * 刻意不做进 insertAccountUser / updateAccountUser 的动态列:那两个是共享入口, * 挂上去等于 POST/PUT /account/user 的请求体里带个 providerFlag=1 就能把任意会员标成服务商。 * 与 updateUserStatus / updateUserAuthStatus 一样,标识只能由模块内显式调用改写。 */ public int updateUserProviderFlag(AccountUser accountUser); /** * 搜索可绑定为城市公司档案关联用户的会员(限 L4,最多 20 条) * * keyword 与 keywordId 由服务层同时算好:keywordId 仅在 keyword 为纯数字时非空, * 用来等值命中用户编号——写进 SQL 的 like/cast 会让主键索引失效,故单独走一个参数。 */ public List selectL4MemberOptions(@Param("keyword") String keyword, @Param("keywordId") Long keywordId); /** * 搜索可指定为供货人的会员(等级严格高于指定会员,最多 20 条) * * levels 由服务层按 AccountUser.levelsAbove 算好,且必须非空——空集合会让 SQL 拼出 * in () 的语法错误;该会员已是最高等级时服务层直接提前返回,不会走到这里。 * * keyword 与 keywordId 的口径同 selectL4MemberOptions:keywordId 仅在 keyword 为 * 纯数字时非空,用来等值命中用户编号(写进 SQL 的 like/cast 会让主键索引失效)。 */ public List selectSupplierCandidates(@Param("userId") Long userId, @Param("levels") List levels, @Param("keyword") String keyword, @Param("keywordId") Long keywordId); }