|
@@ -1,14 +1,18 @@
|
|
package product
|
|
package product
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "app.yhyue.com/moapp/jybase/common"
|
|
"context"
|
|
"context"
|
|
"fmt"
|
|
"fmt"
|
|
"github.com/gogf/gf/v2/database/gdb"
|
|
"github.com/gogf/gf/v2/database/gdb"
|
|
|
|
+ "github.com/gogf/gf/v2/errors/gcode"
|
|
|
|
+ "github.com/gogf/gf/v2/errors/gerror"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
"github.com/pkg/errors"
|
|
"github.com/pkg/errors"
|
|
"jyOrderManager/internal/jyutil"
|
|
"jyOrderManager/internal/jyutil"
|
|
"jyOrderManager/internal/model"
|
|
"jyOrderManager/internal/model"
|
|
|
|
+ "jyOrderManager/internal/service"
|
|
"math"
|
|
"math"
|
|
"time"
|
|
"time"
|
|
)
|
|
)
|
|
@@ -117,8 +121,8 @@ type ProductPricing struct {
|
|
EntAccount int64 `json:"entAccount"` //企业账号费用
|
|
EntAccount int64 `json:"entAccount"` //企业账号费用
|
|
}
|
|
}
|
|
|
|
|
|
-// UnityPrice 计费
|
|
|
|
-func (ps NewPriceSetting) UnityPrice(num, cycleType, subAccount, price int, isEnt bool, sType ...string) int64 {
|
|
|
|
|
|
+// UnityPrice 计费 ((主账号+子账号价格)/折合成月 - 升级差价)*月份
|
|
|
|
+func (ps NewPriceSetting) UnityPrice(num float64, cycleType, subAccount int, diffPrice float64, isEnt bool, sType ...string) int64 {
|
|
switch cycleType { // 类型 1天 2月 3年 4季度
|
|
switch cycleType { // 类型 1天 2月 3年 4季度
|
|
case 1:
|
|
case 1:
|
|
//查找在哪个分类中
|
|
//查找在哪个分类中
|
|
@@ -130,22 +134,30 @@ func (ps NewPriceSetting) UnityPrice(num, cycleType, subAccount, price int, isEn
|
|
subPrice = gconv.Float64(pricing.Account)
|
|
subPrice = gconv.Float64(pricing.Account)
|
|
}
|
|
}
|
|
var newPrice float64
|
|
var newPrice float64
|
|
- if price != 0 {
|
|
|
|
- newPrice = gconv.Float64(price)
|
|
|
|
- } else {
|
|
|
|
|
|
+ if len(sType) == 0 { //升级服务 只升级账号费用
|
|
newPrice = gconv.Float64(pricing.Price)
|
|
newPrice = gconv.Float64(pricing.Price)
|
|
}
|
|
}
|
|
switch pricing.TimeType { // 类型 1月 2年 3季度
|
|
switch pricing.TimeType { // 类型 1月 2年 3季度
|
|
case 1: //
|
|
case 1: //
|
|
if float64(num)/30 >= gconv.Float64(pricing.Min) && float64(num)/30 < float64(pricing.Max) {
|
|
if float64(num)/30 >= gconv.Float64(pricing.Min) && float64(num)/30 < float64(pricing.Max) {
|
|
|
|
+ //((主账号+子账号价格)/折合成月 - 升级差价)*月份
|
|
|
|
+ if diffPrice != 0 {
|
|
|
|
+ return gconv.Int64(math.Floor(((newPrice+subPrice*gconv.Float64(subAccount))/float64(pricing.Unit) - diffPrice) * (float64(num) / 30)))
|
|
|
|
+ }
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / (float64(num) / 30))))
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / (float64(num) / 30))))
|
|
}
|
|
}
|
|
case 2:
|
|
case 2:
|
|
if float64(num)/360 >= gconv.Float64(pricing.Min) && float64(num)/360 < float64(pricing.Max) {
|
|
if float64(num)/360 >= gconv.Float64(pricing.Min) && float64(num)/360 < float64(pricing.Max) {
|
|
|
|
+ if diffPrice != 0 {
|
|
|
|
+ return gconv.Int64(math.Floor(((newPrice+subPrice*gconv.Float64(subAccount))/float64(pricing.Unit) - diffPrice) * (float64(num) / 30)))
|
|
|
|
+ }
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / (float64(num) / 30))))
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / (float64(num) / 30))))
|
|
}
|
|
}
|
|
case 3:
|
|
case 3:
|
|
if float64(num)/90 >= gconv.Float64(pricing.Min) && float64(num)/90 < float64(pricing.Max) {
|
|
if float64(num)/90 >= gconv.Float64(pricing.Min) && float64(num)/90 < float64(pricing.Max) {
|
|
|
|
+ if diffPrice != 0 {
|
|
|
|
+ return gconv.Int64(math.Floor(((newPrice+subPrice*gconv.Float64(subAccount))/float64(pricing.Unit) - diffPrice) * (float64(num) / 30)))
|
|
|
|
+ }
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / (float64(num) / 30))))
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / (float64(num) / 30))))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -161,23 +173,28 @@ func (ps NewPriceSetting) UnityPrice(num, cycleType, subAccount, price int, isEn
|
|
}
|
|
}
|
|
var newPrice float64
|
|
var newPrice float64
|
|
if len(sType) == 0 { //升级服务 只升级账号费用
|
|
if len(sType) == 0 { //升级服务 只升级账号费用
|
|
- if price != 0 {
|
|
|
|
- newPrice = gconv.Float64(price)
|
|
|
|
- } else {
|
|
|
|
- newPrice = gconv.Float64(pricing.Price)
|
|
|
|
- }
|
|
|
|
|
|
+ newPrice = gconv.Float64(pricing.Price)
|
|
}
|
|
}
|
|
switch pricing.TimeType { // 类型 1月 2年
|
|
switch pricing.TimeType { // 类型 1月 2年
|
|
case 1: //
|
|
case 1: //
|
|
- if num >= pricing.Min && num < pricing.Max {
|
|
|
|
|
|
+ if num >= gconv.Float64(pricing.Min) && num < gconv.Float64(pricing.Max) {
|
|
|
|
+ if diffPrice != 0 {
|
|
|
|
+ return gconv.Int64(math.Floor(((newPrice+subPrice*gconv.Float64(subAccount))/float64(pricing.Unit) - diffPrice) * float64(num)))
|
|
|
|
+ }
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num))))
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num))))
|
|
}
|
|
}
|
|
case 2:
|
|
case 2:
|
|
- if float64(num/12) >= gconv.Float64(pricing.Min) && float64(num/12) < float64(pricing.Max) {
|
|
|
|
|
|
+ if num/12 >= gconv.Float64(pricing.Min) && num/12 < float64(pricing.Max) {
|
|
|
|
+ if diffPrice != 0 {
|
|
|
|
+ return gconv.Int64(math.Floor(((newPrice+subPrice*gconv.Float64(subAccount))/float64(pricing.Unit) - diffPrice) * float64(num)))
|
|
|
|
+ }
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num))))
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num))))
|
|
}
|
|
}
|
|
case 3:
|
|
case 3:
|
|
if float64(num)/3 >= gconv.Float64(pricing.Min) && float64(num)/3 < float64(pricing.Max) {
|
|
if float64(num)/3 >= gconv.Float64(pricing.Min) && float64(num)/3 < float64(pricing.Max) {
|
|
|
|
+ if diffPrice != 0 {
|
|
|
|
+ return gconv.Int64(math.Floor(((newPrice+subPrice*gconv.Float64(subAccount))/float64(pricing.Unit) - diffPrice) * float64(num)))
|
|
|
|
+ }
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num))))
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num))))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -192,18 +209,22 @@ func (ps NewPriceSetting) UnityPrice(num, cycleType, subAccount, price int, isEn
|
|
subPrice = gconv.Float64(pricing.Account)
|
|
subPrice = gconv.Float64(pricing.Account)
|
|
}
|
|
}
|
|
var newPrice float64
|
|
var newPrice float64
|
|
- if price != 0 {
|
|
|
|
- newPrice = gconv.Float64(price)
|
|
|
|
- } else {
|
|
|
|
|
|
+ if len(sType) == 0 { //升级服务 只升级账号费用
|
|
newPrice = gconv.Float64(pricing.Price)
|
|
newPrice = gconv.Float64(pricing.Price)
|
|
}
|
|
}
|
|
switch pricing.TimeType { // 类型 1月 2年
|
|
switch pricing.TimeType { // 类型 1月 2年
|
|
case 1: //
|
|
case 1: //
|
|
- if num*12 >= pricing.Min && num*12 < pricing.Max {
|
|
|
|
|
|
+ if num*12 >= gconv.Float64(pricing.Min) && num*12 < gconv.Float64(pricing.Max) {
|
|
|
|
+ if diffPrice != 0 {
|
|
|
|
+ return gconv.Int64(math.Floor(((newPrice+subPrice*gconv.Float64(subAccount))/float64(pricing.Unit) - diffPrice) * float64(num*12)))
|
|
|
|
+ }
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num*12))))
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num*12))))
|
|
}
|
|
}
|
|
case 2:
|
|
case 2:
|
|
- if float64(num) >= gconv.Float64(pricing.Min) && float64(num) < float64(pricing.Max) {
|
|
|
|
|
|
+ if num >= gconv.Float64(pricing.Min) && num < float64(pricing.Max) {
|
|
|
|
+ if diffPrice != 0 {
|
|
|
|
+ return gconv.Int64(math.Floor(((newPrice+subPrice*gconv.Float64(subAccount))/float64(pricing.Unit) - diffPrice) * float64(num*12)))
|
|
|
|
+ }
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num*12))))
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num*12))))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -218,22 +239,29 @@ func (ps NewPriceSetting) UnityPrice(num, cycleType, subAccount, price int, isEn
|
|
subPrice = gconv.Float64(pricing.Account)
|
|
subPrice = gconv.Float64(pricing.Account)
|
|
}
|
|
}
|
|
var newPrice float64
|
|
var newPrice float64
|
|
- if price != 0 {
|
|
|
|
- newPrice = gconv.Float64(price)
|
|
|
|
- } else {
|
|
|
|
|
|
+ if len(sType) == 0 { //升级服务 只升级账号费用
|
|
newPrice = gconv.Float64(pricing.Price)
|
|
newPrice = gconv.Float64(pricing.Price)
|
|
}
|
|
}
|
|
switch pricing.TimeType { // 类型 1月 2年
|
|
switch pricing.TimeType { // 类型 1月 2年
|
|
case 1:
|
|
case 1:
|
|
- if num*3 >= pricing.Min && num*3 < pricing.Max {
|
|
|
|
|
|
+ if num*3 >= gconv.Float64(pricing.Min) && num*3 < gconv.Float64(pricing.Max) {
|
|
|
|
+ if diffPrice != 0 {
|
|
|
|
+ return gconv.Int64(math.Floor(((newPrice+subPrice*gconv.Float64(subAccount))/float64(pricing.Unit) - diffPrice) * float64(num*3)))
|
|
|
|
+ }
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num*3))))
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num*3))))
|
|
}
|
|
}
|
|
case 2: //
|
|
case 2: //
|
|
- if gconv.Float64(num) >= gconv.Float64(pricing.Min) && gconv.Float64(num) < gconv.Float64(pricing.Max) {
|
|
|
|
|
|
+ if gconv.Float64(num/4) >= gconv.Float64(pricing.Min) && gconv.Float64(num/4) < gconv.Float64(pricing.Max) {
|
|
|
|
+ if diffPrice != 0 {
|
|
|
|
+ return gconv.Int64(math.Floor(((newPrice+subPrice*gconv.Float64(subAccount))/float64(pricing.Unit) - diffPrice) * float64(num*3)))
|
|
|
|
+ }
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num*3))))
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num*3))))
|
|
}
|
|
}
|
|
case 3:
|
|
case 3:
|
|
- if float64(num) >= gconv.Float64(pricing.Min) && float64(num) < float64(pricing.Max) {
|
|
|
|
|
|
+ if num >= gconv.Float64(pricing.Min) && num < float64(pricing.Max) {
|
|
|
|
+ if diffPrice != 0 {
|
|
|
|
+ return gconv.Int64(math.Floor(((newPrice+subPrice*gconv.Float64(subAccount))/float64(pricing.Unit) - diffPrice) * float64(num*3)))
|
|
|
|
+ }
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num*3))))
|
|
return gconv.Int64(math.Floor((newPrice + subPrice*gconv.Float64(subAccount)) / (float64(pricing.Unit) / float64(num*3))))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -242,3 +270,155 @@ func (ps NewPriceSetting) UnityPrice(num, cycleType, subAccount, price int, isEn
|
|
|
|
|
|
return 0
|
|
return 0
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+func (ps NewPriceSetting) MonthlyUnitPrice(num float64, cycleType int, isEnt bool) (month, mPrice, sPrice float64) {
|
|
|
|
+ switch cycleType { // 类型 1天 2月 3年 4季度
|
|
|
|
+ case 1:
|
|
|
|
+ //查找在哪个分类中
|
|
|
|
+ for _, pricing := range ps.PrPi {
|
|
|
|
+ var subPrice float64
|
|
|
|
+ if isEnt {
|
|
|
|
+ subPrice = gconv.Float64(pricing.EntAccount)
|
|
|
|
+ } else {
|
|
|
|
+ subPrice = gconv.Float64(pricing.Account)
|
|
|
|
+ }
|
|
|
|
+ newPrice := gconv.Float64(pricing.Price)
|
|
|
|
+ switch pricing.TimeType { // 类型 1月 2年 3季度
|
|
|
|
+ case 1: //
|
|
|
|
+ if float64(num)/30 >= gconv.Float64(pricing.Min) && float64(num)/30 < float64(pricing.Max) {
|
|
|
|
+ return float64(num) / 30, newPrice, subPrice
|
|
|
|
+ }
|
|
|
|
+ case 2:
|
|
|
|
+ if num/360 >= gconv.Float64(pricing.Min) && num/360 < float64(pricing.Max) {
|
|
|
|
+ return float64(num) / 30, newPrice / gconv.Float64(pricing.Unit), subPrice / gconv.Float64(pricing.Unit)
|
|
|
|
+ }
|
|
|
|
+ case 3:
|
|
|
|
+ if float64(num)/90 >= gconv.Float64(pricing.Min) && float64(num)/90 < float64(pricing.Max) {
|
|
|
|
+ return float64(num) / 30, newPrice / gconv.Float64(pricing.Unit), subPrice / gconv.Float64(pricing.Unit)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ case 2:
|
|
|
|
+ //查找在哪个分类中
|
|
|
|
+ for _, pricing := range ps.PrPi {
|
|
|
|
+ var subPrice float64
|
|
|
|
+ if isEnt {
|
|
|
|
+ subPrice = gconv.Float64(pricing.EntAccount)
|
|
|
|
+ } else {
|
|
|
|
+ subPrice = gconv.Float64(pricing.Account)
|
|
|
|
+ }
|
|
|
|
+ newPrice := gconv.Float64(pricing.Price)
|
|
|
|
+ switch pricing.TimeType { // 类型 1月 2年
|
|
|
|
+ case 1: //
|
|
|
|
+ if num >= gconv.Float64(pricing.Min) && num < gconv.Float64(pricing.Max) {
|
|
|
|
+ return num, newPrice, subPrice
|
|
|
|
+ }
|
|
|
|
+ case 2:
|
|
|
|
+ if num/12 >= gconv.Float64(pricing.Min) && num/12 < float64(pricing.Max) {
|
|
|
|
+ return num, newPrice / gconv.Float64(pricing.Unit), subPrice / gconv.Float64(pricing.Unit)
|
|
|
|
+ }
|
|
|
|
+ case 3:
|
|
|
|
+ if num/3 >= gconv.Float64(pricing.Min) && num/3 < float64(pricing.Max) {
|
|
|
|
+ return num, newPrice / gconv.Float64(pricing.Unit), subPrice / gconv.Float64(pricing.Unit)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ case 3:
|
|
|
|
+ //查找在哪个分类中
|
|
|
|
+ for _, pricing := range ps.PrPi {
|
|
|
|
+ var subPrice float64
|
|
|
|
+ if isEnt {
|
|
|
|
+ subPrice = gconv.Float64(pricing.EntAccount)
|
|
|
|
+ } else {
|
|
|
|
+ subPrice = gconv.Float64(pricing.Account)
|
|
|
|
+ }
|
|
|
|
+ newPrice := gconv.Float64(pricing.Price)
|
|
|
|
+ switch pricing.TimeType { // 类型 1月 2年
|
|
|
|
+ case 1: //
|
|
|
|
+ if num*12 >= gconv.Float64(pricing.Min) && num*12 < gconv.Float64(pricing.Max) {
|
|
|
|
+ return num * 12, newPrice, subPrice
|
|
|
|
+ }
|
|
|
|
+ case 2:
|
|
|
|
+ if num >= gconv.Float64(pricing.Min) && num < float64(pricing.Max) {
|
|
|
|
+ return num * 12, newPrice / gconv.Float64(pricing.Unit), subPrice / gconv.Float64(pricing.Unit)
|
|
|
|
+ }
|
|
|
|
+ case 3:
|
|
|
|
+ if num*4 >= gconv.Float64(pricing.Min) && num*4 < float64(pricing.Max) {
|
|
|
|
+ return num * 12, newPrice / gconv.Float64(pricing.Unit), subPrice / gconv.Float64(pricing.Unit)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ case 4:
|
|
|
|
+ //查找在哪个分类中
|
|
|
|
+ for _, pricing := range ps.PrPi {
|
|
|
|
+ var subPrice float64
|
|
|
|
+ if isEnt {
|
|
|
|
+ subPrice = gconv.Float64(pricing.EntAccount)
|
|
|
|
+ } else {
|
|
|
|
+ subPrice = gconv.Float64(pricing.Account)
|
|
|
|
+ }
|
|
|
|
+ newPrice := gconv.Float64(pricing.Price)
|
|
|
|
+ switch pricing.TimeType { // 类型 1月 2年
|
|
|
|
+ case 1:
|
|
|
|
+ if num*3 >= gconv.Float64(pricing.Min) && num*3 < gconv.Float64(pricing.Max) {
|
|
|
|
+ return num * 3, newPrice, subPrice
|
|
|
|
+ }
|
|
|
|
+ case 2: //
|
|
|
|
+ if gconv.Float64(num/4) >= gconv.Float64(pricing.Min) && gconv.Float64(num/4) < gconv.Float64(pricing.Max) {
|
|
|
|
+ return num * 3, newPrice / gconv.Float64(pricing.Unit), subPrice / gconv.Float64(pricing.Unit)
|
|
|
|
+ }
|
|
|
|
+ case 3:
|
|
|
|
+ if num >= gconv.Float64(pricing.Min) && num < float64(pricing.Max) {
|
|
|
|
+ return num * 3, newPrice / gconv.Float64(pricing.Unit), subPrice / gconv.Float64(pricing.Unit)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func isTimeFormat(str string) (time.Time, error) {
|
|
|
|
+ tm, err := time.Parse("2006-01-02 15:04:05", str)
|
|
|
|
+ return tm, err
|
|
|
|
+}
|
|
|
|
+func OrderUnitPrice(id int64) (float64, float64, float64, error) {
|
|
|
|
+ data, _ := g.DB().GetOne(context.Background(), `SELECT dor.create_time,jod.service_endtime,dor.buy_subject,jod.product_code,jod.service_type,jod.filter FROM jy_order_detail jod
|
|
|
|
+INNER JOIN dataexport_order dor on jod.order_code = dor.order_code
|
|
|
|
+WHERE jod.id = ?`, id)
|
|
|
|
+ if data.IsEmpty() {
|
|
|
|
+ return 0, 0, 0, errors.New("关联订单获取异常")
|
|
|
|
+ }
|
|
|
|
+ sVal, err := service.Product().GetProduct(gconv.String(data.Map()["product_code"]))
|
|
|
|
+ if err != nil {
|
|
|
|
+ return 0, 0, 0, err
|
|
|
|
+ }
|
|
|
|
+ //var thisPriceSetting priceSetting
|
|
|
|
+ var thisPriceSetting NewPriceSetting
|
|
|
|
+ if err := gconv.Struct(sVal.Price["rule"], &thisPriceSetting); err != nil {
|
|
|
|
+ return 0, 0, 0, gerror.NewCode(gcode.CodeValidationFailed, "价格格式配置异常")
|
|
|
|
+ }
|
|
|
|
+ filterMap := gconv.Map(data.Map()["filter"])
|
|
|
|
+
|
|
|
|
+ switch data.Map()["service_type"] {
|
|
|
|
+ case 1, 2, 4: //购买续费试用
|
|
|
|
+ cycleType := common.If(gconv.Int(filterMap["buy_cycle"]) != 0, gconv.Int(filterMap["buy_cycle"]), gconv.Int(filterMap["give_cycle"])).(int)
|
|
|
|
+
|
|
|
|
+ month, mPrice, sPrice := thisPriceSetting.MonthlyUnitPrice(gconv.Float64(filterMap["buy_cycle"])+gconv.Float64(filterMap["give_cycle"]), cycleType, gconv.Int(data.Map()["buy_subject"]) == 2)
|
|
|
|
+ return month, mPrice, sPrice, err
|
|
|
|
+ case 3:
|
|
|
|
+ create_time := gconv.String(data.Map()["create_time"])
|
|
|
|
+ service_endtime := gconv.String(data.Map()["service_endtime"])
|
|
|
|
+ tm1, err := isTimeFormat(create_time)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return 0, 0, 0, errors.New("关联订单时间格式异常")
|
|
|
|
+ }
|
|
|
|
+ tm2, err := isTimeFormat(service_endtime)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return 0, 0, 0, errors.New("关联订单时间格式异常")
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ month, mPrice, sPrice := thisPriceSetting.MonthlyUnitPrice(tm2.Sub(tm1).Hours()/24, 1, gconv.Int(data.Map()["buy_subject"]) == 2)
|
|
|
|
+ return month, mPrice, sPrice, err
|
|
|
|
+ }
|
|
|
|
+ return 0, 0, 0, err
|
|
|
|
+}
|