wangshan 1 год назад
Родитель
Сommit
31764296d9

+ 3 - 1
rpc/partnerlib/crontab/crontab.go

@@ -16,6 +16,8 @@ func StartTask() {
 		//更新豆丁docs基本信息
 		go service.UpdateDocinInfoTask(ctx)
 		//文档分类文档数据量更新
-		go service.GetDocsClassTask(ctx)
+		go service.UpdateDocsClassTask(ctx)
+		//合作商会员信息更新,每天一点开始
+		go service.UpdateDocsUserMemberTask(ctx)
 	}
 }

+ 17 - 0
rpc/partnerlib/crontab/service/docsUserMember.go

@@ -0,0 +1,17 @@
+package service
+
+import (
+	"app.yhyue.com/moapp/jy_docs/rpc/partnerlib/entity"
+	jyDocRpcUtil "app.yhyue.com/moapp/jy_docs/services/util"
+	"app.yhyue.com/moapp/jybase/date"
+)
+
+func DocsUserMember() (err error) {
+	db := jyDocRpcUtil.GetJyDocsDB().Table(entity.DocUserOrderTab)
+	err = db.Where("state=1 AND end_date < ?", date.NowFormat(date.Date_Full_Layout)).
+		Updates(map[string]interface{}{
+			"state":       -1,
+			"update_date": date.NowFormat(date.Date_Full_Layout),
+		}).Error
+	return
+}

+ 16 - 1
rpc/partnerlib/crontab/service/service.go

@@ -145,7 +145,7 @@ func UpdateDocinInfo(cron config.Cron) {
 }
 
 // 文档分类文档数据量更新
-func GetDocsClassTask(ctx context.Context) {
+func UpdateDocsClassTask(ctx context.Context) {
 	defer common.Catch()
 	cron.CrontabByTicker(ctx, Cron.UpdateDocsClass, DocsClassUpdate)
 }
@@ -173,3 +173,18 @@ func DocsClassUpdate(cron config.Cron) {
 	}
 	log.Println(fmt.Sprintf("update Docs class count task end :%s", date.NowFormat(date.Date_Full_Layout)))
 }
+
+// 合作商会员信息更新,每天一点开始
+func UpdateDocsUserMemberTask(ctx context.Context) {
+	defer common.Catch()
+	cron.CrontabByTicker(ctx, Cron.UpdateDocsClass, DocsUserMemberUpdate)
+}
+
+func DocsUserMemberUpdate(cron config.Cron) {
+	log.Println("update docs user member state task start :", date.NowFormat(date.Date_Full_Layout), cron)
+	//获取分类详情
+	if err := DocsUserMember(); err != nil {
+		log.Println("合作商会员信息更新 定时任务异常: ", err.Error())
+	}
+	log.Println(fmt.Sprintf("update docs user member state task end :%s", date.NowFormat(date.Date_Full_Layout)))
+}

+ 4 - 0
rpc/partnerlib/etc/crontab.yaml

@@ -22,4 +22,8 @@ UpdateDocsClass:
   Name: updateClass
   First: false
   Time: "0 0 1 1 * *" # 文档分类文档数据量更新,每月一号一点开始
+UpdateDocsMember:
+  Name: updateDocsMember
+  First: true
+  Time: "0 0 1 ? * *" # 合作商会员信息更新,每天一点开始
 

+ 2 - 2
rpc/partnerlib/service/userBuy.go

@@ -156,14 +156,14 @@ func UBHandle(in *partnerlib.UserBuyVipRequest) (res *partnerlib.UBVRes, err err
 				nextStep = true
 			default: //查看剑鱼订单,如果剑鱼订单有购买文库会员记录,购买信息保存到doc_user_order表 并更新缓存
 				jyDoi := partner.GetJYDocsOrderInfo(in.PositionId, in.MgoUserId)
-				if jyDoi.OrderCode == "" {
+				if jyDoi == nil || jyDoi.OrderCode == "" {
 					res.Code = -1
 					res.Msg = fmt.Sprintf("当前用户未购买文库会员")
 					return res, fmt.Errorf(res.Msg)
 				}
 				var orderCode = util.GetOrderCode()
 				//文库会员周期单位 同超级订阅单位:cycleunit(1:年 2:月 3:天 4:季)
-				switch jyDoi.CycleUnit {
+				switch jyDoi.Filter.CycleUnit {
 				case 1:
 					docType = 5
 				case 2:

+ 29 - 4
services/partner/docsBuyOrder.go

@@ -4,6 +4,10 @@ import (
 	"app.yhyue.com/moapp/jy_docs/rpc/partnerlib/entity"
 	"app.yhyue.com/moapp/jy_docs/services/model"
 	jyDocRpcUtil "app.yhyue.com/moapp/jy_docs/services/util"
+	"app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/date"
+	"encoding/json"
+	"log"
 )
 
 // 保存和合作商订单相关的信息
@@ -27,16 +31,37 @@ func GetDocOrderInfo(positionId int64, mgoUserId string, state int) (orderInfo *
 
 // 剑鱼文库会员订单信息
 type OrderInfo struct {
+	Filter    Filter
+	OrderCode string
+	StartDate string
+	EndDate   string
+}
+
+type Filter struct {
 	CycleCount int
 	CycleUnit  int
-	OrderCode  string
-	StartDate  string
-	EndDate    string
 }
 
 // 获取剑鱼文库会员购买信息
 func GetJYDocsOrderInfo(positionId int64, mgoUserId string) (orderInfo *OrderInfo) {
 	var orders = []map[string]interface{}{}
-	jyDocRpcUtil.GetJyDocsDB().Table(entity.OrderTable).Where("order_status = 1 AND product_type = ? AND (user_id = ? OR user_id = ?)", entity.ProductType, positionId, mgoUserId).Select("filter,vip_starttime,vip_endtime").Find(&orders)
+	err := jyDocRpcUtil.GetJyDocsDB().Table(entity.OrderTable).
+		Where("order_status = 1 AND product_type = ? AND (user_id = ? OR user_id = ?) AND vip_endtime > ?", entity.ProductType, positionId, mgoUserId, date.NowFormat(date.Date_Full_Layout)).
+		Select("order_code,filter,vip_starttime,vip_endtime").
+		Find(&orders).Error
+	if err == nil && len(orders) > 0 {
+		filter := &Filter{}
+		err := json.Unmarshal([]byte(orders[0]["filter"].(string)), &filter)
+		if err == nil {
+			orderInfo = &OrderInfo{
+				Filter:    *filter,
+				OrderCode: common.InterfaceToStr(orders[0]["order_code"]),
+				StartDate: common.InterfaceToStr(orders[0]["vip_starttime"]),
+				EndDate:   common.InterfaceToStr(orders[0]["vip_endtime"]),
+			}
+		} else {
+			log.Println("文库会员订单-filter-结构体反序列化-错误", err)
+		}
+	}
 	return
 }