From e17b3245ce04f5826fb1131f171e3d8f0dd82992 Mon Sep 17 00:00:00 2001
From: tanglong <842690096@qq.com>
Date: Fri, 16 Jan 2026 10:43:21 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BA=AC=E5=B8=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/JingShiTiJiaoController.cs | 13 ++++++
WeChatApplet/Services/Impl/HomeWorkService.cs | 45 ++++++++++++++++++-
.../Services/Impl/JingShiTiJiaoService.cs | 44 +++++++++++++++++-
.../Services/Impl/PatriarchService.cs | 2 +-
.../Interface/IJingShiTiJiaoService.cs | 7 +++
WeChatApplet/appsettings.json | 2 +-
.../Dto/JingShiTiJiao/JingShiResponse.cs | 3 ++
.../JingShiTiJiao/JingShiSchoolClassDto.cs | 42 +++++++++++++++++
.../Dto/JingShiTiJiao/StudentDetailDto.cs | 3 ++
9 files changed, 156 insertions(+), 5 deletions(-)
create mode 100644 YD_WeChatApplet.Commons/Dto/JingShiTiJiao/JingShiSchoolClassDto.cs
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; }