ComplianceServer/oldcode/Core.Web/Controllers/OrderRefundApplyController.cs

684 lines
22 KiB
C#

using Core.Web.App_Start;
using Core.Web.WebHelper;
using CRM.Core.BLL;
using CRM.Core.BLL.Application.B;
using CRM.Core.BLL.Application.Bill;
using CRM.Core.BLL.Util;
using CRM.Core.BLL.Wx;
using CRM.Core.Common.Layui;
using CRM.Core.Common.WebHelper;
using CRM.Core.DTO;
using CRM.Core.DTO.Bill;
using CRM.Core.Model.Entity;
using CRM.Core.Model.Enum;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Helpers;
using System.Web.Mvc;
using WX.CRM.Common;
using WX.CRM.Common.Employee;
using WX.CRM.Common.WxPay;
using WX.CRM.WebHelper;
using static Core.Web.Controllers.OrderRefundApplyController;
using static NPOI.HSSF.Util.HSSFColor;
namespace Core.Web.Controllers
{
public class OrderRefundApplyController : BaseController
{
private CACHE_BL cache_BL = new CACHE_BL();
WX_SZZYORDER_BL _order = new WX_SZZYORDER_BL();
public readonly string webapi = "";
public OrderRefundApplyController()
{
webapi = cache_BL.GetValue_Parameter(Parameter.Hg_Core_WebApi);
}
[HttpGet]
[AuthorizeRedirect(RightsConfig.CONST_退款申请列表, ToolBarConfig.CONST_NotButton, true)]
public ActionResult Index()
{
ViewBag.rightCode = RightsConfig.CONST_退款申请列表;
ViewBag.eid = Eid;
ViewBag.userName = UserName;
ViewBag.File_Server = cache_BL.GetValue_Parameter("File_Server");
var deptments = cache_BL.GetDeptments();
ViewBag.companyList = deptments;
ViewBag.webapi = webapi;
ViewBag.hgServiceHost = cache_BL.GetValue_Parameter("HgCrm_ServiceHost");
return View();
}
[HttpGet]
[AuthorizeRedirect(RightsConfig.CONST_退款申请列表, ToolBarConfig.CONST_NotButton, false)]
public JsonResult OrderRefundApplyHtml(Laypage pager, SearchOrderRefundDto dto)
{
var url = $"{webapi}/api/OrderRefundApply/page";
var para = $"Deptid={dto.Deptid}&Orderid={dto.Orderid}&Channel={dto.Channel}" +
$"&RefundType={dto.RefundType}&Resid={dto.Resid}&UMID={dto.UMID}& CreaetOrUpdateUser={dto.CreaetOrUpdateUser}" +
$"&BusinessStatus={dto.BusinessStatus}&Cname={dto.Cname}&ComplaintId={dto.ComplaintId}" +
$"&DateType={dto.DateType}&ApplyStatus={dto.ApplyStatus}&Eid={dto.Eid}" +
$"&PayStatus={dto.PayStatus}&RefundStatus={dto.RefundStatus}" +
$"&DateFrom={dto.DateFrom}&DateTo={dto.DateTo}&PageIndex={pager.page}&PageSize={pager.limit}";
var result = Utility.GetData(url, para, Encoding.UTF8);
var data = JsonConvert.DeserializeObject<WX.CRM.Common.Employee.ApiResult<WX.CRM.Common.StockHelper.PageResult<OrderRefundDto>>>(result);
return Json(data, JsonRequestBehavior.AllowGet);
}
[HttpGet]
[AuthorizeRedirect(RightsConfig.CONST_退款申请列表, ToolBarConfig.CONST_NotButton, true)]
public ActionResult OrderRefundApplyEdit(int? id = null, bool read = false)
{
var model = new OrderRefundDto();
model.RefundDateStr = DateTime.Now.ToString("yyyy-MM-dd");
if (id != null)
{
var url = $"{webapi}/api/OrderRefundApply";
var para = $"id={id}";
var result = Utility.GetData(url, para, Encoding.UTF8);
var data = JsonConvert.DeserializeObject<WX.CRM.Common.Employee.ApiResult<OrderRefundDto>>(result);
model = data.data;
}
ViewBag.id = id;
ViewBag.rightCode = RightsConfig.CONST_退款申请列表;
ViewBag.eid = Eid;
ViewBag.userName = UserName;
ViewBag.File_Server = cache_BL.GetValue_Parameter("File_Server");
ViewBag.Readonly = read;
return View(model);
}
[HttpPost]
[AuthorizeRedirect(RightsConfig.CONST_退款申请列表, ToolBarConfig.CONST_NotButton, false)]
public JsonResult Create(CreateOrderRefundDto dto)
{
var order = _order.GetModel(dto.Orderid.Value);
if (order == null)
return Json(new ApiResult { code = -1, message = "请输入正确的订单号!" }, JsonRequestBehavior.AllowGet);
if (dto.RefundPrice <= 0)
return Json(new ApiResult { code = -1, message = "退款金额必须大于零!" }, JsonRequestBehavior.AllowGet);
if (order.ARRIVALPAY == null || order.ARRIVALPAY.Value <= 0)
return Json(new ApiResult { code = -1, message = "无可退金额!" }, JsonRequestBehavior.AllowGet);
var oldrefSum = new WX_SzzyOrderRefund_BL().GetList(m => m.orderid == dto.Orderid && m.auditstatus == 1 && m.isdelete == 0).Sum(m => m.refundprice);
if((order.ARRIVALPAY - oldrefSum) < dto.RefundPrice)
{
var canRefPay = ((order.ARRIVALPAY ?? 0) - oldrefSum);
return Json(new ApiResult { code = -1, message = " 当前可退款金额:" + canRefPay.ToString("#0.00") + " 元" }, JsonRequestBehavior.AllowGet);
}
var url = $"{webapi}/api/OrderRefundApply";
var result = Utility.PostAjaxData(url, dto.ToJson(), Encoding.UTF8);
var data = JsonConvert.DeserializeObject<WX.CRM.Common.Employee.ApiResult<bool>>(result);
return Json(data, JsonRequestBehavior.AllowGet);
}
[HttpGet]
[AuthorizeRedirect(RightsConfig.CONST_退款申请列表, ToolBarConfig.CONST_NotButton, false)]
public JsonResult GetOrderRefundCustomerInfo(string resid)
{
var url = $"{webapi}/api/OrderRefundApply/customerInfo";
var para = $"resid={resid}";
var result = Utility.GetData(url, para, Encoding.UTF8);
var data = JsonConvert.DeserializeObject<WX.CRM.Common.Employee.ApiResult<OrderRefundCustomerInfoDto>>(result);
return Json(data, JsonRequestBehavior.AllowGet);
}
[HttpPost]
[AuthorizeRedirect(RightsConfig.CONST_退款申请列表, ToolBarConfig.CONST_NotButton, false)]
public JsonResult CreateOrderRefundApplyRestore(CreateRefundRestoreDto dto)
{
var url = $"{webapi}/api/OrderRefundApply/Restore";
var result = Utility.PostAjaxData(url, dto.ToJson(), Encoding.UTF8);
var data = JsonConvert.DeserializeObject<WX.CRM.Common.Employee.ApiResult<bool>>(result);
return Json(data, JsonRequestBehavior.AllowGet);
}
[HttpGet]
[AuthorizeRedirect(RightsConfig.CONST_退款申请列表, ToolBarConfig.CONST_NotButton, false)]
public JsonResult GetOrderRefundApplyRestore(int? id)
{
var url = $"{webapi}/api/OrderRefundApply/Restore";
var para = $"id={id}";
var result = Utility.GetData(url, para, Encoding.UTF8);
var data = JsonConvert.DeserializeObject<WX.CRM.Common.Employee.ApiResult<OrderRefundRestoreDto>>(result);
return Json(data, JsonRequestBehavior.AllowGet);
}
[HttpGet]
[AuthorizeRedirect(RightsConfig.CONST_退款申请列表, ToolBarConfig.CONST_NotButton, true)]
public ActionResult OrderRefundApplyHandle(int id, bool read = false)
{
var model = new OrderRefundDto();
var url = $"{webapi}/api/OrderRefundApply";
var para = $"id={id}";
var result = Utility.GetData(url, para, Encoding.UTF8);
var data = JsonConvert.DeserializeObject<WX.CRM.Common.Employee.ApiResult<OrderRefundDto>>(result);
model = data.data;
ViewBag.id = id;
ViewBag.rightCode = RightsConfig.CONST_退款申请列表;
ViewBag.eid = Eid;
ViewBag.userName = UserName;
ViewBag.File_Server = cache_BL.GetValue_Parameter("File_Server");
ViewBag.Readonly = read;
return View(model);
}
[HttpGet]
[AuthorizeRedirect(RightsConfig.CONST_退款申请列表, ToolBarConfig.CONST_Export, false)]
public FileResult ExportData(string param)
{
var url = $"{webapi}/api/OrderRefundApply/page";
var dto = Utility.ToObject<SearchOrderRefundDto>(param);
var para = $"Deptid={dto.Deptid}&Orderid={dto.Orderid}" +
$"&RefundType={dto.RefundType}&Resid={dto.Resid}&CreaetOrUpdateUser={dto.CreaetOrUpdateUser}" +
$"&BusinessStatus={dto.BusinessStatus}&Cname={dto.Cname}&ComplaintId={dto.ComplaintId}" +
$"&DateType={dto.DateType}&ApplyStatus={dto.ApplyStatus}&Eid={dto.Eid}" +
$"&PayStatus={dto.PayStatus}&RefundStatus={dto.RefundStatus}" +
$"&DateFrom={dto.DateFrom}&DateTo={dto.DateTo}&PageIndex=1&PageSize=100000";
var result = Utility.GetData(url, para, Encoding.UTF8);
var data = JsonConvert.DeserializeObject<WX.CRM.Common.Employee.ApiResult<WX.CRM.Common.StockHelper.PageResult<OrderRefundDto>>>(result);
string checkedFilds = Server.UrlDecode(Request.Cookies["checkedFilds"].Value);
string checkedTitle = Server.UrlDecode(Request.Cookies["checkedTitles"].Value);
Request.Cookies.Remove("checkedFilds");//用完后删除cookies
Request.Cookies.Remove("checkedTitles");//用完后删除cookies
String file = string.Format("退款申请列表{0}.xls", DateTime.Now.ToLocalTime().ToString("yyyyMMddHHmmssfffff"));
return File(ExcelHelper.ExportListModelToExcel<OrderRefundDto>(data.data.Data.ToList(), "sheet", 30000, checkedFilds, checkedTitle, DataFormart), "application/ms-excel", file);
}
public string DataFormart(string key, object value)
{
string formartValue = string.Empty;
switch (key)
{
case "ChannelList":
formartValue = string.Join("\n", Utility.ToObject<List<string>>(Utility.ToJson(value)));
break;
default: formartValue = string.Format("{0}", value); break;
}
return formartValue;
}
#region
public class SearchOrderRefundDto
{
/// <summary>
/// 事业部
/// </summary>
public int? Deptid { get; set; }
public string Channel { get; set; }
/// <summary>
/// 投诉类型
/// </summary>
public int? RefundType { get; set; }
/// <summary>
/// 业务确认状态
/// </summary>
public int? BusinessStatus { get; set; }
/// <summary>
/// 申请状态
/// </summary>
public int? ApplyStatus { get; set; }
/// <summary>
/// 退款状态
/// </summary>
public int? RefundStatus { get; set; }
/// <summary>
/// 支付类型
/// </summary>
public int? PayStatus { get; set; }
/// <summary>
/// 投诉单号
/// </summary>
public string ComplaintId { get; set; }
/// <summary>
/// 客户ID
/// </summary>
public string Resid { get; set; }
/// <summary>
/// 客户ID
/// </summary>
public string UMID { get; set; }
/// <summary>
/// 客户姓名
/// </summary>
public string Cname { get; set; }
/// <summary>
/// 成交客服/工号
/// </summary>
public string Eid { get; set; }
/// <summary>
/// 已退订单号
/// </summary>
public decimal? Orderid { get; set; }
/// <summary>
/// 创建人/更新人
/// </summary>
public string CreaetOrUpdateUser { get; set; }
/// <summary>
/// 日期搜索类型
/// </summary>
public int DateType { get; set; }
/// <summary>
/// 日期
/// </summary>
public DateTime? DateFrom { get; set; }
/// <summary>
/// 日期
/// </summary>
public DateTime? DateTo { get; set; }
}
public class OrderRefundDto
{
public int Id { get; set; }
/// <summary>
/// 投诉单号
/// </summary>
public string ComplaintId { get; set; }
/// <summary>
/// 客户ID
/// </summary>
public string Resid { get; set; }
/// <summary>
/// UMID
/// </summary>
public string UMID { get; set; }
/// <summary>
/// 退款订单号
/// </summary>
public int? Orderid { get; set; }
/// <summary>
/// 客户姓名
/// </summary>
public string Cname { get; set; }
/// <summary>
/// 事业部
/// </summary>
public int? Deptid { get; set; }
/// <summary>
/// 事业部
/// </summary>
public string Deptname { get; set; }
/// <summary>
/// 成交客服
/// </summary>
public int? Eid { get; set; }
/// <summary>
/// 成交客服
/// </summary>
public string Euser { get; set; }
/// <summary>
/// 投诉类型
/// </summary>
public int? RefundType { get; set; }
public string RefundTypeStr { get; set; }
/// <summary>
/// 业务确认状态
/// </summary>
public int? BusinessStatus { get; set; }
public string BusinessStatusStr { get; set; }
/// <summary>
/// 申请状态
/// </summary>
public int? ApplyStatus { get; set; }
public string ApplyStatusStr { get; set; }
/// <summary>
/// 退款状态
/// </summary>
public int? RefundStatus { get; set; }
public string RefundStatusStr { get; set; }
/// <summary>
/// 支付类型
/// </summary>
public int? PayStatus { get; set; }
public string PayStatusStr { get; set; }
/// <summary>
/// 退款人账号
/// </summary>
public string RefundNo { get; set; }
/// <summary>
/// 退款人姓名
/// </summary>
public string RefundName { get; set; }
/// <summary>
/// 退款金额
/// </summary>
public decimal? RefundPrice { get; set; }
/// <summary>
/// 退款日期
/// </summary>
public DateTime? RefundDate { get; set; }
public string RefundDateStr { get; set; }
/// <summary>
/// 退款说明
/// </summary>
public string RefundRemark { get; set; }
/// <summary>
/// 创建人
/// </summary>
public string Creator { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
public string Updater { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime? UpdateTime { get; set; }
public int? CreateEid { get; set; }
public int? UpdateEid { get; set; }
/// <summary>
/// 是否有处理意见
/// </summary>
public bool HasComplianceRemark { get; set; }
/// <summary>
/// 是否有附件
/// </summary>
public bool HasAttachment { get; set; }
public string Attachment { get; set; }
/// <summary>
/// 处理结果
/// </summary>
public int? ComplianceResult { get; set; }
public string ComplianceResultStr { get; set; }
/// <summary>
/// 处理说明
/// </summary>
public string ComplianceRemark { get; set; }
/// <summary>
/// 处理附件
/// </summary>
public string ComplianceAttachment { get; set; }
}
public class OrderRefundRestoreDto
{
public int? Id { get; set; }
/// <summary>
/// 客户ID
/// </summary>
public string Resid { get; set; }
/// <summary>
/// 退款订单号
/// </summary>
public int? Orderid { get; set; }
/// <summary>
/// 客户姓名
/// </summary>
public string Cname { get; set; }
/// <summary>
/// 退款金额
/// </summary>
public decimal? RefundPrice { get; set; }
/// <summary>
/// 处理结果
/// </summary>
public int? ComplianceResult { get; set; }
public string ComplianceResultStr { get; set; }
/// <summary>
/// 处理说明
/// </summary>
public string ComplianceRemark { get; set; }
/// <summary>
/// 相关附件
/// </summary>
public string Attachment { get; set; }
/// <summary>
/// 处理人
/// </summary>
public string Operator { get; set; }
/// <summary>
/// 处理人id
/// </summary>
public int? OperatorEid { get; set; }
}
public class CreateOrderRefundDto
{
/// <summary>
/// 投诉单号
/// </summary>
public string ComplaintId { get; set; }
/// <summary>
/// 客户ID
/// </summary>
public string Resid { get; set; }
/// <summary>
/// 退款订单号
/// </summary>
public int? Orderid { get; set; }
/// <summary>
/// 客户姓名
/// </summary>
public string Cname { get; set; }
/// <summary>
/// 事业部
/// </summary>
public int? Deptid { get; set; }
/// <summary>
/// 客服
/// </summary>
public int? Eid { get; set; }
/// <summary>
/// 退款类型
/// </summary>
public int? RefundType { get; set; }
/// <summary>
/// 支付类型
/// </summary>
public int? PayStatus { get; set; }
/// <summary>
/// 退款人账号
/// </summary>
public string RefundNo { get; set; }
/// <summary>
/// 退款人姓名
/// </summary>
public string RefundName { get; set; }
/// <summary>
/// 退款金额
/// </summary>
public decimal? RefundPrice { get; set; }
/// <summary>
/// 退款日期
/// </summary>
public DateTime? RefundDate { get; set; }
/// <summary>
/// 退款说明
/// </summary>
public string RefundRemark { get; set; }
public string Operator { get; set; }
public int? OperatorEid { get; set; }
/// <summary>
/// 附件
/// </summary>
public string Attachment { get; set; }
}
public class CreateRefundRestoreDto
{
public int? Id { get; set; }
/// <summary>
/// 处理结果
/// </summary>
public int? ComplianceResult { get; set; }
/// <summary>
/// 处理说明
/// </summary>
public string ComplianceRemark { get; set; }
/// <summary>
/// 相关附件
/// </summary>
public string Attachment { get; set; }
/// <summary>
/// 处理人
/// </summary>
public string Operator { get; set; }
/// <summary>
/// 处理人id
/// </summary>
public int? OperatorEid { get; set; }
}
public class OrderRefundCustomerInfoDto
{
/// <summary>
/// 客户姓名
/// </summary>
public string Cname { get; set; }
/// <summary>
/// 订单号
/// </summary>
public List<OrderRefundCustomerOrderDto> Orders { get; set; }
/// <summary>
/// 投诉单号
/// </summary>
public List<OrderRefundCustomerComplaintDto> Complaints { get; set; }
}
public class OrderRefundCustomerOrderDto
{
/// <summary>
/// 订单
/// </summary>
public int Orderid { get; set; }
/// <summary>
/// 价格
/// </summary>
public decimal? Price { get; set; }
/// <summary>
/// 事业部ID
/// </summary>
public int? DeptId { get; set; }
public int? Channel { get; set; }
}
public class OrderRefundCustomerComplaintDto
{
/// <summary>
/// 投诉单号
/// </summary>
public string ComplaintId { get; set; }
/// <summary>
/// 投诉类型
/// </summary>
public int? ComplaintType { get; set; }
}
#endregion
}
}