|
|
package BaseOrganizationDao
|
|
|
|
|
|
import (
|
|
|
"dsBaseRpc/Const/ErrorConst"
|
|
|
"dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationProto"
|
|
|
"dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonDao"
|
|
|
"dsBaseRpc/Utils/CommonUtil"
|
|
|
"dsBaseRpc/Utils/DbUtil"
|
|
|
"dsBaseRpc/Utils/LogUtil"
|
|
|
"dsBaseRpc/Utils/SqlKit"
|
|
|
"dsBaseRpc/models"
|
|
|
"errors"
|
|
|
"github.com/xormplus/builder"
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
|
//操作数据库的变量
|
|
|
var db = DbUtil.Engine
|
|
|
|
|
|
//记录操作日志
|
|
|
func ActionLog(ms []models.TBaseOrganization, actionCode string, actionPersonId string, actionIp string) error {
|
|
|
msLog := make([]models.TBaseOrganizationLog, len(ms))
|
|
|
for i := range ms {
|
|
|
CommonUtil.CopyFields(ms[i], &msLog[i])
|
|
|
msLog[i].LogId = CommonUtil.GetUUID()
|
|
|
msLog[i].ActionCode = actionCode
|
|
|
msLog[i].ActionIpAddress = actionIp
|
|
|
msLog[i].ActionPersonId = actionPersonId
|
|
|
}
|
|
|
//批量保存
|
|
|
_, err := db.Insert(msLog)
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
//通过主键集合,查找对应的实体bean集合
|
|
|
func GetByIds(ids []string) ([]models.TBaseOrganization, error) {
|
|
|
ms := make([]models.TBaseOrganization, 0)
|
|
|
err := db.In("org_id", ids).Find(&ms)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
return ms, nil
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:获取指定单位下最大的排序号
|
|
|
作者:黄海
|
|
|
时间:2020-06-10
|
|
|
*/
|
|
|
func MaxOrgSortId(ParentId string) (int32, error) {
|
|
|
sql := "select ifnull(max(sort_id),0)+1 as maxsortid from t_base_organization where parent_id=? and b_use=1"
|
|
|
list, err := db.SQL(sql, ParentId).Query().List()
|
|
|
if err != nil {
|
|
|
return 0, err
|
|
|
}
|
|
|
return int32(list[0]["maxsortid"].(int64)), nil
|
|
|
}
|
|
|
|
|
|
//增加
|
|
|
func AddBaseOrganization(model models.TBaseOrganization) (int64, error) {
|
|
|
return db.Insert(model)
|
|
|
}
|
|
|
|
|
|
//修改
|
|
|
func UpdateBaseOrganization(model models.TBaseOrganization, ForceUpdateFields []string) (int64, error) {
|
|
|
//1、清除Redis缓存
|
|
|
var ids = []string{model.OrgId}
|
|
|
var selector = SqlKit.GetBean("t_base_organization")
|
|
|
SqlKit.DeleteCacheByIds(ids, selector)
|
|
|
//2、计算本次操作,有哪些字段需要更新
|
|
|
NeedUpdateFields := CommonUtil.GetNeedUpdateFields(model)
|
|
|
//3、合并强制更新的字段
|
|
|
ForceUpdateFields = append(ForceUpdateFields, NeedUpdateFields...)
|
|
|
//4、去重
|
|
|
ForceUpdateFields = CommonUtil.RemoveDuplicatesAndEmpty(ForceUpdateFields)
|
|
|
|
|
|
//更改排序号
|
|
|
//(1)权限排序号的范围是parent_id
|
|
|
var myBuilder = builder.Dialect(builder.MYSQL).Select("org_id").From("t_base_organization")
|
|
|
//(2)查询获取到parent_id
|
|
|
var m1 models.TBaseOrganization
|
|
|
db.ID(model.OrgId).Get(&m1)
|
|
|
//组装sql
|
|
|
//orgType 1,2,7 是教育局,学校,教辅单位
|
|
|
//其它是部门,条件不一样
|
|
|
var sql string
|
|
|
if m1.OrgType == 1 || m1.OrgType == 2 || m1.OrgType == 7 {
|
|
|
sql, _ = myBuilder.Where(builder.Eq{"area_code": m1.AreaCode}).And(builder.Gte{"sort_id": model.SortId}).And(builder.Neq{"org_id": model.OrgId}).And(builder.Eq{"org_type": m1.OrgType}).OrderBy("sort_id").ToBoundSQL()
|
|
|
} else {
|
|
|
sql, _ = myBuilder.Where(builder.Eq{"parent_id": m1.ParentId}).And(builder.Gte{"sort_id": model.SortId}).And(builder.Neq{"org_id": model.OrgId}).OrderBy("sort_id").ToBoundSQL()
|
|
|
}
|
|
|
list, _ := db.SQL(sql).Query().List()
|
|
|
//事务声明
|
|
|
session := db.NewSession()
|
|
|
defer session.Close()
|
|
|
session.Begin()
|
|
|
|
|
|
//事务的内容
|
|
|
for i := range list {
|
|
|
u := new(models.TBaseOrganization)
|
|
|
u.SortId = model.SortId + int32(i+1)
|
|
|
id := list[i]["org_id"].(string)
|
|
|
_, err := session.ID(id).Update(u)
|
|
|
if err != nil {
|
|
|
session.Rollback()
|
|
|
return 0, err
|
|
|
}
|
|
|
//删除缓存
|
|
|
var ids = []string{id}
|
|
|
var selector = SqlKit.GetBean("t_base_organization")
|
|
|
SqlKit.DeleteCacheByIds(ids, selector)
|
|
|
}
|
|
|
//事务提交
|
|
|
err := session.Commit()
|
|
|
if err != nil {
|
|
|
return 0, err
|
|
|
}
|
|
|
//5、更新操作,强制更新这些列
|
|
|
affected, err := db.ID(model.OrgId).Cols(ForceUpdateFields...).Update(model)
|
|
|
return affected, err
|
|
|
}
|
|
|
|
|
|
//获取组织机构列表
|
|
|
func PageBaseOrganization(in *BaseOrganizationProto.QueryArg) ([]map[string]interface{}, int32, error) {
|
|
|
//接收传入参数
|
|
|
var limit = int(in.Limit)
|
|
|
var offset = int((in.Page - 1) * in.Limit)
|
|
|
|
|
|
var myBuilder = builder.Dialect(builder.MYSQL).Select("t1.*,t3.original_pwd,t3.pwd,t3.login_name").
|
|
|
From("t_base_organization as t1").
|
|
|
InnerJoin("t_base_role_person as t2", "t1.bureau_id=t2.rule_id").
|
|
|
InnerJoin("t_sys_loginperson as t3", "t2.person_id=t3.person_id")
|
|
|
//是市,还是区?
|
|
|
areaCode := in.AreaCode
|
|
|
|
|
|
if areaCode[4:] == "00" { //市
|
|
|
myBuilder.Where(builder.Eq{"t1.city_code": areaCode})
|
|
|
} else { //区
|
|
|
myBuilder.Where(builder.Eq{"t1.district_code": areaCode})
|
|
|
}
|
|
|
|
|
|
//是全部,还是要启用,禁用的?
|
|
|
if in.BUse != 0 {
|
|
|
myBuilder.Where(builder.Eq{"t1.b_use": in.BUse})
|
|
|
}
|
|
|
//是哪个单位类型的
|
|
|
if in.OrgType > 0 {
|
|
|
myBuilder.Where(builder.Eq{"t1.org_type": in.OrgType})
|
|
|
} else {
|
|
|
myBuilder.Where(builder.In("t1.org_type", []int{1, 2, 7}))
|
|
|
}
|
|
|
|
|
|
//学校办学类型 -1为查询全部
|
|
|
if in.Xxbxlxm != "-1" && len(in.Xxbxlxm) > 0 {
|
|
|
myBuilder.Where(builder.Eq{"t1.xxbxlxm": in.Xxbxlxm})
|
|
|
}
|
|
|
//只查主校+普通校
|
|
|
if in.IsMainSchool {
|
|
|
myBuilder.Where(builder.In("t1.main_school_type", []int{1, 2}))
|
|
|
//如果要排除某个学校
|
|
|
if in.BureauId != "" {
|
|
|
myBuilder.Where(builder.Neq{"t1.org_id": in.BureauId})
|
|
|
}
|
|
|
}
|
|
|
myBuilder.Where(builder.Like{"t1.org_name", in.OrgName}).OrderBy("t1.sort_id asc,t1.id_int asc")
|
|
|
//关键字查询
|
|
|
sql, _ := myBuilder.Limit(limit, offset).ToBoundSQL()
|
|
|
|
|
|
//通过SQL获取带缓存的数据
|
|
|
list, count, err := SqlKit.Query(sql)
|
|
|
|
|
|
//修改密码的显示项目
|
|
|
SysLoginpersonDao.FillPwd(&list)
|
|
|
return list, count, err
|
|
|
}
|
|
|
|
|
|
//功能:给定一个单位的区域码,获得隶属教育局
|
|
|
func GetMasterJiaoYuJu(areaCode string) models.TBaseOrganization {
|
|
|
var model models.TBaseOrganization
|
|
|
db.Where("org_type=1 and area_code=?", areaCode).Get(&model)
|
|
|
return model
|
|
|
}
|
|
|
|
|
|
//功能:给定一个市或县区的区域码,返回它对应的省、市、县区行政区划码
|
|
|
func GetGovAreaInfo(areaCode string) (provinceCode string, cityCode string, districtCode string) {
|
|
|
if strings.HasSuffix(areaCode, "00") { //市
|
|
|
provinceCode = areaCode[0:2] + "0000"
|
|
|
cityCode = areaCode
|
|
|
districtCode = "-1"
|
|
|
} else { //区
|
|
|
provinceCode = areaCode[0:2] + "0000"
|
|
|
cityCode = areaCode[0:4] + "00"
|
|
|
districtCode = areaCode
|
|
|
}
|
|
|
return provinceCode, cityCode, districtCode
|
|
|
}
|
|
|
|
|
|
//功能:指定的org_code是否存在
|
|
|
func IsExistOrgCode(orgCode string, bureauId string, orgType int32, withOutOrgId string) (bool, error) {
|
|
|
var myBuilder = builder.Dialect(builder.MYSQL).Select("org_id").From("t_base_organization")
|
|
|
myBuilder = myBuilder.Where(builder.Eq{"org_code": orgCode}).And(builder.Eq{"b_use": 1})
|
|
|
|
|
|
//如果需要在指定单位下检查,部门级
|
|
|
if orgType != 1 && orgType != 2 && orgType != 7 && orgType != 8 {
|
|
|
myBuilder = myBuilder.Where(builder.Eq{"bureau_id": bureauId})
|
|
|
}
|
|
|
|
|
|
//排除哪一个
|
|
|
if len(withOutOrgId) > 0 {
|
|
|
myBuilder = myBuilder.And(builder.Neq{"org_id": withOutOrgId})
|
|
|
}
|
|
|
|
|
|
sql, _ := myBuilder.ToBoundSQL()
|
|
|
count, err := db.SQL(sql).Query().Count()
|
|
|
if err != nil {
|
|
|
//记录到错误日志
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行IsExistOrgCode时发生严重错误:"+err.Error())
|
|
|
return false, err
|
|
|
}
|
|
|
if count > 0 {
|
|
|
success := true
|
|
|
return success, nil
|
|
|
} else {
|
|
|
return false, nil
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//功能:指定的org_name是否存在
|
|
|
func IsExistOrgName(orgName string, bureauId string, orgType int32, withOutOrgId string) (bool, error) {
|
|
|
var myBuilder = builder.Dialect(builder.MYSQL).Select("org_id").From("t_base_organization")
|
|
|
myBuilder = myBuilder.Where(builder.Eq{"org_name": orgName}).And(builder.Eq{"b_use": 1})
|
|
|
if len(withOutOrgId) > 0 {
|
|
|
myBuilder = myBuilder.Where(builder.Neq{"org_id": withOutOrgId})
|
|
|
}
|
|
|
//不是1,2,7,8,应该就是部门级~ 部门级需要在指定单位下进行查询
|
|
|
if orgType != 1 && orgType != 2 && orgType != 7 && orgType != 8 {
|
|
|
myBuilder = myBuilder.Where(builder.Eq{"bureau_id": bureauId})
|
|
|
}
|
|
|
|
|
|
sql, _ := myBuilder.ToBoundSQL()
|
|
|
count, err := db.SQL(sql).Query().Count()
|
|
|
if err != nil {
|
|
|
//记录到错误日志
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行IsExistOrgName时发生严重错误:"+err.Error())
|
|
|
return false, err
|
|
|
}
|
|
|
if count > 0 {
|
|
|
success := true
|
|
|
return success, nil
|
|
|
} else {
|
|
|
return false, nil
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//功能:根据主校ID,修改主校的main_schooltype标识
|
|
|
func UpdateMainSchoolTypeById(mainSchoolId string, mainSchoolType int32) (int64, error) {
|
|
|
model := new(models.TBaseOrganization)
|
|
|
model.MainSchoolType = mainSchoolType
|
|
|
return db.ID(mainSchoolId).Update(model)
|
|
|
}
|
|
|
|
|
|
//功能:获取一个主校的分校个数
|
|
|
func GetChildSchoolCount(mainSchoolId string) (int64, error) {
|
|
|
//如果是默认值,就没有查询的必要了
|
|
|
if mainSchoolId == "00000000-0000-0000-0000-000000000000" {
|
|
|
return 0, nil
|
|
|
}
|
|
|
model := new(models.TBaseOrganization)
|
|
|
count, err := db.Where("main_school_id=? and b_use=1", mainSchoolId).Count(model)
|
|
|
return count, err
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:获取指定单位的行政区划信息+主校信息
|
|
|
作者:黄海
|
|
|
时间:2020-06-03
|
|
|
*/
|
|
|
func GetBureauAdministrativeDivision(BureauId string) (string, string, string, string, string, error) {
|
|
|
list := SqlKit.QueryByIds([]string{BureauId}, "t_base_organization")
|
|
|
if len(list) > 0 {
|
|
|
return list[0]["area_code"].(string), list[0]["province_code"].(string), list[0]["city_code"].(string), list[0]["district_code"].(string),
|
|
|
list[0]["main_school_id"].(string), nil
|
|
|
} else {
|
|
|
return "", "", "", "", "", errors.New("没有找到对应的单位信息!")
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:一次查询多条
|
|
|
作者:黄海
|
|
|
时间:2020-06-03
|
|
|
*/
|
|
|
func GetMultipleBaseOrganization(Ids []string) ([]map[string]interface{}, int32, error) {
|
|
|
list := SqlKit.QueryByIds(Ids, "t_base_organization")
|
|
|
return list, int32(len(list)), nil
|
|
|
}
|
|
|
|
|
|
//通过单位ID,获取单位及单位下所有的部门信息,组装成结构体返回,用于构建树
|
|
|
func GetBureauOrgTree(BureauId string) ([]map[string]interface{}, int32, error) {
|
|
|
var myBuilder = builder.Dialect(builder.MYSQL).Select("org_id").From("t_base_organization")
|
|
|
myBuilder.Where(builder.Eq{"b_use": 1}).And(builder.Eq{"bureau_id": BureauId}).OrderBy("parent_id,sort_id")
|
|
|
//通过SQL获取带缓存的数据
|
|
|
sql, _ := myBuilder.ToBoundSQL()
|
|
|
list, count, err := SqlKit.Query(sql)
|
|
|
return list, count, err
|
|
|
}
|
|
|
|
|
|
//根据一个或多个部门ID获取部门领导
|
|
|
func GetOrgManager(Ids []string) ([]map[string]interface{}, int32, error) {
|
|
|
var myBuilder = builder.Dialect(builder.MYSQL).Select("t1.org_id,t1.person_id,t2.xm").
|
|
|
From("t_base_organization_manager as t1").
|
|
|
InnerJoin("t_base_teacher as t2", "t1.person_id=t2.person_id").
|
|
|
Where(builder.Eq{"t1.b_use": 1}).
|
|
|
And(builder.In("t1.org_id", Ids))
|
|
|
//通过SQL获取数据
|
|
|
sql, _ := myBuilder.ToBoundSQL()
|
|
|
list, count, err := SqlKit.Query(sql)
|
|
|
return list, count, err
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:启用/禁用教育局
|
|
|
作者:黄海
|
|
|
时间:2020-06-08
|
|
|
*/
|
|
|
func SetEduStatus(ids []string, bUse int) error {
|
|
|
//1、清除Redis缓存
|
|
|
var selector = SqlKit.GetBean("t_base_organization")
|
|
|
SqlKit.DeleteCacheByIds(ids, selector)
|
|
|
//2、组织机构表
|
|
|
var myBuilder = builder.Dialect(builder.MYSQL).Update(builder.Eq{"b_use": bUse}).From("t_base_organization").Where(builder.In("org_id", ids))
|
|
|
sql, err := myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
_, err = db.Exec(sql)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
//单元ID对应的areaCode
|
|
|
myBuilder = builder.Dialect(builder.MYSQL).Select("area_code").From("t_base_organization").Where(builder.In("org_id", ids))
|
|
|
sql, err = myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
areaCodes := make([]string, 0)
|
|
|
list, err := db.SQL(sql).Query().List()
|
|
|
for i := range list {
|
|
|
areaCodes = append(areaCodes, list[i]["area_code"].(string))
|
|
|
}
|
|
|
//3A、人员角色表(教育局)
|
|
|
myBuilder = builder.Dialect(builder.MYSQL).Select("person_id").From("t_base_role_person").Where(builder.In("rule_id", ids))
|
|
|
sql, err = myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
list, err = db.SQL(sql).Query().List()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
//转为字符串数组
|
|
|
personIds := make([]string, 0)
|
|
|
for i := range list {
|
|
|
personIds = append(personIds, list[i]["person_id"].(string))
|
|
|
}
|
|
|
//3B、人员角色表(行政区划)
|
|
|
myBuilder = builder.Dialect(builder.MYSQL).Select("person_id").From("t_base_role_person").Where(builder.In("rule_id", areaCodes))
|
|
|
sql, err = myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
list, err = db.SQL(sql).Query().List()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
//转为字符串数组
|
|
|
for i := range list {
|
|
|
personIds = append(personIds, list[i]["person_id"].(string))
|
|
|
}
|
|
|
|
|
|
//将人员角色表中的相关人员数据b_use修改为-1
|
|
|
myBuilder = builder.Dialect(builder.MYSQL).Update(builder.Eq{"b_use": bUse}).From("t_base_role_person").Where(builder.In("person_id", personIds))
|
|
|
sql, err = myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
_, err = db.Exec(sql)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
//4、登录表
|
|
|
myBuilder = builder.Dialect(builder.MYSQL).Update(builder.Eq{"b_use": bUse}).From("t_sys_loginperson").Where(builder.In("person_id", personIds))
|
|
|
sql, err = myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
_, err = db.Exec(sql)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
//5、人员表
|
|
|
myBuilder = builder.Dialect(builder.MYSQL).Update(builder.Eq{"b_use": bUse}).From("t_base_teacher").Where(builder.In("person_id", personIds))
|
|
|
sql, err = myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
_, err = db.Exec(sql)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
//删除人员的缓存
|
|
|
selector = SqlKit.GetBean("t_base_teacher")
|
|
|
SqlKit.DeleteCacheByIds(personIds, selector)
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:获取一个指定部门下的所有子部门有哪些
|
|
|
作者:黄海
|
|
|
时间:2020-06-12
|
|
|
*/
|
|
|
func GetChildOrg(orgId string) ([]map[string]interface{}, int32, error) {
|
|
|
var myBuilder = builder.Dialect(builder.MYSQL).Select("org_id").From("t_base_organization").
|
|
|
Where(builder.In("parent_id", orgId)).And(builder.Eq{"b_use": 1}).OrderBy("sort_id")
|
|
|
sql, err := myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return nil, 0, err
|
|
|
}
|
|
|
return SqlKit.Query(sql)
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:禁用单位管理员的周边信息
|
|
|
作者:黄海
|
|
|
时间:2020-06-15
|
|
|
*/
|
|
|
func DisableBureauManager(ids []string) error {
|
|
|
//1、查找出这些单位下对应的管理员是哪些?
|
|
|
myBuilder := builder.Dialect(builder.MYSQL).Select("person_id").From("t_base_role_person").
|
|
|
Where(builder.Eq{"identity_id": 1}.And(builder.In("rule_id", ids)))
|
|
|
sql, err := myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
list, err := db.SQL(sql).Query().List()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
var personIds = make([]string, 0)
|
|
|
//每个管理员都要进行处理
|
|
|
for i := range list {
|
|
|
//2、设置t_base_teacher中此人员为-1状态
|
|
|
myBuilder = builder.Dialect(builder.MYSQL).Update(builder.Eq{"b_use": -1}).From("t_base_teacher").
|
|
|
Where(builder.Eq{"identity_id": 1}).And(builder.Eq{"person_id": list[i]["person_id"].(string)})
|
|
|
sql, err = myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
_, err = db.Exec(sql)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
//3、设置t_sys_loginperson中此人员为-1状态
|
|
|
myBuilder = builder.Dialect(builder.MYSQL).Update(builder.Eq{"b_use": -1}).From("t_sys_loginperson").
|
|
|
Where(builder.Eq{"identity_id": 1}).And(builder.Eq{"person_id": list[i]["person_id"].(string)})
|
|
|
sql, err = myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
_, err = db.Exec(sql)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
//4、设置t_base_role_person中此人员为-1状态
|
|
|
myBuilder = builder.Dialect(builder.MYSQL).Update(builder.Eq{"b_use": -1}).From("t_base_role_person").
|
|
|
Where(builder.Eq{"identity_id": 1}).And(builder.Eq{"person_id": list[i]["person_id"].(string)})
|
|
|
sql, err = myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
_, err = db.Exec(sql)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
//人员数组
|
|
|
personIds = append(personIds, list[i]["person_id"].(string))
|
|
|
}
|
|
|
|
|
|
//删除人员的缓存
|
|
|
selector := SqlKit.GetBean("t_base_teacher")
|
|
|
SqlKit.DeleteCacheByIds(personIds, selector)
|
|
|
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:判断一个组织机构是不是部门
|
|
|
作者:黄海
|
|
|
时间:2020-07-17
|
|
|
*/
|
|
|
func IsBuMen(orgId string) bool {
|
|
|
//判断是单位还是部门
|
|
|
list := SqlKit.QueryByIds([]string{orgId}, "t_base_organization")
|
|
|
if list[0]["org_type"].(float64) == 3 {
|
|
|
return true
|
|
|
}
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:根据单位名称的关键字和管理员的人员ID查询单位列表
|
|
|
作者:黄海
|
|
|
时间:2020-07-17
|
|
|
*/
|
|
|
func ListOrgInfoByOrgKeyWord(personId string, orgKeyWord string) ([]map[string]interface{}, error) {
|
|
|
//(1)根据personId获取它管辖的范围
|
|
|
sql := `select rule_id from t_base_role_person where person_id=? and role_id in ('5CC3293C-3AA5-45B7-B54B-CA8CC549FB81','BF61C95F-3ADD-4F37-9FCD-97E69E1BF6E3','A66C757C-F797-454D-99DE-2A3F5415BC22')`
|
|
|
list, err := db.SQL(sql, personId).Query().List()
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
if list == nil || len(list) == 0 {
|
|
|
return nil, errors.New("人员没有找到相应的管辖范围!")
|
|
|
}
|
|
|
//范围
|
|
|
ruleId := list[0]["rule_id"].(string)
|
|
|
//(2)构建SQL进行查询
|
|
|
var myBuilder = builder.Dialect(builder.MYSQL).Select("*").From("t_base_organization")
|
|
|
|
|
|
// 如果是超级管理员,那么没有这个条件限制
|
|
|
if ruleId != "100000" {
|
|
|
//如果是市管理员
|
|
|
if ruleId[len(ruleId)-2:] == "00" {
|
|
|
myBuilder.Where(builder.Eq{"city_code": ruleId})
|
|
|
} else {
|
|
|
//如果是县区管理员
|
|
|
myBuilder.Where(builder.Eq{"district_code": ruleId})
|
|
|
}
|
|
|
}
|
|
|
myBuilder.Where(builder.Eq{"b_use": 1})
|
|
|
myBuilder.Where(builder.Like{"org_name", orgKeyWord})
|
|
|
myBuilder.Where(builder.In("org_type", 1, 2, 7)).Limit(10, 0)
|
|
|
sql, _ = myBuilder.ToBoundSQL()
|
|
|
list, err = db.SQL(sql).Query().List()
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
return list, nil
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:根据市的行政区划码获取教育局列表
|
|
|
作者:黄海
|
|
|
时间:2020-07-17
|
|
|
*/
|
|
|
func ListEduByCityCode(cityCode string) ([]map[string]interface{}, error) {
|
|
|
sql := `select area_code,org_name from t_base_organization where org_type=1 and b_use=1 and area_code in
|
|
|
(select area_code from t_gov_area where master_code=? order by area_code) order by sort_id`
|
|
|
list, err := db.SQL(sql, cityCode).Query().List()
|
|
|
return list, err
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:将学校的附设班进行修改
|
|
|
作者:黄海
|
|
|
时间:2020-07-17
|
|
|
*/
|
|
|
func UpdateFsb(bureauId string, fsbCode []string) error {
|
|
|
//1、旧数据全面修改为-2
|
|
|
myBuilder := builder.Dialect(builder.MYSQL).Update(builder.Eq{"b_use": -2}).From("t_base_school_fsb").
|
|
|
Where(builder.Eq{"bureau_id": bureauId}).And(builder.Eq{"b_use": 1})
|
|
|
sql, err := myBuilder.ToBoundSQL()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
db.SQL(sql).Execute()
|
|
|
//2、增加新数据
|
|
|
for i := range fsbCode {
|
|
|
model := new(models.TBaseSchoolFsb)
|
|
|
model.Id = CommonUtil.GetUUID()
|
|
|
model.BureauId = bureauId
|
|
|
model.Fsxxbxlxm = fsbCode[i]
|
|
|
model.BUse = 1
|
|
|
db.Insert(model)
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:获取附设班信息
|
|
|
作者:黄海
|
|
|
时间:2020-08-21
|
|
|
*/
|
|
|
func GetFsb(bureauId string) ([]string, error) {
|
|
|
sql := `select * from t_base_school_fsb where b_use=1 and bureau_id=?`
|
|
|
list, err := db.SQL(sql, bureauId).Query().List()
|
|
|
var res = make([]string, 0)
|
|
|
for i := range list {
|
|
|
res = append(res, list[i]["fsxxbxlxm"].(string))
|
|
|
}
|
|
|
return res, err
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:根据单位代码,获取单位信息
|
|
|
作者:黄海
|
|
|
时间:2020-08-21
|
|
|
*/
|
|
|
func GetBureauInfoByCode(bureauCode string) ([]map[string]interface{}, error) {
|
|
|
sql := `select * from t_base_organization where b_use=1 and org_code=?`
|
|
|
list, err := db.SQL(sql, bureauCode).Query().List()
|
|
|
return list, err
|
|
|
}
|