using Ninject; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web.Mvc; using WX.CRM.BLL.Base; using WX.CRM.Common; using WX.CRM.IBLL.Csvr; using WX.CRM.IBLL.Util; using WX.CRM.IBLL.Wx; using WX.CRM.Model.Entity; using WX.CRM.WebHelper; namespace WX.CRM.WEB.Controllers.WeiXin { public class ManualAddWeixinFriendController : BaseController { ValidationErrors errors = new ValidationErrors(); [Inject] public IWX_MANUALADDWEIXINFRIEND wx_ManualAddWeixinFriend_BL { get; set; } [Inject] public IWX_RCONTACT wx_Rcontact_BL { get; set; } [Inject] public IWX_WORKACCOUNT wx_WorkAccount_BL { get; set; } [Inject] public ICSVR_CALLRECORD csvr_CallRecord_BL { get; set; } [Inject] public ICACHE_Q cache_BL { get; set; } public ManualAddWeixinFriendController() { } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_手工添加微信好友)] public ActionResult Index() { var tool = new ToolBar(); string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.手工添加微信好友, userRightId); tool.AllowButton(toolbtn); ViewBag.ToolBar = tool; Pager gp = new Pager() { page = 1, rows = 20 }; Table tab = new Table("tablist"); tab.AddHeadCol("RESID", "", "客户ID"); tab.AddHeadCol("WORKALIAS", "", "工作微信号"); tab.AddHeadCol("WORKUSERNAME", "", "工作微信用户名"); tab.AddHeadCol("WorkAccountUserId", "", "工作微信客服"); tab.AddHeadCol("USERNAME", "", "客户微信用户名"); tab.AddHeadCol("ADDTYPE", "", "添加方式"); tab.AddHeadCol("RECORDID", "", "录音ID"); tab.AddHeadRow(); ViewBag.GroupList = tab.GetTable() + Pagination.GetPage(gp, "tablist", "20,30,50"); return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_手工添加微信好友)] public JsonResult GetHtmlList(Pager pg, string workAlias, string columns) { try { Table tb = new Table(columns, true) { gridPager = pg }; var list = wx_ManualAddWeixinFriend_BL.GetList(ref pg, UserId, workAlias); foreach (var model in list) { var linkUrl = string.Format("{2}", "客户详细", "/Csvr/CustomerInfo/CustomerDetail?resid=" + model.wx_ManualAddWeiXinFriend.RESID, model.wx_ManualAddWeiXinFriend.RESID); tb.AddCol(linkUrl); tb.AddCol(model.wx_ManualAddWeiXinFriend.WORKALIAS); tb.AddCol(model.wx_ManualAddWeiXinFriend.WORKUSERNAME); tb.AddCol(InnerUserHelper.Instance.EidAndName(model.WorkAccountUserId)); tb.AddCol(model.wx_ManualAddWeiXinFriend.USERNAME); tb.AddCol(getAddTypeText(model.wx_ManualAddWeiXinFriend.ADDTYPE)); tb.AddCol(model.wx_ManualAddWeiXinFriend.RECORDID); tb.AddRow(); } var json = new { totalPages = pg.totalPages, totalRows = pg.totalRows, rowsList = tb.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } catch (Exception ex) { LogHelper.Error(ex.ToString()); return JsonHandler.ManageMessage(ex.Message, false); } } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_手工添加微信好友列表)] public ActionResult AllList() { var tool = new ToolBar(); string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.手工添加微信好友列表, userRightId); tool.AllowButton(toolbtn); ViewBag.ToolBar = tool; Pager gp = new Pager() { page = 1, rows = 20 }; Table tab = new Table("tablist"); tab.AddHeadCol("RESID", "", "客户ID"); tab.AddHeadCol("WORKALIAS", "", "工作微信号"); tab.AddHeadCol("WORKUSERNAME", "", "工作微信用户名"); tab.AddHeadCol("WorkAccountUserId", "", "工作微信客服"); tab.AddHeadCol("USERNAME", "", "客户微信用户名"); tab.AddHeadCol("ADDTYPE", "", "添加方式"); tab.AddHeadCol("INNERUSERID", "", "添加人"); tab.AddHeadCol("RECORDID", "", "录音ID"); tab.AddHeadRow(); ViewBag.GroupList = tab.GetTable() + Pagination.GetPage(gp, "tablist", "20,30,50"); return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_手工添加微信好友列表)] public JsonResult GetAllListHtmlList(Pager pg, decimal? eid, string workAlias, string columns) { try { Table tb = new Table(columns, true) { gridPager = pg }; var innerUserId = InnerUserHelper.Instance.GetUserIdByEid(eid); if (innerUserId <= 1) { innerUserId = 0; } var list = wx_ManualAddWeixinFriend_BL.GetList(ref pg, innerUserId, workAlias); foreach (var model in list) { var linkUrl = string.Format("{2}", "客户详细", "/Csvr/CustomerInfo/CustomerDetail?resid=" + model.wx_ManualAddWeiXinFriend.RESID, model.wx_ManualAddWeiXinFriend.RESID); tb.AddCol(linkUrl); tb.AddCol(model.wx_ManualAddWeiXinFriend.WORKALIAS); tb.AddCol(model.wx_ManualAddWeiXinFriend.WORKUSERNAME); tb.AddCol(InnerUserHelper.Instance.EidAndName(model.WorkAccountUserId)); tb.AddCol(model.wx_ManualAddWeiXinFriend.USERNAME); tb.AddCol(getAddTypeText(model.wx_ManualAddWeiXinFriend.ADDTYPE)); tb.AddCol(InnerUserHelper.Instance.EidAndName(model.wx_ManualAddWeiXinFriend.INNERUSERID)); tb.AddCol(model.wx_ManualAddWeiXinFriend.RECORDID); tb.AddRow(); } var json = new { totalPages = pg.totalPages, totalRows = pg.totalRows, rowsList = tb.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } catch (Exception ex) { LogHelper.Error(ex.ToString()); return JsonHandler.ManageMessage(ex.Message, false); } } [HttpGet] [AuthorizeToolBar(InitRights.CONST_手工添加微信好友, InitToolBar.CONST_Add)] public ActionResult Add(string resId) { return View(new WX_MANUALADDWEIXINFRIEND()); } [HttpPost] [AuthorizeToolBar(InitRights.CONST_手工添加微信好友, InitToolBar.CONST_Add)] public JsonResult Add(WX_MANUALADDWEIXINFRIEND model, string mobile, string cname) { try { if (!ModelState.IsValid) { return JsonHandler.ValidateFailMessage(); } if (!Utility.ChekMobile(mobile)) { errors.Add("请填写正确的手机号!"); return JsonHandler.UpdateMessage(errors, false); } if (string.IsNullOrWhiteSpace(model.WORKALIAS)) { errors.Add("工作微信不能为空"); return JsonHandler.UpdateMessage(errors, false); } if (string.IsNullOrWhiteSpace(model.USERNAME)) { errors.Add("客户微信用户名不能为空"); return JsonHandler.UpdateMessage(errors, false); } string resid = WX.CRM.Common.ResUtil.CreateResId(mobile); var resTypeIds = cache_BL.GetValue_Parameter(Model.Enum.Parameter.WeiXin_OfflineResTypeIds); if (string.IsNullOrEmpty(resTypeIds)) { errors.Add("线下手机资源库为空!"); return JsonHandler.UpdateMessage(errors, false); } resTypeIds = resTypeIds.Trim(','); var typeIdsArr = resTypeIds.Split(','); var typeIdList = typeIdsArr.Select(m => Convert.ToDecimal(m)).ToList(); var customer = wx_ManualAddWeixinFriend_BL.IsOfflineRes(resid, typeIdList); if (customer == null) { errors.Add("添加的用户不是线下资源库的手机号。"); return JsonHandler.UpdateMessage(errors, false); } var workAccount = wx_WorkAccount_BL.Get(m => m.ALIAS == model.WORKALIAS); if (workAccount == null) { errors.Add("你输入的工作微信号不存在"); return JsonHandler.UpdateMessage(errors, false); } model.WORKUSERNAME = workAccount.USERNAME; if (model.ADDTYPE == 1) { if (!model.RECORDID.HasValue) { errors.Add("选择电话添加微信,需要填写对于的电话记录ID"); return JsonHandler.UpdateMessage(errors, false); } var callRecord = csvr_CallRecord_BL.Get(m => m.RECORDID == model.RECORDID && m.SALESEID == Eid); if (callRecord == null) { errors.Add("电话记录ID不正确,电话记录ID必须是本人的通话记录"); return JsonHandler.UpdateMessage(errors, false); } } var item = wx_ManualAddWeixinFriend_BL.Get(m => m.RESID == resid && m.INNERUSERID == UserId && m.WORKALIAS == model.WORKALIAS && m.USERNAME == model.USERNAME); if (item != null) { errors.Add("你已经添加过该微信的记录,不能重复添加"); return JsonHandler.UpdateMessage(errors, false); } model.RESID = resid; model.PKID = new SEQUENCES_BL().Seq_base_get(); model.INNERUSERID = UserId; model.CTIME = DateTime.Now; var res = wx_ManualAddWeixinFriend_BL.Add(model); return JsonHandler.ManageMessage(errors.Error, res == 1); } catch (Exception ex) { LogHelper.Error(ex); return JsonHandler.ManageMessage(ex.ToString(), false); } } public ActionResult RContactIndex() { //ToolBar ToolBar tool = new ToolBar(); ViewBag.ToolBar = tool; //table Pager pager = new Pager() { page = 1, rows = 15 }; string tableId = "tablist"; Table tab = new Table(tableId); tab.AddHeadCol("USERNAME", "", "微信用户名"); //tab.AddHeadCol("ALIAS", "", "微信号"); tab.AddHeadCol("NICKNAME", "", "昵称"); tab.AddHeadCol("CONREMARK", "", "备注"); tab.AddHeadCol("", "8%", ""); tab.AddHeadRow(); ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "5,10,15,20"); ViewBag.workAlias = Request["workAlias"]; return View(); } [HttpPost] public JsonResult GetRcontactHtmlList(Pager pager, string alias, string nickName, string conRemark, string workAlias, string columns) { string isShowMobileOfContent = cache_BL.GetValue_Parameter(Model.Enum.Parameter.Sys_IsShowMobileOfContent); List list = wx_Rcontact_BL.GetWorkAliasRcontactList(ref pager, null, alias, conRemark, nickName, workAlias); Table table = new Table(columns, true); table.gridPager = pager; foreach (var model in list) { table.AddCol(model.USERNAME); //table.AddCol(model.ALIAS); if (!string.IsNullOrEmpty(isShowMobileOfContent) && isShowMobileOfContent == "1") { table.AddCol(model.NICKNAME); table.AddCol(model.CONREMARK); } else { table.AddCol(Utility.ReplaceMobile(model.NICKNAME)); table.AddCol(Utility.ReplaceMobile(model.CONREMARK)); } var payInfoUrl = string.Format("选择", model.USERNAME); table.AddCol(payInfoUrl); table.AddRow(); } var json = new { totalPages = pager.totalPages, totalRows = pager.totalRows, rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } private string getAddTypeText(decimal? addType) { if (!addType.HasValue) { return ""; } int i = Convert.ToInt32(addType); switch (i) { case 1: return "电话"; case 2: return "通讯录扫码"; default: return ""; } } } }