Bläddra i källkod

Merge branch 'need/cygx_1038' of http://8.136.199.33:3000/hongze/hongze_cygx into debug

zhangchuanxing 2 veckor sedan
förälder
incheckning
49894d3e10

+ 2 - 0
controllers/report.go

@@ -1492,6 +1492,8 @@ func (this *ReportController) IsShow() {
 	} else {
 		resp.IsShowMobileAndEmailButton = true //是否展示手机号跟邮箱按钮
 	}
+
+	resp.IsShowMobileAndEmailButton, resp.EndData = services.GetWxUserEndDate(user)
 	//mobile := user.Mobile
 	//if mobile == "" {
 	//	br.Ret = 200

+ 9 - 0
models/db.go

@@ -7,6 +7,7 @@ import (
 	"hongze/hongze_cygx/models/order"
 	"hongze/hongze_cygx/models/rai_serve"
 	"hongze/hongze_cygx/models/time_line"
+	"hongze/hongze_cygx/models/wx_user"
 	"hongze/hongze_cygx/models/yidong"
 	"hongze/hongze_cygx/utils"
 	"time"
@@ -199,6 +200,7 @@ func init() {
 		new(WxUserRaiLabel),
 		new(WxUserRaiLabelLog),
 		new(WxUserRaiArticleLabel),
+		//new(WxUserEndDateLog),
 	)
 
 	initOrder()      // 订单模块
@@ -248,3 +250,10 @@ func initYidong() {
 		new(yidong.CygxYidongActivityMeetData), //易董活动到会信息原始数据
 	)
 }
+
+// initYidong
+func initWxUseer() {
+	orm.RegisterModel(
+		new(wx_user.WxUserEndDateLog), //易董活动原始数据
+	)
+}

+ 17 - 3
models/ficc_report/report.go

@@ -134,16 +134,30 @@ func GetByReportId(reportId int) (item *Report, err error) {
 	return
 }
 
+//func GetFiccRreportToCygxArticle(condition string, pars []interface{}) (items []*Report, err error) {
+//	o := orm.NewOrmUsingDB("rddp")
+//	sql := ` SELECT	* FROM report WHERE state = 2 AND  is_public_publish = 1
+//			AND classify_name_first IN ('宏观报告','晨会纪要','调研纪要','数据点评','从宏观看商品')
+//			AND classify_name_second IN ('大类资产周报','晨会纪要','黑色调研','宏观G2观察','人民币汇率双周报','房地产市场跟踪','黄金月报','铜行业数据点评','原油基本面推演','原油船期数据跟踪','EIA原油库存点评','从宏观看商品','铜行业跟踪')
+//			AND IF ( classify_name_first = '宏观报告' , classify_name_second IN  ('大类资产周报','宏观G2观察','人民币汇率双周报','房地产市场跟踪','黄金月报')  ,1=1 )
+//			AND IF ( classify_name_first = '晨会纪要' , classify_name_second = '晨会纪要' ,1=1 )
+//			AND IF ( classify_name_first = '调研纪要' , classify_name_second = '黑色调研' ,1=1 )
+//			AND IF ( classify_name_first = '从宏观看商品' , classify_name_second = '从宏观看商品' ,1=1 )
+//			AND IF ( classify_name_first = '数据点评' , classify_name_second  IN  ('铜行业数据点评','原油基本面推演','原油船期数据跟踪','EIA原油库存点评','铜行业跟踪')  ,1=1 ) ` + condition + ` ORDER BY  modify_time	 DESC   `
+//	_, err = o.Raw(sql, pars).QueryRows(&items)
+//	return
+//}
+
 func GetFiccRreportToCygxArticle(condition string, pars []interface{}) (items []*Report, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := ` SELECT	* FROM report WHERE state = 2 AND  is_public_publish = 1 
 			AND classify_name_first IN ('宏观报告','晨会纪要','调研纪要','数据点评','从宏观看商品')
-			AND classify_name_second IN ('大类资产周报','晨会纪要','黑色调研','宏观G2观察','人民币汇率双周报','房地产市场跟踪','黄金月报','铜行业数据点评','原油基本面推演','原油船期数据跟踪','EIA原油库存点评','从宏观看商品','铜行业跟踪')
-			AND IF ( classify_name_first = '宏观报告' , classify_name_second IN  ('大类资产周报','宏观G2观察','人民币汇率双周报','房地产市场跟踪','黄金月报')  ,1=1 )
+			AND classify_name_second IN ('晨会纪要','黑色调研','宏观G2观察','人民币汇率双周报','房地产市场跟踪','黄金月报','铜行业数据点评','原油船期数据跟踪','从宏观看商品','铜行业跟踪')
+			AND IF ( classify_name_first = '宏观报告' , classify_name_second IN  ('宏观G2观察','人民币汇率双周报','房地产市场跟踪','黄金月报')  ,1=1 )
 			AND IF ( classify_name_first = '晨会纪要' , classify_name_second = '晨会纪要' ,1=1 )
 			AND IF ( classify_name_first = '调研纪要' , classify_name_second = '黑色调研' ,1=1 ) 
 			AND IF ( classify_name_first = '从宏观看商品' , classify_name_second = '从宏观看商品' ,1=1 ) 
-			AND IF ( classify_name_first = '数据点评' , classify_name_second  IN  ('铜行业数据点评','原油基本面推演','原油船期数据跟踪','EIA原油库存点评','铜行业跟踪')  ,1=1 ) ` + condition + ` ORDER BY  modify_time	 DESC   `
+			AND IF ( classify_name_first = '数据点评' , classify_name_second  IN  ('铜行业数据点评','原油船期数据跟踪','铜行业跟踪') ,1=1 ) ` + condition + ` ORDER BY  modify_time	 DESC   `
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }

+ 2 - 0
models/report.go

@@ -402,6 +402,8 @@ type IsShow struct {
 	IsShowQuestionnaire        bool      `description:"是否展示研选问卷调查"`
 	IsShowAboutVideo           bool      `description:"是否展示关于我们的视频"`
 	IsShowMobileAndEmailButton bool      `description:"是否展示手机号跟邮箱按钮"`
+	IsShowTerminateButton      bool      `description:"是否弹到期提醒的弹窗"`
+	EndData                    string    `description:"结束时间"`
 }
 
 type SearchTxt struct {

+ 34 - 0
models/wx_user/wx_user_end_date.go

@@ -0,0 +1,34 @@
+package wx_user
+
+//权益正式客户到期前30天弹窗消息提醒
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type WxUserEndDateLog struct {
+	EndDateId   int `orm:"column(end_date_id);pk"`
+	UserId      int
+	Mobile      string    `description:"手机号"`
+	Email       string    `description:"邮箱"`
+	CompanyId   int       `description:"公司id"`
+	CompanyName string    `description:"公司名称"`
+	ModifyTime  time.Time `description:"修改时间"`
+	CreateTime  time.Time `description:"创建时间"`
+	RealName    string    `description:"用户实际名称"`
+	EndDate     string    `description:"结束时间"`
+}
+
+// 添加历史信息
+func AddWxUserEndDateLog(item *WxUserEndDateLog) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+func GeWxUserEndDateLogCount(userId int, endDate string) (count int, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT COUNT(1) AS count FROM  wx_user_end_date_log WHERE user_id = ? AND end_date = ? `
+	err = o.Raw(sql, userId, endDate).QueryRow(&count)
+	return
+}

+ 40 - 16
services/activity_points.go

@@ -789,6 +789,8 @@ func YanXuanActivityPointsBillSubmitMeetingReduce(log models.YanXuanActivityPoin
 		}
 	}()
 
+	time.Sleep(5 * time.Second) //添加五秒的延迟
+
 	activityId := log.ActivityId
 	//获取活动是否扣点以及扣点规则明细
 	activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
@@ -826,6 +828,28 @@ func YanXuanActivityPointsBillSubmitMeetingReduce(log models.YanXuanActivityPoin
 	}
 	for _, v := range signUpDetailList {
 		companyIds = append(companyIds, v.CompanyId)
+
+		companyId := v.CompanyId
+		//判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
+		total, e := models.GetCygxActivityPointsCompanyCountByCompanyId(companyId)
+		if e != nil {
+			err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
+			return
+		}
+
+		if total == 0 {
+			itemPointsCompany := new(models.CygxActivityPointsCompany)
+			itemPointsCompany.CompanyId = companyId
+			itemPointsCompany.CompanyName = v.CompanyName
+			itemPointsCompany.CreateTime = time.Now()
+			itemPointsCompany.ModifyTime = time.Now()
+
+			e = models.AddCygxActivityPointsCompany(itemPointsCompany)
+			if e != nil {
+				err = errors.New("AddCygxActivityPointsCompany, Err: " + e.Error())
+				return
+			}
+		}
 	}
 
 	//return
@@ -891,22 +915,22 @@ func YanXuanActivityPointsBillSubmitMeetingReduce(log models.YanXuanActivityPoin
 			itemCompanys = append(itemCompanys, itemCompany)
 			mapCompanyPoints[user.CompanyId] = item.Points
 		} else {
-			//第二次提交改成未到会的,对其进行返点处理
-			if mapActivityPointsBill[user.Mobile].BillDetailed < 0 {
-				item.BillDetailed = activityPointsSetDetail.UserPointsNum
-				item.DoType = 2
-				item.Content = activityInfo.ActivityName + "--活动取消到会"
-				item.Points = mapCompanyPoints[user.CompanyId] + activityPointsSetDetail.UserPointsNum
-				items = append(items, item)
-
-				//更新对应机构的剩余点数
-				itemCompany := new(models.CygxActivityPointsCompany)
-				itemCompany.CompanyId = user.CompanyId
-				itemCompany.Points = item.Points
-				itemCompany.ModifyTime = time.Now()
-				itemCompanys = append(itemCompanys, itemCompany)
-				mapCompanyPoints[user.CompanyId] = item.Points
-			}
+			////第二次提交改成未到会的,对其进行返点处理
+			//if mapActivityPointsBill[user.Mobile].BillDetailed < 0 {
+			//	item.BillDetailed = activityPointsSetDetail.UserPointsNum
+			//	item.DoType = 2
+			//	item.Content = activityInfo.ActivityName + "--活动取消到会"
+			//	item.Points = mapCompanyPoints[user.CompanyId] + activityPointsSetDetail.UserPointsNum
+			//	items = append(items, item)
+			//
+			//	//更新对应机构的剩余点数
+			//	itemCompany := new(models.CygxActivityPointsCompany)
+			//	itemCompany.CompanyId = user.CompanyId
+			//	itemCompany.Points = item.Points
+			//	itemCompany.ModifyTime = time.Now()
+			//	itemCompanys = append(itemCompanys, itemCompany)
+			//	mapCompanyPoints[user.CompanyId] = item.Points
+			//}
 		}
 	}
 	e = models.AddCygxActivityPointsBillMulti(items, itemCompanys)

+ 64 - 0
services/wx_user.go

@@ -5,6 +5,8 @@ import (
 	"errors"
 	"fmt"
 	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/models/company"
+	"hongze/hongze_cygx/models/wx_user"
 	"hongze/hongze_cygx/utils"
 	"strconv"
 	"strings"
@@ -1496,3 +1498,65 @@ func UpdateWxUserLabel(cont context.Context) (err error) {
 	//fmt.Println(mapComapnyInteractionNum)
 	return
 }
+
+func GetWxUserEndDate(user *models.WxUserItem) (isShowTerminateButton bool, endDataButton string) {
+	companyId := user.CompanyId
+	userId := user.UserId
+	//添加一个key拦截
+	key := "CYGX_WX_USER_END_DATE_KEY" + fmt.Sprint("C_", companyId, "U_", userId)
+	if utils.Rc.IsExist(key) {
+		return
+		utils.Rc.Put(key, 1, 1*time.Second)
+	}
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("权益正式客户到期前30天弹窗消息提醒 失败GetWxUserEndDate, err:", err.Error()), 2)
+		}
+	}()
+
+	productDetail, e := company.GetCompanyProductDetailByCompanyId(companyId, 2)
+	if e != nil {
+		err = errors.New("GetCompanyProductDetailByCompanyId, Err: " + e.Error())
+		return
+	}
+	if productDetail.Status != utils.COMPANY_STATUS_FORMAL { // 不是正式状态不做处理
+		return
+	}
+	endDate := utils.StrDateToTime(productDetail.EndDate)
+	diff := endDate.Sub(time.Now())
+	// 将差值转换为天数
+	diffDay := int(diff.Hours() / 24)
+	if endDate.After(time.Now()) {
+		diffDay += 1 //不足一天的按照一天计算
+	}
+	if diffDay <= 30 {
+		total, e := wx_user.GeWxUserEndDateLogCount(userId, productDetail.EndDate)
+		if e != nil {
+			err = errors.New("GetCompanyProductDetailByCompanyId, Err: " + e.Error())
+			return
+		}
+		if total == 0 {
+			isShowTerminateButton = true
+			endDataButton = productDetail.EndDate
+			item := wx_user.WxUserEndDateLog{
+				UserId:      user.UserId,
+				Mobile:      user.Mobile,
+				Email:       user.Email,
+				CompanyId:   user.CompanyId,
+				CompanyName: user.CompanyName,
+				RealName:    user.RealName,
+				CreateTime:  time.Now(),
+				ModifyTime:  time.Now(),
+			}
+			_, e = wx_user.AddWxUserEndDateLog(&item)
+			if e != nil {
+				err = errors.New("AddWxUserEndDateLog, Err: " + e.Error())
+				return
+			}
+			return
+		}
+	}
+	return
+}