Explorar o código

Merge branch 'feature/eta2.3.4_business_user' into debug

xyxie hai 3 meses
pai
achega
ef63c28c4e

+ 40 - 3
controllers/chart_collect_stat.go

@@ -15,9 +15,9 @@ type ChartCollectStatController struct {
 	BaseAuthController
 }
 
-// SimpleList
-// @Title 单层分类列表
-// @Description 单层分类列表
+// UserStat
+// @Title 用户纬度统计收藏数据
+// @Description 用户纬度统计收藏数据
 // @Success 200 {object} data_manage.EdbClassifyListResp
 // @router /stat/user [get]
 func (this *ChartCollectStatController) UserStat() {
@@ -157,3 +157,40 @@ func (this *ChartCollectStatController) UserStat() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// ChartStat
+// @Title 图表纬度统计收藏数据
+// @Description 图表纬度统计收藏数据
+// @Success 200 {object} data_manage.EdbClassifyListResp
+// @router /stat/chart [get]
+func (this *ChartCollectStatController) ChartStat() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	statObj := new(chart_collect.ChartCollectStat)
+	resp := new(chart_collect.ChartStatListResp)
+	list, err := statObj.GetChartInfoStatusNum()
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+
+	if len(list) == 0 {
+		resp.List = make([]*chart_collect.ChartCollectChartStatItem, 0)
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = resp
+		return
+	}
+
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 55 - 13
controllers/eta_business/user.go

@@ -782,13 +782,6 @@ func (this *EtaBusinessUserController) ImportList() {
 	}
 }
 
-// 需要更新的联系人数据实体
-type UpdateWxUser struct {
-	OldWxUser models.User  `description:"旧的联系人数据orm实体(未变更前的)"`
-	WxUser    *models.User `description:"联系人数据orm实体"`
-	Cols      []string     `description:"需要修改的字段名切片"`
-}
-
 // @Title 批量导入联系人数据
 // @Description 批量导入联系人数据
 // @Param   File   query   file  true       "文件"
@@ -807,7 +800,15 @@ func (this *EtaBusinessUserController) Import() {
 		br.Msg = "请重新登录"
 		return
 	}
-	file, h, err := this.GetFile("File")
+	var req models.ImportUserReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	/*file, h, err := this.GetFile("File")
 	if err != nil {
 		br.Msg = "获取文件失败"
 		br.ErrMsg = "获取文件失败,Err:" + err.Error()
@@ -1021,7 +1022,45 @@ func (this *EtaBusinessUserController) Import() {
 			}
 		}
 	}
-
+	*/
+	excelUser := make([]*models.User, 0)
+	addUser := make([]*models.User, 0)
+	//excel中已经存在的数据,用来判断excel中是否存在相同手机号/邮箱,避免重复提交
+	excelData := make(map[string]string)
+	for _, v := range req.ValidUser {
+		// 查询商户信息
+		item := new(models.User)
+		item.CountryCode = v.CountryCode
+		item.RealName = v.RealName
+		item.PositionStatus = v.PositionStatus
+		item.Mobile = v.Mobile
+		item.UserName = v.Mobile
+		item.Position = v.Position
+		item.DepartmentName = v.DepartmentName
+		if v.BusinessCode != "" {
+			businessObj := new(eta_business.EtaBusiness)
+			businessInfo := new(eta_business.EtaBusiness)
+			businessInfo, err = businessObj.GetItemByBusinessCode(v.BusinessCode)
+			if err != nil {
+				if err.Error() == utils.ErrNoRow() {
+					utils.FileLog.Info("商户不存在")
+					continue
+				}
+				utils.FileLog.Info("获取商户信息失败, Err: " + err.Error())
+				continue
+			}
+			item.BusinessCode = businessInfo.BusinessCode
+			item.EtaBusinessId = businessInfo.EtaBusinessId
+		}
+		if _, ok := excelData[item.CountryCode+"_"+item.Mobile]; ok {
+			//将用户插入其中,然后退出当前循环,进入下一循环
+			//repeatUser = append(repeatUser, item)
+			continue
+		}
+		excelData[item.CountryCode+"_"+item.Mobile] = item.CountryCode
+		//没问题数据
+		excelUser = append(excelUser, item)
+	}
 	// 判断系统里该手机号是否已存在
 	mobiles := make([]string, 0)
 	for k, _ := range excelData {
@@ -1042,7 +1081,7 @@ func (this *EtaBusinessUserController) Import() {
 			existUserMap[user.CountryCode+"_"+user.Mobile] = struct{}{}
 		}
 	}
-	for _, v := range existUser {
+	for _, v := range excelUser {
 		if _, ok := existUserMap[v.CountryCode+"_"+v.Mobile]; !ok {
 			addUser = append(addUser, v)
 		}
@@ -1053,6 +1092,7 @@ func (this *EtaBusinessUserController) Import() {
 		if user.RealName != "" && user.Mobile != "" {
 			userData := new(models.User)
 			userData.RealName = user.RealName
+			userData.UserName = user.Mobile
 			userData.Mobile = user.Mobile
 			userData.CountryCode = user.CountryCode
 			userData.Email = user.Email
@@ -1062,7 +1102,9 @@ func (this *EtaBusinessUserController) Import() {
 			userData.EtaBusinessId = user.EtaBusinessId
 			userData.DepartmentName = user.DepartmentName
 			userData.CountryCode = user.CountryCode
-
+			userData.CreatedTime = time.Now()
+			userData.LastUpdatedTime = time.Now()
+			userData.Enabled = 1
 			//判断该手机号、邮箱是否已经添加,如果已经添加,那么就不再添加
 			var key string
 			key = "user:mobile:" + userData.Mobile
@@ -1079,9 +1121,9 @@ func (this *EtaBusinessUserController) Import() {
 			}
 		}
 	}
-	defer func() {
+	/*defer func() {
 		os.Remove(path)
-	}()
+	}()*/
 
 	br.Msg = "导入成功"
 	br.Ret = 200

+ 32 - 18
models/chart_collect/stat.go

@@ -10,6 +10,9 @@ import (
 type ChartCollectStat struct {
 	ChartCollectStatId int       `orm:"column(chart_collect_stat_id);pk"`
 	ChartInfoId        int       `description:"图表ID"`
+	ChartSource        int       `description:"1:ETA图库;2:商品价格曲线;3:相关性图"`
+	ChartName          string    `description:"图表名称"`
+	LastCollectTime    time.Time `description:"最后被收藏的时间"`
 	CollectDate        string    `description:"收藏日期"`
 	CollectNum         int       `description:"收藏的图表数量"`
 	CreateTime         time.Time `description:"创建时间"`
@@ -26,23 +29,16 @@ func GetChartCollectStatByChartInfoIdAndCollectDate(chartInfoId int, collectDate
 
 // 用户收藏图表每日汇总表
 type UserCollectChartStat struct {
-	UserChartStatId int       `orm:"column(user_chart_stat_id);pk"`
-	UserId          int       `description:"用户ID"`
-	BusinessCode    string    `description:"客户编码"`
-	RealName        string    `description:"用户姓名"`
-	CollectDate     string    `description:"收藏日期"`
-	CollectNum      int       `description:"收藏的图表数量"`
-	ChartSource     int       `description:"1:ETA图库;2:商品价格曲线;3:相关性图"`
-	CreateTime      time.Time `description:"创建时间"`
-	ModifyTime      time.Time `description:"修改时间"`
-}
-
-// 根据用户ID和日期获取图表收藏统计信息
-func GetUserCollectChartStatByUserIdAndCollectDate(userId int, collectDate string) (stat *UserCollectChartStat, err error) {
-	o := orm.NewOrm()
-	sql := "SELECT * FROM chart_collect_stat WHERE user_id = ? AND collect_date = ?"
-	err = o.Raw(sql, userId, collectDate).QueryRow(&stat)
-	return
+	UserChartStatId      int    `orm:"column(user_chart_stat_id);pk"`
+	UserId               int    `description:"用户ID"`
+	BusinessCode         string `description:"客户编码"`
+	EtaBusinessId        int
+	RealName             string    `description:"用户姓名"`
+	CollectDate          string    `description:"收藏日期"`
+	CollectNum           int       `description:"收藏的图表数量"`
+	LastCollectChartTime time.Time `description:"最近收藏图表时间"`
+	CreateTime           time.Time `description:"创建时间"`
+	ModifyTime           time.Time `description:"修改时间"`
 }
 
 // 获取该用户数量
@@ -65,7 +61,7 @@ func (u *UserCollectChartStat) GetPageListByCondition(condition string, pars []i
 		tmpSql += condition
 	}
 	if order != "" {
-		tmpSql += ` ORDER BY ` + order + " user_chart_stat_id DESC"
+		tmpSql += ` ORDER BY ` + order + ", user_chart_stat_id DESC"
 	} else {
 		tmpSql += ` ORDER BY user_chart_stat_id DESC`
 	}
@@ -89,3 +85,21 @@ type UserCollectChartStatItem struct {
 	CollectDate          string
 	LastCollectChartTime string
 }
+
+type ChartCollectChartStatItem struct {
+	ChartInfoId     int    `description:"图表ID"`
+	ChartName       string `description:"图表名称"`
+	LastCollectTime string `description:"最后被收藏的时间"`
+	CollectNum      int    `description:"收藏的图表数量"`
+}
+type ChartStatListResp struct {
+	List []*ChartCollectChartStatItem
+}
+
+// 获取该用户列表
+func (u *ChartCollectStat) GetChartInfoStatusNum() (items []*ChartCollectChartStatItem, err error) {
+	o := orm.NewOrm()
+	tmpSql := `SELECT sum(collect_num) as collect_num, max(last_collect_time) as last_collect_time, chart_info_id, chart_name FROM chart_collect_stat  group by chart_info_id ORDER BY sum(collect_num) DESC limit 0, 20`
+	_, err = o.Raw(tmpSql).QueryRows(&items)
+	return
+}

+ 17 - 0
models/chart_info.go

@@ -1564,6 +1564,23 @@ func GetChartInfoListByChartIdList(charIdList []string) (items []*ChartInfo, err
 	return
 }
 
+// GetChartInfoListByChartIds
+// @Description: 根据图表id列表获取列表信息
+// @param edbIdList
+// @return items
+// @return err
+func GetChartInfoListByChartIds(charIdList []int) (items []*ChartInfo, err error) {
+	num := len(charIdList)
+	if num <= 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM chart_info WHERE chart_info_id in (` + utils.GetOrmInReplace(num) + `) ORDER BY chart_info_id desc `
+
+	_, err = o.Raw(sql, charIdList).QueryRows(&items)
+	return
+}
+
 // GetChartInfoListByUserId
 // @Description: 根据图表id列表获取列表信息
 // @param userIdList []int

+ 17 - 0
models/user.go

@@ -176,6 +176,23 @@ type ImportListResp struct {
 	RepeatUser []*User `description:"重复客户数据"`
 }
 
+// 联系人导入预览数据返回
+type ImportUserReq struct {
+	ValidUser []*ImportUserItem `description:"有效客户数据"`
+}
+
+type ImportUserItem struct {
+	BusinessCode   string
+	UserName       string `description:"用户名"`
+	RealName       string `description:"姓名"`
+	Mobile         string
+	NickName       string `description:"昵称"`
+	CountryCode    string `description:"区号,86、852、886等"`
+	DepartmentName string `description:"部门名称"`
+	Position       string `description:"岗位"`
+	PositionStatus int    `description:"在职状态:1:在职,0:离职"`
+}
+
 // 新增客户请求参数
 type ChangeUserBusinessReq struct {
 	UserId       int

+ 9 - 0
routers/commentsRouter.go

@@ -502,6 +502,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:ChartCollectStatController"] = append(beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:ChartCollectStatController"],
+        beego.ControllerComments{
+            Method: "ChartStat",
+            Router: `/stat/chart`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:ChartCollectStatController"] = append(beego.GlobalControllerRouter["eta/eta_forum_admin/controllers:ChartCollectStatController"],
         beego.ControllerComments{
             Method: "UserStat",