diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs b/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs index eb3fcf16..b1c7f0b7 100644 --- a/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs +++ b/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs @@ -50,7 +50,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers if ( user_data!=null) { var token = MakeJwt.app(new jwtUser() {user=user_data,menuIds= menuList}); - return Result.Success().SetData(new { user = new { _user.id, _user.username, _user.introduction, _user.icon, _user.nick }, token }); + return Result.Success().SetData(new { user = new { user_data.id, user_data.username, user_data.introduction, user_data.icon, user_data.nick }, token }); } return Result.Error(); } diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/FileController.cs b/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/FileController.cs index 8da4a2d5..8dcae4c7 100644 --- a/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/FileController.cs +++ b/Yi.Framework/Yi.Framework.ApiMicroservice/Controllers/FileController.cs @@ -23,26 +23,42 @@ namespace Yi.Framework.ApiMicroservice.Controllers { _userService = userService; _env = env; - } + } [HttpPost] [Authorize] public async Task EditIcon(IFormFile file) { - var _user = HttpContext.GetCurrentUserInfo(); - var user_data = await _userService.GetUserById(_user.id); - var type = "image"; - var filename = await Upload(type, file); - user_data.icon = filename; - await _userService.UpdateAsync(user_data); - return Result.Success(); + try + { + var _user = HttpContext.GetCurrentUserInfo(); + var user_data = await _userService.GetUserById(_user.id); + var type = "image"; + var filename = await Upload(type, file); + user_data.icon = filename; + await _userService.UpdateAsync(user_data); + return Result.Success(); + } + catch + { + return Result.Error(); + } } + + [Route("/api/{type}/{fileName}")] [HttpGet] - public IActionResult Get(string type, string imageNmae) + public IActionResult Get(string type, string fileName) { - var path = Path.Combine($"wwwroot/{type}", imageNmae); - var stream = System.IO.File.OpenRead(path); - var MimeType = Common.Helper.MimeHelper.GetMimeMapping(imageNmae); - return new FileStreamResult(stream, MimeType); + try + { + var path = Path.Combine($"wwwroot/{type}", fileName); + var stream = System.IO.File.OpenRead(path); + var MimeType = Common.Helper.MimeHelper.GetMimeMapping(fileName); + return new FileStreamResult(stream, MimeType); + } + catch + { + return new NotFoundResult(); + } } /// @@ -51,9 +67,8 @@ namespace Yi.Framework.ApiMicroservice.Controllers /// /// /// - private async Task Upload(string type,IFormFile file) + private async Task Upload(string type, IFormFile file) { - string filename = Guid.NewGuid().ToString() + Path.GetExtension(file.FileName); using (var stream = new FileStream(Path.Combine($"wwwroot/{type}", filename), FileMode.CreateNew, FileAccess.Write)) { @@ -63,13 +78,13 @@ namespace Yi.Framework.ApiMicroservice.Controllers return filename; } - [HttpGet] - public async TaskExportFile() + [HttpGet] + public async Task ExportFile() { var userdata = await _userService.GetAllEntitiesTrueAsync(); var userList = userdata.ToList(); - List header = new() { "用户", "密码", "头像", "昵称", "邮箱", "ip","年龄", "个人介绍", "地址", "手机", "角色" }; - var filename= Common.Helper.ExcelHelper.CreateExcelFromList(userList,header,_env.ContentRootPath.ToString()); + List header = new() { "用户", "密码", "头像", "昵称", "邮箱", "ip", "年龄", "个人介绍", "地址", "手机", "角色" }; + var filename = Common.Helper.ExcelHelper.CreateExcelFromList(userList, header, _env.ContentRootPath.ToString()); var MimeType = Common.Helper.MimeHelper.GetMimeMapping(filename); return new FileStreamResult(new FileStream(Path.Combine(_env.ContentRootPath+@"/wwwroot/Excel", filename), FileMode.Open),MimeType); } diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/Startup.cs b/Yi.Framework/Yi.Framework.ApiMicroservice/Startup.cs index 060e93ab..97d9f5c5 100644 --- a/Yi.Framework/Yi.Framework.ApiMicroservice/Startup.cs +++ b/Yi.Framework/Yi.Framework.ApiMicroservice/Startup.cs @@ -84,7 +84,7 @@ namespace Yi.Framework.ApiMicroservice #endregion // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env,IDbContextFactory _DbFactory) + public void Configure(IApplicationBuilder app, IWebHostEnvironment env,IDbContextFactory _DbFactory, CacheClientDB _cacheClientDB) { //if (env.IsDevelopment()) { @@ -103,6 +103,11 @@ namespace Yi.Framework.ApiMicroservice #endregion //app.UseErrorHandlingService(); + #region + //̬ļע + #endregion + //app.UseStaticFiles(); + #region //HttpsRedirectionע #endregion @@ -142,7 +147,11 @@ namespace Yi.Framework.ApiMicroservice //ݿע #endregion app.UseDbSeedInitService(_DbFactory); - //app.UseRedisInitService(_cacheClientDB); + + #region + //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 2efb0841..6c8d851c 100644 --- a/Yi.Framework/Yi.Framework.ApiMicroservice/SwaggerDoc.xml +++ b/Yi.Framework/Yi.Framework.ApiMicroservice/SwaggerDoc.xml @@ -39,6 +39,14 @@ + + + 该方法不对外暴露 + + + + + 这个是要递归的,但是要过滤掉删除的,所以,可以写一个通用过滤掉删除的方法 @@ -159,11 +167,11 @@ - + - + diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/appsettings.json b/Yi.Framework/Yi.Framework.ApiMicroservice/appsettings.json index 61f66577..ee2132c0 100644 --- a/Yi.Framework/Yi.Framework.ApiMicroservice/appsettings.json +++ b/Yi.Framework/Yi.Framework.ApiMicroservice/appsettings.json @@ -1,69 +1,69 @@ { - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "AllowedHosts": "*", + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "AllowedHosts": "*", - "Consul_Enabled": false, - "DbSeed_Enabled": true, - "Apollo_Enabled": false, - "HealthCheck_Enabled": false, - "Cors_Enabled": true, - "RabbitMQ_Enabled": false, - "Redis_Enabled": false, - "RedisSet_Enabled": false, - "Kafka_Enabled": false, - "MutiDB_Enabled": false, - "DbList": ["Sqlite", "Mysql", "Sqlserver", "Oracle"], - "DbSelect": "Mysql", + "Consul_Enabled": false, + "DbSeed_Enabled": true, + "Apollo_Enabled": false, + "HealthCheck_Enabled": false, + "Cors_Enabled": true, + "RabbitMQ_Enabled": false, + "Redis_Enabled": true, + "RedisSeed_Enabled": false, + "Kafka_Enabled": false, + "MutiDB_Enabled": false, + "DbList": [ "Sqlite", "Mysql", "Sqlserver", "Oracle" ], + "DbSelect": "Mysql", - "DbConn": { - "WriteUrl": "server=118.195.191.41;port=3306;database=YIDB;user id=root;password=Qz52013142020.", - "ReadUrl": [ - "server=118.195.191.41;port=3306;database=YIDB;user id=root;password=Qz52013142020.", - "server=118.195.191.41;port=3306;database=YIDB;user id=root;password=Qz52013142020.", - "server=118.195.191.41;port=3306;database=YIDB;user id=root;password=Qz52013142020." - ] - }, - "Apollo": { - "AppId": "Yi.Framework.ApiMicroservice", - "Env": "DEV", - "MetaServer": "http://192.168.2.168:8080", - "ConfigServer": ["http://192.168.2.168:8080"] - }, - "JWTTokenOptions": { - "Audience": "http://localhost:7000", - "Issuer": "http://localhost:7000", - "SecurityKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDI2a2EJ7m872v0afyoSDJT2o1+SitIeJSWtLJU8/Wz2m7gStexajkeD+Lka6DSTy8gt9UwfgVQo6uKjVLG5Ex7PiGOODVqAEghBuS7JzIYU5RvI543nNDAPfnJsas96mSA7L/mD7RTE2drj6hf3oZjJpMPZUQI/B1Qjb5H3K3PNwIDAQAB" - }, - "RedisConn": { - "Host": "118.195.191.41", - "Prot": 6379, - "DB": 1, - "Password": "Qz52013142020." - }, - "KafkaOptions": { - "BrokerList": "192.168.3.230:9092", - "TopicName": "kafkalog" - }, - "ConsulClientOption": { - "IP": "192.168.2.128", - "Port": "8500", - "Datacenter": "dc1" - }, - "ConsulRegisterOption": { - "IP": "192.168.1.104", - "Port": "7001", - "GroupName": "ApiMicroservice", - "HealthCheckUrl": "/Health", - "Interval": 10, - "Timeout": 5, - "DeregisterCriticalServiceAfter": 60, - "Tag": "13" - }, - "IPLibraryServiceUrl": "http://gRPCIPLibraryService" + "DbConn": { + "WriteUrl": "server=118.195.191.41;port=3306;database=YIDB;user id=root;password=Qz52013142020.", + "ReadUrl": [ + "server=118.195.191.41;port=3306;database=YIDB;user id=root;password=Qz52013142020.", + "server=118.195.191.41;port=3306;database=YIDB;user id=root;password=Qz52013142020.", + "server=118.195.191.41;port=3306;database=YIDB;user id=root;password=Qz52013142020." + ] + }, + "Apollo": { + "AppId": "Yi.Framework.ApiMicroservice", + "Env": "DEV", + "MetaServer": "http://192.168.2.168:8080", + "ConfigServer": [ "http://192.168.2.168:8080" ] + }, + "JWTTokenOptions": { + "Audience": "http://localhost:7000", + "Issuer": "http://localhost:7000", + "SecurityKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDI2a2EJ7m872v0afyoSDJT2o1+SitIeJSWtLJU8/Wz2m7gStexajkeD+Lka6DSTy8gt9UwfgVQo6uKjVLG5Ex7PiGOODVqAEghBuS7JzIYU5RvI543nNDAPfnJsas96mSA7L/mD7RTE2drj6hf3oZjJpMPZUQI/B1Qjb5H3K3PNwIDAQAB" + }, + "RedisConnOptions": { + "Host": "118.195.191.41", + "Prot": 6379, + "DB": 1, + "Password": "Qz52013142020." + }, + "KafkaOptions": { + "BrokerList": "192.168.3.230:9092", + "TopicName": "kafkalog" + }, + "ConsulClientOption": { + "IP": "192.168.2.128", + "Port": "8500", + "Datacenter": "dc1" + }, + "ConsulRegisterOption": { + "IP": "192.168.1.104", + "Port": "7001", + "GroupName": "ApiMicroservice", + "HealthCheckUrl": "/Health", + "Interval": 10, + "Timeout": 5, + "DeregisterCriticalServiceAfter": 60, + "Tag": "13" + }, + "IPLibraryServiceUrl": "http://gRPCIPLibraryService" } \ No newline at end of file diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/wwwroot/image/1b0a926d-ddce-4048-9b09-e2b8ec37c161.jpg b/Yi.Framework/Yi.Framework.ApiMicroservice/wwwroot/image/1b0a926d-ddce-4048-9b09-e2b8ec37c161.jpg new file mode 100644 index 00000000..aa4daf73 Binary files /dev/null and b/Yi.Framework/Yi.Framework.ApiMicroservice/wwwroot/image/1b0a926d-ddce-4048-9b09-e2b8ec37c161.jpg differ diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/wwwroot/image/3d6ed457-0c20-4ce6-b91c-8c424f2f03bb.jpeg b/Yi.Framework/Yi.Framework.ApiMicroservice/wwwroot/image/3d6ed457-0c20-4ce6-b91c-8c424f2f03bb.jpeg new file mode 100644 index 00000000..a1070258 Binary files /dev/null and b/Yi.Framework/Yi.Framework.ApiMicroservice/wwwroot/image/3d6ed457-0c20-4ce6-b91c-8c424f2f03bb.jpeg differ diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/wwwroot/image/7ca98a58-8822-40f5-a766-2a2dd21d2431.jpg b/Yi.Framework/Yi.Framework.ApiMicroservice/wwwroot/image/7ca98a58-8822-40f5-a766-2a2dd21d2431.jpg new file mode 100644 index 00000000..aa4daf73 Binary files /dev/null and b/Yi.Framework/Yi.Framework.ApiMicroservice/wwwroot/image/7ca98a58-8822-40f5-a766-2a2dd21d2431.jpg differ diff --git a/Yi.Framework/Yi.Framework.ApiMicroservice/wwwroot/image/feae1964-04ce-464b-848b-86f2245f3f63.jpeg b/Yi.Framework/Yi.Framework.ApiMicroservice/wwwroot/image/feae1964-04ce-464b-848b-86f2245f3f63.jpeg new file mode 100644 index 00000000..76a391b4 Binary files /dev/null and b/Yi.Framework/Yi.Framework.ApiMicroservice/wwwroot/image/feae1964-04ce-464b-848b-86f2245f3f63.jpeg differ diff --git a/Yi.Framework/Yi.Framework.Core/CacheClientDB.cs b/Yi.Framework/Yi.Framework.Core/CacheClientDB.cs index 41d84a5c..32187406 100644 --- a/Yi.Framework/Yi.Framework.Core/CacheClientDB.cs +++ b/Yi.Framework/Yi.Framework.Core/CacheClientDB.cs @@ -44,9 +44,9 @@ namespace Yi.Framework.Core // } //} #endregion - public CacheClientDB(IOptionsMonitor jwtTokenOptions) + public CacheClientDB(IOptionsMonitor redisConnOptions) { - this._RedisOptions = jwtTokenOptions.CurrentValue; + this._RedisOptions = redisConnOptions.CurrentValue; client = new RedisClient(_RedisOptions.Host, _RedisOptions.Prot, _RedisOptions.Password, _RedisOptions.DB); } // 管道模式 三种模式 diff --git a/Yi.Framework/Yi.Framework.Core/TreeMenuBuild.cs b/Yi.Framework/Yi.Framework.Core/TreeMenuBuild.cs index cedaff6b..14b0e6f8 100644 --- a/Yi.Framework/Yi.Framework.Core/TreeMenuBuild.cs +++ b/Yi.Framework/Yi.Framework.Core/TreeMenuBuild.cs @@ -93,7 +93,7 @@ namespace Yi.Framework.Core { for (int i = menu_data.children.Count() - 1; i >= 0; i--) { - menu_data.children = menu_data.children.AsEnumerable().OrderBy(u => u.sort).ToList(); + menu_data.children = menu_data.children.AsEnumerable().OrderByDescending(u => u.sort).ToList(); if (menu_data.children != null || menu_data.children.Count() != 0) { diff --git a/Yi.Framework/Yi.Framework.WebCore/MiddlewareExtend/RedisExtension.cs b/Yi.Framework/Yi.Framework.WebCore/MiddlewareExtend/RedisExtension.cs index f17beb8a..2d17b857 100644 --- a/Yi.Framework/Yi.Framework.WebCore/MiddlewareExtend/RedisExtension.cs +++ b/Yi.Framework/Yi.Framework.WebCore/MiddlewareExtend/RedisExtension.cs @@ -17,7 +17,7 @@ namespace Yi.Framework.WebCore.MiddlewareExtend { if (Appsettings.appBool("Redis_Enabled")) { - services.Configure(Appsettings.appConfiguration("RedisConn")); + services.Configure(Appsettings.appConfiguration("RedisConnOptions")); services.AddTransient(); } return services; diff --git a/Yi.Framework/Yi.Framework.WebCore/MiddlewareExtend/RedisInitExtend.cs b/Yi.Framework/Yi.Framework.WebCore/MiddlewareExtend/RedisInitExtend.cs index 8f813afd..010bb42e 100644 --- a/Yi.Framework/Yi.Framework.WebCore/MiddlewareExtend/RedisInitExtend.cs +++ b/Yi.Framework/Yi.Framework.WebCore/MiddlewareExtend/RedisInitExtend.cs @@ -15,10 +15,10 @@ namespace Yi.Framework.WebCore.MiddlewareExtend public static class RedisInitExtend { private static readonly ILog log = LogManager.GetLogger(typeof(RedisInitExtend)); - public static void UseRedisInitService(this IApplicationBuilder app, CacheClientDB _cacheClientDB) + public static void UseRedisSeedInitService(this IApplicationBuilder app, CacheClientDB _cacheClientDB) { - if (Appsettings.appBool("RedisSet_Enabled")) + if (Appsettings.appBool("RedisSeed_Enabled")) { if (app == null) throw new ArgumentNullException(nameof(app)); diff --git a/Yi.Vue/src/api/fileApi.js b/Yi.Vue/src/api/fileApi.js index 6a999fbb..3b653b07 100644 --- a/Yi.Vue/src/api/fileApi.js +++ b/Yi.Vue/src/api/fileApi.js @@ -1,8 +1,8 @@ import myaxios from '@/util/myaxios' export default { - Upload(file) { + EditIcon(file) { return myaxios({ - url: '/File/Upload', + url: '/File/EditIcon', method: 'post', headers: { "Content-Type": "multipart/form-data" }, data: file diff --git a/Yi.Vue/src/components/ccAvatar.vue b/Yi.Vue/src/components/ccAvatar.vue new file mode 100644 index 00000000..a8709e15 --- /dev/null +++ b/Yi.Vue/src/components/ccAvatar.vue @@ -0,0 +1,28 @@ + + + diff --git a/Yi.Vue/src/layouts/default/ListGroup.vue b/Yi.Vue/src/layouts/default/ListGroup.vue index 3fbcb133..2f4811ef 100644 --- a/Yi.Vue/src/layouts/default/ListGroup.vue +++ b/Yi.Vue/src/layouts/default/ListGroup.vue @@ -65,8 +65,10 @@ }, title () { const matches = this.item.menu_name.match(/\b(\w)/g) - +if(matches!=null) +{ return matches.join('') +} }, }, diff --git a/Yi.Vue/src/layouts/default/ListItem.vue b/Yi.Vue/src/layouts/default/ListItem.vue index 16056715..47b1ee83 100644 --- a/Yi.Vue/src/layouts/default/ListItem.vue +++ b/Yi.Vue/src/layouts/default/ListItem.vue @@ -48,8 +48,10 @@ computed: { title () { const matches = this.item.menu_name.match(/\b(\w)/g) - +if(matches!=null) +{ return matches.join('') +} }, }, } diff --git a/Yi.Vue/src/layouts/default/widgets/Account.vue b/Yi.Vue/src/layouts/default/widgets/Account.vue index c51c2d2d..a6218329 100644 --- a/Yi.Vue/src/layouts/default/widgets/Account.vue +++ b/Yi.Vue/src/layouts/default/widgets/Account.vue @@ -8,50 +8,26 @@ transition="scale-transition" > - + + + - - - - + @@ -60,16 +36,15 @@ diff --git a/Yi.Vue/src/views/userInfo.vue b/Yi.Vue/src/views/userInfo.vue index dfb67f98..cd11f4d1 100644 --- a/Yi.Vue/src/views/userInfo.vue +++ b/Yi.Vue/src/views/userInfo.vue @@ -3,11 +3,7 @@ - +
@@ -321,8 +317,12 @@ export default { this.userInfo = resp.data; this.userInfo.password = ""; this.editInfo = Object.assign({}, this.userInfo); + this.$store.commit('SET_USER',this.userInfo) }); + + + menuApi.GetTopMenusByHttpUser().then((resp) => { this.menuInfo = resp.data; }); @@ -333,9 +333,13 @@ choiceImg() { uploadImage() { const file = this.$refs.imgFile.files[0]; let formData = new FormData(); - formData.append("img", file); - fileApi.Upload(formData).then(resp=>{ + formData.append("file", file); + fileApi.EditIcon(formData).then(resp=>{ this.init(); + this.$dialog.notify.success(resp.msg, { + position: "top-right", + timeout: 5000, + }); }) },