package com.ruoyi.user.service;
|
|
import java.util.List;
|
import com.ruoyi.user.domain.AccountAddress;
|
import com.ruoyi.user.domain.AccountUser;
|
import com.ruoyi.user.domain.vo.AccountUserDetailVo;
|
import com.ruoyi.user.domain.vo.MemberOptionVo;
|
import com.ruoyi.user.domain.vo.AccountInviteeVo;
|
import com.ruoyi.user.domain.vo.AccountReferrerVo;
|
import com.ruoyi.user.domain.vo.AccountUserInfoVo;
|
import com.ruoyi.user.domain.vo.InviteCodeVo;
|
|
/**
|
* 会员用户 业务层
|
*
|
* @author ruoyi
|
*/
|
public interface IAccountUserService
|
{
|
/**
|
* 根据会员ID查询
|
*/
|
public AccountUser selectAccountUserById(Long userId);
|
|
/**
|
* 根据手机号查询会员
|
*/
|
public AccountUser selectAccountUserByPhone(String phone);
|
|
/**
|
* 查询会员列表
|
*/
|
public List<AccountUser> selectAccountUserList(AccountUser accountUser);
|
|
/**
|
* 校验用户名是否唯一
|
*
|
* @return true 唯一,false 已存在
|
*/
|
public boolean checkUsernameUnique(AccountUser accountUser);
|
|
/**
|
* 校验手机号是否唯一
|
*/
|
public boolean checkPhoneUnique(AccountUser accountUser);
|
|
/**
|
* 新增会员(密码加密后落库)
|
*/
|
public int insertAccountUser(AccountUser accountUser);
|
|
/**
|
* 修改会员(密码为空则不改密码)
|
*/
|
public int updateAccountUser(AccountUser accountUser);
|
|
/**
|
* 批量逻辑删除会员
|
*/
|
public int deleteAccountUserByIds(Long[] userIds);
|
|
/**
|
* 查询会员详情
|
*
|
* 一次取回详情页各 Tab 所需数据:会员本体(含推荐人/供货人派生列)、
|
* 认证资料、收货地址、签署协议、云仓库存。
|
*/
|
public AccountUserDetailVo selectAccountUserDetail(Long userId);
|
|
/**
|
* 修改推荐人/供货人关系(绑定时间由服务端决定,不取信前端传值)
|
*
|
* 指定新供货人时会校验其等级严格高于该会员,非法取值直接抛 ServiceException。
|
*/
|
public int updateAccountUserRelation(AccountUser accountUser);
|
|
/**
|
* 搜索可指定为供货人的会员(等级严格高于该会员,最多 20 条)
|
*
|
* 供详情页「修改供货人」弹窗的下拉使用。与 updateAccountUserRelation 的校验同源,
|
* 都取 AccountUser 里的等级顺序定义。
|
*/
|
public List<MemberOptionVo> searchSupplierCandidates(Long userId, String keyword);
|
|
/**
|
* 修改账户状态
|
*/
|
public int changeStatus(AccountUser accountUser);
|
|
/**
|
* 修改收货地址
|
*
|
* 置为默认时须先清除同会员其它地址的默认标记,两条语句必须同事务。
|
*/
|
public int updateAccountAddress(AccountAddress accountAddress);
|
|
/**
|
* 批量逻辑删除收货地址
|
*/
|
public int deleteAccountAddressByIds(Long[] ids);
|
|
/**
|
* C端:查询本人收货地址列表(默认地址在前,不分页)
|
*
|
* @param userId 会员ID(取自登录态,非前端传入)
|
* @return 地址列表(无地址返回空集合)
|
*/
|
public List<AccountAddress> getAddressList(Long userId);
|
|
/**
|
* C端:查询单条收货地址(编辑页回填用)
|
*
|
* 校验归属:地址不存在或不属于该会员时抛业务异常。
|
*
|
* @param userId 会员ID(取自登录态)
|
* @param id 地址ID
|
* @return 地址对象
|
*/
|
public AccountAddress getAddressDetail(Long userId, Long id);
|
|
/**
|
* C端:新增本人收货地址
|
*
|
* 事务内处理「首条地址自动默认」与「每会员至多一条默认」约束。
|
*
|
* @param accountAddress 地址入参(userId 由服务端注入)
|
* @return 影响行数
|
*/
|
public int insertMyAddress(AccountAddress accountAddress);
|
|
/**
|
* C端:删除本人收货地址(校验归属后逻辑删除)
|
*
|
* @param userId 会员ID(取自登录态)
|
* @param id 地址ID
|
* @return 影响行数
|
*/
|
public int deleteMyAddress(Long userId, Long id);
|
|
/**
|
* C端会员注册
|
*
|
* 校验手机号未注册、推荐码有效后,生成唯一推荐码并落库(无密码)。
|
*
|
* @param phone 手机号
|
* @param referralCode 推荐人本人的推荐码
|
* @return 注册成功后的会员信息(含生成的 userId 与 myReferralCode)
|
*/
|
public AccountUser registerMember(String phone, String referralCode);
|
|
/**
|
* 查询C端会员个人中心信息(昵称 / 头像 / 会员等级 / 收益汇总)
|
*
|
* @param userId 会员ID(取自登录态,非前端传入)
|
* @return 会员信息展示对象;会员不存在时抛业务异常
|
*/
|
public AccountUserInfoVo getAccountUserInfo(Long userId);
|
|
/**
|
* 更新C端会员头像
|
*
|
* 头像文件由小程序直传文件服务后,将返回的 url 写回 account_user.avatar;
|
* 只更新 avatar 一列,不触碰其它资料。
|
*
|
* @param userId 会员ID(取自登录态,非前端传入)
|
* @param avatarUrl 头像地址(来自文件服务上传结果)
|
*/
|
public void updateAvatar(Long userId, String avatarUrl);
|
|
/**
|
* 查询本人邀请码(我的邀请页「邀请码」Tab)
|
*
|
* @param userId 会员ID(取自登录态,非前端传入)
|
* @return 邀请码展示对象;会员不存在时抛业务异常
|
*/
|
public InviteCodeVo getInviteCode(Long userId);
|
|
/**
|
* 查询本人直接下级(被邀请人)列表(我的邀请页「我邀请的」Tab)
|
*
|
* 按绑定时间倒序(最新在前);手机号脱敏下发;配合 Controller 的分页生效。
|
*
|
* @param userId 会员ID(取自登录态,非前端传入)
|
* @return 被邀请人列表(无下级时返回空集合)
|
*/
|
public List<AccountInviteeVo> getInvitees(Long userId);
|
|
/**
|
* 查询本人上级(推荐人)信息(我的邀请页「邀请我的」Tab)
|
*
|
* @param userId 会员ID(取自登录态,非前端传入)
|
* @return 上级展示对象;无上级时返回各字段为 null 的对象(前端渲染空态)
|
*/
|
public AccountReferrerVo getReferrer(Long userId);
|
}
|