123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package controllers
-
- import (
- "SSO/enums"
- "SSO/models"
- "SSO/service"
- "SSO/utils"
- "time"
- )
-
- type MobileLoginController struct {
- BaseController
- }
-
- func (this *MobileLoginController) Prepare() {
- this.BaseController.Prepare()
- this.EnableXSRF = false
- }
-
- // /m/login/pwd [post]
- // @param mobile:string
- // @param password:string
- // @param app_type:int
- // @param ip:string
- func (this *MobileLoginController) LoginByPwd() {
- appType, _ := this.GetInt("app_type")
- if appType != 3 { // 暂时只支持血透系统
- appType = 3
- }
- mobile := this.GetString("mobile")
- password := this.GetString("password")
- if len(mobile) == 0 || len(password) == 0 {
- this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeAccountOrPasswordWrong)
- this.ServeJSON()
- return
- }
-
- if service.IsPasswordRight(mobile, password) {
- // 只取最近被创建的 admin_role
- adminUser, getAdminErr := service.GetValidAdminUserByMobileReturnErr(mobile)
- if getAdminErr != nil {
- utils.ErrorLog("获取管理员失败:%v", getAdminErr)
- this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
- this.ServeJSON()
- return
- } else if adminUser == nil {
- utils.ErrorLog("查找不到 mobile = %v 的用户", mobile)
- this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeAccountOrPasswordWrong)
- this.ServeJSON()
- return
- } else {
- appRole, getAppRoleErr := service.GetLastXTAdminRole(adminUser.Id, appType)
- if getAppRoleErr != nil {
- utils.ErrorLog("获取 app_role 失败:%v", getAppRoleErr)
- this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
- this.ServeJSON()
- return
- } else if appRole == nil {
- utils.ErrorLog("该管理员没有开通或被授权 app_type = %v 的应用", appType)
- this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
- this.ServeJSON()
- return
- }
- org, getOrgErr := service.GetOrgById(appRole.OrgId)
- if getOrgErr != nil {
- utils.ErrorLog("获取机构失败:%v", getOrgErr)
- this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
- this.ServeJSON()
- return
- } else if org == nil {
- utils.ErrorLog("该机构不存在或被删除")
- this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
- this.ServeJSON()
- return
- }
- app, getAppErr := service.GetAppById(appRole.AppId)
- if getAppErr != nil {
- utils.ErrorLog("获取应用失败:%v", getAppErr)
- this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
- this.ServeJSON()
- return
- } else if app == nil {
- utils.ErrorLog("该应用不存在或被删除")
- this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
- this.ServeJSON()
- return
- }
- subscibe, getSubscibeErr := service.GetOrgServeSubscibe(org.Id)
- if getSubscibeErr != nil {
- utils.ErrorLog("获取机构订阅信息失败:%v", getSubscibeErr)
- this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
- this.ServeJSON()
- return
- } else if subscibe == nil {
- now := time.Now()
- nextMonthDate := now.AddDate(0, 0, 30)
- subscibe = &models.ServeSubscibe{
- OrgId: int64(org.Id),
- PeriodStart: now.Unix(),
- PeriodEnd: nextMonthDate.Unix(),
- Status: 1,
- CreatedTime: now.Unix(),
- UpdatedTime: now.Unix(),
- State: 2,
- }
- createErr := service.CreateOrgServeSubscibe(subscibe)
- if createErr != nil {
- utils.ErrorLog("创建机构订阅信息失败:%v", createErr)
- this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
- this.ServeJSON()
- return
- }
- }
-
- // 插入一条登录记录
- ip := this.GetString("ip")
- loginLog := &models.AdminUserLoginLog{
- AdminUserId: adminUser.Id,
- OrgId: org.Id,
- AppId: app.Id,
- IP: ip,
- OperateType: 1,
- AppType: int8(appType),
- CreateTime: time.Now().Unix(),
- }
- if insertErr := service.InsertLoginLog(loginLog); insertErr != nil {
- utils.ErrorLog("为手机号为%v的用户插入一条登录记录失败:%v", mobile, insertErr)
- }
-
- this.Data["json"] = enums.MakeSuccessResponseJSON(map[string]interface{}{
- "admin": adminUser,
- "org": org,
- "app": app,
- "app_role": appRole,
- "subscibe": subscibe,
- })
- this.ServeJSON()
- }
-
- } else {
- this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeAccountOrPasswordWrong)
- this.ServeJSON()
- }
- }
|