Files

134 lines
4.1 KiB
Go

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, "服务器错误")
}