/***********************************************************************
|
* Project: baifenBinfa
|
* ProjectName: 百分兵法管理系统
|
* Web: http://chuanyin.com
|
* Author:
|
* Email:
|
* CreateTime: 202403/02
|
* Description: 暂无
|
***********************************************************************/
|
|
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Threading.Tasks;
|
using CoreCms.Net.Auth.HttpContextUser;
|
using CoreCms.Net.Caching.AutoMate.RedisCache;
|
using CoreCms.Net.Configuration;
|
using CoreCms.Net.IServices;
|
using CoreCms.Net.Loging;
|
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.Entities.Expression;
|
using CoreCms.Net.Model.FromBody;
|
using CoreCms.Net.Model.ViewModels.DTO;
|
using CoreCms.Net.Model.ViewModels.UI;
|
using CoreCms.Net.Services;
|
using CoreCms.Net.Utility.Extensions;
|
using CoreCms.Net.Utility.Helper;
|
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Mvc;
|
using Newtonsoft.Json;
|
using SqlSugar;
|
|
namespace CoreCms.Net.Web.WebApi.Controllers
|
{
|
/// <summary>
|
/// 订单调用接口数据
|
/// </summary>
|
[Route("api/[controller]/[action]")]
|
[ApiController]
|
public class OrderController : ControllerBase
|
{
|
private readonly IHttpContextUser _user;
|
private readonly ICoreCmsOrderServices _orderServices;
|
private readonly ICoreCmsBillAftersalesServices _aftersalesServices;
|
private readonly ICoreCmsSettingServices _settingServices;
|
private readonly ICoreCmsAreaServices _areaServices;
|
private readonly ICoreCmsBillReshipServices _reshipServices;
|
private readonly ICoreCmsShipServices _shipServices;
|
private readonly ICoreCmsLogisticsServices _logisticsServices;
|
private readonly ICoreCmsOrderDistributionModelServices _orderDistributionModelServices;
|
private readonly IRedisOperationRepository _redisOperationRepository;
|
private readonly ICoreCmsUserServices _userServices;
|
private readonly ICoreCmsClerkServices _clerkServices;
|
private readonly ICoreCmsInvoiceServices _invoiceServices;
|
private readonly ICoreCmsPlanOrderServices _planOrderServices;
|
private readonly ICoreCmsPlanOrderItemServices _planOrderItemServices;
|
private readonly ICoreCmsOrderItemServices _orderItemServices;
|
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
public OrderController(IHttpContextUser user
|
, ICoreCmsOrderServices orderServices
|
, ICoreCmsBillAftersalesServices aftersalesServices
|
, ICoreCmsSettingServices settingServices
|
, ICoreCmsAreaServices areaServices
|
, ICoreCmsBillReshipServices reshipServices, ICoreCmsShipServices shipServices, ICoreCmsLogisticsServices logisticsServices, ICoreCmsOrderDistributionModelServices orderDistributionModelServices, IRedisOperationRepository redisOperationRepository, ICoreCmsUserServices userServices, ICoreCmsClerkServices clerkServices, ICoreCmsInvoiceServices invoiceServices
|
, ICoreCmsPlanOrderServices planOrderServices
|
, ICoreCmsPlanOrderItemServices planOrderItemServices
|
, ICoreCmsOrderItemServices orderItemServices)
|
{
|
_user = user;
|
_orderServices = orderServices;
|
_aftersalesServices = aftersalesServices;
|
_settingServices = settingServices;
|
_areaServices = areaServices;
|
_reshipServices = reshipServices;
|
_shipServices = shipServices;
|
_logisticsServices = logisticsServices;
|
_orderDistributionModelServices = orderDistributionModelServices;
|
_redisOperationRepository = redisOperationRepository;
|
_userServices = userServices;
|
_clerkServices = clerkServices;
|
_invoiceServices = invoiceServices;
|
_planOrderServices = planOrderServices;
|
_planOrderItemServices = planOrderItemServices;
|
_orderItemServices = orderItemServices;
|
}
|
|
|
//公共接口====================================================================================================
|
|
#region 发票模糊查询==================================================
|
/// <summary>
|
/// 发票模糊查询
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> GetOrderTypeModel([FromBody] GetTaxCodePost entity)
|
{
|
var jm = await _orderServices.GetTaxCode(entity.name);
|
return jm;
|
}
|
#endregion
|
|
#region 获取不同类型营销下单支持的配送方式==================================================
|
/// <summary>
|
/// 获取不同类型营销下单支持的配送方式
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> GetOrderDistributionModel([FromBody] FMIntId entity)
|
{
|
var jm = new WebApiCallBack() { status = true };
|
|
var cache = await _orderDistributionModelServices.GetCaChe();
|
var model = cache.Find(p => p.orderType == entity.id);
|
if (model == null)
|
{
|
jm.data = new
|
{
|
isOpenMailing = true,
|
isOpenHomeDelivery = true,
|
isOpenSelfDelivery = true
|
};
|
}
|
else
|
{
|
jm.data = new
|
{
|
model.isOpenMailing,
|
model.isOpenHomeDelivery,
|
model.isOpenSelfDelivery
|
};
|
}
|
|
return jm;
|
}
|
#endregion
|
|
//验证接口====================================================================================================
|
|
#region 发票模糊查询==================================================
|
/// <summary>
|
/// 发票模糊查询
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> GetTaxCode([FromBody] GetTaxCodePost entity)
|
{
|
var jm = await _orderServices.GetTaxCode(entity.name);
|
return jm;
|
}
|
#endregion
|
|
#region 创建订单==================================================
|
/// <summary>
|
/// 创建订单
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> CreateOrder([FromBody] CreateOrder entity)
|
{
|
var jm = new WebApiCallBack();
|
|
var lockKey = "LOCK_CreateOrder:user_" + _user.ID;
|
var lockHolder = Guid.NewGuid().ToString("N"); //锁持有者
|
var redisUserLock = await _redisOperationRepository.LockTakeAsync(lockKey, lockHolder, TimeSpan.FromSeconds(10));
|
if (redisUserLock)
|
{
|
try
|
{
|
var type = entity.receiptType;
|
switch (type)
|
{
|
case (int)GlobalEnumVars.OrderReceiptType.Logistics:
|
case (int)GlobalEnumVars.OrderReceiptType.IntraCityService:
|
{
|
//收货地址id
|
if (entity.ushipId == 0)
|
{
|
jm.data = 13001;
|
jm.msg = GlobalErrorCodeVars.Code13001;
|
return jm;
|
}
|
break;
|
}
|
case (int)GlobalEnumVars.OrderReceiptType.SelfDelivery:
|
{
|
//提货门店
|
if (entity.storeId == 0)
|
{
|
jm.data = 13001;
|
jm.msg = GlobalErrorCodeVars.Code13001;
|
return jm;
|
}
|
|
//提货人姓名 提货人电话
|
if (string.IsNullOrEmpty(entity.ladingName))
|
{
|
jm.data = 13001;
|
jm.msg = "请输入提货人姓名";
|
return jm;
|
}
|
|
if (string.IsNullOrEmpty(entity.ladingMobile))
|
{
|
jm.data = 13001;
|
jm.msg = "请输入提货人电话";
|
return jm;
|
}
|
break;
|
}
|
default:
|
jm.data = 13001;
|
jm.msg = "未查询到配送方式";
|
return jm;
|
}
|
|
if (string.IsNullOrEmpty(entity.cartIds))
|
{
|
jm.data = 10000;
|
jm.msg = GlobalErrorCodeVars.Code10000;
|
return jm;
|
}
|
|
jm = await _orderServices.ToAdd(_user.ID, entity.orderType, entity.cartIds, entity.receiptType,
|
entity.ushipId, entity.storeId, entity.ladingName, entity.ladingMobile, entity.memo,
|
entity.point, entity.couponCode, entity.source, entity.scene, entity.taxType, entity.taxName,
|
entity.taxCode, entity.objectId, entity.teamId, entity.requireOrder, entity.requiredFundType,
|
entity.traceId, entity.planorderId);
|
}
|
catch (Exception e)
|
{
|
jm.msg = "数据处理异常";
|
jm.otherData = e;
|
}
|
finally
|
{
|
await _redisOperationRepository.LockReleaseAsync(lockKey, lockHolder);
|
}
|
}
|
else
|
{
|
jm.msg = "当前请求太频繁_请稍后再试";
|
}
|
return jm;
|
}
|
#endregion
|
|
#region 订单预览==================================================
|
/// <summary>
|
/// 订单预览
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> OrderDetails([FromBody] FMStringId entity)
|
{
|
var jm = new WebApiCallBack();
|
|
var userId = _user.ID;
|
if ((string)entity.data == "merchant")
|
{
|
var allConfigs = await _settingServices.GetConfigDictionaries();
|
var shopManagerMobile = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ShopManagerMobile);
|
var user = await _userServices.QueryByClauseAsync(p => p.id == userId);
|
|
if (user == null)
|
{
|
jm.status = false;
|
jm.msg = "用户获取失败";
|
return jm;
|
}
|
var isShopManager = !string.IsNullOrEmpty(shopManagerMobile) && shopManagerMobile.Contains(user.mobile);
|
|
var store = await _clerkServices.QueryByClauseAsync(p => p.userId == userId);
|
if (store == null && isShopManager == false)
|
{
|
jm.status = false;
|
jm.msg = "你不是店员或管理员";
|
return jm;
|
}
|
else
|
{
|
userId = 0;
|
}
|
}
|
jm = await _orderServices.GetOrderInfoByOrderId(entity.id, userId);
|
return jm;
|
}
|
#endregion
|
|
#region 订单是否支付状态查询==================================================
|
/// <summary>
|
/// 订单预览
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> CheckOrderIsPaid([FromBody] FMStringId entity)
|
{
|
var jm = new WebApiCallBack();
|
|
var lockKey = "LOCK_CheckOrderIsPaid:user_" + _user.ID;
|
var lockHolder = Guid.NewGuid().ToString("N"); //锁持有者
|
var redisUserLock = await _redisOperationRepository.LockTakeAsync(lockKey, lockHolder, TimeSpan.FromSeconds(5));
|
if (redisUserLock)
|
{
|
try
|
{
|
if (string.IsNullOrEmpty(entity.id))
|
{
|
jm.msg = "支付单编号不能为空";
|
return jm;
|
}
|
var bl = await _orderServices.ExistsAsync(p => p.orderId == entity.id && (p.payStatus == (int)GlobalEnumVars.OrderPayStatus.Yes || p.payStatus == (int)GlobalEnumVars.OrderPayStatus.PartialYes), true);
|
jm.status = true;
|
jm.data = bl;
|
}
|
catch (Exception e)
|
{
|
jm.msg = "数据处理异常";
|
jm.otherData = e;
|
NLogUtil.WriteFileLog(NLog.LogLevel.Error, LogType.ApiRequest, "用户支付支付", JsonConvert.SerializeObject(jm));
|
}
|
finally
|
{
|
await _redisOperationRepository.LockReleaseAsync(lockKey, lockHolder);
|
}
|
}
|
else
|
{
|
jm.msg = "当前请求太频繁_请稍后再试";
|
}
|
return jm;
|
}
|
#endregion
|
|
#region 获取订单不同状态的数量==================================================
|
/// <summary>
|
/// 获取订单不同状态的数量
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> GetOrderStatusNum([FromBody] GetOrderStatusNumPost entity)
|
{
|
var jm = new WebApiCallBack();
|
|
if (string.IsNullOrEmpty(entity.ids))
|
{
|
jm.msg = "请提交要查询的订单统计类型";
|
}
|
var ids = CommonHelper.StringToIntArray(entity.ids);
|
jm = await _orderServices.GetOrderStatusNum(_user.ID, ids, entity.isAfterSale);
|
return jm;
|
|
}
|
#endregion
|
|
#region 获取个人订单列表=======================================================
|
|
/// <summary>
|
/// 获取个人订单列表
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> GetOrderList([FromBody] GetOrderListPost entity)
|
{
|
var jm = await _orderServices.GetOrderList(entity.status, _user.ID, entity.page, entity.limit);
|
return jm;
|
}
|
|
#endregion
|
|
|
#region 获取计划订单列表微信小程序=======================================================
|
|
/// <summary>
|
/// 获取计划订单列表微信小程序
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> GetPlanOrderList([FromBody] GetOrderListPost entity)
|
{
|
var jm = await _planOrderServices.GetOrderList(entity.status, _user.ID, entity.page, entity.limit, entity.money);
|
return jm;
|
}
|
|
|
|
#endregion
|
|
|
#region 获取计划订单详情=======================================================
|
|
/// <summary>
|
/// 获取计划订单详情
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> GetPlanOrder([FromBody] FMStringId entity)
|
{
|
var jm = new WebApiCallBack();
|
|
var model = await _planOrderServices.QueryByIdAsync(entity.id);
|
|
if (model == null)
|
{
|
jm.msg = "不存在此信息";
|
return jm;
|
}
|
|
//获取相关状态描述说明转换
|
model.statusText = EnumHelper.GetEnumDescriptionByValue<GlobalEnumVars.PlanOrderTiJiao>(model.status);
|
model.keYongAmount = model.keYongAmount - model.huaFeiAmount;
|
var modelItem = await _planOrderItemServices.QueryListByClauseAsync(p => p.orderId == entity.id && p.isOld == false, p => p.specification, OrderByType.Asc);
|
|
var modelItem2 = await _planOrderItemServices.QueryListByClauseAsync(p => p.orderId == entity.id && p.isOld == true, p => p.specification, OrderByType.Asc);
|
|
foreach (var coreCmsPlanOrderItem in modelItem)
|
{
|
var coreCmsPlanOrderItem1 = modelItem2.Where(p => p.name == coreCmsPlanOrderItem.name && p.specification == coreCmsPlanOrderItem.specification).FirstOrDefault();
|
if (coreCmsPlanOrderItem1 != null)
|
{
|
coreCmsPlanOrderItem.idnew = coreCmsPlanOrderItem1.id;
|
coreCmsPlanOrderItem.numsnew = coreCmsPlanOrderItem1.nums; //原订单计划数量
|
coreCmsPlanOrderItem.amountnew = coreCmsPlanOrderItem1.amount;//原订单计划金额
|
}
|
}
|
var coreCmsOrderItems = new List<CoreCmsOrderItem>();
|
//查询用计划订单积分购买的订单
|
var coreCmsOrders = await _orderServices.QueryListByClauseAsync(p => p.planorderId == model.orderId && p.isdel == false);
|
if (coreCmsOrders != null && coreCmsOrders.Count > 0)
|
{
|
var orderids = new List<string>();
|
foreach (var coreCmsOrder in coreCmsOrders)
|
{
|
orderids.Add(coreCmsOrder.orderId);
|
}
|
coreCmsOrderItems = await _orderItemServices.QueryListByClauseAsync(p => orderids.Contains(p.orderId));
|
|
}
|
|
jm.code = 0;
|
jm.status = true;
|
jm.data = new
|
{
|
model,
|
modelItem,
|
coreCmsOrderItems
|
};
|
|
return jm;
|
}
|
|
|
#region 修改计划订单==================================================
|
/// <summary>
|
/// 修改计划订单
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> UpdatePlanOrder([FromBody] CreateOrder entity)
|
{
|
var jm = new WebApiCallBack();
|
|
|
|
try
|
{
|
|
|
if (string.IsNullOrEmpty(entity.itemIds))
|
{
|
jm.data = 10000;
|
jm.msg = GlobalErrorCodeVars.Code10000;
|
return jm;
|
}
|
|
jm = await _planOrderServices.ToUpdate(entity.orderId , _user.ID, _user.Name, entity.status, entity.itemIds, entity.itemNums);
|
}
|
catch (Exception e)
|
{
|
jm.msg = "数据处理异常";
|
jm.otherData = e;
|
}
|
|
|
return jm;
|
}
|
#endregion
|
|
|
|
#endregion
|
|
#region 取消订单====================================================
|
|
/// <summary>
|
/// 取消订单
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> CancelOrder([FromBody] FMStringId entity)
|
{
|
var jm = new WebApiCallBack();
|
|
if (string.IsNullOrEmpty(entity.id))
|
{
|
jm.msg = "请提交要取消的订单号";
|
return jm;
|
}
|
var ids = entity.id.Split(",");
|
jm = await _orderServices.CancelOrder(ids, _user.ID);
|
return jm;
|
|
}
|
#endregion
|
|
#region 删除订单====================================================
|
|
/// <summary>
|
/// 删除订单
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> DeleteOrder([FromBody] FMStringId entity)
|
{
|
var jm = new WebApiCallBack();
|
|
if (string.IsNullOrEmpty(entity.id))
|
{
|
jm.msg = "请提交要取消的订单号";
|
return jm;
|
}
|
var ids = entity.id.Split(",");
|
jm.status = await _orderServices.DeleteAsync(p => ids.Contains(p.orderId) && p.userId == _user.ID);
|
jm.msg = jm.status ? "删除成功" : "删除失败";
|
return jm;
|
|
}
|
#endregion
|
|
#region 确认签收订单====================================================
|
/// <summary>
|
/// 确认签收订单
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> OrderConfirm([FromBody] FMStringId entity)
|
{
|
var jm = new WebApiCallBack();
|
|
if (string.IsNullOrEmpty(entity.id))
|
{
|
jm.msg = "请提交要确认签收的订单号";
|
return jm;
|
}
|
jm = await _orderServices.ConfirmOrder(entity.id, Convert.ToInt32(entity.data));
|
return jm;
|
|
}
|
#endregion
|
|
#region 添加售后单=======================================================
|
|
/// <summary>
|
/// 添加售后单
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> AddAftersales([FromBody] ToAddBillAfterSalesPost entity)
|
{
|
var jm = new WebApiCallBack();
|
|
jm.otherData = entity;
|
if (string.IsNullOrEmpty(entity.orderId))
|
{
|
jm.msg = GlobalErrorCodeVars.Code13100;
|
jm.code = 13100;
|
return jm;
|
}
|
if (entity.type == 0)
|
{
|
jm.msg = GlobalErrorCodeVars.Code10051;
|
jm.code = 10051;
|
return jm;
|
}
|
jm = await _aftersalesServices.ToAdd(_user.ID, entity.orderId, entity.type, entity.items, entity.images,
|
entity.reason, entity.refund);
|
jm.otherData = entity;
|
return jm;
|
|
}
|
|
#endregion
|
|
#region 获取售后单列表=======================================================
|
|
/// <summary>
|
/// 获取售后单列表
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> AftersalesList([FromBody] FMPageByStringId entity)
|
{
|
var jm = new WebApiCallBack();
|
|
jm.status = true;
|
jm.msg = "数据获取成功";
|
|
var where = PredicateBuilder.True<CoreCmsBillAftersales>();
|
where = where.And(p => p.userId == _user.ID);
|
if (!string.IsNullOrEmpty(entity.id))
|
{
|
where = where.And(p => p.orderId == entity.id);
|
}
|
var data = await _aftersalesServices.QueryPageAsync(where, p => p.createTime, OrderByType.Desc, entity.page, entity.limit);
|
|
jm.data = new
|
{
|
list = data,
|
page = data.PageIndex,
|
totalPage = data.TotalPages,
|
hasNextPage = data.HasNextPage
|
};
|
|
return jm;
|
|
}
|
|
#endregion
|
|
#region 获取单个售后单详情
|
|
/// <summary>
|
/// 获取售后单列表
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> Aftersalesinfo([FromBody] FMStringId entity)
|
{
|
var jm = new WebApiCallBack { status = true, msg = "数据获取成功" };
|
|
var info = await _aftersalesServices.GetInfo(entity.id, _user.ID);
|
|
var allConfigs = await _settingServices.GetConfigDictionaries();
|
|
var reshipAddress = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ReshipAddress);
|
var reshipArea = string.Empty;
|
var reshipId = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ReshipAreaId).ObjectToInt(0);
|
if (reshipId > 0)
|
{
|
var result = await _areaServices.GetAreaFullName(reshipId);
|
if (result.status)
|
{
|
reshipArea = result.data.ToString();
|
}
|
}
|
var reshipMobile = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ReshipMobile);
|
var reshipName = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ReshipName);
|
var reship = new
|
{
|
reshipAddress,
|
reshipArea,
|
reshipMobile,
|
reshipName
|
};
|
|
jm.data = new
|
{
|
info,
|
reship
|
};
|
return jm;
|
|
}
|
|
#endregion
|
|
#region 提交售后发货快递信息
|
|
/// <summary>
|
/// 提交售后发货快递信息
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> SendReship([FromBody] FMBillReshipForSendReshipPost entity)
|
{
|
var jm = new WebApiCallBack();
|
|
if (string.IsNullOrEmpty(entity.reshipId))
|
{
|
jm.data = jm.msg = GlobalErrorCodeVars.Code13212;
|
return jm;
|
}
|
else if (string.IsNullOrEmpty(entity.logiCode))
|
{
|
jm.data = jm.msg = GlobalErrorCodeVars.Code13213;
|
return jm;
|
}
|
else if (string.IsNullOrEmpty(entity.logiNo))
|
{
|
jm.data = jm.msg = GlobalErrorCodeVars.Code13214;
|
return jm;
|
}
|
|
|
var model = await _reshipServices.QueryByIdAsync(entity.reshipId);
|
if (model == null)
|
{
|
jm.data = jm.msg = GlobalErrorCodeVars.Code13211;
|
return jm;
|
}
|
|
var up = await _reshipServices.UpdateAsync(
|
p => new CoreCmsBillReship()
|
{
|
logiCode = entity.logiCode,
|
logiNo = entity.logiNo,
|
status = (int)GlobalEnumVars.BillReshipStatus.运输中
|
}, p => p.reshipId == entity.reshipId);
|
|
jm.status = true;
|
jm.msg = "数据保存成功";
|
|
return jm;
|
}
|
|
#endregion
|
|
#region 获取配送方式列表=======================================================
|
|
/// <summary>
|
/// 获取配送方式列表
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public WebApiCallBack GetShip([FromBody] FMIntId entity)
|
{
|
var jm = new WebApiCallBack();
|
|
jm.msg = "暂未设置配送方式";
|
|
var ship = _shipServices.GetShip(entity.id);
|
if (ship != null)
|
{
|
jm.status = true;
|
jm.data = ship;
|
jm.msg = "获取成功";
|
}
|
return jm;
|
|
}
|
|
#endregion
|
|
#region 前台物流查询接口=======================================================
|
|
/// <summary>
|
/// 前台物流查询接口
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> LogisticsByApi([FromBody] FMApiLogisticsByApiPost entity)
|
{
|
var jm = new WebApiCallBack();
|
|
if (string.IsNullOrEmpty(entity.code) || string.IsNullOrEmpty(entity.no))
|
{
|
jm.msg = GlobalErrorCodeVars.Code13225;
|
return jm;
|
}
|
|
var systemLogistics = SystemSettingDictionary.GetSystemLogistics();
|
foreach (var p in systemLogistics)
|
{
|
if (entity.code == p.sKey)
|
{
|
jm.msg = p.sDescription + "不支持轨迹查询";
|
return jm;
|
}
|
}
|
|
jm = await _logisticsServices.ExpressPoll(entity.code, entity.no, entity.mobile);
|
return jm;
|
}
|
|
#endregion
|
|
#region 检查订单发票是否已经开具=======================================================
|
|
/// <summary>
|
/// 检查订单发票是否已经开具
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> CheckInvoice([FromBody] FMStringId entity)
|
{
|
var jm = new WebApiCallBack();
|
|
if (string.IsNullOrEmpty(entity.id))
|
{
|
jm.msg = "请提交订单编码。";
|
return jm;
|
}
|
|
var isHave = await _invoiceServices.ExistsAsync(p => p.sourceId == entity.id && p.category == (int)GlobalEnumVars.OrderTaxCategory.Order);
|
|
jm.status = true;
|
jm.data = isHave;
|
|
return jm;
|
}
|
|
#endregion
|
|
|
#region 提交发票申请=======================================================
|
|
/// <summary>
|
/// 提交发票申请
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Authorize]
|
public async Task<WebApiCallBack> SubmitInvoiceApply([FromBody] FMSubmitInvoiceApply entity)
|
{
|
var jm = new WebApiCallBack();
|
|
|
if (entity.type == 3 && string.IsNullOrEmpty(entity.code))
|
{
|
jm.msg = "企业发票申请必须填写纳税人识别号";
|
return jm;
|
}
|
|
var isHave = await _invoiceServices.ExistsAsync(p => p.sourceId == entity.orderId && p.category == (int)GlobalEnumVars.OrderTaxCategory.Order);
|
if (isHave)
|
{
|
jm.msg = "此订单已经存在发票信息。";
|
return jm;
|
}
|
|
var order = await _orderServices.QueryByClauseAsync(p => p.orderId == entity.orderId);
|
if (order == null)
|
{
|
jm.msg = "订单查询失败。";
|
return jm;
|
}
|
|
if (order.userId != _user.ID)
|
{
|
jm.msg = "你无权申请发票。";
|
return jm;
|
}
|
|
//组装发票信息
|
var taxInfo = new CoreCmsInvoice
|
{
|
category = (int)GlobalEnumVars.OrderTaxCategory.Order,
|
sourceId = order.orderId,
|
userId = order.userId,
|
type = entity.type,
|
title = entity.name,
|
taxNumber = entity.code,
|
amount = order.orderAmount,
|
status = (int)GlobalEnumVars.OrderTaxStatus.No,
|
createTime = DateTime.Now
|
};
|
|
var bl = await _invoiceServices.InsertAsync(taxInfo) > 0;
|
|
jm.status = true;
|
jm.data = bl;
|
|
return jm;
|
}
|
|
#endregion
|
|
|
|
|
|
}
|
}
|