using CommonUtil;
|
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Mvc;
|
using Operater.DAL;
|
using Operater.DbModel;
|
using Operater.DTO.System;
|
using Operater.Service;
|
using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Linq;
|
using System.Threading.Tasks;
|
|
namespace Api.Operater.Controllers
|
{
|
[Route(TopConstants.API_ROUTE)]
|
public class TradeController : BaseController
|
{
|
public ITradeCreateService _itradeCreateService;
|
public ILoginUserInfoService _iloginUserInfoService;
|
public ISendGoodsService _isendGoodsService;
|
|
public TradeController(ITradeCreateService tradeCreateService, ILoginUserInfoService loginUserInfoService, ISendGoodsService sendGoodsService)
|
{
|
_itradeCreateService = tradeCreateService;
|
_iloginUserInfoService = loginUserInfoService;
|
_isendGoodsService = sendGoodsService;
|
}
|
|
/// <summary>
|
/// 创建1688订单
|
/// </summary>
|
/// <param name="request"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult CreateAliTrade([FromBody] CreateAliTradeRequest request)
|
{
|
var userInfo = _iloginUserInfoService.GetUserInfo();
|
//查询是否已经创建任务
|
var relaHis = new TradeCreateRelationDAL().ListGet(t => t.YzTid == request.YzTid);
|
if (!relaHis.IsNull() && relaHis.Count > 0)
|
{
|
var errorHis = relaHis.Where(t => t.RunStatus == 3).ToList();
|
if (errorHis.IsNull() || errorHis.Count == 0)
|
{
|
return Error("该有赞订单已经创建了1688订单,请勿重复操作!");
|
}
|
//失败的任务激活
|
TradeCreateRelation tradeCreateRelation = new TradeCreateRelation()
|
{
|
RunStatus = 0,
|
Memo = ""
|
};
|
new TradeCreateRelationDAL().Update(tradeCreateRelation, i => new { i.RunStatus, i.Memo }, t => t.YzTid == request.YzTid && t.RunStatus == 3);
|
}
|
else
|
{//创建订单关系
|
var yzOrder = new YzOrderinfoDAL().ListGet(t => t.Tid == request.YzTid);
|
List<TradeCreateRelation> relationList = new List<TradeCreateRelation>();
|
foreach (var order in yzOrder)
|
{
|
TradeCreateRelation relate = new TradeCreateRelation()
|
{
|
YzOid = order.Oid,
|
YzTid = order.Tid,
|
CreatTime = DateTime.Now,
|
RunStatus = 0,
|
TaskId = Guid.NewGuid().ToString()
|
};
|
relationList.Add(relate);
|
}
|
new TradeCreateRelationDAL().InsertRange(relationList);
|
}
|
AliTradeCreateRequest re = new AliTradeCreateRequest()
|
{
|
YzToken = userInfo.YzToken,
|
AliToken = userInfo.AlibabaToken,
|
YzTradeId = request.YzTid,
|
YzShopId=userInfo.YzShopId
|
};
|
var res = _itradeCreateService.AliTradeCreate(re);
|
if (res.Success)
|
{
|
return Success(true);
|
}
|
return Error(res.ErrorMsg);
|
}
|
|
/// <summary>
|
/// 获取有赞订单信息
|
/// </summary>
|
/// <param name="request"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult ListPageGetYzTrade([FromBody] ListPageGetYzTradeRequest request)
|
{
|
List<ListPageGetYzTradeRequestResponse> listRsp = new List<ListPageGetYzTradeRequestResponse>();
|
var expression = Expressionable.Create<YzTradeinfo>().AndIF(!request.TradeStatus.IsNullOrEmpty(), t => t.Status == request.TradeStatus)
|
.AndIF(!request.Tid.IsNullOrEmpty(), t => t.Tid == request.Tid)
|
.AndIF(!request.ReceiveMobile.IsNullOrEmpty(), t => t.ReceiverTel == request.ReceiveMobile)
|
.ToExpression();
|
int totalCount = 0;
|
var tradeList = new YzTradeinfoDAL().ListPageGet(expression, t => t.CreateTime, DbEnum.OrderType.Desc, request.PageNo, request.PageSize, ref totalCount);
|
if (tradeList.IsNull() || tradeList.Count == 0)
|
{
|
return Success(listRsp, request.PageNo, request.PageSize, 0);
|
}
|
var ids = tradeList.Select(i => i.Tid).ToList();
|
var orderList = new YzOrderinfoDAL().ListGet(t => ids.Contains(t.Tid));
|
foreach (var tradeItem in tradeList)
|
{
|
var order = orderList.Where(t => t.Tid == tradeItem.Tid).ToList();
|
ListPageGetYzTradeRequestResponse rsp = new ListPageGetYzTradeRequestResponse()
|
{
|
TradeInfo = tradeItem,
|
OrderInfo = order
|
};
|
listRsp.Add(rsp);
|
}
|
return Success(listRsp, request.PageNo, request.PageSize, totalCount);
|
}
|
|
/// <summary>
|
/// 有赞订单发货
|
/// </summary>
|
/// <param name="request"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult SendYzGoods([FromBody] SendYzGoodsRequest request)
|
{
|
var userInfo = _iloginUserInfoService.GetUserInfo();
|
int errorCount = 0;
|
foreach (var yzOid in request.YzOid)
|
{
|
YzSendGoodsRequest yzSendGoodsRequest = new YzSendGoodsRequest()
|
{
|
YzOid = yzOid,
|
YzToken = userInfo.YzToken
|
};
|
var res = _isendGoodsService.YzSendGoods(yzSendGoodsRequest);
|
if (!res.IsSuccess)
|
{
|
return Error(res.ErrorMsg);
|
}
|
}
|
//if (errorCount > 0)
|
//{
|
// return Error(errorCount + "笔子订单发货失败!");
|
//}
|
return Success(true);
|
}
|
|
|
/// <summary>
|
/// 获取待创建/待发货1688订单
|
/// </summary>
|
/// <param name="request"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetWaiteCreateTrade([FromBody] GetWaiteCreateTradeRequest request)
|
{
|
List<GetWaiteCreateTradeResponse> response = new List<GetWaiteCreateTradeResponse>();
|
string where = $" ali_trade_status='0' AND trade_status='WAIT_SELLER_SEND_GOODS' ";
|
|
if (request.SearchType == 1)
|
{//获取待发货
|
where = $" ali_goods_status='1' and yz_goods_status='0' ";
|
}
|
where += request.YzTid.IsNullOrEmpty() ? "" : $" and tid='{request.YzTid}' ";
|
|
DataTable countDt = new YzOrderinfoDAL().SearchBySqlDataTable("", $"select count(1) as count from yz_orderinfo where {where}");
|
if (countDt.IsNull() || countDt.Rows.Count == 0 || countDt.Rows[0]["count"].ToString() == "0")
|
{
|
return Success(response, request.PageNo, request.PageSize, 0);
|
}
|
string searchField = "tid,create_time,pay_time,status,status_str,update_time,delivery_address,delivery_city,delivery_district,delivery_province,receiver_name,receiver_tel,total_fee,payment";
|
|
string searchSql = $"select {searchField} from yz_tradeinfo where tid in (select a.* from (select distinct(tid) as tid from yz_orderinfo where {where} order by create_time desc limit {request.PageSize} offset {(request.PageNo - 1) * request.PageSize}) a)";
|
DataTable TidDt = new YzOrderinfoDAL().SearchBySqlDataTable("", searchSql);
|
if (TidDt.IsNull() || TidDt.Rows.Count == 0)
|
{
|
return Success(response, request.PageNo, request.PageSize, 0);
|
}
|
//var orders = new YzOrderinfoDAL().ListPageGet(t => t.AliTradeStatus == 0, t => t.CreateTime, DbEnum.OrderType.Desc, t => t.Tid, request.PageNo, request.PageSize, ref totalCount).Select(t => t.Tid);
|
|
foreach (DataRow tid in TidDt.Rows)
|
{
|
var expression = Expressionable.Create<YzOrderinfo>().And(t => t.Tid == tid["tid"].ToString())
|
.AndIF(request.SearchType == 0, t => t.AliTradeStatus == 0)
|
.AndIF(request.SearchType == 1, t => t.AliTradeStatus == 1)
|
.ToExpression();
|
var oids = new YzOrderinfoDAL().ListGet(expression);
|
DateTime? paytime;
|
if (tid["pay_time"].IsNull() || tid["pay_time"].ToString().IsNullOrEmpty())
|
{
|
paytime = null;
|
}
|
else
|
{
|
paytime = Convert.ToDateTime(tid["pay_time"].ToString());
|
}
|
string ss = tid["pay_time"] == null ? "" : "";
|
GetWaiteCreateTradeResponse resItem = new GetWaiteCreateTradeResponse()
|
{
|
Tid = tid["tid"].ToString(),
|
create_time = Convert.ToDateTime(tid["create_time"].ToString()),
|
pay_time = paytime,
|
status_str = tid["status_str"].ToString(),
|
update_time = Convert.ToDateTime(tid["update_time"].ToString()),
|
delivery_address = tid["delivery_address"].ToString(),
|
delivery_city = tid["delivery_city"].ToString(),
|
delivery_district = tid["delivery_district"].ToString(),
|
delivery_province = tid["delivery_province"].ToString(),
|
receiver_name = tid["receiver_name"].ToString(),
|
receiver_tel = tid["receiver_tel"].ToString(),
|
total_fee = tid["total_fee"].ToString(),
|
payment = tid["payment"].ToString(),
|
Orders = oids
|
};
|
response.Add(resItem);
|
}
|
|
|
return Success(response, request.PageNo, request.PageSize, int.Parse(countDt.Rows[0]["count"].ToString()));
|
}
|
}
|
}
|