Bläddra i källkod

Merge branch 'master' of http://8.136.199.33:3000/cxzhang/hongze_clpt into crm_14.7

xingzai 1 år sedan
förälder
incheckning
ab20da711c

+ 2 - 2
controllers/report_billboard.go

@@ -55,7 +55,7 @@ func (this *MobileReportBillboardController) ReadList() {
 	}
 	list := make([]*models.ArticleListResp, 0)
 	// 阅读飙升榜
-	if source == 2 {
+	if source == 1 {
 		var topCond string
 		var topPars []interface{}
 		if chartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
@@ -93,7 +93,7 @@ func (this *MobileReportBillboardController) ReadList() {
 		}
 	}
 	// 报告收藏榜
-	if source == 1 {
+	if source == 2 {
 		var collectCond string
 		var collectPars []interface{}
 

+ 11 - 0
controllers/user.go

@@ -403,6 +403,17 @@ func (this *UserController) ApplyTryOut() {
 		}
 		title = ProductInteriorDetail.Title
 		source = "productinterior"
+	} else if tryType == "YanxuanSpecial" {
+		// 研选专栏
+		YanxuanSpecialBySpeciaDetail, e := models.GetYanxuanSpecialBySpecialId(detailId)
+		if e != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "产品内测信息有误, 不存在的detailId: " + strconv.Itoa(detailId)
+			return
+		}
+		title = YanxuanSpecialBySpeciaDetail.Title
+		source = "yanxuanspecial"
+		isResearch = true
 	}
 
 	//缓存校验

+ 19 - 2
controllers/yanxuan_special.go

@@ -150,7 +150,7 @@ func (this *YanxuanSpecialNoLoginController) List() {
 // @Param	request	body help_doc.AddHelpDocReq true "type json string"
 // @Success 200 {object} models.AddEnglishReportResp
 // @router /detail [get]
-func (this *YanxuanSpecialController) Detail() {
+func (this *YanxuanSpecialNoLoginController) Detail() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -231,7 +231,20 @@ func (this *YanxuanSpecialController) Detail() {
 	}
 	if item.UserId != sysUser.UserId && item.Status != 3 && !strings.Contains(cnf.ConfigValue, sysUser.Mobile) {
 		resp.CygxYanxuanSpecialItem = *new(models.CygxYanxuanSpecialItem) // 如果内容不可见,就把内容置空
-		resp.HasPermission = 2
+		//resp.HasPermission = 2
+	}
+
+	//如果是用户本人写的专栏,那么就不做校验
+	if item.UserId == sysUser.UserId || sysUser.UserId == 0 {
+		resp.HasPermission = 1
+	} else {
+		hasPermission, err := services.GetUserRaiPermissionYanXuanInfo(sysUser)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败, Err:" + err.Error()
+			return
+		}
+		resp.HasPermission = hasPermission
 	}
 
 	//判断是否属于审核人员
@@ -241,6 +254,10 @@ func (this *YanxuanSpecialController) Detail() {
 			resp.IsApprovalAdmin = true
 		}
 	}
+	//
+	//if resp.HasPermission != 1 || sysUser.UserId == 0 {
+	//	resp.Content = utils.InterceptHtmlLength(resp.Content, 240)
+	//}
 
 	br.Data = resp
 	br.Ret = 200

+ 0 - 18
models/chart_permission.go

@@ -2,7 +2,6 @@ package models
 
 import (
 	"github.com/beego/beego/v2/client/orm"
-	"time"
 )
 
 type ChartPermissionResp struct {
@@ -25,23 +24,6 @@ type ChartPermissionItemResp struct {
 	MatchTypeName     string `description:"匹配类型名称"`
 }
 
-type CompanyReportPermission struct {
-	CompanyReportPermissionId int `orm:"column(company_report_permission_id);pk"`
-	CompanyId                 int `description:"客户id"`
-	ReportPermissionId        int `description:"报告权限id"`
-	CreatedTime               time.Time
-	LastUpdatedTime           time.Time
-	ChartPermissionId         int    `description:"权限id"`
-	StartDate                 string `description:"权限开始日期"`
-	EndDate                   string `description:"权限结束日期"`
-	ProductId                 int    `description:"产品id"`
-	ProductName               string `description:"产品名称"`
-	ModifyTime                string `description:"修改时间"`
-	CompanyContractId         string `description:"合同id"`
-	Status                    string `description:"状态  '正式','试用','关闭','永续','潜在' "`
-	IsUpgrade                 int    `description:"是否升级,1是,0否"`
-}
-
 type ChartPermissionListResp struct {
 	List      []*ChartPermissionResp
 	CheckList []int `description:"权限"`

+ 45 - 0
models/company_report_permission.go

@@ -0,0 +1,45 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CompanyReportPermission struct {
+	CompanyReportPermissionId int `orm:"column(company_report_permission_id);pk"`
+	CompanyId                 int `description:"客户id"`
+	ReportPermissionId        int `description:"报告权限id"`
+	CreatedTime               time.Time
+	LastUpdatedTime           time.Time
+	ChartPermissionId         int    `description:"权限id"`
+	StartDate                 string `description:"权限开始日期"`
+	EndDate                   string `description:"权限结束日期"`
+	ProductId                 int    `description:"产品id"`
+	ProductName               string `description:"产品名称"`
+	ModifyTime                string `description:"修改时间"`
+	CompanyContractId         string `description:"合同id"`
+	Status                    string `description:"状态  '正式','试用','关闭','永续','潜在' "`
+	IsUpgrade                 int    `description:"是否升级,1是,0否"`
+}
+
+// 通过查询条件获取详情
+func GetCompanyReportPermissionDetailByCondition(condition string, pars []interface{}) (item *CompanyReportPermission, err error) {
+	if condition == "" {
+		return
+	}
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT * FROM company_report_permission  WHERE 1 = 1  ` + condition
+	err = o.Raw(sql, pars).QueryRow(&item)
+	return
+}
+
+// 列表
+func GetCompanyReportPermissionList(condition string, pars []interface{}) (items []*CompanyReportPermission, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT * FROM company_report_permission  WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 1 - 1
models/industrial_management.go

@@ -359,7 +359,7 @@ func GetTopIndustryFollowData(startSize, pageSize int, condition string, pars []
 	sql += ` GROUP BY
 				man.industrial_management_id
 			ORDER BY
-				man.one_month_follow_num DESC
+				man.one_month_follow_num DESC , man.industrial_management_id DESC 
 			LIMIT ?,?`
 	_, err = orm.NewOrm().Raw(sql, pars, startSize, pageSize).QueryRows(&list)
 	return

+ 3 - 2
models/report.go

@@ -969,8 +969,8 @@ func GetArticleResearchListYx(condition string, pars []interface{}, startSize, p
 	if condition != "" {
 		sql += condition
 	}
-
-	sql += `UNION ALL
+	if needYanxuanSpecial {
+		sql += `UNION ALL
 	SELECT
 		a.id AS article_id,
 		a.title AS title,
@@ -994,6 +994,7 @@ func GetArticleResearchListYx(condition string, pars []interface{}, startSize, p
 	JOIN cygx_yanxuan_special_author AS b ON a.user_id = b.user_id
 	WHERE
 	1 = 1  AND a.status = 3 `
+	}
 	sql += ` 	GROUP BY  article_id ORDER  BY top_time DESC , publish_date DESC   LIMIT  ?,? `
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return

+ 15 - 1
models/seller.go

@@ -61,7 +61,6 @@ func GetSelleridWhichGroup(companyId, productId int) (adminId string, err error)
 			FROM
 			company_product AS a
 			INNER JOIN admin AS b ON a.seller_id = b.admin_id
-			INNER JOIN wx_user AS c ON b.mobile = c.mobile
 			WHERE
 			a.company_id = ?
 			AND a.product_id = ?
@@ -76,3 +75,18 @@ func GetSellerByAdminId(adminId int) (item *AdminItem, err error) {
 	err = o.Raw(sql, adminId).QueryRow(&item)
 	return
 }
+
+func GetSellerByAdminMobile(mobile string) (item *AdminItem, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := ` SELECT * FROM admin WHERE mobile=?  `
+	err = o.Raw(sql, mobile).QueryRow(&item)
+	return
+}
+
+// GetAdminListByGroupId 根据分组id获取系统用户列表
+func GetAdminListByGroupId(groupId int) (items []*Admin, err error) {
+	sql := `SELECT * FROM admin WHERE group_id=? and enabled=1 `
+	o := orm.NewOrmUsingDB("weekly_report")
+	_, err = o.Raw(sql, groupId).QueryRows(&items)
+	return
+}

+ 9 - 9
routers/commentsRouter.go

@@ -1114,15 +1114,6 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:YanxuanSpecialController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:YanxuanSpecialController"],
-        beego.ControllerComments{
-            Method: "Detail",
-            Router: `/detail`,
-            AllowHTTPMethods: []string{"get"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
     beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:YanxuanSpecialController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:YanxuanSpecialController"],
         beego.ControllerComments{
             Method: "Enable",
@@ -1186,6 +1177,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:YanxuanSpecialNoLoginController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:YanxuanSpecialNoLoginController"],
+        beego.ControllerComments{
+            Method: "Detail",
+            Router: `/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:YanxuanSpecialNoLoginController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:YanxuanSpecialNoLoginController"],
         beego.ControllerComments{
             Method: "List",

+ 16 - 4
services/activity.go

@@ -326,10 +326,12 @@ func ActivityConditioninitSql(user *models.WxUserItem, condition string, isPower
 	if GetBelongingRaiIt(user.Mobile) && user.CompanyId == utils.HZ_COMPANY_ID {
 		return
 	}
-	adminIds, err := models.GetSelleridWhichGroup(user.CompanyId, 2)
-	if err != nil {
-		return
-	}
+	//adminIds, err := models.GetSelleridWhichGroup(user.CompanyId, 2)
+	//if err != nil {
+	//	return
+	//}
+
+	adminIds := GetSelleridWhichGroup(user.CompanyId, 2, user.Mobile)
 	userType, permissionStr, permissionStrZhengShi, err := GetUserTypeZhengShi(user.CompanyId)
 	if err != nil {
 		return
@@ -1377,6 +1379,16 @@ func GetActivityDetailUserPower(user *models.WxUserItem, activityInfo *models.Ac
 				haveVisibleRange = true
 			}
 		}
+
+		if activityInfo.AdminId > 0 {
+			adminGroup := GetAdminActivityPermission(activityInfo.AdminId)
+			for _, v := range adminGroup {
+				if v == activityInfo.AdminId {
+					haveVisibleRange = true
+				}
+			}
+		}
+
 		if !haveVisibleRange {
 			havePower = false
 			return

+ 4 - 4
services/activity_special_trip.go

@@ -199,7 +199,6 @@ func CheckTripRemainingtimesBycompany(user *models.WxUserItem, activityInfo *mod
 			} // 如果对应行业有剩余次数,或者是属于大套餐且有次数,那么校验也通过
 		}
 	}
-	errMsg = msgTemplate
 	return
 
 }
@@ -237,7 +236,7 @@ func DeductTripRemainingtimesByUser(user *models.WxUserItem, activityInfo *model
 	//判断是不是策略行业的活动,如果不是策略就获取对应行业的点数 ,策略的任何一个行业有剩余点数都能参加
 	if chartPermissionName != utils.CE_LUE_NAME {
 		pars = make([]interface{}, 0)
-		condition = " AND  company_id  = ?  AND  chart_permission_id  = ?   AND points  > 0   ORDER BY  points DESC LIMIT 1   "
+		condition = " AND  company_id  = ?  AND ( chart_permission_id  = ? OR  chart_permission_id =0 )    AND points  > 0   ORDER BY  points DESC LIMIT 1   "
 		pars = append(pars, companyId, activityInfo.ChartPermissionId)
 	}
 	activitySpecialPermissionPointsList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
@@ -277,7 +276,7 @@ func RebateTripRemainingtimesByUser(user *models.WxUserItem, activityInfo *model
 	//判断是不是策略行业的活动,如果不是策略就获取对应行业的点数 ,策略的任何一个行业有剩余点数都能参加
 	if chartPermissionName != utils.CE_LUE_NAME {
 		pars = make([]interface{}, 0)
-		condition = " AND  company_id  = ?  AND  chart_permission_id  = ?   LIMIT 1   "
+		condition = " AND  company_id  = ?  AND ( chart_permission_id  = ?  OR chart_permission_id = 0  )  LIMIT 1   "
 		pars = append(pars, companyId, activityInfo.ChartPermissionId)
 	} else {
 		lastTripBill, e := models.GetCygxActivitySpecialTripBillLastDetialByActivityId(activityInfo.ActivityId, user.UserId)
@@ -287,7 +286,7 @@ func RebateTripRemainingtimesByUser(user *models.WxUserItem, activityInfo *model
 		}
 
 		pars = make([]interface{}, 0)
-		condition = " AND  company_id  = ?  AND  chart_permission_id  = ?    LIMIT 1   "
+		condition = " AND  company_id  = ?  AND ( chart_permission_id  = ?  OR chart_permission_id = 0  )    LIMIT 1   "
 		pars = append(pars, companyId, lastTripBill.ChartPermissionId)
 	}
 	activitySpecialPermissionPointsList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
@@ -347,6 +346,7 @@ func HandleActivitySpecialTripBillTotalText(user *models.WxUserItem) (totalText
 	if len(itemBillTotal) > 0 {
 		totalText = strings.Join(itemBillTotal, "+")
 	}
+	fmt.Println(totalText)
 	return
 }
 

+ 71 - 0
services/admin.go

@@ -1,8 +1,12 @@
 package services
 
 import (
+	"errors"
+	"fmt"
 	"hongze/hongze_clpt/models"
 	"hongze/hongze_clpt/utils"
+	"strconv"
+	"strings"
 )
 
 func GetAdminMobileMap() (mapItem map[string]string, err error) {
@@ -95,3 +99,70 @@ func GetBelongingRaiIt(mobile string) (isBelong bool) {
 	}
 	return
 }
+
+//func init() {
+//	fmt.Println(GetAdminActivityPermission(542))
+//}
+
+// GetAdminActivityPermission 获取本组组员ID
+func GetAdminActivityPermission(adminId int) (adminIdArr []int) {
+	var err error
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("GetAdminActivityPermission失败 ErrMsg:"+err.Error(), 2)
+
+		}
+	}()
+	adminUser, e := models.GetSellerByAdminId(adminId)
+	if e != nil {
+		err = errors.New("GetSellerByAdminId, Err: " + e.Error())
+		return
+	}
+	adminList, err := models.GetAdminListByGroupId(adminUser.GroupId)
+	if err != nil {
+		return
+	}
+	adminIdArr = make([]int, 0)
+	for _, v := range adminList {
+		adminIdArr = append(adminIdArr, v.AdminId)
+	}
+	return
+}
+
+// 获取本组的销售ID
+func GetSelleridWhichGroup(companyId, productId int, mobile string) (adminIds string) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("获取本组的销售ID GetSelleridWhichGroup失败 ErrMsg:"+err.Error(), 2)
+
+		}
+	}()
+	adminIds, e := models.GetSelleridWhichGroup(companyId, productId)
+	if e != nil {
+		err = errors.New("GetSelleridWhichGroup, Err: " + e.Error())
+		return
+	}
+
+	if mobile != "" && adminIds != "" {
+		adminUser, e := models.GetSellerByAdminMobile(mobile)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetSellerByAdminId, Err: " + e.Error())
+			return
+		}
+		if adminUser != nil {
+			adminList, e := models.GetAdminListByGroupId(adminUser.GroupId)
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("models GetAdminListByGroupId, Err: " + e.Error())
+				return
+			}
+			var adminIdArr []string
+			for _, v := range adminList {
+				adminIdArr = append(adminIdArr, strconv.Itoa(v.AdminId))
+			}
+			adminIds += "," + strings.Join(adminIdArr, ",")
+		}
+	}
+	return
+}

+ 4 - 4
services/company_permission.go

@@ -87,9 +87,9 @@ func GetUserHasPermissionArticle(user *models.WxUserItem) (hasPermission int, se
 	}
 	if user.CompanyId <= 1 {
 		if applyCount == 0 {
-			hasPermission = 4
-		} else {
 			hasPermission = 5
+		} else {
+			hasPermission = 4
 		}
 	} else {
 		companyPermission, e := models.GetCompanyPermission(user.CompanyId)
@@ -99,9 +99,9 @@ func GetUserHasPermissionArticle(user *models.WxUserItem) (hasPermission int, se
 		}
 		if companyPermission != "" {
 			if applyCount > 0 {
-				hasPermission = 2
-			} else {
 				hasPermission = 3
+			} else {
+				hasPermission = 2
 				//获取权益销售信息 如果是FICC的客户类型,则默认他申请过
 				sellerItemQy, e := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
 				if e != nil && e.Error() != utils.ErrNoRow() {

+ 8 - 2
services/cygx_yanxuan_special_company.go

@@ -93,6 +93,12 @@ func AddSpecialRecord(user *models.WxUserItem, specialId, stopTime int) (err err
 			return
 		}
 
+		detail, e := models.GetYanxuanSpecialBySpecialId(specialId)
+		if e != nil {
+			err = errors.New("GetYanxuanSpecialBySpecialId, Err: " + e.Error())
+			return
+		}
+
 		item := new(models.CygxYanxuanSpecialRecord)
 		item.UserId = user.UserId
 		item.Mobile = user.Mobile
@@ -122,7 +128,7 @@ func AddSpecialRecord(user *models.WxUserItem, specialId, stopTime int) (err err
 			}
 
 			//专栏作者Pv数量进行加一
-			e = models.UpdateCygxYanxuanSpecialAuthorPv(user.UserId)
+			e = models.UpdateCygxYanxuanSpecialAuthorPv(detail.UserId)
 			if e != nil {
 				err = errors.New("UpdateCygxYanxuanSpecialAuthorPv, Err: " + e.Error())
 				return
@@ -137,7 +143,7 @@ func AddSpecialRecord(user *models.WxUserItem, specialId, stopTime int) (err err
 				}
 
 				//专栏作者Uv数量进行加一
-				e = models.UpdateCygxYanxuanSpecialAuthorUv(user.UserId)
+				e = models.UpdateCygxYanxuanSpecialAuthorUv(detail.UserId)
 				if e != nil {
 					err = errors.New("UpdateCygxYanxuanSpecialAuthorUv, Err: " + e.Error())
 					return

+ 24 - 0
services/user_permission.go

@@ -168,3 +168,27 @@ func GetUserRaiPermissionInfo(userId, companyId int) (authInfo models.UserPermis
 	}
 	return
 }
+
+// 查询研选的权限状态
+func GetUserRaiPermissionYanXuanInfo(user *models.WxUserItem) (hasPermission int, err error) {
+	var condition string
+	var pars []interface{}
+	condition = " AND company_id = ?  AND status  IN ('正式','试用')  AND chart_permission_id = ?   ORDER BY company_report_permission_id DESC LIMIT 1  "
+	pars = append(pars, user.CompanyId, utils.CHART_PERMISSION_ID_YANXUAN)
+	companyReportPermissionDetail, e := models.GetCompanyReportPermissionDetailByCondition(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCompanyReportPermissionDetailByCondition, Err: " + e.Error())
+		return
+	}
+	//如果用户没有研选权限,那么就获取他对应的状态码
+	if companyReportPermissionDetail == nil {
+		hasPermission, _, _, _, e = GetUserHasPermissionArticle(user)
+		if e != nil {
+			err = errors.New("GetUserHasPermissionArticle, Err: " + e.Error())
+			return
+		}
+	} else {
+		hasPermission = 1
+	}
+	return
+}

+ 18 - 1
utils/common.go

@@ -8,6 +8,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/PuerkitoBio/goquery"
+	"html"
 	"image"
 	"image/png"
 	"math"
@@ -787,7 +788,7 @@ func ArticleHasImgUrl(body string) (hasImg bool, err error) {
 	return
 }
 
-func ArticleRemoveImgUrl(body string) (result string){
+func ArticleRemoveImgUrl(body string) (result string) {
 	// 使用正则表达式去除img标签
 	re := regexp.MustCompile(`<img[^>]*>`)
 	result = re.ReplaceAllString(body, "")
@@ -819,3 +820,19 @@ func ExtractText(body string) (result string, err error) {
 
 	return
 }
+
+// 富文本字符串截取指定长度
+func InterceptHtmlLength(body string, length int) (newbody string) {
+	content := html.UnescapeString(body)
+	doc, err := goquery.NewDocumentFromReader(strings.NewReader(content))
+	if err != nil {
+		fmt.Println("create doc err:", err.Error())
+		return
+	}
+	bodyText := doc.Text()
+	if len(bodyText) < length {
+		length = len(bodyText)
+	}
+	newbody = bodyText[0:length]
+	return
+}