174 lines
3.8 KiB
Go
174 lines
3.8 KiB
Go
|
package controller
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"github.com/gin-gonic/gin"
|
||
|
"strconv"
|
||
|
"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)
|
||
|
|
||
|
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
|
||
|
redistab.RedisClient.Del(redistab.GetProductBitMap(), string(temp))
|
||
|
b, err := redistab.RedisClient.SetBit(redistab.GetProductBitMap(), int64(t.ID), 1).Result()
|
||
|
fmt.Println("1---------", b, err)
|
||
|
|
||
|
}
|
||
|
|
||
|
Success(c, list)
|
||
|
|
||
|
return
|
||
|
}
|