Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"account.go",
"aggr.go",
"asset.go",
"bill.go",
"log.go",
"model.go",
"pay.go",
"trade.go",
],
importpath = "go-common/app/service/main/ugcpay/model",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = ["//library/log:go_default_library"],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,56 @@
package model
import (
"time"
)
// AccountUser .
type AccountUser struct {
ID int64
Biz string
MID int64
Currency string
Balance int64
Ver int64
State string
CTime time.Time
MTime time.Time
}
// AccountBiz .
type AccountBiz struct {
ID int64
Biz string
Currency string
Balance int64
Ver int64
State string
CTime time.Time
MTime time.Time
}
// OrderRechargeShell .
type OrderRechargeShell struct {
ID int64
MID int64
OrderID string
Biz string
Amount int64
PayMSG string
State string
Ver int64
CTime time.Time
MTime time.Time
}
// OrderRechargeShellLog .
type OrderRechargeShellLog struct {
ID int64
OrderID string
FromState string
ToState string
Desc string
BillUserMonthlyID string
CTime time.Time
MTime time.Time
}

View File

@@ -0,0 +1,49 @@
package model
import (
"time"
)
// AggrIncomeUser .
type AggrIncomeUser struct {
ID int64
MID int64
Currency string
PaySuccess int64
PayError int64
TotalIn int64
TotalOut int64
CTime time.Time
MTime time.Time
}
// AggrIncomeUserAsset .
type AggrIncomeUserAsset struct {
ID int64
MID int64
Currency string
Ver int64
OID int64
OType string
PaySuccess int64
PayError int64
TotalIn int64
TotalOut int64
CTime time.Time
MTime time.Time
}
// AggrIncomeUserAssetList .
type AggrIncomeUserAssetList struct {
MID int64
Ver int64
Assets []*AggrIncomeUserAsset
Page *Page
}
// Page .
type Page struct {
Num int64
Size int64
Total int64
}

View File

@@ -0,0 +1,38 @@
package model
import (
"time"
)
// Asset .
type Asset struct {
ID int64
MID int64
OID int64
OType string
Currency string
Price int64
State string
CTime time.Time
MTime time.Time
}
// PickPrice 获得平台相应的价格
func (a Asset) PickPrice(platform string, pp map[string]int64) (price int64) {
var ok bool
if price, ok = pp[platform]; ok {
return
}
return a.Price
}
// AssetRelation .
type AssetRelation struct {
ID int64
OID int64
OType string
MID int64
State string
CTime time.Time
MTime time.Time
}

View File

@@ -0,0 +1,19 @@
package model
import (
"time"
)
// Bill .
type Bill struct {
ID int64
MID int64
Biz string
Currency string
In int64
Out int64
Ver int64
Version int64
CTime time.Time
MTime time.Time
}

View File

@@ -0,0 +1,17 @@
package model
import (
"time"
)
// LogAccount .
type LogAccount struct {
ID int64
AccountID int64
From int64
To int64
Ver int64
State string
CTime time.Time
MTime time.Time
}

View File

@@ -0,0 +1,44 @@
package model
// 各种状态枚举
const (
StateValid = "valid"
StateInvalid = "invalid"
BizAsset = "asset"
BizElec = "elec"
AssetRelationPaid = "paid"
AssetRelationNone = "none"
AssetRelationMiss = "miss"
OTypeArchive = "archive"
OrderStateCreated = "created"
OrderStatePaying = "paying"
OrderStatePaid = "paid"
OrderStateFailed = "failed"
OrderStateClosed = "closed"
OrderStateExpired = "expired"
OrderStateSettled = "settled"
OrderStateRefunding = "refunding"
OrderStateRefunded = "refunded"
OrderStateSettledRefunding = "st_refunding"
OrderStateSettledRefunded = "st_refunded"
OrderStateRefundFinished = "ref_finished"
OrderStateDupRefunded = "dup_refunded"
OrderStateBadDebt = "bad_debt"
PayStatePaying = "PAYING"
PayStateOverdue = "OVERDUE"
PayStateClosed = "CLOSED"
PayStateFail = "FAIL"
PayStateSuccess = "SUCCESS"
PayStateFinished = "FINISHED"
PayStatePaySuccessAndCancel = "PAY_SUCCESS_AND_CANCEL"
PayStatePayCancel = "PAY_CANCEL"
PayStateRefund = "REFUND_SUCCESS"
RechargeShellSuccess = "success"
RechargeShellFail = "fail"
)

View File

@@ -0,0 +1,73 @@
package model
// PayCallbackMSG .
type PayCallbackMSG struct {
CustomerID int64 `json:"customerId"` //业务id
ServiceType int64 `json:"serviceType"` //业务方业务类型
TXID int64 `json:"txId"` //支付平台支付id
OrderID string `json:"orderId"` //业务方订单id
DeviceType int64 `json:"deviceType"` //支付设备渠道类型, 1 pc 2 webapp 3 app 4jsapi 5 server 6小程序支付 7聚合二维码支付
PayStatus string `json:"payStatus"` //支付状态FINISHED交易成功|SUCCESS成功|REFUND(退款中)|PAYING支付中|CLOSED关闭|NOT_PAY未支付|FAIL(支付失败)|WITHDRAW(支付撤销) 支付回调暂时仅通知 SUCCESS, 其他状态不通知。
PayChannelID int64 `json:"payChannelId"` //支付渠道id, 用户实际选择的支付实体渠道。(payChannel 代表笼统的微信、支付宝等第三方渠道, payChannelId 代表实际签约的实体渠道 id)
PayChannel string `json:"payChannel"` //支付渠道alipay(支付宝)、wechat(微信) ,paypal(paypal), iap(In App Purchase)、qpay(QQ支付)、huabei(花呗支付)、ali_bank网银支付、bocom交行信用卡支付、bpB币支付
PayChannelName string `json:"payChannelName"` //支付渠道名称 如支付宝、微信、PayPal、IAP、QQ、花呗、网银支付、B币支付
PayAccount string `json:"payAccount"` //支付渠道账号
PayBank string `json:"payBank"` //支付银行
FeeType string `json:"feeType"` //货币类型默认人民币CNY
PayAmount int64 `json:"payAmount"` //实际支付金额
PayMsgContent string `json:"payMsgContent"` //支付返回的额外信息json格式字符串比如payCounponAmount使用B币券金额单位 分payBpAmountB币金额
ExtData string `json:"extData"` //支付请求时的扩展json串
ExpiredTime int64 `json:"expiredTime"` //IAP代扣过期时间毫秒值,业务方需要判断expiredTime的值因为重复通知返回的expiredTime是一样的
OrderPayTime string `json:"orderPayTime"` //订单支付时间格式0000-00-00 00:00:00
Timestamp string `json:"timestamp"` //请求时间戳,毫秒
TraceID string `json:"traceId"` //追踪id
SignType string `json:"signType"` //签名类型 默认MD5
Sign string `json:"sign"` //签名(应当支持支付平台这边新增返回字段)
}
// IsSuccess 是否为成功支付内容
func (p *PayCallbackMSG) IsSuccess() bool {
return p.PayStatus == PayStateFinished || p.PayStatus == PayStateSuccess
}
// PayRefundCallbackMSG .
type PayRefundCallbackMSG struct {
CustomerID int64 `json:"customerId"` //业务id
OrderID string `json:"orderId"` //业务方订单id
TXID int64 `json:"txId"` //支付平台支付id
List []PayRefundCallbackEle `json:"batchRefundList"` //
}
// PayRefundCallbackEle .
type PayRefundCallbackEle struct {
RefundStatus string `json:"refundStatus"`
RefundStatusDesc string `json:"refundStatusDesc"`
RefundEndTime string `json:"refundEndTime"`
}
// IsSuccess 是否为成功退款内容
func (p *PayRefundCallbackEle) IsSuccess() bool {
return p.RefundStatus == PayStateRefund
}
// RechargeShellCallbackMSG .
type RechargeShellCallbackMSG struct {
CustomerID int64 `json:"customerId"`
Status string `json:"status"`
ThirdOrderNo string `json:"thirdOrderNo"`
MID int64 `json:"mid"`
}
// PayQuery .
type PayQuery struct {
Orders []*PayOrder `json:"orders"`
}
// PayOrder .
type PayOrder struct {
TXID int64 `json:"txId"`
OrderID string `json:"orderId"`
PayStatus string `json:"payStatus"`
PayStatusDesc string `json:"payStatusDesc"`
FailReason string `json:"failReason"`
}

View File

@@ -0,0 +1,138 @@
package model
import (
"time"
"go-common/library/log"
)
// LogOrder .
type LogOrder struct {
ID int64
OrderID string
FromState string
ToState string
Desc string
CTime time.Time
MTime time.Time
}
// Order .
type Order struct {
ID int64
OrderID string
MID int64
Biz string
Platform string
OID int64
OType string
Fee int64
RealFee int64
Currency string
PayID string
PayReason string
PayTime time.Time
RefundTime time.Time
Version int64
State string // created 已创建, paying 支付中, paid 已支付, failed 支付失败, closed 已关闭, expired 已超时, finished 已完成(支付成功且对账成功)
CTime time.Time
MTime time.Time
}
// IsPay 是否已支付
func (o Order) IsPay() bool {
return o.State == OrderStatePaid || o.State == OrderStateSettled
}
// IsRefunding 是否为退款中
func (o Order) IsRefunding() bool {
return o.State == OrderStateRefunding
}
// ParsePaidTime 解析支付成功时间
func (o *Order) ParsePaidTime(t string) {
o.PayTime = o.parsePayTime(t)
}
// ParseRefundedTime 解析退款成功时间
func (o *Order) ParseRefundedTime(t string) {
o.RefundTime = o.parsePayTime(t)
}
func (o Order) parsePayTime(tstr string) (t time.Time) {
var err error
if t, err = time.ParseInLocation("2006-01-02 15:04:05", tstr, time.Local); err != nil {
log.Error("Order parse pay time from timestr: %s, err: %+v", t, err)
t = time.Now() // 兜底
}
return
}
// ReturnState 返回前端显示state重复下单的退费状态被认为是已付费
func (o Order) ReturnState() string {
if o.State == OrderStateDupRefunded {
return OrderStatePaid
}
return o.State
}
// UpdateState 更新状态return true 更新成功false 更新失败(无需更新)
func (o *Order) UpdateState(state string) (changed bool) {
switch o.State { // 当前state
case OrderStateCreated, OrderStatePaying:
switch state {
case OrderStatePaying, OrderStatePaid, OrderStateFailed, OrderStateClosed, OrderStateExpired, OrderStateDupRefunded:
changed = true
}
case OrderStatePaid:
if state == OrderStateSettled || state == OrderStateRefunding || state == OrderStateDupRefunded || state == OrderStateRefunded || state == OrderStateBadDebt {
changed = true
}
case OrderStateFailed, OrderStateClosed, OrderStateExpired:
if state == OrderStatePaid {
changed = true
}
case OrderStateRefunding:
if state == OrderStateRefunded {
changed = true
}
case OrderStateSettled:
if state == OrderStateSettledRefunding || state == OrderStateSettledRefunded {
changed = true
}
case OrderStateSettledRefunding:
if state == OrderStateSettledRefunded {
changed = true
}
case OrderStateSettledRefunded:
if state == OrderStateRefundFinished {
changed = true
}
}
if changed {
o.State = state
} else {
log.Error("order update state from : %s , to : %s", o.State, state)
}
return
}
// OrderRefund .
type OrderRefund struct {
ID int64
OrderID int64
State string
CTime time.Time
MTime time.Time
}
// OrderBadDebt .
type OrderBadDebt struct {
ID int64
OrderID int64
Type string
State string
CTime time.Time
MTime time.Time
}