Browse Source

no message

xingzai 1 year ago
parent
commit
f0d30a4ae6

+ 7 - 0
controllers/activity.go

@@ -698,6 +698,7 @@ func (this *ActivityNoLoginController) ActivityListNew() {
 // @Title  活动详情
 // @Description 获取活动详情接口
 // @Param   ActivityId   query   int  true       "活动ID"
+// @Param   InviteShareCode   query   string  false       "销售账号邀请码"
 // @Success Ret=200 {object} models.CygxActivityResp
 // @router /detail [get]
 func (this *ActivityNoLoginController) Detail() {
@@ -719,6 +720,7 @@ func (this *ActivityNoLoginController) Detail() {
 		br.Msg = "请输入活动ID"
 		return
 	}
+	inviteShareCode := this.GetString("InviteShareCode")
 	resp := new(models.CygxActivityResp)
 	activityInfo, err := models.GetAddActivityInfoByIdShow(uid, activityId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
@@ -731,6 +733,11 @@ func (this *ActivityNoLoginController) Detail() {
 		br.ErrMsg = "活动ID错误,Err:" + "activityId:" + strconv.Itoa(activityId)
 		return
 	}
+
+	//记录分享来源
+	if inviteShareCode != "" {
+		go services.AddCygxUserAdminShareHistory(user, utils.CYGX_OBJ_ACTIVITY, activityInfo.ActivityName, inviteShareCode, activityId)
+	}
 	// 判断是否属于研选类型的活动
 	if strings.Contains(activityInfo.ChartPermissionName, utils.CHART_PERMISSION_NAME_YANXUAN) {
 		activityInfo.IsResearch = true

+ 6 - 1
controllers/article.go

@@ -26,6 +26,7 @@ type ArticleNoLoginController struct {
 // @Title 获取报告详情
 // @Description 获取报告详情接口
 // @Param   ArticleId   query   int  true       "报告ID"
+// @Param   InviteShareCode   query   string  false       "销售账号邀请码"
 // @Success 200 {object} models.ArticleDetailResp
 // @router /detail [get]
 func (this *ArticleNoLoginController) Detail() {
@@ -49,6 +50,7 @@ func (this *ArticleNoLoginController) Detail() {
 		br.ErrMsg = "文章不存在,文章ID错误"
 		return
 	}
+	inviteShareCode := this.GetString("InviteShareCode")
 	detail := new(models.ArticleDetail)
 	hasPermission := 0
 	hasFree := 0
@@ -68,7 +70,10 @@ func (this *ArticleNoLoginController) Detail() {
 		br.ErrMsg = "获取信息失败,Err:" + err.Error()
 		return
 	}
-
+	//记录分享来源
+	if inviteShareCode != "" {
+		go services.AddCygxUserAdminShareHistory(user, utils.CYGX_OBJ_ARTICLE, detail.Title, inviteShareCode, articleId)
+	}
 	// 判断是否属于研选类型的报告
 	if strings.Contains(detail.CategoryName, utils.CHART_PERMISSION_NAME_YANXUAN) {
 		resp.IsResearch = true

+ 6 - 2
controllers/user.go

@@ -54,6 +54,7 @@ func (this *UserCommonController) Login() {
 		return
 	}
 	authorization := req.Token
+	inviteShareCode := req.InviteShareCode
 
 	item, err := models.GetMsgCode(req.Mobile, req.VCode)
 	if err != nil {
@@ -124,10 +125,13 @@ func (this *UserCommonController) Login() {
 		}
 	}
 
-	//记录通过三方合作机构过来的公司
 	{
-		services.AddInviteCompany(user)
+		services.AddInviteCompany(user) //记录通过三方合作机构过来的公司
+		if inviteShareCode != "" {      //记录分享来源
+			go services.AddCygxUserAdminShareHistory(user, "login", "", inviteShareCode, 0) //记录分享来源
+		}
 	}
+
 	resp := new(models.LoginResp)
 	resp.UserId = user.UserId
 	resp.Headimgurl = user.Headimgurl

+ 17 - 0
models/seller.go

@@ -90,3 +90,20 @@ func GetAdminListByGroupId(groupId int) (items []*Admin, err error) {
 	_, err = o.Raw(sql, groupId).QueryRows(&items)
 	return
 }
+
+// 获取权益销售信息
+func GetRaiSellerByCompanyId(companyId int) (item *AdminItem, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := ` SELECT
+     		b.admin_id,
+			b.real_name,
+			b.mobile 
+		FROM
+			company_product AS a
+			INNER JOIN admin AS b ON a.seller_id = b.admin_id 
+		WHERE
+			a.product_id = 2 
+			AND a.company_id = ?`
+	err = o.Raw(sql, companyId).QueryRow(&item)
+	return
+}

+ 4 - 3
models/user.go

@@ -44,9 +44,10 @@ type UserPermission struct {
 }
 
 type LoginReq struct {
-	Mobile string `description:"手机号"`
-	VCode  string `description:"验证码"`
-	Token  string `description:"微信扫码登录之后返回的Token"`
+	Mobile          string `description:"手机号"`
+	VCode           string `description:"验证码"`
+	Token           string `description:"微信扫码登录之后返回的Token"`
+	InviteShareCode string `description:"销售账号邀请码"`
 }
 
 type WxBindMobileReq struct {

+ 7 - 0
models/user_admin_share_code.go

@@ -28,3 +28,10 @@ func AddCygxUserAdminShareCode(item *CygxUserAdminShareCode) (err error) {
 	_, err = o.Insert(item)
 	return
 }
+
+func GetUserAdminShareCodeByShareCode(shareCode string) (item *CygxUserAdminShareCode, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT  * FROM cygx_user_admin_share_code  WHERE   share_code  = ? `
+	err = o.Raw(sql, shareCode).QueryRow(&item)
+	return
+}

+ 13 - 2
models/user_admin_share_history.go

@@ -1,6 +1,9 @@
 package models
 
-import "time"
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
 
 type CygxUserAdminShareHistory struct {
 	UserAdminShareHistoryId int       `orm:"column(user_admin_share_history_id);pk";comment:"主键ID"`
@@ -12,7 +15,9 @@ type CygxUserAdminShareHistory struct {
 	CompanyName             string    `comment:"公司名称"`
 	RealName                string    `comment:"用户实际名称"`
 	SellerName              string    `comment:"所属销售名称"`
-	SellerId                int       `comment:"所属销售 ID"`
+	SellerId                int       `comment:"所属销售ID"`
+	ShareId                 int       `comment:"分享人ID"`
+	ShareName               string    `comment:"分享人姓名"`
 	Source                  string    `comment:"来源(article, activity, login)"`
 	SourceId                int       `comment:"来源 ID"`
 	SourceTitle             string    `comment:"来源名称,活动或者报告标题"`
@@ -20,3 +25,9 @@ type CygxUserAdminShareHistory struct {
 	CreateTime              time.Time `comment:"创建时间"`
 	ModifyTime              time.Time `comment:"修改时间"`
 }
+
+func AddCygxUserAdminShareHistory(item *CygxUserAdminShareHistory) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(item)
+	return
+}

+ 61 - 1
services/user_admin_share.go

@@ -32,7 +32,7 @@ func GetInviteShareCode(mobile string) (inviteShareCode string) {
 	inviteShareCode = utils.MD5(strconv.Itoa(adminDetail.AdminId)) //MD5 对ID进行加密
 	total, e := models.GetCygxUserAdminShareCodeByShareCodeCount(inviteShareCode)
 	if e != nil {
-		err = errors.New("GetSysAdminByMobile, Err: " + e.Error())
+		err = errors.New("GetCygxUserAdminShareCodeByShareCodeCount, Err: " + e.Error())
 		return
 	}
 	//如果不存在就新增一个
@@ -52,3 +52,63 @@ func GetInviteShareCode(mobile string) (inviteShareCode string) {
 	}
 	return
 }
+
+// 记录分享来源
+func AddCygxUserAdminShareHistory(user *models.WxUserItem, source, sourceTitle, inviteShareCode string, sourceId int) {
+	if inviteShareCode == "" {
+		return
+	}
+
+	//3秒之内多次请求,不重复记录
+	key := "CYGX_" + source + "_" + strconv.Itoa(sourceId) + "_" + strconv.Itoa(user.UserId)
+	if utils.Rc.IsExist(key) {
+		return
+	}
+	utils.Rc.Put(key, 1, 3*time.Second)
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("记录分享来源失败 AddCygxUserAdminShareHistory, err:", err.Error()), 2)
+		}
+	}()
+	adminDetail, e := models.GetUserAdminShareCodeByShareCode(inviteShareCode)
+	if e != nil {
+		err = errors.New("GetSysAdminByMobile, Err: " + e.Error())
+		return
+	}
+	if adminDetail == nil {
+		return
+	}
+	item := new(models.CygxUserAdminShareHistory)
+	switch source {
+	case utils.CYGX_OBJ_ACTIVITY:
+		item.Action = "查看活动"
+	case utils.CYGX_OBJ_ARTICLE:
+		item.Action = "查看报告"
+	case "login":
+		item.Action = "注册"
+	}
+	item.UserId = user.UserId
+	item.Mobile = user.Mobile
+	item.Email = user.Email
+	item.CompanyId = user.CompanyId
+	item.CompanyName = user.CompanyName
+	item.RealName = user.RealName
+	item.SellerName, item.SellerId = GetSellerName(user) // 销售姓名
+	item.Source = source
+	item.SourceId = sourceId
+	item.SourceTitle = sourceTitle
+	item.ShareId = adminDetail.SellerId
+	item.ShareName = adminDetail.SellerName
+	item.RegisterPlatform = utils.REGISTER_PLATFORM
+	item.CreateTime = time.Now()
+	item.ModifyTime = time.Now()
+
+	e = models.AddCygxUserAdminShareHistory(item)
+	if e != nil {
+		err = errors.New("AddCygxUserAdminShareHistory, Err: " + e.Error())
+		return
+	}
+	return
+}

+ 36 - 0
services/user_permission.go

@@ -2,6 +2,7 @@ package services
 
 import (
 	"errors"
+	"fmt"
 	"hongze/hongze_web_mfyx/models"
 	"hongze/hongze_web_mfyx/utils"
 	"strings"
@@ -294,3 +295,38 @@ func GetUserDetailPermissionCode(userId, companyId int) (permission int, err err
 	}
 	return
 }
+
+// 获取权益销售姓名
+func GetSellerName(user *models.WxUserItem) (sellerName string, sellerId int) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("获取权益销售姓名失败 GetSellerName, err:", err.Error()), 2)
+		}
+	}()
+	companyId := user.CompanyId
+	//潜在客户没有销售
+	if user.CompanyId <= 1 {
+		return
+	}
+	//权益客户
+	raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
+	if e != nil {
+		err = errors.New("GetCompanyProductCount, Err: " + e.Error())
+		return
+	}
+	//仅开通FICC的客户不展示销售姓名
+	if raiCount == 0 {
+		return
+	}
+	sealldetail, e := models.GetRaiSellerByCompanyId(companyId)
+	if e != nil {
+		err = errors.New("GetRaiSellerByCompanyId, Err: " + e.Error())
+		return
+	}
+	sellerName = sealldetail.RealName
+	sellerId = sealldetail.AdminId
+	return
+
+}