Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
bwallet
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Go
bwallet
Commits
7c1de849
Commit
7c1de849
authored
Jun 10, 2021
by
shajiaiming
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/redpacket' into 'develop'
红包状态 See merge request
!59
parents
bcd909ce
a8937fd6
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
202 additions
and
51 deletions
+202
-51
chain.go
models/chain.go
+0
-2
manager.go
models/manager.go
+0
-2
red_packet.go
models/red_packet.go
+11
-1
cron.go
pkg/cron/cron.go
+10
-1
red_packet.go
routers/api/app/red_packet.go
+9
-15
router.go
routers/router.go
+1
-1
red_packet.go
service/red_packet_service/red_packet.go
+166
-29
red_packet.go
validate_service/red_packet.go
+5
-0
No files found.
models/chain.go
View file @
7c1de849
...
@@ -2,7 +2,6 @@ package models
...
@@ -2,7 +2,6 @@ package models
import
(
import
(
"bwallet/pkg/setting"
"bwallet/pkg/setting"
"fmt"
"github.com/jinzhu/gorm"
"github.com/jinzhu/gorm"
)
)
...
@@ -140,7 +139,6 @@ func GetChain(id int) (*Chain, error) {
...
@@ -140,7 +139,6 @@ func GetChain(id int) (*Chain, error) {
* @return
* @return
*/
*/
func
AddChain
(
data
map
[
string
]
interface
{})
(
error
)
{
func
AddChain
(
data
map
[
string
]
interface
{})
(
error
)
{
fmt
.
Println
(
data
)
chain
:=
Chain
{
chain
:=
Chain
{
Platform
:
data
[
"platform"
]
.
(
string
),
Platform
:
data
[
"platform"
]
.
(
string
),
Address
:
data
[
"address"
]
.
(
string
),
Address
:
data
[
"address"
]
.
(
string
),
...
...
models/manager.go
View file @
7c1de849
...
@@ -2,7 +2,6 @@ package models
...
@@ -2,7 +2,6 @@ package models
import
(
import
(
"bwallet/pkg/setting"
"bwallet/pkg/setting"
"fmt"
"github.com/jinzhu/gorm"
"github.com/jinzhu/gorm"
"time"
"time"
)
)
...
@@ -85,7 +84,6 @@ func GetManagers(pageNum, pageSize int, maps interface{}) ([]*Manager, error) {
...
@@ -85,7 +84,6 @@ func GetManagers(pageNum, pageSize int, maps interface{}) ([]*Manager, error) {
delete
(
maps
.
(
map
[
string
]
interface
{}),
"uid"
)
delete
(
maps
.
(
map
[
string
]
interface
{}),
"uid"
)
}
}
}
}
fmt
.
Println
(
maps
)
err
:=
db
.
Where
(
maps
)
.
Where
(
"uid <> ?"
,
uid
)
.
Order
(
"uid desc"
)
.
Offset
(
pageNum
)
.
Limit
(
pageSize
)
.
Find
(
&
manager
)
.
Error
err
:=
db
.
Where
(
maps
)
.
Where
(
"uid <> ?"
,
uid
)
.
Order
(
"uid desc"
)
.
Offset
(
pageNum
)
.
Limit
(
pageSize
)
.
Find
(
&
manager
)
.
Error
if
err
!=
nil
&&
err
!=
gorm
.
ErrRecordNotFound
{
if
err
!=
nil
&&
err
!=
gorm
.
ErrRecordNotFound
{
return
nil
,
err
return
nil
,
err
...
...
models/red_packet.go
View file @
7c1de849
...
@@ -50,7 +50,7 @@ func ExistByPacketInfoId(packet_id string) (bool, error) {
...
@@ -50,7 +50,7 @@ func ExistByPacketInfoId(packet_id string) (bool, error) {
func
GetRedPackets
(
maps
interface
{})
([]
*
RedPacket
,
error
)
{
func
GetRedPackets
(
maps
interface
{})
([]
*
RedPacket
,
error
)
{
var
redPackets
[]
*
RedPacket
var
redPackets
[]
*
RedPacket
err
:=
db
.
Debug
()
.
Where
(
maps
)
.
Find
(
&
redPackets
)
.
Error
err
:=
db
.
Where
(
maps
)
.
Find
(
&
redPackets
)
.
Error
if
err
!=
nil
&&
err
!=
gorm
.
ErrRecordNotFound
{
if
err
!=
nil
&&
err
!=
gorm
.
ErrRecordNotFound
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -58,6 +58,16 @@ func GetRedPackets(maps interface{}) ([]*RedPacket, error) {
...
@@ -58,6 +58,16 @@ func GetRedPackets(maps interface{}) ([]*RedPacket, error) {
return
redPackets
,
nil
return
redPackets
,
nil
}
}
func
GetRedPacketsForReceive
()
([]
*
RedPacket
,
error
)
{
var
redPackets
[]
*
RedPacket
status_map
:=
[]
int
{
1
,
2
,
4
}
if
err
:=
db
.
Where
(
"status in (?)"
,
status_map
)
.
Find
(
&
redPackets
)
.
Error
;
err
!=
nil
{
return
nil
,
err
}
return
redPackets
,
nil
}
func
AddRedPacket
(
data
map
[
string
]
interface
{})
(
error
)
{
func
AddRedPacket
(
data
map
[
string
]
interface
{})
(
error
)
{
redPacket
:=
RedPacket
{
redPacket
:=
RedPacket
{
PacketId
:
data
[
"packet_id"
]
.
(
string
),
PacketId
:
data
[
"packet_id"
]
.
(
string
),
...
...
pkg/cron/cron.go
View file @
7c1de849
...
@@ -2,17 +2,26 @@ package cron
...
@@ -2,17 +2,26 @@ package cron
import
(
import
(
"bwallet/service/coin_gas_service"
"bwallet/service/coin_gas_service"
"bwallet/service/red_packet_service"
"github.com/robfig/cron"
"github.com/robfig/cron"
)
)
var
c
*
cron
.
Cron
var
c
*
cron
.
Cron
func
Setup
(){
func
Setup
()
{
c
=
cron
.
New
()
c
=
cron
.
New
()
c
.
AddFunc
(
"* * * * * *"
,
func
()
{
c
.
AddFunc
(
"* * * * * *"
,
func
()
{
coin_gas_service
.
TokenView
()
coin_gas_service
.
TokenView
()
})
})
c
.
AddFunc
(
"* * * * * *"
,
func
()
{
red_packet_service
.
UpdateReceive
()
})
c
.
AddFunc
(
"* * * * * *"
,
func
()
{
red_packet_service
.
UpdateInfo
()
})
c
.
Start
()
c
.
Start
()
}
}
routers/api/app/red_packet.go
View file @
7c1de849
...
@@ -3,11 +3,8 @@ package app
...
@@ -3,11 +3,8 @@ package app
import
(
import
(
"bwallet/pkg/errno"
"bwallet/pkg/errno"
"bwallet/pkg/handler"
"bwallet/pkg/handler"
"bwallet/pkg/util"
"bwallet/service/red_packet_service"
"bwallet/service/red_packet_service"
"bwallet/validate_service"
"bwallet/validate_service"
"github.com/Unknwon/com"
"github.com/astaxie/beego/validation"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin"
"strings"
"strings"
)
)
...
@@ -46,23 +43,20 @@ func AddRedPacket(c *gin.Context) {
...
@@ -46,23 +43,20 @@ func AddRedPacket(c *gin.Context) {
}
}
func
GetRedPackets
(
c
*
gin
.
Context
)
{
func
GetRedPackets
(
c
*
gin
.
Context
)
{
valid
:=
validation
.
Validation
{}
red_packet
:=
validate_service
.
RedPacketReq
{}
c
.
ShouldBindJSON
(
&
red_packet
)
live_id
:=
com
.
StrTo
(
c
.
DefaultQuery
(
"live_id"
,
"0"
))
.
MustInt
()
valid
.
Required
(
live_id
,
"live_id"
)
.
Message
(
"直播间参数不能为空"
)
//user_id := com.StrTo(c.DefaultQuery("user_id", "0")).MustInt()
//valid.Required(user_id, "user_id").Message("用户参数不能为空")
if
valid
.
HasErrors
()
{
if
ok
,
errors
:=
validate_service
.
ValidateInputs
(
red_packet
);
!
ok
{
handler
.
SendResponse
(
c
,
valid
.
Errors
[
0
],
nil
)
for
_
,
err
:=
range
errors
{
handler
.
SendResponse
(
c
,
errno
.
ErrBind
,
strings
.
Join
(
err
,
" "
))
return
return
}
}
}
RedPacketService
:=
red_packet_service
.
RedPacket
{
RedPacketService
:=
red_packet_service
.
RedPacket
{
LiveId
:
int32
(
live_i
d
),
LiveId
:
int32
(
red_packet
.
LiveI
d
),
PageNum
:
util
.
GetPage
(
c
)
,
UserId
:
red_packet
.
UserId
,
PageSize
:
util
.
GetLimit
(
c
)
,
Status
:
1
,
}
}
info
,
err
:=
RedPacketService
.
GetRedPackets
()
info
,
err
:=
RedPacketService
.
GetRedPackets
()
...
...
routers/router.go
View file @
7c1de849
...
@@ -51,7 +51,7 @@ func InitRouter() *gin.Engine {
...
@@ -51,7 +51,7 @@ func InitRouter() *gin.Engine {
client
.
GET
(
"/fees/recommended"
,
app
.
GetTransactionGas
)
client
.
GET
(
"/fees/recommended"
,
app
.
GetTransactionGas
)
client
.
GET
(
"/tokenview/explore"
,
app
.
Explore
)
client
.
GET
(
"/tokenview/explore"
,
app
.
Explore
)
client
.
GE
T
(
"/red-packets"
,
app
.
GetRedPackets
)
client
.
POS
T
(
"/red-packets"
,
app
.
GetRedPackets
)
client
.
POST
(
"/red-packet"
,
app
.
AddRedPacket
)
client
.
POST
(
"/red-packet"
,
app
.
AddRedPacket
)
api
:=
r
.
Group
(
"/api"
)
api
:=
r
.
Group
(
"/api"
)
...
...
service/red_packet_service/red_packet.go
View file @
7c1de849
...
@@ -2,11 +2,13 @@ package red_packet_service
...
@@ -2,11 +2,13 @@ package red_packet_service
import
(
import
(
"bwallet/models"
"bwallet/models"
"bwallet/pkg/util"
"bytes"
"bytes"
"encoding/json"
"encoding/json"
"fmt"
"fmt"
"io/ioutil"
"io/ioutil"
"net/http"
"net/http"
"strings"
)
)
type
RedPacketInfoResult
struct
{
type
RedPacketInfoResult
struct
{
...
@@ -39,16 +41,46 @@ type RedPacketInfoResp struct {
...
@@ -39,16 +41,46 @@ type RedPacketInfoResp struct {
Error
RedPacketInfoError
Error
RedPacketInfoError
}
}
type
RedPacketReceiveDetailResp
struct
{
Id
int32
Result
RedPacketReceiveDetailResult
Error
RedPacketInfoError
}
type
RedPacketReceiveDetailResult
struct
{
Rows
[]
RedPacketReceiveDetailRowResult
`json:"rows"`
}
type
RedPacketReceiveDetailRowResult
struct
{
Id
int32
`json:"id"`
UserId
string
`json:"user_id"`
UserName
string
`json:"user_name"`
UserMobile
string
`json:"user_mobile"`
PlatformId
string
`json:"platform_id"`
CoinId
int32
`json:"coin_id"`
CoinName
string
`json:"coin_name"`
Amount
float32
`json:"amount"`
Status
uint8
`json:"status"`
CreateAt
int32
`json:"create_at"`
}
type
Params
struct
{
PacketId
string
`json:"packet_id"`
}
type
RedPacketInfoReq
struct
{
Method
string
`json:"method"`
Params
Params
`json:"params"`
}
type
RedPacket
struct
{
type
RedPacket
struct
{
PacketId
string
`json:"packet_id"`
PacketId
string
`json:"packet_id"`
LiveId
int32
`json:"live_id"`
LiveId
int32
`json:"live_id"`
Avatar
string
`json:"avatar"`
Avatar
string
`json:"avatar"`
Receive
string
`json:"receive"`
Receive
string
`json:"receive"`
UserId
int32
`json:"user_id"`
Status
uint8
`json:"status"`
RedPacketInfo
RedPacketInfoResp
RedPacketInfo
RedPacketInfoResp
PageNum
int
PageSize
int
}
}
type
RedPacketResp
struct
{
type
RedPacketResp
struct
{
...
@@ -59,6 +91,7 @@ type RedPacketResp struct {
...
@@ -59,6 +91,7 @@ type RedPacketResp struct {
Avatar
string
`json:"avatar"`
Avatar
string
`json:"avatar"`
UserName
string
`json:"user_name"`
UserName
string
`json:"user_name"`
UserMobile
string
`json:"user_mobile"`
UserMobile
string
`json:"user_mobile"`
ReceiveStatus
uint8
`json:"receive_status"`
}
}
func
(
r
*
RedPacket
)
ExistByPacketInfoId
()
(
bool
,
error
)
{
func
(
r
*
RedPacket
)
ExistByPacketInfoId
()
(
bool
,
error
)
{
...
@@ -73,6 +106,9 @@ func (r *RedPacket) GetRedPackets() ([]*RedPacketResp, error) {
...
@@ -73,6 +106,9 @@ func (r *RedPacket) GetRedPackets() ([]*RedPacketResp, error) {
var
redPacketResp
=
[]
*
RedPacketResp
{}
var
redPacketResp
=
[]
*
RedPacketResp
{}
for
_
,
val
:=
range
redPacketsInfo
{
for
_
,
val
:=
range
redPacketsInfo
{
if
strings
.
Contains
(
util
.
ToString
(
val
.
Receive
),
util
.
ToString
(
r
.
UserId
))
{
continue
}
tmp
:=
&
RedPacketResp
{}
tmp
:=
&
RedPacketResp
{}
tmp
.
CoinName
=
val
.
CoinName
tmp
.
CoinName
=
val
.
CoinName
tmp
.
Amount
=
val
.
Amount
tmp
.
Amount
=
val
.
Amount
...
@@ -89,7 +125,14 @@ func (r *RedPacket) GetRedPackets() ([]*RedPacketResp, error) {
...
@@ -89,7 +125,14 @@ func (r *RedPacket) GetRedPackets() ([]*RedPacketResp, error) {
func
(
r
*
RedPacket
)
Add
()
error
{
func
(
r
*
RedPacket
)
Add
()
error
{
url
:=
"https://redback.biqianbao.net/red-packet"
url
:=
"https://redback.biqianbao.net/red-packet"
var
jsonStr
=
[]
byte
(
`{"method": "Info","params": {"packet_id": "fbbad00c-a91f-4eb3-88a1-cab02b1be26f"},"id":123}`
)
var
params
RedPacketInfoReq
params
.
Method
=
"Info"
params
.
Params
.
PacketId
=
r
.
PacketId
jsonStr
,
err
:=
json
.
Marshal
(
params
)
if
err
!=
nil
{
return
err
}
req
,
err
:=
http
.
NewRequest
(
"POST"
,
url
,
bytes
.
NewBuffer
(
jsonStr
))
req
,
err
:=
http
.
NewRequest
(
"POST"
,
url
,
bytes
.
NewBuffer
(
jsonStr
))
req
.
Header
.
Set
(
"Content-Type"
,
"application/json"
)
req
.
Header
.
Set
(
"Content-Type"
,
"application/json"
)
...
@@ -106,7 +149,6 @@ func (r *RedPacket) Add() error {
...
@@ -106,7 +149,6 @@ func (r *RedPacket) Add() error {
var
redPacketResp
RedPacketInfoResp
var
redPacketResp
RedPacketInfoResp
err
=
json
.
Unmarshal
(
body
,
&
redPacketResp
)
err
=
json
.
Unmarshal
(
body
,
&
redPacketResp
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
return
err
return
err
}
}
if
redPacketResp
.
Error
.
Code
!=
0
{
if
redPacketResp
.
Error
.
Code
!=
0
{
...
@@ -145,23 +187,122 @@ func (r *RedPacket) Add() error {
...
@@ -145,23 +187,122 @@ func (r *RedPacket) Add() error {
func
(
r
*
RedPacket
)
Edit
()
error
{
func
(
r
*
RedPacket
)
Edit
()
error
{
return
models
.
EditRedPacket
(
r
.
getMaps
(),
map
[
string
]
interface
{}{
return
models
.
EditRedPacket
(
r
.
getMaps
(),
map
[
string
]
interface
{}{
//"user_id": r.RedPacketInfo.UserId,
"remain"
:
r
.
RedPacketInfo
.
Result
.
Remain
,
//"user_name": r.RedPacketInfo.UserName,
"status"
:
r
.
RedPacketInfo
.
Result
.
Status
,
//"user_mobile": r.RedPacketInfo.UserMobile,
"update_at"
:
r
.
RedPacketInfo
.
Result
.
UpdateAt
,
//"platform_id": r.RedPacketInfo.PlatformId,
})
//"type": r.RedPacketInfo.Type,
}
//"coin_id": r.RedPacketInfo.CoinId,
//"coin_name": r.RedPacketInfo.CoinName,
func
UpdateReceive
()
error
{
//"amount": r.RedPacketInfo.Amount,
redPacketsInfo
,
err
:=
models
.
GetRedPacketsForReceive
()
//"size": r.RedPacketInfo.Size,
if
err
!=
nil
{
//"to": r.RedPacketInfo.To,
return
err
//"remain": r.RedPacketInfo.Remain,
}
//"status": r.RedPacketInfo.Status,
url
:=
"https://redback.biqianbao.net/red-packet"
//"remark": r.RedPacketInfo.Remark,
for
_
,
val
:=
range
redPacketsInfo
{
//"create_at": r.RedPacketInfo.CreateAt,
var
params
RedPacketInfoReq
//"update_at": r.RedPacketInfo.UpdateAt,
params
.
Method
=
"ReceiveDetail"
//"expires_at": r.RedPacketInfo.ExpiresAt,
params
.
Params
.
PacketId
=
val
.
PacketId
jsonStr
,
_
:=
json
.
Marshal
(
params
)
if
err
!=
nil
{
continue
}
req
,
err
:=
http
.
NewRequest
(
"POST"
,
url
,
bytes
.
NewBuffer
(
jsonStr
))
req
.
Header
.
Set
(
"Content-Type"
,
"application/json"
)
client
:=
&
http
.
Client
{}
resp
,
err
:=
client
.
Do
(
req
)
if
err
!=
nil
{
continue
}
defer
resp
.
Body
.
Close
()
body
,
_
:=
ioutil
.
ReadAll
(
resp
.
Body
)
var
redPacketReceiveDetailResp
RedPacketReceiveDetailResp
err
=
json
.
Unmarshal
(
body
,
&
redPacketReceiveDetailResp
)
if
err
!=
nil
{
continue
}
if
redPacketReceiveDetailResp
.
Error
.
Code
!=
0
{
continue
}
var
receive
=
[]
int
{
20063
}
for
_
,
item
:=
range
redPacketReceiveDetailResp
.
Result
.
Rows
{
receive
=
append
(
receive
,
util
.
ToInt
(
item
.
UserId
))
}
jsonString
,
err
:=
json
.
Marshal
(
receive
)
if
err
!=
nil
{
continue
}
maps
:=
make
(
map
[
string
]
interface
{})
maps
[
"packet_id"
]
=
val
.
PacketId
models
.
EditRedPacket
(
maps
,
map
[
string
]
interface
{}{
"receive"
:
string
(
jsonString
),
})
})
}
return
nil
}
func
UpdateInfo
()
error
{
maps
:=
make
(
map
[
string
]
interface
{})
maps
[
"status"
]
=
1
redPacketsInfo
,
err
:=
models
.
GetRedPackets
(
maps
)
if
err
!=
nil
{
return
err
}
url
:=
"https://redback.biqianbao.net/red-packet"
for
_
,
val
:=
range
redPacketsInfo
{
var
params
RedPacketInfoReq
params
.
Method
=
"Info"
params
.
Params
.
PacketId
=
val
.
PacketId
jsonStr
,
_
:=
json
.
Marshal
(
params
)
if
err
!=
nil
{
continue
}
req
,
err
:=
http
.
NewRequest
(
"POST"
,
url
,
bytes
.
NewBuffer
(
jsonStr
))
req
.
Header
.
Set
(
"Content-Type"
,
"application/json"
)
client
:=
&
http
.
Client
{}
resp
,
err
:=
client
.
Do
(
req
)
if
err
!=
nil
{
continue
}
defer
resp
.
Body
.
Close
()
body
,
_
:=
ioutil
.
ReadAll
(
resp
.
Body
)
var
redPacketInfoResp
RedPacketInfoResp
err
=
json
.
Unmarshal
(
body
,
&
redPacketInfoResp
)
if
err
!=
nil
{
continue
}
var
redPacketResp
RedPacketInfoResp
err
=
json
.
Unmarshal
(
body
,
&
redPacketResp
)
if
err
!=
nil
{
return
err
}
if
redPacketResp
.
Error
.
Code
!=
0
{
fmt
.
Println
(
redPacketResp
.
Error
.
Message
)
}
if
val
.
UpdateAt
!=
redPacketResp
.
Result
.
UpdateAt
{
redPacket
:=
map
[
string
]
interface
{}{
"remain"
:
redPacketResp
.
Result
.
Remain
,
"status"
:
redPacketResp
.
Result
.
Status
,
"update_at"
:
redPacketResp
.
Result
.
UpdateAt
,
}
condition
:=
make
(
map
[
string
]
interface
{})
condition
[
"id"
]
=
val
.
ID
models
.
EditRedPacket
(
condition
,
redPacket
)
}
}
return
nil
}
}
func
(
r
*
RedPacket
)
getMaps
()
(
map
[
string
]
interface
{})
{
func
(
r
*
RedPacket
)
getMaps
()
(
map
[
string
]
interface
{})
{
...
@@ -171,12 +312,8 @@ func (r *RedPacket) getMaps() (map[string]interface{}) {
...
@@ -171,12 +312,8 @@ func (r *RedPacket) getMaps() (map[string]interface{}) {
maps
[
"live_id"
]
=
r
.
LiveId
maps
[
"live_id"
]
=
r
.
LiveId
}
}
//if r.RedPacketInfo.UserId != 0 {
if
r
.
Status
!=
0
{
// maps["user_id"] = r.RedPacketInfo.UserId
maps
[
"status"
]
=
r
.
Status
//}
}
//
//if r.RedPacketInfo.Status != 0 {
// maps["status"] = r.RedPacketInfo.Status
//}
return
maps
return
maps
}
}
validate_service/red_packet.go
View file @
7c1de849
...
@@ -5,3 +5,8 @@ type RedPacket struct {
...
@@ -5,3 +5,8 @@ type RedPacket struct {
LiveId
int32
`json:"live_id" validate:"required"`
LiveId
int32
`json:"live_id" validate:"required"`
Avatar
string
`json:"avatar" validate:"omitempty"`
Avatar
string
`json:"avatar" validate:"omitempty"`
}
}
type
RedPacketReq
struct
{
LiveId
int32
`json:"live_id" validate:"required"`
UserId
int32
`json:"user_id" validate:"required"`
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment