user_access_service.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package merchant
  2. import (
  3. "eta/eta_mini_ht_api/common/utils/page"
  4. "eta/eta_mini_ht_api/models/merchant"
  5. "time"
  6. )
  7. type UserAccessDTO struct {
  8. ID int
  9. TemplateUserId int
  10. ProductID int
  11. ProductType string
  12. }
  13. func convertToUserAccessDTO(userSubscriptionAccessList merchant.UserSubscriptionAccessList) UserAccessDTO {
  14. return UserAccessDTO{
  15. ID: userSubscriptionAccessList.ID,
  16. TemplateUserId: userSubscriptionAccessList.TemplateUserId,
  17. ProductID: userSubscriptionAccessList.ProductID,
  18. ProductType: userSubscriptionAccessList.ProductType,
  19. }
  20. }
  21. func OpenProduct(templateUserId int, productOrderNo string, product MerchantProductDTO) error {
  22. userAccess := merchant.UserSubscriptionAccessList{
  23. TemplateUserId: templateUserId,
  24. ProductID: product.Id,
  25. ProductName: product.Title,
  26. ProductType: product.Type,
  27. BeginDate: time.Now(),
  28. Status: merchant.SubscribeValid,
  29. ProductOrderNo: productOrderNo,
  30. }
  31. if !product.IsPermanent {
  32. userAccess.EndDate = time.Now().Add(time.Duration(product.ValidDays) * 24 * time.Hour)
  33. }
  34. return merchant.InsertOrUpdateUserSubscribe(userAccess)
  35. }
  36. func CloseProduct(templateUserId int, productOrderNo string, product MerchantProductDTO) error {
  37. userAccess := merchant.UserSubscriptionAccessList{
  38. TemplateUserId: templateUserId,
  39. ProductID: product.Id,
  40. ProductName: product.Title,
  41. ProductType: product.Type,
  42. Status: merchant.SubscribeClose,
  43. ProductOrderNo: productOrderNo,
  44. }
  45. return merchant.CloseUserAccess(userAccess)
  46. }
  47. func SubscribeList(templateUserId int, productType string, pageInfo page.PageInfo) (list []UserAccessDTO, err error) {
  48. offset := page.StartIndex(pageInfo.Current, pageInfo.PageSize)
  49. var subscribeList []merchant.UserSubscriptionAccessList
  50. subscribeList, err = merchant.SubscribeList(templateUserId, productType, pageInfo.LatestId, offset, pageInfo.PageSize)
  51. if err != nil {
  52. return
  53. }
  54. for _, userSubscriptionAccessList := range subscribeList {
  55. list = append(list, convertToUserAccessDTO(userSubscriptionAccessList))
  56. }
  57. return
  58. }
  59. func GetTotalUserPageCountByProductType(productType string, id int) (int64, int64) {
  60. return merchant.GetTotalUserPageCountByProductType(productType, id)
  61. }