Browse Source

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

xyxie 1 month ago
parent
commit
e574edd719

+ 95 - 2
controllers/chart_collect_stat.go

@@ -101,7 +101,7 @@ func (this *ChartCollectStatController) UserStat() {
 	}
 	statObj := new(chart_collect.UserCollectChartStat)
 
-	total, err := statObj.GetCountByCondition(condition, pars)
+	total, err := statObj.GetGroupUserCountByCondition(condition, pars)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据总数失败,Err:" + err.Error()
@@ -119,7 +119,7 @@ func (this *ChartCollectStatController) UserStat() {
 		br.Data = resp
 		return
 	}
-	list, err = statObj.GetPageListByCondition(condition, pars, order, startSize, pageSize)
+	list, err = statObj.GetGroupUserPageListByCondition(condition, pars, order, startSize, pageSize)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -194,3 +194,96 @@ func (this *ChartCollectStatController) ChartStat() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// UserDetailList
+// @Title 用户纬度统计收藏图表列表
+// @Description 用户纬度统计收藏图表列表
+// @Success 200 {object} data_manage.EdbClassifyListResp
+// @router /stat/user/detailList [get]
+func (this *ChartCollectStatController) UserDetailList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	// 默认查一级分类和一级分类下的指标信息,
+	// 如果是 子级分类,查询该子级分类的下一级分类和指标信息
+	// 增加标识判断是文件夹还是指标列表
+	startDate := this.GetString("StartDate")
+	endDate := this.GetString("EndDate")
+	userId, _ := this.GetInt("UserId")
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+
+	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 userId == 0 {
+		br.Msg = "请选择用户"
+		return
+	}
+	condition += ` AND user_id = ? `
+	pars = append(pars, userId)
+	if startDate != "" {
+		// 校验日期格式
+		_, err := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
+		if err != nil {
+			br.Msg = "请选择正确的开始日期"
+			return
+		}
+		condition += ` AND collect_time >= ? `
+		pars = append(pars, startDate)
+	}
+	if endDate != "" {
+		// 校验日期格式
+		endTime, err := time.ParseInLocation(utils.FormatDate, endDate, time.Local)
+		if err != nil {
+			br.Msg = "请选择正确的结束日期"
+			return
+		}
+		condition += ` AND collect_time < ? `
+		nextDate := endTime.AddDate(0, 0, 1).Format(utils.FormatDate)
+		pars = append(pars, nextDate)
+	}
+
+	total, err := chart_collect.GetChartCollectCountByCondition(condition, pars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据总数失败,Err:" + err.Error()
+		return
+	}
+	page := paging.GetPaging(currentIndex, pageSize, int(total))
+	resp := new(chart_collect.ChartCollectListResp)
+	list := make([]*chart_collect.ChartCollectView, 0)
+	if total == 0 {
+		resp.List = list
+		resp.Paging = page
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = resp
+		return
+	}
+	list, err = chart_collect.GetChartCollectPageByCondition(condition, pars, startSize, pageSize)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+
+	resp.List = list
+	resp.Paging = page
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 20 - 13
controllers/eta_business/user.go

@@ -53,6 +53,7 @@ func (this *EtaBusinessUserController) List() {
 	positionStatus, _ := this.GetInt("PositionStatus", -1)
 	enabled, _ := this.GetInt("Enabled", -1)
 	businessCode := this.GetString("BusinessCode")
+	etaBusinessId, _ := this.GetInt("EtaBusinessId")
 	keyword := utils.TrimStr(this.GetString("Keyword"))
 
 	sortType := this.GetString("SortType")
@@ -84,6 +85,11 @@ func (this *EtaBusinessUserController) List() {
 		pars = append(pars, businessCode)
 	}
 
+	if etaBusinessId != 0 {
+		condition += ` AND eta_business_id = ? `
+		pars = append(pars, etaBusinessId)
+	}
+
 	if positionStatus > 0 {
 		condition += ` AND position_status = ? `
 		pars = append(pars, positionStatus)
@@ -215,7 +221,7 @@ func (this *EtaBusinessUserController) AddUser() {
 		return
 	}
 
-	if req.BusinessCode == "" {
+	if req.EtaBusinessId == 0 {
 		br.Msg = "请选择客户"
 		br.IsSendEmail = false
 		return
@@ -247,7 +253,7 @@ func (this *EtaBusinessUserController) AddUser() {
 
 	businessObj := new(eta_business.EtaBusiness)
 
-	businessInfo, err := businessObj.GetItemByBusinessCode(req.BusinessCode)
+	businessInfo, err := businessObj.GetItemById(req.EtaBusinessId)
 	if err != nil {
 		if err.Error() == utils.ErrNoRow() {
 			br.Msg = "商户不存在"
@@ -291,7 +297,7 @@ func (this *EtaBusinessUserController) AddUser() {
 	user.Position = req.Position
 	user.PositionStatus = req.PositionStatus
 	user.Enabled = 1
-	user.BusinessCode = req.BusinessCode
+	user.BusinessCode = businessInfo.BusinessCode
 	user.EtaBusinessId = businessInfo.EtaBusinessId
 	user.DepartmentName = req.DepartmentName
 	user.CreatedTime = time.Now()
@@ -433,7 +439,7 @@ func (this *EtaBusinessUserController) EditUser() {
 		return
 	}
 
-	if req.BusinessCode == "" {
+	if req.EtaBusinessId == 0 {
 		br.Msg = "请选择客户"
 		br.IsSendEmail = false
 		return
@@ -457,7 +463,7 @@ func (this *EtaBusinessUserController) EditUser() {
 
 	businessObj := new(eta_business.EtaBusiness)
 
-	businessInfo, err := businessObj.GetItemByBusinessCode(req.BusinessCode)
+	businessInfo, err := businessObj.GetItemById(req.EtaBusinessId)
 	if err != nil {
 		if err.Error() == utils.ErrNoRow() {
 			br.Msg = "商户不存在"
@@ -495,7 +501,7 @@ func (this *EtaBusinessUserController) EditUser() {
 	}
 
 	//待更新字段
-	updateCol := []string{"RealName", "Mobile", "UserName", "LastUpdatedTime", "Position", "PositionStatus", "DepartmentName", "BusinessCode", "CountryCode"}
+	updateCol := []string{"RealName", "Mobile", "UserName", "LastUpdatedTime", "Position", "PositionStatus", "DepartmentName", "BusinessCode", "EtaBusinessId", "BusinessCode", "CountryCode"}
 
 	userInfo.RealName = req.RealName
 	userInfo.Mobile = req.Mobile
@@ -503,7 +509,8 @@ func (this *EtaBusinessUserController) EditUser() {
 	userInfo.LastUpdatedTime = time.Now()
 	userInfo.Position = req.Position
 	userInfo.DepartmentName = req.DepartmentName
-	userInfo.BusinessCode = req.BusinessCode
+	userInfo.BusinessCode = businessInfo.BusinessCode
+	userInfo.EtaBusinessId = businessInfo.EtaBusinessId
 	userInfo.CountryCode = req.CountryCode
 	userInfo.PositionStatus = req.PositionStatus
 	err = userInfo.Update(updateCol)
@@ -1168,7 +1175,7 @@ func (this *EtaBusinessUserController) ChangeUserBusiness() {
 		return
 	}
 
-	if req.BusinessCode == "" {
+	if req.EtaBusinessId == 0 {
 		br.Msg = "请选择商户"
 		br.IsSendEmail = false
 		return
@@ -1184,13 +1191,13 @@ func (this *EtaBusinessUserController) ChangeUserBusiness() {
 		br.Msg = "获取信息失败"
 		return
 	}
-	if userInfo.BusinessCode == req.BusinessCode {
+	if userInfo.EtaBusinessId == req.EtaBusinessId {
 		br.Msg = "用户已经在该商户下"
 		return
 	}
 	businessObj := new(eta_business.EtaBusiness)
 
-	_, err = businessObj.GetItemByBusinessCode(req.BusinessCode)
+	businessInfo, err := businessObj.GetItemById(req.EtaBusinessId)
 	if err != nil {
 		if err.Error() == utils.ErrNoRow() {
 			br.Msg = "商户不存在"
@@ -1202,11 +1209,11 @@ func (this *EtaBusinessUserController) ChangeUserBusiness() {
 	}
 
 	//待更新字段
-	updateCol := []string{"LastUpdatedTime", "BusinessCode"}
+	updateCol := []string{"LastUpdatedTime", "EtaBusinessId", "BusinessCode"}
 
 	userInfo.LastUpdatedTime = time.Now()
-
-	userInfo.BusinessCode = req.BusinessCode
+	userInfo.EtaBusinessId = businessInfo.EtaBusinessId
+	userInfo.BusinessCode = businessInfo.BusinessCode
 	err = userInfo.Update(updateCol)
 	if err != nil {
 		br.Msg = "操作失败!"

+ 131 - 0
models/chart_collect/chart.go

@@ -0,0 +1,131 @@
+package chart_collect
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"time"
+)
+
+type ChartCollect struct {
+	ChartCollectId    int       `orm:"column(chart_collect_id);pk"`
+	UserId            int       `orm:"column(user_id)" description:"用户ID"`
+	BusinessCode      string    `orm:"column(business_code)" description:"客户编码"`
+	RealName          string    `orm:"column(real_name)" description:"用户姓名"`
+	CollectTime       time.Time `orm:"column(collect_time)" description:"收藏时间"`
+	ChartInfoId       int       `orm:"column(chart_info_id)" description:"图表ID"`
+	CollectClassifyId int       `orm:"column(collect_classify_id)" description:"收藏的分类ID"`
+	ChartSource       int       `orm:"column(chart_source)" description:"图表来源"`
+	CreateTime        time.Time `orm:"column(create_time)" description:"创建时间"`
+	ModifyTime        time.Time `orm:"column(modify_time)" description:"修改时间"`
+}
+
+type ChartCollectAddReq struct {
+	ChartInfoId       int `description:"图表id"`
+	CollectClassifyId int `description:"收藏分类id"`
+}
+
+type ChartCollectView struct {
+	ChartCollectId    int       `orm:"column(chart_collect_id);pk"`
+	ChartInfoId       int       `description:"图表id"`
+	UserId            int       `description:"用户id"`
+	CreateTime        time.Time `description:"创建时间"`
+	CollectTime       string    `description:"收藏时间"`
+	CollectClassifyId int
+	ChartName         string `description:"来源名称"`
+	ChartNameEn       string `description:"英文图表名称"`
+	ChartImage        string `description:"图表图片"`
+	UniqueCode        string `description:"图表唯一编码"`
+}
+
+type ChartCollectListResp struct {
+	Paging *paging.PagingItem
+	List   []*ChartCollectView
+}
+
+type ChartCollectEditReq struct {
+	ChartCollectId    int   `description:"我的图表主键"`
+	CurrentClassifyId int   `description:"当前分类ID"`
+	ClassifyId        []int `description:"分类id,数组形式"`
+}
+
+func GetChartCollectPageByCondition(condition string, pars []interface{}, currentIndex, pageSize int) (item []*ChartCollectView, err error) {
+	o := orm.NewOrm()
+	//sql := ` SELECT * FROM chart_collect WHERE 1=1 `
+	sql := `SELECT a.*,b.chart_name_en,b.chart_name, b.unique_code, b.chart_image FROM chart_collect AS a
+                                                                    INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
+			WHERE 1=1 
+			`
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` GROUP BY a.chart_info_id order by a.chart_collect_id desc limit ?,?`
+	_, err = o.Raw(sql, pars, currentIndex, pageSize).QueryRows(&item)
+	return
+}
+
+func GetChartCollectDetailByCondition(condition string, pars []interface{}) (item []*ChartCollectView, err error) {
+	o := orm.NewOrm()
+	//sql := ` SELECT * FROM chart_collect WHERE 1=1 `
+	sql := `SELECT a.*,b.chart_name_en,b.chart_name, b.unique_code, b.chart_image FROM chart_collect AS a
+                                                                    INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
+			WHERE 1=1 
+			`
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` GROUP BY a.chart_info_id`
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
+func GetChartCollectCountByCondition(condition string, pars []interface{}) (total int64, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT a.chart_info_id FROM chart_collect AS a INNER JOIN chart_info AS b ON a.chart_info_id=b.chart_info_id
+			WHERE 1=1 
+			`
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` GROUP BY a.chart_info_id`
+	totalSql := `select count(1) as total from (` + sql + `) as t`
+	err = o.Raw(totalSql, pars).QueryRow(&total)
+	return
+}
+
+// ModifyChartClassifyPublicReq 修改我的图库分类是否可见
+type ModifyChartClassifyPublicReq struct {
+	ClassifyId int `description:"分类id"`
+	IsPublic   int `description:"是否所有人可见,0:仅自己可见,1:所有人可见"`
+}
+
+// CopyChartClassifyReq 复制我的图库分类
+type CopyChartClassifyReq struct {
+	ClassifyId int `description:"分类id"`
+}
+
+// ChartCollectClassifyItem 我的图表分类信息
+type ChartCollectClassifyItem struct {
+	CollectClassifyId int    `description:"分类ID"`
+	ClassifyName      string `description:"分类名称"`
+	UserId            int    `description:"创建人id"`
+	/*IsPublic        int    `description:"是否公共分类"`
+	IsCompanyPublic int    `description:"是否为用户公共分类"`*/
+	ChartNum int `description:"分类下的图表数量"`
+}
+
+// ClassifyIdAndNum 我的图表-分类ID及图表数
+type ClassifyIdAndNum struct {
+	ClassifyId int `description:"分类ID"`
+	ChartNum   int `description:"分类下的图表数量"`
+}
+
+type ChartCollectAddResp struct {
+	CollectMsg string `description:"提示信息"`
+}
+
+func GetChartCollectByUserIdChartInfoId(userId, chartInfoId int) (item *ChartCollect, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM chart_collect WHERE user_id=? AND chart_info_id=? `
+	err = o.Raw(sql, userId, chartInfoId).QueryRow(&item)
+	return
+}

+ 43 - 0
models/chart_collect/log.go

@@ -1,6 +1,8 @@
 package chart_collect
 
 import (
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
 )
 
@@ -16,3 +18,44 @@ type ChartCollectLog struct {
 	ChartSource       int       `description:"1:ETA图库;2:商品价格曲线;3:相关性图"`
 	CreateTime        time.Time `description:"创建时间"`
 }
+
+// 获取该用户数量
+func (u *ChartCollectLog) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrm()
+	tmpSql := `SELECT * FROM user_collect_chart_stat WHERE collect_state=1 `
+	if condition != "" {
+		tmpSql += condition
+	}
+	tmpSql += ` group by chart_info_id `
+	sql := `SELECT COUNT(1) AS count FROM (` + tmpSql + `) AS c `
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
+// 获取该用户列表
+func (u *UserCollectChartStat) GetPageListByCondition(condition string, pars []interface{}, order string, startSize, pageSize int) (items []*ChartCollectLog, err error) {
+	o := orm.NewOrm()
+	tmpSql := `SELECT * FROM user_collect_chart_stat WHERE collect_state=1  `
+	if condition != "" {
+		tmpSql += condition
+	}
+	tmpSql += ` group by chart_info_id `
+	if order != "" {
+		tmpSql += ` ORDER BY ` + order + ", user_chart_stat_id DESC"
+	} else {
+		tmpSql += ` ORDER BY user_chart_stat_id DESC`
+	}
+	tmpSql += ` Limit ?,?`
+	_, err = o.Raw(tmpSql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+type UserChartDetailListResp struct {
+	Paging *paging.PagingItem
+	List   []*UserChartDetailListItem
+}
+
+type UserChartDetailListItem struct {
+	ChartInfoId int    `description:"图表ID"`
+	CollectTime string `description:"收藏时间"`
+}

+ 5 - 4
models/chart_collect/stat.go

@@ -42,24 +42,26 @@ type UserCollectChartStat struct {
 }
 
 // 获取该用户数量
-func (u *UserCollectChartStat) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
+func (u *UserCollectChartStat) GetGroupUserCountByCondition(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrm()
 	tmpSql := `SELECT * FROM user_collect_chart_stat WHERE 1=1 `
 	if condition != "" {
 		tmpSql += condition
 	}
+	tmpSql += ` group by user_id `
 	sql := `SELECT COUNT(1) AS count FROM (` + tmpSql + `) AS c `
 	err = o.Raw(sql, pars).QueryRow(&count)
 	return
 }
 
 // 获取该用户列表
-func (u *UserCollectChartStat) GetPageListByCondition(condition string, pars []interface{}, order string, startSize, pageSize int) (items []*UserCollectChartStatItem, err error) {
+func (u *UserCollectChartStat) GetGroupUserPageListByCondition(condition string, pars []interface{}, order string, startSize, pageSize int) (items []*UserCollectChartStatItem, err error) {
 	o := orm.NewOrm()
-	tmpSql := `SELECT * FROM user_collect_chart_stat WHERE 1=1 `
+	tmpSql := `SELECT sum(collect_num) as collect_num, max(last_collect_chart_time) as last_collect_chart_time, user_id, real_name, eta_business_id, business_code  FROM user_collect_chart_stat WHERE 1=1 `
 	if condition != "" {
 		tmpSql += condition
 	}
+	tmpSql += ` group by user_id `
 	if order != "" {
 		tmpSql += ` ORDER BY ` + order + ", user_chart_stat_id DESC"
 	} else {
@@ -82,7 +84,6 @@ type UserCollectChartStatItem struct {
 	EtaBusinessId        int
 	BusinessName         string
 	CollectNum           int `description:"收藏的图表数量"`
-	CollectDate          string
 	LastCollectChartTime string
 }
 

+ 6 - 4
models/user.go

@@ -146,7 +146,7 @@ type AddUserReq struct {
 	//Email          string `description:"邮箱"`
 	Position       string `description:"职位"`
 	PositionStatus int    `description:"在职状态:1:在职,0:离职"`
-	BusinessCode   string `description:"商家编码"`
+	EtaBusinessId  int
 	DepartmentName string `description:"联系人部门"`
 }
 
@@ -164,7 +164,7 @@ type EditUserReq struct {
 	//Email          string `description:"邮箱"`
 	Position       string `description:"职位"`
 	PositionStatus int    `description:"在职状态:1:在职,0:离职"`
-	BusinessCode   string `description:"商家编码"`
+	EtaBusinessId  int
 	DepartmentName string `description:"联系人部门"`
 }
 
@@ -188,6 +188,7 @@ type ImportUserReq struct {
 
 type ImportUserItem struct {
 	BusinessCode   string
+	EtaBusinessId  int
 	UserName       string `description:"用户名"`
 	RealName       string `description:"姓名"`
 	Mobile         string
@@ -200,8 +201,9 @@ type ImportUserItem struct {
 
 // 新增客户请求参数
 type ChangeUserBusinessReq struct {
-	UserId       int
-	BusinessCode string `description:"商家编码"`
+	UserId        int
+	EtaBusinessId int
+	//BusinessCode  string `description:"商家编码"`
 }
 
 // UserEditEnabledReq 用户状态编辑

+ 9 - 0
routers/commentsRouter.go

@@ -655,6 +655,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: "UserDetailList",
+            Router: `/stat/user/detailList`,
+            AllowHTTPMethods: []string{"get"},
+            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",