[ADD]为数据添加redis缓存

This commit is contained in:
2020-09-28 20:24:06 +08:00
parent 4181eb96d7
commit 17ce95596b
16 changed files with 543 additions and 144 deletions

View File

@@ -1 +1,133 @@
package employee_service
import (
"encoding/json"
"errors"
"github.com/go-pripro/shop/models"
"github.com/go-pripro/shop/pkg/gredis"
"github.com/go-pripro/shop/pkg/logging"
"github.com/go-pripro/shop/service/cache_service"
)
type Employee struct {
ID int
CreatedOn int
ModifiedOn int
DeletedOn int
AvatarUrl string
Username string
Password string
Department string
Position string
State int
PageNum int
PageSize int
}
func (e *Employee) Add() error {
employee := map[string]interface{}{
"avatar_url": e.AvatarUrl,
"username": e.Username,
"password": e.Password,
"department": e.Department,
"position": e.Position,
"state": e.State,
}
if err := models.AddEmployee(employee); err != nil {
return err
}
return nil
}
func (e *Employee) Edit() error {
return models.EditEmployee(e.ID, map[string]interface{}{
"avatar_url": e.AvatarUrl,
"username": e.Username,
"password": e.Password,
"department": e.Department,
"position": e.Position,
"state": e.State,
})
}
func (e *Employee) Get() (*models.Employee, error) {
var cacheEmployee *models.Employee
cache := cache_service.Employee{
ID: e.ID,
}
key := cache.GetEmployeeKey()
if gredis.Exists(key) {
data, err := gredis.Get(key)
if err != nil {
logging.Info(err)
return cacheEmployee, errors.New("从缓存中获取员工信息失败")
} else {
json.Unmarshal(data, &cacheEmployee)
return cacheEmployee, nil
}
}
if employee, err := models.GetEmployee(e.ID); err != nil {
return nil, err
} else {
gredis.Set(key, employee, 3600)
//cacheEmployee.ID = employee.ID
return cacheEmployee, nil
}
}
func (e *Employee) GetAll() ([]*models.Employee, error) {
var (
employees, cacheEmployees []*models.Employee
)
cache := cache_service.Employee{
State: e.State,
PageNum: e.PageNum,
PageSize: e.PageSize,
}
key := cache.GetEmployeesKey()
if gredis.Exists(key) {
data, err := gredis.Get(key)
if err != nil {
logging.Info(err)
} else {
json.Unmarshal(data, &cacheEmployees)
return cacheEmployees, nil
}
}
employees, err := models.GetEmployees(e.PageNum, e.PageSize, e.getMaps())
if err != nil {
return nil, err
}
gredis.Set(key, employees, 3600)
return employees, nil
}
func (a *Employee) Delete() error {
return models.DeleteEmployee(a.ID)
}
func (e *Employee) ExistByID() (bool, error) {
return models.ExistEmployeeByID(e.ID)
}
func (e *Employee) Count() (int, error) {
return models.GetEmployeeTotal(e.getMaps())
}
func (e *Employee) getMaps() map[string]interface{} {
maps := make(map[string]interface{})
maps["deleted_on"] = 0
if e.State != -1 {
maps["state"] = e.State
}
return maps
}