package organize import ( "dashoo.cn/business2/userRole" "fmt" "strconv" "strings" "dashoo.cn/utils" . "dashoo.cn/utils/db" "github.com/go-xorm/xorm" ) type OrganizeService struct { ServiceBase } func GetOrganizeService(xormEngine *xorm.Engine) *OrganizeService { s := new(OrganizeService) s.DBE = xormEngine return s } //获得某节点的所有子节点(包括自身) func (s *OrganizeService) GetAllChildByTopId(topid, uid string) string { mod := new(Id_Str) s.DBE.Sql(`select fun_getOrganizechildlistuserid ('` + topid + `','` + uid + `') as Id`).Get(mod) return mod.Id } //获得某节点的所有父节点(包括自身) func (s *OrganizeService) GetAllParentByTopId(topid, uid string) string { mod := new(Id_Str) s.DBE.Sql(`select fun_getOrganizeparentlistuserid ('` + topid + `','` + uid + `') as Id`).Get(mod) return mod.Id } //根据AccCode获得某节点的所有父节点(包括自身) func (s *OrganizeService) GetAllParentByTopAccCode(topid, acccode string) string { mod := new(Id_Str) s.DBE.Sql(`select fun_getOrganizeparentlistuseracccode ('` + topid + `','` + acccode + `') as Id`).Get(mod) return mod.Id } //根据 func (s *OrganizeService) GetCollectionDetailviewlist(where string) []Base_Organizebandparentname { var sql string sql = `select * from Base_Organize where ParentId = ( select id from Base_Organize where ParentId = 0 and AccCode = ` + where + `)` List := make([]Base_Organizebandparentname, 0) utils.DBE.Sql(sql).Find(&List) return List } //根据ID获得名称 func (s *OrganizeService) GetNameById(id string) string { mod := new(Id_Str) s.DBE.Sql(`select Fullname Id from Base_Organize where Id = ` + id).Get(mod) return mod.Id } //判断是否有子节点 func (s *OrganizeService) IsHaveChild(id string) bool { mod := new(Id_Int) s.DBE.Sql(`select count(1) Id from Base_Organize where ParentId = ` + id).Get(mod) return mod.Id > 0 } //判断是否有用户使用 func (s *OrganizeService) IsHaveUserUse(id string) bool { mod := new(Id_Int) s.DBE.Sql(`select count(1) Id from Base_User where DepartmentId = ` + id).Get(mod) return mod.Id > 0 } //判断是否有设备使用 func (s *OrganizeService) IsHaveEquiUse(id string) bool { mod := new(Id_Int) s.DBE.Sql(`select count(1) Id from Equipment where OrganizeId = ` + id).Get(mod) return mod.Id > 0 } func (s *OrganizeService) GetListbandparentname(pageIndex, itemsPerPage int64, order, searchstring string) (int64, []Base_Organizebandparentname) { var err error var total int64 //获取总记录数 sqlCount := "select count(*) from Base_Organize a where " + searchstring + " " var sql, limitstr string = "", "" if pageIndex > 0 { limitstr = ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage) } sql = `select a.*,b.Fullname Parentname from Base_Organize a left join Base_Organize b on a.ParentId=b.Id where ` + searchstring + ` order by ` + order + limitstr List := make([]Base_Organizebandparentname, 0) utils.DBE.Sql(sql).Find(&List) resultsSlice, err := s.DBE.Query(sqlCount) LogError(err) if len(resultsSlice) > 0 { results := resultsSlice[0] for _, value := range results { total, err = strconv.ParseInt(string(value), 10, 64) LogError(err) break } } return total, List } func (s *OrganizeService) QueryEntity(where string) (entity Base_Organize) { sql := "select * from Base_Organize where " + where s.DBE.Sql(sql).Get(&entity) return } //根据 func (s *OrganizeService) GetAllChildById(topid string) string { mod := new(Id_Str) s.DBE.Sql(`select fun_getOrganizechildlist ('` + topid + `') as Id`).Get(mod) return mod.Id } //根据 物质类 func (s *OrganizeService) GetAllGoodsChildById(topid string) string { mod := new(Id_Str) s.DBE.Sql(`select fun_getOilGoodsAptitudeClasschildlist ('` + topid + `') as Id`).Get(mod) return mod.Id } //判断用户是否具有某角色 func (s *OrganizeService) UserInRoleById(userId, RoleId string) bool { var roleList []userRole.UserRoleModel sqlcommand := fmt.Sprintf(`select * from Base_Role b where b.Id=%v `, RoleId) s.DBE.SQL(sqlcommand).Find(&roleList) if len(roleList) <1{ return false }else{ roleidlist:=utils.RBAC.GetRolesForUserInDomain("uid_" + userId, utils.DOMAIN) return strings.Contains(strings.Join(roleidlist, ","), "rid_" + strconv.Itoa(roleList[0].Id)) } } //获得category为unit的父节点 func (s *OrganizeService) GetMyUnitDepartmentId(topid string) string { var entity Base_Organize ids := s.GetAllParentByTopAccCode(topid, "") if len(ids) <= 0 { //没有父节点 return topid } sql := "select * from Base_Organize where id in (" + ids + ") and Category='unit'" s.DBE.Sql(sql).Get(&entity) if &entity == nil || entity.Id <= 0 {//没有category为unit的父节点 return topid } return strconv.Itoa( entity.Id ) }