%% --------------------------------------------------------------------------- %% @doc 交易市场头文件 %% @author zhaoyu %% @since 2019-12-17 %% --------------------------------------------------------------------------- -ifndef(MARKET_HRL). -define(MARKET_HRL, ok). %% 交易市场-交易市场物品信息ets。保存数据格式:[#market_goods{}] -define(MARKET_GOODS_ETS, market_goods_ets). %% 正在出售的商品 %% 交易市场-交易市场玩家出价信息ets。保存数据格式:[#market_bid{}] -define(MARKET_BID_ETS, market_bid_ets). %% 交易市场-入库提醒订阅信息ets。保存数据格式:[#market_reminder{}] -define(MARKET_REMINDER_ETS, market_reminder_ets). %% 交易市场-系统补给商品数据信息ets。保存数据格式:[#market_supply{}] -define(MARKET_SUPPLY_ETS, market_supply_ets). %% 市场成交记录类型-世界记录 -define(MARKET_DEAL_LOG_WORLD, 1). %% 市场成交记录类型-公会记录 -define(MARKET_DEAL_LOG_GUILD, 2). %% 市场成交记录类型-角色记录 -define(MARKET_DEAL_LOG_ROLE, 3). %% 拍卖类型-世界拍卖 -define(MARKET_SELL_TYPE_WORLD, 1). %% 拍卖类型-公会拍卖 -define(MARKET_SELL_TYPE_GUILD, 2). %% 可上架区域-社团和世界都可以上架 -define(MARKET_RANGE_ALL, 0). %% 可上架区域-只能上架世界 -define(MARKET_RANGE_WORLD, 1). %% 可上架区域-只能上架社团 -define(MARKET_RANGE_GUILD, 2). %% 系统-角色Id, 系统回购后再出售的出售者 -define(MARKET_SYS_ROLE_ID, 1). %% 系统-最大角色id : 模块功能id, -define(MARKET_SYS_MAX_ROLE_ID, 655). %% 日计数器 -define(MARKET_COUNTER_DAILY_REMINDER, 1). %% 市场操作 -define(MARKET_OPERATION_MANUAL_ON, 1). %% 手动上架 -define(MARKET_OPERATION_MANUAL_OFF, 2). %% 手动下架 -define(MARKET_OPERATION_SETTLEMENT, 3). %% 成交 -define(MARKET_OPERATION_SYS_DEL, 4). %% 系统删除 -define(MARKET_OPERATION_SYS_ON, 5). %% 系统上架 -define(MARKET_OPERATION_SYS_OFF, 6). %% 系统下架 -define(MARKET_OPERATION_OFF_TO_WORLD, 7). %% 下架流拍至世界 %% 购买方式 -define(MARKET_BUY_TYPE_NORMAL, 1). %% 购买方式-正常竞拍 -define(MARKET_BUY_TYPE_EQUIP_AUTO, 2). %% 购买方式-装备进化升星自动 %% 买卖身份 -define(MARKET_SELLER, 1). -define(MARKET_BUYER, 2). %% 推荐子类配置 -record(market_recommend_cfg, { id = 0 %% 推荐Id ,name = <<>> %% 名称 ,sell_type = 0 %% 商品大类Id ,sell_sub_type = 0 %% 商品子类Id ,quality_range = {0, 0} %% 物品品质区间 } ). %% 系统回购配置 -record(market_buyback_cfg, { goods_id = 0 %% 可回购物品Id ,open_day_min = 0 %% 开服天数 ,open_day_max = 0 %% 开服天数 ,sell_again = 0 %% 是否系统上架(1是,0否) ,buyback_time = {0, 0} %% 开售多少秒后,系统可以在此时间范围内随机回购 } ). %% 系统补货配置 -record(market_sys_sell_cfg, { goods_id = 0 %% 物品Id ,open_day_min = 0 %% 开服天数 ,open_day_max = 0 %% 开服天数 ,trigger_sys_sell_num = 0 %% 累积上架多少数量后会触发系统补充机制 ,trigger_num = 0 %% 市场上在售少于多少后触发系统进行补货 ,sell_num = 0 %% 每次补货数量 ,sell_max_num = 0 %% 每日补货数量上限 } ). %% 交易市场管理进程state -record(market_mgr, { off_time_list = [] %% 每个竞拍子类最早结束的定时信息 [#m_off_time_info{}}] ,buyback_time_list = [] %% 每个物品最早被系统回购的定时信息 [#m_buyback_time_info{}}] ,all_deal_log_list = [] %% 成交记录列表-[#deal_log_type{}] } ). %% 每个竞拍子类最早结束的定时信息 -record(m_off_time_info, { key = {0, 0} %% 每个子类key {Type, SubType} ,min_off_time = 0 %% 竞拍结束时间戳 ,timer_ref = 0 %% 竞拍结束定时器 TimerRef } ). %% 每个物品最早被系统回购的定时信息 -record(m_buyback_time_info, { goods_type_id = 0 %% 回购物品类型Id ,min_time = 0 %% 系统回购时间戳 ,timer_ref = 0 %% 系统回购定时器 TimerRef } ). %% 交易市场物品信息 -record(market_goods, { id = 0 %% 交易市场商品拍卖Id ,role_id = 0 %% 出售玩家角色Id, 非玩家出售的商品id为1或者功能id ,goods_id = 0 %% 物品唯一Id ,goods_type_id = 0 %% 物品类型Id ,num = 0 %% 物品数量 ,lev = 0 %% 物品等级 ,color = 0 %% 物品品质 ,price = 0 %% 目前竞拍价格 ,sell_type = 0 %% 上架类型:1:世界上架2:社团上架 ,guild_id = 0 %% 公会Id ,time = 0 %% 物品上架时间 ,off_time = 0 %% 物品拍卖截止时间 ,sys_buyback_time = 0 %% 系统回购时间戳-0表示系统不回购 ,sys_buyback_count = 0 %% 系统回购次数 ,is_to_world = 0 %% 公会上架流拍是否上架世界:0:否1:是 ,bidder_id = 0 %% 最高出价玩家Id ,extra_attr = [] %% 物品额外特殊属性 ,bid_count = 0 %% 出价次数 ,off_shelf = 0 %% 是否下架:超时没人买就会下架 %% 下面的字段不保存数据库 ,type = 0 %% 商品大类 ,sub_type = 0 %% 商品子类 ,buyout_price = 0 %% 交易一口价(为0时无一口价) ,career = [] %% 职业限制:[]为不限 ,sex = 0 %% 性别限制,0为不限,1为男,2为女 ,series = 0 %% 装备套数 } ). %% 交易市场玩家出价信息 -record(market_bid, { key = {0, 0} %% key: {RoleId, Id} ,id = 0 %% 交易市场商品拍卖Id ,role_id = 0 %% 出价玩家角色Id ,role_name = 0 %% 出价玩家角色名字 ,price = 0 %% 竞价 ,time = 0 %% 最后一次出价时间戳 } ). %% 交易市场玩家关注 -record(market_like, { id = 0 %% 交易市场商品拍卖Id ,role_id = 0 %% 玩家角色Id ,time = 0 %% 关注时间戳 } ). %% 入库提醒订阅信息 -record(market_reminder, { key = {0, 0} %% Key: {RoleId, GoodsTypeId} ,role_id = 0 %% 玩家角色Id ,goods_type_id = 0 %% 物品类型Id } ). %% 系统补给商品数据信息 -record(market_supply, { goods_type_id = 0 %% 物品类型Id ,num = 0 %% 全服玩家累积上架物品数量 ,supply_num = 0 %% 系统今日累积补给数量 ,time = 0 %% 系统最近一次补给时间戳 } ). %% 筛选参数 -record(market_select, { sell_type = 0 %% 拍卖类型 1:世界拍卖 2:公会拍卖 ,type = 0 %% 商品大类 ,sub_type = 0 %% 商品子类 ,lev = {0, 0} %% 等级范围 ,color = {0, 0} %% 品质范围 ,series = 0 %% 装备套数 ,career = 0 %% 职业限制:0为不限 ,sex = 0 %% 性别限制,0为不限,1为男,2为女 ,guild_id = 0 %% 公会Id } ). %% 交易市场成交记录 -record(market_deal_log, { id = 0 %% 交易市场商品拍卖Id ,role_id = 0 %% 出售玩家角色Id ,get_role_id = 0 %% 获得者玩家Id ,get_role_name = 0 %% 获得者名字 ,goods_id = 0 %% 物品唯一Id ,goods_type_id = 0 %% 物品类型Id ,num = 0 %% 物品数量 ,lev = 0 %% 物品等级 ,color = 0 %% 物品品质 ,price = 0 %% 成交价格 ,sell_type = 0 %% 上架类型:1:世界上架2:社团上架 ,guild_id = 0 %% 公会Id ,time = 0 %% 物品上架时间 ,deal_time = 0 %% 成交时间戳 ,deal_type = 0 %% 成交类型:0:竞价1:一口价 ,log_type = 0 %% 成交记录大类 ,extra_attr = [] %% 物品额外特殊属性 %% 下面的字段不保存数据库 ,type = 0 %% 商品大类 ,sub_type = 0 %% 商品子类 } ). %% 交易市场交易记录 -record(deal_log_type, { log_key = {0, 0} %% 成交记录大类-{SellType, LogType} ,log_list = [] %% 成交记录列表-[#market_deal_log{}] } ). %% 交易市场成交记录 -record(market_role_deal_log, { id = 0 %% 交易市场商品拍卖Id ,role_id = 0 %% 角色Id ,rela_role_id = 0 %% 关联玩家Id ,goods_type_id = 0 %% 物品类型Id ,num = 0 %% 物品数量 ,price = 0 %% 成交价格 ,sell_type = 0 %% 上架类型:1:世界上架2:社团上架 ,guild_id = 0 %% 公会Id ,time = 0 %% 物品上架时间 ,deal_time = 0 %% 成交时间戳 ,deal_type = 0 %% 成交类型:0:竞价1:一口价2:卖出 ,extra_attr = [] %% 物品额外特殊属性 } ). %% 角色交易市场数据 -record(market_data, { deal_log_list = [] %% 成交记录列表-[#market_role_deal_log{}] ,like_list = [] %% 角色关注的物品列表-[#market_like{}] ,like_num = 0 %% 角色关注的物品数量 ,reminder_list = [] %% 角色入库提醒订阅信息列表-[GoodsTypeId] } ). %% 交易市场出售的商品信息(竞拍时间结束自动下架的物品也保存在这个表) -define(SAVE_MARKET_GOODS, <<"REPLACE INTO `market_goods` (`id`, `role_id`, `goods_id`, `goods_type_id`, `num`, `lev`" ", `color`, `price`, `sell_type`, `guild_id`, `time`, `off_time`, `sys_buyback_time`, `is_to_world`, `bidder_id`, `extra_attr`, `sys_buyback_count`, `off_shelf`)" " values (~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, '~ts', ~p, ~p)">>). -define(BATCH_SAVE_MARKET_GOODS, <<"REPLACE INTO `market_goods` (`id`, `role_id`, `goods_id`, `goods_type_id`, `num`, `lev`" ", `color`, `price`, `sell_type`, `guild_id`, `time`, `off_time`, `sys_buyback_time`, `is_to_world`, `bidder_id`, `extra_attr`, `sys_buyback_count`, `off_shelf`)" " values ~ts">>). -define(LOAD_MARKET_GOODS, <<"SELECT `id`, `role_id`, `goods_id`, `goods_type_id`, `num`, `lev`, `color`, `price`" ", `sell_type`, `guild_id`, `time`, `off_time`, `sys_buyback_time`, `is_to_world`, `bidder_id`, `extra_attr`, `sys_buyback_count`, `off_shelf` FROM `market_goods`">>). -define(DEL_MARKET_GOODS, <<"DELETE FROM `market_goods` WHERE `id` = ~p AND `role_id` = ~p">>). %% 交易市场玩家竞拍出价 -define(SAVE_MARKET_BID, <<"REPLACE INTO `market_bid_info` (`id`, `role_id`, `role_name`, `price`, `time`) values (~p, ~p, '~ts', ~p, ~p)">>). -define(LOAD_MARKET_BID, <<"SELECT `id`, `role_id`, `role_name`, `price`, `time` FROM `market_bid_info`">>). -define(DEL_ROLE_MARKET_BID, <<"DELETE FROM `market_bid_info` WHERE `id` = ~p AND `role_id` = ~p">>). -define(DEL_MARKET_BID, <<"DELETE FROM `market_bid_info` WHERE `id` = ~p">>). %% 玩家竞拍关注 -define(SAVE_MARKET_LIKE, <<"REPLACE INTO `market_like_info` (`id`, `role_id`, `time`) values (~p, ~p, ~p)">>). -define(LOAD_MARKET_LIKE, <<"SELECT `id`, `role_id`, `time` FROM `market_like_info` WHERE `role_id` = ~p">>). -define(DEL_MARKET_LIKE, <<"DELETE FROM `market_like_info` WHERE `id` = ~p AND `role_id` = ~p">>). -define(DEL_MARKET_LIKE_BY_ID, <<"DELETE FROM `market_like_info` WHERE `id` = ~p">>). %% 交易市场成交记录 -define(SAVE_MARKET_DEAL_LOG, <<"REPLACE INTO `market_deal_log` (`id`, `role_id`, `get_role_id`, `get_role_name`, `goods_id`" ", `goods_type_id`, `num`, `lev`, `color`, `price`, `sell_type`, `guild_id`, `time`, `deal_time`, `deal_type`, `log_type`" ", `extra_attr`) values ~ts">>). -define(LOAD_MARKET_DEAL_LOG, <<"SELECT `id`, `role_id`, `get_role_id`, `get_role_name`, `goods_id`, `goods_type_id`, `num`, `lev`" ", `color`, `price`, `sell_type`, `guild_id`, `time`, `deal_time`, `deal_type`, `log_type`, `extra_attr` FROM `market_deal_log`">>). -define(DEL_MARKET_DEAL_LOG, <<"DELETE FROM `market_deal_log` WHERE `id` = ~p">>). -define(DEL_ALL_MARKET_DEAL_LOG, <<"TRUNCATE TABLE `market_deal_log`">>). %% 角色交易市场成交记录 -define(SAVE_M_ROLE_DEAL_LOG, <<"REPLACE INTO `market_role_deal_log` (`id`, `role_id`, `rela_role_id`, `goods_type_id`" ", `num`, `price`, `sell_type`, `guild_id`, `time`, `deal_time`, `deal_type`, `extra_attr`)" " VALUES ~ts">>). -define(LOAD_M_ROLE_DEAL_LOG, <<"SELECT `id`, `role_id`, `rela_role_id`, `goods_type_id`, `num`, `price`, `sell_type`, `guild_id`" ", `time`, `deal_time`, `deal_type`, `extra_attr` FROM `market_role_deal_log` WHERE `role_id` = ~p">>). -define(DEL_M_ROLE_DEAL_LOG, <<"DELETE FROM `market_role_deal_log` WHERE `id` = ~p AND `role_id` = ~p">>). -define(DEL_M_ROLE_DEAL_LOG_BY_TIME, <<"DELETE FROM `market_role_deal_log` WHERE `role_id` = ~p AND `deal_time` <= ~p">>). %% 交易市场入库提醒订阅信息 -define(SAVE_MARKET_REMINDER, <<"REPLACE INTO `market_reminder_info` (`role_id`, `reminder_list`) values (~p, '~ts')">>). -define(LOAD_MARKET_REMINDER, <<"SELECT `reminder_list` FROM `market_reminder_info` WHERE `role_id` = ~p">>). -define(DEL_MARKET_REMINDER, <<"DELETE FROM `market_reminder_info` WHERE `role_id` = ~p">>). %% 交易市场系统补给商品数据 -define(SAVE_MARKET_SUPPLY, <<"REPLACE INTO `market_goods_supply_info` (`goods_type_id`, `num`, `supply_num`, `time`) values (~p, ~p, ~p, ~p)">>). -define(BATCH_SAVE_MARKET_SUPPLY, <<"REPLACE INTO `market_goods_supply_info` (`goods_type_id`, `num`, `supply_num`, `time`) values ~ts">>). -define(LOAD_MARKET_SUPPLY, <<"SELECT `goods_type_id`, `num`, `supply_num`, `time` FROM `market_goods_supply_info`">>). -endif. %% MARKET_HRL