Explorar o código

add: 图表详情

hsun %!s(int64=3) %!d(string=hai) anos
pai
achega
d5859c8587

+ 6 - 21
controller/chart/chart_info.go

@@ -10,10 +10,8 @@ import (
 	chartEdbMappingModel "hongze/hongze_yb/models/tables/chart_edb_mapping"
 	chartInfoModel "hongze/hongze_yb/models/tables/chart_info"
 	"hongze/hongze_yb/models/tables/chart_info_log"
-	company2 "hongze/hongze_yb/models/tables/company"
 	edbDataModel "hongze/hongze_yb/models/tables/edb_data"
 	edbInfoModel "hongze/hongze_yb/models/tables/edb_info"
-	"hongze/hongze_yb/models/tables/yb_chart_visit_log"
 	"hongze/hongze_yb/services"
 	"hongze/hongze_yb/services/chart"
 	edbDataService "hongze/hongze_yb/services/edb_data"
@@ -333,26 +331,13 @@ func GetChartInfoDetail(c *gin.Context)  {
 		edbList = append(edbList, item)
 	}
 
-	// 访问记录
+	// 访问记录-仅普通用户记录
 	userInfo := user.GetInfoByClaims(c)
-	{
-		go func() {
-			visitLog := new(yb_chart_visit_log.YbChartVisitLog)
-			visitLog.CompanyId = int(userInfo.CompanyID)
-			companyInfo, tmpErr := company2.GetByCompanyId(userInfo.CompanyID)
-			if tmpErr == nil {
-				visitLog.CompanyName = companyInfo.CompanyName
-			}
-			visitLog.UserId = int(userInfo.UserID)
-			visitLog.Mobile = userInfo.Mobile
-			visitLog.Email = userInfo.Email
-			// TODO:MyETA图库
-			visitLog.MyChartClassifyId = 0
-			visitLog.MyChartClassifyName = ""
-			visitLog.ChartInfoId = chartInfoId
-			visitLog.CreateTime = time.Now().Local()
-			visitLog.Create()
-		}()
+	ok, _, _ := user.GetAdminByUserInfo(userInfo)
+	if !ok {
+		reqMyChartClassifyId := c.DefaultQuery("MyChartClassifyId", "")
+		myChartClassifyId, _ := strconv.Atoi(reqMyChartClassifyId)
+		go chart.SaveChartVisitLog(userInfo, chartInfo, myChartClassifyId)
 	}
 
 	resp := new(chart_info.ChartInfoDetailResp)

+ 8 - 0
models/tables/yb_chart_daily_visit_log/create.go

@@ -0,0 +1,8 @@
+package yb_chart_daily_visit_log
+
+import "hongze/hongze_yb/global"
+
+func (item *YbChartDailyVisitLog) Create() (err error) {
+	err = global.DEFAULT_MYSQL.Create(item).Error
+	return
+}

+ 12 - 0
models/tables/yb_chart_daily_visit_log/query.go

@@ -0,0 +1,12 @@
+package yb_chart_daily_visit_log
+
+import (
+	"hongze/hongze_yb/global"
+	"time"
+)
+
+// GetTodayVisitLog 获取今日访问记录
+func GetTodayVisitLog(userId, chartInfoId, classifyId int, startTime, endTime time.Time) (item *YbChartDailyVisitLog, err error) {
+	err = global.DEFAULT_MYSQL.Where("user_id = ? AND chart_info_id = ? AND my_chart_classify_id = ? AND create_time > ? AND create_time < ?", userId, chartInfoId, classifyId, startTime, endTime).First(&item).Error
+	return
+}

+ 52 - 0
models/tables/yb_chart_daily_visit_log/yb_chart_daily_visit_log.go

@@ -0,0 +1,52 @@
+package yb_chart_daily_visit_log
+
+import (
+	"time"
+)
+
+// YbChartDailyVisitLog 图表每日访问记录表
+type YbChartDailyVisitLog struct {
+	Id                  int       `gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null" json:"-"`
+	CompanyId           int       `gorm:"index:idx_company_id;column:company_id;type:int(10) unsigned;not null;default:0" json:"companyId"`                    // 客户ID
+	CompanyName         string    `gorm:"column:company_name;type:varchar(100);not null;default:''" json:"companyName"`                                        // 客户名称
+	UserId              int       `gorm:"column:user_id;type:int(10) unsigned;not null;default:0" json:"userId"`                                               // 用户ID
+	Mobile              string    `gorm:"column:mobile;type:varchar(32);not null;default:''" json:"mobile"`                                                    // 用户手机号
+	Email               string    `gorm:"column:email;type:varchar(100);not null;default:''" json:"email"`                                                     // 电子邮箱
+	ChartInfoId         int       `gorm:"index:idx_chart_info_id;column:chart_info_id;type:int(10) unsigned;not null;default:0" json:"chartInfoId"`            // 图表ID
+	ChartName           string    `gorm:"column:chart_name;type:varchar(150);not null;default:''" json:"chartName"`                                            // 图表名称
+	MyChartClassifyId   int       `gorm:"index:idx_classify_id;column:my_chart_classify_id;type:int(10) unsigned;not null;default:0" json:"myChartClassifyId"` // 图表分类ID
+	MyChartClassifyName string    `gorm:"column:my_chart_classify_name;type:varchar(100);not null;default:''" json:"myChartClassifyName"`                      // 图表分类名称
+	CreateTime          time.Time `gorm:"column:create_time;type:datetime" json:"createTime"`                                                                  // 访问时间
+}
+
+// TableName get sql table name.获取数据库表名
+func (m *YbChartDailyVisitLog) TableName() string {
+	return "yb_chart_daily_visit_log"
+}
+
+// YbChartDailyVisitLogColumns get sql column name.获取数据库列名
+var YbChartDailyVisitLogColumns = struct {
+	Id                  string
+	CompanyId           string
+	CompanyName         string
+	UserId              string
+	Mobile              string
+	Email               string
+	ChartInfoId         string
+	ChartName           string
+	MyChartClassifyId   string
+	MyChartClassifyName string
+	CreateTime          string
+}{
+	Id:                  "id",
+	CompanyId:           "company_id",
+	CompanyName:         "company_name",
+	UserId:              "user_id",
+	Mobile:              "mobile",
+	Email:               "email",
+	ChartInfoId:         "chart_info_id",
+	ChartName:           "chart_name",
+	MyChartClassifyId:   "my_chart_classify_id",
+	MyChartClassifyName: "my_chart_classify_name",
+	CreateTime:          "create_time",
+}

+ 27 - 30
models/tables/yb_chart_visit_log/yb_chart_visit_log.go

@@ -6,16 +6,15 @@ import (
 
 // YbChartVisitLog 图表访问记录表
 type YbChartVisitLog struct {
-	Id                  int       `gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null" json:"-"`
-	CompanyId           int       `gorm:"index:idx_company_id;column:company_id;type:int(10) unsigned;not null;default:0" json:"companyId"`         // 客户ID
-	CompanyName         string    `gorm:"column:company_name;type:varchar(100);not null;default:''" json:"companyName"`                             // 客户名称
-	UserId              int       `gorm:"column:user_id;type:int(10) unsigned;not null;default:0" json:"userId"`                                    // 用户ID
-	Mobile              string    `gorm:"column:mobile;type:varchar(20);not null;default:''" json:"mobile"`                                         // 用户手机号
-	Email               string    `gorm:"column:email;type:varchar(100);not null;default:''" json:"email"`                                          // 电子邮箱
-	ChartInfoId         int       `gorm:"index:idx_chart_info_id;column:chart_info_id;type:int(10) unsigned;not null;default:0" json:"chartInfoId"` // 图表ID
-	MyChartClassifyId   int       `gorm:"column:my_chart_classify_id;type:int(10) unsigned;not null;default:0" json:"myChartClassifyId"`            // 我的图表分类ID
-	MyChartClassifyName string    `gorm:"column:my_chart_classify_name;type:varchar(150);not null;default:''" json:"myChartClassifyName"`           // 我的图表名称
-	CreateTime          time.Time `gorm:"column:create_time;type:datetime" json:"createTime"`                                                       // 访问时间
+	Id          int       `gorm:"primaryKey;column:id;type:bigint(20) unsigned;not null" json:"-"`
+	CompanyId   int       `gorm:"index:idx_company_id;column:company_id;type:int(10) unsigned;not null;default:0" json:"companyId"`         // 客户ID
+	CompanyName string    `gorm:"column:company_name;type:varchar(100);not null;default:''" json:"companyName"`                             // 客户名称
+	UserId      int       `gorm:"column:user_id;type:int(10) unsigned;not null;default:0" json:"userId"`                                    // 用户ID
+	Mobile      string    `gorm:"column:mobile;type:varchar(20);not null;default:''" json:"mobile"`                                         // 用户手机号
+	Email       string    `gorm:"column:email;type:varchar(100);not null;default:''" json:"email"`                                          // 电子邮箱
+	ChartInfoId int       `gorm:"index:idx_chart_info_id;column:chart_info_id;type:int(10) unsigned;not null;default:0" json:"chartInfoId"` // 图表ID
+	ChartName   string    `gorm:"column:chart_name;type:varchar(150);not null;default:''" json:"chartName"`                                 // 图表名称
+	CreateTime  time.Time `gorm:"column:create_time;type:datetime" json:"createTime"`                                                       // 访问时间
 }
 
 // TableName get sql table name.获取数据库表名
@@ -25,25 +24,23 @@ func (m *YbChartVisitLog) TableName() string {
 
 // YbChartVisitLogColumns get sql column name.获取数据库列名
 var YbChartVisitLogColumns = struct {
-	ID                  string
-	CompanyID           string
-	CompanyName         string
-	UserID              string
-	Mobile              string
-	Email               string
-	ChartInfoID         string
-	MyChartClassifyID   string
-	MyChartClassifyName string
-	CreateTime          string
+	Id          string
+	CompanyId   string
+	CompanyName string
+	UserId      string
+	Mobile      string
+	Email       string
+	ChartInfoId string
+	ChartName   string
+	CreateTime  string
 }{
-	ID:                  "id",
-	CompanyID:           "company_id",
-	CompanyName:         "company_name",
-	UserID:              "user_id",
-	Mobile:              "mobile",
-	Email:               "email",
-	ChartInfoID:         "chart_info_id",
-	MyChartClassifyID:   "my_chart_classify_id",
-	MyChartClassifyName: "my_chart_classify_name",
-	CreateTime:          "create_time",
+	Id:          "id",
+	CompanyId:   "company_id",
+	CompanyName: "company_name",
+	UserId:      "user_id",
+	Mobile:      "mobile",
+	Email:       "email",
+	ChartInfoId: "chart_info_id",
+	ChartName:   "chart_name",
+	CreateTime:  "create_time",
 }

+ 59 - 0
services/chart/chart_info.go

@@ -5,8 +5,13 @@ import (
 	"hongze/hongze_yb/global"
 	chartEdbMappingModel "hongze/hongze_yb/models/tables/chart_edb_mapping"
 	chartInfoModel "hongze/hongze_yb/models/tables/chart_info"
+	company2 "hongze/hongze_yb/models/tables/company"
 	edbDataModel "hongze/hongze_yb/models/tables/edb_data"
 	edbInfoModel "hongze/hongze_yb/models/tables/edb_info"
+	"hongze/hongze_yb/models/tables/my_chart_classify"
+	"hongze/hongze_yb/models/tables/yb_chart_daily_visit_log"
+	"hongze/hongze_yb/models/tables/yb_chart_visit_log"
+	"hongze/hongze_yb/services/user"
 	"hongze/hongze_yb/utils"
 	"sort"
 	"strconv"
@@ -580,5 +585,59 @@ func GetEdbInfoCalculateMap(edbInfoId, source int) (list []*edbInfoModel.EdbInfo
 			WHERE a.edb_info_id=? ORDER BY sort ASC `
 	err = global.MYSQL["data"].Exec(sql, edbInfoId).Error
 
+	return
+}
+
+// SaveChartVisitLog 保存图表访问记录
+func SaveChartVisitLog(userInfo user.UserInfo, chartInfo *chartInfoModel.ChartInfoView, myChartClassifyId int) (err error) {
+	userId := int(userInfo.UserID)
+	companyId := int(userInfo.CompanyID)
+	chartInfoId := chartInfo.ChartInfoId
+	// 访问记录
+	visitLog := new(yb_chart_visit_log.YbChartVisitLog)
+	visitLog.CompanyId = companyId
+	companyInfo, err := company2.GetByCompanyId(userInfo.CompanyID)
+	if err == nil {
+		visitLog.CompanyName = companyInfo.CompanyName
+	}
+	visitLog.UserId = userId
+	visitLog.Mobile = userInfo.Mobile
+	visitLog.Email = userInfo.Email
+	visitLog.ChartInfoId = chartInfoId
+	visitLog.ChartName = chartInfo.ChartName
+	visitLog.CreateTime = time.Now().Local()
+	visitLog.Create()
+
+	// 每日访问记录,用户/天/图仅记录一次
+	if myChartClassifyId > 0 {
+		// 今日是否已访问
+		nowTime := time.Now().Local()
+		startTime := time.Date(nowTime.Year(), nowTime.Month(), nowTime.Day(), 0, 0, 0, 0, time.Local)
+		endTime := time.Date(nowTime.Year(), nowTime.Month(), nowTime.Day(), 23, 59, 59, 0, time.Local)
+		_, tmpErr := yb_chart_daily_visit_log.GetTodayVisitLog(userId, chartInfoId, myChartClassifyId, startTime, endTime)
+		if tmpErr == nil {
+			return
+		}
+
+		myChartClassify, tmpErr := my_chart_classify.GetClassifyById(myChartClassifyId)
+		if tmpErr != nil {
+			return
+		}
+		dailyLog := new(yb_chart_daily_visit_log.YbChartDailyVisitLog)
+		dailyLog.CompanyId = companyId
+		if companyInfo != nil {
+			dailyLog.CompanyName = companyInfo.CompanyName
+		}
+		dailyLog.UserId = userId
+		dailyLog.Mobile = userInfo.Mobile
+		dailyLog.Email = userInfo.Email
+		dailyLog.ChartInfoId = chartInfoId
+		dailyLog.ChartName = chartInfo.ChartName
+		dailyLog.MyChartClassifyId = myChartClassifyId
+		dailyLog.MyChartClassifyName = myChartClassify.MyChartClassifyName
+		dailyLog.CreateTime = time.Now().Local()
+		dailyLog.Create()
+	}
+
 	return
 }