YD_SmartSports.Api/VOL.Ai/Services/JingShiTiJiaoService.cs
2026-01-08 18:33:05 +08:00

138 lines
4.5 KiB
C#

using Newtonsoft.Json;
using VOL.Ai.IServices;
using VOL.Core.Configuration;
using VOL.Core.Utilities;
using VOL.Model.JingShiTiJiao;
namespace VOL.Ai.Services
{
/// <summary>
/// 京师体教接口服务
/// </summary>
public class JingShiTiJiaoService : IJingShiTiJiaoService
{
/// <summary>
/// 根据教师获取教师年级班级信息
/// </summary>
/// <returns></returns>
public async Task<TeacherClassData> GetClassListByTeacher(string teacherNo)
{
var res = new TeacherClassData();
long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
string nonce = SaTokenSignHelper.RandomString(20);
// 1. 签名参数
var paramMap = new Dictionary<string, object>
{
{ "channel", AppSetting.JingShiTiJiao.Channel },
{ "teacherNo", teacherNo },
{ "timestamp", timestamp },
{ "nonce", nonce }
};
// 4. 构建签名 QueryString
string queryStr = SaTokenSignHelper.BuildQueryString(paramMap, AppSetting.JingShiTiJiao.SecretKey);
// 5. 拼接最终 URL
string url = $"{AppSetting.JingShiTiJiao.BaseUrl}/api/open/class/by/teacher?{queryStr}";
string json = await HttpManager.HttpGetAsync(url);
if (string.IsNullOrWhiteSpace(json))
return res;
var data = JsonConvert.DeserializeObject<JingShiResponse<TeacherClassData>>(json);
if (data != null && data.Code == 0)
{
return data.Data;
}
return res;
}
/// <summary>
/// 根据班级编号获取学生列表
/// </summary>
/// <param name="classNo"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<List<StudentDto>> GetStuListByClass(string classNo)
{
var res = new List<StudentDto>();
long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
string nonce = SaTokenSignHelper.RandomString(20);
// 1. 签名参数
var paramMap = new Dictionary<string, object>
{
{ "channel", AppSetting.JingShiTiJiao.Channel },
{ "classNo", classNo },
{ "timestamp", timestamp },
{ "nonce", nonce }
};
// 4. 构建签名 QueryString
string queryStr = SaTokenSignHelper.BuildQueryString(paramMap, AppSetting.JingShiTiJiao.SecretKey);
// 5. 拼接最终 URL
string url = $"{AppSetting.JingShiTiJiao.BaseUrl}/api/open/stu/by/class?{queryStr}";
string json = await HttpManager.HttpGetAsync(url);
if (string.IsNullOrWhiteSpace(json))
return res;
var data = JsonConvert.DeserializeObject<JingShiResponse<List<StudentDto>>>(json);
if (data != null && data.Code == 0)
{
return data.Data;
}
return res;
}
/// <summary>
/// 根据学生编号获取学生详情
/// </summary>
/// <param name="stuNo"></param>
/// <returns></returns>
public async Task<StudentDetailDto> GetStudentInfo(string stuNo)
{
var res = new StudentDetailDto();
long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
string nonce = SaTokenSignHelper.RandomString(20);
// 1. 签名参数
var paramMap = new Dictionary<string, object>
{
{ "channel", AppSetting.JingShiTiJiao.Channel },
{ "stuNo", stuNo },
{ "timestamp", timestamp },
{ "nonce", nonce }
};
// 4. 构建签名 QueryString
string queryStr = SaTokenSignHelper.BuildQueryString(paramMap, AppSetting.JingShiTiJiao.SecretKey);
// 5. 拼接最终 URL
string url = $"{AppSetting.JingShiTiJiao.BaseUrl}/api/open/stu/info?{queryStr}";
string json = await HttpManager.HttpGetAsync(url);
if (string.IsNullOrWhiteSpace(json))
return res;
var data = JsonConvert.DeserializeObject<JingShiResponse<StudentDetailDto>>(json);
if (data != null && data.Code == 0)
{
return data.Data;
}
return res;
}
}
}