Skip to content

Commit

Permalink
Fix issue #106
Browse files Browse the repository at this point in the history
  • Loading branch information
arcosx committed Jul 5, 2020
1 parent 0d19572 commit 7c0c493
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 4 deletions.
9 changes: 9 additions & 0 deletions common/tool.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,12 @@ func SetShadowKeyInRedis(key string, value interface{}, expiration time.Duration
}
return nil
}

func ReplaceShadowKeyInRedis(key string, expiration time.Duration, client *redis.Client) error {
err = client.Expire(SHADOWKEYPREFIX+key, expiration).Err()
if err != nil {
log.Println(fmt.Sprintf("ReplaceShadowKeyInRedis key %s fail in shadowKey Set", key))
return err
}
return nil
}
1 change: 1 addition & 0 deletions item/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ func ActiveDelete(client *redis.Client) {
ch := pubsub.Channel()
for msg := range ch {
reCode := msg.Payload[len(common.SHADOWKEYPREFIX):]
log.Println("ActiveDelete get ReCode:" + reCode)
var itemList []Item
db.Where("re_code = ? ", reCode).Find(&itemList)
for _, item := range itemList {
Expand Down
37 changes: 33 additions & 4 deletions item/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,22 @@ func ChangeExpireTime(c *gin.Context) {
var item Item
db.Where("name = ? AND status = ? AND re_code = ?", files[0], common.UPLOAD_FINISHED, retrieveCode).First(&item)
h, _ := time.ParseDuration("1h")
newTime := item.CreatedAt.Add(time.Duration(changeExpireTimeBody.NewExpireTime) * h)
expireDuration := time.Duration(changeExpireTimeBody.NewExpireTime) * h
newTime := item.CreatedAt.Add(expireDuration)
for _, value := range files {
db.Model(&Item{}).Where("name = ? AND status = ? AND re_code = ?", value, common.UPLOAD_FINISHED, retrieveCode).Update(map[string]interface{}{"expired_at": newTime})
}
// 修改 ShadowKey 过期时间
reCodeRedisClient := common.GetReCodeRedisClient()
err = common.ReplaceShadowKeyInRedis(retrieveCode, expireDuration, reCodeRedisClient)
if err != nil {
log.Println("ChangeExpireTime Recode", retrieveCode, "timeAdd")
c.JSON(http.StatusInternalServerError, gin.H{
"err_code": 10001,
"message": common.Errors[10001],
})
return
}
c.JSON(http.StatusOK, gin.H{
"message": newTime,
})
Expand Down Expand Up @@ -216,13 +228,30 @@ func ChangeRecode(c *gin.Context) {
db.Model(&Item{}).Where("name = ? AND status = ? AND re_code = ?", value, common.UPLOAD_FINISHED, retrieveCode).Update(map[string]interface{}{"re_code": changeRecodeBody.NewReCode, "password": hasherSum, "is_public": false})
}
log.Println("Success Change ReCode With New Password", "Previous Recode", retrieveCode, "Now Recode", changeRecodeBody.NewReCode)
c.JSON(http.StatusOK, gin.H{
"message": "ok",
})
// rename redis recode key
err = reCodeRedisClient.Rename(retrieveCode, changeRecodeBody.NewReCode).Err()
if err != nil {
log.Println("reCodeRedisClient Rename err", "old key", retrieveCode, "new key", changeRecodeBody.NewReCode)
c.JSON(http.StatusInternalServerError, gin.H{
"err_code": 10001,
"message": common.Errors[10001],
})
return
}
// rename redis shadow key
err = reCodeRedisClient.Rename(common.SHADOWKEYPREFIX+retrieveCode, common.SHADOWKEYPREFIX+changeRecodeBody.NewReCode).Err()
if err != nil {
log.Println("reCodeRedisClient Rename shadow key err", "old key", common.SHADOWKEYPREFIX+retrieveCode, "new key", common.SHADOWKEYPREFIX+changeRecodeBody.NewReCode)
c.JSON(http.StatusInternalServerError, gin.H{
"err_code": 10001,
"message": common.Errors[10001],
})
return
}

c.JSON(http.StatusOK, gin.H{
"message": "ok",
})
return
}

Expand Down

0 comments on commit 7c0c493

Please sign in to comment.