CrazyIter_Bin 2 年之前
父節點
當前提交
6327b8d6a9

+ 531 - 0
TEAMModelOS.SDK/Models/Cosmos/Common/VRARLessonRecord.cs

@@ -0,0 +1,531 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Text.Json;
+
+namespace TEAMModelOS.SDK.Models
+{
+    /// <summary>
+    /// 课堂记录简要信息。
+    /// </summary>
+    public class VRARLessonRecord : CosmosEntity
+    {
+        /// <summary>
+        ///必填 教师醍摩豆id
+        /// </summary>
+        public string tmdid { get; set; }
+        /// <summary>
+        /// 教师醍摩豆id名称
+        /// </summary>
+        public string tmdname { get; set; }
+        /// <summary>
+        /// 教师醍摩豆id名称
+        /// </summary>
+        public string tmdpicture { get; set; }
+        /// <summary>
+        ///必填 课堂名称
+        /// </summary>
+        public string name { get; set; }
+        /// <summary>
+        ///必填 scope==school必填 | string | 学校id
+        /// </summary>
+        public string school { get; set; }
+        /// <summary>
+        ///必填  private/school|
+        /// </summary>
+        public string scope { get; set; }
+        /// <summary>
+        ///必填  视频封面地址
+        /// </summary>
+       // public string poster { get; set; }
+        /// <summary>
+        ///必填 开始时间(时间戳) 1606393763434
+        /// </summary>
+        public long startTime { get; set; }
+        /// <summary>
+        ///必填 上课时长,最后更新
+        /// </summary>
+        public double duration { get; set; }
+        /// <summary>
+        ///选填  t分,科技应用 ,最后更新
+        /// </summary>
+        public int tScore { get; set; }
+        /// <summary>
+        ///选填   p分,教法应用 ,最后更新
+        /// </summary>
+        public int pScore { get; set; }
+        /// <summary>
+        ///选填  t灯,科技应用 0红灯,1 黄灯,2绿灯
+        /// </summary>
+        public int tLevel { get; set; } = -1;
+        /// <summary>
+        ///选填   p灯,教法应用 0红灯,1 黄灯,2绿灯
+        /// </summary>
+        public int pLevel { get; set; } = -1;
+        /// <summary>
+        ///选填  选用IES5的课程id 
+        /// </summary>
+        public string courseId { get; set; }
+        /// <summary>
+        /// 选填   课程名称  是因支持VR/AR那边课例
+        /// </summary>
+        public string courseName { get; set; }
+        /// <summary>
+        ///选填 选用IES5固定名单的id
+        /// </summary>
+        public List<string> groupIds { get; set; } = new List<string>();
+        public List<string> groupNames { get; set; } = new List<string>();
+        /// <summary>
+        ///选填  学生人数 ,最后更新
+        /// </summary>
+        public int mCount { get; set; }
+        /// <summary>
+        ///选填  议课次数,大于1则是优课,苏格拉底获取
+        /// </summary>
+        public int discuss { get; set; }
+        /// <summary>
+        ///选填  科技互动次数, 
+        /// </summary>
+        public int techCount { get; set; }
+        /// <summary>
+        /// 学 不填 段id,由课程或者名单获取 
+        /// </summary>
+        public string periodId { get; set; }
+        /// <summary>
+        /// 选填 学段名称  是因支持VR/AR那边课例
+        /// </summary>
+        public string periodName { get; set; }
+        /// <summary>
+        ///  不填 科目id,由课程id获取
+        /// </summary>
+        public string subjectId { get; set; }
+        /// <summary>
+        /// 选填   科目名称  是因支持VR/AR那边课例
+        /// </summary>
+        public string subjecName { get; set; }
+        /// <summary>
+        /// 不填 年级id,由名单id获取
+        /// </summary>
+        public List<string> grade { get; set; } = new List<string>();
+        public List<string> gradeName { get; set; } = new List<string>();
+        /// <summary>
+        /// 不填  收藏次数,IES5更新 
+        /// </summary>
+        public int favorite { get; set; }
+        /// <summary>
+        /// 不填 点赞数
+        /// </summary>
+        public int like { get; set; }
+        /// <summary>
+        /// 不填 分享转发数
+        /// </summary>
+        public int share { get; set; }
+        /// <summary>
+        /// 不填  ["混合学习","语文教研"]课例类别,tag标签,IES5维护
+        /// </summary>
+        public List<string> category { get; set; } = new List<string>();
+        /// <summary>
+        /// 0 是否包含视频,1包含视频
+        /// </summary>
+        public int hasVideo { get; set; }
+        //public long videoSize { get; set; }
+        /// <summary>
+        /// 
+        /// 科技互动详细次数。[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]
+        /// </summary>
+        public List<int> tech { get; set; } = new List<int>();
+        public int status { get; set; } = 0;
+        /// <summary>
+        /// 专家好课,默认0, 1 是好课
+        /// </summary>
+        public int excellent { get; set; } = 0;
+        /// <summary>
+        /// 出席人数
+        /// </summary>
+        public int attendCount { get; set; } = 0;
+        /// <summary>
+        /// 总人数
+        /// </summary>
+        public int clientCount { get; set; } = 0;
+        /// <summary>
+        ///出席率
+        /// </summary>
+        public double attendRate { get; set; } = 0;
+        /// <summary>
+        /// 小组数
+        /// </summary>
+        public int groupCount { get; set; } = 0;
+        /// <summary>
+        /// 任务总数,作品收集任务数
+        /// </summary>
+        public int collateTaskCount { get; set; } = 0;
+        /// <summary>
+        /// 作品总数
+        /// </summary>
+        public int collateCount { get; set; } = 0;
+        /// <summary>
+        /// 推送总数(页面,资源,讯息,差异化)
+        /// </summary>
+        public int pushCount { get; set; } = 0;
+        /// <summary>
+        /// 总计分
+        /// </summary>
+        public double totalPoint { get; set; } = 0;
+        /// <summary>
+        /// 测验总题数
+        /// </summary>
+        public int examQuizCount { get; set; } = 0;
+        /// <summary>
+        /// 互动题数
+        /// </summary>
+        public int interactionCount { get; set; } = 0;
+        /// <summary>
+        /// 测验得分率
+        /// </summary>
+        public double examPointRate { get; set; } = 0;
+        /// <summary>
+        /// 学生互动总数
+        /// </summary>
+        public int clientInteractionCount { get; set; } = 0;
+        /// <summary>
+        /// 学生互动率
+        /// </summary>
+        public double clientInteractionAverge { get; set; } = 0;
+
+        public int examCount { get; set; }
+        /// <summary>
+        /// 总互动分
+        /// </summary>
+        public double totalInteractPoint { get; set; } = 0;
+        /// <summary>
+        /// 过期时间,-1永不过期, 1577808000000 2020-01-01
+        /// </summary>
+        public long expire { get; set; } = -1;
+        /// <summary>
+        /// 先使用这种模式,["all","student"], 暂不 开放 school【开放给部分学校查看】,teacher【开放给部分教师查看】   ["all","school","teacher","student"]
+        /// </summary>
+        public List<string> show { get; set; } = new List<string>();
+        /// <summary>
+        /// 暂不 开放 school【开放给部分学校查看】学校编码
+        /// </summary>
+        public List<string> showSchs { get; set; } = new List<string>();
+        /// <summary>
+        /// 暂不 开放 teacher【开放给部分教师查看】醍摩豆id 
+        /// </summary>
+        public List<string> showTchs { get; set; } = new List<string>();
+        /// <summary>
+        /// 设置强制保留的 =1 ,不会被自动清理的。但是可以被手动清理。
+        /// </summary>
+        public int save { get; set; } = -1;
+        /// <summary>
+        /// 默认未上传
+        /// </summary>
+        public int upload { get; set; }
+
+        public LearningCategory learningCategory { get; set; } = new LearningCategory();
+        public int hitaClientCmpCount { get; set; }
+        /// <summary>
+        /// 课例来源 0 本公司  1 第三方公司    是因支持VR/AR那边课例
+        /// </summary>
+        public int source { get; set; } = 0;
+    }
+    public class TimeLineData {
+      public   List<TimeLineEvent> events { get; set; } = new List<TimeLineEvent>();
+    }
+    public class TimeLineEvent
+    {
+        public double Time{ get; set; }
+        public int EventId { get; set; }
+        public string WrkCmpSrcType { get; set; }
+        public int  WrkCmpCount { get; set; }
+        public int WrkType { get; set; }
+    }
+    public class LearningCategory {
+        /// <summary>
+        /// //合作學習
+        /// </summary>
+        public int cooperation { get; set; } = 0;
+        /// <summary>
+        /// 互動學習
+        /// </summary>
+        public int interaction { get; set; } = 0;
+        /// <summary>
+        /// 任務學習
+        /// </summary>
+        public int task { get; set; } = 0;
+        /// <summary>
+        /// 測驗學習
+        /// </summary>
+        public int exam { get; set; } = 0;
+        /// <summary>
+        /// 差異化學習
+        /// </summary>
+        public int diffential { get; set; } = 0;
+    }
+    public class LessonTC
+    {
+        public string t { get; set; }
+        public double c { get; set; }
+    }
+    
+    public class LessonUpdate
+    {
+        public string grant_type { get; set; }
+        public object data { get; set; }
+    }
+    /// <summary>
+    /// 课堂记录更新前后差值
+    /// </summary>
+    public class LessonDis
+    {
+        /// <summary>
+        /// 开课数量差
+        /// </summary>
+        public int record { get; set; } = 0;
+
+        /// <summary>
+        /// T分数量差
+        /// </summary>
+        public int disTCount { get; set; } = 0;
+        /// <summary>
+        /// P分数量差
+        /// </summary>
+        public int disPCount { get; set; } = 0;
+        /// <summary>
+        /// 双绿灯数量差
+        /// </summary>
+        public int disDCount { get; set; } = 0;
+    }
+    /// <summary>
+    /// /{_lessonId}/IES/TimeLine.json 课堂记录基础信息
+    /// </summary>
+    public class LessonBase{
+        /// <summary>
+        /// 
+        /// </summary>
+        public Summary summary { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public Report report { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<LessonTC> teacheract { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<LessonStudent> student { get; set; }
+    }
+    public class Summary
+    {
+        /// <summary>
+        /// 测试新版名单222-罗老师 小课堂
+        /// </summary>
+        public string activityName { get; set; }
+        /// <summary>
+        /// 罗老师
+        /// </summary>
+        public string hostName { get; set; }
+        /// <summary>
+        /// 全客观题
+        /// </summary>
+        public string meterialName { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string date { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string startTime { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string endTime { get; set; }
+        /// <summary>
+        /// 出席人数
+        /// </summary>
+        public int attendCount { get; set; } = 0;
+        /// <summary>
+        /// 总人数
+        /// </summary>
+        public int clientCount { get; set; } = 0;
+        /// <summary>
+        ///出席率
+        /// </summary>
+        public double attendRate { get; set; } = 0;
+        /// <summary>
+        /// 小组数
+        /// </summary>
+        public int groupCount { get; set; } = 0;
+        /// <summary>
+        /// 任务总数,作品收集任务数
+        /// </summary>
+        public int collateTaskCount { get; set; } = 0;
+
+        public double totalInteractPoint { get; set; } = 0;
+        /// <summary>
+        /// 作品总数
+        /// </summary>
+        public int collateCount { get; set; } = 0;
+        /// <summary>
+        /// 推送总数(页面,资源,讯息,差异化)
+        /// </summary>
+        public int pushCount { get; set; } = 0;
+        /// <summary>
+        /// 总计分
+        /// </summary>
+        public double totalPoint { get; set; } = 0;
+        /// <summary>
+        /// 测验总题数
+        /// </summary>
+        public int examQuizCount { get; set; } = 0;
+        /// <summary>
+        /// 互动题数
+        /// </summary>
+        public int interactionCount { get; set; } = 0;
+        /// <summary>
+        /// 测验得分率
+        /// </summary>
+        public double examPointRate { get; set; } = 0;
+        /// <summary>
+        /// 学生互动总数
+        /// </summary>
+        public int clientInteractionCount { get; set; } = 0;
+        /// <summary>
+        /// 学生互动率
+        /// </summary>
+        public double clientInteractionAverge { get; set; } = 0;
+        /// <summary>
+        /// 测验次数
+        /// </summary>
+        public int examCount { get; set; }
+        public LearningCategory learningCategory { get; set; }
+    }
+
+    public class QuizSummaryList
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string quizID { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string pageOrderStr { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string score { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string correctAnswer { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string correctRateStr { get; set; }
+    }
+
+    public class ClientSummaryList
+    {
+        public string groupName { get; set; }//組名
+        public double groupScore { get; set; }//組記分
+
+        public int groupTaskCompleteCount { get; set; }//組任務數完成數
+        //public int attendState { get; set; } //出席狀態
+
+        public double score { get; set; }//個人記分
+        public int taskCompleteCount { get; set; }//任務完成數
+
+        public List<double> examScoreList { get; set; } = new List<double>();//課堂測驗分數Array
+
+        public double tnteractScore { get; set; }//互動總得分
+
+       // public List<string> answerLis { get; set; } = new List<string>(); //逐題回答內容Array
+
+        public int seatID { get; set; } //座位號
+
+        public string name { get; set; }//學生姓名
+    }
+
+    public class Report
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<QuizSummaryList> quizSummaryList { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<ClientSummaryList> clientSummaryList { get; set; }
+        
+    }
+
+    public class LessonStudent
+    {
+        public string school { get; set; }//学校编码
+        /// <summary>
+        /// 学生id
+        /// </summary>
+        public string id { get; set; }
+        /// <summary>
+        /// 座号
+        /// </summary>
+        public int seatID { get; set; }
+        /// <summary>
+        /// 李镇希
+        /// </summary>
+        public string name { get; set; }
+        /// <summary>
+        /// 学生类型
+        /// </summary>
+        public int type { get; set; }
+        /// <summary>
+        /// 头像
+        /// </summary>
+        public string picture { get; set; }
+    }
+
+    //public class LessonActivityInfo
+    //{
+    //    /// <summary>
+    //    /// 时间点
+    //    /// </summary>
+    //    public List<LessonTC> count { get; set; } = new List<LessonTC>();
+    //    /// <summary>
+    //    /// 事件类型
+    //    /// </summary>
+    //    public string @event { get; set; }
+    //    /// <summary>
+    //    /// 页面id
+    //    /// </summary>
+    //    public string pgId { get; set; }
+    //}
+    //public class LessonStudent
+    //{
+    //    public string id { get; set; }
+    //    public string name { get; set; }
+    //    public string type { get; set; }
+    //    public string code { get; set; }
+    //    public string picture { get; set; }
+    //    public string irs { get; set; }
+    //}
+
+    //public class LessonTimeLine
+    //{
+    //    /// <summary>
+    //    /// 时间点
+    //    /// </summary>
+    //    public double time { get; set; }
+    //    /// <summary>
+    //    /// 事件类型
+    //    /// </summary>
+    //    public string @event { get; set; }
+    //    /// <summary>
+    //    /// 页面id
+    //    /// </summary>
+    //    public string pgId { get; set; }
+    //}
+}

+ 1 - 1
TEAMModelOS/Controllers/Client/HiScanController.cs

@@ -35,7 +35,7 @@ namespace TEAMModelOS.Controllers.Core
 {
 {
     [ProducesResponseType(StatusCodes.Status200OK)]
     [ProducesResponseType(StatusCodes.Status200OK)]
     [ProducesResponseType(StatusCodes.Status400BadRequest)]
     [ProducesResponseType(StatusCodes.Status400BadRequest)]
-    //[Authorize(Roles = "HiTool")]
+    [Authorize(Roles = "HiTool")]
     [Route("hiscan")]
     [Route("hiscan")]
     [ApiController]
     [ApiController]
     public class HiScanController : ControllerBase
     public class HiScanController : ControllerBase

File diff suppressed because it is too large
+ 445 - 0
TEAMModelOS/Controllers/OpenApi/Business/BizCustomizeController.cs


+ 1 - 10
TEAMModelOS/Controllers/OpenApi/Business/BizOverallEducationController.cs

@@ -11,25 +11,17 @@ using TEAMModelOS.SDK.Context.Constant;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Text.Json;
 using System.Text.Json;
 using TEAMModelOS.SDK.Extension;
 using TEAMModelOS.SDK.Extension;
-using Top.Api;
-using TEAMModelOS.SDK.Models.Cosmos.Student;
-using DocumentFormat.OpenXml.Math;
-using DocumentFormat.OpenXml.Wordprocessing;
 using TEAMModelOS.Filter;
 using TEAMModelOS.Filter;
 using TEAMModelOS.SDK.Models;
 using TEAMModelOS.SDK.Models;
 using Azure.Cosmos;
 using Azure.Cosmos;
 using TEAMModelOS.SDK.Models.Cosmos.OpenEntity;
 using TEAMModelOS.SDK.Models.Cosmos.OpenEntity;
 using System;
 using System;
-using Newtonsoft.Json.Linq;
 using System.Text;
 using System.Text;
-using DocumentFormat.OpenXml.Spreadsheet;
-using OpenXmlPowerTools;
-using Microsoft.VisualBasic;
 
 
 namespace TEAMModelOS.Controllers
 namespace TEAMModelOS.Controllers
 {
 {
     /// <summary>
     /// <summary>
-    /// 企业定制接口
+    /// 五育并举接口
     /// </summary>
     /// </summary>
     [Route("business")]
     [Route("business")]
     [ApiController]
     [ApiController]
@@ -90,7 +82,6 @@ namespace TEAMModelOS.Controllers
         }
         }
 
 
         #region  杉达公司
         #region  杉达公司
-
         /// <summary>
         /// <summary>
         /// 开课或者上传课例信息  是因支持VR/AR的公司(杉达)
         /// 开课或者上传课例信息  是因支持VR/AR的公司(杉达)
         /// </summary>
         /// </summary>

+ 4 - 2
TEAMModelOS/Controllers/Third/Sc/ScDataPushController.cs

@@ -982,7 +982,7 @@ namespace TEAMModelOS.Controllers
                     }
                     }
                     if (!pushAll)
                     if (!pushAll)
                     {
                     {
-                        if (pushData.Any()) {
+                        if (pushData.Any() && !pushDatas.ContainsKey(t.tmdid)) {
                             pushDatas.Add(t.tmdid, pushData);
                             pushDatas.Add(t.tmdid, pushData);
                         }
                         }
                     }
                     }
@@ -1007,7 +1007,9 @@ namespace TEAMModelOS.Controllers
                     }
                     }
                     if (pushData.Any())
                     if (pushData.Any())
                     {
                     {
-                        pushDatas.Add(t.tmdid,pushData);
+                        if (!pushDatas.ContainsKey(t.tmdid)) {
+                            pushDatas.Add(t.tmdid, pushData);
+                        }
                         failse.AddRange(fails);
                         failse.AddRange(fails);
                     }
                     }
                 }
                 }

+ 8 - 8
TEAMModelOS/appsettings.Development.json

@@ -21,22 +21,22 @@
   },
   },
   "Azure": {
   "Azure": {
     "Storage": {
     "Storage": {
-      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodeltest;AccountKey=O2W2vadCqexDxWO+px+QK7y1sHwsYj8f/WwKLdOdG5RwHgW/Dupz9dDUb4c1gi6ojzQaRpFUeAAmOu4N9E+37A==;EndpointSuffix=core.chinacloudapi.cn"
+      "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodelos;AccountKey=Dl04mfZ9hE9cdPVO1UtqTUQYN/kz/dD/p1nGvSq4tUu/4WhiKcNRVdY9tbe8620nPXo/RaXxs+1F9sVrWRo0bg==;EndpointSuffix=core.chinacloudapi.cn"
     },
     },
     "Cosmos": {
     "Cosmos": {
-      "ConnectionString": "AccountEndpoint=https://cdhabookdep-free.documents.azure.cn:443/;AccountKey=JTUVk92Gjsx17L0xqxn0X4wX2thDPMKiw4daeTyV1HzPb6JmBeHdtFY1MF1jdctW1ofgzqkDMFOtcqS46by31A==;"
+      "ConnectionString": "AccountEndpoint=https://teammodelos.documents.azure.cn:443/;AccountKey=clF73GwPECfP1lKZTCvs8gLMMyCZig1HODFbhDUsarsAURO7TcOjVz6ZFfPqr1HzYrfjCXpMuVD5TlEG5bFGGg==;"
     },
     },
     "Redis": {
     "Redis": {
-      "ConnectionString": "52.130.252.100:6379,password=habook,ssl=false,abortConnect=False,writeBuffer=10240"
+      "ConnectionString": "CoreRedisCN.redis.cache.chinacloudapi.cn:6380,password=LyJWP1ORJdv+poXWofAF97lhCEQPg1wXWqvtzXGXQuE=,ssl=True,abortConnect=False"
     },
     },
     "ServiceBus": {
     "ServiceBus": {
-      "ConnectionString": "Endpoint=sb://teammodelos.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=Sy4h4EQ8zP+7w/lOLi1X3tGord/7ShFHimHs1vC50Dc=",
-      "ActiveTask": "dep-active-task",
-      "ItemCondQueue": "dep-itemcond",
-      "GenPdfQueue": "dep-genpdf"
+      "ConnectionString": "Endpoint=sb://coreiotservicebuscnpro.servicebus.chinacloudapi.cn/;SharedAccessKeyName=TEAMModelOS;SharedAccessKey=llRPBMDJG9w1Nnifj+pGhV0g4H2REcq0PjvX2qqpcOg=",
+      "ActiveTask": "active-task",
+      "ItemCondQueue": "itemcond",
+      "GenPdfQueue": "genpdf"
     },
     },
     "SignalR": {
     "SignalR": {
-      "ConnectionString": "Endpoint=https://channel.service.signalr.net;AccessKey=KrblW06tuA4a/GyqRPDU0ynFFmAWxbAvyJihHclSXbQ=;Version=1.0;"
+      "ConnectionString": "Endpoint=https://channel.signalr.azure.cn;AccessKey=AtcB7JYFNUbUXb1rGxa3PVksQ2X5YSv3JOHZR9J88tw=;Version=1.0;"
     }
     }
   },
   },
   "HaBookAuth": {
   "HaBookAuth": {