xuzhiheng 4 vuotta sitten
vanhempi
commit
f344a23851
2 muutettua tiedostoa jossa 13 lisäystä ja 12 poistoa
  1. 5 4
      model/product.go
  2. 8 8
      utils/cost_by_account_balance.go

+ 5 - 4
model/product.go

@@ -31,7 +31,8 @@ type UserProduct struct {
 	InterfaceStatus      int       `json:"interface_status"`         //接口状态(0开启|-1停用|-2异常|-3维护)
 	CallTimesLimitDay    int       `json:"call_times_limit_day"`     //接口调用次数每日上限
 	DataNumLimitOneTimes int       `json:"data_num_limit_one_times"` //接口每次返回数据量上限
-	UpdateAt             time.Time `json:"-" gorm:"autoUpdateTime"`
+	UpdateAt             time.Time `json:"-" gorm:"autoUpdateTime"`  //更新时间
+	Discount             int       `json:"discount"`                 //用户产品折扣
 }
 
 func (p *UserProduct) TableName() string {
@@ -42,16 +43,16 @@ type UserProductModel struct {
 	ID                   int       `json:"id" gorm:"primaryKey"`
 	AppID                string    `json:"app_id"`
 	ProductID            int       `json:"product_id"`
-	CreateAt             time.Time `json:"-" gorm:"autoCreateTime"` //标签autoCreateTime设置如果字段名字不为CreatAt时候自动插入当前时间
+	CreateAt             time.Time `json:"-" gorm:"autoCreateTime"`  //标签autoCreateTime设置如果字段名字不为CreatAt时候自动插入当前时间
 	CostModel            int       `json:"cost_model"`               //扣费模式(0-按剩余量扣,1-按账户余额扣,2-优先扣剩余量,量为0扣余额)
 	LeftNum              int       `json:"left_num"`                 //剩余量  加锁处理
 	InterfaceStatus      int       `json:"interface_status"`         //接口状态(0开启|-1停用|-2异常|-3维护)
 	CallTimesLimitDay    int       `json:"call_times_limit_day"`     //接口调用次数每日上限
 	DataNumLimitOneTimes int       `json:"data_num_limit_one_times"` //接口每次返回数据量上限
-	UpdateAt             time.Time `json:"-" gorm:"autoUpdateTime"`
+	UpdateAt             time.Time `json:"-" gorm:"autoUpdateTime"`  //更新时间
+	Discount             int       `json:"discount"`                 //用户产品折扣
 }
 
 func (p *UserProductModel) TableName() string {
 	return "user_product"
 }
-

+ 8 - 8
utils/cost_by_account_balance.go

@@ -60,22 +60,22 @@ func costByAccountBalance(getData func() ([]map[string]interface{}, int, error),
 func beforeCheck(productType, unitPrice, dataLen int, userProduct *model.UserProduct) (bool, int) {
 	userAccount := &model.UserAccount{}
 	db.GetSFISDB().First(userAccount, &model.UserAccount{AppID: userProduct.AppID})
-	money := 0
+	money := float64(0)
 	switch productType {
 	case 0:
-		money = unitPrice
+		money = float64(unitPrice) / 10 * float64(userProduct.Discount)
 		//按次扣费-判断left_num
-		if money > userAccount.Money {
-			return false, money
+		if money > float64(userAccount.Money) {
+			return false, int(money)
 		}
 	case 1:
-		money = unitPrice * dataLen
+		money = (float64(unitPrice) / 10 * float64(userProduct.Discount)) * float64(dataLen)
 		//按条扣费-判断单次调用的limit
-		if money > userAccount.Money {
-			return false, money
+		if money > float64(userAccount.Money) {
+			return false, int(money)
 		}
 	}
-	return true, money
+	return true, int(money)
 }
 
 func afterCheck(dataLen, payMoney int, userProduct *model.UserProduct, statusCode int, param, ip string) (string, error) {