shop-example/pkg/controller/product_backend.go

174 lines
3.8 KiB
Go
Raw Normal View History

2023-08-13 03:55:20 +00:00
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
}