WebPage.cs 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Text;
  6. using CB.Entity;
  7. using CB.Common;
  8. using System.Data;
  9. using CB.Config;
  10. using System.Text.RegularExpressions;
  11. namespace CB.Framework
  12. {
  13. /// <summary>
  14. /// 前台页面基类
  15. /// </summary>
  16. public class WebPage : PageBase
  17. {
  18. #region 属性
  19. /// <summary>
  20. /// 页面标题
  21. /// </summary>
  22. public string pageTitle = "";
  23. /// <summary>
  24. /// 页面关键字
  25. /// </summary>
  26. public string pageKeyWords = "";
  27. /// <summary>
  28. /// 页面描述
  29. /// </summary>
  30. public string pageDescription = "";
  31. /// <summary>
  32. /// 开奖时间
  33. /// </summary>
  34. protected string kjsj = "";
  35. /// <summary>
  36. /// 兑奖时间
  37. /// </summary>
  38. protected string djsj = "";
  39. /// <summary>
  40. /// 开奖直播中的切换彩种
  41. /// </summary>
  42. protected string lotMuen = "";
  43. #endregion
  44. public List<int> chartids = new List<int>{ 1, 26, 14, 96, 5, 191, 4, 202, 32, 17, 192, 100, 108, 16,43,44,45,46,47,48,49,58,50,51,52,53,54,55,56,57,58,59,60,70,71,72,73,74,75,76,77,78,79,80,158,81,82,83,84,85,86,87,88,89,90,91,159 };
  45. public WebPage()
  46. {
  47. }
  48. /// <summary>
  49. /// 页面数据初始化
  50. /// </summary>
  51. protected override void InitData()
  52. {
  53. }
  54. /// <summary>
  55. /// 页面热点推荐内容
  56. /// </summary>
  57. /// <param name="id"></param>
  58. /// <returns></returns>
  59. public static string GetHotContent(int id)
  60. {
  61. return CB.Data.Caches.GetRecommendContent(id);
  62. }
  63. #region 彩种logo样式
  64. /// <summary>
  65. /// 获取彩种Logo样式
  66. /// </summary>
  67. /// <param name="lotId"></param>
  68. /// <returns></returns>
  69. public static string GetLotteryLogoCss(int lotId)
  70. {
  71. string css = "";
  72. switch (lotId)
  73. {
  74. case 1://福彩3D
  75. css = "fc3d";
  76. break;
  77. case 2://排列三
  78. css = "p3";
  79. break;
  80. case 3://排列五
  81. css = "p5";
  82. break;
  83. case 4://双色球
  84. css = "ssq";
  85. break;
  86. case 5://七乐彩
  87. css = "qlc";
  88. break;
  89. case 12://大乐透
  90. css = "dlt";
  91. break;
  92. case 14://重庆时时彩
  93. css = "ssc";
  94. break;
  95. case 15://广东快乐十分
  96. case 91:
  97. case 92:
  98. case 93:
  99. case 94:
  100. case 99:
  101. css = "klsf";
  102. break;
  103. case 16://十一运夺金
  104. css = "yydj";
  105. break;
  106. case 19://七星彩
  107. css = "qxc";
  108. break;
  109. case 20://华东11选5
  110. css = "yyxw";
  111. break;
  112. case 28://好彩1
  113. css = "hc1";
  114. break;
  115. case 95:
  116. case 29://群英会
  117. css = "qyh";
  118. break;
  119. case 31://广东11选5
  120. case 70:
  121. case 71:
  122. case 72:
  123. case 73:
  124. case 74:
  125. case 75:
  126. case 76:
  127. case 77:
  128. case 78:
  129. case 79:
  130. case 80:
  131. case 81:
  132. case 82:
  133. case 83:
  134. case 84:
  135. case 85:
  136. case 100:
  137. case 106:
  138. case 107:
  139. case 108:
  140. case 109:
  141. case 110:
  142. case 111:
  143. css = "yyxw";
  144. break;
  145. case 66://22选5
  146. case 67:
  147. css = "ee5";
  148. break;
  149. case 63://6+1
  150. case 64:
  151. css = "lj1";
  152. break;
  153. case 68://新疆35选7
  154. css = "swxq";
  155. break;
  156. case 61://36选7
  157. case 69:
  158. css = "slxq";
  159. break;
  160. case 59://快乐彩
  161. case 90:
  162. case 98:
  163. css = "klye";
  164. break;
  165. case 65://华东15选5
  166. css = "swxw";
  167. break;
  168. case 60://福建31选7
  169. css = "syxq";
  170. break;
  171. case 62:
  172. css = "qws";
  173. break;
  174. case 86://快3
  175. case 87:
  176. case 88:
  177. case 89:
  178. case 96:
  179. case 97:
  180. css="ks";
  181. break;
  182. case 101:
  183. css = "hbssxw";
  184. break;
  185. case 102:
  186. css = "ssl";
  187. break;
  188. case 114:
  189. css = "klb";
  190. break;
  191. case 115:
  192. css = "pks";
  193. break;
  194. //--2016-12 新增彩种
  195. case 103://山东快乐扑克3
  196. css = "klpk";
  197. break;
  198. case 104://幸运赛车
  199. css = "xysc";
  200. break;
  201. case 105://河南快赢481(泳坛夺金)
  202. css = "hnky";
  203. break;
  204. //--
  205. }
  206. return css;
  207. }
  208. #endregion
  209. #region 走势图、遗漏、图表模板相关
  210. /// <summary>
  211. /// 根据模板和数据生成HTML
  212. /// </summary>
  213. /// <param name="tid">模板ID</param>
  214. /// <param name="data"></param>
  215. /// <returns></returns>
  216. public static string BuildTemplateData(int tid, Dictionary<string, string> data)
  217. {
  218. var template = CB.Data.Caches.GetTemplateInfo(tid);
  219. if (null == template)
  220. return "";
  221. string content = CB.Data.TemplateFiles.GetFileContent(template.FilePath);
  222. if (TemplateMethodType.Normal == template.MethodType)
  223. return content;
  224. if (null == data || 0 >= data.Count)
  225. return content;
  226. if (TemplateMethodType.Replace == template.MethodType)
  227. {
  228. foreach (var key in data.Keys)
  229. {
  230. content = content.Replace(key, data[key]);
  231. }
  232. return content;
  233. }
  234. return "";
  235. }
  236. #endregion
  237. #region 根据资源文件名,生成对应版本号的HTML代码
  238. /// <summary>
  239. /// 根据资源文件名,生成对应版本号的HTML代码
  240. /// </summary>
  241. /// <param name="files">多个文件请用逗号","分隔</param>
  242. /// <returns></returns>
  243. public string GetResourceFiles(string files)
  244. {
  245. if (string.IsNullOrWhiteSpace(files))
  246. return "";
  247. return GetResourceFiles(files.Split(','));
  248. }
  249. /// <summary>
  250. /// 根据资源文件名,生成对应版本号的HTML代码
  251. /// </summary>
  252. /// <param name="files">资源文件名</param>
  253. /// <returns></returns>
  254. public string GetResourceFiles(string[] files)
  255. {
  256. if (null == files || 0 >= files.Length)
  257. return "";
  258. return CB.Config.ResourcesConfigs.GetMultiResourcesFilesHtml(files);
  259. }
  260. #endregion
  261. #region 走势图表获取相关栏目详细
  262. /// <summary>
  263. /// 走势图表菜单导航
  264. /// </summary>
  265. /// <param name="chartId">走势图ID</param>
  266. /// <param name="lotteryId">彩种ID</param>
  267. /// <param name="tid">走势图表类型</param>
  268. /// <param name="otherLink">固定推荐字符串</param>
  269. /// <returns></returns>
  270. public static string GetTrendMenu(int chartId, int lotteryId, int tid, string otherLink)
  271. {
  272. var p = CB.Data.Caches.GetTrendTypeList();
  273. IList<TrendChartInfo> list;
  274. var sp = new StringBuilder();
  275. var c = new StringBuilder();
  276. c.Append("<div id=\"tab_c\">");
  277. sp.Append("<div id=\"tab_t\" class=\"menu\"><ul>");
  278. foreach (var item in p)
  279. {
  280. list = CB.Data.Caches.GetTrendChartList(lotteryId, item.Id, 0);
  281. if (null != list && 0 < list.Count)
  282. {
  283. if (tid != item.Id)
  284. {
  285. c.Append("<div class=\"hide\">");
  286. sp.AppendFormat("<li><a href=\"{0}\" target=\"_blank\">{1}</a></li>", item.Path, item.Name);
  287. }
  288. else
  289. {
  290. c.Append("<div class=\"cur\">");
  291. sp.AppendFormat("<li class=\"act\"><a href=\"{0}\" target=\"_blank\">{1}</a></li>", item.Path, item.Name);
  292. }
  293. c.Append("<ul class=\"submenu\">");
  294. foreach (var l in list)
  295. {
  296. if (!l.Name.Contains("手机版"))
  297. {
  298. c.AppendFormat("<li{0}><a title=\"{2}\" href=\"{1}\" target=\"_blank\">{2}</a></li>", chartId == l.Id ? " class=\"select\"" : "",
  299. 2002 == item.Id ? l.Url : string.Format("{0}{1}_{2}.htm", CB.Data.Caches.GetTrendPath(l.Tid), l.Cid, l.Id), l.Name);
  300. }
  301. }
  302. c.Append("</ul>");
  303. c.Append("</div>");
  304. }
  305. }
  306. if (1 == lotteryId || 2 == lotteryId || 4 == lotteryId || 12 == lotteryId)
  307. {
  308. sp.Append("<li><a href=\"/zt/\" target=\"_blank\">专题</a></li>");
  309. c.Append("<div class=\"hide\">");
  310. c.Append("<ul class=\"submenu\">");
  311. string lotteryCode = "";
  312. switch (lotteryId)
  313. {
  314. case 1:
  315. lotteryCode = "3d";
  316. break;
  317. case 2:
  318. lotteryCode = "p3";
  319. break;
  320. case 4:
  321. lotteryCode = "ssq";
  322. break;
  323. case 12:
  324. lotteryCode = "dlt";
  325. break;
  326. }
  327. var l = CB.Data.Caches.GetColumnList(lotteryCode);
  328. int t = 15;
  329. if (t > l.Count)
  330. t = l.Count;
  331. for (int i = 0; i < t; i++)
  332. {
  333. c.AppendFormat("<li><a href=\"/zt/{0}/\" target=\"_blank\">{1}</a></li>",
  334. l[i].RewriteUrl, l[i].Name);
  335. }
  336. c.Append("</ul>");
  337. c.Append("</div>");
  338. }
  339. sp.Append("</ul>");
  340. if (!string.IsNullOrEmpty(otherLink))
  341. { sp.Append(otherLink); }
  342. sp.Append("</div>");
  343. c.Append("</div>");
  344. return sp.ToString() + c.ToString();
  345. }
  346. /// <summary>
  347. /// 走势图表列表
  348. /// </summary>
  349. /// <param name="lotteryId">彩种ID</param>
  350. /// <param name="tid">走势图表类型</param>
  351. /// <returns></returns>
  352. protected virtual string GetTrendChart(int lotteryId, int tid)
  353. {
  354. var list = CB.Data.Caches.GetTrendChartList(lotteryId, tid, 0);
  355. if (null == list || 0 >= list.Count)
  356. return "";
  357. var sp = new StringBuilder(list.Count * 100);
  358. string css = "";
  359. foreach (var item in list)
  360. {
  361. if (TrendChartStatus.New == item.Status)
  362. css = " class=\"new\"";
  363. if (TrendChartStatus.Hot == item.Status)
  364. css = " class=\"hot\"";
  365. if (!item.Name.Contains("手机版"))
  366. {
  367. sp.AppendFormat("<li{0}><a href=\"{1}_{2}.htm\" target=\"_blank\">{3}</a></li>", css, item.Cid, item.Id, item.Name);
  368. }
  369. }
  370. return sp.ToString();
  371. }
  372. protected virtual string WapGetTrendChart(int lotteryId, int tid, List<int> chartids,bool isWap=false)
  373. {
  374. var list = CB.Data.Caches.GetTrendChartList(lotteryId, tid, 0);
  375. var lottery = CB.Data.Caches.GetLotteryInfo(lotteryId);
  376. if (null == list || 0 >= list.Count)
  377. return "";
  378. var sp = new StringBuilder(list.Count * 100);
  379. string css = "";
  380. int i = 1;
  381. int c = 0;
  382. foreach (var item in list)
  383. {
  384. if (i%3==1)
  385. {
  386. sp.Append("<ul>");
  387. }
  388. if (TrendChartStatus.New == item.Status)
  389. css = " <span class=\"new\"></span>";
  390. if (TrendChartStatus.Hot == item.Status)
  391. css = " <span class=\"hot\"></span>";
  392. //if (chartids.Contains(item.Id))
  393. //{
  394. //modified by zizi, at 2016-5-20
  395. if (tid != 2002)
  396. {
  397. if ((!item.Name.Contains("手机版") && !isWap) || (item.Name.Contains("手机版") && isWap))
  398. {
  399. var _name = isWap ? item.Name.Replace("手机版", "") : item.Name;
  400. var _id = isWap ? MobPcConvert.GetSyncIdFromM(item.Id) : item.Id;
  401. if (_id == 0 && isWap) _id = item.Id;
  402. var txtReg = "^"+lottery.Name;
  403. if (txtReg.Contains("+"))
  404. txtReg = txtReg.Replace("+", @"[\+]");
  405. //TODO: 2016-7-15 保持移动端和pc端的地址一致
  406. sp.AppendFormat("<li><a href=\"{1}_{2}.htm\">{3}{0}</a></li>", css, item.Cid, _id,//item.Id,
  407. // style=\"color:#2574c5\"
  408. RemovePreffixLotName(Regex.Replace(_name, txtReg, "",
  409. RegexOptions.IgnoreCase)));
  410. }
  411. else
  412. {
  413. c++;
  414. i--;
  415. }
  416. }
  417. else
  418. {
  419. if (!item.Name.Contains("手机版"))
  420. {
  421. sp.AppendFormat("<li><a href=\"{1}\">{2}{0}</a></li>", css, item.Url,
  422. // style=\"color:#2574c5\"
  423. RemovePreffixLotName(Regex.Replace(item.Name, "^" + lottery.Name, "",
  424. RegexOptions.IgnoreCase)));
  425. }
  426. else
  427. {
  428. c++;
  429. i--;
  430. }
  431. }
  432. if (i%3==0 ||i==list.Count-c)
  433. {
  434. if (list.Count-c==i&&(list.Count-c)%3!=0)
  435. {
  436. int tnum = 3-(list.Count-c) % 3;
  437. for (int j = 0; j < tnum; j++)
  438. {
  439. if (list.Count - c < 3) continue;
  440. sp.Append("<li></li>");
  441. }
  442. }
  443. sp.Append("</ul>");
  444. }
  445. i++;
  446. //}
  447. //else
  448. //{
  449. // string path="";
  450. // switch(tid)
  451. // {
  452. // case 2001:
  453. // path = "zs";
  454. // break;
  455. // case 2002:
  456. // path = "tool";
  457. // break;
  458. // case 2003:
  459. // path = "yl";
  460. // break;
  461. // case 2004:
  462. // path = "tb";
  463. // break;
  464. // default:
  465. // path = "tb";
  466. // break;
  467. // }
  468. // if (tid != 2002)
  469. // {
  470. // sp.AppendFormat("<li><a href=\"http://www.55128.cn/{4}/{1}_{2}.htm\" target=\"_blank\">{3}{0}</a></li>", css, item.Cid, item.Id,
  471. // Regex.Replace(item.Name, "^" + lottery.Name, "", RegexOptions.IgnoreCase), path);
  472. // }
  473. // else
  474. // {
  475. // sp.AppendFormat("<li><a href=\"http://www.55128.cn{1}\" target=\"_blank\">{2}{0}</a></li>", css, item.Url,
  476. // Regex.Replace(item.Name, "^" + lottery.Name, "", RegexOptions.IgnoreCase));
  477. // }
  478. //}
  479. }
  480. var _sp = sp.ToString();
  481. return _sp.Replace("<ul></ul>", "");
  482. }
  483. /// <summary>
  484. /// 获取帮助文章列表
  485. /// </summary>
  486. /// <param name="cid"></param>
  487. /// <returns></returns>
  488. protected virtual string GetHelpList(int cid)
  489. {
  490. //2016-02-22 128PC版除了双色球和3D二个彩种,其它彩种的帮助不显示出来
  491. if (cid != 1 && cid != 4)
  492. return "";
  493. var list = CB.Data.Caches.GetHelpList(cid);
  494. if (null == list || 0 >= list.Count)
  495. return "";
  496. int count = list.Count;
  497. var sp = new StringBuilder(count * 500);
  498. sp.Append("<div class=\"rem-help\">");
  499. sp.Append("<h3>帮助</h3>");
  500. sp.Append("<ul id=\"showBox\">");
  501. string part = "", all = "";
  502. if (count > 4)
  503. {
  504. all = "<span class=\"showAll\" id=\"showAll\">显示全部<i></i></span>";
  505. part = "<span class=\"showPart\" id=\"showPart\">收起<i></i></span>";
  506. }
  507. for (int i = 0; i < count - 2; i++)
  508. {
  509. sp.Append("<li><span class=\"i\">◆</span>");
  510. sp.Append(1 == list[i].Status ? list[i].Title :
  511. string.Format("<a href=\"/help/info-{0}.aspx\" target=\"_blank\">{1}</a>", list[i].Tid, list[i].Title));
  512. if (3 == i)
  513. sp.Append(all);
  514. sp.Append("</li>");
  515. }
  516. sp.Append("<li><span class=\"i\">◆</span>");
  517. sp.Append(1 == list[count - 1].Status ? list[count - 1].Title :
  518. string.Format("<a href=\"/help/info-{0}.aspx\" target=\"_blank\">{1}</a>", list[count - 1].Tid, list[count - 1].Title));
  519. sp.Append(part);
  520. sp.Append("</li>");
  521. sp.Append("</ul>");
  522. sp.Append(GetHotContent(28));
  523. sp.Append("</div>");
  524. return sp.ToString();
  525. }
  526. /// <summary>
  527. /// 智能推荐
  528. /// </summary>
  529. /// <param name="tid"></param>
  530. /// <returns></returns>
  531. protected virtual string GetTrendSmart(int chartId)
  532. {
  533. var list = CB.Data.Caches.GetTrendSmartList(chartId, 17);
  534. if (null == list && 0 >= list.Count)
  535. {
  536. return "";
  537. }
  538. var sp = new StringBuilder(2200);
  539. sp.Append("<div class=\"recommend\">");
  540. sp.Append("<ul>");
  541. sp.Append("<li class=\"title\">猜您会喜欢:</li>");
  542. foreach (var item in list)
  543. {
  544. if (2002 == item.Tid)
  545. {
  546. sp.AppendFormat("<li><a href=\"{0}\" target=\"_blank\">{1}</a></li>", item.Url, item.Name);
  547. }
  548. else
  549. {
  550. sp.AppendFormat("<li><a href=\"{0}{1}_{2}.htm\" target=\"_blank\">{3}</a></li>",
  551. CB.Data.Caches.GetTrendPath(item.Tid), item.Cid, item.Id, item.Name);
  552. }
  553. }
  554. sp.Append("</ul>");
  555. sp.Append("</div>");
  556. return sp.ToString();
  557. }
  558. /// <summary>
  559. /// 智能推荐(加强)
  560. /// </summary>
  561. /// <param name="tid"></param>
  562. /// <returns></returns>
  563. protected virtual string GetTrendSmart2(int chartId, int lotteryId)
  564. {
  565. var list = CB.Data.Caches.GetTrendSmartList(chartId, 17);
  566. if (null == list && 0 >= list.Count)
  567. {
  568. return "";
  569. }
  570. if (lotteryId > 0 && list.Count == 0)
  571. {
  572. list = CB.Data.Caches.GetTrendChartList(lotteryId, 2001, 0);
  573. list = list.Where(t => !t.Name.Contains("手机版")).ToList();
  574. }
  575. var sp = new StringBuilder(2200);
  576. sp.Append("<div class=\"recommend\">");
  577. sp.Append("<ul>");
  578. sp.Append("<li class=\"title\">猜您会喜欢:</li>");
  579. foreach (var item in list)
  580. {
  581. if (2002 == item.Tid)
  582. {
  583. sp.AppendFormat("<li><a href=\"{0}\" target=\"_blank\">{1}</a></li>", item.Url, item.Name);
  584. }
  585. else
  586. {
  587. sp.AppendFormat("<li><a href=\"{0}{1}_{2}.htm\" target=\"_blank\">{3}</a></li>",
  588. CB.Data.Caches.GetTrendPath(item.Tid), item.Cid, item.Id, item.Name);
  589. }
  590. }
  591. sp.Append("</ul>");
  592. sp.Append("</div>");
  593. return sp.ToString();
  594. }
  595. /// <summary>
  596. /// 更新走势图表智能推荐关联
  597. /// </summary>
  598. /// <param name="chartId">走势图表ID</param>
  599. protected static void UpdateTrendSmart(int chartId)
  600. {
  601. string smart = Utils.GetCookie("trendchart-smart");
  602. if (null == smart || 0 == smart.Length)
  603. {
  604. Utils.WriteCookie("trendchart-smart", chartId.ToString(), 10);
  605. return;
  606. }
  607. int startid = TypeConverter.StrToInt(smart);
  608. if (0 < startid && 0 < chartId && startid != chartId)
  609. { CB.Data.TrendChartService.UpdateTrendSmart(startid, chartId); }
  610. }
  611. #endregion
  612. #region 专题相关
  613. /// <summary>
  614. /// 专栏获取彩种相关开奖信息及开奖号码
  615. /// </summary>
  616. /// <param name="lotteryCode">彩种编号</param>
  617. /// <returns></returns>
  618. protected virtual string[] GetColumnOpenData(string lotteryCode)
  619. {
  620. string openDay = "", css = "";
  621. var openInfo = new StringBuilder();
  622. switch (lotteryCode)
  623. {
  624. case "ssq":
  625. css = "ssq";
  626. openDay = "每周二、四、日<span>21:20</span>";
  627. var ssq = CB.Data.Caches.GetFCSSQInfo(0, OpenCodeType.KaiJiangHao);
  628. if (null != ssq)
  629. {
  630. openInfo.Append("<li class=\"belowL\">");
  631. openInfo.Append("<ul class=\"up\" id=\"navigation\">");
  632. openInfo.Append("<li class=\"caiz\">双色球</li>");
  633. openInfo.AppendFormat("<li class=\"qihao\">第<span>{0}</span>期开奖结果</li>", ssq.Term.ToString());
  634. openInfo.Append("<li class=\"ballbox\">");
  635. openInfo.AppendFormat("<span class=\"ball red\">{0}</span><span class=\"ball red\">{1}</span><span class=\"ball red\">{2}</span><span class=\"ball red\">{3}</span>",
  636. ssq.OpenCode1.ToString("00"), ssq.OpenCode2.ToString("00"), ssq.OpenCode3.ToString("00"), ssq.OpenCode4.ToString("00"));
  637. openInfo.AppendFormat("<span class=\"ball red\">{0}</span><span class=\"ball red\">{1}</span><span class=\"ball blue\">{2}</span>",
  638. ssq.OpenCode5.ToString("00"), ssq.OpenCode6.ToString("00"), ssq.OpenCode7.ToString("00"));
  639. openInfo.Append("</li>");
  640. openInfo.Append("</ul>");
  641. openInfo.Append("</li>");
  642. openInfo.AppendFormat("<li class=\"belowL\">开奖时间:{0} 兑奖截止:{1}</li>",
  643. ssq.OpenTime.ToString("yyyy年MM月dd日"), ssq.OpenTime.AddDays(60).ToString("yyyy年MM月dd日"));
  644. }
  645. break;
  646. case "3d":
  647. css = "fc3d";
  648. openDay = "每日<span>20:30</span>";
  649. var fc3d = CB.Data.Caches.GetFC3DInfo(0, OpenCodeType.KaiJiangHao);
  650. if (null != fc3d)
  651. {
  652. openInfo.Append("<li class=\"belowL\">");
  653. openInfo.Append("<ul class=\"up\" id=\"navigation\">");
  654. openInfo.Append("<li class=\"caiz\">福彩3D</li>");
  655. openInfo.AppendFormat("<li class=\"qihao\">第<span>{0}</span>期开奖结果</li>", fc3d.Term.ToString());
  656. openInfo.Append("<li class=\"ballbox\">");
  657. openInfo.AppendFormat("<span class=\"ball red\">{0}</span><span class=\"ball red\">{1}</span><span class=\"ball red\">{2}</span>",
  658. fc3d.OpenCode1.ToString(), fc3d.OpenCode2.ToString(), fc3d.OpenCode3.ToString());
  659. openInfo.Append("</li>");
  660. openInfo.Append("</ul>");
  661. openInfo.Append("</li>");
  662. openInfo.AppendFormat("<li class=\"belowL\">开奖时间:{0} 兑奖截止:{1}</li>",
  663. fc3d.OpenTime.ToString("yyyy年MM月dd日"), fc3d.OpenTime.AddDays(60).ToString("yyyy年MM月dd日"));
  664. }
  665. break;
  666. case "dlt":
  667. css = "dlt";
  668. openDay = "每周一、三、六<span>20:30</span>";
  669. var dlt = CB.Data.Caches.GetTCDLTInfo(0, OpenCodeType.KaiJiangHao);
  670. if (null != dlt)
  671. {
  672. openInfo.Append("<li class=\"belowL\">");
  673. openInfo.Append("<ul class=\"up\" id=\"navigation\">");
  674. openInfo.Append("<li class=\"caiz\">大乐透</li>");
  675. openInfo.AppendFormat("<li class=\"qihao\">第<span>{0}</span>期开奖结果</li>", dlt.Term.ToString());
  676. openInfo.Append("<li class=\"ballbox\">");
  677. openInfo.AppendFormat("<span class=\"ball red\">{0}</span><span class=\"ball red\">{1}</span><span class=\"ball red\">{2}</span><span class=\"ball red\">{3}</span>",
  678. dlt.OpenCode1.ToString("00"), dlt.OpenCode2.ToString("00"), dlt.OpenCode3.ToString("00"), dlt.OpenCode4.ToString("00"));
  679. openInfo.AppendFormat("<span class=\"ball red\">{0}</span><span class=\"ball blue\">{1}</span><span class=\"ball blue\">{2}</span>",
  680. dlt.OpenCode5.ToString("00"), dlt.OpenCode6.ToString("00"), dlt.OpenCode7.ToString("00"));
  681. openInfo.Append("</li>");
  682. openInfo.Append("</ul>");
  683. openInfo.Append("</li>");
  684. openInfo.AppendFormat("<li class=\"belowL\">开奖时间:{0} 兑奖截止:{1}</li>",
  685. dlt.OpenTime.ToString("yyyy年MM月dd日"), dlt.OpenTime.AddDays(60).ToString("yyyy年MM月dd日"));
  686. }
  687. break;
  688. case "p3":
  689. css = "p3";
  690. openDay = "每日<span>20:30</span>";
  691. var p3 = CB.Data.Caches.GetTCP3Info(0, OpenCodeType.KaiJiangHao);
  692. if (null != p3)
  693. {
  694. openInfo.Append("<li class=\"belowL\">");
  695. openInfo.Append("<ul class=\"up\" id=\"navigation\">");
  696. openInfo.Append("<li class=\"caiz\">排列三</li>");
  697. openInfo.AppendFormat("<li class=\"qihao\">第<span>{0}</span>期开奖结果</li>", p3.Term.ToString());
  698. openInfo.Append("<li class=\"ballbox\">");
  699. openInfo.AppendFormat("<span class=\"ball red\">{0}</span><span class=\"ball red\">{1}</span><span class=\"ball red\">{2}</span>",
  700. p3.OpenCode1.ToString(), p3.OpenCode2.ToString(), p3.OpenCode3.ToString());
  701. openInfo.Append("</li>");
  702. openInfo.Append("</ul>");
  703. openInfo.Append("</li>");
  704. openInfo.AppendFormat("<li class=\"belowL\">开奖时间:{0} 兑奖截止:{1}</li>",
  705. p3.OpenTime.ToString("yyyy年MM月dd日"), p3.OpenTime.AddDays(60).ToString("yyyy年MM月dd日"));
  706. }
  707. break;
  708. }
  709. return new string[] { css, openDay, openInfo.ToString() };
  710. }
  711. /// <summary>
  712. /// 专栏类型CSS样式
  713. /// </summary>
  714. /// <param name="typeName"></param>
  715. /// <returns></returns>
  716. public static string GetColumnTypeCss(string typeName)
  717. {
  718. if (string.IsNullOrEmpty(typeName))
  719. return "";
  720. switch (typeName)
  721. {
  722. case "tool":
  723. return "tools";
  724. case "tuku":
  725. return "tuku";
  726. case "article":
  727. return "news";
  728. case "rule":
  729. return "plays";
  730. case "opencode":
  731. return "lotte";
  732. }
  733. return "";
  734. }
  735. /// <summary>
  736. /// 获取专题类型对应的名称
  737. /// </summary>
  738. /// <param name="columnType"></param>
  739. /// <returns></returns>
  740. public static string GetColumnTypeName(string columnType)
  741. {
  742. if (string.IsNullOrEmpty(columnType))
  743. return "";
  744. switch (columnType)
  745. {
  746. case "tool":
  747. return "工具类";
  748. case "tuku":
  749. return "图库图谜";
  750. case "article":
  751. return "资讯预测";
  752. case "rule":
  753. return "玩法技巧";
  754. case "opencode":
  755. return "开奖类";
  756. }
  757. return "";
  758. }
  759. /// <summary>
  760. /// 图库图片获取上一期号 限制P3/3D
  761. /// </summary>
  762. /// <param name="qi"></param>
  763. /// <param name="lottery"></param>
  764. /// <returns></returns>
  765. public static int GetUpTerm(int qi, string lottery)
  766. {
  767. int year = qi / 1000;
  768. int minQi = year * 1000 + 001;
  769. int lastQi = qi - 1;
  770. if (minQi > lastQi)
  771. {
  772. year = year - 1;
  773. int endQi = year * 1000 + 153;
  774. if (lottery.ToLower() == "3d" || lottery.ToLower() == "p3")
  775. {
  776. endQi = endQi + 205;
  777. if (2014 == year)//2014年少一期
  778. { endQi = endQi - 1; }
  779. }
  780. if (0 == (year % 4))
  781. { endQi = endQi + 1; }
  782. lastQi = endQi;
  783. }
  784. return lastQi;
  785. }
  786. /// <summary>
  787. /// 获取下一期号
  788. /// </summary>
  789. /// <param name="qi"></param>
  790. /// <param name="lottery"></param>
  791. /// <returns></returns>
  792. public static int GetNextTerm(int qi, string lottery)
  793. {
  794. int year = qi / 1000;
  795. int endQi = year * 1000 + 153;
  796. if (lottery == "3d" || lottery == "p3")
  797. {
  798. endQi = endQi + 205;
  799. if (2014 == year)//2014年少一期
  800. { endQi = endQi - 1; }
  801. }
  802. if (0 == (year % 4))
  803. { endQi = endQi + 1; }
  804. if (qi < endQi)
  805. return qi + 1;
  806. return (year + 1) * 1000 + 1;
  807. }
  808. /// <summary>
  809. /// 图库图片地址
  810. /// </summary>
  811. /// <param name="code"></param>
  812. /// <param name="isRAR">是否压缩包</param>
  813. /// <param name="qi"></param>
  814. /// <returns></returns>
  815. public static string GetTKFileUrl(int term, string code, bool isRar)
  816. {
  817. string fileFormat = ".jpg";
  818. if (isRar)
  819. fileFormat = ".rar";
  820. return string.Format("{0}{1}/{2}{3}", ColumnConfigs.GetConfig().TukuFileUrl, term, code, fileFormat);
  821. }
  822. /// <summary>
  823. /// WAP端专题页子导航
  824. /// </summary>
  825. /// <param name="lottery">专题所属彩种</param>
  826. /// <param name="localColumnId">当前专题ID</param>
  827. /// <returns></returns>
  828. public static string GetColumnNavForWap(string lottery)
  829. {
  830. var list = CB.Data.Caches.GetColumnList(lottery);
  831. if (null == list || 0 >= list.Count)
  832. return "";
  833. var sp = new StringBuilder();
  834. sp.Append("<ul>");
  835. if (3 < list.Count)
  836. {
  837. for (int i = 0; i < 3; i++)
  838. {
  839. sp.AppendFormat("<li><a href=\"/zt/{0}/\">{1}</a></li>",
  840. list[i].RewriteUrl, list[i].Name);
  841. }
  842. sp.Append("</ul>");
  843. sp.Append("<ul class=\"enlarge\" id=\"enlarge\" style=\"display:none;\">");
  844. for (int i = 3; i < list.Count; i++)
  845. {
  846. sp.AppendFormat("<li><a href=\"/zt/{0}/\">{1}</a></li>",
  847. list[i].RewriteUrl, list[i].Name);
  848. }
  849. sp.Append("</ul>");
  850. sp.Append("<div class=\"unfold\" onclick=\"unfold()\" id=\"unfold\"></div>");
  851. }
  852. else
  853. {
  854. foreach (var item in list)
  855. {
  856. sp.AppendFormat("<li><a href=\"/zt/{0}/\">{1}</a></li>",
  857. item.RewriteUrl, item.Name);
  858. }
  859. sp.Append("</ul>");
  860. }
  861. return sp.ToString();
  862. }
  863. #endregion
  864. /// <summary>
  865. /// 错误提示页
  866. /// </summary>
  867. /// <param name="message"></param>
  868. /// <param name="url"></param>
  869. protected static void ShowError()
  870. {
  871. HttpContext.Current.Server.Transfer("/404.aspx");
  872. HttpContext.Current.Response.End();
  873. }
  874. /// <summary>
  875. /// 自定义列表翻页方法
  876. /// </summary>
  877. /// <param name="page">页码</param>
  878. /// <param name="pagesize">每页Size</param>
  879. /// <param name="recordCount">总条数</param>
  880. /// <param name="fomartUrl">fomartURL链接格式</param>
  881. /// <param name="showIndexCount">显示页码个数</param>
  882. /// <returns></returns>
  883. public static string ListPage(int pageIndex, int pageSize, int recordCount, string fomartUrl, int showIndexCount)
  884. {
  885. if (0 >= recordCount)
  886. return "";
  887. var sp = new StringBuilder();
  888. int pageCount = recordCount / pageSize;
  889. if (0 != recordCount % pageSize)
  890. pageCount++;
  891. if (recordCount < pageSize)
  892. pageCount = 1;
  893. int left = showIndexCount / 2;
  894. int right = showIndexCount - left;
  895. int startIndex = pageIndex - left;
  896. int endIndex = pageIndex + right - 1;
  897. if (0 >= startIndex)
  898. {
  899. startIndex = 1;
  900. endIndex = showIndexCount;
  901. }
  902. if (endIndex > pageCount)
  903. endIndex = pageCount;
  904. if (pageIndex > 1)
  905. {
  906. sp.AppendFormat("<a href=\"{0}\">第一页</a>", string.Format(fomartUrl, 1));
  907. sp.AppendFormat("<a href=\"{0}\">上一页</a>", string.Format(fomartUrl, pageIndex > 1 ? pageIndex - 1 : 1));
  908. }
  909. for (int i = startIndex; i <= endIndex; i++)
  910. {
  911. if (i == pageIndex)
  912. { sp.AppendFormat("<span>{0}</span>", i); }
  913. else
  914. { sp.AppendFormat("<a href=\"{0}\">{1}</a>", string.Format(fomartUrl, i), i); }
  915. }
  916. if (pageIndex < pageCount)
  917. {
  918. sp.AppendFormat("<a href=\"{0}\">下一页</a>", string.Format(fomartUrl, pageIndex + 1));
  919. sp.AppendFormat("<a href=\"{0}\">最后一页</a>", string.Format(fomartUrl, pageCount));
  920. }
  921. return sp.ToString();
  922. }
  923. #region 开奖公告 开奖号相关
  924. /// <summary>
  925. /// 开奖号格式显示
  926. /// </summary>
  927. /// <param name="kjh"></param>
  928. /// <param name="sumLength"></param>
  929. /// <param name="splitLength"></param>
  930. /// <returns></returns>
  931. public static string GetLotteryAward(int[] kjh, int sumLength, int splitLength)
  932. {
  933. if (kjh.Length < sumLength)
  934. return "";
  935. string color = sumLength > splitLength ? " ball-red" : " ball-yellow";
  936. StringBuilder sp = new StringBuilder(128);
  937. int i = 0;
  938. foreach (int num in kjh)
  939. {
  940. i++;
  941. if (i > splitLength)
  942. color = " ball-blue";
  943. sp.AppendFormat("<span class=\"ball{0}\">{1}</span>", color, num);
  944. }
  945. return sp.ToString();
  946. }
  947. /// <summary>
  948. /// 获取热门开机号
  949. /// </summary>
  950. /// <param name="types">需要的热门类型如:(sd,dlt,ssq)</param>
  951. /// <returns></returns>
  952. public static string GetHotKjih(string types)
  953. {
  954. string[] type = types.Split(',');
  955. string result = "";
  956. foreach (string item in type)
  957. {
  958. switch (item)
  959. {
  960. case "sd":
  961. FC3DInfo sd = CB.Data.Caches.GetFC3DInfo(0);
  962. result += "<li><a href=\"/3d-kaijihao/\" target=\"_blank\" class=\"num-lot\">福彩3D</a><div class=\"num-ball\"><span class=\"ball ball-yellow\">" + sd.OpenCode1 + "</span><span class=\"ball ball-yellow\">" + sd.OpenCode2 + "</span><span class=\"ball ball-yellow\">" + sd.OpenCode3 + "</span></div></li>";
  963. break;
  964. case "dlt":
  965. TCDLTInfo dlt = CB.Data.Caches.GetTCDLTInfo(0);
  966. result += "<li><a href=\"/dlt-kaijihao/\" target=\"_blank\" class=\"num-lot\">大乐透</a><div class=\"num-ball\"><span class=\"ball ball-red\">" + dlt.OpenCode1 + "</span><span class=\"ball ball-red\">" + dlt.OpenCode2 + "</span><span class=\"ball ball-red\">" + dlt.OpenCode3 + "</span><span class=\"ball ball-red\">" + dlt.OpenCode4 + "</span><span class=\"ball ball-red\">" + dlt.OpenCode5 + "</span><span class=\"ball ball-blue\">" + dlt.OpenCode6 + "</span><span class=\"ball ball-blue\">" + dlt.OpenCode7 + "</span></div></li>";
  967. break;
  968. case "ssq":
  969. FCSSQInfo ssq = CB.Data.Caches.GetFCSSQInfo(0);
  970. result += "<li><a href=\"/ssq-kaijihao/\" target=\"_blank\" class=\"num-lot\">双色球</a><div class=\"num-ball\"><span class=\"ball ball-red\">" + ssq.OpenCode1 + "</span><span class=\"ball ball-red\">" + ssq.OpenCode2 + "</span><span class=\"ball ball-red\">" + ssq.OpenCode3 + "</span><span class=\"ball ball-red\">" + ssq.OpenCode4 + "</span><span class=\"ball ball-red\">" + ssq.OpenCode5 + "</span><span class=\"ball ball-red\">" + ssq.OpenCode6 + "</span><span class=\"ball ball-blue\">" + ssq.OpenCode7 + "</span></div></li>";
  971. break;
  972. case "ps":
  973. TCP3Info ps = CB.Data.Caches.GetTCP3Info(0);
  974. result += "<li><a href=\"/p3-kaijihao/\" target=\"_blank\" class=\"num-lot\">排列三</a><div class=\"num-ball\"><span class=\"ball ball-yellow\">" + ps.OpenCode1 + "</span><span class=\"ball ball-yellow\">" + ps.OpenCode2 + "</span><span class=\"ball ball-yellow\">" + ps.OpenCode3 + "</span></div></li>";
  975. break;
  976. }
  977. }
  978. return result;
  979. }
  980. #region 内容显示格式转换
  981. /// <summary>
  982. /// 获取未开奖号详细显示格式
  983. /// </summary>
  984. /// <param name="kjh">开奖号</param>
  985. /// <param name="splitLength">区分长度</param>
  986. /// <returns></returns>
  987. public string GetLotteryAward(int sumLength, int splitLength)
  988. {
  989. string color = sumLength > splitLength ? " ball-red" : " ball-yellow";
  990. StringBuilder sp = new StringBuilder(128);
  991. for (int i = 0; i < sumLength; i++)
  992. {
  993. if (i >= splitLength)
  994. color = " ball-blue";
  995. sp.AppendFormat("<span class=\"ball {0}\">?</span>", color);
  996. }
  997. return sp.ToString();
  998. }
  999. /// <summary>
  1000. /// 格式化开奖号显示方式
  1001. /// </summary>
  1002. /// <param name="kjh">开奖号</param>
  1003. /// <param name="splitLength">区分长度</param>
  1004. /// <returns></returns>
  1005. public string GetInitKjh(int[] kjh, int splitLength)
  1006. {
  1007. if (kjh.Length == 0)
  1008. return "";
  1009. int i = 0;
  1010. StringBuilder sp = new StringBuilder(128);
  1011. foreach (int d in kjh)
  1012. {
  1013. i++;
  1014. if (i < splitLength)
  1015. sp.AppendFormat("{0},", d);
  1016. if (i == splitLength)
  1017. sp.AppendFormat("{0} |", d);
  1018. if (i > splitLength)
  1019. sp.AppendFormat("<font color=\"red\"> {0}</font>,", d);
  1020. }
  1021. string str = sp.ToString();
  1022. return Utils.GetSubString(str, str.Length - 1);
  1023. }
  1024. /// <summary>
  1025. /// 将日期转换成星期几
  1026. /// </summary>
  1027. /// <param name="date"></param>
  1028. /// <returns></returns>
  1029. public string GetWday(DateTime date)
  1030. {
  1031. DateTime dt = date;
  1032. string wday = "";
  1033. switch (dt.DayOfWeek)
  1034. {
  1035. case DayOfWeek.Monday:
  1036. wday = "星期一"; break;
  1037. case DayOfWeek.Tuesday:
  1038. wday = "星期二"; break;
  1039. case DayOfWeek.Wednesday:
  1040. wday = "星期三"; break;
  1041. case DayOfWeek.Thursday:
  1042. wday = "星期四"; break;
  1043. case DayOfWeek.Friday:
  1044. wday = "星期五"; break;
  1045. case DayOfWeek.Saturday:
  1046. wday = "星期六"; break;
  1047. case DayOfWeek.Sunday:
  1048. wday = "星期日"; break;
  1049. }
  1050. return wday;
  1051. }
  1052. /// <summary>
  1053. /// 一位变两位
  1054. /// </summary>
  1055. /// <param name="number"></param>
  1056. /// <returns></returns>
  1057. public string GetTnumber(int number)
  1058. {
  1059. if (number.ToString().Length > 1)
  1060. {
  1061. return number.ToString();
  1062. }
  1063. else
  1064. {
  1065. return number.ToString().PadLeft(2, '0');
  1066. }
  1067. }
  1068. /// <summary>
  1069. /// 将数字变为三位的字符串
  1070. /// </summary>
  1071. /// <param name="sjh"></param>
  1072. /// <returns></returns>
  1073. public string GetThnumber(string sjh)
  1074. {
  1075. string[] sjhs = sjh.Split(',');
  1076. string result = "";
  1077. for (int i = 0; i < 3 - sjhs.Length; i++)
  1078. {
  1079. result += "0";
  1080. }
  1081. foreach (var item in sjhs)
  1082. {
  1083. result += item;
  1084. }
  1085. return result;
  1086. }
  1087. public string GetStrMoney(string money)
  1088. {
  1089. int index = money.IndexOf('.');
  1090. string result = "0";
  1091. if (index > 9)
  1092. {
  1093. result = money.Substring(0, index - 8) + "亿" + money.Substring(index - 8, 4) + "万";
  1094. }
  1095. else if (index > 5 && index <= 9)
  1096. {
  1097. result = money.Substring(0, index - 4) + "万";
  1098. }
  1099. else if (index <= 5 && index > -1)
  1100. {
  1101. result = money;
  1102. }
  1103. else if (index == -1)
  1104. {
  1105. if (money.Length >= 9)
  1106. {
  1107. result = money.Substring(0, money.Length - 8) + "亿" + money.Substring(money.Length - 8, 4) + "万";
  1108. }
  1109. else if (money.Length >= 5 && money.Length < 9)
  1110. {
  1111. result = money.Substring(0, money.Length - 4) + "万";
  1112. }
  1113. }
  1114. return result;
  1115. }
  1116. #endregion
  1117. #region 分析数据
  1118. /// <summary>
  1119. /// 奇偶比
  1120. /// </summary>
  1121. /// <param name="num">开奖号数组</param>
  1122. /// <param name="sumcount">开奖号的位数</param>
  1123. /// <param name="count">计算的位数</param>
  1124. /// <returns></returns>
  1125. public static string Getjiou(int[] num, int sumcount, int count)
  1126. {
  1127. if (num.Length != sumcount)
  1128. { return ""; }
  1129. int j = 0, o = 0, k = 0;
  1130. foreach (int i in num)
  1131. {
  1132. if (k < count)
  1133. {
  1134. if (i % 2 == 0)
  1135. { o++; }//偶数个数
  1136. else
  1137. { j++; }//奇数个数
  1138. }
  1139. k++;
  1140. }
  1141. return string.Format("{0}:{1}", j, o);
  1142. }
  1143. /// <summary>
  1144. /// 和值
  1145. /// </summary>
  1146. /// <param name="num">开奖号数组</param>
  1147. /// <param name="length">计算的位数</param>
  1148. /// <returns></returns>
  1149. public static int Gethz(int[] num, int length)
  1150. {
  1151. int hz = 0;
  1152. int i = 0;
  1153. foreach (int item in num)
  1154. {
  1155. if (i == length)
  1156. break;
  1157. hz += item;
  1158. i++;
  1159. }
  1160. return hz;
  1161. }
  1162. /// <summary>
  1163. /// 跨度
  1164. /// </summary>
  1165. /// <param name="num">开奖号数组</param>
  1166. /// <param name="length">计算的位数</param>
  1167. /// <returns></returns>
  1168. public static int Getkd(int[] num, int length)
  1169. {
  1170. List<int> list = new List<int>();
  1171. int i = 0;
  1172. foreach (int item in num)
  1173. {
  1174. if (i == length)
  1175. break;
  1176. list.Add(item);
  1177. i++;
  1178. }
  1179. list.Sort();
  1180. return Math.Abs(list[0] - list[list.Count - 1]);
  1181. }
  1182. /// <summary>
  1183. /// 算三区比 一区:1-11 二区:12-22 三区23-33
  1184. /// </summary>
  1185. /// <param name="num">开奖号数组</param>
  1186. /// <param name="length">计算的位数</param>
  1187. /// <returns>三区比</returns>
  1188. public static string Getsanqu(int[] num, int length)
  1189. {
  1190. int sanqu1 = 0, sanqu2 = 0, sanqu3 = 0;
  1191. int i = 0;
  1192. foreach (int item in num)
  1193. {
  1194. if (i == length)
  1195. break;
  1196. if (item >= 1 && item <= 11)
  1197. sanqu1++;
  1198. if (item >= 12 && item <= 22)
  1199. sanqu2++;
  1200. if (item >= 23 && item <= 33)
  1201. sanqu3++;
  1202. i++;
  1203. }
  1204. return string.Format("{0}:{1}:{2}", sanqu1, sanqu2, sanqu3);
  1205. }
  1206. #endregion
  1207. /// <summary>
  1208. /// 格式化整型数字
  1209. /// </summary>
  1210. /// <param name="no"></param>
  1211. /// <returns></returns>
  1212. protected static string FormatSize(int size)
  1213. {
  1214. string Num = size.ToString("#,###");
  1215. if (Num == "")
  1216. return "0";
  1217. else
  1218. return Num;
  1219. }
  1220. #endregion
  1221. /// <summary>
  1222. /// 获取3D/P3是直选还是组选
  1223. /// </summary>
  1224. /// <returns></returns>
  1225. public string GetZhiZuXuan()
  1226. {
  1227. string zhizuxuan = WRequest.GetString("zuhe");
  1228. return (zhizuxuan.IndexOf("直选", StringComparison.Ordinal) > 0) ? "直选" : "组选";
  1229. }
  1230. #region 彩种参数名
  1231. public string GetLot(int id)
  1232. {
  1233. switch (id)
  1234. {
  1235. case 1:
  1236. return "sd";
  1237. case 2:
  1238. return "p3";
  1239. case 3:
  1240. return "p5";
  1241. case 4:
  1242. return "ssq";
  1243. case 5:
  1244. return "qlc";
  1245. case 12:
  1246. return "dlt";
  1247. case 19:
  1248. return "qxc";
  1249. case 28:
  1250. return "hc1";
  1251. case 60:
  1252. return "fj31x7";
  1253. case 61:
  1254. return "fj36x7";
  1255. case 62:
  1256. return "js7ws";
  1257. case 63:
  1258. return "zj6j1";
  1259. case 64:
  1260. return "df6j1";
  1261. case 65:
  1262. return "hd15x5";
  1263. case 66:
  1264. return "hb22x5";
  1265. case 67:
  1266. return "hn22x5";
  1267. case 68:
  1268. return "xj35x7";
  1269. case 69:
  1270. return "ny36x7";
  1271. default:
  1272. return "sd";
  1273. }
  1274. }
  1275. #endregion
  1276. /// <summary>
  1277. /// 获得彩种菜单
  1278. /// </summary>
  1279. public string GetLotMunes()
  1280. {
  1281. string result = "";
  1282. var lots = CB.Data.LotteryService.ToList().Where(it => it.Frequency == false && it.Status == true);
  1283. foreach (var item in lots)
  1284. {
  1285. result += "<li><a href=\"/history_" + GetLot(item.Id) + ".aspx\">" + item.Name + "</a></li>";
  1286. }
  1287. return result;
  1288. }
  1289. #region MyRegion
  1290. /// <summary>
  1291. /// 热门推荐
  1292. /// </summary>
  1293. /// <returns></returns>
  1294. public static string HotRecommend(int chartId, TrendChartInfo entity, string lotteryName,string replacestr,
  1295. Dictionary<string, object> viewbag,bool showAspx=false)
  1296. {
  1297. var rlist = CB.Data.Caches.GetTrendChartList(entity.Cid, entity.Tid, 0);
  1298. return TrendChartToString(rlist, entity, lotteryName, replacestr, viewbag, showAspx);
  1299. }
  1300. public static string SmartRecommend(int chartId,TrendChartInfo entity, string lotteryName, string replacestr,
  1301. Dictionary<string, object> viewbag,bool showAspx=false)
  1302. {
  1303. var list = CB.Data.Caches.GetTrendSmartList(chartId, 12);
  1304. if (null == list && 0 >= list.Count)
  1305. {
  1306. return "";
  1307. }
  1308. return TrendChartToString(list, entity, lotteryName, replacestr, viewbag,showAspx);
  1309. }
  1310. public static string TrendChartToString(IList<TrendChartInfo> rlist, TrendChartInfo entity, string lotteryName, string replacestr, Dictionary<string, object> viewbag,bool showAspx)
  1311. {
  1312. replacestr = RemovePreffixLotName(replacestr);
  1313. var zr = new StringBuilder();
  1314. if (null != rlist && 0 < rlist.Count)
  1315. {
  1316. var _index = 0;
  1317. zr.Append("<ul>");
  1318. foreach (var item in rlist)
  1319. {
  1320. if (entity.Name.Contains("手机版"))
  1321. {
  1322. if (item.Name == entity.Name.Substring(3))
  1323. {
  1324. //modified by zizi , at 2016-5-20(改成电脑版)
  1325. zr.AppendFormat(
  1326. "<li><a href=\"http://www.55128.cn/zs/{0}_{1}.htm\" target=\"_blank\" class=\"pc-zs\">{2}</a></li>",
  1327. item.Cid, item.Id, replacestr);
  1328. _index++;
  1329. }
  1330. }
  1331. else
  1332. {
  1333. if (item.Name == entity.Name)
  1334. {
  1335. //modified by zizi , at 2016-5-20(去掉前面的彩种名称)
  1336. zr.AppendFormat(
  1337. "<li><a href=\"http://www.55128.cn/zs/{0}_{1}.htm\" target=\"_blank\" class=\"pc-zs\">{2}</a></li>",
  1338. item.Cid, item.Id, replacestr);
  1339. //Regex.Replace(item.Name, "^" + lottery.Name, "", RegexOptions.IgnoreCase));
  1340. _index++;
  1341. }
  1342. }
  1343. if (_index == 3)
  1344. {
  1345. zr.Append("</ul><ul>");
  1346. _index = 0;
  1347. }
  1348. }
  1349. if (zr.Length == 0)
  1350. zr.Append("<ul>");
  1351. foreach (var item in rlist.Where(e => e.Tid == entity.Tid))
  1352. {
  1353. if (item.Name != entity.Name.Substring(3) && !item.Name.Contains("手机版"))
  1354. {
  1355. //modified by zizi , at 2016-5-20(去掉前面的彩种名称)
  1356. if (showAspx)
  1357. zr.AppendFormat("<li><a href=\"{0}\" target=\"_blank\">{1}</a></li>", item.Url,
  1358. Regex.Replace(item.Name, "^" + lotteryName, "", RegexOptions.IgnoreCase));
  1359. else
  1360. zr.AppendFormat("<li><a href=\"{0}_{1}.htm\" target=\"_blank\">{2}</a></li>", item.Cid,
  1361. item.Id,
  1362. Regex.Replace(item.Name, "^" + lotteryName, "", RegexOptions.IgnoreCase)); //item.Name);
  1363. _index++;
  1364. }
  1365. if (_index == 3)
  1366. {
  1367. zr.Append("</ul><ul>");
  1368. _index = 0;
  1369. }
  1370. }
  1371. if (_index < 3 && _index > 0)
  1372. {
  1373. //补空
  1374. for (var i = _index; i < 3; i++)
  1375. {
  1376. zr.Append("<li></li>");
  1377. }
  1378. zr.Append("</ul>");
  1379. }
  1380. //读取razor模板[_trendChartfooter.cshtml]
  1381. var zrs = zr.ToString();
  1382. if (zrs.EndsWith("<ul>"))
  1383. zrs = zrs.Remove(zrs.Length - 4, 4);
  1384. if (viewbag == null)
  1385. viewbag = new Dictionary<string, object>();
  1386. if (!viewbag.ContainsKey("recommend1"))
  1387. viewbag.Add("recommend1", CB.Data.RecommendsService.Get(31).Content);
  1388. if (!viewbag.ContainsKey("recommend2"))
  1389. viewbag.Add("recommend2", zrs);
  1390. zr = TemplateEngine.Template.GetTemplateContent("_trendChartfooter", null, viewbag);
  1391. }
  1392. return zr.ToString();
  1393. }
  1394. /// <summary>
  1395. /// 临时解决去掉彩种前缀名问题【临时】
  1396. /// </summary>
  1397. /// <param name="lotName"></param>
  1398. /// <returns></returns>
  1399. public static string RemovePreffixLotName(string lotName)
  1400. {
  1401. lotName = lotName.Replace("手机版", "");
  1402. var seps = new string[] { "体彩P5", "P3", "排列三", "排列五", "3D", "3d", "体彩排列3", "体彩排列三" };
  1403. foreach (var s in seps)
  1404. {
  1405. if (lotName.StartsWith(s))
  1406. {
  1407. return lotName.Replace(s, null);
  1408. }
  1409. }
  1410. return lotName;
  1411. }
  1412. public static string LotteryNameReplace(string itemName, string lotteryName)
  1413. {
  1414. var txtReg = "^" + lotteryName;
  1415. if (txtReg.Contains("+"))
  1416. txtReg = txtReg.Replace("+", @"[\+]");
  1417. return RemovePreffixLotName(Regex.Replace(itemName.Replace("手机版", ""), txtReg, "",
  1418. RegexOptions.IgnoreCase)).Trim();
  1419. }
  1420. #endregion
  1421. }
  1422. }