Ben há 1 ano atrás
pai
commit
eebbbe078d
3 ficheiros alterados com 22 adições e 25 exclusões
  1. 1 1
      cmd/master.go
  2. 12 15
      internal/server/server.go
  3. 9 9
      internal/storage/user.go

+ 1 - 1
cmd/master.go

@@ -10,7 +10,7 @@ func main() {
 	r := gin.Default()
 	r.Use(gin.Recovery())
 	r.GET("/config", server.Config)
-	r.PUT("/used_duration", server.UpdateUsedDuration)
+	r.PUT("/used_duration", server.AddUsedDuration)
 	r.POST("/register", server.Register)
 	r.GET("/secret/random", server.SecretRandom)
 	r.GET("/list", server.List)

+ 12 - 15
internal/server/server.go

@@ -34,32 +34,29 @@ func Config(c *gin.Context) {
 	})
 }
 
-func UpdateUsedDuration(c *gin.Context) {
+func AddUsedDuration(c *gin.Context) {
 	deviceId := c.Query("deviceId")
 	usedDurationStr := c.Query("usedDuration")
 	log.Printf("deviceId: %s, usedDuration: %s", deviceId, usedDurationStr)
+
 	usedDuration, err := strconv.ParseUint(usedDurationStr, 10, 64)
 	if err != nil {
 		dto.Error(c, err)
 		return
 	}
-	if err := storage.SetUsedDuration(deviceId, usedDuration); err != nil {
+	if existed, err := storage.AddUsedDuration(deviceId, usedDuration); err != nil {
 		dto.Error(c, err)
 		return
+	} else {
+		c.JSON(http.StatusOK, dto.ConfigResponse{
+			Response: dto.NewOkResponse(),
+			Data: dto.ConfigResult{
+				FreeTrialDuration: totalFreeDuration - existed,
+				Timestamp:         time.Now().Unix(),
+				Node:              convert2DtoNode(healthNodes()[0]),
+			},
+		})
 	}
-	usedDuration, err = storage.GetUsedDuration(deviceId)
-	if err != nil {
-		dto.Error(c, err)
-		return
-	}
-	c.JSON(http.StatusOK, dto.ConfigResponse{
-		Response: dto.NewOkResponse(),
-		Data: dto.ConfigResult{
-			FreeTrialDuration: totalFreeDuration - usedDuration,
-			Timestamp:         time.Now().Unix(),
-			Node:              convert2DtoNode(healthNodes()[0]),
-		},
-	})
 }
 
 func Register(c *gin.Context) {

+ 9 - 9
internal/storage/user.go

@@ -18,21 +18,21 @@ func GetUsedDuration(deviceId string) (uint64, error) {
 	return data, nil
 }
 
-func SetUsedDuration(deviceId string, duration uint64) error {
+func AddUsedDuration(deviceId string, duration uint64) (uint64, error) {
 	if len(deviceId) == 0 {
-		return nil
+		return 0, nil
 	}
 	existed, err := GetUsedDuration(deviceId)
 	if err != nil {
-		return err
+		return 0, err
 	}
-	if existed <= duration {
-		key := generateDeviceIdUsedKey(deviceId)
-		data := make([]byte, 8)
-		binary.BigEndian.PutUint64(data, duration)
-		return set(key, data)
+	ret := existed + duration
+	data := make([]byte, 8)
+	binary.BigEndian.PutUint64(data, duration)
+	if err := set(generateDeviceIdUsedKey(deviceId), data); err != nil {
+		return 0, err
 	}
-	return nil
+	return ret, nil
 }
 
 func generateDeviceIdUsedKey(deviceId string) string {