package systemuser import ( "strconv" "time" "gin_server_admin/commonus" "gin_server_admin/global" "gin_server_admin/model/common/response" "gin_server_admin/model/systemuser" "gin_server_admin/model/testpage" "gin_server_admin/model/wechat" "github.com/gin-gonic/gin" ) // 系统相关 func (s *SystemUserApi) Index(c *gin.Context) { outPut := commonus.MapOut() response.Result(0, outPut, "获取成功", c) } // 管理员列表 func (s *SystemUserApi) AdminList(c *gin.Context) { var requestData adminRequest c.ShouldBindJSON(&requestData) if requestData.PageSize == 0 { requestData.PageSize = 20 } if requestData.Page <= 0 { requestData.Page = 1 } offSetPage := commonus.CalculatePages(requestData.Page, requestData.PageSize) gormDb := global.GVA_DB_Master.Model(&systemuser.SystemUser{}).Select("system_user.*,system_user_attribute.*").Joins("left join system_user_attribute on system_user.u_key = system_user_attribute.ua_id") if requestData.GroupId != 0 { gormDb = gormDb.Where("`u_group` = ?", requestData.GroupId) } if requestData.BranchFactoryId != 0 { gormDb = gormDb.Where("`u_attribute` = ?", requestData.BranchFactoryId) } if requestData.RoleId != 0 { gormDb = gormDb.Where("`u_role` = ?", requestData.RoleId) } if requestData.State != 0 { gormDb = gormDb.Where("`u_set` = ?", requestData.State) } else { gormDb = gormDb.Where("`u_set` IN ?", []int{1, 2}) } if requestData.UserName != "" { gormDb = gormDb.Where("(`u_name` LIKE ? OR `ua_name` LIKE ?)", "%"+requestData.UserName+"%", "%"+requestData.UserName+"%") } var total int64 totalErr := gormDb.Count(&total).Error if totalErr != nil { total = 0 } var systemAdminList []systemuser.SystemAdminDetails systemAdminListerr := gormDb.Limit(requestData.PageSize).Offset(offSetPage).Order("u_id desc").Find(&systemAdminList).Error if systemAdminListerr != nil { response.Result(101, systemAdminListerr, "数据获取失败!", c) return } var sysAdminList []adminOutInfo for _, val := range systemAdminList { var sysAdminInfo adminOutInfo sysAdminInfo.Id = val.Id sysAdminInfo.Name = val.Name sysAdminInfo.PassWord = val.PassWord sysAdminInfo.Role = val.Role sysAdminInfo.State = val.State sysAdminInfo.Attribute = val.Attribute sysAdminInfo.Time = val.Time sysAdminInfo.EiteTime = val.EiteTime sysAdminInfo.Key = val.Key sysAdminInfo.Group = val.Group sysAdminInfo.Wand = val.Wand sysAdminInfo.IdAttr = val.IdAttr sysAdminInfo.NameAttr = val.NameAttr sysAdminInfo.Tel = val.Tel sysAdminInfo.TimeAttr = val.TimeAttr where := commonus.MapOut() where["id"] = val.Group orgCont, _ := commonus.GetNewOrgCont(where, "id", "name") sysAdminInfo.GroupName = orgCont.Name whereDepart := commonus.MapOut() whereDepart["id"] = val.Attribute orgContDepart, _ := commonus.GetNewOrgCont(whereDepart, "id", "name") sysAdminInfo.BranchFactoryName = orgContDepart.Name // isTrueGroup, groupCont := assessment.GetGroupCont(val.Group) // if isTrueGroup == true { // sysAdminInfo.GroupName = groupCont.Name // } // isTrueBranFact, branFactCont := assessment.GetBranchFactory(val.Attribute) // if isTrueBranFact == true { // sysAdminInfo.BranchFactoryName = branFactCont.Name // } isTrueRole, adminRoleCont := GetAdminRoleInfo(val.Role) if isTrueRole == true { sysAdminInfo.RoleName = adminRoleCont.Title sysAdminInfo.Jurisdiction = adminRoleCont.Jurisdiction sysAdminInfo.MenuOper = adminRoleCont.MenuOper sysAdminInfo.Wand = adminRoleCont.Wand } sysAdminInfo.KeyStr = strconv.FormatInt(val.Key, 10) sysAdminList = append(sysAdminList, sysAdminInfo) } countSum := len(sysAdminList) printData := commonus.OutPutList(total, int64(countSum), requestData.Page, requestData.PageSize, sysAdminList) response.Result(0, printData, "查询成功!", c) } // 获取管理员详细内容登录 func GetSysAdminLoginInfo(userName, userPwd string) (isTrue bool, sysAdminInfo adminOutInfo) { isTrue = false var md5JiaMi commonus.Md5Encryption md5JiaMi.Md5EncryptionInit(userPwd) md5Token := md5JiaMi.Md5EncryptionAlgorithm() var userInfo systemuser.SystemAdminDetails userErr := global.GVA_DB_Master.Model(&systemuser.SystemUser{}).Select("system_user.*,system_user_attribute.*").Joins("left join system_user_attribute on system_user.u_key = system_user_attribute.ua_id").Where("`u_name` = ? AND `u_password` = ?", userName, md5Token).First(&userInfo).Error if userErr != nil { return } sysAdminInfo.Id = userInfo.Id sysAdminInfo.Name = userInfo.Name sysAdminInfo.PassWord = userInfo.PassWord sysAdminInfo.Role = userInfo.Role sysAdminInfo.State = userInfo.State sysAdminInfo.Attribute = userInfo.Attribute sysAdminInfo.Time = userInfo.Time sysAdminInfo.EiteTime = userInfo.EiteTime sysAdminInfo.Key = userInfo.Key sysAdminInfo.Group = userInfo.Group sysAdminInfo.Wand = userInfo.Wand sysAdminInfo.IdAttr = userInfo.IdAttr sysAdminInfo.NameAttr = userInfo.NameAttr sysAdminInfo.Tel = userInfo.Tel sysAdminInfo.TimeAttr = userInfo.TimeAttr where := commonus.MapOut() where["id"] = userInfo.Group orgCont, _ := commonus.GetNewOrgCont(where, "id", "name") sysAdminInfo.GroupName = orgCont.Name whereDepart := commonus.MapOut() whereDepart["id"] = userInfo.Attribute orgContDepart, _ := commonus.GetNewOrgCont(whereDepart, "id", "name") sysAdminInfo.BranchFactoryName = orgContDepart.Name // isTrueGroup, groupCont := assessment.GetGroupCont(userInfo.Group) // if isTrueGroup == true { // sysAdminInfo.GroupName = groupCont.Name // } // isTrueBranFact, branFactCont := assessment.GetBranchFactory(userInfo.Attribute) // if isTrueBranFact == true { // sysAdminInfo.BranchFactoryName = branFactCont.Name // } isTrueRole, adminRoleCont := GetAdminRoleInfo(userInfo.Role) if isTrueRole == true { sysAdminInfo.RoleName = adminRoleCont.Title sysAdminInfo.Jurisdiction = adminRoleCont.Jurisdiction sysAdminInfo.MenuOper = adminRoleCont.MenuOper sysAdminInfo.Wand = adminRoleCont.Wand } roleIdStr := strconv.FormatInt(userInfo.Role, 10) roleName, pointId, operation, _ := commonus.GetNewAccredit("kpi", roleIdStr, 0, 0) if roleName != "" { sysAdminInfo.RoleName = roleName } if pointId != "" { sysAdminInfo.MenuOper = pointId } if operation != "" { sysAdminInfo.Jurisdiction = operation } sysAdminInfo.KeyStr = strconv.FormatInt(userInfo.Key, 10) isTrue = true return } // 获取管理员分组列表 func (s *SystemUserApi) SystemAdminGroupList(c *gin.Context) { isTrue, SysAdminCont := commonus.AdminClientIdentity() if isTrue != true { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var sysRoleList []systemuser.SystemRole gormDb := global.GVA_DB_Master if SysAdminCont.Group != "1" { gormDb = gormDb.Where("`r_group` = ?", SysAdminCont.Group) } roleListErr := gormDb.Where("`r_set` = ? AND `r_gode` = ?", 1, 1).Find(&sysRoleList).Error if roleListErr != nil { response.Result(101, roleListErr, "数据获取失败!", c) return } var systemAdminGroup []SystemAdminGroup var systemAdminGroupSun []SystemAdminGroup for _, r_val := range sysRoleList { var systemAdminGroupSunCont SystemAdminGroup systemAdminGroupSunCont.Id = r_val.Id systemAdminGroupSunCont.OutId = strconv.FormatInt(r_val.Id, 10) systemAdminGroupSunCont.Title = r_val.Title systemAdminGroupSun = append(systemAdminGroupSun, systemAdminGroupSunCont) } var systemAdminGroupOen SystemAdminGroup systemAdminGroupOen.Id = 1 systemAdminGroupOen.OutId = "1" systemAdminGroupOen.Title = "主系统角色" systemAdminGroupOen.Child = systemAdminGroupSun systemAdminGroup = append(systemAdminGroup, systemAdminGroupOen) //获取系统结构列表 var groupStruct []wechat.GroupForm //集团表结构 groupErr := global.GVA_DB_WatchDate.Where("`g_parentid` = 1 AND `g_sate` = 1").Find(&groupStruct).Error if groupErr == nil { //获取集团对应的分厂 // var groupBf []SystemAdminGroup for _, g_val := range groupStruct { var groupBfcon SystemAdminGroup groupBfcon.Id = g_val.Id groupBfcon.OutId = strconv.FormatInt(g_val.Id, 10) groupBfcon.Title = g_val.Name childGroupErr, childGroup := groupBfRole(g_val.Id) if childGroupErr == true { groupBfcon.Child = childGroup } systemAdminGroup = append(systemAdminGroup, groupBfcon) } } // systemAdminGroup = append(systemAdminGroup, ) response.Result(0, systemAdminGroup, "查询成功!", c) } // 根据具体获取分厂结构及管理角色 func groupBfRole(groupId int64) (isTrue bool, bfRoleAry []SystemAdminGroup) { isTrue = false var branchFactory []testpage.BranchFactory err := global.GVA_DB_Master.Where("bf_group = ?", groupId).Find(&branchFactory).Error if err != nil { return } for _, val := range branchFactory { var bfRoleCont SystemAdminGroup bfRoleCont.Id = val.Id bfRoleCont.OutId = strconv.FormatInt(val.Id, 10) bfRoleCont.Title = val.Name childGroupErr, childGroup := GetBfRole(val.Id) if childGroupErr == true { bfRoleCont.Child = childGroup } bfRoleAry = append(bfRoleAry, bfRoleCont) } isTrue = true return } // 获取分厂角色 func GetBfRole(bfId int64) (isTrue bool, bfRoleAry []SystemAdminGroup) { isTrue = false var branchFactory []systemuser.SystemRole err := global.GVA_DB_Master.Where("r_attribute = ?", bfId).Find(&branchFactory).Error if err != nil { return } for _, val := range branchFactory { var bfRoleCont SystemAdminGroup bfRoleCont.Id = val.Id bfRoleCont.OutId = strconv.FormatInt(val.Id, 10) bfRoleCont.Title = val.Title bfRoleAry = append(bfRoleAry, bfRoleCont) } isTrue = true return } // 添加系统管理员 func (s *SystemUserApi) AddSystemAdmin(c *gin.Context) { var requestData AddSysAdmin err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if requestData.UserName == "" { response.Result(102, requestData, "请输入用户账号!", c) return } if requestData.Password == "" { response.Result(103, requestData, "请输入登录密码!", c) return } if requestData.ConfirmPassword == "" { response.Result(104, requestData, "请输入确认密码!", c) return } if requestData.Password != requestData.ConfirmPassword { response.Result(105, requestData, "您两次输入的密码不一致!请重新提交!", c) return } if requestData.Role == 0 { response.Result(106, requestData, "请选择账号所属角色!", c) return } if requestData.Name == "" { response.Result(107, requestData, "请输入使用者姓名!", c) return } //查询该用户名是否已经使用 adminCont := commonus.MapOut() juadeAdminErr := global.GVA_DB_Master.Model(&systemuser.SystemUser{}).Select("u_name").Where("`u_name` = ?", requestData.UserName).First(&adminCont).Error if juadeAdminErr == nil { response.Result(110, requestData, "该用户名已经存在!请不要重复添加!", c) return } //密码加密 var md5JiaMi commonus.Md5Encryption md5JiaMi.Md5EncryptionInit(requestData.ConfirmPassword) md5Password := md5JiaMi.Md5EncryptionAlgorithm() //编号 numKey := commonus.GetFileNumberEs() //获取角色详情 roleIsTurn, roleCont := GetAdminRoleInfo(requestData.Role) var sysAdminCont systemuser.SystemUser var sysAdminAttrCont systemuser.SystemUserAttribute sysAdminCont.Name = requestData.UserName sysAdminCont.PassWord = md5Password sysAdminCont.Role = requestData.Role sysAdminCont.State = 1 sysAdminCont.Attribute = requestData.RoleGroup sysAdminCont.Time = time.Now().Unix() sysAdminCont.EiteTime = time.Now().Unix() sysAdminCont.Key = numKey if roleIsTurn == true { sysAdminCont.Group = roleCont.Group sysAdminCont.Wand = roleCont.Wand } sysAdminAttrCont.IdAttr = numKey sysAdminAttrCont.NameAttr = requestData.Name sysAdminAttrCont.Tel = requestData.Tel sysAdminAttrCont.TimeAttr = time.Now().Unix() affairDb := global.GVA_DB_Master.Begin() addSysAdminContErr := affairDb.Create(&sysAdminCont).Error addSysAdminAttrContErr := affairDb.Create(&sysAdminAttrCont).Error if addSysAdminContErr == nil && addSysAdminAttrContErr == nil { affairDbErr := affairDb.Commit().Error if affairDbErr == nil { response.Result(0, affairDbErr, "数据写入成功!", c) } else { response.Result(108, affairDbErr, "数据写入失败!", c) } } else { affairDbErr := affairDb.Rollback().Error response.Result(109, affairDbErr, "数据写入失败!", c) } } // 获取管理员信息 func (s *SystemUserApi) GetSystemAdminCont(c *gin.Context) { var requestData commonus.SetIds err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if requestData.Id == 0 && requestData.OutId == "" { response.Result(102, err, "参数错误!请重新提交!", c) return } if requestData.OutId != "" { idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) if inIntErr == nil { requestData.Id = idInt } } var userInfo systemuser.SystemAdminDetails userErr := global.GVA_DB_Master.Model(&systemuser.SystemUser{}).Select("system_user.*,system_user_attribute.*").Joins("left join system_user_attribute on system_user.u_key = system_user_attribute.ua_id").Where("`u_id` = ?", requestData.Id).First(&userInfo).Error if userErr != nil { response.Result(103, requestData, "该用户不存在!", c) return } var sysAdminInfo adminOutInfo sysAdminInfo.Id = userInfo.Id sysAdminInfo.Name = userInfo.Name sysAdminInfo.PassWord = userInfo.PassWord sysAdminInfo.Role = userInfo.Role sysAdminInfo.State = userInfo.State sysAdminInfo.Attribute = userInfo.Attribute sysAdminInfo.Time = userInfo.Time sysAdminInfo.EiteTime = userInfo.EiteTime sysAdminInfo.Key = userInfo.Key sysAdminInfo.Group = userInfo.Group sysAdminInfo.Wand = userInfo.Wand sysAdminInfo.IdAttr = userInfo.IdAttr sysAdminInfo.NameAttr = userInfo.NameAttr sysAdminInfo.Tel = userInfo.Tel sysAdminInfo.TimeAttr = userInfo.TimeAttr where := commonus.MapOut() where["id"] = userInfo.Group orgCont, _ := commonus.GetNewOrgCont(where, "id", "name") sysAdminInfo.GroupName = orgCont.Name whereDepart := commonus.MapOut() whereDepart["id"] = userInfo.Attribute orgContDepart, _ := commonus.GetNewOrgCont(whereDepart, "id", "name") sysAdminInfo.BranchFactoryName = orgContDepart.Name // isTrueGroup, groupCont := assessment.GetGroupCont(userInfo.Group) // if isTrueGroup == true { // sysAdminInfo.GroupName = groupCont.Name // } // isTrueBranFact, branFactCont := assessment.GetBranchFactory(userInfo.Attribute) // if isTrueBranFact == true { // sysAdminInfo.BranchFactoryName = branFactCont.Name // } isTrueRole, adminRoleCont := GetAdminRoleInfo(userInfo.Role) if isTrueRole == true { sysAdminInfo.RoleName = adminRoleCont.Title sysAdminInfo.Jurisdiction = adminRoleCont.Jurisdiction sysAdminInfo.MenuOper = adminRoleCont.MenuOper sysAdminInfo.Wand = adminRoleCont.Wand } sysAdminInfo.KeyStr = strconv.FormatInt(userInfo.Key, 10) response.Result(0, sysAdminInfo, "该用户不存在!", c) } // 修改管理员 func (s *SystemUserApi) EiteSystemAdminCont(c *gin.Context) { var requestData EiteSysAdmin err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if requestData.Id == 0 && requestData.OutId == "" { response.Result(102, err, "参数错误!请重新提交!", c) return } if requestData.OutId != "" { idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) if inIntErr == nil { requestData.Id = idInt } } var userInfo systemuser.SystemUser userErr := global.GVA_DB_Master.Where("`u_id` = ?", requestData.Id).First(&userInfo).Error if userErr != nil { response.Result(103, requestData, "该用户不存在!", c) return } saveData := commonus.MapOut() saveAttrData := commonus.MapOut() //获取角色详情 roleIsTurn, roleCont := GetAdminRoleInfo(requestData.Role) if requestData.Role != 0 { saveData["u_role"] = requestData.Role if roleIsTurn == true { saveData["u_group"] = roleCont.Group saveData["u_wand"] = roleCont.Wand } } if requestData.RoleGroup != 0 { saveData["u_attribute"] = requestData.RoleGroup if roleIsTurn == true { saveData["u_group"] = roleCont.Group saveData["u_wand"] = roleCont.Wand } } else { if userInfo.Attribute != 0 { saveData["u_attribute"] = requestData.RoleGroup if roleIsTurn == true { saveData["u_group"] = roleCont.Group saveData["u_wand"] = roleCont.Wand } } } if requestData.Password != "" && requestData.Password == requestData.ConfirmPassword { //密码加密 var md5JiaMi commonus.Md5Encryption md5JiaMi.Md5EncryptionInit(requestData.ConfirmPassword) md5Password := md5JiaMi.Md5EncryptionAlgorithm() saveData["u_password"] = md5Password } saveData["u_eite_time"] = time.Now().Unix() if requestData.Name != "" { saveAttrData["ua_name"] = requestData.Name } if requestData.Tel != "" { saveAttrData["ua_tel"] = requestData.Tel } saveAttrData["ua_time"] = time.Now().Unix() isTrue, isErr := eiteSystemAdminCont(userInfo.Key, saveData, saveAttrData) if isTrue == true { response.Result(0, isErr, "编辑成功!", c) } else { response.Result(103, isErr, "编辑失败!", c) } } // 编辑系统管理员数据处理 func eiteSystemAdminCont(saveId int64, saveData, saveDataAttr map[string]interface{}) (isTrue bool, affairDbErr error) { isTrue = false affairDb := global.GVA_DB_Master.Begin() infoErr := affairDb.Model(&systemuser.SystemUser{}).Where("`u_key` = ?", saveId).Updates(saveData).Error infoAttrErr := affairDb.Model(&systemuser.SystemUserAttribute{}).Where("`ua_id` = ?", saveId).Updates(saveDataAttr).Error if infoErr == nil && infoAttrErr == nil { affairDbErr = affairDb.Commit().Error if affairDbErr != nil { affairDbErr = affairDb.Rollback().Error return } } else { affairDbErr = affairDb.Rollback().Error return } isTrue = true return } // 删除系统管理员 func (s *SystemUserApi) DelSystemAdmin(c *gin.Context) { var requestData delSystemRoleType err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if requestData.Id == 0 && requestData.OutId == "" { response.Result(102, err, "参数错误!请重新提交!", c) return } if requestData.OutId != "" { idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) if inIntErr == nil { requestData.Id = idInt } } if requestData.State == 0 { requestData.State = 1 } var userInfo systemuser.SystemUser userErr := global.GVA_DB_Master.Where("`u_id` = ?", requestData.Id).First(&userInfo).Error if userErr != nil { response.Result(103, requestData, "该用户不存在!", c) return } saveData := commonus.MapOut() saveAttrData := commonus.MapOut() saveData["u_set"] = requestData.State saveData["u_eite_time"] = time.Now().Unix() saveAttrData["ua_time"] = time.Now().Unix() if requestData.IsDel != 1 { roleIsTrue, roleErr := eiteSystemAdminCont(userInfo.Key, saveData, saveAttrData) if roleIsTrue != true { response.Result(104, roleErr, "修改失败!", c) return } response.Result(0, requestData, "修改成功!", c) } else { if requestData.State == 3 { affairDb := global.GVA_DB_Master.Begin() infoErr := affairDb.Where("`u_key` = ?", userInfo.Key).Delete(&systemuser.SystemUser{}).Error infoAttrErr := affairDb.Where("`ua_id` = ?", userInfo.Key).Delete(&systemuser.SystemUserAttribute{}).Error if infoErr == nil && infoAttrErr == nil { affairDbErr := affairDb.Commit().Error if affairDbErr != nil { affairDbErr = affairDb.Rollback().Error response.Result(105, affairDbErr, "删除失败!", c) } else { response.Result(0, affairDbErr, "删除成功!", c) } } else { affairDbErr := affairDb.Rollback().Error ma := commonus.MapOut() ma["affairDbErr"] = affairDbErr ma["infoErr"] = infoErr ma["infoAttrErr"] = infoAttrErr response.Result(106, ma, "删除失败!", c) } } else { roleIsTrue, roleErr := eiteSystemAdminCont(userInfo.Key, saveData, saveAttrData) if roleIsTrue != true { response.Result(107, roleErr, "修改失败!", c) } response.Result(0, roleErr, "修改成功!", c) } } }