正在显示
18 个修改的文件
包含
114 行增加
和
1305 行删除
@@ -4,8 +4,8 @@ import ( | @@ -4,8 +4,8 @@ import ( | ||
4 | "github.com/GeeTeam/gt3-golang-sdk/geetest" | 4 | "github.com/GeeTeam/gt3-golang-sdk/geetest" |
5 | "github.com/google/uuid" | 5 | "github.com/google/uuid" |
6 | "github.com/linmadan/egglib-go/utils/json" | 6 | "github.com/linmadan/egglib-go/utils/json" |
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/auth/dto" | ||
7 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/auth/query" | 8 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/auth/query" |
8 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/auth/dto" | ||
9 | "time" | 9 | "time" |
10 | 10 | ||
11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/log" | 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/log" |
1 | -package command | ||
2 | - | ||
3 | -import ( | ||
4 | - "fmt" | ||
5 | - | ||
6 | - "github.com/beego/beego/v2/core/validation" | ||
7 | -) | ||
8 | - | ||
9 | -type AccessTokenCommand struct { | ||
10 | - AuthCode string `json:"authCode" valid:"Required"` | ||
11 | -} | ||
12 | - | ||
13 | -func (orgAddCommand *AccessTokenCommand) Valid(validation *validation.Validation) { | ||
14 | - | ||
15 | -} | ||
16 | - | ||
17 | -func (orgAddCommand *AccessTokenCommand) ValidateCommand() error { | ||
18 | - valid := validation.Validation{} | ||
19 | - b, err := valid.Valid(orgAddCommand) | ||
20 | - if err != nil { | ||
21 | - return err | ||
22 | - } | ||
23 | - if !b { | ||
24 | - for _, validErr := range valid.Errors { | ||
25 | - return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
26 | - } | ||
27 | - } | ||
28 | - return nil | ||
29 | -} |
1 | -package command | ||
2 | - | ||
3 | -import ( | ||
4 | - "fmt" | ||
5 | - "reflect" | ||
6 | - "strings" | ||
7 | - | ||
8 | - "github.com/beego/beego/v2/core/validation" | ||
9 | -) | ||
10 | - | ||
11 | -type CompanySignUpCommand struct { | ||
12 | - // 企业名称 | ||
13 | - CompanyName string `cname:"企业名称" json:"companyName" valid:"Required"` | ||
14 | - // 联系人 | ||
15 | - Contacts string `cname:"联系人" json:"userName" valid:"Required"` | ||
16 | - // 手机号码 | ||
17 | - Phone string `cname:"手机号码" json:"phone" valid:"Required"` | ||
18 | - // 规模 | ||
19 | - Scale string `cname:"规模" json:"scale" valid:"Required"` | ||
20 | - // 所属行业 | ||
21 | - IndustryCategory string `cname:"所属行业" json:"industryCategory" valid:"Required"` | ||
22 | - // 密码 | ||
23 | - Password string `cname:"密码" json:"password" valid:"Required"` | ||
24 | - // 短信验证码 | ||
25 | - SmsCode string `cname:"短信验证码" json:"smsCode" valid:"Required"` | ||
26 | -} | ||
27 | - | ||
28 | -func (companySignUpCommand *CompanySignUpCommand) Valid(validation *validation.Validation) { | ||
29 | - //validation.SetError("CustomValid", "未实现的自定义认证") | ||
30 | -} | ||
31 | - | ||
32 | -func (companySignUpCommand *CompanySignUpCommand) ValidateCommand() error { | ||
33 | - valid := validation.Validation{} | ||
34 | - b, err := valid.Valid(companySignUpCommand) | ||
35 | - if err != nil { | ||
36 | - return err | ||
37 | - } | ||
38 | - if !b { | ||
39 | - elem := reflect.TypeOf(companySignUpCommand).Elem() | ||
40 | - for _, validErr := range valid.Errors { | ||
41 | - field, isExist := elem.FieldByName(validErr.Field) | ||
42 | - if isExist { | ||
43 | - return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
44 | - } else { | ||
45 | - return fmt.Errorf(validErr.Message) | ||
46 | - } | ||
47 | - } | ||
48 | - } | ||
49 | - return nil | ||
50 | -} |
1 | -package command | ||
2 | - | ||
3 | -import ( | ||
4 | - "fmt" | ||
5 | - | ||
6 | - "github.com/beego/beego/v2/core/validation" | ||
7 | -) | ||
8 | - | ||
9 | -type LoginCommand struct { | ||
10 | - Phone string `json:"phone" valid:"Required"` | ||
11 | - GrantType string `json:"grantType" valid:"Required"` //登录方式(signInPassword 密码登录、signInCaptcha 验证码登录) | ||
12 | - Password string `json:"password"` | ||
13 | - Captcha string `json:"captcha"` | ||
14 | -} | ||
15 | - | ||
16 | -func (orgAddCommand *LoginCommand) Valid(validation *validation.Validation) { | ||
17 | - | ||
18 | -} | ||
19 | - | ||
20 | -func (orgAddCommand *LoginCommand) ValidateCommand() error { | ||
21 | - valid := validation.Validation{} | ||
22 | - b, err := valid.Valid(orgAddCommand) | ||
23 | - if err != nil { | ||
24 | - return err | ||
25 | - } | ||
26 | - if !b { | ||
27 | - for _, validErr := range valid.Errors { | ||
28 | - return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
29 | - } | ||
30 | - } | ||
31 | - return nil | ||
32 | -} |
1 | -package command | ||
2 | - | ||
3 | -import ( | ||
4 | - "fmt" | ||
5 | - | ||
6 | - "github.com/beego/beego/v2/core/validation" | ||
7 | -) | ||
8 | - | ||
9 | -type RefreshTokenCommand struct { | ||
10 | - RefreshToken string `json:"refreshToken" valid:"Required"` | ||
11 | -} | ||
12 | - | ||
13 | -func (orgAddCommand *RefreshTokenCommand) Valid(validation *validation.Validation) { | ||
14 | - | ||
15 | -} | ||
16 | - | ||
17 | -func (orgAddCommand *RefreshTokenCommand) ValidateCommand() error { | ||
18 | - valid := validation.Validation{} | ||
19 | - b, err := valid.Valid(orgAddCommand) | ||
20 | - if err != nil { | ||
21 | - return err | ||
22 | - } | ||
23 | - if !b { | ||
24 | - for _, validErr := range valid.Errors { | ||
25 | - return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
26 | - } | ||
27 | - } | ||
28 | - return nil | ||
29 | -} |
1 | -package command | ||
2 | - | ||
3 | -import ( | ||
4 | - "fmt" | ||
5 | - "reflect" | ||
6 | - "strings" | ||
7 | - | ||
8 | - "github.com/beego/beego/v2/core/validation" | ||
9 | -) | ||
10 | - | ||
11 | -type ResetPasswordCommand struct { | ||
12 | - // 手机号码 | ||
13 | - // Phone string `cname:"手机号码" json:"phone" valid:"Required"` | ||
14 | - // 密码 | ||
15 | - Password string `cname:"密码" json:"newPassword"` | ||
16 | - // 密码 | ||
17 | - RepeatNewPassword string `cname:"密码" json:"repeatNewPassword" valid:"Required"` | ||
18 | - // 密码 | ||
19 | - SmsCodeIdentity string `cname:"密码" json:"smsCodeIdentity" valid:"Required"` | ||
20 | -} | ||
21 | - | ||
22 | -func (resetPasswordCommand *ResetPasswordCommand) Valid(validation *validation.Validation) { | ||
23 | - if len(resetPasswordCommand.Password) == 0 { | ||
24 | - validation.Error("登录密码不能为空") | ||
25 | - return | ||
26 | - } | ||
27 | - if resetPasswordCommand.Password != resetPasswordCommand.RepeatNewPassword { | ||
28 | - validation.Error("两次密码输入不一致") | ||
29 | - return | ||
30 | - } | ||
31 | -} | ||
32 | - | ||
33 | -func (resetPasswordCommand *ResetPasswordCommand) ValidateCommand() error { | ||
34 | - valid := validation.Validation{} | ||
35 | - b, err := valid.Valid(resetPasswordCommand) | ||
36 | - if err != nil { | ||
37 | - return err | ||
38 | - } | ||
39 | - if !b { | ||
40 | - elem := reflect.TypeOf(resetPasswordCommand).Elem() | ||
41 | - for _, validErr := range valid.Errors { | ||
42 | - field, isExist := elem.FieldByName(validErr.Field) | ||
43 | - if isExist { | ||
44 | - return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
45 | - } else { | ||
46 | - return fmt.Errorf(validErr.Message) | ||
47 | - } | ||
48 | - } | ||
49 | - } | ||
50 | - return nil | ||
51 | -} |
1 | -package command | ||
2 | - | ||
3 | -import ( | ||
4 | - "fmt" | ||
5 | - "github.com/beego/beego/v2/core/validation" | ||
6 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
7 | -) | ||
8 | - | ||
9 | -type SwitchOrgCommand struct { | ||
10 | - //操作人 | ||
11 | - Operator domain.Operator `json:"-"` | ||
12 | - // 组织ID | ||
13 | - OrgId int64 `json:"orgId,string"` | ||
14 | -} | ||
15 | - | ||
16 | -func (switchOrgCommand *SwitchOrgCommand) Valid(validation *validation.Validation) { | ||
17 | - | ||
18 | -} | ||
19 | - | ||
20 | -func (switchOrgCommand *SwitchOrgCommand) ValidateCommand() error { | ||
21 | - valid := validation.Validation{} | ||
22 | - b, err := valid.Valid(switchOrgCommand) | ||
23 | - if err != nil { | ||
24 | - return err | ||
25 | - } | ||
26 | - if !b { | ||
27 | - for _, validErr := range valid.Errors { | ||
28 | - return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
29 | - } | ||
30 | - } | ||
31 | - return nil | ||
32 | -} |
1 | -package command | ||
2 | - | ||
3 | -import ( | ||
4 | - "fmt" | ||
5 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
6 | - | ||
7 | - "github.com/beego/beego/v2/core/validation" | ||
8 | -) | ||
9 | - | ||
10 | -type UserInfoCommand struct { | ||
11 | - //操作人 | ||
12 | - Operator domain.Operator `json:"-"` | ||
13 | -} | ||
14 | - | ||
15 | -func (userInfoCommand *UserInfoCommand) Valid(validation *validation.Validation) { | ||
16 | - | ||
17 | -} | ||
18 | - | ||
19 | -func (userInfoCommand *UserInfoCommand) ValidateCommand() error { | ||
20 | - valid := validation.Validation{} | ||
21 | - b, err := valid.Valid(userInfoCommand) | ||
22 | - if err != nil { | ||
23 | - return err | ||
24 | - } | ||
25 | - if !b { | ||
26 | - for _, validErr := range valid.Errors { | ||
27 | - return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
28 | - } | ||
29 | - } | ||
30 | - return nil | ||
31 | -} |
1 | -package command | ||
2 | - | ||
3 | -import ( | ||
4 | - "fmt" | ||
5 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
6 | - | ||
7 | - "github.com/beego/beego/v2/core/validation" | ||
8 | -) | ||
9 | - | ||
10 | -type UserMenusCommand struct { | ||
11 | - //操作人 | ||
12 | - Operator domain.Operator `json:"-"` | ||
13 | -} | ||
14 | - | ||
15 | -func (userMenusCommand *UserMenusCommand) Valid(validation *validation.Validation) { | ||
16 | - | ||
17 | -} | ||
18 | - | ||
19 | -func (userMenusCommand *UserMenusCommand) ValidateCommand() error { | ||
20 | - valid := validation.Validation{} | ||
21 | - b, err := valid.Valid(userMenusCommand) | ||
22 | - if err != nil { | ||
23 | - return err | ||
24 | - } | ||
25 | - if !b { | ||
26 | - for _, validErr := range valid.Errors { | ||
27 | - return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
28 | - } | ||
29 | - } | ||
30 | - return nil | ||
31 | -} |
1 | -package command | ||
2 | - | ||
3 | -import ( | ||
4 | - "fmt" | ||
5 | - "github.com/beego/beego/v2/core/validation" | ||
6 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
7 | -) | ||
8 | - | ||
9 | -type UserOrgCommand struct { | ||
10 | - //操作人 | ||
11 | - Operator domain.Operator `json:"-"` | ||
12 | -} | ||
13 | - | ||
14 | -func (userOrgCommand *UserOrgCommand) Valid(validation *validation.Validation) { | ||
15 | - | ||
16 | -} | ||
17 | - | ||
18 | -func (userOrgCommand *UserOrgCommand) ValidateCommand() error { | ||
19 | - valid := validation.Validation{} | ||
20 | - b, err := valid.Valid(userOrgCommand) | ||
21 | - if err != nil { | ||
22 | - return err | ||
23 | - } | ||
24 | - if !b { | ||
25 | - for _, validErr := range valid.Errors { | ||
26 | - return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
27 | - } | ||
28 | - } | ||
29 | - return nil | ||
30 | -} |
1 | -package service | ||
2 | - | ||
3 | -import ( | ||
4 | - "time" | ||
5 | - | ||
6 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/log" | ||
7 | - | ||
8 | - "github.com/linmadan/egglib-go/core/application" | ||
9 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/factory" | ||
10 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/mobile/auth/command" | ||
11 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
12 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/cache" | ||
13 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | ||
14 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/sms_serve" | ||
15 | -) | ||
16 | - | ||
17 | -// 组织管理 | ||
18 | -type AuthService struct { | ||
19 | -} | ||
20 | - | ||
21 | -//AuthLogin 用户登录 | ||
22 | -func (srv AuthService) AuthLogin(loginCommand *command.LoginCommand) (interface{}, error) { | ||
23 | - var ( | ||
24 | - result interface{} | ||
25 | - err error | ||
26 | - ) | ||
27 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
28 | - _, err = creationUserGateway.AuthRefreshIM(allied_creation_user.ReqAuthRefreshIM{ | ||
29 | - Phone: loginCommand.Phone, | ||
30 | - }) | ||
31 | - if err != nil { | ||
32 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
33 | - } | ||
34 | - switch loginCommand.GrantType { | ||
35 | - case "signInPassword": | ||
36 | - result, err = srv.SignInPassword(loginCommand.Phone, loginCommand.Password) | ||
37 | - case "signInCaptcha": | ||
38 | - result, err = srv.SignInCaptcha(loginCommand.Phone, loginCommand.Captcha) | ||
39 | - default: | ||
40 | - err = application.ThrowError(application.TRANSACTION_ERROR, "登录方式无法解析") | ||
41 | - } | ||
42 | - return result, err | ||
43 | -} | ||
44 | - | ||
45 | -//SignInPassword 使用账号密码校验 | ||
46 | -func (srv AuthService) SignInPassword(account string, password string) (interface{}, error) { | ||
47 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
48 | - _, err := creationUserGateway.AuthCheckPassword(allied_creation_user.ReqAuthCheckPassword{ | ||
49 | - Password: password, | ||
50 | - Phone: account, | ||
51 | - }) | ||
52 | - if err != nil { | ||
53 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
54 | - } | ||
55 | - ltoken := domain.LoginToken{ | ||
56 | - UserId: 0, | ||
57 | - Account: account, | ||
58 | - Platform: domain.LoginPlatformApp, | ||
59 | - CompanyId: 0, | ||
60 | - } | ||
61 | - authcode, err := ltoken.GenerateAuthCode() | ||
62 | - if err != nil { | ||
63 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
64 | - } | ||
65 | - result := map[string]string{ | ||
66 | - "authCode": authcode, | ||
67 | - } | ||
68 | - return result, nil | ||
69 | -} | ||
70 | - | ||
71 | -//SignInCaptcha 使用手机验证码登录 | ||
72 | -func (srv AuthService) SignInCaptcha(phone string, captcha string) (interface{}, error) { | ||
73 | - smsServeGateway := sms_serve.NewHttplibHttplibSmsServe() | ||
74 | - err := smsServeGateway.CheckSmsCode(phone, captcha) | ||
75 | - if err != nil { | ||
76 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
77 | - } | ||
78 | - ltoken := domain.LoginToken{ | ||
79 | - UserId: 0, | ||
80 | - Account: phone, | ||
81 | - Platform: domain.LoginPlatformApp, | ||
82 | - CompanyId: 0, | ||
83 | - } | ||
84 | - authcode, err := ltoken.GenerateAuthCode() | ||
85 | - if err != nil { | ||
86 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
87 | - } | ||
88 | - result := map[string]string{ | ||
89 | - "authCode": authcode, | ||
90 | - } | ||
91 | - return result, nil | ||
92 | -} | ||
93 | - | ||
94 | -//GetAuthAccessToken 获取令牌Token | ||
95 | -func (srv AuthService) GetAuthAccessToken(accessTokenCommand *command.AccessTokenCommand) (interface{}, error) { | ||
96 | - if err := accessTokenCommand.ValidateCommand(); err != nil { | ||
97 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
98 | - } | ||
99 | - ltoken := &domain.LoginToken{} | ||
100 | - err := ltoken.ParseToken(accessTokenCommand.AuthCode) | ||
101 | - if err != nil { | ||
102 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
103 | - } | ||
104 | - phone := ltoken.Account | ||
105 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
106 | - userSeachResult, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
107 | - CompanyId: ltoken.CompanyId, | ||
108 | - Phone: phone, | ||
109 | - }) | ||
110 | - if err != nil { | ||
111 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
112 | - } | ||
113 | - if len(userSeachResult.Users) == 0 { | ||
114 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取用户信息失败") | ||
115 | - } | ||
116 | - transactionContext, err := factory.CreateTransactionContext(nil) | ||
117 | - if err != nil { | ||
118 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
119 | - } | ||
120 | - if err := transactionContext.StartTransaction(); err != nil { | ||
121 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
122 | - } | ||
123 | - defer func() { | ||
124 | - transactionContext.RollbackTransaction() | ||
125 | - }() | ||
126 | - var loginAccessRepository domain.LoginAccessRepository | ||
127 | - if loginAccessRepository, err = factory.CreateLoginAccessRepository(map[string]interface{}{ | ||
128 | - "transactionContext": transactionContext, | ||
129 | - }); err != nil { | ||
130 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
131 | - } | ||
132 | - _, lAccess, err := loginAccessRepository.Find(map[string]interface{}{ | ||
133 | - "account": phone, | ||
134 | - "platform": domain.LoginPlatformApp, | ||
135 | - }) | ||
136 | - if err != nil { | ||
137 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
138 | - } | ||
139 | - var currentAccess *domain.LoginAccess | ||
140 | - if len(lAccess) > 0 { | ||
141 | - currentAccess = lAccess[0] | ||
142 | - currentAccess.UpdatedTime = time.Now() | ||
143 | - } else { | ||
144 | - currentAccess = &domain.LoginAccess{ | ||
145 | - UserBaseId: int64(userSeachResult.Users[0].UserBaseId), | ||
146 | - UserId: int64(userSeachResult.Users[0].UserId), | ||
147 | - Account: userSeachResult.Users[0].UserInfo.Phone, | ||
148 | - Platform: domain.LoginPlatformApp, | ||
149 | - OrganizationId: int64(userSeachResult.Users[0].Org.OrgId), | ||
150 | - AccessToken: "", | ||
151 | - RefreshToken: "", | ||
152 | - AccessExpired: 0, | ||
153 | - RefreshExpired: 0, | ||
154 | - CreatedTime: time.Now(), | ||
155 | - UpdatedTime: time.Now(), | ||
156 | - } | ||
157 | - if userSeachResult.Users[0].Company != nil { | ||
158 | - currentAccess.CompanyId = int64(userSeachResult.Users[0].Company.CompanyId) | ||
159 | - } | ||
160 | - } | ||
161 | - //判定当前凭证的companyId,OrganizationId 是否在用户列表中 | ||
162 | - var currentOrgIsOK bool | ||
163 | -loopUser1: | ||
164 | - for _, v := range userSeachResult.Users { | ||
165 | - if v.Company.CompanyId == int(currentAccess.CompanyId) { | ||
166 | - for _, vv := range v.UserOrg { | ||
167 | - if vv.OrgID == int(currentAccess.OrganizationId) { | ||
168 | - currentOrgIsOK = true | ||
169 | - currentAccess.UserId = int64(v.UserId) | ||
170 | - currentAccess.UserBaseId = int64(v.UserBaseId) | ||
171 | - break loopUser1 | ||
172 | - } | ||
173 | - } | ||
174 | - } | ||
175 | - } | ||
176 | - //记录上一次的登录公司组织信息不可用 ,重置登录记录 | ||
177 | - //使用找到的第一个可用的公司组织 | ||
178 | - if !currentOrgIsOK { | ||
179 | - loopUser2: | ||
180 | - for _, v := range userSeachResult.Users { | ||
181 | - currentAccess.CompanyId = int64(v.Company.CompanyId) | ||
182 | - for _, vv := range v.UserOrg { | ||
183 | - currentAccess.UserId = int64(v.UserId) | ||
184 | - currentAccess.UserBaseId = int64(v.UserBaseId) | ||
185 | - currentAccess.OrganizationId = int64(vv.OrgID) | ||
186 | - currentOrgIsOK = true | ||
187 | - break loopUser2 | ||
188 | - } | ||
189 | - } | ||
190 | - } | ||
191 | - | ||
192 | - loginToken := domain.LoginToken{ | ||
193 | - UserId: currentAccess.UserId, | ||
194 | - Account: currentAccess.Account, | ||
195 | - UserBaseId: currentAccess.UserBaseId, | ||
196 | - CompanyId: currentAccess.CompanyId, | ||
197 | - OrgId: currentAccess.OrganizationId, | ||
198 | - Platform: currentAccess.Platform, | ||
199 | - } | ||
200 | - | ||
201 | - accessTokenStr, err := loginToken.GenerateAccessToken() | ||
202 | - if err != nil { | ||
203 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
204 | - } | ||
205 | - currentAccess.AccessToken = accessTokenStr | ||
206 | - currentAccess.AccessExpired = loginToken.ExpiresAt | ||
207 | - refreshTokenStr, err := loginToken.GenerateRefreshToken() | ||
208 | - if err != nil { | ||
209 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
210 | - } | ||
211 | - currentAccess.RefreshToken = refreshTokenStr | ||
212 | - currentAccess.AccessExpired = loginToken.ExpiresAt | ||
213 | - //先存数据库 | ||
214 | - _, err = loginAccessRepository.Save(currentAccess) | ||
215 | - if err != nil { | ||
216 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
217 | - } | ||
218 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
219 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
220 | - } | ||
221 | - //后处理redis缓存 | ||
222 | - tokenCache := cache.LoginTokenCache{} | ||
223 | - tokenCache.RemoveAccessToken(currentAccess.Account, domain.LoginPlatformApp) | ||
224 | - tokenCache.RemoveRefreshToken(currentAccess.Account, domain.LoginPlatformApp) | ||
225 | - tokenCache.SaveAccessToken(currentAccess) | ||
226 | - tokenCache.SaveRefreshToken(currentAccess) | ||
227 | - nowTime := time.Now().Unix() | ||
228 | - return map[string]interface{}{ | ||
229 | - "refreshToken": accessTokenStr, | ||
230 | - "accessToken": refreshTokenStr, | ||
231 | - "expiresIn": currentAccess.AccessExpired - nowTime, | ||
232 | - }, nil | ||
233 | -} | ||
234 | - | ||
235 | -func (srv AuthService) RefreshAuthAccessToken(refreshTokenCommand *command.RefreshTokenCommand) (interface{}, error) { | ||
236 | - if err := refreshTokenCommand.ValidateCommand(); err != nil { | ||
237 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
238 | - } | ||
239 | - ltoken := domain.LoginToken{} | ||
240 | - err := ltoken.ParseToken(refreshTokenCommand.RefreshToken) | ||
241 | - if err != nil { | ||
242 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, "refreshToken 不可用,"+err.Error()) | ||
243 | - } | ||
244 | - token, err := srv.getToken(domain.Operator{}, ltoken) | ||
245 | - // phone := ltoken.Account | ||
246 | - // creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
247 | - // userSearchResult, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
248 | - // Phone: phone, | ||
249 | - // }) | ||
250 | - // if err != nil { | ||
251 | - // return nil, application.ThrowError(application.TRANSACTION_ERROR, "用户信息获取失败,"+err.Error()) | ||
252 | - // } | ||
253 | - // //判定当前凭证的companyId,OrganizationId 是否在用户列表中 | ||
254 | - // var currentOrgIsOK bool | ||
255 | - //loopUser1: | ||
256 | - // for _, v := range userSearchResult.Users { | ||
257 | - // if v.Company.CompanyId == int(ltoken.CompanyId) { | ||
258 | - // for _, vv := range v.UserOrg { | ||
259 | - // if vv.OrgID == int(ltoken.OrgId) { | ||
260 | - // currentOrgIsOK = true | ||
261 | - // break loopUser1 | ||
262 | - // } | ||
263 | - // } | ||
264 | - // } | ||
265 | - // } | ||
266 | - // if !currentOrgIsOK { | ||
267 | - // return nil, application.ThrowError(application.TRANSACTION_ERROR, "登录的公司组织不可用") | ||
268 | - // } | ||
269 | - // | ||
270 | - // transactionContext, err := factory.CreateTransactionContext(nil) | ||
271 | - // if err != nil { | ||
272 | - // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
273 | - // } | ||
274 | - // if err := transactionContext.StartTransaction(); err != nil { | ||
275 | - // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
276 | - // } | ||
277 | - // defer func() { | ||
278 | - // transactionContext.RollbackTransaction() | ||
279 | - // }() | ||
280 | - // var loginAccessRepository domain.LoginAccessRepository | ||
281 | - // if loginAccessRepository, err = factory.CreateLoginAccessRepository(map[string]interface{}{ | ||
282 | - // "transactionContext": transactionContext, | ||
283 | - // }); err != nil { | ||
284 | - // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
285 | - // } | ||
286 | - // _, lAccess, err := loginAccessRepository.Find(map[string]interface{}{ | ||
287 | - // "account": phone, | ||
288 | - // "platform": domain.LoginPlatformApp, | ||
289 | - // }) | ||
290 | - // if err != nil { | ||
291 | - // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
292 | - // } | ||
293 | - // var currentAccess *domain.LoginAccess | ||
294 | - // if len(lAccess) > 0 { | ||
295 | - // currentAccess = lAccess[0] | ||
296 | - // currentAccess.UpdatedTime = time.Now() | ||
297 | - // } else { | ||
298 | - // currentAccess = &domain.LoginAccess{ | ||
299 | - // UserBaseId: ltoken.UserBaseId, | ||
300 | - // UserId: ltoken.UserId, | ||
301 | - // Account: ltoken.Account, | ||
302 | - // Platform: domain.LoginPlatformApp, | ||
303 | - // CompanyId: ltoken.CompanyId, | ||
304 | - // OrganizationId: ltoken.OrgId, | ||
305 | - // AccessToken: "", | ||
306 | - // RefreshToken: "", | ||
307 | - // AccessExpired: 0, | ||
308 | - // RefreshExpired: 0, | ||
309 | - // CreatedTime: time.Now(), | ||
310 | - // UpdatedTime: time.Now(), | ||
311 | - // } | ||
312 | - // } | ||
313 | - // accessTokenStr, err := ltoken.GenerateAccessToken() | ||
314 | - // if err != nil { | ||
315 | - // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
316 | - // } | ||
317 | - // currentAccess.AccessToken = accessTokenStr | ||
318 | - // currentAccess.AccessExpired = ltoken.ExpiresAt | ||
319 | - // refreshTokenStr, err := ltoken.GenerateRefreshToken() | ||
320 | - // if err != nil { | ||
321 | - // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
322 | - // } | ||
323 | - // currentAccess.RefreshToken = refreshTokenStr | ||
324 | - // currentAccess.RefreshExpired = ltoken.ExpiresAt | ||
325 | - // //先存数据库 | ||
326 | - // _, err = loginAccessRepository.Save(currentAccess) | ||
327 | - // if err != nil { | ||
328 | - // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
329 | - // } | ||
330 | - // if err := transactionContext.CommitTransaction(); err != nil { | ||
331 | - // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
332 | - // } | ||
333 | - // //后处理redis缓存 | ||
334 | - // tokenCache := cache.LoginTokenCache{} | ||
335 | - // tokenCache.RemoveAccessToken(currentAccess.Account, domain.LoginPlatformApp) | ||
336 | - // tokenCache.RemoveRefreshToken(currentAccess.Account, domain.LoginPlatformApp) | ||
337 | - // tokenCache.SaveAccessToken(currentAccess) | ||
338 | - // tokenCache.SaveRefreshToken(currentAccess) | ||
339 | - // nowTime := time.Now().Unix() | ||
340 | - // return map[string]interface{}{ | ||
341 | - // "refreshToken": accessTokenStr, | ||
342 | - // "accessToken": refreshTokenStr, | ||
343 | - // "expiresIn": currentAccess.AccessExpired - nowTime, | ||
344 | - // }, nil | ||
345 | - return token["token"], err | ||
346 | -} | ||
347 | - | ||
348 | -//GetUserMenus 获取用户信息 | ||
349 | -func (srv AuthService) GetUserInfo(userInfoCommand *command.UserInfoCommand) (interface{}, error) { | ||
350 | - user, err := srv.getUserInfo(userInfoCommand.Operator) | ||
351 | - if err != nil { | ||
352 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
353 | - } | ||
354 | - return map[string]interface{}{ | ||
355 | - "user": user, | ||
356 | - }, nil | ||
357 | -} | ||
358 | - | ||
359 | -//GetUserMenus 获取用户菜单 | ||
360 | -func (srv AuthService) GetUserMenus(userMenusCommand *command.UserMenusCommand) (interface{}, error) { | ||
361 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser( | ||
362 | - userMenusCommand.Operator) | ||
363 | - resultMenu, err := creationUserGateway.UserAccessMenus(allied_creation_user.ReqUserAccessMenus{ | ||
364 | - UserId: int(userMenusCommand.Operator.UserId), | ||
365 | - }) | ||
366 | - if err != nil { | ||
367 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
368 | - } | ||
369 | - return map[string]interface{}{ | ||
370 | - "accessMenus": resultMenu.Menus, | ||
371 | - }, nil | ||
372 | -} | ||
373 | - | ||
374 | -//GetUserMenus 获取用户组织 | ||
375 | -func (srv AuthService) GetUserOrg(userOrgCommand *command.UserOrgCommand) (interface{}, error) { | ||
376 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(userOrgCommand.Operator) | ||
377 | - result, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
378 | - Offset: 0, | ||
379 | - Limit: 100, | ||
380 | - UserBaseId: userOrgCommand.Operator.UserBaseId, | ||
381 | - UserType: domain.UserTypeEmployee, | ||
382 | - EnableStatus: domain.UserStatusEnable, | ||
383 | - PullRealTime: true, | ||
384 | - }) | ||
385 | - if err != nil { | ||
386 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
387 | - } | ||
388 | - var res = make([]interface{}, 0) | ||
389 | - for i := range result.Users { | ||
390 | - for j := range result.Users[i].UserOrg { | ||
391 | - org := result.Users[i].UserOrg[j] | ||
392 | - res = append(res, map[string]interface{}{ | ||
393 | - "orgId": org.OrgID, | ||
394 | - "orgName": org.OrgName, | ||
395 | - }) | ||
396 | - } | ||
397 | - } | ||
398 | - return map[string]interface{}{ | ||
399 | - "orgs": res, | ||
400 | - }, nil | ||
401 | -} | ||
402 | - | ||
403 | -//OrgSwitch 组织切换 | ||
404 | -func (srv AuthService) OrgSwitch(switchOrgCommand *command.SwitchOrgCommand) (interface{}, error) { | ||
405 | - if err := switchOrgCommand.ValidateCommand(); err != nil { | ||
406 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
407 | - } | ||
408 | - ltoken := domain.LoginToken{} | ||
409 | - err := ltoken.ParseToken(switchOrgCommand.Operator.Token) | ||
410 | - if err != nil { | ||
411 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, "accessToken 不可用,"+err.Error()) | ||
412 | - } | ||
413 | - ltoken.OrgId = switchOrgCommand.OrgId | ||
414 | - token, err := srv.getToken(domain.Operator{}, ltoken) | ||
415 | - if err != nil { | ||
416 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
417 | - } | ||
418 | - var userId int64 | ||
419 | - if v, ok := token["userId"]; ok { | ||
420 | - if userId, ok = v.(int64); !ok { | ||
421 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, "用户不存在") | ||
422 | - } | ||
423 | - } | ||
424 | - user, err := srv.getUserInfo(domain.Operator{UserId: userId}) | ||
425 | - if err != nil { | ||
426 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
427 | - } | ||
428 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser( | ||
429 | - switchOrgCommand.Operator) | ||
430 | - resultMenu, err := creationUserGateway.UserAccessMenus(allied_creation_user.ReqUserAccessMenus{ | ||
431 | - UserId: int(userId), | ||
432 | - }) | ||
433 | - if err != nil { | ||
434 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
435 | - } | ||
436 | - var res = map[string]interface{}{ | ||
437 | - "user": user, | ||
438 | - "accessMenus": resultMenu.Menus, | ||
439 | - "token": token["token"], | ||
440 | - } | ||
441 | - return res, nil | ||
442 | -} | ||
443 | - | ||
444 | -// CompanySignUp 企业注册 | ||
445 | -func (srv AuthService) CompanySignUp(companySignUpCommand *command.CompanySignUpCommand) (interface{}, error) { | ||
446 | - //TODO:验证码验证测试去掉,后期恢复回来 | ||
447 | - //smsServeGateway := sms_serve.NewHttplibHttplibSmsServe() | ||
448 | - //err := smsServeGateway.CheckSmsCode(companySignUpCommand.Phone, companySignUpCommand.SmsCode) | ||
449 | - //if err != nil { | ||
450 | - // return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
451 | - //} | ||
452 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
453 | - _, err := creationUserGateway.AuthCompanySignUp(allied_creation_user.ReqAuthCompanySignUp{ | ||
454 | - CompanyName: companySignUpCommand.CompanyName, | ||
455 | - Phone: companySignUpCommand.Phone, | ||
456 | - Password: companySignUpCommand.Password, | ||
457 | - Contacts: companySignUpCommand.Contacts, | ||
458 | - IndustryCategory: companySignUpCommand.IndustryCategory, | ||
459 | - Scale: companySignUpCommand.Scale, | ||
460 | - }) | ||
461 | - if err != nil { | ||
462 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
463 | - } | ||
464 | - return companySignUpCommand, err | ||
465 | -} | ||
466 | - | ||
467 | -// ResetPassword 重置密码(找回密码) | ||
468 | -func (srv AuthService) ResetPassword(resetPasswordCommand *command.ResetPasswordCommand) (interface{}, error) { | ||
469 | - if err := resetPasswordCommand.ValidateCommand(); err != nil { | ||
470 | - return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
471 | - } | ||
472 | - //var phone string | ||
473 | - pcc := cache.PhoneCheckCache{} | ||
474 | - var item = &cache.PhoneCheckItem{} | ||
475 | - if err := pcc.Get(resetPasswordCommand.SmsCodeIdentity, item); err != nil { | ||
476 | - log.Logger.Error(err.Error()) | ||
477 | - return nil, application.ThrowError(application.BUSINESS_ERROR, "验证码已失效") | ||
478 | - } | ||
479 | - // 2.重置密码 | ||
480 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
481 | - result, err := creationUserGateway.AuthResetPassword(allied_creation_user.ReqAuthResetPassword{ | ||
482 | - Phone: item.Phone, | ||
483 | - Password: resetPasswordCommand.Password, | ||
484 | - }) | ||
485 | - if err != nil { | ||
486 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
487 | - } | ||
488 | - return result, err | ||
489 | -} | ||
490 | - | ||
491 | -func (srv AuthService) getUserInfo(operator domain.Operator) (interface{}, error) { | ||
492 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser( | ||
493 | - operator) | ||
494 | - resultUser, err := creationUserGateway.UserGet(allied_creation_user.ReqGetUser{ | ||
495 | - UserId: int(operator.UserId), | ||
496 | - }) | ||
497 | - if err != nil { | ||
498 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
499 | - } | ||
500 | - var user = map[string]interface{}{ | ||
501 | - "userId": resultUser.UserId, | ||
502 | - "userInfo": map[string]interface{}{ | ||
503 | - "userName": resultUser.UserInfo.UserName, | ||
504 | - "userPhone": resultUser.UserInfo.Phone, | ||
505 | - "userAvatar": resultUser.UserInfo.Avatar, | ||
506 | - //"userCode": resultUser.UserInfo.UserCode, | ||
507 | - "email": resultUser.UserInfo.Email, | ||
508 | - }, | ||
509 | - "department": resultUser.Department, | ||
510 | - "company": map[string]interface{}{ | ||
511 | - "companyId": resultUser.Company.CompanyId, | ||
512 | - "companyName": resultUser.Company.CompanyName, | ||
513 | - "logo": resultUser.Company.Log, | ||
514 | - }, | ||
515 | - "im": resultUser.IM, | ||
516 | - "org": resultUser.Org, | ||
517 | - } | ||
518 | - return user, nil | ||
519 | -} | ||
520 | - | ||
521 | -func (srv AuthService) getToken(operator domain.Operator, ltoken domain.LoginToken) (map[string]interface{}, error) { | ||
522 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
523 | - userSearchResult, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
524 | - Phone: ltoken.Account, | ||
525 | - }) | ||
526 | - if err != nil { | ||
527 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, "用户信息获取失败,"+err.Error()) | ||
528 | - } | ||
529 | - //判定当前凭证的companyId,OrganizationId 是否在用户列表中 | ||
530 | - var currentOrgIsOK bool | ||
531 | - var currentUserId int64 | ||
532 | -loopUser1: | ||
533 | - for _, v := range userSearchResult.Users { | ||
534 | - //if v.Company.CompanyId == int(ltoken.CompanyId) { | ||
535 | - for _, vv := range v.UserOrg { | ||
536 | - if vv.OrgID == int(ltoken.OrgId) { | ||
537 | - currentOrgIsOK = true | ||
538 | - currentUserId = int64(v.UserId) | ||
539 | - break loopUser1 | ||
540 | - } | ||
541 | - } | ||
542 | - //} | ||
543 | - } | ||
544 | - if !currentOrgIsOK { | ||
545 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, "登录的公司组织不可用") | ||
546 | - } | ||
547 | - | ||
548 | - transactionContext, err := factory.CreateTransactionContext(nil) | ||
549 | - if err != nil { | ||
550 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
551 | - } | ||
552 | - if err := transactionContext.StartTransaction(); err != nil { | ||
553 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
554 | - } | ||
555 | - defer func() { | ||
556 | - transactionContext.RollbackTransaction() | ||
557 | - }() | ||
558 | - var loginAccessRepository domain.LoginAccessRepository | ||
559 | - if loginAccessRepository, err = factory.CreateLoginAccessRepository(map[string]interface{}{ | ||
560 | - "transactionContext": transactionContext, | ||
561 | - }); err != nil { | ||
562 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
563 | - } | ||
564 | - _, lAccess, err := loginAccessRepository.Find(map[string]interface{}{ | ||
565 | - "account": ltoken.Account, | ||
566 | - "platform": domain.LoginPlatformApp, | ||
567 | - }) | ||
568 | - if err != nil { | ||
569 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
570 | - } | ||
571 | - var currentAccess *domain.LoginAccess | ||
572 | - if len(lAccess) > 0 { | ||
573 | - currentAccess = lAccess[0] | ||
574 | - currentAccess.UpdatedTime = time.Now() | ||
575 | - } else { | ||
576 | - currentAccess = &domain.LoginAccess{ | ||
577 | - UserBaseId: ltoken.UserBaseId, | ||
578 | - UserId: ltoken.UserId, | ||
579 | - Account: ltoken.Account, | ||
580 | - Platform: domain.LoginPlatformApp, | ||
581 | - CompanyId: ltoken.CompanyId, | ||
582 | - OrganizationId: ltoken.OrgId, | ||
583 | - AccessToken: "", | ||
584 | - RefreshToken: "", | ||
585 | - AccessExpired: 0, | ||
586 | - RefreshExpired: 0, | ||
587 | - CreatedTime: time.Now(), | ||
588 | - UpdatedTime: time.Now(), | ||
589 | - } | ||
590 | - } | ||
591 | - accessTokenStr, err := ltoken.GenerateAccessToken() | ||
592 | - if err != nil { | ||
593 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
594 | - } | ||
595 | - currentAccess.AccessToken = accessTokenStr | ||
596 | - currentAccess.AccessExpired = ltoken.ExpiresAt | ||
597 | - refreshTokenStr, err := ltoken.GenerateRefreshToken() | ||
598 | - if err != nil { | ||
599 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
600 | - } | ||
601 | - currentAccess.RefreshToken = refreshTokenStr | ||
602 | - currentAccess.RefreshExpired = ltoken.ExpiresAt | ||
603 | - //先存数据库 | ||
604 | - _, err = loginAccessRepository.Save(currentAccess) | ||
605 | - if err != nil { | ||
606 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
607 | - } | ||
608 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
609 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
610 | - } | ||
611 | - //后处理redis缓存 | ||
612 | - tokenCache := cache.LoginTokenCache{} | ||
613 | - tokenCache.RemoveAccessToken(currentAccess.Account, domain.LoginPlatformApp) | ||
614 | - tokenCache.RemoveRefreshToken(currentAccess.Account, domain.LoginPlatformApp) | ||
615 | - tokenCache.SaveAccessToken(currentAccess) | ||
616 | - tokenCache.SaveRefreshToken(currentAccess) | ||
617 | - nowTime := time.Now().Unix() | ||
618 | - token := map[string]interface{}{ | ||
619 | - "refreshToken": accessTokenStr, | ||
620 | - "accessToken": refreshTokenStr, | ||
621 | - "expiresIn": currentAccess.AccessExpired - nowTime, | ||
622 | - } | ||
623 | - return map[string]interface{}{ | ||
624 | - "token": token, | ||
625 | - "userId": currentUserId, | ||
626 | - }, nil | ||
627 | -} |
1 | -package command | ||
2 | - | ||
3 | -import ( | ||
4 | - "fmt" | ||
5 | - | ||
6 | - "github.com/beego/beego/v2/core/validation" | ||
7 | -) | ||
8 | - | ||
9 | -type LoginCommand struct { | ||
10 | - Phone string `json:"phone" valid:"Required"` | ||
11 | - GrantType string `json:"grantType" valid:"Required"` //登录方式(signInPassword 密码登录、signInCaptcha 验证码登录) | ||
12 | - Password string `json:"password"` | ||
13 | - Captcha string `json:"captcha"` | ||
14 | -} | ||
15 | - | ||
16 | -func (orgAddCommand *LoginCommand) Valid(validation *validation.Validation) { | ||
17 | - | ||
18 | -} | ||
19 | - | ||
20 | -func (orgAddCommand *LoginCommand) ValidateCommand() error { | ||
21 | - valid := validation.Validation{} | ||
22 | - b, err := valid.Valid(orgAddCommand) | ||
23 | - if err != nil { | ||
24 | - return err | ||
25 | - } | ||
26 | - if !b { | ||
27 | - for _, validErr := range valid.Errors { | ||
28 | - return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
29 | - } | ||
30 | - } | ||
31 | - return nil | ||
32 | -} |
1 | -package query | ||
2 | - | ||
3 | -import ( | ||
4 | - "fmt" | ||
5 | - | ||
6 | - "github.com/beego/beego/v2/core/validation" | ||
7 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
8 | -) | ||
9 | - | ||
10 | -type GetCompanyOrgsByUserQuery struct { | ||
11 | - //操作人 | ||
12 | - Operator domain.Operator `json:"-"` | ||
13 | - Phone string `json:"phone" valid:"Required"` //手机号 | ||
14 | -} | ||
15 | - | ||
16 | -func (orgAddCommand *GetCompanyOrgsByUserQuery) Valid(validation *validation.Validation) { | ||
17 | - | ||
18 | -} | ||
19 | - | ||
20 | -func (orgAddCommand *GetCompanyOrgsByUserQuery) ValidateCommand() error { | ||
21 | - valid := validation.Validation{} | ||
22 | - b, err := valid.Valid(orgAddCommand) | ||
23 | - if err != nil { | ||
24 | - return err | ||
25 | - } | ||
26 | - if !b { | ||
27 | - for _, validErr := range valid.Errors { | ||
28 | - return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
29 | - } | ||
30 | - } | ||
31 | - return nil | ||
32 | -} |
1 | -package service | ||
2 | - | ||
3 | -import ( | ||
4 | - "errors" | ||
5 | - | ||
6 | - "github.com/linmadan/egglib-go/core/application" | ||
7 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/auth/command" | ||
8 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/auth/dto" | ||
9 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/auth/query" | ||
10 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
11 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/cache" | ||
12 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | ||
13 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/sms_serve" | ||
14 | -) | ||
15 | - | ||
16 | -type AuthService struct{} | ||
17 | - | ||
18 | -//AuthLogin 用户登录 | ||
19 | -func (srv AuthService) AuthLogin(loginCommand *command.LoginCommand) (interface{}, error) { | ||
20 | - var ( | ||
21 | - result interface{} | ||
22 | - err error | ||
23 | - ) | ||
24 | - switch loginCommand.GrantType { | ||
25 | - case "signInPassword": | ||
26 | - //账号密码登录 | ||
27 | - result, err = srv.SignInPassword(loginCommand.Phone, loginCommand.Password) | ||
28 | - case "signInCaptcha": | ||
29 | - //手机验证码登录 | ||
30 | - result, err = srv.SignInCaptcha(loginCommand.Phone, loginCommand.Captcha) | ||
31 | - default: | ||
32 | - err = errors.New("登录方式无法解析") | ||
33 | - } | ||
34 | - return result, err | ||
35 | -} | ||
36 | - | ||
37 | -//SignInPassword 使用账号密码校验 | ||
38 | -func (srv AuthService) SignInPassword(account string, password string) (interface{}, error) { | ||
39 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(domain.Operator{}) | ||
40 | - _, err := creationUserGateway.AuthCheckPassword(allied_creation_user.ReqAuthCheckPassword{ | ||
41 | - Password: password, | ||
42 | - Phone: account, | ||
43 | - }) | ||
44 | - if err != nil { | ||
45 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
46 | - } | ||
47 | - ltoken := domain.LoginToken{ | ||
48 | - UserId: 0, | ||
49 | - Account: account, | ||
50 | - Platform: domain.LoginPlatformApp, | ||
51 | - CompanyId: 0, | ||
52 | - } | ||
53 | - authcode, err := ltoken.GenerateAuthCode() | ||
54 | - if err != nil { | ||
55 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
56 | - } | ||
57 | - result := map[string]string{ | ||
58 | - "authCode": authcode, | ||
59 | - } | ||
60 | - return result, nil | ||
61 | -} | ||
62 | - | ||
63 | -//SignInCaptcha 使用手机验证码登录 | ||
64 | -func (srv AuthService) SignInCaptcha(phone string, captcha string) (interface{}, error) { | ||
65 | - smsServeGateway := sms_serve.NewHttplibHttplibSmsServe() | ||
66 | - err := smsServeGateway.CheckSmsCode(phone, captcha) | ||
67 | - if err != nil { | ||
68 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
69 | - } | ||
70 | - ltoken := domain.LoginToken{ | ||
71 | - UserId: 0, | ||
72 | - Account: phone, | ||
73 | - Platform: domain.LoginPlatformApp, | ||
74 | - CompanyId: 0, | ||
75 | - } | ||
76 | - authcode, err := ltoken.GenerateAuthCode() | ||
77 | - if err != nil { | ||
78 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
79 | - } | ||
80 | - result := map[string]string{ | ||
81 | - "authCode": authcode, | ||
82 | - } | ||
83 | - return result, nil | ||
84 | -} | ||
85 | - | ||
86 | -//GetCompanyOrgsByUser 获取登录用户的公司组织列表 | ||
87 | -func (srv AuthService) GetCompanyOrgsByUser(queryParam query.GetCompanyOrgsByUserQuery) (interface{}, error) { | ||
88 | - | ||
89 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(queryParam.Operator) | ||
90 | - result, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
91 | - Phone: queryParam.Phone, | ||
92 | - }) | ||
93 | - if err != nil { | ||
94 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
95 | - } | ||
96 | - var ( | ||
97 | - companys []dto.CompanyItem | ||
98 | - orgs []dto.OrgItem | ||
99 | - ) | ||
100 | - | ||
101 | - for _, v := range result.Users { | ||
102 | - companys = append(companys, dto.CompanyItem{ | ||
103 | - CompanyId: v.Company.CompanyId, | ||
104 | - CompanyName: v.Company.CompanyName, | ||
105 | - }) | ||
106 | - for _, vv := range v.UserOrg { | ||
107 | - orgs = append(orgs, dto.OrgItem{ | ||
108 | - OrganizationId: vv.OrgID, | ||
109 | - OrganizationName: vv.OrgName, | ||
110 | - CompanyId: v.Company.CompanyId, | ||
111 | - }) | ||
112 | - } | ||
113 | - } | ||
114 | - | ||
115 | - data := map[string]interface{}{ | ||
116 | - "companys": companys, | ||
117 | - "organizations": orgs, | ||
118 | - } | ||
119 | - return data, nil | ||
120 | -} | ||
121 | - | ||
122 | -//GetQrcode 获取扫码登录需要的二维码 | ||
123 | -func (srv AuthService) GetQrcode() (interface{}, error) { | ||
124 | - qrmsg := domain.QrcodeMessage{} | ||
125 | - imgBase64, err := qrmsg.GenerateImageBase64() | ||
126 | - if err != nil { | ||
127 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
128 | - } | ||
129 | - qrCache := cache.LoginQrcodeCache{} | ||
130 | - err = qrCache.Save(qrmsg) | ||
131 | - if err != nil { | ||
132 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
133 | - } | ||
134 | - data := map[string]interface{}{ | ||
135 | - "image": imgBase64, | ||
136 | - "token": qrmsg.Token, | ||
137 | - } | ||
138 | - return data, nil | ||
139 | -} | ||
140 | - | ||
141 | -//QrcodeLoginStatus 询问扫码登录状态 | ||
142 | -func (srv AuthService) QrcodeLoginStatus(queryParam query.QrcodeLoginStatusQuery) (interface{}, error) { | ||
143 | - qrmsg := domain.QrcodeMessage{} | ||
144 | - err := qrmsg.ParseToken(queryParam.Token) | ||
145 | - if err != nil { | ||
146 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
147 | - } | ||
148 | - qrCache := cache.LoginQrcodeCache{} | ||
149 | - qrmsgCache, err := qrCache.Get(qrmsg.Id) | ||
150 | - if err != nil { | ||
151 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
152 | - } | ||
153 | - loginToken := domain.LoginToken{ | ||
154 | - UserId: qrmsgCache.UserId, | ||
155 | - UserBaseId: qrmsgCache.UserBaseId, | ||
156 | - Account: qrmsgCache.Account, | ||
157 | - Platform: domain.LoginPlatformWeb, | ||
158 | - CompanyId: qrmsgCache.CompanyId, | ||
159 | - OrgId: qrmsgCache.OrgId, | ||
160 | - } | ||
161 | - accessToken, err := loginToken.GenerateAccessToken() | ||
162 | - if err != nil { | ||
163 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
164 | - } | ||
165 | - _ = accessToken | ||
166 | - //TODO 填充token数据 | ||
167 | - data := map[string]interface{}{ | ||
168 | - "isLogin": qrmsgCache.IsLogin, | ||
169 | - "accessToken": "", | ||
170 | - } | ||
171 | - return data, nil | ||
172 | -} |
1 | package mobile_client | 1 | package mobile_client |
2 | 2 | ||
3 | -import ( | ||
4 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/mobile/auth/command" | ||
5 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/mobile/auth/service" | ||
6 | -) | ||
7 | - | ||
8 | type AuthController struct { | 3 | type AuthController struct { |
9 | baseController | 4 | baseController |
10 | } | 5 | } |
11 | 6 | ||
12 | -func (controller *AuthController) Login() { | ||
13 | - authService := service.AuthService{} | ||
14 | - loginCmd := &command.LoginCommand{} | ||
15 | - err := controller.Unmarshal(loginCmd) | ||
16 | - if err != nil { | ||
17 | - controller.Response(nil, err) | ||
18 | - return | ||
19 | - } | ||
20 | - data, err := authService.AuthLogin(loginCmd) | ||
21 | - controller.Response(data, err) | ||
22 | -} | ||
23 | - | ||
24 | -func (controller *AuthController) GetAuthAccessToken() { | ||
25 | - authService := service.AuthService{} | ||
26 | - accessTokenCommand := &command.AccessTokenCommand{} | ||
27 | - err := controller.Unmarshal(accessTokenCommand) | ||
28 | - if err != nil { | ||
29 | - controller.Response(nil, err) | ||
30 | - return | ||
31 | - } | ||
32 | - data, err := authService.GetAuthAccessToken(accessTokenCommand) | ||
33 | - controller.Response(data, err) | ||
34 | -} | ||
35 | - | ||
36 | -func (controller *AuthController) RefreshAuthAccessToken() { | ||
37 | - authService := service.AuthService{} | ||
38 | - refreshTokenCmd := &command.RefreshTokenCommand{} | ||
39 | - err := controller.Unmarshal(refreshTokenCmd) | ||
40 | - if err != nil { | ||
41 | - controller.Response(nil, err) | ||
42 | - return | ||
43 | - } | ||
44 | - data, err := authService.RefreshAuthAccessToken(refreshTokenCmd) | ||
45 | - controller.Response(data, err) | ||
46 | -} | ||
47 | - | ||
48 | -func (controller *AuthController) GetUserInfo() { | ||
49 | - authService := service.AuthService{} | ||
50 | - userInfoCommand := &command.UserInfoCommand{} | ||
51 | - err := controller.Unmarshal(userInfoCommand) | ||
52 | - if err != nil { | ||
53 | - controller.Response(nil, err) | ||
54 | - return | ||
55 | - } | ||
56 | - userInfoCommand.Operator = controller.GetOperator() | ||
57 | - data, err := authService.GetUserInfo(userInfoCommand) | ||
58 | - controller.Response(data, err) | ||
59 | -} | ||
60 | - | ||
61 | -func (controller *AuthController) GetUserMenus() { | ||
62 | - authService := service.AuthService{} | ||
63 | - userMenusCommand := &command.UserMenusCommand{} | ||
64 | - err := controller.Unmarshal(userMenusCommand) | ||
65 | - if err != nil { | ||
66 | - controller.Response(nil, err) | ||
67 | - return | ||
68 | - } | ||
69 | - userMenusCommand.Operator = controller.GetOperator() | ||
70 | - data, err := authService.GetUserMenus(userMenusCommand) | ||
71 | - controller.Response(data, err) | ||
72 | -} | ||
73 | - | ||
74 | -func (controller *AuthController) GetUserOrg() { | ||
75 | - authService := service.AuthService{} | ||
76 | - userOrgCommand := &command.UserOrgCommand{} | ||
77 | - err := controller.Unmarshal(userOrgCommand) | ||
78 | - if err != nil { | ||
79 | - controller.Response(nil, err) | ||
80 | - return | ||
81 | - } | ||
82 | - userOrgCommand.Operator = controller.GetOperator() | ||
83 | - data, err := authService.GetUserOrg(userOrgCommand) | ||
84 | - controller.Response(data, err) | ||
85 | -} | ||
86 | - | ||
87 | -func (controller *AuthController) CompanySignUp() { | ||
88 | - authService := service.AuthService{} | ||
89 | - userOrgCommand := &command.CompanySignUpCommand{} | ||
90 | - err := controller.Unmarshal(userOrgCommand) | ||
91 | - if err != nil { | ||
92 | - controller.Response(nil, err) | ||
93 | - return | ||
94 | - } | ||
95 | - //userOrgCommand.Operator = controller.GetOperator() | ||
96 | - data, err := authService.CompanySignUp(userOrgCommand) | ||
97 | - controller.Response(data, err) | ||
98 | -} | ||
99 | - | ||
100 | -func (controller *AuthController) ResetPassword() { | ||
101 | - authService := service.AuthService{} | ||
102 | - userOrgCommand := &command.ResetPasswordCommand{} | ||
103 | - err := controller.Unmarshal(userOrgCommand) | ||
104 | - if err != nil { | ||
105 | - controller.Response(nil, err) | ||
106 | - return | ||
107 | - } | ||
108 | - //userOrgCommand.Operator = controller.GetOperator() | ||
109 | - data, err := authService.ResetPassword(userOrgCommand) | ||
110 | - controller.Response(data, err) | ||
111 | -} | ||
112 | - | ||
113 | -func (controller *AuthController) OrgSwitch() { | ||
114 | - authService := service.AuthService{} | ||
115 | - cmd := &command.SwitchOrgCommand{} | ||
116 | - err := controller.Unmarshal(cmd) | ||
117 | - if err != nil { | ||
118 | - controller.Response(nil, err) | ||
119 | - return | ||
120 | - } | ||
121 | - cmd.Operator = controller.GetOperator() | ||
122 | - data, err := authService.OrgSwitch(cmd) | ||
123 | - controller.Response(data, err) | ||
124 | -} | 7 | +//func (controller *AuthController) Login() { |
8 | +// authService := service.AuthService{} | ||
9 | +// loginCmd := &command.LoginCommand{} | ||
10 | +// err := controller.Unmarshal(loginCmd) | ||
11 | +// if err != nil { | ||
12 | +// controller.Response(nil, err) | ||
13 | +// return | ||
14 | +// } | ||
15 | +// data, err := authService.AuthLogin(loginCmd) | ||
16 | +// controller.Response(data, err) | ||
17 | +//} | ||
18 | +// | ||
19 | +//func (controller *AuthController) GetAuthAccessToken() { | ||
20 | +// authService := service.AuthService{} | ||
21 | +// accessTokenCommand := &command.AccessTokenCommand{} | ||
22 | +// err := controller.Unmarshal(accessTokenCommand) | ||
23 | +// if err != nil { | ||
24 | +// controller.Response(nil, err) | ||
25 | +// return | ||
26 | +// } | ||
27 | +// data, err := authService.GetAuthAccessToken(accessTokenCommand) | ||
28 | +// controller.Response(data, err) | ||
29 | +//} | ||
30 | +// | ||
31 | +//func (controller *AuthController) RefreshAuthAccessToken() { | ||
32 | +// authService := service.AuthService{} | ||
33 | +// refreshTokenCmd := &command.RefreshTokenCommand{} | ||
34 | +// err := controller.Unmarshal(refreshTokenCmd) | ||
35 | +// if err != nil { | ||
36 | +// controller.Response(nil, err) | ||
37 | +// return | ||
38 | +// } | ||
39 | +// data, err := authService.RefreshAuthAccessToken(refreshTokenCmd) | ||
40 | +// controller.Response(data, err) | ||
41 | +//} | ||
42 | +// | ||
43 | +//func (controller *AuthController) GetUserInfo() { | ||
44 | +// authService := service.AuthService{} | ||
45 | +// userInfoCommand := &command.UserInfoCommand{} | ||
46 | +// err := controller.Unmarshal(userInfoCommand) | ||
47 | +// if err != nil { | ||
48 | +// controller.Response(nil, err) | ||
49 | +// return | ||
50 | +// } | ||
51 | +// userInfoCommand.Operator = controller.GetOperator() | ||
52 | +// data, err := authService.GetUserInfo(userInfoCommand) | ||
53 | +// controller.Response(data, err) | ||
54 | +//} | ||
55 | +// | ||
56 | +//func (controller *AuthController) GetUserMenus() { | ||
57 | +// authService := service.AuthService{} | ||
58 | +// userMenusCommand := &command.UserMenusCommand{} | ||
59 | +// err := controller.Unmarshal(userMenusCommand) | ||
60 | +// if err != nil { | ||
61 | +// controller.Response(nil, err) | ||
62 | +// return | ||
63 | +// } | ||
64 | +// userMenusCommand.Operator = controller.GetOperator() | ||
65 | +// data, err := authService.GetUserMenus(userMenusCommand) | ||
66 | +// controller.Response(data, err) | ||
67 | +//} | ||
68 | +// | ||
69 | +//func (controller *AuthController) GetUserOrg() { | ||
70 | +// authService := service.AuthService{} | ||
71 | +// userOrgCommand := &command.UserOrgCommand{} | ||
72 | +// err := controller.Unmarshal(userOrgCommand) | ||
73 | +// if err != nil { | ||
74 | +// controller.Response(nil, err) | ||
75 | +// return | ||
76 | +// } | ||
77 | +// userOrgCommand.Operator = controller.GetOperator() | ||
78 | +// data, err := authService.GetUserOrg(userOrgCommand) | ||
79 | +// controller.Response(data, err) | ||
80 | +//} | ||
81 | +// | ||
82 | +//func (controller *AuthController) CompanySignUp() { | ||
83 | +// authService := service.AuthService{} | ||
84 | +// userOrgCommand := &command.CompanySignUpCommand{} | ||
85 | +// err := controller.Unmarshal(userOrgCommand) | ||
86 | +// if err != nil { | ||
87 | +// controller.Response(nil, err) | ||
88 | +// return | ||
89 | +// } | ||
90 | +// //userOrgCommand.Operator = controller.GetOperator() | ||
91 | +// data, err := authService.CompanySignUp(userOrgCommand) | ||
92 | +// controller.Response(data, err) | ||
93 | +//} | ||
94 | +// | ||
95 | +//func (controller *AuthController) ResetPassword() { | ||
96 | +// authService := service.AuthService{} | ||
97 | +// userOrgCommand := &command.ResetPasswordCommand{} | ||
98 | +// err := controller.Unmarshal(userOrgCommand) | ||
99 | +// if err != nil { | ||
100 | +// controller.Response(nil, err) | ||
101 | +// return | ||
102 | +// } | ||
103 | +// //userOrgCommand.Operator = controller.GetOperator() | ||
104 | +// data, err := authService.ResetPassword(userOrgCommand) | ||
105 | +// controller.Response(data, err) | ||
106 | +//} | ||
107 | +// | ||
108 | +//func (controller *AuthController) OrgSwitch() { | ||
109 | +// authService := service.AuthService{} | ||
110 | +// cmd := &command.SwitchOrgCommand{} | ||
111 | +// err := controller.Unmarshal(cmd) | ||
112 | +// if err != nil { | ||
113 | +// controller.Response(nil, err) | ||
114 | +// return | ||
115 | +// } | ||
116 | +// cmd.Operator = controller.GetOperator() | ||
117 | +// data, err := authService.OrgSwitch(cmd) | ||
118 | +// controller.Response(data, err) | ||
119 | +//} |
@@ -2,7 +2,6 @@ package routers | @@ -2,7 +2,6 @@ package routers | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "github.com/beego/beego/v2/server/web" | 4 | "github.com/beego/beego/v2/server/web" |
5 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers/mobile_client" | ||
6 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers/web_client" | 5 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers/web_client" |
7 | ) | 6 | ) |
8 | 7 | ||
@@ -22,6 +21,4 @@ func init() { | @@ -22,6 +21,4 @@ func init() { | ||
22 | web.Router("/v1/web/users/selector/org", &web_client.UsersController{}, "Post:SelectorCompanyOrg") | 21 | web.Router("/v1/web/users/selector/org", &web_client.UsersController{}, "Post:SelectorCompanyOrg") |
23 | web.Router("/v1/web/users/selector/role", &web_client.UsersController{}, "Post:SelectorCompanyRole") | 22 | web.Router("/v1/web/users/selector/role", &web_client.UsersController{}, "Post:SelectorCompanyRole") |
24 | web.Router("/v1/web/users/selector/org/all", &web_client.UsersController{}, "Post:SelectorCompanyOrgAll") | 23 | web.Router("/v1/web/users/selector/org/all", &web_client.UsersController{}, "Post:SelectorCompanyOrgAll") |
25 | - | ||
26 | - web.Router("/v1/web/auth/users-info", &mobile_client.AuthController{}, "Post:GetUserInfo") | ||
27 | } | 24 | } |
-
请 注册 或 登录 后发表评论