This commit is contained in:
tanglong 2026-01-16 10:43:21 +08:00
parent c5840c841e
commit e17b3245ce
9 changed files with 156 additions and 5 deletions

View File

@ -61,5 +61,18 @@ namespace YD_WeChatApplet.Api.Controllers
var res = await _jingShiTiJiaoService.GetStudentInfo(stuNo);
return res;
}
/// <summary>
/// 根据学校编码获取年级/班级接口
/// </summary>
/// <param name="schoolNo"></param>
/// <returns></returns>
[HttpGet("GetClassBySchool")]
public async Task<JingShiSchoolClassDto> GetClassBySchool(string schoolNo)
{
var res = await _jingShiTiJiaoService.GetClassBySchoolAsync(schoolNo);
return res;
}
}
}

View File

@ -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<HomeWorkService> _logger;
private readonly IJingShiTiJiaoService _jingShiTiJiaoService;
public HomeWorkService(SmartSportsContext sportsContext, UserContext userContext, IMapper mapper)
public HomeWorkService(SmartSportsContext sportsContext, UserContext userContext, IMapper mapper, ILogger<HomeWorkService> logger, IJingShiTiJiaoService jingShiTiJiaoService)
{
_sportsContext = sportsContext;
_userContext = userContext;
_mapper = mapper;
_logger = logger;
_jingShiTiJiaoService = jingShiTiJiaoService;
}
/// <summary>
@ -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<SportsDataPushDto>
{
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, "作业数据上传失败");
}
});
}
/// <summary>

View File

@ -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;
}
/// <summary>
/// 根据学校编码获取年级/班级接口
/// </summary>
/// <param name="schoolNo"></param>
/// <returns></returns>
public async Task<JingShiSchoolClassDto> GetClassBySchoolAsync(string schoolNo)
{
var res = new JingShiSchoolClassDto();
long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
string nonce = SaTokenSignHelper.RandomString();
var paramMap = new Dictionary<string, object>
{
{ "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<JingShiResponse<JingShiSchoolClassDto>>(json);
if (data != null && data.Code == 0)
{
return data.Data;
}
return res;
}
}
}

View File

@ -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)
}
};

View File

@ -33,5 +33,12 @@ namespace YD_WeChatApplet.Api.Services.Interface
/// <param name="list"></param>
/// <returns></returns>
Task<bool> PushSportsData(List<SportsDataPushDto> list);
/// <summary>
/// 根据学校编码获取年级/班级接口
/// </summary>
/// <param name="schoolNo"></param>
/// <returns></returns>
Task<JingShiSchoolClassDto> GetClassBySchoolAsync(string schoolNo);
}
}

View File

@ -68,7 +68,7 @@
},
"JingShiTiJiao": {
"Channel": "sk-yuedong",
"Channel": "1766369454904",
"SecretKey": "JSTJ-kGfs6J7bkgdxr9mz",
"BaseUrl": "https://api-test.aitibao.com",
"SchoolCode": "202512240056",

View File

@ -30,6 +30,9 @@ namespace YD_WeChatApplet.Commons.Dto.JingShiTiJiao
/// </summary>
public class TeacherClassData
{
[JsonProperty("schoolNo")]
public string SchoolNo { get; set; }
[JsonProperty("school")]
public string School { get; set; }

View File

@ -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<JingShiGradeDto> Grades { get; set; }
}
public class JingShiGradeDto
{
[JsonProperty("gradeNo")]
public string GradeNo { get; set; }
[JsonProperty("gradeName")]
public string GradeName { get; set; }
[JsonProperty("claArray")]
public List<JingShiClassDto> Classes { get; set; }
}
public class JingShiClassDto
{
[JsonProperty("classNo")]
public string ClassNo { get; set; }
[JsonProperty("className")]
public string ClassName { get; set; }
}
}

View File

@ -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; }