using CRM.Core.BLL.Soft; using CRM.Core.DTO.Res; using System; using System.Collections.Generic; using System.Data; using System.Linq; using WX.CRM.Common; namespace ZXDService { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“RegCountService”。 // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 RegCountService.svc 或 RegCountService.svc.cs,然后开始调试。 public class RegCountService : IRegCountService { public SOFT_USER_BL softUserBL = new SOFT_USER_BL(); public void DoWork() { } public UPJsonResult> GetRegCountData(string app, string plat, string version, string channel, string startday, string endday) { try { var stime = DateTime.Now.Date; var etime = DateTime.Now.AddDays(1).Date; if (!Utility.IsNum(startday) || !Utility.IsNum(endday) || startday.Length != 8 && endday.Length != 8) { return new UPJsonResult> { code = -1 }; } stime = DateTime.ParseExact(startday, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture).Date; etime = DateTime.ParseExact(endday, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture).Date.AddDays(1); if (string.IsNullOrEmpty(channel)) { return new UPJsonResult> { code = -2 }; } var schannel = -1; var echannel = -1; if (channel != "-1") { string[] channelArr = channel.Split('-'); if (channelArr == null || channelArr.Length != 2) { return new UPJsonResult> { code = -3 }; } if (!Utility.IsNum(channelArr[0]) && !Utility.IsNum(channelArr[1])) { return new UPJsonResult> { code = -4 }; } schannel = Convert.ToInt32(channelArr[0]); echannel = Convert.ToInt32(channelArr[1]); } var paltType = getPlatType(plat); DataSet ds = softUserBL.GetRegCountToUP(stime, etime, schannel, echannel, paltType); if (ds != null && ds.Tables[0] != null) { if (channel == "-1") { List list = new List(); foreach (DataRow dr in ds.Tables[0].Rows) { var item = new RegCountTb(); item.app = "dongniu"; item.plat = plat; item.version = "-1"; item.channel = dr["channel"] == null ? 0 : Convert.ToInt32(dr["channel"]); item.reg_num = Convert.ToInt32(dr["num"]); item.day_time = Convert.ToInt32(Convert.ToDateTime(dr["daytime"]).ToString("yyyyMMdd")); list.Add(item); } var daylist = list.GroupBy(m => m.day_time).Select(m => m.Key).OrderBy(m => m).ToList(); var resultList = new List(); foreach (var day in daylist) { var gzItem = new RegCountDTO(); var gzRegNum = list.Where(m => m.day_time == day && m.channel >= 1000 && m.channel <= 1999).Sum(m => m.reg_num); gzItem.app = "dongniu"; gzItem.plat = plat; gzItem.version = "-1"; gzItem.channel = "1000-1999"; gzItem.reg_num = gzRegNum; gzItem.day_time = day; resultList.Add(gzItem); var b1Item = new RegCountDTO(); var b1RegNum = list.Where(m => m.day_time == day && m.channel >= 2100 && m.channel <= 2199).Sum(m => m.reg_num); b1Item.app = "dongniu"; b1Item.plat = plat; b1Item.version = "-1"; b1Item.channel = "2100-2199"; b1Item.reg_num = b1RegNum; b1Item.day_time = day; resultList.Add(b1Item); var b2Item = new RegCountDTO(); var b2RegNum = list.Where(m => m.day_time == day && m.channel >= 2200 && m.channel <= 2299).Sum(m => m.reg_num); b2Item.app = "dongniu"; b2Item.plat = plat; b2Item.version = "-1"; b2Item.channel = "2200-2299"; b2Item.reg_num = b2RegNum; b2Item.day_time = day; resultList.Add(b2Item); var b3Item = new RegCountDTO(); var b3RegNum = list.Where(m => m.day_time == day && m.channel >= 2300 && m.channel <= 2399).Sum(m => m.reg_num); b3Item.app = "dongniu"; b3Item.plat = plat; b3Item.version = "-1"; b3Item.channel = "2300-2399"; b3Item.reg_num = b3RegNum; b3Item.day_time = day; resultList.Add(b3Item); var otherRegNum = list.Where(m => m.day_time == day).Sum(m => m.reg_num) - gzRegNum - b1RegNum - b2RegNum - b3RegNum; if (otherRegNum > 0) { var otherItem = new RegCountDTO(); otherItem.app = "dongniu"; otherItem.plat = plat; otherItem.version = "-1"; otherItem.channel = "other"; otherItem.reg_num = otherRegNum; otherItem.day_time = day; resultList.Add(otherItem); } } return new UPJsonResult> { code = 0, list = resultList }; } else { List list = new List(); foreach (DataRow dr in ds.Tables[0].Rows) { var item = new RegCountDTO(); item.app = "dongniu"; item.plat = plat; item.version = "-1"; item.channel = channel; item.reg_num = Convert.ToInt32(dr["num"]); item.day_time = Convert.ToInt32(Convert.ToDateTime(dr["daytime"]).ToString("yyyyMMdd")); list.Add(item); } return new UPJsonResult> { code = 0, list = list }; } } else { return new UPJsonResult> { code = -10 }; } } catch (Exception ex) { LogHelper.Error(ex); return new UPJsonResult> { code = -500 }; } } private int getPlatType(string openPlat) { switch (openPlat) { case "WIN": return 0; case "ANDROID": return 0; case "IOS": return 2; default: return 0; } } } class RegCountTb { public int day_time { get; set; } public string app { get; set; } public string plat { get; set; } public string version { get; set; } public int channel { get; set; } public int reg_num { get; set; } } }