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; }
}
}
}