|
@@ -5,7 +5,6 @@ import (
|
|
|
"eta/eta_api/models"
|
|
|
"eta/eta_api/models/system"
|
|
|
"eta/eta_api/services"
|
|
|
- "eta/eta_api/services/eta_trial"
|
|
|
"eta/eta_api/utils"
|
|
|
"fmt"
|
|
|
"time"
|
|
@@ -16,187 +15,6 @@ type SysUserController struct {
|
|
|
BaseCommonController
|
|
|
}
|
|
|
|
|
|
-// @Title 系统用户登录接口
|
|
|
-// @Description 系统用户登录
|
|
|
-// @Param request body models.LoginReq true "type json string"
|
|
|
-// @Success 200 {object} models.LoginResp
|
|
|
-// @router /login [post]
|
|
|
-func (this *SysUserController) Login() {
|
|
|
- br := new(models.BaseResponse).Init()
|
|
|
- defer func() {
|
|
|
- this.Data["json"] = br
|
|
|
- this.ServeJSON()
|
|
|
- }()
|
|
|
- var req system.LoginReq
|
|
|
- err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
- if err != nil {
|
|
|
- br.Msg = "参数解析异常!"
|
|
|
- br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- if req.Username == "" {
|
|
|
- br.Msg = "请输入账号"
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- if req.Password == "" {
|
|
|
- br.Msg = "请输入密码"
|
|
|
- return
|
|
|
- }
|
|
|
- sysUser, err := system.CheckSysUser(req.Username, req.Password)
|
|
|
- if err != nil {
|
|
|
- if utils.IsErrNoRow(err) {
|
|
|
- br.Msg = "登录失败,账号或密码错误"
|
|
|
- br.ErrMsg = "登录失败,账号或密码错误,Err:" + err.Error()
|
|
|
- br.IsSendEmail = false
|
|
|
- return
|
|
|
- }
|
|
|
- br.IsSendEmail = false
|
|
|
- br.Msg = "登录失败,账号或密码错误"
|
|
|
- br.ErrMsg = "登录失败,Err:" + err.Error()
|
|
|
- return
|
|
|
- }
|
|
|
- if sysUser == nil {
|
|
|
- br.IsSendEmail = false
|
|
|
- br.Msg = "登录失败,账号或密码错误"
|
|
|
- br.ErrMsg = "登录失败,sysUser is nil "
|
|
|
- return
|
|
|
- }
|
|
|
- if sysUser.Enabled == 0 {
|
|
|
- br.Msg = "您的账号已被禁用,如需登录,请联系管理员"
|
|
|
- br.ErrMsg = fmt.Sprintf("您的账号已被禁用,登录账号:%s,账户名称:%s,如需登录,请联系管理员", sysUser.AdminName, sysUser.RealName)
|
|
|
- return
|
|
|
- }
|
|
|
- // 是否记住密码
|
|
|
- var isRemember int
|
|
|
- if req.IsRemember {
|
|
|
- isRemember = 1
|
|
|
- }
|
|
|
- account := utils.MD5(req.Username)
|
|
|
- token := utils.GenToken(account)
|
|
|
- sysSession := new(system.SysSession)
|
|
|
- sysSession.UserName = sysUser.AdminName
|
|
|
- sysSession.SysUserId = sysUser.AdminId
|
|
|
- sysSession.ExpiredTime = time.Now().AddDate(0, 0, 90)
|
|
|
- sysSession.IsRemember = isRemember
|
|
|
- sysSession.CreatedTime = time.Now()
|
|
|
- sysSession.LastUpdatedTime = time.Now()
|
|
|
- sysSession.AccessToken = token
|
|
|
- err = system.AddSysSession(sysSession)
|
|
|
- fmt.Println("id:", sysSession.Id)
|
|
|
- if err != nil {
|
|
|
- br.ErrMsg = "新增session信息失败,Err:" + err.Error()
|
|
|
- br.Msg = "登录失败"
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- // 修改最后登录时间
|
|
|
- {
|
|
|
- sysUser.LastLoginTime = time.Now().Format(utils.FormatDateTime)
|
|
|
- sysUser.LastUpdatedTime = time.Now().Format(utils.FormatDateTime)
|
|
|
- sysUser.Update([]string{"LastLoginTime", "LastUpdatedTime"})
|
|
|
- }
|
|
|
-
|
|
|
- resp := new(system.LoginResp)
|
|
|
- resp.Authorization = token
|
|
|
- resp.Authorization = "authorization=" + token
|
|
|
- resp.RealName = sysUser.RealName
|
|
|
- resp.AdminName = sysUser.AdminName
|
|
|
- resp.RoleName = sysUser.RoleName
|
|
|
-
|
|
|
- resp.SysRoleTypeCode = sysUser.RoleTypeCode //系统角色编码
|
|
|
- resp.RoleTypeCode = sysUser.RoleTypeCode
|
|
|
-
|
|
|
- if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
|
|
|
- resp.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
|
|
|
- }
|
|
|
-
|
|
|
- if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM {
|
|
|
- resp.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
|
|
|
- }
|
|
|
-
|
|
|
- if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_DEPARTMENT {
|
|
|
- resp.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
|
|
|
- }
|
|
|
-
|
|
|
- if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
|
|
|
- resp.RoleTypeCode = utils.ROLE_TYPE_CODE_RAI_SELLER
|
|
|
- }
|
|
|
-
|
|
|
- if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_DEPARTMENT {
|
|
|
- resp.RoleTypeCode = utils.ROLE_TYPE_CODE_RAI_SELLER
|
|
|
- }
|
|
|
-
|
|
|
- if sysUser.RoleName == utils.ROLE_NAME_FICC_DIRECTOR {
|
|
|
- resp.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
|
|
|
- }
|
|
|
-
|
|
|
- resp.AdminId = sysUser.AdminId
|
|
|
- var productName string
|
|
|
- productId := services.GetProductId(sysUser.RoleTypeCode)
|
|
|
- //if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
|
|
|
- // productName = utils.COMPANY_PRODUCT_FICC_NAME
|
|
|
- //} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
|
|
|
- // productName = utils.COMPANY_PRODUCT_RAI_NAME
|
|
|
- //} else {
|
|
|
- // productName = "admin"
|
|
|
- //}
|
|
|
- if productId == 1 {
|
|
|
- productName = utils.COMPANY_PRODUCT_FICC_NAME
|
|
|
- } else if productId == 2 {
|
|
|
- productName = utils.COMPANY_PRODUCT_RAI_NAME
|
|
|
- } else {
|
|
|
- productName = "admin"
|
|
|
- }
|
|
|
- resp.ProductName = productName
|
|
|
- resp.Authority = sysUser.Authority
|
|
|
- br.Ret = 200
|
|
|
- br.Success = true
|
|
|
- br.Msg = "登录成功"
|
|
|
- br.Data = resp
|
|
|
- //新增登录记录
|
|
|
- {
|
|
|
- record := new(system.SysUserLoginRecord)
|
|
|
- record.Uid = sysUser.AdminId
|
|
|
- record.UserName = req.Username
|
|
|
- record.Ip = this.Ctx.Input.IP()
|
|
|
- record.Stage = "login"
|
|
|
- record.CreateTime = time.Now()
|
|
|
- go system.AddSysUserLoginRecord(record)
|
|
|
- }
|
|
|
-
|
|
|
- // 设置redis缓存
|
|
|
- {
|
|
|
-
|
|
|
- // 获取不可信的登录态,并将该登录态重置掉,不允许多次登录
|
|
|
- noTrustLoginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN_NO_TRUST, sysUser.AdminId)
|
|
|
- noTrustLoginId, _ := utils.Rc.RedisString(noTrustLoginKey)
|
|
|
- fmt.Println("noTrustLoginId:", noTrustLoginId)
|
|
|
- if noTrustLoginId != `` { // 如果存在不可信设备,那么将其下架
|
|
|
- oldNoTrustLoginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, noTrustLoginId)
|
|
|
- utils.Rc.Put(oldNoTrustLoginKey, "0", 30*time.Minute)
|
|
|
- }
|
|
|
-
|
|
|
- if !req.IsRemember { // 如果当前是不可信设备,那么将其加入到不可信名单
|
|
|
- loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, sysSession.Id)
|
|
|
- utils.Rc.Put(loginKey, "1", 30*time.Minute)
|
|
|
-
|
|
|
- noTrustLoginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN_NO_TRUST, sysUser.AdminId)
|
|
|
- utils.Rc.Put(noTrustLoginKey, sysSession.Id, 30*time.Minute)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // ETA试用平台-请求中间服务更新用户最后登录时间和次数
|
|
|
- if utils.BusinessCode == utils.BusinessCodeSandbox {
|
|
|
- go func() {
|
|
|
- var r eta_trial.EtaTrialUserReq
|
|
|
- r.Mobile = sysUser.Mobile
|
|
|
- _, _ = eta_trial.UpdateEtaTrialUserLogin(r)
|
|
|
- }()
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
type SysUserAuthController struct {
|
|
|
BaseAuthController
|
|
|
}
|