init
This commit is contained in:
122
bbs-go/server/internal/services/api_service.go
Normal file
122
bbs-go/server/internal/services/api_service.go
Normal file
@@ -0,0 +1,122 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"bbs-go/internal/models"
|
||||
"bbs-go/internal/models/dto"
|
||||
"bbs-go/internal/repositories"
|
||||
"log/slog"
|
||||
|
||||
"github.com/mlogclub/simple/common/dates"
|
||||
"github.com/mlogclub/simple/sqls"
|
||||
"github.com/mlogclub/simple/web/params"
|
||||
)
|
||||
|
||||
var ApiService = newApiService()
|
||||
|
||||
func newApiService() *apiService {
|
||||
return &apiService{}
|
||||
}
|
||||
|
||||
type apiService struct {
|
||||
}
|
||||
|
||||
func (s *apiService) Get(id int64) *models.Api {
|
||||
return repositories.ApiRepository.Get(sqls.DB(), id)
|
||||
}
|
||||
|
||||
func (s *apiService) Take(where ...interface{}) *models.Api {
|
||||
return repositories.ApiRepository.Take(sqls.DB(), where...)
|
||||
}
|
||||
|
||||
func (s *apiService) Find(cnd *sqls.Cnd) []models.Api {
|
||||
return repositories.ApiRepository.Find(sqls.DB(), cnd)
|
||||
}
|
||||
|
||||
func (s *apiService) FindOne(cnd *sqls.Cnd) *models.Api {
|
||||
return repositories.ApiRepository.FindOne(sqls.DB(), cnd)
|
||||
}
|
||||
|
||||
func (s *apiService) FindPageByParams(params *params.QueryParams) (list []models.Api, paging *sqls.Paging) {
|
||||
return repositories.ApiRepository.FindPageByParams(sqls.DB(), params)
|
||||
}
|
||||
|
||||
func (s *apiService) FindPageByCnd(cnd *sqls.Cnd) (list []models.Api, paging *sqls.Paging) {
|
||||
return repositories.ApiRepository.FindPageByCnd(sqls.DB(), cnd)
|
||||
}
|
||||
|
||||
func (s *apiService) Count(cnd *sqls.Cnd) int64 {
|
||||
return repositories.ApiRepository.Count(sqls.DB(), cnd)
|
||||
}
|
||||
|
||||
func (s *apiService) Create(t *models.Api) error {
|
||||
return repositories.ApiRepository.Create(sqls.DB(), t)
|
||||
}
|
||||
|
||||
func (s *apiService) Update(t *models.Api) error {
|
||||
return repositories.ApiRepository.Update(sqls.DB(), t)
|
||||
}
|
||||
|
||||
func (s *apiService) Updates(id int64, columns map[string]interface{}) error {
|
||||
return repositories.ApiRepository.Updates(sqls.DB(), id, columns)
|
||||
}
|
||||
|
||||
func (s *apiService) UpdateColumn(id int64, name string, value interface{}) error {
|
||||
return repositories.ApiRepository.UpdateColumn(sqls.DB(), id, name, value)
|
||||
}
|
||||
|
||||
func (s *apiService) Delete(id int64) {
|
||||
repositories.ApiRepository.Delete(sqls.DB(), id)
|
||||
}
|
||||
|
||||
func (s *apiService) GetByPath(path string) *models.Api {
|
||||
return s.FindOne(sqls.NewCnd().Where("path = ?", path))
|
||||
}
|
||||
|
||||
func (s *apiService) GetByName(name string) *models.Api {
|
||||
return s.FindOne(sqls.NewCnd().Where("name = ?", name))
|
||||
}
|
||||
|
||||
func (s *apiService) Init(list []dto.ApiRoute) {
|
||||
now := dates.NowTimestamp()
|
||||
for _, item := range list {
|
||||
if s.GetByPath(item.Path) != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
if err := s.Create(&models.Api{
|
||||
Name: item.Name,
|
||||
Method: item.Method,
|
||||
Path: item.Path,
|
||||
CreateTime: now,
|
||||
UpdateTime: now,
|
||||
}); err != nil {
|
||||
slog.Error("Create api error", slog.Any("error", err))
|
||||
} else {
|
||||
slog.Info("Create api: " + item.Method + " " + item.Path + " " + item.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s *apiService) GetByMenuId(menuId int64) (list []models.Api) {
|
||||
err := sqls.DB().Raw(`
|
||||
select a.* from t_api a left join t_menu_api ma on a.id = ma.api_id where ma.menu_id = ? order by a.id
|
||||
`, menuId).Scan(&list).Error
|
||||
if err != nil {
|
||||
slog.Error(err.Error(), slog.Any("error", err))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *apiService) GetByUserId(userId int64) (list []models.Api) {
|
||||
err := sqls.DB().Raw(`
|
||||
select api.* from t_api api
|
||||
left join t_menu_api menu_api on api.id = menu_api.api_id
|
||||
left join t_role_menu role_menu on role_menu.menu_id = menu_api.menu_id
|
||||
left join t_user_role user_role on user_role.role_id = role_menu.role_id
|
||||
where user_role.user_id = ? order by api.id
|
||||
`, userId).Scan(&list).Error
|
||||
if err != nil {
|
||||
slog.Error(err.Error(), slog.Any("error", err))
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user