123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912 |
- package dao
- import (
- "context"
- "math"
- "time"
- "go-common/app/job/main/ugcpay/model"
- xsql "go-common/library/database/sql"
- )
- const (
- _asset = `SELECT id,mid,oid,otype,currency,price,state,ctime,mtime FROM asset WHERE oid=? AND otype=? AND currency=? LIMIT 1`
- _countPaidOrderUser = "SELECT count(1) FROM order_user WHERE pay_time BETWEEN ? AND ? AND state='paid' LIMIT 1"
- _countRefundedOrderUser = "SELECT count(1) FROM order_user WHERE refund_time BETWEEN ? AND ? AND state='st_refunded' LIMIT 1"
- _sumPaidOrderUserRealFee = "SELECT IFNULL(sum(real_fee),0) FROM order_user WHERE pay_time BETWEEN ? AND ? AND state='settled' LIMIT 1"
- _sumRefundedOrderUserRealFee = "SELECT IFNULL(sum(real_fee),0) FROM order_user WHERE refund_time BETWEEN ? AND ? AND state='ref_finished' LIMIT 1"
- _minIDOrderPaid = `SELECT id FROM order_user WHERE pay_time>=? AND state='paid' ORDER BY id ASC LIMIT 1`
- _minIDOrderRefunded = `SELECT id FROM order_user WHERE refund_time>=? AND state='st_refunded' ORDER BY id ASC LIMIT 1`
- _orderPaidList = `SELECT id,mid,order_id,biz,platform,oid,otype,fee,real_fee,currency,pay_id,pay_reason,pay_time,state,ctime,mtime,refund_time,version FROM order_user WHERE pay_time BETWEEN ? AND ? AND state='paid' AND id>? ORDER BY ID ASC LIMIT ?`
- _orderRefundedList = `SELECT id,mid,order_id,biz,platform,oid,otype,fee,real_fee,currency,pay_id,pay_reason,pay_time,state,ctime,mtime,refund_time,version FROM order_user WHERE refund_time BETWEEN ? AND ? AND state='st_refunded' AND id>? ORDER BY ID ASC LIMIT ?`
- _updateOrder = `UPDATE order_user SET mid=?,order_id=?,biz=?,platform=?,oid=?,otype=?,fee=?,real_fee=?,currency=?,pay_id=?,pay_reason=?,pay_time=?,state=?,refund_time=?,version=version+1 WHERE id=? AND version=?`
- _insertLogOrderUser = "INSERT INTO log_order_user (order_id,from_state,to_state,`desc`) VALUES (?,?,?,?)"
- _orderBadDebt = `SELECT id,order_id,type,state,ctime,mtime FROM order_bad_debt WHERE order_id=? ORDER BY id ASC LIMIT 1`
- _insertOrderBadDebt = `INSERT INTO order_bad_debt (order_id,type,state) VALUES (?,?,?)`
- _updateOrderBadDebt = `UPDATE order_bad_debt SET order_id=?,type=?,state=? WHERE order_id=?`
- _countDailyBillByVer = "SELECT count(1) FROM bill_user_daily WHERE ver=? LIMIT 1"
- _countDailyBillByMonthVer = "SELECT count(1) FROM bill_user_daily WHERE month_ver=? LIMIT 1"
- _sumDailyBill = "SELECT IFNULL(sum(`in`),0),IFNULL(sum(`out`),0) FROM bill_user_daily WHERE ver=? LIMIT 1"
- _minIDDailyBillByMonthVer = `SELECT id FROM bill_user_daily WHERE month_ver=? ORDER BY id ASC LIMIT 1`
- _dailyBillListByMonthVer = "SELECT id,bill_id,mid,biz,currency,`in`,`out`,ver,month_ver,ctime,mtime,version FROM bill_user_daily WHERE month_ver=? AND id>? ORDER BY ID ASC LIMIT ?"
- _minIDDailyBillByVer = `SELECT id FROM bill_user_daily WHERE ver=? ORDER BY id ASC LIMIT 1`
- _dailyBillListByVer = "SELECT id,bill_id,mid,biz,currency,`in`,`out`,ver,month_ver,ctime,mtime,version FROM bill_user_daily WHERE ver=? AND id>? ORDER BY ID ASC LIMIT ?"
- _dailyBill = "SELECT id,bill_id,mid,biz,currency,`in`,`out`,ver,month_ver,ctime,mtime,version FROM bill_user_daily WHERE mid=? AND biz=? AND currency=? AND ver=? LIMIT 1"
- _insertDailyBill = "INSERT INTO bill_user_daily (bill_id,mid,biz,currency,`in`,`out`,ver,month_ver,version) VALUES (?,?,?,?,?,?,?,?,?)"
- _updateDailyBill = "UPDATE bill_user_daily SET bill_id=?,mid=?,biz=?,currency=?,`in`=?,`out`=?,ver=?,month_ver=?,version=version+1 WHERE mid=? AND biz=? AND currency=? AND ver=? AND version=?"
- _insertDailyBillLog = "INSERT INTO log_bill_user_daily (bill_id,from_in,to_in,from_out,to_out,order_id) VALUES (?,?,?,?,?,?)"
- _countMonthlyBillByVer = "SELECT count(1) FROM bill_user_monthly WHERE ver=? LIMIT 1"
- _minIDMonthlyBill = `SELECT id FROM bill_user_monthly WHERE ver=? ORDER BY id ASC LIMIT 1`
- _monthlyBillList = "SELECT id,bill_id,mid,biz,currency,`in`,`out`,ver,ctime,mtime,version FROM bill_user_monthly WHERE ver=? AND id>? ORDER BY ID ASC LIMIT ?"
- _monthlyBill = "SELECT id,bill_id,mid,biz,currency,`in`,`out`,ver,ctime,mtime,version FROM bill_user_monthly WHERE mid=? AND biz=? AND currency=? AND ver=? LIMIT 1"
- _insertMonthlyBill = "INSERT INTO bill_user_monthly (bill_id,mid,biz,currency,`in`,`out`,ver,version) VALUES (?,?,?,?,?,?,?,?)"
- _updateMonthlyBill = "UPDATE bill_user_monthly SET bill_id=?,mid=?,biz=?,currency=?,`in`=?,`out`=?,ver=?,version=version+1 WHERE mid=? AND biz=? AND currency=? AND ver=? AND version=?"
- _insertMonthlyBillLog = "INSERT INTO log_bill_user_monthly (bill_id,from_in,to_in,from_out,to_out,bill_user_daily_id) VALUES (?,?,?,?,?,?)"
- _minIDUserAccount = `SELECT id FROM account_user WHERE mtime>=? ORDER BY id ASC LIMIT 1`
- _userAccountList = "SELECT id,mid,biz,currency,balance,ver,state,ctime,mtime FROM account_user WHERE mtime BETWEEN ? AND ? AND id>? ORDER BY ID ASC LIMIT ?"
- _userAccount = `SELECT id,mid,biz,currency,balance,ver,state,ctime,mtime FROM account_user WHERE mid=? AND biz=? AND currency=? LIMIT 1`
- _insertUserAccount = `INSERT INTO account_user (mid,biz,currency,balance,ver,state) VALUES (?,?,?,?,?,?)`
- _updateUserAccount = `UPDATE account_user SET mid=?,biz=?,currency=?,balance=?,ver=ver+1,state=? WHERE mid=? AND biz=? AND currency=? AND ver=?`
- _insertUserAccountLog = "INSERT INTO log_account_user (account_id,`from`,`to`,ver,state,name) VALUES (?,?,?,?,?,?)"
- _bizAccount = `SELECT id,biz,currency,balance,ver,state,ctime,mtime FROM account_biz WHERE biz=? AND currency=? LIMIT 1`
- _insertBizAccount = `INSERT INTO account_biz (biz,currency,balance,ver,state) VALUES (?,?,?,?,?)`
- _updateBizAccount = `UPDATE account_biz SET biz=?,currency=?,balance=?,ver=ver+1,state=? WHERE biz=? AND currency=? AND ver=?`
- _insertBizAccountLog = "INSERT INTO log_account_biz (account_id,`from`,`to`,ver,state,name) VALUES (?,?,?,?,?,?)"
- _aggrIncomeUser = "SELECT id,mid,currency,pay_success,pay_error,total_in,total_out,ctime,mtime FROM aggr_income_user WHERE mid=? AND currency=? LIMIT 1"
- _insertAggrIncomeUser = "INSERT INTO aggr_income_user (mid,currency,pay_success,pay_error,total_in,total_out) VALUES (?,?,?,?,?,?)"
- _updateAggrIncomeUser = "UPDATE aggr_income_user SET mid=?,currency=?,pay_success=?,pay_error=?,total_in=?,total_out=? WHERE mid=? AND currency=?"
- _aggrIncomeUserAsset = "SELECT id,mid,currency,ver,oid,otype,pay_success,pay_error,total_in,total_out,ctime,mtime FROM aggr_income_user_asset WHERE mid=? AND currency=? AND ver=? AND oid=? AND otype=? LIMIT 1"
- _insertAggrIncomeUserAsset = "INSERT INTO aggr_income_user_asset (mid,currency,`ver`,oid,otype,pay_success,pay_error,total_in,total_out) VALUES (?,?,?,?,?,?,?,?,?)"
- _updateAggrIncomeUserAsset = "UPDATE aggr_income_user_asset SET mid=?,currency=?,ver=?,oid=?,otype=?,pay_success=?,pay_error=?,total_in=?,total_out=? WHERE mid=? AND currency=? AND ver=? AND oid=? AND otype=?"
- _insertOrderRechargeShell = "INSERT INTO order_recharge_shell (mid,order_id,biz,amount,pay_msg,state,`ver`) VALUES (?,?,?,?,?,?,?)"
- _insertOrderRechargeShellLog = "INSERT INTO log_order_recharge_shell (order_id,from_state,to_state,`desc`,bill_user_monthly_id) VALUES (?,?,?,?,?)"
- _logTask = "SELECT id,name,expect,success,failure,state,ctime,mtime FROM log_task WHERE name=? LIMIT 1"
- _insertLogTask = "INSERT INTO log_task (name,expect,success,failure,state) VALUES (?,?,?,?,?)"
- _logTaskSuccessIncr = "UPDATE log_task SET success=success+1 WHERE name=?"
- _logTaskFailureIncr = "UPDATE log_task SET failure=failure+1 WHERE name=?"
- )
- // CountPaidOrderUser .
- func (d *Dao) CountPaidOrderUser(ctx context.Context, beginTime, endTime time.Time) (count int64, err error) {
- row := d.db.QueryRow(ctx, _countPaidOrderUser, beginTime, endTime)
- if err = row.Scan(&count); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- count = 0
- }
- return
- }
- return
- }
- // CountRefundedOrderUser .
- func (d *Dao) CountRefundedOrderUser(ctx context.Context, beginTime, endTime time.Time) (count int64, err error) {
- row := d.db.QueryRow(ctx, _countRefundedOrderUser, beginTime, endTime)
- if err = row.Scan(&count); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- count = 0
- }
- return
- }
- return
- }
- // CountDailyBillByVer .
- func (d *Dao) CountDailyBillByVer(ctx context.Context, ver int64) (count int64, err error) {
- row := d.db.QueryRow(ctx, _countDailyBillByVer, ver)
- if err = row.Scan(&count); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- count = 0
- }
- return
- }
- return
- }
- // CountDailyBillByMonthVer .
- func (d *Dao) CountDailyBillByMonthVer(ctx context.Context, monthVer int64) (count int64, err error) {
- row := d.db.QueryRow(ctx, _countDailyBillByMonthVer, monthVer)
- if err = row.Scan(&count); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- count = 0
- }
- return
- }
- return
- }
- // CountMonthlyBillByVer .
- func (d *Dao) CountMonthlyBillByVer(ctx context.Context, ver int64) (count int64, err error) {
- row := d.db.QueryRow(ctx, _countMonthlyBillByVer, ver)
- if err = row.Scan(&count); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- count = 0
- }
- return
- }
- return
- }
- // LogTask .
- func (d *Dao) LogTask(ctx context.Context, name string) (data *model.LogTask, err error) {
- row := d.db.QueryRow(ctx, _logTask, name)
- data = &model.LogTask{}
- if err = row.Scan(&data.ID, &data.Name, &data.Expect, &data.Success, &data.Failure, &data.State, &data.CTime, &data.MTime); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- data = nil
- }
- return
- }
- return
- }
- // InsertLogTask .
- func (d *Dao) InsertLogTask(ctx context.Context, data *model.LogTask) (id int64, err error) {
- result, err := d.db.Exec(ctx, _insertLogTask, data.Name, data.Expect, data.Success, data.Failure, data.State)
- if err != nil {
- return
- }
- id, err = result.LastInsertId()
- return
- }
- // TXIncrLogTaskSuccess .
- func (d *Dao) TXIncrLogTaskSuccess(ctx context.Context, tx *xsql.Tx, name string) (rows int64, err error) {
- result, err := tx.Exec(_logTaskSuccessIncr, name)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // IncrLogTaskFailure .
- func (d *Dao) IncrLogTaskFailure(ctx context.Context, name string) (rows int64, err error) {
- result, err := d.db.Exec(ctx, _logTaskFailureIncr, name)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // Asset .
- func (d *Dao) Asset(ctx context.Context, oid int64, otype string, currency string) (data *model.Asset, err error) {
- row := d.db.QueryRow(ctx, _asset, oid, otype, currency)
- data = &model.Asset{}
- if err = row.Scan(&data.ID, &data.MID, &data.OID, &data.OType, &data.Currency, &data.Price, &data.State, &data.CTime, &data.MTime); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- data = nil
- }
- return
- }
- return
- }
- // SumPaidOrderUserRealFee .
- func (d *Dao) SumPaidOrderUserRealFee(ctx context.Context, beginTime, endTime time.Time) (sum int64, err error) {
- row := d.db.QueryRow(ctx, _sumPaidOrderUserRealFee, beginTime, endTime)
- if err = row.Scan(&sum); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- sum = 0
- }
- return
- }
- return
- }
- // SumRefundedOrderUserRealFee .
- func (d *Dao) SumRefundedOrderUserRealFee(ctx context.Context, beginTime, endTime time.Time) (sum int64, err error) {
- row := d.db.QueryRow(ctx, _sumRefundedOrderUserRealFee, beginTime, endTime)
- if err = row.Scan(&sum); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- sum = 0
- }
- return
- }
- return
- }
- // SumDailyBill .
- func (d *Dao) SumDailyBill(ctx context.Context, ver int64) (sumIn int64, sumOut int64, err error) {
- row := d.db.QueryRow(ctx, _sumDailyBill, ver)
- if err = row.Scan(&sumIn, &sumOut); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- sumIn = 0
- sumOut = 0
- }
- return
- }
- return
- }
- // MinIDOrderPaid .
- func (d *Dao) MinIDOrderPaid(ctx context.Context, beginTime time.Time) (minID int64, err error) {
- row := d.db.QueryRow(ctx, _minIDOrderPaid, beginTime)
- if err = row.Scan(&minID); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- minID = math.MaxInt32
- }
- return
- }
- minID--
- return
- }
- // OrderPaidList order list
- func (d *Dao) OrderPaidList(ctx context.Context, beginTime time.Time, endTime time.Time, fromID int64, limit int) (maxID int64, data []*model.Order, err error) {
- rows, err := d.db.Query(ctx, _orderPaidList, beginTime, endTime, fromID, limit)
- if err != nil {
- return
- }
- defer rows.Close()
- for rows.Next() {
- d := &model.Order{}
- if err = rows.Scan(&d.ID, &d.MID, &d.OrderID, &d.Biz, &d.Platform, &d.OID, &d.OType, &d.Fee, &d.RealFee, &d.Currency, &d.PayID, &d.PayReason, &d.PayTime, &d.State, &d.CTime, &d.MTime, &d.RefundTime, &d.Version); err != nil {
- return
- }
- if d.ID > maxID {
- maxID = d.ID
- }
- data = append(data, d)
- }
- err = rows.Err()
- return
- }
- // MinIDOrderRefunded .
- func (d *Dao) MinIDOrderRefunded(ctx context.Context, beginTime time.Time) (minID int64, err error) {
- row := d.db.QueryRow(ctx, _minIDOrderRefunded, beginTime)
- if err = row.Scan(&minID); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- minID = math.MaxInt32
- }
- return
- }
- minID--
- return
- }
- // OrderRefundedList order list
- func (d *Dao) OrderRefundedList(ctx context.Context, beginTime time.Time, endTime time.Time, fromID int64, limit int) (maxID int64, data []*model.Order, err error) {
- rows, err := d.db.Query(ctx, _orderRefundedList, beginTime, endTime, fromID, limit)
- if err != nil {
- return
- }
- defer rows.Close()
- for rows.Next() {
- d := &model.Order{}
- if err = rows.Scan(&d.ID, &d.MID, &d.OrderID, &d.Biz, &d.Platform, &d.OID, &d.OType, &d.Fee, &d.RealFee, &d.Currency, &d.PayID, &d.PayReason, &d.PayTime, &d.State, &d.CTime, &d.MTime, &d.RefundTime, &d.Version); err != nil {
- return
- }
- if d.ID > maxID {
- maxID = d.ID
- }
- data = append(data, d)
- }
- err = rows.Err()
- return
- }
- // TXUpdateOrder .
- func (d *Dao) TXUpdateOrder(ctx context.Context, tx *xsql.Tx, order *model.Order) (rows int64, err error) {
- result, err := tx.Exec(_updateOrder, order.MID, order.OrderID, order.Biz, order.Platform, order.OID, order.OType, order.Fee, order.RealFee, order.Currency, order.PayID, order.PayReason, order.PayTime, order.State, order.RefundTime, order.ID, order.Version)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // TXInsertOrderUserLog .
- func (d *Dao) TXInsertOrderUserLog(ctx context.Context, tx *xsql.Tx, data *model.LogOrder) (id int64, err error) {
- result, err := tx.Exec(_insertLogOrderUser, data.OrderID, data.FromState, data.ToState, data.Desc)
- if err != nil {
- return
- }
- if id, err = result.LastInsertId(); err != nil {
- return
- }
- return
- }
- // MinIDDailyBillByVer .
- func (d *Dao) MinIDDailyBillByVer(ctx context.Context, ver int64) (minID int64, err error) {
- row := d.db.QueryRow(ctx, _minIDDailyBillByVer, ver)
- if err = row.Scan(&minID); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- minID = math.MaxInt32
- }
- return
- }
- minID--
- return
- }
- // DailyBillListByVer bill list
- func (d *Dao) DailyBillListByVer(ctx context.Context, ver int64, fromID int64, limit int) (maxID int64, data []*model.DailyBill, err error) {
- rows, err := d.db.Query(ctx, _dailyBillListByVer, ver, fromID, limit)
- if err != nil {
- return
- }
- defer rows.Close()
- for rows.Next() {
- d := &model.DailyBill{}
- if err = rows.Scan(&d.ID, &d.BillID, &d.MID, &d.Biz, &d.Currency, &d.In, &d.Out, &d.Ver, &d.MonthVer, &d.CTime, &d.MTime, &d.Version); err != nil {
- return
- }
- if d.ID > maxID {
- maxID = d.ID
- }
- data = append(data, d)
- }
- err = rows.Err()
- return
- }
- // MinIDDailyBillByMonthVer .
- func (d *Dao) MinIDDailyBillByMonthVer(ctx context.Context, monthVer int64) (minID int64, err error) {
- row := d.db.QueryRow(ctx, _minIDDailyBillByMonthVer, monthVer)
- if err = row.Scan(&minID); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- minID = math.MaxInt32
- }
- return
- }
- minID--
- return
- }
- // DailyBillListByMonthVer bill list
- func (d *Dao) DailyBillListByMonthVer(ctx context.Context, monthVer int64, fromID int64, limit int) (maxID int64, data []*model.DailyBill, err error) {
- rows, err := d.db.Query(ctx, _dailyBillListByMonthVer, monthVer, fromID, limit)
- if err != nil {
- return
- }
- defer rows.Close()
- for rows.Next() {
- d := &model.DailyBill{}
- if err = rows.Scan(&d.ID, &d.BillID, &d.MID, &d.Biz, &d.Currency, &d.In, &d.Out, &d.Ver, &d.MonthVer, &d.CTime, &d.MTime, &d.Version); err != nil {
- return
- }
- if d.ID > maxID {
- maxID = d.ID
- }
- data = append(data, d)
- }
- err = rows.Err()
- return
- }
- // TXInsertLogDailyBill .
- func (d *Dao) TXInsertLogDailyBill(ctx context.Context, tx *xsql.Tx, log *model.LogBillDaily) (id int64, err error) {
- result, err := tx.Exec(_insertDailyBillLog, log.BillID, log.FromIn, log.ToIn, log.FromOut, log.ToOut, log.OrderID)
- if err != nil {
- return
- }
- id, err = result.LastInsertId()
- return
- }
- // TXInsertLogMonthlyBill .
- func (d *Dao) TXInsertLogMonthlyBill(ctx context.Context, tx *xsql.Tx, log *model.LogBillMonthly) (id int64, err error) {
- result, err := tx.Exec(_insertMonthlyBillLog, log.BillID, log.FromIn, log.ToIn, log.FromOut, log.ToOut, log.BillUserDailyID)
- if err != nil {
- return
- }
- id, err = result.LastInsertId()
- return
- }
- // MinIDMonthlyBill .
- func (d *Dao) MinIDMonthlyBill(ctx context.Context, ver int64) (minID int64, err error) {
- row := d.db.QueryRow(ctx, _minIDMonthlyBill, ver)
- if err = row.Scan(&minID); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- minID = math.MaxInt32
- }
- return
- }
- minID--
- return
- }
- // MonthlyBillList bill list
- func (d *Dao) MonthlyBillList(ctx context.Context, ver int64, fromID int64, limit int) (maxID int64, data []*model.Bill, err error) {
- rows, err := d.db.Query(ctx, _monthlyBillList, ver, fromID, limit)
- if err != nil {
- return
- }
- defer rows.Close()
- for rows.Next() {
- d := &model.Bill{}
- if err = rows.Scan(&d.ID, &d.BillID, &d.MID, &d.Biz, &d.Currency, &d.In, &d.Out, &d.Ver, &d.CTime, &d.MTime, &d.Version); err != nil {
- return
- }
- if d.ID > maxID {
- maxID = d.ID
- }
- data = append(data, d)
- }
- err = rows.Err()
- return
- }
- // DailyBill .
- func (d *Dao) DailyBill(ctx context.Context, mid int64, biz string, currency string, ver int64) (data *model.DailyBill, err error) {
- row := d.db.QueryRow(ctx, _dailyBill, mid, biz, currency, ver)
- data = &model.DailyBill{}
- if err = row.Scan(&data.ID, &data.BillID, &data.MID, &data.Biz, &data.Currency, &data.In, &data.Out, &data.Ver, &data.MonthVer, &data.CTime, &data.MTime, &data.Version); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- data = nil
- }
- return
- }
- return
- }
- // InsertDailyBill .
- func (d *Dao) InsertDailyBill(ctx context.Context, bill *model.DailyBill) (id int64, err error) {
- result, err := d.db.Exec(ctx, _insertDailyBill, bill.BillID, bill.MID, bill.Biz, bill.Currency, bill.In, bill.Out, bill.Ver, bill.MonthVer, bill.Version)
- if err != nil {
- return
- }
- id, err = result.LastInsertId()
- return
- }
- // TXUpdateDailyBill .
- func (d *Dao) TXUpdateDailyBill(ctx context.Context, tx *xsql.Tx, bill *model.DailyBill) (rows int64, err error) {
- result, err := tx.Exec(_updateDailyBill, bill.BillID, bill.MID, bill.Biz, bill.Currency, bill.In, bill.Out, bill.Ver, bill.MonthVer, bill.MID, bill.Biz, bill.Currency, bill.Ver, bill.Version)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- const (
- _upsertDeltaDailyBill = "INSERT INTO bill_user_daily (bill_id,mid,biz,currency,`in`,`out`,ver,month_ver) VALUES (?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE `in`=`in`+?,`out`=`out`+?"
- _updateDeltaDailyBill = "UPDATE bill_user_daily SET `in`=`in`+?,`out`=`out`+? WHERE mid=? AND biz=? AND currency=? AND ver=?"
- )
- // TXUpsertDeltaDailyBill .
- func (d *Dao) TXUpsertDeltaDailyBill(ctx context.Context, tx *xsql.Tx, bill *model.DailyBill, deltaIn, deltaOut int64) (rows int64, err error) {
- result, err := tx.Exec(_upsertDeltaDailyBill, bill.BillID, bill.MID, bill.Biz, bill.Currency, deltaIn, deltaOut, bill.Ver, bill.MonthVer, deltaIn, deltaOut)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // TXUpdateDeltaDailyBill .
- func (d *Dao) TXUpdateDeltaDailyBill(ctx context.Context, tx *xsql.Tx, deltaIn, deltaOut int64, mid int64, biz string, currency string, ver int64) (rows int64, err error) {
- result, err := tx.Exec(_updateDeltaDailyBill, deltaIn, deltaOut, mid, biz, currency, ver)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // MonthlyBill .
- func (d *Dao) MonthlyBill(ctx context.Context, mid int64, biz string, currency string, ver int64) (data *model.Bill, err error) {
- row := d.db.QueryRow(ctx, _monthlyBill, mid, biz, currency, ver)
- data = &model.Bill{}
- if err = row.Scan(&data.ID, &data.BillID, &data.MID, &data.Biz, &data.Currency, &data.In, &data.Out, &data.Ver, &data.CTime, &data.MTime, &data.Version); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- data = nil
- }
- return
- }
- return
- }
- // InsertMonthlyBill .
- func (d *Dao) InsertMonthlyBill(ctx context.Context, bill *model.Bill) (id int64, err error) {
- result, err := d.db.Exec(ctx, _insertMonthlyBill, bill.BillID, bill.MID, bill.Biz, bill.Currency, bill.In, bill.Out, bill.Ver, bill.Version)
- if err != nil {
- return
- }
- id, err = result.LastInsertId()
- return
- }
- // TXUpdateMonthlyBill .
- func (d *Dao) TXUpdateMonthlyBill(ctx context.Context, tx *xsql.Tx, bill *model.Bill) (rows int64, err error) {
- result, err := tx.Exec(_updateMonthlyBill, bill.BillID, bill.MID, bill.Biz, bill.Currency, bill.In, bill.Out, bill.Ver, bill.MID, bill.Biz, bill.Currency, bill.Ver, bill.Version)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- const (
- _upsertDeltaMonthlyBill = "INSERT INTO bill_user_monthly (bill_id,mid,biz,currency,`in`,`out`,ver) VALUES (?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE `in`=`in`+?,`out`=`out`+?"
- _updateDeltaMonthlyBill = "UPDATE bill_user_monthly SET `in`=`in`+?,`out`=`out`+? WHERE mid=? AND biz=? AND currency=? AND ver=?"
- )
- // TXUpsertDeltaMonthlyBill .
- func (d *Dao) TXUpsertDeltaMonthlyBill(ctx context.Context, tx *xsql.Tx, bill *model.Bill, deltaIn, deltaOut int64) (rows int64, err error) {
- result, err := tx.Exec(_upsertDeltaMonthlyBill, bill.BillID, bill.MID, bill.Biz, bill.Currency, deltaIn, deltaOut, bill.Ver, deltaIn, deltaOut)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // TXUpdateDeltaMonthlyBill .
- func (d *Dao) TXUpdateDeltaMonthlyBill(ctx context.Context, tx *xsql.Tx, deltaIn, deltaOut int64, mid int64, biz string, currency string, ver int64) (rows int64, err error) {
- result, err := tx.Exec(_updateDeltaMonthlyBill, deltaIn, deltaOut, mid, biz, currency, ver)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // MinIDUserAccount .
- func (d *Dao) MinIDUserAccount(ctx context.Context, beginTime time.Time) (minID int64, err error) {
- row := d.db.QueryRow(ctx, _minIDUserAccount, beginTime)
- if err = row.Scan(&minID); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- minID = math.MaxInt32
- }
- return
- }
- minID--
- return
- }
- // UserAccountList bill list
- func (d *Dao) UserAccountList(ctx context.Context, beginTime time.Time, endTime time.Time, fromID int64, limit int) (maxID int64, datas []*model.UserAccount, err error) {
- rows, err := d.db.Query(ctx, _userAccountList, beginTime, endTime, fromID, limit)
- if err != nil {
- return
- }
- defer rows.Close()
- for rows.Next() {
- data := &model.UserAccount{}
- if err = rows.Scan(&data.ID, &data.MID, &data.Biz, &data.Currency, &data.Balance, &data.Ver, &data.State, &data.CTime, &data.MTime); err != nil {
- return
- }
- if data.ID > maxID {
- maxID = data.ID
- }
- datas = append(datas, data)
- }
- err = rows.Err()
- return
- }
- // UserAccount .
- func (d *Dao) UserAccount(ctx context.Context, mid int64, biz string, currency string) (data *model.UserAccount, err error) {
- row := d.db.QueryRow(ctx, _userAccount, mid, biz, currency)
- data = &model.UserAccount{}
- if err = row.Scan(&data.ID, &data.MID, &data.Biz, &data.Currency, &data.Balance, &data.Ver, &data.State, &data.CTime, &data.MTime); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- data = nil
- }
- return
- }
- return
- }
- // InsertUserAccount .
- func (d *Dao) InsertUserAccount(ctx context.Context, account *model.UserAccount) (id int64, err error) {
- result, err := d.db.Exec(ctx, _insertUserAccount, account.MID, account.Biz, account.Currency, account.Balance, account.Ver, account.State)
- if err != nil {
- return
- }
- id, err = result.LastInsertId()
- return
- }
- // TXUpdateUserAccount .
- func (d *Dao) TXUpdateUserAccount(ctx context.Context, tx *xsql.Tx, account *model.UserAccount) (rows int64, err error) {
- result, err := tx.Exec(_updateUserAccount, account.MID, account.Biz, account.Currency, account.Balance, account.State, account.MID, account.Biz, account.Currency, account.Ver)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- const (
- _upsertDeltaUserAccount = "INSERT INTO account_user (mid,biz,currency,balance,ver,state) VALUES (?,?,?,?,?,?) ON DUPLICATE KEY UPDATE balance=balance+?,ver=ver+1"
- _updateDeltaUserAccount = `UPDATE account_user SET balance=balance+?,ver=ver+1 WHERE mid=? AND biz=? AND currency=?`
- )
- // TXUpsertDeltaUserAccount .
- func (d *Dao) TXUpsertDeltaUserAccount(ctx context.Context, tx *xsql.Tx, account *model.UserAccount, deltaBalance int64) (rows int64, err error) {
- result, err := tx.Exec(_upsertDeltaUserAccount, account.MID, account.Biz, account.Currency, deltaBalance, account.Ver, account.State, deltaBalance)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // TXUpdateDeltaUserAccount .
- func (d *Dao) TXUpdateDeltaUserAccount(ctx context.Context, tx *xsql.Tx, deltaBalance int64, mid int64, biz string, currency string) (rows int64, err error) {
- result, err := tx.Exec(_updateDeltaUserAccount, deltaBalance, mid, biz, currency)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // TXInsertUserAccountLog .
- func (d *Dao) TXInsertUserAccountLog(ctx context.Context, tx *xsql.Tx, accountLog *model.AccountLog) (err error) {
- _, err = tx.Exec(_insertUserAccountLog, accountLog.AccountID, accountLog.From, accountLog.To, accountLog.Ver, accountLog.State, accountLog.Name)
- return
- }
- // BizAccount .
- func (d *Dao) BizAccount(ctx context.Context, biz string, currency string) (data *model.BizAccount, err error) {
- row := d.db.QueryRow(ctx, _bizAccount, biz, currency)
- data = &model.BizAccount{}
- if err = row.Scan(&data.ID, &data.Biz, &data.Currency, &data.Balance, &data.Ver, &data.State, &data.CTime, &data.MTime); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- data = nil
- }
- return
- }
- return
- }
- // InsertBizAccount .
- func (d *Dao) InsertBizAccount(ctx context.Context, account *model.BizAccount) (id int64, err error) {
- result, err := d.db.Exec(ctx, _insertBizAccount, account.Biz, account.Currency, account.Balance, account.Ver, account.State)
- if err != nil {
- return
- }
- id, err = result.LastInsertId()
- return
- }
- // TXUpdateBizAccount .
- func (d *Dao) TXUpdateBizAccount(ctx context.Context, tx *xsql.Tx, account *model.BizAccount) (rows int64, err error) {
- result, err := tx.Exec(_updateBizAccount, account.Biz, account.Currency, account.Balance, account.State, account.Biz, account.Currency, account.Ver)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- const (
- _upsertDeltaBizAccount = "INSERT INTO account_biz (biz,currency,balance,ver,state) VALUES (?,?,?,?,?) ON DUPLICATE KEY UPDATE balance=balance+?,ver=ver+1"
- _updateDeltaBizAccount = `UPDATE account_biz SET balance=balance+?,ver=ver+1 WHERE biz=? AND currency=?`
- )
- // TXUpsertDeltaBizAccount .
- func (d *Dao) TXUpsertDeltaBizAccount(ctx context.Context, tx *xsql.Tx, account *model.BizAccount, deltaBalance int64) (rows int64, err error) {
- result, err := tx.Exec(_upsertDeltaBizAccount, account.Biz, account.Currency, deltaBalance, account.Ver, account.State, deltaBalance)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // TXUpdateDeltaBizAccount .
- func (d *Dao) TXUpdateDeltaBizAccount(ctx context.Context, tx *xsql.Tx, deltaBalance int64, biz string, currency string) (rows int64, err error) {
- result, err := tx.Exec(_updateDeltaBizAccount, deltaBalance, biz, currency)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // TXInsertBizAccountLog .
- func (d *Dao) TXInsertBizAccountLog(ctx context.Context, tx *xsql.Tx, accountLog *model.AccountLog) (err error) {
- _, err = tx.Exec(_insertBizAccountLog, accountLog.AccountID, accountLog.From, accountLog.To, accountLog.Ver, accountLog.State, accountLog.Name)
- return
- }
- // AggrIncomeUser .
- func (d *Dao) AggrIncomeUser(ctx context.Context, mid int64, currency string) (data *model.AggrIncomeUser, err error) {
- row := d.db.QueryRow(ctx, _aggrIncomeUser, mid, currency)
- data = &model.AggrIncomeUser{}
- if err = row.Scan(&data.ID, &data.MID, &data.Currency, &data.PaySuccess, &data.PayError, &data.TotalIn, &data.TotalOut, &data.CTime, &data.MTime); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- data = nil
- }
- return
- }
- return
- }
- // InsertAggrIncomeUser .
- func (d *Dao) InsertAggrIncomeUser(ctx context.Context, aggr *model.AggrIncomeUser) (id int64, err error) {
- result, err := d.db.Exec(ctx, _insertAggrIncomeUser, aggr.MID, aggr.Currency, aggr.PaySuccess, aggr.PayError, aggr.TotalIn, aggr.TotalOut)
- if err != nil {
- return
- }
- id, err = result.LastInsertId()
- return
- }
- // TXUpdateAggrIncomeUser .
- func (d *Dao) TXUpdateAggrIncomeUser(ctx context.Context, tx *xsql.Tx, aggr *model.AggrIncomeUser) (rows int64, err error) {
- result, err := tx.Exec(_updateAggrIncomeUser, aggr.MID, aggr.Currency, aggr.PaySuccess, aggr.PayError, aggr.TotalIn, aggr.TotalOut, aggr.MID, aggr.Currency)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- const (
- _upsertDeltaAggrIncomeUser = "INSERT INTO aggr_income_user (mid,currency,pay_success,pay_error,total_in,total_out) VALUES (?,?,?,?,?,?) ON DUPLICATE KEY UPDATE pay_success=pay_success+?,pay_error=pay_error+?,total_in=total_in+?,total_out=total_out+?"
- _updateDeltaAggrIncomeUser = "UPDATE aggr_income_user SET pay_success=pay_success+?,pay_error=pay_error+?,total_in=total_in+?,total_out=total_out+? WHERE mid=? AND currency=?"
- )
- // TXUpsertDeltaAggrIncomeUser .
- func (d *Dao) TXUpsertDeltaAggrIncomeUser(ctx context.Context, tx *xsql.Tx, aggr *model.AggrIncomeUser, deltaPaySuccess, deltaPayError, deltaTotalIn, deltaTotalOut int64) (rows int64, err error) {
- result, err := tx.Exec(_upsertDeltaAggrIncomeUser, aggr.MID, aggr.Currency, deltaPaySuccess, deltaPayError, deltaTotalIn, deltaTotalOut, deltaPaySuccess, deltaPayError, deltaTotalIn, deltaTotalOut)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // TXUpdateDeltaAggrIncomeUser .
- func (d *Dao) TXUpdateDeltaAggrIncomeUser(ctx context.Context, tx *xsql.Tx, deltaPaySuccess, deltaPayError, deltaTotalIn, deltaTotalOut int64, mid int64, currency string) (rows int64, err error) {
- result, err := tx.Exec(_updateDeltaAggrIncomeUser, deltaPaySuccess, deltaPayError, deltaTotalIn, deltaTotalOut, mid, currency)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // AggrIncomeUserAsset .
- func (d *Dao) AggrIncomeUserAsset(ctx context.Context, mid int64, currency string, ver int64, oid int64, otype string) (data *model.AggrIncomeUserAsset, err error) {
- row := d.db.QueryRow(ctx, _aggrIncomeUserAsset, mid, currency, ver, oid, otype)
- data = &model.AggrIncomeUserAsset{}
- if err = row.Scan(&data.ID, &data.MID, &data.Currency, &data.Ver, &data.OID, &data.OType, &data.PaySuccess, &data.PayError, &data.TotalIn, &data.TotalOut, &data.CTime, &data.MTime); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- data = nil
- }
- return
- }
- return
- }
- // InsertAggrIncomeUserAsset .
- func (d *Dao) InsertAggrIncomeUserAsset(ctx context.Context, aggr *model.AggrIncomeUserAsset) (id int64, err error) {
- result, err := d.db.Exec(ctx, _insertAggrIncomeUserAsset, aggr.MID, aggr.Currency, aggr.Ver, aggr.OID, aggr.OType, aggr.PaySuccess, aggr.PayError, aggr.TotalIn, aggr.TotalOut)
- if err != nil {
- return
- }
- id, err = result.LastInsertId()
- return
- }
- // TXUpdateAggrIncomeUserAsset .
- func (d *Dao) TXUpdateAggrIncomeUserAsset(ctx context.Context, tx *xsql.Tx, aggr *model.AggrIncomeUserAsset) (rows int64, err error) {
- result, err := tx.Exec(_updateAggrIncomeUserAsset, aggr.MID, aggr.Currency, aggr.Ver, aggr.OID, aggr.OType, aggr.PaySuccess, aggr.PayError, aggr.TotalIn, aggr.TotalOut, aggr.MID, aggr.Currency, aggr.Ver, aggr.OID, aggr.OType)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- const (
- _upsertDeltaAggrIncomeUserAsset = "INSERT INTO aggr_income_user_asset (mid,currency,`ver`,oid,otype,pay_success,pay_error,total_in,total_out) VALUES (?,?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE pay_success=pay_success+?,pay_error=pay_error+?,total_in=total_in+?,total_out=total_out+?"
- _updateDeltaAggrIncomeUserAsset = "UPDATE aggr_income_user_asset SET pay_success=pay_success+?,pay_error=pay_error+?,total_in=total_in+?,total_out=total_out+? WHERE mid=? AND currency=? AND ver=? AND oid=? AND otype=?"
- )
- // TXUpsertDeltaAggrIncomeUserAsset .
- func (d *Dao) TXUpsertDeltaAggrIncomeUserAsset(ctx context.Context, tx *xsql.Tx, aggr *model.AggrIncomeUserAsset, deltaPaySuccess, deltaPayError, deltaTotalIn, deltaTotalOut int64) (rows int64, err error) {
- result, err := tx.Exec(_upsertDeltaAggrIncomeUserAsset, aggr.MID, aggr.Currency, aggr.Ver, aggr.OID, aggr.OType, deltaPaySuccess, deltaPayError, deltaTotalIn, deltaTotalOut, deltaPaySuccess, deltaPayError, deltaTotalIn, deltaTotalOut)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // TXUpdateDeltaAggrIncomeUserAsset .
- func (d *Dao) TXUpdateDeltaAggrIncomeUserAsset(ctx context.Context, tx *xsql.Tx, deltaPaySuccess, deltaPayError, deltaTotalIn, deltaTotalOut int64, mid int64, currency string, ver int64, oid int64, otype string) (rows int64, err error) {
- result, err := tx.Exec(_updateDeltaAggrIncomeUserAsset, deltaPaySuccess, deltaPayError, deltaTotalIn, deltaTotalOut, mid, currency, ver, oid, otype)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // OrderBadDebt .
- func (d *Dao) OrderBadDebt(ctx context.Context, orderID string) (data *model.OrderBadDebt, err error) {
- row := d.db.QueryRow(ctx, _orderBadDebt, orderID)
- data = &model.OrderBadDebt{}
- if err = row.Scan(&data.ID, &data.OrderID, &data.Type, &data.State, &data.CTime, &data.MTime); err != nil {
- if err == xsql.ErrNoRows {
- err = nil
- data = nil
- }
- return
- }
- return
- }
- // InsertOrderBadDebt .
- func (d *Dao) InsertOrderBadDebt(ctx context.Context, order *model.OrderBadDebt) (id int64, err error) {
- result, err := d.db.Exec(ctx, _insertOrderBadDebt, order.OrderID, order.Type, order.State)
- if err != nil {
- return
- }
- id, err = result.LastInsertId()
- return
- }
- // TXUpdateOrderBadDebt .
- func (d *Dao) TXUpdateOrderBadDebt(ctx context.Context, tx *xsql.Tx, order *model.OrderBadDebt) (rows int64, err error) {
- result, err := tx.Exec(_updateOrderBadDebt, order.OrderID, order.Type, order.State, order.OrderID)
- if err != nil {
- return
- }
- rows, err = result.RowsAffected()
- return
- }
- // TXInsertOrderRechargeShell .
- func (d *Dao) TXInsertOrderRechargeShell(ctx context.Context, tx *xsql.Tx, order *model.OrderRechargeShell) (id int64, err error) {
- result, err := tx.Exec(_insertOrderRechargeShell, order.MID, order.OrderID, order.Biz, order.Amount, order.PayMSG, order.State, order.Ver)
- if err != nil {
- return
- }
- id, err = result.LastInsertId()
- return
- }
- // TXInsertOrderRechargeShellLog .
- func (d *Dao) TXInsertOrderRechargeShellLog(ctx context.Context, tx *xsql.Tx, order *model.OrderRechargeShellLog) (id int64, err error) {
- result, err := tx.Exec(_insertOrderRechargeShellLog, order.OrderID, order.FromState, order.ToState, order.Desc, order.BillUserMonthlyID)
- if err != nil {
- return
- }
- id, err = result.LastInsertId()
- return
- }
|