Kaynağa Gözat

Merge branch 'feature/v1.2.6' of https://app.yhyue.com/moapp/message into feature/v1.2.6

wangchuanjin 1 yıl önce
ebeveyn
işleme
df8f0d700c

+ 2 - 2
etc/config.yaml

@@ -6,7 +6,7 @@ etcd:
   # 基础服务
   messageKey: "message.rpc" #消息中台rpc
   address:
-    - 192.168.3.206:2379
+    - 192.168.3.204:2379
   baseserver:
     # 用户中台配置
     integral:
@@ -58,7 +58,7 @@ databases:
     maxIdleConns: 5
 
 rpc:
-  payrpc: 192.168.3.206:8601
+  payrpc: 192.168.3.128:8600
   pointrpc: 192.168.20.92:8205
 
 #其他配置

+ 31 - 31
etc/task.json

@@ -4,9 +4,9 @@
 		{
 			"name":"绑定手机号",
 			"desc":"注册剑鱼标讯,完成手机号绑定",
-			"pcHref":"/page_workDesktop/work-bench/app/big/set-account-info?from=task",
-			"appHref":"/jyapp/account/phone/bind?mode=mergeBind&from=task",
-			"wxHref":"/front/account/phone/bind?from=task",
+			"pcHref":"/page_workDesktop/work-bench/app/big/set-account-info",
+			"appHref":"/jyapp/account/phone/bind?mode=mergeBind",
+			"wxHref":"/front/account/phone/bind",
 			"point":50,
 			"icon":"/common-module/task/task-bdsjh.png",
 			"type":"bindPhone",
@@ -16,8 +16,8 @@
 			"name":"关注“剑鱼标讯”公众号",
 			"desc":"首次扫码,(或在微信中搜索公众号:剑鱼标讯)关注公众号",
 			"pcHref":"",
-			"appHref":"",
-			"wxHref":"",
+			"appHref":"/jy_mobile/push/setActive",
+			"wxHref":"/jy_mobile/push/setActive",
 			"point":50,
 			"icon":"/common-module/task/task-gzh.png",
 			"type":"followWx",
@@ -26,9 +26,9 @@
 		{
 			"name":"首次绑定邮箱",
 			"desc":"填写正确的邮箱信息并完成邮箱验证",
-			"pcHref":"/page_workDesktop/work-bench/app/big/set-account-info?from=task",
-			"appHref":"/jyapp/account/mail/bind?from=task",
-			"wxHref":"/front/account/mail/bind?from=task",
+			"pcHref":"/page_workDesktop/work-bench/app/big/set-account-info",
+			"appHref":"/jyapp/account/mail/bind",
+			"wxHref":"/front/account/mail/bind",
 			"point":50,
 			"icon":"/common-module/task/task-bdyx.png",
 			"type":"bindMail",
@@ -37,9 +37,9 @@
 		{
 			"name":"填写公司信息",
 			"desc":"填写公司名称、职位、单位类型可获得",
-			"pcHref":"/page_workDesktop/work-bench/app/big/set-identity-info?from=task",
-			"appHref":"/jy_mobile/identity/company?from=task",
-			"wxHref":"/jy_mobile/identity/company?from=task",
+			"pcHref":"/page_workDesktop/work-bench/app/big/set-identity-info",
+			"appHref":"/jy_mobile/identity/company",
+			"wxHref":"/jy_mobile/identity/company",
 			"point":50,
 			"icon":"/common-module/task/task-gsmc.png",
 			"type":"improveEntInfo",
@@ -48,9 +48,9 @@
 		{
 			"name":"完善业务类型",
 			"desc":"完善公司业务类型可获得",
-			"pcHref":"/page_workDesktop/work-bench/app/big/set-identity-info?from=task",
-			"appHref":"/jy_mobile/identity/business?from=task",
-			"wxHref":"/jy_mobile/identity/business?from=task",
+			"pcHref":"/page_workDesktop/work-bench/app/big/set-identity-info",
+			"appHref":"/jy_mobile/identity/business",
+			"wxHref":"/jy_mobile/identity/business",
 			"point":50,
 			"icon":"/common-module/task/task-ywlx.png",
 			"type":"improveBusiness",
@@ -60,7 +60,7 @@
 			"name":"完成订阅",
 			"desc":"首次完成订阅关键词设置可获得",
 			"pcHref":"",
-			"appHref":"/jy_mobile/push/setActive",
+			"appHref":"",
 			"wxHref":"",
 			"point":50,
 			"icon":"/common-module/task/task-wcdy.png",
@@ -70,9 +70,9 @@
 		{
 			"name":"关注企业",
 			"desc":"首次完成企业关注可获得",
-			"pcHref":"/jylab/entSearch/index.html?from=task",
-			"appHref":"/jy_mobile/search/middle/company?from=task",
-			"wxHref":"/jy_mobile/search/middle/company?from=task",
+			"pcHref":"/jylab/entSearch/index.html",
+			"appHref":"/jy_mobile/search/middle/company",
+			"wxHref":"/jy_mobile/search/middle/company",
 			"point":50,
 			"icon":"/common-module/task/task-gzqy.png",
 			"type":"followEnt",
@@ -81,9 +81,9 @@
 		{
 			"name":"关注项目",
 			"desc":"首次完成项目关注可获得",
-			"pcHref":"/jylab/supsearch/index.html?from=task",
-			"appHref":"/jy_mobile/search/middle/bidding?from=task",
-			"wxHref":"/jy_mobile/search/middle/bidding?from=task",
+			"pcHref":"/jylab/supsearch/index.html",
+			"appHref":"/jy_mobile/search/middle/bidding",
+			"wxHref":"/jy_mobile/search/middle/bidding",
 			"point":50,
 			"icon":"/common-module/task/task-gzxm.png",
 			"type":"followProject",
@@ -94,7 +94,7 @@
 			"desc":"首次扫码,(或在应用商店搜索APP:剑鱼标讯)下载APP",
 			"pcHref":"",
 			"appHref":"",
-			"wxHref":"",
+			"wxHref":"/front/downloadapppage/normal?source=weixinAutoRpl",
 			"point":50,
 			"icon":"/common-module/task/task-app.png",
 			"type":"downloadApp",
@@ -105,9 +105,9 @@
 		{
 			"name":"首次绑定邮箱",
 			"desc":"填写正确的邮箱信息并完成邮箱验证",
-			"pcHref":"/page_workDesktop/work-bench/app/big/set-account-info?from=task",
-			"appHref":"/jyapp/account/mail/bind?from=task",
-			"wxHref":"/front/account/mail/bind?from=task",
+			"pcHref":"/page_workDesktop/work-bench/app/big/set-account-info",
+			"appHref":"/jyapp/account/mail/bind",
+			"wxHref":"/front/account/mail/bind",
 			"point":50,
 			"icon":"/common-module/task/task-bdyx.png",
 			"type":"bindMail",
@@ -116,9 +116,9 @@
 		{
 			"name":"填写公司信息",
 			"desc":"填写公司名称、职位、单位类型可获得",
-			"pcHref":"/page_workDesktop/work-bench/app/big/set-identity-info?from=task",
-			"appHref":"/jy_mobile/identity/company?from=task",
-			"wxHref":"/jy_mobile/identity/company?from=task",
+			"pcHref":"/page_workDesktop/work-bench/app/big/set-identity-info",
+			"appHref":"/jy_mobile/identity/company",
+			"wxHref":"/jy_mobile/identity/company",
 			"point":50,
 			"icon":"/common-module/task/task-gsmc.png",
 			"type":"improveEntInfo",
@@ -127,9 +127,9 @@
 		{
 			"name":"完善业务类型",
 			"desc":"完善公司业务类型可获得",
-			"pcHref":"/page_workDesktop/work-bench/app/big/set-identity-info?from=task",
-			"appHref":"/jy_mobile/identity/business?from=task",
-			"wxHref":"/jy_mobile/identity/business?from=task",
+			"pcHref":"/page_workDesktop/work-bench/app/big/set-identity-info",
+			"appHref":"/jy_mobile/identity/business",
+			"wxHref":"/jy_mobile/identity/business",
 			"point":50,
 			"icon":"/common-module/task/task-ywlx.png",
 			"type":"improveBusiness",

+ 8 - 6
handler/activity/task.go

@@ -32,9 +32,8 @@ import (
 // Task 完成任务
 func Task(msg *model.Message) {
 	//活动时间
-	taskStartTime := gcfg.Instance().MustGet(gctx.New(), "taskStartTime", nil).Int64()
-	log.Println(msg.E_body)
-	// num := gconv.Int64(msg.E_body["num"])
+	taskStartTime := config.TaskConf.TaskStartTime
+	log.Println(msg.E_body, taskStartTime)
 	num := 0
 	code := gconv.Int64(msg.E_body["code"]) //1005
 	types := gconv.String(msg.E_body["types"])
@@ -64,7 +63,6 @@ func Task(msg *model.Message) {
 		if bl {
 			continue
 		}
-		fmt.Println(v.Type, types, "==", v.Type == types)
 		if v.Type == types {
 			num = v.Point
 			bl = true
@@ -105,6 +103,7 @@ func Task(msg *model.Message) {
 	//增加积分
 	mrpc.IntegralHarvest(msg.E_userId, gconv.Int64(num), code, msg.E_time)
 	//判断任务状态
+	fmt.Println(msg.E_userId, taskMsgMap[types], "===", taskMsgMap[types] == "")
 	if taskMsgMap[types] == "" {
 		//如果等于空证明没有初始化
 		db.Tidb.ExecTx("创建任务", func(tx *sql.Tx) bool {
@@ -141,13 +140,15 @@ func Task(msg *model.Message) {
 		//修改任务状态
 		taskId := ""
 		taskTypeArr := strings.Split(taskMsgMap[types], "_")
-		fmt.Println("taskTypeArr:", taskTypeArr)
+		fmt.Println(msg.E_userId, types, "update", taskTypeArr)
 		if len(taskTypeArr) > 1 {
 			taskId = taskTypeArr[0]
 			status := taskTypeArr[1]
+			fmt.Println(msg.E_userId, status, "status", status == "0")
 			if status == "0" {
 				db.Tidb.Update("integral_task_detail", query, map[string]interface{}{
-					"status": 1,
+					"status":      1,
+					"finish_time": time.Now().Format(date.Date_Full_Layout),
 				})
 				taskMsgMap[types] = fmt.Sprintf("%s_%v", taskId, 1)
 			}
@@ -165,6 +166,7 @@ func Task(msg *model.Message) {
 				}
 			}
 			endtime, _ := time.Parse(date.Date_Full_Layout, end_time)
+			logger.Info("STATUS:", msg.E_userId, finishStatus, success_status == 0, time.Now().Before(endtime))
 			if finishStatus && success_status == 0 && time.Now().Before(endtime) {
 				//判断是否完成所有任务且开启确认挑战
 				if mrpc.SubVipHarvest(msg.E_userId, 7, "") == nil {

+ 87 - 8
services/activity/task/task.go

@@ -18,6 +18,7 @@ import (
 	"app.yhyue.com/moapp/message/handler/activity"
 	"app.yhyue.com/moapp/message/model"
 	. "app.yhyue.com/moapp/message/rpc"
+	mrpc "app.yhyue.com/moapp/message/rpc"
 	. "bp.jydev.jianyu360.cn/BaseService/pushpkg/p"
 
 	"github.com/gogf/gf/v2/util/gconv"
@@ -27,6 +28,7 @@ type Task struct {
 	*xweb.Action
 	task             xweb.Mapper `xweb:"/task"`             //获取任务
 	confirmChallenge xweb.Mapper `xweb:"/confirmChallenge"` //确认挑战
+	tes              xweb.Mapper `xweb:"/tes"`
 }
 
 type TaskInfo struct {
@@ -95,7 +97,8 @@ func (this *Task) Task() {
 				dataM[types] = tf
 			}
 		}
-		userMsg, ok := db.Mgo.FindById("user", mgoUserId, `{"l_registedate":1,"s_m_phone":1,"s_phone":1,"s_myemail":1,"s_nickname":1,"s_headimageurl":1,"s_password":1,"s_company":1,"s_unionid":1,"o_jy":1,"o_vipjy":1,"o_member_jy":1,"i_app_login_task":1}`)
+		userMsg, ok := db.Mgo.FindById("user", mgoUserId, `{"s_m_openid":1,"l_registedate":1,"s_m_phone":1,"s_phone":1,"s_myemail":1,"s_nickname":1,"s_headimageurl":1,"s_password":1,"s_company":1,"s_unionid":1,"o_jy":1,"o_vipjy":1,"o_member_jy":1,"i_app_login_task":1}`)
+		log.Println("===>", userMsg)
 		if userMsg == nil || len(*userMsg) == 0 || !ok {
 			return nil, fmt.Errorf("未查询到用户")
 		}
@@ -120,6 +123,7 @@ func (this *Task) Task() {
 			}
 		}
 		mail := gconv.String((*userMsg)["s_myemail"])
+		openid := gconv.String((*userMsg)["s_m_openid"])
 		if !isNew {
 			//邮箱是否绑定
 			if mail != "" {
@@ -127,17 +131,35 @@ func (this *Task) Task() {
 				dataM[model.BindMail].FinishTime = now
 				activity.Task(&model.Message{
 					E_code:   "task",
-					E_userId: userId,
+					E_userId: mgoUserId,
 					E_time:   time.Now().Unix(),
 					E_app:    "jyweb_node2",
 					E_body: map[string]interface{}{
-						"code":       1009, //首次订阅
+						"code":       1016,
 						"types":      "bindMail",
 						"baseUserId": baseUserId,
 						"positionId": positionId,
 					},
 				})
 			}
+		} else {
+			//openid是否绑定
+			if openid != "" {
+				dataM[model.FollowWx].Status = 1
+				dataM[model.FollowWx].FinishTime = now
+				activity.Task(&model.Message{
+					E_code:   "task",
+					E_userId: mgoUserId,
+					E_time:   time.Now().Unix(),
+					E_app:    "jyweb_node2",
+					E_body: map[string]interface{}{
+						"code":       1008, //首次订阅
+						"types":      "followWx",
+						"baseUserId": baseUserId,
+						"positionId": positionId,
+					},
+				})
+			}
 		}
 		//判断是否已经创建任务
 		integralTaskData := db.Tidb.SelectBySql(`select * from integral_task where user_id =? limit 1`, baseUserId)
@@ -252,8 +274,8 @@ func EntSubscribe(entUserId, entId int64) int {
 
 func (this *Task) ConfirmChallenge() {
 	sessVal := this.Session().GetMultiple()
-	positionId := gconv.Int64(sessVal["positionId"])
 	baseUserId := gconv.Int64(sessVal["base_user_id"])
+	userId := gconv.String(sessVal["mgoUserId"])
 	rData, errMsg := func() (interface{}, error) {
 		infoMap := map[string]interface{}{}
 		if string(this.Body()) == "" {
@@ -269,14 +291,12 @@ func (this *Task) ConfirmChallenge() {
 			dayLater := time.Now().Add(time.Duration(config.TaskConf.TaskDayTime-1) * time.Hour * 24)
 			endTime := time.Date(dayLater.Year(), dayLater.Month(), dayLater.Day(), 23, 59, 59, 0, time.Local)
 			if db.Tidb.Update("integral_task", map[string]interface{}{
-				"position_id": positionId,
-				"user_id":     baseUserId,
+				"user_id": baseUserId,
 			}, map[string]interface{}{
 				"end_time": endTime.Format(date.Date_Full_Layout),
 			}) {
 				go func() {
 					//用户点击“确认挑战”给用户发消息
-					userId := gconv.String(sessVal["mgoUserId"])
 					wxUrl := "/front/sess/" + Se.EncodeString(userId+",_id,identityKeep,") + "__" + Se.EncodeString(config.PushConfig.Messages.ConfirmChallenge.MobileUrl)
 					appUrl := "/jyapp/free/sess/" + Se.EncodeString(userId+",id,"+strconv.Itoa(int(time.Now().Unix()))+",") + "__" + Se.EncodeString(config.PushConfig.Messages.ConfirmChallenge.MobileUrl)
 					req := &message.MultipleSaveMsgReq{
@@ -292,8 +312,48 @@ func (this *Task) ConfirmChallenge() {
 					}
 					SendMsg("确认挑战", req)
 				}()
-				return map[string]interface{}{"status": 1}, nil
 			}
+			//判断用户是否已经完成所有任务
+			userMsg, ok := db.Mgo.FindById("user", userId, `{"l_registedate":1}`)
+			if userMsg == nil || len(*userMsg) == 0 || !ok {
+				return map[string]interface{}{"status": -1}, fmt.Errorf("未查询到用户")
+			}
+			//注册时间 判断是新手任务还是老用户限时任务
+			l_registedate := gconv.Int64((*userMsg)["l_registedate"])
+			isNew := l_registedate > config.TaskConf.TaskStartTime //是否注册时间处于新手任务开始时间
+			ts := this.InitTask(isNew)
+			taskDetailCount := db.Tidb.CountBySql(`select count(1) from integral_task_detail where user_id =? and status=1`, baseUserId)
+			taskMsg := db.Tidb.SelectBySql(`select id from integral_task where user_id =? LIMIT 1`, baseUserId)
+			if taskMsg == nil || len(*taskMsg) == 0 {
+				return map[string]interface{}{"status": -1}, fmt.Errorf("任务创建失败")
+			}
+			taskId := gconv.Int64((*taskMsg)[0]["id"])
+			if gconv.Int(taskDetailCount) == len(ts) {
+				//任务完成 赠送超级订阅
+				//判断是否完成所有任务且开启确认挑战
+				if mrpc.SubVipHarvest(userId, 7, "") == nil {
+					if db.Tidb.Update("integral_task", map[string]interface{}{"id": taskId}, map[string]interface{}{
+						"success_status": 1,
+					}) {
+						go func() {
+							wxUrl := "/front/sess/" + Se.EncodeString(userId+",_id,"+strconv.Itoa(int(time.Now().Unix()))+",") + "__" + Se.EncodeString(config.PushConfig.Messages.GetVip.MobileUrl)
+							appUrl := "/jyapp/free/sess/" + Se.EncodeString(userId+",_id,"+strconv.Itoa(int(time.Now().Unix()))+",") + "__" + Se.EncodeString(config.PushConfig.Messages.GetVip.MobileUrl)
+							SendMsg("获赠七天超级订阅服务", &message.MultipleSaveMsgReq{
+								UserIds:    userId,
+								Title:      config.PushConfig.Messages.GetVip.Title,
+								Content:    config.PushConfig.Messages.GetVip.Content,
+								MsgType:    config.PushConfig.Messages.GetVip.MsgType,
+								Link:       config.PushConfig.Messages.GetVip.PcUrl + "," + config.PushConfig.Messages.GetVip.MobileUrl + "," + config.PushConfig.Messages.GetVip.MobileUrl,
+								Appid:      config.PushConfig.Messages.GetVip.Appid,
+								AppPushUrl: appUrl,
+								WxPushUrl:  config.PushConfig.Webdomain + wxUrl,
+								IosPushUrl: appUrl,
+							})
+						}()
+					}
+				}
+			}
+			return map[string]interface{}{"status": 1}, nil
 		}
 		return map[string]interface{}{"status": 1}, nil
 	}()
@@ -302,3 +362,22 @@ func (this *Task) ConfirmChallenge() {
 	}
 	this.ServeJson(NewResult(rData, errMsg))
 }
+
+func (this *Task) Tes() {
+
+	d := mrpc.SubVipHarvest("65433cecbd1d69bdca017505", 7, "")
+	fmt.Println(d)
+	return
+	activity.Task(&model.Message{
+		E_code:   "task",
+		E_userId: "65433cecbd1d69bdca017505", //5ed6cii...
+		E_time:   1698800604,                 //1605223065
+		E_app:    "jyapp_node1",              //jywx_node1/jyweb_node2/jyapp_node1/jysubscribe
+		E_body: map[string]interface{}{
+			"baseUserId": 3755163,
+			"code":       1008,
+			"num":        50,
+			"positionId": 1205322910,
+			"types":      "followWx",
+		}})
+}

+ 2 - 1
services/filter/sessionfilter.go

@@ -1,8 +1,9 @@
 package filter
 
 import (
-	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
 	"net/http"
+
+	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
 )
 
 //登录限制