ComplianceServer/oldcode/ZXDService/RegCountService.svc.cs

196 lines
8.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<List<RegCountDTO>> 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<List<RegCountDTO>> { 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<List<RegCountDTO>> { code = -2 };
}
var schannel = -1;
var echannel = -1;
if (channel != "-1")
{
string[] channelArr = channel.Split('-');
if (channelArr == null || channelArr.Length != 2)
{
return new UPJsonResult<List<RegCountDTO>> { code = -3 };
}
if (!Utility.IsNum(channelArr[0]) && !Utility.IsNum(channelArr[1]))
{
return new UPJsonResult<List<RegCountDTO>> { 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<RegCountTb> list = new List<RegCountTb>();
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<RegCountDTO>();
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<List<RegCountDTO>> { code = 0, list = resultList };
}
else
{
List<RegCountDTO> list = new List<RegCountDTO>();
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<List<RegCountDTO>> { code = 0, list = list };
}
}
else
{
return new UPJsonResult<List<RegCountDTO>> { code = -10 };
}
}
catch (Exception ex)
{
LogHelper.Error(ex);
return new UPJsonResult<List<RegCountDTO>> { 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; }
}
}