上传装备道具接口优化 移除调用源对象

This commit is contained in:
liwei1dao 2022-10-21 10:32:40 +08:00
parent b46952cebd
commit 929c00c967
10 changed files with 180 additions and 57 deletions

View File

@ -20,6 +20,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -43,6 +49,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -66,6 +78,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -89,6 +107,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -112,6 +136,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -135,6 +165,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -158,6 +194,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -181,6 +223,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -204,6 +252,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -227,6 +281,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -250,6 +310,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -273,6 +339,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -296,6 +368,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -319,6 +397,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -342,6 +426,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -365,6 +455,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -388,6 +484,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -411,6 +513,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -434,6 +542,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -457,6 +571,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
}, },
{ {
@ -480,6 +600,12 @@
10002, 10002,
10003, 10003,
10004 10004
],
"probability": [
10001,
10002,
10003,
10004
] ]
} }
] ]

View File

@ -9,12 +9,6 @@ import (
*/ */
type ( type (
ModuleCallSource struct {
Module string //来源模块
FuncName string //来源方法
Describe string //调用描述
}
ISys interface { ISys interface {
IsAccess(funcName string, userLv int32) bool IsAccess(funcName string, userLv int32) bool
} }
@ -26,13 +20,13 @@ type (
//道具背包接口 //道具背包接口
IItems interface { IItems interface {
//查询用户背包物品数量 //查询用户背包物品数量
QueryItemAmount(source *ModuleCallSource, uId string, itemid string) (amount uint32) QueryItemAmount(uId string, itemid string) (amount uint32)
//查询用户背包多个物品数量 //查询用户背包多个物品数量
QueryItemsAmount(source *ModuleCallSource, uId string, itemid ...string) (result map[string]uint32) QueryItemsAmount(uId string, itemid ...string) (result map[string]uint32)
///添加单个物品到背包 (可以加物品和减物品) ///添加单个物品到背包 (可以加物品和减物品)
AddItem(source *ModuleCallSource, session IUserSession, itemid string, addnum int32, bPush bool) (code pb.ErrorCode) AddItem(session IUserSession, itemid string, addnum int32, bPush bool) (code pb.ErrorCode)
///添加多个物品到背包 (可以加物品和减物品) ///添加多个物品到背包 (可以加物品和减物品)
AddItems(source *ModuleCallSource, session IUserSession, items map[string]int32, bPush bool) (code pb.ErrorCode) AddItems(session IUserSession, items map[string]int32, bPush bool) (code pb.ErrorCode)
} }
//英雄 //英雄
@ -103,11 +97,11 @@ type (
//武器模块 //武器模块
IEquipment interface { IEquipment interface {
//查询服务资源数量 db id //查询服务资源数量 db id
QueryEquipment(source *ModuleCallSource, uid string, Id string) (equipment *pb.DB_Equipment, code pb.ErrorCode) QueryEquipment(uid string, Id string) (equipment *pb.DB_Equipment, code pb.ErrorCode)
//查询服务资源数量 参数武器配置id //查询服务资源数量 参数武器配置id
QueryEquipmentAmount(source *ModuleCallSource, uid string, equipmentId string) (amount uint32) QueryEquipmentAmount(uid string, equipmentId string) (amount uint32)
//添加新武器 //添加新武器
AddNewEquipments(source *ModuleCallSource, session IUserSession, cIds map[string]uint32, bPush bool) (code pb.ErrorCode) AddNewEquipments(session IUserSession, cIds map[string]uint32, bPush bool) (code pb.ErrorCode)
} }
IMainline interface { IMainline interface {
// 修改章节信息 // 修改章节信息

View File

@ -21,6 +21,7 @@ func (this *apiComp) Forg(session comm.IUserSession, req *pb.EquipmentForgReq) (
var ( var (
conf *cfg.GameEquipComposeData conf *cfg.GameEquipComposeData
need []*cfg.Gameatn need []*cfg.Gameatn
equis map[string]uint32
err error err error
) )
if code = this.ForgCheck(session, req); code != pb.ErrorCode_Success { if code = this.ForgCheck(session, req); code != pb.ErrorCode_Success {
@ -31,6 +32,7 @@ func (this *apiComp) Forg(session comm.IUserSession, req *pb.EquipmentForgReq) (
return return
} }
need = make([]*cfg.Gameatn, len(conf.Need)) need = make([]*cfg.Gameatn, len(conf.Need))
equis = map[string]uint32{}
for n := int32(0); n < req.Num; n++ { for n := int32(0); n < req.Num; n++ {
for i, v := range conf.Need { for i, v := range conf.Need {
if need[i] == nil { if need[i] == nil {
@ -43,11 +45,16 @@ func (this *apiComp) Forg(session comm.IUserSession, req *pb.EquipmentForgReq) (
need[i].N += v.N need[i].N += v.N
} }
} }
index := comm.GetRandW(conf.Probability)
equis[string(conf.Equip[index])]++
} }
if code = this.module.ConsumeRes(session, need, true); code != pb.ErrorCode_Success { if code = this.module.ConsumeRes(session, need, true); code != pb.ErrorCode_Success {
return return
} }
if code = this.module.AddNewEquipments(session, equis, true); code != pb.ErrorCode_Success {
return
}
session.SendMsg(string(this.module.GetType()), "forg", &pb.EquipmentForgResp{Issucc: true}) session.SendMsg(string(this.module.GetType()), "forg", &pb.EquipmentForgResp{Issucc: true})
return return

View File

@ -70,7 +70,7 @@ func (this *Equipment) EventUserOffline(session comm.IUserSession) {
//IEquipment------------------------------------------------------------------------------------------------------------------------------- //IEquipment-------------------------------------------------------------------------------------------------------------------------------
//查询武器信息 //查询武器信息
func (this *Equipment) QueryEquipment(source *comm.ModuleCallSource, uid string, id string) (equipment *pb.DB_Equipment, code pb.ErrorCode) { func (this *Equipment) QueryEquipment(uid string, id string) (equipment *pb.DB_Equipment, code pb.ErrorCode) {
var err error var err error
if uid == "" || id == "" { if uid == "" || id == "" {
this.Errorf("请求参数错误 uid:%s Id:%s", uid, id) this.Errorf("请求参数错误 uid:%s Id:%s", uid, id)
@ -88,13 +88,13 @@ func (this *Equipment) QueryEquipment(source *comm.ModuleCallSource, uid string,
} }
//查询卡片数量 //查询卡片数量
func (this *Equipment) QueryEquipmentAmount(source *comm.ModuleCallSource, uid string, equipmentId string) (amount uint32) { func (this *Equipment) QueryEquipmentAmount(uid string, equipmentId string) (amount uint32) {
amount = this.modelEquipment.QueryEquipmentAmount(uid, equipmentId) amount = this.modelEquipment.QueryEquipmentAmount(uid, equipmentId)
return return
} }
//添加武器 //添加武器
func (this *Equipment) AddNewEquipments(source *comm.ModuleCallSource, session comm.IUserSession, cIds map[string]uint32, bPush bool) (code pb.ErrorCode) { func (this *Equipment) AddNewEquipments(session comm.IUserSession, cIds map[string]uint32, bPush bool) (code pb.ErrorCode) {
var ( var (
err error err error
change []*pb.DB_Equipment change []*pb.DB_Equipment

View File

@ -102,10 +102,6 @@ func Test_Module_AddNewEquipments(t *testing.T) {
//查询武器信息 //查询武器信息
func Test_Module_QueryEquipment(t *testing.T) { func Test_Module_QueryEquipment(t *testing.T) {
equipment, code := module.QueryEquipment(&comm.ModuleCallSource{ equipment, code := module.QueryEquipment("0_62b16dda909b2f8faeff788d", "62bd82860863ffbf2eb67f3a")
Module: "Test",
FuncName: "Test_Module",
Describe: "摸底测试",
}, "0_62b16dda909b2f8faeff788d", "62bd82860863ffbf2eb67f3a")
log.Debugf("Test_Module equipment:%v code:%d", equipment, code) log.Debugf("Test_Module equipment:%v code:%d", equipment, code)
} }

View File

@ -54,7 +54,7 @@ func (this *apiComp) SellItem(session comm.IUserSession, req *pb.ItemsSellItemRe
return return
} }
item.Amount = item.Amount - req.Amount item.Amount = item.Amount - req.Amount
if code = this.module.AddItemforGrid(&comm.ModuleCallSource{}, session, req.GridId, -1*int32(req.Amount), true); code != pb.ErrorCode_Success { if code = this.module.AddItemforGrid(session, req.GridId, -1*int32(req.Amount), true); code != pb.ErrorCode_Success {
return return
} }
// if item.Amount == 0 { // if item.Amount == 0 {

View File

@ -46,7 +46,7 @@ func (this *apiComp) Useitem(session comm.IUserSession, req *pb.ItemsUseItemReq)
code = pb.ErrorCode_ItemsNoEnough code = pb.ErrorCode_ItemsNoEnough
return return
} }
if code = this.module.AddItemforGrid(&comm.ModuleCallSource{}, session, req.GridId, -1*itemcf.SynthetizeNum*int32(req.Amount), true); code != pb.ErrorCode_Success { if code = this.module.AddItemforGrid(session, req.GridId, -1*itemcf.SynthetizeNum*int32(req.Amount), true); code != pb.ErrorCode_Success {
return return
} }
sale := RandomProps(prop) sale := RandomProps(prop)
@ -61,7 +61,7 @@ func (this *apiComp) Useitem(session comm.IUserSession, req *pb.ItemsUseItemReq)
code = pb.ErrorCode_ConfigNoFound code = pb.ErrorCode_ConfigNoFound
return return
} }
if code = this.module.AddItemforGrid(&comm.ModuleCallSource{}, session, req.GridId, -1*int32(req.Amount), true); code != pb.ErrorCode_Success { if code = this.module.AddItemforGrid(session, req.GridId, -1*int32(req.Amount), true); code != pb.ErrorCode_Success {
return return
} }
var sale []*cfg.Gameatn var sale []*cfg.Gameatn
@ -94,7 +94,7 @@ func (this *apiComp) Useitem(session comm.IUserSession, req *pb.ItemsUseItemReq)
for range sale { for range sale {
sale = append(sale, RandomProps(prop).Prize...) sale = append(sale, RandomProps(prop).Prize...)
} }
if code = this.module.AddItemforGrid(&comm.ModuleCallSource{}, session, req.GridId, -1*int32(req.Amount), true); code != pb.ErrorCode_Success { if code = this.module.AddItemforGrid(session, req.GridId, -1*int32(req.Amount), true); code != pb.ErrorCode_Success {
return return
} }
if code = this.module.DispenseRes(session, sale, true); code != pb.ErrorCode_Success { if code = this.module.DispenseRes(session, sale, true); code != pb.ErrorCode_Success {
@ -115,7 +115,7 @@ func (this *apiComp) Useitem(session comm.IUserSession, req *pb.ItemsUseItemReq)
}) })
} }
} }
if code = this.module.AddItemforGrid(&comm.ModuleCallSource{}, session, req.GridId, -1*int32(req.Amount), true); code != pb.ErrorCode_Success { if code = this.module.AddItemforGrid(session, req.GridId, -1*int32(req.Amount), true); code != pb.ErrorCode_Success {
return return
} }
if code = this.module.DispenseRes(session, sale, true); code != pb.ErrorCode_Success { if code = this.module.DispenseRes(session, sale, true); code != pb.ErrorCode_Success {
@ -143,7 +143,7 @@ func (this *apiComp) Useitem(session comm.IUserSession, req *pb.ItemsUseItemReq)
return return
} }
if code = this.module.AddItemforGrid(&comm.ModuleCallSource{}, session, req.GridId, -1*itemcf.SynthetizeNum*int32(req.Amount), true); code != pb.ErrorCode_Success { if code = this.module.AddItemforGrid(session, req.GridId, -1*itemcf.SynthetizeNum*int32(req.Amount), true); code != pb.ErrorCode_Success {
return return
} }
sale = make([]*cfg.Gameatn, 0, len(prop)) sale = make([]*cfg.Gameatn, 0, len(prop))

View File

@ -60,7 +60,7 @@ func (this *Items) EventUserOffline(session comm.IUserSession) {
//IItems------------------------------------------------------------------------------------------------------------------------------- //IItems-------------------------------------------------------------------------------------------------------------------------------
///查询用户背包物品数量 ///查询用户背包物品数量
func (this *Items) QueryItemAmount(source *comm.ModuleCallSource, uId string, itemid string) (amount uint32) { func (this *Items) QueryItemAmount(uId string, itemid string) (amount uint32) {
defer this.Debugf("获取物品 uId:%s itemid:%s addnum:%d ", uId, itemid, amount) defer this.Debugf("获取物品 uId:%s itemid:%s addnum:%d ", uId, itemid, amount)
amount = 0 amount = 0
if result := this.modelItems.QueryUserPackItemsAmount(uId, itemid); result != nil && len(result) > 0 { if result := this.modelItems.QueryUserPackItemsAmount(uId, itemid); result != nil && len(result) > 0 {
@ -70,12 +70,12 @@ func (this *Items) QueryItemAmount(source *comm.ModuleCallSource, uId string, it
} }
///查询用户背包多个物品数量 ///查询用户背包多个物品数量
func (this *Items) QueryItemsAmount(source *comm.ModuleCallSource, uId string, itemid ...string) (result map[string]uint32) { func (this *Items) QueryItemsAmount(uId string, itemid ...string) (result map[string]uint32) {
result = this.modelItems.QueryUserPackItemsAmount(uId, itemid...) result = this.modelItems.QueryUserPackItemsAmount(uId, itemid...)
return return
} }
func (this *Items) AddItemforGrid(source *comm.ModuleCallSource, session comm.IUserSession, gridid string, addnum int32, bPush bool) (code pb.ErrorCode) { func (this *Items) AddItemforGrid(session comm.IUserSession, gridid string, addnum int32, bPush bool) (code pb.ErrorCode) {
var ( var (
err error err error
change []*pb.DB_UserItemData change []*pb.DB_UserItemData
@ -100,7 +100,7 @@ func (this *Items) AddItemforGrid(source *comm.ModuleCallSource, session comm.IU
} }
///添加单个物品到背包 (可以加物品和减物品) ///添加单个物品到背包 (可以加物品和减物品)
func (this *Items) AddItem(source *comm.ModuleCallSource, session comm.IUserSession, itemid string, addnum int32, bPush bool) (code pb.ErrorCode) { func (this *Items) AddItem(session comm.IUserSession, itemid string, addnum int32, bPush bool) (code pb.ErrorCode) {
var ( var (
err error err error
change []*pb.DB_UserItemData change []*pb.DB_UserItemData
@ -125,7 +125,7 @@ func (this *Items) AddItem(source *comm.ModuleCallSource, session comm.IUserSess
} }
///添加多个物品到背包 (可以加物品和减物品) ///添加多个物品到背包 (可以加物品和减物品)
func (this *Items) AddItems(source *comm.ModuleCallSource, session comm.IUserSession, items map[string]int32, bPush bool) (code pb.ErrorCode) { func (this *Items) AddItems(session comm.IUserSession, items map[string]int32, bPush bool) (code pb.ErrorCode) {
var ( var (
err error err error
change []*pb.DB_UserItemData change []*pb.DB_UserItemData

View File

@ -227,12 +227,6 @@ func (this *ModuleBase) SendMsgToCUsers(mainType, subType string, msg proto.Mess
// 只校验资源 参数 atn格式 // 只校验资源 参数 atn格式
func (this *ModuleBase) CheckRes(session comm.IUserSession, res []*cfg.Gameatn) (code pb.ErrorCode) { func (this *ModuleBase) CheckRes(session comm.IUserSession, res []*cfg.Gameatn) (code pb.ErrorCode) {
source := &comm.ModuleCallSource{
Module: string(this.module.GetType()),
FuncName: "CheckRes",
Describe: "检查资源是否够",
}
//校验消费资源是否充足 //校验消费资源是否充足
for _, v := range res { for _, v := range res {
if v.A == comm.AttrType { //用户属性资源 if v.A == comm.AttrType { //用户属性资源
@ -246,7 +240,7 @@ func (this *ModuleBase) CheckRes(session comm.IUserSession, res []*cfg.Gameatn)
// code = pb.ErrorCode_ConfigurationException // code = pb.ErrorCode_ConfigurationException
// return // return
// } // }
if amount := this.ModuleItems.QueryItemAmount(source, session.GetUserId(), v.T); amount < uint32(v.N) { if amount := this.ModuleItems.QueryItemAmount(session.GetUserId(), v.T); amount < uint32(v.N) {
code = pb.ErrorCode_ResNoEnough code = pb.ErrorCode_ResNoEnough
this.Errorf("道具不足:A:%s,T:%s,N:%d", v.A, v.T, v.N) this.Errorf("道具不足:A:%s,T:%s,N:%d", v.A, v.T, v.N)
return return
@ -275,11 +269,7 @@ func (this *ModuleBase) ConsumeRes(session comm.IUserSession, res []*cfg.Gameatn
this.Errorf("not found res type") // 找不到资源类型 this.Errorf("not found res type") // 找不到资源类型
} }
} }
source := &comm.ModuleCallSource{
Module: string(this.module.GetType()),
FuncName: "CheckConsumeRes",
Describe: "消耗资源",
}
// 校验数量 // 校验数量
for k, v := range attrs { for k, v := range attrs {
if this.ModuleUser.QueryAttributeValue(session.GetUserId(), k) < -int64(v) { // -v 负负得正 if this.ModuleUser.QueryAttributeValue(session.GetUserId(), k) < -int64(v) { // -v 负负得正
@ -289,7 +279,7 @@ func (this *ModuleBase) ConsumeRes(session comm.IUserSession, res []*cfg.Gameatn
} }
} }
for k, v := range items { for k, v := range items {
if int32(this.ModuleItems.QueryItemAmount(source, session.GetUserId(), k)) < -v { if int32(this.ModuleItems.QueryItemAmount(session.GetUserId(), k)) < -v {
code = pb.ErrorCode_ResNoEnough code = pb.ErrorCode_ResNoEnough
this.Errorf("道具不足: A: item, T:%s, N:%d", k, v) this.Errorf("道具不足: A: item, T:%s, N:%d", k, v)
return return
@ -304,7 +294,7 @@ func (this *ModuleBase) ConsumeRes(session comm.IUserSession, res []*cfg.Gameatn
this.Debugf("消耗玩家资源: %v", attrs) this.Debugf("消耗玩家资源: %v", attrs)
} }
if len(items) > 0 { if len(items) > 0 {
code = this.ModuleItems.AddItems(source, session, items, bPush) code = this.ModuleItems.AddItems(session, items, bPush)
if code != pb.ErrorCode_Success { if code != pb.ErrorCode_Success {
return return
} }
@ -327,11 +317,6 @@ func (this *ModuleBase) DispenseRes(session comm.IUserSession, res []*cfg.Gameat
attrs = make(map[string]int32, 0) attrs = make(map[string]int32, 0)
equips = make(map[string]uint32, 0) equips = make(map[string]uint32, 0)
source := &comm.ModuleCallSource{
Module: string(this.module.GetType()),
FuncName: "DispenseRes",
Describe: "发放资源",
}
for _, v := range res { for _, v := range res {
switch v.A { switch v.A {
case comm.AttrType: case comm.AttrType:
@ -354,7 +339,7 @@ func (this *ModuleBase) DispenseRes(session comm.IUserSession, res []*cfg.Gameat
this.Debugf("发放用户资源: %v [%v]", attrs, code) this.Debugf("发放用户资源: %v [%v]", attrs, code)
} }
if len(items) > 0 { //道具资源 if len(items) > 0 { //道具资源
code = this.ModuleItems.AddItems(source, session, items, bPush) code = this.ModuleItems.AddItems(session, items, bPush)
this.Debugf("发放道具资源: %v [%v]", items, code) this.Debugf("发放道具资源: %v [%v]", items, code)
} }
if len(heros) > 0 { //卡片资源 if len(heros) > 0 { //卡片资源
@ -362,7 +347,7 @@ func (this *ModuleBase) DispenseRes(session comm.IUserSession, res []*cfg.Gameat
this.Debugf("发放英雄资源: %v [%v]", heros, code) this.Debugf("发放英雄资源: %v [%v]", heros, code)
} }
if len(equips) > 0 { if len(equips) > 0 {
code = this.ModuleEquipment.AddNewEquipments(source, session, equips, bPush) code = this.ModuleEquipment.AddNewEquipments(session, equips, bPush)
this.Debugf("发放装备资源: %v [%v]", equips, code) this.Debugf("发放装备资源: %v [%v]", equips, code)
} }

View File

@ -18,6 +18,7 @@ type GameEquipComposeData struct {
Need []*Gameatn Need []*Gameatn
Ico string Ico string
Equip []int32 Equip []int32
Probability []int32
} }
const TypeId_GameEquipComposeData = -210350968 const TypeId_GameEquipComposeData = -210350968
@ -60,6 +61,20 @@ func (_v *GameEquipComposeData)Deserialize(_buf map[string]interface{}) (err err
} }
} }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["probability"].([]interface{}); !_ok_ { err = errors.New("probability error"); return }
_v.Probability = make([]int32, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ int32
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
_v.Probability = append(_v.Probability, _list_v_)
}
}
return return
} }