This commit is contained in:
suyl
2021-07-20 16:54:43 +08:00
parent b94de1d201
commit 12c1f633cc
3 changed files with 1 additions and 156 deletions

View File

@@ -1,80 +0,0 @@
package cms
import (
"git.rosy.net.cn/baseapi/platformapi/tibiotapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals/api"
"time"
)
const (
overFlow = 30 * 1024 // kb
)
//每日流量卡流量结算
func SimFlowDaySettle(ctx *jxcontext.Context) (err error) {
var (
db = dao.GetDB()
monthBegin = utils.Str2Time(utils.Int2Str(time.Now().Year()) + "-" + utils.Int2Str(int(time.Now().Month())) + "-01 00:00:00")
monthEnd = monthBegin.AddDate(0, 0, -1).AddDate(0, 1, 0)
)
//找出所有状态不为 超流量的打印机iccid卡
printers, _ := dao.GetPrinters(db, 0, "", 0, model.PrinterStatusNoFlow)
for _, v := range printers {
//查询前一日使用的流量数
if v.IccID != "" {
flowExpend := &model.SimFlowExpend{
IccID: v.IccID,
}
dao.WrapAddIDCULEntity(flowExpend, ctx.GetUserName())
var (
getCardInfoResult *tibiotapi.IotDataResult
getCardInfoResultMonth *tibiotapi.IotDataMonthResult
)
if getCardInfoResult, err = api.TibiotAPI.IotData(v.IccID, utils.Time2Str(utils.Time2Date(time.Now().AddDate(0, 0, -1)))); err == nil {
//表示还没有同步前一天的流量,只能自己算了
if getCardInfoResult == nil || getCardInfoResult.SyncStatus == "1" || getCardInfoResult.CardFlow == "0KB" || getCardInfoResult.CardFlow == "" { //未同步
//先查当月用的总的, 减去当月已经用的总的,就是昨天用的
if getCardInfoResultMonth, err = api.TibiotAPI.IotDataMonth(v.IccID); err == nil {
//表示当月用的总的也还没同步。只有去查卡信息中的总流量使用,减去所有总使用,就是昨天用的。。太折磨了先不写
if getCardInfoResultMonth == nil || getCardInfoResultMonth.CardFlow == "" || getCardInfoResultMonth.CardFlow == "0KB" {
//api.TibiotAPI.BatchQueryCardInfo(1)
} else {
sumExpend, _ := dao.GetSimFlowExpendSum(db, v.IccID, monthBegin, monthEnd)
cardFlow := jxutils.Flow2KB(jxutils.SplitFlowAndUnit(getCardInfoResultMonth.CardFlow))
flowExpend.Flow, flowExpend.FlowUnit = jxutils.FlowKB2Other(cardFlow - sumExpend.Flow)
}
}
} else {
flowExpend.Flow, flowExpend.FlowUnit = jxutils.SplitFlowAndUnit(getCardInfoResult.CardFlow)
}
}
dao.CreateEntity(db, flowExpend)
//算是否超了一个月的流量了
//一个月总的收入流量 - 一个月总的支出流量 <= 0
sumIncome, _ := dao.GetSimFlowIncomeSum(db, v.IccID, monthBegin, monthEnd)
sumExpend, _ := dao.GetSimFlowExpendSum(db, v.IccID, monthBegin, monthEnd)
if sumExpend.Flow-sumIncome.Flow <= 0 {
v.Status = model.PrinterStatusNoFlow
dao.UpdateEntity(db, v, "Status")
}
}
}
return err
}
//每月流量卡流量结算
func SimFlowMonthSettle(ctx *jxcontext.Context) {
var (
db = dao.GetDB()
)
//..每月1号划转
if time.Now().Day() != 1 {
return
}
dao.GetSimFlowExpend(db, "", utils.ZeroTimeValue, utils.ZeroTimeValue)
}

View File

@@ -9,12 +9,7 @@ import (
)
func Init() {
//ScheduleTimerFunc("SimFlowDaySettle", func() {
// cms.SimFlowDaySettle(jxcontext.AdminCtx)
// cms.SimFlowMonthSettle(jxcontext.AdminCtx)
//}, []string{
// "00:05:00",
//})
}
// 按时间序列循环

View File

@@ -1,70 +0,0 @@
package dao
import (
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"time"
)
func GetSimFlowExpend(db *DaoDB, iccid string, createdAtBegin, createdAtEnd time.Time) (simFlowExpnd []*model.SimFlowExpend, err error) {
return simFlowExpnd, err
}
func GetSimFlowExpendSum(db *DaoDB, iccid string, createdAtBegin, createdAtEnd time.Time) (simFlowExpnd *model.SimFlowExpend, err error) {
sql := `
SELECT SUM(
IF(flow_unit = 'KB', flow,
IF(flow_unit = 'MB', ROUND(flow * 1024)),
IF(flow_unit = "GB", ROUND(flow * 1024 * 1024), 0)
)
), icc_id, 'KB' flow_unit
FROM sim_flow_expend
WHERE 1 = 1
`
sqlParams := []interface{}{}
if iccid != "" {
sql += " AND icc_id = ?"
sqlParams = append(sqlParams, iccid)
}
if !utils.IsTimeZero(createdAtBegin) {
sql += " AND created_at > ?"
sqlParams = append(sqlParams, createdAtBegin)
}
if !utils.IsTimeZero(createdAtEnd) {
sql += " AND created_at < ?"
sqlParams = append(sqlParams, createdAtEnd)
}
sql += " GROUP BY 2, 3"
err = GetRow(db, &simFlowExpnd, sql, sqlParams)
return simFlowExpnd, err
}
func GetSimFlowIncomeSum(db *DaoDB, iccid string, createdAtBegin, createdAtEnd time.Time) (simFlowIncome *model.SimFlowIncome, err error) {
sql := `
SELECT SUM(
IF(flow_unit = 'KB', flow,
IF(flow_unit = 'MB', ROUND(flow * 1024)),
IF(flow_unit = "GB", ROUND(flow * 1024 * 1024), 0)
)
), icc_id, 'KB' flow_unit
FROM sim_flow_income
WHERE 1 = 1
`
sqlParams := []interface{}{}
if iccid != "" {
sql += " AND icc_id = ?"
sqlParams = append(sqlParams, iccid)
}
if !utils.IsTimeZero(createdAtBegin) {
sql += " AND created_at > ?"
sqlParams = append(sqlParams, createdAtBegin)
}
if !utils.IsTimeZero(createdAtEnd) {
sql += " AND created_at < ?"
sqlParams = append(sqlParams, createdAtEnd)
}
sql += " GROUP BY 2, 3"
err = GetRow(db, &simFlowIncome, sql, sqlParams)
return simFlowIncome, err
}