mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-15 17:33:51 +08:00
feat: change Subscription's StartTime and EndTime to string
This commit is contained in:
@ -103,7 +103,7 @@ func GetDashboard(owner string) (*map[string][]int64, error) {
|
|||||||
func countCreatedBefore(dashboardMapItem DashboardMapItem, before time.Time) int64 {
|
func countCreatedBefore(dashboardMapItem DashboardMapItem, before time.Time) int64 {
|
||||||
count := dashboardMapItem.itemCount
|
count := dashboardMapItem.itemCount
|
||||||
for _, e := range dashboardMapItem.dashboardDateItems {
|
for _, e := range dashboardMapItem.dashboardDateItems {
|
||||||
createdTime, _ := time.Parse("2006-01-02T15:04:05-07:00", e.CreatedTime)
|
createdTime, _ := time.Parse(time.RFC3339, e.CreatedTime)
|
||||||
if createdTime.Before(before) {
|
if createdTime.Before(before) {
|
||||||
count++
|
count++
|
||||||
}
|
}
|
||||||
|
@ -49,17 +49,21 @@ func (plan *Plan) GetId() string {
|
|||||||
return fmt.Sprintf("%s/%s", plan.Owner, plan.Name)
|
return fmt.Sprintf("%s/%s", plan.Owner, plan.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetDuration(period string) (startTime time.Time, endTime time.Time) {
|
func getDuration(period string) (string, string, error) {
|
||||||
|
startTime := time.Now()
|
||||||
|
var endTime time.Time
|
||||||
|
|
||||||
if period == PeriodYearly {
|
if period == PeriodYearly {
|
||||||
startTime = time.Now()
|
|
||||||
endTime = startTime.AddDate(1, 0, 0)
|
endTime = startTime.AddDate(1, 0, 0)
|
||||||
} else if period == PeriodMonthly {
|
} else if period == PeriodMonthly {
|
||||||
startTime = time.Now()
|
|
||||||
endTime = startTime.AddDate(0, 1, 0)
|
endTime = startTime.AddDate(0, 1, 0)
|
||||||
} else {
|
} else {
|
||||||
panic(fmt.Sprintf("invalid period: %s", period))
|
return "", "", fmt.Errorf("invalid period: %s", period)
|
||||||
}
|
}
|
||||||
return
|
|
||||||
|
startTimeString := startTime.Format(time.RFC3339)
|
||||||
|
endTimeString := endTime.Format(time.RFC3339)
|
||||||
|
return startTimeString, endTimeString, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetPlanCount(owner, field, value string) (int64, error) {
|
func GetPlanCount(owner, field, value string) (int64, error) {
|
||||||
|
@ -206,11 +206,17 @@ func BuyProduct(id string, user *User, providerName, pricingName, planName, host
|
|||||||
if plan == nil {
|
if plan == nil {
|
||||||
return nil, nil, fmt.Errorf("the plan: %s does not exist", planName)
|
return nil, nil, fmt.Errorf("the plan: %s does not exist", planName)
|
||||||
}
|
}
|
||||||
sub := NewSubscription(owner, user.Name, plan.Name, paymentName, plan.Period)
|
|
||||||
|
sub, err := NewSubscription(owner, user.Name, plan.Name, paymentName, plan.Period)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
_, err = AddSubscription(sub)
|
_, err = AddSubscription(sub)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
returnUrl = fmt.Sprintf("%s/buy-plan/%s/%s/result?subscription=%s", originFrontend, owner, pricingName, sub.Name)
|
returnUrl = fmt.Sprintf("%s/buy-plan/%s/%s/result?subscription=%s", originFrontend, owner, pricingName, sub.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,8 +48,8 @@ type Subscription struct {
|
|||||||
Plan string `xorm:"varchar(100)" json:"plan"`
|
Plan string `xorm:"varchar(100)" json:"plan"`
|
||||||
Payment string `xorm:"varchar(100)" json:"payment"`
|
Payment string `xorm:"varchar(100)" json:"payment"`
|
||||||
|
|
||||||
StartTime time.Time `json:"startTime"`
|
StartTime string `xorm:"varchar(100)" json:"startTime"`
|
||||||
EndTime time.Time `json:"endTime"`
|
EndTime string `xorm:"varchar(100)" json:"endTime"`
|
||||||
Period string `xorm:"varchar(100)" json:"period"`
|
Period string `xorm:"varchar(100)" json:"period"`
|
||||||
State SubscriptionState `xorm:"varchar(100)" json:"state"`
|
State SubscriptionState `xorm:"varchar(100)" json:"state"`
|
||||||
}
|
}
|
||||||
@ -84,9 +84,19 @@ func (sub *Subscription) UpdateState() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if sub.State == SubStateActive || sub.State == SubStateUpcoming || sub.State == SubStateExpired {
|
if sub.State == SubStateActive || sub.State == SubStateUpcoming || sub.State == SubStateExpired {
|
||||||
if sub.EndTime.Before(time.Now()) {
|
startTime, err := time.Parse(time.RFC3339, sub.StartTime)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
endTime, err := time.Parse(time.RFC3339, sub.EndTime)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if endTime.Before(time.Now()) {
|
||||||
sub.State = SubStateExpired
|
sub.State = SubStateExpired
|
||||||
} else if sub.StartTime.After(time.Now()) {
|
} else if startTime.After(time.Now()) {
|
||||||
sub.State = SubStateUpcoming
|
sub.State = SubStateUpcoming
|
||||||
} else {
|
} else {
|
||||||
sub.State = SubStateActive
|
sub.State = SubStateActive
|
||||||
@ -103,10 +113,15 @@ func (sub *Subscription) UpdateState() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewSubscription(owner, userName, planName, paymentName, period string) *Subscription {
|
func NewSubscription(owner, userName, planName, paymentName, period string) (*Subscription, error) {
|
||||||
startTime, endTime := GetDuration(period)
|
startTime, endTime, err := getDuration(period)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
id := util.GenerateId()[:6]
|
id := util.GenerateId()[:6]
|
||||||
return &Subscription{
|
|
||||||
|
res := &Subscription{
|
||||||
Owner: owner,
|
Owner: owner,
|
||||||
Name: "sub_" + id,
|
Name: "sub_" + id,
|
||||||
DisplayName: "New Subscription - " + id,
|
DisplayName: "New Subscription - " + id,
|
||||||
@ -121,6 +136,7 @@ func NewSubscription(owner, userName, planName, paymentName, period string) *Sub
|
|||||||
Period: period,
|
Period: period,
|
||||||
State: SubStatePending, // waiting for payment complete
|
State: SubStatePending, // waiting for payment complete
|
||||||
}
|
}
|
||||||
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSubscriptionCount(owner, field, value string) (int64, error) {
|
func GetSubscriptionCount(owner, field, value string) (int64, error) {
|
||||||
|
Reference in New Issue
Block a user