正在显示
11 个修改的文件
包含
199 行增加
和
35 行删除
| 1 | +package command | ||
| 2 | + | ||
| 3 | +import "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" | ||
| 4 | + | ||
| 5 | +type LoginBySecretKeyCommand struct { | ||
| 6 | + Secret string `json:"secret"` | ||
| 7 | +} | ||
| 8 | + | ||
| 9 | +func (login LoginBySecretKeyCommand) ValidateCommand() error { | ||
| 10 | + if len(login.Secret) == 0 { | ||
| 11 | + return lib.ThrowError(lib.ARG_ERROR, "登录参数错误") | ||
| 12 | + } | ||
| 13 | + return nil | ||
| 14 | +} |
| @@ -257,13 +257,13 @@ func (adminUserSrv AdminUserService) UpdateAdminIsUsable(uid int64, isUsable boo | @@ -257,13 +257,13 @@ func (adminUserSrv AdminUserService) UpdateAdminIsUsable(uid int64, isUsable boo | ||
| 257 | adminuserDao = v | 257 | adminuserDao = v |
| 258 | } | 258 | } |
| 259 | if ok, err := adminuserDao.AdminUserIsDefault(uid); err != nil { | 259 | if ok, err := adminuserDao.AdminUserIsDefault(uid); err != nil { |
| 260 | - return lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()) | 260 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) |
| 261 | } else if ok { | 261 | } else if ok { |
| 262 | return lib.ThrowError(lib.BUSINESS_ERROR, "请勿禁用超级管理员") | 262 | return lib.ThrowError(lib.BUSINESS_ERROR, "请勿禁用超级管理员") |
| 263 | } | 263 | } |
| 264 | err = adminuserDao.UpdateIsUsable(uid, isUsable) | 264 | err = adminuserDao.UpdateIsUsable(uid, isUsable) |
| 265 | if err != nil { | 265 | if err != nil { |
| 266 | - return lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()) | 266 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) |
| 267 | } | 267 | } |
| 268 | transactionContext.CommitTransaction() | 268 | transactionContext.CommitTransaction() |
| 269 | return nil | 269 | return nil |
| @@ -362,7 +362,6 @@ func (service SyncEmployeeService) ChangeSuperAdmin(cmd command.ChanceSuperAdmin | @@ -362,7 +362,6 @@ func (service SyncEmployeeService) ChangeSuperAdmin(cmd command.ChanceSuperAdmin | ||
| 362 | if err != nil { | 362 | if err != nil { |
| 363 | return lib.ThrowError(lib.BUSINESS_ERROR, err.Error()) | 363 | return lib.ThrowError(lib.BUSINESS_ERROR, err.Error()) |
| 364 | } | 364 | } |
| 365 | - //提取到domain??? | ||
| 366 | err = newSuperUser.Update(map[string]interface{}{ | 365 | err = newSuperUser.Update(map[string]interface{}{ |
| 367 | "AdminType": domain.UserIsAdmin, | 366 | "AdminType": domain.UserIsAdmin, |
| 368 | }) | 367 | }) |
| 1 | +package command | ||
| 2 | + | ||
| 3 | +import "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" | ||
| 4 | + | ||
| 5 | +type LoginBySecretKeyCommand struct { | ||
| 6 | + Secret string `json:"secret"` | ||
| 7 | +} | ||
| 8 | + | ||
| 9 | +func (login LoginBySecretKeyCommand) ValidateCommand() error { | ||
| 10 | + if len(login.Secret) == 0 { | ||
| 11 | + return lib.ThrowError(lib.ARG_ERROR, "登录参数错误") | ||
| 12 | + } | ||
| 13 | + return nil | ||
| 14 | +} |
pkg/application/users/service/service.go
0 → 100644
| 1 | +package service | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + | ||
| 6 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/factory" | ||
| 7 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/users/command" | ||
| 8 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" | ||
| 9 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/serviceGateway" | ||
| 10 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" | ||
| 11 | +) | ||
| 12 | + | ||
| 13 | +type UsersService struct { | ||
| 14 | +} | ||
| 15 | + | ||
| 16 | +func NewUsersService(option map[string]interface{}) *UsersService { | ||
| 17 | + newUsersService := new(UsersService) | ||
| 18 | + return newUsersService | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +func (service UsersService) UserLoginBySecretKey(cmd command.LoginBySecretKeyCommand) (interface{}, error) { | ||
| 22 | + var err error | ||
| 23 | + if err = cmd.ValidateCommand(); err != nil { | ||
| 24 | + return nil, err | ||
| 25 | + } | ||
| 26 | + //向统一用户中心确认密钥信息并获取用户数据 | ||
| 27 | + ucenterService := serviceGateway.NewMmmUserCenterServiceGateway() | ||
| 28 | + loginResp, err := ucenterService.RequestUCenterLoginBySecret(cmd.Secret) | ||
| 29 | + if err != nil { | ||
| 30 | + e := fmt.Sprintf("通过密钥(secret=%s)从统一用户中心获取数据失败:%s", cmd.Secret, err.Error()) | ||
| 31 | + return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 32 | + } | ||
| 33 | + var ( | ||
| 34 | + transactionContext, _ = factory.CreateTransactionContext(nil) | ||
| 35 | + ) | ||
| 36 | + if err = transactionContext.StartTransaction(); err != nil { | ||
| 37 | + return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()) | ||
| 38 | + } | ||
| 39 | + defer func() { | ||
| 40 | + transactionContext.RollbackTransaction() | ||
| 41 | + }() | ||
| 42 | + var ( | ||
| 43 | + companyRespository domain.CompanyRepository | ||
| 44 | + userRespository domain.UsersRepository | ||
| 45 | + companyData domain.Company | ||
| 46 | + usersData domain.Users | ||
| 47 | + ) | ||
| 48 | + if companyRespository, err = factory.CreateCompanyRepository(map[string]interface{}{ | ||
| 49 | + "transactionContext": transactionContext, | ||
| 50 | + }); err != nil { | ||
| 51 | + return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 52 | + } | ||
| 53 | + if userRespository, err = factory.CreateUsersRepository(map[string]interface{}{ | ||
| 54 | + "transactionContext": transactionContext, | ||
| 55 | + }); err != nil { | ||
| 56 | + return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 57 | + } | ||
| 58 | + //检索本系统的公司数据判断公司权限 | ||
| 59 | + companyData, err = companyRespository.FindOne(map[string]interface{}{ | ||
| 60 | + "Id": loginResp.Data.Muid, | ||
| 61 | + }) | ||
| 62 | + if err != nil { | ||
| 63 | + e := fmt.Sprintf("获取公司(id=%d)数据失败:%s", loginResp.Data.Muid, err.Error()) | ||
| 64 | + return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 65 | + } | ||
| 66 | + if !companyData.EnableIsOk() { | ||
| 67 | + return nil, lib.ThrowError(lib.BUSINESS_ERROR, "该公司没有操作权限") | ||
| 68 | + } | ||
| 69 | + //检索本系统的用户数据 | ||
| 70 | + usersData, err = userRespository.FindOne(map[string]interface{}{ | ||
| 71 | + "OpenId": loginResp.Data.Id, | ||
| 72 | + "CompanyId": companyData.Id, | ||
| 73 | + }) | ||
| 74 | + if err != nil { | ||
| 75 | + e := fmt.Sprintf("获取用户(OpenId=%d;CompanyId=%d)数据失败:%s", | ||
| 76 | + loginResp.Data.Id, companyData.Id, err.Error()) | ||
| 77 | + return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 78 | + } | ||
| 79 | + //确认用户权限 | ||
| 80 | + if !usersData.IsUsable() { | ||
| 81 | + return nil, lib.ThrowError(lib.BUSINESS_ERROR, "用户被禁用") | ||
| 82 | + } | ||
| 83 | + err = transactionContext.CommitTransaction() | ||
| 84 | + //生成token | ||
| 85 | + | ||
| 86 | + return nil, nil | ||
| 87 | +} | ||
| 88 | + | ||
| 89 | +//GetAdminpPofile 登录后获取用户的权限配置数据 | ||
| 90 | +func (service UsersService) GetAdminpPofile() (interface{}, error) { | ||
| 91 | + return nil, nil | ||
| 92 | +} | ||
| 93 | + | ||
| 94 | +//ValidateAdminpPermission 校验用户的操作权限 | ||
| 95 | +func (service UsersService) ValidateAdminpPermission() (interface{}, error) { | ||
| 96 | + return nil, nil | ||
| 97 | +} |
| @@ -125,9 +125,15 @@ func (reponsitory UsersRepository) FindOne(queryOptions map[string]interface{}) | @@ -125,9 +125,15 @@ func (reponsitory UsersRepository) FindOne(queryOptions map[string]interface{}) | ||
| 125 | if v, ok := queryOptions["Id"]; ok { | 125 | if v, ok := queryOptions["Id"]; ok { |
| 126 | query = query.Where("id=?", v) | 126 | query = query.Where("id=?", v) |
| 127 | } | 127 | } |
| 128 | - if v, ok := queryOptions["phone"]; ok { | 128 | + if v, ok := queryOptions["Phone"]; ok { |
| 129 | query = query.Where("phone=?", v) | 129 | query = query.Where("phone=?", v) |
| 130 | } | 130 | } |
| 131 | + if v, ok := queryOptions["CompanyId"]; ok { | ||
| 132 | + query = query.Where("company_id=?", v) | ||
| 133 | + } | ||
| 134 | + if v, ok := queryOptions["OpenId"]; ok { | ||
| 135 | + query = query.Where("open_id=?", v) | ||
| 136 | + } | ||
| 131 | err = query.First() | 137 | err = query.First() |
| 132 | if err != nil { | 138 | if err != nil { |
| 133 | return domain.Users{}, err | 139 | return domain.Users{}, err |
| 1 | -package service_gateway | 1 | +package serviceGateway |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "bytes" | 4 | "bytes" |
| @@ -80,7 +80,7 @@ type ResponseLogin struct { | @@ -80,7 +80,7 @@ type ResponseLogin struct { | ||
| 80 | UCenterCommonMsg | 80 | UCenterCommonMsg |
| 81 | Data struct { | 81 | Data struct { |
| 82 | Id int64 `json:"id"` //统一用户中心的id,对应本系统中users表的open_id | 82 | Id int64 `json:"id"` //统一用户中心的id,对应本系统中users表的open_id |
| 83 | - Phone string `json:"phone"` | 83 | + Phone string `json:"phone"` //手机号 ,账号 |
| 84 | NickName string `json:"nickname"` //昵称 | 84 | NickName string `json:"nickname"` //昵称 |
| 85 | Avatar string `json:"avatar"` //头像 | 85 | Avatar string `json:"avatar"` //头像 |
| 86 | Imtoken string `json:"imtoken"` //网易云imtoken | 86 | Imtoken string `json:"imtoken"` //网易云imtoken |
| @@ -6,8 +6,6 @@ import ( | @@ -6,8 +6,6 @@ import ( | ||
| 6 | "fmt" | 6 | "fmt" |
| 7 | "time" | 7 | "time" |
| 8 | 8 | ||
| 9 | - "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" | ||
| 10 | - | ||
| 11 | "github.com/GeeTeam/gt3-golang-sdk/geetest" | 9 | "github.com/GeeTeam/gt3-golang-sdk/geetest" |
| 12 | "github.com/astaxie/beego/logs" | 10 | "github.com/astaxie/beego/logs" |
| 13 | adminPermissionquery "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/adminPermission/query" | 11 | adminPermissionquery "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/adminPermission/query" |
| @@ -15,6 +13,7 @@ import ( | @@ -15,6 +13,7 @@ import ( | ||
| 15 | adminuserCmd "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/adminUser/command" | 13 | adminuserCmd "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/adminUser/command" |
| 16 | adminuserquery "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/adminUser/query" | 14 | adminuserquery "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/adminUser/query" |
| 17 | adminuserservice "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/adminUser/service" | 15 | adminuserservice "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/adminUser/service" |
| 16 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" | ||
| 18 | ) | 17 | ) |
| 19 | 18 | ||
| 20 | type AdminLoginController struct { | 19 | type AdminLoginController struct { |
| @@ -40,6 +39,52 @@ func (c *AdminLoginController) Prepare() { | @@ -40,6 +39,52 @@ func (c *AdminLoginController) Prepare() { | ||
| 40 | } | 39 | } |
| 41 | 40 | ||
| 42 | //Login 用户登录 | 41 | //Login 用户登录 |
| 42 | +// func (c *AdminLoginController) Login() { | ||
| 43 | +// type Paramter struct { | ||
| 44 | +// Username string `json:"username"` | ||
| 45 | +// Password string `json:"password"` | ||
| 46 | +// } | ||
| 47 | +// var ( | ||
| 48 | +// param Paramter | ||
| 49 | +// err error | ||
| 50 | +// ) | ||
| 51 | +// if err = c.BindJsonData(¶m); err != nil { | ||
| 52 | +// c.ResponseError(fmt.Errorf("json解析失败:%s", err)) | ||
| 53 | +// return | ||
| 54 | +// } | ||
| 55 | +// newAdminuserquery := adminuserquery.GetAdminUserQuery{AdminAccount: param.Username} | ||
| 56 | +// newAdminUserService := adminuserservice.NewAdminUserService(nil) | ||
| 57 | +// adminuser, err := newAdminUserService.GetAdminUser(&newAdminuserquery) | ||
| 58 | +// if err != nil { | ||
| 59 | +// logs.Error("获取用户数据失败:%s", err) | ||
| 60 | +// c.ResponseError(errors.New("用户不存在")) | ||
| 61 | +// return | ||
| 62 | +// } | ||
| 63 | +// if adminuser.Password != param.Password { | ||
| 64 | +// c.ResponseError(errors.New("账号或密码错误")) | ||
| 65 | +// return | ||
| 66 | +// } | ||
| 67 | +// if !adminuser.IsUsable { | ||
| 68 | +// c.ResponseError(errors.New("用户被禁用")) | ||
| 69 | +// } | ||
| 70 | +// //TODO | ||
| 71 | +// newJwt := lib.NewMyToken(adminuser.Id, 0) | ||
| 72 | +// newToken, err := newJwt.CreateJWTToken() | ||
| 73 | +// if err != nil { | ||
| 74 | +// logs.Error("生成jwt数据失败:%s", err) | ||
| 75 | +// c.ResponseError(errors.New("服务异常")) | ||
| 76 | +// return | ||
| 77 | +// } | ||
| 78 | +// rspdata := map[string]interface{}{ | ||
| 79 | +// "access": map[string]interface{}{ | ||
| 80 | +// "accessToken": newToken, | ||
| 81 | +// "expiresIn": lib.JWtExpiresSecond, | ||
| 82 | +// }, | ||
| 83 | +// } | ||
| 84 | +// c.ResponseData(rspdata) | ||
| 85 | +// return | ||
| 86 | +// } | ||
| 87 | + | ||
| 43 | func (c *AdminLoginController) Login() { | 88 | func (c *AdminLoginController) Login() { |
| 44 | type Paramter struct { | 89 | type Paramter struct { |
| 45 | Username string `json:"username"` | 90 | Username string `json:"username"` |
| @@ -55,21 +100,9 @@ func (c *AdminLoginController) Login() { | @@ -55,21 +100,9 @@ func (c *AdminLoginController) Login() { | ||
| 55 | } | 100 | } |
| 56 | newAdminuserquery := adminuserquery.GetAdminUserQuery{AdminAccount: param.Username} | 101 | newAdminuserquery := adminuserquery.GetAdminUserQuery{AdminAccount: param.Username} |
| 57 | newAdminUserService := adminuserservice.NewAdminUserService(nil) | 102 | newAdminUserService := adminuserservice.NewAdminUserService(nil) |
| 58 | - adminuser, err := newAdminUserService.GetAdminUser(&newAdminuserquery) | ||
| 59 | - if err != nil { | ||
| 60 | - logs.Error("获取用户数据失败:%s", err) | ||
| 61 | - c.ResponseError(errors.New("用户不存在")) | ||
| 62 | - return | ||
| 63 | - } | ||
| 64 | - if adminuser.Password != param.Password { | ||
| 65 | - c.ResponseError(errors.New("账号或密码错误")) | ||
| 66 | - return | ||
| 67 | - } | ||
| 68 | - if !adminuser.IsUsable { | ||
| 69 | - c.ResponseError(errors.New("用户被禁用")) | ||
| 70 | - } | ||
| 71 | - //TODO | ||
| 72 | - newJwt := lib.NewMyToken(adminuser.Id, 0) | 103 | + _ = newAdminuserquery |
| 104 | + _ = newAdminUserService | ||
| 105 | + newJwt := lib.NewMyToken(0, 0) | ||
| 73 | newToken, err := newJwt.CreateJWTToken() | 106 | newToken, err := newJwt.CreateJWTToken() |
| 74 | if err != nil { | 107 | if err != nil { |
| 75 | logs.Error("生成jwt数据失败:%s", err) | 108 | logs.Error("生成jwt数据失败:%s", err) |
| @@ -144,6 +144,7 @@ func (controller *BaseController) ValidJWTToken() bool { | @@ -144,6 +144,7 @@ func (controller *BaseController) ValidJWTToken() bool { | ||
| 144 | return false | 144 | return false |
| 145 | } | 145 | } |
| 146 | controller.setUserId(tokenData.UID) | 146 | controller.setUserId(tokenData.UID) |
| 147 | + controller.setUserCompanyId(tokenData.CompanyId) | ||
| 147 | return true | 148 | return true |
| 148 | } | 149 | } |
| 149 | 150 | ||
| @@ -196,3 +197,14 @@ func (controller *BaseController) setUserId(id int64) { | @@ -196,3 +197,14 @@ func (controller *BaseController) setUserId(id int64) { | ||
| 196 | logs.Info("token:admin_user_id = ", id) | 197 | logs.Info("token:admin_user_id = ", id) |
| 197 | controller.Ctx.Input.SetData("token:admin_user_id", id) | 198 | controller.Ctx.Input.SetData("token:admin_user_id", id) |
| 198 | } | 199 | } |
| 200 | + | ||
| 201 | +func (controller *BaseController) setUserCompanyId(id int64) { | ||
| 202 | + logs.Info("token:company_id = ", id) | ||
| 203 | + controller.Ctx.Input.SetData("token:company_id", id) | ||
| 204 | +} | ||
| 205 | + | ||
| 206 | +func (controller *BaseController) GetUserCompany() int64 { | ||
| 207 | + idV := controller.Ctx.Input.GetData("token:company_id") | ||
| 208 | + uid, _ := strconv.ParseInt(fmt.Sprint(idV), 10, 64) | ||
| 209 | + return uid | ||
| 210 | +} |
| @@ -11,7 +11,7 @@ func init() { | @@ -11,7 +11,7 @@ func init() { | ||
| 11 | beego.NSRouter("/login", &controllers.AdminLoginController{}, "POST:Login"), | 11 | beego.NSRouter("/login", &controllers.AdminLoginController{}, "POST:Login"), |
| 12 | beego.NSRouter("/captcha-init", &controllers.AdminLoginController{}, "POST:CaptchaInit"), | 12 | beego.NSRouter("/captcha-init", &controllers.AdminLoginController{}, "POST:CaptchaInit"), |
| 13 | beego.NSRouter("/profile", &controllers.AdminLoginController{}, "POST:AdminpPofile"), | 13 | beego.NSRouter("/profile", &controllers.AdminLoginController{}, "POST:AdminpPofile"), |
| 14 | - beego.NSRouter("/pwd-update", &controllers.AdminLoginController{}, "POST:PwdUpdate"), | 14 | + // beego.NSRouter("/pwd-update", &controllers.AdminLoginController{}, "POST:PwdUpdate"), |
| 15 | ), | 15 | ), |
| 16 | beego.NSNamespace("/admin", | 16 | beego.NSNamespace("/admin", |
| 17 | beego.NSRouter("/update", &controllers.AdminUserController{}, "POST:SaveAdminUser"), | 17 | beego.NSRouter("/update", &controllers.AdminUserController{}, "POST:SaveAdminUser"), |
-
请 注册 或 登录 后发表评论