package merchant import ( "eta/eta_mini_ht_api/common/utils/page" "eta/eta_mini_ht_api/models/merchant" "time" ) type UserAccessDTO struct { ID int TemplateUserId int ProductID int ProductType string } func convertToUserAccessDTO(userSubscriptionAccessList merchant.UserSubscriptionAccessList) UserAccessDTO { return UserAccessDTO{ ID: userSubscriptionAccessList.ID, TemplateUserId: userSubscriptionAccessList.TemplateUserId, ProductID: userSubscriptionAccessList.ProductID, ProductType: userSubscriptionAccessList.ProductType, } } func OpenProduct(templateUserId int, productOrderNo string, product MerchantProductDTO) error { userAccess := merchant.UserSubscriptionAccessList{ TemplateUserId: templateUserId, ProductID: product.Id, ProductName: product.Title, ProductType: product.Type, BeginDate: time.Now(), Status: merchant.SubscribeValid, ProductOrderNo: productOrderNo, } if !product.IsPermanent { userAccess.EndDate = time.Now().Add(time.Duration(product.ValidDays) * 24 * time.Hour) } return merchant.InsertOrUpdateUserSubscribe(userAccess) } func CloseProduct(templateUserId int, productOrderNo string, product MerchantProductDTO) error { userAccess := merchant.UserSubscriptionAccessList{ TemplateUserId: templateUserId, ProductID: product.Id, ProductName: product.Title, ProductType: product.Type, Status: merchant.SubscribeClose, ProductOrderNo: productOrderNo, } return merchant.CloseUserAccess(userAccess) } func SubscribeList(templateUserId int, productType string, pageInfo page.PageInfo) (list []UserAccessDTO, err error) { offset := page.StartIndex(pageInfo.Current, pageInfo.PageSize) var subscribeList []merchant.UserSubscriptionAccessList subscribeList, err = merchant.SubscribeList(templateUserId, productType, pageInfo.LatestId, offset, pageInfo.PageSize) if err != nil { return } for _, userSubscriptionAccessList := range subscribeList { list = append(list, convertToUserAccessDTO(userSubscriptionAccessList)) } return } func GetTotalUserPageCountByProductType(productType string, id int) (int64, int64) { return merchant.GetTotalUserPageCountByProductType(productType, id) }