using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.Logging; using IServices; using DTO; using Newtonsoft.Json; using zhengcaioa.Models; using Microsoft.AspNetCore.Http; using zhengcaioa.IService; using System.IO; using Microsoft.Extensions.Configuration; using System.Transactions; using CommonToolsCore; using System.Text; namespace zhengcaioa.Controllers.Expert { public class ExpertController : Controller { private readonly ILogger _logger; private readonly IExpertService _expertService; private readonly ILiaotianService _liaotianService; private readonly IProjectService _projectService; private readonly IUserService _userService; private readonly IFiSubjectService _ifiSubjectService; private readonly ICooperOrderService _cooperOrderService; private readonly IFiAccountService _fiAccountService; private readonly IFiAccountRecordService _iFiAccountRecordService; private readonly IAreaService _iAreaService; public ExpertController(ILogger logger, IExpertService expertService, IProjectService projectService, ILiaotianService liaotianService, IUserService userService , IFiSubjectService ifiSubjectService, ICooperOrderService cooperOrderService, IFiAccountService fiAccountService, IFiAccountRecordService iFiAccountRecordService , IAreaService iAreaService) { _logger = logger; _expertService = expertService; _projectService = projectService; _liaotianService = liaotianService; _userService = userService; _ifiSubjectService = ifiSubjectService; _cooperOrderService = cooperOrderService; _fiAccountService = fiAccountService; _iFiAccountRecordService = iFiAccountRecordService; _iAreaService = iAreaService; } [CheckLogin] public IActionResult Index() { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; List actionlist = new List(); ActionEntity actionEntity = new ActionEntity(); actionEntity.OpenType = 0; actionEntity.ActionUrl = ""; actionEntity.ActionFun = "Search"; actionEntity.PageIco = "fa fa-search"; actionEntity.ActionName = "查询"; actionlist.Add(actionEntity); ActionEntity actionEntity1 = new ActionEntity(); actionEntity1.OpenType = 0; actionEntity1.ActionUrl = ""; actionEntity1.ActionFun = "Add"; actionEntity1.PageIco = "fa fa-plus"; actionEntity1.ActionName = "新增"; actionlist.Add(actionEntity1); ViewData["ActionInfo"] = actionlist; ViewBag.expertType = _liaotianService.GetSYScode("experts", "expertType").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.level = _liaotianService.GetSYScode("experts", "level").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.Province = _projectService.Getsheng().Select(x => new { code = x.CodeId, label = x.Name }).ToList(); // ViewBag.City = _projectService.Getshi( ).Select(x => new { code = x.CodeId, label = x.Name }).ToList(); ViewBag.ReviewItem = _liaotianService.GetSYScode("experts", "ReviewItem").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); return View(); } #region 查询 [CheckLogin] public string GetList(ExpertDTOSearch search) { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); search.ShenheStatus = "A"; ViewData["curentuser"] = curentuser; return JsonConvert.SerializeObject(_expertService.SearchByPaging(search)); } #endregion [CheckLogin] public IActionResult Indexziliao() { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; List actionlist = new List(); ActionEntity actionEntity = new ActionEntity(); actionEntity.OpenType = 0; actionEntity.ActionUrl = ""; actionEntity.ActionFun = "Search"; actionEntity.PageIco = "fa fa-search"; actionEntity.ActionName = "查询"; actionlist.Add(actionEntity); ActionEntity actionEntity4 = new ActionEntity(); actionEntity4.OpenType = 0; actionEntity4.ActionUrl = ""; actionEntity4.ActionFun = "Duanxin"; actionEntity4.PageIco = ""; actionEntity4.ActionName = "群发短信"; actionlist.Add(actionEntity4); ViewData["ActionInfo"] = actionlist; ViewBag.expertType = _liaotianService.GetSYScode("experts", "expertType").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.level = _liaotianService.GetSYScode("experts", "level").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.Province = _projectService.Getsheng().Select(x => new { code = x.CodeId, label = x.Name }).ToList(); // ViewBag.City = _projectService.Getshi( ).Select(x => new { code = x.CodeId, label = x.Name }).ToList(); ViewBag.ReviewItem = _liaotianService.GetSYScode("experts", "ReviewItem").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.users = _userService.GetList().Select(x => new { code = x.Id, label = x.UserName }).ToList(); ViewBag.YearJiou = _liaotianService.GetSYScode("experts", "year_jiou").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.Createtime = DateTime.Now.ToString("yyyy-MM-dd"); ; return View(); } #region 编辑 [CheckLogin] public ActionResult Edit(string id = null, string Province = null, string City = null) { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; List actionlist = new List(); ActionEntity actionEntity = new ActionEntity(); actionEntity.OpenType = 0; actionEntity.ActionUrl = ""; actionEntity.ActionFun = "Save"; actionEntity.PageIco = "glyphicon glyphicon-ok"; actionEntity.ActionName = "保存"; actionlist.Add(actionEntity); ViewData["ActionInfo"] = actionlist; ExpertDTO expertDTO = new ExpertDTO(); if (!string.IsNullOrEmpty(id)) { expertDTO = _expertService.Get(id); } else { if (string.IsNullOrEmpty(Province)) { expertDTO.Province = "510000"; } else { expertDTO.Province = Province; } if (string.IsNullOrEmpty(City)) { expertDTO.City = "510100"; } else { expertDTO.City = City; } expertDTO.ExpertType = "4"; expertDTO.Level = "1"; expertDTO.CertiNumber = "SC"; expertDTO.InfoSource = "01"; expertDTO.Sex = "1"; expertDTO.YearJiou = "1"; } // var sheng = _projectService.Getsheng(); ViewBag.InfoSource = _liaotianService.GetSYScode("CooperatecustomCustomer", "khly");//.Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.sex = _liaotianService.GetSYScode("plt_user", "sex");//.Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.expertType = _liaotianService.GetSYScode("experts", "expertType");//.Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.level = _liaotianService.GetSYScode("experts", "level");//.Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.ReviewItem = _liaotianService.GetSYScode("experts", "ReviewItem");//.Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.Province = _projectService.Getsheng();//.Select(x => new { code = x.CodeId, label = x.Name }).ToList(); ViewBag.City = _projectService.Getshi(expertDTO.Province);//.Select(x => new { code = x.CodeId, label = x.Name }).ToList(); ViewBag.YearJiou = _liaotianService.GetSYScode("experts", "year_jiou");//.Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewData.Model = expertDTO; return View(); } /// /// 图片上传 /// /// public string UploadImage() { var files = Request.Form.Files; if (files.Count == 0) { return "File does not exist!"; } var file = files[0]; string fileName = file.FileName; if (string.IsNullOrEmpty(fileName))//服务器是否存在该文件 { return "File does not exist!"; } // 获取上传的图片名称和扩展名称 string fileFullName = Path.GetFileName(file.FileName); string fileExtName = Path.GetExtension(fileFullName); string imgPath = string.Format("{0}\\wwwroot\\{1}\\", Directory.GetCurrentDirectory(), "UploadFile"); var newPath = fileFullName.Substring(0, fileFullName.IndexOf(fileExtName)) + System.DateTime.UtcNow.Ticks + fileExtName; var src = imgPath + newPath; // 如果目录不存在则要先创建 if (!Directory.Exists(imgPath)) { Directory.CreateDirectory(imgPath); } using (FileStream fs = System.IO.File.Create(src)) { file.CopyTo(fs); fs.Flush(); } // imgPath = string.Format("~/UploadFile/{0}", fileFullName); return newPath; } public string Get(string id = null) { ExpertDTO expertDTO = new ExpertDTO(); if (!String.IsNullOrEmpty(id)) { expertDTO = _expertService.Get(id); } return JsonConvert.SerializeObject(expertDTO); } /// /// 保存 /// /// 岗位实体类对象 /// [HttpPost] [CheckLogin] public string Save(ExpertDTO data) { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; data.ShenheStatus = "A"; data.ReviewItem = data.ReviewItemSelect; data.RecStatus = "A"; if (String.IsNullOrEmpty(data.Id)) { data.Creater = curentuser.Id; data.Createtime = DateTime.Now; } data.Modifier = curentuser.Id; data.Modifytime = DateTime.Now; ResultEntity resultEntity = _expertService.save(data); return JsonConvert.SerializeObject(resultEntity); } #endregion /// /// 删除主信息 /// /// 实体 /// /// [CheckLogin] public string Nullify(string Id = "") { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; return JsonConvert.SerializeObject(_expertService.ModifyStatus(Id, curentuser.Id)); } #region 推广记录 /// /// 取得推广记录列表 /// /// /// [CheckLogin] public string GetPromoteList(ExpertPromoteDTOSearch search) { return JsonConvert.SerializeObject(_expertService.SearchExpPromote(search)); } /// /// 查看推广记录 /// /// /// [CheckLogin] public IActionResult Promote(string experId) { // ViewData["curentuser"] = curentuser; List actionlist = new List(); ActionEntity actionEntity = new ActionEntity(); actionEntity.OpenType = 0; actionEntity.ActionUrl = ""; actionEntity.ActionFun = "Search"; actionEntity.PageIco = "fa fa-search"; actionEntity.ActionName = "查询"; actionlist.Add(actionEntity); ViewData["ActionInfo"] = actionlist; ViewData["experId"] = experId; ViewBag.users = _userService.GetList().Select(x => new { code = x.Id, label = x.UserSn }).ToList(); return View(); } /// /// 新增推广记录 /// /// /// [CheckLogin] public IActionResult EditPromote(string experId) { ViewData["experId"] = experId; return View(); } /// /// 保存 /// /// 保存推广记录 /// [HttpPost] [CheckLogin] public string SavePromte(ExpertPromoteDTO data) { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; data.RecStatus = "A"; if (String.IsNullOrEmpty(data.Id)) { data.Creater = curentuser.Id; data.Createtime = DateTime.Now; } data.Modifier = curentuser.Id; data.Modifytime = DateTime.Now; ResultEntity resultEntity = _expertService.SaveExpPromote(data); return JsonConvert.SerializeObject(resultEntity); } #endregion #region 专家派工 [CheckLogin] public IActionResult ExpertOrderDispatch() { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; List actionlist = new List(); ActionEntity actionEntity = new ActionEntity(); actionEntity.OpenType = 0; actionEntity.ActionUrl = ""; actionEntity.ActionFun = "Search"; actionEntity.PageIco = "fa fa-search"; actionEntity.ActionName = "查询"; actionlist.Add(actionEntity); ViewData["ActionInfo"] = actionlist; ViewBag.OrderType = _liaotianService.GetSYScode("CooperVisit", "jtype").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.users = _userService.GetList().Where(x => x.IsYwjl == "A").Select(x => new { code = x.Id, label = x.UserName }).ToList(); ViewBag.Khlx = _liaotianService.GetSYScode("CooperatecustomCustomer", "khlx").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.HuifangStatus = _liaotianService.GetSYScode("CooperOrder", "huifang_status").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.PingjiaStatus = _liaotianService.GetSYScode("CooperOrder", "pingjia_status").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.Expert = _expertService.GetList().Select(x => new { code = x.Id, label = x.Name }).ToList(); return View(); } [CheckLogin] public string GetOrderList(ExpertOrderDipatchDTOSearch search) { return JsonConvert.SerializeObject(_expertService.SearchOrderDispatch(search)); } [CheckLogin] public IActionResult Dispatch(string orderid) { List list = _expertService.GetList(); ViewData["experts"] = list; ViewBag.OrderId = orderid; return View(); } [CheckLogin] public string SaveDispatch(ExpertOrderDipatchDTO data) { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; data.RecStatus = "A"; if (String.IsNullOrEmpty(data.Id)) { data.Creater = curentuser.Id; data.Createtime = DateTime.Now; data.sort = "D"; } data.Modifier = curentuser.Id; data.Modifytime = DateTime.Now; ResultEntity resultEntity = _expertService.SaveDispatch(data); return JsonConvert.SerializeObject(resultEntity); } #endregion #region 专家费用结算 [CheckLogin] public IActionResult ExpertFeiyong() { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; List actionlist = new List(); ActionEntity actionEntity = new ActionEntity(); actionEntity.OpenType = 0; actionEntity.ActionUrl = ""; actionEntity.ActionFun = "Search"; actionEntity.PageIco = "fa fa-search"; actionEntity.ActionName = "查询"; actionlist.Add(actionEntity); ActionEntity actionEntity1 = new ActionEntity(); actionEntity1.OpenType = 0; actionEntity1.ActionUrl = ""; actionEntity1.ActionFun = "Jiesuan"; actionEntity1.PageIco = "fa fa-plus-square"; actionEntity1.ActionName = "结算"; actionlist.Add(actionEntity1); ViewData["ActionInfo"] = actionlist; ViewBag.Expert = _expertService.GetList().Select(x => new { code = x.Id, label = x.Name }).ToList(); ViewBag.shifou = _liaotianService.GetSYScode("system", "shifou").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); return View(); } [CheckLogin] public string GetJiesuanList(ExpertOrderDipatchDTOSearch search) { return JsonConvert.SerializeObject(_expertService.SearchJiesuan(search)); } public IActionResult EditJiesuan(string id) { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; decimal Money = 0; FiOrderrecievemoneyDTO dto = new FiOrderrecievemoneyDTO(); if (!String.IsNullOrEmpty(id)) { string[] ids = id.Split(','); foreach(var iddd in ids) { var expertOrderDipatchDTO = _expertService.GetDispatch(iddd); if(expertOrderDipatchDTO.sort != "A") { Money += expertOrderDipatchDTO.Money.Value; } } } dto.PayTime = DateTime.Now; dto.Id = id; dto.Money = Money; ViewData.Model = dto; ViewBag.PayType = _liaotianService.GetSYScode("fi_account", "accounttype"); ViewBag.accounttype = _liaotianService.GetSYScode("fi_account", "accounttype"); ViewBag.FiSubject = _ifiSubjectService.GetList().Where(x => x.Subjecttype == "02").ToList(); ViewData.Model = dto; return View(); } /// /// 保存 /// /// 岗位实体类对象 /// /// [HttpPost] public IActionResult SaveJiesuan(FiOrderrecievemoneyDTO data) { ResultEntity resultEntity = new ResultEntity(); var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; using (TransactionScope scope = new TransactionScope()) { string[] ids = data.Id.Split(','); foreach (var iddd in ids) { var expertOrderDipatchDTO = _expertService.GetDispatch(iddd); if(expertOrderDipatchDTO.sort == "A") { resultEntity.Result = false; resultEntity.Message = "存在已经结算的订单"; return new JsonResult(resultEntity); } expertOrderDipatchDTO.sort = "A"; expertOrderDipatchDTO.Modifier = curentuser.Id; expertOrderDipatchDTO.Modifytime = DateTime.Now; resultEntity = _expertService.SaveDispatch(expertOrderDipatchDTO); if (!resultEntity.Result) { return new JsonResult(resultEntity); } var expertDTO = _expertService.Get(expertOrderDipatchDTO.ExpertId); var orderDTO = _cooperOrderService.Get(expertOrderDipatchDTO.OrderId); //插入支出记录 FiAccountRecordDTO data1 = new FiAccountRecordDTO(); data1.RecStatus = "A"; data1.Creater = curentuser.Id; data1.Createtime = data.PayTime; data1.Modifier = curentuser.Id; data1.Modifytime = data.PayTime; data1.SubjectId = data.SubjectId; data1.AccountId = data.AccountId; data1.Money = expertOrderDipatchDTO.Money; data1.PaymentUnit = expertDTO.Name; data1.OperationalMatters = expertDTO.Name +" " +orderDTO.OrderNo+ "结算费用" ; FiAccountDTO firmAccount = _fiAccountService.Get(data1.AccountId); data1.RecordTypeId = "2";//收入 data1.Department = ""; firmAccount.AllExpenses = (firmAccount.AllExpenses ?? 0) + data1.Money; firmAccount.Balance = (firmAccount.Balance ?? 0) - data1.Money; data1.AccountMoney = firmAccount.Balance; resultEntity = _iFiAccountRecordService.save(data1); if (!resultEntity.Result) { return new JsonResult(resultEntity); } resultEntity = _fiAccountService.save(firmAccount); if (!resultEntity.Result) { return new JsonResult(resultEntity); } } scope.Complete(); } return new JsonResult(resultEntity); } #endregion public IActionResult Duanxin(string id = null) { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; ViewData["baifangid"] = id; return View(); } public IActionResult Fasong(string neirong, string baifangid) { ResultEntity resultEntity = new ResultEntity(); resultEntity.Result = true; var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; List result = new List(); if (baifangid != null) { result = _expertService.GetList(baifangid.Split(",")); } else { resultEntity.Result = false; resultEntity.Message = "无联系人号码"; } string customename = ""; StringBuilder number = new StringBuilder(); ; if (result != null && result.Count > 0) { for (int i = 0; i < result.Count; i++) { number.Append(string.IsNullOrEmpty(result[i].Phone1) ? result[i].Phone2 : result[i].Phone1); customename += result[i].Name + ","; if (i != result.Count - 1) { number.Append(","); } } } else { resultEntity.Result = false; resultEntity.Message = "无联系电话"; } string sss = SMSHelper.PushWToUserMES(number.ToString(), "您好,专家. 详情见:" + neirong); if (int.Parse(sss) <= 0) { resultEntity.Result = false; resultEntity.Message = "短信发送失败"; } _logger.LogInformation(curentuser.UserName + "发送短信给专家" + customename); return new JsonResult(resultEntity); } /// /// 判断身份证是否重复 /// /// 省id /// /// [CheckLogin] public string IdCardChongfu(string IdCard = "",string Id = "") { ResultEntity resultEntity = _expertService.IdCardChongfu(IdCard, Id); return JsonConvert.SerializeObject(resultEntity); } /// /// 判断专家证是否重复 /// /// 省id /// /// [CheckLogin] public string CertiNumberChongfu(string CertiNumber = "", string Id = "") { ResultEntity resultEntity = _expertService.CertiNumberChongfu(CertiNumber, Id); if (resultEntity.Result) { //拆解专家证号 var CertiNumber11 = CertiNumber.Replace("SC", ""); var sysCodeDtls = _liaotianService.GetSYScode("experts", "City"); var chengshis = sysCodeDtls.Where(x => CertiNumber11.StartsWith(x.CodeSn)).ToList(); if (chengshis.Count > 0) { var areaDTOs = _iAreaService.GetList(); var chengshi = areaDTOs.Where(x => x.Name == chengshis[0].Comments).FirstOrDefault(); if (chengshi != null) { resultEntity.Message = chengshi.CodeId; resultEntity.Remark = chengshi.ParentId; } } } return JsonConvert.SerializeObject(resultEntity); } /// /// 判断电话是否重复 /// /// 省id /// /// [CheckLogin] public string Phone1Chongfu(string Phone1 = "", string Id = "") { ResultEntity resultEntity = _expertService.Phone1Chongfu(Phone1, Id); return JsonConvert.SerializeObject(resultEntity); } } }