123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 |
- package model
- import (
- "leafstalk/otherutils/deepcopy"
- "strconv"
- "time"
- "xorm.io/xorm"
- )
- // 支付状态
- const (
- PayStateNo = 0 // 未支付
- PayStateNotify = 1 // 已通知
- PayStatePayed = 2 // 已支付
- PayStateCancle = 3 // 已取消
- PayStateItemError = 4 // 购买的道具不对
- )
- // 扣款状态
- const (
- DeductStateNo = 0
- DeductStateSucess = 1
- DeductStateUnKnown = 2
- DeductStateFail = 3
- )
- // 发货状态
- const (
- DeliverStateNo = 0 //未发货
- DeliverStateSending = 1 // 发货中
- DeliverStateSucess = 2 // 已发货
- DeliverStateSucessMail = 3 // 已发货 邮件
- DeliverStateFail = 4
- DeliverStateExcept = 5
- )
- const (
- PayMethodForbid = 0 // 禁止
- PayMethodNormal = 1 // 正常
- PayMethodClientService = 2 // 客服
- )
- const (
- PhoneAndroid = 1 // 安卓
- PhoneIos = 2 // 苹果
- )
- type TraceState struct {
- QueryTs int64
- PayMethod int
- }
- type PayPlayer struct {
- Id int64
- PlayerId int64 `xorm:"BIGINT index 'playerid'"`
- OpenId string `xorm:"varchar(255) 'openId'"`
- GdtVid string `xorm:"varchar(255) 'gdtVid'"`
- GateId int64 `xorm:"varchar(255) 'gateId'"`
- AdSrc string `xorm:"varchar(255) 'adSrc'"`
- SessionKey string `xorm:"varchar(255) 'sessionKey'"`
- TraceOrders map[string]*TraceState `xorm:"text 'traceOrders'"` // 游戏内订单 //最近支付订单 不用保存太多,最多50笔
- IP string `xorm:"varchar(50) 'ip'"`
- // Friends []int64 `xorm:"-"`
- // GameOutOrders map[string]int64 `xorm:"text 'outOrders'"` // 游戏外订单
- }
- func (m *PayPlayer) TableName() string {
- return "pay_player"
- }
- func (m *PayPlayer) QueryExist(eng *xorm.Engine) (bool, error) {
- q := new(PayPlayer)
- q.PlayerId = m.PlayerId
- return eng.Exist(q)
- }
- func (m *PayPlayer) UpdateDB(eng *xorm.Engine) (int64, error) {
- return eng.Where("playerid=?", m.PlayerId).AllCols().Update(m)
- }
- func (m *PayPlayer) GetUniqueKey() string {
- //return m.PlayerID
- return strconv.FormatInt(m.PlayerId, 10)
- }
- func CopyPayPlayer(old *PayPlayer) *PayPlayer {
- new1 := deepcopy.MustCopy(old).(*PayPlayer)
- return new1
- }
- // //0:苹果游戏外微信支付 1:安卓游戏内支付 2:安卓游戏外微信支付 3:苹果游戏内支付
- // 订单信息
- type NewPayOrder struct {
- Id int64
- PlayerId int64 `xorm:"BIGINT index 'playerid'"`
- Platform string `xorm:"varchar(10) 'platform'"`
- GoodsId int64 `xorm:"BIGINT 'goodsId'"`
- OutTradeNo string `xorm:"varchar(255) index 'outTradeNo'"`
- PayMethod int `xorm:"int 'method'"` //支付方式 1:虚拟支付 2:游戏外支付
- PhoneType int64 `xorm:"int 'phone'"` // 1: 安卓; 2: 苹果
- OpenId string `xorm:"varchar(255) 'openId'"`
- PayState int `xorm:"int 'payState'"` //支付状态 未支付 已通知 已支付
- DeductState int `xorm:"int 'deductState'"` //扣费状态
- DeliverState int `xorm:"int 'deliverState'"` //发货状态
- Price int64 `xorm:"BIGINT 'price'"`
- CreateTime time.Time `xorm:"created"`
- QueryPayCount int64 `xorm:"-"` // 查询支付结果次数
- LastQueryTs int64 `xorm:"BIGINT 'lastQueryTs'"` // 查询支付服务的时间戳
- }
- func (m *NewPayOrder) TableName() string {
- return "newpayorder"
- }
- func (m *NewPayOrder) QueryExist(eng *xorm.Engine) (bool, error) {
- q := new(NewPayOrder)
- q.OutTradeNo = m.OutTradeNo
- return eng.Exist(q)
- }
- func (m *NewPayOrder) UpdateDB(eng *xorm.Engine) (int64, error) {
- return eng.Where("outTradeNo=?", m.OutTradeNo).MustCols("state").Update(m)
- }
- func (m *NewPayOrder) GetUniqueKey() string {
- return m.OutTradeNo
- }
- func CopyWxPayOrder(old *NewPayOrder) *NewPayOrder {
- new1 := deepcopy.MustCopy(old).(*NewPayOrder)
- //*new1 = *old
- return new1
- }
- // 微信订单
- type VirtualPayOrder struct {
- Id int64
- PlayerId int64 `xorm:"BIGINT index 'playerId'"`
- GoodsId int64 `xorm:"BIGINT 'goodsId'"` // 购买物品
- Price int64 `xorm:"BIGINT 'price'"` //价格
- State int `xorm:"int 'state'"` //支付方式
- Platform string `xorm:"varchar(50) 'platform'"` //平台 wx:微信 tt:抖音
- PayMethod int `xorm:"int 'payMethod'"` //支付方式 //0:苹果游戏外微信支付 1:安卓游戏内支付 2:安卓游戏外微信支付 3:苹果游戏内支付
- PrePayNo string `xorm:"varchar(255) 'prePayNo'"` //预支付订单号
- OutTradeNo string `xorm:"varchar(255) 'outTradeNo'"` //支付订单号
- MchOrderNo string `xorm:"varchar(255) 'mchOrderNo'"` //商户订单号
- Balance int64 `xorm:"int 'balance'"` //游戏币个数(包含赠送)
- SaveAmt int64 `xorm:"int 'saveAmt'"` //累计充值金额的游戏币数量
- PresentSum int64 `xorm:"int 'presentSum'"` //历史累计收到赠送金额
- CreateTime time.Time `xorm:"created"`
- // SaveSum int64 `xorm:"int 'saveSum'"` //历史总游戏币金额
- // PayBalance int64 `xorm:"int 'payBalance'"` //预扣后的余额
- // CostSum int `xorm:"int 'costSum'"` //历史总消费游戏币金额
- // PresentSum int `xorm:"int 'presentSum'"` //历史累计收到赠送金额
- // GenBalance int `xorm:"int 'genBalance'"` //赠送游戏币数量(赠送游戏币数量
- // UsedGenAmt int `xorm:"int 'usedGenAmt'"` //本次扣的赠送币的金额
- // Operation string `xorm:"varchar(255) 'operation'"`
- }
- func (m *VirtualPayOrder) TableName() string {
- return "virtualpayorder"
- }
- func (m *VirtualPayOrder) QueryExist(eng *xorm.Engine) (bool, error) {
- q := new(VirtualPayOrder)
- q.OutTradeNo = m.OutTradeNo
- return eng.Exist(q)
- }
- // 不许修改
- func (m *VirtualPayOrder) UpdateDB(eng *xorm.Engine) (int64, error) {
- //return eng.Where("playerid=?", m.PlayerID).Update(m)
- return 0, nil
- }
- func (m *VirtualPayOrder) GetUniqueKey() string {
- return m.OutTradeNo
- }
- func CopyVirtualPayOrder(old *VirtualPayOrder) *VirtualPayOrder {
- new1 := deepcopy.MustCopy(old).(*VirtualPayOrder)
- return new1
- }
- type ItemPayOrder struct {
- Id int64
- PlayerID int64 `xorm:"BIGINT index 'playerid'"`
- OutTradeNo string `xorm:"varchar(255) 'outTradeNo'"`
- Price int64 `xorm:"BIGINT 'price'"`
- GoodsId int64 `xorm:"BIGINT 'goodsId'"`
- PayState int64 `xorm:"int 'payState'"`
- DeliverState int64 `xorm:"int 'deliverState'"`
- GameInState int64 `xorm:"int 'gameInState'"` //游戏内支付状态
- PayTime int64 `xorm:"BIGINT 'payTime'"`
- MchOrderNo string `xorm:"varchar(255) 'mchOrderNo'"`
- TransactionId string `xorm:"varchar(255) 'transactionId'"`
- CreateTime time.Time `xorm:"created"`
- }
- // IOS订单
- type IosPayOrder struct {
- Id int64
- PlayerId int64 `xorm:"bigint index 'playerId'"`
- GoodsId int64 `xorm:"BIGINT 'goodsId'"`
- OpenId string `xorm:"varchar(255) 'openId'"`
- OutTradeNo string `xorm:"varchar(100) 'outTradeNo'"`
- Total int64 `xorm:"BIGINT 'total'"`
- TradeState string `xorm:"varchar(50) 'tradeState'"`
- TransactionId string `xorm:"varchar(255) 'transactionId'"`
- PayerTotal int64 `xorm:"BIGINT 'payerTotal'"`
- SuccessTime string `xorm:"varchar(255) 'successTime'"`
- PrepayId string `xorm:"varchar(255) 'prepayId'"`
- DeliverState int `xorm:"int default(0) 'deliver'"`
- CreateTime time.Time `xorm:"created" redis:"-"`
- Platform string `xorm:"varchar(50) 'platform'"` // 微信; 抖音:
- PhoneType int64 `xorm:"int 'phone'"` //1:安卓手机; 2: 苹果手机
- PayUrl string `xorm:"-"`
- // GateId int `xorm:"int 'gateId'"` //支付完,客户端查询时设置
- // QueryPayCount int64 `xorm:"-"` // 查询支付结果次数
- // LastQueryTs int64 `xorm:"BIGINT 'lastQueryTs'"` // 查询支付服务的时间戳
- // LastQueryThirdTs int64 `xorm:"-"`
- // Level int `xorm:"-"`
- }
- func (order IosPayOrder) TableName() string {
- return "wxpay_iosorder"
- }
- func (m *IosPayOrder) QueryExist(eng *xorm.Engine) (bool, error) {
- q := new(IosPayOrder)
- q.OutTradeNo = m.OutTradeNo
- return eng.Exist(q)
- }
- func (m *IosPayOrder) UpdateDB(eng *xorm.Engine) (int64, error) {
- return eng.Where("outTradeNo=?", m.OutTradeNo).Cols("tradeState", "transactionId", "payerTotal", "successTime", "state").Update(m)
- }
- func (m *IosPayOrder) GetUniqueKey() string {
- return m.OutTradeNo
- }
- func CopyIosPayOrder(old *IosPayOrder) *IosPayOrder {
- new1 := deepcopy.MustCopy(old).(*IosPayOrder) //new(IosPayOrder)
- // *new1 = *old
- return new1
- }
- type PlayerPayNotify struct {
- PlayerId int64
- GateId int64
- Platform string
- OutTradeNo string
- SysCDRP *CDRP
- PayMethod int
- ToMail int // 1: 邮箱中; 0: 背包中
- }
- // priceId int64, , outTradeNo string, sysCDRP *CDRP
- func NewPlayerPayNotify(playerId int64, gateId int64, plat string) *PlayerPayNotify {
- payNotify := new(PlayerPayNotify)
- payNotify.PlayerId = playerId
- payNotify.GateId = gateId
- payNotify.Platform = plat
- return payNotify
- }
- func (p *PlayerPayNotify) SetOrderInfo(outTradeNo string, payMethod int, sysCDRP *CDRP) {
- // p.PriceId = priceId
- p.OutTradeNo = outTradeNo
- p.SysCDRP = sysCDRP
- p.PayMethod = payMethod
- }
- func (p *PlayerPayNotify) GetPayPointId() int64 {
- return p.SysCDRP.Uid
- }
- // 玩家发货通知
- type OrderDeliverResult struct {
- ErrCode int // 见 model.DeliverStateFail
- PlayerId int64
- GateId int64
- OutTradeNo string
- PayMethod int
- }
- // const (
- // DeliverResultNormal = 0
- // DeliverResultError = 1
- // DeliverResultExcept = 2
- // )
- func NewOrderDeliverResult(payNotify *PlayerPayNotify) *OrderDeliverResult {
- return &OrderDeliverResult{
- PlayerId: payNotify.PlayerId,
- GateId: payNotify.GateId,
- OutTradeNo: payNotify.OutTradeNo,
- }
- }
|