826 lines
35 KiB
C#
826 lines
35 KiB
C#
using CRM.Core.DTO;
|
|
using CRM.Core.DTO.Ord;
|
|
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.IBLL.Util;
|
|
using WX.CRM.IBLL.Wx;
|
|
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;
|
|
[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)
|
|
{
|
|
_order = order;
|
|
_orderExt = orderExt;
|
|
_wxSzzyorderRefund = wxSzzyorderRefund;
|
|
_orderRefund = orderRefund;
|
|
_cacheQ = cacheQ;
|
|
_orderRefundContract = orderRefundContract;
|
|
}
|
|
|
|
[HttpGet]
|
|
[AuthorizeRedirect(Roles = InitRights.CONST_订单退款)]
|
|
public ActionResult Index()
|
|
{
|
|
//var deptCode = _cacheQ.GetValue_Parameter(WX.CRM.Model.Enum.Parameter.Sys_Environment_DeptCode);
|
|
//ToolBar tool = new ToolBar();
|
|
//string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.订单退款, userRightId);
|
|
//tool.AllowButton(toolbtn);
|
|
//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("<a href=\"javascript:parent.ChildAddTab('{0}', '{1}', '')\">{2}</a>", "退款信息", "/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);
|
|
//tab.AddHiddenHeadCol("PKID", "");
|
|
tab.AddHeadCol("SZZYORDERID", "", "订单ID");
|
|
tab.AddHeadCol("deptname", "", "事业部");
|
|
tab.AddHeadCol("SubProductName", "", "产品名称");
|
|
tab.AddHeadCol("UName", "", "客户姓名");
|
|
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)
|
|
{
|
|
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();
|
|
}
|
|
Table table = new Table(columns, true);
|
|
foreach (var model in list)
|
|
{
|
|
//table.AddHiddenCol(model.PKID);
|
|
//table.AddCol(string.Format("<a href='javascript:void(0)' onclick='GetRefundInfo({0});'>{1}</a>", 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<SzzyRefundView>();
|
|
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 RefundApplyList()
|
|
{
|
|
Table tab = new Table("tablist");
|
|
tab.AddHeadCol("orderid", "", "订单号");
|
|
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("remark", "", "退款说明");
|
|
tab.AddHeadCol("auditstatus", "", "状态");
|
|
tab.AddHeadRow();
|
|
ViewBag.gridTable = tab.GetHead();
|
|
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, string columns)
|
|
{
|
|
var where = PredicateExtensionses.True<WX_SZZYORDERREFUND>();
|
|
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);
|
|
}
|
|
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(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.REMARK);
|
|
table.AddCol(model.AUDITSTATUS == 1 ? "已审核" : "未审核");
|
|
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);
|
|
}
|
|
|
|
public FileResult RefundApplyExport(decimal? orderId, DateTime? stime, DateTime? etime, DateTime? aTime, DateTime? zTime, decimal? type, decimal? refundtype, decimal? isacturalrefund)
|
|
{
|
|
var where = PredicateExtensionses.True<WX_SZZYORDERREFUND>();
|
|
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);
|
|
}
|
|
where = where.And(p => p.ISDELETE == 0);
|
|
var list = _orderRefund.GetList(where, p => p.REFUNDDATE);
|
|
|
|
var data = new List<WX_SZZYORDERREFUND_Export>();
|
|
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<WX_SZZYORDERREFUND_Export>(data, "退款申请", 10000, null), "application/ms-excel", PageRequest.GetDlownLoadName("退款申请.xls"));
|
|
}
|
|
|
|
[HttpGet]
|
|
[AuthorizeRedirect(Roles = InitRights.CONST_订单退款)]
|
|
public ActionResult refundContract()
|
|
{
|
|
Table tab = new Table("tablist");
|
|
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();
|
|
return View();
|
|
}
|
|
|
|
[HttpPost]
|
|
[AuthorizeRedirect(Roles = InitRights.CONST_订单退款)]
|
|
public JsonResult refundContract(string columns, decimal? orderId, DateTime? stime, DateTime? etime)
|
|
{
|
|
var list = _orderRefundContract.GetList(orderId, stime, etime);
|
|
|
|
Table table = new Table(columns, true);
|
|
foreach (var model in list)
|
|
{
|
|
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("<a href='javascript:ViewContract({0})'>{1}</a>", model.OrderId.ToString(), "退款协议地址"));
|
|
}
|
|
else
|
|
{
|
|
table.AddCol(string.Empty);
|
|
}
|
|
table.AddRow();
|
|
}
|
|
var json = new
|
|
{
|
|
rowsList = table.GetRows()
|
|
};
|
|
return Json(json, JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
public ActionResult ViewContract(int orderId)
|
|
{
|
|
var model = _order.Get(p => p.ORDERID == orderId);
|
|
var orderExt = _orderExt.Get(p => p.ORDERID == orderId);
|
|
var refundOrder = _orderRefund.GetList(p => p.ORDERID == orderId && p.ISACTURALREFUND != 0).Where(p => p.ISDELETE == 0);
|
|
var contract = _orderRefundContract.Get(p => p.ORDERID == orderId);
|
|
if (model == null || !refundOrder.Any())
|
|
{
|
|
return View(model);
|
|
}
|
|
|
|
var refundPrice = refundOrder.Sum(p => p.REFUNDPRICE);
|
|
if (refundPrice > model.ARRIVALPAY)
|
|
{
|
|
return Content("退款金额不能大于到账金额,请确认!");
|
|
}
|
|
|
|
var url1 = _cacheQ.GetValue_Parameter(Parameter.UserCenter_RiaService_RefundContract);//合同地址
|
|
var time = refundOrder.First().REFUNDDATE;//第一次退款时间
|
|
var json2 = new
|
|
{
|
|
RefundPrice = refundPrice,
|
|
SoftUserName = orderExt.SOFTUSERNAME,
|
|
OrderId = model.SZZYORDERID.ToString(),
|
|
ContractTime = time.ToString(),
|
|
ContractTimeStr = time.Value.ToString("yyyy年MM月dd日"),// string.Format("{0:D}", time),
|
|
OldContractTimeStr= contract.CONTRACTTIME.Value.ToString("yyyy年MM月dd日") //string.Format("{0:D}", contract.CONTRACTTIME)
|
|
};
|
|
|
|
string clientid = SecurityHelper.OrderClientIdKey;
|
|
string content = sHelper.encyptData(clientid, Utility.ConvertToJSON(json2));
|
|
string sign = sHelper.signData(clientid, content);
|
|
var htUrl = url1 + string.Format("?content={0}&sign={1}&clientId={2}&protocolType=", HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid);
|
|
//=============================================
|
|
|
|
var url = _cacheQ.GetValue_Parameter(Parameter.UserCenter_RiaService_SignPdf);
|
|
//风险揭示书
|
|
content = sHelper.encyptData(clientid, "T_DN" + model.SZZYORDERID.ToString());
|
|
sign = sHelper.signData(clientid, content);
|
|
|
|
ViewBag.tkpdf = string.Format("{0}/{4}-退款协议.pdf?content={1}&sign={2}&clientId={3}", url, HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, model.SUBPRODUCTNAME);
|
|
|
|
ViewBag.htUrl = htUrl;//合同Url
|
|
ViewBag.contract = contract == null ? string.Empty : contract.CONTRACT;
|
|
ViewBag.contractstatus = contract == null ? 0 : contract.CONTRACTSTATUS;
|
|
return View(model);
|
|
}
|
|
|
|
[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>(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("提交失败,请稍后重试或者联系管理员!", false);
|
|
//return JsonHandler.ManageMessage("提交成功", true);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.Error(ex.ToString());
|
|
return JsonHandler.ManageMessage("提交失败,请稍后重试或者联系管理员!", false);
|
|
}
|
|
}
|
|
|
|
public FileResult DetailExport(DateTime month, decimal? saleDeptId, QueryUserComboDto usercomboDto, decimal? orderid, int? lxType, int? curMonth)
|
|
{
|
|
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();
|
|
}
|
|
}
|
|
|
|
return File(ExcelHelper.ExportListModelToExcel<SzzyRefundDetailMonthView>(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 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; }
|
|
|
|
}
|
|
}
|
|
}
|