尺幅
This commit is contained in:
@@ -54,6 +54,44 @@ var (
|
||||
return err
|
||||
},
|
||||
}
|
||||
|
||||
payFinishedFunc = map[string]func(db *sqlx.DB, order *model.PayOrder) (err error){
|
||||
//冲流量,支付完了之后要充进去
|
||||
model.OrderTypeFlow: func(db *sqlx.DB, order *model.PayOrder) (err error) {
|
||||
var (
|
||||
flowCfg []*model.FlowConfig
|
||||
iccID = order.ThingID
|
||||
flow float64
|
||||
unit string
|
||||
now = time.Now()
|
||||
monthBegin = utils.Str2Time(now.Format("2006-01") + "-01 00:00:00")
|
||||
monthEnd = utils.Str2Time(monthBegin.AddDate(0, 1, 0).AddDate(0, 0, -1).Format("2006-01-02") + " 23:59:59")
|
||||
)
|
||||
if config, err2 := dao.GetConfig(db, model.ConfigTypeSys, model.OrderTypeFlow); err2 == nil && config != nil {
|
||||
if err = json.Unmarshal([]byte(config.Value), &flowCfg); err == nil && len(flowCfg) > 0 {
|
||||
for _, v := range flowCfg {
|
||||
if v.ID == utils.Str2Int(order.TypeID) {
|
||||
flow, unit = v.Flow, v.Unit
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
err = FlowIncome(db, iccID, flow, unit)
|
||||
//冲进去之后重新计算流量超标
|
||||
sumIncome, _ := dao.GetSimFlowIncomeSum(db, iccID, monthBegin, monthEnd)
|
||||
sumExpend, _ := dao.GetSimFlowExpendSum(db, iccID, monthBegin, monthEnd)
|
||||
if sumIncome != nil && sumExpend != nil {
|
||||
if sumIncome.Flow-sumExpend.Flow <= 0 {
|
||||
if printer, err := dao.GetPrinter(db, "", iccID); err == nil && printer != nil {
|
||||
printer.FlowFlag = 1
|
||||
err = dao.Update(db, printer, "flow_flag")
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func CreateOrder(tokenInfo *model.TokenInfo, orderType, origin, thingID, typeID string) (orderID string, err error) {
|
||||
@@ -91,3 +129,39 @@ func Pay(tokenInfo *model.TokenInfo, orderID, payType, vendorPayType string) (or
|
||||
err = payFunc[payType](db, order, vendorPayType)
|
||||
return order, err
|
||||
}
|
||||
|
||||
func PayTLCallback(call *tonglianpayapi.CallBackResult) (err error) {
|
||||
var (
|
||||
db = globals.GetDB()
|
||||
orderID = call.CusorderID
|
||||
)
|
||||
if order, err := dao.GetOrder(db, orderID); err == nil {
|
||||
if order.Status != model.OrderStatusWaitPay {
|
||||
globals.SugarLogger.Debugf("already pay msg:%s, err:%v", utils.Format4Output(call, true), err)
|
||||
return err
|
||||
}
|
||||
loc, _ := time.LoadLocation("Local")
|
||||
t1, _ := time.ParseInLocation("20060102150405", call.PayTime, loc)
|
||||
order.PayFinishedAt = &t1
|
||||
data, _ := json.Marshal(call)
|
||||
dataStr := string(data)
|
||||
order.OriginalData = &dataStr
|
||||
if call.TrxStatus == tonglianpayapi.TrxStatusSuccess {
|
||||
order.Status = model.OrderStatusPaid
|
||||
} else {
|
||||
order.Status = model.OrderStatusPayFail
|
||||
}
|
||||
dao.Update(db, order, "status", "pay_finished_at", "original_data")
|
||||
if call.TrxStatus == tonglianpayapi.TrxStatusSuccess {
|
||||
err = OnPayFinished(order)
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("onTLpayFinished msg:%s, err:%v", utils.Format4Output(call, true), err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func OnPayFinished(order *model.PayOrder) (err error) {
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"git.rosy.net.cn/jx-print/model"
|
||||
putils "git.rosy.net.cn/jx-print/putils"
|
||||
"git.rosy.net.cn/jx-print/services/api"
|
||||
"github.com/jmoiron/sqlx"
|
||||
|
||||
"time"
|
||||
)
|
||||
@@ -81,8 +82,7 @@ func SimFlowDaySettle() (err error) {
|
||||
//每月流量卡流量划转
|
||||
func SimFlowMonthSettle() {
|
||||
var (
|
||||
db = globals.GetDB()
|
||||
now = time.Now()
|
||||
db = globals.GetDB()
|
||||
)
|
||||
//..每月1号划转
|
||||
if time.Now().Day() != 1 {
|
||||
@@ -92,16 +92,24 @@ func SimFlowMonthSettle() {
|
||||
printers, _ := dao.GetPrinters(db, 0, "", 0, 0, 0)
|
||||
for _, v := range printers {
|
||||
if v.IccID != "" {
|
||||
flowIncome := &model.SimFlowIncome{
|
||||
IccID: v.IccID,
|
||||
CreatedAt: &now,
|
||||
UpdatedAt: &now,
|
||||
LastOperator: "jxadmin",
|
||||
IncomeType: model.FlowIncomeTypeJX,
|
||||
Flow: 30,
|
||||
FlowUnit: "MB",
|
||||
}
|
||||
dao.Insert(db, flowIncome)
|
||||
FlowIncome(db, v.IccID, 30, "MB")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func FlowIncome(db *sqlx.DB, iccID string, flow float64, unit string) (err error) {
|
||||
var (
|
||||
now = time.Now()
|
||||
)
|
||||
flowIncome := &model.SimFlowIncome{
|
||||
IccID: iccID,
|
||||
CreatedAt: &now,
|
||||
UpdatedAt: &now,
|
||||
LastOperator: "jxadmin",
|
||||
IncomeType: model.FlowIncomeTypeJX,
|
||||
Flow: 30,
|
||||
FlowUnit: "MB",
|
||||
}
|
||||
dao.Insert(db, flowIncome)
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user