484 lines
19 KiB
C#
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
|
|
}
|
|
}
|