refactor: expiry 模块按 handler/model/service 分层
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
package expiry
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/redis/go-redis/v9"
|
||||
"gorm.io/gorm"
|
||||
|
||||
expiryhandler "wx_service/internal/expiry/handler"
|
||||
expirymodel "wx_service/internal/expiry/model"
|
||||
expiryrepo "wx_service/internal/expiry/repository"
|
||||
expiryservice "wx_service/internal/expiry/service"
|
||||
)
|
||||
|
||||
const (
|
||||
CategoryFood = expirymodel.CategoryFood
|
||||
CategoryMedicine = expirymodel.CategoryMedicine
|
||||
CategoryCosmetic = expirymodel.CategoryCosmetic
|
||||
CategoryOther = expirymodel.CategoryOther
|
||||
|
||||
StatusNormal = expirymodel.StatusNormal
|
||||
StatusExpiring = expirymodel.StatusExpiring
|
||||
StatusExpired = expirymodel.StatusExpired
|
||||
StatusUsed = expirymodel.StatusUsed
|
||||
StatusDiscarded = expirymodel.StatusDiscarded
|
||||
)
|
||||
|
||||
var defaultRemindDays = expirymodel.DefaultRemindDays
|
||||
|
||||
type ExpiryItem = expirymodel.ExpiryItem
|
||||
type ExpiryUserSettings = expirymodel.ExpiryUserSettings
|
||||
|
||||
type Repository = expiryrepo.Repository
|
||||
type Service = expiryservice.Service
|
||||
type Handler = expiryhandler.Handler
|
||||
type SummaryCache = expiryservice.SummaryCache
|
||||
|
||||
type CreateItemRequest = expiryservice.CreateItemRequest
|
||||
type UpdateItemRequest = expiryservice.UpdateItemRequest
|
||||
type ItemFilters = expiryservice.ItemFilters
|
||||
type ItemView = expiryservice.ItemView
|
||||
type ItemListResponse = expiryservice.ItemListResponse
|
||||
type SummaryResponse = expiryservice.SummaryResponse
|
||||
type SettingsResponse = expiryservice.SettingsResponse
|
||||
|
||||
var (
|
||||
ErrExpiryItemNotFound = expiryrepo.ErrExpiryItemNotFound
|
||||
|
||||
ErrExpiryNameInvalid = expiryservice.ErrExpiryNameInvalid
|
||||
ErrExpiryCategoryInvalid = expiryservice.ErrExpiryCategoryInvalid
|
||||
ErrExpiryMiniProgramRequired = expiryservice.ErrExpiryMiniProgramRequired
|
||||
ErrExpiryQuantityInvalid = expiryservice.ErrExpiryQuantityInvalid
|
||||
ErrExpiryLocationTooLong = expiryservice.ErrExpiryLocationTooLong
|
||||
ErrExpiryRemarkTooLong = expiryservice.ErrExpiryRemarkTooLong
|
||||
ErrExpiryDateRequired = expiryservice.ErrExpiryDateRequired
|
||||
ErrExpiryShelfLifeDaysInvalid = expiryservice.ErrExpiryShelfLifeDaysInvalid
|
||||
ErrExpiryFilterStatusInvalid = expiryservice.ErrExpiryFilterStatusInvalid
|
||||
ErrExpiryFilterCategoryInvalid = expiryservice.ErrExpiryFilterCategoryInvalid
|
||||
ErrExpiryFilterSortInvalid = expiryservice.ErrExpiryFilterSortInvalid
|
||||
ErrExpiryStatusInvalid = expiryservice.ErrExpiryStatusInvalid
|
||||
ErrExpiryRemindDaysInvalid = expiryservice.ErrExpiryRemindDaysInvalid
|
||||
)
|
||||
|
||||
func NewRepository(db *gorm.DB) *Repository {
|
||||
return expiryrepo.NewRepository(db)
|
||||
}
|
||||
|
||||
func NewService(repo *Repository) *Service {
|
||||
return expiryservice.NewService(repo)
|
||||
}
|
||||
|
||||
func NewHandler(service *Service) *Handler {
|
||||
return expiryhandler.NewHandler(service)
|
||||
}
|
||||
|
||||
func NewSummaryCache(rc *redis.Client, keyPrefix string, ttl time.Duration) *SummaryCache {
|
||||
return expiryservice.NewSummaryCache(rc, keyPrefix, ttl)
|
||||
}
|
||||
|
||||
func dateOnly(t time.Time) time.Time {
|
||||
return expirymodel.DateOnly(t)
|
||||
}
|
||||
|
||||
func normalizeFilters(filters ItemFilters) ItemFilters {
|
||||
return expiryservice.NormalizeFilters(filters)
|
||||
}
|
||||
|
||||
func validateFilters(filters ItemFilters) error {
|
||||
return expiryservice.ValidateFilters(filters)
|
||||
}
|
||||
|
||||
func validateBaseFields(name, category string, quantity int, location, remark string) error {
|
||||
return expiryservice.ValidateBaseFields(name, category, quantity, location, remark)
|
||||
}
|
||||
|
||||
func applyExpiryDate(item *ExpiryItem, expiryDate *time.Time, shelfLifeDays *int) error {
|
||||
return expiryservice.ApplyExpiryDate(item, expiryDate, shelfLifeDays)
|
||||
}
|
||||
|
||||
func isValidCategory(category string) bool {
|
||||
return expiryservice.IsValidCategory(category)
|
||||
}
|
||||
|
||||
func validateRemindDays(days []int) ([]int, error) {
|
||||
return expiryservice.ValidateRemindDays(days)
|
||||
}
|
||||
|
||||
func toItemView(item ExpiryItem) ItemView {
|
||||
return expiryservice.ToItemView(item)
|
||||
}
|
||||
|
||||
func writeExpirySuccess(c *gin.Context, message string, data interface{}) {
|
||||
resp := gin.H{
|
||||
"code": 0,
|
||||
"message": message,
|
||||
}
|
||||
if data != nil {
|
||||
resp["data"] = data
|
||||
}
|
||||
c.JSON(200, resp)
|
||||
}
|
||||
|
||||
func writeExpiryError(c *gin.Context, code int, message string) {
|
||||
c.JSON(code, gin.H{
|
||||
"code": code,
|
||||
"message": message,
|
||||
})
|
||||
}
|
||||
|
||||
func writeExpiryServerError(c *gin.Context) {
|
||||
writeExpiryError(c, 500, "服务器错误")
|
||||
}
|
||||
Reference in New Issue
Block a user