You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.9 KiB
130 lines
3.9 KiB
package lottery_ticket
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/shopspring/decimal"
|
|
"log"
|
|
"recook/internal/api/mobile/lottery_ticket/logic"
|
|
"recook/internal/dbc"
|
|
"recook/internal/libs/lottery"
|
|
"recook/internal/model/lottery_ticket"
|
|
"recook/tools"
|
|
"strconv"
|
|
)
|
|
|
|
type Notify struct {
|
|
}
|
|
|
|
// @Style 彩票回调
|
|
func (n *Notify) Ticket(c *gin.Context) {
|
|
wAction := c.PostForm("wAction")
|
|
wMessage := c.PostForm("wMessage")
|
|
// 转码
|
|
data := string(lottery.Lottery.GbkToUtf8([]byte(wMessage)))
|
|
// 验签
|
|
log.Println(data)
|
|
switch wAction {
|
|
case "101":
|
|
n.issue(data)
|
|
case "104":
|
|
n.bet(data)
|
|
case "108":
|
|
n.bonus(data)
|
|
}
|
|
c.String(200, lottery.Lottery.CallbackSuccess(wAction))
|
|
}
|
|
|
|
// @Style 期数回调
|
|
func (n *Notify) issue(jsonData string) {
|
|
issue, err := lottery.Lottery.CallbackIssue(jsonData)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return
|
|
}
|
|
info := lottery_ticket.Lottery{}
|
|
dbc.DB.First(&info, "code = ?", issue.LotId)
|
|
if info.Id > 0 {
|
|
if issue.Status == "1" {
|
|
if info.NowNumber == issue.Number {
|
|
// 已处理
|
|
// 更新期数状态
|
|
status, _ := strconv.Atoi(issue.Status)
|
|
salesMoney, _ := decimal.NewFromString(issue.SalesMoney)
|
|
bonusMoney, _ := decimal.NewFromString(issue.BonusMoney)
|
|
dbc.DB.Model(&lottery_ticket.LotteryIssue{}).Where("lottery_id = ? and number = ?", info.Id, issue.Number).Updates(lottery_ticket.LotteryIssue{
|
|
StartTime: tools.StrToSecond(issue.StartTime),
|
|
StopTime: tools.StrToSecond(issue.StopTime),
|
|
OfficialStartTime: tools.StrToSecond(issue.OfficialStartTime),
|
|
OfficialStopTime: tools.StrToSecond(issue.OfficialStopTime),
|
|
Status: status,
|
|
BonusCode: issue.BonusCode,
|
|
SalesMoney: salesMoney,
|
|
BonusMoney: bonusMoney,
|
|
})
|
|
return
|
|
}
|
|
status, _ := strconv.Atoi(issue.Status)
|
|
salesMoney, _ := decimal.NewFromString(issue.SalesMoney)
|
|
bonusMoney, _ := decimal.NewFromString(issue.BonusMoney)
|
|
dbc.DB.Create(lottery_ticket.LotteryIssue{
|
|
LotteryId: info.Id,
|
|
Number: issue.Number,
|
|
StartTime: tools.StrToSecond(issue.StartTime),
|
|
StopTime: tools.StrToSecond(issue.StopTime),
|
|
OfficialStartTime: tools.StrToSecond(issue.OfficialStartTime),
|
|
OfficialStopTime: tools.StrToSecond(issue.OfficialStopTime),
|
|
Status: status,
|
|
BonusCode: issue.BonusCode,
|
|
SalesMoney: salesMoney,
|
|
BonusMoney: bonusMoney,
|
|
})
|
|
} else {
|
|
// 更新期数状态
|
|
status, _ := strconv.Atoi(issue.Status)
|
|
salesMoney, _ := decimal.NewFromString(issue.SalesMoney)
|
|
bonusMoney, _ := decimal.NewFromString(issue.BonusMoney)
|
|
dbc.DB.Model(&lottery_ticket.LotteryIssue{}).Where("lottery_id = ? and number = ?", info.Id, issue.Number).Updates(lottery_ticket.LotteryIssue{
|
|
StartTime: tools.StrToSecond(issue.StartTime),
|
|
StopTime: tools.StrToSecond(issue.StopTime),
|
|
OfficialStartTime: tools.StrToSecond(issue.OfficialStartTime),
|
|
OfficialStopTime: tools.StrToSecond(issue.OfficialStopTime),
|
|
Status: status,
|
|
BonusCode: issue.BonusCode,
|
|
SalesMoney: salesMoney,
|
|
BonusMoney: bonusMoney,
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
// @Style 投注回调处理
|
|
func (n *Notify) bet(jsonData string) {
|
|
betS, err := lottery.Lottery.CallbackBet(jsonData)
|
|
if err != nil {
|
|
log.Println("ticket callback error:", err)
|
|
return
|
|
}
|
|
if len(betS) > 0 {
|
|
ticketInfo := lottery_ticket.LotteryTicket{}
|
|
dbc.DB.First(&ticketInfo, "order_id = ?", betS[0].OrderId)
|
|
|
|
if ticketInfo.Status == 1 {
|
|
logic.LotteryLogic.BetHandel(betS)
|
|
}
|
|
}
|
|
}
|
|
|
|
// @Style 反奖通知
|
|
func (n *Notify) bonus(jsonData string) {
|
|
bonus, err := lottery.Lottery.CallbackBonus(jsonData)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return
|
|
}
|
|
info := lottery_ticket.Lottery{}
|
|
dbc.DB.First(&info, "code = ?", bonus.Issue.LotId)
|
|
if info.Id > 0 {
|
|
logic.LotteryLogic.BonusHandel(info, bonus)
|
|
}
|
|
}
|