77 lines
3.1 KiB
Lua
77 lines
3.1 KiB
Lua
local skynet = require "skynet"
|
|
local oo = require "Class"
|
|
local log = require "Log"
|
|
local pb = require "pb"
|
|
local redisKeyUrl = require "RedisKeyUrl"
|
|
local sqlUrl = require "SqlUrl"
|
|
local dataType = require "DataType"
|
|
local json = require "json"
|
|
local errorInfo = require "ErrorInfo"
|
|
local mail = require "Mail"
|
|
local Questionnaire = oo.class()
|
|
|
|
Questionnaire.issueType_2 = 2 --第二期问卷调查
|
|
Questionnaire.issueType_3 = 3 --第三期问卷调查
|
|
Questionnaire.issueType_4 = 4 --第四期问卷调查
|
|
|
|
function Questionnaire:Init()
|
|
|
|
end
|
|
|
|
--问卷调查显示
|
|
function Questionnaire:Show( player , c2sData , s2cData )
|
|
c2sData.data = assert(pb.decode("C2SQuestionnaireShow", c2sData.data ))
|
|
local level = player.gameData.level
|
|
local data = {}
|
|
local cfgSValue = skynet.server.gameConfig:GetPlayerAllCfg( player , "SValue")
|
|
-- 玩家等级达到35级才可以显示问卷调查
|
|
if cfgSValue.QuestionnaireUnlockLvl <= level and not player.gameData.questionnaire.isFinish then
|
|
data.canShow = true
|
|
else
|
|
data.canShow = false
|
|
end
|
|
s2cData.cmd = pb.enum("MsgType","CMD_S2C_QuestionnaireShow")
|
|
s2cData.data = assert(pb.encode("S2CQuestionnaireShow", data))
|
|
end
|
|
|
|
--问卷调查提交
|
|
function Questionnaire:Submit( player , c2sData , s2cData )
|
|
c2sData.data = assert(pb.decode("C2SQuestionnaireSubmit", c2sData.data ))
|
|
local data = {}
|
|
data.award ={}
|
|
local questionInfos = c2sData.data.questionInfo
|
|
-- 遍历问卷 判读玩家是否全部完成
|
|
local finish = true
|
|
for k , v in pairs(questionInfos) do
|
|
for x , y in pairs(v.option) do
|
|
-- 如果选项为空 则退出
|
|
if not y then
|
|
-- 没有回答选项的id
|
|
local questionId = v.questionId
|
|
finish = false
|
|
end
|
|
end
|
|
end
|
|
-- 如果完成了 发放奖励 同时将数据保存在数据库中
|
|
if finish and not player.gameData.questionnaire.isFinish then
|
|
local eventId = pb.enum("EnumMoneyChangeEventID","EventID_37")
|
|
player:MoneyChange(dataType.GoodsType_Volute , 50 , eventId)
|
|
--将问卷数据保存到后台
|
|
local param = { account = player.account, questionInfo = json:encode( c2sData.data ) , issue = self.issueType_4 }
|
|
local web = skynet.server.gameConfig.WebConfig.host .. ":" .. skynet.server.gameConfig.WebConfig.port
|
|
local url = skynet.server.common.addQuestionnaireUrl
|
|
local status,body = skynet.server.httpClient:PostJson( web , url , json:encode(param),"http")
|
|
local newbody = json:decode(body)
|
|
if 200 ~= status or 200 ~= newbody.code then
|
|
log.info("保存问卷数据失败 玩家:" , player.account , "数据:" , json:encode( c2sData.data ) )
|
|
end
|
|
else
|
|
s2cData.code = errorInfo.ErrorCode.QuestionnaireNoFinish
|
|
end
|
|
player.gameData.questionnaire.isFinish = true
|
|
s2cData.cmd = pb.enum("MsgType","CMD_S2C_QuestionnaireSubmit")
|
|
s2cData.data = assert(pb.encode("S2CQuestionnaireSubmit", data))
|
|
end
|
|
|
|
skynet.server.questionnaire = Questionnaire
|
|
return Questionnaire |