wzp
2023-03-02 374ce4ffd0c459bb4067e8d5765f972668aff9b1
web/web/gwdiverter.ashx
@@ -1,7 +1,7 @@
<%@ WebHandler Language="C#" Class="gwdiverterHandler" %>
 //这个页面新加的为了实现导流
//这个页面新加的为了实现导流
using com.softwee.smgw.common;
//using App_Code;
using Common;
using Dao;
using Model;
@@ -12,201 +12,201 @@
public class gwdiverterHandler : PageHandler<SysUser>
{
  private GwDiverterDao _Dao = new GwDiverterDao();
  //private SysOperationLogDao _OperationLogDao = new SysOperationLogDao();
  private List<GwOp> OpList;
    private GwDiverterDao _Dao = new GwDiverterDao();
    //private SysOperationLogDao _OperationLogDao = new SysOperationLogDao();
    private List<GwOp> OpList;
  public override JsonPageResult ProcessRequestInternal(PageContext<SysUser> context)
  {
    string @string = context.GetString("action");
    switch (@string)
    public override JsonPageResult ProcessRequestInternal(PageContext<SysUser> context)
    {
      case "loadGwDiverter":
        return this.LoadGwDiverter(context);
      case "delete":
        return this.Delete(context);
      case "editDeal":
        return this.Update(context);
      default:
        throw new Exception("Invalid Action=" + @string);
    }
  }
  private JsonPageResult Delete(PageContext<SysUser> context)
  {
    context.CheckRight("1064", FailedOperation.ErrorMsgOnly);
    string @string = context.GetString("did");
    if (string.IsNullOrEmpty(@string))
      throw new ArgumentException("参数异常");
    this._Dao.Delete(@string);
    //WriteSysLogHelper.WriteSysLog(context.SessionObject.Account, 1064, 106, string.Format("删除导流策略:策略编号:{0}", (object) @string), context.ClientIP);
    return new JsonPageResult(true, (object) "删除成功");
  }
  private JsonPageResult Update(PageContext<SysUser> context)
  {
    context.CheckRight("1062", FailedOperation.ErrorMsgOnly);
    int @int = context.GetInt("DiverterID");
    string string1 = context.GetString("DiverterName");
    string string2 = context.GetString("Content");
    if (string.IsNullOrEmpty(string1))
      throw new ArgumentException("策略名称不能为空");
    GwDiverter diverter = new GwDiverter();
    diverter.DiverterID = @int;
    diverter.DiverterName = string1;
    List<GwDiverterItem> list1 = JsonConvert.DeserializeObject<List<GwDiverterItem>>(string2);
    if (list1 == null)
      throw new ArgumentException("策略数据异常,请重试");
    List<GwDiverterItem> items = new List<GwDiverterItem>();
    List<GwDiverterItem> list2 = new List<GwDiverterItem>();
    foreach (GwDiverterItem gwDiverterItem1 in list1)
    {
      GwDiverterItem gwDiverterItem2 = new GwDiverterItem()
      {
        Mode = gwDiverterItem1.Mode,
        Keywords = "",
        SmMaxLength = gwDiverterItem1.SmMaxLength,
        SmMinLength = gwDiverterItem1.SmMinLength,
        Segments = "",
        ExtNoMode = gwDiverterItem1.ExtNoMode,
        Province = "",
        CMOPID = gwDiverterItem1.CMOPID,
        CUOPID = gwDiverterItem1.CUOPID,
        CTOPID = gwDiverterItem1.CTOPID,
        CMExtNo = gwDiverterItem1.CMExtNo,
        CUExtNo = gwDiverterItem1.CUExtNo,
        CTExtNo = gwDiverterItem1.CTExtNo,
        CMExtParams = gwDiverterItem1.CMExtParams,
        CTExtParams = gwDiverterItem1.CTExtParams,
        CUExtParams = gwDiverterItem1.CUExtParams
      };
      GwDiverterItem gwDiverterItem3 = new GwDiverterItem()
      {
        Mode = gwDiverterItem1.Mode,
        Keywords = gwDiverterItem1.Keywords,
        SmMaxLength = gwDiverterItem1.SmMaxLength,
        SmMinLength = gwDiverterItem1.SmMinLength,
        Segments = SegmentHelper.Filrate(gwDiverterItem1.Segments),
        Province = gwDiverterItem1.Province,
        ExtNoMode = gwDiverterItem1.ExtNoMode,
        CMOPID = gwDiverterItem1.CMOPID,
        CUOPID = gwDiverterItem1.CUOPID,
        CTOPID = gwDiverterItem1.CTOPID,
        CMExtNo = gwDiverterItem1.CMExtNo,
        CUExtNo = gwDiverterItem1.CUExtNo,
        CTExtNo = gwDiverterItem1.CTExtNo,
        CMExtParams = gwDiverterItem1.CMExtParams,
        CTExtParams = gwDiverterItem1.CTExtParams,
        CUExtParams = gwDiverterItem1.CUExtParams
      };
      list2.Add(gwDiverterItem2);
      items.Add(gwDiverterItem3);
    }
    string str = JsonConvert.SerializeObject((object) list2);
    if (str.Length > 5000)
      throw new ArgumentException("导流规则不能超过5000字符");
    diverter.Content = str;
    if (this._Dao.Exists(diverter.DiverterID, diverter.DiverterName))
      throw new ArgumentException("该策略名称已经存在");
    this._Dao.UpdateInfo(diverter, items);
//    WriteSysLogHelper.WriteSysLog(context.SessionObject.Account, 1062, 106, string.Format("导流策略:策略编号:{0}策略名称:{1}", (object) @int, (object) string1), context.ClientIP);
    return new JsonPageResult(true, (object) "导流策略保存成功");
  }
  private JsonPageResult LoadGwDiverter(PageContext<SysUser> context)
  {
    List<GwDiverter> list = this._Dao.LoadList();
    string str = "";
    if (list != null && list.Count > 0)
    {
      int num = 0;
      foreach (GwDiverter gwDiverter in list)
      {
        ++num;
        str = string.Concat(new object[4]
        string @string = context.GetString("action");
        switch (@string)
        {
            case "loadGwDiverter":
                return this.LoadGwDiverter(context);
            case "delete":
                return this.Delete(context);
            case "editDeal":
                return this.Update(context);
            default:
                throw new Exception("Invalid Action=" + @string);
        }
    }
    private JsonPageResult Delete(PageContext<SysUser> context)
    {
        context.CheckRight("1064", FailedOperation.ErrorMsgOnly);
        string @string = context.GetString("did");
        if (string.IsNullOrEmpty(@string))
            throw new ArgumentException("参数异常");
        this._Dao.Delete(@string);
        //WriteSysLogHelper.WriteSysLog(context.SessionObject.Account, 1064, 106, string.Format("删除导流策略:策略编号:{0}", (object) @string), context.ClientIP);
        return new JsonPageResult(true, (object) "删除成功");
    }
    private JsonPageResult Update(PageContext<SysUser> context)
    {
        context.CheckRight("1062", FailedOperation.ErrorMsgOnly);
        int @int = context.GetInt("DiverterID");
        string string1 = context.GetString("DiverterName");
        string string2 = context.GetString("Content");
        if (string.IsNullOrEmpty(string1))
            throw new ArgumentException("策略名称不能为空");
        GwDiverter diverter = new GwDiverter();
        diverter.DiverterID = @int;
        diverter.DiverterName = string1;
        List<GwDiverterItem> list1 = JsonConvert.DeserializeObject<List<GwDiverterItem>>(string2);
        if (list1 == null)
            throw new ArgumentException("策略数据异常,请重试");
        List<GwDiverterItem> items = new List<GwDiverterItem>();
        List<GwDiverterItem> list2 = new List<GwDiverterItem>();
        foreach (GwDiverterItem gwDiverterItem1 in list1)
        {
            GwDiverterItem gwDiverterItem2 = new GwDiverterItem()
            {
                Mode = gwDiverterItem1.Mode,
                Keywords = "",
                SmMaxLength = gwDiverterItem1.SmMaxLength,
                SmMinLength = gwDiverterItem1.SmMinLength,
                Segments = "",
                ExtNoMode = gwDiverterItem1.ExtNoMode,
                Province = "",
                CMOPID = gwDiverterItem1.CMOPID,
                CUOPID = gwDiverterItem1.CUOPID,
                CTOPID = gwDiverterItem1.CTOPID,
                CMExtNo = gwDiverterItem1.CMExtNo,
                CUExtNo = gwDiverterItem1.CUExtNo,
                CTExtNo = gwDiverterItem1.CTExtNo,
                CMExtParams = gwDiverterItem1.CMExtParams,
                CTExtParams = gwDiverterItem1.CTExtParams,
                CUExtParams = gwDiverterItem1.CUExtParams
            };
            GwDiverterItem gwDiverterItem3 = new GwDiverterItem()
            {
                Mode = gwDiverterItem1.Mode,
                Keywords = gwDiverterItem1.Keywords,
                SmMaxLength = gwDiverterItem1.SmMaxLength,
                SmMinLength = gwDiverterItem1.SmMinLength,
                Segments = SegmentHelper.Filrate(gwDiverterItem1.Segments),
                Province = gwDiverterItem1.Province,
                ExtNoMode = gwDiverterItem1.ExtNoMode,
                CMOPID = gwDiverterItem1.CMOPID,
                CUOPID = gwDiverterItem1.CUOPID,
                CTOPID = gwDiverterItem1.CTOPID,
                CMExtNo = gwDiverterItem1.CMExtNo,
                CUExtNo = gwDiverterItem1.CUExtNo,
                CTExtNo = gwDiverterItem1.CTExtNo,
                CMExtParams = gwDiverterItem1.CMExtParams,
                CTExtParams = gwDiverterItem1.CTExtParams,
                CUExtParams = gwDiverterItem1.CUExtParams
            };
            list2.Add(gwDiverterItem2);
            items.Add(gwDiverterItem3);
        }
        string str = JsonConvert.SerializeObject((object) list2);
        if (str.Length > 5000)
            throw new ArgumentException("导流规则不能超过5000字符");
        diverter.Content = str;
        if (this._Dao.Exists(diverter.DiverterID, diverter.DiverterName))
            throw new ArgumentException("该策略名称已经存在");
        this._Dao.UpdateInfo(diverter, items);
        //    WriteSysLogHelper.WriteSysLog(context.SessionObject.Account, 1062, 106, string.Format("导流策略:策略编号:{0}策略名称:{1}", (object) @int, (object) string1), context.ClientIP);
        return new JsonPageResult(true, (object) "导流策略保存成功");
    }
    private JsonPageResult LoadGwDiverter(PageContext<SysUser> context)
    {
        List<GwDiverter> list = this._Dao.LoadList();
        string str = "";
        if (list != null && list.Count > 0)
        {
            int num = 0;
            foreach (GwDiverter gwDiverter in list)
            {
                ++num;
                str = string.Concat(new object[4]
                {
          (object) str,
          (object) "<tr><td>",
          (object) gwDiverter.DiverterID,
          (object) "</td>"
        });
        str = str + "<td>" + gwDiverter.DiverterName + "</td>";
        str = str + "<td>" + this.FormatContent(gwDiverter.Content) + "</td>";
        str += "<td nowrap=\"true\">";
        str = string.Concat(new object[4]
        {
                });
                str = str + "<td>" + gwDiverter.DiverterName + "</td>";
                str = str + "<td>" + this.FormatContent(gwDiverter.Content) + "</td>";
                str += "<td nowrap=\"true\">";
                str = string.Concat(new object[4]
                {
          (object) str,
          (object) "<a href='javascript:;' data-id='",
          (object) gwDiverter.DiverterID,
          (object) "' class='action-edit btn btn-xs btn-success operator'><i class=\"fa fa-edit\"></i>&nbsp;编辑</a>&nbsp;"
        });
        str = string.Concat(new object[4]
        {
                });
                str = string.Concat(new object[4]
                {
          (object) str,
          (object) "<a href='javascript:;' data-id='",
          (object) gwDiverter.DiverterID,
          (object) "' class='action-delete btn btn-xs btn-default operator'><i class=\"fa fa-trash\"></i>&nbsp;删除</a>"
                });
                str += "</td>";
                str += "</tr>";
            }
        }
        else
            str += "<tr><td colspan=\"4\" style=\"padding-left:5px; text-align: center;\">暂无信息</td></tr>";
        return new JsonPageResult(true, (object) new
        {
            Table = str.ToString()
        });
        str += "</td>";
        str += "</tr>";
      }
    }
    else
      str += "<tr><td colspan=\"4\" style=\"padding-left:5px; text-align: center;\">暂无信息</td></tr>";
    return new JsonPageResult(true, (object) new
    {
      Table = str.ToString()
    });
  }
  private string FormatContent(string content)
  {
    StringBuilder stringBuilder = new StringBuilder();
    try
    private string FormatContent(string content)
    {
      foreach (GwDiverterItem gwDiverterItem in JsonConvert.DeserializeObject<List<GwDiverterItem>>(content))
      {
        stringBuilder.AppendFormat("<div class=\"m-b\">");
        stringBuilder.AppendFormat("{0}", (object) this.ModeStr(gwDiverterItem.Mode));
        stringBuilder.AppendFormat("短信将从 移动  <span class=\"label label-success\">{0}</span>  联通 <span class=\"label label-primary\">{1}</span>  电信 <span class=\"label label-warning\"> {2} </span>导流。", (object) this.GetOpName(gwDiverterItem.CMOPID), (object) this.GetOpName(gwDiverterItem.CUOPID), (object) this.GetOpName(gwDiverterItem.CTOPID));
        stringBuilder.AppendLine("</div>");
      }
        StringBuilder stringBuilder = new StringBuilder();
        try
        {
            foreach (GwDiverterItem gwDiverterItem in JsonConvert.DeserializeObject<List<GwDiverterItem>>(content))
            {
                stringBuilder.AppendFormat("<div class=\"m-b\">");
                stringBuilder.AppendFormat("{0}", (object) this.ModeStr(gwDiverterItem.Mode));
                stringBuilder.AppendFormat("短信将从 移动  <span class=\"label label-success\">{0}</span>  联通 <span class=\"label label-primary\">{1}</span>  电信 <span class=\"label label-warning\"> {2} </span>导流。", (object) this.GetOpName(gwDiverterItem.CMOPID), (object) this.GetOpName(gwDiverterItem.CUOPID), (object) this.GetOpName(gwDiverterItem.CTOPID));
                stringBuilder.AppendLine("</div>");
            }
        }
        catch (Exception ex)
        {
            LogHelper.Error(ex);
        }
        return stringBuilder.ToString();
    }
    catch (Exception ex)
    {
      LogHelper.Error(ex);
    }
    return stringBuilder.ToString();
  }
  public string ModeStr(int mode)
  {
    string str1 = "";
    string str2;
    switch (mode)
    public string ModeStr(int mode)
    {
      case 1:
        return str2 = string.Format("当短信内容匹配【关键字】时,");
      case 2:
        return str2 = string.Format("当短信内容匹配 “字数” 时,");
      case 3:
        return str2 = string.Format("当短信号码匹配 “号段” 时,");
      case 4:
        return str2 = string.Format("当短信号码匹配 “省份” 时,");
      default:
        return str1.ToString();
        string str1 = "";
        string str2;
        switch (mode)
        {
            case 1:
                return str2 = string.Format("当短信内容匹配【关键字】时,");
            case 2:
                return str2 = string.Format("当短信内容匹配 “字数” 时,");
            case 3:
                return str2 = string.Format("当短信号码匹配 “号段” 时,");
            case 4:
                return str2 = string.Format("当短信号码匹配 “省份” 时,");
            default:
                return str1.ToString();
        }
    }
  }
  private string GetOpName(int opID)
  {
    using (GwOpDao gwOpDao = new GwOpDao())
      this.OpList = gwOpDao.LoadInfoList();
    if (this.OpList == null)
      return string.Empty;
    GwOp gwOp = this.OpList.Find((Predicate<GwOp>) (op => op.OpID == opID));
    if (gwOp != null)
      return string.Format("{0}-{1}", (object) gwOp.OpID, (object) gwOp.OpName);
    return "未设置通道";
  }
    private string GetOpName(int opID)
    {
        using (GwOpDao gwOpDao = new GwOpDao())
            this.OpList = gwOpDao.LoadInfoList();
        if (this.OpList == null)
            return string.Empty;
        GwOp gwOp = this.OpList.Find((Predicate<GwOp>) (op => op.OpID == opID));
        if (gwOp != null)
            return string.Format("{0}-{1}", (object) gwOp.OpID, (object) gwOp.OpName);
        return "未设置通道";
    }
}