ComplianceServer/oldcode/WEB/Controllers/QH/AccountApplyController.cs

484 lines
19 KiB
C#

using Ninject;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Net;
using System.Text;
using System.Web.Mvc;
using WX.CRM.BLL.Base;
using WX.CRM.Common;
using WX.CRM.IBLL.Base;
using WX.CRM.IBLL.Csvr;
using WX.CRM.IBLL.QH;
using WX.CRM.IBLL.Res;
using WX.CRM.IBLL.Util;
using WX.CRM.Model.Entity;
using WX.CRM.Model.MAP;
using WX.CRM.WebHelper;
namespace WX.CRM.WEB.Controllers.QH
{
public class AccountApplyController : BaseController
{
ValidationErrors errors = new ValidationErrors();
[Inject]
public IQH_CUSTOMER_RESID QH_CustomerResId_BL { get; set; }
[Inject]
public ICACHE_Q _cacheQ { get; set; }
[Inject]
public IRES_CUSTOMER_Q res_Customer_Q_BL { get; set; }
[Inject]
public IRES_CUSTOMER res_Customer_BL { get; set; }
[Inject]
public ICSVR_CALLRECORD csvr_CallRecord_BL { get; set; }
[Inject]
public ICSVR_CALLRECORD_Q csvr_CallRecord_Q_BL { get; set; }
[Inject]
public IQH_CUSTOMER_RESID qh_customer_resid_BL { get; set; }
[Ninject.Inject]
public IBAS_PARAMETER_Q _BAS_PARAMETER_Q { get; set; }
[Inject]
public ICACHE_Q _CacheQ { get; set; }
public AccountApplyController()
{
}
#region
[HttpGet]
public ActionResult Edit(string resid)
{
var model = new QH_CUSTOMER_RESID();
if (!string.IsNullOrEmpty(resid))
{
model = QH_CustomerResId_BL.Get(m => m.RESID == resid);
if (model == null)
{
model = new QH_CUSTOMER_RESID();
}
}
return View(model);
}
[HttpPost]
public JsonResult Edit(QH_CUSTOMER_RESID model)
{
if (!ModelState.IsValid)
{
return JsonHandler.ValidateFailMessage();
}
if (model.PKID == 0)
{
if (!Utility.ChekMobile(model.MOBILE))
{
errors.Add("请输入正确的手机号!");
return JsonHandler.InsertMessage(errors, false);
}
var resid = WX.CRM.Common.ResUtil.CreateResId(model.MOBILE);
if (res_Customer_Q_BL.getResCustomerByResId(resid) == null)
{
res_Customer_BL.ResgisterCustomer(model.MOBILE, resid, "qh");
}
model.MOBILE = Utility.NumberFormat(model.MOBILE);//手机号中间几位隐去
var account = QH_CustomerResId_BL.Get(m => m.USERCARD == model.USERCARD);
if (account != null)
{
errors.Add("用户编号已经存在,不能重复使用!");
return JsonHandler.InsertMessage(errors, false);
}
account = QH_CustomerResId_BL.Get(m => m.RESID == resid);
if (account != null)
{
errors.Add("该手机号已经申请过开户,不能重复使用!");
return JsonHandler.InsertMessage(errors, false);
}
model.CREATEUSERID = UserId;
model.CTIME = DateTime.Now;
model.STATUS = 0;
model.PKID = new SEQUENCES_BL().Seq_base_get();
model.RESID = resid;
bool result = QH_CustomerResId_BL.Add(model) == 1;
return JsonHandler.InsertMessage(errors, result);
}
else
{
var entry = QH_CustomerResId_BL.Get(m => m.PKID == model.PKID);
if (entry == null)
{
errors.Add("用户编号不能为空");
return JsonHandler.UpdateMessage(errors, false);
}
if (entry.STATUS != 0)
{
errors.Add("只有未审核的状态才能修改");
return JsonHandler.UpdateMessage(errors, false);
}
var account = QH_CustomerResId_BL.Get(m => m.USERCARD == model.USERCARD && m.PKID != model.PKID);
if (account != null)
{
errors.Add("用户编号已经存在,不能重复使用!");
return JsonHandler.UpdateMessage(errors, false);
}
entry.NAME = model.NAME;
entry.IDCARD = model.IDCARD;
entry.USERCARD = model.USERCARD;
bool result = QH_CustomerResId_BL.Update(entry);
return JsonHandler.UpdateMessage(errors, result);
}
}
#endregion
[HttpGet]
public ActionResult RiskRecord(string usercard, decimal? recordid)
{
var model = QH_CustomerResId_BL.Get(m => m.USERCARD == usercard && m.RECORDID == recordid);
var record = new CSVR_CALLRECORD();
if (model != null)
{
record = csvr_CallRecord_BL.Get(m => m.RECORDID == model.RECORDID);
if (record == null)
{
record = new CSVR_CALLRECORD();
}
}
ViewBag.Record = record;
return View(model);
}
[AuthorizeRedirect(Roles = InitRights.CONST_期货开户列表)]
public ActionResult AccountList()
{
//ToolBar
ToolBar tool = new ToolBar();
string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights., userRightId);
tool.AllowButton(toolbtn);
tool.AddOtherButton("Other1", "选择风控录音", "icon-lookup", "completeWindControl_click", true);
tool.AddOtherButton("Other2", "审核完成", "icon-yes", "completeCheck_click", true);
ViewBag.ToolBar = tool;
Pager pager = new Pager() { page = 1, rows = 10 };
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHiddenHeadCol("pkid", "ID");//影藏列
tab.AddHiddenHeadCol("status_2", "status");//影藏列
tab.AddHeadCol("resid", "", "客户ID");
tab.AddHeadCol("usercard", "", "客户编号");
tab.AddHeadCol("useraccount", "", "资金账户");
tab.AddHeadCol("name", "", "姓名");
tab.AddHeadCol("status", "", "状态");
tab.AddHeadCol("createuserid", "", "操作人");
tab.AddHeadCol("ctime", "", "创建时间");
tab.AddHeadCol("recordctime", "", "录音时间");
tab.AddHeadCol("audittime", "", "审核时间");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "10,20,30");
return View();
}
#region
/// <summary>
/// 按照条件获取数据
/// </summary>
/// <param name="pager"></param>
/// <param name="queryStr"></param>
/// <returns></returns>
[AuthorizeRedirect(Roles = InitRights.CONST_期货开户列表)]
public JsonResult AccountListGetHtmlList(Pager pager, string columns, string resid, decimal status, DateTime? stime, DateTime? etime)
{
///System.Threading.Thread.Sleep(1000*60*10);
Table table = new Table(columns, true);
table.gridPager = pager;
List<WX.CRM.Model.Entity.QH_CUSTOMER_RESID> list = qh_customer_resid_BL.GetList(ref pager, resid, status, stime, etime);
foreach (WX.CRM.Model.Entity.QH_CUSTOMER_RESID model in list)
{
table.AddHiddenCol(model.PKID);
table.AddHiddenCol(model.STATUS);
var linkUrl = string.Format("<a href=\"javascript:parent.ChildAddTab('{0}', '{1}', 'icon-memeber')\">{2}</a>"
, "客户详细"
, "/Csvr/CustomerInfo/CustomerDetail?resid=" + model.RESID
, model.RESID);
table.AddCol(linkUrl);
table.AddCol(model.USERCARD);
table.AddCol(model.USERACCOUNT);
table.AddCol(model.NAME);
table.AddCol(GetStatus(Convert.ToInt32(model.STATUS)));
table.AddCol(InnerUserHelper.Instance.GetEidAndTrueName(model.CREATEUSERID));
table.AddCol(model.CTIME);
table.AddCol(model.RECORDCTIME);
table.AddCol(model.AUDITTIME);
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
private string GetStatus(int status)
{
switch (status)
{
case 0: return "已注册";
case 1: return "风控审核中";
case 2: return "审核通过";
default: return "已注册";
}
}
#endregion
[HttpGet]
[AuthorizeToolBar(InitRights.CONST_期货开户列表, InitToolBar.CONST_Other1)]
public ActionResult RecordList()
{
Pager pager = new Pager() { page = 1, rows = 10 };
string tableId = "tablist";
Table tab = new Table(tableId);
tab.isCheckbox = true;
tab.AddHiddenHeadCol("resid", "影藏客户ID");
tab.AddHiddenHeadCol("filename", "录音路径");
tab.AddHiddenHeadCol("serverid", "录音路径");
tab.AddHeadCol("recordid", "", "录音编号");
tab.AddHeadCol("timelength", "", "通话时长");
tab.AddHeadCol("timestart", "", "开始时间");
tab.AddHeadCol("", "", "播放");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "10,20,30");
return View();
}
/// <summary>
/// 按照条件获取数据
/// </summary>
/// <returns></returns>
[AuthorizeToolBar(InitRights.CONST_期货开户列表, InitToolBar.CONST_Other1)]
public JsonResult RecordListGetHtmlList(Pager pager, string columns, decimal? recordid, string resid)
{
Table table = new Table(columns, true);
table.gridPager = pager;
table.isCheckbox = true;
DataTable list = csvr_CallRecord_Q_BL.GetRecordByEID(recordid, Eid, resid, ref pager);
foreach (DataRow model in list.Rows)
{
table.AddHiddenCol(model["resid"]);
table.AddHiddenCol(model["FileName"]);
table.AddHiddenCol(model["ServerID"]);
table.AddCol(model["recordid"]);
table.AddCol(model["timelength"]);
table.AddCol(model["timestart"]);
string cti;
string playurl = _getCallRecordUrl(model["ServerID"].ToString(), model["FileName"].ToString(), out cti);
var playcrl = string.Format("<input id=\"BtnPlayer\" type=\"button\" value=\" 播 放 \" onclick=\"PalyRecord('{0}','DivPlayer{1}','{2}')\" />",
playurl, model["RECORDID"], cti == null ? "" : cti);
playcrl += string.Format("<div id=\"DivPlayer{0}\"></div><input type=\"hidden\" id=\"hidRecordUrl\" value=\"{1}\" />", model["RECORDID"], playurl);
table.AddCol(playcrl);
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
public JsonResult ChooseRecord(string resid, string recordid, string filename, string serverid)
{
if (string.IsNullOrWhiteSpace(resid))
return JsonHandler.ManageMessage("找不到客户ID", false);
if (string.IsNullOrWhiteSpace(recordid))
return JsonHandler.ManageMessage("找不到录音编号", false);
if (string.IsNullOrWhiteSpace(filename))
return JsonHandler.ManageMessage("找不到录音", false);
try
{
bool isDownLoad = download(filename, serverid);
bool isOk = qh_customer_resid_BL.SetRecord(resid, recordid, UserId, ref errors);
return JsonHandler.ManageMessage(errors, isOk);
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
return JsonHandler.ManageMessage("系统错误:" + ex.ToString(), false);
}
}
private bool download(string file, string serverID)
{
string server = string.Empty;
string _localurl = "\\";//期货风控路径
string _IAD_localhostCallRecord = _CacheQ.GetValue_Parameter("ICSR_IAD_localhostCallRecord");
try
{
string cti = csvr_CallRecord_Q_BL.Sys_Environment_CTI_VER();
if (cti == ((int)WX.CRM.Model.Enum.CTI_VER.).ToString() || cti == ((int)WX.CRM.Model.Enum.CTI_VER.).ToString())
{
server = Utility.PostData(_IAD_localhostCallRecord + "?file=" + file, Encoding.UTF8);
}
else if (cti == ((int)WX.CRM.Model.Enum.CTI_VER.).ToString())
{
string _file = file.Replace("\\", "/");
server = Utility.PostData(_IAD_localhostCallRecord + "?file=" + _file, Encoding.UTF8);
}
else if (cti == ((int)WX.CRM.Model.Enum.CTI_VER.new).ToString())
{
string _cti;
server = _getCallRecordUrl(serverID, file, out _cti);
}
else
{
string _file = file.Replace("\\", "/");
server = Utility.PostData(_IAD_localhostCallRecord + "?serverID=" + serverID + "&file=" + _file,
Encoding.UTF8);
}
string setpath = _CacheQ.GetValue_Parameter("QH_FK_Record_DownPath");
setpath = string.IsNullOrEmpty(setpath) ? null : setpath;
string dirBasepath = FileUnit.GetBaseDirectory();
dirBasepath = dirBasepath.Substring(0, dirBasepath.IndexOf("\\", System.StringComparison.Ordinal));
string localurl = (setpath ?? dirBasepath) + _localurl + file;
string d = localurl.Substring(0, localurl.LastIndexOf("\\", System.StringComparison.Ordinal));
if (cti == ((int)WX.CRM.Model.Enum.CTI_VER.new).ToString()
&& localurl.LastIndexOf("/", System.StringComparison.Ordinal) > 0)
{
d = localurl.Substring(0, localurl.LastIndexOf("/", System.StringComparison.Ordinal));
}
if (!Directory.Exists(d))
{
Directory.CreateDirectory(d);
}
var isOLD = file.StartsWith("UP");
server = server.Replace("\\", "").Replace("\"", "");
string remoteUri = server;
if (isOLD)
{
remoteUri = server + "/home/" + file;
}
Uri downUri = new Uri(remoteUri);
HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create(downUri);
using (Stream inputStream = hwr.GetResponse().GetResponseStream())
{
using (FileStream flieStream = new FileStream(localurl, FileMode.Create))
{
inputStream.CopyTo(flieStream);
}
}
return true;
}
catch (Exception ex)
{
LogHelper.Error(ex);
return false;
}
}
/// <summary>
/// 获取录音地址
/// </summary>
/// <returns></returns>
private string _getCallRecordUrl(string _ServerID, string _FileName, out string cti)
{
var playurl = "";
cti = "";
var _IAD_localhostCallRecord = _BAS_PARAMETER_Q.GetModel_Patameter("ICSR_IAD_localhostCallRecord");
if (null != _IAD_localhostCallRecord)
{
var FuturesRecordServerUrl = _IAD_localhostCallRecord.PARAVALUE;
playurl = FuturesRecordServerUrl + "?serverID=" + _ServerID + "&file=" + _FileName.Replace("\\", "/");
cti = csvr_CallRecord_Q_BL.Sys_Environment_CTI_VER();
if (cti != null && cti == ((int)WX.CRM.Model.Enum.CTI_VER.).ToString())
{
playurl = FuturesRecordServerUrl + "?file=" + _FileName.Replace("\\", "/");
}
if (cti != null && cti == ((int)WX.CRM.Model.Enum.CTI_VER.).ToString())
{
var shjctiinterface = Utility.GetSettingByKey("shj");
playurl = shjctiinterface + "?action=record_download&filename=/var/spool/asterisk/monitor/" + _FileName.Replace("\\", "/");
}
if (cti != null && cti == ((int)WX.CRM.Model.Enum.CTI_VER.).ToString())
{
playurl = FuturesRecordServerUrl + "?file=" + _FileName;
}
if (cti != null && cti == ((int)WX.CRM.Model.Enum.CTI_VER.).ToString())
{
playurl = FuturesRecordServerUrl + _FileName;
}
if (cti != null && cti == ((int)WX.CRM.Model.Enum.CTI_VER.new).ToString())
{
_IAD_localhostCallRecord = _BAS_PARAMETER_Q.GetModel_Patameter("ICSR_IAD_localhostCallRecord_AX");
var filename = _FileName;
if (null != _IAD_localhostCallRecord)
{
playurl = _IAD_localhostCallRecord.PARAVALUE + (filename.StartsWith("UP") ? "/home/" + filename : filename);
playurl = playurl.Replace("\\", "/");
}
}
}
return playurl;
}
#region
[HttpGet]
[AuthorizeToolBar(InitRights.CONST_期货开户列表, InitToolBar.CONST_Other2)]
public ActionResult Check(string resid)
{
QH_Audituserid model = new QH_Audituserid();
model.resid = resid;
return View(model);
}
[HttpPost]
[AuthorizeToolBar(InitRights.CONST_期货开户列表, InitToolBar.CONST_Other2)]
public JsonResult Check(QH_Audituserid model)
{
if (!ModelState.IsValid)
{
return JsonHandler.ValidateFailMessage();
}
bool result = qh_customer_resid_BL.Check(model.resid, model.useraccount, UserId, ref errors);
return JsonHandler.UpdateMessage(errors, result);
}
#endregion
}
}