绩效考核
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

607 lines
20 KiB

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)
}
}
}