This commit is contained in:
suyl
2021-07-23 16:19:40 +08:00
parent 5fe854a6db
commit 0e872d6157
4 changed files with 128 additions and 13 deletions

View File

@@ -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
}

View File

@@ -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
}