package SchoolController import ( "dsBigData/Business/Area/AreaService" "dsBigData/Business/Dict/DictService" "dsBigData/Business/School/SchoolModel" "dsBigData/Business/School/SchoolService" "dsBigData/Model" "dsBigData/Utils/CommonUtil" "encoding/json" "github.com/gin-gonic/gin" "net/http" ) //模块的路由配置 func Routers(r *gin.RouterGroup) { rr := r.Group("/school") rr.GET("/GetSchoolCountByCity", GetSchoolCountByCity) rr.GET("/GetEduAssistCountByCity", GetEduAssistCountByCity) return } /** 功能:根据市获取各区的教辅单位个数 */ func GetEduAssistCountByCity(c *gin.Context) { areaType := c.Query("areaType") cityCode := c.Query("cityCode") //获取区信息 areaInfo, err := AreaService.PageDistrictByCityCode(cityCode, areaType) if err != nil { c.JSON(http.StatusOK, Model.Res{ Success: false, Message: err.Error(), }) return } //生成区信息的数组 areaCodeArr := make([]string, 0) for i := range areaInfo { areaCodeArr = append(areaCodeArr, areaInfo[i].AreaCode) } resArr, err := SchoolService.AggsDistrictStatEduAssist(areaCodeArr) if err != nil { c.JSON(http.StatusOK, Model.Res{ Success: false, Message: err.Error(), }) return } resArrByte, _ := json.Marshal(resArr) resList := CommonUtil.ConvertJsonStringToMapArray(string(resArrByte)) resMap := make(map[string]int) for i := 0; i < len(resList); i++ { areaCode := resList[i]["area_code"].(string) count := CommonUtil.ConvertStringToInt(resList[i]["count"].(string)) resMap[areaCode] = count } eduAssistCountArr := make([]SchoolModel.EduAssistCount, 0) for i := range areaInfo { var eduAssistCount SchoolModel.EduAssistCount areaCode := areaInfo[i].AreaCode areaName := areaInfo[i].AreaName eduAssistCount.AreaCode = areaCode eduAssistCount.AreaName = areaName if _, ok := resMap[areaCode]; ok { eduAssistCount.Count = resMap[areaCode] } eduAssistCountArr = append(eduAssistCountArr, eduAssistCount) } c.JSON(http.StatusOK, Model.Res{ Success: true, List: eduAssistCountArr, }) } /** 功能:根据市获取各区的学校个数 */ func GetSchoolCountByCity(c *gin.Context) { areaType := c.Query("areaType") cityCode := c.Query("cityCode") xxbxlx := c.Query("xxbxlx") aggsXxbxlx := false if xxbxlx == "1" { aggsXxbxlx = true } //获取区信息 areaInfo, err := AreaService.PageDistrictByCityCode(cityCode, areaType) if err != nil { c.JSON(http.StatusOK, Model.Res{ Success: false, Message: err.Error(), }) return } //生成区信息的数组 areaCodeArr := make([]string, 0) for i := range areaInfo { areaCodeArr = append(areaCodeArr, areaInfo[i].AreaCode) } resArr, err := SchoolService.AggsDistrictStatSchoolCount(areaCodeArr) if err != nil { c.JSON(http.StatusOK, Model.Res{ Success: false, Message: err.Error(), }) return } resArrByte, _ := json.Marshal(resArr) resList := CommonUtil.ConvertJsonStringToMapArray(string(resArrByte)) resMap := make(map[string]int) for i := 0; i < len(resList); i++ { areaCode := resList[i]["area_code"].(string) count := CommonUtil.ConvertStringToInt(resList[i]["count"].(string)) resMap[areaCode] = count } //获取办学类型信息 xxbxlxInfo, err := DictService.GetDictInfo("xxbxlxm") if err != nil { c.JSON(http.StatusOK, Model.Res{ Success: false, Message: err.Error(), }) return } schoolCountArr := make([]SchoolModel.SchoolCount, 0) for i := range areaInfo { var schoolCount SchoolModel.SchoolCount areaCode := areaInfo[i].AreaCode areaName := areaInfo[i].AreaName schoolCount.AreaCode = areaCode schoolCount.AreaName = areaName if _, ok := resMap[areaCode]; ok { schoolCount.Count = resMap[areaCode] } xxbxlxArr := make([]SchoolModel.Xxbxlx, 0) if aggsXxbxlx { resArr, err := SchoolService.AggsXxbxlxStatSchoolCountByDistrictCode(areaCode) if err != nil { c.JSON(http.StatusOK, Model.Res{ Success: false, Message: err.Error(), }) return } resArrByte, _ := json.Marshal(resArr) resList := CommonUtil.ConvertJsonStringToMapArray(string(resArrByte)) resMap := make(map[string]int) for i := 0; i < len(resList); i++ { areaCode := resList[i]["xxbxlxm"].(string) count := CommonUtil.ConvertStringToInt(resList[i]["count"].(string)) resMap[areaCode] = count } for j := range xxbxlxInfo { var xxbxlx SchoolModel.Xxbxlx dictCode := xxbxlxInfo[j].DictCode dictValue := xxbxlxInfo[j].DictValue xxbxlx.XxbxlxCode = dictCode xxbxlx.XxbxlxName = dictValue if _, ok := resMap[dictCode]; ok { xxbxlx.Count = resMap[dictCode] } xxbxlxArr = append(xxbxlxArr, xxbxlx) } } schoolCount.Xxbxlx = xxbxlxArr schoolCountArr = append(schoolCountArr, schoolCount) } schoolCountArrByte, _ := json.Marshal(schoolCountArr) schoolCountArrStr := string(schoolCountArrByte) if !aggsXxbxlx { schoolCountArrStr = CommonUtil.RemoveArrKey(schoolCountArrStr, "xxbxlx") } c.JSON(http.StatusOK, Model.Res{ Success: true, List: CommonUtil.ConvertJsonStringToMapArray(schoolCountArrStr), }) }