package jurisdictionpc
import (
"encoding/json"
"fmt"
"key_performance_indicators/models/modelshr"
"key_performance_indicators/models/modelssystempermission"
"key_performance_indicators/overall"
"key_performance_indicators/overall/publicmethod"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
)
//系统角色处理
func ( a * ApiMethod ) AddSystemRole ( c * gin . Context ) {
var receivedValue systemRole
err := c . ShouldBindJSON ( & receivedValue )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if receivedValue . Name == "" {
publicmethod . Result ( 101 , receivedValue , c )
return
}
if receivedValue . Sort == 0 {
receivedValue . Sort = 50
}
var systemRoleCont modelssystempermission . SystemRole
err = systemRoleCont . GetCont ( map [ string ] interface { } { "`name`" : receivedValue . Name } , "`id`" )
if err == nil {
publicmethod . Result ( 103 , systemRoleCont , c )
return
}
systemRoleCont . Name = receivedValue . Name
systemRoleCont . Sort = receivedValue . Sort
systemRoleCont . State = 1
systemRoleCont . Time = time . Now ( ) . Unix ( )
err = overall . CONSTANT_DB_System_Permission . Create ( & systemRoleCont ) . Error
if err != nil {
publicmethod . Result ( 104 , err , c )
return
}
publicmethod . Result ( 0 , err , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 11 - 0 9 0 8 : 30 : 04
@ 功能 : 系统角色编辑
@ 参数
# Id 项目ID
# Name 角色名称
# Sort 角色排序
@ 返回值
#
* /
func ( a * ApiMethod ) EditSystemRole ( c * gin . Context ) {
var receivedValue editSystemRoleCont
err := c . ShouldBindJSON ( & receivedValue )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if receivedValue . Id == "" {
publicmethod . Result ( 101 , receivedValue , c )
return
}
if receivedValue . Name == "" {
publicmethod . Result ( 101 , receivedValue , c )
return
}
if receivedValue . Sort == 0 {
receivedValue . Sort = 50
}
var systemRoleCont modelssystempermission . SystemRole
err = systemRoleCont . GetCont ( map [ string ] interface { } { "`id`" : receivedValue . Id } , "`name`" )
if err != nil {
publicmethod . Result ( 107 , err , c )
return
}
editCont := publicmethod . MapOut [ string ] ( )
if receivedValue . Sort != systemRoleCont . Sort {
editCont [ "`sort`" ] = receivedValue . Sort
}
if systemRoleCont . Name != receivedValue . Name {
err = systemRoleCont . GetCont ( map [ string ] interface { } { "`name`" : receivedValue . Name } , "`id`" )
if err == nil {
publicmethod . Result ( 103 , systemRoleCont , c )
return
}
editCont [ "`name`" ] = receivedValue . Name
}
if len ( editCont ) > 0 {
editCont [ "`time`" ] = time . Now ( ) . Unix ( )
editCont [ "`state`" ] = 1
err = systemRoleCont . EiteCont ( map [ string ] interface { } { "`id`" : receivedValue . Id } , editCont )
if err != nil {
publicmethod . Result ( 106 , err , c )
return
}
}
publicmethod . Result ( 0 , systemRoleCont , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 11 - 0 9 0 8 : 41 : 20
@ 功能 : 角色列表
@ 参数
#
@ 返回值
#
* /
func ( a * ApiMethod ) SystemRoleList ( c * gin . Context ) {
var receivedValue systemRoleContList
c . ShouldBindJSON ( & receivedValue )
var systemRoleInfoList [ ] modelssystempermission . SystemRole
gormDb := overall . CONSTANT_DB_System_Permission . Model ( & modelssystempermission . SystemRole { } ) . Where ( "`state` BETWEEN ? AND ?" , 1 , 2 )
if receivedValue . Name != "" {
gormDb = gormDb . Where ( "`name` LIKE ?" , "%" + receivedValue . Name + "%" )
}
err := gormDb . Order ( "`sort` ASC" ) . Order ( "`id` DESC" ) . Find ( & systemRoleInfoList ) . Error
if err != nil {
publicmethod . Result ( 107 , err , c )
return
}
var sendList [ ] sendSystemRoleList
for _ , v := range systemRoleInfoList {
var sendCont sendSystemRoleList
sendCont . Id = v . Id
sendCont . Name = v . Name //角色名称"`
sendCont . State = v . State //状态(1:启用;2:禁用;3:删除)"`
sendCont . Time = v . Time //创建时间"`
sendCont . Sort = v . Sort //排序"`
if v . State == 1 {
sendCont . IsTrue = true
} else {
sendCont . IsTrue = false
}
sendList = append ( sendList , sendCont )
}
publicmethod . Result ( 0 , sendList , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 11 - 0 9 0 8 : 52 : 56
@ 功能 : 编辑角色状态
@ 参数
#
@ 返回值
#
* /
func ( a * ApiMethod ) EditSystemRoleState ( c * gin . Context ) {
var receivedValue publicmethod . PublicState
err := c . ShouldBindJSON ( & receivedValue )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if receivedValue . Id == "" {
publicmethod . Result ( 101 , receivedValue , c )
return
}
if receivedValue . State == 0 {
receivedValue . State = 2
}
wheAry := publicmethod . MapOut [ string ] ( )
wheAry [ "`id`" ] = receivedValue . Id
var systemRoleCont modelssystempermission . SystemRole
err = systemRoleCont . GetCont ( wheAry , "`state`" )
if err != nil {
publicmethod . Result ( 107 , err , c )
return
}
if receivedValue . State != 3 {
editCont := publicmethod . MapOut [ string ] ( )
if receivedValue . State != systemRoleCont . State {
editCont [ "`state`" ] = receivedValue . State
}
if len ( editCont ) > 0 {
editCont [ "`time`" ] = time . Now ( ) . Unix ( )
err = systemRoleCont . EiteCont ( wheAry , editCont )
}
} else {
if receivedValue . IsTrue != 1 {
editCont := publicmethod . MapOut [ string ] ( )
if receivedValue . State != systemRoleCont . State {
editCont [ "`state`" ] = receivedValue . State
}
if len ( editCont ) > 0 {
editCont [ "`time`" ] = time . Now ( ) . Unix ( )
err = systemRoleCont . EiteCont ( wheAry , editCont )
}
} else {
err = systemRoleCont . DelCont ( wheAry )
}
}
if err != nil {
publicmethod . Result ( 106 , err , c )
return
}
publicmethod . Result ( 0 , err , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 11 - 16 0 8 : 02 : 47
@ 功能 : 角色相关人员
@ 参数
# id 角色ID
# name 姓名或工号
@ 返回值
#
* /
func ( a * ApiMethod ) RoleAboutPeopleList ( c * gin . Context ) {
var receivedValue SystemRoleAboutPeopleList
c . ShouldBindJSON ( & receivedValue )
if receivedValue . Page == 0 {
receivedValue . Page = 1
}
if receivedValue . PageSize == 0 {
receivedValue . PageSize = 20
}
if receivedValue . Id == "" {
publicmethod . Result ( 1 , nil , c , "未知角色" )
return
}
gormDb := overall . CONSTANT_DB_HR . Model ( & modelshr . PersonArchives { } ) . Select ( "`id`,`number`,`name`,`icon`,`company`,`maindeparment`,`admin_org`,`position`,`job_id`,`key`,`wechat`,`work_wechat`" ) . Where ( "`state` = 1 AND FIND_IN_SET(?,`role`)" , receivedValue . Id )
if receivedValue . Name != "" {
gormDb = gormDb . Where ( "`name` LIKE ? OR `number` LIKE ?" , "%" + receivedValue . Name + "%" , "%" + receivedValue . Name + "%" )
}
var total int64
totalErr := gormDb . Count ( & total ) . Error
if totalErr != nil {
total = 0
}
gormDb = publicmethod . PageTurningSettings ( gormDb , receivedValue . Page , receivedValue . PageSize )
var RoleManList [ ] modelshr . PersonArchives
err := gormDb . Find ( & RoleManList ) . Error
if err != nil {
publicmethod . Result ( 105 , err , c )
return
}
if len ( RoleManList ) < 1 {
publicmethod . Result ( 105 , RoleManList , c )
return
}
var sendData [ ] SendSystemRoleAboutPeopleList
for _ , v := range RoleManList {
var sendDataInfo SendSystemRoleAboutPeopleList
sendDataInfo . Id = strconv . FormatInt ( v . Id , 10 )
sendDataInfo . Number = v . Number
sendDataInfo . Name = v . Name
sendDataInfo . Company = strconv . FormatInt ( v . Company , 10 )
var comInfo modelshr . AdministrativeOrganization
comInfo . GetCont ( map [ string ] interface { } { "`id`" : v . Company } , "`name`" )
sendDataInfo . CompanyName = comInfo . Name
sendDataInfo . Department = strconv . FormatInt ( v . MainDeparment , 10 )
var deparInfo modelshr . AdministrativeOrganization
deparInfo . GetCont ( map [ string ] interface { } { "`id`" : v . MainDeparment } , "`name`" )
sendDataInfo . DepartmentName = deparInfo . Name
sendDataInfo . OrgId = strconv . FormatInt ( v . AdminOrg , 10 )
var orderInfo modelshr . AdministrativeOrganization
orderInfo . GetCont ( map [ string ] interface { } { "`id`" : v . AdminOrg } , "`name`" )
sendDataInfo . OrgName = orderInfo . Name
sendDataInfo . DutiesId = strconv . FormatInt ( v . Position , 10 )
var postCont modelshr . Position
postCont . GetCont ( map [ string ] interface { } { "`id`" : v . Position } , "`name`" )
sendDataInfo . DutiesName = postCont . Name
sendDataInfo . Wechat = v . Wechat
if v . WorkWechat != "" {
sendDataInfo . Wechat = v . WorkWechat
}
sendDataInfo . Key = strconv . FormatInt ( v . Key , 10 )
if v . MainDeparment != v . AdminOrg {
sendDataInfo . DepartMentTitle = fmt . Sprintf ( "%v/%v/%v" , comInfo . Name , deparInfo . Name , orderInfo . Name )
} else {
sendDataInfo . DepartMentTitle = fmt . Sprintf ( "%v/%v" , comInfo . Name , deparInfo . Name )
}
sendData = append ( sendData , sendDataInfo )
}
publicmethod . ResultList ( 0 , receivedValue . Page , receivedValue . PageSize , total , int64 ( len ( sendData ) ) , sendData , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 11 - 16 11 : 53 : 58
@ 功能 : 批量删除角色关联人员
@ 参数
#
@ 返回值
#
* /
func ( a * ApiMethod ) BatchDeletToRoleAboutMan ( c * gin . Context ) {
var receivedValue BatchDeletAllRoleMan
err := c . ShouldBindJSON ( & receivedValue )
if err != nil {
publicmethod . Result ( 100 , err , c )
return
}
if receivedValue . Id == "" {
publicmethod . Result ( 101 , receivedValue , c )
return
}
if len ( receivedValue . ManKey ) < 1 {
publicmethod . Result ( 101 , receivedValue , c )
return
}
var manList [ ] modelshr . PersonArchives
err = overall . CONSTANT_DB_HR . Model ( & modelshr . PersonArchives { } ) . Select ( "`id`,`role`" ) . Where ( "`key` IN ?" , receivedValue . ManKey ) . Find ( & manList ) . Error
if err != nil {
publicmethod . Result ( 107 , err , c )
return
}
if len ( manList ) < 1 {
publicmethod . Result ( 107 , manList , c )
return
}
for _ , v := range manList {
syncSeting . Add ( 1 )
go EditManRoleCont ( receivedValue . Id , v )
}
syncSeting . Wait ( )
publicmethod . Result ( 0 , nil , c )
}
// 编辑批量删除角色人员信息处理
func EditManRoleCont ( roleId string , manCont modelshr . PersonArchives ) {
defer syncSeting . Done ( )
roleList := strings . Split ( manCont . Role , "," )
if publicmethod . IsInTrue [ string ] ( roleId , roleList ) == true {
var editRoleList [ ] string
for i := 0 ; i < len ( roleList ) ; i ++ {
if roleList [ i ] != roleId {
editRoleList = append ( editRoleList , roleList [ i ] )
}
}
saveData := publicmethod . MapOut [ string ] ( )
if len ( editRoleList ) > 0 {
saveData [ "`role`" ] = strings . Join ( editRoleList , "," )
} else {
saveData [ "`role`" ] = ""
}
saveData [ "`eite_time`" ] = time . Now ( ) . Unix ( )
manCont . EiteCont ( map [ string ] interface { } { "`id`" : manCont . Id } , saveData )
}
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2022 - 11 - 19 0 8 : 30 : 26
@ 功能 : 添加角色使用人员
@ 参数
#
@ 返回值
#
* /
func ( a * ApiMethod ) AddRoleUser ( c * gin . Context ) {
var receivedValue ReceiveRoleAndPeople
c . ShouldBindJSON ( & receivedValue )
if receivedValue . RoleId == "" {
publicmethod . Result ( 1 , nil , c , "未知角色1" )
return
}
if len ( receivedValue . PeopleList ) < 1 {
publicmethod . Result ( 1 , nil , c , "请选择关联人员2" )
return
}
var roleCont modelssystempermission . SystemRole
err := roleCont . GetCont ( map [ string ] interface { } { "`id`" : receivedValue . RoleId } , "`id`" )
if err != nil {
publicmethod . Result ( 1 , nil , c , "角色不存在" )
return
}
var peopleId [ ] string
for _ , v := range receivedValue . PeopleList {
if v . IsMan == 2 && publicmethod . IsInTrue [ string ] ( v . Id , peopleId ) == false {
peopleId = append ( peopleId , v . Id )
}
}
if len ( peopleId ) < 1 {
publicmethod . Result ( 0 , receivedValue . PeopleList , c , "数据处理完成!3" )
return
}
var manList [ ] modelshr . PersonArchives
err = overall . CONSTANT_DB_HR . Model ( & modelshr . PersonArchives { } ) . Select ( "`key`,`role`" ) . Where ( "`key` IN ?" , peopleId ) . Find ( & manList ) . Error
if err != nil || len ( manList ) < 1 {
publicmethod . Result ( 107 , nil , c , "数据处理失败!4" )
return
}
for _ , m := range manList {
saveData := publicmethod . MapOut [ string ] ( )
if m . Role == "" {
saveData [ "`role`" ] = receivedValue . RoleId
} else {
oldRoleList := strings . Split ( m . Role , "," )
if publicmethod . IsInTrue [ string ] ( receivedValue . RoleId , oldRoleList ) == false {
oldRoleList = append ( oldRoleList , receivedValue . RoleId )
saveData [ "`role`" ] = strings . Join ( oldRoleList , "," )
}
}
if len ( saveData ) > 0 {
saveData [ "`eite_time`" ] = time . Now ( ) . Unix ( )
var saveCont modelshr . PersonArchives
saveCont . EiteCont ( map [ string ] interface { } { "`key`" : m . Key } , saveData )
}
}
publicmethod . Result ( 0 , nil , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 03 - 21 10 : 48 : 54
@ 功能 : 系统角色列表 ( 工作流专版 )
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) SystemRoleListFlow ( c * gin . Context ) {
var receivedValue FlowGetRoleList
c . ShouldBindJSON ( & receivedValue )
if receivedValue . Page == 0 {
receivedValue . Page = 1
}
if receivedValue . PageSize == 0 {
receivedValue . PageSize = 20
}
var systemRoleInfoList [ ] modelssystempermission . SystemRole
gormDb := overall . CONSTANT_DB_System_Permission . Model ( & modelssystempermission . SystemRole { } ) . Where ( "`state` = ?" , 1 )
if receivedValue . Name != "" {
gormDb = gormDb . Where ( "`name` LIKE ?" , "%" + receivedValue . Name + "%" )
}
var total int64
gormDbTotal := gormDb
totalErr := gormDbTotal . Count ( & total ) . Error
if totalErr != nil {
total = 0
}
gormDb = publicmethod . PageTurningSettings ( gormDb , receivedValue . Page , receivedValue . PageSize )
err := gormDb . Order ( "`sort` ASC" ) . Order ( "`id` DESC" ) . Find ( & systemRoleInfoList ) . Error
if err != nil {
publicmethod . Result ( 107 , err , c )
return
}
var sendContList [ ] OutPutRoleList
for _ , v := range systemRoleInfoList {
var sendCont OutPutRoleList
sendCont . Code = strconv . FormatInt ( v . Id , 10 ) //`json:"code"` //编号
sendCont . RoleId = strconv . FormatInt ( v . Id , 10 ) //`json:"roleId"` //角色ID
sendCont . Scope = strconv . Itoa ( v . Sort ) //`json:"scope"` //范围
sendCont . RoleName = v . Name //`json:"roleName"` //角色名称
sendCont . Description = v . Name //`json:"description"` //描述
sendCont . Status = strconv . Itoa ( v . State ) //`json:"status"` //状态
sendContList = append ( sendContList , sendCont )
}
publicmethod . ResultList ( 0 , receivedValue . Page , receivedValue . PageSize , total , int64 ( len ( sendContList ) ) , sendContList , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 03 - 28 14 : 05 : 00
@ 功能 : 获取统一岗位
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) GetPositionUnify ( c * gin . Context ) {
var uniflList [ ] modelshr . PositionUnify
err := overall . CONSTANT_DB_HR . Where ( "`state` = ?" , 1 ) . Find ( & uniflList ) . Error
if err != nil {
publicmethod . Result ( 105 , err , c )
return
}
var sendData [ ] OutPutUnify
for _ , v := range uniflList {
var sendCont OutPutUnify
sendCont . Id = v . Id
sendCont . Name = v . Name //职位名称"`
sendCont . Time = v . Time //创建时间"`
sendCont . State = v . State //状态(1:启用;2:禁用;3:删除)"`
sendCont . Content = v . Content //关联具体岗位ID"`
json . Unmarshal ( [ ] byte ( v . Content ) , & sendCont . PositionListId )
sendData = append ( sendData , sendCont )
}
publicmethod . Result ( 0 , sendData , c )
}
/ *
*
@ 作者 : 秦东
@ 时间 : 2023 - 03 - 28 14 : 07 : 58
@ 功能 :
@ 参数
#
@ 返回值
#
@ 方法原型
#
* /
func ( a * ApiMethod ) SearchPositionUnify ( c * gin . Context ) {
var receivedValue publicmethod . PublicName
c . ShouldBindJSON ( & receivedValue )
var uniflList [ ] modelshr . PositionUnify
gormDb := overall . CONSTANT_DB_HR . Where ( "`state` = ?" , 1 )
if receivedValue . Name != "" {
gormDb = gormDb . Where ( "`name` LIKE ?" , "%" + receivedValue . Name + "%" )
}
err := gormDb . Find ( & uniflList ) . Error
if err != nil {
publicmethod . Result ( 105 , err , c )
return
}
var sendData [ ] OutPutUnify
for _ , v := range uniflList {
var sendCont OutPutUnify
sendCont . Id = v . Id
sendCont . Name = v . Name //职位名称"`
sendCont . Time = v . Time //创建时间"`
sendCont . State = v . State //状态(1:启用;2:禁用;3:删除)"`
sendCont . Content = v . Content //关联具体岗位ID"`
json . Unmarshal ( [ ] byte ( v . Content ) , & sendCont . PositionListId )
sendData = append ( sendData , sendCont )
}
publicmethod . Result ( 0 , sendData , c )
}