feat(user-talk): 优化聊天功能中的物品奖励逻辑

重构 Talk 方法中物品奖励的获取方式,使用新的配置服务以支持多物品 ID 奖励机制。
移除了对 github.com/gogf/gf/v2/util/grand 包的依赖,改为通过服务获取实际物品数量。

同时更新了相关模型定义:
- 修改 MineralCollectionConfig 中 ItemID 为数组形式以支持多个物品配置
- 调整 ItemGift 模型字段
This commit is contained in:
2025-12-22 19:04:16 +08:00
parent 8505bfd4e3
commit cf7736a3e7
10 changed files with 86 additions and 49 deletions

View File

@@ -5,8 +5,6 @@ import (
"blazing/logic/service/item"
"blazing/logic/service/player"
"blazing/modules/config/service"
"github.com/gogf/gf/v2/util/grand"
)
func (h Controller) Talk(data *item.TalkCountInboundInfo, c *player.Player) (result *item.TalkCountOutboundInfo, err errorcode.ErrorCode) {
@@ -31,16 +29,15 @@ func (h Controller) TalkCate(data *item.TalkCateInboundInfo, c *player.Player) (
return result, errorcode.ErrorCodes.ErrResourceUnavailable
}
//更新次数
config := service.TalkConfigServiceS.GetCache(int(data.ID))
config := service.NewTalkConfigService().GetCache(int(data.ID))
for _, v := range config {
count := grand.N(int(v.ItemMinCount), int(v.ItemMaxCount))
//service.NewItemService().GetItemCount(config.ItemID)
// r := dict.DictInfoServiceS.DataID("fusion")
// trueitemid := gconv.Uint32(r[gconv.Uint32(v.ItemID)].Remark)
ret := c.ItemAdd(uint32(v.ItemID), uint32(count))
for _, itemid := range config.ItemID {
ritemcount := service.NewItemService().GetItemCount(itemid)
ret := c.ItemAdd(uint32(itemid), uint32(ritemcount))
if ret {
result.OutList = append(result.OutList, item.CateInfo{ID: v.ItemID, Count: uint32(count)})
result.OutList = append(result.OutList, item.CateInfo{ID: itemid, Count: uint32(ritemcount)})
}
}