完善购买和套餐功能
This commit is contained in:
@@ -325,7 +325,8 @@ func (c *BackendProductPurchaseController) GetMyOrders() {
|
||||
// GetPackageList GET /backend/package/list
|
||||
// 租户端可购买套餐列表(仅启用的套餐)
|
||||
func (c *BackendProductPurchaseController) GetPackageList() {
|
||||
if _, err := c.claims(); err != nil {
|
||||
claims, err := c.claims()
|
||||
if err != nil {
|
||||
c.jsonErr(401, 401, err.Error())
|
||||
return
|
||||
}
|
||||
@@ -345,6 +346,22 @@ func (c *BackendProductPurchaseController) GetPackageList() {
|
||||
}
|
||||
moduleMap := loadPackageModules(ids)
|
||||
|
||||
// 该租户已购买过(已支付/已开通)的套餐:用于前端对「仅可购买一次」的体验套餐禁用购买按钮
|
||||
purchased := map[uint64]bool{}
|
||||
if tid := uint64(claims.TenantId); tid > 0 && len(ids) > 0 {
|
||||
var orders []models.PlatformProductOrder
|
||||
if _, err := models.Orm.QueryTable(new(models.PlatformProductOrder)).
|
||||
Filter("tid", tid).
|
||||
Filter("package_id__in", ids).
|
||||
Filter("status__in", models.ProductOrderStatusPaid, models.ProductOrderStatusActivated).
|
||||
Filter("delete_time__isnull", true).
|
||||
All(&orders, "ID", "PackageID"); err == nil {
|
||||
for _, o := range orders {
|
||||
purchased[o.PackageID] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list := make([]map[string]interface{}, 0, len(rows))
|
||||
for _, r := range rows {
|
||||
modules := moduleMap[r.ID]
|
||||
@@ -361,6 +378,8 @@ func (c *BackendProductPurchaseController) GetPackageList() {
|
||||
"user_quota": r.UserQuota,
|
||||
"extra_user_price": r.ExtraUserPrice,
|
||||
"is_default": r.IsDefault,
|
||||
"allow_repurchase": r.AllowRepurchase,
|
||||
"purchased": purchased[r.ID],
|
||||
"sort": r.Sort,
|
||||
"status": r.Status,
|
||||
"remark": r.Remark,
|
||||
@@ -466,6 +485,19 @@ func (c *BackendProductPurchaseController) CreatePackageOrder() {
|
||||
c.jsonErr(400, 400, "该套餐未配置价格,请联系平台")
|
||||
return
|
||||
}
|
||||
// 体验套餐(allow_repurchase=0):每个租户仅可购买一次
|
||||
if pkg.AllowRepurchase == 0 {
|
||||
cnt, _ := models.Orm.QueryTable(new(models.PlatformProductOrder)).
|
||||
Filter("tid", tid).
|
||||
Filter("package_id", pkg.ID).
|
||||
Filter("status__in", models.ProductOrderStatusPaid, models.ProductOrderStatusActivated).
|
||||
Filter("delete_time__isnull", true).
|
||||
Count()
|
||||
if cnt > 0 {
|
||||
c.jsonErr(400, 400, "该套餐为体验套餐,每个租户仅可购买一次")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
order := &models.PlatformProductOrder{
|
||||
|
||||
Reference in New Issue
Block a user