|
@@ -0,0 +1,162 @@
|
|
|
+package controllers
|
|
|
+
|
|
|
+import (
|
|
|
+ "eta/eta_forum_admin/models"
|
|
|
+ "eta/eta_forum_admin/models/chart_collect"
|
|
|
+ "eta/eta_forum_admin/models/eta_business"
|
|
|
+ "eta/eta_forum_admin/utils"
|
|
|
+ "github.com/rdlucklib/rdluck_tools/paging"
|
|
|
+ "strconv"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+type ChartCollectStatController struct {
|
|
|
+ BaseAuthController
|
|
|
+}
|
|
|
+
|
|
|
+// SimpleList
|
|
|
+// @Title 单层分类列表
|
|
|
+// @Description 单层分类列表
|
|
|
+// @Success 200 {object} data_manage.EdbClassifyListResp
|
|
|
+// @router /stat/user [get]
|
|
|
+func (this *ChartCollectStatController) UserStat() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ // 默认查一级分类和一级分类下的指标信息,
|
|
|
+ // 如果是 子级分类,查询该子级分类的下一级分类和指标信息
|
|
|
+ // 增加标识判断是文件夹还是指标列表
|
|
|
+ startDate := this.GetString("StartDate")
|
|
|
+ endDate := this.GetString("EndDate")
|
|
|
+ etaBusinessIds := this.GetString("EtaBusinessIds")
|
|
|
+ pageSize, _ := this.GetInt("PageSize")
|
|
|
+ currentIndex, _ := this.GetInt("CurrentIndex")
|
|
|
+
|
|
|
+ sortType := this.GetString("SortType")
|
|
|
+ sortParam := this.GetString("SortParam")
|
|
|
+
|
|
|
+ var startSize int
|
|
|
+ if pageSize <= 0 {
|
|
|
+ pageSize = utils.PageSize20
|
|
|
+ }
|
|
|
+ if currentIndex <= 0 {
|
|
|
+ currentIndex = 1
|
|
|
+ }
|
|
|
+ startSize = paging.StartIndex(currentIndex, pageSize)
|
|
|
+
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+
|
|
|
+ if etaBusinessIds != "" {
|
|
|
+ businessIdsSlice := make([]int, 0)
|
|
|
+ businessIds := strings.Split(etaBusinessIds, ",")
|
|
|
+ if len(businessIds) == 0 {
|
|
|
+ br.Msg = "请选择正确的商家"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, id := range businessIds {
|
|
|
+ if id != "" {
|
|
|
+ adminIdInt, e := strconv.Atoi(id)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "请选择正确的商家"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ businessIdsSlice = append(businessIdsSlice, adminIdInt)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(businessIdsSlice) > 0 {
|
|
|
+ condition += ` AND u.eta_business_id IN (` + utils.GetOrmInReplace(len(businessIdsSlice)) + `) `
|
|
|
+ pars = append(pars, businessIdsSlice)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if startDate != "" {
|
|
|
+ // 校验日期格式
|
|
|
+ _, err := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "请选择正确的开始日期"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ condition += ` AND s.collect_date >= ? `
|
|
|
+ pars = append(pars, startDate)
|
|
|
+ }
|
|
|
+ if endDate != "" {
|
|
|
+ // 校验日期格式
|
|
|
+ endTime, err := time.ParseInLocation(utils.FormatDate, endDate, time.Local)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "请选择正确的结束日期"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ condition += ` AND s.collect_date < ? `
|
|
|
+ nextDate := endTime.AddDate(0, 0, 1).Format(utils.FormatDate)
|
|
|
+ pars = append(pars, nextDate)
|
|
|
+ }
|
|
|
+ order := ""
|
|
|
+ if sortParam == "CollectDate" {
|
|
|
+ if sortType == "desc" || sortType == "asc" {
|
|
|
+ order = sortParam + " " + sortType
|
|
|
+ }
|
|
|
+ }
|
|
|
+ statObj := new(chart_collect.UserCollectChartStat)
|
|
|
+
|
|
|
+ total, err := statObj.GetCountByCondition(condition, pars)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取数据总数失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, total)
|
|
|
+ resp := new(models.UserListResp)
|
|
|
+ userList := make([]*models.BusinessUser, 0)
|
|
|
+ if total == 0 {
|
|
|
+ resp.List = userList
|
|
|
+ resp.Paging = page
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+ return
|
|
|
+ }
|
|
|
+ list, err := statObj.GetPageListByCondition(condition, pars, order, startSize, pageSize)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 查找商户信息
|
|
|
+ businessCodeStr := make([]string, 0)
|
|
|
+ businessCodeMap := make(map[string]string)
|
|
|
+ for _, v := range list {
|
|
|
+ if _, ok := businessCodeMap[v.BusinessCode]; ok {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ businessCodeStr = append(businessCodeStr, v.BusinessCode)
|
|
|
+ }
|
|
|
+ obj := new(eta_business.EtaBusiness)
|
|
|
+ condition1 := " AND business_code IN (" + utils.GetOrmInReplace(len(businessCodeStr)) + ") "
|
|
|
+ var pars1 []interface{}
|
|
|
+ pars1 = append(pars1, businessCodeStr)
|
|
|
+ businessList, err := obj.GetItemsByCondition(condition1, pars1, []string{"business_code", "business_name"}, "")
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取商户信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range businessList {
|
|
|
+ businessCodeMap[v.BusinessCode] = v.BusinessName
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range list {
|
|
|
+ if businessName, ok := businessCodeMap[v.BusinessCode]; ok {
|
|
|
+ v.BusinessName = businessName
|
|
|
+ }
|
|
|
+ }
|
|
|
+ resp.List = userList
|
|
|
+ resp.Paging = page
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|