尺幅
This commit is contained in:
@@ -1,8 +1,11 @@
|
|||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-print/globals"
|
"git.rosy.net.cn/jx-print/globals"
|
||||||
"git.rosy.net.cn/jx-print/services"
|
"git.rosy.net.cn/jx-print/services"
|
||||||
|
"git.rosy.net.cn/jx-print/services/api"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
)
|
)
|
||||||
@@ -21,4 +24,10 @@ func (t *CallbackController) Msg(c *gin.Context) {
|
|||||||
func (t *CallbackController) TlPayCallback(c *gin.Context) {
|
func (t *CallbackController) TlPayCallback(c *gin.Context) {
|
||||||
data, _ := ioutil.ReadAll(c.Request.Body)
|
data, _ := ioutil.ReadAll(c.Request.Body)
|
||||||
globals.SugarLogger.Debugf("TlPayCallback msg: %v", string(data))
|
globals.SugarLogger.Debugf("TlPayCallback msg: %v", string(data))
|
||||||
|
c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(data))
|
||||||
|
if call, err := api.TLpayAPI.GetCallbackMsg(c.Request); err == nil {
|
||||||
|
globals.SugarLogger.Debugf("tonglianapi callback callbackResponse:%s", utils.Format4Output(call, true))
|
||||||
|
services.PayTLCallback(call)
|
||||||
|
}
|
||||||
|
c.JSON(200, &CallBack{})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetPrinters(db *sqlx.DB, appID int, printNo string, status int, statusNeq int, flowFlag int) (printers []*model.Printer, err error) {
|
func GetPrinters(db *sqlx.DB, appID int, printNo string, status, statusNeq, flowFlag int) (printers []*model.Printer, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM printer
|
FROM printer
|
||||||
@@ -150,3 +150,27 @@ func GetPrintMessagesPage(db *sqlx.DB, printNo, msgID, beginAt, endAt string, of
|
|||||||
}
|
}
|
||||||
return page, err
|
return page, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetPrinter(db *sqlx.DB, printNo, iccID string) (printer *model.Printer, err error) {
|
||||||
|
var (
|
||||||
|
printers []*model.Printer
|
||||||
|
)
|
||||||
|
sql := `
|
||||||
|
SELECT *
|
||||||
|
FROM printer
|
||||||
|
WHERE 1 = 1 AND deleted_at = ?
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{utils.DefaultTimeValue}
|
||||||
|
if printNo != "" {
|
||||||
|
sql += " AND print_no = ?"
|
||||||
|
sqlParams = append(sqlParams, printNo)
|
||||||
|
}
|
||||||
|
if iccID != "" {
|
||||||
|
sql += " AND icc_id = ?"
|
||||||
|
sqlParams = append(sqlParams, iccID)
|
||||||
|
}
|
||||||
|
if err = db.Select(&printers, sql, sqlParams...); err == nil && len(printers) > 0 {
|
||||||
|
return printers[0], err
|
||||||
|
}
|
||||||
|
return printer, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -54,6 +54,44 @@ var (
|
|||||||
return err
|
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) {
|
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)
|
err = payFunc[payType](db, order, vendorPayType)
|
||||||
return order, err
|
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"
|
"git.rosy.net.cn/jx-print/model"
|
||||||
putils "git.rosy.net.cn/jx-print/putils"
|
putils "git.rosy.net.cn/jx-print/putils"
|
||||||
"git.rosy.net.cn/jx-print/services/api"
|
"git.rosy.net.cn/jx-print/services/api"
|
||||||
|
"github.com/jmoiron/sqlx"
|
||||||
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@@ -82,7 +83,6 @@ func SimFlowDaySettle() (err error) {
|
|||||||
func SimFlowMonthSettle() {
|
func SimFlowMonthSettle() {
|
||||||
var (
|
var (
|
||||||
db = globals.GetDB()
|
db = globals.GetDB()
|
||||||
now = time.Now()
|
|
||||||
)
|
)
|
||||||
//..每月1号划转
|
//..每月1号划转
|
||||||
if time.Now().Day() != 1 {
|
if time.Now().Day() != 1 {
|
||||||
@@ -92,8 +92,17 @@ func SimFlowMonthSettle() {
|
|||||||
printers, _ := dao.GetPrinters(db, 0, "", 0, 0, 0)
|
printers, _ := dao.GetPrinters(db, 0, "", 0, 0, 0)
|
||||||
for _, v := range printers {
|
for _, v := range printers {
|
||||||
if v.IccID != "" {
|
if v.IccID != "" {
|
||||||
|
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{
|
flowIncome := &model.SimFlowIncome{
|
||||||
IccID: v.IccID,
|
IccID: iccID,
|
||||||
CreatedAt: &now,
|
CreatedAt: &now,
|
||||||
UpdatedAt: &now,
|
UpdatedAt: &now,
|
||||||
LastOperator: "jxadmin",
|
LastOperator: "jxadmin",
|
||||||
@@ -102,6 +111,5 @@ func SimFlowMonthSettle() {
|
|||||||
FlowUnit: "MB",
|
FlowUnit: "MB",
|
||||||
}
|
}
|
||||||
dao.Insert(db, flowIncome)
|
dao.Insert(db, flowIncome)
|
||||||
}
|
return err
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user