generated from root/miduo_server
197 lines
4.7 KiB
Go
197 lines
4.7 KiB
Go
package menu
|
||
|
||
import (
|
||
"errors"
|
||
"github.com/gogf/gf/frame/g"
|
||
"github.com/gogf/gf/os/glog"
|
||
"github.com/gogf/gf/text/gstr"
|
||
"github.com/gogf/gf/util/gconv"
|
||
"gmanager/app/constants"
|
||
"gmanager/app/model/menu"
|
||
"gmanager/app/service/log"
|
||
"gmanager/library"
|
||
"gmanager/library/base"
|
||
)
|
||
|
||
// 请求参数
|
||
type Request struct {
|
||
menu.Entity
|
||
UserId int `form:"userId" json:"userId"`
|
||
}
|
||
|
||
// 通过id获取实体
|
||
func GetById(id int64) (*menu.Entity, error) {
|
||
if id <= 0 {
|
||
glog.Error(" get id error")
|
||
return new(menu.Entity), errors.New("参数不合法")
|
||
}
|
||
|
||
return menu.Model.FindOne(" id = ?", id)
|
||
}
|
||
|
||
// 根据条件获取实体
|
||
func GetOne(form *base.BaseForm) (*menu.Entity, error) {
|
||
where := " 1 = 1 "
|
||
var params []interface{}
|
||
if form.Params != nil && form.Params["id"] != "" {
|
||
where += " and id = ? "
|
||
params = append(params, gconv.Int(form.Params["id"]))
|
||
}
|
||
if form.Params != nil && form.Params["parentId"] != "" {
|
||
where += " and parent_id = ? "
|
||
params = append(params, gconv.Int(form.Params["parentId"]))
|
||
}
|
||
|
||
return menu.Model.FindOne(where, params)
|
||
}
|
||
|
||
// 删除实体
|
||
func Delete(id int64, userId int) (int64, error) {
|
||
if id <= 0 {
|
||
glog.Error("delete id error")
|
||
return 0, errors.New("参数不合法")
|
||
}
|
||
|
||
// 获取删除对象
|
||
entity, err := GetById(id)
|
||
if err != nil {
|
||
return 0, err
|
||
}
|
||
entity.UpdateId = userId
|
||
entity.UpdateTime = library.GetNow()
|
||
|
||
r, err1 := menu.Model.Delete(" id = ?", id)
|
||
if err1 != nil {
|
||
return 0, err1
|
||
}
|
||
|
||
log.SaveLog(entity, constants.DELETE)
|
||
return r.RowsAffected()
|
||
}
|
||
|
||
// 保存实体
|
||
func Save(request *Request) (int64, error) {
|
||
entity := (*menu.Entity)(nil)
|
||
err := gconv.Struct(request.Entity, &entity)
|
||
if err != nil {
|
||
return 0, errors.New("数据错误")
|
||
}
|
||
|
||
entity.UpdateId = request.UserId
|
||
entity.UpdateTime = library.GetNow()
|
||
|
||
// 根目录级别为1,其他为父节点 + 1
|
||
parentId := entity.ParentId
|
||
if parentId == 0 {
|
||
entity.Level = 1
|
||
} else {
|
||
form := base.NewForm(g.Map{"id": parentId})
|
||
parentModel, err := GetOne(&form)
|
||
if err != nil {
|
||
return 0, err
|
||
}
|
||
entity.Level = parentModel.Level + 1
|
||
}
|
||
|
||
// 判断新增还是修改
|
||
if entity.Id <= 0 {
|
||
entity.CreateId = request.UserId
|
||
entity.CreateTime = library.GetNow()
|
||
|
||
r, err := menu.Model.Insert(entity)
|
||
if err != nil {
|
||
return 0, err
|
||
}
|
||
// 回写主键
|
||
lastId, err := r.LastInsertId()
|
||
if err != nil {
|
||
return 0, err
|
||
}
|
||
entity.Id = gconv.Int(lastId)
|
||
|
||
log.SaveLog(entity, constants.INSERT)
|
||
return r.RowsAffected()
|
||
} else {
|
||
r, err := menu.Model.OmitEmpty().Where(" id = ?", entity.Id).Update(entity)
|
||
if err != nil {
|
||
return 0, err
|
||
}
|
||
|
||
log.SaveLog(entity, constants.UPDATE)
|
||
return r.RowsAffected()
|
||
}
|
||
}
|
||
|
||
func ListUser(userId int, userType int) ([]*menu.Entity, error) {
|
||
if userType == constants.UserTypeAdmin {
|
||
return List(&base.BaseForm{})
|
||
}
|
||
|
||
return menu.Model.As("t").Fields(menu.Model.Columns()).LeftJoin(
|
||
"sys_role_menu rm", "rm.menu_id = t.id ").LeftJoin(
|
||
"sys_user_role ur", "ur.role_id = rm.role_id ").Where(
|
||
"ur.user_id = ? ", userId).FindAll()
|
||
}
|
||
|
||
// 列表数据查询
|
||
func List(form *base.BaseForm) ([]*menu.Entity, error) {
|
||
where := " 1 = 1 "
|
||
var params []interface{}
|
||
if form.Params != nil && form.Params["name"] != "" {
|
||
where += " and name like ? "
|
||
params = append(params, "%"+form.Params["name"]+"%")
|
||
}
|
||
if form.Params != nil && form.Params["level"] != "" {
|
||
where += " and level in (?) "
|
||
params = append(params, gstr.Split(form.Params["level"], ","))
|
||
}
|
||
if gstr.Trim(form.OrderBy) == "" {
|
||
form.OrderBy = " sort,id desc"
|
||
}
|
||
|
||
return menu.Model.Order(form.OrderBy).FindAll(where, params)
|
||
}
|
||
|
||
// 分页查询
|
||
func Page(form *base.BaseForm) ([]menu.Entity, error) {
|
||
if form.Page <= 0 || form.Rows <= 0 {
|
||
glog.Error("page param error", form.Page, form.Rows)
|
||
return []menu.Entity{}, nil
|
||
}
|
||
|
||
where := " 1 = 1 "
|
||
var params []interface{}
|
||
if form.Params != nil && form.Params["name"] != "" {
|
||
where += " and name like ? "
|
||
params = append(params, "%"+form.Params["name"]+"%")
|
||
}
|
||
|
||
num, err := menu.Model.As("t").FindCount(where, params)
|
||
form.TotalSize = num
|
||
form.TotalPage = num / form.Rows
|
||
|
||
if err != nil {
|
||
glog.Error("page count error", err)
|
||
return []menu.Entity{}, err
|
||
}
|
||
|
||
// 没有数据直接返回
|
||
if num == 0 {
|
||
form.TotalPage = 0
|
||
form.TotalSize = 0
|
||
return []menu.Entity{}, err
|
||
}
|
||
|
||
var resData []menu.Entity
|
||
dbModel := menu.Model.As("t").Fields(menu.Model.Columns() + ",su1.real_name as updateName,su2.real_name as createName")
|
||
dbModel = dbModel.LeftJoin("sys_user su1", " t.update_id = su1.id ")
|
||
dbModel = dbModel.LeftJoin("sys_user su2", " t.update_id = su2.id ")
|
||
err = dbModel.Where(where, params).Order(form.OrderBy).Page(form.Page, form.Rows).M.Structs(&resData)
|
||
if err != nil {
|
||
glog.Error("page list error", err)
|
||
return []menu.Entity{}, err
|
||
}
|
||
|
||
return resData, nil
|
||
}
|