go-common/app/job/main/ugcpay/dao/elec_mysql.go
2019-04-22 18:49:16 +08:00

136 lines
4.9 KiB
Go

package dao
import (
"context"
"math"
"go-common/app/job/main/ugcpay/model"
xsql "go-common/library/database/sql"
)
const (
_oldElecOrderList = `SELECT id,mid,pay_mid,order_no,elec_num,status,ctime,mtime FROM elec_pay_order WHERE id>? ORDER BY ID ASC LIMIT ?`
_oldElecMessageList = `SELECT id,mid,ref_mid,IFNULL(ref_id,0),message,av_no,date_version,type,state,ctime,mtime FROM elec_message WHERE id>? ORDER BY ID ASC LIMIT ?`
_upsertElecMessage = "INSERT INTO elec_message (id,`ver`,avid,up_mid,pay_mid,message,replied,hidden,ctime,mtime) VALUES (?,?,?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE `ver`=?,avid=?,up_mid=?,pay_mid=?,message=?,replied=?,hidden=?"
_upsertElecReply = "INSERT INTO elec_reply (id,message_id,reply,hidden,ctime,mtime) VALUES (?,?,?,?,?,?) ON DUPLICATE KEY UPDATE message_id=?,reply=?,hidden=?"
_upsertElecAVRank = "INSERT INTO rank_elec_av (ver,avid,up_mid,pay_mid,pay_amount,hidden) VALUES (?,?,?,?,?,?) ON DUPLICATE KEY UPDATE pay_amount = pay_amount + ?"
_upsertElecUPRank = "INSERT INTO rank_elec_up (ver,up_mid,pay_mid,pay_amount,hidden) VALUES (?,?,?,?,?) ON DUPLICATE KEY UPDATE pay_amount = pay_amount + ?"
_selectOldElecTradeInfo = "SELECT id,order_no,IFNULL(av_no,0) FROM elec_pay_trade_info WHERE order_no=? LIMIT 1"
)
// UpsertElecMessage .
func (d *Dao) UpsertElecMessage(ctx context.Context, data *model.DBElecMessage) (err error) {
_, err = d.dbrank.Exec(ctx, _upsertElecMessage, data.ID, data.Ver, data.AVID, data.UPMID, data.PayMID, data.Message, data.Replied, data.Hidden, data.CTime, data.MTime, data.Ver, data.AVID, data.UPMID, data.PayMID, data.Message, data.Replied, data.Hidden)
return
}
// UpsertElecReply .
func (d *Dao) UpsertElecReply(ctx context.Context, data *model.DBElecReply) (err error) {
_, err = d.dbrank.Exec(ctx, _upsertElecReply, data.ID, data.MSGID, data.Reply, data.Hidden, data.CTime, data.MTime, data.MSGID, data.Reply, data.Hidden)
return
}
// TXUpsertElecAVRank .
func (d *Dao) TXUpsertElecAVRank(ctx context.Context, tx *xsql.Tx, ver int64, avID int64, upMID, payMID int64, deltaPayAmount int64, hidden bool) (err error) {
_, err = tx.Exec(_upsertElecAVRank, ver, avID, upMID, payMID, deltaPayAmount, hidden, deltaPayAmount)
return
}
// TXUpsertElecUPRank .
func (d *Dao) TXUpsertElecUPRank(ctx context.Context, tx *xsql.Tx, ver int64, upMID, payMID int64, deltaPayAmount int64, hidden bool) (err error) {
_, err = tx.Exec(_upsertElecUPRank, ver, upMID, payMID, deltaPayAmount, hidden, deltaPayAmount)
return
}
// RawOldElecTradeInfo .
func (d *Dao) RawOldElecTradeInfo(ctx context.Context, orderID string) (data *model.DBOldElecPayTradeInfo, err error) {
row := d.dbrankold.QueryRow(ctx, _selectOldElecTradeInfo, orderID)
data = &model.DBOldElecPayTradeInfo{}
if err = row.Scan(&data.ID, &data.OrderID, &data.AVID); err != nil {
if err == xsql.ErrNoRows {
err = nil
data = nil
}
return
}
return
}
// OldElecMessageList .
func (d *Dao) OldElecMessageList(ctx context.Context, startID int64, limit int) (maxID int64, list []*model.DBOldElecMessage, err error) {
var (
rows *xsql.Rows
)
if rows, err = d.dbrankold.Query(ctx, _oldElecMessageList, startID, limit); err != nil {
return
}
defer rows.Close()
for rows.Next() {
var (
p = &model.DBOldElecMessage{}
)
if err = rows.Scan(&p.ID, &p.MID, &p.RefMID, &p.RefID, &p.Message, &p.AVID, &p.DateVer, &p.Type, &p.State, &p.CTime, &p.MTime); err != nil {
return
}
if maxID < p.ID {
maxID = p.ID
}
list = append(list, p)
}
if err = rows.Err(); err != nil {
return
}
return
}
// OldElecOrderList .
func (d *Dao) OldElecOrderList(ctx context.Context, startID int64, limit int) (maxID int64, list []*model.DBOldElecPayOrder, err error) {
var (
rows *xsql.Rows
)
if rows, err = d.dbrankold.Query(ctx, _oldElecOrderList, startID, limit); err != nil {
return
}
defer rows.Close()
for rows.Next() {
var (
p = &model.DBOldElecPayOrder{}
)
if err = rows.Scan(&p.ID, &p.UPMID, &p.PayMID, &p.OrderID, &p.ElecNum, &p.Status, &p.CTime, &p.MTime); err != nil {
return
}
if maxID < p.ID {
maxID = p.ID
}
list = append(list, p)
}
if err = rows.Err(); err != nil {
return
}
return
}
const (
_elecAddSetting = `INSERT INTO elec_user_setting (mid,value) VALUES (?,?) ON DUPLICATE KEY UPDATE value=value|?`
_elecDeleteSetting = `INSERT INTO elec_user_setting (mid,value) VALUES (?,?) ON DUPLICATE KEY UPDATE value=value&?`
)
// ElecAddSetting .
func (d *Dao) ElecAddSetting(ctx context.Context, defaultValue int32, mid int64, bitValue int32) (err error) {
defaultValue |= bitValue
_, err = d.dbrank.Exec(ctx, _elecAddSetting, mid, defaultValue, bitValue)
return
}
// ElecDeleteSetting .
func (d *Dao) ElecDeleteSetting(ctx context.Context, defaultValue int32, mid int64, bitValue int32) (err error) {
andValue := math.MaxInt32 ^ bitValue
defaultValue &= andValue
_, err = d.dbrank.Exec(ctx, _elecDeleteSetting, mid, defaultValue, andValue)
return
}