using asap.core; using game; using GameCore; using System; using System.Collections.Generic; using UnityEngine; public class SurveyService { const string SurveyUrl = "https://pt93-tyqnr.qijihdhk.com/"; const string SurveyData = "SurveyData"; const string SurveyReadSidData = "SurveyReadSidData"; ICustomServerMgr customServerMgr; IUserService userService; cfg.Tables tables; MatchlistData matchlistData { get; set; } List receivedReward = new List(); List readSid = new List(); public SurveyService(ICustomServerMgr customServerMgr, IUserService userService, cfg.Tables tables) { this.customServerMgr = customServerMgr; this.userService = userService; this.tables = tables; string surveyData = PlayFabMgr.Instance.GetLocalData(SurveyData); if (!string.IsNullOrEmpty(surveyData)) { receivedReward = Newtonsoft.Json.JsonConvert.DeserializeObject>(surveyData); } string surveyReadSidData = PlayFabMgr.Instance.GetLocalData(SurveyReadSidData); if (!string.IsNullOrEmpty(surveyReadSidData)) { readSid = Newtonsoft.Json.JsonConvert.DeserializeObject>(surveyReadSidData); } } /// /// 拉取问卷 /// public async void PostSurveyMatchlist() { try { PlayerData playerData = GContext.container.Resolve(); if (playerData.lv < tables.TbGlobalConfig.SurveyLevelRequire) { return; } int register_days = (ZZTimeHelper.UtcNow() - userService.CreateTime).Days; float totalPay = GContext.container.Resolve().GetBuyPaymentAmount(); PostMatchlist post = new PostMatchlist { uid = userService.CustomId,//"318904",// register_days = register_days, language = userService.Language, totalPay = totalPay, level = playerData.lv, vip = playerData.vip }; matchlistData = null; string boby = Newtonsoft.Json.JsonConvert.SerializeObject(post); string url = $"{SurveyUrl}api/dwsurvey/anon/response/matchList.do?appId=17&platformName=ft"; string json = await customServerMgr.CustomServerPost(url, boby); if (!string.IsNullOrEmpty(json) && json != "[]") { matchlistData = Newtonsoft.Json.JsonConvert.DeserializeObject(json); } //设置红点 SetRedPoint(); } catch (Exception e) { Debug.LogError("PostSurveyMatchlist:" + e); } } public string Sid { get { if (matchlistData != null && matchlistData.resultCode == 200 && matchlistData.data.Length > 0) { return matchlistData.data[0].sid; } return ""; } } public int Award { get { if (matchlistData != null && matchlistData.resultCode == 200 && matchlistData.data.Length > 0) { string award = matchlistData.data[0].award; if (int.TryParse(award, out int result)) { return result; } } return 0; } } void SetRedPoint() { if (string.IsNullOrEmpty(Sid) || readSid.Contains(Sid)) { RedPointManager.Instance.SetRedPointState("menu.survey", false); } else { RedPointManager.Instance.SetRedPointState("menu.survey", true); } } /// /// 请求答题的链接 /// /// public string GetSurveyAnswer() { string url = $"{SurveyUrl}static/diaowen/answer-p.html?"; string register_days = (ZZTimeHelper.UtcNow() - userService.CreateTime).Days.ToString(); string totalPay = GContext.container.Resolve().GetBuyPaymentAmount().ToString(); PlayerData playerData = GContext.container.Resolve(); url += $"sid={Sid}" + "&platform=ft" + $"&uid={userService.CustomId}" + $"&language={userService.Language}" + $"®ister_days={register_days}" + $"&extraInfo={playerData.lv}" + $"&totalPay={totalPay}"; //标记已读 readSid.Add(Sid); PlayFabMgr.Instance.UpdateUserDataValue(SurveyReadSidData, Newtonsoft.Json.JsonConvert.SerializeObject(readSid)); //设置红点 SetRedPoint(); return url; } /// /// 检查是否能领奖 /// public async void GetSurveyCheckAnswer() { try { string sid = Sid; string url = $"{SurveyUrl}api/dwsurvey/anon/response/checkAnswer.do?"; url += $"uid={userService.CustomId}&surveySid={sid}&appId=17&platformName=ft"; //#if UNITY_EDITOR // //测试 // url = "https://pt93-tyqnr.qijihdhk.com/api/dwsurvey/anon/response/checkAnswer.do?surveySid=8zij9i5&uid=1&platformName=ft&appId=17"; //#endif matchlistData = null; string json = await customServerMgr.GetStringAsync(url); if (receivedReward.Contains(sid)) { //Debug.Log("已经领过奖:" + json); return; } if (!string.IsNullOrEmpty(json) && json != "[]") { SurveyCheckAnswerResult data = Newtonsoft.Json.JsonConvert.DeserializeObject(json); if (data.resultCode == 200 && data.data != null) { SurveyCheckAnswerData surveyCheckAnswerData = Newtonsoft.Json.JsonConvert.DeserializeObject(data.data); var SurveyReward = tables.TbGlobalConfig.SurveyReward; string awardStr = surveyCheckAnswerData.award; if (int.TryParse(awardStr, out int award)) { if (!SurveyReward.Contains(award)) { Debug.LogError("问卷奖励错误: " + awardStr); award = SurveyReward[0]; } GContext.container.Resolve().AddItemByDrop(award); GContext.Publish(new ShowData()); receivedReward.Add(sid); PlayFabMgr.Instance.UpdateUserDataValue(SurveyData, Newtonsoft.Json.JsonConvert.SerializeObject(receivedReward)); } else { Debug.LogError("问卷奖励错误: " + awardStr); } } } } catch (Exception e) { Debug.LogError("GetSurveyCheckAnswer:" + e); } } class PostMatchlist { public string uid { get; set; } public int register_days { get; set; } public string language { get; set; } public float totalPay { get; set; } public int level { get; set; } public int vip { get; set; } } } public class MatchlistData { public int resultCode { get; set; } public string resultMsg { get; set; } public MatchlistDataInfo[] data { get; set; } } public class MatchlistDataInfo { public string award { get; set; } public string defaultLanguage { get; set; } public string[] languages { get; set; } public string surveyNameText { get; set; } public string id { get; set; } public string creatDate { get; set; } public string sid { get; set; } public string title { get; set; } public string introduce { get; set; } } public class SurveyCheckAnswerResult { public int resultCode { get; set; } public string resultMsg { get; set; } public string data { get; set; } } public class SurveyCheckAnswerData { public string award { get; set; } public string extraInfo { get; set; } }