From de4a33e00e406ebad5bb79f1ad04472f1d272a79 Mon Sep 17 00:00:00 2001 From: yuyubo <1870149533@qq.com> Date: Sat, 23 Aug 2025 16:27:17 +0800 Subject: [PATCH] 1 --- .../MyCode.Project.Domain/Model/JackOrders.cs | 234 ++++++++ .../Model/PushKingDeeOrder.cs | 122 +++++ .../Model/SysWorkprocess.cs | 140 +++-- .../Model/YTKJTShopParameter.cs | 209 +++++++ .../MyCode.Project.Domain.csproj | 8 +- .../Repositories/IJackOrdersRepository.cs | 18 + .../IPushKingDeeOrderRepository.cs | 18 + .../IYTKJTShopParameterRepository.cs | 18 + .../MyCode.Project.GenerateCode/App.config | 4 +- .../JackOrdersRepository.cs | 26 + .../MyCode.Project.Repositories.csproj | 4 +- .../PushKingDeeOrderRepository.cs | 26 + .../YTKJTShopParameterRepository.cs | 26 + .../Jobs/EveryJob.cs | 8 +- .../IServices/IJackYunService.cs | 10 - .../IServices/ILiQiongHaiService.cs | 10 + .../IServices/IYuyuboService.cs | 10 + .../IServices/IZhuBinService.cs | 10 + .../Implementation/JackYunService.cs | 75 --- .../Implementation/LiQiongHaiService.cs | 21 + .../Implementation/WorkProcessService.cs | 516 ++++++++++++------ .../Implementation/YuyuboService.cs | 20 + .../Implementation/ZhuBinService.cs | 20 + .../MyCode.Project.Services.csproj | 10 +- Reportapi/MyCode.Project.WebApi/Web.config | 4 +- 25 files changed, 1244 insertions(+), 323 deletions(-) create mode 100644 Reportapi/MyCode.Project.Domain/Model/JackOrders.cs create mode 100644 Reportapi/MyCode.Project.Domain/Model/PushKingDeeOrder.cs create mode 100644 Reportapi/MyCode.Project.Domain/Model/YTKJTShopParameter.cs create mode 100644 Reportapi/MyCode.Project.Domain/Repositories/IJackOrdersRepository.cs create mode 100644 Reportapi/MyCode.Project.Domain/Repositories/IPushKingDeeOrderRepository.cs create mode 100644 Reportapi/MyCode.Project.Domain/Repositories/IYTKJTShopParameterRepository.cs create mode 100644 Reportapi/MyCode.Project.Repositories/JackOrdersRepository.cs create mode 100644 Reportapi/MyCode.Project.Repositories/PushKingDeeOrderRepository.cs create mode 100644 Reportapi/MyCode.Project.Repositories/YTKJTShopParameterRepository.cs delete mode 100644 Reportapi/MyCode.Project.Services/IServices/IJackYunService.cs create mode 100644 Reportapi/MyCode.Project.Services/IServices/ILiQiongHaiService.cs create mode 100644 Reportapi/MyCode.Project.Services/IServices/IYuyuboService.cs create mode 100644 Reportapi/MyCode.Project.Services/IServices/IZhuBinService.cs delete mode 100644 Reportapi/MyCode.Project.Services/Implementation/JackYunService.cs create mode 100644 Reportapi/MyCode.Project.Services/Implementation/LiQiongHaiService.cs create mode 100644 Reportapi/MyCode.Project.Services/Implementation/YuyuboService.cs create mode 100644 Reportapi/MyCode.Project.Services/Implementation/ZhuBinService.cs diff --git a/Reportapi/MyCode.Project.Domain/Model/JackOrders.cs b/Reportapi/MyCode.Project.Domain/Model/JackOrders.cs new file mode 100644 index 0000000..2c63a24 --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Model/JackOrders.cs @@ -0,0 +1,234 @@ +using System; +using System.Linq; +using System.Text; +using SqlSugar; + +namespace MyCode.Project.Domain.Model +{ + /// + /// + /// + [SugarTable("JackOrders")] + public partial class JackOrders + { + public JackOrders(){ + + + } + /// + /// Desc: + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey=true,ColumnName="id")] + public Guid Id {get;set;} + + /// + /// Desc:销售单id(吉客云内码) + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="tradeId")] + public string TradeId {get;set;} + + /// + /// Desc:平台优惠 + /// Default:0 + /// Nullable:True + /// + [SugarColumn(ColumnName="couponFee")] + public decimal? CouponFee {get;set;} + + /// + /// Desc:实付金额 + /// Default:0 + /// Nullable:True + /// + [SugarColumn(ColumnName="realFee")] + public decimal? RealFee {get;set;} + + /// + /// Desc:店铺编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="shopCode")] + public string ShopCode {get;set;} + + /// + /// Desc:发货单单号 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="orderNo")] + public string OrderNo {get;set;} + + /// + /// Desc:订单编号 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="tradeNo")] + public string TradeNo {get;set;} + + /// + /// Desc:是否删除(0:否;1:是) + /// Default:0 + /// Nullable:True + /// + [SugarColumn(ColumnName="isDelete")] + public int? IsDelete {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="mainPostid")] + public string MainPostid {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="companyName")] + public string CompanyName {get;set;} + + /// + /// Desc:标记名称 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="flagNames")] + public string FlagNames {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="shopName")] + public string ShopName {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="warehouseName")] + public string WarehouseName {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="warehouseCode")] + public string WarehouseCode {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="logisticName")] + public string LogisticName {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="tradeFrom")] + public int? TradeFrom {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="warehouseId")] + public string WarehouseId {get;set;} + + /// + /// Desc:店铺id + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="shopId")] + public long? ShopId {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="shopTypeCode")] + public string ShopTypeCode {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="apiType")] + public int? ApiType {get;set;} + + /// + /// Desc: + /// Default:DateTime.Now + /// Nullable:True + /// + [SugarColumn(ColumnName="createTime")] + public DateTime? CreateTime {get;set;} + + /// + /// Desc: + /// Default:DateTime.Now + /// Nullable:True + /// + [SugarColumn(ColumnName="updateTime")] + public DateTime? UpdateTime {get;set;} + + /// + /// Desc:0=未处理 1=已合并 2=已推送 + /// Default:0 + /// Nullable:True + /// + [SugarColumn(ColumnName="status")] + public int? Status {get;set;} + + /// + /// Desc:支付时间 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="payTime")] + public DateTime? PayTime {get;set;} + + /// + /// Desc:发货时间 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="consignTime")] + public DateTime? ConsignTime {get;set;} + + /// + /// Desc:销售单状态(1010:待审核;1020:审核中;1030:预售;1050:待复核;2000:备货等待;2010:备货等待等补货;2020:服务等待;2030:备货等待等生产;2040:采购等待;3010:虚拟发货;4110:待发货待递交;4111:待发货递交中;4112:待发货已递交;4113:待发货-递交失败;4121:待发货-取消中;4122:待发货已取消;4123:待发货取消失败;4130:待发货部分发货;4040:代销发货待递交;4041:代销发货已递交;5010:已取消;5020:已取消被合并;5030:已取消被拆分;6000:发货在途;9090:已完成) + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="tradeStatus")] + public int? TradeStatus {get;set;} + + /// + /// Desc:订单类型 销售单类型(1:零售业务;2:代发货(来自分销商);3:预售订单;4:周期性订购;5:代销售(供货商发货);6:现款现货;7:售后发货;8:售后退货;9:批发业务(B2B);10:试销业务;11:错漏调整;12:仅退款;13:销售返利;14:大B2B业务;15物流买赔;16销售对账差异 91:自定义1;92:自定义2;93:自定义3...100:自定义10) + /// Default: + /// Nullable:True + /// + public int? TradeType {get;set;} + + } +} diff --git a/Reportapi/MyCode.Project.Domain/Model/PushKingDeeOrder.cs b/Reportapi/MyCode.Project.Domain/Model/PushKingDeeOrder.cs new file mode 100644 index 0000000..a1ab7c5 --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Model/PushKingDeeOrder.cs @@ -0,0 +1,122 @@ +using System; +using System.Linq; +using System.Text; +using SqlSugar; + +namespace MyCode.Project.Domain.Model +{ + /// + /// + /// + [SugarTable("PushKingDeeOrder")] + public partial class PushKingDeeOrder + { + public PushKingDeeOrder(){ + + + } + /// + /// Desc: + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey=true,ColumnName="id")] + public Guid Id {get;set;} + + /// + /// Desc:店铺编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="shopCode")] + public string ShopCode {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="shopName")] + public string ShopName {get;set;} + + /// + /// Desc:店铺id + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="shopId")] + public long? ShopId {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="warehouseName")] + public string WarehouseName {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="warehouseCode")] + public string WarehouseCode {get;set;} + + /// + /// Desc: + /// Default:DateTime.Now + /// Nullable:True + /// + [SugarColumn(ColumnName="createTime")] + public DateTime? CreateTime {get;set;} + + /// + /// Desc: + /// Default:DateTime.Now + /// Nullable:True + /// + [SugarColumn(ColumnName="updateTime")] + public DateTime? UpdateTime {get;set;} + + /// + /// Desc:0=未处理 1=已合并 2=已推送 + /// Default:0 + /// Nullable:True + /// + [SugarColumn(ColumnName="status")] + public int? Status {get;set;} + + /// + /// Desc:发货时间 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="consignTime")] + public DateTime? ConsignTime {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="warehouseId")] + public string WarehouseId {get;set;} + + /// + /// Desc:订单类型 销售单类型(1:零售业务;2:代发货(来自分销商);3:预售订单;4:周期性订购;5:代销售(供货商发货);6:现款现货;7:售后发货;8:售后退货;9:批发业务(B2B);10:试销业务;11:错漏调整;12:仅退款;13:销售返利;14:大B2B业务;15物流买赔;16销售对账差异 91:自定义1;92:自定义2;93:自定义3...100:自定义10) + /// Default: + /// Nullable:True + /// + public int? TradeType {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:False + /// + [SugarColumn(IsIdentity=true)] + public int Sheet {get;set;} + + } +} diff --git a/Reportapi/MyCode.Project.Domain/Model/SysWorkprocess.cs b/Reportapi/MyCode.Project.Domain/Model/SysWorkprocess.cs index 7428bcf..7074b4f 100644 --- a/Reportapi/MyCode.Project.Domain/Model/SysWorkprocess.cs +++ b/Reportapi/MyCode.Project.Domain/Model/SysWorkprocess.cs @@ -6,9 +6,9 @@ using SqlSugar; namespace MyCode.Project.Domain.Model { /// - /// + ///工作调度 /// - [SugarTable("sys_workprocess")] + [SugarTable("SysWorkProcess")] public partial class SysWorkprocess { public SysWorkprocess(){ @@ -16,100 +16,124 @@ namespace MyCode.Project.Domain.Model } /// - /// Desc:主键 + /// Desc:ID /// Default: /// Nullable:False /// - [SugarColumn(IsPrimaryKey=true,ColumnName="id")] - public long Id {get;set;} + [SugarColumn(IsPrimaryKey=true)] + public Guid ID {get;set;} /// - /// Desc:路径 + /// Desc:对应的商家。 /// Default: /// Nullable:False /// - [SugarColumn(ColumnName="type_path")] - public string TypePath {get;set;} + public Guid MerchantID {get;set;} /// - /// Desc:最后修改时间 + /// Desc:执行类型。1=类对象,2=存储过程 /// Default: /// Nullable:False /// - [SugarColumn(ColumnName="edit_time")] - public DateTime EditTime {get;set;} - - /// - /// Desc:数字越小,优先级越高 - /// Default:0 - /// Nullable:False - /// - [SugarColumn(ColumnName="priority")] - public int Priority {get;set;} - - /// - /// Desc:类型1:函数 - /// Default: - /// Nullable:False - /// - [SugarColumn(ColumnName="func_type")] public int FuncType {get;set;} /// - /// Desc:异常信息 - /// Default:NULL - /// Nullable:True - /// - [SugarColumn(ColumnName="exception_info")] - public string ExceptionInfo {get;set;} - - /// - /// Desc:备注信息 - /// Default:NULL - /// Nullable:True - /// - [SugarColumn(ColumnName="remark")] - public string Remark {get;set;} - - /// - /// Desc:执行情况,0:等待执行 1:执行中 9:执行成功 2:执行失败 + /// Desc:执行的类 /// Default: - /// Nullable:False + /// Nullable:True /// - [SugarColumn(ColumnName="status")] - public int Status {get;set;} + public string FuncClass {get;set;} + + /// + /// Desc:执行的模块 + /// Default: + /// Nullable:True + /// + public string FuncMethod {get;set;} /// /// Desc:参数信息 - /// Default:NULL + /// Default: /// Nullable:True /// - [SugarColumn(ColumnName="parameter_info")] - public string ParameterInfo {get;set;} + public string ParamInfo {get;set;} /// - /// Desc:方法名 + /// Desc:执行时间 + /// Default: + /// Nullable:True + /// + public DateTime? ExecuteTime {get;set;} + + /// + /// Desc:重试次数 /// Default: /// Nullable:False /// - [SugarColumn(ColumnName="method_name")] - public string MethodName {get;set;} + public int RetryCount {get;set;} /// - /// Desc:公司ID + /// Desc:异常信息 + /// Default: + /// Nullable:True + /// + public string ExceptionInfo {get;set;} + + /// + /// Desc:执行状态。0=等待,1=执行,2=异常暂停,3=执行完成 /// Default: /// Nullable:False /// - [SugarColumn(ColumnName="company_id")] - public long CompanyId {get;set;} + public int FuncStatus {get;set;} + + /// + /// Desc:创建人 + /// Default: + /// Nullable:False + /// + public string Creater {get;set;} /// /// Desc:创建时间 - /// Default:NULL + /// Default: + /// Nullable:False + /// + public DateTime CreateTime {get;set;} + + /// + /// Desc:编辑人 + /// Default: + /// Nullable:False + /// + public string Editor {get;set;} + + /// + /// Desc:编辑时间 + /// Default: + /// Nullable:False + /// + public DateTime EditTime {get;set;} + + /// + /// Desc:备注 + /// Default: /// Nullable:True /// - [SugarColumn(ColumnName="create_time")] - public DateTime? CreateTime {get;set;} + public string Remark {get;set;} + + /// + /// Desc:数字越小,优先级越高 + /// Default:5 + /// Nullable:True + /// + public int? Priority {get;set;} + + /// + /// Desc:程序执行结果返回内容 + /// Default: + /// Nullable:True + /// + public string Result {get;set;} } } diff --git a/Reportapi/MyCode.Project.Domain/Model/YTKJTShopParameter.cs b/Reportapi/MyCode.Project.Domain/Model/YTKJTShopParameter.cs new file mode 100644 index 0000000..856449d --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Model/YTKJTShopParameter.cs @@ -0,0 +1,209 @@ +using System; +using System.Linq; +using System.Text; +using SqlSugar; + +namespace MyCode.Project.Domain.Model +{ + /// + /// + /// + [SugarTable("YTKJ_t_ShopParameter")] + public partial class YTKJTShopParameter + { + public YTKJTShopParameter(){ + + + } + /// + /// Desc: + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey=true)] + public long FID {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:False + /// + public string FBILLNO {get;set;} + + /// + /// Desc:审核状态 C=已审核 + /// Default: + /// Nullable:False + /// + public string FDOCUMENTSTATUS {get;set;} + + /// + /// Desc:门店编码 + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName="F_SHOPCODE")] + public string FSHOPCODE {get;set;} + + /// + /// Desc:门店名称 + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName="F_SHOPNAME")] + public string FSHOPNAME {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName="F_YTKJ_TEXT2")] + public string FYTKJTEXT2 {get;set;} + + /// + /// Desc:是否同步金蝶 + /// Default:1 + /// Nullable:False + /// + [SugarColumn(ColumnName="F_SYNCHRONIZEKINGDEE")] + public string FSYNCHRONIZEKINGDEE {get;set;} + + /// + /// Desc:是否同步WMS + /// Default:1 + /// Nullable:False + /// + [SugarColumn(ColumnName="F_SYNCHRONIZEWMS")] + public string FSYNCHRONIZEWMS {get;set;} + + /// + /// Desc:销售客户 + /// Default:0 + /// Nullable:False + /// + [SugarColumn(ColumnName="F_SALESCUSTOMERS")] + public int FSALESCUSTOMERS {get;set;} + + /// + /// Desc:发货仓库ID + /// Default:0 + /// Nullable:False + /// + [SugarColumn(ColumnName="F_WAREHOUSE")] + public int FWAREHOUSE {get;set;} + + /// + /// Desc:仓库货主 + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName="F_CANGKUHUOZHU")] + public string FCANGKUHUOZHU {get;set;} + + /// + /// Desc:公司ID + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName="F_COMPANYID")] + public string FCOMPANYID {get;set;} + + /// + /// Desc:发货大仓 + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName="F_DACANG")] + public string FDACANG {get;set;} + + /// + /// Desc:税率 + /// Default:0 + /// Nullable:False + /// + [SugarColumn(ColumnName="F_TAXRATE")] + public decimal FTAXRATE {get;set;} + + /// + /// Desc:创建日期 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="F_YTKJ_CREATEDATE")] + public DateTime? FYTKJCREATEDATE {get;set;} + + /// + /// Desc:修改日期 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="F_YTKJ_MODIFYDATE")] + public DateTime? FYTKJMODIFYDATE {get;set;} + + /// + /// Desc:审核日期 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="F_AUDITDATE")] + public DateTime? FAUDITDATE {get;set;} + + /// + /// Desc:创建人 + /// Default:0 + /// Nullable:False + /// + [SugarColumn(ColumnName="F_YTKJ_CREATORID")] + public int FYTKJCREATORID {get;set;} + + /// + /// Desc:修改人 + /// Default:0 + /// Nullable:False + /// + [SugarColumn(ColumnName="F_YTKJ_MODIFIERID")] + public int FYTKJMODIFIERID {get;set;} + + /// + /// Desc:审核人 + /// Default:0 + /// Nullable:False + /// + [SugarColumn(ColumnName="F_AUDITOR")] + public int FAUDITOR {get;set;} + + /// + /// Desc:仓库编码 + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName="F_WAREHOUSE_CODE")] + public string FWAREHOUSECODE {get;set;} + + /// + /// Desc:仓库名称 + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName="F_WAREHOUSE_NAME")] + public string FWAREHOUSENAME {get;set;} + + /// + /// Desc:销售员ID + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="F_SALER")] + public long? FSALER {get;set;} + + /// + /// Desc:销售组织ID + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="F_SALE_ORGID")] + public int? FSALEORGID {get;set;} + + } +} diff --git a/Reportapi/MyCode.Project.Domain/MyCode.Project.Domain.csproj b/Reportapi/MyCode.Project.Domain/MyCode.Project.Domain.csproj index 619f0df..72d2153 100644 --- a/Reportapi/MyCode.Project.Domain/MyCode.Project.Domain.csproj +++ b/Reportapi/MyCode.Project.Domain/MyCode.Project.Domain.csproj @@ -77,14 +77,18 @@ - + + + + + - + diff --git a/Reportapi/MyCode.Project.Domain/Repositories/IJackOrdersRepository.cs b/Reportapi/MyCode.Project.Domain/Repositories/IJackOrdersRepository.cs new file mode 100644 index 0000000..4dad171 --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Repositories/IJackOrdersRepository.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Infrastructure; +using MyCode.Project.Domain; +using MyCode.Project.Domain.Model; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Domain.Message; + +namespace MyCode.Project.Domain.Repositories +{ + public interface IJackOrdersRepository : IRepository + { + + } +} diff --git a/Reportapi/MyCode.Project.Domain/Repositories/IPushKingDeeOrderRepository.cs b/Reportapi/MyCode.Project.Domain/Repositories/IPushKingDeeOrderRepository.cs new file mode 100644 index 0000000..b1933ee --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Repositories/IPushKingDeeOrderRepository.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Infrastructure; +using MyCode.Project.Domain; +using MyCode.Project.Domain.Model; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Domain.Message; + +namespace MyCode.Project.Domain.Repositories +{ + public interface IPushKingDeeOrderRepository : IRepository + { + + } +} diff --git a/Reportapi/MyCode.Project.Domain/Repositories/IYTKJTShopParameterRepository.cs b/Reportapi/MyCode.Project.Domain/Repositories/IYTKJTShopParameterRepository.cs new file mode 100644 index 0000000..15106e6 --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Repositories/IYTKJTShopParameterRepository.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Infrastructure; +using MyCode.Project.Domain; +using MyCode.Project.Domain.Model; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Domain.Message; + +namespace MyCode.Project.Domain.Repositories +{ + public interface IYTKJTShopParameterRepository : IRepository + { + + } +} diff --git a/Reportapi/MyCode.Project.GenerateCode/App.config b/Reportapi/MyCode.Project.GenerateCode/App.config index fdf7d2a..35fc290 100644 --- a/Reportapi/MyCode.Project.GenerateCode/App.config +++ b/Reportapi/MyCode.Project.GenerateCode/App.config @@ -10,8 +10,8 @@ - - + + diff --git a/Reportapi/MyCode.Project.Repositories/JackOrdersRepository.cs b/Reportapi/MyCode.Project.Repositories/JackOrdersRepository.cs new file mode 100644 index 0000000..621a990 --- /dev/null +++ b/Reportapi/MyCode.Project.Repositories/JackOrdersRepository.cs @@ -0,0 +1,26 @@ +using MyCode.Project.Repositories.Common; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Domain.Message; +using MyCode.Project.Domain.Model; +using MyCode.Project.Domain.Repositories; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Infrastructure.Search; + +namespace MyCode.Project.Repositories +{ + public class JackOrdersRepository: Repository, IJackOrdersRepository + { + public JackOrdersRepository(MyCodeSqlSugarClient context) : base(context) + { } + + + + + + + } +} \ No newline at end of file diff --git a/Reportapi/MyCode.Project.Repositories/MyCode.Project.Repositories.csproj b/Reportapi/MyCode.Project.Repositories/MyCode.Project.Repositories.csproj index a5f09b3..19a8647 100644 --- a/Reportapi/MyCode.Project.Repositories/MyCode.Project.Repositories.csproj +++ b/Reportapi/MyCode.Project.Repositories/MyCode.Project.Repositories.csproj @@ -86,11 +86,13 @@ + + - + diff --git a/Reportapi/MyCode.Project.Repositories/PushKingDeeOrderRepository.cs b/Reportapi/MyCode.Project.Repositories/PushKingDeeOrderRepository.cs new file mode 100644 index 0000000..ae45f55 --- /dev/null +++ b/Reportapi/MyCode.Project.Repositories/PushKingDeeOrderRepository.cs @@ -0,0 +1,26 @@ +using MyCode.Project.Repositories.Common; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Domain.Message; +using MyCode.Project.Domain.Model; +using MyCode.Project.Domain.Repositories; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Infrastructure.Search; + +namespace MyCode.Project.Repositories +{ + public class PushKingDeeOrderRepository: Repository, IPushKingDeeOrderRepository + { + public PushKingDeeOrderRepository(MyCodeSqlSugarClient context) : base(context) + { } + + + + + + + } +} \ No newline at end of file diff --git a/Reportapi/MyCode.Project.Repositories/YTKJTShopParameterRepository.cs b/Reportapi/MyCode.Project.Repositories/YTKJTShopParameterRepository.cs new file mode 100644 index 0000000..146b90b --- /dev/null +++ b/Reportapi/MyCode.Project.Repositories/YTKJTShopParameterRepository.cs @@ -0,0 +1,26 @@ +using MyCode.Project.Repositories.Common; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Domain.Message; +using MyCode.Project.Domain.Model; +using MyCode.Project.Domain.Repositories; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Infrastructure.Search; + +namespace MyCode.Project.Repositories +{ + public class YTKJTShopParameterRepository: Repository, IYTKJTShopParameterRepository + { + public YTKJTShopParameterRepository(MyCodeSqlSugarClient context) : base(context) + { } + + + + + + + } +} \ No newline at end of file diff --git a/Reportapi/MyCode.Project.ScheduleTask/Jobs/EveryJob.cs b/Reportapi/MyCode.Project.ScheduleTask/Jobs/EveryJob.cs index 5fcd2d4..cd3e6da 100644 --- a/Reportapi/MyCode.Project.ScheduleTask/Jobs/EveryJob.cs +++ b/Reportapi/MyCode.Project.ScheduleTask/Jobs/EveryJob.cs @@ -12,17 +12,17 @@ namespace MyCode.Project.ScheduleTask.Jobs public class EveryJob : IJob { - private readonly IWorkProcessService _workProcessService; + //private readonly IWorkProcessService _workProcessService; - public EveryJob(IWorkProcessService workProcessService) + public EveryJob( ) { - _workProcessService = workProcessService; + } public void Execute(IJobExecutionContext context) { - _workProcessService.Execute(); + //_workProcessService.Execute(); } } } diff --git a/Reportapi/MyCode.Project.Services/IServices/IJackYunService.cs b/Reportapi/MyCode.Project.Services/IServices/IJackYunService.cs deleted file mode 100644 index 42baf83..0000000 --- a/Reportapi/MyCode.Project.Services/IServices/IJackYunService.cs +++ /dev/null @@ -1,10 +0,0 @@ -using MyCode.Project.Infrastructure.JackYun; - -namespace MyCode.Project.Services -{ - public interface IJackYunService - { - JackyunResponse Call(string method, string version, BaseRequestBizData bizData); - - } -} diff --git a/Reportapi/MyCode.Project.Services/IServices/ILiQiongHaiService.cs b/Reportapi/MyCode.Project.Services/IServices/ILiQiongHaiService.cs new file mode 100644 index 0000000..e2b7613 --- /dev/null +++ b/Reportapi/MyCode.Project.Services/IServices/ILiQiongHaiService.cs @@ -0,0 +1,10 @@ +using MyCode.Project.Infrastructure.JackYun; + +namespace MyCode.Project.Services +{ + public interface ILiQiongHaiService + { + + + } +} diff --git a/Reportapi/MyCode.Project.Services/IServices/IYuyuboService.cs b/Reportapi/MyCode.Project.Services/IServices/IYuyuboService.cs new file mode 100644 index 0000000..5f68dad --- /dev/null +++ b/Reportapi/MyCode.Project.Services/IServices/IYuyuboService.cs @@ -0,0 +1,10 @@ +using MyCode.Project.Infrastructure.JackYun; + +namespace MyCode.Project.Services +{ + public interface IYuyuboService + { + + + } +} diff --git a/Reportapi/MyCode.Project.Services/IServices/IZhuBinService.cs b/Reportapi/MyCode.Project.Services/IServices/IZhuBinService.cs new file mode 100644 index 0000000..fa692d2 --- /dev/null +++ b/Reportapi/MyCode.Project.Services/IServices/IZhuBinService.cs @@ -0,0 +1,10 @@ +using MyCode.Project.Infrastructure.JackYun; + +namespace MyCode.Project.Services +{ + public interface IZhuBinService + { + + + } +} diff --git a/Reportapi/MyCode.Project.Services/Implementation/JackYunService.cs b/Reportapi/MyCode.Project.Services/Implementation/JackYunService.cs deleted file mode 100644 index e0544e9..0000000 --- a/Reportapi/MyCode.Project.Services/Implementation/JackYunService.cs +++ /dev/null @@ -1,75 +0,0 @@ -using MyCode.Project.Domain.Message.Request.JackYun; -using MyCode.Project.Infrastructure.Common; -using MyCode.Project.Infrastructure.JackYun; -using System; - -namespace MyCode.Project.Services.Implementation -{ - public class JackYunService : ServiceBase //, IJackYunService - { - /// - /// 请求开放平台服务 - /// - /// 开放接口方法名 - /// 开放接口版本号(null表示默认) - /// 请求业务数据 - /// OpenResponse返回对象 - public JackyunResponse Call(string method, string version, BaseRequestBizData bizData) - { - //接口返回值 - JackyunResponse response = null; - //返回值字符串 - string strResponse = null; - try - { - //请求吉客云开放接口。 - strResponse = JackyunOpenHttpUtils.Post(method, version, bizData); - } - catch (Exception ex) - { - response = new JackyunResponse(); - response.onFail(ex.Message, "CLIENT_EXCEPTION"); - return response; - } - - return JsonHelper.ToObject(strResponse); - } - - - #region 订单查询 - - /// - /// 订单查询 - /// - - public void testTradeFullInfoGet() - { - Byte total = 0; - OrderTradeFullInfoGetRequestBizData requestBizData = new OrderTradeFullInfoGetRequestBizData(); - string value = "2019-06-05 12:00:00"; - requestBizData.startModified = DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); - string value1 = "2019-09-05 12:00:00"; - requestBizData.endModified = DateTime.ParseExact(value1, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); - requestBizData.tradeNo = "JY201906050001,JY201906050002"; - requestBizData.hasTotal = total; - requestBizData.pageSize = 50; - requestBizData.pageIndex = 0; - requestBizData.fields = "tradeNo,orderNo"; - requestBizData.startCreated = DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); - requestBizData.endCreated = DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); - requestBizData.startAuditTime = DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); - requestBizData.endAuditTime = DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); - requestBizData.startConsignTime = DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); - requestBizData.endConsignTime = DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); - requestBizData.tradeStatus = Convert.ToByte(1010); - requestBizData.tradeType = 1; - requestBizData.sourceTradeNos = "10,026,635,314"; - requestBizData.shopIds = new long[] { 378761130654261100, 378761130654261100 }; - - //JackyunResponse response = Call(EnumAttribute.GetAttribute(ApiEnum.TRADEFULLINFOGET).Value, "", requestBizData); - //Console.Out.WriteLine("订单查询接口响应信息=" + JsonUtils.ToJson(response)); - } - - #endregion - } -} diff --git a/Reportapi/MyCode.Project.Services/Implementation/LiQiongHaiService.cs b/Reportapi/MyCode.Project.Services/Implementation/LiQiongHaiService.cs new file mode 100644 index 0000000..d1d1e1f --- /dev/null +++ b/Reportapi/MyCode.Project.Services/Implementation/LiQiongHaiService.cs @@ -0,0 +1,21 @@ +using MyCode.Project.Domain.Message.Request.JackYun; +using MyCode.Project.Domain.Repositories; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Infrastructure.JackYun; +using System; + +namespace MyCode.Project.Services.Implementation +{ + public class LiQiongHaiService : ServiceBase //, ILiQiongHaiService + { + + private IPushKingDeeOrderRepository _pushKingDeeOrderRepository; + + public LiQiongHaiService(IPushKingDeeOrderRepository pushKingDeeOrderRepository) + { + _pushKingDeeOrderRepository = pushKingDeeOrderRepository; + } + + + } +} diff --git a/Reportapi/MyCode.Project.Services/Implementation/WorkProcessService.cs b/Reportapi/MyCode.Project.Services/Implementation/WorkProcessService.cs index 4f74734..36fbecc 100644 --- a/Reportapi/MyCode.Project.Services/Implementation/WorkProcessService.cs +++ b/Reportapi/MyCode.Project.Services/Implementation/WorkProcessService.cs @@ -7,6 +7,7 @@ using MyCode.Project.Infrastructure.Enumeration; using MyCode.Project.Infrastructure.Exceptions; using MyCode.Project.Infrastructure.Extensions; using MyCode.Project.Infrastructure.UnityExtensions; +using MyCode.Project.Repositories; using MyCode.Project.Repositories.Common; using System; using System.Collections.Generic; @@ -20,118 +21,169 @@ namespace MyCode.Project.Services.Implementation { public class WorkProcessService : ServiceBase, IWorkProcessService { - #region 初始化 - private readonly ISysWorkprocessRepository _sysWorkprocessRepository; - private readonly ISysWorkprocessHistoryRepository _sysWorkprocessHistoryRepository; + private ISysWorkProcessRepository _SysWorkProcessRepository; - public WorkProcessService(ISysWorkprocessRepository sysWorkprocessRepository, - ISysWorkprocessHistoryRepository sysWorkprocessHistoryRepository) + private static object locker = new object(); //创建锁 + public WorkProcessService(ISysWorkProcessRepository SysWorkProcessRepository) { - _sysWorkprocessRepository = sysWorkprocessRepository; - _sysWorkprocessHistoryRepository = sysWorkprocessHistoryRepository; + _SysWorkProcessRepository = SysWorkProcessRepository; } + + + #region Add(添加调度) + /// + /// 添加调度 + /// + /// 执行类 + /// 商家ID + /// 方法名 + /// 备注 + /// 参数信息 + /// 执行类型 + public void Add(Guid merchantId, string methodName, string remark = "", object entity = null, int priority = 5, FuncType funcType = FuncType.Method) where T : class + { + Add(merchantId, typeof(T), methodName, remark, entity, funcType, priority); + } + + /// + /// 添加调度 + /// + /// 商家ID + /// 执行类 + /// 方法名 + /// 备注 + /// 参数信息 + /// 执行类型 + public void Add(Guid merchantId, Type type, string methodName, string remark = "", object entity = null, FuncType funcType = FuncType.Method, int priority = 5) + { + string typePath = string.Format("{0}, {1}", type.FullName, type.Assembly.GetName().Name); + string paramInfo = entity == null + ? "" + : entity is string || entity is Guid || entity is int || entity is long || entity is decimal || + entity is float || entity is double + ? entity.SafeString() + : JsonHelper.ToJson(entity); + Add(merchantId, typePath, methodName, remark, paramInfo, funcType, priority); + } + + /// + /// 添加调度任务 + /// + /// 商家ID + /// 类型路径,如:Lxm.IServices.IWorkProcessService, Lxm.Services + /// 方法名 + /// 备注 + /// 参数信息 + /// 执行类型 + public void Add(Guid merchantId, string typePath, string methodName, string remark = "", string paramInfo = "", + FuncType funcType = FuncType.Method, int priority = 5) + { + if (this._SysWorkProcessRepository.Exists(funcType, merchantId, typePath, methodName, paramInfo) && methodName != "RunWechatVSKingDee") + { + return; + } + SysWorkProcess entity = new SysWorkProcess(); + entity.ID = Guid.NewGuid(); + entity.MerchantID = merchantId; + entity.FuncType = funcType.Value(); + entity.FuncClass = typePath; + entity.FuncMethod = methodName; + entity.ParamInfo = paramInfo; + entity.FuncStatus = FuncStatus.Waiting.Value(); + entity.Remark = remark; + entity.RetryCount = 0; + entity.Creater = "系统调度"; + entity.CreateTime = DateTime.Now; + entity.Editor = "系统调度"; + entity.EditTime = DateTime.Now; + entity.Priority = priority; + this._SysWorkProcessRepository.Add(entity); + } + #endregion + #region SelectInitWorkProcess(返回前几十条数据) - public List SelectInitWorkProcess(int top) + public List SelectInitWorkProcess(int top) { - var result = _sysWorkprocessRepository.Queryable() - .Where(p => p.Status == (int)WorkProcessStatus.Init) + + return _SysWorkProcessRepository.Queryable() + .Where(p => p.FuncStatus == (int)WorkProcessStatus.Waiting && (p.Priority == 1 || p.Priority == null)) .Take(top) .OrderBy(p => p.Priority) - .OrderBy(p => p.EditTime).ToList(); - - return result; + .OrderBy(p => p.CreateTime).ToList(); } #endregion #region Add(批量添加) - public void Add(List workProcess) + public void Add(List workProcess) { - _sysWorkprocessRepository.Add(workProcess); + _SysWorkProcessRepository.Add(workProcess); } #endregion #region RestratStopProcess(重新启用所有暂停了的调度,这里不需要事务,因为修改失败也不影响) public void RestratStopProcess() { - var list = _sysWorkprocessRepository.SelectList(p => p.Status == (int)WorkProcessStatus.Stop); + var list = _SysWorkProcessRepository.SelectList(p => p.FuncStatus == (int)WorkProcessStatus.Pause); list.ForEach(x => { - x.Status = (int)WorkProcessStatus.Running; + x.FuncStatus = (int)WorkProcessStatus.Running; x.EditTime = DateTime.Now; - _sysWorkprocessRepository.Update(x); - }); + _SysWorkProcessRepository.Update(list); } #endregion #region RestartStopProcess(重新启用某个暂停了的调度) [TransactionCallHandler] - public void RestartStopProcess(long workprocessId) + public void RestartStopProcess(Guid workprocessId) { + var workprocess = _SysWorkProcessRepository.SelectFirst(p => p.ID == workprocessId); - var workprocess = _sysWorkprocessRepository.SelectFirst(p => p.Id == workprocessId); + if (workprocess.FuncStatus != (int)WorkProcessStatus.Pause) { throw new BaseException("当前进程状态不是停止"); } - if (workprocess.Status != (int)WorkProcessStatus.Stop) { throw new BaseException("当前进程状态不是停止"); } - - workprocess.Status = (int)WorkProcessStatus.Init; + workprocess.FuncStatus = (int)WorkProcessStatus.Running; workprocess.EditTime = DateTime.Now; - _sysWorkprocessRepository.Update(workprocess); + _SysWorkProcessRepository.Update(workprocess); } #endregion - #region ProcessHandleExpire(进行执行超时) - /// - /// 进程执行超时 - /// - public void ProcessHandleExpire() - { - var time = DateTime.Now.AddMinutes(-10); - - var count = _sysWorkprocessRepository.Count(p => p.Status == (int)WorkProcessStatus.Running && p.EditTime <= time); - - if (count > 0) { DingDingHelper.SendMsg($"有超时的进程任务产生,条数:{count}"); } - } - #endregion - #region 清空历史数据 - [TransactionCallHandler] public void ClearHistoryTask() { var historyDate = DateTime.Now.AddDays(-7); - var historyData = _sysWorkprocessRepository.SelectList(p => p.CreateTime < historyDate); - - if (historyData == null || historyData.Count == 0) { return; } - - _sysWorkprocessRepository.Add(historyData, "sys_workprocess_history"); - - _sysWorkprocessRepository.DeleteByIds(historyData.Select(p => p.Id).ToArray()); + _SysWorkProcessRepository.Delete(p => p.FuncStatus == (int)WorkProcessStatus.Complete && p.EditTime < historyDate); } #endregion #region ExecuteSingle(执行单个) - public void ExecuteSingle(SysWorkprocess process) + public void ExecuteSingle(SysWorkProcess process) { - var type = UnityHelper.GetUnityContainer().Resolve(Type.GetType(process.TypePath)); + var type = UnityHelper.GetUnityContainer().Resolve(Type.GetType(process.FuncClass)); - MethodInfo method = type.GetType().GetMethod(process.MethodName); + MethodInfo method = type.GetType().GetMethod(process.FuncMethod); + object result = new object(); - if (!string.IsNullOrEmpty(process.ParameterInfo)) + if (!string.IsNullOrEmpty(process.ParamInfo)) { - method.Invoke(type, new object[] { process.ParameterInfo }); + result = method.Invoke(type, new object[] { process.ParamInfo }); } else { - method.Invoke(type, new object[] { }); + result = method.Invoke(type, new object[] { }); } - - process.Status = (int)WorkProcessStatus.Finished; + if (result == null) + result = ""; + process.FuncStatus = (int)WorkProcessStatus.Complete; + process.ExecuteTime = DateTime.Now; + process.ExceptionInfo = string.Empty; process.EditTime = DateTime.Now; - _sysWorkprocessRepository.Update(process); + process.Result = JsonHelper.ToJson(result); + _SysWorkProcessRepository.Update(process); } #endregion @@ -140,18 +192,94 @@ namespace MyCode.Project.Services.Implementation public void Execute() { + lock (locker) + { + var client = UnityHelper.GetService(); + var list = SelectInitWorkProcess(5); + + //先将这10个任务改成运行中 + if (list != null && list.Count > 0) + { + var updateList = list.Select(p => new SysWorkProcess { ID = p.ID, FuncStatus = (int)WorkProcessStatus.Running }); + + _SysWorkProcessRepository.Update(updateList.ToList(), it => new { it.FuncStatus }); + } + + foreach (var process in list) + { + //这里开启事务,同时才开启 + client.Ado.BeginTran(); + + #region 执行一个任务 + try + { + ExecuteSingle(process); + + client.Ado.CommitTran(); + } + catch (Exception ex) + { + client.Ado.RollbackTran(); + + while (ex.InnerException != null) + { + ex = ex.InnerException; + } + + process.FuncStatus = (int)WorkProcessStatus.ExceptionStop; + process.EditTime = DateTime.Now; + process.ExecuteTime = DateTime.Now; + if (ex is BaseException) + { + process.ExceptionInfo = ex.Message; + } + else + { + process.ExceptionInfo = ex.ToString(); + } + + _SysWorkProcessRepository.Update(process); + } + #endregion + } + } + } + #endregion + + #region SelectOtherInitWorkProcess(返回优先级大于2的前几十条数据) + /// + /// 获取优先级3,4,5的调度 + /// + /// + /// + public List SelectOtherInitWorkProcess(int top) + { + + return _SysWorkProcessRepository.Queryable() + .Where(p => p.FuncStatus == (int)WorkProcessStatus.Waiting && p.Priority > 2 && p.Priority <= 5) + .Take(top) + .OrderBy(p => p.Priority) + .OrderBy(p => p.CreateTime).ToList(); + } + #endregion + + #region ExecuteOther(调度执行优先级比较低的任务) + /// + /// 调度执行优先级比较低的任务 + /// + public void ExecuteOther() + { var client = UnityHelper.GetService(); - var list = SelectInitWorkProcess(10); + var list = SelectOtherInitWorkProcess(20); - //先将这20个任务改成运行中 + //先将这10个任务改成运行中 if (list != null && list.Count > 0) { - DateTime now = DateTime.Now; - var updateList = list.Select(p => new SysWorkprocess { Id = p.Id, Status = (int)WorkProcessStatus.Running, EditTime = now }); + var updateList = list.Select(p => new SysWorkProcess { ID = p.ID, FuncStatus = (int)WorkProcessStatus.Running }); - _sysWorkprocessRepository.Update(updateList.ToList(), it => new { it.Status, it.EditTime }); + _SysWorkProcessRepository.Update(updateList.ToList(), it => new { it.FuncStatus }); } foreach (var process in list) @@ -175,8 +303,9 @@ namespace MyCode.Project.Services.Implementation ex = ex.InnerException; } - process.Status = (int)WorkProcessStatus.Stop; + process.FuncStatus = (int)WorkProcessStatus.ExceptionStop; process.EditTime = DateTime.Now; + process.ExecuteTime = DateTime.Now; if (ex is BaseException) { process.ExceptionInfo = ex.Message; @@ -186,124 +315,181 @@ namespace MyCode.Project.Services.Implementation process.ExceptionInfo = ex.ToString(); } - _sysWorkprocessRepository.Update(process); - - DingDingHelper.SendMsg(process.ExceptionInfo); - } - finally - { - client.Ado.Context.Queues.Clear(); + _SysWorkProcessRepository.Update(process); } #endregion + } + } + #endregion + #region SelectPriority2InitWorkProcess(返回优先级等于2的前几十条数据) + /// + /// 返回优先级等于2的前几十条数据 + /// + /// + /// + public List SelectPriority2InitWorkProcess(int top) + { + + return _SysWorkProcessRepository.Queryable() + .Where(p => p.FuncStatus == (int)WorkProcessStatus.Waiting && p.Priority == 2) + .Take(top) + .OrderBy(p => p.Priority) + .OrderBy(p => p.CreateTime).ToList(); + } + #endregion + + #region ExecutePriority2Work(调度执行优先级等于2的任务) + /// + /// 调度执行优先级等于2的任务 + /// + public void ExecutePriority2Work() + { + var client = UnityHelper.GetService(); + + var list = SelectPriority2InitWorkProcess(10); + + //先将这10个任务改成运行中 + if (list != null && list.Count > 0) + { + var updateList = list.Select(p => new SysWorkProcess { ID = p.ID, FuncStatus = (int)WorkProcessStatus.Running }); + + _SysWorkProcessRepository.Update(updateList.ToList(), it => new { it.FuncStatus }); } - } - #endregion - - #region Add(添加调度) - - /// - /// 添加调度 - /// - /// 执行类 - /// 商家ID - /// 方法名 - /// 备注 - /// 参数信息 - /// 执行类型 - public void Add(string methodName,long companyId, object entity = null, string remark = "", FuncType funcType = FuncType.Function, Priority priority = Priority.Low) - { - Add(typeof(T), companyId,methodName, remark, entity, funcType, priority); - } - #endregion - - #region Add(添加调度) - /// - /// 添加调度 - /// - /// 商家ID - /// 执行类 - /// 方法名 - /// 备注 - /// 参数信息 - /// 执行类型 - public void Add(Type type,long companyId, string methodName, string remark = "", object entity = null, FuncType funcType = FuncType.Function, Priority priority = Priority.Low) - { - string typePath = string.Format("{0}, {1}", type.FullName, type.Assembly.GetName().Name); - string paramInfo = entity == null - ? "" - : entity is string || entity is Guid || entity is int || entity is long || entity is decimal || - entity is float || entity is double - ? entity.ToString() - : entity.ToJson(); - Add(typePath,companyId, methodName, remark, paramInfo, funcType, priority); - } - #endregion - - #region AddQueue(添加进程调度) - public void AddQueue(string methodName, long companyId,object entity = null,FuncType funcType = FuncType.Function, Priority priority = Priority.Low) - { - var type = typeof(T); - - string typePath = string.Format("{0}, {1}", type.FullName, type.Assembly.GetName().Name); - - string paramInfo = entity == null - ? "" - : entity is string || entity is Guid || entity is int || entity is long || entity is decimal || - entity is float || entity is double - ? entity.ToString() - : entity.ToJson(); - - var workProcess = new SysWorkprocess() + foreach (var process in list) { - Id = IdHelper.GetNewId(), - FuncType = (byte)funcType, - TypePath = typePath, - MethodName = methodName, - ParameterInfo = paramInfo, - Status = (int)WorkProcessStatus.Init, - EditTime = DateTime.Now, - Priority = (byte)priority, - CreateTime = DateTime.Now, - CompanyId = companyId - - }; + //这里开启事务,同时才开启 + client.Ado.BeginTran(); - _sysWorkprocessRepository.AddQueue(workProcess); + #region 执行一个任务 + try + { + ExecuteSingle(process); + + client.Ado.CommitTran(); + } + catch (Exception ex) + { + client.Ado.RollbackTran(); + + while (ex.InnerException != null) + { + ex = ex.InnerException; + } + + process.FuncStatus = (int)WorkProcessStatus.ExceptionStop; + process.EditTime = DateTime.Now; + process.ExecuteTime = DateTime.Now; + if (ex is BaseException) + { + process.ExceptionInfo = ex.Message; + } + else + { + process.ExceptionInfo = ex.ToString(); + } + + _SysWorkProcessRepository.Update(process); + } + #endregion + //Thread.Sleep(300); + + + } } #endregion - #region Add(添加调度) + #region SelectSmsInitWorkProcess(获取优先级6的短信调度) /// - /// 添加调度任务 + /// 获取优先级6的短信调度 /// - /// 商家ID - /// 类型路径,如:Lxm.IServices.IWorkProcessService, Lxm.Services - /// 方法名 - /// 备注 - /// 参数信息 - /// 执行类型 - public void Add(string typePath,long companyId, string methodName, string remark = "", string paramInfo = "", - FuncType funcType = FuncType.Function, - Priority priority = Priority.Low) + /// + /// + public List SelectPriority6WorkProcess(int top) { + DateTime days = DateTime.Now.Date; + return _SysWorkProcessRepository.Queryable() + .Where(p => p.FuncStatus == (int)WorkProcessStatus.Waiting && p.Priority == 6) + .Take(top) + .OrderBy(p => p.Priority) + .OrderBy(p => p.CreateTime).ToList(); + } + #endregion - var entity = new SysWorkprocess() + #region ExecutePriority6(调度执行优先级=6的任务) + /// + /// 调度执行优先级=6的任务 + /// + public void ExecutePriority6() + { + var client = UnityHelper.GetService(); + + var list = SelectPriority6WorkProcess(20); + + //先将这10个任务改成运行中 + if (list != null && list.Count > 0) { - Id = IdHelper.GetNewId(), - FuncType = (byte)funcType, - TypePath = typePath, - MethodName = methodName, - ParameterInfo = paramInfo, - Status = (int)WorkProcessStatus.Init, - Remark = remark, - EditTime = DateTime.Now, - Priority = (byte)priority, - CreateTime = DateTime.Now, - CompanyId = companyId - }; - _sysWorkprocessRepository.Add(entity); + var updateList = list.Select(p => new SysWorkProcess { ID = p.ID, FuncStatus = (int)WorkProcessStatus.Running }); + + _SysWorkProcessRepository.Update(updateList.ToList(), it => new { it.FuncStatus }); + } + + foreach (var process in list) + { + //这里开启事务,同时才开启 + client.Ado.BeginTran(); + + #region 执行一个任务 + try + { + ExecuteSingle(process); + + client.Ado.CommitTran(); + } + catch (Exception ex) + { + client.Ado.RollbackTran(); + + while (ex.InnerException != null) + { + ex = ex.InnerException; + } + + process.FuncStatus = (int)WorkProcessStatus.ExceptionStop; + process.EditTime = DateTime.Now; + process.ExecuteTime = DateTime.Now; + if (ex is BaseException) + { + process.ExceptionInfo = ex.Message; + } + else + { + process.ExceptionInfo = ex.ToString(); + } + + _SysWorkProcessRepository.Update(process); + } + #endregion + } + } + #endregion + + #region RetryTask(重试失败的任务) + /// + /// 重试失败的任务 + /// + public void RetryTask() + { + DateTime today = DateTime.Now.Date.AddDays(-1); + var list = _SysWorkProcessRepository.Queryable().Where(t => t.FuncStatus == 4 && t.RetryCount <= 10 + && t.CreateTime >= today).OrderBy(t => t.EditTime).Take(20).ToList(); + list.ForEach(t => + { + t.RetryCount = t.RetryCount + 1; + t.FuncStatus = 0; + }); + _SysWorkProcessRepository.Update(list); } #endregion } diff --git a/Reportapi/MyCode.Project.Services/Implementation/YuyuboService.cs b/Reportapi/MyCode.Project.Services/Implementation/YuyuboService.cs new file mode 100644 index 0000000..c56fcf9 --- /dev/null +++ b/Reportapi/MyCode.Project.Services/Implementation/YuyuboService.cs @@ -0,0 +1,20 @@ +using MyCode.Project.Domain.Message.Request.JackYun; +using MyCode.Project.Domain.Repositories; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Infrastructure.JackYun; +using System; + +namespace MyCode.Project.Services.Implementation +{ + public class YuyuboService : ServiceBase //,// IJackYunService + { + + private IJackOrdersRepository _jackOrdersRepository; + + public YuyuboService(IJackOrdersRepository jackOrdersRepository) + { + _jackOrdersRepository = jackOrdersRepository; + } + + } +} diff --git a/Reportapi/MyCode.Project.Services/Implementation/ZhuBinService.cs b/Reportapi/MyCode.Project.Services/Implementation/ZhuBinService.cs new file mode 100644 index 0000000..0ca2138 --- /dev/null +++ b/Reportapi/MyCode.Project.Services/Implementation/ZhuBinService.cs @@ -0,0 +1,20 @@ +using MyCode.Project.Domain.Message.Request.JackYun; +using MyCode.Project.Domain.Repositories; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Infrastructure.JackYun; +using System; + +namespace MyCode.Project.Services.Implementation +{ + public class ZhuBinService : ServiceBase //, IZhuBinService + { + + private IYTKJTShopParameterRepository _yTKJTShopParameterRepository; + + public ZhuBinService(IYTKJTShopParameterRepository yTKJTShopParameterRepository) + { + _yTKJTShopParameterRepository = yTKJTShopParameterRepository; + } + + } +} diff --git a/Reportapi/MyCode.Project.Services/MyCode.Project.Services.csproj b/Reportapi/MyCode.Project.Services/MyCode.Project.Services.csproj index 575118e..262fe1b 100644 --- a/Reportapi/MyCode.Project.Services/MyCode.Project.Services.csproj +++ b/Reportapi/MyCode.Project.Services/MyCode.Project.Services.csproj @@ -115,19 +115,21 @@ - + + + - - + + + - diff --git a/Reportapi/MyCode.Project.WebApi/Web.config b/Reportapi/MyCode.Project.WebApi/Web.config index af28f3d..fba5b9f 100644 --- a/Reportapi/MyCode.Project.WebApi/Web.config +++ b/Reportapi/MyCode.Project.WebApi/Web.config @@ -25,8 +25,8 @@ - - + +