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