go_dreamfactory/modules/stonehenge/api_shop.go
2023-11-02 22:10:01 +08:00

82 lines
2.2 KiB
Go

package stonehenge
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
//参数校验
func (this *apiComp) StoreCheck(session comm.IUserSession, req *pb.StonehengeStoreReq) (errdata *pb.ErrorData) {
if req.StoreId == 0 {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.String(),
}
}
return
}
func (this *apiComp) Store(session comm.IUserSession, req *pb.StonehengeStoreReq) (errdata *pb.ErrorData) {
var (
stone *pb.DBStonehenge
err error
storeConf *cfg.GameStoneStoreData
update map[string]interface{}
)
update = make(map[string]interface{})
if errdata = this.StoreCheck(session, req); errdata != nil {
return
}
if stone, err = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.String(),
Message: err.Error(),
}
return
}
if storeConf, err = this.module.configure.GetStoneStoreConf(req.StoreId); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.String(),
Message: err.Error(),
}
return
}
newEvent := storeConf.EventId
this.module.modelStonehenge.AddNewEvent([]int32{newEvent}, stone)
if stone.Rooms.Shop == nil {
stone.Rooms.Shop = make(map[int32]int32)
}
// 校验次数限制
if stone.Rooms.Shop[storeConf.EventId] >= storeConf.LimitTime { // 超过购买上限
errdata = &pb.ErrorData{
Code: pb.ErrorCode_StonehengeStoreMax,
Title: pb.ErrorCode_StonehengeStoreMax.String(),
}
return
}
// 校验 是否有这个事件
// if _, ok := stone.Rooms.Eventid[storeConf.EventId]; ok {
// errdata = &pb.ErrorData{
// Code: pb.ErrorCode_StonehengeCantBuy,
// Title: pb.ErrorCode_StonehengeCantBuy.String(),
// }
// return
// }
stone.Rooms.Shop[storeConf.EventId] += 1
stone.Rooms.Eventid[storeConf.EventId] = false
update["rooms"] = stone.Rooms
this.module.modelStonehenge.ChangeStonehengeData(session.GetUserId(), update)
session.SendMsg(string(this.module.GetType()), "store", &pb.StonehengeStoreResp{
StoreId: req.StoreId,
Shop: stone.Rooms.Shop,
Room: stone.Rooms,
})
return
}