feat : change OTP verify code , change digikala service , change get order invoice
parent
00ca32d32f
commit
f19c76066c
|
@ -21,7 +21,7 @@
|
|||
"WebSiteUrl": "https://vesmeh.com",
|
||||
"AdminPanelBaseUrl": "https://admin.vesmeh.com",
|
||||
"StorageBaseUrl": "https://storage.vesmeh.com",
|
||||
"KaveNegarApiKey": "3735494B4143727A794346457461576A2B4B6668414973424E333561505A694B",
|
||||
"KaveNegarApiKey": "65334B6A70303233432B7A6530795A51683134524945742F74397161785568512B794966623245744C2F773D",
|
||||
"UserSetting": {
|
||||
"Username": "09214802813",
|
||||
"Email": "avvampier@gmail.com",
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
using Netina.Core.Abstracts;
|
||||
using Netina.Domain.Models.Claims;
|
||||
|
||||
namespace Netina.Api.Controller;
|
||||
namespace Netina.Api.Controller;
|
||||
|
||||
public class ScraperController : ICarterModule
|
||||
{
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<InvariantGlobalization>true</InvariantGlobalization>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
<AssemblyVersion>0.22.25.44</AssemblyVersion>
|
||||
<FileVersion>0.22.25.44</FileVersion>
|
||||
<AssemblyVersion>0.22.25.45</AssemblyVersion>
|
||||
<FileVersion>0.22.25.45</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -6,7 +6,7 @@ builder.Host.UseSerilog();
|
|||
LoggerConfig.ConfigureSerilog();
|
||||
string env = builder.Environment.IsDevelopment() == true ? "Development" : "Production";
|
||||
builder.Host.UseContentRoot(Directory.GetCurrentDirectory());
|
||||
string projectName = "Vesmeh";
|
||||
string projectName = "Hamyan";
|
||||
if (builder.Environment.IsDevelopment())
|
||||
builder.Configuration.AddJsonFile($"AppSettings/appsettings.json").AddJsonFile($"AppSettings/appsettings.{env}{projectName}.json");
|
||||
|
||||
|
@ -39,7 +39,7 @@ builder.Services.AddMarten(configuration,builder.Environment);
|
|||
builder.Services.AddCarter();
|
||||
|
||||
|
||||
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("Ngo9BigBOggjHTQxAR8/V1NAaF1cXmhKYVtpR2Nbe05yflRGalxSVBYiSV9jS3pTdUViWHtfcHRWQGlcUQ==");
|
||||
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("MjM3OEAzMTM5MmUzMTJlMzBVeS82aFZBTTBzSG56NU1iekJscW9VN0s1UGJMcHBMRlFYMGduOUgxaUFvPQ==");
|
||||
|
||||
|
||||
builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<!--<PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
@ -12,9 +12,9 @@
|
|||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
||||
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="7.4.1" />
|
||||
</ItemGroup>-->
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<!--<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<LangVersion>10</LangVersion>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
|
@ -25,7 +25,7 @@
|
|||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
||||
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="7.3.1" />
|
||||
</ItemGroup>
|
||||
</ItemGroup>-->
|
||||
|
||||
<ItemGroup>
|
||||
<Using Include="MD.PersianDateTime.Standard" />
|
||||
|
|
|
@ -1,9 +1,4 @@
|
|||
using Netina.Common.Extensions;
|
||||
using Netina.Domain.CommandQueries.Commands;
|
||||
using Netina.Domain.CommandQueries.Queries;
|
||||
using Netina.Domain.Dtos.LargDtos;
|
||||
using Netina.Domain.Enums;
|
||||
using Netina.Repository.Repositories.Base.Contracts;
|
||||
using Netina.Domain.Dtos.LargDtos;
|
||||
using Syncfusion.Drawing;
|
||||
using Syncfusion.Pdf;
|
||||
using Syncfusion.Pdf.Graphics;
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
|
||||
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.3" />
|
||||
<PackageReference Include="Quartz" Version="3.8.1" />
|
||||
<PackageReference Include="Syncfusion.Pdf.Net.Core" Version="25.1.35" />
|
||||
<PackageReference Include="Syncfusion.Pdf.Net.Core" Version="24.1.41" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
using Netina.Common.Models.Mapper;
|
||||
using Netina.Domain.Entities.Accounting;
|
||||
using Netina.Domain.Enums;
|
||||
using Netina.Domain.Entities.Accounting;
|
||||
|
||||
namespace Netina.Domain.Dtos.SmallDtos;
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<!--<PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
@ -14,9 +14,9 @@
|
|||
<PackageReference Include="MediatR" Version="12.2.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Identity.Stores" Version="8.0.3" />
|
||||
<PackageReference Include="PropertyChanged.Fody" Version="4.1.0" />
|
||||
</ItemGroup>-->
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<!--<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<LangVersion>10</LangVersion>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
|
@ -32,7 +32,7 @@
|
|||
<PackageReference Include="Microsoft.Extensions.Identity.Stores" Version="5.0.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.0" />
|
||||
<PackageReference Include="PropertyChanged.Fody" Version="4.1.0" />
|
||||
</ItemGroup>
|
||||
</ItemGroup>-->
|
||||
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -7,6 +7,6 @@ public interface IDigikalaRestApi
|
|||
[Get("/v1/search/")]
|
||||
Task<GetDigikalProductsResponseDto> SearchProductAsync([Query] string q);
|
||||
|
||||
[Get("/v1/product/{productId}/")]
|
||||
[Get("/v2/product/{productId}/")]
|
||||
Task<GetDigikalProductResponseDto> GetProductAsync(string productId);
|
||||
}
|
|
@ -1,16 +1,10 @@
|
|||
using MediatR;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Netina.Common.Models.Api;
|
||||
using Netina.Common.Models.Exception;
|
||||
using Netina.Core.Abstracts;
|
||||
using Netina.Domain.CommandQueries.Commands;
|
||||
using Netina.Domain.Dtos.ScraperDtos.Response;
|
||||
using Netina.Domain.Dtos.SmallDtos;
|
||||
using Netina.Domain.Entities.Brands;
|
||||
using Netina.Domain.Entities.ProductCategories;
|
||||
using Netina.Domain.Entities.Products;
|
||||
using Netina.Infrastructure.RestServices;
|
||||
using Netina.Repository.Repositories.Base.Contracts;
|
||||
|
||||
namespace Netina.Infrastructure.Services.Scrapers;
|
||||
|
@ -22,7 +16,7 @@ public class DigikalaScraper : IDigikalaScraper
|
|||
private readonly IMediator _mediator;
|
||||
private readonly IUploadFileService _uploadFileService;
|
||||
|
||||
public DigikalaScraper(IRestApiWrapper apiWrapper, IRepositoryWrapper repositoryWrapper,IMediator mediator, IUploadFileService uploadFileService)
|
||||
public DigikalaScraper(IRestApiWrapper apiWrapper, IRepositoryWrapper repositoryWrapper, IMediator mediator, IUploadFileService uploadFileService)
|
||||
{
|
||||
_apiWrapper = apiWrapper;
|
||||
_repositoryWrapper = repositoryWrapper;
|
||||
|
@ -46,12 +40,9 @@ public class DigikalaScraper : IDigikalaScraper
|
|||
public async Task<bool> AddProductToShopAsync(string productId, string productName, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var response = await _apiWrapper.DigikalaRestApi.GetProductAsync(productId);
|
||||
var digiProduct = response.data; var dbProduct = await _repositoryWrapper.SetRepository<Product>()
|
||||
.TableNoTracking
|
||||
.FirstOrDefaultAsync(p => p.PersianName.ToLower().Trim().Contains(productName.ToLower().Trim()), cancellationToken);
|
||||
var newSummery = digiProduct.seo.description.Replace("فروشگاه اینترنتی دیجی\u200cکالا", "فروشگاه اینترنتی وسمه");
|
||||
if (dbProduct != null && !dbProduct.Summery.IsNullOrEmpty())
|
||||
newSummery = dbProduct.Summery;
|
||||
var digiProduct = response.data;
|
||||
var newSummery = digiProduct.seo.description.Replace("فروشگاه اینترنتی دیجی\u200cکالا", "فروشگاه اینترنتی وسمه");
|
||||
|
||||
var specifications = new List<SpecificationSDto>();
|
||||
foreach (var specification in digiProduct.product.specifications)
|
||||
{
|
||||
|
@ -81,39 +72,36 @@ public class DigikalaScraper : IDigikalaScraper
|
|||
IsPrimary = true,
|
||||
}
|
||||
};
|
||||
if (dbProduct != null)
|
||||
var nonBrand = await _repositoryWrapper.SetRepository<Brand>()
|
||||
.TableNoTracking
|
||||
.FirstOrDefaultAsync(b => b.PersianName == "بدون برند", cancellationToken);
|
||||
if (nonBrand == null)
|
||||
{
|
||||
|
||||
var request = new UpdateProductCommand(dbProduct.Id, digiProduct.product.title_fa, digiProduct.product.title_en,
|
||||
newSummery,
|
||||
dbProduct.ExpertCheck, dbProduct.Tags, dbProduct.Warranty, dbProduct.BeDisplayed, dbProduct.Cost,
|
||||
dbProduct.PackingCost, dbProduct.Stock, dbProduct.HasExpressDelivery
|
||||
, dbProduct.MaxOrderCount, false, dbProduct.BrandId, dbProduct.CategoryId, new DiscountSDto(), specifications, files);
|
||||
await _mediator.Send(request, cancellationToken);
|
||||
nonBrand = Brand.Create("بدون برند" , "NoBrand","محصولات بدون برند",false,string.Empty);
|
||||
_repositoryWrapper.SetRepository<Brand>()
|
||||
.Add(nonBrand);
|
||||
await _repositoryWrapper.SaveChangesAsync(cancellationToken);
|
||||
}
|
||||
else
|
||||
|
||||
var nonCat = await _repositoryWrapper.SetRepository<ProductCategory>()
|
||||
.TableNoTracking
|
||||
.FirstOrDefaultAsync(b => b.Name == "دسته بندی نشده", cancellationToken);
|
||||
if (nonCat == null)
|
||||
{
|
||||
var nonBrand = await _repositoryWrapper.SetRepository<Brand>()
|
||||
.TableNoTracking
|
||||
.FirstOrDefaultAsync(b => b.PersianName == "بدون برند", cancellationToken);
|
||||
if (nonBrand == null)
|
||||
throw new AppException("NoneBrand is not exist");
|
||||
|
||||
var nonCat = await _repositoryWrapper.SetRepository<ProductCategory>()
|
||||
.TableNoTracking
|
||||
.FirstOrDefaultAsync(b => b.Name == "دسته بندی نشده", cancellationToken);
|
||||
if (nonCat == null)
|
||||
throw new AppException("NoneCategory is not exist");
|
||||
|
||||
|
||||
var request = new CreateProductCommand(productName, digiProduct.product.title_en,
|
||||
digiProduct.seo.description,
|
||||
string.Empty, string.Empty, string.Empty,true, 0,
|
||||
0, 0, false
|
||||
, 5, false, nonBrand.Id, nonCat.Id, new DiscountSDto(), specifications, files);
|
||||
await _mediator.Send(request, cancellationToken);
|
||||
nonCat = ProductCategory.Create("دسته بندی نشده", "محصولات بدون دسته بندی", false);
|
||||
_repositoryWrapper.SetRepository<ProductCategory>()
|
||||
.Add(nonCat);
|
||||
await _repositoryWrapper.SaveChangesAsync(cancellationToken);
|
||||
}
|
||||
|
||||
|
||||
var request = new CreateProductCommand(digiProduct.product.title_fa, digiProduct.product.title_en,
|
||||
newSummery,
|
||||
string.Empty, string.Empty, string.Empty, true, 0,
|
||||
0, 0, false
|
||||
, 5, false, nonBrand.Id, nonCat.Id, new DiscountSDto(), specifications, files);
|
||||
await _mediator.Send(request, cancellationToken);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -37,7 +37,7 @@ public class SmsService : ISmsService
|
|||
try
|
||||
{
|
||||
var rest = await _restApiWrapper.KaveNegarRestApi.SendLookUp(_siteSettings.KaveNegarApiKey, phoneNumber,
|
||||
verifyCode, null, null, null, "login-brizco");
|
||||
verifyCode, null, null, null, "login-netina");
|
||||
|
||||
if (rest.Return.status != 200 && _environment.IsProduction())
|
||||
throw new BaseApiException(ApiResultStatusCode.SendSmsError, rest.Return.message);
|
||||
|
|
|
@ -93,7 +93,7 @@ foreach (var wordPressPostDto in posts.Where(p => p.post_type == "post"))
|
|||
SeedBlogRequestDto blog;
|
||||
Guid categoryId = default;
|
||||
string postTags = string.Empty;
|
||||
var postTermRelations = termRelationships.Where(p => p.object_id == wordPressPostDto.ID);
|
||||
var postTermRelations = termRelationships.Where(p => p.object_id == wordPressPostDto.ID).ToList();
|
||||
foreach (var postTermRelation in postTermRelations)
|
||||
{
|
||||
var taxanomy = termTaxonomies.FirstOrDefault(f => f.term_taxonomy_id == postTermRelation.term_taxonomy_id);
|
||||
|
@ -151,7 +151,7 @@ foreach (var wordPressPostDto in posts.Where(p => p.post_type == "post"))
|
|||
|
||||
blogs.Add(blog);
|
||||
|
||||
await RestWrapper.Instance.SeedRestApi.SeedBlogsAsync(new List<SeedBlogRequestDto>{blog}, "kKAYskyG8xPxKnJrHkuYxub4Ao2bnz7AOmNtwDT0RaqzaG7ZvbvaP29tCrC8wJ823RczJFXOIQT2bDOec4F38A==");
|
||||
await RestWrapper.Instance.SeedRestApi.SeedBlogsAsync(new List<SeedBlogRequestDto> { blog }, "kKAYskyG8xPxKnJrHkuYxub4Ao2bnz7AOmNtwDT0RaqzaG7ZvbvaP29tCrC8wJ823RczJFXOIQT2bDOec4F38A==");
|
||||
|
||||
Console.WriteLine($"{thumbCounter++ } / {blogs.Count} Blog Added Success !");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue