mirror of
https://github.com/CoreUnion/CoreShop.git
synced 2026-10-17 05:12:39 +08:00
71497600a5
* Merge branch 'master' into dahuihui/develop * 【后端】发货方式调增为批量订单发货和单个订单发货;【后端】增加【门店自提】自动发货,并支持后台设置开启,当开启后【门店自提】订单将自动发货,… * 调试商品展示页面 * 因mysql不支持一定格式数据排序,调整部分longtext字段为text格式,保持富文本字段为longtext格式 * Merge branch 'master' into dahuihui/develop * 修复后台页面设计,导航组跳转问题 #I42RJ4 #I3VUZR * 修复后台页面设计,导航组跳转问题 #I42RJ4 * Merge branch 'master' into dahuihui/develop * Merge branch 'master' into dahuihui/develop * 微信小程序登录获取手机号码不成功 * 修复代理商品池商品同步价格展示问题。 * Merge branch 'develop' into dahuihui/develop * 修复sku删除单个货品后,未清理cache导致重复加载的问题。(感谢vikinghunter提供修改建议) #I44XMY * 1、【后端】修复后台上传类型不同导致文件夹路径问题差异化问题。 #I45QKZ * Merge branch 'develop' into dahuihui/develop * 1、【后端】修复保存商品未更新sku序列问题。#I44OOG * 修复更新pages主键无说明导致更新失败问题。 * 修复sku输入小写逗号,导致前端展示会被截断的问题。 * 修复代码生成器引用实体目录错误问题。 * Merge branch 'develop' into dahuihui/develop * 修复redis提示端口号错误问题。 * 【接口】修复微信支付失败回调存储数据长度过短导致写入失败问题。 * 同步 * 增加消息转发类型 * 调整细节 * 修复github链接 * 1、【后端】移除业务逻辑中的【MediatR】及中介者模式,启用【Redis队列】处理。 * Merge branch 'develop' into dahuihui/develop * 升级编辑器为CKEditor5 * Merge branch 'develop' into dahuihui/develop * Merge branch 'develop' into dahuihui/develop * 【后端】优化后端设置权限角色,反射controller和action的效率问题。 * 【后端】修复后端编辑商品问题。 * 【后端】修复腾讯云cos存储未调用bucket问题。#I42DF0 * Merge branch 'develop' into dahuihui/develop * 启用新域名及演示平台 * Merge branch 'develop' into dahuihui/develop * Merge branch 'develop' into dahuihui/develop * 调整说明 * Merge branch 'develop' into dahuihui/develop * 删除不需要的菜单 * 修复域名转发获取ip地址长度过长问题。 * 1、【后端】调整全局错误返回提示语。2、【数据库】修复20日删除3个表后,未清理干净问题。 * Merge branch 'develop' into dahuihui/develop * Merge branch 'develop' into dahuihui/develop * 调整全局错误返回提示语 * 修复商品批量处理报错的问题并优化展示界面。#I3X8PP * Merge branch 'develop' into dahuihui/develop * Merge branch 'develop' into dahuihui/develop * 增加过滤敏感词的功能。#I3W6CM * 增加Issue 和 Pull Request 模板 * 修复自定义上传路径上传至站点根目录,而非wwwroot的问题 #I41TD1 * Merge branch 'develop' into dahuihui/develop * 修复自定义上传路径的表单命名异常问题 * 使用新数据库 * 【数据库】修复mysql数据库decimal类型未带小数的问题。#I3WAUY * 更新数据库及脚本 * 2021-07-20 * Merge branch 'develop' into dahuihui/develop * 修复webapi不进入调试断点的问题。 * Merge branch 'develop' into dahuihui/develop * 修复后台前后端分离table面板启用自定义域名问题。 * 修复后台前后端分离域名未增加到html问题。 * Merge branch 'develop' into dahuihui/develop * 【后端】修复修改登录用户真实姓名长度问题。 * 修复后台管理配送方式维护错误问题 * 1、修复小程序注册问题,导致交互事情。不然盛派的组件有bug,在不注册微信公众号只注册微信小程序的时候,进行小程序消息操作,默认还是走的是微… * 修复消息模板不推送的问题 * Merge branch 'develop' into dahuihui/develop * Merge branch 'develop' into dahuihui/develop * 修复过期失效文档 * 调整代码生成器,增加初始化事务 * 调整接口端提示界面 * 修复弹窗不居中问题 * 调整一些命名方式 * 修复uni-app前端,用户订单列表【确认收货】按钮失效问题 * 1、修复mysql数据库下,报表统计sql的语法错误。2、为方便前端在不部署接口及后端的情况下测试uni-app前端,默认增加了测试接口地址… * Merge branch 'develop' into dahuihui/develop * 调整命名 * 增加docker-compose部署 * Merge branch 'develop' into dahuihui/develop * 修复因linux下存在数据与文件名称大小写不对应,导致找不到数据库表的问题,特重新发布一份表名与实体名称一一对应脚本。 * 新mysql表名存在大小写问题
528 lines
17 KiB
C#
528 lines
17 KiB
C#
/***********************************************************************
|
|
* Project: CoreCms
|
|
* ProjectName: 核心内容管理系统
|
|
* Web: https://www.corecms.net
|
|
* Author: 大灰灰
|
|
* Email: jianweie@163.com
|
|
* CreateTime: 2021/1/31 21:45:10
|
|
* Description: 暂无
|
|
***********************************************************************/
|
|
|
|
|
|
using System;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using CoreCms.Net.Auth.HttpContextUser;
|
|
using CoreCms.Net.Configuration;
|
|
using CoreCms.Net.IServices;
|
|
using CoreCms.Net.Model.Entities;
|
|
using CoreCms.Net.Model.Entities.Expression;
|
|
using CoreCms.Net.Model.FromBody;
|
|
using CoreCms.Net.Model.ViewModels.UI;
|
|
using CoreCms.Net.Model.ViewModels.View;
|
|
using CoreCms.Net.Utility.Extensions;
|
|
using CoreCms.Net.Utility.Helper;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using SqlSugar;
|
|
|
|
namespace CoreCms.Net.Web.WebApi.Controllers
|
|
{
|
|
/// <summary>
|
|
/// 订单调用接口数据
|
|
/// </summary>
|
|
[Route("api/[controller]/[action]")]
|
|
[ApiController]
|
|
public class OrderController : Controller
|
|
{
|
|
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 ICoreCmsBillDeliveryServices _billDeliveryServices;
|
|
private readonly ICoreCmsLogisticsServices _logisticsServices;
|
|
private readonly ICoreCmsGoodsServices _goodsServices;
|
|
private readonly ICoreCmsStoreServices _storeServices;
|
|
|
|
/// <summary>
|
|
/// 构造函数
|
|
/// </summary>
|
|
public OrderController(IHttpContextUser user
|
|
, ICoreCmsOrderServices orderServices
|
|
, ICoreCmsBillAftersalesServices aftersalesServices
|
|
, ICoreCmsSettingServices settingServices
|
|
, ICoreCmsAreaServices areaServices
|
|
, ICoreCmsBillReshipServices reshipServices, ICoreCmsShipServices shipServices
|
|
, ICoreCmsBillDeliveryServices billDeliveryServices, ICoreCmsLogisticsServices logisticsServices, ICoreCmsGoodsServices goodsServices, ICoreCmsStoreServices storeServices)
|
|
{
|
|
_user = user;
|
|
_orderServices = orderServices;
|
|
_aftersalesServices = aftersalesServices;
|
|
_settingServices = settingServices;
|
|
_areaServices = areaServices;
|
|
_reshipServices = reshipServices;
|
|
_shipServices = shipServices;
|
|
_billDeliveryServices = billDeliveryServices;
|
|
_logisticsServices = logisticsServices;
|
|
_goodsServices = goodsServices;
|
|
_storeServices = storeServices;
|
|
}
|
|
|
|
|
|
//公共接口====================================================================================================
|
|
|
|
|
|
//验证接口====================================================================================================
|
|
|
|
#region 发票模糊查询==================================================
|
|
/// <summary>
|
|
/// 发票模糊查询
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> GetTaxCode([FromBody] GetTaxCodePost entity)
|
|
{
|
|
var jm = await _orderServices.GetTaxCode(entity.name);
|
|
return Json(jm);
|
|
}
|
|
#endregion
|
|
|
|
#region 创建订单==================================================
|
|
/// <summary>
|
|
/// 创建订单
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> CreateOrder([FromBody] CreateOrder entity)
|
|
{
|
|
var jm = new WebApiCallBack();
|
|
|
|
var type = entity.receiptType;
|
|
if (type == (int)GlobalEnumVars.OrderReceiptType.Logistics || type == (int)GlobalEnumVars.OrderReceiptType.IntraCityService)
|
|
{
|
|
//收货地址id
|
|
if (entity.ushipId == 0)
|
|
{
|
|
jm.data = 13001;
|
|
jm.msg = GlobalErrorCodeVars.Code13001;
|
|
}
|
|
}
|
|
else if (type == (int)GlobalEnumVars.OrderReceiptType.SelfDelivery)
|
|
{
|
|
//提货门店
|
|
if (entity.storeId == 0)
|
|
{
|
|
jm.data = 13001;
|
|
jm.msg = GlobalErrorCodeVars.Code13001;
|
|
}
|
|
//提货人姓名 提货人电话
|
|
if (string.IsNullOrEmpty(entity.ladingName))
|
|
{
|
|
jm.data = 13001;
|
|
jm.msg = "请输入姓名";
|
|
}
|
|
if (string.IsNullOrEmpty(entity.ladingMobile))
|
|
{
|
|
jm.data = 13001;
|
|
jm.msg = "请输入电话";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
jm.data = 13001;
|
|
jm.msg = "未查询到配送方式";
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(entity.cartIds))
|
|
{
|
|
jm.data = 10000;
|
|
jm.msg = GlobalErrorCodeVars.Code10000;
|
|
}
|
|
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.taxType, entity.taxName,
|
|
entity.taxCode, entity.teamId, entity.groupId);
|
|
jm.otherData = entity;
|
|
|
|
return Json(jm);
|
|
}
|
|
#endregion
|
|
|
|
#region 订单预览==================================================
|
|
/// <summary>
|
|
/// 订单预览
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> OrderDetails([FromBody] FMStringId entity)
|
|
{
|
|
var jm = new WebApiCallBack();
|
|
|
|
var userId = _user.ID;
|
|
if ((string)entity.data == "merchant")
|
|
{
|
|
var store = await _storeServices.GetStoreByUserId(_user.ID);
|
|
if (store == null)
|
|
{
|
|
jm.status = false;
|
|
jm.msg = "你不是店员";
|
|
return Json(jm);
|
|
}
|
|
else
|
|
{
|
|
userId = 0;
|
|
}
|
|
}
|
|
jm = await _orderServices.GetOrderInfoByOrderId(entity.id, userId);
|
|
return Json(jm);
|
|
}
|
|
#endregion
|
|
|
|
#region 获取订单不同状态的数量==================================================
|
|
/// <summary>
|
|
/// 获取订单不同状态的数量
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> 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 Json(jm);
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 获取个人订单列表=======================================================
|
|
|
|
/// <summary>
|
|
/// 获取个人订单列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> GetOrderList([FromBody] GetOrderListPost entity)
|
|
{
|
|
var jm = await _orderServices.GetOrderList(entity.status, _user.ID, entity.page, entity.limit);
|
|
return Json(jm);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 取消订单====================================================
|
|
|
|
/// <summary>
|
|
/// 取消订单
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> CancelOrder([FromBody] FMStringId entity)
|
|
{
|
|
var jm = new WebApiCallBack();
|
|
|
|
if (string.IsNullOrEmpty(entity.id))
|
|
{
|
|
jm.msg = "请提交要取消的订单号";
|
|
return Json(jm);
|
|
}
|
|
var ids = entity.id.Split(",");
|
|
jm = await _orderServices.CancelOrder(ids, _user.ID);
|
|
return Json(jm);
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 删除订单====================================================
|
|
|
|
/// <summary>
|
|
/// 删除订单
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> DeleteOrder([FromBody] FMStringId entity)
|
|
{
|
|
var jm = new WebApiCallBack();
|
|
|
|
if (string.IsNullOrEmpty(entity.id))
|
|
{
|
|
jm.msg = "请提交要取消的订单号";
|
|
return Json(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 Json(jm);
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 确认签收订单====================================================
|
|
/// <summary>
|
|
/// 确认签收订单
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> OrderConfirm([FromBody] FMStringId entity)
|
|
{
|
|
var jm = new WebApiCallBack();
|
|
|
|
if (string.IsNullOrEmpty(entity.id))
|
|
{
|
|
jm.msg = "请提交要确认签收的订单号";
|
|
return Json(jm);
|
|
}
|
|
jm = await _orderServices.ConfirmOrder(entity.id, Convert.ToInt32(entity.data));
|
|
return Json(jm);
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 添加售后单=======================================================
|
|
|
|
/// <summary>
|
|
/// 添加售后单
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> AddAftersales([FromBody] ToAddBillAfterSalesPost entity)
|
|
{
|
|
var jm = new WebApiCallBack();
|
|
|
|
jm.otherData = entity;
|
|
if (string.IsNullOrEmpty(entity.orderId))
|
|
{
|
|
jm.msg = GlobalErrorCodeVars.Code13100;
|
|
jm.code = 13100;
|
|
return Json(jm);
|
|
}
|
|
if (entity.type == 0)
|
|
{
|
|
jm.msg = GlobalErrorCodeVars.Code10051;
|
|
jm.code = 10051;
|
|
return Json(jm);
|
|
}
|
|
jm = await _aftersalesServices.ToAdd(_user.ID, entity.orderId, entity.type, entity.items, entity.images,
|
|
entity.reason, entity.refund);
|
|
return Json(jm);
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 获取售后单列表=======================================================
|
|
|
|
/// <summary>
|
|
/// 获取售后单列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> 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.order))
|
|
{
|
|
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 Json(jm);
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 获取单个售后单详情
|
|
|
|
/// <summary>
|
|
/// 获取售后单列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> 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 Json(jm);
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 提交售后发货快递信息
|
|
|
|
/// <summary>
|
|
/// 提交售后发货快递信息
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> SendReship([FromBody] FMBillReshipForSendReshipPost entity)
|
|
{
|
|
var jm = new WebApiCallBack();
|
|
|
|
if (string.IsNullOrEmpty(entity.reshipId))
|
|
{
|
|
jm.data = jm.msg = GlobalErrorCodeVars.Code13212;
|
|
return Json(jm);
|
|
}
|
|
else if (string.IsNullOrEmpty(entity.logiCode))
|
|
{
|
|
jm.data = jm.msg = GlobalErrorCodeVars.Code13213;
|
|
return Json(jm);
|
|
}
|
|
else if (string.IsNullOrEmpty(entity.logiNo))
|
|
{
|
|
jm.data = jm.msg = GlobalErrorCodeVars.Code13214;
|
|
return Json(jm);
|
|
}
|
|
|
|
|
|
var model = await _reshipServices.QueryByIdAsync(entity.reshipId);
|
|
if (model == null)
|
|
{
|
|
jm.data = jm.msg = GlobalErrorCodeVars.Code13211;
|
|
return Json(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 Json(jm);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 获取配送方式列表=======================================================
|
|
|
|
/// <summary>
|
|
/// 获取配送方式列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public JsonResult 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 Json(jm);
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 前台物流查询接口=======================================================
|
|
|
|
/// <summary>
|
|
/// 前台物流查询接口
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
[Authorize]
|
|
public async Task<JsonResult> LogisticsByApi([FromBody] FMApiLogisticsByApiPost entity)
|
|
{
|
|
var jm = new WebApiCallBack();
|
|
|
|
if (string.IsNullOrEmpty(entity.code) || string.IsNullOrEmpty(entity.no))
|
|
{
|
|
jm.msg = GlobalErrorCodeVars.Code13225;
|
|
return Json(jm);
|
|
}
|
|
|
|
var systemLogistics = SystemSettingDictionary.GetSystemLogistics();
|
|
foreach (var p in systemLogistics)
|
|
{
|
|
if (entity.code == p.sKey)
|
|
{
|
|
jm.msg = p.sDescription + "不支持轨迹查询";
|
|
return Json(jm);
|
|
}
|
|
}
|
|
|
|
jm = await _logisticsServices.ExpressPoll(entity.code, entity.no, entity.mobile);
|
|
return Json(jm);
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
} |