From 198b7c584180dbfd9f9e7dd972a5ddcf0384d642 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?old=E6=98=93?= <156663459@qq.com> Date: Fri, 2 Feb 2024 18:21:39 +0800 Subject: [PATCH] feat:bug fixed --- .../Controllers/Front/CustomerController.cs | 4 ++ .../Controllers/OAuthController.cs | 43 ++++++++++-- New_College.Api/New_College.xml | 7 ++ New_College.Api/Startup.cs | 23 +++--- New_College.Api/appsettings.Development.json | 3 + New_College.Common/GlobalVar/WeiXinConfig.cs | 5 ++ New_College.Common/Helper/YZYSignCrypt.cs | 70 +++++++++++++++++++ .../Request/ThridLoginRequestDto.cs | 26 +++++++ .../BASE/D_PlanMajorDescProRepository.cs | 2 +- New_College.Services/D_LongIdMapServices.cs | 52 +++++++------- .../D_PlanMajorDescProServices.cs | 1 + .../D_PlanMajorDescServices.cs | 2 +- .../D_UserSettingBaseServices.cs | 62 +++++++++------- 13 files changed, 235 insertions(+), 65 deletions(-) create mode 100644 New_College.Common/Helper/YZYSignCrypt.cs create mode 100644 New_College.Model/Request/ThridLoginRequestDto.cs diff --git a/New_College.Api/Controllers/Front/CustomerController.cs b/New_College.Api/Controllers/Front/CustomerController.cs index 23c40d2..e148471 100644 --- a/New_College.Api/Controllers/Front/CustomerController.cs +++ b/New_College.Api/Controllers/Front/CustomerController.cs @@ -315,6 +315,10 @@ namespace New_College.Api.Controllers.Front var result = await _services.UpdateCustomer(query); if (result.Id > 0) { + if (query.Expectedscore >= 0) + { + await _userSetting.UpdateSingleCustomerSetting(new UserBaseSettingUpdateDTO() { UType = 0, CustomerId = query.StudentId });//修改参数次数 + } var token = JwtHelper.IssueJwt(new TokenModelJwt() { Uid = result.Id, Role = "学生" }); result.Token = token; } diff --git a/New_College.Api/Controllers/OAuthController.cs b/New_College.Api/Controllers/OAuthController.cs index d6ef3c8..4530c5e 100644 --- a/New_College.Api/Controllers/OAuthController.cs +++ b/New_College.Api/Controllers/OAuthController.cs @@ -28,7 +28,42 @@ namespace New_College.Controllers + /// + ///三方登录 + /// + /// + /// + [Route("login")] + public async Task> Login([FromQuery] ThridLoginRequestDto dto) + { + string token = string.Empty; + if (dto == null) + { + return new MessageModel() + { + success = false, + msg = "参数错误", + }; + } + if (ThridConfig.secretKey != dto.secretKey) + { + return new MessageModel() + { + success = false, + msg = "密钥错误", + }; + } + //首先判断是否存在账户|不存在则创建新的账户,存在则直接登录 + + + return new MessageModel() + { + msg = "ok", + success = true, + response = token + }; + } /// /// Oauth2验证回调 @@ -44,7 +79,7 @@ namespace New_College.Controllers var response = new CasDoorToken(); string jwtStr = string.Empty; bool suc = false; - var getaccesstoken = CasdoorHttpHelper.Http_Post("api/login/oauth/access_token",null, new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(new CasdoorRequest() { code = code, grant_type = "authorization_code", client_id = CasdoorConfig.ClientId, client_secret = CasdoorConfig.ClientSecret }), Encoding.UTF8, "application/json"));//获取access_token + var getaccesstoken = CasdoorHttpHelper.Http_Post("api/login/oauth/access_token", null, new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(new CasdoorRequest() { code = code, grant_type = "authorization_code", client_id = CasdoorConfig.ClientId, client_secret = CasdoorConfig.ClientSecret }), Encoding.UTF8, "application/json"));//获取access_token var headers = new System.Collections.Generic.Dictionary { { "Authorization", string.Format("Bearer {0}", getaccesstoken.access_token) } @@ -69,11 +104,11 @@ namespace New_College.Controllers var single = await _CustomerInfoServices.QueryById(user.Item2.Id); if (!string.IsNullOrWhiteSpace(user.Item2.Phone)) { - single.NickName= user.Item2.Phone; + single.NickName = user.Item2.Phone; } if (!string.IsNullOrWhiteSpace(user.Item2.UserCode)) { - single.NickName = user.Item2.UserCode; + single.NickName = user.Item2.UserCode; } await _CustomerInfoServices.Update(single); } @@ -88,7 +123,7 @@ namespace New_College.Controllers return new MessageModel() { success = false, - msg="该账户不存在或已注销" + msg = "该账户不存在或已注销" }; } diff --git a/New_College.Api/New_College.xml b/New_College.Api/New_College.xml index 55b3f38..6e9a77a 100644 --- a/New_College.Api/New_College.xml +++ b/New_College.Api/New_College.xml @@ -1382,6 +1382,13 @@ + + + 三方登录 + + + + Oauth2验证回调 diff --git a/New_College.Api/Startup.cs b/New_College.Api/Startup.cs index 7e07d59..c0e471a 100644 --- a/New_College.Api/Startup.cs +++ b/New_College.Api/Startup.cs @@ -66,7 +66,7 @@ namespace New_College WeixinConfig.KEY = Appsettings.app(new string[] { "Weixin", "KEY" }).ObjToString(); WeixinConfig.NotifyUrl = Appsettings.app(new string[] { "WeChatPay", "NotifyUrl" }).ObjToString(); WeixinConfig.APIv3Key = Appsettings.app(new string[] { "WeChatPay", "APIv3Key" }).ObjToString(); - WeixinConfig.SerialNumber= Appsettings.app(new string[] { "WeChatPay", "SerialNumber" }).ObjToString(); + WeixinConfig.SerialNumber = Appsettings.app(new string[] { "WeChatPay", "SerialNumber" }).ObjToString(); WeixinConfig.PrivateKey = Appsettings.app(new string[] { "WeChatPay", "PrivateKey" }).ObjToString(); //阿里云oss配置 @@ -81,10 +81,15 @@ namespace New_College ///三方验证接口 CasdoorConfig.Endpoint = Appsettings.app(new string[] { "Casdoor", "Endpoint" }); CasdoorConfig.ClientId = Appsettings.app(new string[] { "Casdoor", "ClientId" }); - CasdoorConfig.ClientSecret = Appsettings.app(new string[] { "Casdoor", "ClientSecret" }); + CasdoorConfig.ClientSecret = Appsettings.app(new string[] { "Casdoor", "ClientSecret" }); CasdoorConfig.CallbackPath = Appsettings.app(new string[] { "Casdoor", "CallbackPath" }); + //三方验证 + ThridConfig.secretKey = Appsettings.app(new string[] { "ThridConfig", "secretKey" }); + + + services.AddMemoryCacheSetup(); services.AddSqlsugarSetup(); services.AddDbSetup(); @@ -98,7 +103,7 @@ namespace New_College services.AddHttpApi(); - + // 授权+认证 (jwt or ids4) services.AddAuthorizationSetup(); @@ -120,7 +125,7 @@ namespace New_College services.Configure(x => x.AllowSynchronousIO = true) .Configure(x => x.AllowSynchronousIO = true); - services.AddSession(); + services.AddSession(); services.AddControllers(o => { // 全局异常过滤 @@ -141,11 +146,11 @@ namespace New_College //取消Unicode编码 options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All); //忽略空值 - // options.JsonSerializerOptions.IgnoreNullValues = true; + // options.JsonSerializerOptions.IgnoreNullValues = true; //允许额外符号 options.JsonSerializerOptions.AllowTrailingCommas = true; //反序列化过程中属性名称是否使用不区分大小写的比较 - // options.JsonSerializerOptions.PropertyNameCaseInsensitive = false; + // options.JsonSerializerOptions.PropertyNameCaseInsensitive = false; ////将long类型转为string //options.SerializerSettings.Converters.Add(new NumberConverter(NumberConverterShip.Int64)); }); @@ -167,7 +172,7 @@ namespace New_College // 注意在Program.CreateHostBuilder,添加Autofac服务工厂 public void ConfigureContainer(ContainerBuilder builder) { - + builder.RegisterModule(new AutofacModuleRegister()); } @@ -176,7 +181,7 @@ namespace New_College { - + // Ip限流,尽量放管道外层 app.UseIpLimitMildd(); // 记录请求与返回数据 @@ -205,7 +210,7 @@ namespace New_College // 封装Swagger展示 app.UseSwaggerMildd(() => GetType().GetTypeInfo().Assembly.GetManifestResourceStream("New_College.Api.index.html")); - + // ↓↓↓↓↓↓ 注意下边这些中间件的顺序,很重要 ↓↓↓↓↓↓ diff --git a/New_College.Api/appsettings.Development.json b/New_College.Api/appsettings.Development.json index fe42b2f..2afffc4 100644 --- a/New_College.Api/appsettings.Development.json +++ b/New_College.Api/appsettings.Development.json @@ -244,6 +244,9 @@ "NotifyUrl": "https://zytb.ycymedu.com/api/front/WeixinPay/PayNotify", "PrivateKey": "/cert/apiclient_cert.p12", //(新)证书私钥 "SerialNumber": "1B304596B953D156B37863FF52FCAE40B458C9F2" //(新)证书序列号 + }, + "ThridConfig": { + "secretKey": "01eb9ee95ba00e440ece83f904ef9640" } } diff --git a/New_College.Common/GlobalVar/WeiXinConfig.cs b/New_College.Common/GlobalVar/WeiXinConfig.cs index 4d05d06..9434cbe 100644 --- a/New_College.Common/GlobalVar/WeiXinConfig.cs +++ b/New_College.Common/GlobalVar/WeiXinConfig.cs @@ -1,6 +1,11 @@ namespace New_College { + public static class ThridConfig + { + + public static string secretKey { get; set; } + } public static class WeixinConfig { /// diff --git a/New_College.Common/Helper/YZYSignCrypt.cs b/New_College.Common/Helper/YZYSignCrypt.cs new file mode 100644 index 0000000..b1500bd --- /dev/null +++ b/New_College.Common/Helper/YZYSignCrypt.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace New_College.Common +{ + public class YZYSignCrypt + { + public static string GetCryptCode(DateTime dt) + { + string datestring = dt.ToString("yyyy-MM-dd HH:mm:ss"); + StringBuilder sb = new StringBuilder(); + var rnd = new Random(); + int k = rnd.Next(0, 18); + for (int i = 0; i < datestring.Length; i++) + { + if (k == i) + { + sb.Append("A"); + } + switch (datestring[i]) + { + case '0': + sb.Append("Z"); + break; + case '1': + sb.Append("0"); + break; + case '2': + sb.Append("T"); + break; + case '3': + sb.Append("t"); + break; + case '4': + sb.Append("F"); + break; + case '5': + sb.Append("f"); + break; + case '6': + sb.Append("S"); + break; + case '7': + sb.Append("s"); + break; + case '8': + sb.Append("E"); + break; + case '9': + sb.Append("N"); + break; + case '-': + sb.Append("L"); + break; + case ':': + sb.Append("D"); + break; + case ' ': + sb.Append("a"); + break; + } + } + return sb.ToString(); + } + + } +} diff --git a/New_College.Model/Request/ThridLoginRequestDto.cs b/New_College.Model/Request/ThridLoginRequestDto.cs new file mode 100644 index 0000000..8d2889f --- /dev/null +++ b/New_College.Model/Request/ThridLoginRequestDto.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace New_College.Model +{ + public class ThridLoginRequestDto + { + public string secretKey { get; set; } + public string sign { get; set; } + public string openUserId { get; set; } + public string openUsername { get; set; } + public string openUserProvince { get; set; } + public string openUserSchool { get; set; } + public string openNickName { get; set; } + + public string operType { get; set; } + + public string isH5 { get; set; } + + public string redirectUrl { get; set; } + + } +} diff --git a/New_College.Repository/BASE/D_PlanMajorDescProRepository.cs b/New_College.Repository/BASE/D_PlanMajorDescProRepository.cs index 9d5b27f..1a5c2f8 100644 --- a/New_College.Repository/BASE/D_PlanMajorDescProRepository.cs +++ b/New_College.Repository/BASE/D_PlanMajorDescProRepository.cs @@ -28,7 +28,7 @@ namespace New_College.Repository { RefAsync totalCount = 0; var pageresult = new PageModel(); - + request.Year = request.Year > DateTime.Now.Year - 1 ? DateTime.Now.Year - 1 : request.Year; var pagelist = await this.Db.Queryable().Where(c => c.Location == request.Location) .Where(c => c.Years == request.Year) .WhereIF(request.Sff.HasValue, c => c._211 == (request.Sff == 1 ? "是" : "否")) diff --git a/New_College.Services/D_LongIdMapServices.cs b/New_College.Services/D_LongIdMapServices.cs index e2a6f5c..b6b3704 100644 --- a/New_College.Services/D_LongIdMapServices.cs +++ b/New_College.Services/D_LongIdMapServices.cs @@ -1998,32 +1998,32 @@ namespace New_College.Services #region 院校专业关联 - var models = new List(); - tbinfo.ForEach(a => - { - if (universitylist.Where(e => e.Name == a.UniversityName).Any()) - { - if (majorlist.Where(e => a.MajorName.Contains(e.Name)).Any()) - { - var mid = majorlist.Where(e => a.MajorName.Contains(e.Name)).FirstOrDefault().Id; - var uid = universitylist.Where(e => e.Name == a.UniversityName).FirstOrDefault().Id; - if (!models.Where(e => e.Universityid == uid && e.MajorId == mid).Any()) - { - models.Add(new D_MajorMapUniversity() - { - CreateTime = DateTime.UtcNow, - IsDelete = false, - ModifyTime = DateTime.UtcNow, - OrderSort = 0, - sp = 0, - MajorId = majorlist.Where(e => a.MajorName.Contains(e.Name)).FirstOrDefault().Id, - Universityid = universitylist.Where(e => e.Name == a.UniversityName).FirstOrDefault().Id - }); - } - } - } - }); - await d_MajorMapUniversityRepository.Add(models); + //var models = new List(); + //tbinfo.ForEach(a => + //{ + // if (universitylist.Where(e => e.Name == a.UniversityName).Any()) + // { + // if (majorlist.Where(e => a.MajorName.Contains(e.Name)).Any()) + // { + // var mid = majorlist.Where(e => a.MajorName.Contains(e.Name)).FirstOrDefault().Id; + // var uid = universitylist.Where(e => e.Name == a.UniversityName).FirstOrDefault().Id; + // if (!models.Where(e => e.Universityid == uid && e.MajorId == mid).Any()) + // { + // models.Add(new D_MajorMapUniversity() + // { + // CreateTime = DateTime.UtcNow, + // IsDelete = false, + // ModifyTime = DateTime.UtcNow, + // OrderSort = 0, + // sp = 0, + // MajorId = majorlist.Where(e => a.MajorName.Contains(e.Name)).FirstOrDefault().Id, + // Universityid = universitylist.Where(e => e.Name == a.UniversityName).FirstOrDefault().Id + // }); + // } + // } + // } + //}); + //await d_MajorMapUniversityRepository.Add(models); #endregion diff --git a/New_College.Services/D_PlanMajorDescProServices.cs b/New_College.Services/D_PlanMajorDescProServices.cs index 74227dc..ed1b9ba 100644 --- a/New_College.Services/D_PlanMajorDescProServices.cs +++ b/New_College.Services/D_PlanMajorDescProServices.cs @@ -38,6 +38,7 @@ namespace New_College.Services /// public async Task GetMajorPlanPro(MajorPlanProViewQuery request) { + request.Year = request.Year > (DateTime.Now.Year - 1) ? (DateTime.Now.Year - 1) : request.Year; var majorview = new MajorPlanProView(); Expression> expression = Expressionable.Create() .And(c => c.UId == request.UId) diff --git a/New_College.Services/D_PlanMajorDescServices.cs b/New_College.Services/D_PlanMajorDescServices.cs index c138c40..3590003 100644 --- a/New_College.Services/D_PlanMajorDescServices.cs +++ b/New_College.Services/D_PlanMajorDescServices.cs @@ -169,7 +169,7 @@ namespace New_College.Services int startscore = request.Score - 25; int endscore = request.Score + 15; int qyear = request.Year >= 2023 ? 2023 : request.Year; - var batlist = await _batchlineRepository.Query(c => c.Year == request.Year && c.Type_name == "综合"); + var batlist = await _batchlineRepository.Query(c => c.Year == qyear && c.Type_name == "综合"); request.BatchName = batlist.Where(c => c.Average <= request.Score && c.Batch_name == "普通类一段").Any() ? "普通类一段" : "普通类二段"; Expression> expression = Expressionable.Create() .And(c => c.Years == qyear) diff --git a/New_College.Services/D_UserSettingBaseServices.cs b/New_College.Services/D_UserSettingBaseServices.cs index 0868f9c..5983897 100644 --- a/New_College.Services/D_UserSettingBaseServices.cs +++ b/New_College.Services/D_UserSettingBaseServices.cs @@ -43,31 +43,45 @@ namespace New_College.Services { return false; } - var basesettinginfo = new D_UserSettingBase() + var usersettinglist = await _dal.Query(e => e.CustomerId == request.CustomerId); + if (usersettinglist.Any()) { - CustomerId = request.CustomerId, - CreateTime = DateTime.Now, - IsDelete = false, - OrderSort = 0, - PType = 0, - ScoreCount = customerinfo.FirstOrDefault().IsVIP ? 10 : 3, - SearchCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10, - ShowCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10, - }; + usersettinglist.ForEach(a => + { + a.ScoreCount = 10; + a.SearchCount = 9999; + a.ShowCount = 9999; + }); + await _dal.Update(usersettinglist); + } + else + { + var basesettinginfo = new D_UserSettingBase() + { + CustomerId = request.CustomerId, + CreateTime = DateTime.Now, + IsDelete = false, + OrderSort = 0, + PType = 0, + ScoreCount = customerinfo.FirstOrDefault().IsVIP ? 10 : 3, + SearchCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10, + ShowCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10, + }; - var basesettingtypeinfo = new D_UserSettingBase() - { - CustomerId = request.CustomerId, - CreateTime = DateTime.Now, - IsDelete = false, - OrderSort = 0, - PType = 1, - ScoreCount = customerinfo.FirstOrDefault().IsVIP ? 10 : 3, - SearchCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10, - ShowCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10, - }; - await _dal.Add(basesettinginfo); - await _dal.Add(basesettingtypeinfo); + var basesettingtypeinfo = new D_UserSettingBase() + { + CustomerId = request.CustomerId, + CreateTime = DateTime.Now, + IsDelete = false, + OrderSort = 0, + PType = 1, + ScoreCount = customerinfo.FirstOrDefault().IsVIP ? 10 : 3, + SearchCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10, + ShowCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10, + }; + await _dal.Add(basesettinginfo); + await _dal.Add(basesettingtypeinfo); + } return true; } @@ -88,7 +102,7 @@ namespace New_College.Services var models = userbaselist.FirstOrDefault(); models.ScoreCount = c.IsVIP ? 10 : 3; models.SearchCount = c.IsVIP ? 9999 : 10; - models.ShowCount= c.IsVIP ? 9999 : 10; + models.ShowCount = c.IsVIP ? 9999 : 10; modelslist.Add(models); } });