diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs b/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs index be00833b..be7c7a07 100644 --- a/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs +++ b/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs @@ -28,12 +28,16 @@ namespace Yi.Framework.ApiMicroservice.Controllers private IUserService _userService; private IMenuService _menuService; private RabbitMQInvoker _rabbitMQInvoker; - public AccountController(ILogger logger, IUserService userService, IMenuService menuService,RabbitMQInvoker rabbitMQInvoker) + private CacheClientDB _cacheClientDB; + private IRoleService _roleService; + public AccountController(ILogger logger, IUserService userService, IMenuService menuService,RabbitMQInvoker rabbitMQInvoker,CacheClientDB cacheClientDB, IRoleService roleService) { _logger = logger; _userService = userService; _menuService = menuService; _rabbitMQInvoker = rabbitMQInvoker; + _cacheClientDB = cacheClientDB; + _roleService = roleService; } @@ -72,7 +76,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers } /// - /// code为验证码,判断一下,假装验证码都是对的 + /// code为验证码,从redis中判断一下code是否正确 /// /// /// @@ -80,23 +84,57 @@ namespace Yi.Framework.ApiMicroservice.Controllers [HttpPost] public async Task Register(user _user, string code) { - if (code != null) + _user.username=_user.username.Trim(); + if(string.IsNullOrEmpty(_user.username)) + code = code.Trim(); + + string trueCode= _cacheClientDB.Get(RedisConst.keyCode + _user.phone); + if (code == trueCode) { + //设置默认头像 + var setting = JsonHelper.StrToObj(_cacheClientDB.Get(RedisConst.key)); + _user.icon = setting.InitIcon; + //设置默认角色 + if (string.IsNullOrEmpty(setting.InitRole)) + { + return Result.Error("无默认角色,请初始化数据库"); + } + _user.roles = new List(); + _user.roles.Add(await _roleService.GetEntity(u => u.role_name == setting.InitRole)); await _userService.Register(_user); + + return Result.Success("恭喜,你已加入我们!"); } - return Result.Error(); + return Result.Error("验证码有误,请重新输入!"); } + /// + /// 发送短信,需要将生成的sms+code存入redis + /// + /// + /// [HttpPost] - public Result SendSMS(SMSQueueModel test) + public async Task SendSMS(string SMSAddress) { - _rabbitMQInvoker.Send(new Common.IOCOptions.RabbitMQConsumerModel() { ExchangeName=RabbitConst.SMS_Exchange,QueueName=RabbitConst.SMS_Queue_Send} ,JsonHelper.ObjToStr(test)); - return Result.Success(); + SMSAddress = SMSAddress.Trim(); + if (!await _userService.PhoneIsExsit(SMSAddress)) + { + SMSQueueModel sMSQueueModel = new SMSQueueModel(); + sMSQueueModel.phone = SMSAddress; + sMSQueueModel.code =RandomHelper.GenerateCheckCodeNum(6); + + //10分钟过期 + _cacheClientDB.Set(RedisConst.keyCode+sMSQueueModel.phone, sMSQueueModel.code, TimeSpan.FromMinutes(10)); + + _rabbitMQInvoker.Send(new Common.IOCOptions.RabbitMQConsumerModel() { ExchangeName = RabbitConst.SMS_Exchange, QueueName = RabbitConst.SMS_Queue_Send }, JsonHelper.ObjToStr(sMSQueueModel)); + return Result.Success("发送短信成功,10分钟后过期,请留意短信接收"); + } + return Result.Error("该号码已被注册"); } /// - /// 传入邮箱,需要先到数据库判断该邮箱是否被人注册过,到userservice写mail_exist方法,还有接口别忘了。这个接口不需要洞,只需要完成userservice写mail_exist与接口即可 + /// 发送邮箱,需要先到数据库判断该邮箱是否被人注册过,到userservice写mail_exist方法,还有接口别忘了。 /// /// /// diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/SettingController.cs b/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/SettingController.cs index c801a075..d101bc9d 100644 --- a/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/SettingController.cs +++ b/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/SettingController.cs @@ -50,7 +50,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers [HttpPut] public Result UpdateSetting(SettingDto settingDto) { - var setDto = Common.Helper.JsonHelper.ObjToStr(settingDto); + var setDto = Common.Helper.JsonHelper.ObjToStr(settingDto); _cacheClientDB.Set(RedisConst.key, setDto); return Result.Success(); diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/Startup.cs b/Yi.Framework/Yi.Framework.ApiMicroservice/Startup.cs index 59cd1472..d1b9fd1c 100644 --- a/Yi.Framework/Yi.Framework.ApiMicroservice/Startup.cs +++ b/Yi.Framework/Yi.Framework.ApiMicroservice/Startup.cs @@ -155,6 +155,7 @@ namespace Yi.Framework.ApiMicroservice //redisע #endregion app.UseRedisSeedInitService(_cacheClientDB); + #region //Endpointsע #endregion diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/SwaggerDoc.xml b/Yi.Framework/Yi.Framework.ApiMicroservice/SwaggerDoc.xml index 4f149f51..3173de6a 100644 --- a/Yi.Framework/Yi.Framework.ApiMicroservice/SwaggerDoc.xml +++ b/Yi.Framework/Yi.Framework.ApiMicroservice/SwaggerDoc.xml @@ -19,15 +19,22 @@ - code为验证码,判断一下,假装验证码都是对的 + code为验证码,从redis中判断一下code是否正确 + + + 发送短信,需要将生成的sms+code存入redis + + + + - 传入邮箱,需要先到数据库判断该邮箱是否被人注册过,到userservice写mail_exist方法,还有接口别忘了。这个接口不需要洞,只需要完成userservice写mail_exist与接口即可 + 发送邮箱,需要先到数据库判断该邮箱是否被人注册过,到userservice写mail_exist方法,还有接口别忘了。 diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/YIDB.db b/Yi.Framework/Yi.Framework.ApiMicroservice/YIDB.db deleted file mode 100644 index a032b95c..00000000 Binary files a/Yi.Framework/Yi.Framework.ApiMicroservice/YIDB.db and /dev/null differ diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/YIDB.db-wal b/Yi.Framework/Yi.Framework.ApiMicroservice/YIDB.db-wal deleted file mode 100644 index e69de29b..00000000 diff --git a/Yi.Framework/Yi.Framework.Common/Const/RedisConst.cs b/Yi.Framework/Yi.Framework.Common/Const/RedisConst.cs index 6b99c95e..1c59a4db 100644 --- a/Yi.Framework/Yi.Framework.Common/Const/RedisConst.cs +++ b/Yi.Framework/Yi.Framework.Common/Const/RedisConst.cs @@ -13,6 +13,7 @@ namespace Yi.Framework.Common.Const /// public const string key = "YiFramework:data"; + public const string keyCode = "YiFramework:code"; ///// ///// 初始化角色名 ///// diff --git a/Yi.Framework/Yi.Framework.DTOModel/SettingDto.cs b/Yi.Framework/Yi.Framework.DTOModel/SettingDto.cs index 0b8df4b4..3e3dca70 100644 --- a/Yi.Framework/Yi.Framework.DTOModel/SettingDto.cs +++ b/Yi.Framework/Yi.Framework.DTOModel/SettingDto.cs @@ -8,9 +8,9 @@ namespace Yi.Framework.DTOModel { public class SettingDto { - public string InitIcon_key { get; set; } - public string InitRole_key { get; set; } - public string Title_key { get; set; } - public List ImageList_key { get; set; } + public string InitIcon { get; set; } + public string InitRole { get; set; } + public string Title { get; set; } + public List ImageList { get; set; } } } diff --git a/Yi.Framework/Yi.Framework.Interface/IUserService.cs b/Yi.Framework/Yi.Framework.Interface/IUserService.cs index 312a3f96..86f11bce 100644 --- a/Yi.Framework/Yi.Framework.Interface/IUserService.cs +++ b/Yi.Framework/Yi.Framework.Interface/IUserService.cs @@ -41,6 +41,13 @@ namespace Yi.Framework.Interface /// Task EmailIsExsit(string emailAddress); + /// + /// sms验证 + /// + /// + /// + Task PhoneIsExsit(string smsAddress); + /// /// 通过用户id,得到该用户的所有信息,关联角色 /// diff --git a/Yi.Framework/Yi.Framework.Model/Migrations/20211029124310_yi-2.Designer.cs b/Yi.Framework/Yi.Framework.Model/Migrations/20211029124310_yi-2.Designer.cs deleted file mode 100644 index dc624af6..00000000 --- a/Yi.Framework/Yi.Framework.Model/Migrations/20211029124310_yi-2.Designer.cs +++ /dev/null @@ -1,199 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Yi.Framework.Model; - -namespace Yi.Framework.Model.Migrations -{ - [DbContext(typeof(DataContext))] - [Migration("20211029124310_yi-2")] - partial class yi2 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("Relational:MaxIdentifierLength", 64) - .HasAnnotation("ProductVersion", "5.0.11"); - - modelBuilder.Entity("Yi.Framework.Model.Models.menu", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("icon") - .HasColumnType("longtext"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("is_show") - .HasColumnType("int"); - - b.Property("is_top") - .HasColumnType("int"); - - b.Property("menu_name") - .HasColumnType("longtext"); - - b.Property("menuid") - .HasColumnType("int"); - - b.Property("mouldid") - .HasColumnType("int"); - - b.Property("roleid") - .HasColumnType("int"); - - b.Property("router") - .HasColumnType("longtext"); - - b.Property("sort") - .HasColumnType("int"); - - b.HasKey("id"); - - b.HasIndex("menuid"); - - b.HasIndex("mouldid"); - - b.HasIndex("roleid"); - - b.ToTable("menu"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.mould", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("mould_name") - .HasColumnType("longtext"); - - b.Property("url") - .HasColumnType("longtext"); - - b.HasKey("id"); - - b.ToTable("mould"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.role", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("introduce") - .HasColumnType("longtext"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("role_name") - .HasColumnType("longtext"); - - b.Property("userid") - .HasColumnType("int"); - - b.HasKey("id"); - - b.HasIndex("userid"); - - b.ToTable("role"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.user", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("address") - .HasColumnType("longtext"); - - b.Property("age") - .HasColumnType("int"); - - b.Property("email") - .HasColumnType("longtext"); - - b.Property("icon") - .HasColumnType("longtext"); - - b.Property("introduction") - .HasColumnType("longtext"); - - b.Property("ip") - .HasColumnType("longtext"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("nick") - .HasColumnType("longtext"); - - b.Property("password") - .HasColumnType("longtext"); - - b.Property("phone") - .HasColumnType("int"); - - b.Property("username") - .HasColumnType("longtext"); - - b.HasKey("id"); - - b.ToTable("user"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.menu", b => - { - b.HasOne("Yi.Framework.Model.Models.menu", null) - .WithMany("children") - .HasForeignKey("menuid"); - - b.HasOne("Yi.Framework.Model.Models.mould", "mould") - .WithMany() - .HasForeignKey("mouldid"); - - b.HasOne("Yi.Framework.Model.Models.role", null) - .WithMany("menus") - .HasForeignKey("roleid"); - - b.Navigation("mould"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.role", b => - { - b.HasOne("Yi.Framework.Model.Models.user", null) - .WithMany("roles") - .HasForeignKey("userid"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.menu", b => - { - b.Navigation("children"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.role", b => - { - b.Navigation("menus"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.user", b => - { - b.Navigation("roles"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Yi.Framework/Yi.Framework.Model/Migrations/20211029124310_yi-2.cs b/Yi.Framework/Yi.Framework.Model/Migrations/20211029124310_yi-2.cs deleted file mode 100644 index 40b079f1..00000000 --- a/Yi.Framework/Yi.Framework.Model/Migrations/20211029124310_yi-2.cs +++ /dev/null @@ -1,141 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -namespace Yi.Framework.Model.Migrations -{ - public partial class yi2 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "menurole"); - - migrationBuilder.DropTable( - name: "roleuser"); - - migrationBuilder.AddColumn( - name: "userid", - table: "role", - type: "int", - nullable: true); - - migrationBuilder.AddColumn( - name: "roleid", - table: "menu", - type: "int", - nullable: true); - - migrationBuilder.CreateIndex( - name: "IX_role_userid", - table: "role", - column: "userid"); - - migrationBuilder.CreateIndex( - name: "IX_menu_roleid", - table: "menu", - column: "roleid"); - - migrationBuilder.AddForeignKey( - name: "FK_menu_role_roleid", - table: "menu", - column: "roleid", - principalTable: "role", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_role_user_userid", - table: "role", - column: "userid", - principalTable: "user", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_menu_role_roleid", - table: "menu"); - - migrationBuilder.DropForeignKey( - name: "FK_role_user_userid", - table: "role"); - - migrationBuilder.DropIndex( - name: "IX_role_userid", - table: "role"); - - migrationBuilder.DropIndex( - name: "IX_menu_roleid", - table: "menu"); - - migrationBuilder.DropColumn( - name: "userid", - table: "role"); - - migrationBuilder.DropColumn( - name: "roleid", - table: "menu"); - - migrationBuilder.CreateTable( - name: "menurole", - columns: table => new - { - menusid = table.Column(type: "int", nullable: false), - rolesid = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_menurole", x => new { x.menusid, x.rolesid }); - table.ForeignKey( - name: "FK_menurole_menu_menusid", - column: x => x.menusid, - principalTable: "menu", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_menurole_role_rolesid", - column: x => x.rolesid, - principalTable: "role", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }) - .Annotation("MySql:CharSet", "utf8mb4"); - - migrationBuilder.CreateTable( - name: "roleuser", - columns: table => new - { - rolesid = table.Column(type: "int", nullable: false), - usersid = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_roleuser", x => new { x.rolesid, x.usersid }); - table.ForeignKey( - name: "FK_roleuser_role_rolesid", - column: x => x.rolesid, - principalTable: "role", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_roleuser_user_usersid", - column: x => x.usersid, - principalTable: "user", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }) - .Annotation("MySql:CharSet", "utf8mb4"); - - migrationBuilder.CreateIndex( - name: "IX_menurole_rolesid", - table: "menurole", - column: "rolesid"); - - migrationBuilder.CreateIndex( - name: "IX_roleuser_usersid", - table: "roleuser", - column: "usersid"); - } - } -} diff --git a/Yi.Framework/Yi.Framework.Model/Migrations/20211030074708_yi-3.Designer.cs b/Yi.Framework/Yi.Framework.Model/Migrations/20211030074708_yi-3.Designer.cs deleted file mode 100644 index 47b070c2..00000000 --- a/Yi.Framework/Yi.Framework.Model/Migrations/20211030074708_yi-3.Designer.cs +++ /dev/null @@ -1,199 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Yi.Framework.Model; - -namespace Yi.Framework.Model.Migrations -{ - [DbContext(typeof(DataContext))] - [Migration("20211030074708_yi-3")] - partial class yi3 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("Relational:MaxIdentifierLength", 64) - .HasAnnotation("ProductVersion", "5.0.11"); - - modelBuilder.Entity("Yi.Framework.Model.Models.menu", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("icon") - .HasColumnType("longtext"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("is_show") - .HasColumnType("int"); - - b.Property("is_top") - .HasColumnType("int"); - - b.Property("menu_name") - .HasColumnType("longtext"); - - b.Property("menuid") - .HasColumnType("int"); - - b.Property("mouldid") - .HasColumnType("int"); - - b.Property("roleid") - .HasColumnType("int"); - - b.Property("router") - .HasColumnType("longtext"); - - b.Property("sort") - .HasColumnType("int"); - - b.HasKey("id"); - - b.HasIndex("menuid"); - - b.HasIndex("mouldid"); - - b.HasIndex("roleid"); - - b.ToTable("menu"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.mould", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("mould_name") - .HasColumnType("longtext"); - - b.Property("url") - .HasColumnType("longtext"); - - b.HasKey("id"); - - b.ToTable("mould"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.role", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("introduce") - .HasColumnType("longtext"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("role_name") - .HasColumnType("longtext"); - - b.Property("userid") - .HasColumnType("int"); - - b.HasKey("id"); - - b.HasIndex("userid"); - - b.ToTable("role"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.user", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("address") - .HasColumnType("longtext"); - - b.Property("age") - .HasColumnType("int"); - - b.Property("email") - .HasColumnType("longtext"); - - b.Property("icon") - .HasColumnType("longtext"); - - b.Property("introduction") - .HasColumnType("longtext"); - - b.Property("ip") - .HasColumnType("longtext"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("nick") - .HasColumnType("longtext"); - - b.Property("password") - .HasColumnType("longtext"); - - b.Property("phone") - .HasColumnType("int"); - - b.Property("username") - .HasColumnType("longtext"); - - b.HasKey("id"); - - b.ToTable("user"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.menu", b => - { - b.HasOne("Yi.Framework.Model.Models.menu", null) - .WithMany("children") - .HasForeignKey("menuid"); - - b.HasOne("Yi.Framework.Model.Models.mould", "mould") - .WithMany() - .HasForeignKey("mouldid"); - - b.HasOne("Yi.Framework.Model.Models.role", null) - .WithMany("menus") - .HasForeignKey("roleid"); - - b.Navigation("mould"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.role", b => - { - b.HasOne("Yi.Framework.Model.Models.user", null) - .WithMany("roles") - .HasForeignKey("userid"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.menu", b => - { - b.Navigation("children"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.role", b => - { - b.Navigation("menus"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.user", b => - { - b.Navigation("roles"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Yi.Framework/Yi.Framework.Model/Migrations/20211030074708_yi-3.cs b/Yi.Framework/Yi.Framework.Model/Migrations/20211030074708_yi-3.cs deleted file mode 100644 index 5df34fdc..00000000 --- a/Yi.Framework/Yi.Framework.Model/Migrations/20211030074708_yi-3.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -namespace Yi.Framework.Model.Migrations -{ - public partial class yi3 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - - } - } -} diff --git a/Yi.Framework/Yi.Framework.Model/Migrations/20211030074922_yi-5.Designer.cs b/Yi.Framework/Yi.Framework.Model/Migrations/20211030074922_yi-5.Designer.cs deleted file mode 100644 index 5d247544..00000000 --- a/Yi.Framework/Yi.Framework.Model/Migrations/20211030074922_yi-5.Designer.cs +++ /dev/null @@ -1,219 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Yi.Framework.Model; - -namespace Yi.Framework.Model.Migrations -{ - [DbContext(typeof(DataContext))] - [Migration("20211030074922_yi-5")] - partial class yi5 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("Relational:MaxIdentifierLength", 64) - .HasAnnotation("ProductVersion", "5.0.11"); - - modelBuilder.Entity("Yi.Framework.Model.Models.menu", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("icon") - .HasColumnType("longtext"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("is_show") - .HasColumnType("int"); - - b.Property("is_top") - .HasColumnType("int"); - - b.Property("menu_name") - .HasColumnType("longtext"); - - b.Property("menuid") - .HasColumnType("int"); - - b.Property("mouldid") - .HasColumnType("int"); - - b.Property("roleid") - .HasColumnType("int"); - - b.Property("router") - .HasColumnType("longtext"); - - b.Property("sort") - .HasColumnType("int"); - - b.HasKey("id"); - - b.HasIndex("menuid"); - - b.HasIndex("mouldid"); - - b.HasIndex("roleid"); - - b.ToTable("menu"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.mould", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("mould_name") - .HasColumnType("longtext"); - - b.Property("url") - .HasColumnType("longtext"); - - b.HasKey("id"); - - b.ToTable("mould"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.role", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("introduce") - .HasColumnType("longtext"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("role_name") - .HasColumnType("longtext"); - - b.Property("userid") - .HasColumnType("int"); - - b.HasKey("id"); - - b.HasIndex("userid"); - - b.ToTable("role"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.user", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("address") - .HasColumnType("longtext"); - - b.Property("age") - .HasColumnType("int"); - - b.Property("email") - .HasColumnType("longtext"); - - b.Property("icon") - .HasColumnType("longtext"); - - b.Property("introduction") - .HasColumnType("longtext"); - - b.Property("ip") - .HasColumnType("longtext"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("nick") - .HasColumnType("longtext"); - - b.Property("password") - .HasColumnType("longtext"); - - b.Property("phone") - .HasColumnType("int"); - - b.Property("username") - .HasColumnType("longtext"); - - b.HasKey("id"); - - b.ToTable("user"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.visit", b => - { - b.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - b.Property("is_delete") - .HasColumnType("int"); - - b.Property("num") - .HasColumnType("int"); - - b.Property("time") - .HasColumnType("datetime(6)"); - - b.HasKey("id"); - - b.ToTable("visit"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.menu", b => - { - b.HasOne("Yi.Framework.Model.Models.menu", null) - .WithMany("children") - .HasForeignKey("menuid"); - - b.HasOne("Yi.Framework.Model.Models.mould", "mould") - .WithMany() - .HasForeignKey("mouldid"); - - b.HasOne("Yi.Framework.Model.Models.role", null) - .WithMany("menus") - .HasForeignKey("roleid"); - - b.Navigation("mould"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.role", b => - { - b.HasOne("Yi.Framework.Model.Models.user", null) - .WithMany("roles") - .HasForeignKey("userid"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.menu", b => - { - b.Navigation("children"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.role", b => - { - b.Navigation("menus"); - }); - - modelBuilder.Entity("Yi.Framework.Model.Models.user", b => - { - b.Navigation("roles"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Yi.Framework/Yi.Framework.Model/Migrations/20211030074922_yi-5.cs b/Yi.Framework/Yi.Framework.Model/Migrations/20211030074922_yi-5.cs deleted file mode 100644 index 1d627b06..00000000 --- a/Yi.Framework/Yi.Framework.Model/Migrations/20211030074922_yi-5.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace Yi.Framework.Model.Migrations -{ - public partial class yi5 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "visit", - columns: table => new - { - id = table.Column(type: "int", nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - time = table.Column(type: "datetime(6)", nullable: false), - num = table.Column(type: "int", nullable: false), - is_delete = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_visit", x => x.id); - }) - .Annotation("MySql:CharSet", "utf8mb4"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "visit"); - } - } -} diff --git a/Yi.Framework/Yi.Framework.Model/Migrations/20211022181627_yi-1.Designer.cs b/Yi.Framework/Yi.Framework.Model/Migrations/20211106082100_yi-1.Designer.cs similarity index 91% rename from Yi.Framework/Yi.Framework.Model/Migrations/20211022181627_yi-1.Designer.cs rename to Yi.Framework/Yi.Framework.Model/Migrations/20211106082100_yi-1.Designer.cs index 455f2d84..2e948098 100644 --- a/Yi.Framework/Yi.Framework.Model/Migrations/20211022181627_yi-1.Designer.cs +++ b/Yi.Framework/Yi.Framework.Model/Migrations/20211106082100_yi-1.Designer.cs @@ -9,7 +9,7 @@ using Yi.Framework.Model; namespace Yi.Framework.Model.Migrations { [DbContext(typeof(DataContext))] - [Migration("20211022181627_yi-1")] + [Migration("20211106082100_yi-1")] partial class yi1 { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -134,8 +134,8 @@ namespace Yi.Framework.Model.Migrations b.Property("password") .HasColumnType("longtext"); - b.Property("phone") - .HasColumnType("int"); + b.Property("phone") + .HasColumnType("longtext"); b.Property("username") .HasColumnType("longtext"); @@ -145,6 +145,26 @@ namespace Yi.Framework.Model.Migrations b.ToTable("user"); }); + modelBuilder.Entity("Yi.Framework.Model.Models.visit", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("is_delete") + .HasColumnType("int"); + + b.Property("num") + .HasColumnType("int"); + + b.Property("time") + .HasColumnType("datetime(6)"); + + b.HasKey("id"); + + b.ToTable("visit"); + }); + modelBuilder.Entity("menurole", b => { b.Property("menusid") diff --git a/Yi.Framework/Yi.Framework.Model/Migrations/20211022181627_yi-1.cs b/Yi.Framework/Yi.Framework.Model/Migrations/20211106082100_yi-1.cs similarity index 89% rename from Yi.Framework/Yi.Framework.Model/Migrations/20211022181627_yi-1.cs rename to Yi.Framework/Yi.Framework.Model/Migrations/20211106082100_yi-1.cs index 8b17bb96..0fc278db 100644 --- a/Yi.Framework/Yi.Framework.Model/Migrations/20211022181627_yi-1.cs +++ b/Yi.Framework/Yi.Framework.Model/Migrations/20211106082100_yi-1.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore.Metadata; +using System; +using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; namespace Yi.Framework.Model.Migrations @@ -69,7 +70,8 @@ namespace Yi.Framework.Model.Migrations .Annotation("MySql:CharSet", "utf8mb4"), address = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), - phone = table.Column(type: "int", nullable: true), + phone = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), is_delete = table.Column(type: "int", nullable: false) }, constraints: table => @@ -78,6 +80,22 @@ namespace Yi.Framework.Model.Migrations }) .Annotation("MySql:CharSet", "utf8mb4"); + migrationBuilder.CreateTable( + name: "visit", + columns: table => new + { + id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + time = table.Column(type: "datetime(6)", nullable: false), + num = table.Column(type: "int", nullable: false), + is_delete = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_visit", x => x.id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + migrationBuilder.CreateTable( name: "menu", columns: table => new @@ -194,6 +212,9 @@ namespace Yi.Framework.Model.Migrations migrationBuilder.DropTable( name: "roleuser"); + migrationBuilder.DropTable( + name: "visit"); + migrationBuilder.DropTable( name: "menu"); diff --git a/Yi.Framework/Yi.Framework.Model/Models/menu.cs b/Yi.Framework/Yi.Framework.Model/Models/menu.cs index 80ff6cff..0a562163 100644 --- a/Yi.Framework/Yi.Framework.Model/Models/menu.cs +++ b/Yi.Framework/Yi.Framework.Model/Models/menu.cs @@ -15,6 +15,9 @@ namespace Yi.Framework.Model.Models public List children { get; set; } + + public List roles { get; set; } + public mould mould { get; set; } } } diff --git a/Yi.Framework/Yi.Framework.Model/Models/role.cs b/Yi.Framework/Yi.Framework.Model/Models/role.cs index 3e6b4927..8516124f 100644 --- a/Yi.Framework/Yi.Framework.Model/Models/role.cs +++ b/Yi.Framework/Yi.Framework.Model/Models/role.cs @@ -13,5 +13,6 @@ namespace Yi.Framework.Model.Models public List menus { get; set; } + public List users { get; set; } } } diff --git a/Yi.Framework/Yi.Framework.Model/Models/user.cs b/Yi.Framework/Yi.Framework.Model/Models/user.cs index d9d38fbe..58857e36 100644 --- a/Yi.Framework/Yi.Framework.Model/Models/user.cs +++ b/Yi.Framework/Yi.Framework.Model/Models/user.cs @@ -18,7 +18,7 @@ namespace Yi.Framework.Model.Models public int? age { get; set; } public string introduction { get; set; } public string address { get; set; } - public int? phone { get; set; } + public string phone { get; set; } public List roles { get; set; } diff --git a/Yi.Framework/Yi.Framework.SMSProcessor/Worker.cs b/Yi.Framework/Yi.Framework.SMSProcessor/Worker.cs index 09544ed5..d6039afb 100644 --- a/Yi.Framework/Yi.Framework.SMSProcessor/Worker.cs +++ b/Yi.Framework/Yi.Framework.SMSProcessor/Worker.cs @@ -25,7 +25,7 @@ namespace Yi.Framework.SMSProcessor { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); _logger.LogInformation($"Worker appsetting ConsulClientOption:Ip={this._IConfiguration["ConsulClientOption:Ip"]}"); - await Task.Delay(1000, stoppingToken); + await Task.Delay(100000, stoppingToken); } } } diff --git a/Yi.Framework/Yi.Framework.Service/RoleService.cs b/Yi.Framework/Yi.Framework.Service/RoleService.cs index 05f776b5..2ab3a56c 100644 --- a/Yi.Framework/Yi.Framework.Service/RoleService.cs +++ b/Yi.Framework/Yi.Framework.Service/RoleService.cs @@ -47,7 +47,9 @@ namespace Yi.Framework.Service { var role_data = await _Db.Set().Include(u=>u.menus).Where(u => u.id == roleId).FirstOrDefaultAsync(); var menuList = role_data.menus.Where(u => u.is_delete == Normal).ToList(); - + + menuList.ForEach(u => u.roles = null); + return menuList; } diff --git a/Yi.Framework/Yi.Framework.Service/UserService.cs b/Yi.Framework/Yi.Framework.Service/UserService.cs index c2357f0a..6e9396cf 100644 --- a/Yi.Framework/Yi.Framework.Service/UserService.cs +++ b/Yi.Framework/Yi.Framework.Service/UserService.cs @@ -15,22 +15,25 @@ namespace Yi.Framework.Service { public partial class UserService : BaseService, IUserService { - private IRoleService _roleService; short Normal = (short)Common.Enum.DelFlagEnum.Normal; - public UserService(IDbContextFactory DbFactory, IRoleService roleService) : base(DbFactory) + public async Task PhoneIsExsit(string smsAddress) { - _roleService = roleService; + var userList = await GetEntity(u => u.phone == smsAddress); + if (userList == null) + { + return false; + } + return true; } public async Task EmailIsExsit(string emailAddress) { - var userList = await GetAllEntitiesTrueAsync(); - var is_email = userList.Where(u => u.email == emailAddress).FirstOrDefault(); - if (is_email == null) + var userList = await GetEntity(u => u.email == emailAddress); + if (userList == null) { - return true; + return false; } - return false; + return true; } /// /// @@ -48,9 +51,10 @@ namespace Yi.Framework.Service List menuList = new(); foreach(var item in user_data.roles) { - var m=item.menus.Where(u => u.router.ToUpper() == router.ToUpper()).FirstOrDefault(); - menuList= m.children.Where(u => menuIds.Contains(u.id)&&u.is_delete==Normal).ToList(); - if (m != null) { break; } + var m=item.menus.Where(u =>u?.router?.ToUpper() == router.ToUpper()).FirstOrDefault(); + if (m == null) { break; } + menuList = m.children?.Where(u => menuIds.Contains(u.id)&&u.is_delete==Normal).ToList(); + } return menuList; } @@ -63,7 +67,12 @@ namespace Yi.Framework.Service } public async Task GetUserInRolesByHttpUser(int userId) { - return await GetUserById(userId); + var data = await GetUserById(userId); + data.roles?.ForEach(u=> { + u.users = null; + u.menus = null; + }); + return data; } public async Task Login(user _user) @@ -79,7 +88,7 @@ namespace Yi.Framework.Service { return false; } - return await AddAsync(_user); + return await UpdateAsync(_user); } public async Task SetRoleByUser(List roleIds, List userIds) @@ -89,5 +98,7 @@ namespace Yi.Framework.Service user_data.ForEach(u => u.roles = roleList); return await UpdateListAsync(user_data); } + + } } diff --git a/Yi.Framework/Yi.Framework.WebCore/Init/DataSeed.cs b/Yi.Framework/Yi.Framework.WebCore/Init/DataSeed.cs index 4cd8ea76..0129b67e 100644 --- a/Yi.Framework/Yi.Framework.WebCore/Init/DataSeed.cs +++ b/Yi.Framework/Yi.Framework.WebCore/Init/DataSeed.cs @@ -13,7 +13,7 @@ namespace Yi.Framework.WebCore.Init { public async static Task SeedAsync(IDbContextFactory _DbFactory) { - var _Db= _DbFactory.ConnWriteOrRead(Common.Enum.WriteAndReadEnum.Write); + var _Db = _DbFactory.ConnWriteOrRead(Common.Enum.WriteAndReadEnum.Write); if (!_Db.Set().Any()) { await _Db.Set().AddAsync(new user @@ -22,18 +22,28 @@ namespace Yi.Framework.WebCore.Init password = "123", roles = new List() { + new role(){ role_name="普通用户"}, + new role() { role_name="管理员", menus = new List() { - new menu() - { - menu_name="用户角色管理",is_show=1,is_top=1, children=new List() + new menu() + { + menu_name="根",is_show=1,is_top=1, children=new List(){ + new menu() + { + menu_name="首页",is_show=1,router="/" + }, + + new menu() + { + menu_name="用户角色管理",is_show=1, children=new List() { new menu() - { - menu_name="用户管理",router="/AdmUser", is_show=1,children=new List() + { + menu_name="用户管理",router="/AdmUser/", is_show=1,children=new List() { new menu() { @@ -64,14 +74,14 @@ namespace Yi.Framework.WebCore.Init menu_name="add",is_show=0, mould=new mould() { - mould_name="del",url="/user/adduser" + mould_name="add",url="/user/adduser" } } - } + } }, new menu() { - menu_name="角色管理",router="/admrole", is_show=1,children=new List() + menu_name="角色管理",router="/admrole/", is_show=1,children=new List() { new menu() { @@ -102,21 +112,21 @@ namespace Yi.Framework.WebCore.Init menu_name="add",is_show=0, mould=new mould() { - mould_name="del",url="/role/addroler" + mould_name="add",url="/role/addrole" } } } } } - + }, new menu() { - menu_name="角色接口管理",is_show=1, is_top=1,children=new List() + menu_name="角色接口管理",is_show=1, children=new List() { new menu() { - menu_name="菜单管理",router="/AdmMenu", is_show=1,children=new List() + menu_name="菜单管理",router="/AdmMenu/", is_show=1,children=new List() { new menu() { @@ -147,14 +157,14 @@ namespace Yi.Framework.WebCore.Init menu_name="add",is_show=0, mould=new mould() { - mould_name="del",url="/Menu/addMenu" + mould_name="add",url="/Menu/addMenu" } } } }, new menu() { - menu_name="接口管理",router="/admMould", is_show=1,children=new List() + menu_name="接口管理",router="/admMould/", is_show=1,children=new List() { new menu() { @@ -192,23 +202,49 @@ namespace Yi.Framework.WebCore.Init }, new menu() { - menu_name="角色菜单分配管理",router="/admRoleMenu", is_show=1, children=null + menu_name="角色菜单分配管理",router="/admRoleMenu/", is_show=1, children=null } } }, new menu() { - menu_name="路由管理",is_show=1,is_top=1,children=new List() + menu_name="路由管理",is_show=1,children=new List() { new menu() { - menu_name="用户信息",router="/userinfo", is_show=1,children=null - + menu_name="用户信息",router="/userinfo/", is_show=1,children=null + } } } + + + + + + + + + + + + + + + + + + + + + + + + } + } + } } } diff --git a/Yi.Framework/Yi.Framework.WebCore/Init/RedisInit.cs b/Yi.Framework/Yi.Framework.WebCore/Init/RedisInit.cs index a091428f..7856785c 100644 --- a/Yi.Framework/Yi.Framework.WebCore/Init/RedisInit.cs +++ b/Yi.Framework/Yi.Framework.WebCore/Init/RedisInit.cs @@ -15,10 +15,10 @@ namespace Yi.Framework.WebCore.Init { var setDto = Common.Helper.JsonHelper.ObjToStr(new SettingDto() { - ImageList_key =new List { "默认图片", "默认图片" }, - InitRole_key = "普通用户", - Title_key = "YiFramework", - InitIcon_key = "默认头像" + ImageList =new List { "默认图片", "默认图片" }, + InitRole = "普通用户", + Title = "YiFramework", + InitIcon = "默认头像" }); if (_cacheClientDB.Get(RedisConst.key)==null) { diff --git a/Yi.Vue/src/api/accountApi.js b/Yi.Vue/src/api/accountApi.js index c0e19022..30744d7a 100644 --- a/Yi.Vue/src/api/accountApi.js +++ b/Yi.Vue/src/api/accountApi.js @@ -16,11 +16,11 @@ export default { method: 'post', }) }, - register(username, password, email, code) { + register(username, password, phone, code) { return myaxios({ url: `/Account/register?code=${code}`, method: 'post', - data: { username, password, email } + data: { username, password, phone } }) }, email(emailAddress) { @@ -29,6 +29,12 @@ export default { method: 'post', }) }, + SendSMS(smsAddress) { + return myaxios({ + url: `/Account/SendSMS?SMSAddress=${smsAddress}`, + method: 'post', + }) + }, changePassword(user, newPassword) { return myaxios({ url: `/Account/changePassword`, diff --git a/Yi.Vue/src/views/register.vue b/Yi.Vue/src/views/register.vue index 14c82936..5a7afbc4 100644 --- a/Yi.Vue/src/views/register.vue +++ b/Yi.Vue/src/views/register.vue @@ -18,10 +18,10 @@ -

+

注册-从这里开始 🚀

-

加入我们,获得一个有趣的灵魂!

+

加入我们,获得一个有趣的灵魂!

@@ -31,30 +31,42 @@ v-model="form.username" outlined label="用户名" - placeholder="JohnDoe" - - class="mb-3" + placeholder="cc" + class="mb-1" counter="20" > + label="电话" + placeholder="12345678901" + class="mb-1" + > + + + + + + + + 验证码 + + @@ -67,7 +79,9 @@ - 注册 + + 注册 + @@ -86,53 +100,79 @@ - - - {{ link.icon }} - - - + + + {{ link.icon }} + + +