diff --git a/BBWYB.Common/BBWYB.Common.csproj b/BBWYB.Common/BBWYB.Common.csproj
index 7c02750..c165dfe 100644
--- a/BBWYB.Common/BBWYB.Common.csproj
+++ b/BBWYB.Common/BBWYB.Common.csproj
@@ -10,6 +10,7 @@
+
diff --git a/BBWYB.Common/Extensions/DateTimeExtension.cs b/BBWYB.Common/Extensions/DateTimeExtension.cs
index c35ca35..0ad4f30 100644
--- a/BBWYB.Common/Extensions/DateTimeExtension.cs
+++ b/BBWYB.Common/Extensions/DateTimeExtension.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
-namespace BBWY.Common.Extensions
+namespace BBWYB.Common.Extensions
{
public static class DateTimeExtension
{
diff --git a/BBWYB.Common/Extensions/MapperExtension.cs b/BBWYB.Common/Extensions/MapperExtension.cs
index de97c59..060ab3f 100644
--- a/BBWYB.Common/Extensions/MapperExtension.cs
+++ b/BBWYB.Common/Extensions/MapperExtension.cs
@@ -1,7 +1,7 @@
using AutoMapper;
using Microsoft.Extensions.DependencyInjection;
-namespace BBWY.Common.Extensions
+namespace BBWYB.Common.Extensions
{
public static class MapperExtension
{
diff --git a/BBWYB.Common/Extensions/StartupExtension.cs b/BBWYB.Common/Extensions/StartupExtension.cs
index 7dd0426..34d8779 100644
--- a/BBWYB.Common/Extensions/StartupExtension.cs
+++ b/BBWYB.Common/Extensions/StartupExtension.cs
@@ -4,7 +4,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Reflection;
-namespace BBWY.Common.Extensions
+namespace BBWYB.Common.Extensions
{
public static class StartupExtension
{
diff --git a/BBWYB.Common/Http/HttpDownloader.cs b/BBWYB.Common/Http/HttpDownloader.cs
index 665bdaf..787771d 100644
--- a/BBWYB.Common/Http/HttpDownloader.cs
+++ b/BBWYB.Common/Http/HttpDownloader.cs
@@ -4,7 +4,7 @@ using System.Net;
using System.Net.Http;
using System.Threading;
-namespace BBWY.Common.Http
+namespace BBWYB.Common.Http
{
///
/// Http下载器
diff --git a/BBWYB.Common/Http/RestAPIService.cs b/BBWYB.Common/Http/RestAPIService.cs
index 21545b4..f0b89ca 100644
--- a/BBWYB.Common/Http/RestAPIService.cs
+++ b/BBWYB.Common/Http/RestAPIService.cs
@@ -1,10 +1,10 @@
-using BBWY.Common.Extensions;
+using BBWYB.Common.Extensions;
using Swifter.Json;
using System.Net;
using System.Net.Http.Headers;
using System.Text;
-namespace BBWY.Common.Http
+namespace BBWYB.Common.Http
{
public class RestApiService
{
diff --git a/BBWYB.Common/Models/ApiResponse.cs b/BBWYB.Common/Models/ApiResponse.cs
index e475241..fba6009 100644
--- a/BBWYB.Common/Models/ApiResponse.cs
+++ b/BBWYB.Common/Models/ApiResponse.cs
@@ -1,6 +1,6 @@
using System;
-namespace BBWY.Common.Models
+namespace BBWYB.Common.Models
{
public class ApiResponse
{
diff --git a/BBWYB.Common/Models/BusinessException.cs b/BBWYB.Common/Models/BusinessException.cs
index d26b041..94b63ff 100644
--- a/BBWYB.Common/Models/BusinessException.cs
+++ b/BBWYB.Common/Models/BusinessException.cs
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
-namespace BBWY.Common.Models
+namespace BBWYB.Common.Models
{
///
/// 业务异常
diff --git a/BBWYB.Common/Models/IDenpendency.cs b/BBWYB.Common/Models/IDenpendency.cs
index 91b78ec..fc6d76d 100644
--- a/BBWYB.Common/Models/IDenpendency.cs
+++ b/BBWYB.Common/Models/IDenpendency.cs
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
-namespace BBWY.Common.Models
+namespace BBWYB.Common.Models
{
public interface IDenpendency
{
diff --git a/BBWYB.Common/TaskSchedulers/DelayTrigger.cs b/BBWYB.Common/TaskSchedulers/DelayTrigger.cs
index 53e7f31..3253a12 100644
--- a/BBWYB.Common/TaskSchedulers/DelayTrigger.cs
+++ b/BBWYB.Common/TaskSchedulers/DelayTrigger.cs
@@ -2,7 +2,7 @@
using System.Threading;
using System.Threading.Tasks;
-namespace BBWY.Common.Trigger
+namespace BBWYB.Common.Trigger
{
///
/// 延迟触发组件
diff --git a/BBWYB.Server.API/BBWYB.Server.API.csproj b/BBWYB.Server.API/BBWYB.Server.API.csproj
index 1133df6..ef243e8 100644
--- a/BBWYB.Server.API/BBWYB.Server.API.csproj
+++ b/BBWYB.Server.API/BBWYB.Server.API.csproj
@@ -4,14 +4,20 @@
net6.0
enable
enable
+ True
+
+
+
+
+
diff --git a/BBWYB.Server.API/Controllers/BaseApiController.cs b/BBWYB.Server.API/Controllers/BaseApiController.cs
new file mode 100644
index 0000000..32fe69d
--- /dev/null
+++ b/BBWYB.Server.API/Controllers/BaseApiController.cs
@@ -0,0 +1,15 @@
+using Microsoft.AspNetCore.Mvc;
+namespace BBWYB.Server.API.Controllers
+{
+ [Produces("application/json")]
+ [Route("Api/[Controller]/[Action]")]
+ [ApiController]
+ public class BaseApiController : ControllerBase
+ {
+ protected IHttpContextAccessor httpContextAccessor;
+ public BaseApiController(IHttpContextAccessor httpContextAccessor)
+ {
+ this.httpContextAccessor = httpContextAccessor;
+ }
+ }
+}
diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
new file mode 100644
index 0000000..186b6b8
--- /dev/null
+++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs
@@ -0,0 +1,72 @@
+using BBWYB.Server.Business;
+using BBWYB.Server.Model.Db;
+using BBWYB.Server.Model.Dto;
+using Microsoft.AspNetCore.Authentication.JwtBearer;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace BBWYB.Server.API.Controllers
+{
+ [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
+ public class PurchaseSchemeController : BaseApiController
+ {
+ private PurchaseSchemeBusiness purchaseSchemeBusiness;
+
+ public PurchaseSchemeController(PurchaseSchemeBusiness purchaseSchemeBusiness, IHttpContextAccessor httpContextAccessor) : base(httpContextAccessor)
+ {
+ this.purchaseSchemeBusiness = purchaseSchemeBusiness;
+ }
+
+ ///
+ /// 添加/编辑采购商
+ ///
+ ///
+ [HttpPost]
+ public void EditPurchaseScheme([FromBody] BatchCURDSchemeRequest batchCURDSchemeRequest)
+ {
+ purchaseSchemeBusiness.EditPurchaseScheme(batchCURDSchemeRequest);
+ }
+
+ ///
+ /// 根据产品Id批量查询采购商列表
+ ///
+ ///
+ ///
+ [HttpPost]
+ public IList GetPurchaseSchemeList([FromBody] QuerySchemeRequest querySchemeRequest)
+ {
+ return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest);
+ }
+
+ ///
+ /// 删除采购商
+ ///
+ ///
+ [HttpDelete]
+ public void DeletePurchaser([FromBody] DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
+ {
+ purchaseSchemeBusiness.DeletePurchaser(deletePurchaseSchemeRequest);
+ }
+
+ ///
+ /// 删除采购方案
+ ///
+ ///
+ [HttpDelete("{schemeId}")]
+ public void DeletePurchaseScheme([FromRoute] long schemeId)
+ {
+ purchaseSchemeBusiness.DeletePurchaseScheme(schemeId);
+ }
+
+ ///
+ /// 查询共有采购商
+ ///
+ ///
+ ///
+ [HttpPost]
+ public IList GetSharePurchaser([FromBody] QuerySchemeRequest querySchemeRequest)
+ {
+ return purchaseSchemeBusiness.GetSharePurchaser(querySchemeRequest);
+ }
+ }
+}
diff --git a/BBWYB.Server.API/Controllers/WeatherForecastController.cs b/BBWYB.Server.API/Controllers/WeatherForecastController.cs
deleted file mode 100644
index 13bc48c..0000000
--- a/BBWYB.Server.API/Controllers/WeatherForecastController.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using Microsoft.AspNetCore.Mvc;
-
-namespace BBWYB.Server.API.Controllers
-{
- [ApiController]
- [Route("[controller]")]
- public class WeatherForecastController : ControllerBase
- {
- private static readonly string[] Summaries = new[]
- {
- "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
- };
-
- private readonly ILogger _logger;
-
- public WeatherForecastController(ILogger logger)
- {
- _logger = logger;
- }
-
- [HttpGet(Name = "GetWeatherForecast")]
- public IEnumerable Get()
- {
- return Enumerable.Range(1, 5).Select(index => new WeatherForecast
- {
- Date = DateTime.Now.AddDays(index),
- TemperatureC = Random.Shared.Next(-20, 55),
- Summary = Summaries[Random.Shared.Next(Summaries.Length)]
- })
- .ToArray();
- }
- }
-}
\ No newline at end of file
diff --git a/BBWYB.Server.API/Program.cs b/BBWYB.Server.API/Program.cs
index 48863a6..0afe9ca 100644
--- a/BBWYB.Server.API/Program.cs
+++ b/BBWYB.Server.API/Program.cs
@@ -1,25 +1,124 @@
+using BBWYB.Common.Http;
+using BBWYB.Common.Log;
+using BBWYB.Server.Business;
+using Microsoft.AspNetCore.Authentication.JwtBearer;
+using Microsoft.IdentityModel.Tokens;
+using Microsoft.OpenApi.Models;
+using System.Reflection;
+using System.Text;
+using Yitter.IdGenerator;
+
var builder = WebApplication.CreateBuilder(args);
+var services = builder.Services;
+var configuration = builder.Configuration;
+
+services.AddMemoryCache();
+
+var idOption = new IdGeneratorOptions(1);
+var idGenerator = new DefaultIdGenerator(idOption);
+services.AddSingleton(typeof(IIdGenerator), idGenerator);
-// Add services to the container.
+//var fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, configuration.GetConnectionString("DB")).Build();
+//services.AddSingleton(typeof(IFreeSql), fsql);
-builder.Services.AddControllers();
-// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
-builder.Services.AddEndpointsApiExplorer();
-builder.Services.AddSwaggerGen();
+services.AddSingleton();
+services.AddSingleton();
+services.AddSingleton();
+services.AddMemoryCache();
+services.AddControllers();
+services.AddHttpContextAccessor();
+services.AddHttpClient();
+services.AddCors(options =>
+{
+ options.AddPolicy("cors", p =>
+ {
+ p.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
+ });
+});
+
+services.AddControllers();
+services.AddEndpointsApiExplorer();
+services.AddSwaggerGen(c =>
+{
+ c.SwaggerDoc("v1", new OpenApiInfo
+ {
+ Version = "v1.0.0",
+ Title = "ΪӯBAPI",
+ Description = "ע\r\n1.زƲôշ\r\n2.ApiResponseΪض(Code,Data,Message),ӿеķֵData\r\n3.Code=200"
+ });
+ //JWT֤
+ c.AddSecurityDefinition(JwtBearerDefaults.AuthenticationScheme, new OpenApiSecurityScheme
+ {
+ Scheme = JwtBearerDefaults.AuthenticationScheme,
+ BearerFormat = "JWT",
+ Type = SecuritySchemeType.ApiKey,
+ Name = "Authorization",
+ In = ParameterLocation.Header,
+ Description = "Authorization:Bearer {your JWT token}
",
+ });
+ c.AddSecurityRequirement(new OpenApiSecurityRequirement
+ {
+ {
+ new OpenApiSecurityScheme{Reference = new OpenApiReference
+ {
+ Type = ReferenceType.SecurityScheme,
+ Id = JwtBearerDefaults.AuthenticationScheme
+ }
+ },
+ new string[] { }
+ }
+ });
+
+ var executingAssembly = Assembly.GetExecutingAssembly();
+ var assemblyNames = executingAssembly.GetReferencedAssemblies().Union(new AssemblyName[] { executingAssembly.GetName() }).ToArray();
+ Array.ForEach(assemblyNames, (assemblyName) =>
+ {
+ //var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
+ var xmlFile = $"{assemblyName.Name}.xml";
+ var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
+ if (!File.Exists(xmlPath))
+ return;
+ c.IncludeXmlComments(xmlPath, true);
+ });
+});
+
+var secret = configuration.GetSection("Secret").Value;
+services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, x =>
+{
+ x.SaveToken = true;
+ x.RequireHttpsMetadata = false;
+ x.TokenValidationParameters = new TokenValidationParameters()
+ {
+ ClockSkew = TimeSpan.Zero,
+ ValidateIssuerSigningKey = true,
+ ValidateIssuer = false,
+ ValidateAudience = false,
+ IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret)),
+ //ValidIssuer = issuer,
+ //ValidAudience = audience,
+ //ValidateLifetime = true
+ };
+});
var app = builder.Build();
// Configure the HTTP request pipeline.
-if (app.Environment.IsDevelopment())
+//yunDingBusiness.RefreshKey();
+var isAllowedSwagger = configuration.GetValue("AllowedSwagger");
+if (isAllowedSwagger)
{
- app.UseSwagger();
- app.UseSwaggerUI();
+ app.UseSwagger(c => c.SerializeAsV2 = true)
+ .UseSwaggerUI(c =>
+ {
+ c.SwaggerEndpoint("/swagger/v1/swagger.json", "BBWYB API");
+ c.RoutePrefix = string.Empty;
+ });
}
-app.UseHttpsRedirection();
-
+//app.UseHttpsRedirection();
+app.UseRouting();
+app.UseCors("cors");
app.UseAuthorization();
-
app.MapControllers();
app.Run();
diff --git a/BBWYB.Server.API/appsettings.json b/BBWYB.Server.API/appsettings.json
index 10f68b8..c133b3e 100644
--- a/BBWYB.Server.API/appsettings.json
+++ b/BBWYB.Server.API/appsettings.json
@@ -5,5 +5,12 @@
"Microsoft.AspNetCore": "Warning"
}
},
- "AllowedHosts": "*"
+ "AllowedHosts": "*",
+ "ConnectionStrings": {
+ //"DB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy;charset=utf8;sslmode=none;"
+ "DB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy_test;charset=utf8;sslmode=none;",
+ "MDSDB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=mds;charset=utf8;sslmode=none;"
+ },
+ "AllowedSwagger": true,
+ "Secret": "D96BFA5B-F2AF-45BC-9342-5A55C3F9BBB0"
}
diff --git a/BBWYB.Server.Business/BBWYB.Server.Business.csproj b/BBWYB.Server.Business/BBWYB.Server.Business.csproj
index 8532fd1..dd73615 100644
--- a/BBWYB.Server.Business/BBWYB.Server.Business.csproj
+++ b/BBWYB.Server.Business/BBWYB.Server.Business.csproj
@@ -4,8 +4,15 @@
net6.0
enable
enable
+ True
+
+
+
+
+
+
diff --git a/BBWYB.Server.Business/BaseBusiness.cs b/BBWYB.Server.Business/BaseBusiness.cs
new file mode 100644
index 0000000..84ecea7
--- /dev/null
+++ b/BBWYB.Server.Business/BaseBusiness.cs
@@ -0,0 +1,18 @@
+using BBWYB.Common.Log;
+using Yitter.IdGenerator;
+namespace BBWYB.Server.Business
+{
+ public class BaseBusiness
+ {
+ protected IFreeSql fsql;
+ protected NLogManager nLogManager;
+ protected IIdGenerator idGenerator;
+
+ public BaseBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator)
+ {
+ this.fsql = fsql;
+ this.nLogManager = nLogManager;
+ this.idGenerator = idGenerator;
+ }
+ }
+}
diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
new file mode 100644
index 0000000..165c19e
--- /dev/null
+++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
@@ -0,0 +1,246 @@
+using BBWYB.Common.Extensions;
+using BBWYB.Common.Log;
+using BBWYB.Common.Models;
+using BBWYB.Server.Model.Db;
+using BBWYB.Server.Model.Dto;
+using Yitter.IdGenerator;
+
+namespace BBWYB.Server.Business
+{
+ public class PurchaseSchemeBusiness : BaseBusiness, IDenpendency
+ {
+ public PurchaseSchemeBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) { }
+
+ private void ExtractNewPurchaser(IList purchaserSchemeList, IList addPurchaserList) where T : InputPurchaseSchemeRequest
+ {
+ var reqeustPurchaserIdList = purchaserSchemeList.Select(s => s.PurchaserId).Distinct().ToList();
+ var existPurchaserIdList = fsql.Select().Where(p => reqeustPurchaserIdList.Contains(p.Id)).ToList(p => p.Id);
+ var newPurchaserIdList = reqeustPurchaserIdList.Except(existPurchaserIdList);
+ foreach (var scheme in purchaserSchemeList)
+ {
+ if (newPurchaserIdList.Any(p => p == scheme.PurchaserId) && !addPurchaserList.Any(p => p.Id == scheme.PurchaserId))
+ {
+ addPurchaserList.Add(new Purchaser()
+ {
+ Id = scheme.PurchaserId,
+ Name = scheme.PurchaserName,
+ Location = scheme.PurchaserLocation,
+ Platform = scheme.PurchasePlatform
+ });
+ }
+ }
+ }
+
+ public void EditPurchaseScheme(BatchCURDSchemeRequest batchCURDSchemeRequest)
+ {
+ if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count == 0 && batchCURDSchemeRequest.AddPurchaseSchemeList.Count == 0)
+ throw new BusinessException("非法参数");
+ if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(p => string.IsNullOrEmpty(p.PurchaserId) ||
+ string.IsNullOrEmpty(p.PurchaserName)))
+ throw new BusinessException("新增方案中有采购商Id/Name/Location为空");
+
+ if (batchCURDSchemeRequest.AddPurchaseSchemeList.Any(p => string.IsNullOrEmpty(p.PurchaserId) ||
+ string.IsNullOrEmpty(p.PurchaserName)))
+ throw new BusinessException("编辑方案中有采购商Id/Name/Location为空");
+
+ List addPurchaseSchemeList = null;
+ List addPurchaseSchemeProductList = new List();
+ List addPurchaseSchemeProductSkuList = new List();
+ List newPurchaserList = new List();
+ List deletePurchaseSchemeIdList = new List();
+
+ #region 新增采购方案
+ if (batchCURDSchemeRequest.AddPurchaseSchemeList.Count > 0)
+ {
+ ExtractNewPurchaser(batchCURDSchemeRequest.AddPurchaseSchemeList, newPurchaserList);
+
+ addPurchaseSchemeList = batchCURDSchemeRequest.AddPurchaseSchemeList.Map>();
+
+ foreach (var scheme in addPurchaseSchemeList)
+ {
+ scheme.Id = idGenerator.NewLong();
+ scheme.CreateTime = DateTime.Now;
+
+ foreach (var purchaseProduct in scheme.PurchaseSchemeProductList)
+ {
+ purchaseProduct.Id = idGenerator.NewLong();
+ purchaseProduct.CreateTime = DateTime.Now;
+ purchaseProduct.SkuPurchaseSchemeId = scheme.Id;
+ foreach (var purchaseProductSku in purchaseProduct.PurchaseSchemeProductSkuList)
+ {
+ purchaseProductSku.Id = idGenerator.NewLong();
+ purchaseProductSku.CreateTime = DateTime.Now;
+ purchaseProductSku.SkuPurchaseSchemeId = scheme.Id;
+ }
+ addPurchaseSchemeProductSkuList.AddRange(purchaseProduct.PurchaseSchemeProductSkuList);
+ }
+ addPurchaseSchemeProductList.AddRange(scheme.PurchaseSchemeProductList);
+ }
+ }
+ #endregion
+
+ #region 更新采购方案
+ if (batchCURDSchemeRequest.EditPurchaseSchemeList.Count > 0)
+ {
+ //ExtractNewPurchaser(batchCURDSchemeRequest.EditPurchaseSchemeList, newPurchaserList);
+ deletePurchaseSchemeIdList.AddRange(batchCURDSchemeRequest.EditPurchaseSchemeList.Select(ps => ps.Id));
+
+ var editPurchaseSchemeList = batchCURDSchemeRequest.EditPurchaseSchemeList.Map>();
+ foreach (var scheme in editPurchaseSchemeList)
+ {
+ foreach (var purchaseProduct in scheme.PurchaseSchemeProductList)
+ {
+ purchaseProduct.Id = idGenerator.NewLong();
+ purchaseProduct.CreateTime = DateTime.Now;
+ purchaseProduct.SkuPurchaseSchemeId = scheme.Id;
+ foreach (var purchaseProductSku in purchaseProduct.PurchaseSchemeProductSkuList)
+ {
+ purchaseProductSku.Id = idGenerator.NewLong();
+ purchaseProductSku.CreateTime = DateTime.Now;
+ purchaseProductSku.SkuPurchaseSchemeId = scheme.Id;
+ }
+ addPurchaseSchemeProductSkuList.AddRange(purchaseProduct.PurchaseSchemeProductSkuList);
+ }
+ addPurchaseSchemeProductList.AddRange(scheme.PurchaseSchemeProductList);
+ }
+ }
+ #endregion
+
+ fsql.Transaction(() =>
+ {
+ if (newPurchaserList.Count > 0)
+ fsql.Insert(newPurchaserList).ExecuteAffrows();
+
+ //更新,删除已存在的采购方案商品和Sku
+ if (deletePurchaseSchemeIdList.Count > 0)
+ {
+ fsql.Delete().Where(p => deletePurchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows();
+ fsql.Delete().Where(p => deletePurchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)).ExecuteAffrows();
+ }
+
+ //新增
+ if (addPurchaseSchemeList != null && addPurchaseSchemeList.Count > 0)
+ fsql.Insert(addPurchaseSchemeList).ExecuteAffrows();
+ if (addPurchaseSchemeProductList.Count > 0)
+ fsql.Insert(addPurchaseSchemeProductList).ExecuteAffrows();
+ if (addPurchaseSchemeProductSkuList.Count > 0)
+ fsql.Insert(addPurchaseSchemeProductSkuList).ExecuteAffrows();
+
+ });
+ }
+
+ ///
+ /// 获取采购方案
+ ///
+ ///
+ ///
+ public IList GetPurchaseSchemeList(QuerySchemeRequest querySchemeRequest)
+ {
+ var select = fsql.Select().InnerJoin((ps, p) => ps.PurchaserId == p.Id);
+ if (querySchemeRequest.SchemeId != null && querySchemeRequest.SchemeId != 0)
+ select = select.Where((ps, p) => ps.Id == querySchemeRequest.SchemeId);
+ else
+ {
+ select = select.WhereIf(querySchemeRequest.ShopId != null && querySchemeRequest.ShopId != 0, (ps, p) => ps.ShopId == querySchemeRequest.ShopId)
+ .WhereIf(querySchemeRequest.SkuIdList != null && querySchemeRequest.SkuIdList.Count() > 0, (ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId))
+ .WhereIf(!string.IsNullOrEmpty(querySchemeRequest.PurchaserId), (ps, p) => ps.PurchaserId == querySchemeRequest.PurchaserId)
+ .WhereIf(querySchemeRequest.PurchasePlatform != null, (ps, p) => ps.PurchasePlatform == querySchemeRequest.PurchasePlatform);
+ }
+
+ var purchaseSchemeList = select.ToList((ps, p) => new PurchaseSchemeResponse
+ {
+ Id = ps.Id,
+ ProductId = ps.ProductId,
+ SkuId = ps.SkuId,
+ ShopId = ps.ShopId,
+ PurchaserId = p.Id,
+ PurchaserName = p.Name,
+ PurchaserLocation = p.Location,
+ DefaultCost = ps.DefaultCost,
+ RealCost = ps.RealCost,
+ CreateTime = ps.CreateTime,
+ PurchasePlatform = ps.PurchasePlatform
+ });
+
+ if (purchaseSchemeList.Count > 0)
+ {
+ var purchaseSchemeIdList = purchaseSchemeList.Select(p => p.Id).ToList();
+
+ var purchaseSchemeProductList = fsql.Select().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId))
+ .ToList().Map>();
+
+ var purchaseSchemeProductSkuList = fsql.Select().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId))
+ .ToList().Map>();
+
+ foreach (var scheme in purchaseSchemeList)
+ {
+ var schemeProductList = purchaseSchemeProductList.Where(ps => ps.SkuPurchaseSchemeId == scheme.Id);
+ if (schemeProductList.Count() > 0)
+ {
+ scheme.PurchaseSchemeProductList.AddRange(schemeProductList);
+ foreach (var schemeProduct in schemeProductList)
+ {
+ var schemeProductSkuList = purchaseSchemeProductSkuList.Where(psk => psk.SkuPurchaseSchemeId == scheme.Id &&
+ psk.PurchaseProductId == schemeProduct.PurchaseProductId);
+ if (schemeProductSkuList.Count() > 0)
+ schemeProduct.PurchaseSchemeProductSkuList.AddRange(schemeProductSkuList);
+ }
+ }
+ }
+ }
+ return purchaseSchemeList;
+ }
+
+ ///
+ /// 获取共同拥有的采购商
+ ///
+ ///
+ ///
+ public IList GetSharePurchaser(QuerySchemeRequest querySchemeRequest)
+ {
+ var skuCount = querySchemeRequest.SkuIdList.Count();
+
+ var purchaseSchemeList = fsql.Select().InnerJoin((ps, p) => ps.PurchaserId == p.Id)
+ .Where((ps, p) => ps.ShopId == querySchemeRequest.ShopId)
+ .Where((ps, p) => querySchemeRequest.SkuIdList.Contains(ps.SkuId))
+ .ToList();
+ if (purchaseSchemeList.Count() == 0)
+ return null;
+
+ var group = purchaseSchemeList.GroupBy(p => p.PurchaserId);
+ var sharePurchaserIdList = new List();
+ foreach (var g in group)
+ {
+ if (g.Count() == skuCount)
+ sharePurchaserIdList.Add(g.Key);
+ }
+ if (sharePurchaserIdList.Count == 0)
+ return null;
+
+ return fsql.Select().Where(p => sharePurchaserIdList.Contains(p.Id)).ToList();
+ }
+
+ public void DeletePurchaser(DeletePurchaseSchemeRequest deletePurchaseSchemeRequest)
+ {
+ var purchaseSchemeIdList = fsql.Select().Where(ps => ps.ProductId == deletePurchaseSchemeRequest.ProductId &&
+ ps.PurchaserId == deletePurchaseSchemeRequest.PurchaserId).ToList(ps => ps.Id);
+
+ fsql.Transaction(() =>
+ {
+ fsql.Delete(purchaseSchemeIdList).ExecuteAffrows();
+ fsql.Delete().Where(psp => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)).ExecuteAffrows();
+ fsql.Delete().Where(psps => purchaseSchemeIdList.Contains(psps.SkuPurchaseSchemeId)).ExecuteAffrows();
+ });
+ }
+
+ public void DeletePurchaseScheme(long schemeId)
+ {
+ fsql.Transaction(() =>
+ {
+ fsql.Delete(schemeId).ExecuteAffrows();
+ fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows();
+ fsql.Delete().Where(p => p.SkuPurchaseSchemeId == schemeId).ExecuteAffrows();
+ });
+ }
+ }
+}
diff --git a/BBWYB.Server.Business/TaskSchedulerManager.cs b/BBWYB.Server.Business/TaskSchedulerManager.cs
new file mode 100644
index 0000000..fa971c1
--- /dev/null
+++ b/BBWYB.Server.Business/TaskSchedulerManager.cs
@@ -0,0 +1,18 @@
+using System.Threading.Tasks.Schedulers;
+
+namespace BBWYB.Server.Business
+{
+ public class TaskSchedulerManager
+ {
+ public LimitedConcurrencyLevelTaskScheduler SyncOrderTaskScheduler { get; private set; }
+
+ public LimitedConcurrencyLevelTaskScheduler PurchaseOrderCallbackTaskScheduler { get; private set; }
+
+
+ public TaskSchedulerManager()
+ {
+ SyncOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
+ PurchaseOrderCallbackTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
+ }
+ }
+}
diff --git a/BBWYB.Server.Model/BBWYB.Server.Model.csproj b/BBWYB.Server.Model/BBWYB.Server.Model.csproj
index 132c02c..fea6112 100644
--- a/BBWYB.Server.Model/BBWYB.Server.Model.csproj
+++ b/BBWYB.Server.Model/BBWYB.Server.Model.csproj
@@ -4,6 +4,15 @@
net6.0
enable
enable
+ True
+
+
+
+
+
+
+
+
diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs
new file mode 100644
index 0000000..7b5f150
--- /dev/null
+++ b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs
@@ -0,0 +1,56 @@
+using FreeSql.DataAnnotations;
+using System;
+using System.Collections.Generic;
+namespace BBWYB.Server.Model.Db
+{
+
+ ///
+ /// Sku采购方案表
+ ///
+ [Table(Name = "purchasescheme", DisableSyncStructure = true)]
+ public partial class PurchaseScheme
+ {
+
+ ///
+ /// Sku采购方案Id
+ ///
+ [Column(IsPrimary = true)]
+ public long Id { get; set; }
+
+ [Column(DbType = "datetime")]
+ public DateTime? CreateTime { get; set; }
+
+ ///
+ /// 采购默认成本
+ ///
+
+ public decimal DefaultCost { get; set; } = 0.0M;
+
+ [Column(StringLength = 50, IsNullable = false)]
+ public string ProductId { get; set; }
+
+ ///
+ /// 采购商Id
+ ///
+ [Column(StringLength = 20)]
+ public string PurchaserId { get; set; }
+
+ ///
+ /// 采购实际成本
+ ///
+
+ public decimal RealCost { get; set; } = 0.0M;
+
+ [Column(StringLength = 50, IsNullable = false)]
+ public string SkuId { get; set; }
+
+ public long ShopId { get; set; }
+
+ [Column(MapType = typeof(int), DbType = "int(1)")]
+ public Enums.Platform PurchasePlatform { get; set; }
+
+ [Column(IsIgnore = true)]
+ public List PurchaseSchemeProductList { get; set; }
+ }
+
+}
diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs
new file mode 100644
index 0000000..6833df3
--- /dev/null
+++ b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs
@@ -0,0 +1,39 @@
+using FreeSql.DataAnnotations;
+
+namespace BBWYB.Server.Model.Db
+{
+
+ ///
+ /// 采购商表
+ ///
+ [Table(Name = "purchaser", DisableSyncStructure = true)]
+ public partial class Purchaser
+ {
+
+ ///
+ /// 采购商Id
+ ///
+ [Column(StringLength = 20, IsPrimary = true, IsNullable = false)]
+ public string Id { get; set; }
+
+ ///
+ /// 采购商名称
+ ///
+ [Column(StringLength = 50)]
+ public string Name { get; set; }
+
+ ///
+ /// 发货地
+ ///
+ [Column(StringLength = 50)]
+ public string Location { get; set; }
+
+ ///
+ /// 采购平台
+ ///
+ [Column(MapType = typeof(int?))]
+ public Enums.Platform? Platform { get; set; }
+
+ }
+
+}
diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproduct.cs b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproduct.cs
new file mode 100644
index 0000000..d0733e3
--- /dev/null
+++ b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproduct.cs
@@ -0,0 +1,53 @@
+using FreeSql.DataAnnotations;
+using System;
+using System.Collections.Generic;
+
+namespace BBWYB.Server.Model.Db
+{
+
+ ///
+ /// 采购方案商品表
+ ///
+ [Table(Name = "purchaseschemeproduct", DisableSyncStructure = true)]
+ public partial class PurchaseSchemeProduct
+ {
+
+ ///
+ /// 采购商品和采购方案的关系Id
+ ///
+ [Column(IsPrimary = true)]
+ public long Id { get; set; }
+
+ [Column(DbType = "datetime")]
+ public DateTime? CreateTime { get; set; }
+
+ [Column(StringLength = 50, IsNullable = false)]
+ public string ProductId { get; set; }
+
+ ///
+ /// 采购商品Id
+ ///
+ [Column(StringLength = 50, IsNullable = false)]
+ public string PurchaseProductId { get; set; }
+
+ ///
+ /// 采购商品链接
+ ///
+ [Column(StringLength = 100)]
+ public string PurchaseUrl { get; set; }
+
+ [Column(StringLength = 50, IsNullable = false)]
+ public string SkuId { get; set; }
+
+ ///
+ /// Sku采购方案Id
+ ///
+ public long SkuPurchaseSchemeId { get; set; }
+
+
+ [Column(IsIgnore = true)]
+ public List PurchaseSchemeProductSkuList { get; set; }
+
+ }
+
+}
diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs
new file mode 100644
index 0000000..4a9e837
--- /dev/null
+++ b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaseschemeproductsku.cs
@@ -0,0 +1,51 @@
+using FreeSql.DataAnnotations;
+using System;
+
+namespace BBWYB.Server.Model.Db
+{
+
+ [Table(Name = "purchaseschemeproductsku", DisableSyncStructure = true)]
+ public partial class PurchaseSchemeProductSku
+ {
+
+ ///
+ /// 采购商品的SKU和采购方案的关系Id
+ ///
+ [Column(IsPrimary = true)]
+ public long Id { get; set; }
+
+ [Column(DbType = "datetime")]
+ public DateTime? CreateTime { get; set; }
+
+ [Column(StringLength = 50, IsNullable = false)]
+ public string ProductId { get; set; }
+
+ ///
+ /// 采购商品Id
+ ///
+ [Column(StringLength = 50, IsNullable = false)]
+ public string PurchaseProductId { get; set; }
+
+ ///
+ /// 采购商品的SkuId
+ ///
+ [Column(StringLength = 50)]
+ public string PurchaseSkuId { get; set; }
+
+ ///
+ /// 采购商品Sku的SpecId
+ ///
+ [Column(StringLength = 50)]
+ public string PurchaseSkuSpecId { get; set; }
+
+ [Column(StringLength = 50, IsNullable = false)]
+ public string SkuId { get; set; }
+
+ ///
+ /// Sku采购方案Id
+ ///
+ public long SkuPurchaseSchemeId { get; set; }
+
+ }
+
+}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs
new file mode 100644
index 0000000..8176ee2
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/BatchCURDSchemeRequest.cs
@@ -0,0 +1,17 @@
+using System.Collections.Generic;
+
+namespace BBWYB.Server.Model.Dto
+{
+ public class BatchCURDSchemeRequest
+ {
+ ///
+ /// 需要修改的采购方案
+ ///
+ public IList EditPurchaseSchemeList { get; set; }
+
+ ///
+ /// 需要新增的采购方案
+ ///
+ public IList AddPurchaseSchemeList { get; set; }
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs
new file mode 100644
index 0000000..047cd7b
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/DeletePurchaseSchemeRequest.cs
@@ -0,0 +1,9 @@
+namespace BBWYB.Server.Model.Dto
+{
+ public class DeletePurchaseSchemeRequest
+ {
+ public string ProductId { get; set; }
+
+ public string PurchaserId { get; set; }
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseSchemeRequest.cs
new file mode 100644
index 0000000..f82c2fb
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/EditPurchaseSchemeRequest.cs
@@ -0,0 +1,7 @@
+namespace BBWYB.Server.Model.Dto
+{
+ public class EditPurchaseSchemeRequest: InputPurchaseSchemeRequest
+ {
+ public long Id { get; set; }
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs
new file mode 100644
index 0000000..499d604
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductRequest.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BBWYB.Server.Model.Dto
+{
+ public class InputPurchaseSchemeProductRequest
+ {
+ public string ProductId { get; set; }
+ public string SkuId { get; set; }
+ public string PurchaseProductId { get; set; }
+ public string PurchaseUrl { get; set; }
+ public IList PurchaseSchemeProductSkuList { get; set; }
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs
new file mode 100644
index 0000000..bce5af9
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeProductSkuRequest.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BBWYB.Server.Model.Dto
+{
+ public class InputPurchaseSchemeProductSkuRequest
+ {
+ public string ProductId { get; set; }
+ public string SkuId { get; set; }
+ public string PurchaseProductId { get; set; }
+ public string PurchaseSkuId { get; set; }
+ public string PurchaseSkuSpecId { get; set; }
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs
new file mode 100644
index 0000000..fe6a956
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/InputPurchaseSchemeRequest.cs
@@ -0,0 +1,34 @@
+using System.Collections.Generic;
+
+namespace BBWYB.Server.Model.Dto
+{
+ public class InputPurchaseSchemeRequest
+ {
+ public string ShopId { get; set; }
+ public string ProductId { get; set; }
+ public string SkuId { get; set; }
+ ///
+ /// 采购默认成本
+ ///
+ public decimal? DefaultCost { get; set; }
+ ///
+ /// 采购实际成本
+ ///
+ public decimal? RealCost { get; set; }
+ ///
+ /// 采购商Id
+ ///
+ public string PurchaserId { get; set; }
+ public string PurchaserName { get; set; }
+ ///
+ /// 采购商发货地
+ ///
+ public string PurchaserLocation { get; set; }
+ ///
+ /// 采购平台
+ ///
+ public Enums.Platform PurchasePlatform { get; set; } = Enums.Platform.阿里巴巴;
+
+ public IList PurchaseSchemeProductList { get; set; }
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs
new file mode 100644
index 0000000..abeb2fd
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs
@@ -0,0 +1,26 @@
+using System.Collections.Generic;
+
+namespace BBWYB.Server.Model.Dto
+{
+ public class QuerySchemeRequest
+ {
+ ///
+ /// 采购方案Id
+ ///
+ public long? SchemeId { get; set; }
+
+ public long? ShopId { get; set; }
+
+ public IList SkuIdList { get; set; }
+
+ ///
+ /// 采购商Id, 可空
+ ///
+ public string PurchaserId { get; set; }
+
+ ///
+ /// 采购平台
+ ///
+ public Enums.Platform? PurchasePlatform { get; set; }
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs
new file mode 100644
index 0000000..0123956
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BBWYB.Server.Model.Dto
+{
+ public class PurchaseSchemeProductResponse : Model.Db.PurchaseSchemeProduct
+ {
+ public new List PurchaseSchemeProductSkuList { get; set; }
+
+ public PurchaseSchemeProductResponse()
+ {
+ PurchaseSchemeProductSkuList = new List();
+ }
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs
new file mode 100644
index 0000000..7374eaa
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductSkuResponse.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace BBWYB.Server.Model.Dto
+{
+ public class PurchaseSchemeProductSkuResponse : Model.Db.PurchaseSchemeProductSku
+ {
+ }
+}
diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs
new file mode 100644
index 0000000..582c034
--- /dev/null
+++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs
@@ -0,0 +1,18 @@
+using System.Collections.Generic;
+
+namespace BBWYB.Server.Model.Dto
+{
+ public class PurchaseSchemeResponse : Model.Db.PurchaseScheme
+ {
+ public string PurchaserName { get; set; }
+
+ public string PurchaserLocation { get; set; }
+
+ public new List PurchaseSchemeProductList { get; set; }
+
+ public PurchaseSchemeResponse()
+ {
+ PurchaseSchemeProductList = new List();
+ }
+ }
+}
diff --git a/BBWYB.Server.Model/Enums.cs b/BBWYB.Server.Model/Enums.cs
new file mode 100644
index 0000000..dc296f2
--- /dev/null
+++ b/BBWYB.Server.Model/Enums.cs
@@ -0,0 +1,259 @@
+namespace BBWYB.Server.Model
+{
+ public class Enums
+ {
+ ///
+ /// 电商平台
+ ///
+ public enum Platform
+ {
+ 淘宝 = 0,
+ 京东 = 1,
+ 阿里巴巴 = 2,
+ 拼多多 = 3,
+ 微信 = 4,
+ 拳探 = 10
+ }
+
+ ///
+ /// 采购方式
+ ///
+ public enum PurchaseMethod
+ {
+ 线上采购 = 0,
+ 线下采购 = 1
+ }
+
+ ///
+ /// 采购单模式
+ ///
+ public enum PurchaseOrderMode
+ {
+ 批发 = 0,
+ 代发 = 1
+ }
+
+ ///
+ /// 仓储类型
+ ///
+ public enum StorageType
+ {
+ 京仓 = 0,
+ 云仓 = 1,
+ 本地自发 = 2,
+ 代发 = 3,
+ SD = 4
+ }
+
+ ///
+ /// 订单类型
+ ///
+ public enum OrderType
+ {
+ #region JD订单类型
+ SOP = 22,
+ LOC = 75,
+ FBP = 21
+ #endregion
+ }
+
+ ///
+ /// 支付方式
+ ///
+ public enum PayType
+ {
+ 货到付款 = 1,
+ 邮局汇款 = 2,
+ 自提 = 3,
+ 在线支付 = 4,
+ 公司转账 = 5,
+ 银行卡转账 = 6
+ }
+
+ ///
+ /// 订单状态
+ ///
+ public enum OrderState
+ {
+ 待付款 = 0,
+ 等待采购 = 1,
+ 待出库 = 2,
+ 待收货 = 3,
+ 已完成 = 4,
+ 锁定 = 5,
+ 已取消 = 6,
+ 暂停 = 7,
+ 已退款 = 8
+ }
+
+ ///
+ /// 刷单类型
+ ///
+ public enum SDType
+ {
+ 自刷 = 0,
+ 其他 = 1,
+ 京礼金 = 2,
+ 刷单组 = 3
+ }
+
+ ///
+ /// 订单同步任务状态
+ ///
+ public enum OrderSyncState
+ {
+ Running = 0,
+ End = 1
+ }
+
+ public enum PayChannelType
+ {
+ 支付宝 = 0,
+ 微信 = 1,
+ 银行卡 = 2
+ }
+
+ ///
+ /// 服务单处理结果
+ ///
+ public enum ServiceResult
+ {
+ 退货 = 0,
+ 换新 = 1,
+ 原返 = 2,
+ 线下换新 = 3,
+ 维修 = 4,
+ 商品补发 = 5,
+ 仅退款 = 6,
+ SD退货 = 7
+ }
+
+ ///
+ /// 商品处理方式
+ ///
+ public enum ProductResult
+ {
+ 一件代发_退回厂家 = 0,
+ 退回齐越仓 = 1,
+ 退回京仓 = 2,
+ 退回云仓 = 3,
+ 客户无退货 = 4
+ }
+
+ ///
+ /// 商品情况
+ ///
+ public enum ProductHealth
+ {
+ 可二次销售 = 0,
+ 残次品_无法二次销售 = 1,
+ 厂家退货退款 = 2,
+ 客户无退货 = 3,
+ 破损 = 4
+ }
+
+ ///
+ /// 排序时间类型
+ ///
+ public enum SortTimeType
+ {
+ ModifyTime = 0, StartTime = 1
+ }
+
+ ///
+ /// 支付账单类型
+ ///
+ public enum PayBillType
+ {
+ 支付宝 = 0,
+ 微信 = 1,
+ 银行卡 = 2
+ }
+
+
+ ///
+ /// 资金类型
+ ///
+ public enum AuditCapitalType
+ {
+ 当月商品采购 = 0,
+ 当月商品退款 = 1,
+ 上月商品采购 = 2,
+ 上月商品退款 = 3,
+ 批量采购商品 = 4,
+ 采购运费 = 5,
+ 入仓运费 = 6,
+ 售后成本 = 7,
+ 发票点数 = 8,
+ 快递单号 = 9,
+ 诚e赊还款 = 10,
+ 空单号 = 11,
+ 购买刷单号 = 12,
+ 手机费 = 13,
+ 质检报告 = 14,
+ 备用金转入 = 15,
+ 平台补贴 = 16,
+ 快递赔付 = 17,
+ 自定义 = 18,
+ 备用金充值 = 19
+ }
+
+ ///
+ /// 京东仓库类型 1商家仓 2京东仓
+ ///
+ public enum StockType
+ {
+ 商家仓 = 1, 京仓 = 2
+ }
+
+ ///
+ /// 仓库状态 0暂停,1使用
+ ///
+ public enum StockStatus
+ {
+ 暂停 = 0, 使用 = 1
+ }
+
+ ///
+ /// SKU库存周期 暂无周期=0,增长期=1,稳定期=2,衰退期=3
+ ///
+ public enum SkuStockNumCycleType
+ {
+ 暂无周期 = 0,
+ 增长期 = 1,
+ 稳定期 = 2,
+ 衰退期 = 3
+ }
+
+ ///
+ /// 司南周期 暂无周期 = -1,成长加速期 = 0,成熟利润期 = 1,稳定日销期 = 2,策马奔腾期 = 3
+ ///
+ public enum SiNanCycleType
+ {
+ 暂无周期 = -1,
+ 成长加速期 = 0,
+ 成熟利润期 = 1,
+ 稳定日销期 = 2,
+ 策马奔腾期 = 3
+ }
+
+ ///
+ /// 促销任务状态 等待 = 0,进行中 = 1,已完成 = 2, 已停止 = 3
+ ///
+ public enum PromitionTaskStatus
+ {
+ 等待 = 0,
+ 进行中 = 1,
+ 已完成 = 2,
+ 已停止 = 3
+ }
+
+ ///
+ /// AppKey类型 全类型 = 0, 订单管理 = 1, 商品管理 = 2
+ ///
+ public enum AppKeyType
+ {
+ 全类型 = 0, 订单管理 = 1, 商品管理 = 2
+ }
+ }
+}
diff --git a/BBWYB.Server.Model/_MDS重新生成.bat b/BBWYB.Server.Model/_MDS重新生成.bat
new file mode 100644
index 0000000..2212476
--- /dev/null
+++ b/BBWYB.Server.Model/_MDS重新生成.bat
@@ -0,0 +1,2 @@
+
+FreeSql.Generator -Razor 1 -NameOptions 1,0,0,0 -NameSpace BBWYB.Server.Model.Db -DB "MySql,data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=mds;charset=utf8;sslmode=none;" -FileName "{name}.cs"
diff --git a/BBWYB.Server.Model/__重新生成.bat b/BBWYB.Server.Model/__重新生成.bat
new file mode 100644
index 0000000..6a93730
--- /dev/null
+++ b/BBWYB.Server.Model/__重新生成.bat
@@ -0,0 +1,2 @@
+
+FreeSql.Generator -Razor 1 -NameOptions 1,0,0,0 -NameSpace BBWYB.Server.Model.Db -DB "MySql,data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwyb;charset=utf8;sslmode=none;" -FileName "{name}.cs"