package custom import ( "encoding/json" "fmt" "strconv" "github.com/flipped-aurora/gin-vue-admin/server/api/admin/systemuser" "github.com/flipped-aurora/gin-vue-admin/server/api/v1/staff" "github.com/flipped-aurora/gin-vue-admin/server/commonus" "github.com/flipped-aurora/gin-vue-admin/server/global" "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" roleModel "github.com/flipped-aurora/gin-vue-admin/server/model/systemuser" "github.com/flipped-aurora/gin-vue-admin/server/utils" "github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel" "github.com/gin-gonic/gin" ) //自定义登录 func (cu *CustomHandle) CustomLogin(c *gin.Context) { var l systemReq.Login _ = c.ShouldBindJSON(&l) // if err := utils.Verify(l, utils.LoginVerify); err != nil { // response.FailWithMessage(err.Error(), c) // return // } userAgent := c.Request.Header.Get("User-Agent") userAgent = "250" // store // if store.Verify(l.CaptchaId, l.Captcha, true) { userErr, user := staff.GetUserWork(l.Username, l.Password) if userErr != true { // // global.GVA_LOG.Error("登陆失败! 用户名不存在或者密码错误!", zap.Any("err", err)) response.Result(101, userErr, "登陆失败! 用户名不存在或者密码错误!!", c) return } else { if user.State == 2 { response.Result(102, userErr, "登陆失败! 该账号已经被禁用!", c) return } if user.State == 3 { response.Result(102, userErr, "登陆失败! 该账号不存在!", c) return } if user.HireSet != 1 { response.Result(102, userErr, "登陆失败! 该员工已经离职!", c) return } var md5JiaMi commonus.Md5Encryption md5JiaMi.Md5EncryptionInit(userAgent) md5Token := md5JiaMi.Md5EncryptionAlgorithm() sha1Str := user.KeyStr + user.Number + user.Password + md5Token sha1Token := commonus.Sha1Encryption(sha1Str) saveData := commonus.MapOut() saveData["key"] = user.KeyStr saveData["token"] = sha1Token saveData["userinfo"] = user redisClient := redishandel.RunRedis() redisClient.SetRedisTime(86400) // redisClient.SetRedisTime(60) writeRedisData := map[string]interface{}{ "userkey": user.KeyStr, "usernumber": user.Number, "userpwd": user.Password, "usertoken": sha1Token, } // global.GVA_INDEX_USERKEY = user.Key redisClient.HashMsetAdd("system:Identification_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+user.KeyStr, writeRedisData) userInfo := commonus.MapOut() userInfo["id"] = user.Id userInfo["number"] = user.Number userInfo["departmentid"] = user.DepartmentId userInfo["workshopid"] = user.WorkshopId userInfo["postid"] = user.PostId userInfo["key"] = user.Key userInfo["group"] = user.Group userInfo["tema"] = user.Tema userInfo["workwechatid"] = user.WorkWechatId userInfo["wechatid"] = user.WechatId userInfo["name"] = user.Name userInfo["nickname"] = user.NickName redisUserClient := redishandel.RunRedis() redisUserClient.SetRedisTime(0) redisUserClient.HashMsetAdd("system:userContent_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+user.KeyStr, userInfo) // // b.tokenNext(c, *user) response.Result(0, saveData, "登录成功!", c) } // } else { // response.FailWithMessage("验证码错误", c) // } } //自定义登录 func (cu *CustomHandle) SystemLogin(c *gin.Context) { var l systemReq.Login _ = c.ShouldBindJSON(&l) if err := utils.Verify(l, utils.LoginVerify); err != nil { response.FailWithMessage(err.Error(), c) return } userAgent := c.Request.Header.Get("User-Agent") // store // if store.Verify(l.CaptchaId, l.Captcha, true) { userErr, user := systemuser.GetSysAdminLoginInfo(l.Username, l.Password) if userErr != true { // // global.GVA_LOG.Error("登陆失败! 用户名不存在或者密码错误!", zap.Any("err", err)) response.Result(101, userErr, "登陆失败! 用户名不存在或者密码错误!!", c) return } else { if user.State == 2 { response.Result(102, userErr, "登陆失败! 该账号已经被禁用!", c) return } if user.State == 3 { response.Result(102, userErr, "登陆失败! 该账号不存在!", c) return } var md5JiaMi commonus.Md5Encryption md5JiaMi.Md5EncryptionInit(userAgent) md5Token := md5JiaMi.Md5EncryptionAlgorithm() sha1Str := user.KeyStr + user.Name + user.PassWord + md5Token sha1Token := commonus.Sha1Encryption(sha1Str) saveData := commonus.MapOut() saveData["key"] = user.KeyStr saveData["token"] = sha1Token saveData["userinfo"] = user redisClient := redishandel.RunRedis() redisClient.SetRedisTime(86400) writeRedisData := map[string]interface{}{ "userkey": user.KeyStr, "usernumber": user.Name, "userpwd": user.PassWord, "usertoken": sha1Token, "jurisdiction": user.Jurisdiction, "menuOper": user.MenuOper, "wand": user.Wand, } redisClient.HashMsetAdd("system:SystemIdentification_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+user.KeyStr, writeRedisData) adminRedisData := map[string]interface{}{ "userkey": user.KeyStr, "usernumber": user.Name, "userpwd": user.PassWord, "usertoken": sha1Token, "jurisdiction": user.Jurisdiction, "menuOper": user.MenuOper, "wand": user.Wand, "name": user.NameAttr, "groupname": user.GroupName, "group": user.Group, "attribute": user.Attribute, "branchfactoryname": user.BranchFactoryName, "role": user.Role, "roleName": user.RoleName, } redisAdminClient := redishandel.RunRedis() redisAdminClient.SetRedisTime(0) redisAdminClient.HashMsetAdd("system:SystemAdminInfo_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+user.KeyStr, adminRedisData) global.GVA_ADMIN_USERKEY = strconv.FormatInt(user.Key, 10) // // b.tokenNext(c, *user) var surisdictionStr []string var surisdictionInt []int64 jsonErr := json.Unmarshal([]byte(user.Jurisdiction), &surisdictionStr) if jsonErr == nil { for _, jurVal := range surisdictionStr { jurValInt, jurValErr := strconv.ParseInt(jurVal, 10, 64) if jurValErr == nil { surisdictionInt = append(surisdictionInt, jurValInt) } } } global.Gva_Authority_Authentication = surisdictionInt var menuOperStr []string var menuOperInts []int64 jsonErrSun := json.Unmarshal([]byte(user.MenuOper), &menuOperStr) if jsonErrSun == nil { for _, menuOperVal := range menuOperStr { menuOperInt, menuOperErr := strconv.ParseInt(menuOperVal, 10, 64) if menuOperErr == nil { menuOperInts = append(menuOperInts, menuOperInt) } } } global.Gva_Authority_Authentication_Subsidiary = menuOperInts saveData["Jurisdiction"] = global.Gva_Authority_Authentication saveData["MenuOper"] = global.Gva_Authority_Authentication_Subsidiary // saveData["jsonErr"] = jsonErr // saveData["jsonErrSun"] = jsonErrSun response.Result(0, saveData, "登录成功!", c) } // } else { // response.FailWithMessage("验证码错误", c) // } } //oauth2.0 func (cu *CustomHandle) OauthTwo(c *gin.Context) { var requestData getData err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "单点登录登录失败!", c) return } if requestData.Number == "" { response.Result(102, err, "单点登录登录失败!", c) return } redisClient := redishandel.RunRedis() tokenErr, token := redisClient.Get("system:Oauth2_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + requestData.Number) if tokenErr == true { saveData := commonus.MapOut() saveData["token"] = token response.Result(0, saveData, "登录成功!", c) } else { userAgent := c.Request.Header.Get("User-Agent") var md5JiaMi commonus.Md5Encryption md5JiaMi.Md5EncryptionInit(userAgent) md5Token := md5JiaMi.Md5EncryptionAlgorithm() var md5Number commonus.Md5Encryption md5Number.Md5EncryptionInit(requestData.Number) md5NumberToken := md5Number.Md5EncryptionAlgorithm() sha1Str := fmt.Sprintf("%v-%v-%v", md5Token, requestData.Number, md5NumberToken) sha1Token := commonus.Sha1Encryption(sha1Str) saveData := commonus.MapOut() saveData["token"] = sha1Token redisClient.SetRedisTime(10800) redisClient.Set("system:Oauth2_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+requestData.Number, sha1Token) response.Result(0, saveData, "Token获取成功!", c) } } //企业微信单点登录 func (cu *CustomHandle) SingleSignOn(c *gin.Context) { var requestData oneLogin err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "单点登录登录失败!", c) return } if requestData.Number == "" { response.Result(102, err, "单点登录登录失败!", c) return } if requestData.Token == "" { response.Result(102, err, "单点登录登录失败!", c) return } if requestData.OpenId == "" { response.Result(102, err, "单点登录登录失败!", c) return } redisClient := redishandel.RunRedis() tokenErr, token := redisClient.Get("system:Oauth2_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + requestData.Number) if tokenErr != true { response.Result(103, err, "单点登录登录失败!", c) return } if token != requestData.Token { response.Result(103, err, "单点登录登录失败!", c) return } isTrue, userInfo := commonus.GetUesrContForWechatID(requestData.OpenId) if isTrue != true { response.Result(103, err, "单点登录登录失败!", c) return } //获取操作人 userFileStr := "worker_man.*,worker_man_data.*" //操作人条件 userWherAry := commonus.MapOut() // userWherAry["wm_key"] = "WoBenShanLiang_3" //"WoBenShanLiang_3" userWherAry["wm_key"] = userInfo.Key userConting, userIsTrue := commonus.GetUserInfoPublic(userFileStr, userWherAry) if userIsTrue != true { response.Result(103, err, "单点登录登录失败!", c) return } userAgent := c.Request.Header.Get("User-Agent") var md5JiaMi commonus.Md5Encryption md5JiaMi.Md5EncryptionInit(userAgent) md5Token := md5JiaMi.Md5EncryptionAlgorithm() sha1Str := fmt.Sprintf("%v%v%v%v", userConting.Key, userConting.Number, userConting.Password, md5Token) sha1Token := commonus.Sha1Encryption(sha1Str) saveData := commonus.MapOut() saveData["key"] = userConting.Key saveData["token"] = sha1Token saveData["userinfo"] = userConting writeRedisData := map[string]interface{}{ "userkey": userInfo.Key, "usernumber": userInfo.Number, "userpwd": userConting.Password, "usertoken": sha1Token, } redisClient.SetRedisTime(86400) redisKey := fmt.Sprintf("system:Identification_%v_%v", global.GVA_CONFIG.RedisPrefix.Alias, userInfo.Key) redisClient.HashMsetAdd(redisKey, writeRedisData) userInfoMap := commonus.MapOut() userInfoMap["id"] = userConting.Id userInfoMap["number"] = userConting.Number userInfoMap["departmentid"] = userConting.DepartmentId userInfoMap["workshopid"] = userConting.WorkshopId userInfoMap["postid"] = userConting.PostId userInfoMap["key"] = userConting.Key userInfoMap["group"] = userConting.Group userInfoMap["tema"] = userConting.Tema userInfoMap["workwechatid"] = userConting.WorkWechatId userInfoMap["wechatid"] = userConting.WechatId userInfoMap["name"] = userConting.Name userInfoMap["nickname"] = userConting.NickName redisUserClient := redishandel.RunRedis() redisUserClient.SetRedisTime(0) redisKeyMap := fmt.Sprintf("system:userContent_%v_%v", global.GVA_CONFIG.RedisPrefix.Alias, userInfo.Key) redisUserClient.HashMsetAdd(redisKeyMap, userInfoMap) response.Result(0, saveData, "登录成功!", c) } //一端登录 func (cu *CustomHandle) ScanCodeLogin(c *gin.Context) { var l systemReq.Login _ = c.ShouldBindJSON(&l) // if err := utils.Verify(l, utils.LoginVerify); err != nil { // response.FailWithMessage(err.Error(), c) // return // } userAgent := c.Request.Header.Get("User-Agent") userAgent = "250" userAdminErr, userAdmin := systemuser.GetSysAdminLoginInfo(l.Username, l.Password) fmt.Printf("jieguo----------------->%v\n", userAdminErr) // userAdminErr, _ := systemuser.HrUserInfor(l.Username, l.Password) if userAdminErr == true { if userAdmin.State == 2 { response.Result(102, userAdminErr, "登陆失败! 该账号已经被禁用!", c) return } if userAdmin.State == 3 { response.Result(102, userAdminErr, "登陆失败! 该账号不存在!", c) return } var md5JiaMi commonus.Md5Encryption md5JiaMi.Md5EncryptionInit(userAgent) md5Token := md5JiaMi.Md5EncryptionAlgorithm() var md5JiaMiNumber commonus.Md5Encryption md5JiaMiNumber.Md5EncryptionInit(userAdmin.Name) userKeyCode := md5JiaMi.Md5EncryptionAlgorithm() sha1Str := userKeyCode + userAdmin.Name + userAdmin.PassWord + md5Token sha1Token := commonus.Sha1Encryption(sha1Str) saveData := commonus.MapOut() saveData["key"] = userKeyCode saveData["token"] = sha1Token saveData["userinfo"] = userAdmin // userKeyInt, _ := strconv.ParseInt(userKeyCode, 10, 64) global.GVA_ADMIN_USERKEY = userKeyCode global.GVA_SCANCODE_USERNUMBER = userAdmin.KeyStr roleCont := getRole(userAdmin.Role) writeRedisData := map[string]interface{}{ "userkey": userKeyCode, "key": userAdmin.KeyStr, "usernumber": userAdmin.Name, "userpwd": userAdmin.PassWord, "usertoken": sha1Token, "jurisdiction": roleCont.Jurisdiction, "menuOper": roleCont.MenuOper, "wand": 118, } var surisdictionStr []string var surisdictionInt []int64 jsonErr := json.Unmarshal([]byte(roleCont.Jurisdiction), &surisdictionStr) if jsonErr == nil { for _, jurVal := range surisdictionStr { jurValInt, jurValErr := strconv.ParseInt(jurVal, 10, 64) if jurValErr == nil { surisdictionInt = append(surisdictionInt, jurValInt) } } } global.Gva_Authority_Authentication = surisdictionInt var menuOperStr []string var menuOperInts []int64 jsonErrSun := json.Unmarshal([]byte(roleCont.MenuOper), &menuOperStr) if jsonErrSun == nil { for _, menuOperVal := range menuOperStr { menuOperInt, menuOperErr := strconv.ParseInt(menuOperVal, 10, 64) if menuOperErr == nil { menuOperInts = append(menuOperInts, menuOperInt) } } } global.Gva_Authority_Authentication_Subsidiary = menuOperInts redisFileKey := "ScanCode:Authentication:LoginApi_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + userKeyCode redisClient := redishandel.RunRedis() redisClient.SetRedisDb(5) redisClient.SetRedisTime(10800) redisClient.HashMsetAdd(redisFileKey, writeRedisData) response.Result(0, saveData, "登录成功!", c) } else { // userErr, user := staff.GetUserWork(l.Username, l.Password) userErr, user := staff.HrUserInfor(l.Username, l.Password) if userErr != true { response.Result(109, userErr, "登录失败!", c) return } if user.State == 2 { response.Result(102, userErr, "登陆失败! 该账号已经被禁用!", c) return } if user.State == 3 { response.Result(102, userErr, "登陆失败! 该账号不存在!", c) return } var md5JiaMi commonus.Md5Encryption md5JiaMi.Md5EncryptionInit(userAgent) md5Token := md5JiaMi.Md5EncryptionAlgorithm() var md5JiaMiNumber commonus.Md5Encryption md5JiaMiNumber.Md5EncryptionInit(user.Number) userKeyCode := md5JiaMi.Md5EncryptionAlgorithm() sha1Str := userKeyCode + user.Number + user.Password + md5Token sha1Token := commonus.Sha1Encryption(sha1Str) saveData := commonus.MapOut() saveData["key"] = userKeyCode saveData["token"] = sha1Token saveData["userinfo"] = user // userKeyInt, _ := strconv.ParseInt(userKeyCode, 10, 64) global.GVA_ADMIN_USERKEY = userKeyCode global.GVA_SCANCODE_USERNUMBER = user.Number writeRedisData := map[string]interface{}{ "userkey": userKeyCode, "key": user.Key, "usernumber": user.Number, "userpwd": user.Password, "usertoken": sha1Token, "jurisdiction": user.Jurisdiction, "menuOper": user.Menuoper, "wand": 118, } var surisdictionStr []string var surisdictionInt []int64 jsonErr := json.Unmarshal([]byte(user.Jurisdiction), &surisdictionStr) if jsonErr == nil { for _, jurVal := range surisdictionStr { jurValInt, jurValErr := strconv.ParseInt(jurVal, 10, 64) if jurValErr == nil { surisdictionInt = append(surisdictionInt, jurValInt) } } } global.Gva_Authority_Authentication = surisdictionInt var menuOperStr []string var menuOperInts []int64 jsonErrSun := json.Unmarshal([]byte(user.Menuoper), &menuOperStr) if jsonErrSun == nil { for _, menuOperVal := range menuOperStr { menuOperInt, menuOperErr := strconv.ParseInt(menuOperVal, 10, 64) if menuOperErr == nil { menuOperInts = append(menuOperInts, menuOperInt) } } } global.Gva_Authority_Authentication_Subsidiary = menuOperInts redisFileKey := "ScanCode:Authentication:LoginApi_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + userKeyCode redisClient := redishandel.RunRedis() redisClient.SetRedisDb(5) redisClient.SetRedisTime(10800) redisClient.HashMsetAdd(redisFileKey, writeRedisData) response.Result(0, saveData, "登录成功!", c) } } //获取角色信息 func getRole(roleId int64) (roleCont roleModel.SystemRole) { global.GVA_DB_HrDataBase.Where("`id` = ?", roleId).Find(&roleCont) return }