144 lines
3.1 KiB
Go
144 lines
3.1 KiB
Go
package department
|
|
|
|
import (
|
|
"context"
|
|
v1 "leke/api/department/v1"
|
|
"leke/internal/dao"
|
|
"leke/internal/model"
|
|
"leke/internal/service"
|
|
)
|
|
|
|
type sDepartment struct{}
|
|
|
|
func New() *sDepartment {
|
|
return &sDepartment{}
|
|
}
|
|
|
|
func init() {
|
|
service.RegisterDepartment(New())
|
|
}
|
|
|
|
// DepartmentList 获取部门列表
|
|
func (s *sDepartment) DepartmentList(ctx context.Context, req *v1.DepartmentListReq) (res *v1.DepartmentListRes, err error) {
|
|
// 创建数据库查询模型
|
|
m := dao.Department.Ctx(ctx)
|
|
|
|
// 根据分部名称查询
|
|
if req.BranchName != "" {
|
|
m = m.WhereLike(dao.Department.Columns().BranchName, "%"+req.BranchName+"%")
|
|
}
|
|
|
|
// 根据经理名称查询
|
|
if req.ManagerName != "" {
|
|
m = m.WhereLike(dao.Department.Columns().ManagerName, "%"+req.ManagerName+"%")
|
|
}
|
|
|
|
// 根据用户ID查询
|
|
if req.UserId != 0 {
|
|
m = m.Where(dao.Department.Columns().UserId, req.UserId)
|
|
}
|
|
|
|
// 查询总数
|
|
total, err := m.Count()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// 分页处理
|
|
m = m.Page(req.Page, req.PageSize)
|
|
|
|
// 查询列表数据
|
|
var departmentList []*v1.Department
|
|
err = m.Scan(&departmentList)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res = &v1.DepartmentListRes{
|
|
List: departmentList,
|
|
}
|
|
|
|
// 设置分页信息
|
|
req.PageResult.Total = int(total)
|
|
req.PageResult.Page = req.Page
|
|
req.PageResult.PageSize = req.PageSize
|
|
|
|
return
|
|
}
|
|
|
|
// DepartmentView 获取部门详情
|
|
func (s *sDepartment) DepartmentView(ctx context.Context, req *v1.DepartmentViewReq) (res *v1.DepartmentViewRes, err error) {
|
|
// 创建数据库查询模型
|
|
m := dao.Department.Ctx(ctx)
|
|
|
|
// 根据ID查询
|
|
m = m.Where(dao.Department.Columns().Id, req.Id)
|
|
|
|
res = &v1.DepartmentViewRes{}
|
|
err = m.Scan(&res.Department)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// DepartmentCreate 创建部门
|
|
func (s *sDepartment) DepartmentCreate(ctx context.Context, req *v1.DepartmentCreateReq) (res *v1.DepartmentCreateRes, err error) {
|
|
// 准备数据
|
|
departmentData := model.Department{
|
|
UserId: req.UserId,
|
|
BranchName: req.BranchName,
|
|
TerminalCount: req.TerminalCount,
|
|
Weather: req.Weather,
|
|
ManagerName: req.ManagerName,
|
|
Location: req.Location,
|
|
}
|
|
|
|
// 插入数据
|
|
result, err := dao.Department.Ctx(ctx).Data(departmentData).Insert()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// 获取插入的ID
|
|
lastInsertId, err := result.LastInsertId()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res = &v1.DepartmentCreateRes{
|
|
Id: uint64(lastInsertId),
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// DepartmentUpdate 更新部门
|
|
func (s *sDepartment) DepartmentUpdate(ctx context.Context, req *v1.DepartmentUpdateReq) (res *v1.DepartmentUpdateRes, err error) {
|
|
// 更新数据
|
|
_, err = dao.Department.Ctx(ctx).Data(req).Where(dao.Department.Columns().Id, req.Id).Update()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res = &v1.DepartmentUpdateRes{
|
|
Id: req.Id,
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// DepartmentDelete 删除部门
|
|
func (s *sDepartment) DepartmentDelete(ctx context.Context, req *v1.DepartmentDeleteReq) (res *v1.DepartmentDeleteRes, err error) {
|
|
// 根据ID删除
|
|
_, err = dao.Department.Ctx(ctx).Where(dao.Department.Columns().Id, req.Id).Delete()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res = &v1.DepartmentDeleteRes{}
|
|
|
|
return
|
|
}
|