xingzai 11 місяців тому
батько
коміт
6d621caa05

+ 3 - 0
controllers/user.go

@@ -406,6 +406,9 @@ func (this *UserController) Detail() {
 	if detail.Headimgurl == "" {
 		detail.Headimgurl = utils.DefaultHeadimgurl
 	}
+	if detail.Mobile != "" {
+		detail.InviteShareCode = services.GetInviteShareCode(detail.Mobile) //判断用户是否属于销售,并且获取对应加密的分享码
+	}
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"

+ 7 - 0
models/company.go

@@ -274,3 +274,10 @@ func UpdateComapanyInteractionNum(interactionNum, interactionNumSeller, companyI
 	_, err = o.Raw(sql, interactionNum, interactionNumSeller, companyId).Exec()
 	return
 }
+
+func GetCompanyProductCount(companyId, productId int) (count int, err error) {
+	sql := ` SELECT COUNT(1) AS count FROM  company_product WHERE company_id = ? AND product_id = ? `
+	o := orm.NewOrmUsingDB("weekly_report")
+	err = o.Raw(sql, companyId, productId).QueryRow(&count)
+	return
+}

+ 2 - 0
models/db.go

@@ -177,6 +177,8 @@ func init() {
 		new(CygxAskserieVideoCollect),
 		new(CygxVoiceAndVideoHistory),
 		new(CygxArticleAndYanxuanRecord),
+		new(CygxUserAdminShareHistory),
+		new(CygxUserAdminShareCode),
 	)
 	// 记录ORM查询日志
 	orm.Debug = true

+ 17 - 0
models/seller.go

@@ -75,3 +75,20 @@ func GetSelleridWhichGroup(companyId, productId int) (adminId string, err error)
 	err = o.Raw(sql, companyId, productId).QueryRow(&adminId)
 	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
+}

+ 1 - 0
models/user.go

@@ -30,6 +30,7 @@ type UserDetail struct {
 	StartDate           string  `description:"开始日期"`
 	EndDate             string  `description:"结束日期"`
 	CompanyPointsNum    float64 `description:"公司剩余点数"`
+	InviteShareCode     string  `description:"销售账号邀请码"`
 }
 
 func GetUserDetailByUserId(userId int) (item *UserDetail, err error) {

+ 37 - 0
models/user_admin_share_code.go

@@ -0,0 +1,37 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxUserAdminShareCode struct {
+	UserAdminCodeId int       `orm:"column(user_admin_share_code_id);pk";comment:"主键ID"`
+	SellerName      string    `comment:"所属销售"`
+	SellerId        int       `comment:"所属销售id"`
+	Mobile          string    `comment:"手机号"`
+	CreateTime      time.Time `comment:"创建时间"`
+	ModifyTime      time.Time `comment:"修改时间"`
+	ShareCode       string    `comment:"分享码,对seller_id进行MD5加密的结果"`
+}
+
+// 获取数量
+func GetCygxUserAdminShareCodeByShareCodeCount(chareCode string) (count int, err error) {
+	o := orm.NewOrm()
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_user_admin_share_code WHERE  share_code  = ? `
+	err = o.Raw(sqlCount, chareCode).QueryRow(&count)
+	return
+}
+
+func AddCygxUserAdminShareCode(item *CygxUserAdminShareCode) (err error) {
+	o := orm.NewOrm()
+	_, 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
+}

+ 33 - 0
models/user_admin_share_history.go

@@ -0,0 +1,33 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxUserAdminShareHistory struct {
+	UserAdminShareHistoryId int       `orm:"column(user_admin_share_history_id);pk";comment:"主键ID"`
+	Action                  string    `comment:"动作内容"`
+	UserId                  int       `comment:"用户ID"`
+	Mobile                  string    `comment:"手机号"`
+	Email                   string    `comment:"邮箱"`
+	CompanyId               int       `comment:"公司ID"`
+	CompanyName             string    `comment:"公司名称"`
+	RealName                string    `comment:"用户实际名称"`
+	SellerName              string    `comment:"所属销售名称"`
+	SellerId                int       `comment:"所属销售ID"`
+	ShareId                 int       `comment:"分享人ID"`
+	ShareName               string    `comment:"分享人姓名"`
+	Source                  string    `comment:"来源(article, activity, login)"`
+	SourceId                int       `comment:"来源 ID"`
+	SourceTitle             string    `comment:"来源名称,活动或者报告标题"`
+	RegisterPlatform        int       `comment:"注册平台(1: 小程序, 2: 网页)"`
+	CreateTime              time.Time `comment:"创建时间"`
+	ModifyTime              time.Time `comment:"修改时间"`
+}
+
+func AddCygxUserAdminShareHistory(item *CygxUserAdminShareHistory) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(item)
+	return
+}

+ 114 - 0
services/user_admin_share.go

@@ -0,0 +1,114 @@
+package services
+
+import (
+	"errors"
+	"fmt"
+	"hongze/hongze_mfyx/models"
+	"hongze/hongze_mfyx/utils"
+	"strconv"
+	"time"
+)
+
+// 判断用户是否属于销售,并且获取对应加密的分享码
+func GetInviteShareCode(mobile string) (inviteShareCode string) {
+	if mobile == "" {
+		return
+	}
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("判断用户是否属于销售,并且获取对应加密的分享码失败 GetInviteShareCode, err:", err.Error()), 2)
+		}
+	}()
+	adminDetail, e := models.GetSysAdminByMobile(mobile)
+	if e != nil {
+		err = errors.New("GetSysAdminByMobile, Err: " + e.Error())
+		return
+	}
+	if adminDetail == nil {
+		return
+	}
+	inviteShareCode = utils.MD5(strconv.Itoa(adminDetail.AdminId)) //MD5 对ID进行加密
+	total, e := models.GetCygxUserAdminShareCodeByShareCodeCount(inviteShareCode)
+	if e != nil {
+		err = errors.New("GetCygxUserAdminShareCodeByShareCodeCount, Err: " + e.Error())
+		return
+	}
+	//如果不存在就新增一个
+	if total == 0 {
+		item := new(models.CygxUserAdminShareCode)
+		item.SellerName = adminDetail.RealName
+		item.SellerId = adminDetail.AdminId
+		item.Mobile = adminDetail.Mobile
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		item.ShareCode = inviteShareCode
+		e = models.AddCygxUserAdminShareCode(item)
+		if e != nil {
+			err = errors.New("AddCygxUserAdminShareCode, Err: " + e.Error())
+			return
+		}
+	}
+	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_mfyx/models"
 	"hongze/hongze_mfyx/utils"
 	"strings"
@@ -85,3 +86,38 @@ func GetUserRaiPermissionInfo(userId, companyId int) (authInfo models.UserPermis
 	permissionArr = strings.Split(permissions, ",")
 	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
+
+}