WebPage.cs 56 KB

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