Преглед изворни кода

fix:完善阅读统计功能

zqbao пре 9 месеци
родитељ
комит
b2251b83d0
3 измењених фајлова са 48 додато и 25 уклоњено
  1. 2 0
      controllers/user.go
  2. 15 25
      controllers/user_read_record.go
  3. 31 0
      models/user.go

+ 2 - 0
controllers/user.go

@@ -434,6 +434,8 @@ func (this *UserController) Check() {
 // @Param   RegisterEndDate   query   string  true       "注册结束时间"
 // @Param   CreateStartDate   query   string  true       "创建开始时间"
 // @Param   CreateEndDate   query   string  true       "创建结束时间"
+// @Param   Last   query   string  true       "创建结束时间"
+// @Param   CreateEndDate   query   string  true       "创建结束时间"
 // @Success 200 {object} response.UserListResp
 // @router /list [get]
 func (this *UserController) List() {

+ 15 - 25
controllers/user_read_record.go

@@ -53,7 +53,7 @@ func (this *UserReadRecordController) List() {
 	var pars []interface{}
 
 	if keyWord != "" {
-		condition += ` AND (real_name LIKE ? OR phone LIKE ? OR email LIKE ? OR company LIKE ?) `
+		condition += ` AND (u.real_name LIKE ? OR u.phone LIKE ? OR u.email LIKE ? OR u.company LIKE ?) `
 		pars = utils.GetLikeKeywordPars(pars, keyWord, 4)
 	}
 
@@ -72,32 +72,32 @@ func (this *UserReadRecordController) List() {
 	}
 	switch status {
 	case "禁用":
-		condition += " AND status=? "
+		condition += " AND u.status=? "
 		pars = append(pars, 0)
 	case "潜在":
-		condition += " AND status=? "
+		condition += " AND u.status=? "
 		pars = append(pars, 1)
 	case "正式":
-		condition += " AND status=? "
+		condition += " AND u.status=? "
 		pars = append(pars, 2)
 	case "":
-		condition += " AND (status=? OR status=?) "
+		condition += " AND (u.status=? OR u.status=?) "
 		pars = append(pars, 0, 2)
 	}
 	switch IsRegistered {
 	case "是":
-		condition += " AND is_registered=? "
+		condition += " AND u.is_registered=? "
 		pars = append(pars, true)
 	case "否":
-		condition += " AND is_registered=? "
+		condition += " AND u.is_registered=? "
 		pars = append(pars, false)
 	}
 	switch IsSubscribed {
 	case "是":
-		condition += " AND is_subscribed=? "
+		condition += " AND u.is_subscribed=? "
 		pars = append(pars, true)
 	case "否":
-		condition += " AND is_subscribed=? "
+		condition += " AND u.is_subscribed=? "
 		pars = append(pars, false)
 	}
 	if registerStartDate != "" {
@@ -106,7 +106,7 @@ func (this *UserReadRecordController) List() {
 			br.Msg = "日期格式有误"
 			return
 		}
-		condition += " AND register_time>? "
+		condition += " AND u.register_time>? "
 		pars = append(pars, registerStartTime)
 	}
 	if registerEndDate != "" {
@@ -115,7 +115,7 @@ func (this *UserReadRecordController) List() {
 			br.Msg = "日期格式有误"
 			return
 		}
-		condition += " AND register_time<? "
+		condition += " AND u.register_time<? "
 		pars = append(pars, registerEndTime)
 	}
 	if createStartDate != "" {
@@ -124,7 +124,7 @@ func (this *UserReadRecordController) List() {
 			br.Msg = "日期格式有误"
 			return
 		}
-		condition += " AND create_time>? "
+		condition += " AND u.create_time>? "
 		pars = append(pars, createStartTime)
 	}
 	if createEndDate != "" {
@@ -133,7 +133,7 @@ func (this *UserReadRecordController) List() {
 			br.Msg = "日期格式有误"
 			return
 		}
-		condition += " AND create_time<? "
+		condition += " AND u.create_time<? "
 		pars = append(pars, createEndTime)
 	}
 	if pageSize <= 0 {
@@ -146,13 +146,13 @@ func (this *UserReadRecordController) List() {
 	}
 	startSize := utils.StartIndex(currentIndex, pageSize)
 
-	total, err := models.GetUserCount(condition, pars)
+	total, err := models.GetUserReadCount(condition, pars)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
-	userList, err := models.GetUserList(condition, pars, startSize, pageSize)
+	userList, err := models.GetUserReadList(condition, pars, startSize, pageSize)
 	if err != nil {
 		br.Msg = "查询用户失败"
 		br.Msg = "查询用户失败,系统错误,Err:" + err.Error()
@@ -251,16 +251,6 @@ func (this *UserReadRecordController) Detail() {
 			condition += `) `
 		}
 	}
-	// total, err := models.GetUserReadRecordCountByUserId(UserId, condition, pars)
-	// if err != nil {
-	// 	br.Msg = "查询阅读记录失败"
-	// 	br.ErrMsg = "查询阅读记录失败失败,Err:" + err.Error()
-	// 	return
-	// }
-	// if total == 0 {
-	// 	br.Msg = "该用户暂无阅读记录"
-	// 	return
-	// }
 
 	readList, err := models.GetUserReadRecordByUserId(UserId, condition, pars, startSize, pageSize)
 	if err != nil {

+ 31 - 0
models/user.go

@@ -20,6 +20,7 @@ type User struct {
 	Status         int       `description:"用户类型: 0表示禁用,1表示潜在客户,2表示正式客户"`
 	CreateTime     time.Time `description:"系统中首次新增用户的时间"`
 	ModifyTime     time.Time `description:"系统中用户信息变更的时间"`
+	LastUpdateTime time.Time `description:"最近一次登录时间"`
 	RegisterTime   time.Time `description:"用户首次登录小程序的时间"`
 	IsSubscribed   bool      `description:"是否关注公众号: 0表示没有关注,1表示关注"`
 	IsRegistered   bool      `description:"是否注册: 0表示没有注册,1表示注册"`
@@ -40,6 +41,7 @@ type UserView struct {
 	ReadCnt        int       `description:"用户阅读量"`
 	CreateTime     time.Time `description:"系统中首次新增用户的时间"`
 	ModifyTime     time.Time `description:"系统中用户信息变更的时间"`
+	LastUpdateTime time.Time `description:"最近一次登录时间"`
 	RegisterTime   time.Time `description:"用户首次登录小程序的时间"`
 	IsSubscribed   bool      `description:"是否关注公众号: 0表示没有关注,1表示关注"`
 	IsRegistered   bool      `description:"是否注册: 0表示没有注册,1表示注册"`
@@ -135,6 +137,35 @@ func GetUserList(condition string, pars []interface{}, startSize, pageSize int)
 	return
 }
 
+func GetUserReadList(condition string, pars []interface{}, startSize, pageSize int) (items []*UserView, err error) {
+	sql := `SELECT u.*, su.sys_real_name AS seller_name, COUNT(ur.user_id) AS read_cnt 
+	FROM user AS u
+	LEFT JOIN sys_user AS su
+	ON u.seller_id = su.sys_user_id
+	LEFT JOIN user_read_record AS ur
+	ON u.user_id = ur.user_id
+	WHERE 1=1 AND (u.phone IS NOT NULL OR u.email IS NOT NULL) `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` GROUP BY u.user_id ORDER BY read_cnt DESC LIMIT ?,? `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+func GetUserReadCount(condition string, pars []interface{}) (count int, err error) {
+	sql := `SELECT COUNT(*) AS count 
+	FROM user  AS u
+	WHERE 1=1 AND (u.phone IS NOT NULL OR u.email IS NOT NULL) `
+	if condition != "" {
+		sql += condition
+	}
+	o := orm.NewOrm()
+	err = o.Raw(sql, pars...).QueryRow(&count)
+	return
+}
+
 func GetUserCount(condition string, pars []interface{}) (count int, err error) {
 	sql := `SELECT COUNT(*) AS count FROM user WHERE 1=1 AND (phone IS NOT NULL OR email IS NOT NULL) `
 	if condition != "" {