123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395 |
- package qznn
- import (
- "encoding/json"
- "errors"
- "time"
- "github.com/sirupsen/logrus"
- "gogs.daxia.dev/huanan/pkg.daxia.dev/db"
- "gogs.daxia.dev/huanan/pkg.daxia.dev/time_utils"
- "gorm.io/gorm"
- gameQZ "nn.daxia.dev/game/qznn"
- "nn.daxia.dev/gameproto"
- "nn.daxia.dev/handler/api"
- "nn.daxia.dev/model"
- "nn.daxia.dev/nxd"
- )
- type GetRecordListReq struct {
- Page int `json:"page"`
- PageSize int `json:"page_size"`
- DayRange int `json:"day_range"`
- }
- type GetOpenRecordListReq struct {
- RoomID int `josn:"room_id"`
- Page int `json:"page"`
- PageSize int `json:"page_size"`
- DayRange int `json:"day_range"`
- }
- type ReadyReq struct {
- }
- type UnReadyReq struct {
- }
- type ChooseMasterReq struct {
- Mul int
- }
- type ChooseMulReq struct {
- Mul int
- }
- type OpenReq struct {
- }
- type ConnectReq struct {
- }
- type DisconnectReq struct {
- }
- func Ready(req api.PerformReq) error {
- var err error
- userModel := req.UserModel
- readyReq := ReadyReq{}
- err = json.Unmarshal(req.Msg, &readyReq)
- if err != nil {
- logrus.Error(err)
- return err
- }
- gameInstance := gameQZ.GetInstance()
- err = gameInstance.Ready(int32(userModel.ID))
- if err != nil {
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), nil)
- return nil
- }
- func UnReady(req api.PerformReq) error {
- var err error
- userModel := req.UserModel
- unReadyReq := UnReadyReq{}
- err = json.Unmarshal(req.Msg, &unReadyReq)
- if err != nil {
- logrus.Error(err)
- return err
- }
- gameInstance := gameQZ.GetInstance()
- err = gameInstance.UnReady(int32(userModel.ID))
- if err != nil {
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), nil)
- return nil
- }
- func ChooseMaster(req api.PerformReq) error {
- var err error
- userModel := req.UserModel
- chooseMasterReq := ChooseMasterReq{}
- err = json.Unmarshal(req.Msg, &chooseMasterReq)
- if err != nil {
- logrus.Error(err)
- return err
- }
- gameInstance := gameQZ.GetInstance()
- err = gameInstance.ChooseMaster(int32(userModel.ID), int32(chooseMasterReq.Mul))
- if err != nil {
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), nil)
- return nil
- }
- func ChooseMul(req api.PerformReq) error {
- var err error
- userModel := req.UserModel
- chooseMulReq := ChooseMulReq{}
- err = json.Unmarshal(req.Msg, &chooseMulReq)
- if err != nil {
- logrus.Error(err)
- return err
- }
- gameInstance := gameQZ.GetInstance()
- err = gameInstance.ChooseMul(int32(userModel.ID), int32(chooseMulReq.Mul))
- if err != nil {
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), nil)
- return nil
- }
- func Open(req api.PerformReq) error {
- var err error
- userModel := req.UserModel
- openReq := OpenReq{}
- err = json.Unmarshal(req.Msg, &openReq)
- if err != nil {
- logrus.Error(err)
- return err
- }
- gameInstance := gameQZ.GetInstance()
- err = gameInstance.OpenCard(int32(userModel.ID))
- if err != nil {
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), nil)
- return nil
- }
- func GetRecordList(req api.PerformReq) error {
- var err error
- userModel := req.UserModel
- getRecordListReq := GetRecordListReq{}
- err = json.Unmarshal(req.Msg, &getRecordListReq)
- if err != nil {
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- orderModelList := make([]model.GameOrder, 0)
- recordRespList := make([]*gameproto.GameRecordItem, 0)
- total := int64(0)
- page := getRecordListReq.Page
- pageSize := getRecordListReq.PageSize
- queryDB := db.GetDB().Model(model.GameOrder{}).Where("user_id = ?", userModel.ID)
- var startIssue time.Time
- var endIssue time.Time
- tz := time_utils.GetCNZone()
- timeNow := time.Now().In(tz)
- switch getRecordListReq.DayRange {
- case 1:
- startIssue, _ = time.ParseInLocation("2006-01-02 15:04:05", timeNow.Format("2006-01-02")+" 00:00:00", tz)
- endIssue, _ = time.ParseInLocation("2006-01-02 15:04:05", timeNow.Format("2006-01-02")+" 23:59:59", tz)
- case 2:
- timeYesterday := timeNow.Add(-1 * time.Hour * 24)
- startIssue, _ = time.ParseInLocation("2006-01-02 15:04:05", timeYesterday.Format("2006-01-02")+" 00:00:00", tz)
- endIssue, _ = time.ParseInLocation("2006-01-02 15:04:05", timeYesterday.Format("2006-01-02")+" 23:59:59", tz)
- case 3:
- startIssue = time_utils.GetFirstDateOfWeek(timeNow)
- endIssue = time_utils.GetLastDateOfWeek(timeNow)
- case 4:
- startIssue = time_utils.GetFirstDateOfMonth(timeNow)
- endIssue = time_utils.GetLastDateOfMonth(timeNow)
- default:
- return errors.New("day range 错误")
- }
- err = queryDB.
- Where("created_at >= ? and created_at <= ?", startIssue, endIssue).
- Count(&total).Error
- if err != nil {
- err = errors.New("内部错误(Q101)")
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- if total == 0 {
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), &gameproto.GameRecordResp{
- Total: int32(total),
- RecordList: recordRespList,
- })
- return nil
- }
- err = queryDB.Offset((page - 1) * pageSize).
- Limit(pageSize).
- Order("id desc").
- Scan(&orderModelList).
- Error
- if err == gorm.ErrRecordNotFound {
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), &gameproto.GameRecordResp{
- Total: int32(total),
- RecordList: recordRespList,
- })
- return nil
- }
- if err != nil {
- err = errors.New("内部错误(Q102)")
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- for _, orderModel := range orderModelList {
- recordRespList = append(recordRespList, &gameproto.GameRecordItem{
- CreatedAt: orderModel.CreatedAt.Unix(),
- RoomID: int64(orderModel.RoomID),
- RoomType: int32(orderModel.RoomType),
- Issue: orderModel.Issue,
- OpenNumber: orderModel.OpenNumber,
- BaseAmount: orderModel.BaseAmount.StringFixed(2),
- IsDraw: int32(orderModel.IsDraw),
- DrawTime: orderModel.DrawTime.Unix(),
- IsMaster: int32(orderModel.IsMaster),
- MasterMul: int32(orderModel.MasterMul),
- Mul: int32(orderModel.Mul),
- IsWin: int32(orderModel.IsWin),
- WinAmount: orderModel.WinAmount.StringFixed(2),
- })
- }
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), &gameproto.GameRecordResp{
- Total: int32(total),
- RecordList: recordRespList,
- })
- return nil
- }
- func GetOpenRecordList(req api.PerformReq) error {
- var err error
- userModel := req.UserModel
- getOpenRecordListReq := GetOpenRecordListReq{}
- err = json.Unmarshal(req.Msg, &getOpenRecordListReq)
- if err != nil {
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- openLogModelList := make([]model.GameOpenLogQP, 0)
- openLogRespList := make([]*gameproto.GameOpenRecordItem, 0)
- total := int64(0)
- page := getOpenRecordListReq.Page
- pageSize := getOpenRecordListReq.PageSize
- roomID := getOpenRecordListReq.RoomID
- queryDB := db.GetDB().Model(model.GameOpenLogQP{}).Where("user_id = ?", userModel.ID)
- var startTime time.Time
- var endTime time.Time
- tz := time_utils.GetCNZone()
- timeNow := time.Now().In(tz)
- switch getOpenRecordListReq.DayRange {
- case 1:
- startTime, _ = time.ParseInLocation("2006-01-02 15:04:05", timeNow.Format("2006-01-02")+" 00:00:00", tz)
- endTime, _ = time.ParseInLocation("2006-01-02 15:04:05", timeNow.Format("2006-01-02")+" 23:59:59", tz)
- case 2:
- timeYesterday := timeNow.Add(-1 * time.Hour * 24)
- startTime, _ = time.ParseInLocation("2006-01-02 15:04:05", timeYesterday.Format("2006-01-02")+" 00:00:00", tz)
- endTime, _ = time.ParseInLocation("2006-01-02 15:04:05", timeYesterday.Format("2006-01-02")+" 23:59:59", tz)
- case 3:
- startTime = time_utils.GetFirstDateOfWeek(timeNow)
- endTime = time_utils.GetLastDateOfWeek(timeNow)
- case 4:
- startTime = time_utils.GetFirstDateOfMonth(timeNow)
- endTime = time_utils.GetLastDateOfMonth(timeNow)
- default:
- return errors.New("day range 错误")
- }
- err = queryDB.
- Where("open_time >= ? and open_time <= ? and room_id = ?", startTime, endTime, roomID).
- Count(&total).Error
- if err != nil {
- err = errors.New("内部错误(Q101)")
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- if total == 0 {
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), &gameproto.GameOpenRecordResp{
- Total: int32(total),
- OpenRecordList: openLogRespList,
- })
- return nil
- }
- err = queryDB.Offset((page - 1) * pageSize).
- Limit(pageSize).
- Order("id desc").
- Scan(&openLogModelList).
- Error
- if err == gorm.ErrRecordNotFound {
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), &gameproto.GameOpenRecordResp{
- Total: int32(total),
- OpenRecordList: openLogRespList,
- })
- return nil
- }
- if err != nil {
- err = errors.New("内部错误(Q102)")
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- for _, openLogModel := range openLogModelList {
- openLogRespList = append(openLogRespList, &gameproto.GameOpenRecordItem{
- RoomID: int64(openLogModel.RoomID),
- RoomType: openLogModel.RoomType,
- Issue: openLogModel.Issue,
- OpenNumber1: openLogModel.OpenNumber1,
- OpenNumber2: openLogModel.OpenNumber2,
- OpenNumber3: openLogModel.OpenNumber3,
- OpenNumber4: openLogModel.OpenNumber4,
- OpenNumber5: openLogModel.OpenNumber5,
- OpenTime: openLogModel.OpenTime.Unix(),
- Hash: openLogModel.Hash,
- })
- }
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), &gameproto.GameOpenRecordResp{
- Total: int32(total),
- OpenRecordList: openLogRespList,
- })
- return nil
- }
|