diff --git a/WeChatApplet/Controllers/JingShiTiJiaoController.cs b/WeChatApplet/Controllers/JingShiTiJiaoController.cs index 6974ba5..aae0135 100644 --- a/WeChatApplet/Controllers/JingShiTiJiaoController.cs +++ b/WeChatApplet/Controllers/JingShiTiJiaoController.cs @@ -61,5 +61,18 @@ namespace YD_WeChatApplet.Api.Controllers var res = await _jingShiTiJiaoService.GetStudentInfo(stuNo); return res; } + + /// + /// 根据学校编码获取年级/班级接口 + /// + /// + /// + [HttpGet("GetClassBySchool")] + public async Task GetClassBySchool(string schoolNo) + { + var res = await _jingShiTiJiaoService.GetClassBySchoolAsync(schoolNo); + return res; + } + } } diff --git a/WeChatApplet/Services/Impl/HomeWorkService.cs b/WeChatApplet/Services/Impl/HomeWorkService.cs index 4e2edf5..1b42e9f 100644 --- a/WeChatApplet/Services/Impl/HomeWorkService.cs +++ b/WeChatApplet/Services/Impl/HomeWorkService.cs @@ -1,11 +1,14 @@ using AutoMapper; using Microsoft.EntityFrameworkCore; +using Newtonsoft.Json; using System.Collections.Generic; using System.Globalization; +using YD_WeChatApplet.Api.Services.Interface; using YD_WeChatApplet.Api.SmartSportsEntitys; using YD_WeChatApplet.Api.Utilities; using YD_WeChatApplet.Commons.Dto; using YD_WeChatApplet.Commons.Dto.HomeWork; +using YD_WeChatApplet.Commons.Dto.JingShiTiJiao; using YD_WeChatApplet.Commons.Dto.Patriarch; using YD_WeChatApplet.Commons.Dto.School; using YD_WeChatApplet.Commons.Enum; @@ -19,12 +22,16 @@ namespace YD_WeChatApplet.Api.Services.Impl public SmartSportsContext _sportsContext; public UserContext _userContext; private readonly IMapper _mapper; + private readonly ILogger _logger; + private readonly IJingShiTiJiaoService _jingShiTiJiaoService; - public HomeWorkService(SmartSportsContext sportsContext, UserContext userContext, IMapper mapper) + public HomeWorkService(SmartSportsContext sportsContext, UserContext userContext, IMapper mapper, ILogger logger, IJingShiTiJiaoService jingShiTiJiaoService) { _sportsContext = sportsContext; _userContext = userContext; _mapper = mapper; + _logger = logger; + _jingShiTiJiaoService = jingShiTiJiaoService; } /// @@ -98,6 +105,42 @@ namespace YD_WeChatApplet.Api.Services.Impl await _sportsContext.AddRangeAsync(homeWorkEntities); await _sportsContext.SaveChangesAsync(); + + + _ = Task.Run(async () => + { + try + { + var list = new List + { + new SportsDataPushDto + { + StudentNo =UserLoginContext.Current.UserNo, + SportsItem = AppSettings.JingShiTiJiao.SportsItem, + SportsDate = DateTime.Parse(paramDto.StartTime).ToString("yyyy-MM-dd"), + SportsService = AppSettings.JingShiTiJiao.Channel, + SportsScene = "addhomework", + SportsDetail = JsonConvert.SerializeObject(homeWorkEntities) + } + }; + + var res = await _jingShiTiJiaoService.PushSportsData(list); + + if (res) + { + _logger.LogInformation($"数据同步成功,{JsonConvert.SerializeObject(list)}"); + } + else + { + _logger.LogError($"数据同步失败,{JsonConvert.SerializeObject(list)}"); + } + } + catch (Exception ex) + { + // ❗ 只记录日志,绝不抛出 + _logger.LogError(ex, "作业数据上传失败"); + } + }); } /// diff --git a/WeChatApplet/Services/Impl/JingShiTiJiaoService.cs b/WeChatApplet/Services/Impl/JingShiTiJiaoService.cs index 7b96b79..911a39a 100644 --- a/WeChatApplet/Services/Impl/JingShiTiJiaoService.cs +++ b/WeChatApplet/Services/Impl/JingShiTiJiaoService.cs @@ -56,7 +56,7 @@ namespace YD_WeChatApplet.Api.Services.Impl UserName = data.Data.TeacherName, Role_Id = 2, PhoneNo = data.Data.TeacherNo, - SchoolCode = AppSettings.JingShiTiJiao.SchoolCode, + SchoolCode = data.Data.SchoolNo, UserNo = data.Data.TeacherNo }); @@ -150,7 +150,7 @@ namespace YD_WeChatApplet.Api.Services.Impl UserName = data.Data.StudentName, Role_Id = 3, PhoneNo = data.Data.TeacherNo, - SchoolCode = AppSettings.JingShiTiJiao.SchoolCode, + SchoolCode = data.Data.SchoolNo, UserNo = data.Data.StudentNo }); @@ -201,5 +201,45 @@ namespace YD_WeChatApplet.Api.Services.Impl return res != null && res.Code == 0; } + + /// + /// 根据学校编码获取年级/班级接口 + /// + /// + /// + public async Task GetClassBySchoolAsync(string schoolNo) + { + var res = new JingShiSchoolClassDto(); + + long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + string nonce = SaTokenSignHelper.RandomString(); + + var paramMap = new Dictionary + { + { "channel", AppSettings.JingShiTiJiao.Channel }, + { "schoolNo", schoolNo }, + { "timestamp", timestamp }, + { "nonce", nonce } + }; + + // 4. 构建签名 QueryString + string queryStr = SaTokenSignHelper.BuildQueryString(paramMap, AppSettings.JingShiTiJiao.SecretKey); + + // 5. 拼接最终 URL + string url = $"{AppSettings.JingShiTiJiao.BaseUrl}/api/open/class/by/school?{queryStr}"; + + string json = await HttpManager.HttpGetAsync(url); + + if (string.IsNullOrWhiteSpace(json)) + return res; + + var data = JsonConvert.DeserializeObject>(json); + if (data != null && data.Code == 0) + { + return data.Data; + } + + return res; + } } } diff --git a/WeChatApplet/Services/Impl/PatriarchService.cs b/WeChatApplet/Services/Impl/PatriarchService.cs index 69a2630..bc8d511 100644 --- a/WeChatApplet/Services/Impl/PatriarchService.cs +++ b/WeChatApplet/Services/Impl/PatriarchService.cs @@ -102,7 +102,7 @@ namespace YD_WeChatApplet.Api.Services.Impl SportsDate = entity.CreateTime.ToString("yyyy-MM-dd"), SportsService = AppSettings.JingShiTiJiao.Channel, SportsScene = "homework", - SportsDetail = JsonConvert.SerializeObject(dto) + SportsDetail = JsonConvert.SerializeObject(entity) } }; diff --git a/WeChatApplet/Services/Interface/IJingShiTiJiaoService.cs b/WeChatApplet/Services/Interface/IJingShiTiJiaoService.cs index 1fd9cac..1531587 100644 --- a/WeChatApplet/Services/Interface/IJingShiTiJiaoService.cs +++ b/WeChatApplet/Services/Interface/IJingShiTiJiaoService.cs @@ -33,5 +33,12 @@ namespace YD_WeChatApplet.Api.Services.Interface /// /// Task PushSportsData(List list); + + /// + /// 根据学校编码获取年级/班级接口 + /// + /// + /// + Task GetClassBySchoolAsync(string schoolNo); } } diff --git a/WeChatApplet/appsettings.json b/WeChatApplet/appsettings.json index f037599..b4604a0 100644 --- a/WeChatApplet/appsettings.json +++ b/WeChatApplet/appsettings.json @@ -68,7 +68,7 @@ }, "JingShiTiJiao": { - "Channel": "sk-yuedong", + "Channel": "1766369454904", "SecretKey": "JSTJ-kGfs6J7bkgdxr9mz", "BaseUrl": "https://api-test.aitibao.com", "SchoolCode": "202512240056", diff --git a/YD_WeChatApplet.Commons/Dto/JingShiTiJiao/JingShiResponse.cs b/YD_WeChatApplet.Commons/Dto/JingShiTiJiao/JingShiResponse.cs index 4584866..a245d0d 100644 --- a/YD_WeChatApplet.Commons/Dto/JingShiTiJiao/JingShiResponse.cs +++ b/YD_WeChatApplet.Commons/Dto/JingShiTiJiao/JingShiResponse.cs @@ -30,6 +30,9 @@ namespace YD_WeChatApplet.Commons.Dto.JingShiTiJiao /// public class TeacherClassData { + [JsonProperty("schoolNo")] + public string SchoolNo { get; set; } + [JsonProperty("school")] public string School { get; set; } diff --git a/YD_WeChatApplet.Commons/Dto/JingShiTiJiao/JingShiSchoolClassDto.cs b/YD_WeChatApplet.Commons/Dto/JingShiTiJiao/JingShiSchoolClassDto.cs new file mode 100644 index 0000000..89e7d42 --- /dev/null +++ b/YD_WeChatApplet.Commons/Dto/JingShiTiJiao/JingShiSchoolClassDto.cs @@ -0,0 +1,42 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace YD_WeChatApplet.Commons.Dto.JingShiTiJiao +{ + public class JingShiSchoolClassDto + { + [JsonProperty("schoolNo")] + public string SchoolNo { get; set; } + + [JsonProperty("schoolName")] + public string SchoolName { get; set; } + + [JsonProperty("array")] + public List Grades { get; set; } + } + + public class JingShiGradeDto + { + [JsonProperty("gradeNo")] + public string GradeNo { get; set; } + + [JsonProperty("gradeName")] + public string GradeName { get; set; } + + [JsonProperty("claArray")] + public List Classes { get; set; } + } + + public class JingShiClassDto + { + [JsonProperty("classNo")] + public string ClassNo { get; set; } + + [JsonProperty("className")] + public string ClassName { get; set; } + } +} diff --git a/YD_WeChatApplet.Commons/Dto/JingShiTiJiao/StudentDetailDto.cs b/YD_WeChatApplet.Commons/Dto/JingShiTiJiao/StudentDetailDto.cs index 5fd58fe..fcb9b2d 100644 --- a/YD_WeChatApplet.Commons/Dto/JingShiTiJiao/StudentDetailDto.cs +++ b/YD_WeChatApplet.Commons/Dto/JingShiTiJiao/StudentDetailDto.cs @@ -18,6 +18,9 @@ namespace YD_WeChatApplet.Commons.Dto.JingShiTiJiao [JsonProperty("stuName")] public string StudentName { get; set; } + [JsonProperty("schoolNo")] + public string SchoolNo { get; set; } + [JsonProperty("school")] public string School { get; set; }