京师
This commit is contained in:
parent
c5840c841e
commit
e17b3245ce
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@
|
||||
},
|
||||
|
||||
"JingShiTiJiao": {
|
||||
"Channel": "sk-yuedong",
|
||||
"Channel": "1766369454904",
|
||||
"SecretKey": "JSTJ-kGfs6J7bkgdxr9mz",
|
||||
"BaseUrl": "https://api-test.aitibao.com",
|
||||
"SchoolCode": "202512240056",
|
||||
|
||||
@ -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; }
|
||||
|
||||
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user