123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- package repository
- import (
- "context"
- v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
- "github.com/go-nunu/nunu-layout-advanced/internal/model"
- "time"
- )
- type HostRepository interface {
- GetHost(ctx context.Context, id int64) (*model.Host, error)
- GetHostConfig(ctx context.Context, hostId int) ([]*model.Host, error)
- GetProductConfigOption(ctx context.Context, id []int) ([]v1.ProductConfigOption, error)
- GetProductConfigOptionSub(ctx context.Context, id []int) ([]v1.ProductConfigOptionSub, error)
- GetDomainById(ctx context.Context, id int) (string, error)
- // 获取指定用户指定套餐的到期时间
- GetExpireTime(ctx context.Context, uid int64, hostId int64) (string, error)
- // 获取指定到期时间
- GetAlmostExpired(ctx context.Context, hostId []int,addTime int64) ([]v1.GetAlmostExpireHostResponse, error)
- // 获取到期时间区间
- GetExpireTimeRange(ctx context.Context,startTime int64,endTime int64) (int64, error)
- // 获取指定套餐的到期时间
- GetExpireTimeByHostId(ctx context.Context, hostIds []int64) ([]v1.GetAlmostExpireHostResponse, error)
- }
- func NewHostRepository(
- repository *Repository,
- ) HostRepository {
- return &hostRepository{
- Repository: repository,
- }
- }
- type hostRepository struct {
- *Repository
- }
- func (r *hostRepository) GetHost(ctx context.Context, id int64) (*model.Host, error) {
- var host model.Host
- return &host, nil
- }
- func (r *hostRepository) GetHostConfig(ctx context.Context, hostId int) ([]*model.Host, error) {
- var res []*model.Host
- if err := r.DB(ctx).Where("relid = ?", hostId).Find(&res).Error; err != nil {
- return nil, err
- }
- return res, nil
- }
- func (r *hostRepository) GetProductConfigOption(ctx context.Context, id []int) ([]v1.ProductConfigOption, error) {
- var res []v1.ProductConfigOption
- if err := r.DB(ctx).Table("shd_product_config_options").Where("id IN ?", id).Find(&res).Error; err != nil {
- return nil, err
- }
- return res, nil
- }
- func (r *hostRepository) GetProductConfigOptionSub(ctx context.Context, id []int) ([]v1.ProductConfigOptionSub, error) {
- var res []v1.ProductConfigOptionSub
- if err := r.DB(ctx).Table("shd_product_config_options_sub").Where("id IN ?", id).Find(&res).Error; err != nil {
- return nil, err
- }
- return res, nil
- }
- func (r *hostRepository) GetDomainById(ctx context.Context, id int) (string, error) {
- var res string
- if err := r.DB(ctx).Table("shd_host").
- Where("id = ?", id).
- Pluck("domain", &res).Error; err != nil {
- return "", err
- }
- return res, nil
- }
- // 获取到期时间
- func (r *hostRepository) GetExpireTime(ctx context.Context, uid int64, hostId int64) (string, error) {
- var nextDueDate string
- err := r.DB(ctx).Table("shd_host").
- Select("nextduedate").
- Where("id = ?", hostId).
- Where("uid = ?", uid).
- Scan(&nextDueDate).Error
- if err != nil {
- return "", err
- }
- return nextDueDate, nil
- }
- // 获取指定到期时间
- func (r *hostRepository) GetAlmostExpired(ctx context.Context, hostId []int,addTime int64) ([]v1.GetAlmostExpireHostResponse, error) {
- var res []v1.GetAlmostExpireHostResponse
- expiredTime := time.Now().Unix() + addTime
- if err := r.DB(ctx).Table("shd_host").
- Where("id IN ?", hostId).
- Where("nextduedate < ?", expiredTime).
- Select("id", "nextduedate").
- Scan(&res).Error; err != nil {
- return nil, err
- }
- return res, nil
- }
- // 获取到期时间区间
- func (r *hostRepository) GetExpireTimeRange(ctx context.Context,startTime int64,endTime int64) (int64, error) {
- var res int64
- if err := r.DB(ctx).Table("shd_host").
- Where("nextduedate > ?", startTime).
- Where("nextduedate < ?", endTime).
- Count(&res).Error; err != nil {
- return 0, err
- }
- return res, nil
- }
- // 获取指定套餐的到期时间
- func (r *hostRepository) GetExpireTimeByHostId(ctx context.Context, hostIds []int64) ([]v1.GetAlmostExpireHostResponse, error) {
- var res []v1.GetAlmostExpireHostResponse
- if err := r.DB(ctx).Table("shd_host").
- Where("id IN ?", hostIds).
- Select("id,nextduedate").
- Scan(&res).Error; err != nil {
- return nil, err
- }
- return res, nil
- }
|