xuzhiheng 4 年 前
コミット
143e65f5b1
4 ファイル変更26 行追加35 行削除
  1. 0 26
      middleware/auth.go
  2. 5 8
      model/response/response.go
  3. 1 1
      service/userRecharge.go
  4. 20 0
      utils/api_util.go

+ 0 - 26
middleware/auth.go

@@ -3,10 +3,7 @@ package middleware
 import (
 	"fmt"
 	"sfbase/global"
-	"sfbase/redis"
 	sutils "sfbase/utils"
-	"sfis/db"
-	"sfis/model"
 	"sfis/model/response"
 	"sfis/utils"
 	"strconv"
@@ -95,29 +92,6 @@ func TokenAuth() gin.HandlerFunc {
 			context.Abort()
 			return
 		}
-
-		userProduct := &model.UserProduct{}
-		db.GetSFISDB().First(userProduct, &model.UserProduct{AppID: appID, ProductID: productID})
-		//校验是否过期
-		end := userProduct.EndAt
-		if now > end.Unix() {
-			response.FailWithDetailed(response.InterfaceExpired, nil, "剩余量已过期", context)
-			context.Abort()
-			return
-		}
-		//校验每日调用上限
-		limittodaykey := fmt.Sprintf("limittoday_%d_%d_%s", time.Now().Day(), productID, appID)
-		limittoday := redis.GetInt("limit", limittodaykey)
-		if limittoday >= userProduct.CallTimesLimitDay { //当天调用超过次数
-			response.FailWithDetailed(response.MoreThanEveryDayDataNumberLimit, nil, "请求超过每日调用总量限制", context)
-			context.Abort()
-			return
-		} else {
-			if limittoday == 0 {
-				_, max := sutils.GetDayMinMax(time.Now())
-				redis.Put("limit", limittodaykey, 0, int(max-now))
-			}
-		}
 		context.Set("appID", appID)
 		context.Set("productID", productID)
 		context.Set("requestIP", requestIP)

+ 5 - 8
model/response/response.go

@@ -20,11 +20,11 @@ const (
 	QueryError                   int = 4004 //系统查询异常,请联系客服
 
 	//系统级错误码
-	InValidKey    = 101 //当前KEY无效
-	RemainingLack = 102 //当前KEY余额|余量不足
-	DeleteKey     = 103 //当前Key被暂停使用,请联系管理员
-	TokenInvalid  = 104 //身份验证错误
-	TokenExpired  = 107 //身份验证已过期
+	InValidKey    = 101  //当前KEY无效
+	RemainingLack = 102  //当前KEY余额|余量不足
+	DeleteKey     = 103  //当前Key被暂停使用,请联系管理员
+	TokenInvalid  = 4000 //身份验证错误
+	TokenExpired  = 4002 //身份验证已过期
 
 	//105非法请求过多,请联系管理员
 	IpInvalid                       = 4005 //被禁止的IP
@@ -35,9 +35,6 @@ const (
 	InterfaceDeleted                = 112 //接口已停用,请联系管理员
 	MoreThanEveryDayDataNumberLimit = 113 //请求超过每日调用总量限制
 	OtherError                      = 199 //系统未知错误,请联系技术客服
-	//
-	SignError   = 4000 //签名错误
-	SignExpired = 4002 //签名过期
 )
 
 type Response struct {

+ 1 - 1
service/userRecharge.go

@@ -96,7 +96,7 @@ func ProductRecharge(appid string, productId, rechargeNum int, endTime string, c
 				return err
 			}
 		}
-		//生充值记录
+		//生购买记录
 		err = tx.Exec("insert into user_buy_record (app_id,product_id,user_product_id,`before`,`after`,trade_money,buy_type,history_unit_price) values (?,?,?,?,?,?,?,?)", appid, productId, userProduct.ID, before, after, product.UnitPrice*rechargeNum, 1, product.UnitPrice).Error
 		if err != nil {
 			log.Printf("appID:[%s],product_id:[%d],user_product_id:[%d],after:[%d],trade_money:[%d] execute insert into user_buy_record error:[%v]", appid, productId, userProduct.ID, after, product.UnitPrice*rechargeNum, err)

+ 20 - 0
utils/api_util.go

@@ -6,6 +6,7 @@ import (
 	"log"
 	"sfbase/global"
 	"sfbase/redis"
+	"sfbase/utils"
 	"sfis/db"
 	"sfis/lock"
 	"sfis/model"
@@ -40,6 +41,25 @@ func Check(appID string, productID int, c *gin.Context, getData func() ([]map[st
 		response.FailWithDetailed(response.InterfaceDeleted, nil, "该用户接口暂不提供服务", c)
 		return
 	}
+	//校验是否过期
+	now := time.Now().Unix()
+	end := userProduct.EndAt
+	if now > end.Unix() {
+		response.FailWithDetailed(response.InterfaceExpired, nil, "剩余量已过期", c)
+		return
+	}
+	//校验每日调用上限
+	limittodaykey := fmt.Sprintf("limittoday_%d_%d_%s", time.Now().Day(), productID, appID)
+	limittoday := redis.GetInt("limit", limittodaykey)
+	if limittoday >= userProduct.CallTimesLimitDay { //当天调用超过次数
+		response.FailWithDetailed(response.MoreThanEveryDayDataNumberLimit, nil, "请求超过每日调用总量限制", c)
+		return
+	} else {
+		if limittoday == 0 {
+			_, max := utils.GetDayMinMax(time.Now())
+			redis.Put("limit", limittodaykey, 0, int(max-now))
+		}
+	}
 	//2.2 取用户(产品余量|钱包账户余额)校验-必须加锁
 	costModel := userProduct.CostModel //扣费模式 0扣余量,1-扣余额
 	product := GetProductByID(productID)