浏览代码

批量设置新分类

xyxie 10 月之前
父节点
当前提交
68edada60a
共有 5 个文件被更改,包括 353 次插入38 次删除
  1. 170 32
      controllers/chart_classify.go
  2. 123 0
      controllers/chart_info.go
  3. 11 0
      models/chart_classify.go
  4. 31 6
      models/chart_info.go
  5. 18 0
      routers/commentsRouter.go

+ 170 - 32
controllers/chart_classify.go

@@ -819,14 +819,15 @@ func (this *ChartClassifyController) ChartClassifyChartListV2() {
 
 	resp := new(models.ChartClassifyListResp)
 
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	sysUserIds := this.GetString("SysUserIds")
 	chartClassifyId, _ := this.GetInt("ChartClassifyId")
+
 	if chartClassifyId < 0 && chartClassifyId != -1 {
 		br.Msg = "参数错误"
 		return
 	}
-	pageSize, _ := this.GetInt("PageSize")
-	currentIndex, _ := this.GetInt("CurrentIndex")
-
 	var startSize int
 	if pageSize <= 0 {
 		pageSize = utils.PageSize20
@@ -836,10 +837,9 @@ func (this *ChartClassifyController) ChartClassifyChartListV2() {
 	}
 	startSize = utils.StartIndex(currentIndex, pageSize)
 
-	sysUserIds := this.GetString("SysUserIds")
-	allChartInfo := make([]*models.ChartClassifyItems, 0)
-	var err error
-	var total int64
+	condition := ""
+	pars := make([]interface{}, 0)
+
 	if sysUserIds != "" {
 		adminIds := strings.Split(sysUserIds, ",")
 		if len(adminIds) == 0 {
@@ -855,32 +855,27 @@ func (this *ChartClassifyController) ChartClassifyChartListV2() {
 			}
 			adminIdsSlice = append(adminIdsSlice, adminIdInt)
 		}
-		allChartInfo, err = models.GetChartInfoByAdminIdAndClassify([]int{utils.CHART_SOURCE_DEFAULT}, adminIdsSlice, chartClassifyId, startSize, pageSize)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
-			return
-		}
-		total, err = models.GetChartInfoTotalByAdminIdAndClassify([]int{utils.CHART_SOURCE_DEFAULT}, adminIdsSlice, chartClassifyId)
-		if err != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取图表总数失败,Err:" + err.Error()
-			return
-		}
-	} else {
-		allChartInfo, err = models.GetChartInfoByClassifyId(utils.CHART_SOURCE_DEFAULT, chartClassifyId, startSize, pageSize)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
-			return
-		}
-		total, err = models.GetChartInfoTotalByClassifyId(utils.CHART_SOURCE_DEFAULT, chartClassifyId)
-		if err != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取图表总数失败,Err:" + err.Error()
-			return
-		}
+		condition += "  AND sys_user_id in (" + utils.GetOrmInReplace(len(adminIds)) + ") "
+		pars = append(pars, adminIdsSlice)
+	}
+	if chartClassifyId >= 0 {
+		condition += " AND chart_classify_id = ?"
+		pars = append(pars, chartClassifyId)
 	}
+
+	allChartInfo, err := models.GetChartInfoByConditionPage(utils.CHART_SOURCE_DEFAULT, condition, pars, startSize, pageSize)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
+		return
+	}
+	total, err := models.GetChartInfoTotalByCondition(utils.CHART_SOURCE_DEFAULT, condition, pars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取图表总数失败,Err:" + err.Error()
+		return
+	}
+
 	if len(allChartInfo) > 0 {
 		adminIds := make([]int, 0)
 		for _, v := range allChartInfo {
@@ -908,3 +903,146 @@ func (this *ChartClassifyController) ChartClassifyChartListV2() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// ModifyChartClassify
+// @Title 批量修改图表分类
+// @Description 批量修改图表分类
+// @Param   SysUserIds   query   string  true       "根据创建人查询"
+// @Param   ChartClassifyIds   query   string  true       "图片分类id"
+// @Success 200 {object} models.ChartClassifyListResp
+// @router /modify_chart_classify [post]
+func (this *ChartClassifyController) ModifyChartClassify() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	var req models.ModifyChartClassifyReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if !req.SelectAll && req.ChartInfoIds == "" {
+		br.Msg = "请选择图表"
+		return
+	}
+	if req.ChartClassifyId < 0 {
+		br.Msg = "请选择新分类"
+		return
+	}
+
+	var chartIds []int
+
+	if req.SelectAll {
+		//根据查询条件筛选
+		chartClassifyIds := req.ChartClassifyIds
+		sysUserIds := req.SysUserIds
+		chartName := req.ChartName
+
+		condition := " AND source = ? "
+		pars := make([]interface{}, 0)
+		pars = append(pars, utils.CHART_SOURCE_DEFAULT)
+
+		if chartClassifyIds != "" {
+			classifyIds := strings.Split(chartClassifyIds, ",")
+			if len(classifyIds) == 0 {
+				br.Msg = "请选择正确的分类"
+				return
+			}
+			classifyIdSlice := make([]int, 0)
+			for _, id := range classifyIds {
+				tmp, e := strconv.Atoi(id)
+				if e != nil {
+					br.Msg = "请选择正确的分类"
+					return
+				}
+				classifyIdSlice = append(classifyIdSlice, tmp)
+			}
+			condition += "  AND chart_classify_id in (" + utils.GetOrmInReplace(len(classifyIdSlice)) + ") "
+			pars = append(pars, classifyIdSlice)
+		}
+
+		if sysUserIds != "" {
+			adminIds := strings.Split(sysUserIds, ",")
+			if len(adminIds) == 0 {
+				br.Msg = "请选择正确的创建人"
+				return
+			}
+			adminIdsSlice := make([]int, 0)
+			for _, adminId := range adminIds {
+				adminIdInt, e := strconv.Atoi(adminId)
+				if e != nil {
+					br.Msg = "请选择正确的创建人"
+					return
+				}
+				adminIdsSlice = append(adminIdsSlice, adminIdInt)
+			}
+			condition += "  AND sys_user_id in (" + utils.GetOrmInReplace(len(adminIds)) + ") "
+			pars = append(pars, adminIdsSlice)
+		}
+		if chartName != "" {
+			condition = " AND chart_name LIKE ? "
+			pars = append(pars, utils.GetLikeKeyword(chartName))
+		}
+		allChartInfo, err := models.GetChartInfoItemsByCondition(condition, pars)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
+			return
+		}
+		// 判断是否超过100 个
+		if len(allChartInfo) > 100 {
+			br.Msg = "最多只能选择100个图表"
+			return
+		}
+		for _, v := range allChartInfo {
+			chartIds = append(chartIds, v.ChartInfoId)
+		}
+	} else {
+		chartIdStr := strings.Split(req.ChartInfoIds, ",")
+		if len(chartIdStr) == 0 {
+			br.Msg = "请选择正确的图表"
+			return
+		}
+		for _, id := range chartIdStr {
+			tmp, e := strconv.Atoi(id)
+			if e != nil {
+				br.Msg = "请选择正确的分类"
+				return
+			}
+			chartIds = append(chartIds, tmp)
+		}
+		// 判断是否超过100 个
+		if len(chartIds) > 100 {
+			br.Msg = "最多只能选择100个图表"
+			return
+		}
+	}
+
+	if len(chartIds) == 0 {
+		br.Msg = "请选择正确的图表"
+		return
+	}
+
+	err = models.UpdateChartClassifyIdByChartInfoId(chartIds, req.ChartClassifyId)
+	if err != nil {
+		br.Msg = "更新失败"
+		br.ErrMsg = "更新图表分类失败,Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}

+ 123 - 0
controllers/chart_info.go

@@ -360,3 +360,126 @@ func (this *ChartInfoController) ChartInfoSearchByEs() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// ChartList
+// @Title 根据分类创建人姓名等获取图表列表
+// @Description 根据分类创建人姓名等获取图表列表
+// @Param   SysUserIds   query   string  true       "根据创建人查询"
+// @Param   ChartClassifyIds   query   string  true       "图片分类id"
+// @Success 200 {object} models.ChartClassifyListResp
+// @router /list [get]
+func (this *ChartClassifyController) ChartList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	resp := new(models.ChartClassifyListResp)
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	chartClassifyIds := this.GetString("ChartClassifyIds")
+	sysUserIds := this.GetString("SysUserIds")
+	chartName := this.GetString("ChartName")
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = utils.StartIndex(currentIndex, pageSize)
+
+	condition := ""
+	pars := make([]interface{}, 0)
+
+	if chartClassifyIds != "" {
+		classifyIds := strings.Split(chartClassifyIds, ",")
+		if len(classifyIds) == 0 {
+			br.Msg = "请选择正确的分类"
+			return
+		}
+		classifyIdSlice := make([]int, 0)
+		for _, id := range classifyIds {
+			tmp, e := strconv.Atoi(id)
+			if e != nil {
+				br.Msg = "请选择正确的分类"
+				return
+			}
+			classifyIdSlice = append(classifyIdSlice, tmp)
+		}
+		condition += "  AND chart_classify_id in (" + utils.GetOrmInReplace(len(classifyIdSlice)) + ") "
+		pars = append(pars, classifyIdSlice)
+	}
+
+	if sysUserIds != "" {
+		adminIds := strings.Split(sysUserIds, ",")
+		if len(adminIds) == 0 {
+			br.Msg = "请选择正确的创建人"
+			return
+		}
+		adminIdsSlice := make([]int, 0)
+		for _, adminId := range adminIds {
+			adminIdInt, e := strconv.Atoi(adminId)
+			if e != nil {
+				br.Msg = "请选择正确的创建人"
+				return
+			}
+			adminIdsSlice = append(adminIdsSlice, adminIdInt)
+		}
+		condition += "  AND sys_user_id in (" + utils.GetOrmInReplace(len(adminIds)) + ") "
+		pars = append(pars, adminIdsSlice)
+	}
+	if chartName != "" {
+		condition = " AND chart_name LIKE ? "
+		pars = append(pars, utils.GetLikeKeyword(chartName))
+	}
+	allChartInfo, err := models.GetChartInfoByConditionPage(utils.CHART_SOURCE_DEFAULT, condition, pars, startSize, pageSize)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
+		return
+	}
+	total, err := models.GetChartInfoTotalByCondition(utils.CHART_SOURCE_DEFAULT, condition, pars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取图表总数失败,Err:" + err.Error()
+		return
+	}
+
+	if len(allChartInfo) > 0 {
+		adminIds := make([]int, 0)
+		for _, v := range allChartInfo {
+			adminIds = append(adminIds, v.SysUserId)
+		}
+		adminCompanyMap, er := services.GetCompanyNameByAdmins(adminIds)
+		if er != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取机构失败,Err:" + er.Error()
+			return
+		}
+		for k, v := range allChartInfo {
+			v.Children = make([]*models.ChartClassifyItems, 0)
+			if n, ok := adminCompanyMap[v.SysUserId]; ok {
+				allChartInfo[k].Company = n
+			}
+		}
+	}
+	page := paging.GetPaging(currentIndex, pageSize, int(total))
+	resp.AllNodes = allChartInfo
+	resp.Paging = page
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 11 - 0
models/chart_classify.go

@@ -240,6 +240,17 @@ type MoveChartClassifyReq struct {
 	NextChartInfoId int `description:"下一个图表ID"`
 }
 
+// ModifyChartClassifyReq 设置图表分类请求参数
+type ModifyChartClassifyReq struct {
+	SelectAll        bool
+	ChartClassifyIds string
+	SysUserIds       string
+	ChartName        string
+
+	ChartInfoIds    string `description:"图表ID"`
+	ChartClassifyId int    `description:"新图表分类"`
+}
+
 // GetFirstChartClassifyByParentId 获取当前父级图表分类下的排序第一条的数据
 func GetFirstChartClassifyByParentId(parentId int) (item *ChartClassify, err error) {
 	o := orm.NewOrm()

+ 31 - 6
models/chart_info.go

@@ -317,6 +317,16 @@ func GetChartInfoByCondition(condition string, pars []interface{}) (item *ChartI
 	return
 }
 
+func GetChartInfoItemsByCondition(condition string, pars []interface{}) (item []*ChartInfo, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM chart_info WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
 func GetChartInfoByNewest(source int) (item *ChartInfoList, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT * FROM chart_info WHERE 1=1 AND source = ? ORDER BY modify_time DESC LIMIT 1 `
@@ -1273,6 +1283,14 @@ func UpdateChartInfoSortByClassifyId(classifyId, nowSort, prevChartInfoId int, s
 	return
 }
 
+// UpdateChartClassifyIdByChartInfoId 根据图表分类ID
+func UpdateChartClassifyIdByChartInfoId(chartInfoIds []int, classifyId int) (err error) {
+	o := orm.NewOrm()
+	sql := ` update chart_info set chart_classify_id = ? WHERE chart_info_id in (` + utils.GetOrmInReplace(len(chartInfoIds)) + `) `
+	_, err = o.Raw(sql, classifyId, chartInfoIds).Exec()
+	return
+}
+
 // Update 更新图表基础信息
 func (chartInfo *ChartInfo) Update(cols []string) (err error) {
 	o := orm.NewOrm()
@@ -1831,20 +1849,27 @@ func GetChartInfoAllByClassifyIdAndAdmin(source, classifyId int, adminIds []int)
 	return
 }
 
-func GetChartInfoByClassifyId(source, classifyId, startSize, pageSize int) (items []*ChartClassifyItems, err error) {
+func GetChartInfoByConditionPage(source int, condition string, pars []interface{}, startSize, pageSize int) (items []*ChartClassifyItems, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT chart_info_id,chart_classify_id,chart_name AS chart_classify_name,chart_name_en AS chart_classify_name_en,
              unique_code,sys_user_id,sys_user_real_name,date_type,start_date,end_date,chart_type,calendar,season_start_date,season_end_date,is_join_permission
-            FROM chart_info WHERE chart_classify_id = ? AND source = ?  ORDER BY sort asc,create_time DESC  LIMIT ?,? `
-	_, err = o.Raw(sql, classifyId, source, startSize, pageSize).QueryRows(&items)
+            FROM chart_info WHERE source = ? `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY sort asc,create_time DESC  LIMIT ?,? `
+	_, err = o.Raw(sql, source, pars, startSize, pageSize).QueryRows(&items)
 	return
 }
 
-func GetChartInfoTotalByClassifyId(source, classifyId int) (total int64, err error) {
+func GetChartInfoTotalByCondition(source int, condition string, pars []interface{}) (total int64, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT count(*)
-            FROM chart_info WHERE chart_classify_id = ? AND source = ?  ORDER BY sort asc,create_time DESC `
-	err = o.Raw(sql, classifyId, source).QueryRow(&total)
+            FROM chart_info WHERE source = ?`
+	if condition != "" {
+		sql += condition
+	}
+	err = o.Raw(sql, source, pars).QueryRow(&total)
 	return
 }
 

+ 18 - 0
routers/commentsRouter.go

@@ -97,6 +97,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:ChartClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:ChartClassifyController"],
+        beego.ControllerComments{
+            Method: "ChartList",
+            Router: `/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:ChartClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:ChartClassifyController"],
+        beego.ControllerComments{
+            Method: "ModifyChartClassify",
+            Router: `/modify_chart_classify`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:ChartInfoController"],
         beego.ControllerComments{
             Method: "ChartInfoDetail",