zqbao 9 месяцев назад
Родитель
Сommit
5078753bbe
5 измененных файлов с 77 добавлено и 47 удалено
  1. 3 0
      controllers/report.go
  2. 1 0
      models/response/report.go
  3. 9 3
      models/wx_token.go
  4. 15 0
      services/report.go
  5. 49 44
      services/wechat/wechat.go

+ 3 - 0
controllers/report.go

@@ -77,6 +77,9 @@ func (this *ReportController) Detail() {
 	} else {
 		result.Data.IsCollect = false
 	}
+	if user.UserId != 0 {
+		result.Data.IsSignIn = true
+	}
 
 	br.Msg = "查询成功"
 	br.Success = true

+ 1 - 0
models/response/report.go

@@ -22,6 +22,7 @@ type ReportDetailResp struct {
 	Report    *models.ReportDetail `description:"报告"`
 	Status    int                  `description:"报告状态"`
 	IsCollect bool                 `description:"报告是否收藏"`
+	IsSignIn  bool                 `description:"是否报名"`
 }
 
 type ReportCollectListItem struct {

+ 9 - 3
models/wx_token.go

@@ -5,9 +5,15 @@ import (
 )
 
 type WxToken struct {
-	AccessToken string `description:"微信token"` //  微信token
-	ExpiresIn   int64  `description:"过期时间"`    // 过期时间
-	Id          int    `description:"id"`      // id
+	Id          int    `orm:"pk" description:"id"` // id
+	AccessToken string `description:"微信token"`     //  微信token
+	ExpiresIn   int64  `description:"过期时间"`        // 过期时间
+}
+
+func (w *WxToken) Insert() (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(w)
+	return
 }
 
 // Update 更新对应字段数据

+ 15 - 0
services/report.go

@@ -38,6 +38,21 @@ func GetReportDetail(reportId, userId int) (resp *resp2.ReportResp[resp2.ReportD
 	return
 }
 
+func GetReportDetailNoUser(reportId int) (resp *resp2.ReportResp[resp2.ReportDetailResp], err error) {
+	url := utils.ETA_MINI_BRIDGE_URL + "/report/detail/noUser?"
+	url += fmt.Sprintf("ReportId=%d", reportId)
+	fmt.Println(url)
+	body, err := HttpGet(url)
+	if err != nil {
+		return
+	}
+	err = json.Unmarshal(body, &resp)
+	if err != nil {
+		return
+	}
+	return
+}
+
 func GetReportDailyList(currentIndex, pageSize int) (resp *resp2.ReportResp[resp2.ReportList], err error) {
 	url := utils.ETA_MINI_BRIDGE_URL + "/report/daily/list?"
 	url += fmt.Sprintf("PageSize=%d&CurrentIndex=%d", pageSize, currentIndex)

+ 49 - 44
services/wechat/wechat.go

@@ -1,9 +1,7 @@
 package wechat
 
 import (
-	"context"
 	"encoding/json"
-	"errors"
 	"eta/eta_mini_api/models"
 	"eta/eta_mini_api/services/alarm_msg"
 	"eta/eta_mini_api/utils"
@@ -12,7 +10,6 @@ import (
 	"net/http"
 	"time"
 
-	"github.com/go-redis/redis/v8"
 	"github.com/silenceper/wechat/v2"
 	"github.com/silenceper/wechat/v2/cache"
 	"github.com/silenceper/wechat/v2/credential"
@@ -32,13 +29,10 @@ type WechatAccessToken struct {
 
 func GetWxChat() (officialAccount *officialaccount.OfficialAccount) {
 	wc := wechat.NewWechat()
-	// minConf, _ := models.GetMiniConf()
 	memory := cache.NewMemory()
 	conf := &config.Config{
-		AppID:     utils.DW_WX_APPID,
-		AppSecret: utils.DW_WX_APP_SECRET,
-		// AppID:          minConf["WxAppId"],
-		// AppSecret:      minConf["WxAppSecret"],
+		AppID:          utils.DW_WX_APPID,
+		AppSecret:      utils.DW_WX_APP_SECRET,
 		Token:          "",
 		EncodingAESKey: "",
 		Cache:          memory,
@@ -53,48 +47,59 @@ var DefaultKey = "zcmRedis"
 
 // GetAccessToken 获取accessToken
 func (wechat WechatAccessToken) GetAccessToken() (accessToken string, err error) {
-	accessToken, err = utils.Redis.Get(context.TODO(), utils.CACHE_WX_ACCESS_TOKEN_DW).Result()
-	// wxToken, err := models.GetWxTokenById()
-	if err != nil && err != redis.Nil {
+	wxToken, err := models.GetWxTokenById()
+	if err != nil && err.Error() != utils.ErrNoRow() {
 		return
 	}
-
-	minConf, _ := models.GetMiniConf()
-	// 缓存中没有取到数据,那么就需要强制刷新的accessToken
-	tmpAccessToken, expires, tmpErr := getTokenFromServer(minConf["WxAppId"], minConf["WxAppSecret"])
-	if tmpAccessToken == "" {
-		err = errors.New("获取微信token失败,Err:" + tmpErr.Error())
-		return
-	}
-	redisTimeExpire := time.Duration(expires-600) * time.Second
-	err = utils.Redis.SetEX(context.TODO(), utils.CACHE_WX_ACCESS_TOKEN_DW, tmpAccessToken, redisTimeExpire).Err()
-	if err != nil {
-		return
-	}
-	err = utils.Redis.HSet(context.TODO(), DefaultKey, utils.CACHE_WX_ACCESS_TOKEN_DW, true).Err()
-	// err = utils.Redis.Put(utils.CACHE_WX_ACCESS_TOKEN_HZ, tmpAccessToken, redisTimeExpire)
-	if err != nil {
-		err = errors.New("更新微信token失败")
-		return
+	//如果300s就要过期了,那么就去刷新accessToken
+	if wxToken.ExpiresIn < time.Now().Unix()+300 {
+		tmpAccessToken, expires, tmpErr := getTokenFromServer(utils.DW_WX_APPID, utils.DW_WX_APP_SECRET)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+
+		var updateCols = []string{"access_token", "expires_in"}
+		wxToken.AccessToken = tmpAccessToken
+		wxToken.ExpiresIn = time.Now().Unix() + expires - 600 //快过期前10分钟就刷新掉
+		wxToken.Update(updateCols)
 	}
+	accessToken = wxToken.AccessToken
 	return
-	// //如果300s就要过期了,那么就去刷新accessToken
-	// if wxToken.ExpiresIn < time.Now().Unix()+300 {
-	// 	tmpAccessToken, expires, tmpErr := getTokenFromServer(utils.HZ_WX_APPID, utils.HZ_WX_APP_SECRET)
-	// 	if tmpErr != nil {
-	// 		err = tmpErr
-	// 		return
-	// 	}
-
-	// 	var updateCols = []string{"access_token", "expires_in"}
-	// 	wxToken.AccessToken = tmpAccessToken
-	// 	wxToken.ExpiresIn = expires - 600 //快过期前10分钟就刷新掉
-	// 	wxToken.Update(updateCols)
-	// }
-	// accessToken = wxToken.AccessToken
-	// return
 }
 
+// accessToken, err = utils.Redis.Get(context.TODO(), utils.CACHE_WX_ACCESS_TOKEN_DW).Result()
+// // wxToken, err := models.GetWxTokenById()
+// if err != nil && err != redis.Nil {
+// 	return
+// }
+
+// models.GetWxTokenById()
+// minConf, _ := models.GetMiniConf()
+// // 缓存中没有取到数据,那么就需要强制刷新的accessToken
+// tmpAccessToken, expires, tmpErr := getTokenFromServer(minConf["WxAppId"], minConf["WxAppSecret"])
+//
+//	if tmpAccessToken == "" {
+//		err = errors.New("获取微信token失败,Err:" + tmpErr.Error())
+//		return
+//	}
+//
+// redisTimeExpire := time.Duration(expires-600) * time.Second
+// err = utils.Redis.SetEX(context.TODO(), utils.CACHE_WX_ACCESS_TOKEN_DW, tmpAccessToken, redisTimeExpire).Err()
+//
+//	if err != nil {
+//		return
+//	}
+//
+// err = utils.Redis.HSet(context.TODO(), DefaultKey, utils.CACHE_WX_ACCESS_TOKEN_DW, true).Err()
+// // err = utils.Redis.Put(utils.CACHE_WX_ACCESS_TOKEN_HZ, tmpAccessToken, redisTimeExpire)
+//
+//	if err != nil {
+//		err = errors.New("更新微信token失败")
+//		return
+//	}
+//
+// return
 // getTokenFromServer 服务端获取accessToken
 func getTokenFromServer(appid, wxSecret string) (accessToken string, expires int64, err error) {
 	apiUrl := "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"