소스 검색

提交version 对develop 的判断

DESKTOP-HN5QP3V\Administrator 2 주 전
부모
커밋
5bfa2f327f
5개의 변경된 파일과 79개의 추가작업 그리고 14개의 파일을 삭제
  1. 4 1
      app/task/version.go
  2. 59 6
      app/task/version_test.go
  3. 2 1
      main-subscribe/main.go
  4. 10 6
      pkg/helper/wechat/wechatHelper.go
  5. 4 0
      pkg/sender/subscribe.go

+ 4 - 1
app/task/version.go

@@ -60,6 +60,9 @@ func (this *Versions) Exec() {
 
 func (this *Versions) Check(version string, platform string, envVersion string) *version.Version {
 	envVersionRequired := strings.TrimSpace(envVersion) != ""
+	if strings.EqualFold(strings.TrimSpace(envVersion), "develop") {
+		envVersion = trialEnvVersion
+	}
 	envVersion = NormalizeEnvVersion(envVersion)
 	platform = strings.TrimSpace(platform)
 
@@ -102,7 +105,7 @@ func (this *Versions) checkPlatform(platform, version, envVersion string, envVer
 		if data, ok := platformVersions.VMap.Get(versionMapKey(version, envVersion)); ok {
 			return data
 		}
-		return nil
+		return this.defaultVersion(platformVersions, envVersion)
 	}
 
 	if data, ok := platformVersions.VMap.Get(versionMapKey(version, releaseEnvVersion)); ok {

+ 59 - 6
app/task/version_test.go

@@ -37,12 +37,12 @@ func TestVersionsCheckEnvVersionAndDefault(t *testing.T) {
 		t.Fatalf("未传环境版本时应优先按版本号返回任意环境版本,实际返回 %#v", got)
 	}
 
-	if got := versions.Check("9.9.9", "wx", "trial"); got != releaseDefault {
-		t.Fatalf("体验版版本号未命中应回退到正式服默认版本,实际返回 %#v", got)
+	if got := versions.Check("9.9.9", "wx", "trial"); got != trialDefault {
+		t.Fatalf("体验版版本号未命中应返回体验版默认版本,实际返回 %#v", got)
 	}
 
-	if got := versions.Check("9.9.9", "wx", "develop"); got != releaseDefault {
-		t.Fatalf("版本号未命中应回退到正式服默认版本,实际返回 %#v", got)
+	if got := versions.Check("9.9.9", "wx", "develop"); got != trialDefault {
+		t.Fatalf("develop 版本号未命中应返回体验版默认版本,实际返回 %#v", got)
 	}
 }
 
@@ -177,8 +177,8 @@ func TestVersionsCheckWithoutVersionFallsBackToLatestEnvironmentVersion(t *testi
 	if got := versions.Check("", "wx", "trial"); got != trial {
 		t.Fatalf("空版本号应只在指定环境内选择,实际返回 %#v", got)
 	}
-	if got := versions.Check("9.9.9", "wx", "trial"); got != releaseLatest {
-		t.Fatalf("指定版本和环境均未命中应返回最新正式服版本,实际返回 %#v", got)
+	if got := versions.Check("9.9.9", "wx", "trial"); got != trial {
+		t.Fatalf("指定版本未命中应返回体验版最新版本,实际返回 %#v", got)
 	}
 	if got := versions.Check("", "dy", ""); got != nil {
 		t.Fatalf("不应跨平台返回版本,实际返回 %#v", got)
@@ -208,3 +208,56 @@ func TestVersionsCheckTrialMissFallsBackToMatchingReleaseVersion(t *testing.T) {
 		t.Fatalf("版本号未命中时应返回正式服默认配置,实际返回 %#v", got)
 	}
 }
+
+func TestVersionsCheckDevelopAndEnvironmentFallback(t *testing.T) {
+	releaseDefault := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.0", Default: true}
+	releaseExact := &version.Version{Platform: "wx", EnvVersion: "release", Version: "1.0.3"}
+	trialDefault := &version.Version{Platform: "wx", EnvVersion: "trial", Version: "1.0.1", Default: true}
+	trialLatest := &version.Version{Platform: "wx", EnvVersion: "trial", Version: "1.0.2"}
+	legacyTrial := &version.Version{EnvVersion: "trial", Version: "1.0.3"}
+	otherTrial := &version.Version{Platform: "dy", EnvVersion: "trial", Version: "1.0.3"}
+	cases := []struct {
+		name    string
+		records []*version.Version
+		number  string
+		env     string
+		want    *version.Version
+	}{
+		{"develop exact", []*version.Version{releaseExact, trialLatest}, "1.0.2", "develop", trialLatest},
+		{"develop normalized", []*version.Version{releaseExact, trialLatest}, "1.0.2", " DeVeLoP ", trialLatest},
+		{"develop default before matching release", []*version.Version{releaseExact, trialDefault, trialLatest}, "1.0.3", "develop", trialDefault},
+		{"trial default before matching release", []*version.Version{releaseExact, trialDefault, trialLatest}, "1.0.3", "trial", trialDefault},
+		{"trial latest before matching release", []*version.Version{releaseExact, trialLatest}, "1.0.3", "trial", trialLatest},
+		{"develop latest before matching release", []*version.Version{releaseExact, trialLatest}, "1.0.3", "develop", trialLatest},
+		{"develop empty version", []*version.Version{releaseDefault, trialDefault, trialLatest}, "", "develop", trialDefault},
+		{"develop missing trial", []*version.Version{releaseDefault, releaseExact}, "1.0.3", "develop", releaseExact},
+		{"develop missing version and trial", []*version.Version{releaseDefault, releaseExact}, "9.9.9", "develop", releaseDefault},
+		{"develop release latest", []*version.Version{releaseExact}, "9.9.9", "develop", releaseExact},
+		{"develop empty version without trial", []*version.Version{releaseDefault}, "", "develop", releaseDefault},
+		{"platform isolation", []*version.Version{releaseExact, otherTrial}, "1.0.3", "develop", releaseExact},
+		{"legacy trial before release", []*version.Version{releaseExact, legacyTrial}, "1.0.3", "develop", legacyTrial},
+		{"platform default before legacy exact", []*version.Version{trialDefault, legacyTrial}, "1.0.3", "develop", trialDefault},
+		{"release miss stays release", []*version.Version{releaseDefault, trialLatest}, "1.0.2", "release", releaseDefault},
+		{"no records", nil, "1.0.3", "develop", nil},
+	}
+	for _, tc := range cases {
+		t.Run(tc.name, func(t *testing.T) {
+			versions := new(Versions)
+			for _, record := range tc.records {
+				platform, ok := versions.VPlatforms.Get(record.Platform)
+				if !ok {
+					platform = new(PlatformVersions)
+					versions.VPlatforms.Set(record.Platform, platform)
+				}
+				platform.VList.Push(record)
+				platform.VMap.Set(versionMapKey(record.Version, NormalizeEnvVersion(record.EnvVersion)), record)
+			}
+			if got := versions.Check(tc.number, "wx", tc.env); got != tc.want {
+				t.Fatalf("Check(%q, wx, %q) = %#v, want %#v", tc.number, tc.env, got, tc.want)
+			}
+		})
+	}
+	if got := NormalizeEnvVersion("develop"); got != releaseEnvVersion {
+		t.Fatalf("query alias must not change stored environment normalization: %q", got)
+	}
+}

+ 2 - 1
main-subscribe/main.go

@@ -4,6 +4,7 @@ import (
 	"dsbqj-admin/app/router"
 	"dsbqj-admin/app/task"
 	"dsbqj-admin/model/mongo"
+	"dsbqj-admin/pkg/cache"
 	"dsbqj-admin/pkg/logger"
 	"dsbqj-admin/pkg/validator"
 	"fmt"
@@ -38,7 +39,7 @@ func main() {
 	}
 	validator.Init()
 	logger.Init("")
-	//cache.Redis()
+	cache.Redis()
 	// 连接数据库
 	//mysql.Database(os.Getenv("MYSQL_DSN"))
 	mongo.Database(os.Getenv("MONGO_DSN"))

+ 10 - 6
pkg/helper/wechat/wechatHelper.go

@@ -113,7 +113,7 @@ func GetAccessTokenFromServer(ctx *wechatCtx.Context) (resAccessToken ResAccessT
 		return
 	}
 	if resAccessToken.Code != "0" {
-		err = fmt.Errorf("get access_token error : errcode=%v , errormsg=%v", resAccessToken.Msg)
+		err = fmt.Errorf("get access_token error : errcode=%v , errormsg=%v", resAccessToken.Code, resAccessToken.Msg)
 		return
 	}
 
@@ -184,22 +184,26 @@ type Subscribe struct {
 }
 
 func (this *WechatHelper) SendWechatSubscribe(openid string, template string, msg interface{}) int {
-	token, _ := this.Wechat.GetAccessToken()
+	token, err := this.Wechat.GetAccessToken()
+	if err != nil {
+		logger.Info("[订阅推送] 获取微信 access_token 失败, open_id=%s, template_id=%s, err=%v", openid, template, err)
+		return 102
+	}
+
 	url := subscribeUrl + token
-	logger.Info("send msg use template %s, url %s", template, url)
 	reqData := Subscribe{ToUser: openid, TemplateId: template, Lang: "zh_CN"}
 	reqData.Data = msg
 
 	data, _ := json.Marshal(reqData)
 	buf, err := util.HTTPPost(url, string(data))
 	if err != nil {
-		logger.Info("[ERROR] CheckWechatMsg post err!err:", err.Error())
+		logger.Info("[ERROR] CheckWechatMsg post err!err: %s", err.Error())
 		return 101
 	}
 	var re = new(errmsg)
 	err = json.Unmarshal(buf, re)
 	if err != nil {
-		logger.Info("[ERROR] CheckWechatMsg Unmarshal err!err:", err)
+		logger.Info("[ERROR] CheckWechatMsg Unmarshal err!err: %v", err)
 		return 103
 	}
 	if re.Errcode != 0 {
@@ -210,7 +214,7 @@ func (this *WechatHelper) SendWechatSubscribe(openid string, template string, ms
 
 	} else {
 		if re.Result.Label != 100 && re.Result.Label != 0 {
-			logger.Info("[ERROR]CheckWechatMsg msg:", msg, " ret:", re.Result.Label, " ,suggest:", re.Result.Suggest)
+			logger.Info("[ERROR]CheckWechatMsg msg: %v ret: %d suggest: %s", msg, re.Result.Label, re.Result.Suggest)
 			return re.Result.Label
 		}
 	}

+ 4 - 0
pkg/sender/subscribe.go

@@ -66,6 +66,7 @@ func (this *SubscribeSender) safeSend(send *SubscribeSend) {
 	defer func() {
 		if r := recover(); r != nil {
 			log.Printf("send subscribe panic: %v", r)
+			logger.Info("[订阅推送] 发送订阅消息异常, module=%s, device_id=%s, err=%v", send.Module, send.DeviceId, r)
 		}
 	}()
 
@@ -90,6 +91,7 @@ func (this *SubscribeSender) SendHangupSubscribe(deviceId string) {
 	subscribeOne := new(subscribe.Subscribe)
 	err := mgm.Coll(&subscribe.Subscribe{}).First(bson.M{"device_id": deviceId, "modules.hangup.enabled": true}, subscribeOne)
 	if err != nil {
+		logger.Info("[订阅推送] 查询订阅记录失败, module=%s, device_id=%s, err=%v", "hangup", deviceId, err)
 		return
 	}
 
@@ -106,8 +108,10 @@ func (this *SubscribeSender) SendAutoFightSubscribe(deviceId string) {
 	subscribeOne := new(subscribe.Subscribe)
 	err := mgm.Coll(&subscribe.Subscribe{}).First(bson.M{"device_id": deviceId, "modules.autofight.enabled": true}, subscribeOne)
 	if err != nil {
+		logger.Info("[订阅推送] 查询订阅记录失败, module=%s, device_id=%s, err=%v", "autofight", deviceId, err)
 		return
 	}
+
 	msg := make(map[string]map[string]string)
 	msg["thing2"] = make(map[string]string)
 	msg["thing2"]["value"] = "离线闯关结束,请收取您的离线闯关奖励。"