Procházet zdrojové kódy

Merge branch 'mfyx_2.1' of http://8.136.199.33:3000/cxzhang/hongze_mfyx into debug

xingzai před 1 rokem
rodič
revize
ae84cdcaac

+ 5 - 1
controllers/user.go

@@ -425,6 +425,10 @@ func (this *UserController) Detail() {
 			}
 		}
 	}
+
+	if detail.Mobile != "" {
+		detail.InviteShareCode = services.GetInviteShareCode(detail.Mobile) //判断用户是否属于销售,并且获取对应加密的分享码
+	}
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
@@ -1145,7 +1149,7 @@ func (this *UserController) ApplyTryOut() {
 		br.ErrMsg = "获取共享销售信息失败,Err:" + err.Error()
 		return
 	}
-	if  shareSellerItem != nil {
+	if shareSellerItem != nil {
 		sellerItem = shareSellerItem
 	}
 

+ 2 - 0
models/db.go

@@ -177,6 +177,8 @@ func init() {
 		new(CygxAskserieVideoCollect),
 		new(CygxVoiceAndVideoHistory),
 		new(CygxArticleAndYanxuanRecord),
+		new(CygxUserAdminShareHistory),
+		new(CygxUserAdminShareCode),
 		new(AliyunOcrLog),
 	)
 

+ 1 - 1
models/seller.go

@@ -101,4 +101,4 @@ func GetShareSellerByCompanyIdCheckFicc(companyId, productId int) (item *AdminIt
 			WHERE a.company_id=? AND a.product_id=?`
 	err = o.Raw(sql, companyId, productId).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:"销售账号邀请码"`
 	UserCardType        int     `description:"权益卡类型,0:未开通、1日卡、2月卡"`
 	UserCardEndDate     string  `description:"权益卡有效期"`
 }

+ 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
+}