liujie
23 小时以前 384bce80449b17651937429038c4370dbce60e7b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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.AccountUserInfoVo;
 
/**
 * 会员用户 业务层
 *
 * @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 phone 手机号
     * @param referralCode 推荐人本人的推荐码
     * @return 注册成功后的会员信息(含生成的 userId 与 myReferralCode)
     */
    public AccountUser registerMember(String phone, String referralCode);
 
    /**
     * 查询C端会员个人中心信息(昵称 / 头像 / 会员等级 / 收益汇总)
     *
     * @param userId 会员ID(取自登录态,非前端传入)
     * @return 会员信息展示对象;会员不存在时抛业务异常
     */
    public AccountUserInfoVo getAccountUserInfo(Long userId);
}