580 lines
23 KiB
C#
580 lines
23 KiB
C#
using Core.Web.App_Start;
|
|
using Core.Web.WebHelper;
|
|
using CRM.Core.BLL;
|
|
using CRM.Core.BLL.Application.Pay;
|
|
using CRM.Core.BLL.Util;
|
|
using CRM.Core.BLL.Wx;
|
|
using CRM.Core.Common.Layui;
|
|
using CRM.Core.DTO;
|
|
using CRM.Core.Model.Entity;
|
|
using CRM.Core.Model.Enum;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Web.Mvc;
|
|
using WX.CRM.Common;
|
|
|
|
namespace Core.Web.Controllers
|
|
{
|
|
public class OrderPayController : BaseController
|
|
{
|
|
CACHE_BL _cache = new CACHE_BL();
|
|
WX_SZZYORDER_BL _order = new WX_SZZYORDER_BL();
|
|
WX_SzzyOrderPay_BL _orderPay = new WX_SzzyOrderPay_BL();
|
|
WX_SzzyOrderDeposit_BL _orderDeposit = new WX_SzzyOrderDeposit_BL();
|
|
private PayServices _payService = new PayServices();
|
|
|
|
[HttpGet]
|
|
[AuthorizeRedirect(RightsConfig.CONST_到款管理, ToolBarConfig.CONST_NotButton, true)]
|
|
public ActionResult Index()
|
|
{
|
|
ViewBag.rightCode = RightsConfig.CONST_到款管理;
|
|
ViewBag.companyList = _cache.GetCompanyVirtual();
|
|
|
|
return View();
|
|
}
|
|
|
|
[HttpPost]
|
|
[AuthorizeRedirect(RightsConfig.CONST_到款管理, ToolBarConfig.CONST_NotButton, false)]
|
|
public JsonResult Index(Laypage pager, string columns, decimal? orderId, decimal? auditStatus, string payno, string companyCode, int? payType, DateTime? sTime, DateTime? eTime, string channel, string wxShopOrderNo)
|
|
{
|
|
if (!string.IsNullOrEmpty(wxShopOrderNo))
|
|
{
|
|
var order = _order.Get(p => p.wXShopOrderNo == wxShopOrderNo);
|
|
if (order != null)
|
|
{
|
|
orderId = order.ORDERID;
|
|
}
|
|
}
|
|
|
|
var where = PredicateExtensionses.True<WX_SzzyOrderPay>();
|
|
if (orderId.HasValue)
|
|
where = where.And(p => p.orderid == orderId);
|
|
if (!string.IsNullOrWhiteSpace(payno))
|
|
where = where.And(p => p.payno == payno);
|
|
if (auditStatus.HasValue)
|
|
where = where.And(p => p.auditstatus == auditStatus);
|
|
if (!string.IsNullOrEmpty(companyCode))
|
|
where = where.And(p => p.companycode == companyCode);
|
|
if (payType.HasValue)
|
|
where = where.And(p => p.paytype == payType);
|
|
if (sTime.HasValue)
|
|
where = where.And(p => p.paydate >= sTime.Value);
|
|
if (eTime.HasValue)
|
|
{
|
|
var endtime = eTime.Value.AddDays(1);
|
|
where = where.And(p => p.paydate < endtime);
|
|
}
|
|
where = where.And(m => m.isdelete == 0);
|
|
if (!string.IsNullOrEmpty(channel))
|
|
{
|
|
var arr0 = channel.Split('|');
|
|
if (arr0.Length > 1)
|
|
{
|
|
var whereOr = PredicateExtensionses.False<WX_SzzyOrderPay>();
|
|
foreach (var item in arr0)
|
|
{
|
|
var a = item.Split(',');
|
|
var min = Convert.ToInt32(a[0]);
|
|
var max = Convert.ToInt32(a[1]);
|
|
whereOr = whereOr.Or(m => m.channel >= min && m.channel <= max);
|
|
}
|
|
where = where.And(whereOr);
|
|
//where = where.And(m => m.channel >= 1100 && m.channel <= 1100 || m.channel >= 26600 && m.channel <= 26699);
|
|
}
|
|
else
|
|
{
|
|
var arr = channel.Split(',');
|
|
var min = Convert.ToInt32(arr[0]);
|
|
var max = Convert.ToInt32(arr[1]);
|
|
where = where.And(m => m.channel >= min && m.channel <= max);
|
|
}
|
|
|
|
}
|
|
var list = _orderPay.GetList(where, p => p.id, pager).ToList();
|
|
//var sumList = _orderPay.GetList(where, p => p.id, new Laypage() { page = 1, limit = int.MaxValue });
|
|
var sum = _orderPay.Sum(where, m => m.payprice) ?? 0;
|
|
|
|
var orderArr = list.Select(p => Convert.ToDecimal(p.orderid));
|
|
|
|
var orderList = _order.GetList(p => orderArr.Contains(p.ORDERID));
|
|
var view = new List<OrderPayView>();
|
|
foreach (var item in list)
|
|
{
|
|
var order = orderList.FirstOrDefault(p => p.ORDERID == item.orderid);
|
|
|
|
var info = new OrderPayView()
|
|
{
|
|
id = item.id,
|
|
orderid = item.orderid,
|
|
wxshoporderno = order != null ? order.wXShopOrderNo : string.Empty,
|
|
payno = item.payno,
|
|
needpay = item.needpay,
|
|
paytypename = item.paytypename,
|
|
paydate = item.paydate,
|
|
payprice = item.payprice,
|
|
payname = item.payname,
|
|
remark = item.remark,
|
|
auditstatus = item.auditstatus,
|
|
rejectremark = item.rejectremark
|
|
};
|
|
view.Add(info);
|
|
}
|
|
|
|
var data = new { msg = "数据加载成功!", count = pager.count, code = 0, data = view, totalRow = new { payprice = sum } };
|
|
return Json(data, JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
[HttpGet]
|
|
public ActionResult Add(int orderid)
|
|
{
|
|
var order = _order.GetModel(orderid);
|
|
var model = new WX_SzzyOrderPay();
|
|
model.orderid = Convert.ToInt32(order.ORDERID);
|
|
model.needpay = order.NEEDPAY.GetValueOrDefault();
|
|
return View(model);
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult Add(WX_SzzyOrderPay orderPay)
|
|
{
|
|
try
|
|
{
|
|
//LogHelper.Info(orderPay.ToJson());
|
|
if (ModelState.IsValid)
|
|
{
|
|
var payTypeName = _cache.GetList_Parameter(ParameterGroup.OrderPayType).FirstOrDefault(p => p.PARAVALUE == orderPay.paytype.ToString()).PARANAME;
|
|
orderPay.paytypename = payTypeName;
|
|
//orderPay.paytypename = "支付宝";
|
|
|
|
_orderPay.Add(orderPay);
|
|
|
|
return Json(new retMsg { result = true }, JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
return Json(new retMsg { result = false, retmsg = "实体验证未通过" }, JsonRequestBehavior.AllowGet);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.Error(ex.ToString());
|
|
return Json(new retMsg { result = false, retmsg = ex.ToString() }, JsonRequestBehavior.AllowGet);
|
|
}
|
|
}
|
|
|
|
[HttpGet]
|
|
[AuthorizeRedirect(RightsConfig.CONST_到款管理, ToolBarConfig.CONST_Other1, true)]
|
|
public ActionResult Audit(int id)
|
|
{
|
|
var model = _orderPay.Get(p => p.id == id);
|
|
return View(model);
|
|
}
|
|
|
|
[HttpPost]
|
|
[AuthorizeRedirect(RightsConfig.CONST_到款管理, ToolBarConfig.CONST_Other1, false)]
|
|
public JsonResult Audit(WX_SzzyOrderPay orderPayDto)
|
|
{
|
|
try
|
|
{
|
|
var orderPay = _orderPay.Get(p => p.id == orderPayDto.id);
|
|
|
|
var order = _order.Get(p => p.ORDERID == orderPay.orderid);
|
|
|
|
//如果订单已经开通,不需要进行到款操作
|
|
if (order.ORDERSTATUS == "60")
|
|
{
|
|
return Json(new retMsg { result = false, retcode = 60 }, JsonRequestBehavior.AllowGet);
|
|
}
|
|
else if (order.ORDERSTATUS == "70")
|
|
{
|
|
return Json(new retMsg { result = false, retcode = 70 }, JsonRequestBehavior.AllowGet);
|
|
}
|
|
else if (order.ORDERSTATUS == "220")
|
|
{
|
|
return Json(new retMsg { result = false, retcode = 220 }, JsonRequestBehavior.AllowGet);
|
|
}
|
|
//var orderPayNo = _orderPay.Get(p => p.payno == orderPayDto.payno && p.auditstatus == 1);
|
|
var orderPayNo = _orderPay.Get(p => p.payno == orderPay.payno && p.auditstatus == 1);
|
|
if (orderPayNo != null)
|
|
{
|
|
return Json(new retMsg { result = false, retcode = 10 }, JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
//orderPay.payno = orderPayDto.payno;
|
|
//orderPay.payprice = orderPayDto.payprice; //到账金额根据实际打款金额
|
|
//orderPay.paydate = orderPayDto.paydate; //到账时间根据实际入账时间
|
|
|
|
_orderPay.Audit(orderPay, order, int.Parse(UserId.ToString()), UserName);
|
|
|
|
return Json(new retMsg { result = true }, JsonRequestBehavior.AllowGet);
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.Error(ex.ToString());
|
|
return Json(new retMsg { result = false, retcode = 0, retmsg = ex.ToString() }, JsonRequestBehavior.AllowGet);
|
|
}
|
|
}
|
|
[AuthorizeRedirect(RightsConfig.CONST_到款管理, ToolBarConfig.CONST_Other2, false)]
|
|
public JsonResult Batch(int[] ids)
|
|
{
|
|
try
|
|
{
|
|
var errMsg = string.Empty;
|
|
|
|
foreach (var id in ids)
|
|
{
|
|
var orderPay = _orderPay.Get(p => p.id == id);
|
|
|
|
if (orderPay.auditstatus == 1 || orderPay.auditstatus == -1)
|
|
{
|
|
//如果已经确认或者驳回就跳过
|
|
continue;
|
|
}
|
|
|
|
if (orderPay.orderid.ToString().StartsWith("2"))
|
|
{
|
|
errMsg += "订金:" + orderPay.orderid.ToString() + "不能执行该操作<br />";
|
|
continue;
|
|
}
|
|
|
|
var order = _order.Get(p => p.ORDERID == orderPay.orderid);
|
|
|
|
if (order == null)
|
|
{
|
|
errMsg += "订单号:" + orderPay.orderid.ToString() + "为空<br />";
|
|
continue;
|
|
}
|
|
|
|
//如果订单已经开通,不需要进行到款操作
|
|
if (order.ORDERSTATUS == "60")
|
|
{
|
|
errMsg += "订单号:" + order.ORDERID.ToString() + "已经关闭<br />";
|
|
continue;
|
|
}
|
|
else if (order.ORDERSTATUS == "70")
|
|
{
|
|
errMsg += "订单号:" + order.ORDERID.ToString() + "已经退款<br />";
|
|
continue;
|
|
}
|
|
else if (order.ORDERSTATUS == "220")
|
|
{
|
|
errMsg += "订单号:" + order.ORDERID.ToString() + "已经开通<br />";
|
|
continue;
|
|
}
|
|
|
|
var orderPayNo = _orderPay.Get(p => p.payno == orderPay.payno && p.auditstatus == 1);
|
|
if (orderPayNo != null)
|
|
{
|
|
errMsg += "流水号:" + orderPayNo.payno + "已经使用<br />";
|
|
continue;
|
|
}
|
|
|
|
try
|
|
{
|
|
_orderPay.Audit(orderPay, order, int.Parse(UserId.ToString()), UserName);
|
|
}
|
|
catch (Exception ee)
|
|
{
|
|
errMsg += "流水号:" + orderPay.payno + "未执行成功!<br />";
|
|
LogHelper.Error(ee.ToString());
|
|
}
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(errMsg))
|
|
{
|
|
return Json(new retMsg { result = false, retcode = -1, retmsg = errMsg }, JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
return Json(new retMsg { result = true }, JsonRequestBehavior.AllowGet);
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.Error(ex.ToString());
|
|
return Json(new retMsg { result = false, retcode = 0, retmsg = ex.ToString() }, JsonRequestBehavior.AllowGet);
|
|
}
|
|
}
|
|
|
|
[HttpGet]
|
|
[AuthorizeRedirect(RightsConfig.CONST_到款管理, ToolBarConfig.CONST_Other3, true)]
|
|
public ActionResult Exists()
|
|
{
|
|
return View();
|
|
}
|
|
[AuthorizeRedirect(RightsConfig.CONST_到款管理, ToolBarConfig.CONST_Other3, false)]
|
|
public JsonResult Exists(int? payType, DateTime? startDate, DateTime? endDate)
|
|
{
|
|
if (!startDate.HasValue)
|
|
startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
|
|
if (!endDate.HasValue)
|
|
endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day + 1);
|
|
else
|
|
endDate = endDate.Value.AddDays(1);
|
|
|
|
var file = Request.Files[0];
|
|
|
|
var dt = new DataTable();
|
|
|
|
dt = ExcelToDataTable(file);
|
|
|
|
var payNoList = new List<PaynoDiff>();
|
|
foreach (DataRow item in dt.Rows)
|
|
{
|
|
DateTime d = DateTime.Now;
|
|
if (!DateTime.TryParse(item[2].ToString(), out d))
|
|
{
|
|
d = DateTime.ParseExact(item[2].ToString(), "dd-M月-yyyy", System.Globalization.CultureInfo.InvariantCulture);
|
|
}
|
|
payNoList.Add(new PaynoDiff(item[0].ToString(), item[1].ToString(), d.ToString("yyyy-MM-dd")));
|
|
}
|
|
|
|
var orderPayAll = _orderPay.GetList(p => p.auditstatus == 1 && p.paydate >= startDate && p.paydate < endDate);
|
|
|
|
//LogHelper.Info(orderPayAll.Count().ToString());
|
|
|
|
var notfoundPaynoList = payNoList.Where(p => !orderPayAll.Select(m => m.payno).Contains(p.PayNo));
|
|
|
|
var data = new
|
|
{
|
|
msg = "数据加载成功!",
|
|
count = int.MaxValue,
|
|
code = 0,
|
|
data = notfoundPaynoList
|
|
};
|
|
return Json(data, JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
[HttpPost]
|
|
[AuthorizeRedirect(RightsConfig.CONST_到款管理, ToolBarConfig.CONST_Other1, false)]
|
|
public JsonResult Reject(int id, int status, string rejectremark)
|
|
{
|
|
var retmsg = _orderPay.Reject(id, status, rejectremark, int.Parse(UserId.ToString()), UserName);
|
|
return Json(retmsg, JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
[HttpGet]
|
|
public ActionResult Import()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult Import(DateTime? startDate, DateTime? endDate, int paytype)
|
|
{
|
|
if (!startDate.HasValue)
|
|
startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
|
|
if (!endDate.HasValue)
|
|
endDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day + 1);
|
|
else
|
|
endDate = endDate.Value.AddDays(1);
|
|
|
|
var file = Request.Files[0];
|
|
|
|
var list = new List<OrderPayDiff>();
|
|
var list2 = new List<OrderPayDiff>();
|
|
var list3 = new List<OrderPayDiff>();
|
|
|
|
var dt = new DataTable();
|
|
|
|
if (Path.GetExtension(file.FileName).ToLower().Equals(".csv"))
|
|
{
|
|
dt = CsvToDataTable(file);
|
|
}
|
|
else
|
|
{
|
|
dt = ExcelToDataTable(file);
|
|
}
|
|
|
|
//var payNos = new List<string>();
|
|
//foreach (DataRow item in dt.Rows)
|
|
//{
|
|
// LogHelper.Info(item[5].ToString() + "," + item[24].ToString());
|
|
// //payNos.Add(item[5].ToString());
|
|
//}
|
|
|
|
//时间段内所有提交上来的数据
|
|
var orderPayAll = _orderPay.GetList(p => p.paydate >= startDate && p.paydate < endDate && p.auditstatus == 1);
|
|
//根据excel匹配出未审核数据
|
|
//var orderPayList = orderPayAll.Where(p => payNos.Contains(p.payno) && p.auditstatus == 0);
|
|
//找出有提交多条支付记录的数据(包含了已审核、未审核)
|
|
//var groupOrderPay = orderPayAll.GroupBy(p => p.payno).Where(x => x.Count() > 1).Select(p => p.Key);
|
|
//有多条记录并且有审核通过的记录
|
|
//var manyAuditOrderPay = orderPayAll.Where(p => groupOrderPay.Contains(p.payno) && p.auditstatus == 1).Select(p => p.payno);
|
|
//有多条并且记录是没有审核过的记录
|
|
//var manyOrderPay = orderPayList.Where(p => groupOrderPay.Contains(p.payno) && !manyAuditOrderPay.Contains(p.payno));
|
|
//有提交到款,未匹配到到款记录的数据
|
|
//var notfoundPayNo = orderPayAll.Where(p => p.auditstatus == 0).Except(orderPayList).Except(manyOrderPay);
|
|
|
|
//orderPayList = orderPayList.Except(manyOrderPay).ToList();
|
|
|
|
var payNos = new List<string>();
|
|
|
|
foreach (DataRow item in dt.Rows)
|
|
{
|
|
foreach (var subItem in orderPayAll)
|
|
{
|
|
var payNo = paytype == 6 ? item[1].ToString() : (paytype == 5 ? item[5].ToString() : item[4].ToString());
|
|
if (payNo.StartsWith("`"))
|
|
{
|
|
payNo = payNo.Remove(0, 1);
|
|
}
|
|
|
|
if (payNo == subItem.payno)
|
|
{
|
|
var paydate = paytype == 6 ? item[0].ToString() : (paytype == 5 ? item[0].ToString() : item[1].ToString());
|
|
decimal price = 0;
|
|
var priceStr = paytype == 6 ? item[5].ToString() : (paytype == 5 ? item[12].ToString() : item[12].ToString());
|
|
if (priceStr.StartsWith("`"))
|
|
{
|
|
price = decimal.Parse(priceStr.Remove(0, 1));
|
|
}
|
|
else
|
|
{
|
|
price = decimal.Parse(priceStr);
|
|
}
|
|
if (price == subItem.payprice)
|
|
{
|
|
list.Add(new OrderPayDiff(subItem.orderid, "`" + subItem.payno, subItem.payprice.ToString(), price.ToString(), paydate, "正常"));
|
|
}
|
|
else
|
|
{
|
|
list.Add(new OrderPayDiff(subItem.orderid, "`" + subItem.payno, subItem.payprice.ToString(), price.ToString(), paydate, "异常"));
|
|
}
|
|
payNos.Add(payNo);
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach (DataRow item in dt.Rows)
|
|
{
|
|
var payNo = paytype == 6 ? item[1].ToString() : (paytype == 5 ? item[5].ToString() : item[4].ToString());
|
|
var priceStr = paytype == 6 ? item[5].ToString() : (paytype == 5 ? item[12].ToString() : item[12].ToString());
|
|
var paydate = paytype == 6 ? item[0].ToString() : (paytype == 5 ? item[0].ToString() : item[1].ToString());
|
|
if (payNo.StartsWith("`"))
|
|
{
|
|
payNo = payNo.Remove(0, 1);
|
|
}
|
|
if (!payNos.Any(p => p == payNo))
|
|
{
|
|
list2.Add(new OrderPayDiff(0, "`" + payNo, priceStr, priceStr, paydate, ""));
|
|
}
|
|
}
|
|
|
|
var data = new
|
|
{
|
|
msg = "数据加载成功!",
|
|
count = int.MaxValue,
|
|
code = 0,
|
|
data = list,
|
|
data2 = list2
|
|
};
|
|
return Json(data, JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
[HttpPost]
|
|
public JsonResult SetPayName(int id, string payName)
|
|
{
|
|
var rsp = _payService.SetPayName(id, payName);
|
|
|
|
return Json(rsp, JsonRequestBehavior.AllowGet);
|
|
}
|
|
|
|
//[HttpPost]
|
|
//public JsonResult BatchAudit(List<OrderPayDiff> orders)
|
|
//{
|
|
// //LogHelper.Info(orders.Count.ToString());
|
|
// var errorOrder = new List<OrderPayDiff>();
|
|
// foreach (var item in orders)
|
|
// {
|
|
// try
|
|
// {
|
|
// var orderPay = _orderPay.Get(p => p.id == item.Id);
|
|
|
|
// var order = _order.Get(p => p.ORDERID == orderPay.orderid);
|
|
|
|
// var orderPayNo = _orderPay.Get(p => p.payno == orderPay.payno && p.auditstatus == 1);
|
|
|
|
// if (order.ORDERSTATUS == "220" || order.ORDERSTATUS == "70" || orderPayNo != null)
|
|
// {
|
|
// errorOrder.Add(item);
|
|
// }
|
|
// else
|
|
// {
|
|
// orderPay.payprice = item.PayPriceExcel; //到账金额根据实际打款金额
|
|
// orderPay.paydate = item.PayDateExcel; //到账时间根据实际入账时间
|
|
|
|
// _orderPay.Audit(orderPay, order, int.Parse(UserId.ToString()), UserName);
|
|
// }
|
|
// }
|
|
// catch (Exception ex)
|
|
// {
|
|
// LogHelper.Error(ex.ToString());
|
|
// errorOrder.Add(item);
|
|
// }
|
|
// }
|
|
// var data = new LayuiData<OrderPayDiff>()
|
|
// {
|
|
// msg = "数据加载成功!",
|
|
// count = errorOrder.Count,
|
|
// code = 0,
|
|
// data = errorOrder
|
|
// };
|
|
// return Json(data, JsonRequestBehavior.AllowGet);
|
|
|
|
//}
|
|
|
|
}
|
|
|
|
public class OrderPayDiff
|
|
{
|
|
public OrderPayDiff()
|
|
{
|
|
}
|
|
|
|
public OrderPayDiff(int orderId, string payNo, string payPrice, string payPriceExcel, string payDateExcel, string status)
|
|
{
|
|
OrderId = orderId;
|
|
PayNo = payNo;
|
|
PayPrice = payPrice;
|
|
PayPriceExcel = payPriceExcel;
|
|
PayDateExcel = payDateExcel;
|
|
Status = status;
|
|
}
|
|
|
|
public int OrderId { get; set; }
|
|
public string PayNo { get; set; }
|
|
public string PayPrice { get; set; }
|
|
//public string PayName { get; set; }
|
|
//public DateTime? PayDate { get; set; }
|
|
|
|
//public string PayNoExcel { get; set; }
|
|
public string PayPriceExcel { get; set; }
|
|
//public string PayAccountExcel { get; set; }
|
|
//public string PayNameExcel { get; set; }
|
|
public string PayDateExcel { get; set; }
|
|
public string Status { get; set; }
|
|
|
|
}
|
|
|
|
public class PaynoDiff
|
|
{
|
|
public PaynoDiff()
|
|
{
|
|
}
|
|
|
|
public PaynoDiff(string payNo, string payPrice, string payDate)
|
|
{
|
|
PayNo = payNo;
|
|
PayPrice = payPrice;
|
|
PayDate = payDate;
|
|
}
|
|
|
|
public string PayNo { get; set; }
|
|
public string PayPrice { get; set; }
|
|
public string PayDate { get; set; }
|
|
}
|
|
|
|
|
|
} |