2023-08-13 03:55:20 +00:00
|
|
|
package controller
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"fmt"
|
|
|
|
"github.com/gin-gonic/gin"
|
2023-08-14 00:44:10 +00:00
|
|
|
"github.com/go-redis/redis"
|
2023-08-13 03:55:20 +00:00
|
|
|
"strconv"
|
2023-08-14 00:44:10 +00:00
|
|
|
"time"
|
2023-08-13 03:55:20 +00:00
|
|
|
"worktest/pkg/model"
|
|
|
|
"worktest/pkg/redistab"
|
|
|
|
)
|
|
|
|
|
|
|
|
type ListReq struct {
|
|
|
|
Title string `json:"'title'"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type ProductReq struct {
|
|
|
|
ID uint `json:"autoincr"`
|
|
|
|
}
|
|
|
|
|
|
|
|
//RemoveCache 清除所有redis1缓存
|
|
|
|
func RemoveCache(c *gin.Context) {
|
|
|
|
var req ProductReq
|
|
|
|
if err := c.ShouldBind(&req); err != nil {
|
|
|
|
Error(c, err.Error())
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err := redistab.RedisClient.Del(redistab.GetProductOrderList(req.ID)).Result()
|
|
|
|
fmt.Println("1---------", v, err)
|
|
|
|
v, err = redistab.RedisClient.Del(redistab.GetProductSaleNum(req.ID)).Result()
|
|
|
|
fmt.Println("1---------", v, err)
|
|
|
|
|
|
|
|
v, err = redistab.RedisClient.Del(redistab.GetProductStockSize(req.ID)).Result()
|
|
|
|
fmt.Println("1---------", v, err)
|
|
|
|
|
|
|
|
Success(c, nil)
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
//RemoveAllCache 清除所有redis1缓存
|
|
|
|
func RemoveAllCache(c *gin.Context) {
|
|
|
|
var req ListReq
|
|
|
|
if err := c.ShouldBind(&req); err != nil {
|
|
|
|
Error(c, err.Error())
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var list []*model.Product
|
|
|
|
model.DB.Model(&model.Product{}).Find(&list)
|
|
|
|
fmt.Println("2--------", redistab.RedisClient)
|
|
|
|
|
|
|
|
for _, t := range list {
|
|
|
|
//销量
|
|
|
|
v, err := redistab.RedisClient.Del(redistab.GetProductOrderList(t.ID)).Result()
|
|
|
|
fmt.Println("1---------", v, err)
|
|
|
|
v, err = redistab.RedisClient.Del(redistab.GetProductSaleNum(t.ID)).Result()
|
|
|
|
fmt.Println("1---------", v, err)
|
|
|
|
|
|
|
|
v, err = redistab.RedisClient.Del(redistab.GetProductStockSize(t.ID)).Result()
|
|
|
|
fmt.Println("1---------", v, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
Success(c, nil)
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func List(c *gin.Context) {
|
|
|
|
var req ListReq
|
|
|
|
if err := c.ShouldBind(&req); err != nil {
|
|
|
|
Error(c, err.Error())
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var list []*model.Product
|
|
|
|
model.DB.Model(&model.Product{}).Find(&list)
|
|
|
|
fmt.Println("2--------", redistab.RedisClient)
|
|
|
|
|
|
|
|
for i, t := range list {
|
|
|
|
fmt.Println("30----", redistab.GetProductOrderList(t.ID))
|
|
|
|
//销量
|
|
|
|
v, err := redistab.RedisClient.Get(redistab.GetProductOrderList(t.ID)).Result()
|
|
|
|
fmt.Println("1---------", v, err)
|
|
|
|
|
|
|
|
if err == nil && v != "" {
|
|
|
|
u64, err := strconv.ParseUint(v, 10, 32)
|
|
|
|
if err != nil {
|
|
|
|
list[i].OrderNum = u64
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err = redistab.RedisClient.Get(redistab.GetProductSaleNum(t.ID)).Result()
|
|
|
|
fmt.Println("1---------", v, err)
|
|
|
|
|
|
|
|
if err == nil && v != "" {
|
|
|
|
u64, err := strconv.ParseUint(v, 10, 32)
|
|
|
|
if err != nil {
|
|
|
|
list[i].SalesVolume = u64
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err = redistab.RedisClient.Get(redistab.GetProductStockSize(t.ID)).Result()
|
|
|
|
fmt.Println("1---------", v, err)
|
|
|
|
|
|
|
|
if err == nil && v != "" {
|
|
|
|
u64, err := strconv.ParseUint(v, 10, 32)
|
|
|
|
if err != nil {
|
|
|
|
list[i].NowStockSize = u64
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
b, err := redistab.RedisClient.PFCount(redistab.GetProductStockSize(t.ID)).Result()
|
|
|
|
fmt.Println("1---------", b, err)
|
|
|
|
|
|
|
|
if err == nil && v != "" {
|
|
|
|
list[i].Uv = uint(b)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
Success(c, list)
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
//Clear 清除数据
|
|
|
|
func Clear(c *gin.Context) {
|
|
|
|
var req ListReq
|
|
|
|
if err := c.ShouldBind(&req); err != nil {
|
|
|
|
Error(c, err.Error())
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var list []*model.Product
|
|
|
|
model.DB.Model(&model.Product{}).Find(&list)
|
|
|
|
|
|
|
|
Success(c, list)
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
//SynCache 同步redis
|
|
|
|
func SynCache(c *gin.Context) {
|
|
|
|
var req ListReq
|
|
|
|
if err := c.ShouldBind(&req); err != nil {
|
|
|
|
Error(c, err.Error())
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var list []*model.Product
|
|
|
|
model.DB.Model(&model.Product{}).Find(&list)
|
|
|
|
fmt.Println("2--------", redistab.RedisClient)
|
|
|
|
|
2023-08-14 00:44:10 +00:00
|
|
|
|
|
|
|
redistab.RedisClient.Del(redistab.GetProductBitMap())
|
|
|
|
redistab.RedisClient.Del(redistab.GetProductIdSet())
|
|
|
|
redistab.RedisClient.Del(redistab.GetProductIdZet())
|
|
|
|
|
2023-08-13 03:55:20 +00:00
|
|
|
for _, t := range list {
|
|
|
|
v, err := redistab.RedisClient.Set(redistab.GetProductStockSize(t.ID), t.StockSize, 0).Result()
|
|
|
|
fmt.Println("1---------", v, err)
|
|
|
|
temp, err := json.Marshal(t)
|
|
|
|
|
|
|
|
v, err = redistab.RedisClient.Set(redistab.GetProductDetail(t.ID), string(temp), 0).Result()
|
|
|
|
fmt.Println("1---------", v, err)
|
|
|
|
|
|
|
|
//同步bitmap
|
|
|
|
b, err := redistab.RedisClient.SetBit(redistab.GetProductBitMap(), int64(t.ID), 1).Result()
|
|
|
|
fmt.Println("1---------", b, err)
|
|
|
|
|
2023-08-14 00:44:10 +00:00
|
|
|
//id同步到set
|
|
|
|
redistab.RedisClient.SAdd(redistab.GetProductIdSet(),t.ID)
|
|
|
|
|
|
|
|
//id同步到zset
|
|
|
|
redistab.RedisClient.ZAdd(redistab.GetProductIdZet(),redis.Z{Score: float64(t.ID), Member: t.ID})
|
|
|
|
|
2023-08-13 03:55:20 +00:00
|
|
|
}
|
|
|
|
|
2023-08-14 00:44:10 +00:00
|
|
|
//同步列表
|
|
|
|
|
2023-08-13 03:55:20 +00:00
|
|
|
Success(c, list)
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
2023-08-14 00:44:10 +00:00
|
|
|
|
|
|
|
func PublishMsg(c *gin.Context) {
|
|
|
|
|
|
|
|
for i := 0 ; i<=10 ; i++ {
|
|
|
|
msg := fmt.Sprintf("消息标号:%d号",i)
|
|
|
|
_= redistab.RedisClient.Publish(redistab.GetChannelKey(),msg) // 订阅 mychannel
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Success(c, nil)
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
func PublishMsgTime(c *gin.Context) {
|
|
|
|
|
|
|
|
for i := 0 ; i<=10 ; i++ {
|
|
|
|
time.Sleep(100*time.Microsecond)
|
|
|
|
msg := fmt.Sprintf("消息标号:%d号",i)
|
|
|
|
_= redistab.RedisClient.Publish(redistab.GetChannelKey(),msg) // 订阅 mychannel
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Success(c, nil)
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|