mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 16:03:25 +08:00
【新增】增加【服务订单】超市未支付自定取消订单,后台【商城设置】【平台设置】【订单管理】的tab第一条可以设置超时时间。
This commit is contained in:
@@ -81,6 +81,11 @@ namespace CoreCms.Net.Configuration
|
||||
/// </summary>
|
||||
public const string OrderCancelTime = "orderCancelTime";
|
||||
|
||||
/// <summary>
|
||||
/// 服务订单取消时间
|
||||
/// </summary>
|
||||
public const string ServiceOrderCancelTime = "serviceOrderCancelTime";
|
||||
|
||||
/// <summary>
|
||||
/// 订单完成时间
|
||||
/// </summary>
|
||||
|
||||
@@ -91,6 +91,7 @@ namespace CoreCms.Net.Configuration
|
||||
di.Add(SystemSettingConstVars.OrderAutoEvalTime, new DictionaryKeyValues() { sKey = "订单自动评价时间", sValue = "30" });
|
||||
di.Add(SystemSettingConstVars.RemindOrderTime, new DictionaryKeyValues() { sKey = "订单提醒付款时间", sValue = "1" });
|
||||
|
||||
di.Add(SystemSettingConstVars.ServiceOrderCancelTime, new DictionaryKeyValues() { sKey = "服务订单取消时间", sValue = "30" });
|
||||
|
||||
|
||||
di.Add(SystemSettingConstVars.StoreOrderAutomaticDelivery, new DictionaryKeyValues() { sKey = "门店自提自动发货", sValue = "2" });
|
||||
|
||||
@@ -46,5 +46,12 @@ namespace CoreCms.Net.IServices
|
||||
Expression<Func<CoreCmsUserServicesOrder, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||
int pageSize = 20, bool blUseNoLock = false);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 自动取消订单(定时任务使用)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<WebApiCallBack> AutoCancelOrder();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using CoreCms.Net.Configuration;
|
||||
@@ -17,10 +18,13 @@ using CoreCms.Net.IRepository;
|
||||
using CoreCms.Net.IRepository.UnitOfWork;
|
||||
using CoreCms.Net.IServices;
|
||||
using CoreCms.Net.Model.Entities;
|
||||
using CoreCms.Net.Model.Entities.Expression;
|
||||
using CoreCms.Net.Model.ViewModels.Basics;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
using CoreCms.Net.Utility.Extensions;
|
||||
using CoreCms.Net.Utility.Helper;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Newtonsoft.Json;
|
||||
using SqlSugar;
|
||||
|
||||
|
||||
@@ -33,13 +37,17 @@ namespace CoreCms.Net.Services
|
||||
{
|
||||
private readonly ICoreCmsUserServicesOrderRepository _dal;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly ICoreCmsSettingServices _settingServices;
|
||||
private readonly ISysTaskLogServices _taskLogServices;
|
||||
|
||||
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
public CoreCmsUserServicesOrderServices(IUnitOfWork unitOfWork, ICoreCmsUserServicesOrderRepository dal, IServiceProvider serviceProvider)
|
||||
public CoreCmsUserServicesOrderServices(IUnitOfWork unitOfWork, ICoreCmsUserServicesOrderRepository dal, IServiceProvider serviceProvider, ICoreCmsSettingServices settingServices, ISysTaskLogServices taskLogServices)
|
||||
{
|
||||
this._dal = dal;
|
||||
_serviceProvider = serviceProvider;
|
||||
_settingServices = settingServices;
|
||||
_taskLogServices = taskLogServices;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
}
|
||||
@@ -130,5 +138,51 @@ namespace CoreCms.Net.Services
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 自动取消订单(定时任务使用)
|
||||
/// <summary>
|
||||
/// 自动取消订单(定时任务使用)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<WebApiCallBack> AutoCancelOrder()
|
||||
{
|
||||
var jm = new WebApiCallBack();
|
||||
|
||||
var allConfigs = await _settingServices.GetConfigDictionaries();
|
||||
var time = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ServiceOrderCancelTime).ObjectToInt(30);
|
||||
var endTime = DateTime.Now.AddMinutes(-time);
|
||||
|
||||
var where = PredicateBuilder.True<CoreCmsUserServicesOrder>();
|
||||
where = where.And(p => p.isPay == false);
|
||||
where = where.And(p => p.status == (int)GlobalEnumVars.ServicesOrderStatus.正常);
|
||||
where = where.And(p => p.createTime <= endTime);
|
||||
|
||||
var orderInfos = await _dal.QueryListByClauseAsync(where);
|
||||
|
||||
jm.status = true;
|
||||
jm.msg = "取消成功";
|
||||
|
||||
|
||||
if (orderInfos.Any())
|
||||
{
|
||||
orderInfos.ForEach(p => p.status = (int)GlobalEnumVars.ServicesOrderStatus.作废);
|
||||
|
||||
await _dal.UpdateAsync(orderInfos);
|
||||
}
|
||||
|
||||
//插入日志
|
||||
var model = new SysTaskLog
|
||||
{
|
||||
createTime = DateTime.Now,
|
||||
isSuccess = jm.status,
|
||||
name = "自动取消服务订单",
|
||||
parameters = JsonConvert.SerializeObject(jm)
|
||||
};
|
||||
await _taskLogServices.InsertAsync(model);
|
||||
|
||||
return jm;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
29
CoreCms.Net.Task/AutoCancelServiceOrderJob.cs
Normal file
29
CoreCms.Net.Task/AutoCancelServiceOrderJob.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
using System;
|
||||
using CoreCms.Net.IServices;
|
||||
using CoreCms.Net.Loging;
|
||||
using CoreCms.Net.Model.Entities;
|
||||
using Newtonsoft.Json;
|
||||
using NLog;
|
||||
|
||||
namespace CoreCms.Net.Task
|
||||
{
|
||||
/// <summary>
|
||||
/// 未付款服务订单超时后取消订单操作任务
|
||||
/// </summary>
|
||||
public class AutoCancelServiceOrderJob
|
||||
{
|
||||
private readonly ICoreCmsUserServicesOrderServices _userServicesOrderServices;
|
||||
|
||||
public AutoCancelServiceOrderJob(ICoreCmsUserServicesOrderServices userServicesOrderServices)
|
||||
{
|
||||
_userServicesOrderServices = userServicesOrderServices;
|
||||
}
|
||||
|
||||
public async System.Threading.Tasks.Task Execute()
|
||||
{
|
||||
await _userServicesOrderServices.AutoCancelOrder();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,6 @@ namespace CoreCms.Net.Task
|
||||
//这里呢就是需要触发的方法 "0/10 * * * * ? " 可以自行搜索cron表达式 代表循环的规律很简单
|
||||
//CancelOrderJob代表你要触发的类 Execute代表你要触发的方法
|
||||
|
||||
|
||||
//自动取消订单任务
|
||||
RecurringJob.AddOrUpdate<AutoCancelOrderJob>(s => s.Execute(), "0 0/5 * * * ? ", TimeZoneInfo.Local); // 每5分钟取消一次订单
|
||||
|
||||
@@ -68,6 +67,10 @@ namespace CoreCms.Net.Task
|
||||
//定时清理用户连续签到信息
|
||||
RecurringJob.AddOrUpdate<ClearUserContinuousCheckInJob>(s => s.Execute(), "0 0 0 */1 * ? ", TimeZoneInfo.Local); // 每天0点执行。
|
||||
|
||||
//自动取消服务器订单任务
|
||||
RecurringJob.AddOrUpdate<AutoCancelServiceOrderJob>(s => s.Execute(), "0 0/5 * * * ? ", TimeZoneInfo.Local); // 每5分钟取消一次订单
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -420,6 +420,14 @@
|
||||
</div>
|
||||
<div class="layui-tab-item">
|
||||
<div class="layui-form coreshop-form">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{{d.data.configs['serviceOrderCancelTime']['sKey']}}:</label>
|
||||
<div class="layui-input-inline layui-inline-2">
|
||||
<input type="number" min="1" max="999999" name="serviceOrderCancelTime" value="{{d.data.configs['serviceOrderCancelTime']['sValue']}}" lay-verify="title|number" autocomplete="off" placeholder="请输入正整数" class="layui-input" list="defaultNumbers">
|
||||
</div>
|
||||
|
||||
<div class="layui-form-mid layui-word-aux">未付款服务订单取消的时间间隔,单位为【分钟】,请设置10分钟以上时间,因为订单取消时间5分钟执行一次,建议设置30分钟</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{{d.data.configs['orderCancelTime']['sKey']}}:</label>
|
||||
<div class="layui-input-inline layui-inline-2">
|
||||
@@ -433,7 +441,7 @@
|
||||
<div class="layui-input-inline layui-inline-2">
|
||||
<input type="number" min="1" max="999999" name="orderCompleteTime" value="{{d.data.configs['orderCompleteTime']['sValue']}}" lay-verify="title|number" autocomplete="off" placeholder="请输入正整数" class="layui-input" list="defaultNumbers">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">已付款的订单完成的时间间隔,单位为【天】,一般设置3天</div>
|
||||
<div class="layui-form-mid layui-word-aux">已付款的订单完成的时间间隔,单位为【天】,一般设置15天</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{{d.data.configs['orderAutoSignTime']['sKey']}}:</label>
|
||||
|
||||
Reference in New Issue
Block a user