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.

913 lines
29 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package BaseOrganizationService
import (
"context"
"dsBaseRpc/Const"
"dsBaseRpc/Const/ErrorConst"
"dsBaseRpc/RpcService/BaseClass/BaseClassDao"
"dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationDao"
"dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationProto"
"dsBaseRpc/RpcService/BaseOrganizationManager/BaseOrganizationManagerDao"
"dsBaseRpc/RpcService/BaseRolePerson/BaseRolePersonDao"
"dsBaseRpc/RpcService/BaseTeacher/BaseTeacherDao"
"dsBaseRpc/RpcService/BaseTeacher/BaseTeacherProto"
GovAreaDao2 "dsBaseRpc/RpcService/GovArea/GovAreaDao"
"dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonDao"
"dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonService"
"dsBaseRpc/Utils/CommonUtil"
"dsBaseRpc/Utils/DateUtil"
"dsBaseRpc/Utils/DbUtil"
"dsBaseRpc/Utils/LogUtil"
"dsBaseRpc/Utils/PinYinUtil"
"dsBaseRpc/Utils/SqlKit"
"dsBaseRpc/models"
"errors"
"fmt"
)
type Rpc struct{} //服务对象
//选择单条
func (s *Rpc) GetBaseOrganization(ctx context.Context, in *BaseOrganizationProto.ModelArg) (*BaseOrganizationProto.Reply, error) {
//异常处理
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
//rpc响应
var reply BaseOrganizationProto.Reply
//使用通用方法获取单条记录
list := SqlKit.QueryByIds([]string{in.OrgId}, "t_base_organization")
if len(list) > 0 {
//扩展一下附设班信息
fsbArray, err := BaseOrganizationDao.GetFsb(in.OrgId)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行GetFsb时发生严重错误"+err.Error())
return &reply, err
}
list[0]["fsb"] = fsbArray
}
//将结果序列化
reply.Success = true
reply.Count = 1
reply.Message = Const.SuccessDataBaseAction
reply.List = CommonUtil.SerializeToString(list)
return &reply, nil
}
//增加
func (s *Rpc) AddBaseOrganization(ctx context.Context, in *BaseOrganizationProto.ModelArg) (*BaseOrganizationProto.Reply, error) {
//异常处理
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
//rpc响应
var reply BaseOrganizationProto.Reply
//是不是部门
isBuMen := false
//1:教育局,2:学校7:教辅单位8:大学区,不在1,278中应该就是指部门
if in.OrgType == 1 || in.OrgType == 2 || in.OrgType == 7 || in.OrgType == 8 {
//1、检查非空
if len(in.OrgCode) == 0 {
reply.Success = false
reply.Message = "代码为空,不能创建!"
return &reply, nil
}
//2、检查AreaCode是否存在不存在需要提示
exist, err := GovAreaDao2.ExistAreaCode(in.AreaCode)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行ExistAreaCode时发生严重错误"+err.Error())
return &reply, err
}
if !exist {
reply.Success = false
reply.Message = "区域代码不存在,不能创建!"
return &reply, nil
}
} else {
isBuMen = true
}
//3、指定的org_code是否存在
//如果添加的是单位那么bureauId是空
//如果添加的是部门那么bureauId不是空
exist, err := BaseOrganizationDao.IsExistOrgCode(in.OrgCode, in.BureauId, in.OrgType, "")
if err != nil {
LogUtil.Error(ErrorConst.SqlQueryError, "执行IsExistOrgCode时发生严重错误"+err.Error())
reply.Success = false
reply.Message = Const.DataBaseActionError
return &reply, err
}
if exist {
reply.Success = false
if isBuMen {
reply.Message = "部门代码已存在,无法创建!"
} else {
reply.Message = "单位代码已存在,无法创建!"
}
return &reply, err
}
//4、检查机构名称是否存在,否则在导入人员时,不知道向哪个单位下进行导入
exist, err = BaseOrganizationDao.IsExistOrgName(in.OrgName, in.BureauId, in.OrgType, "")
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行IsExistOrgName时发生严重错误"+err.Error())
return &reply, err
}
if exist {
reply.Success = false
if isBuMen {
reply.Message = "部门名称已存在,不能创建!"
} else {
reply.Message = "单位名称已存在,不能创建!"
}
return &reply, err
}
//5、调用dao
areaCode := in.AreaCode
//如果是部门,没有给我区域码,我就取它父亲的区域码,不给areaCode,那么in.BureauId就一定要有啊
if len(areaCode) == 0 {
areaCode, _, _, _, _, err = BaseOrganizationDao.GetBureauAdministrativeDivision(in.BureauId)
if err != nil {
reply.Success = false
reply.Message = err.Error()
return &reply, err
}
}
model := new(models.TBaseOrganization)
model.OrgId = CommonUtil.GetUUID()
//是市,还是区?
model.ProvinceCode, model.CityCode, model.DistrictCode = BaseOrganizationDao.GetGovAreaInfo(areaCode)
//组织机构类型 1教育局 2学校 3部门 4院 5系 6专业 7教辅单位,8:大学区
model.OrgType = in.OrgType
switch model.OrgType {
case 1, 2, 7, 8:
model.ParentId = Const.ZeroGuid //默认是一组0的GUID号
model.BureauId = model.OrgId //默认是自己的单位号
break
default:
model.ParentId = in.ParentId
model.BureauId = in.BureauId
break
}
model.OrgCode = in.OrgCode
model.OrgName = in.OrgName
model.AreaCode = in.AreaCode
model.EduAssistType = in.EduAssistType
//主校ID不传默认是一堆0
if in.MainSchoolId == "" {
model.MainSchoolId = model.BureauId
} else {
//否则听传入的
model.MainSchoolId = in.MainSchoolId
}
//没有是否分校标识
if in.IsBranchSchool == 0 {
//指教育局,教辅单位或部门时
model.MainSchoolType = 100
} else if in.IsBranchSchool == -1 { //不是分校,普通学校
model.MainSchoolType = 1
} else {
//分校,
model.MainSchoolType = 3
//设置它的父校ID和修改父校的主分校标识
_, err = BaseOrganizationDao.UpdateMainSchoolTypeById(model.MainSchoolId, 2)
if err != nil {
reply.Success = false
reply.Message = err.Error()
return &reply, err
}
}
model.Xxbxlxm = in.Xxbxlxm
model.Szdcxlxm = in.Szdcxlxm
model.Xxjbzm = in.Xxjbzm
model.Fzr = in.Fzr
model.Fddbr = in.Fddbr
model.Fddbrdh = in.Fddbrdh
model.Address = in.Address
model.Lxdh = in.Lxdh
model.OrgLng = in.OrgLng
model.OrgLat = in.OrgLat
model.SortId = in.SortId
model.ManagerAreaCode = in.ManagerAreaCode
//如果不传递排序号
if in.SortId == 0 {
model.SortId, err = BaseOrganizationDao.MaxOrgSortId(in.ParentId)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlUpdateError, "执行MaxOrgSortId时发生严重错误"+err.Error())
return nil, err
}
//如果添加了一个部门排序号是9999那么再增加一个不写排序号就应该是10000但前端要求不能大于9999所以~
if model.SortId > 9999 {
model.SortId = 9999
}
}
model.BUse = 1
_, err = BaseOrganizationDao.AddBaseOrganization(*model)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlUpdateError, "执行AddBaseOrganization时发生严重错误"+err.Error())
return nil, err
}
//保存附设班信息
BaseOrganizationDao.UpdateFsb(model.BureauId, in.FsbIds)
// *********************************************************************//
// 组织机构类型 1教育局 2学校 3部门 4院 5系 6专业 7教辅单位,8:大学区
// 如果是学校,教辅单位,大学区的话,需要生成管理员账号
// *********************************************************************//
if CommonUtil.IsContainInt32([]int32{2, 7, 8}, model.OrgType) {
err = UpdateManager(model.OrgId, 1)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlUpdateError, "执行updateManager时发生严重错误"+err.Error())
return nil, err
}
}
//记录日志
err = BaseOrganizationDao.ActionLog([]models.TBaseOrganization{*model}, Const.ActionInsert, in.ActionPersonId, in.ActionIpAddress)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlUpdateError, "执行ActionLog时发生严重错误"+err.Error())
return nil, err
}
//是否传递了部门管理员 ,黄海添加于2020-06-04
if len(in.OrgManagerIds) > 0 {
err = BaseOrganizationManagerDao.UpdateOrgManager(model.OrgId, in.OrgManagerIds)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlUpdateError, "执行UpdateOrgManager时发生严重错误"+err.Error())
return nil, err
}
}
//返回信息
reply.Success = true
reply.Message = Const.SuccessDataBaseAction
return &reply, err
}
//删除
func (s *Rpc) DeleteBaseOrganization(ctx context.Context, in *BaseOrganizationProto.DeleteIdsArg) (*BaseOrganizationProto.Reply, error) {
//异常处理
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
//rpc响应
var reply BaseOrganizationProto.Reply
//遍历每一个单位+部门进行检查
for i := range in.Ids {
//判断部门下是不是有可用的人员
var inTeacher BaseTeacherProto.QueryArg
inTeacher.Page = 1
inTeacher.Limit = 1
inTeacher.OrgId = in.Ids[i]
inTeacher.Xm = ""
_, count, err := BaseTeacherDao.PageBaseTeacher(&inTeacher)
if err != nil {
LogUtil.Error(ErrorConst.SqlUpdateError, "执行PageBaseTeacher时发生严重错误"+err.Error())
reply.Success = false
reply.Message = Const.DataBaseActionError
return &reply, err
}
if count > 0 {
reply.Success = false
//判断是单位还是部门
if BaseOrganizationDao.IsBuMen(inTeacher.OrgId) {
reply.Message = "部门下存在教工数据,无法删除!"
} else {
reply.Message = "单位下存在教工数据,无法删除!"
}
return &reply, err
}
//判断部门下是不是有可用的子部门
_, count, err = BaseOrganizationDao.GetChildOrg(in.Ids[i])
if err != nil {
LogUtil.Error(ErrorConst.SqlUpdateError, "执行GetChildOrg时发生严重错误"+err.Error())
reply.Success = false
reply.Message = Const.DataBaseActionError
return &reply, err
}
if count > 0 {
reply.Success = false
//判断是单位还是部门
if BaseOrganizationDao.IsBuMen(inTeacher.OrgId) {
reply.Message = "部门下存在子部门,无法删除!"
} else {
reply.Message = "单位下存在子部门,无法删除!"
}
return &reply, err
}
//判断是不是有可用的班级
exist, err := BaseClassDao.ExistClass(in.Ids[i])
if err != nil {
LogUtil.Error(ErrorConst.SqlUpdateError, "执行ExistClass时发生严重错误"+err.Error())
reply.Success = false
reply.Message = Const.DataBaseActionError
return &reply, err
}
if exist {
reply.Success = false
//判断是单位还是部门
if BaseOrganizationDao.IsBuMen(inTeacher.OrgId) {
reply.Message = "部门下存在班级,无法删除!"
} else {
reply.Message = "单位下存在班级,无法删除!"
}
return &reply, err
}
}
//记录日志
ms, err := BaseOrganizationDao.GetByIds(in.Ids)
if err != nil {
LogUtil.Error(ErrorConst.SqlUpdateError, "执行FindModelsByIds时发生严重错误"+err.Error())
reply.Success = false
reply.Message = Const.DataBaseActionError
return &reply, err
}
err = BaseOrganizationDao.ActionLog(ms, Const.ActionDelete, in.ActionPersonId, in.ActionIpAddress)
if err != nil {
LogUtil.Error(ErrorConst.SqlUpdateError, "执行ActionLog时发生严重错误"+err.Error())
reply.Success = false
reply.Message = Const.DataBaseActionError
return &reply, err
}
//删除部门管理员
err = BaseOrganizationManagerDao.DeleteOrgManagerByOrgIds(in.Ids)
//错误处理
if err != nil {
LogUtil.Error(ErrorConst.SqlUpdateError, "执行DeleteOrgManagerByOrgIds时发生严重错误"+err.Error())
reply.Success = false
reply.Message = Const.DataBaseActionError
return &reply, err
}
//调用通用删除命令进行删除
err = SqlKit.DeleteIds("t_base_organization", in.Ids)
//错误处理
if err != nil {
LogUtil.Error(ErrorConst.SqlUpdateError, "执行DeleteBaseOrganization时发生严重错误"+err.Error())
reply.Success = false
reply.Message = Const.DataBaseActionError
return &reply, err
}
//对此单位管理员设置为不可用包括三个内容t_base_teacher,t_sys_loginperson,t_base_role_person
err = BaseOrganizationDao.DisableBureauManager(in.Ids)
if err != nil {
LogUtil.Error(ErrorConst.SqlUpdateError, "执行DisableBureauManager时发生严重错误"+err.Error())
reply.Success = false
reply.Message = Const.DataBaseActionError
return &reply, err
}
reply.Success = true
reply.Message = Const.SuccessDataBaseAction
return &reply, err
}
//修改
func (s *Rpc) UpdateBaseOrganization(ctx context.Context, in *BaseOrganizationProto.ModelArg) (*BaseOrganizationProto.Reply, error) {
//异常处理
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
//rpc响应
var reply BaseOrganizationProto.Reply
//1、指定的org_code是否存在
list := SqlKit.QueryByIds([]string{in.OrgId}, "t_base_organization")
if list == nil || len(list) == 0 {
reply.Success = false
reply.Message = "输入的OrgId无法找到对应的单位ID"
return &reply, nil
}
//根据OrgId换取回bureau_id 黄海修改于2020-07-16
bureauId := list[0]["bureau_id"].(string)
exist, err := BaseOrganizationDao.IsExistOrgCode(in.OrgCode, bureauId, in.OrgType, in.OrgId)
if err != nil {
reply.Success = false
reply.Message = ""
LogUtil.Error(ErrorConst.SqlQueryError, "执行IsExistOrgCode时发生严重错误"+err.Error())
return &reply, err
}
if exist {
reply.Success = false
if BaseOrganizationDao.IsBuMen(in.OrgId) {
reply.Message = "部门代码已存在,无法修改!"
} else {
reply.Message = "单位代码已存在,无法修改!"
}
return &reply, err
}
//2、检查机构名称是否存在,否则在导入人员时,不知道向哪个单位下进行导入
exist, err = BaseOrganizationDao.IsExistOrgName(in.OrgName, bureauId, in.OrgType, in.OrgId)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行IsExistOrgName时发生严重错误"+err.Error())
return &reply, err
}
if exist {
reply.Success = false
if BaseOrganizationDao.IsBuMen(in.OrgId) {
reply.Message = "部门名称已存在,无法修改!"
} else {
reply.Message = "单位名称已存在,无法修改!"
}
return &reply, err
}
//3、修改
model := new(models.TBaseOrganization)
model.OrgId = in.OrgId
model.OrgCode = in.OrgCode
model.OrgName = in.OrgName
model.ParentId = in.ParentId
model.BureauId = bureauId
model.OrgType = in.OrgType
model.EduAssistType = in.EduAssistType
model.MainSchoolId = in.MainSchoolId
model.ManagerAreaCode = in.ManagerAreaCode
//如果需要修改AreaCode
if in.AreaCode != "" {
model.AreaCode = in.AreaCode
}
//如果没有是否分校标识时,
if in.IsBranchSchool == 0 {
model.MainSchoolType = 99
} else if in.IsBranchSchool == -1 {
//普通学校
model.MainSchoolType = 1
//查看它有没有父校?
mainSchoolId := list[0]["main_school_id"]
if mainSchoolId != "" {
//如果有父校父校ID是不是还有其它孩子
count, err := BaseOrganizationDao.GetChildSchoolCount(mainSchoolId.(string))
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlUpdateError, "执行GetChildSchoolCount时发生严重错误"+err.Error())
return &reply, err
}
if count == 1 {
//都没有需要修改父校ID为普通校
_, err = BaseOrganizationDao.UpdateMainSchoolTypeById(list[0]["main_school_id"].(string), 1)
if err != nil {
reply.Success = false
reply.Message = err.Error()
return &reply, err
}
}
}
} else if in.IsBranchSchool == 1 { //分校
//分校
model.MainSchoolType = 3
//设置它的父校ID和修改父校的主分校标识
_, err = BaseOrganizationDao.UpdateMainSchoolTypeById(model.MainSchoolId, 2)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlUpdateError, "执行UpdateMainSchoolTypeById时发生严重错误"+err.Error())
return nil, err
}
}
model.Xxbxlxm = in.Xxbxlxm
model.Szdcxlxm = in.Szdcxlxm
model.Xxjbzm = in.Xxjbzm
model.Fzr = in.Fzr
model.Fddbr = in.Fddbr
model.Fddbrdh = in.Fddbrdh
model.Address = in.Address
model.Lxdh = in.Lxdh
model.OrgLng = in.OrgLng
model.OrgLat = in.OrgLat
model.SortId = in.SortId
model.BUse = in.BUse
_, err = BaseOrganizationDao.UpdateBaseOrganization(*model, in.ForceUpdateFields)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlUpdateError, "执行UpdateBaseOrganization时发生严重错误"+err.Error())
return nil, err
}
//保存附设班信息
BaseOrganizationDao.UpdateFsb(model.BureauId, in.FsbIds)
//是否传递了部门管理员 ,黄海添加于2020-06-04
if len(in.OrgManagerIds) > 0 && len(in.OrgManagerIds[0]) > 0 {
err = BaseOrganizationManagerDao.UpdateOrgManager(model.OrgId, in.OrgManagerIds)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlUpdateError, "执行UpdateOrgManager时发生严重错误"+err.Error())
return nil, err
}
} else {
//删除部门领导
BaseOrganizationManagerDao.DeleteOrgManagerByOrgIds([]string{in.OrgId})
}
//记录日志
ms, err := BaseOrganizationDao.GetByIds([]string{in.OrgId})
if err != nil {
LogUtil.Error(ErrorConst.SqlUpdateError, "执行FindModelsByIds时发生严重错误"+err.Error())
reply.Success = false
reply.Message = Const.DataBaseActionError
return &reply, err
}
err = BaseOrganizationDao.ActionLog(ms, Const.ActionUpdate, in.ActionPersonId, in.ActionIpAddress)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlUpdateError, "执行ActionLog时发生严重错误"+err.Error())
return nil, err
}
reply.Success = true
reply.Message = Const.SuccessDataBaseAction
return &reply, nil
}
//分页查询显示
func (s *Rpc) PageBaseOrganization(ctx context.Context, in *BaseOrganizationProto.QueryArg) (*BaseOrganizationProto.Reply, error) {
//异常处理
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
//rpc响应
var reply BaseOrganizationProto.Reply
//检查传入的area_code是否存在
exist, err := GovAreaDao2.ExistAreaCode(in.AreaCode)
//错误处理
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行ExistAreaCode时发生严重错误"+err.Error())
return &reply, err
}
if !exist {
reply.Success = false
reply.Message = "传入的区域代码不存在!"
return &reply, nil
}
list, count, err := BaseOrganizationDao.PageBaseOrganization(in)
//错误处理
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行PageBaseOrganization时发生严重错误"+err.Error())
return &reply, err
}
if list != nil {
reply.Count = count
reply.Success = true
reply.Message = Const.SuccessDataBaseAction
reply.List = CommonUtil.SerializeToString(list)
return &reply, nil
} else {
reply.Count = 0
reply.Success = false
reply.Message = Const.DataBaseBlankResult
reply.List = Const.BlankArrayString
return &reply, nil
}
}
//一次查询多个
func (s *Rpc) GetMultipleBaseOrganization(ctx context.Context, in *BaseOrganizationProto.MultipleQueryArg) (*BaseOrganizationProto.Reply, error) {
//异常处理
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
//rpc响应
var reply BaseOrganizationProto.Reply
list, count, err := BaseOrganizationDao.GetMultipleBaseOrganization(in.Ids)
//错误处理
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行GetMultipleBaseOrganization时发生严重错误"+err.Error())
return &reply, err
}
if list != nil {
reply.Count = count
reply.Success = true
reply.Message = Const.SuccessDataBaseAction
reply.List = CommonUtil.SerializeToString(list)
return &reply, nil
} else {
reply.Count = 0
reply.Success = false
reply.Message = Const.DataBaseBlankResult
reply.List = Const.BlankArrayString
return &reply, nil
}
}
//通过单位ID获取单位及单位下所有的部门信息组装成结构体返回用于构建树
func (s *Rpc) GetBureauOrgTree(ctx context.Context, in *BaseOrganizationProto.ModelArg) (*BaseOrganizationProto.Reply, error) {
//异常处理
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
//rpc响应
var reply BaseOrganizationProto.Reply
//调用Dao层方法获取数据
list, count, err := BaseOrganizationDao.GetBureauOrgTree(in.BureauId)
//错误处理
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行GetBureauOrgTree时发生严重错误"+err.Error())
return &reply, err
}
if list != nil {
//返回结果
reply.Count = count
reply.Success = true
reply.Message = Const.SuccessDataBaseAction
reply.List = CommonUtil.SerializeToString(list)
return &reply, nil
} else {
//返回结果
reply.Count = 0
reply.Success = false
reply.Message = Const.DataBaseBlankResult
reply.List = Const.BlankArrayString
return &reply, nil
}
}
//根据一个或多个部门ID获取部门领导
func (s *Rpc) GetOrgManager(ctx context.Context, in *BaseOrganizationProto.MultipleQueryArg) (*BaseOrganizationProto.Reply, error) {
//异常处理
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
//rpc响应
var reply BaseOrganizationProto.Reply
//调用Dao层方法获取数据
list, count, err := BaseOrganizationDao.GetOrgManager(in.Ids)
//错误处理
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行GetOrgManager时发生严重错误"+err.Error())
return &reply, err
}
if list != nil {
//返回结果
reply.Count = count
reply.Success = true
reply.Message = Const.SuccessDataBaseAction
reply.List = CommonUtil.SerializeToString(list)
return &reply, nil
} else {
//返回结果
reply.Count = 0
reply.Success = false
reply.Message = Const.SuccessDataBaseAction
reply.List = Const.BlankArrayString
return &reply, nil
}
}
/***************************************************************************************************/
/**
功能:维护教育局、单位、学校管理员
作者:黄海
时间2020-05-30
*/
func UpdateManager(bureauId string, bUse int32) error {
//使用通用方法获取单条记录
list := SqlKit.QueryByIds([]string{bureauId}, "t_base_organization")
if list == nil || len(list) == 0 {
return errors.New("无法找到指定的单位ID")
}
bureauName := list[0]["org_name"].(string)
orgType := int32(list[0]["org_type"].(float64))
//组织机构类型 1教育局 2学校 3部门 4院 5系 6专业 7教辅单位,8:大学区
//1、维护t_base_teacher
//检查这个单位的管理员,是不是已经创建,如果不存在则创建,如果存在, 修改可用状态为1
exist, personId := BaseRolePersonDao.VirtualManagerExist(bureauId)
//如果不存在
if !exist {
//(1)插入基本人员信息
model := new(models.TBaseTeacher)
personId = CommonUtil.GetUUID()
model.PersonId = personId
model.IdentityId = 1
model.Xm = bureauName + "管理员"
model.Xmpy = PinYinUtil.PinYin("管理员")
model.Cym = model.Xm
model.Xbm = "男"
model.Csrq = DateUtil.ConvertDate("1977-10-11")
model.Mzm = "1"
model.Zzmmm = "13"
model.Sfzjlxm = "4"
model.Sfzjh = "220223197805221125"
model.Xlm = "90"
model.Xwm = "0"
model.Zcm = "5"
model.Bzlbm = "9"
model.Cjny = DateUtil.ConvertDate("1999-09-01")
model.StageId = "Z"
model.SubjectId = "99"
model.Gwzym = "80"
model.Lxdh = "18888888888"
model.Dzxx = "xx@dsideal.com"
model.BUse = 1
var db = DbUtil.Engine
var session = db.NewSession()
_, err := BaseTeacherDao.AddBaseTeacher(session, *model)
if err != nil {
session.Rollback()
return err
}
//生成人员的组织机构数据
_, _, _, err = BaseTeacherDao.AddTeacherOrgInfo(session, []string{personId}, bureauId, 1, 1)
if err != nil {
session.Rollback()
return err
}
//(2)生成登录名和密码
accountArray := SysLoginpersonService.GenerateLoginAccount(1, 1)
modelLoginPerson := new(models.TSysLoginperson)
modelLoginPerson.Id = CommonUtil.GetUUID()
modelLoginPerson.LoginName = accountArray[0].LoginName
modelLoginPerson.Pwd = accountArray[0].Pwd
modelLoginPerson.OriginalPwd = accountArray[0].OriginalPwd
modelLoginPerson.IdentityId = 1
modelLoginPerson.PersonId = personId
modelLoginPerson.PersonName = model.Xm
modelLoginPerson.BUse = 1
_, err = SysLoginpersonDao.AddSysLoginPerson(session, *modelLoginPerson)
if err != nil {
session.Rollback()
return err
}
session.Commit()
//(3)、t_base_role
modelBaseRolePerson := new(models.TBaseRolePerson)
modelBaseRolePerson.Id = CommonUtil.GetUUID()
var RoleId string
if orgType == 2 {
//学校
RoleId = Const.SchoolManager
} else {
RoleId = Const.EduOrgManager
}
modelBaseRolePerson.RoleId = RoleId
modelBaseRolePerson.IdentityId = 1
modelBaseRolePerson.PersonId = model.PersonId
modelBaseRolePerson.RuleId = bureauId //具体管辖是哪个省、市、区或大学区ID单位ID
modelBaseRolePerson.BUse = 1
_, err = BaseRolePersonDao.AddBaseRolePerson(*modelBaseRolePerson)
if err != nil {
return err
}
} else {
//存在则需要修改bUse
_, err := BaseRolePersonDao.UpdateManagerStatus(bureauId, bUse)
if err != nil {
return err
}
}
return nil
}
/**
功能:启用教育局
作者:黄海
时间2020-06-08
*/
func (s *Rpc) SetEnableEdu(ctx context.Context, in *BaseOrganizationProto.MultipleQueryArg) (*BaseOrganizationProto.Reply, error) {
//异常处理
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
//rpc响应
var reply BaseOrganizationProto.Reply
//设置为启用状态
err := BaseOrganizationDao.SetEduStatus(in.Ids, 1)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行SetEnableEdu时发生严重错误"+err.Error())
return &reply, err
}
//返回结果
reply.Count = int32(len(in.Ids))
reply.Success = true
reply.Message = Const.SuccessDataBaseAction
return &reply, nil
}
/**
功能:禁用教育局
作者:黄海
时间2020-06-08
*/
func (s *Rpc) SetDisableEdu(ctx context.Context, in *BaseOrganizationProto.MultipleQueryArg) (*BaseOrganizationProto.Reply, error) {
//异常处理
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
//rpc响应
var reply BaseOrganizationProto.Reply
//设置为禁用状态
err := BaseOrganizationDao.SetEduStatus(in.Ids, -1)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行SetDisableEdu时发生严重错误"+err.Error())
return &reply, err
}
//返回结果
reply.Count = int32(len(in.Ids))
reply.Success = true
reply.Message = Const.SuccessDataBaseAction
return &reply, nil
}
//根据单位名称的关键字和管理员的人员ID查询单位列表
func (s *Rpc) ListOrgInfoByOrgKeyWord(ctx context.Context, in *BaseOrganizationProto.ListOrgArg) (*BaseOrganizationProto.Reply, error) {
//异常处理
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
//rpc响应
var reply BaseOrganizationProto.Reply
//获取关键字单位
list, err := BaseOrganizationDao.ListOrgInfoByOrgKeyWord(in.PersonId, in.OrgKeyWord)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行ListOrgInfoByOrgKeyWord时发生严重错误"+err.Error())
return &reply, err
}
//返回结果
reply.Count = int32(len(list))
reply.Success = true
reply.Message = Const.SuccessDataBaseAction
reply.List = CommonUtil.SerializeToString(list)
return &reply, nil
}
//根据市的行政区划码获取教育局列表
func (s *Rpc) ListEduByCityCode(ctx context.Context, in *BaseOrganizationProto.CityCodeArg) (*BaseOrganizationProto.Reply, error) {
//异常处理
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
//rpc响应
var reply BaseOrganizationProto.Reply
//获取关键字单位
list, err := BaseOrganizationDao.ListEduByCityCode(in.CityCode)
if err != nil {
reply.Success = false
reply.Message = Const.DataBaseActionError
LogUtil.Error(ErrorConst.SqlQueryError, "执行ListEduByCityCode时发生严重错误"+err.Error())
return &reply, err
}
//返回结果
reply.Count = int32(len(list))
reply.Success = true
reply.Message = Const.SuccessDataBaseAction
return &reply, nil
}