username@email.com
2024-07-02 89879d47da4c63103ec38595c5dd014a12c01cca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统                               
 *                Web: http://chuanyin.com                     
 *             Author:                                        
 *              Email:                               
 *         CreateTime: 202403/02   
 *        Description: 暂无
 ***********************************************************************/
 
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.DTO;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
 
namespace CoreCms.Net.IServices
{
    /// <summary>
    ///     订单表 服务工厂接口
    /// </summary>
    public interface ICoreCmsOrderServices : IBaseServices<CoreCmsOrder>
    {
        /// <summary>
        ///     查询团购秒杀下单数量(获取货品的秒杀团购数据)
        /// </summary>
        /// <param name="productId"></param>
        /// <param name="userId"></param>
        /// <param name="startTime"></param>
        /// <param name="endTime"></param>
        /// <param name="orderType"></param>
        /// <returns></returns>
        FindLimitOrderDto FindLimitOrder(int productId, int userId, DateTime? startTime, DateTime? endTime,
            int orderType = 0);
 
 
        /// <summary>
        /// 查询团购秒杀下单数量(获取商品序号的秒杀团购数据)
        /// </summary>
        /// <param name="goodId"></param>
        /// <param name="userId"></param>
        /// <param name="startTime"></param>
        /// <param name="endTime"></param>
        /// <param name="orderType"></param>
        /// <returns></returns>
        public FindLimitOrderDto FindLimitOrderByGoodId(int goodId, int userId, DateTime? startTime,
            DateTime? endTime, int orderType = 0);
 
        /// <summary>
        ///     获取税号
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> GetTaxCode(string name);
 
 
        /// <summary>
        ///     创建订单
        /// </summary>
        /// <param name="userId">用户序列</param>
        /// <param name="orderType">订单类型,1是普通订单,2是拼团订单</param>
        /// <param name="cartIds">购物车货品序列</param>
        /// <param name="receiptType">收货方式,1快递物流,2同城配送,3门店自提</param>
        /// <param name="ushipId">用户地址库序列</param>
        /// <param name="storeId">门店序列</param>
        /// <param name="ladingName">提货人姓名</param>
        /// <param name="ladingMobile">提货人联系方式</param>
        /// <param name="memo">备注</param>
        /// <param name="point">积分</param>
        /// <param name="couponCode">优惠券码</param>
        /// <param name="source">来源平台</param>
        /// <param name="scene">场景值(一般小程序才有)</param>
        /// <param name="taxType">发票信息</param>
        /// <param name="taxName">发票抬头</param>
        /// <param name="taxCode">发票税务编码</param>
        /// <param name="objectId">关联非普通订单营销功能的序列</param>
        /// <param name="teamId">拼团订单分组序列</param>
        /// <param name="requireOrder">微信自定义组件(是否需要推单,1:需要,0:不需要)</param>
        /// <param name="requiredFundType">微信自定义组件(requireOrder = 1时生效,0,非二级商户号订单,1,二级商户号订单,2,两种方式皆可(后续只会存在1))</param>
        /// <param name="traceId">微信自定义组件(跟踪ID,有效期十分钟,会影响主播归因、分享员归因等,需创建订单前调用,调用生成订单 api 时需传入该参数)</param>
        ///  <param name="planorderId">计划订单id</param>
        /// <returns></returns>
        Task<WebApiCallBack> ToAdd(int userId, int orderType, string cartIds, int receiptType, int ushipId, int storeId,
            string ladingName, string ladingMobile, string memo, int point, string couponCode,
            int source, int scene, int taxType, string taxName, string taxCode, int objectId, int teamId, int requireOrder, int requiredFundType, string traceId, string planorderId);
 
        /// <summary>
        ///     获取订单信息
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> GetOrderInfoByOrderId(string id, int userId = 0, int aftersaleLevel = 0);
 
 
        /// <summary>
        /// 把退款金额和退货商品查出来判断是否能进行售后
        /// </summary>
        /// <param name="order"></param>
        /// <param name="afterSaleLevel">取售后单的时候,售后单的等级,0:待审核的和审核通过的售后单,1未审核的,2审核通过的</param>
        void AfterSalesVal(CoreCmsOrder order, int afterSaleLevel = 0);
 
        /// <summary>
        ///     获取订单不同状态的数量
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="ids"></param>
        /// <param name="isAfterSale"></param>
        /// <returns></returns>
        Task<WebApiCallBack> GetOrderStatusNum(int userId, int[] ids, bool isAfterSale = false);
 
        /// <summary>
        ///     订单数量统计
        /// </summary>
        /// <param name="type"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task<int> OrderCount(int type = 0, int userId = 0);
 
        /// <summary>
        ///     获取订单状态反查
        /// </summary>
        /// <param name="status">状态</param>
        /// <returns></returns>
        Expression<Func<CoreCmsOrder, bool>> GetReverseStatus(int status);
 
        /// <summary>
        ///     获取订单列表微信小程序
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> GetOrderList(int status = -1, int userId = 0, int page = 1, int limit = 5);
 
 
        /// <summary>
        ///     商家获取订单列表
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> GetOrderPageByMerchant(string dateType, string[] date, int status = 0, int receiptType = 0, int storeId = 0,
            int page = 1, int limit = 5);
 
 
        /// <summary>
        ///     根据搜索条件商家获取订单列表
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> GetOrderPageByMerchantSearch(string keyword, int status = 0, int receiptType = 0, int storeId = 0,
            int page = 1, int limit = 5);
 
 
        /// <summary>
        ///     订单支付
        /// </summary>
        /// <param name="orderId">订单编号</param>
        /// <param name="paymentCode">支付方式</param>
        /// <param name="billPaymentInfo">支付单据</param>
        /// <returns></returns>
        Task<WebApiCallBack> Pay(string orderId, string paymentCode, CoreCmsBillPayments billPaymentInfo);
 
 
        /// <summary>
        ///     取消订单
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> CancelOrder(string[] ids, int userId = 0);
 
 
        /// <summary>
        ///     后端根据订单状态生成不同的操作按钮
        /// </summary>
        /// <param name="orderId">订单号</param>
        /// <param name="orderStatus">订单状态</param>
        /// <param name="payStatus">支付状态</param>
        /// <param name="shipStatus">发货状态</param>
        /// <param name="receiptType">收货方式</param>
        /// <param name="isDel">是否删除</param>
        /// <returns></returns>
        string GetOperating(string orderId, int orderStatus, int payStatus, int shipStatus, int receiptType, bool isDel);
 
 
        /// <summary>
        ///     构建多个需要发货的数据,和发货单密切关联
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> GetOrderShipInfo(string[] ids);
 
 
        /// <summary>
        /// 构建单个需要发货的数据,和发货单密切关联
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> GetOrderShipInfo(string orderId);
 
 
        /// <summary>
        ///     发货改状态
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="items"></param>
        /// <returns></returns>
        Task<WebApiCallBack> EditShipStatus(string orderId, Dictionary<int, int> items);
 
 
        /// <summary>
        ///     批量订单发货
        /// </summary>
        /// <param name="ids">订单标号</param>
        /// <param name="logiCode">物流公司编码</param>
        /// <param name="logiNo">物流单号</param>
        /// <param name="items">发货明细</param>
        /// <param name="shipName">收货人姓名</param>
        /// <param name="shipMobile">收货人电话</param>
        /// <param name="shipAddress">收货地址</param>
        /// <param name="memo">发货描述</param>
        /// <param name="storeId">店铺收货地址</param>
        /// <param name="shipAreaId">省市区id</param>
        /// <param name="deliveryCompanyId">第三方对接物流编码</param>
        /// <param name="deliveryCompanyId">送货经销商ID</param>
        /// <returns></returns>
        Task<WebApiCallBack> BatchShip(string[] ids, string logiCode, string logiNo,
            Dictionary<int, int> items, string shipName, string shipMobile, string shipAddress, string memo,
            int storeId = 0, int shipAreaId = 0, string deliveryCompanyId = "",int? sendDistributionID=null);
 
        /// <summary>
        ///     订单发货
        /// </summary>
        /// <param name="ids">订单标号</param>
        /// <param name="logiCode">物流公司编码</param>
        /// <param name="logiNo">物流单号</param>
        /// <param name="items">发货明细</param>
        /// <param name="shipName">收货人姓名</param>
        /// <param name="shipMobile">收货人电话</param>
        /// <param name="shipAddress">收货地址</param>
        /// <param name="memo">发货描述</param>
        /// <param name="storeId">店铺收货地址</param>
        /// <param name="shipAreaId">省市区id</param>
        /// <param name="deliveryCompanyId">第三方对接物流编码</param>
        /// <param name="sendDistributionID">送货经销商ID</param>
        /// <returns></returns>
        Task<WebApiCallBack> Ship(string ids, string logiCode, string logiNo,
            Dictionary<int, int> items, string shipName, string shipMobile, string shipAddress, string memo,
            int storeId = 0, int shipAreaId = 0, string deliveryCompanyId = "", int? sendDistributionID = null);
 
 
        /// <summary>
        ///     后台完成订单
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="score">有序队列积分</param>
        /// <param name="remark"></param>
        /// <param name="source">来源/system(系统)/wxpost(微信消息推送)</param>
        /// <returns></returns>
        Task<WebApiCallBack> CompleteOrder(string orderId, int score = 0, string remark = "后台订单完成操作", string source = "system");
 
        /// <summary>
        ///     确认签收订单
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task<WebApiCallBack> ConfirmOrder(string orderId, int userId = 0);
 
 
        /// <summary>
        ///     判断订单是否可以进行评论
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task<WebApiCallBack> IsOrderComment(string orderId, int userId);
 
 
        /// <summary>
        ///     自动取消订单(定时任务使用)
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> AutoCancelOrder();
 
 
        /// <summary>
        ///     自动完成订单(定时任务使用)
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> AutoCompleteOrder();
 
        /// <summary>
        ///     自动评价订单(定时任务使用)
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> AutoEvaluateOrder();
 
 
        /// <summary>
        ///     自动签收订单(定时任务使用)
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> AutoSignOrder();
 
 
        /// <summary>
        ///     催付款(定时任务使用)
        /// </summary>
        /// <returns></returns>
        Task<WebApiCallBack> RemindOrderPay();
 
        /// <summary>
        ///     重写根据条件列表数据
        /// </summary>
        /// <param name="predicate">判断集合</param>
        /// <param name="orderByType">排序方式</param>
        /// <param name="orderByExpression"></param>
        /// <returns></returns>
        Task<List<CoreCmsOrder>> QueryListAsync(Expression<Func<CoreCmsOrder, bool>> predicate,
            Expression<Func<CoreCmsOrder, object>> orderByExpression, OrderByType orderByType);
 
 
        /// <summary>
        ///     重写根据条件查询分页数据
        /// </summary>
        /// <param name="predicate">判断集合</param>
        /// <param name="orderByType">排序方式</param>
        /// <param name="pageIndex">当前页面索引</param>
        /// <param name="pageSize">分布大小</param>
        /// <param name="orderByExpression"></param>
        /// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
        /// <returns></returns>
        Task<IPageList<CoreCmsOrder>> QueryPageAsync(
           Expression<Func<CoreCmsOrder, bool>> predicate,
           Expression<Func<CoreCmsOrder, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
           int pageSize = 20, bool blUseNoLock = false);
    }
}