[ADD]为数据添加redis缓存
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user