You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.4 KiB
Lua
95 lines
2.4 KiB
Lua
local skynet = require "skynet"
|
|
local cjson = require "cjson"
|
|
local dateutils = require "dateutils"
|
|
local blackmarketlogic = require "blackmarketlogic"
|
|
local viplogic = require "viplogic"
|
|
local usermodel = require "usermodel"
|
|
require "functions"
|
|
|
|
--黑市模型
|
|
|
|
local cnf = blackmarketlogic.getconf()
|
|
|
|
local blackmarketmodel = {}
|
|
|
|
function blackmarketmodel:init(num, t1, t2)
|
|
self.refresh_num = checkint(num)
|
|
if #table.keys(t1) <= 0 then
|
|
t1 = blackmarketlogic.randomdiscount()
|
|
local ok = skynet.call(".blackmarketd", "lua", "save", UID, self.refresh_num ,t1)
|
|
end
|
|
self.discount = {}
|
|
self.buy = {}
|
|
for k,v in pairs(cnf) do
|
|
self.discount[v.key_id] = checkint(t1[k])
|
|
self.buy[checkint(v.key_id)] = checkint(t2[k])
|
|
end
|
|
end
|
|
|
|
function blackmarketmodel:getrefreshnum()
|
|
return self.refresh_num
|
|
end
|
|
|
|
function blackmarketmodel:getrefreshspeed()
|
|
return blackmarketlogic.getrefreshspeed(self.refresh_num)
|
|
end
|
|
|
|
|
|
function blackmarketmodel:checkbuy(id)
|
|
return self.buy[checkint(id)]
|
|
end
|
|
|
|
--获取金砖价格
|
|
function blackmarketmodel:getprice(id)
|
|
local cfg = blackmarketlogic.getconfbyid(id)
|
|
assert(cfg~=nil, "blackmarket conf not found")
|
|
local gold = cfg.gold
|
|
local d = self.discount[id]
|
|
return checkint(gold * d / 10)
|
|
end
|
|
|
|
|
|
function blackmarketmodel:dobuy(id)
|
|
id = checkint(id)
|
|
self.buy[id] = 1
|
|
local ok = skynet.call(".blackmarketd", "lua", "buy", UID, self.refresh_num, id)
|
|
end
|
|
|
|
function blackmarketmodel:chechrefresh()
|
|
local vip_lv = usermodel:getviplv()
|
|
local total = 3 + viplogic.getmarketrefreshnum(vip_lv)
|
|
if self.refresh_num >= total then
|
|
return false
|
|
end
|
|
return true
|
|
end
|
|
|
|
function blackmarketmodel:refresh()
|
|
local rews = blackmarketlogic.randomdiscount()
|
|
for k,v in pairs(cnf) do
|
|
self.discount[v.key_id] = checkint(rews[k])
|
|
self.buy[v.key_id] = 0
|
|
end
|
|
self.refresh_num = self.refresh_num + 1
|
|
local ok = skynet.call(".blackmarketd", "lua", "save", UID, self.refresh_num ,rews)
|
|
end
|
|
|
|
|
|
function blackmarketmodel:serialize()
|
|
local resp = {}
|
|
resp.refresh_num = self.refresh_num
|
|
local vip_lv = usermodel:getviplv()
|
|
resp.refresh_total = 3 + viplogic.getmarketrefreshnum(vip_lv)
|
|
resp.late_time = dateutils.getdayex()
|
|
local goods = {}
|
|
for k,v in pairs(self.discount) do
|
|
goods[tostring(k)] = {id=k, discount=v, is_buy=self.buy[k]}
|
|
end
|
|
resp.goods = goods
|
|
|
|
return resp
|
|
end
|
|
|
|
|
|
return blackmarketmodel
|