ComplianceServer/oldcode/WEB/Controllers/WeiXin/OrderDepositController.cs

1376 lines
57 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Aop.Api;
using Aop.Api.Request;
using CRM.Core.DTO;
using CRM.Core.DTO.Ord;
using Ninject;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
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.Layui;
using WX.CRM.Common.WxPay;
using WX.CRM.IBLL.Res;
using WX.CRM.IBLL.Util;
using WX.CRM.IBLL.Wx;
using WX.CRM.Model.Entity;
using WX.CRM.Model.Enum;
using WX.CRM.WebHelper;
namespace WX.CRM.WEB.Controllers.WeiXin
{
public class OrderDepositController : BaseController
{
[Inject]
public CACHE_BL cache_BL { get; set; }
[Inject]
public ISecurityHelper sHelper { get; set; }
[Inject]
public IWX_SZZYORDERDEPOSIT _orderDepoist { get; set; }
[Inject]
public IWX_SZZYORDERREFUND _orderRefund { get; set; }
[Inject]
public IWX_SZZYORDERPAY _orderPay { get; set; }
[Inject]
public IRES_CUSTOMER_Q _customerQ { get; set; }
[Inject]
public IWX_SZZYORDER _order { get; set; }
[Inject]
public IWX_ORDEREXT _orderext { get; set; }
public NativePay _nativePay = new NativePay();
[Inject]
public IRES_MYALLOCATERES _myRes { get; set; }
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_订金列表)]
public ActionResult Index()
{
Pager pager = new Pager() { page = 1, rows = 20 };
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHeadCol("id", "", "ID");
tab.AddHeadCol("resid", "", "客户ID");
tab.AddHeadCol("paytypename", "", "支付类型");
tab.AddHeadCol("paydate", "", "到账时间");
tab.AddHeadCol("payprice", "", "订金金额");
tab.AddHeadCol("payname", "", "付款人姓名");
tab.AddHeadCol("remark", "", "说明");
tab.AddHeadCol("auditstatus", "", "审核状态");
tab.AddHeadCol("lastprice", "", "剩余金额");
tab.AddHeadCol("payno", "", "流水号");
//tab.AddHeadCol("ISUSE", "", "是否使用");
//tab.AddHeadCol("USETIME", "", "使用时间");
tab.AddHeadCol("orderid", "", "关联订单号");
tab.AddHeadCol("rejectremark", "", "备注");
tab.AddHeadCol("", "", "操作");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "20,50,100");
return View();
}
[HttpPost]
[AuthorizeRedirect(Roles = InitRights.CONST_订金列表)]
public JsonResult Index(Pager pager, string columns, OrderPayListReqDto dto)
{
dto.channel = int.Parse(Utility.GetSettingOrNullByKey("Channel"));
var ret = _orderDepoist.GetCoreDepositList(pager, dto);
//var listAll = _orderDepoist.GetList(where, p => p.ID, 1, int.MaxValue, out totalRecords);
//var payPrices = listAll.Sum(p => p.PAYPRICE);
Table table = new Table(columns, true);
if (ret.result)
{
if (ret.infolist.Count > 0)
{
foreach (var model in ret.infolist)
{
//model.PAYTYPENAME = GetPayTypeName(model.PAYTYPE);
table.AddCol(model.id);
table.AddCol(model.resid);
table.AddCol(model.paytypename);
table.AddCol(model.paydate);
table.AddCol(model.payprice);
table.AddCol(model.payname);
table.AddCol(model.remark);
//table.AddCol(model.AUDITSTATUS == 1 ? "已审核" : "未审核");
if (model.auditstatus == 1)
{
table.AddCol("color:green", "", "已审核");
}
else if (model.auditstatus == -1)
{
table.AddCol("color:red", "", "<span title='" + model.rejectremark + "' class='bohuiremark' >驳回</span>");
}
else
{
table.AddCol("未审核");
}
table.AddCol(model.lastprice);
table.AddCol(model.payno);
//table.AddCol(model.USETIME);
table.AddCol(model.orderid);
table.AddCol(model.rejectremark);
table.AddCol(model.auditstatus == 1 ? (model.lastprice.HasValue && model.lastprice.Value > 0 ? string.Format("<a href='javascript:void(0)' onclick='ApplyDepositRefund({0})'>{1}</a>", model.id, "退款申请") : "") : "");
table.AddRow();
}
}
table.AddCol("合计:");
table.AddCol("");
table.AddCol("");
table.AddCol("");
table.AddCol(ret.sumInfo.paypriceSum);
table.AddCol("");
table.AddCol("");
table.AddCol("");
table.AddCol(ret.sumInfo.lastpriceSum);
table.AddCol("");
table.AddCol("");
table.AddCol("");
table.AddRow();
}
else
{
table.AddHiddenCol("");
table.AddErrCol("加载错误");
table.AddRow();
}
var json = new
{
totalPages = ret.pageinfo.totalPages,
totalRows = ret.pageinfo.count,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
#region 使
//[HttpPost]
//[AuthorizeRedirect(Roles = InitRights.CONST_订金列表)]
//public JsonResult Index(Pager pager, string columns, string resid, DateTime? aTime, DateTime? zTime, decimal? status, DateTime? sTime, DateTime? eTime, decimal? isUse, decimal? paytype, DateTime? use1Time, DateTime? use2Time, decimal? id, string payno)
//{
// var where = PredicateExtensionses.True<WX_SZZYORDERDEPOSIT>();
// if (!string.IsNullOrEmpty(resid))
// where = where.And(p => p.RESID == resid);
// if (aTime.HasValue)
// where = where.And(p => p.CTIME >= aTime.Value);
// if (zTime.HasValue)
// {
// zTime = zTime.Value.AddDays(1);
// where = where.And(p => p.CTIME < zTime.Value);
// }
// if (status.HasValue)
// {
// if (status == 0)
// {
// where = where.And(p => p.AUDITSTATUS == null);
// }
// else
// {
// where = where.And(p => p.AUDITSTATUS == status.Value);
// }
// }
// if (sTime.HasValue)
// where = where.And(p => p.PAYDATE >= sTime.Value);
// if (eTime.HasValue)
// {
// eTime = eTime.Value.AddDays(1);
// where = where.And(p => p.PAYDATE < eTime.Value);
// }
// if (isUse.HasValue)
// where = where.And(p => p.ISUSE == isUse.Value);
// if (paytype.HasValue)
// where = where.And(p => p.PAYTYPE == paytype.Value);
// if (id.HasValue)
// {
// where = where.And(p => p.ID == id.Value);
// }
// if (!string.IsNullOrEmpty(payno))
// {
// where = where.And(p => p.PAYNO == payno);
// }
// where = where.And(p => p.ISDELETE != 1);
// var list = _orderDepoist.GetList(where, p => p.ID, pager);
// var orders = list.Where(p => p.ORDERID != null).Select(p => p.ORDERID);
// var payList = _orderPay.GetList(p => orders.Contains(p.ORDERID));
// var totalRecords = 0;
// var listAll = _orderDepoist.GetList(where, p => p.ID, 1, int.MaxValue, out totalRecords);
// var payPrices = listAll.Sum(p => p.PAYPRICE);
// var data = new List<WX_SZZYORDERDEPOSITVIEW>();
// foreach (var item in list)
// {
// var payModel = payList.Where(p => p.ORDERID == item.ORDERID && p.PAYNO != item.PAYNO).OrderByDescending(p => p.PAYDATE).FirstOrDefault();
// var useTime = payModel != null ? payModel.PAYDATE : (DateTime?)null;
// data.Add(new WX_SZZYORDERDEPOSITVIEW()
// {
// ID = item.ID,
// RESID = item.RESID,
// PAYTYPENAME = GetPayTypeName(item.PAYTYPE),
// PAYDATE = item.PAYDATE,
// PAYPRICE = item.PAYPRICE,
// PAYNAME = item.PAYNAME,
// REMARK = item.REMARK,
// AUDITSTATUS = item.AUDITSTATUS,
// PAYNO = item.PAYNO,
// ISUSE = item.ISUSE,
// USETIME = useTime,
// ORDERID = item.ORDERID,
// REJECTREMARK = item.REJECTREMARK,
// LASTPRICE = item.LASTPRICE
// });
// }
// if (use1Time.HasValue && use2Time.HasValue)
// {
// data = data.Where(p => p.USETIME >= use1Time.Value && p.USETIME < use2Time.Value.AddDays(1)).ToList();
// }
// else if (use1Time.HasValue && !use2Time.HasValue)
// {
// data = data.Where(p => p.USETIME >= use1Time.Value).ToList();
// }
// else if (!use1Time.HasValue && use2Time.HasValue)
// {
// data = data.Where(p => p.USETIME < use2Time.Value.AddDays(1)).ToList();
// }
// Table table = new Table(columns, true);
// foreach (var model in data)
// {
// //model.PAYTYPENAME = GetPayTypeName(model.PAYTYPE);
// table.AddCol(model.ID);
// table.AddCol(model.RESID);
// table.AddCol(model.PAYTYPENAME);
// table.AddCol(model.PAYDATE);
// table.AddCol(model.PAYPRICE);
// table.AddCol(model.PAYNAME);
// table.AddCol(model.REMARK);
// //table.AddCol(model.AUDITSTATUS == 1 ? "已审核" : "未审核");
// if (model.AUDITSTATUS == 1)
// {
// table.AddCol("color:green", "", "已审核");
// }
// else if (model.AUDITSTATUS == -1)
// {
// table.AddCol("color:red", "", "驳回");
// }
// else
// {
// table.AddCol("未审核");
// }
// table.AddCol(model.LASTPRICE);
// table.AddCol(model.PAYNO);
// //table.AddCol(model.ISUSE == 0 ? "未使用" : (model.ISUSE == 1 ? "已使用" : (model.ISUSE == 2 ? "已退款" : "已开通")));
// //if (model.ORDERID.HasValue)
// //{
// // var payModel = payList.Where(p => p.ORDERID == model.ORDERID && p.PAYNO != model.PAYNO).OrderByDescending(p => p.PAYDATE).FirstOrDefault();
// // if (payModel != null)
// // {
// // table.AddCol(payModel.PAYDATE);
// // }
// // else
// // {
// // table.AddCol("");
// // }
// //}
// //else
// //{
// // table.AddCol("");
// //}
// table.AddCol(model.USETIME);
// table.AddCol(model.ORDERID);
// table.AddCol(model.REJECTREMARK);
// table.AddCol(model.AUDITSTATUS == 1 ? (model.LASTPRICE.HasValue && model.LASTPRICE.Value > 0 ? string.Format("<a href='javascript:void(0)' onclick='ApplyDepositRefund({0})'>{1}</a>", model.ID, "退款申请") : "") : "");
// table.AddRow();
// }
// table.AddHiddenCol("");
// table.AddCol("合计:");
// table.AddCol("");
// table.AddCol("");
// table.AddCol(payPrices);
// table.AddCol("");
// table.AddCol("");
// table.AddCol("");
// table.AddCol("");
// table.AddCol("");
// table.AddCol("");
// table.AddCol("");
// table.AddCol("");
// table.AddRow();
// var json = new
// {
// totalPages = pager.totalPages,
// totalRows = pager.totalRows,
// rowsList = table.GetRows()
// };
// return Json(json, JsonRequestBehavior.AllowGet);
//}
#endregion
[HttpGet]
public ActionResult Info()
{
Pager pager = new Pager() { page = 1, rows = int.MaxValue };
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHeadCol("ID", "", "ID");
tab.AddHeadCol("RESID", "", "客户ID");
tab.AddHeadCol("PAYTYPENAME", "", "支付类型");
tab.AddHeadCol("PAYDATE", "", "付款时间");
tab.AddHeadCol("PAYPRICE", "", "订金金额");
tab.AddHeadCol("PAYNAME", "", "付款人姓名");
tab.AddHeadCol("REMARK", "", "说明");
tab.AddHeadCol("AUDITSTATUS", "", "审核状态");
tab.AddHeadCol("PAYNO", "", "流水号");
tab.AddHeadCol("ISUSE", "", "是否使用");
tab.AddHeadCol("ORDERID", "", "关联订单号");
tab.AddHeadCol("ACTION", "", "操作");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead();
return View();
}
[HttpPost]
public JsonResult Info(string resid, string columns)
{
var where = PredicateExtensionses.True<WX_SZZYORDERDEPOSIT>();
if (!string.IsNullOrEmpty(resid))
{
var customerId = _customerQ.getResCustomerByResId(resid).CUSTOMERID;
string[] resids = _customerQ.GetAllResidByCustomerId(customerId);
where = where.And(p => resids.Contains(p.RESID));
}
var list = _orderDepoist.GetList(where);
Table table = new Table(columns, true);
foreach (var model in list)
{
table.AddCol(model.ID);
table.AddCol(model.RESID);
table.AddCol(model.PAYTYPENAME);
table.AddCol(model.PAYDATE);
table.AddCol(model.PAYPRICE);
table.AddCol(model.PAYNAME);
table.AddCol(model.REMARK);
table.AddCol(model.AUDITSTATUS == 1 ? "已审核" : "未审核");
table.AddCol(model.PAYNO);
table.AddCol(model.ISUSE == 0 ? "未使用" : (model.ISUSE == 1 ? "已使用" : (model.ISUSE == 2 ? "已退款" : "已开通")));
table.AddCol(model.ORDERID);
table.AddCol(model.AUDITSTATUS == 1 ? (model.ISUSE == 0 ? string.Format("<a href='javascrpt:void(0)' onclick='ApplyDepositRefund({0})'>{1}</a>", model.ID, "退款申请") : "") : "");
table.AddRow();
}
var json = new
{
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
[HttpGet]
public ActionResult List()
{
string CustomerId = Request.QueryString["CustomerId"];
var ret = _orderDepoist.GetCoreDepositLastPay(new LastPriceReqDto() { resid = CustomerId, channel = int.Parse(Utility.GetSettingOrNullByKey("Channel")) });
ViewBag.Ret = ret;
return View();
}
[HttpPost]
public JsonResult List(string resid)
{
//var where = PredicateExtensionses.True<WX_SZZYORDERDEPOSIT>();
//if (!string.IsNullOrEmpty(resid))
//{
// var customerId = _customerQ.getResCustomerByResId(resid).CUSTOMERID;
// string[] resids = _customerQ.GetAllResidByCustomerId(customerId);
// where = where.And(p => resids.Contains(p.RESID));
//}
//where = where.And(p => p.ISDELETE != 1);
//var list = _orderDepoist.GetList(where).ToList();
OrderPayListReqDto dto = new OrderPayListReqDto() { resid = resid, channel = int.Parse(Utility.GetSettingOrNullByKey("Channel")) };
Pager pager = new Pager() { page = 1, rows = int.MaxValue };
var ret = _orderDepoist.GetCoreDepositList(pager, dto);
var data = new LayuiData<OrderPayListRspDto, OrderPayListSumRspInfo>()
{
msg = "数据加载成功!",
count = 0,
code = 0,
data = ret.infolist,
suminfo = ret.sumInfo,
};
if (ret.result == false)
{
data.SetFail(-1, "数据拉取错误!");
}
return Json(data, JsonRequestBehavior.AllowGet);
}
[HttpGet]
public ActionResult Add()
{
var deptList = cache_BL.GetList_SalesDepartMent().Where(p => p.CHANNELDEF != null);
var selectList = new List<SelectListItem>();
foreach (var item in deptList)
{
selectList.Add(new SelectListItem() { Text = item.DEPTNAME, Value = item.SALEDEPTCODE });
}
ViewBag.DeptList = selectList;
return View();
}
//手工添加支付
[HttpPost]
public JsonResult Add(OrderDepositDto dto)
{
try
{
if (!ModelState.IsValid)
{
return JsonHandler.ManageMessage("参数有误,请确认!", false);
}
var roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
//if (!(roleCodes.Contains("[GLY]") || roleCodes.Contains("[ZJZL]")))
//{
// return JsonHandler.ManageMessage("请联系助理添加!", false);
//}
if (!string.IsNullOrEmpty(dto.payno))
{
dto.payno = dto.payno.Trim();
}
//dto.companycode = companyCode;
dto.companycode = Utility.GetSettingOrNullByKey("DataClientCode");
//var groups = _CacheQ.GetGroupList();
//var ug = _CacheQ.GetList_InnerUserGroup();
var depment = _CacheQ.GetList_SalesDepartMent();
//var myRes = _myRes.Get(p => p.RESID == dto.resid);
//if (myRes != null)
//{
// var uginfo = ug.Find(p => p.INNERUSERID == myRes.INNERUSERID);
// if (uginfo != null)
// {
// var group = groups.Find(p => p.GID == uginfo.GID);
// if (group != null)
// {
// var dep = depment.Find(p => p.SALEDEPTID == group.SALEDEPTID);
// if (dep != null)
// {
// if (dep.CHANNELDEF.HasValue)
// dto.channel = Convert.ToInt32(dep.CHANNELDEF);
// }
// }
// }
//}
if (!string.IsNullOrEmpty(dto.deptcode))
{
//如果传了部门编号
var dep = depment.Find(p => p.SALEDEPTCODE == dto.deptcode);
if (dep != null)
{
if (dep.CHANNELDEF.HasValue)
dto.channel = Convert.ToInt32(dep.CHANNELDEF);
}
}
if (!dto.channel.HasValue)
{
dto.channel = int.Parse(Utility.GetSettingOrNullByKey("Channel"));
}
dto.creator = Convert.ToInt32(Eid);
dto.creatorname = UserName;
var url = cache_BL.GetValue_Parameter(Parameter.Core_ZxdService_OrderDeposit);
var json = sHelper.createSignEncodingStr(dto.ToJson(), SecurityHelper.OrderClientIdKey);
string retmsg = Utility.PostData(url + "?" + json, Encoding.UTF8);
var retmessage = WebHelper.JsonHelper.JsonDivertToObj<retMsg>(retmsg);
if (retmessage.result)
{
try
{
var orderDeposit = new WX_SZZYORDERDEPOSIT()
{
ID = decimal.Parse(retmessage.retmsg),
RESID = dto.resid,
PAYTYPE = dto.paytype,
PAYTYPENAME = GetPayTypeName(dto.paytype),
PAYDATE = dto.paydate,
PAYPRICE = dto.payprice,
PAYNAME = dto.payname,
REMARK = dto.remark,
AUDITSTATUS = 0,
CTIME = DateTime.Now,
PAYNO = dto.payno.Trim(),
CREATOR = Eid,
CREATORNAME = UserName,
DEPTCODE = dto.deptcode
};
_orderDepoist.Add(orderDeposit);
}
catch (Exception xx)
{
LogHelper.Error("订金记录添加到本地库异常:" + xx.ToString());
}
return JsonHandler.ManageMessage("提交成功", true);
}
else
return JsonHandler.ManageMessage("提交失败,请稍后重试或者联系管理员!", false);
//return JsonHandler.ManageMessage("提交成功", true);
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
return JsonHandler.ManageMessage("提交失败,请稍后重试或者联系管理员!", false);
}
}
[HttpGet]
public ActionResult Add2()
{
var deptList = cache_BL.GetList_SalesDepartMent().Where(p => p.CHANNELDEF != null);
var selectList = new List<SelectListItem>();
foreach (var item in deptList)
{
selectList.Add(new SelectListItem() { Text = item.DEPTNAME, Value = item.SALEDEPTCODE });
}
ViewBag.DeptList = selectList;
var quota = cache_BL.GetValue_Parameter("QuoTa");
ViewBag.QuoTa = quota;
return View();
}
[HttpGet]
public ActionResult Bank()
{
var deptList = cache_BL.GetList_SalesDepartMent().Where(p => p.CHANNELDEF != null);
var selectList = new List<SelectListItem>();
foreach (var item in deptList)
{
selectList.Add(new SelectListItem() { Text = item.DEPTNAME, Value = item.SALEDEPTCODE });
}
ViewBag.DeptList = selectList;
return View();
}
/// <summary>
/// 客户资料页面,订金二维码添加,我的订单提交也在这里
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost]
public JsonResult Add2(OrderDepositDto dto)
{
try
{
if (!ModelState.IsValid)
{
return JsonHandler.ManageMessage("参数有误,请确认!", false);
}
//var mchId = cache_BL.GetValue_Parameter("mchId");
//if(string.IsNullOrEmpty(mchId))
//{
// return JsonHandler.ManageMessage("请先配置商户号!", false);
//}
var noId = string.Empty;
if (dto.paytype == 1)
{
var alpayId = _CacheQ.GetValue_Parameter("alpayId");
if (string.IsNullOrEmpty(alpayId))
{
return JsonHandler.ManageMessage("请先配置商户号!", false);
}
noId = alpayId;
}
else
{
var mchId = _CacheQ.GetValue_Parameter("mchId");
if (string.IsNullOrEmpty(mchId))
{
return JsonHandler.ManageMessage("请先配置商户号!", false);
}
noId = mchId;
}
if (dto.paytype != 3)
{
//如果不是银行转账
dto.tradeno = WxPayApi.GenerateTradePayNo("D", noId);
}
dto.companycode = Utility.GetSettingOrNullByKey("DataClientCode");
var depment = _CacheQ.GetList_SalesDepartMent();
if (string.IsNullOrEmpty(dto.orderid))
{
if (!string.IsNullOrEmpty(dto.deptcode))
{
//如果传了部门编号
var dep = depment.Find(p => p.SALEDEPTCODE == dto.deptcode);
if (dep != null)
{
if (dep.CHANNELDEF.HasValue)
dto.channel = Convert.ToInt32(dep.CHANNELDEF);
}
}
}
else
{
if (!string.IsNullOrEmpty(dto.deptcode))
{
//如果传了部门编号
var dep = depment.Find(p => p.SALEDEPTCODE == dto.deptcode);
if (dep != null)
{
if (dep.CHANNELDEF.HasValue)
dto.channel = Convert.ToInt32(dep.CHANNELDEF);
}
}
else
{
var orderidsArr = dto.orderid.Split(',');
var orderid = Convert.ToInt32(orderidsArr[0]);
var orderext = _orderext.Get(p => p.ORDERID == orderid);
if (orderext != null)
{
if (!string.IsNullOrEmpty(orderext.CHANNEL))
dto.channel = Convert.ToInt32(orderext.CHANNEL);
}
}
}
if (!dto.channel.HasValue)
{
dto.channel = int.Parse(Utility.GetSettingOrNullByKey("Channel"));
}
if (string.IsNullOrEmpty(dto.resid))
{
if (!string.IsNullOrEmpty(dto.orderid))
{
var orderidsArr = dto.orderid.Split(',');
var orderid = Convert.ToInt32(orderidsArr[0]);
var order = _order.Get(p => p.ORDERID == orderid);
if (order != null)
{
dto.resid = order.RESID;
}
}
}
//var url = cache_BL.GetValue_Parameter(Parameter.Core_ZxdService_OrderDeposit);
//var json = sHelper.createSignEncodingStr(dto.ToJson(), SecurityHelper.OrderClientIdKey);
PayDto newdto = new PayDto();
newdto.orderuselist = new List<OrderuseDto>() { };
if (!string.IsNullOrEmpty(dto.orderid))
{
decimal orderid = Convert.ToDecimal(dto.orderid);
var myorder = _order.Get(m => m.ORDERID == orderid);
var needpay = (myorder.NEEDPAY ?? 0) - (myorder.ARRIVALPAY ?? 0);
if (needpay > 0)
{
newdto.orderuselist.Add(new OrderuseDto() { orderid = Convert.ToInt32(dto.orderid), needpay = needpay });//添加需要支付多少钱
}
}
var paylist = new List<PayInfoDto>();
paylist.Add(new PayInfoDto()
{
//id = dto.id,
resid = dto.resid,
paytype = dto.paytype,
paytypename = GetPayTypeName(dto.paytype),
paydate = dto.paydate,
payprice = dto.payprice,
payname = dto.payname,
remark = dto.remark,
payno = dto.payno,
isuse = dto.isuse,
companycode = Utility.GetSettingOrNullByKey("DataClientCode"),
tradeno = dto.tradeno,
creator = Convert.ToInt32(Eid),
creatorname = UserName
});
var dto2 = new PayDto2
{
orderuselist = newdto.orderuselist,
resid = dto.resid,
channel = dto.channel,
deptcode = dto.deptcode,//部门编码
//depprice = dto.depprice,
paylist = paylist,//需要添加的支付记录
};
var ret2 = _orderDepoist.Pay2(dto2);//然后提交金额
if (!ret2.result)
{
return Json(new { type = 0, retcode = 500, msgretmsg = "支付流水提交失败!" }, JsonRequestBehavior.AllowGet);
}
return Json(new { type = 1, retcode = 200, message = ret2.retmsg.FirstOrDefault().id }, JsonRequestBehavior.AllowGet);
//string retmsg = Utility.PostData(url + "?" + json, Encoding.UTF8);
//var retmessage = WebHelper.JsonHelper.JsonDivertToObj<retMsg>(retmsg);
//if (retmessage.result)
//{
// try
// {
// _orderDepoist.Add(dto);
// }
// catch (Exception xx)
// {
// LogHelper.Error("订金记录添加到本地库异常:" + xx.ToString());
// }
// return JsonHandler.ManageMessage("success", true);
//}
//else
// return JsonHandler.ManageMessage("提交失败,请稍后重试或者联系管理员!", false);
//return JsonHandler.ManageMessage("提交成功", true);
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
return JsonHandler.ManageMessage("提交失败,请稍后重试或者联系管理员!", false);
}
}
[HttpGet]
public ActionResult Use(int orderId)
{
var order = _order.Get(p => p.ORDERID == orderId);
var customerId = _customerQ.getResCustomerByResId(order.RESID).CUSTOMERID;
string[] resids = _customerQ.GetAllResidByCustomerId(customerId);
var orderDepositList = _orderDepoist.GetList(p => resids.Contains(p.RESID) && p.AUDITSTATUS == 1 && p.ISUSE == 0);
ViewBag.OrderDepositList = orderDepositList;
return View();
}
[HttpPost]
public JsonResult Use(UseOrderDepositDto dto)
{
if (!string.IsNullOrWhiteSpace(dto.deposit))
{
var url = cache_BL.GetValue_Parameter(Parameter.Core_ZxdService_OrderDeposit_Use);
var json = sHelper.createSignEncodingStr(dto.ToJson(), SecurityHelper.OrderClientIdKey);
string retmsg = Utility.PostData(url + "?" + json, Encoding.UTF8);
//retmsg = sHelper.decyptData(SecurityHelper.OrderClientIdKey, retmsg);
var retmessage = WebHelper.JsonHelper.JsonDivertToObj<retMsg>(retmsg);
if (retmessage.result)
{
var arr = dto.deposit.Split(',');
foreach (var item in arr)
{
var id = decimal.Parse(item);
var info = _orderDepoist.Get(p => p.ID == id);
if (info != null)
{
info.ISUSE = 1;
info.ORDERID = dto.orderid;
_orderDepoist.Update(info);
}
var orderPay2 = _orderPay.Get(p => p.ORDERID == id);
if (orderPay2 != null)
{
orderPay2.ORDERID = dto.orderid;
_orderPay.Update(orderPay2);
}
var order = _order.Get(p => p.ORDERID == dto.orderid);
if (order != null)
{
var arrivalPayList = _orderPay.GetList(p => p.ORDERID == dto.orderid && p.AUDITSTATUS == 1);
var payDate = arrivalPayList.OrderByDescending(p => p.PAYDATE).First().PAYDATE;
order.ARRIVALPAY = arrivalPayList.Sum(p => p.PAYPRICE);
order.ARRIVALTIME = payDate;
order.FINALPAY = order.ARRIVALPAY;
if (order.ARRIVALPAY >= order.NEEDPAY)
{
order.ORDERSTATUS = "200";
order.ORDERSTATUSNAME = "已支付";
}
else
{
order.ORDERSTATUS = "190";
order.ORDERSTATUSNAME = "已提交支付";
}
_order.Update(order);
}
}
return Json(new { result = true }, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { result = false }, JsonRequestBehavior.AllowGet);
}
}
return Json(new { result = false }, JsonRequestBehavior.AllowGet);
}
[HttpGet]
public ActionResult Use2(int orderId)
{
var order = _order.Get(p => p.ORDERID == orderId);
//var customerId = _customerQ.getResCustomerByResId(order.RESID).CUSTOMERID;
//string[] resids = _customerQ.GetAllResidByCustomerId(customerId);
//var orderDepositList = _orderDepoist.GetList(p => resids.Contains(p.RESID) && p.AUDITSTATUS == 1 && p.ISUSE == 0);
//ViewBag.OrderDepositList = orderDepositList;
var ret = _orderDepoist.GetCoreDepositLastPay(new LastPriceReqDto() { resid = order.RESID, channel = int.Parse(Utility.GetSettingOrNullByKey("Channel")) });
ViewBag.CorePayInfo = ret;
ViewBag.OrderNedPay = ((order.NEEDPAY ?? 0) - (order.ARRIVALPAY ?? 0));
return View();
}
[HttpPost]
public JsonResult Use2(int orderId, decimal usePrice)
{
try
{
var order = _order.Get(p => p.ORDERID == orderId);
if (usePrice > ((order.NEEDPAY ?? 0) - (order.ARRIVALPAY ?? 0)))
{
return Json(new retMsg { result = false, retcode = 500, retmsg = "使用的金额不能超过订单应付金额!" }, JsonRequestBehavior.AllowGet);
}
var usePayList = new List<OrderuseDto>() { new OrderuseDto() { orderid = orderId, needpay = order.NEEDPAY.Value } };
var ret = _orderDepoist.Use(new PayUseDto() { resid = order.RESID, depprice = usePrice, orderuselist = usePayList, channel = int.Parse(Utility.GetSettingOrNullByKey("Channel")) });
return Json(ret, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error(ex);
}
return Json(new { result = false }, JsonRequestBehavior.AllowGet);
}
[HttpGet]
public ActionResult Pay(string orderId, string resid)
{
var orderArr = orderId.Split(',').Select(decimal.Parse);
var order = _order.GetList(p => orderArr.Contains(p.ORDERID));
var needpay = order.Sum(p => p.NEEDPAY);
var arrivalpay = order.Sum(p => p.ARRIVALPAY);
ViewBag.needpay = needpay;
ViewBag.arrivalpay = arrivalpay;
//var customerId = _customerQ.getResCustomerByResId(resid).CUSTOMERID;
//string[] resids = _customerQ.GetAllResidByCustomerId(customerId);
//var orderDepositList = _orderDepoist.GetList(p => resids.Contains(p.RESID) && p.AUDITSTATUS == 1);
//var deppay = orderDepositList.Sum(p => p.LASTPRICE);
decimal? deppay = 0;
var ret = _orderDepoist.GetCoreDepositLastPay(new LastPriceReqDto() { resid = resid, channel = int.Parse(Utility.GetSettingOrNullByKey("Channel")) });
if (ret.result)
{
deppay = ret.retmsg.lastprice;
}
ViewBag.alldeppay = deppay;
var diffpay = needpay - (arrivalpay ?? 0) - (deppay ?? 0);
if (diffpay < 0)
{
//需付款金额小于0说明钱超出了只需要使用一部分
deppay += diffpay;
}
//LogHelper.Info("diffpay:" + diffpay.ToString());
//LogHelper.Info("deppay:" + deppay.ToString());
var justpay = needpay - (arrivalpay ?? 0) - (deppay ?? 0);
//LogHelper.Info("justpay:" + justpay.ToString());
ViewBag.deppay = deppay;
ViewBag.justpay = justpay;
return View();
}
[HttpPost]
public JsonResult Pay(PayDto dto, string orderId)
{
try
{
var deptcode = string.Empty;
dto.paytypename = GetPayTypeName(dto.paytype);
var orderArr = orderId.Split(',').Select(decimal.Parse);
var order = _order.GetList(p => orderArr.Contains(p.ORDERID));
if (!order.Any())
{
return Json(new retMsg { result = false, retcode = 100 }, JsonRequestBehavior.AllowGet);
}
foreach (var item in order)
{
if (dto.orderuselist == null)
dto.orderuselist = new List<OrderuseDto>();
dto.orderuselist.Add(new OrderuseDto() { orderid = Convert.ToInt32(item.ORDERID), needpay = item.NEEDPAY.Value });
deptcode = item.DEPTCODE;
}
var paylist = new List<PayInfoDto>();
if (!string.IsNullOrEmpty(dto.payno))
{
paylist.Add(new PayInfoDto()
{
//id = dto.id,
resid = dto.resid,
paytype = dto.paytype,
paytypename = dto.paytypename,
paydate = dto.paydate,
payprice = dto.payprice,
payname = dto.payname,
remark = dto.remark,
payno = dto.payno,
isuse = dto.isuse,
companycode = Utility.GetSettingOrNullByKey("DataClientCode"),
tradeno = dto.tradeno,
creator = dto.creator,
creatorname = dto.creatorname
});
}
if (dto.depprice > 0)
{
var dto1 = new PayUseDto
{
resid = dto.resid,
depprice = dto.depprice,
orderuselist = dto.orderuselist,
channel = int.Parse(Utility.GetSettingOrNullByKey("Channel"))
};
var ret1 = _orderDepoist.Use(dto1);//使用订金
if (!ret1.result)//使用订金失败
{
return Json(new { result = false, retcode = 500, msgretmsg = "余额使用失败!" }, JsonRequestBehavior.AllowGet);
}
}
if (paylist.Count() == 0)
{
return Json(new { result = true, retcode = 200 }, JsonRequestBehavior.AllowGet);
}
var dto2 = new PayDto2
{
orderuselist = dto.orderuselist,
resid = dto.resid,
//depprice = dto.depprice,
deptcode = deptcode,
paylist = paylist,//需要添加的支付记录
};
var ret2 = _orderDepoist.Pay2(dto2);//然后提交金额
if (!ret2.result)
{
return Json(new { result = true, retcode = 500, msgretmsg = "余额使用成功,支付流水提交失败!" }, JsonRequestBehavior.AllowGet);
}
return Json(new { result = true, retcode = 200 }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error(ex);
}
return Json(new { result = false }, JsonRequestBehavior.AllowGet);
}
[HttpGet]
public ActionResult Refund(int id)
{
//var deposit = _orderDepoist.Get(p => p.ID == id);
OrderPayListReqDto dto = new OrderPayListReqDto() { id = id, channel = int.Parse(Utility.GetSettingOrNullByKey("Channel")) };
Pager pager = new Pager() { page = 1, rows = int.MaxValue };
var ret = _orderDepoist.GetCoreDepositList(pager, dto);
decimal refprice = 0;
if (ret.result)
{
refprice = ret.infolist.FirstOrDefault().lastprice ?? 0;
}
//if (deposit.LASTPRICE.HasValue)
//{
// refprice = deposit.LASTPRICE.Value;
//}
var model = new OrderRefundDto
{
orderid = id,
refundprice = refprice
};
return View(model);
}
[HttpPost]
public JsonResult Refund(OrderRefundDto dto)
{
try
{
if (!ModelState.IsValid)
{
return JsonHandler.ManageMessage("参数有误,请确认!", false);
}
if (dto.refundprice <= 0)
{
return JsonHandler.ManageMessage("退款金额不能低于0", false);
}
var url = cache_BL.GetValue_Parameter(Parameter.Core_ZxdService_OrderRefund);
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
//request.ContentType = "application/x-www-form-urlencoded";
// request.ContentType = "application/json";
if (Request.Files.Count > 0)
{
var file = Request.Files[0];
var fileExt = Path.GetExtension(file.FileName);
var fileName = Path.Combine("att", Guid.NewGuid().ToString() + Path.GetExtension(file.FileName));
dto.att = Path.Combine("UploadFile", fileName);
}
//dto.companycode = companyCode;
dto.companycode = Utility.GetSettingOrNullByKey("DataClientCode");
var jiami = sHelper.encyptData("UPWEBSITE", dto.ToJson());
var content = HttpUtility.UrlEncode(jiami);
var sing = HttpUtility.UrlEncode(sHelper.signData("UPWEBSITE", jiami));
request.Headers.Add("content", content);
request.Headers.Add("clientid", "UPWEBSITE");
request.Headers.Add("sign", sing);
//如果需要POST数据
if (Request.Files.Count > 0)
{
var fileStream = Request.Files[0].InputStream;
byte[] data = null;
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
data = ms.ToArray();
}
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
}
else
{
//没有参数的时候必须加上这句这个是HTTP POST要求必须带参数不然就需要说明长度是0
request.ContentLength = 0;
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string result = reader.ReadToEnd();
LogHelper.Info(result);
var retmsg = sHelper.decyptData(SecurityHelper.OrderClientIdKey, result);
var retmessage = WebHelper.JsonHelper.JsonDivertToObj<retMsg>(retmsg);
if (retmessage.result)
{
try
{
var deptcode = string.Empty;
var depo = _orderDepoist.Get(p => p.ID == dto.orderid);
if (depo != null)
{
deptcode = depo.DEPTCODE;
}
var orderRefund = new WX_SZZYORDERREFUND()
{
ID = new SEQUENCES_BL().Seq_base_get(),
SID = decimal.Parse(retmessage.retmsg),
ORDERID = dto.orderid,
REFUNDPRICE = dto.refundprice,
ACCOUNT = dto.account,
USERNAME = dto.username,
REFUNDTYPE = dto.refundtype,
REFUNDTYPENAME = string.Empty,
REFUNDDATE = dto.refunddate,
REMARK = dto.remark,
ATT = dto.att,
CTIME = DateTime.Now,
ISDELETE = 0,
CREATOR = Eid,
CREATORNAME = UserName,
ISACTURALREFUND = dto.isacturalrefund,
DEPTCODE = deptcode
};
_orderRefund.Add(orderRefund);
}
catch (Exception xx)
{
LogHelper.Error("提交总部成功,但本地提交异常,请重新提交:" + xx.ToString());
return JsonHandler.ManageMessage("提交总部成功,但本地提交异常,请重新提交", false);
}
return JsonHandler.ManageMessage("提交成功", true);
}
else
return JsonHandler.ManageMessage("提交失败,请稍后重试或者联系管理员!", false);
}
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
return JsonHandler.ManageMessage("提交失败,请稍后重试或者联系管理员!", false);
}
}
public ActionResult Export(OrderPayListReqDto dto)
{
dto.channel = int.Parse(Utility.GetSettingOrNullByKey("Channel"));
var ret = _orderDepoist.GetCoreDepositList(new Pager { page = 1, rows = int.MaxValue }, dto);
string checkedFilds = PageRequest.GetQueryString("checkedFilds").Replace("[]", "");
string checkedTitles = PageRequest.GetQueryString("checkedTitles");
if (ret.result)
{
return File(ExcelHelper.ExportListModelToExcel<OrderPayListRspDto>(ret.infolist, "订金列表", 10000, checkedFilds, checkedTitles, DataFormart), "application/ms-excel", PageRequest.GetDlownLoadName("订金列表.xls"));
}
else
{
return Json(new { message = "数据获取错误!" }, JsonRequestBehavior.AllowGet);
}
}
public FileResult GetQRCode(int id)
{
var webPath = "~/UploadFile/PayQRCode/";
var okPath = webPath + "ok.png";
var gqPath = webPath + "gq.png";
//byte[] bytes = QRCodeHelper.Create(url);
var payInfo = _orderDepoist.Get(p => p.ID == id);
if (payInfo.AUDITSTATUS == 1)
{
return File(okPath, @"image/jpeg");
}
if (!string.IsNullOrEmpty(payInfo.QRCODE) && payInfo.QRCODETIME > DateTime.Now)
{
return File(payInfo.QRCODE, @"image/jpeg");
}
else if (!string.IsNullOrEmpty(payInfo.QRCODE) && payInfo.QRCODETIME <= DateTime.Now)
{
return File(gqPath, @"image/jpeg");
}
var bytes = GenQRCode(id);
return File(bytes, @"image/jpeg");
}
[HttpPost]
public JsonResult Gen(int id)
{
var ret = GenQRCode(id);
if (ret == null)
{
return Json(new { result = false }, JsonRequestBehavior.AllowGet);
}
return Json(new { result = true }, JsonRequestBehavior.AllowGet);
}
[Inject]
public ICACHE_Q _CacheQ { get; set; }
private byte[] GenQRCode(int id)
{
try
{
var webPath = "~/UploadFile/PayQRCode/";
var dicPath = Server.MapPath(webPath);
var fileName = Guid.NewGuid() + ".jpg";
var webFilePaht = webPath + fileName;
var filePath = dicPath + fileName;
var payInfo = _orderDepoist.Get(p => p.ID == id);
LogHelper.Info("payInfo.TRADENO:" + payInfo.TRADENO);
var url = string.Empty;
LogHelper.Info("url:" + url);
var paytype = string.Empty;
if (payInfo.PAYTYPE == 1)
{
paytype = "ali";
var alpayId = cache_BL.GetValue_Parameter("alpayId");
if (string.IsNullOrEmpty(alpayId))
{
return null;
}
var client = new DefaultAopClient(AliPayConfig.gatewayUrl, AliPayConfig.app_id(alpayId), AliPayConfig.private_key(alpayId), "json", "1.0", AliPayConfig.sign_type);
var request = new AlipayTradePrecreateRequest();
request.SetNotifyUrl(AliPayConfig.notify_url);
request.BizContent = "{" +
"\"out_trade_no\":\"" + payInfo.TRADENO + "\"," +
"\"total_amount\":" + payInfo.PAYPRICE + "," +
"\"subject\":\"订金\"," +
"\"enable_pay_channels\":\"balance,bankPay,debitCardExpress,creditCard,creditCardExpress,creditCardCartoon\"" +
" }";
LogHelper.Info("aliPayRqeust:" + request.ToJson());
var response = client.Execute(request);
LogHelper.Info("aliPayUrl:" + response.ToJson());
url = response.QrCode;
}
else
{
paytype = "wx";
var mchId = cache_BL.GetValue_Parameter("mchId");
if (string.IsNullOrEmpty(mchId))
{
return null;
}
//url = _nativePay.GetPayQRCode("1", payInfo.TRADENO, "订金", (double)payInfo.PAYPRICE * 100, mchId);//老的方式,弃用
string myurl = _CacheQ.GetValue_Parameter(Parameter.uppay_h5url);// "https://yigohouse.51vip.biz/unifiedpay/wxpay/${dgAccessCode}/${payData}/i";
myurl = myurl.Replace("${dgAccessCode}", ConfigurationManager.AppSettings["wx_pay_interface_account"]);
var time = DateTimeTool.ConvertDateTimeInt(DateTime.Now.AddHours(2));//两个小时候过期
var option = new { description = "订金", out_trade_no = payInfo.TRADENO, time_expire = time, total_amount = payInfo.PAYPRICE * 100, currency = "CNY", pay_source = Convert.ToInt32(ConfigurationManager.AppSettings["wx_pay_currypay_source"]) };
var payData = sHelper.encyptDataNew(Utility.ObjectToJson(option), ConfigurationManager.AppSettings["wx_pay_interface_accesskey"], ConfigurationManager.AppSettings["wx_pay_interface_iv"]);
var xx = System.Net.WebUtility.UrlEncode(payData);
myurl = myurl.Replace("${payData}", xx);
url = myurl;
LogHelper.Info("wxPayUrl:" + url);
}
var bytes = QRCodeHelper.GetQrCode(payInfo.PAYNAME, "¥" + payInfo.PAYPRICE.ToString(), "", filePath, url, paytype);
payInfo.QRCODE = webFilePaht;
payInfo.QRCODETIME = DateTime.Now.AddHours(2);
//_orderPay.Update(payInfo);
_orderDepoist.Update(payInfo);
return bytes;
}
catch (Exception ex)
{
LogHelper.Error(ex);
return null;
}
}
private string DataFormart(string key, object value)
{
string formartValue = string.Empty;
switch (key)
{
case "auditstatus":
formartValue = (value != null && value.ToString() == "1") ? "已审核" : "未审核"; break;
case "ISUSE":
formartValue = value.ToString() == "0" ? "未使用" : (value.ToString() == "1" ? "已使用" : (value.ToString() == "2" ? "已退款" : "已开通"));
break;
//case "ACTION":
// formartValue = string.Empty;
// break;
default: formartValue = string.Format("{0}", value); break;
}
return formartValue;
}
public class WX_SZZYORDERDEPOSIT_EXPORT
{
public decimal ID { get; set; }
public string RESID { get; set; }
public decimal PAYTYPE { get; set; }
public string PAYTYPENAME { get; set; }
public DateTime? PAYDATE { get; set; }
public decimal PAYPRICE { get; set; }
public string PAYNAME { get; set; }
public string REMARK { get; set; }
public decimal? AUDITSTATUS { get; set; }
public decimal? AUDITOR { get; set; }
public string AUDITORNAME { get; set; }
public DateTime? AUDITTIME { get; set; }
public DateTime? CTIME { get; set; }
public string PAYNO { get; set; }
public decimal ISUSE { get; set; }
public string COMPANYCODE { get; set; }
public decimal? ORDERID { get; set; }
public DateTime? USETIME { get; set; }
}
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_SZZYORDERDEPOSITVIEW
{
public decimal ID { get; set; }
public string RESID { get; set; }
public decimal PAYTYPE { get; set; }
public string PAYTYPENAME { get; set; }
public DateTime? PAYDATE { get; set; }
public decimal PAYPRICE { get; set; }
public string PAYNAME { get; set; }
public string REMARK { get; set; }
public decimal? AUDITSTATUS { get; set; }
public decimal? AUDITOR { get; set; }
public string AUDITORNAME { get; set; }
public DateTime? AUDITTIME { get; set; }
public DateTime? CTIME { get; set; }
public string PAYNO { get; set; }
public decimal ISUSE { get; set; }
public string COMPANYCODE { get; set; }
public decimal? ORDERID { get; set; }
public DateTime? USETIME { get; set; }
public string REJECTREMARK { get; set; }
public decimal? LASTPRICE { get; set; }
}
}
}