xingzai 1 anno fa
parent
commit
bf99449711

+ 60 - 23
controllers/cygx/user.go

@@ -2064,29 +2064,51 @@ func (this *UserController) CompanyTableDetail() {
 		condition += ` AND ( r.mobile LIKE '%` + keyWord + `%' OR r.email LIKE '%` + keyWord + `%' OR r.real_name LIKE '%` + keyWord + `%')`
 	}
 
+	var isAdminRole bool
+	//如果不是管理员身份或者研究员身份则需要添加可见范围处理
+	if sysUser.Role == utils.ROLE_TYPE_CODE_ADMIN || sysUser.Role == utils.ROLE_TYPE_CODE_RESEARCHR {
+		isAdminRole = true
+	}
+
 	if source == 1 {
 		if startDate != "" {
 			startDate += " 00:00:00"
 			condition += ` AND r.create_time >= '` + startDate + `' `
 		}
-
 		if endDate != "" {
 			endDate += " 23:59:59"
 			condition += ` AND r.create_time <= '` + endDate + `' `
 		}
 		condition += "  ORDER BY r.create_time DESC "
-		listRecord, err := cygx.GetCygxArticleAndYanxuanRecordRespList(condition, pars, startSize, pageSize)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取用户阅读记录,Err:" + err.Error()
-			return
-		}
-		total, err = cygx.GetCygxArticleAndYanxuanRecordCount(condition, pars)
-		if err != nil {
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取用户阅读记录数量失败,Err:" + err.Error()
-			return
+		var listRecord []*cygx.CygxArticleAndYanxuanRecordResp
+		if isAdminRole {
+			total, err = cygx.GetCygxArticleAndYanxuanRecordCount(condition, pars)
+			if err != nil {
+				br.Msg = "获取信息失败"
+				br.ErrMsg = "获取用户阅读记录数量失败,Err:" + err.Error()
+				return
+			}
+			listRecord, err = cygx.GetCygxArticleAndYanxuanRecordRespList(condition, pars, startSize, pageSize)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				br.Msg = "获取信息失败"
+				br.ErrMsg = "获取用户阅读记录,Err:" + err.Error()
+				return
+			}
+		} else {
+			total, err = cygx.GetCygxArticleAndYanxuanRecordCountWeekly(condition, pars)
+			if err != nil {
+				br.Msg = "获取信息失败"
+				br.ErrMsg = "获取用户阅读记录数量失败,Err:" + err.Error()
+				return
+			}
+			listRecord, err = cygx.GetCygxArticleAndYanxuanRecordRespListWeekly(condition, pars, startSize, pageSize)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				br.Msg = "获取信息失败"
+				br.ErrMsg = "获取用户阅读记录,Err:" + err.Error()
+				return
+			}
 		}
+
 		//处理查询信息回显
 		list, err = cygxService.HandleArticleAndYanxuanRecordList(listRecord)
 		if err != nil && err.Error() != utils.ErrNoRow() {
@@ -2121,17 +2143,32 @@ func (this *UserController) CompanyTableDetail() {
 		if activityName != "" {
 			condition += ` AND a.activity_name LIKE '%` + activityName + `%' `
 		}
-		total, err = cygx.GetActivityMeetByCompanyCount(condition)
-		if err != nil {
-			br.Msg = "获取信息失败"
-			br.ErrMsg = "获取参会总数失败,Err:" + err.Error()
-			return
-		}
-		list, err = cygx.GetActivityMeetByCompany(condition, startSize, pageSize)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			br.ErrMsg = "获取信息失败,Err:" + err.Error()
-			br.Msg = "获取参会人数列表失败"
-			return
+		if isAdminRole {
+			total, err = cygx.GetActivityMeetByCompanyCount(condition)
+			if err != nil {
+				br.Msg = "获取信息失败"
+				br.ErrMsg = "获取参会总数失败,Err:" + err.Error()
+				return
+			}
+			list, err = cygx.GetActivityMeetByCompany(condition, startSize, pageSize)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				br.ErrMsg = "获取信息失败,Err:" + err.Error()
+				br.Msg = "获取参会人数列表失败"
+				return
+			}
+		} else {
+			total, err = cygx.GetActivityMeetByCompanyCountWeekly(condition)
+			if err != nil {
+				br.Msg = "获取信息失败"
+				br.ErrMsg = "获取参会总数失败,Err:" + err.Error()
+				return
+			}
+			list, err = cygx.GetActivityMeetByCompanyWeekly(condition, startSize, pageSize)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				br.ErrMsg = "获取信息失败,Err:" + err.Error()
+				br.Msg = "获取参会人数列表失败"
+				return
+			}
 		}
 		if len(list) > 0 {
 			for k, v := range list {

+ 1 - 0
models/cygx/activity_meet.go

@@ -466,6 +466,7 @@ func GetCygxActivityYiDongMeetNum(activityId []int) (items []*CygxAtivityIdMeetN
 
 type GetSellerUserMobileResp struct {
 	Mobile string `description:"手机号"`
+	UserId int    `description:"用户ID"`
 }
 
 // 获取销售所能查看到的手机号

+ 33 - 0
models/cygx/article_and_yanxuan_record.go

@@ -1,7 +1,9 @@
 package cygx
 
 import (
+	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
 )
 
 type CygxArticleAndYanxuanRecordResp struct {
@@ -32,6 +34,21 @@ func GetCygxArticleAndYanxuanRecordCount(condition string, pars []interface{}) (
 	return
 }
 
+// 获取数量(关联用户跟销售的绑定关系跨库查询)
+func GetCygxArticleAndYanxuanRecordCountWeekly(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	databaseName := utils.GetWeeklyDatabase()
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_article_and_yanxuan_record as r 
+				  INNER JOIN %s.user_seller_relation AS us ON us.user_id = r.user_id   AND us.product_id = 2 
+		WHERE 1= 1  `
+	sqlCount = fmt.Sprintf(sqlCount, databaseName)
+	if condition != "" {
+		sqlCount += condition
+	}
+	err = o.Raw(sqlCount, pars).QueryRow(&count)
+	return
+}
+
 // 列表
 func GetCygxArticleAndYanxuanRecordRespList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxArticleAndYanxuanRecordResp, err error) {
 	o := orm.NewOrmUsingDB("hz_cygx")
@@ -43,3 +60,19 @@ func GetCygxArticleAndYanxuanRecordRespList(condition string, pars []interface{}
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }
+
+// 列表(关联用户跟销售的绑定关系跨库查询)
+func GetCygxArticleAndYanxuanRecordRespListWeekly(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxArticleAndYanxuanRecordResp, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	databaseName := utils.GetWeeklyDatabase()
+	sql := `SELECT * FROM cygx_article_and_yanxuan_record as r 
+			INNER JOIN %s.user_seller_relation AS us ON us.user_id = r.user_id   AND us.product_id = 2 
+		WHERE 1= 1   `
+	sql = fmt.Sprintf(sql, databaseName)
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` LIMIT ?,?  `
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}

+ 60 - 0
models/cygx/cygx_user_company.go

@@ -1,8 +1,10 @@
 package cygx
 
 import (
+	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"hongze/hz_crm_api/models/company"
+	"hongze/hz_crm_api/utils"
 	"strconv"
 )
 
@@ -103,6 +105,27 @@ func GetActivityMeetByCompanyCount(condition string) (count int, err error) {
 	return
 }
 
+// 获取用户参会记录数量(关联用户跟销售的绑定关系跨库查询)
+func GetActivityMeetByCompanyCountWeekly(condition string) (count int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	databaseName := utils.GetWeeklyDatabase()
+	sqlCount := `SELECT
+				COUNT(*) AS count 
+			FROM
+				cygx_activity_signup_detail AS r
+				INNER JOIN cygx_activity AS a ON a.activity_id = r.activity_id
+				INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id
+				INNER JOIN %s.user_seller_relation AS us ON us.user_id = r.user_id   AND us.product_id = 2
+			WHERE 1 = 1 
+				AND r.do_fail_type = 0`
+	sqlCount = fmt.Sprintf(sqlCount, databaseName)
+	if condition != "" {
+		sqlCount += condition
+	}
+	err = o.Raw(sqlCount).QueryRow(&count)
+	return
+}
+
 // 获取用户参会记录
 func GetActivityMeetByCompany(condition string, startSize, pageSize int) (item []*UserInteraction, err error) {
 	o := orm.NewOrmUsingDB("hz_cygx")
@@ -143,6 +166,43 @@ func GetActivityMeetByCompany(condition string, startSize, pageSize int) (item [
 	return
 }
 
+// 获取用户参会记录
+func GetActivityMeetByCompanyWeekly(condition string, startSize, pageSize int) (item []*UserInteraction, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	databaseName := utils.GetWeeklyDatabase()
+	sql := `SELECT
+			t.activity_type,
+			r.signup_type,
+			r.is_meeting,
+			r.mobile,
+			r.real_name,
+			a.activity_name,
+			a.chart_permission_name,
+			a.activity_type_name,
+			a.label,
+			a.activity_time,
+			r.first_meeting_time,
+			r.last_meeting_time,
+			r.meeting_type_str,
+			r.meeting_authentication,
+			r.meeting_status_str,
+			r.duration
+		FROM
+			cygx_activity_signup_detail AS r
+			INNER  JOIN cygx_activity AS a ON a.activity_id = r.activity_id
+			INNER JOIN cygx_activity_type as t ON t.activity_type_id = a.activity_type_id
+			INNER JOIN %s.user_seller_relation AS us ON us.user_id = r.user_id   AND us.product_id = 2
+		WHERE
+			1 = 1 AND r.do_fail_type = 0 `
+	sql = fmt.Sprintf(sql, databaseName)
+	sql += condition + ` GROUP BY r.id ORDER BY	a.activity_time DESC ,r.id DESC  `
+	if startSize > 0 || pageSize > 0 {
+		sql += ` LIMIT ` + strconv.Itoa(startSize) + "," + strconv.Itoa(pageSize)
+	}
+	_, err = o.Raw(sql).QueryRows(&item)
+	return
+}
+
 // 收藏列表数量
 func GetCygxArticleCollectCountByCompany(condition string) (count int, err error) {
 	o := orm.NewOrmUsingDB("hz_cygx")

+ 23 - 0
services/cygx/admin_power.go

@@ -33,6 +33,29 @@ func GetAdminLookUserMobile(adminInfo *system.Admin) (mapMobile map[string]strin
 	return
 }
 
+// 获取这个销售所能查看的手机号权限
+func GetAdminLookUserUserId(adminInfo *system.Admin) (userIds []int, err error) {
+	var conditionMobile string
+	if adminInfo.RoleTypeCode == "rai_group" {
+		//组长查看本组所有组员
+		conditionMobile = ` SELECT user_id FROM user_seller_relation WHERE seller_id IN (SELECT  admin_id FROM admin WHERE group_id = (SELECT group_id FROM admin WHERE admin_id = ` + strconv.Itoa(adminInfo.AdminId) + ` )) `
+	} else {
+		//组员查看自己
+		conditionMobile = ` SELECT user_id FROM user_seller_relation WHERE seller_id  = ` + strconv.Itoa(adminInfo.AdminId)
+	}
+	conditionMobile += " LIMIT 10"
+	userList, e := cygx.GetSellerUserMobile(conditionMobile)
+	if e != nil {
+		err = errors.New("GetSellerUserMobile 获取这个销售所能查看的手机号权限失败, Err: " + e.Error())
+		return
+	}
+	userIds = make([]int, 0)
+	for _, v := range userList {
+		userIds = append(userIds, v.UserId)
+	}
+	return
+}
+
 // 获取这个销售所能查看的手机号权限
 func GetAdminLookUserCompanyIds(sysUser *system.Admin) (companyIds []int, err error) {
 	//如果不是管理员,权益管理员那么就对可见权限范围做处理

+ 10 - 0
utils/constants.go

@@ -558,3 +558,13 @@ const (
 const CrmEtaAuthorization = "NIi1RbEmH0C2rksXtPGDPBBgRgTZY87Q"
 
 const LoginCacheTime = 60 // 登录缓存时长, 分钟
+
+// GetWeeklyDatabase 获取 weekly_report 库名
+func GetWeeklyDatabase() (databaseName string) {
+	if RunMode == "release" {
+		databaseName = `weekly_report`
+	} else {
+		databaseName = `test_v2_weekly_report`
+	}
+	return
+}