Sfoglia il codice sorgente

Merge branch 'develop' of http://52.130.252.100:10000/TEAMMODEL/TEAMModelOS into develop

zhouj1203@hotmail.com 1 anno fa
parent
commit
d191c7851a

+ 3 - 3
TEAMModelBI/TEAMModelBI.csproj

@@ -65,9 +65,9 @@
 		<SpaRoot>ClientApp\</SpaRoot>
 		<SpaRoot>ClientApp\</SpaRoot>
 		<DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
 		<DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
 		<UserSecretsId>078b5d89-7d90-4f6a-88fc-7d96025990a8</UserSecretsId>
 		<UserSecretsId>078b5d89-7d90-4f6a-88fc-7d96025990a8</UserSecretsId>
-		<Version>5.2312.6</Version>
-		<AssemblyVersion>5.2312.6.1</AssemblyVersion>
-		<FileVersion>5.2312.6.1</FileVersion>
+		<Version>5.2312.13</Version>
+		<AssemblyVersion>5.2312.13.1</AssemblyVersion>
+		<FileVersion>5.2312.13.1</FileVersion>
 		<Description>TEAMModelBI(BI)</Description>
 		<Description>TEAMModelBI(BI)</Description>
 		<PackageReleaseNotes>BI版本说明版本切换标记2022000908</PackageReleaseNotes>
 		<PackageReleaseNotes>BI版本说明版本切换标记2022000908</PackageReleaseNotes>
 		<PackageId>TEAMModelBI</PackageId>
 		<PackageId>TEAMModelBI</PackageId>

+ 3 - 3
TEAMModelOS.FunctionV4/TEAMModelOS.FunctionV4.csproj

@@ -5,9 +5,9 @@
 		<OutputType>Exe</OutputType>
 		<OutputType>Exe</OutputType>
 		<_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
 		<_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
 		<SignAssembly>true</SignAssembly>
 		<SignAssembly>true</SignAssembly>
-		<Version>5.2312.6</Version>
-		<AssemblyVersion>5.2312.6.1</AssemblyVersion>
-		<FileVersion>5.2312.6.1</FileVersion>
+		<Version>5.2312.13</Version>
+		<AssemblyVersion>5.2312.13.1</AssemblyVersion>
+		<FileVersion>5.2312.13.1</FileVersion>
 		<PackageId>TEAMModelOS.FunctionV4</PackageId>
 		<PackageId>TEAMModelOS.FunctionV4</PackageId>
 		<Authors>teammodel</Authors>
 		<Authors>teammodel</Authors>
 		<Company>醍摩豆(成都)信息技术有限公司</Company>
 		<Company>醍摩豆(成都)信息技术有限公司</Company>

+ 23 - 0
TEAMModelOS.SDK/Models/Cosmos/Common/Activity.cs

@@ -297,6 +297,29 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         /// </summary>
         public string sourceName { get; set; }
         public string sourceName { get; set; }
         public string desc { get; set; }
         public string desc { get; set; }
+        /// <summary>
+        /// 一个作品需要被评审多少次,作品被分配给多少个专家评审
+        /// </summary>
+        public int taskInt { get; set; }
+        /// <summary>
+        /// 统分规则 
+        /// only        分配一次的情况直接获取分数=1
+        /// avg         按平均分,>=2
+        /// top         按最高分,>=2
+        /// rmLowAvg    去掉最低分的平均分(分配次数至少3次)>=3
+        /// rmTopAvg    去掉最高分的平均分(分配次数至少3次),>=3
+        /// rmLowTopAvg 去掉最高分和最低分的平均分(分配次数至少4次)>=4
+        /// </summary>
+        public string scoreRule { get; set; }
+
+        /// <summary>
+        /// 作品分配匹配规则(专家的 学段,学科是否与报名教师填写的学段学科匹配) 
+        /// none            不需要匹配,
+        /// period          只匹配学段,
+        /// subject         只匹配学科,不分学段,
+        /// periodAndSubject同时匹配学科和学段
+        /// </summary>
+        public string distribute { get; set; }
     }
     }
     public class RuleConfig {
     public class RuleConfig {
         public string id { get; set; }
         public string id { get; set; }

+ 4 - 4
TEAMModelOS.SDK/Models/Service/Common/ActivityService.cs

@@ -61,13 +61,13 @@ namespace TEAMModelOS.SDK
             List<TeacherActivityDto> activities = new List<TeacherActivityDto>();
             List<TeacherActivityDto> activities = new List<TeacherActivityDto>();
             HashSet<string> inviteActivityIds = new HashSet<string>();
             HashSet<string> inviteActivityIds = new HashSet<string>();
             string yearSql = $" and c.year={DateTimeOffset.Now.Year}";
             string yearSql = $" and c.year={DateTimeOffset.Now.Year}";
-            if (request.TryGetProperty("year", out JsonElement _year))
+            if (request.TryGetProperty("year", out JsonElement _year) &&  int.TryParse($"{_year}",out int year ))
             {
             {
-                yearSql = $" and c.year={_year}";
+                yearSql = $" and c.year={year}";
             }
             }
             //先获取邀请制的
             //先获取邀请制的
-            string sqlInvite = $"select value c from c join t in c.inviteTeachers where   t.id='{tmdid}'";
-            var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityTeacher>(sqlInvite, "ActivityTeacher");
+            string sqlInvite = $"select value c from c join t in c.inviteTeachers where   t.id='{tmdid}' and c.pk='ActivityTeacher'";
+            var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityTeacher>(sqlInvite);
             inviteActivityIds= result.list.Select(z => z.id).ToHashSet();
             inviteActivityIds= result.list.Select(z => z.id).ToHashSet();
             if (inviteActivityIds.Count>0)
             if (inviteActivityIds.Count>0)
             {
             {

+ 3 - 3
TEAMModelOS.SDK/TEAMModelOS.SDK.csproj

@@ -2,9 +2,9 @@
 
 
   <PropertyGroup>
   <PropertyGroup>
     <TargetFramework>net6.0</TargetFramework>
     <TargetFramework>net6.0</TargetFramework>
-    <Version>5.2312.6</Version>
-    <AssemblyVersion>5.2312.6.1</AssemblyVersion>
-    <FileVersion>5.2312.6.1</FileVersion>
+    <Version>5.2312.13</Version>
+    <AssemblyVersion>5.2312.13.1</AssemblyVersion>
+    <FileVersion>5.2312.13.1</FileVersion>
     <PackageReleaseNotes>发版</PackageReleaseNotes>
     <PackageReleaseNotes>发版</PackageReleaseNotes>
   </PropertyGroup>
   </PropertyGroup>
 
 

+ 12 - 11
TEAMModelOS/ClientApp/src/common/BaseLayout.vue

@@ -1109,6 +1109,16 @@
 											isShow: true
 											isShow: true
 										},
 										},
 										// 校园风采(针对青羊区放出)
 										// 校园风采(针对青羊区放出)
+										// {
+										// 	icon: "iconfont icon-k-point",
+										// 	name: this.$t("system.menu.schoolElegant"),
+										// 	router: "/home/schoolElegant",
+										// 	tag: "",
+										// 	role: "admin",
+										// 	permission: "dashboard-read",
+										// 	menuName: "schoolElegant",
+										// 	isShow: this.edition !== "pro" && this.isQingYangArea
+										// },
 										{
 										{
 											icon: "iconfont icon-k-point",
 											icon: "iconfont icon-k-point",
 											name: this.$t("system.menu.schoolElegant"),
 											name: this.$t("system.menu.schoolElegant"),
@@ -1117,7 +1127,7 @@
 											role: "admin",
 											role: "admin",
 											permission: "dashboard-read",
 											permission: "dashboard-read",
 											menuName: "schoolElegant",
 											menuName: "schoolElegant",
-											isShow: this.edition !== "pro" && this.isQingYangArea
+											isShow: this.hasDashAuth && !this.isGlobalSite && (this.edition === "pro" || this.isQingYangArea)
 										},
 										},
 										{
 										{
 											icon: "iconfont icon-test",
 											icon: "iconfont icon-test",
@@ -1153,16 +1163,7 @@
 									isShow: this.IES5Menu && !this.isGlobalSite && this.edition === "pro" && this.edition !== "artTest",
 									isShow: this.IES5Menu && !this.isGlobalSite && this.edition === "pro" && this.edition !== "artTest",
 									child: [
 									child: [
 										// 校园风采
 										// 校园风采
-										{
-											icon: "iconfont icon-k-point",
-											name: this.$t("system.menu.schoolElegant"),
-											router: "/home/schoolElegant",
-											tag: "",
-											role: "admin",
-											permission: "dashboard-read",
-											menuName: "schoolElegant",
-											isShow: this.hasDashAuth && !this.isGlobalSite && this.edition === "pro"
-										},
+										
 										{
 										{
 											icon: "iconfont icon-basic-setting",
 											icon: "iconfont icon-basic-setting",
 											name: this.$t("system.menu.judgeSettings"),
 											name: this.$t("system.menu.judgeSettings"),

+ 1 - 0
TEAMModelOS/ClientApp/src/view/dashboard/Setting.vue

@@ -1,5 +1,6 @@
 <template>
 <template>
   <div class="dash-setting-container">
   <div class="dash-setting-container">
+    <p style="margin-top:20px;margin-left:10px;color:#888">提示:本页面用于设置学生五育看板的学生数据评价规则及细节</p>
     <div class="box">
     <div class="box">
       <p class="title">评价等级分数设置</p>
       <p class="title">评价等级分数设置</p>
       <div class="content art-setting-wrap">
       <div class="content art-setting-wrap">

+ 1 - 1
TEAMModelOS/ClientApp/src/view/elegant/BaseElegantCloud.vue

@@ -46,7 +46,7 @@
         watch: {
         watch: {
             echartData:{
             echartData:{
                 handler(n,o){
                 handler(n,o){
-                    let keyCounts = this.echartsId === 'cloud1' ? n[0].keyCounts : n[1].keyCounts
+                    let keyCounts = this.echartsId === 'cloud1' ? n[1].keyCounts : n[0].keyCounts
                     this.chartOption.series[0].data = keyCounts.map(i => {
                     this.chartOption.series[0].data = keyCounts.map(i => {
                         return {
                         return {
                             name: i.word,
                             name: i.word,

+ 9 - 1
TEAMModelOS/ClientApp/src/view/schoolmgmt/SystemSetting/SystemSetting.vue

@@ -9,6 +9,9 @@
         <span class="pane" @click="tab = 'period'" :class="{ active: tab === 'period' }">
         <span class="pane" @click="tab = 'period'" :class="{ active: tab === 'period' }">
           {{schoolSetting.type == 1 ? $t('schoolBaseInfo.pdMgt') : $t('schoolBaseInfo.cgMgt')}}
           {{schoolSetting.type == 1 ? $t('schoolBaseInfo.pdMgt') : $t('schoolBaseInfo.cgMgt')}}
         </span>
         </span>
+        <span class="pane" @click="tab = 'dash-setting'" :class="{ active: tab === 'dash-setting' }">
+          {{ $t("system.menu.judgeSettings") }}
+        </span>
         <!-- #2388 国际站隐藏 -->
         <!-- #2388 国际站隐藏 -->
         <!-- 接口未配置完整,先隐藏 -->
         <!-- 接口未配置完整,先隐藏 -->
         <span class="pane" @click="tab = 'third'" :class="{ active: tab === 'third' }" v-if="$store.state.config.srvAdr != 'Global'">
         <span class="pane" @click="tab = 'third'" :class="{ active: tab === 'third' }" v-if="$store.state.config.srvAdr != 'Global'">
@@ -67,6 +70,10 @@
       </div>
       </div>
 
 
     </div>
     </div>
+    <!-- 通用设置 -->
+    <div class="" v-if="tab === 'dash-setting' && $store.state.config.srvAdr != 'Global'">
+      <DashSettingPage></DashSettingPage>
+    </div>
     <!-- 学段/学院管理 -->
     <!-- 学段/学院管理 -->
     <div class="sm-system-body custom-iview-split disabled-iview-select text-cursor-disabled" v-show="tab == 'period'">
     <div class="sm-system-body custom-iview-split disabled-iview-select text-cursor-disabled" v-show="tab == 'period'">
       <Split v-model="split1">
       <Split v-model="split1">
@@ -484,10 +491,11 @@
 import Draggable from 'vuedraggable'
 import Draggable from 'vuedraggable'
 import TimeSetting from './TimeSetting.vue'
 import TimeSetting from './TimeSetting.vue'
 import OpenMgmt2 from '@/view/settings/OpenMgmt2.vue'
 import OpenMgmt2 from '@/view/settings/OpenMgmt2.vue'
+import DashSettingPage from '@/view/dashboard/Setting.vue'
 import '@/utils/Math.uuid'
 import '@/utils/Math.uuid'
 export default {
 export default {
   components: {
   components: {
-    Draggable, TimeSetting, OpenMgmt2
+    Draggable, TimeSetting, OpenMgmt2, DashSettingPage
   },
   },
   data() {
   data() {
     const validateDate = (rule, value, callback) => {
     const validateDate = (rule, value, callback) => {

+ 3 - 3
TEAMModelOS/ClientApp/src/view/signupActivity/createActivity.vue

@@ -141,7 +141,7 @@
                                                         <Checkbox v-for="(item, index) in infoArr" :key="index" :label="item.field">
                                                         <Checkbox v-for="(item, index) in infoArr" :key="index" :label="item.field">
                                                             <span>
                                                             <span>
                                                                 {{ item.label }}
                                                                 {{ item.label }}
-                                                                <Icon type="md-create" size="18" color="orange" v-show="index > 4" @click.stop.native.prevent="changeFiled(2, item)" />
+                                                                <Icon type="md-create" size="18" color="orange" v-show="index > 3" @click.stop.native.prevent="changeFiled(2, item)" />
                                                                 <Icon type="md-trash" size="16" color="#6e6e6e" v-show="item.field === item.label" @click.stop.native.prevent="delField(index)" />
                                                                 <Icon type="md-trash" size="16" color="#6e6e6e" v-show="item.field === item.label" @click.stop.native.prevent="delField(index)" />
                                                             </span>
                                                             </span>
                                                         </Checkbox>
                                                         </Checkbox>
@@ -480,12 +480,12 @@ export default {
                     type: "text",
                     type: "text",
                     item: []
                     item: []
                 },
                 },
-                {
+                /* {
                     field: 'school',
                     field: 'school',
                     label: '学校',
                     label: '学校',
                     type: "select",
                     type: "select",
                     item: []
                     item: []
-                },
+                }, */
                 /* {
                 /* {
                     value: 'duties',
                     value: 'duties',
                     label: '职务',
                     label: '职务',

+ 126 - 29
TEAMModelOS/Controllers/Common/ActivityController.cs

@@ -353,13 +353,16 @@ namespace TEAMModelOS.Controllers
                     }
                     }
                 case bool when $"{grant_type}".Equals("teachers", StringComparison.OrdinalIgnoreCase):
                 case bool when $"{grant_type}".Equals("teachers", StringComparison.OrdinalIgnoreCase):
                     {
                     {
-                        if (!string.IsNullOrWhiteSpace(school)) {
+                        if (!string.IsNullOrWhiteSpace(school))
+                        {
                             School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
                             School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
                             string sql = $"select c.id,c.name ,c.picture   from c where c.code='Teacher-{school}' ";
                             string sql = $"select c.id,c.name ,c.picture   from c where c.code='Teacher-{school}' ";
                             var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<SchoolTeacher>(sql, $"Teacher-{school}");
                             var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).GetList<SchoolTeacher>(sql, $"Teacher-{school}");
                             return Ok(new { code = 200, teachers = result.list.Select(z => new { z.id, z.name, z.picture, school, schooName = schoolbase.name }) });
                             return Ok(new { code = 200, teachers = result.list.Select(z => new { z.id, z.name, z.picture, school, schooName = schoolbase.name }) });
                         }
                         }
-                        break;
+                        else {
+                            return Ok(new { code = 1, msg="没有学校信息" });
+                        }
                     }
                     }
             }
             }
             return Ok(new { code = 400 });
             return Ok(new { code = 400 });
@@ -466,7 +469,8 @@ namespace TEAMModelOS.Controllers
                                                     return Ok(new { code = 3, msg = "赛课信息参数错误" });
                                                     return Ok(new { code = 3, msg = "赛课信息参数错误" });
                                                 }
                                                 }
                                                 contest = _contest.ToObject<Contest>();
                                                 contest = _contest.ToObject<Contest>();
-                                                if (contest!=null) {
+                                                if (contest!=null)
+                                                {
                                                     contest.id=activity.id;
                                                     contest.id=activity.id;
                                                     contest.code="Contest";
                                                     contest.code="Contest";
                                                     contest.pk="Contest";
                                                     contest.pk="Contest";
@@ -474,12 +478,14 @@ namespace TEAMModelOS.Controllers
                                                     if (validResultContest.isVaild)
                                                     if (validResultContest.isVaild)
                                                     {
                                                     {
 
 
-                                                        if (contest.modules.Contains("review")) {
+                                                        if (contest.modules.Contains("review"))
+                                                        {
                                                             if (!request.TryGetProperty("reviewConfig", out JsonElement _reviewConfig))
                                                             if (!request.TryGetProperty("reviewConfig", out JsonElement _reviewConfig))
                                                             {
                                                             {
                                                                 return Ok(new { code = 4, msg = "评审未配置" });
                                                                 return Ok(new { code = 4, msg = "评审未配置" });
                                                             }
                                                             }
-                                                            if (contest.review== null) {
+                                                            if (contest.review== null)
+                                                            {
                                                                 return Ok(new { code = 4, msg = "评审未配置" });
                                                                 return Ok(new { code = 4, msg = "评审未配置" });
                                                             }
                                                             }
                                                             ReviewRuleTree ruleTree = _reviewConfig.ToObject<ReviewRuleTree>();
                                                             ReviewRuleTree ruleTree = _reviewConfig.ToObject<ReviewRuleTree>();
@@ -488,12 +494,16 @@ namespace TEAMModelOS.Controllers
                                                             contest.review.ruleName = reviewRule.name;
                                                             contest.review.ruleName = reviewRule.name;
                                                         }
                                                         }
                                                         await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).UpsertItemAsync(contest, new PartitionKey(contest.code));
                                                         await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).UpsertItemAsync(contest, new PartitionKey(contest.code));
+                                                        break;
                                                     }
                                                     }
-                                                    else {
+                                                    else
+                                                    {
                                                         return Ok(validResult);
                                                         return Ok(validResult);
                                                     }
                                                     }
                                                 }
                                                 }
-                                                break;
+                                                else {
+                                                    return Ok(validResult);
+                                                }
                                             }
                                             }
                                         //培训
                                         //培训
                                         case bool when module.Equals("Training"):
                                         case bool when module.Equals("Training"):
@@ -587,7 +597,8 @@ namespace TEAMModelOS.Controllers
                     //校级活动列表
                     //校级活动列表
                     case bool when $"{grant_type}".Equals("list-school", StringComparison.OrdinalIgnoreCase):
                     case bool when $"{grant_type}".Equals("list-school", StringComparison.OrdinalIgnoreCase):
                         {
                         {
-                            if (!string.IsNullOrWhiteSpace(school)) {
+                            if (!string.IsNullOrWhiteSpace(school))
+                            {
                                 School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
                                 School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
                                 List<ActivityDto> activities = new List<ActivityDto>();
                                 List<ActivityDto> activities = new List<ActivityDto>();
                                 string yearSql = $" and c.year={DateTimeOffset.Now.Year}";
                                 string yearSql = $" and c.year={DateTimeOffset.Now.Year}";
@@ -606,7 +617,8 @@ namespace TEAMModelOS.Controllers
                                     //部分学校
                                     //部分学校
                                     string sqlSchool = $"select value c from c  join s in c.invitedSchools  where c.scope='public' {yearSql}  and (c.publish=1 or c.publish=2 )  and s.id='{school}' ";
                                     string sqlSchool = $"select value c from c  join s in c.invitedSchools  where c.scope='public' {yearSql}  and (c.publish=1 or c.publish=2 )  and s.id='{school}' ";
                                     var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlSchool, "Activity");
                                     var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlSchool, "Activity");
-                                    resultSchool.list.ForEach(z => {
+                                    resultSchool.list.ForEach(z =>
+                                    {
                                         var confirmedSchool = z.confirmedSchools.Find(z => z.id.Equals(school));
                                         var confirmedSchool = z.confirmedSchools.Find(z => z.id.Equals(school));
                                         if (confirmedSchool==null)
                                         if (confirmedSchool==null)
                                         {
                                         {
@@ -624,11 +636,13 @@ namespace TEAMModelOS.Controllers
                                 //获取区级下放的
                                 //获取区级下放的
                                 {
                                 {
 
 
-                                    if (!string.IsNullOrWhiteSpace(schoolbase.areaId)) {
+                                    if (!string.IsNullOrWhiteSpace(schoolbase.areaId))
+                                    {
                                         //区级所有学校
                                         //区级所有学校
                                         string sqlOpen = $"select value c from c where c.scope='area'{yearSql}   and (c.publish=1 or c.publish=2 )  and  c.owner='{schoolbase.areaId}'  and( ARRAY_LENGTH(c.invitedSchools)=0 or IS_DEFINED(c.invitedSchools) = false) ";
                                         string sqlOpen = $"select value c from c where c.scope='area'{yearSql}   and (c.publish=1 or c.publish=2 )  and  c.owner='{schoolbase.areaId}'  and( ARRAY_LENGTH(c.invitedSchools)=0 or IS_DEFINED(c.invitedSchools) = false) ";
                                         var resultOpen = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlOpen, "Activity");
                                         var resultOpen = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlOpen, "Activity");
-                                        resultOpen.list.ForEach(z => {
+                                        resultOpen.list.ForEach(z =>
+                                        {
                                             var confirmedSchool = z.confirmedSchools.Find(z => z.id.Equals(school));
                                             var confirmedSchool = z.confirmedSchools.Find(z => z.id.Equals(school));
                                             if (confirmedSchool==null)
                                             if (confirmedSchool==null)
                                             {
                                             {
@@ -645,7 +659,8 @@ namespace TEAMModelOS.Controllers
                                         //区级部分学校
                                         //区级部分学校
                                         string sqlSchool = $"select value c from c  join s in c.invitedSchools  where c.scope='area'{yearSql}  and (c.publish=1 or c.publish=2 )  and  c.owner='{schoolbase.areaId}' and s.id='{school}' ";
                                         string sqlSchool = $"select value c from c  join s in c.invitedSchools  where c.scope='area'{yearSql}  and (c.publish=1 or c.publish=2 )  and  c.owner='{schoolbase.areaId}' and s.id='{school}' ";
                                         var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlSchool, "Activity");
                                         var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlSchool, "Activity");
-                                        resultSchool.list.ForEach(z => {
+                                        resultSchool.list.ForEach(z =>
+                                        {
                                             var confirmedSchool = z.confirmedSchools.Find(z => z.id.Equals(school));
                                             var confirmedSchool = z.confirmedSchools.Find(z => z.id.Equals(school));
                                             if (confirmedSchool==null)
                                             if (confirmedSchool==null)
                                             {
                                             {
@@ -667,13 +682,16 @@ namespace TEAMModelOS.Controllers
                                     var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlSchool, "Activity");
                                     var resultSchool = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityDto>(sqlSchool, "Activity");
                                     activities.AddRange(resultSchool.list);
                                     activities.AddRange(resultSchool.list);
                                 }
                                 }
-                                activities.ForEach(z => {
+                                activities.ForEach(z =>
+                                {
                                     var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(z.owner, BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List);
                                     var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(z.owner, BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List);
                                     z.sas=blob_sas;
                                     z.sas=blob_sas;
                                 });
                                 });
-                                return Ok(new { activities = activities.OrderByDescending(z => z.stime) });
+                                return Ok(new { code=200, activities = activities.OrderByDescending(z => z.stime) });
+                            }
+                            else {
+                                return Ok(new { code = 1, msg="没有学校信息"});
                             }
                             }
-                            break;
 
 
                         }
                         }
                     //教师活动列表
                     //教师活动列表
@@ -775,7 +793,8 @@ namespace TEAMModelOS.Controllers
                         {
                         {
                             if (!request.TryGetProperty("activityId", out JsonElement _activityId)) return BadRequest();
                             if (!request.TryGetProperty("activityId", out JsonElement _activityId)) return BadRequest();
                             if (!request.TryGetProperty("confirm", out JsonElement _confirm)) return BadRequest();
                             if (!request.TryGetProperty("confirm", out JsonElement _confirm)) return BadRequest();
-                            if (!string.IsNullOrWhiteSpace(school)) {
+                            if (!string.IsNullOrWhiteSpace(school))
+                            {
                                 Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Activity"));
                                 Azure.Response response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Activity"));
                                 if (response.Status==200)
                                 if (response.Status==200)
                                 {
                                 {
@@ -783,13 +802,15 @@ namespace TEAMModelOS.Controllers
                                     if (_confirm.GetInt32()==1 ||_confirm.GetInt32()==0)
                                     if (_confirm.GetInt32()==1 ||_confirm.GetInt32()==0)
                                     {
                                     {
                                         var invitedSchool = activity.invitedSchools.Find(z => z.id.Equals(school));
                                         var invitedSchool = activity.invitedSchools.Find(z => z.id.Equals(school));
-                                        if (invitedSchool!=null) {
+                                        if (invitedSchool!=null)
+                                        {
                                             var confirmedSchool = activity.confirmedSchools.Find(z => z.id.Equals(school));
                                             var confirmedSchool = activity.confirmedSchools.Find(z => z.id.Equals(school));
                                             if (confirmedSchool!=null)
                                             if (confirmedSchool!=null)
                                             {
                                             {
                                                 confirmedSchool.status=_confirm.GetInt32();
                                                 confirmedSchool.status=_confirm.GetInt32();
                                             }
                                             }
-                                            else {
+                                            else
+                                            {
                                                 School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
                                                 School schoolbase = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
                                                 activity.confirmedSchools= new List<ActivityConfirmedSchool>() { new ActivityConfirmedSchool { id=school, status=_confirm.GetInt32(), name=schoolbase.name, picture= schoolbase.picture } };
                                                 activity.confirmedSchools= new List<ActivityConfirmedSchool>() { new ActivityConfirmedSchool { id=school, status=_confirm.GetInt32(), name=schoolbase.name, picture= schoolbase.picture } };
                                             }
                                             }
@@ -806,8 +827,14 @@ namespace TEAMModelOS.Controllers
                                         return Ok(new { code = 2, msg = "活动发布状态错误!" });
                                         return Ok(new { code = 2, msg = "活动发布状态错误!" });
                                     }
                                     }
                                 }
                                 }
+                                else
+                                {
+                                    return Ok(new { code = 4, msg = "活动不存在!" });
+                                }
+                            }
+                            else {
+                                return Ok(new { code = 3, msg = "没有学校信息!" });
                             }
                             }
-                            break;
                         }
                         }
                     //发布或取消发布活动
                     //发布或取消发布活动
                     case bool when $"{grant_type}".Equals("update-publish", StringComparison.OrdinalIgnoreCase):
                     case bool when $"{grant_type}".Equals("update-publish", StringComparison.OrdinalIgnoreCase):
@@ -857,7 +884,7 @@ namespace TEAMModelOS.Controllers
                                             activityTeacher = JsonDocument.Parse(activityTeacherResponse.Content).RootElement.ToObject<ActivityTeacher>();
                                             activityTeacher = JsonDocument.Parse(activityTeacherResponse.Content).RootElement.ToObject<ActivityTeacher>();
                                         }
                                         }
                                         if (activityTeacher==null) {
                                         if (activityTeacher==null) {
-                                            activityTeacher= new ActivityTeacher() { id=school, code=$"ActivityTeacher-{_activityId}", pk="ActivityTeacher" };
+                                            activityTeacher= new ActivityTeacher() { activityId=_activityId.GetString(), schoolNmae= confirmedSchool.name, id=school, code=$"ActivityTeacher-{_activityId}", pk="ActivityTeacher" };
                                         }
                                         }
                                         if (_invite.ValueKind.Equals(JsonValueKind.Array)) {
                                         if (_invite.ValueKind.Equals(JsonValueKind.Array)) {
                                             List<InviteTeachers> inviteTeachers = _invite.ToObject<List<InviteTeachers>>();
                                             List<InviteTeachers> inviteTeachers = _invite.ToObject<List<InviteTeachers>>();
@@ -1634,7 +1661,6 @@ namespace TEAMModelOS.Controllers
             Azure.Response response = await client.GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Activity"));
             Azure.Response response = await client.GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("Activity"));
             if (response.Status==200)
             if (response.Status==200)
             {
             {
-                int code = -1;
                 Activity activity = JsonDocument.Parse(response.Content).RootElement.ToObject<Activity>();
                 Activity activity = JsonDocument.Parse(response.Content).RootElement.ToObject<Activity>();
                 if (activity.publish==1)
                 if (activity.publish==1)
                 {
                 {
@@ -1685,6 +1711,57 @@ namespace TEAMModelOS.Controllers
                     {
                     {
                         switch (true)
                         switch (true)
                         {
                         {
+                            case bool when $"{grant_type}".Equals("remove-member", StringComparison.OrdinalIgnoreCase): 
+                                {
+                                    if (!request.TryGetProperty("removeMember", out JsonElement _removeMember)) return BadRequest();
+                                    if (tmdid.Equals(_removeMember.GetString()))
+                                    {
+                                        return Ok(new { code = 5, msg = "不能移除自己!" });
+                                    }
+                                    Azure.Response responseActivityEnroll = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(tmdid, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
+                                    if (responseActivityEnroll.Status==200)
+                                    {
+                                        ActivityEnroll enrollOld = JsonDocument.Parse(responseActivityEnroll.Content).RootElement.ToObject<ActivityEnroll>();
+                                        if (enrollOld!=null  && enrollOld?.contest?.leader==1  && enrollOld?.contest?.type==1)
+                                        {
+                                            Azure.Response responseActivityEnrollRemove = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(_removeMember.GetString(), new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
+                                            if (responseActivityEnrollRemove.Status==200)
+                                            {
+                                                ActivityEnroll enrollRemove = JsonDocument.Parse(responseActivityEnrollRemove.Content).RootElement.ToObject<ActivityEnroll>();
+                                                if (enrollRemove!=null  && enrollRemove?.contest!=null && enrollOld?.contest?.type==1)
+                                                {
+                                                    if (enrollOld.contest.cipher.Equals(enrollRemove.contest.cipher))
+                                                    {
+                                                        enrollRemove.contest.cipher=null;
+                                                        //string cipher = await ActivityService.GenCipher(client, _dingDing, _option, _activityId.GetString());
+                                                        await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).UpsertItemAsync(enrollRemove, new PartitionKey(enrollRemove.code));
+                                                        return Ok(new { code = 200, msg = "移除成功!" });
+                                                    }
+                                                    else
+                                                    {
+                                                        return Ok(new { code = 4, msg = "指定的队长不是同一团队人员!" });
+                                                    }
+                                                }
+                                                else
+                                                {
+                                                    return Ok(new { code = 3, msg = "指定的队长未参加本次活动!" });
+                                                }
+                                            }
+                                            else
+                                            {
+                                                return Ok(new { code = 3, msg = "指定的队长未参加本次活动!" });
+                                            }
+                                        }
+                                        else
+                                        {
+                                            return Ok(new { code = 1, msg = "你不是队长!" });
+                                        }
+                                    }
+                                    else
+                                    {
+                                        return Ok(new { code = 2, msg = "你未参加本次活动!" });
+                                    }
+                                }
                             ///移交队长
                             ///移交队长
                             case bool when $"{grant_type}".Equals("change-team-leader", StringComparison.OrdinalIgnoreCase):
                             case bool when $"{grant_type}".Equals("change-team-leader", StringComparison.OrdinalIgnoreCase):
                                 {
                                 {
@@ -1737,7 +1814,6 @@ namespace TEAMModelOS.Controllers
                                     {
                                     {
                                         return Ok(new { code = 2, msg = "你未参加本次活动!" });
                                         return Ok(new { code = 2, msg = "你未参加本次活动!" });
                                     }
                                     }
-                                    break;
                                 }
                                 }
                             ///取消报名
                             ///取消报名
                             case bool when $"{grant_type}".Equals("cancel-enroll", StringComparison.OrdinalIgnoreCase):
                             case bool when $"{grant_type}".Equals("cancel-enroll", StringComparison.OrdinalIgnoreCase):
@@ -1771,6 +1847,12 @@ namespace TEAMModelOS.Controllers
                             case bool when $"{grant_type}".Equals("get-enroll", StringComparison.OrdinalIgnoreCase):
                             case bool when $"{grant_type}".Equals("get-enroll", StringComparison.OrdinalIgnoreCase):
                                 {
                                 {
                                     ActivityEnroll enroll = null;
                                     ActivityEnroll enroll = null;
+                                    if (activity.joinMode.Equals("invite"))
+                                    {
+                                        //先获取邀请制的
+                                        string sqlInvite = $"select value c from c join t in c.inviteTeachers where   t.id='{tmdid}'";
+                                        var result = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityTeacher>(sqlInvite, $"ActivityTeacher-{_activityId}");
+                                    }
                                     Azure.Response responseActivityEnroll = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(tmdid, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
                                     Azure.Response responseActivityEnroll = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(tmdid, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
                                     if (responseActivityEnroll.Status==200)
                                     if (responseActivityEnroll.Status==200)
                                     {
                                     {
@@ -1861,15 +1943,15 @@ namespace TEAMModelOS.Controllers
                                     //邀请制
                                     //邀请制
                                     if (activity.joinMode.Equals("invite"))
                                     if (activity.joinMode.Equals("invite"))
                                     {
                                     {
-                                        Azure.Response responseActivityTeacher = await client.GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(_activityId.GetString(), new PartitionKey("ActivityTeacher"));
-                                        if (responseActivityTeacher.Status==200)
+                                        string sqlInvite = $"select value c from c join t in c.inviteTeachers where   t.id='{tmdid}' and  c.pk='ActivityTeacher'";
+                                        var activityTeacherResult = await client.GetContainer(Constant.TEAMModelOS, Constant.Common).GetList<ActivityTeacher>(_activityId.GetString(), $"ActivityTeacher-{_activityId}");
+                                        if (activityTeacherResult.list.IsNotEmpty())
                                         {
                                         {
-                                            ActivityTeacher activityTeacher = JsonDocument.Parse(responseActivityTeacher.Content).RootElement.ToObject<ActivityTeacher>();
-                                            var exsit = activityTeacher.inviteTeachers.Exists(z => z.id.Equals(tmdid));
+                                            var exsit = activityTeacherResult.list.Exists(z => z.id.Equals(enrollData.schoolId));
                                             if (!exsit)
                                             if (!exsit)
                                             {
                                             {
-                                                code=1;
-                                                return Ok(new { code, msg = "教师未被邀请!" });
+                                                code=16;
+                                                return Ok(new { code, msg = "填报的学校与邀请的学校不一致!" });
                                             }
                                             }
                                             else
                                             else
                                             {
                                             {
@@ -2192,7 +2274,7 @@ namespace TEAMModelOS.Controllers
                                             }
                                             }
 
 
                                             ActivityEnroll enroll = null;
                                             ActivityEnroll enroll = null;
-
+                                            int captainUpload = -1;
                                             Azure.Response responseActivityEnroll = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(tmdid, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
                                             Azure.Response responseActivityEnroll = await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemStreamAsync(tmdid, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
                                             if (responseActivityEnroll.Status==200)
                                             if (responseActivityEnroll.Status==200)
                                             {
                                             {
@@ -2217,6 +2299,7 @@ namespace TEAMModelOS.Controllers
                                                                 else
                                                                 else
                                                                 {
                                                                 {
                                                                     check=1;
                                                                     check=1;
+                                                                    captainUpload=1;
                                                                 }
                                                                 }
                                                             }
                                                             }
                                                             else
                                                             else
@@ -2278,6 +2361,7 @@ namespace TEAMModelOS.Controllers
                                                         //{
                                                         //{
                                                         //    string str = await httpResponse.Content.ReadAsStringAsync();
                                                         //    string str = await httpResponse.Content.ReadAsStringAsync();
                                                         //}
                                                         //}
+                                                        //  处理队长统一上传
                                                         return Ok(new { code = 200 });
                                                         return Ok(new { code = 200 });
                                                     }
                                                     }
                                                     else
                                                     else
@@ -2298,6 +2382,19 @@ namespace TEAMModelOS.Controllers
                                                             uploadId=Guid.NewGuid().ToString()
                                                             uploadId=Guid.NewGuid().ToString()
                                                         };
                                                         };
                                                         await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).UpsertItemAsync(enroll, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
                                                         await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).UpsertItemAsync(enroll, new PartitionKey($"ActivityEnroll-{_activityId.GetString()}"));
+                                                        if (captainUpload==1&& !string.IsNullOrWhiteSpace(enroll.contest.cipher)) {
+                                                            //获取队员报名信息
+                                                            string cipherSQL = $"select value  c  from c where c.contest!=null  and c.activityId='{_activityId.GetString()}' and c.contest.type=1 and  c.contest.cipher='{enroll.contest.cipher}' ";
+                                                            var cipherResult = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).GetList<ActivityEnroll>(cipherSQL, $"ActivityEnroll-{_activityId}");
+                                                            //队长统一上传
+                                                            cipherResult.list.RemoveAll(z => z.contest.leader==1);
+                                                            foreach (var z in cipherResult.list)
+                                                            {
+                                                                z.upload=enroll.upload;
+                                                                z.upload.uploadId=Guid.NewGuid().ToString();
+                                                                await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).UpsertItemAsync(z, new PartitionKey(z.code));
+                                                            }
+                                                        }
                                                         return Ok(new { code = 200, });
                                                         return Ok(new { code = 200, });
                                                     }
                                                     }
                                                 }
                                                 }

+ 5 - 5
TEAMModelOS/TEAMModelOS.csproj

@@ -74,11 +74,11 @@
     <SpaRoot>ClientApp\</SpaRoot>
     <SpaRoot>ClientApp\</SpaRoot>
     <DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
     <DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
     <UserSecretsId>078b5d89-7d90-4f6a-88fc-7d96025990a8</UserSecretsId>
     <UserSecretsId>078b5d89-7d90-4f6a-88fc-7d96025990a8</UserSecretsId>
-    <Version>5.2311.29</Version>
-    <AssemblyVersion>5.2311.29.1</AssemblyVersion>
-    <FileVersion>5.2311.29.1</FileVersion>
+    <Version>5.2312.13</Version>
+    <AssemblyVersion>5.2312.13.1</AssemblyVersion>
+    <FileVersion>5.2312.13.1</FileVersion>
     <Description>TEAMModelOS(IES5)</Description>
     <Description>TEAMModelOS(IES5)</Description>
-    <PackageReleaseNotes>IES版本说明版本切换标记5.2311.29.1</PackageReleaseNotes>
+    <PackageReleaseNotes>IES版本说明版本切换标记5.2312.13.1</PackageReleaseNotes>
     <PackageId>TEAMModelOS</PackageId>
     <PackageId>TEAMModelOS</PackageId>
     <Authors>teammodel</Authors>
     <Authors>teammodel</Authors>
     <Company>醍摩豆(成都)信息技术有限公司</Company>
     <Company>醍摩豆(成都)信息技术有限公司</Company>
@@ -109,7 +109,7 @@
     <!-- Build Target: Restore NPM packages using npm -->
     <!-- Build Target: Restore NPM packages using npm -->
     <Message Importance="high" Text="Restoring dependencies using 'npm'. This may take several minutes..." />
     <Message Importance="high" Text="Restoring dependencies using 'npm'. This may take several minutes..." />
 
 
-    <Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
+    <Exec WorkingDirectory="$(SpaRoot)" Command="cnpm install" />
   </Target>
   </Target>
 
 
   <Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
   <Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">

+ 1 - 1
TEAMModelOS/appsettings.Development.json

@@ -18,7 +18,7 @@
     "IdTokenSalt": "8263692E2213497BB55E74792B7900B4",
     "IdTokenSalt": "8263692E2213497BB55E74792B7900B4",
     "HttpTrigger": "https://teammodelosfunction-test.chinacloudsites.cn/api/",
     "HttpTrigger": "https://teammodelosfunction-test.chinacloudsites.cn/api/",
     //"HttpTrigger": "http://localhost:7071/api/"
     //"HttpTrigger": "http://localhost:7071/api/"
-    "Version": "5.2312.6.1"
+    "Version": "5.2312.13.1"
   },
   },
   "Azure": {
   "Azure": {
     // 测试站数据库
     // 测试站数据库

+ 1 - 1
TEAMModelOS/appsettings.json

@@ -18,7 +18,7 @@
     "Exp": 86400,
     "Exp": 86400,
     "IdTokenSalt": "8263692E2213497BB55E74792B7900B4",
     "IdTokenSalt": "8263692E2213497BB55E74792B7900B4",
     "HttpTrigger": "https://teammodelosfunction.chinacloudsites.cn/api/",
     "HttpTrigger": "https://teammodelosfunction.chinacloudsites.cn/api/",
-    "Version": "5.2312.6.1"
+    "Version": "5.2312.13.1"
   },
   },
   "Azure": {
   "Azure": {
     "Storage": {
     "Storage": {