using CRM.Core.DTO; using CRM.Core.DTO.Ord; using Newtonsoft.Json; using Ninject; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.Mvc; using WX.CRM.BLL; using WX.CRM.BLL.Base; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.Common.BlowFish; using WX.CRM.Common.Layui; using WX.CRM.IBLL.Util; using WX.CRM.IBLL.Wx; using WX.CRM.Model.DTO; using WX.CRM.Model.Entity; using WX.CRM.Model.Enum; using WX.CRM.Model.MAP; using WX.CRM.Model.QueryMap; using WX.CRM.WebHelper; namespace WX.CRM.WEB.Controllers.WeiXin { public class SzzyOrderRefundController : BaseController { private readonly IWX_SZZYORDER _order; private readonly IWX_ORDEREXT _orderExt; private readonly IWX_SZZYORDER_REFUND _wxSzzyorderRefund; private readonly IWX_SZZYORDERREFUND _orderRefund; private ICACHE_Q _cacheQ; private readonly IWX_SZZYORDERREFUNDCONTRACT _orderRefundContract; private readonly IBAS_BUSINESSLINE_Q _businessLine_q; [Inject] public ISecurityHelper sHelper { get; set; } public SzzyOrderRefundController(IWX_SZZYORDER order, IWX_ORDEREXT orderExt, IWX_SZZYORDER_REFUND wxSzzyorderRefund, IWX_SZZYORDERREFUND orderRefund, ICACHE_Q cacheQ, IWX_SZZYORDERREFUNDCONTRACT orderRefundContract, IBAS_BUSINESSLINE_Q businessLine_q) { _order = order; _orderExt = orderExt; _wxSzzyorderRefund = wxSzzyorderRefund; _orderRefund = orderRefund; _cacheQ = cacheQ; _orderRefundContract = orderRefundContract; _businessLine_q = businessLine_q; } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public ActionResult Index() { //var deptCode = _cacheQ.GetValue_Parameter(WX.CRM.Model.Enum.Parameter.Sys_Environment_DeptCode); //tool.AddOtherButton("Other1", "上传退款信息", "icon-export", "upload_Click", true); Pager pager = new Pager() { page = 1, rows = int.MaxValue }; string tableId = "tablist"; Table tab = new Table(tableId); tab.AddHeadCol("month", "", "退款月份"); tab.AddHeadCol("unOpenRefund", "", "未开通退款"); tab.AddHeadCol("openRefund", "", "已开通退款"); tab.AddHeadCol("allRefund", "", "退款总金额"); tab.AddHeadCol("notCurMonthRefund", "", "业务退款(去除当月退款)"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "5,10,15,20"); return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public JsonResult Index(Pager pager, string szzyOrderId, DateTime? stime, DateTime? etime, string columns) { //var deptCode = _cacheQ.GetValue_Parameter(WX.CRM.Model.Enum.Parameter.Sys_Environment_DeptCode); var list = _wxSzzyorderRefund.GetOrderRefund(); Table table = new Table(columns, true); table.gridPager = pager; foreach (var model in list) { var month = string.Format("{2}", "退款信息", "/weixin/SzzyOrderRefund/Detail?month=" + model.Month.ToShortDateString(), model.Month.ToShortDateString()); table.AddCol(month); table.AddCol(model.UnOpenRefund); table.AddCol(model.OpenRefund); table.AddCol(model.AllRefund); table.AddCol(model.NotCurMonthRefund); table.AddRow(); } var json = new { totalPages = pager.totalPages, totalRows = pager.totalRows, rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public ActionResult Detail(DateTime month) { string tableId = "tablist"; Table tab = new Table(tableId); ToolBar tool = new ToolBar(); string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.订单退款, userRightId); tool.AddOtherButton("Other1", "上传退款信息", "icon-lookup", "", true); tool.AllowButton(toolbtn); ViewBag.ToolBar = tool; //tab.AddHiddenHeadCol("PKID", ""); tab.AddHeadCol("SZZYORDERID", "", "订单ID"); tab.AddHeadCol("deptname", "", "事业部"); tab.AddHeadCol("SubProductName", "", "产品名称"); tab.AddHeadCol("CName", "", "客户姓名"); tab.AddHeadCol("ISACTURALREFUND", "", "退款类型"); tab.AddHeadCol("REFUND", "", "退款金额"); tab.AddHeadCol("RefundDate", "", "退款时间"); tab.AddHeadCol("SaleUserId", "", "分成人"); tab.AddHeadCol("GName", "", "组别"); tab.AddHeadCol("CommissionRatio", "", "订单分成比例"); //tab.AddHeadCol("UserCommissionRatio", "", "提成比例"); tab.AddHeadCol("UserRefund", "", "提成退款金额"); tab.AddHeadCol("ArrivalTime", "", "到账时间"); tab.AddHeadCol("Month", "", "结算月份"); tab.AddHeadCol("IsOpen", "", "是否开通退款"); tab.AddHeadCol("isjl", "", "类型"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetHead(); ViewBag.Month = month.ToShortDateString(); ViewBag.inneruserid = UserId; ViewBag.userGroupId = userGroupId; ViewBag.saleDeptId = saleDeptId; ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId); return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public JsonResult Detail(DateTime month, QueryUserComboDto usercomboDto, decimal? orderid, int? lxType, int? curMonth, int? isOpen, string columns, string resId) { decimal? eid = null; if (usercomboDto.userId.HasValue) eid = InnerUserHelper.Instance.GetEidByUserId(usercomboDto.userId.GetValueOrDefault()); decimal? groupId = null; if (!string.IsNullOrEmpty(usercomboDto.groupIds) && usercomboDto.groupIds.IndexOf(',') == -1) { groupId = Convert.ToInt32(usercomboDto.groupIds); } var list = _wxSzzyorderRefund.GetOrderRefundDetail(groupId, month, eid); if (orderid.HasValue) list = list.Where(p => p.SzzyOrderId == orderid.GetValueOrDefault()).ToList(); if (lxType.HasValue) list = list.Where(p => p.IsJL == lxType).ToList(); if (curMonth.HasValue) { if (curMonth == 1) { list = list.Where(p => p.UserRefund.HasValue).ToList(); } } if (isOpen.HasValue) { list = list.Where(p => p.IsOpen == isOpen).ToList(); } if (!string.IsNullOrWhiteSpace(resId)) { var orderList = _order.GetOrderListByResId(resId); list = list.Where(p => orderList.Select(n => n.ORDERID).Contains(p.SzzyOrderId)).ToList(); } Table table = new Table(columns, true); foreach (var model in list) { //table.AddHiddenCol(model.PKID); //table.AddCol(string.Format("{1}", model.SzzyOrderId, model.SzzyOrderId)); table.AddCol(model.SzzyOrderId); table.AddCol(model.deptname); table.AddCol(model.SubProductName); table.AddCol(model.CName); if (model.ISACTURALREFUND.HasValue && model.ISACTURALREFUND == 0) { table.AddCol("退回余额"); } else { table.AddCol("需实际退款"); } table.AddCol(model.Refund); //table.AddCol(model.RefundTime.ToShortDateString()); table.AddCol(model.RefundDate.ToShortDateString()); table.AddCol(string.Format("{0}-{1}", model.Eid, model.UName)); table.AddCol(model.GName); if (model.IsJL == 0) table.AddCol(model.CommissionRatio + "%"); else table.AddCol(""); //table.AddCol(model.UserCommissionRatio + "%"); table.AddCol(model.UserRefund); table.AddCol(model.ArrivalTime.ToShortDateString()); table.AddCol(model.Month.ToShortDateString()); if (model.IsOpen == 0) table.AddCol("否"); else if (model.IsOpen == 1) table.AddCol("是"); else table.AddCol("未知"); if (model.IsJL == 0) table.AddCol("个人"); else if (model.IsJL == 1) table.AddCol("color:#f90", "", "经理"); else if (model.IsJL == 2) table.AddCol("color:#390", "", "订金"); else table.AddCol("未知"); table.AddRow(); } var json = new { rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public ActionResult Add() { return View(new WX_SZZYORDER_REFUND()); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public JsonResult Add(WX_SZZYORDER_REFUND model) { try { //if (eid <= 0 || month <= 0 || year <= 0) //{ // return JsonHandler.ManageMessage("参数错误,请确认!", false); //} if (!ModelState.IsValid) { return JsonHandler.ValidateFailMessage(); } model.PKID = new SEQUENCES_BL().Seq_base_get(); model.CTIME = DateTime.Now; _wxSzzyorderRefund.Add(model); return Json(new { result = "ok", message = "操作成功!" }, JsonRequestBehavior.AllowGet); } catch (Exception ex) { LogHelper.Error("SzzyOrderRefundController/Add:" + ex.Message); return JsonHandler.ManageMessage(ex.Message, false); } } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public ActionResult Edit(int pkid) { var model = _wxSzzyorderRefund.Get(p => p.PKID == pkid); return View(model); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public JsonResult Edit(WX_SZZYORDER_REFUND model) { try { //if (eid <= 0 || month <= 0 || year <= 0) //{ // return JsonHandler.ManageMessage("参数错误,请确认!", false); //} if (!ModelState.IsValid) { return JsonHandler.ValidateFailMessage(); } _wxSzzyorderRefund.Update(model); return Json(new { result = "ok", message = "操作成功!" }, JsonRequestBehavior.AllowGet); } catch (Exception ex) { LogHelper.Error("SzzyOrderRefundController/Edit:" + ex.Message); return JsonHandler.ManageMessage(ex.Message, false); } } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public ActionResult Upload() { return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public JsonResult Upload(HttpPostedFileBase fileData) { if (fileData != null) { try { //文件上传后的保存路径 string filePath = Server.MapPath("~/UploadFile/Refund/"); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string fileName = Path.GetFileName(fileData.FileName);//原始文件名称 string fileExtension = Path.GetExtension(fileName); //文件扩展名 string saveName = Guid.NewGuid() + fileExtension; //保存文件名称 fileData.SaveAs(filePath + saveName); HandleUpload(saveName); return Json(new { Success = true, Message = "上传成功" }); } catch (Exception ex) { return Json(new { Success = false, Message = ex.Message }, JsonRequestBehavior.AllowGet); } } return Json(new { Success = false, Message = "请选择要上传的文件!" }, JsonRequestBehavior.AllowGet); } public void HandleUpload(string file) { DataTable dt = null; try { NPOIHelper.InitializeWorkbook_xls(AppDomain.CurrentDomain.BaseDirectory + "UploadFile\\Refund\\" + file); dt = NPOIHelper.ConvertToDataTable(); } catch (Exception ex) { LogHelper.Error(ex); } if (dt.Rows.Count > 0 || dt.Columns.Count == 3) { int start = 0; int end = dt.Rows.Count; while (start < end) { DataRow model = dt.Rows[start++]; decimal orderId = Convert.ToDecimal(model[0]); decimal refundAmount = Convert.ToDecimal(model[1]); DateTime refundTime = DateTime.MinValue; if (model[2] != null && !string.IsNullOrWhiteSpace(model[2].ToString())) { refundTime = DateTime.Parse(DateTime.Parse(model[2].ToString()).ToString("yyyy-MM-dd")); //if (!DateTime.TryParse(model[2].ToString(), out refundTime)) //{ // DateTime.TryParseExact(model[2].ToString(), "dd/MM/yy", new CultureInfo("en-US"), DateTimeStyles.None, out refundTime); //} } var refund = _wxSzzyorderRefund.Get(p => p.SZZYORDERID == orderId && p.REFUNDTIME == refundTime); if (refund != null) { refund.SZZYORDERID = orderId; refund.REFUND = refundAmount; refund.REFUNDTIME = refundTime; _wxSzzyorderRefund.Update(refund); } else { var info = new WX_SZZYORDER_REFUND() { PKID = new SEQUENCES_BL().Seq_base_get(), SZZYORDERID = orderId, REFUND = refundAmount, REFUNDTIME = refundTime, CTIME = DateTime.Now }; _wxSzzyorderRefund.Add(info); } } } } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款个人明细)] public ActionResult Info(decimal? orderId, decimal? inneruserid, decimal? gid, DateTime? yearmonth, decimal? eid) { string tableId = "tablist"; Table tab = new Table(tableId); tab.AddHeadCol("SzzyOrderId", "", "订单ID"); tab.AddHeadCol("Refund", "", "订单退款金额"); tab.AddHeadCol("SaleUserId", "", "分成人"); tab.AddHeadCol("CommissionRatio", "", "订单分成比例"); tab.AddHeadCol("UserCommissionRatio", "", "提成比例"); tab.AddHeadCol("UserRefund", "", "提成退款金额"); tab.AddHeadCol("ArrivalTime", "", "下单月份"); tab.AddHeadCol("Month", "", "结算月份"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetHead(); ViewBag.orderId = orderId.HasValue ? orderId.Value.ToString() : string.Empty; ViewBag.inneruserid = inneruserid.HasValue ? inneruserid.Value.ToString() : string.Empty; ViewBag.gid = gid.HasValue ? gid.Value.ToString() : string.Empty; ViewBag.yearmonth = yearmonth.HasValue ? yearmonth.Value.ToString() : string.Empty; ViewBag.eid = eid.HasValue ? eid.Value.ToString() : string.Empty; return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款个人明细)] public JsonResult Info(decimal? orderId, decimal? inneruserid, decimal? gid, DateTime? yearmonth, decimal? eid, string columns) { //LogHelper.Info("yearmonth:" + yearmonth.ToString()); var list = new List(); if (gid.HasValue) list = _wxSzzyorderRefund.GetGrouperRefund(gid, yearmonth, eid.Value); else list = _wxSzzyorderRefund.GetUserRefund(orderId, inneruserid, gid, yearmonth); Table table = new Table(columns, true); foreach (var model in list) { table.AddCol(model.SzzyOrderId); table.AddCol(model.Refund); table.AddCol(InnerUserHelper.Instance.EidAndName(model.SaleUserId)); table.AddCol(model.CommissionRatio + "%"); table.AddCol(model.UserCommissionRatio + "%"); table.AddCol(model.UserRefund); table.AddCol(model.ArrivalTime.ToShortDateString()); table.AddCol(model.Month.ToShortDateString()); table.AddRow(); } var json = new { rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public ActionResult RefundApplyList2() { return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public JsonResult RefundApplyList2(OrderRefundSelectDto info, Laypage pager) { string url = _cacheQ.GetValue_Parameter(Parameter.OrderRefundGetUrl);//中心点创建订单 info.pager = pager; string json = info.ToJson(); string retmsg = Utility.PostAjaxData(url, json, Encoding.UTF8);//实现中心点先入库 var result = Newtonsoft.Json.JsonConvert.DeserializeObject>>(retmsg); List list = new List(); var data = new LayuiData() { msg = "数据加载成功!", count = pager.count, code = 0, data = list, totalRow = null }; if (result.result) { list = result.retmsg; data.data = list; var sum = list.Sum(m => m.refundprice); data.totalRow = new { refundprice = sum }; data.count = result.pagecount; } else { data.code = 1; data.msg = "数据加载失败"; } //var companyList = _cacheQ.GetCompanyVirtual(); //foreach (var item in list) //{ // foreach (var company in companyList) // { // var channels = company.Channel.Split('|'); // foreach (var subchannel in channels) // { // var subch = subchannel.Split(','); // var min = int.Parse(subch[0].ToString()); // var max = int.Parse(subch[1].ToString()); // if (item.channel != null && (item.channel.Value >= min && item.channel.Value <= max)) // { // item.CompanyName = company.CompanyName; // } // } // } //} //var sumList = _orderRefund.GetList(where, p => p.id, new Laypage() { page = 1, limit = int.MaxValue }); return Json(data, JsonRequestBehavior.AllowGet); } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public ActionResult RefundApplyList() { Table tab = new Table("tablist"); tab.AddHeadCol("orderid", "", "订单号"); tab.AddHeadCol("APPLYTYPE", "", "申请类型"); tab.AddHeadCol("REFUNDTYPE", "", "支付类型"); tab.AddHeadCol("account", "", "退款人账号"); tab.AddHeadCol("username", "", "退款人姓名"); tab.AddHeadCol("refundprice", "", "退款金额"); tab.AddHeadCol("ISACTURALREFUND", "", "退款类型"); tab.AddHeadCol("refunddate", "", "退款时间"); tab.AddHeadCol("auditorname", "", "确认人"); tab.AddHeadCol("audittime", "", "确认时间"); tab.AddHeadCol("auditstatus", "", "作废时间"); if (!userRoleCodes.Contains("JGJS")) { tab.AddHeadCol("audittime", "", "退款原因"); tab.AddHeadCol("remark", "", "退款说明"); } tab.AddHeadCol("auditstatus", "", "退款状态"); tab.AddHeadCol("auditstatus", "", "签约时间"); tab.AddHeadCol("auditstatus", "", "操作"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetHead(); var myBusinessLine = _businessLine_q.GetBusineeLine(UserId); var deptList = _cacheQ.GetList_BusinessLines().ToList(); var selectList = new List(); foreach (var item in deptList) { if (myBusinessLine != null && myBusinessLine.BUSINESSID == item.BUSINESSID) { selectList.Add(new SelectListItem() { Text = item.BUSINESSNAME, Value = item.BUSINESSID.ToString(), Selected = true }); } else { selectList.Add(new SelectListItem() { Text = item.BUSINESSNAME, Value = item.BUSINESSID.ToString() }); } } ViewBag.DeptList = selectList; return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public JsonResult RefundApplyList(decimal? orderId, DateTime? stime, DateTime? etime, DateTime? aTime, DateTime? zTime, decimal? type, decimal? refundtype, decimal? isacturalrefund, decimal? applytype, string columns, decimal? businessId) { var where = PredicateExtensionses.True(); if (orderId.HasValue) where = where.And(p => p.ORDERID == orderId); if (stime.HasValue) where = where.And(p => p.REFUNDDATE >= stime.Value); if (etime.HasValue) { etime = etime.Value.AddDays(1); where = where.And(p => p.REFUNDDATE < etime.Value); } if (type.HasValue) { where = where.And(p => p.AUDITSTATUS == type.Value); } if (refundtype.HasValue) { where = where.And(p => p.REFUNDTYPE == refundtype.Value); } if (isacturalrefund.HasValue) { where = where.And(p => p.ISACTURALREFUND == isacturalrefund.Value); } if (applytype.HasValue) { if (applytype.Value == 0) where = where.And(m => m.APPLYTYPE == applytype.Value || m.APPLYTYPE == null); else where = where.And(m => m.APPLYTYPE == applytype.Value); } if (businessId.HasValue) { //var deptCode = _businessLine_q.GetDeptCodeMapByBusinessId(businessId); //if (deptCode.Contains("-1")) //{ // where = where.And(m => deptCode.Contains(m.DEPTCODE) || m.DEPTCODE == null || m.DEPTCODE == ""); //} //else //{ // where = where.And(m => deptCode.Contains(m.DEPTCODE)); //} where = where.And(p => p.DEPTID == businessId.Value); } where = where.And(p => p.ISDELETE == 0); var list = _orderRefund.GetList(where, p => p.REFUNDDATE); Table table = new Table(columns, true); foreach (var model in list) { table.AddCol(model.ORDERID); table.AddCol(GetApplyTypeName(model.APPLYTYPE)); table.AddCol(GetPayTypeName(model.REFUNDTYPE)); table.AddCol(model.ACCOUNT); table.AddCol(model.USERNAME); table.AddCol(model.REFUNDPRICE); if (model.ISACTURALREFUND.HasValue && model.ISACTURALREFUND == 0) { table.AddCol("退回余额"); } else { table.AddCol("需实际退款"); } table.AddCol(model.REFUNDDATE); table.AddCol(model.AUDITORNAME); table.AddCol(model.AUDITTIME); table.AddCol(model.CUSTOMER_CANCEL_TIME); if (!userRoleCodes.Contains("JGJS")) { table.AddCol(model.REFUNDREASONTYPE); table.AddCol(model.REMARK); } table.AddCol(GetStatusName(model.AUDITSTATUS)); if (model.ORDERID.ToString().StartsWith("8")) { table.AddCol(string.Format("{1}", model.ORDERID.ToString(), "退款协议地址", model.ID)); } else { table.AddCol(string.Empty); } table.AddRow(); } table.AddCol("合计:"); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddCol(list.Sum(p => p.REFUNDPRICE)); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddCol(""); table.AddRow(); var json = new { rowsList = table.GetRows(), }; return Json(json, JsonRequestBehavior.AllowGet); } private string GetStatusName(decimal status) { string name = ""; switch (status) { case 0: name = "未审核"; break; case 1: name = "已审核"; break; case 2: name = "已取消"; break; } return name; } [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public FileResult RefundApplyExport(decimal? orderId, DateTime? stime, DateTime? etime, DateTime? aTime, DateTime? zTime, decimal? type, decimal? refundtype, decimal? isacturalrefund, decimal? businessId) { var where = PredicateExtensionses.True(); if (orderId.HasValue) where = where.And(p => p.ORDERID == orderId); if (stime.HasValue) where = where.And(p => p.REFUNDDATE >= stime.Value); if (etime.HasValue) { etime = etime.Value.AddDays(1); where = where.And(p => p.REFUNDDATE < etime.Value); } if (type.HasValue) { where = where.And(p => p.AUDITSTATUS == type.Value); } if (refundtype.HasValue) { where = where.And(p => p.REFUNDTYPE == refundtype.Value); } if (isacturalrefund.HasValue) { where = where.And(p => p.ISACTURALREFUND == isacturalrefund.Value); } if (businessId.HasValue) { var deptCode = _businessLine_q.GetDeptCodeMapByBusinessId(businessId); if (deptCode.Contains("-1")) { where = where.And(m => deptCode.Contains(m.DEPTCODE) || m.DEPTCODE == null || m.DEPTCODE == ""); } else { where = where.And(m => deptCode.Contains(m.DEPTCODE)); } } where = where.And(p => p.ISDELETE == 0); var list = _orderRefund.GetList(where, p => p.REFUNDDATE); var data = new List(); foreach (var item in list) { var info = new WX_SZZYORDERREFUND_Export() { ORDERID = item.ORDERID, REFUNDTYPENAME = GetPayTypeName(item.REFUNDTYPE), ACCOUNT = item.ACCOUNT, USERNAME = item.USERNAME, REFUNDPRICE = item.REFUNDPRICE, REFUNDDATE = item.REFUNDDATE, AUDITORNAME = item.AUDITORNAME, AUDITTIME = item.AUDITTIME, REMARK = item.REMARK, AUDITSTATUS = item.AUDITSTATUS == 1 ? "已审核" : "未审核" }; data.Add(info); } return File(ExcelHelper.ExportListModelToExcel(data, "退款申请", 10000, null), "application/ms-excel", PageRequest.GetDlownLoadName("退款申请.xls")); } [HttpGet] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public ActionResult refundContract() { Table tab = new Table("tablist"); ToolBar tool = new ToolBar(); string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.订单退款, userRightId); tool.AllowButton(toolbtn); ViewBag.ToolBar = tool; tab.AddHeadCol("DEPTNAEM", "", "事业部"); tab.AddHeadCol("OrderId", "", "订单号"); tab.AddHeadCol("CName", "", "姓名"); tab.AddHeadCol("RefundPrice", "", "退款金额"); tab.AddHeadCol("RefundTime", "", "退款时间"); tab.AddHeadCol("Contract", "", "退款协议"); tab.AddHeadCol("ContractStatus", "", "协议状态"); tab.AddHeadCol("act", "", "操作"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetHead(); var myBusinessLine = _businessLine_q.GetBusineeLine(UserId); var deptList = _cacheQ.GetList_BusinessLines().ToList(); var selectList = new List(); foreach (var item in deptList) { if (myBusinessLine != null && myBusinessLine.BUSINESSID == item.BUSINESSID) { selectList.Add(new SelectListItem() { Text = item.BUSINESSNAME, Value = item.BUSINESSID.ToString(), Selected = true }); } else { selectList.Add(new SelectListItem() { Text = item.BUSINESSNAME, Value = item.BUSINESSID.ToString() }); } } ViewBag.DeptList = selectList; return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public JsonResult refundContract(string columns, decimal? businessId, decimal? orderId, DateTime? stime, DateTime? etime) { var list = _orderRefundContract.GetList(businessId, orderId, stime, etime); Table table = new Table(columns, true); foreach (var model in list) { table.AddCol(model.DEPTNAEM); table.AddCol(model.OrderId); table.AddCol(model.CName); table.AddCol(model.RefundPrice); table.AddCol(model.RefundTime); table.AddCol(model.Contract); table.AddCol(GetOrderStatusName(model.ContractStatus)); //if (model.IsOpen == 1 || (model.ArrivalTime.HasValue && model.ArrivalTime.Value.ToString("yyyyMM") == model.RefundTime.ToString("yyyyMM"))) if (model.IsOpen == 1 || (model.IsOpen == 0 && model.ORDERSTATUS == "90")) { table.AddCol(string.Format("{1}", model.OrderId.ToString(), "退款协议地址", model.Id)); } else { table.AddCol(string.Empty); } table.AddRow(); } var json = new { rowsList = table.GetRows() }; return Json(json, JsonRequestBehavior.AllowGet); } [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public FileResult refundContractExport(decimal? businessId, decimal? orderId, DateTime? stime, DateTime? etime) { var data = _orderRefundContract.GetList(businessId, orderId, stime, etime); List list = new List(); foreach (var item in data) { RefundContract_Export r = new RefundContract_Export(); r.OrderId = item.OrderId; r.CName = item.CName; r.RefundPrice = item.RefundPrice; r.RefundTime = item.RefundTime; r.Contract = item.Contract; r.ContractStatus = GetOrderStatusName(item.ContractStatus); r.DEPTNAEM = item.DEPTNAEM; list.Add(r); } return File(ExcelHelper.ExportListModelToExcel(list, "退款协议列表", 10000, null), "application/ms-excel", PageRequest.GetDlownLoadName("退款协议列表.xls")); } [HttpPost] public JsonResult IdCardAudit(IdCardAuditDto dto) { var webapi = _cacheQ.GetValue_Parameter(Parameter.Hg_Core_WebApi); //webapi = "https://localhost:7090"; var hgurl = $"{webapi}/api/OrderRefundApply/RefundIdCardAudit"; var result = Utility.PostAjaxData(hgurl, dto.ToJson(), Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); return Json(data, JsonRequestBehavior.AllowGet); } public ActionResult ViewContract(int orderId, decimal id) { var webapi = _cacheQ.GetValue_Parameter(Parameter.OrderRefundContractGetUrl); RefundContractSeelctDto dto = new RefundContractSeelctDto() { Eid = Convert.ToInt32(Eid), UserName = UserName, id = Convert.ToInt32(id), orderId = orderId, }; RefundContractInfoDto model = new RefundContractInfoDto(); var resultStr = Utility.PostAjaxData(webapi, dto.ToJson(), Encoding.UTF8); var result = Newtonsoft.Json.JsonConvert.DeserializeObject>(resultStr); if (result.result) { model = result.retmsg; } else { model.errInfo = result.errmessage; } ViewBag.Show = false; if (userRoleCodes.Contains("[CZECTK]")) { ViewBag.Show = true; } return View(model); } [HttpPost] public JsonResult ResetRefundInfo(int orderId) { try { if (orderId <= 0) { return JsonHandler.ManageMessage("参数有误,请确认!", false); } var url = _cacheQ.GetValue_Parameter(Parameter.Core_ZxdService_Api); url = $"{url.Trim('/')}/OrderService.svc/Refund/Reset"; var json = sHelper.createSignEncodingStr(new { OrderId = orderId }.ToJson(), SecurityHelper.OrderClientIdKey); string retmsg = Utility.PostData(url + "?" + json, Encoding.UTF8); retmsg = sHelper.decyptData(SecurityHelper.OrderClientIdKey, retmsg); var retmessage = WebHelper.JsonHelper.JsonDivertToObj(retmsg); LogHelper.Info($"工号{Eid}重置订单{orderId}二次退款协议"); if (retmessage.result) { return JsonHandler.ManageMessage("重置成功", true); } else return JsonHandler.ManageMessage($"重置失败{retmessage.retmsg}", false); } catch (Exception ex) { LogHelper.Error(ex.ToString()); return JsonHandler.ManageMessage("重置失败,请稍后重试或者联系管理员!", false); } } [HttpPost] public JsonResult AuditRefundContract(int orderId) { try { if (orderId <= 0) { return JsonHandler.ManageMessage("参数有误,请确认!", false); } //var refundOrderContract = _orderRefundContract.Get(p => p.ORDERID == orderId); //if (refundOrderContract == null) //{ // return JsonHandler.ManageMessage("没有退款签约记录,请确认!", false); //} //if (refundOrderContract.CONTRACTSTATUS.HasValue) //{ // if (refundOrderContract.CONTRACTSTATUS.Value >= 1) // { // return JsonHandler.ManageMessage("风控已经通过,不需要再操作了!", true); // } //} var url = _cacheQ.GetValue_Parameter(Parameter.Core_ZxdService_AuditRefundContract); var json = sHelper.createSignEncodingStr(new ContractAuditDto() { OrderId = orderId }.ToJson(), SecurityHelper.OrderClientIdKey); string retmsg = Utility.PostData(url + "?" + json, Encoding.UTF8); retmsg = sHelper.decyptData(SecurityHelper.OrderClientIdKey, retmsg); var retmessage = WebHelper.JsonHelper.JsonDivertToObj(retmsg); LogHelper.Info("合同审核返回信息:" + retmessage.ToJson()); if (retmessage.result) { //refundOrderContract.CONTRACTSTATUS = 2; //var ret = _orderRefundContract.Update(refundOrderContract); //if (ret) return JsonHandler.ManageMessage("提交成功", true); //else // return JsonHandler.ManageMessage("远程操作成功,本地操作失败,请重试!", false); } else return JsonHandler.ManageMessage(retmessage.retmsg, false); //return JsonHandler.ManageMessage("提交成功", true); } catch (Exception ex) { LogHelper.Error(ex.ToString()); return JsonHandler.ManageMessage("提交失败,请稍后重试或者联系管理员!", false); } } [AuthorizeRedirect(Roles = InitRights.CONST_订单退款)] public FileResult DetailExport(DateTime month, decimal? saleDeptId, QueryUserComboDto usercomboDto, decimal? orderid, int? lxType, int? curMonth, string resId) { string checkedFilds = PageRequest.GetQueryString("checkedFilds"); string checkedTitles = PageRequest.GetQueryString("checkedTitles"); Pager pager = new Pager() { page = 1, rows = int.MaxValue }; decimal? eid = null; if (usercomboDto.userId.HasValue) eid = InnerUserHelper.Instance.GetEidByUserId(usercomboDto.userId.GetValueOrDefault()); decimal? groupId = null; if (!string.IsNullOrEmpty(usercomboDto.groupIds) && usercomboDto.groupIds.IndexOf(',') == -1) { groupId = Convert.ToInt32(usercomboDto.groupIds); } var list = _wxSzzyorderRefund.GetOrderRefundDetail(groupId, month, eid); if (orderid.HasValue) list = list.Where(p => p.SzzyOrderId == orderid.GetValueOrDefault()).ToList(); if (lxType.HasValue) list = list.Where(p => p.IsJL == lxType).ToList(); if (curMonth.HasValue) { if (curMonth == 1) { list = list.Where(p => p.UserRefund.HasValue).ToList(); } } if (!string.IsNullOrWhiteSpace(resId)) { var orderList = _order.GetOrderListByResId(resId); list = list.Where(p => orderList.Select(n => n.ORDERID).Contains(p.SzzyOrderId)).ToList(); } return File(ExcelHelper.ExportListModelToExcel(list, "退款明细", 10000, checkedFilds, checkedTitles, DataFormart), "application/ms-excel", PageRequest.GetDlownLoadName("退款明细.xls")); } private string DataFormart(string key, object value) { string formartValue = string.Empty; switch (key) { case "SaleUserId": formartValue = value != null ? InnerUserHelper.Instance.EidAndName(Convert.ToDecimal(value)) : ""; break; case "CommissionRatio": formartValue = value.ToString() != "0" ? value + "%" : ""; break; case "IsOpen": formartValue = value.ToString() == "0" ? "否" : value.ToString() == "1" ? "是" : "未知"; break; case "IsJL": formartValue = value.ToString() == "0" ? "个人" : value.ToString() == "1" ? "经理" : value.ToString() == "2" ? "订金" : "未知"; break; case "ISACTURALREFUND": if (value != null && value.ToString() == "0") { formartValue = "退回余额"; } else { formartValue = "需实际退款"; } break; default: formartValue = string.Format("{0}", value); break; } return formartValue; } private string GetOrderStatusName(int? status) { var statusName = string.Empty; if (status.HasValue) { switch (status) { case 0: statusName = "未审核"; break; case 1: statusName = "分部审核,总部待审核"; break; case 2: statusName = "已通过"; break; } } return statusName; } private string GetApplyTypeName(decimal? APPLYTYPE) { var name = "未知"; switch (APPLYTYPE) { case 1: name = "合规申请"; break; default: name = "业务申请"; break; } return name; } private string GetPayTypeName(decimal typeId) { var name = "未知"; switch (int.Parse(typeId.ToString())) { case 1: name = "支付宝"; break; case 3: name = "银行转账"; break; case 5: name = "微信支付"; break; } return name; } private class WX_SZZYORDERREFUND_Export { [DisplayName("订单号")] public decimal ORDERID { get; set; } [DisplayName("支付类型")] public string REFUNDTYPENAME { get; set; } [DisplayName("退款人账号")] public string ACCOUNT { get; set; } [DisplayName("退款人姓名")] public string USERNAME { get; set; } [DisplayName("退款金额")] public decimal REFUNDPRICE { get; set; } [DisplayName("退款时间")] public DateTime? REFUNDDATE { get; set; } [DisplayName("审核人")] public string AUDITORNAME { get; set; } [DisplayName("审核时间")] public DateTime? AUDITTIME { get; set; } [DisplayName("退款说明")] public string REMARK { get; set; } [DisplayName("状态")] public string AUDITSTATUS { get; set; } } private class RefundContract_Export { [DisplayName("事业部")] public string DEPTNAEM { get; set; } [DisplayName("订单号")] public decimal OrderId { get; set; } [DisplayName("姓名")] public string CName { get; set; } [DisplayName("退款金额")] public decimal RefundPrice { get; set; } [DisplayName("退款时间")] public DateTime RefundTime { get; set; } [DisplayName("退款协议")] public string Contract { get; set; } [DisplayName("退款状态")] public string ContractStatus { get; set; } } public class ContractInfo { public int ret { get; set; } public bool hasFaceVerify { get; set; } public bool hasOrderIdCard { get; set; } public bool hasRefundIdCard { get; set; } public string msg { get; set; } public string faceVerify { get; set; } public orderIdCardInfo orderIdCard { get; set; } public orderIdCardInfo refundIdCard { get; set; } } public class orderIdCardInfo { public string state { get; set; } public string name { get; set; } public string idCardNo { get; set; } public int idCardType { get; set; } public string idCardTypeDescribe { get; set; } public string cardFrontFile { get; set; } public string cardReverseSideFile { get; set; } } public class OrderRefundContractDto { public string RefundIdCardRemark { get; set; } public int? RefundIdCardStatus { get; set; } } public class IdCardAuditDto { public int OrderId { get; set; } public int Status { get; set; } public string Remark { get; set; } } } }