From c4ea3dc1242db754a908fbb26d449d34f43c7861 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 24 Oct 2023 11:38:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EGOI=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SiNan.API/.config/dotnet-tools.json | 12 +++++ SiNan.API/Controllers/BaseApiController.cs | 36 +++++++++++++ SiNan.API/Controllers/GOIController.cs | 27 ++++++++++ SiNan.API/Program.cs | 7 +++ SiNan.API/appsettings.json | 1 + SiNan.Business/GOIBusiness.cs | 5 ++ .../Request/Product/QueryProductGOIRequest.cs | 24 +++++++++ .../Product/QueryProductSkuGOIRequest.cs | 11 ++++ .../Product/SearchProductGOIRequestcs.cs | 13 ----- SiNan.Model/Dto/Response/GOI/GOIResponse.cs | 12 +++++ .../Dto/Response/GOI/ProductGOIResponse.cs | 7 +++ .../Dto/Response/GOI/ProductSkuGOIResponse.cs | 54 ++++++++++++++++--- SiNan.Model/Dto/Response/ListResponse.cs | 9 ++++ .../Response/Product/ProductSkuResponse.cs | 8 +++ 14 files changed, 205 insertions(+), 21 deletions(-) create mode 100644 SiNan.API/.config/dotnet-tools.json create mode 100644 SiNan.API/Controllers/BaseApiController.cs create mode 100644 SiNan.API/Controllers/GOIController.cs create mode 100644 SiNan.Model/Dto/Request/Product/QueryProductGOIRequest.cs create mode 100644 SiNan.Model/Dto/Request/Product/QueryProductSkuGOIRequest.cs delete mode 100644 SiNan.Model/Dto/Request/Product/SearchProductGOIRequestcs.cs create mode 100644 SiNan.Model/Dto/Response/ListResponse.cs create mode 100644 SiNan.Model/Dto/Response/Product/ProductSkuResponse.cs diff --git a/SiNan.API/.config/dotnet-tools.json b/SiNan.API/.config/dotnet-tools.json new file mode 100644 index 0000000..2f789b0 --- /dev/null +++ b/SiNan.API/.config/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-ef": { + "version": "7.0.12", + "commands": [ + "dotnet-ef" + ] + } + } +} \ No newline at end of file diff --git a/SiNan.API/Controllers/BaseApiController.cs b/SiNan.API/Controllers/BaseApiController.cs new file mode 100644 index 0000000..72d1f41 --- /dev/null +++ b/SiNan.API/Controllers/BaseApiController.cs @@ -0,0 +1,36 @@ +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Primitives; + +namespace SiNan.API.Controllers +{ + [Produces("application/json")] + [Route("Api/[Controller]/[Action]")] + [ApiController] + [EnableCors("cors")] + public class BaseApiController : ControllerBase + { + protected IHttpContextAccessor httpContextAccessor; + public BaseApiController(IHttpContextAccessor httpContextAccessor) + { + this.httpContextAccessor = httpContextAccessor; + } + + protected string GetUserId() + { + return httpContextAccessor?.HttpContext?.User.Claims.Where(x => x.Type == "userId")?.FirstOrDefault()?.Value; + } + + protected string GetToken() + { + httpContextAccessor.HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues token); + return token; + } + + protected string GetClientCode() + { + httpContextAccessor.HttpContext.Request.Headers.TryGetValue("ClientCode", out StringValues clientCode); + return clientCode; + } + } +} diff --git a/SiNan.API/Controllers/GOIController.cs b/SiNan.API/Controllers/GOIController.cs new file mode 100644 index 0000000..81726dd --- /dev/null +++ b/SiNan.API/Controllers/GOIController.cs @@ -0,0 +1,27 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using SiNan.Business; +using SiNan.Model.Dto; + +namespace SiNan.API.Controllers +{ + public class GOIController : BaseApiController + { + private GOIBusiness goiBusiness; + public GOIController(IHttpContextAccessor httpContextAccessor, GOIBusiness goiBusiness) : base(httpContextAccessor) + { + this.goiBusiness = goiBusiness; + } + + /// + /// 查询产品综合GOI + /// + /// + /// + [HttpPost] + public ListResponse QueryProductGOI([FromBody]QueryProductGOIRequest request) + { + return goiBusiness.QueryProductGOI(request); + } + } +} diff --git a/SiNan.API/Program.cs b/SiNan.API/Program.cs index 3b27e59..6afca3a 100644 --- a/SiNan.API/Program.cs +++ b/SiNan.API/Program.cs @@ -128,6 +128,13 @@ services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer( var app = builder.Build(); +app.UseSwagger(c => c.SerializeAsV2 = true) + .UseSwaggerUI(c => + { + c.SwaggerEndpoint("/swagger/v1/swagger.json", "SiNan API"); + c.RoutePrefix = string.Empty; + }); + app.UseMiddleware(); app.UseRouting(); app.UseCors("cors"); diff --git a/SiNan.API/appsettings.json b/SiNan.API/appsettings.json index 51c585f..bda8420 100644 --- a/SiNan.API/appsettings.json +++ b/SiNan.API/appsettings.json @@ -6,6 +6,7 @@ } }, "AllowedHosts": "*", + "Secret": "D96BFA5B-F2AF-45BC-9342-5A55C3F9BBB0", "ConnectionStrings": { //"DB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy;charset=utf8;sslmode=none;" "BBWYCDB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy_test;charset=utf8;sslmode=none;", diff --git a/SiNan.Business/GOIBusiness.cs b/SiNan.Business/GOIBusiness.cs index 6e94e82..36c9e90 100644 --- a/SiNan.Business/GOIBusiness.cs +++ b/SiNan.Business/GOIBusiness.cs @@ -1,5 +1,6 @@ using SiNan.Common.Log; using SiNan.Common.Models; +using SiNan.Model.Dto; using Yitter.IdGenerator; namespace SiNan.Business @@ -12,5 +13,9 @@ namespace SiNan.Business this.freeSqlMultiDBManager = freeSqlMultiDBManager; } + public ListResponse QueryProductGOI(QueryProductGOIRequest request) + { + return new ListResponse(); + } } } diff --git a/SiNan.Model/Dto/Request/Product/QueryProductGOIRequest.cs b/SiNan.Model/Dto/Request/Product/QueryProductGOIRequest.cs new file mode 100644 index 0000000..baa6244 --- /dev/null +++ b/SiNan.Model/Dto/Request/Product/QueryProductGOIRequest.cs @@ -0,0 +1,24 @@ +namespace SiNan.Model.Dto +{ + public class QueryProductGOIRequest + { + public string Spu { get; set; } + + public string Sku { get; set; } + + public string SpuTitle { get; set; } + + public Enums.Stage? Stage { get; set; } + + public DateTime StartDate { get; set; } + + public DateTime EndDate { get; set; } + + public int PageIndex { get; set; } + + public int PageSize { get; set; } + + public long ShopId { get; set; } + } + +} \ No newline at end of file diff --git a/SiNan.Model/Dto/Request/Product/QueryProductSkuGOIRequest.cs b/SiNan.Model/Dto/Request/Product/QueryProductSkuGOIRequest.cs new file mode 100644 index 0000000..df86995 --- /dev/null +++ b/SiNan.Model/Dto/Request/Product/QueryProductSkuGOIRequest.cs @@ -0,0 +1,11 @@ +namespace SiNan.Model.Dto +{ + public class QueryProductSkuGOIRequest + { + public string Spu { get; set; } + + public DateTime StartDate { get; set; } + + public DateTime EndDate { get; set; } + } +} diff --git a/SiNan.Model/Dto/Request/Product/SearchProductGOIRequestcs.cs b/SiNan.Model/Dto/Request/Product/SearchProductGOIRequestcs.cs deleted file mode 100644 index a5836bd..0000000 --- a/SiNan.Model/Dto/Request/Product/SearchProductGOIRequestcs.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace SiNan.Model.Dto.Request.Product -{ - public class SearchProductGOIRequestcs - { - public string Spu { get; set; } - - public string Sku { get; set; } - - public string SpuTitle { get; set; } - - public Enums.Stage? Stage { get; set; } - } -} \ No newline at end of file diff --git a/SiNan.Model/Dto/Response/GOI/GOIResponse.cs b/SiNan.Model/Dto/Response/GOI/GOIResponse.cs index 6dec949..3ad64c8 100644 --- a/SiNan.Model/Dto/Response/GOI/GOIResponse.cs +++ b/SiNan.Model/Dto/Response/GOI/GOIResponse.cs @@ -1,11 +1,23 @@ namespace SiNan.Model.Dto { + /// + /// GOI对象 + /// public class GOIResponse { + /// + /// 花费 + /// public decimal Cost { get; set; } + /// + /// 利润 + /// public decimal Profit { get; set; } + /// + /// GOI + /// public decimal GOI { get diff --git a/SiNan.Model/Dto/Response/GOI/ProductGOIResponse.cs b/SiNan.Model/Dto/Response/GOI/ProductGOIResponse.cs index 25e6a41..ae2f508 100644 --- a/SiNan.Model/Dto/Response/GOI/ProductGOIResponse.cs +++ b/SiNan.Model/Dto/Response/GOI/ProductGOIResponse.cs @@ -46,5 +46,12 @@ /// 最大亏损 /// public decimal MaxDeficit { get; set; } + + /// + /// SKU GOI + /// + public List ProductSkuGOIList { get; set; } + + } } diff --git a/SiNan.Model/Dto/Response/GOI/ProductSkuGOIResponse.cs b/SiNan.Model/Dto/Response/GOI/ProductSkuGOIResponse.cs index 1a4a997..b47cb5a 100644 --- a/SiNan.Model/Dto/Response/GOI/ProductSkuGOIResponse.cs +++ b/SiNan.Model/Dto/Response/GOI/ProductSkuGOIResponse.cs @@ -1,12 +1,50 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SiNan.Model.Dto.Response.GOI +namespace SiNan.Model.Dto { - internal class ProductSkuGOIResponse + public class ProductSkuGOIResponse : ProductSkuResponse { + /// + /// 商品维度 昨日GOI + /// + public GOIResponse ProductGOI_Yestoday { get; set; } + + /// + /// 商品维度 近7天GOI + /// + public GOIResponse ProductGOI_Recent7Day { get; set; } + + /// + /// 商品维度 近30天GOI + /// + public GOIResponse ProductGOI_Recent30Day { get; set; } + + /// + /// 推广维度 昨日GOI + /// + public GOIResponse PromotionGOI_Yestoday { get; set; } + + /// + /// 推广维度 近7天GOI + /// + public GOIResponse PromotionGOI_Recent7Day { get; set; } + + /// + /// 推广维度 近30天GOI + /// + public GOIResponse PromotionGOI_Recent30Day { get; set; } + + /// + /// 累计花费 + /// + public decimal TotalCost { get; set; } + + /// + /// 累计亏损 + /// + public decimal TotalDeficit { get; set; } + + /// + /// 最大亏损 + /// + public decimal MaxDeficit { get; set; } } } diff --git a/SiNan.Model/Dto/Response/ListResponse.cs b/SiNan.Model/Dto/Response/ListResponse.cs new file mode 100644 index 0000000..d46387e --- /dev/null +++ b/SiNan.Model/Dto/Response/ListResponse.cs @@ -0,0 +1,9 @@ +namespace SiNan.Model.Dto +{ + public class ListResponse where T : class + { + public List ItemList { get; set; } + + public long Count { get; set; } + } +} diff --git a/SiNan.Model/Dto/Response/Product/ProductSkuResponse.cs b/SiNan.Model/Dto/Response/Product/ProductSkuResponse.cs new file mode 100644 index 0000000..f422528 --- /dev/null +++ b/SiNan.Model/Dto/Response/Product/ProductSkuResponse.cs @@ -0,0 +1,8 @@ +using SiNan.Model.Db; + +namespace SiNan.Model.Dto +{ + public class ProductSkuResponse : ProductSku + { + } +}