瀏覽代碼

feat:调整规则

fuwencai 5 月之前
父節點
當前提交
a4bbc28078

+ 7 - 0
.idea/deployment.xml

@@ -9,6 +9,13 @@
           </mappings>
         </serverdata>
       </paths>
+      <paths name="正式">
+        <serverdata>
+          <mappings>
+            <mapping local="$PROJECT_DIR$" web="/" />
+          </mappings>
+        </serverdata>
+      </paths>
     </serverData>
   </component>
 </project>

+ 7 - 0
.idea/webServers.xml

@@ -9,6 +9,13 @@
           </advancedOptions>
         </fileTransfer>
       </webServer>
+      <webServer id="29e075ce-4eb5-4089-9b8c-1702c7e6f067" name="正式">
+        <fileTransfer accessType="SFTP" host="jhwlxgpmpw-public.bastionhost.aliyuncs.com" port="60022" sshConfigId="edca76b5-b554-4d2c-90e3-82a9d87c7615" sshConfig="Fwc123@jhwlxgpmpw-public.bastionhost.aliyuncs.com:60022 password">
+          <advancedOptions>
+            <advancedOptions dataProtectionLevel="Private" passiveMode="true" shareSSLContext="true" />
+          </advancedOptions>
+        </fileTransfer>
+      </webServer>
     </option>
   </component>
 </project>

+ 5 - 3
newuserGet/internal/consts/consts.go

@@ -1,9 +1,11 @@
 package consts
 
 const (
-	OrSQL          = "SELECT   groupBitmapOrState(bitobj) from pub_tags.dwd_d_tag ddt WHERE  ddt.id in (%s) "
-	BitMapSQL      = "SELECT bitmapAnd((%s),(%s)) as userIds"
-	QueryUserIdSQL = `SELECT
+	OrSQL           = "SELECT   groupBitmapOrState(bitobj) from pub_tags.dwd_d_tag ddt WHERE  ddt.id in (%s) "
+	BitMapAndSQL    = "SELECT bitmapAnd((%s),(%s)) as userIds"
+	BitMapAndNotSQL = "SELECT bitmapAndnot((%s),(%s)) as userIds"
+	BitMapOrSQL     = "SELECT bitmapOr((%s),(%s)) as userIds"
+	QueryUserIdSQL  = `SELECT
 	DISTINCT dmp.mgoUserId as user_id,dmp.phone as phone
 from
 	pub_tags.dwd_mgo_position dmp

+ 40 - 2
newuserGet/internal/logic/task.go

@@ -46,6 +46,7 @@ func Task(ctx context.Context) {
 		g.Log().Error(ctx, "获取规则失败", err)
 		return
 	}
+	g.Log().Infof(ctx, "共%d个规则", len(rules))
 	// 遍历规则
 	for i := 0; i < len(rules); i++ {
 		g.Log().Infof(ctx, "开始处理第%v个规则:id-%v name:%v \n", i, rules[i].Id, rules[i].Name)
@@ -125,14 +126,14 @@ func getFromRegisterBehavior(ctx context.Context, rule entity.NewUserSendRule) (
 	filterQuery := regQuery
 	if rule.BehaviorTagIds != "" {
 		//拼接行为标签sql
-		behQuery := fmt.Sprintf(consts.OrSQL, rule.BehaviorTagIds)
-		filterQuery = fmt.Sprintf(consts.BitMapSQL, regQuery, behQuery)
+		filterQuery = processBehaviorSQL(regQuery, rule)
 	}
 	// 处理mgoid和手机号 拼接sql
 	finalQuery := fmt.Sprintf(consts.QueryUserIdSQL, filterQuery)
 	g.Log().Info(ctx, "getFromRegisterBehavior 查询sql", finalQuery)
 	err = dao.DwdDUserTag.DB().Raw(finalQuery).Scan(&userList)
 	if err != nil {
+
 		return nil, err
 	}
 	for j := 0; j < len(userList); j++ {
@@ -143,6 +144,43 @@ func getFromRegisterBehavior(ctx context.Context, rule entity.NewUserSendRule) (
 	return
 }
 
+func processBehaviorSQL(regQuery string, rule entity.NewUserSendRule) string {
+	tags := strings.Split(rule.BehaviorTagIds, ",")
+	narmalTags := []string{}
+	notTags := []string{}
+	for i := 0; i < len(tags); i++ {
+		if strings.HasPrefix(tags[i], "#") && len(tags[i]) > 1 {
+			// 非标签
+			notTags = append(notTags, tags[i][1:])
+		} else {
+			narmalTags = append(narmalTags, tags[i])
+
+		}
+	}
+	var notQ, narmalQ, finalQ string
+	finalQ = regQuery
+	if len(narmalTags) != 0 {
+		//拼接行为标签sql
+		behQuery := fmt.Sprintf(consts.OrSQL, strings.Join(narmalTags, ""))
+		narmalQ = fmt.Sprintf(consts.BitMapAndSQL, regQuery, behQuery)
+		finalQ = narmalQ
+	}
+	if len(notTags) != 0 {
+		behQuery := fmt.Sprintf(consts.OrSQL, strings.Join(notTags, ","))
+		notQ = fmt.Sprintf(consts.BitMapAndNotSQL, regQuery, behQuery)
+		finalQ = notQ
+	}
+	if len(narmalTags) != 0 && len(notTags) != 0 {
+		finalQ = fmt.Sprintf(consts.BitMapOrSQL, narmalQ, notQ)
+	}
+	//	// 第一种情况 行为标签都是正常标签
+	//	// 第二种情况 行为标签都是非标签 用Andnot
+	//	// 第三种情况 一行为标签部分正常标签 一部分非标签
+	//	// (注册时间 and 行为正常标签) U (注册时间 AndNOT 行为非标签)    // 先这样处理后续有其他标签再优化
+	//}
+	return finalQ
+}
+
 // 外呼状态
 func filterCallState(ctx context.Context, rule entity.NewUserSendRule, userList []entity.NewUserSendLog) (newUserList []entity.NewUserSendLog, err error) {
 	start := time.Now()

+ 1 - 1
newuserSend/internal/logic/task.go

@@ -137,7 +137,7 @@ func siteMsg(ctx context.Context, content entity.NewUserSendContent, sendUserLis
 	msgType := g.Cfg().MustGet(ctx, "siteMsg.msgType").Int()
 	mgoIds := []string{}
 	for i := 0; i < len(sendUserList); i++ {
-		// todo 处理行业跳转
+		//  处理行业跳转
 		industryPcUrl, industryAndroidUrl, industryIosUrl, industryWeChatUrl := pcUrl, androidUrl, iosUrl, weChatUrl
 		if sendUserList[i].Industry == "" {
 			mgoIds = append(mgoIds, sendUserList[i].UserId)

+ 6 - 1
newuserSend/manifest/config/config.yaml

@@ -37,4 +37,9 @@ sms:
 test:
   switch: true # 是否仅发送测试手机号短信
   phone: [ "18238182402","15737190152" ]
-industryUrl: { "水利水电": "SHUILISHUIDIAN" } #行业对应的地址
+industryUrl: {
+  "水利水电": "SHUILISHUIDIAN" ,
+  "弱电安防": "RUODIANANFANG",
+  "建筑工程":"JIANZHUGONGCHENG",
+  "机械设备":"JIXIESHEBEI"
+} #行业对应的地址