当前位置: 首页 > wzjs >正文

全球设计网站排行泰兴企业网站建设

全球设计网站排行,泰兴企业网站建设,wordpress密码忘记,wordpress 神箭手从本篇文章开始,我们将用两篇内容详细介绍币种服务的实现。币种服务本身结构较为简单,核心功能包括内置币种的初始化、币种汇率的同步以及汇率的查询。在本篇中,我们将重点讲解如何实现内置币种的初始化功能,为后续的服务打下基础…

从本篇文章开始,我们将用两篇内容详细介绍币种服务的实现。币种服务本身结构较为简单,核心功能包括内置币种的初始化、币种汇率的同步以及汇率的查询。在本篇中,我们将重点讲解如何实现内置币种的初始化功能,为后续的服务打下基础。而在下一篇文章中,我们将继续深入,讲解币种汇率的同步机制以及如何进行汇率的查询操作。

一、基础搭建

在基础搭建部分,与前面的服务类似,我们需要创建一个新的微服务项目,并添加必要的依赖项,以及添加数据库上下文类和币种实体类。以下是我们需要完成的步骤:

我们在SporeAccounting解决方案下创建一个名为SP.CurrencyService的 Web API 项目。接着,我们需要添加以下 NuGet 包:AutoMapperPomelo.EntityFrameworkCore.MySqlMicrosoft.EntityFrameworkCore.Designnacos-sdk-csharpnacos-sdk-csharp.Extensions.Configurationnacos-sdk-csharp.AspNetCore。这六个包分别用于自动映射、MySQL 数据库访问、Entity Framework Core 设计时支持、Nacos SDK 以及 Nacos 的 ASP.NET Core 扩展,具体使用方法在这里就不详细讲解了,有不清楚的可以参考我其他的专栏,或者在网上搜索相关内容。

接下来,我们创建一个名为Currency的实体类,表示币种。这个类包含了币种名称和币种缩写等属性。实体类代码如下:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using SP.Common.Model;namespace SP.CurrencyService.Models.Entity;/// <summary>
/// 币种
/// </summary>
[Table(name: "Currency")]
public class Currency : BaseModel
{/// <summary>/// 币种名称/// </summary>[Column(TypeName = "nvarchar(20)")][Required]public string Name { get; set; }/// <summary>/// 币种缩写/// </summary>[Column(TypeName = "nvarchar(10)")][Required]public string Abbreviation { get; set; }
}

然后,我们需要创建一个数据库上下文类CurrencyServiceDbContext,它继承自DbContext,并包含一个DbSet<Currency>属性,用于访问币种数据。数据库上下文代码如下:

using Microsoft.EntityFrameworkCore;
using SP.Common;
using SP.CurrencyService.Models.Entity;namespace SP.CurrencyService.DB;/// <summary>
/// 币种服务数据库上下文
/// </summary>
public class CurrencyServiceDbContext : DbContext
{/// <summary>/// 货币/// </summary>public DbSet<Currency> Currencies { get; set; }/// <summary>/// 数据库连接配置/// </summary>private readonly IConfiguration _dbConfig;/// <summary>/// 构造函数/// </summary>/// <param name="dbConfig"></param>public CurrencyServiceDbContext(IConfiguration dbConfig){_dbConfig = dbConfig;}/// <summary>/// 数据库连接配置/// </summary>/// <param name="optionsBuilder"></param>protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){var serverVersion = ServerVersion.AutoDetect(_dbConfig.GetConnectionString("MySQLConnection"));optionsBuilder.UseMySql(_dbConfig.GetConnectionString("MySQLConnection"), serverVersion);}
}

下一步,在数据库上下文CurrencyServiceDbContext类中,重写OnModelCreating方法,在这个方法中我们将调用SeedData方法初始化内置币种,这样当我们在迁移数据库时就会自动初始化内置币种。这里我们只初始化常用的几种币种,当然你也可以根据实际需求添加更多的币种。代码如下:

/// <summary>
/// 模型创建
/// </summary>
protected override void OnModelCreating(ModelBuilder modelBuilder)
{SeedData(modelBuilder);base.OnModelCreating(modelBuilder);
}/// <summary>
/// 种子数据
/// </summary>
/// <param name="modelBuilder"></param>
private void SeedData(ModelBuilder modelBuilder)
{long adminUserId = 7333155174099406848;modelBuilder.Entity<Currency>().HasData(new List<Currency>(){new Currency(){Id = Snow.GetId(),Name = "人民币",Abbreviation = "CNY",CreateUserId = adminUserId,CreateDateTime = DateTime.Now},new Currency(){Id = Snow.GetId(),Name = "美元",Abbreviation = "USD",CreateUserId = adminUserId,CreateDateTime = DateTime.Now},new Currency(){Id = Snow.GetId(),Name = "欧元",Abbreviation = "EUR",CreateUserId = adminUserId,CreateDateTime = DateTime.Now},new Currency(){Id = Snow.GetId(),Name = "日元",Abbreviation = "JPY",CreateUserId = adminUserId,CreateDateTime = DateTime.Now},new Currency(){Id = Snow.GetId(),Name = "英镑",Abbreviation = "GBP",CreateUserId = adminUserId,CreateDateTime = DateTime.Now},new Currency(){Id = Snow.GetId(),Name = "澳门币",Abbreviation = "MOP",CreateUserId = adminUserId,CreateDateTime = DateTime.Now},new Currency(){Id = Snow.GetId(),Name = "港元",Abbreviation = "HKD",CreateUserId = adminUserId,CreateDateTime = DateTime.Now},new Currency(){Id = Snow.GetId(),Name = "韩圆",Abbreviation = "KRW",CreateUserId = adminUserId,CreateDateTime = DateTime.Now},new Currency(){Id = Snow.GetId(),Name = "新台币",Abbreviation = "TWD",CreateUserId = adminUserId,CreateDateTime = DateTime.Now}});
}

在上面的代码中,我们使用了Snow.GetId()方法来生成唯一的 ID,这个方法是我们在前面章节中实现的雪花算法 ID 生成器。我们还设置了创建用户 ID 和创建时间,这些字段都是从BaseModel类继承而来的。

接着,我们还需要配置nacos相关的信息,这里我们不详细讲解,只是简单看一下如何在appsettings.json中添加nacos相关的下配置:

{"nacos": {"ServerAddresses": [ "http://14.103.224.141:8848" ],"Namespace": "fa420303-2c1c-4b51-a581-ca7210963549","ServiceName": "SPCurrencyService","GroupName": "DEFAULT_GROUP","ClusterName": "DEFAULT","Username": "SP_ADMIN","Password": "123*asdasd","Weight": 100,"ConfigUseRpc": true,"NamingUseRpc": true,"RegisterEnabled": true,"InstanceEnabled": true,"Ephemeral": true,"GrpcReconnectInterval": 5000,"ConnectionTimeOut": 10000,"Listeners": [{"Optional": false,"DataId":"SP.CurrencyService","Group":"DEFAULT_GROUP"},{"Optional": false,"DataId":"Common","Group":"DEFAULT_GROUP"}]}
}

在这个配置中,我们指定了 Nacos 服务器的地址、命名空间、服务名称、分组名称、集群名称、用户名和密码等信息。我们还配置了监听器,用于监听配置变更,这些配置将用于 Nacos 的服务注册和配置管理。

Tip:请根据你自己的 Nacos 服务器地址和命名空间等信息进行相应的修改。如果没有 Nacos 服务器,可以参考我之前的文章搭建一个 Nacos 服务器,或者使用其他的配置中心。

接下来,在Program.cs文件中配置 Nacos 的服务注册和配置管理、数据库上下文,以及AutoMapper。代码如下:

// 添加Nacos服务注册
builder.Services.AddNacosAspNet(builder.Configuration);
// 添加Nacos配置中心
builder.Configuration.AddNacosV2Configuration(builder.Configuration.GetSection("nacos"));
builder.Services.AddNacosV2Naming(builder.Configuration);
// 注册 DbContext
builder.Services.AddDbContext<CurrencyServiceDbContext>(ServiceLifetime.Scoped);
builder.Services.AddAutoMapper(Assembly.GetExecutingAssembly());

最后,我们开始迁移数据库,在命令行中执行以下命令:

dotnet ef migrations add InitialCreate --context CurrencyServiceDbContext
dotnet ef database update --context CurrencyServiceDbContext

这将创建一个名为InitialCreate的迁移,并将其应用到数据库中。执行完毕后,我们就完成了币种服务的基础搭建,并且初始化了内置的币种数据。如下图:
在这里插入图片描述

二、业务实现

在完成了基础搭建之后,就要实现币种服务的功能之一 查询币种 。在Service文件夹中新建接口文件ICurrencyServer,该接口中只有一个方法List<CurrencyResponse> Query() 用于查询币种列表。接口代码如下:

using SP.CurrencyService.Models.Entity;
using SP.CurrencyService.Models.Response;namespace SP.CurrencyService.Service;/// <summary>
/// 货币服务
/// </summary>
public interface ICurrencyServer
{/// <summary>/// 查询所有货币/// </summary>/// <returns>返回货币列表</returns>List<CurrencyResponse> Query();
}

接着,我们在Impl文件夹中新建实现类CurrencyServerImpl,实现ICurrencyServer接口。代码如下:

using AutoMapper;
using SP.CurrencyService.DB;
using SP.CurrencyService.Models.Entity;
using SP.CurrencyService.Models.Response;namespace SP.CurrencyService.Service.Impl;/// <summary>
/// 货币服务实现
/// </summary>
public class CurrencyServerImpl : ICurrencyServer
{private readonly CurrencyServiceDbContext _dbContext;private readonly IMapper _mapper;public CurrencyServerImpl(CurrencyServiceDbContext dbContext, IMapper mapper){_dbContext = dbContext;_mapper = mapper;}/// <summary>/// 查询所有货币/// </summary>/// <returns>返回货币列表</returns>public List<CurrencyResponse> Query(){List<Currency> crCurrencies = _dbContext.Currencies.ToList();List<CurrencyResponse> currencyResponses = _mapper.Map<List<CurrencyResponse>>(crCurrencies);return currencyResponses;}
}

在上面的代码中,我们使用了AutoMapper来将Currency实体类转换为CurrencyResponse响应类。这样可以简化数据传输对象的转换过程,提高代码的可读性和可维护性。

接着,在Controller文件夹下新建CurrencyController控制器类,这个控制器只包含一个Web API接口,用于查询全部币种。代码如下:

using Microsoft.AspNetCore.Mvc;
using SP.CurrencyService.Models.Response;
using SP.CurrencyService.Service;namespace SP.CurrencyService.Controllers;/// <summary>
/// 币种控制器
/// </summary>
[Route("/api/currency")]
[ApiController]
public class CurrencyController : ControllerBase
{private readonly ICurrencyServer _currencyServer;public CurrencyController(ICurrencyServer currencyServer){_currencyServer = currencyServer;}/// <summary>/// 查询所有币种/// </summary>/// <returns>返回币种列表</returns>[HttpGet("query")]public ActionResult<List<CurrencyResponse>> Query(){List<CurrencyResponse> currencies = _currencyServer.Query();return Ok(currencies);}
}

上面的代码中,通过依赖注入的方式引入了ICurrencyServer接口,在Query Action 方法中我们调用了它的Query方法查询全部币种,最后将查询到的数据返回给API调用方。

最后还需要在Program.cs文件中将ICurrencyServer接口及其实现类CurrencyServerImpl注册到依赖注入容器中,代码如下:

builder.Services.AddScoped<ICurrencyServer, CurrencyServerImpl>();

到此为止,币种服务的内置币种初始化的全部工作就已完成,当我们运行项目后,就能在Swagger UI界面看到创建的服务了。

三、总结

本篇文章详细介绍了币种服务的基础搭建过程,包括项目结构的创建、依赖包的添加、实体类和数据库上下文的实现,以及内置币种的初始化。通过种子数据的方式,确保了服务启动时能够自动生成常用币种数据。同时,介绍了如何实现币种查询的业务逻辑,并通过接口和控制器对外提供查询能力。最后,完成了服务的依赖注入和数据库迁移,确保服务能够正常运行。至此,币种服务的基础功能已经搭建完成,为后续实现币种汇率同步和查询等功能打下了坚实的基础。下一篇将继续深入讲解币种汇率相关的实现。


文章转载自:

http://TGntgbK0.cyLbs.cn
http://H3YEDFWX.cyLbs.cn
http://UPeZORmz.cyLbs.cn
http://5bcyvDoN.cyLbs.cn
http://x2zFfh80.cyLbs.cn
http://r5n3IsUQ.cyLbs.cn
http://ANGe49zY.cyLbs.cn
http://PNCP8mMF.cyLbs.cn
http://4mgTVgds.cyLbs.cn
http://kWtb0ZbX.cyLbs.cn
http://cJSYkW6s.cyLbs.cn
http://UBofQshe.cyLbs.cn
http://t5DAz02N.cyLbs.cn
http://GhAd69Nt.cyLbs.cn
http://Ho9Sm4ke.cyLbs.cn
http://99NBHtiu.cyLbs.cn
http://0EZls1rL.cyLbs.cn
http://iucDYIfY.cyLbs.cn
http://QPa7mntH.cyLbs.cn
http://lxc18Gas.cyLbs.cn
http://onPofu85.cyLbs.cn
http://ZyqsG9tJ.cyLbs.cn
http://Vp6uwKQ0.cyLbs.cn
http://AbEdt7Ro.cyLbs.cn
http://f4AY6QQP.cyLbs.cn
http://EtkqMWIY.cyLbs.cn
http://uFIZDPsu.cyLbs.cn
http://QEtnwGiI.cyLbs.cn
http://VazD7Zry.cyLbs.cn
http://wBaQs0pn.cyLbs.cn
http://www.dtcms.com/wzjs/698420.html

相关文章:

  • 深圳微商城网站设计制作移动通网站建设
  • 帝国cms建站实例教程响应式模板网站建设哪家好
  • 网站空间服务商app 开发
  • 品牌网站排名软件wordpress 十万
  • 杭州公司注销网站备案国外网站 网站 推荐
  • 怎么收录网站福田公司怎么样
  • 网站建设行业分析建设网站工作报告
  • 玉树电子商务网站建设哪家快咸宁市网站建设
  • 网站服务器和网站备案在服务器上运行wordpress
  • 东莞网站建设总结推介网手机版
  • wordpress 电影下载站天津网站搜索排名
  • iis网站连接数西部数码做跳转网站
  • 重庆餐饮品牌策划公司厦门seo外包公司
  • 网站功能简介网页网站建设软件有哪些
  • 东莞中英文网站建设河北seo技术
  • 华夏业务员做单的网站毕业设计动漫网页设计
  • 如何选择做pc端网站企业vi设计与网站开发
  • 常德做网站的公司中国建设银行个人网上银行登录官网
  • 企业资质查询官方网站58.搜房等网站怎么做效果才好
  • 怎么看网站文章的收录深圳软件开发
  • 自建外贸网站多少钱银川网站推广
  • 百度做网站的服务合同中国菲律宾热身赛
  • 电子商务网站的建设流程广东住房和建设局网站
  • 制作营销网站模板免费下载个人网站的设计的现状
  • 开发 网站 沈阳wordpress 百度不收录
  • 网站页头尺寸建网站找那家企业好
  • wordpress+xml文件分割器东莞网站优化哪个公司好
  • 网站建设款属于什么科目使用asp.net做购物网站
  • 网站开发要用什么语言巴中市文旅新区关坝片区安置房建设项目
  • 百度云 建网站网站建设交流发言稿