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.
1626 lines
59 KiB
Lua
1626 lines
59 KiB
Lua
local skynet = require "skynet"
|
|
local netpack = require "websocketnetpack"
|
|
local msgutils = require "msgutils"
|
|
local cjson = require "cjson"
|
|
local usermodel = require "usermodel"
|
|
local bagmodel = require "bagmodel"
|
|
local heromodel = require "heromodel"
|
|
local artifactmodel = require "artifactmodel"
|
|
local coingetmodel = require "coingetmodel"
|
|
local achievementmodel = require "achievementmodel"
|
|
local signin7model = require "signin7model"
|
|
local taskmodel = require "taskmodel"
|
|
local huobamodel = require "huobamodel"
|
|
local baoxiangmodel = require "baoxiangmodel"
|
|
local zhaomumodel = require "zhaomumodel"
|
|
local friendmodel = require "friendmodel"
|
|
local boxlogic = require "boxlogic"
|
|
local settings = require "settings"
|
|
local bson = require "bson"
|
|
local mqhelper = require "mqhelper"
|
|
local mongohelper = require "mongohelper"
|
|
local dateutils = require "dateutils"
|
|
local signinlogic = require "signinlogic"
|
|
local rechargeconf = require "rechargeconf"
|
|
local lordlogic = require "lordlogic"
|
|
local herologic = require "herologic"
|
|
local coingetlogic = require "coingetlogic"
|
|
local recruitlogic = require "recruitlogic"
|
|
local booklogic = require "booklogic"
|
|
local libaologic = require "libaologic"
|
|
local achievementlogic = require "achievementlogic"
|
|
local blackmarketmodel = require "blackmarketmodel"
|
|
local duanwumodel = require "duanwumodel"
|
|
local guajimodel = require "guajimodel"
|
|
local vipmodel = require "vipmodel"
|
|
local levellogic = require "levellogic"
|
|
local goldlogic = require "goldlogic"
|
|
local guajilogic = require "guajilogic"
|
|
local viplogic = require "viplogic"
|
|
local blackmarketlogic = require "blackmarketlogic"
|
|
|
|
local user = {}
|
|
|
|
function user.ping(cmd)
|
|
return {c = "user",m = "pong",data = {}}
|
|
end
|
|
|
|
|
|
function user.loaduser(cmd)
|
|
if not usermodel._init or usermodel._init ~= dateutils.getday() then
|
|
local user = skynet.call(".usercenterd", "lua", "loaduser", UID)
|
|
assert(user~=nil , "load user fail")
|
|
usermodel:init(user)
|
|
--获取英雄列表
|
|
local heros = skynet.call(".usercenterd", "lua", "loadhero", UID)
|
|
heromodel:init(usermodel, heros)
|
|
|
|
local arts = skynet.call(".usercenterd", "lua", "loadartifact", UID)
|
|
artifactmodel:init(arts)
|
|
|
|
local bag = skynet.call(".usercenterd", "lua", "loadbag", UID)
|
|
bagmodel:init(usermodel, bag)
|
|
usermodel._init = dateutils.getday()
|
|
end
|
|
local userinfo = usermodel:serialize()
|
|
--TODO:计算战斗力
|
|
return {
|
|
c = "user",
|
|
m = "loaduser",
|
|
data = {
|
|
errcode = 0,
|
|
data = { user = userinfo }
|
|
}
|
|
}
|
|
end
|
|
|
|
function user.loadbag(cmd)
|
|
return {
|
|
c = "user",
|
|
m = "loadbag",
|
|
data = {
|
|
errcode = 0,
|
|
data = { bag = bagmodel:serialize() }
|
|
}
|
|
}
|
|
end
|
|
|
|
--获取我的武将
|
|
function user.loadallhero(cmd)
|
|
return {c = "user",m = "loadallhero",data = {errcode = 0,data = { heros = heromodel:serialize()}}}
|
|
end
|
|
|
|
function user.loadguaji(cmd)
|
|
if not guajimodel._init or guajimodel._init ~= dateutils.getday() then
|
|
local info = skynet.call(".guajid", "lua", "getinfo", UID)
|
|
local receives = skynet.call(".guajid", "lua", "getreceiveinfo", UID)
|
|
guajimodel:init(info, receives)
|
|
guajimodel._init = dateutils.getday()
|
|
end
|
|
return {c = "user",m = "loadguaji",data = {errcode = 0,data = { guaji = guajimodel:serialize() }}}
|
|
end
|
|
|
|
|
|
function user.loadsignin7(cmd)
|
|
if not signin7model._init or signin7model._init ~= dateutils.getday() then
|
|
local res = skynet.call(".signind", "lua", "getsignin7", UID)
|
|
signin7model:init(res)
|
|
signin7model._init = dateutils.getday()
|
|
end
|
|
return {c = "user",m = "loadsignin7",data = {errcode = 0,data = { signin=signin7model:serialize() }}}
|
|
end
|
|
|
|
--七日签到
|
|
function user.signin7(cmd)
|
|
if signin7model:checksignin() == true then
|
|
return {c = "user",m = "signin7",data = {errcode = 10000, errmsg = "请勿重复签到", data = { }}}
|
|
end
|
|
signin7model:signin()
|
|
local day = signin7model:getsignday()
|
|
--天数获取奖励
|
|
local cfg = signinlogic.getsignin7conf(day)
|
|
assert(cfg~= nil, "配置获取失败")
|
|
local param = {}
|
|
local rewards = {}
|
|
local reward = cfg.rewards
|
|
for i,v in ipairs(reward) do
|
|
param[v.key] = param[v.key] or 0
|
|
param[v.key] = param[v.key] + v.value
|
|
table.insert(rewards, {tp="item", id=v.key, count=v.value})
|
|
end
|
|
bagmodel:incrBagB(param)
|
|
return {c = "user",m = "signin7",data = {errcode = 0,data = { signin=signin7model:serialize() }}}
|
|
end
|
|
|
|
--获取点金
|
|
function user.loadcoinget(cmd)
|
|
--获取点金次数
|
|
if not coingetmodel._init or coingetmodel._init ~= dateutils.getday() then
|
|
local num = skynet.call(".coingetd", "lua", "get", UID)
|
|
coingetmodel:init(usermodel, num)
|
|
coingetmodel._init = dateutils.getday()
|
|
end
|
|
return {c = "user",m = "loadcoinget",data = {errcode = 0,data = { total = coingetmodel:coingettotalnum(), num=coingetmodel:coingetnum()}}}
|
|
end
|
|
|
|
--获取黑市
|
|
function user.loadblackmarket(cmd)
|
|
if not blackmarketmodel._init or blackmarketmodel._init ~= dateutils.getday() then
|
|
local num, res1, res2 = skynet.call(".blackmarketd", "lua", "loaddiscount", UID)
|
|
blackmarketmodel:init(num, res1, res2)
|
|
blackmarketmodel._init = dateutils.getday()
|
|
end
|
|
return {c = "user",m = "loadblackmarket",data = {errcode = 0,data = { blackmarket = blackmarketmodel:serialize()}}}
|
|
end
|
|
|
|
|
|
--获取成就
|
|
function user.loadachievement(cmd)
|
|
if not achievementmodel._init or achievementmodel._init ~= dateutils.getday() then
|
|
local d1, d2 = skynet.call(".achievementd", "lua", "get", UID)
|
|
achievementmodel:init(d1, d2)
|
|
achievementmodel._init = dateutils.getday()
|
|
end
|
|
return {c = "user",m = "loadachievement",data = {errcode = 0, errmsg = "", data = {achievement = achievementmodel:serialize()}}}
|
|
end
|
|
|
|
--领取成就奖励
|
|
function user.receiveachievement(cmd)
|
|
local id = cmd.data.id
|
|
if not id then
|
|
return {c = "user",m = "receiveachievement",data = {errcode = 10001, errmsg = "请求异常,请稍后再试"}}
|
|
end
|
|
|
|
id = checkint(id)
|
|
|
|
if not achievementmodel:checknum(id) then
|
|
return {c = "user",m = "receiveachievement",data = {errcode = 10002, errmsg = "完成次数未达标"}}
|
|
end
|
|
|
|
if achievementmodel:checkreceive(id) == 1 then
|
|
return {c = "user",m = "receiveachievement",data = {errcode = 10003, errmsg = "请勿重复领取"}}
|
|
end
|
|
|
|
local cnf = achievementlogic.gettaskconfbyid(id)
|
|
assert(cnf ~= nil, "配置获取失败")
|
|
local rews = cnf.rewards
|
|
local param = {}
|
|
local rewards = {}
|
|
for i,v in ipairs(rews) do
|
|
param[v.key] = param[v.key] or 0
|
|
param[v.key] = param[v.key] + v.value
|
|
table.insert(rewards, {tp="item", id=v.key, count=v.value})
|
|
end
|
|
bagmodel:incrBagB(param)
|
|
achievementmodel:receive(id)
|
|
return {c = "user",m = "receiveachievement",data = {errcode = 0, errmsg = "", data = { rewards = rewards, achievement = achievementmodel:serialize()}}}
|
|
end
|
|
|
|
--获取每日任务
|
|
function user.loadtask(cmd)
|
|
if not taskmodel._init or taskmodel._init ~= dateutils.getday() then
|
|
local ok , result = pcall(skynet.call, ".taskd", "lua", "loadtask", UID)
|
|
assert(ok, "加载任务失败")
|
|
taskmodel:init(result)
|
|
taskmodel._init = dateutils.getday()
|
|
end
|
|
return {c = "user",m = "loadtask",data = {errcode = 0, errmsg = "", data = {task = taskmodel:serialize()}}}
|
|
end
|
|
|
|
--获取vip
|
|
function user.loadvip(cmd)
|
|
if not vipmodel._init or vipmodel._init ~= dateutils.getday() then
|
|
local result = skynet.call(".vipd", "lua", "get", UID)
|
|
vipmodel:init(result)
|
|
vipmodel._init = dateutils.getday()
|
|
end
|
|
return {c = "user",m = "loadvip",data = {errcode = 0, errmsg = "", data = { vip = vipmodel:serialize() }}}
|
|
end
|
|
|
|
function user.loadhuoba(cmd)
|
|
if not huobamodel._init or huobamodel._init ~= dateutils.getday() then
|
|
local result = skynet.call(".huobad", "lua", "loadhuoba", UID)
|
|
-- DEBUG("loadhuoba result = ", DUMP(result))
|
|
huobamodel:init(usermodel, result)
|
|
huobamodel._init = dateutils.getday()
|
|
end
|
|
return {c = "user",m = "loadhuoba",data = {errcode = 0, errmsg = "", data = { huoba = huobamodel:serialize() }}}
|
|
end
|
|
|
|
--获取百服消息
|
|
function user.loadbaifumsg(cmd)
|
|
local id = cmd.data.id
|
|
if not id then
|
|
return {c = "user",m = "loadbaifumsg",data = {errcode = 10001,errmsg = "请求异常, 请稍后再试!", data = { }}}
|
|
end
|
|
id = checkint(id)
|
|
local msgs = skynet.call(".msgcenterd", "lua", "loadbaifumsg", usermodel:getBaiFuServer(), id)
|
|
if #msgs > 0 then
|
|
local lastid = msgs[#msgs].id
|
|
msgmodel.baifuindex = lastid
|
|
end
|
|
return {c = "user",m = "loadbaifumsg", data = {errcode = 0, errmsg = "", data = { msgs = table.array(msgs)}}}
|
|
end
|
|
|
|
--加入消息中心
|
|
function user.join_msg_center(cmd)
|
|
if not JOIN_SUCCESS then
|
|
pcall(skynet.call, skynet.self(), "lua", "join_msg_center")
|
|
end
|
|
return {c = "user",m = "join_msg_center",data = {errcode = 0, errmsg = "", data = {}}}
|
|
end
|
|
|
|
--领取任务
|
|
function user.receivetask(cmd)
|
|
local id = cmd.data.id
|
|
if not id then
|
|
return {c = "user",m = "receivetask",data = {errcode = 10001, errmsg = "请求异常,请稍后再试"}}
|
|
end
|
|
id = checkint(id)
|
|
|
|
if not taskmodel:checkcompletetask(id) then
|
|
return {c = "user",m = "receivetask",data = {errcode = 10002, errmsg = "任务未完成"}}
|
|
end
|
|
|
|
if taskmodel:checkreceivetask(id) then
|
|
return {c = "user",m = "receivetask",data = {errcode = 10003, errmsg = "请勿重复领取"}}
|
|
end
|
|
taskmodel:receivetask(id)
|
|
return {c = "user",m = "receivetask",data = {errcode = 0, errmsg = "", data = {}}}
|
|
end
|
|
|
|
--领取日活跃
|
|
function user.receivedailytask(cmd)
|
|
if not taskmodel:checkreceivedailyact() then
|
|
return {c = "user",m = "receivedailytask",data = {errcode = 10001, errmsg = "未达到领取条件"}}
|
|
end
|
|
local rewards = taskmodel:receivedailyact()
|
|
local param = {}
|
|
for i,v in ipairs(rewards) do
|
|
param[v.key] = param[v.key] or 0
|
|
param[v.key] = param[v.key] + v.value
|
|
end
|
|
bagmodel:incrBagB(param)
|
|
return {c = "user",m = "receivedailytask",data = {errcode = 0, errmsg = "", data = {}}}
|
|
end
|
|
|
|
--领取周活跃
|
|
function user.receiveweeklytask(cmd)
|
|
if not taskmodel:checkreceiveweeklyact() then
|
|
return {c = "user",m = "receiveweeklytask",data = {errcode = 10001, errmsg = "未达到领取条件"}}
|
|
end
|
|
local rewards = taskmodel:receiveweeklyact()
|
|
local param = {}
|
|
for i,v in ipairs(rewards) do
|
|
param[v.key] = param[v.key] or 0
|
|
param[v.key] = param[v.key] + v.value
|
|
end
|
|
bagmodel:incrBagB(param)
|
|
return {c = "user",m = "receiveweeklytask",data = {errcode = 0, errmsg = "", data = {}}}
|
|
end
|
|
|
|
|
|
--使用火把
|
|
function user.usehuoba(cmd)
|
|
local lv = cmd.data.lv
|
|
if not lv then
|
|
return {c = "user",m = "usehuoba",data = {errcode = 10001, errmsg = "请求异常,请稍后再试"}}
|
|
end
|
|
lv = math.floor(lv)
|
|
local n = bagmodel:gethuobanum(lv)
|
|
if n < 1 then
|
|
return {c = "user",m = "usehuoba",data = {errcode = 10002, errmsg = "资源不足",data = { } }}
|
|
end
|
|
if not huobamodel._init then
|
|
return {c = "user",m = "usehuoba",data = {errcode = 10003, errmsg = "请求异常,请先初始化",data = { } }}
|
|
end
|
|
huobamodel:userhuoba(lv)
|
|
bagmodel:decrBagA("huoba_lv"..lv, 1)
|
|
return {c = "user",m = "usehuoba",data = {errcode = 0, errmsg = "",data = { huoba_lv = usermodel.huoba_lv, huoba_end_time = usermodel.huoba_end_time } }}
|
|
end
|
|
|
|
--邀请好友加火把
|
|
function user.incrhuoba(cmd)
|
|
|
|
local tp = cmd.data.tp
|
|
|
|
if not tp then
|
|
return {c = "user",m = "incrhuoba",data = {errcode = 10001,errmsg = "请求异常,请稍后再试", data = { }}}
|
|
end
|
|
if tp == "share" then
|
|
huobamodel:share()
|
|
taskmodel:addtasknum(2, 1)
|
|
elseif tp == "adv" then
|
|
huobamodel:lookadv()
|
|
else
|
|
assert(false, "不应该走到这~~~")
|
|
end
|
|
bagmodel:incrBagA("huoba_lv1", 1)
|
|
return {c = "user",m = "incrhuoba",data = {errcode = 0, errmsg = "", data={ huoba = huobamodel:serialize()}}}
|
|
end
|
|
|
|
|
|
--分享成功
|
|
function user.share(cmd)
|
|
taskmodel:addtasknum(2, 1)
|
|
return {c = "user",m = "share",data = {errcode = 0, errmsg = "", data={}}}
|
|
end
|
|
|
|
--点金
|
|
function user.coinget(cmd)
|
|
local count = cmd.data.count
|
|
if not count then
|
|
return {c = "user",m = "coinget",data = {errcode = 10001, errmsg = "点金次数错误"}}
|
|
end
|
|
count = math.floor(count)
|
|
coingetmodel:reset() --刷新点金
|
|
local num = coingetmodel.num
|
|
if num >= coingetmodel:coingettotalnum() then
|
|
return {c = "user",m = "coinget",data = {errcode = 10002, errmsg = "点金次数已达上限"}}
|
|
end
|
|
|
|
local max_level = usermodel.max_level
|
|
|
|
if max_level < 100 then
|
|
return {c = "user",m = "coinget",data = {errcode = 10003, errmsg = "关卡等级错误"}}
|
|
end
|
|
|
|
if num >= 3 then
|
|
local coingetcfg = coingetlogic.getconf(usermodel:getviplv())
|
|
local gold = coingetcfg.diamondspend * count
|
|
if gold > bagmodel.gold then
|
|
return {c = "user",m = "coinget",data = {errcode = 10003, errmsg = "金砖数量不足"}}
|
|
end
|
|
-- DEBUG("coinget gold = ", gold)
|
|
bagmodel:decrBagA("gold", gold)
|
|
bagmodel:save2log({gold=-gold}, "点金成功")
|
|
end
|
|
math.randomseed(tostring(os.time()):reverse():sub(1, 6))
|
|
local params = {}
|
|
params.coin = 0
|
|
local rewards = {}
|
|
local coin = coingetlogic.getcoingetnum(max_level)
|
|
for i=1, count do
|
|
local t = {1, 1.5, 2, 2.5, 3} --点金倍数配置
|
|
local r = math.random(1, 5)
|
|
local times = t[r]
|
|
local add_coin = coin * times
|
|
params.coin = params.coin + add_coin
|
|
table.insert(rewards, {tp="item", id="coin", count=add_coin, times=times,})
|
|
end
|
|
bagmodel:incrBagB(params)
|
|
bagmodel:save2log(params, "点金成功")
|
|
--TODO 点金成功
|
|
coingetmodel:coinget(count)
|
|
usermodel:addcoingetnum(count)
|
|
taskmodel:addtasknum(6, count)
|
|
achievementmodel:emit("coinget", achievementmodel)
|
|
return {c = "user",m = "coinget",data = {errcode = 0, errmsg = "", data={rewards=rewards}}}
|
|
end
|
|
|
|
|
|
--升星
|
|
function user.starup(cmd)
|
|
|
|
local heroid = cmd.data.heroid
|
|
if not heroid then
|
|
return {c = "user",m = "starup",data = {errcode = 10001,errmsg = "请求异常,请稍后再试", data = { }}}
|
|
end
|
|
heroid = checkint(heroid)
|
|
--没有武将 则第一次合成
|
|
if not heromodel:checkhero(heroid) then
|
|
local color = herologic.getcolorbyheroid(heroid)
|
|
local num = herologic.getconf(heroid).cardnumber
|
|
local cardnum = bagmodel:getnum("card_"..heroid)
|
|
if cardnum < num then
|
|
return {c = "user",m = "starup",data = {errcode = 10002,errmsg = "升级失败!", data = { }}}
|
|
end
|
|
local hero = {}
|
|
hero.id = UID*1000+heroid
|
|
hero.uid = UID
|
|
hero.serverid = usermodel.serverid
|
|
hero.heroid = heroid
|
|
heromodel:add(hero)
|
|
bagmodel:decrBagA("card_"..heroid, num)
|
|
else
|
|
local hero = heromodel:gethero(heroid)
|
|
local star = hero.star
|
|
-- DEBUG("starup star = ", star)
|
|
local color = herologic.getcolorbyheroid(heroid)
|
|
local num = herologic.getusecardnum(star+1)
|
|
-- DEBUG("starup star num = ", num)
|
|
local cardnum = bagmodel:getnum("card_"..heroid)
|
|
-- DEBUG("starup star cardnum = ", cardnum)
|
|
if cardnum < num then
|
|
return {c = "user",m = "starup",data = {errcode = 10002,errmsg = "碎片不足,无法升星!", data = { }}}
|
|
end
|
|
heromodel:starup(heroid)
|
|
bagmodel:decrBagA("card_"..heroid, num)
|
|
achievementmodel:emit("starup", achievementmodel)
|
|
end
|
|
return {c = "user",m = "starup",data = {errcode = 0,data = {hero=heromodel:serializebyheroid(heroid)}}}
|
|
end
|
|
|
|
--收集徽星
|
|
function user.collectemblemstar(cmd)
|
|
local heroid = cmd.data.heroid
|
|
if not heroid then
|
|
return {c = "user",m = "collectemblemstar",data = {errcode = 10001,errmsg = "请求异常,请稍后再试!", data = { }}}
|
|
end
|
|
local hero = heromodel:gethero(heroid)
|
|
if not hero then
|
|
return {c = "user",m = "collectemblemstar",data = {errcode = 10002,errmsg = "升级条件不满足!", data = { }}}
|
|
end
|
|
local c = hero.star + 1
|
|
if hero.collect_emblemstar >= c then
|
|
return {c = "user",m = "collectemblemstar",data = {errcode = 10002,errmsg = "升级条件不满足!", data = { }}}
|
|
end
|
|
heromodel:collectemblemstar(heroid)
|
|
local n = heromodel:getcollectemblemstar(heroid)
|
|
local star = booklogic.getemblemstarnum(heroid, n)
|
|
assert(star ~= nil, "获取徽星数量失败")
|
|
usermodel:incremblemstar(star)
|
|
--TODO:计算是否获得奖励
|
|
return {c = "user",m = "collectemblemstar",data = {errcode = 0,data = {}}}
|
|
end
|
|
|
|
|
|
--领取徽星奖励
|
|
function user.receiveremblemstar(cmd)
|
|
if not usermodel:canreceiveremblemstar() then
|
|
return {c = "user",m = "receiveremblemstar",data = {errcode = 10001, errmsg = "积分不足,不能领取",data = { } }}
|
|
end
|
|
--奖励
|
|
local conf = booklogic.getcurbookstage(usermodel.emblemstarid + 1)
|
|
local rewards = conf.reward_items
|
|
assert(#rewards > 0, "奖励获取失败")
|
|
local param = {}
|
|
local rews = {}
|
|
for i,v in ipairs(rewards) do
|
|
param[v.key] = param[v.key] or 0
|
|
param[v.key] = param[v.key] + v.value
|
|
table.insert(rews, {tp="item", id=v.key, count=v.value})
|
|
end
|
|
usermodel:receiveremblemstar()
|
|
bagmodel:incrBagB(param)
|
|
bagmodel:save2log(param, "领取图鉴奖励")
|
|
return {c = "user",m = "receiveremblemstar",data = {errcode = 0,data = {emblemstarid=usermodel.emblemstarid, rewards = table.array(rews)}}}
|
|
end
|
|
|
|
--升级
|
|
function user.lvup(cmd)
|
|
local tp = cmd.data.tp or "lord"
|
|
local lv = cmd.data.lv
|
|
if not tp or not lv then
|
|
return {c = "user",m = "lvup",data = {errcode = 10001, errmsg = "系统繁忙,请稍后再试!"}}
|
|
end
|
|
if tp == "lord" then --主公升级
|
|
local curlv = usermodel.lv
|
|
if curlv >= 6000 then
|
|
return {c = "user",m = "lvup",data = {errcode = 10002, errmsg = "已升级到最高等级"}}
|
|
end
|
|
local r = lordlogic.neetstageup(curlv, lv)
|
|
if r then
|
|
return {c = "user",m = "lvup",data = {errcode = 10002, errmsg = "升级失败,请勿跨阶"}}
|
|
end
|
|
|
|
local orderconf = lordlogic.getlordorderconf(usermodel.stage)
|
|
assert(orderconf~=nil, "进阶配置不存在!")
|
|
if curlv == orderconf.lordlv then
|
|
return {c = "user",m = "lvup",data = {errcode = 10002, errmsg = "请先进阶"}}
|
|
end
|
|
|
|
local newlv = curlv + lv
|
|
local speed = lordlogic.callvupspend(curlv, newlv-1)
|
|
local cur_coin = bagmodel.coin
|
|
if cur_coin < speed then
|
|
return {c = "user",m = "lvup",data = {errcode = 10002, errmsg = "金币不足!"}}
|
|
end
|
|
bagmodel:decrBagA("coin", speed)
|
|
usermodel:lvup(lv)
|
|
achievementmodel:emit("lordlvup", achievementmodel)
|
|
else
|
|
local heroid = cmd.data.heroid -- 武将对应的id
|
|
local hero = heromodel:gethero(heroid)
|
|
assert(hero~=nil)
|
|
-- assert(hero.pos > 0, "未上阵")
|
|
local curlv = hero.lv
|
|
if curlv >= 6000 then
|
|
return {c = "user",m = "lvup",data = {errcode = 10002, errmsg = "已升级到最高等级"}}
|
|
end
|
|
local orderconf = herologic.getheroorderconf(hero.stage)
|
|
|
|
if curlv == orderconf.hero_lv then
|
|
return {c = "user",m = "lvup",data = {errcode = 10002, errmsg = "请先进阶"}}
|
|
end
|
|
|
|
local newlv = curlv + lv --2830 + 5
|
|
|
|
if curlv <= orderconf.hero_lv and newlv > orderconf.hero_lv then
|
|
return {c = "user",m = "lvup",data = {errcode = 10005, errmsg = "请先完成进阶"}}
|
|
end
|
|
|
|
if newlv > orderconf.hero_lv then
|
|
return {c = "user",m = "lvup",data = {errcode = 10006, errmsg = "请先武将进阶"}}
|
|
end
|
|
|
|
if newlv > usermodel.lv then
|
|
return {c = "user",m = "lvup",data = {errcode = 10003, errmsg = "武将等级不能大于主公等级"}}
|
|
end
|
|
|
|
local speed = herologic.callvupspend(curlv, newlv-1)
|
|
local cur_coin = bagmodel.coin
|
|
if cur_coin < speed then
|
|
return {c = "user",m = "lvup",data = {errcode = 10004, errmsg = "金币不足!"}}
|
|
end
|
|
bagmodel:decrBagA("coin", speed)
|
|
heromodel:lvup(heroid, lv)
|
|
achievementmodel:emit("herolvup", achievementmodel)
|
|
end
|
|
|
|
return {
|
|
c = "user",
|
|
m = "lvup",
|
|
data = {
|
|
errcode = 0,
|
|
data = { }
|
|
}
|
|
}
|
|
end
|
|
|
|
--进阶
|
|
function user.stageup(cmd)
|
|
local tp = cmd.data.tp or "lord"
|
|
if tp == "lord" then --主公进阶
|
|
local cur_stage = usermodel.stage
|
|
local conf = lordlogic.getlordorderconf(cur_stage)
|
|
assert(conf~=nil, "配置不存在!")
|
|
if usermodel.lv ~= conf.lord_lv then
|
|
return {c = "user",m = "stageup",data = {errcode = 10002, errmsg = "进阶等级不符"}}
|
|
end
|
|
|
|
local order_spend = conf.order_spend
|
|
local jinjieshi = bagmodel.jinjieshi
|
|
if jinjieshi < order_spend then
|
|
return {c = "user",m = "stageup",data = {errcode = 10002, errmsg = "材料不足!"}}
|
|
end
|
|
bagmodel:decrBagA("jinjieshi", order_spend)
|
|
usermodel:stageup()
|
|
bagmodel:save2log({jinjieshi=-order_spend}, "主公进阶")
|
|
else
|
|
local heroid = cmd.data.heroid -- 武将对应的id
|
|
local hero = heromodel:getherobyheroid(heroid)
|
|
assert(hero~=nil)
|
|
-- assert(hero.pos > 0, "未上阵")
|
|
local conf = herologic.getheroorderconf(hero.stage)
|
|
assert(conf~=nil, "配置不存在!")
|
|
|
|
DEBUG("hero.lv = ", hero.lv)
|
|
DEBUG("conf.hero_lv = ", conf.hero_lv)
|
|
|
|
if hero.lv ~= conf.hero_lv then
|
|
return {c = "user",m = "stageup",data = {errcode = 10002, errmsg = "进阶等级不符"}}
|
|
end
|
|
|
|
local order_spend = conf.order_spend
|
|
local jinjieshi = bagmodel.jinjieshi
|
|
if jinjieshi < order_spend then
|
|
return {c = "user",m = "stageup",data = {errcode = 10002, errmsg = "材料不足!"}}
|
|
end
|
|
|
|
bagmodel:decrBagA("jinjieshi", order_spend)
|
|
heromodel:stageup(heroid)
|
|
bagmodel:save2log({jinjieshi=-order_spend}, "武将进阶")
|
|
end
|
|
|
|
return {c = "user",m = "stageup",data = {errcode = 0,data = { }}}
|
|
end
|
|
|
|
--上阵
|
|
function user.confirmup(cmd)
|
|
local heroid = cmd.data.heroid
|
|
if not heroid then
|
|
return {c = "user",m = "confirmup",data = {errcode = 10001,errmsg = "上阵失败, 请稍后再试!", data = { }}}
|
|
end
|
|
local hero = heromodel:getherobyheroid(heroid)
|
|
if not hero then
|
|
return {c = "user",m = "confirmup",data = {errcode = 10002,errmsg = "武将获取失败, 请稍后再试!", data = { }}}
|
|
end
|
|
local pos = heromodel:getemptypos()
|
|
if not pos then
|
|
return {c = "user",m = "confirmup",data = {errcode = 10003,errmsg = "上阵武将达到数量限制", data = { }}}
|
|
end
|
|
heromodel:changepos(heroid, pos)
|
|
achievementmodel:emit("herolvup", achievementmodel)
|
|
return {c = "user",m = "confirmup",data = {errcode = 0,data = { pos = pos}}}
|
|
end
|
|
|
|
--直接下阵
|
|
function user.confirmdown(cmd)
|
|
local heroid = cmd.data.heroid
|
|
if not heroid then
|
|
return {c = "user",m = "confirmdown",data = {errcode = 10001,errmsg = "下阵失败, 请稍后再试!", data = { }}}
|
|
end
|
|
local hero = heromodel:getherobyheroid(heroid)
|
|
if not hero then
|
|
return {c = "user",m = "confirmdown",data = {errcode = 10002,errmsg = "武将获取失败, 请稍后再试!", data = { }}}
|
|
end
|
|
|
|
if hero.pos <= 0 then
|
|
return {c = "user",m = "confirmdown",data = {errcode = 10003,errmsg = "武将不在阵上", data = { }}}
|
|
end
|
|
|
|
if heromodel:getupnum() == 1 then
|
|
return {c = "user",m = "confirmdown",data = {errcode = 10004,errmsg = "不能下阵所有武将", data = { }}}
|
|
end
|
|
|
|
heromodel:changepos(heroid, 0)
|
|
|
|
return {c = "user",m = "confirmdown",data = {errcode = 0,data = { }}}
|
|
end
|
|
|
|
--重生下阵
|
|
function user.reborndown(cmd)
|
|
local heroid = cmd.data.heroid
|
|
if not heroid then
|
|
return {c = "user",m = "reborndown",data = {errcode = 10001,errmsg = "下阵失败, 请稍后再试!", data = { }}}
|
|
end
|
|
local hero = heromodel:getherobyheroid(heroid)
|
|
if not hero then
|
|
return {c = "user",m = "sign",data = {errcode = 10002,errmsg = "武将获取失败, 请稍后再试!", data = { }}}
|
|
end
|
|
if hero.pos <= 0 then
|
|
return {c = "user",m = "reborndown",data = {errcode = 10003,errmsg = "武将不在阵上", data = { }}}
|
|
end
|
|
|
|
if heromodel:getupnum() == 1 then
|
|
return {c = "user",m = "reborndown",data = {errcode = 10004,errmsg = "不能下阵所有武将", data = { }}}
|
|
end
|
|
local t = heromodel:caltotalresource(heroid)
|
|
bagmodel:incrBagB(t)
|
|
heromodel:reborn(heroid)
|
|
return {c = "user",m = "reborndown",data = {errcode = 0,data = { }}}
|
|
|
|
end
|
|
|
|
--无损替换
|
|
function user.changehero(cmd)
|
|
local heroid1 = cmd.data.heroid1
|
|
local heroid2 = cmd.data.heroid2
|
|
|
|
if not heroid1 or not heroid2 then
|
|
return {c = "user",m = "changehero",data = {errcode = 10000,errmsg = "请求异常,请稍后再试", data = { }}}
|
|
end
|
|
|
|
if heroid1 == heroid2 then
|
|
return {c = "user",m = "changehero",data = {errcode = 10000,errmsg = "不能替换自己", data = { }}}
|
|
end
|
|
|
|
local hero1 = heromodel:getherobyheroid(heroid1)
|
|
|
|
if not hero1 then
|
|
return {c = "user",m = "changehero",data = {errcode = 10001,errmsg = "武将获取失败, 请稍后再试!", data = { }}}
|
|
end
|
|
|
|
if hero1.pos <= 0 then
|
|
return {c = "user",m = "changehero",data = {errcode = 10002,errmsg = "武将为上阵!", data = { }}}
|
|
end
|
|
|
|
local hero2 = heromodel:getherobyheroid(heroid2)
|
|
|
|
if not hero2 then
|
|
return {c = "user",m = "changehero",data = {errcode = 10003,errmsg = "武将获取失败, 请稍后再试!", data = { }}}
|
|
end
|
|
|
|
if hero2.pos > 0 then
|
|
return {c = "user",m = "changehero",data = {errcode = 10004,errmsg = "禁止替换阵上的武将!", data = { }}}
|
|
end
|
|
|
|
local hero1 = clone(hero1)
|
|
|
|
local hero2 = clone(hero2)
|
|
|
|
heromodel:changehero(heroid1, hero2)
|
|
heromodel:changehero(heroid2, hero1)
|
|
return {c = "user",m = "changehero",data = {errcode = 0,data = { }}}
|
|
end
|
|
|
|
--位置改变
|
|
function user.changepos(cmd)
|
|
local pos1 = cmd.data.pos1
|
|
local pos2 = cmd.data.pos2
|
|
if not pos1 or not pos2 then
|
|
return {c = "user",m = "changepos",data = {errcode = 10001,errmsg = "请求异常,请稍后再试", data = { }}}
|
|
end
|
|
|
|
if pos1 <= 0 or pos2 <= 0 then
|
|
return {c = "user",m = "changepos",data = {errcode = 10002,errmsg = "请求异常,请稍后再试", data = { }}}
|
|
end
|
|
|
|
if pos1 > 5 or pos2 > 5 then
|
|
return {c = "user",m = "changepos",data = {errcode = 10003,errmsg = "请求异常,请稍后再试", data = { }}}
|
|
end
|
|
|
|
if pos1 == pos2 then
|
|
return {c = "user",m = "changepos",data = {errcode = 10004,errmsg = "不能替换自己", data = { }}}
|
|
end
|
|
|
|
local hero1 = heromodel:getherobypos(pos1)
|
|
if not hero1 then
|
|
return {c = "user",m = "changepos",data = {errcode = 10005,errmsg = "武将获取失败, 请稍后再试!", data = { }}}
|
|
end
|
|
local hero2 = heromodel:getherobypos(pos2)
|
|
if not hero2 then
|
|
heromodel:changepos(hero1.heroid, pos2)
|
|
else
|
|
heromodel:changepos(hero1.heroid, pos2)
|
|
heromodel:changepos(hero2.heroid, pos1)
|
|
end
|
|
return {c = "user",m = "changepos",data = {errcode = 0,data = { }}}
|
|
end
|
|
|
|
--分享增加挂机时间
|
|
function user.addguajitime(cmd)
|
|
if guajimodel:calsharnum() <= 0 then
|
|
return {c = "user",m = "addguajitime",data = {errcode = 10001,errmsg = "请求异常,请稍后再试", data = { }}}
|
|
end
|
|
guajimodel:addguajitime()
|
|
taskmodel:addtasknum(2, 1)
|
|
return {c = "user",m = "addguajitime",data = {errcode = 0, errmsg = "", data={ guaji = guajimodel:serialize()}}}
|
|
end
|
|
|
|
|
|
--领取离线奖励
|
|
function user.receiveguajireward(cmd)
|
|
local long = guajimodel:calguajitime() --挂机时长
|
|
if long < 5 then
|
|
return {c = "user",m = "receiveguajireward",data = {errcode = 10001, errmsg = "领取失败,请稍后再试", data={}}}
|
|
end
|
|
|
|
--端午节活动
|
|
if duanwumodel._init and duanwumodel._init ~= dateutils.getday() then
|
|
local n = math.ceil(long/3600)
|
|
local zongzinum = 0
|
|
for i=1,n do
|
|
local g = math.random(1, 100)
|
|
if g > 50 then
|
|
zongzinum = 1
|
|
end
|
|
end
|
|
end
|
|
|
|
local long = guajimodel:receiveguajireward()
|
|
--TODO:发放奖励
|
|
local coin = guajilogic.getguajicoin(guajimodel:getguajilv(), long)
|
|
local ids = guajimodel:receiveid()
|
|
local result = guajilogic.getguajirewards(ids, long)
|
|
result.coin = coin
|
|
if zongzinum > 0 then
|
|
-- bagmodel:incrBagA("zongzi_lv1", zongzinum)
|
|
result.zongzi_lv1 = zongzinum
|
|
end
|
|
bagmodel:incrBagB(result)
|
|
local rewards = {}
|
|
for k,v in pairs(result) do
|
|
table.insert(rewards, {tp="item", id=k, count=checkint(v)})
|
|
end
|
|
taskmodel:addtasknum(5, 1)
|
|
return {c = "user",m = "receiveguajireward",data = {errcode = 0, data = {rewards = rewards, guaji = guajimodel:serialize()}}}
|
|
end
|
|
|
|
|
|
--开箱子
|
|
function user.openbox(cmd)
|
|
local lv = cmd.data.lv
|
|
local num = cmd.data.num
|
|
if not lv or not num then
|
|
return {c = "user",m = "openbox",data = {errcode = 10002, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
lv = math.floor(lv)
|
|
if lv < 1 or lv > 5 then
|
|
return {c = "user",m = "openbox",data = {errcode = 10003, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
if num < 1 or num > 10 then
|
|
return {c = "user",m = "openbox",data = {errcode = 10004, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
local n = bagmodel:getboxnum(lv)
|
|
if n < num then
|
|
return {c = "user",m = "openbox",data = {errcode = 10005, errmsg = "数量不足, 请稍后再试!",data = { } }}
|
|
end
|
|
--没有武将 优先抽到武将 前2个宝箱
|
|
if #heromodel:getall() < 2 then
|
|
local heroid = herologic.randomzihero(heromodel:gethaveheros())
|
|
local hero = {}
|
|
hero.id = UID*1000+heroid
|
|
hero.uid = UID
|
|
hero.serverid = usermodel.serverid
|
|
hero.heroid = heroid
|
|
heromodel:add(hero)
|
|
bagmodel:openbox(lv, num)
|
|
return {c = "user",m = "openbox",data = {errcode = 0, errmsg = "",data = { rewards = { {tp="hero", id=heroid, count=1} } } }}
|
|
end
|
|
local rets = boxlogic.openbox(lv, num)
|
|
--TODO:根据结果处理
|
|
local rewards = {}
|
|
local params = {}
|
|
for i,v in ipairs(rets) do
|
|
if v.tp == "hero" then
|
|
local heroid = v.heroid
|
|
local r = heromodel:checkhero(heroid)
|
|
if r then
|
|
params["card_"..heroid] = params["card_"..heroid] or 0
|
|
params["card_"..heroid] = params["card_"..heroid] + v.count
|
|
local reward = {tp="item", id="card_"..heroid, count=v.count}
|
|
table.insert(rewards, reward)
|
|
else
|
|
local hero = {}
|
|
hero.id = UID*1000+heroid
|
|
hero.uid = UID
|
|
hero.serverid = usermodel.serverid
|
|
hero.heroid = heroid
|
|
heromodel:add(hero)
|
|
local reward = {tp="hero", id=heroid, count=1}
|
|
table.insert(rewards, reward)
|
|
achievementmodel:emit("addhero", achievementmodel)
|
|
end
|
|
else
|
|
if v.tp == "coin" then
|
|
local coin = coingetlogic.getcoingetnum(usermodel.max_level)*0.2
|
|
params[v.tp] = params[v.tp] or 0
|
|
params[v.tp] = params[v.tp] + v.count * coin
|
|
local reward = {tp="item", id="coin", count=v.count * coin}
|
|
table.insert(rewards, reward)
|
|
else
|
|
params[v.tp] = params[v.tp] or 0
|
|
params[v.tp] = params[v.tp] + v.count
|
|
local reward = {tp="item", id=v.tp, count=v.count}
|
|
table.insert(rewards, reward)
|
|
end
|
|
end
|
|
end
|
|
bagmodel:decrBagA("box_lv"..lv, num)
|
|
--成就
|
|
usermodel:addopenboxnum(num)
|
|
taskmodel:addtasknum(7, num)
|
|
achievementmodel:emit("openbox", achievementmodel)
|
|
local conf = boxlogic.getconfbylv(lv)
|
|
local score = conf.score * num
|
|
usermodel:incrboxscore(score)
|
|
-- params["box_lv"..lv] = -num
|
|
bagmodel:incrBagB(params)
|
|
|
|
if baoxiangmodel._init and usermodel.max_level > 20 then
|
|
baoxiangmodel:incrscore(score)
|
|
end
|
|
-- bagmodel:save2log(params, "抽取宝箱")
|
|
|
|
return {c = "user",m = "openbox",data = {errcode = 0, errmsg = "",data = { rewards = rewards, req = cmd.data } }}
|
|
end
|
|
|
|
function user.receivebox()
|
|
if not usermodel:checkcanreceivebox() then
|
|
return {c = "user",m = "receivebox",data = {errcode = 10001, errmsg = "积分不足,不能领取",data = { } }}
|
|
end
|
|
local stage = boxlogic.getstageconfbystage(usermodel.box_stage)
|
|
local name = stage.value
|
|
bagmodel:incrBagA(name, 1)
|
|
usermodel:decrboxscore(stage.limit)
|
|
usermodel:boxstageup()
|
|
bagmodel:save2log({[name]=1}, "领取积分宝箱")
|
|
return {c = "user",m = "receivebox",data = {errcode = 0, errmsg = "",data = { rewards={{tp="item", id=name, count=1}}, box_score=usermodel.box_score, box_stage=usermodel.box_stage } }}
|
|
end
|
|
|
|
--一键领取全部
|
|
function user.receiveboxall()
|
|
if not usermodel:checkcanreceivebox() then
|
|
return {c = "user",m = "receiveboxall",data = {errcode = 10001, errmsg = "积分不足,不能领取",data = { } }}
|
|
end
|
|
local score, stage, rewards = boxlogic.getrewards(usermodel.box_score, usermodel.box_stage)
|
|
if #rewards <= 0 then
|
|
return {c = "user",m = "receiveboxall",data = {errcode = 10002, errmsg = "领取失败,请稍后再试",data = { } }}
|
|
end
|
|
local params = {}
|
|
for i,v in ipairs(rewards) do
|
|
params[v.id] = params[v.id] or 0
|
|
params[v.id] = params[v.id] + v.count
|
|
end
|
|
bagmodel:incrBagB(params)
|
|
usermodel:updateboxscore(score)
|
|
usermodel:updateboxstage(stage)
|
|
bagmodel:save2log(params, "一键领取积分宝箱")
|
|
return {c = "user",m = "receiveboxall",data = {errcode = 0, errmsg = "",data = { rewards=rewards, box_score=usermodel.box_score, box_stage=usermodel.box_stage } }}
|
|
end
|
|
|
|
|
|
--过关
|
|
function user.pass(cmd)
|
|
local level = cmd.data.level
|
|
-- local battles = cmd.data.battles -- 战斗数据
|
|
local box = cmd.data.box
|
|
if not level then
|
|
return {c = "user",m = "pass",data = {errcode = 10001, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
|
|
if level ~= usermodel.max_level then
|
|
return {c = "user",m = "pass",data = {errcode = 10002, errmsg = "关卡数据异常已重置!",data = { } }}
|
|
end
|
|
|
|
local lv = checkint(box)
|
|
if lv > 0 then
|
|
bagmodel:incrBagA("box_lv"..lv, 1)
|
|
end
|
|
|
|
--TODO:验证战斗数据
|
|
local coin = levellogic.getwavecoin(level)
|
|
bagmodel:incrBagA("coin", coin)
|
|
--过关
|
|
local max_level = usermodel.max_level
|
|
local rewards = {}
|
|
if max_level > 10 and max_level % 10 == 0 then
|
|
bagmodel:incrBagA("zhishibi", 1)
|
|
table.insert(rewards, {tp="item", id="zhishibi", count=1})
|
|
end
|
|
usermodel:incrlevel()
|
|
--TODO 开启灯神 需要把数据存到库中
|
|
achievementmodel:emit("rank", achievementmodel)
|
|
return {c = "user",m = "pass",data = {errcode = 0, errmsg = "",data = { max_level = max_level, rewards=table.array(rewards)} }}
|
|
end
|
|
|
|
|
|
--购买挂机时长
|
|
function user.buyguajitime(cmd)
|
|
local base_guaji_timelong = usermodel.base_guaji_timelong
|
|
local cfg = guajilogic.getguajishichangconf(base_guaji_timelong)
|
|
assert(cfg~=nil)
|
|
local price = cfg.price
|
|
local order_no = skynet.call(".id_service", "lua", "getuuid")
|
|
|
|
local log = {
|
|
uid=UID,
|
|
openid=usermodel.openid,
|
|
regionid=usermodel.regionid,
|
|
serverid=usermodel.serverid,
|
|
order_no=order_no,
|
|
description = "购买挂机奖励时长",
|
|
prepay_id="",
|
|
payment=price,
|
|
pay_status=0,
|
|
pay_type="buyguajitime",
|
|
recharge_id=tostring(cfg.id),
|
|
recharge_conf=cfg,
|
|
complete=0,
|
|
completed_at="",
|
|
created_at=dateutils.get_datetime()
|
|
}
|
|
local ok = mongohelper.insert(settings.recharge_mongodb_key.tname, settings.recharge_mongodb_key.cname, log)
|
|
if not ok then
|
|
return {c = "user",m = "buyguajitime",data = {errcode = 10003, errmsg = "购买失败, 请稍后再试", data = { } }}
|
|
end
|
|
|
|
return {c = "user",m = "buyguajitime",data = {errcode = 0, errmsg = "",data = { order_no = order_no } }}
|
|
end
|
|
|
|
|
|
--挂机等级增加
|
|
function user.guajilvup(cmd)
|
|
if bagmodel:getnum("zhishibi") <= 0 then
|
|
return {c = "user",m = "guajilvup",data = {errcode = 10001, errmsg = "资源不足",data = { } }}
|
|
end
|
|
bagmodel:decrBagA("zhishibi", 1)
|
|
bagmodel:save2log({zhishibi=-1}, "挂机等级升级")
|
|
guajimodel:guajilvup()
|
|
return {c = "user",m = "guajilvup",data = {errcode = 0, errmsg = "",data = { guaji = guajimodel:serialize() }}}
|
|
end
|
|
|
|
--领取挂机等级奖励
|
|
function user.receiveguajilvreward(cmd)
|
|
local id = cmd.data.id
|
|
if not id then
|
|
return {c = "user",m = "receiveguajilvreward",data = {errcode = 10001, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
id = checkint(id)
|
|
if guajimodel:checkreceive(id) then
|
|
return {c = "user",m = "receiveguajilvreward",data = {errcode = 10002, errmsg = "请勿重复领取!",data = { } }}
|
|
end
|
|
|
|
local cfg = guajilogic.getguajidengjiconf(id)
|
|
local mylv = guajimodel:getguajilv()
|
|
if cfg.level > mylv then
|
|
return {c = "user",m = "receiveguajilvreward",data = {errcode = 10003, errmsg = "等级不符, 请稍后再试!",data = { } }}
|
|
end
|
|
|
|
local rewards = cfg.clear_rewards
|
|
if #rewards > 0 then
|
|
local param = {}
|
|
for i,v in ipairs(rewards) do
|
|
param[v.key] = param[v.key] or 0
|
|
param[v.key] = param[v.key] + v.value
|
|
end
|
|
bagmodel:incrBagB(param)
|
|
end
|
|
guajimodel:receive(id)
|
|
return {c = "user",m = "receiveguajilvreward",data = {errcode = 0, errmsg = "",data = { } }}
|
|
end
|
|
|
|
|
|
--刷新黑市
|
|
function user.refreshblackmarket(cmd)
|
|
if not blackmarketmodel:chechrefresh() then
|
|
return {c = "user",m = "refreshblackmarket",data = {errcode = 10001, errmsg = "刷新次数超过上限",data = { } }}
|
|
end
|
|
|
|
local speed = blackmarketmodel:getrefreshspeed()
|
|
if bagmodel:getnum("gold") < speed then
|
|
return {c = "user",m = "refreshblackmarket",data = {errcode = 10002, errmsg = "金砖不足",data = { } }}
|
|
end
|
|
|
|
bagmodel:decrBagA("gold", speed)
|
|
blackmarketmodel:refresh()
|
|
|
|
return {c = "user",m = "refreshblackmarket",data = {errcode = 0, errmsg = "",data = { blackmarket = blackmarketmodel:serialize() } }}
|
|
end
|
|
|
|
|
|
--购买黑市
|
|
function user.buyblackmarket(cmd)
|
|
local id = cmd.data.id
|
|
if not id then
|
|
return {c = "user",m = "buyblackmarket",data = {errcode = 10001, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
|
|
if not blackmarketmodel._init then
|
|
return {c = "user",m = "buyblackmarket",data = {errcode = 10001, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
id = checkint(id)
|
|
|
|
if blackmarketmodel:checkbuy(id) == 1 then
|
|
return {c = "user",m = "buyblackmarket",data = {errcode = 10002, errmsg = "请勿重复购买!",data = { } }}
|
|
end
|
|
|
|
local gold = blackmarketmodel:getprice(id)
|
|
if bagmodel:getnum("gold") < gold then
|
|
return {c = "user",m = "buyblackmarket",data = {errcode = 10003, errmsg = "金砖不足",data = { } }}
|
|
end
|
|
|
|
bagmodel:decrBagA("gold", gold)
|
|
blackmarketmodel:dobuy(id)
|
|
|
|
local cfg = blackmarketlogic.getconfbyid(id)
|
|
DEBUG("cfg rewards = ", cjson.encode(cfg))
|
|
local result = cfg.reward
|
|
local param = {}
|
|
param[result.key] = result.value
|
|
local rews = {}
|
|
table.insert(rews, {tp="item", id=result.key, count=result.value})
|
|
DEBUG("cfg param = ", cjson.encode(param))
|
|
|
|
if #table.keys(param) > 0 then
|
|
bagmodel:incrBagB(param)
|
|
end
|
|
taskmodel:addtasknum(9, 1)
|
|
achievementmodel:emit("blackmarket", achievementmodel)
|
|
return {c = "user",m = "buyblackmarket",data = {errcode = 0, errmsg = "",data = { blackmarket = blackmarketmodel:serialize(), rewards = rews } }}
|
|
end
|
|
|
|
--获取全服排行榜
|
|
function user.loadserverrank(cmd)
|
|
local rank, myrank = skynet.call(".usercenterd", "lua", "getallrank", UID)
|
|
return {c = "user",m = "loadserverrank",data = {errcode = 0, errmsg = "",data = { rank = table.array(rank), myrank = myrank} }}
|
|
end
|
|
|
|
--获取俱乐部排行榜
|
|
function user.loadclubrank(cmd)
|
|
local rank, myrank = skynet.call(".clubcenterd", "lua", "getrank", UID, usermodel:getserverid())
|
|
return {c = "user",m = "loadclubrank",data = {errcode = 0, errmsg = "",data = { rank = table.array(rank), myrank = myrank} }}
|
|
end
|
|
|
|
function user.loaduserinfo(cmd)
|
|
local userid = cmd.data.userid
|
|
if not userid then
|
|
return {c = "user",m = "loaduserinfo",data = {errcode = 10001, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
userid = checkint(userid)
|
|
local user = skynet.call(".usercenterd", "lua", "getuserbyid", userid)
|
|
if not user then
|
|
return {c = "user",m = "loaduserinfo",data = {errcode = 10002, errmsg = "用户ID错误",data = { } }}
|
|
end
|
|
|
|
user.is_friend = friendmodel:isfriend(userid)
|
|
|
|
user.is_black = friendmodel:isblack(userid)
|
|
|
|
local result = skynet.call(".friendd", "lua", "checkapply", UID, userid)
|
|
if not result then
|
|
user.is_apply = -1
|
|
else
|
|
user.is_apply = result.status
|
|
end
|
|
|
|
local club = skynet.call(".clubcenterd", "lua", "loadclubinfo", userid) or {}
|
|
|
|
return {c = "user",m = "loaduserinfo",data = {errcode = 0, errmsg = "",data = { user = user, club = club } }}
|
|
end
|
|
|
|
--招募
|
|
function user.recruit(cmd)
|
|
local num = cmd.data.num
|
|
if not num then
|
|
return {c = "user",m = "recruit",data = {errcode = 10001, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
num = checkint(num)
|
|
local free = false
|
|
if num == 1 then
|
|
if not usermodel:checkrecruit() then
|
|
if bagmodel.zhaomuling < num then
|
|
return {c = "user",m = "recruit",data = {errcode = 10002, errmsg = "资源不足!",data = { } }}
|
|
end
|
|
else
|
|
free = true
|
|
end
|
|
end
|
|
|
|
local result = recruitlogic.recruit(math.floor(num))
|
|
local rewards = {}
|
|
local params = {}
|
|
for _, v in ipairs(result) do
|
|
local heroid = math.floor(v.heroid)
|
|
if heromodel:checkhero(heroid) then
|
|
params["card_"..heroid] = params["card_"..heroid] or 0
|
|
params["card_"..heroid] = params["card_"..heroid] + v.count
|
|
table.insert(rewards, {tp="item", id="card_"..heroid, count=v.count})
|
|
else
|
|
local hero = {}
|
|
hero.id = UID*1000+heroid
|
|
hero.uid = UID
|
|
hero.serverid = usermodel.serverid
|
|
hero.heroid = heroid
|
|
heromodel:add(hero)
|
|
achievementmodel:emit("addhero", achievementmodel)
|
|
table.insert(rewards, {tp="hero", id=heroid, count=1})
|
|
end
|
|
end
|
|
|
|
if num ~= 1 or not usermodel:checkrecruit() then
|
|
bagmodel:decrBagA("zhaomuling", num)
|
|
else
|
|
usermodel:updaterecruittime()
|
|
end
|
|
if #table.keys(params) > 0 then
|
|
bagmodel:incrBagB(params)
|
|
end
|
|
if zhaomumodel._init and usermodel.max_level > 20 then
|
|
zhaomumodel:incrscore(num)
|
|
end
|
|
bagmodel:save2log(params, "招募咸将")
|
|
--TODO:招募次数
|
|
usermodel:addrecruitnum(num)
|
|
taskmodel:addtasknum(4, num)
|
|
achievementmodel:emit("recruit", achievementmodel)
|
|
if free then
|
|
num = 0
|
|
end
|
|
return {c = "user",m = "recruit",data = {errcode = 0, errmsg = "",data = { rewards = rewards, num=num, recruit_over_timelong = usermodel:caloverrecruittimelong() } }}
|
|
end
|
|
|
|
--开启礼包
|
|
function user.openlibao(cmd)
|
|
local tp = cmd.data.tp
|
|
local num = cmd.data.num
|
|
local heroid = cmd.data.heroid
|
|
if not tp or not num then
|
|
return {c = "user",m = "openlibao",data = {errcode = 10001,errmsg = "请求异常,请稍后再试!", data = { }}}
|
|
end
|
|
|
|
if num > 99 then
|
|
return {c = "user",m = "openlibao",data = {errcode = 10002,errmsg = "最多一次开99个礼包!", data = { }}}
|
|
end
|
|
|
|
if bagmodel:getnum(tp) < num then
|
|
return {c = "user",m = "openlibao",data = {errcode = 10002,errmsg = "数量不足", data = { }}}
|
|
end
|
|
bagmodel:decrBagA(tp, num)
|
|
if tp == "libao_wujiang_cheng2" or tp == "libao_wujiang_hong2" then
|
|
heroid = checkint(heroid)
|
|
local rewards = libaologic.openlibao2(tp, num, heroid)
|
|
local param = {}
|
|
for i,v in ipairs(rewards) do
|
|
param[v.id] = param[v.id] or 0
|
|
param[v.id] = param[v.id] + v.count
|
|
end
|
|
bagmodel:incrBagB(param)
|
|
bagmodel:save2log(param, "开启礼包")
|
|
return {c = "user",m = "openlibao",data = {errcode = 0, errmsg = "",data = { rewards = rewards } }}
|
|
else
|
|
local rewards = libaologic.openlibao(tp, num)
|
|
if tp == "libao_coin" then
|
|
local t = 0
|
|
for i,v in ipairs(rewards) do
|
|
local coin = guajilogic.getguajicoin(guajimodel:getguajilv(), 3600 * v.count)
|
|
t = t + coin
|
|
v.count = coin
|
|
end
|
|
bagmodel:incrBagA("coin", t)
|
|
bagmodel:save2log({coin=t}, "开启金币礼包")
|
|
else
|
|
local param = {}
|
|
for i,v in ipairs(rewards) do
|
|
param[v.id] = param[v.id] or 0
|
|
param[v.id] = param[v.id] + v.count
|
|
end
|
|
bagmodel:incrBagB(param)
|
|
bagmodel:save2log(param, "开启礼包")
|
|
end
|
|
return {c = "user",m = "openlibao",data = {errcode = 0, errmsg = "",data = { rewards = rewards } }}
|
|
end
|
|
|
|
end
|
|
|
|
|
|
--鱼灵图鉴
|
|
function user.loadartifact(cmd)
|
|
return {c = "user",m = "loadartifact",data = {errcode = 0,data = {artifacts=artifactmodel:serialize()}}}
|
|
end
|
|
|
|
--鱼灵图鉴
|
|
function user.qibook(cmd)
|
|
return {c = "user",m = "qibook",data = {errcode = 0,data = {books=artifactmodel:serializebook()}}}
|
|
end
|
|
|
|
--收集鱼灵徽星
|
|
function user.collectqiemblemstar(cmd)
|
|
local artid = cmd.data.artid
|
|
if not artid then
|
|
return {c = "user",m = "collectqiemblemstar",data = {errcode = 10001,errmsg = "请求异常,请稍后再试!", data = { }}}
|
|
end
|
|
|
|
artid = checkint(artid)
|
|
|
|
local star = artifactmodel:getartbyartid(artid)
|
|
assert(star > 0 , " 鱼灵没有找到 ")
|
|
|
|
local n = artifactmodel:getcollectcount(artid)
|
|
|
|
if n >= star then
|
|
return {c = "user",m = "collectqiemblemstar",data = {errcode = 10002,errmsg = "升级条件不满足!", data = { }}}
|
|
end
|
|
|
|
local s = artifactmodel:collectemblemstar(artid)
|
|
DEBUG("artifactmodel collectemblemstar s = ", s)
|
|
if s <= 0 then
|
|
return {c = "user",m = "collectqiemblemstar",data = {errcode = 10003,errmsg = "收集失败!", data = { }}}
|
|
end
|
|
|
|
local star = booklogic.getqiemblemstarnum(artid, s)
|
|
DEBUG("artifactmodel collectemblemstar incr star = ", star)
|
|
assert(star ~= nil, "获取徽星数量失败")
|
|
usermodel:incremblemstar(star)
|
|
return {c = "user",m = "collectqiemblemstar",data = {errcode = 0,data = {}}}
|
|
end
|
|
|
|
-- 佩戴器
|
|
function user.wearqi(cmd)
|
|
local id = cmd.data.id
|
|
local heroid = cmd.data.heroid
|
|
local wearid = cmd.data.wearid --佩戴的英雄id
|
|
if not id or not heroid then
|
|
return {c = "user",m = "wearqi",data = {errcode = 10001,errmsg = "请求异常,请稍后再试!", data = { }}}
|
|
end
|
|
id = checkint(id)
|
|
heroid = checkint(heroid)
|
|
wearid = checkint(wearid)
|
|
local art = artifactmodel:getartbyheroid(heroid)
|
|
if art ~= nil then
|
|
return {c = "user",m = "wearqi",data = {errcode = 10002,errmsg = "请先卸下该武将的器!", data = { }}}
|
|
end
|
|
if wearid ~= 0 then
|
|
local art = artifactmodel:getartbyheroid(wearid)
|
|
if art.id ~= id then
|
|
return {c = "user",m = "wearqi",data = {errcode = 10003,errmsg = "器获取失败!", data = { }}}
|
|
end
|
|
artifactmodel:takeoffqi(wearid)
|
|
end
|
|
|
|
artifactmodel:wear(id, heroid)
|
|
return {c = "user",m = "wearqi",data = {errcode = 0,errmsg = "", data = { }}}
|
|
end
|
|
|
|
|
|
-- 取下器
|
|
function user.takeoffqi(cmd)
|
|
local heroid = cmd.data.heroid
|
|
if not heroid then
|
|
return {c = "user",m = "takeoffqi",data = {errcode = 10001,errmsg = "请求异常,请稍后再试!", data = { }}}
|
|
end
|
|
heroid = checkint(heroid)
|
|
local art = artifactmodel:getartbyheroid(heroid)
|
|
if art == nil then
|
|
return {c = "user",m = "takeoffqi",data = {errcode = 10002,errmsg = "该武将未佩戴器!", data = { }}}
|
|
end
|
|
artifactmodel:takeoffqi(heroid)
|
|
return {c = "user",m = "takeoffqi",data = {errcode = 0, errmsg = "", data = { }}}
|
|
end
|
|
|
|
--百服消息
|
|
function user.sendmsg(cmd)
|
|
local content = cmd.data.content
|
|
if not content then
|
|
return {c = "user",m = "sendmsg",data = {errcode = 10001, errmsg = "请求异常, 请稍后再试!", data = { }}}
|
|
end
|
|
if content == "" then
|
|
return {c = "user",m = "sendmsg",data = {errcode = 10002, errmsg = "消息不能为空!", data = { }}}
|
|
end
|
|
local is_valid = skynet.call(".word_crab", "lua", "is_valid", content)
|
|
if not is_valid then
|
|
return {c = "user",m = "sendmsg",data = {errcode = 10003, errmsg = "存在违规词!", data = { }}}
|
|
end
|
|
local id = skynet.call(".id_service", "lua", "genid", "baifumsg")
|
|
assert(id~=nil, "id 获取失败")
|
|
local msg = {
|
|
id=id,
|
|
server=usermodel:getBaiFuServer(),
|
|
sender=usermodel:get_look_info(),
|
|
content=content,
|
|
created_at=dateutils.get_datetime()
|
|
}
|
|
skynet.call(".msgcenterd", "lua", "sendbaifumsg", usermodel:getBaiFuServer(), msg)
|
|
skynet.send(".msgd", "lua", "sendbaifumsg", usermodel:getBaiFuServer(), msg)
|
|
return {c = "user",m = "sendmsg", data = {errcode = 0, errmsg = "", data = {}}}
|
|
end
|
|
|
|
--购买专属折扣
|
|
function user.receivevip(cmd)
|
|
local id = cmd.data.id
|
|
if not id then
|
|
return {c = "user",m = "receivevip",data = {errcode = 10001,errmsg = "请求异常,请稍后再试!", data = { }}}
|
|
end
|
|
|
|
local cfg = viplogic.getconf(id)
|
|
assert(cfg ~= nil, " 配置不存在! ")
|
|
local gold = cfg.gold1
|
|
if gold > bagmodel.gold then
|
|
return {c = "user",m = "receivevip",data = {errcode = 10002,errmsg = "金砖不足!", data = { }}}
|
|
end
|
|
bagmodel:decrBagA("gold", gold)
|
|
local rews = cfg.vip_rewards
|
|
local param = {}
|
|
for i,v in ipairs(rews) do
|
|
param[v.key] = param[v.key] or 0
|
|
param[v.key] = param[v.key] + v.value
|
|
end
|
|
bagmodel:incrBagB(param)
|
|
|
|
vipmodel:receive(id)
|
|
return {c = "user",m = "receivevip",data = {errcode = 0,errmsg = "", data = { }}}
|
|
end
|
|
|
|
function user.buyitem(cmd)
|
|
local name = cmd.data.name
|
|
local num = cmd.data.num
|
|
if not name or not num then
|
|
return {c = "user",m = "buyitem",data = {errcode = 10001, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
|
|
num = checkint(num)
|
|
|
|
if num < 0 then
|
|
return {c = "user",m = "buyitem",data = {errcode = 10002, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
|
|
local mygold = bagmodel:getnum("gold")
|
|
local gold = goldlogic.getgold(name)
|
|
|
|
if mygold < gold then
|
|
return {c = "user",m = "buyitem",data = {errcode = 10001, errmsg = "金砖数量不足",data = { } }}
|
|
end
|
|
|
|
bagmodel:incrBagA(name, num)
|
|
bagmodel:decrBagA("gold", num * gold)
|
|
return {c = "user",m = "buyitem",data = {errcode = 0, errmsg = "",data = { } }}
|
|
end
|
|
|
|
--使用兑换码
|
|
function user.usecode(cmd)
|
|
local code = cmd.data.code
|
|
if not code then
|
|
return {c = "user",m = "usecode",data = {errcode = 10001, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
|
|
local info = skynet.call(".coded", "lua", "loadbycode", code)
|
|
|
|
if info == nil then
|
|
return {c = "user",m = "usecode",data = {errcode = 10002, errmsg = "兑换码错误!",data = { } }}
|
|
end
|
|
|
|
if checkint(info.status) == 2 then
|
|
return {c = "user",m = "usecode",data = {errcode = 10002, errmsg = "无效的兑换码!",data = { } }}
|
|
end
|
|
|
|
if checkint(info.total) > 0 and checkint(info.total) <= checkint(info.num) then
|
|
return {c = "user",m = "usecode",data = {errcode = 10002, errmsg = "已达兑换总数!",data = { } }}
|
|
end
|
|
|
|
if checkint(info.vip) > usermodel:getviplv() then
|
|
return {c = "user",m = "usecode",data = {errcode = 10003, errmsg = "vip等级不足!",data = { } }}
|
|
end
|
|
|
|
if checkint(info.expire_type) == 2 then
|
|
local pattern = "(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)"
|
|
local s = dateutils.get_timestamp_by_datetime(info.start_expire .. " 00:00:00", pattern)
|
|
local e = dateutils.get_timestamp_by_datetime(info.end_expire .. " 23:59:59", pattern)
|
|
if os.time() < s then
|
|
return {c = "user",m = "usecode",data = {errcode = 10003, errmsg = "兑换码未开始!",data = { } }}
|
|
end
|
|
if os.time() > e then
|
|
return {c = "user",m = "usecode",data = {errcode = 10004, errmsg = "兑换码已结束!",data = { } }}
|
|
end
|
|
end
|
|
|
|
local c = skynet.call(".coded", "lua", "checkreceive", UID, code)
|
|
if c then
|
|
return {c = "user",m = "usecode",data = {errcode = 10005, errmsg = "请勿重复领取!",data = { } }}
|
|
end
|
|
|
|
local ok = skynet.call(".coded", "lua", "receive", UID, code)
|
|
if not ok then
|
|
return {c = "user",m = "usecode",data = {errcode = 10006, errmsg = "兑换失败!",data = { } }}
|
|
end
|
|
|
|
local rewards = {}
|
|
local items = info.items
|
|
local param = {}
|
|
for i,v in ipairs(items) do
|
|
param[v.name] = param[v.name] or 0
|
|
param[v.name] = param[v.name] + checkint(v.num)
|
|
table.insert(rewards, {tp="item", id=v.name, count=v.num})
|
|
end
|
|
bagmodel:incrBagB(param)
|
|
|
|
local log = {
|
|
uid=UID,
|
|
code=code,
|
|
items=items,
|
|
created_at=dateutils.get_datetime()
|
|
}
|
|
|
|
local ok = mqhelper.exec("insert", UID, settings.code_exchange_mongodb_key.tname, settings.code_exchange_mongodb_key.cname, log)
|
|
|
|
return {c = "user",m = "usecode",data = {errcode = 0, errmsg = "",data = { rewards = rewards} }}
|
|
end
|
|
|
|
function user.loadserver(cmd)
|
|
|
|
local myusers = skynet.call(".usercenterd", "lua", "getmyusers", usermodel.unionid)
|
|
|
|
local server_list = mongohelper.find(settings.game_server_mongodb_key.tname, settings.game_server_mongodb_key.cname, nil, nil, {_id=-1})
|
|
local server_items = mongohelper.find(settings.server_item_mongodb_key.tname, settings.server_item_mongodb_key.cname, nil, nil, {_id=-1})
|
|
|
|
local servers = {}
|
|
local function findstatus(serverid, server_items)
|
|
for i,v in ipairs(server_items) do
|
|
if v.server_id == serverid then
|
|
return checkint(v.status)
|
|
end
|
|
end
|
|
return 2
|
|
end
|
|
|
|
for i,v in ipairs(myusers) do
|
|
table.insert(servers, {server_id=0, _id=checkint(v.serverid), status=findstatus(v.serverid, server_items), user=v})
|
|
end
|
|
|
|
local function finduserbyserverid(serverid, myusers)
|
|
for i,v in ipairs(myusers) do
|
|
if v.serverid == serverid then
|
|
return v
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
local function getitems(_id, server_items)
|
|
local items = {}
|
|
for i,v in ipairs(server_items) do
|
|
if v.server_id == _id then
|
|
local u = finduserbyserverid(v._id, myusers)
|
|
v.user = u
|
|
table.insert(items, v)
|
|
end
|
|
end
|
|
table.sort( items, function(a, b)
|
|
return a._id > b._id
|
|
end)
|
|
return table.array(items)
|
|
end
|
|
for i,v in ipairs(server_list) do
|
|
v.items = getitems(v._id, server_items)
|
|
end
|
|
|
|
table.sort( server_list, function(a, b)
|
|
return a._id > b._id
|
|
end)
|
|
|
|
table.insert(server_list, 1, {_id=0, server_name="最近登录", items=table.array(servers)})
|
|
return {c = "user",m = "loadserver",data = {errcode = 0, errmsg = "",data = { list = { server_list = server_list} } }}
|
|
end
|
|
|
|
function user.chooseserver(cmd)
|
|
local serverid = cmd.data.serverid
|
|
if not serverid then
|
|
return {c = "user",m = "chooseserver",data = {errcode = 10001, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
serverid = checkint(serverid)
|
|
if serverid == usermodel.serverid then
|
|
return {c = "user",m = "chooseserver",data = {errcode = 10002, errmsg = "您已在当前服务器!",data = { } }}
|
|
end
|
|
|
|
local server = mongohelper.findOne(settings.server_item_mongodb_key.tname, settings.server_item_mongodb_key.cname, {_id=serverid})
|
|
|
|
if server == nil then
|
|
return {c = "user",m = "chooseserver",data = {errcode = 10003, errmsg = "服务器不存在!",data = { } }}
|
|
end
|
|
|
|
local ok = skynet.call(".redisd", "lua", "chooseserver", usermodel.unionid, serverid)
|
|
if not ok then
|
|
return {c = "user",m = "chooseserver",data = {errcode = 10003, errmsg = "选择服务器失败!",data = { } }}
|
|
end
|
|
return {c = "user",m = "chooseserver",data = {errcode = 0, errmsg = "",data = { } }}
|
|
end
|
|
|
|
function user.updateuser(cmd)
|
|
local nickname = cmd.data.nickname
|
|
local avatar = cmd.data.avatar
|
|
if not nickname or not avatar then
|
|
return {c = "user",m = "updateuser",data = {errcode = 10001, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
|
|
if usermodel.is_update ~= 1 then
|
|
usermodel:savenickname(nickname)
|
|
end
|
|
|
|
usermodel:saveavatar(avatar)
|
|
|
|
return {c = "user",m = "updateuser",data = {errcode = 0, errmsg = "",data = { nickname = usermodel.nickname, avatar = usermodel.avatar } }}
|
|
end
|
|
|
|
--获取修改次数
|
|
function user.loadupdatenum(cmd)
|
|
local num = skynet.call(".redisd", "lua", "getupdatenicknamenum", UID)
|
|
return {c = "user",m = "loadupdatenum",data = {errcode = 0, errmsg = "",data = { num=num } }}
|
|
end
|
|
|
|
function user.updatenickname(cmd)
|
|
local nickname = cmd.data.nickname
|
|
if not nickname or nickname == "" then
|
|
return {c = "user",m = "updatenickname",data = {errcode = 10001, errmsg = "昵称输入错误",data = { } }}
|
|
end
|
|
|
|
local ok = skynet.call(".word_crab", "lua", "is_valid", nickname)
|
|
if not ok then
|
|
return { c = "user", m = "updatenickname", data = { errcode = 10001, errmsg = "昵称存在违规字", data = {}} }
|
|
end
|
|
local num = skynet.call(".redisd", "lua", "getupdatenicknamenum", UID)
|
|
num = checkint(num)
|
|
if num > 0 then
|
|
if bagmodel.gold < 200 then
|
|
return {c = "user",m = "updatenickname",data = {errcode = 10002, errmsg = "金砖不足",data = { } }}
|
|
end
|
|
bagmodel:decrBagA("gold", 200)
|
|
end
|
|
usermodel:savenickname(nickname)
|
|
local ok = skynet.call(".redisd", "lua", "incrupdatenicknamenum", UID)
|
|
-- DEBUG("ok = ", ok)
|
|
return {c = "user",m = "updatenickname",data = {errcode = 0, errmsg = "",data = { nickname = usermodel.nickname } }}
|
|
end
|
|
|
|
function user.addbag(cmd)
|
|
local name = cmd.data.name
|
|
local num = cmd.data.num
|
|
if not name or not num then
|
|
return {c = "user",m = "addbag",data = {errcode = 10001, errmsg = "请求异常, 请稍后再试!",data = { } }}
|
|
end
|
|
bagmodel:incrBagA(name, tonumber(num))
|
|
bagmodel:save2log({[name]=num}, "测试增加")
|
|
return {c = "user",m = "addbag",data = {errcode = 0, errmsg = "",data = { bag = { } } }}
|
|
end
|
|
|
|
return user
|