Ver Fonte

Merge branch 'develop3.0' of http://106.12.23.251:10080/TEAMMODEL/TEAMModelOS into develop3.0

liqk há 4 anos atrás
pai
commit
47975c62d7
27 ficheiros alterados com 518 adições e 110 exclusões
  1. 1 2
      TEAMModelGrpc/Services/ClassroomService.cs
  2. 1 2
      TEAMModelGrpc/Services/HomeWorkService.cs
  3. 78 0
      TEAMModelOS.SDK/DI/AzureCosmos/AzureCosmosExtensions.cs
  4. 11 2
      TEAMModelOS.SDK/DI/AzureCosmos/Inner/SQLHelper.cs
  5. 5 0
      TEAMModelOS.Service/TEAMModelOS.Model.xml
  6. 6 0
      TEAMModelOS/ClientApp/src/router/routes.js
  7. 4 1
      TEAMModelOS/ClientApp/src/view/Home.vue
  8. 1 1
      TEAMModelOS/ClientApp/src/view/evaluation/components/BaseImport.vue
  9. 124 0
      TEAMModelOS/ClientApp/src/view/settings/Index.less
  10. 167 0
      TEAMModelOS/ClientApp/src/view/settings/Index.vue
  11. 18 0
      TEAMModelOS/ClientApp/src/view/settings/SchoolMgmt.less
  12. 15 0
      TEAMModelOS/ClientApp/src/view/settings/SchoolMgmt.vue
  13. 5 4
      TEAMModelOS/Controllers/Analysis/ChangeController.cs
  14. 4 2
      TEAMModelOS/Controllers/Core/BlobController.cs
  15. 7 54
      TEAMModelOS/Controllers/Exam/ExamController.cs
  16. 4 2
      TEAMModelOS/Controllers/Exam/ImportExerciseController.cs
  17. 5 3
      TEAMModelOS/Controllers/Exam/PaperController.cs
  18. 6 4
      TEAMModelOS/Controllers/Syllabus/ItemInfoController.cs
  19. 4 2
      TEAMModelOS/Controllers/Syllabus/KnowledgeController.cs
  20. 4 3
      TEAMModelOS/Controllers/Syllabus/ResourceController.cs
  21. 7 5
      TEAMModelOS/Controllers/Task/HomeworkController.cs
  22. 7 5
      TEAMModelOS/Controllers/Task/LearnController.cs
  23. 6 5
      TEAMModelOS/Controllers/Task/SurveyController.cs
  24. 6 5
      TEAMModelOS/Controllers/Task/VoteController.cs
  25. 4 4
      TEAMModelOS/JsonFile/Core/LangConfig.json
  26. 2 2
      TEAMModelOS/Service/Syllabus/KnowledgeService.cs
  27. 16 2
      TEAMModelOS/Startup.cs

+ 1 - 2
TEAMModelGrpc/Services/ClassroomService.cs

@@ -1,4 +1,4 @@
-using Grpc.Core;
+using Grpc.Core;
 using Grpc.Extension.Abstract;
 using Microsoft.AspNetCore.Authorization;
 using System;
@@ -41,7 +41,6 @@ namespace TEAMModelGrpc.Services
                 }
                 else
                 {
-                    classroom.id = Guid.NewGuid().ToString();
                     ClassStudent students = new ClassStudent();
                     students.code = classroom.code;
                     students.id = classroom.classroomCode;

+ 1 - 2
TEAMModelGrpc/Services/HomeWorkService.cs

@@ -1,4 +1,4 @@
-using Grpc.Core;
+using Grpc.Core;
 using Grpc.Extension.Abstract;
 using Microsoft.AspNetCore.Authorization;
 using System;
@@ -45,7 +45,6 @@ namespace TEAMModelGrpc.Services
                         //评论
                         StudentComment homeWorkComment = new StudentComment
                         {
-                            commentid = Guid.NewGuid().ToString(),
                             comment = homeWorkCommentDto.comment,
                             createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds(),
                             fromId = homeWorkCommentDto.fromId,

+ 78 - 0
TEAMModelOS.SDK/DI/AzureCosmos/AzureCosmosExtensions.cs

@@ -262,6 +262,21 @@ namespace TEAMModelOS.SDK.DI
             AsyncPageable<int> query = container.container.GetItemQueryIterator<int>(queryDefinition: cosmosDbQuery.CosmosQueryDefinition, requestOptions: queryRequestOptions);
             return await ResultsFromFeedIterator(query);
         }
+        public static async Task<List<int>> FindCountByDict<T>(this AzureCosmosFactory azureCosmosFactory,JsonElement json)
+        {
+            Type type = typeof(T);
+            AzureCosmosModel container = azureCosmosFactory.GetCosmosModel(type.Name);
+            string pk = type.Name;
+            StringBuilder sql = new StringBuilder("select  value count(c)  from c");
+            AzureCosmosQuery cosmosDbQuery = SQLHelper.GetSQL(json, sql, pk);
+            if (cosmosDbQuery == null)
+            {
+                return new List<int> { 0 };
+            }
+            QueryRequestOptions queryRequestOptions = GetDefaultQueryRequestOptions(itemsPerPage: GetEffectivePageSize(-1, null));
+            AsyncPageable<int> query = container.container.GetItemQueryIterator<int>(queryDefinition: cosmosDbQuery.CosmosQueryDefinition, requestOptions: queryRequestOptions);
+            return await ResultsFromFeedIterator(query);
+        }
         public static async Task<List<dynamic>> FindCountByDict(this AzureCosmosFactory azureCosmosFactory, string CollectionName, Dictionary<string, object> dict)
         {
             if (azureCosmosFactory.CosmosDict.typeCosmos.TryGetValue(CollectionName, out AzureCosmosModel container))
@@ -286,6 +301,37 @@ namespace TEAMModelOS.SDK.DI
                 throw new BizException("CollectionName named:" + CollectionName + " dose not exsit in Database!");
             }
         }
+        public static async Task<List<dynamic>> FindCountByDict(this AzureCosmosFactory azureCosmosFactory, string CollectionName,JsonElement json)
+        {
+            if (azureCosmosFactory.CosmosDict.typeCosmos.TryGetValue(CollectionName, out AzureCosmosModel container))
+            {
+                Dictionary<string, object> dict = new Dictionary<string, object>();
+                var emobj = json.EnumerateObject();
+                while (emobj.MoveNext())
+                {
+                    if (emobj.Current.Name != "@CURRPAGE"|| 
+                        emobj.Current.Name != "@PAGESIZE" || 
+                        emobj.Current.Name != "@ASC" || 
+                        emobj.Current.Name != "@DESC") {
+                        dict[emobj.Current.Name] = emobj.Current.Value;
+                    }
+                }
+                string pk = container.type.Name;
+                StringBuilder sql = new StringBuilder("select  value count(c)  from c");
+                AzureCosmosQuery cosmosDbQuery = SQLHelper.GetSQL(dict, sql, pk);
+                if (cosmosDbQuery == null)
+                {
+                    return new List<dynamic> { 0 };
+                }
+                QueryRequestOptions queryRequestOptions = GetDefaultQueryRequestOptions(itemsPerPage: GetEffectivePageSize(-1, null));
+                AsyncPageable<dynamic> query = container.container.GetItemQueryIterator<dynamic>(queryDefinition: cosmosDbQuery.CosmosQueryDefinition, requestOptions: queryRequestOptions);
+                return await ResultsFromFeedIterator(query);
+            }
+            else
+            {
+                throw new BizException("CollectionName named:" + CollectionName + " dose not exsit in Database!");
+            }
+        }
         public static async Task<T> Update<T>(this AzureCosmosFactory azureCosmosFactory,  T entity) where T : ID
         {
             Type type = typeof(T);
@@ -385,6 +431,33 @@ namespace TEAMModelOS.SDK.DI
             QueryRequestOptions queryRequestOptions = GetDefaultQueryRequestOptions(itemsPerPage: GetEffectivePageSize(-1, null));
             return await ResultsFromQueryAndOptions<T>(azureCosmosFactory,cosmosDbQuery, queryRequestOptions);
         }
+        public static async Task<List<T>> FindByDict<T>(this AzureCosmosFactory azureCosmosFactory, JsonElement jsonElement, List<string> propertys = null) where T : ID
+        {
+            StringBuilder sql;
+            sql = SQLHelper.GetSQLSelect(propertys);
+            string pk = typeof(T).Name;
+            AzureCosmosQuery cosmosDbQuery = SQLHelper.GetSQL(jsonElement, sql, pk);
+            QueryRequestOptions queryRequestOptions = GetDefaultQueryRequestOptions(itemsPerPage: GetEffectivePageSize(-1, null));
+            return await ResultsFromQueryAndOptions<T>(azureCosmosFactory, cosmosDbQuery, queryRequestOptions);
+        }
+        public static async Task<List<dynamic>> FindByDict(this AzureCosmosFactory azureCosmosFactory, string CollectionName, JsonElement json, List<string> propertys = null)
+        {
+            if (azureCosmosFactory.CosmosDict.typeCosmos.TryGetValue(CollectionName, out AzureCosmosModel container))
+            {
+
+                string pk = container.type.Name;
+                StringBuilder sql;
+                sql = SQLHelper.GetSQLSelect(propertys);
+                AzureCosmosQuery cosmosDbQuery = SQLHelper.GetSQL(json, sql, pk);
+                QueryRequestOptions queryRequestOptions = GetDefaultQueryRequestOptions(itemsPerPage: GetEffectivePageSize(-1, null));
+                AsyncPageable<dynamic> query = container.container.GetItemQueryIterator<dynamic>(queryDefinition: cosmosDbQuery.CosmosQueryDefinition, requestOptions: queryRequestOptions);
+                return await ResultsFromFeedIterator(query);
+            }
+            else
+            {
+                throw new BizException("CollectionName named:" + CollectionName + " dose not exsit in Database!");
+            }
+        }
         public static async Task<List<dynamic>> FindByDict(this AzureCosmosFactory azureCosmosFactory, string CollectionName, Dictionary<string, object> dict, List<string> propertys = null)
         {
             if (azureCosmosFactory.CosmosDict.typeCosmos.TryGetValue(CollectionName, out AzureCosmosModel container))
@@ -462,6 +535,11 @@ namespace TEAMModelOS.SDK.DI
             }
 
         }
+        public static async Task<List<IdPk>> DeleteAll<T>(this AzureCosmosFactory azureCosmosFactory, JsonElement dict) where T : ID
+        {
+            List<T> list = await azureCosmosFactory.FindByDict<T>(dict);
+            return await azureCosmosFactory.DeleteAll(list);
+        }
         public static async Task<List<IdPk>> DeleteAll<T>(this AzureCosmosFactory azureCosmosFactory, List<T> enyites) where T : ID
         {
             Type type = typeof(T);

+ 11 - 2
TEAMModelOS.SDK/DI/AzureCosmos/Inner/SQLHelper.cs

@@ -1,4 +1,4 @@
-using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Linq;
 using System;
 using System.Collections;
 using System.Collections.Generic;
@@ -114,7 +114,16 @@ namespace TEAMModelOS.SDK.DI.AzureCosmos.Inner
                 return false;
             }
         }
-
+        public static AzureCosmosQuery GetSQL(JsonElement json, StringBuilder sql, string pk = null)
+        {
+            Dictionary<string, object> dict = new Dictionary<string, object>();
+            var emobj = json.EnumerateObject();
+            while (emobj.MoveNext())
+            {
+                dict[emobj.Current.Name] = emobj.Current.Value;
+            }
+            return GetSQL(dict, sql, pk);
+        }
         public static AzureCosmosQuery GetSQL(Dictionary<string, object> dict, StringBuilder sql, string pk = null)
         {
             if (dict != null)

+ 5 - 0
TEAMModelOS.Service/TEAMModelOS.Model.xml

@@ -491,6 +491,11 @@
             考试类型 段考 stage  联考 union 平常考 normal 其他 other
              </summary>
         </member>
+        <member name="P:TEAMModelOS.Service.Models.ExamInfo.marks">
+            <summary>
+            所有试卷阅卷状态
+            </summary>
+        </member>
         <member name="P:TEAMModelOS.Service.Models.Condition.range">
             <summary>
             评测范围 class 班级测验,年级测验 grade , 区级测验 distric

+ 6 - 0
TEAMModelOS/ClientApp/src/router/routes.js

@@ -341,6 +341,12 @@ export const routes = [
                 path: 'feedback',
                 name: 'feedback',
                 component: resolve => require(['@/view/feedback/Feedback.vue'], resolve)
+            },
+            //设置
+            {
+                path: 'settings',
+                name: 'settings',
+                component: resolve => require(['@/view/settings/Index.vue'], resolve)
             }
         ]
     }

+ 4 - 1
TEAMModelOS/ClientApp/src/view/Home.vue

@@ -5,7 +5,7 @@
             <div class="header-right-box fl-around" slot="header-content">
                 <Icon custom="iconfont icon-home" @click="toHome"/>
                 <Icon type="md-help-circle" @click="toFeedback"/>
-                <Icon type="ios-settings" />
+                <Icon type="ios-settings" @click="toSettings"/>
                 <Icon type="ios-bug" @click="isShowMock = true" />
                 <Dropdown @on-click="basicMenu">
                     <a href="javascript:void(0)">
@@ -161,6 +161,9 @@
             toHome() {
                 this.$router.push({ path: '/home/homePage' })
             },
+			toSettings(){
+				this.$router.push({ path: '/home/settings' })
+			},
             toFeedback() {
                 this.$router.push({ path: '/home/feedback' })
             },

+ 1 - 1
TEAMModelOS/ClientApp/src/view/evaluation/components/BaseImport.vue

@@ -187,7 +187,7 @@
              */
             uploadSuccess(response) {
                 if (response.error === null) {
-                    let requestData = { htmlString: response.result.data.HtmlString }
+                    let requestData = { lang:localStorage.getItem('local'), htmlString: response.result.data.HtmlString }
                     this.$api.SaveAnalyzeHtml(requestData).then(res => {
                         if (res.error === null) {
                                 this.$Message.success('试题数据读取完成!')

+ 124 - 0
TEAMModelOS/ClientApp/src/view/settings/Index.less

@@ -0,0 +1,124 @@
+@primaryColor: #1CC0F3;
+@borderColor: #424242;
+@second-textColor: #a5a5a5; //文本副级颜色
+
+.settings-container{
+	min-height: 100%;
+	font-family: '微軟正黑體', 'Heiti TC' !important;
+	
+	.settings-header{
+		height: 70px;
+		border-bottom: 1px solid @borderColor;
+		
+		&-item{
+			display: inline-block;
+			height: 40px;
+			line-height: 40px;
+			margin-top: 15px;
+			margin-left: 50px;
+			color:@second-textColor;
+			cursor: pointer;
+		}
+		
+		.active-item{
+			font-size: 14px;
+			color:#fff;
+			border-bottom: 2px solid @primaryColor;
+		}
+	}
+	
+	.settings-body{
+		height: 100%;
+		
+		.normal-settings{
+			// width: 80%;
+			height: 100%;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			
+			&-item{
+				padding: 50px 0;
+				display: flex;
+				align-items: center;
+				
+				.item-title{
+					font-size: 18px;
+					font-weight: bold;
+					color:#fff;
+					margin-left: 10%;
+					min-width: 10%;
+				}
+				
+				.item-description{
+					color:#a7a7a7;
+					min-width: 30%;
+					margin-left: 10%;
+				}
+				
+				.item-content{
+					margin-left: 5%;
+					display: flex;
+					min-width: 30%;
+					
+					.color-item{
+						position: relative;
+						display: flex;
+						width: 35px;
+						height: 35px;
+						background: #000;
+						border: 3px solid #191919;
+						cursor: pointer;
+						
+						&:last-child{
+							margin-left: 20px;
+							background: #fff;
+						}
+						
+						&-active{
+							border: 3px solid @primaryColor;
+							
+							&::after{
+								position:absolute;
+								content:'';
+								display:block;
+								width:0;
+								height:0;
+								right: -10px;
+								top:-10px;
+								transform:rotate(135deg);
+								border-width:10px;
+								border-style:solid;
+								border-color: transparent @primaryColor transparent  transparent;
+							}
+							
+							&::before{
+								content:'';
+									display:block;
+									width:5px;
+									height:8px;
+									border-right:#ffffff solid 2px;
+									border-bottom:#ffffff solid 2px;
+									transform:rotate(35deg);
+									position:absolute;
+									top:0;
+									right:0;
+									z-index:2;
+							}
+						}
+					}
+				}
+				
+				.ivu-btn{
+					width: 300px;
+					height: 45px;
+					background: @primaryColor;
+					color:#fff;
+					border: none;
+					margin: 0 auto;
+					border-radius: 0;
+				}
+			}
+		}
+	}
+}

+ 167 - 0
TEAMModelOS/ClientApp/src/view/settings/Index.vue

@@ -0,0 +1,167 @@
+<template>
+	<div class="settings-container">
+		<div class="settings-header">
+			<span :class="['settings-header-item',activeTab === '0' ?  'active-item' : '']" @click="onTabChange('0')">一般设置</span>
+			<span :class="['settings-header-item',activeTab === '1' ?  'active-item' : '']" @click="onTabChange('1')">学校管理</span>
+		</div>
+		
+		<div class="settings-body">
+			<div class="normal-settings" v-if="activeTab === '0'">
+				<div class="normal-settings-item">
+					<span class="item-title">网站语言设定</span>
+					<span class="item-description">请选择网站要用来显示选单、互动页面以及通知信息的语言</span>
+					<span class="item-content">
+						<Select v-model="curLang" style="width:200px">
+							<Option value="zh-CN">中文(简体)</Option>
+							<Option value="zh-TW">中文(繁体)</Option>
+							<Option value="en-US">英语</Option>
+						</Select>
+						<Checkbox v-model="isHomeworkLang">使用您作业系统的语系来展示</Checkbox>
+					</span>
+				</div>
+				<div class="normal-settings-item">
+					<span class="item-title">网站色彩模式</span>
+					<span class="item-description">请选择网站显示的色彩模式,以便提供最佳的用户体验</span>
+					<span class="item-content">
+						<span :class="['color-item',activeTheme === '0' ?  'color-item-active' : '']" @click="onThemeChange('0')"></span>
+						<span :class="['color-item',activeTheme === '1' ?  'color-item-active' : '']" @click="onThemeChange('1')"></span>
+					</span>
+				</div>
+				<div class="normal-settings-item">
+					<span class="item-title">菜单显示设置</span>
+					<span class="item-description">选择左侧Menu在网站载入时的预设显示模式</span>
+					<span class="item-content">
+						<RadioGroup v-model="menuStatus">
+							<Radio label="open">预设展开显示</Radio>
+							<Radio label="close">预设关闭显示</Radio>
+						</RadioGroup>
+					</span>
+				</div>
+				<div class="normal-settings-item">
+					<Button>保存变更</Button>
+				</div>
+			</div>
+		
+			<SchoolMgmt v-else></SchoolMgmt>
+		</div>
+	</div>
+</template>
+
+<script>
+	import SchoolMgmt from './SchoolMgmt.vue'
+	export default {
+		components:{ SchoolMgmt },
+		data(){
+			return {
+				activeTab:'0',
+				activeTheme:'0',
+				menuStatus:'open',
+				curLang:'zh-CN',
+				isHomeworkLang:true,
+			}
+		},
+		methods:{
+			onTabChange(index){
+				this.activeTab = index
+			},
+			onThemeChange(index){
+				this.activeTheme = index
+			}
+		}
+	}
+</script>
+
+<style lang="less" scoped>
+	@import "./Index.less";
+</style>
+
+<style lang="less">
+	.settings-container{
+		
+		.ivu-select-selection{
+			background: transparent;
+			border-color: #363738;
+			color:#a6a6a6;
+		}
+		
+		.ivu-checkbox-wrapper{
+			margin-left: 40px;
+			margin-top: 5px;
+			color:#a6a6a6;
+		}
+		
+		.ivu-checkbox{
+			margin-right: 5px;
+		}
+		
+		.ivu-radio-wrapper{
+			margin-right: 20px;
+			color:#a5a5a5;
+		}
+		
+		.ivu-radio-inner{
+			width: 18px;
+			height: 18px;
+			border-radius: 4px;
+			background-color: #0f0f0f;
+			border-color: #4d4d4d;
+			border-width: 1px;
+			margin-right: 5px;
+			
+			&::after{
+				content:'';
+				display:block;
+				width:10px;
+				height:16px;
+				border-right:#ffffff solid 3px;
+				border-bottom:#ffffff solid 3px;
+				transform:rotate(35deg);
+				position:absolute;
+				top:-4px;
+				left:4px;
+				border-radius: 0;
+				background-color: transparent;
+				border-color:#0094FF;
+			}
+		}
+		
+		.ivu-checkbox-inner{
+			width: 18px;
+			height: 18px;
+			border-radius: 4px;
+			background-color: #0f0f0f;
+			border-color: #4d4d4d;
+			border-width: 1px;
+			margin-right: 5px;
+		}
+		
+		.ivu-checkbox-checked .ivu-checkbox-inner{
+			width: 18px;
+			height: 18px;
+			border-radius: 4px;
+			background-color: #0f0f0f;
+			border-color: #4d4d4d;
+			border-width: 1px;
+			margin-right: 5px;
+			
+			&::after{
+				content:'';
+				display:block;
+				width:10px;
+				height:16px;
+				border-right:#ffffff solid 3px;
+				border-bottom:#ffffff solid 3px;
+				transform:rotate(35deg);
+				position:absolute;
+				top:-4px;
+				left:4px;
+				border-radius: 0;
+				background-color: transparent;
+				border-color:#0094FF;
+			}
+		}
+		
+		
+	
+	}
+</style>

+ 18 - 0
TEAMModelOS/ClientApp/src/view/settings/SchoolMgmt.less

@@ -0,0 +1,18 @@
+@primaryColor: #1CC0F3;
+@borderColor: #424242;
+@second-textColor: #a5a5a5; //文本副级颜色
+
+.school-container{
+	display: flex;
+	
+	&-left{
+		width: 28%;
+		height: 100%;
+		border-right: 1px solid @borderColor;
+	}
+	
+	&-right{
+		width: 72%;
+		height: 100%;
+	}
+}

+ 15 - 0
TEAMModelOS/ClientApp/src/view/settings/SchoolMgmt.vue

@@ -0,0 +1,15 @@
+<template>
+	<div class="school-container">
+		<div class="school-container-left">
+			111111111
+		</div>
+		<div class="school-container-right"></div>
+	</div>
+</template>
+
+<script>
+</script>
+
+<style lang="less" scoped>
+	@import "./SchoolMgmt.less";
+</style>

+ 5 - 4
TEAMModelOS/Controllers/Analysis/ChangeController.cs

@@ -24,13 +24,14 @@ namespace TEAMModelOS.Controllers.Analysis
     [ApiController]
     public class ChangeController : Controller
     {
-
+        private SnowflakeId SnowflakeId;
         private readonly IWebHostEnvironment _hostingEnvironment;
         public AzureCosmosFactory _cosmosrepository;
         public AzureStorageFactory azureBlobDB;
         private const string CacheCosmosPrefix = "Analysis:";
-        public ChangeController(IWebHostEnvironment hostingEnvironment, AzureCosmosFactory cosmosDBRepository, AzureStorageFactory _azureBlobDB)
+        public ChangeController(IWebHostEnvironment hostingEnvironment, AzureCosmosFactory cosmosDBRepository, AzureStorageFactory _azureBlobDB, SnowflakeId _SnowflakeId)
         {
+            SnowflakeId= _SnowflakeId;
             _hostingEnvironment = hostingEnvironment;
             _cosmosrepository = cosmosDBRepository;
             azureBlobDB = _azureBlobDB;
@@ -170,7 +171,7 @@ namespace TEAMModelOS.Controllers.Analysis
                 //考试基本信息
                 examInfo = new ExamInfo
                 {
-                    id = System.Guid.NewGuid().ToString(),
+                    id = SnowflakeId.NextId()+"",
                     code = "88924E4C-F00D-4A1D-B2C3-234F930F29D4",
                     name = s.ex_name,
                     type = s.ex_type,
@@ -197,7 +198,7 @@ namespace TEAMModelOS.Controllers.Analysis
                 string schoolName = x.info.school_name;
                 Classroom classInfo = new Classroom
                 {
-                    id = System.Guid.NewGuid().ToString(),
+                    id = SnowflakeId.NextId() + "",
                     classroomName = key,
                     //classroomType = schoolName,
                     studentCount = k,

+ 4 - 2
TEAMModelOS/Controllers/Core/BlobController.cs

@@ -21,8 +21,10 @@ namespace TEAMModelOS.Controllers.Core
     {
         
         private readonly AzureStorageFactory azureBlobDBRepository;
-        public BlobController(AzureStorageFactory _azureBlobDBRepository) {
+        private readonly SnowflakeId SnowflakeId;
+        public BlobController(AzureStorageFactory _azureBlobDBRepository, SnowflakeId _SnowflakeId) {
             azureBlobDBRepository = _azureBlobDBRepository;
+            SnowflakeId = _SnowflakeId;
         }
 
         /// <summary>
@@ -113,7 +115,7 @@ namespace TEAMModelOS.Controllers.Core
         public async Task<BaseResponse> UploadText(JosnRequest<string> request)
         {
             ResponseBuilder responseBuilder = new ResponseBuilder();
-            return responseBuilder.Data(await azureBlobDBRepository.UploadFileByContainer("hbcn", request.@params, "exam", Guid.NewGuid().ToString() + ".json")).build();
+            return responseBuilder.Data(await azureBlobDBRepository.UploadFileByContainer("hbcn", request.@params, "exam", SnowflakeId.NextId() + ".json")).build();
           
         }
         private static string ContainerUrlString(string sasUrl)

+ 7 - 54
TEAMModelOS/Controllers/Exam/ExamController.cs

@@ -18,13 +18,15 @@ namespace TEAMModelOS.Controllers
     [ApiController]
     public class ExamController : BaseController
     {
+        private readonly SnowflakeId SnowflakeId;
         private readonly AzureCosmosFactory cosmosDBV3Repository;
         private readonly AzureServiceBusFactory _serviceBus;
-        public ExamController(AzureCosmosFactory _cosmosDBV3Repository, AzureServiceBusFactory serviceBus)
+        public ExamController(AzureCosmosFactory _cosmosDBV3Repository, AzureServiceBusFactory serviceBus, SnowflakeId _SnowflakeId)
         {
             
             cosmosDBV3Repository = _cosmosDBV3Repository;
             _serviceBus = serviceBus;
+            SnowflakeId = _SnowflakeId;
         }
 
         /// <summary>
@@ -39,7 +41,7 @@ namespace TEAMModelOS.Controllers
             
             if (string.IsNullOrEmpty(request.@params.id))
             {
-                request.@params.id = Guid.NewGuid().ToString();
+                request.@params.id = SnowflakeId.NextId()+"";
                 request.@params.status = 100;
                 // await cosmosDBV3Repository.SaveOrUpdate(request.@params);
             }
@@ -51,7 +53,7 @@ namespace TEAMModelOS.Controllers
             else if (request.@params.publish.Equals("1"))
             {
                 //设定开始时间
-                string msgId = Guid.NewGuid().ToString();
+                string msgId = SnowflakeId.NextId() + "";
                 long SequenceNumber = await _serviceBus.SendMessage<ExamInfo>(Constants.TopicName, request.@params.id, request.@params.code, request.@params.startTime, 200, msgId);
                 request.@params.sequenceNumber = SequenceNumber;
             }
@@ -62,7 +64,7 @@ namespace TEAMModelOS.Controllers
             }
             await cosmosDBV3Repository.SaveOrUpdate(request.@params);
             //设定结束时间
-            string msgEndId = Guid.NewGuid().ToString();
+            string msgEndId = SnowflakeId.NextId() + "";
             await _serviceBus.SendMessage<ExamInfo>(Constants.TopicName, request.@params.id, request.@params.code, request.@params.endTime, 300, msgEndId);
             return builder.Data(request.@params).build();
         }
@@ -323,55 +325,6 @@ namespace TEAMModelOS.Controllers
                 }
             }
             return stuAnswers;
-        }
-        /// <summary>
-        /// 生成题目
-        /// </summary>
-        /// <param name="request"></param>
-        /// <returns></returns>
-        [HttpPost("Gen")]
-        public  BaseResponse  Gen(JosnRequest<List<ItemInfo>> request)
-        {
-            ResponseBuilder builder = ResponseBuilder.custom();
-            List<string> poins = new List<string>();
-            for (int i = 0; i < 30; i++)
-            {
-                poins.Add(Guid.NewGuid().ToString());
-            }
-            Random rangdomRed = new Random();
-            // Single单选,Multiple多选,Judge判断,Complete填空,Subjective问答,Compose综合
-            List<string> types = new List<string>() { "Single", "Multiple", "Judge", "Complete", "Subjective", "Compose" };
-            List<string> field = new List<string>() { "应用", "综合", "理解", "评鉴", "知识" };
-            foreach (ItemInfo item in request.@params)
-            {
-                
-                item.subjectCode = "Subject_Chinese";
-                item.periodCode = "period_2";
-                item.type = types.OrderBy(x => Guid.NewGuid()).First();
-                item.points = new List<string>() { poins.OrderBy(x => Guid.NewGuid()).First() };
-                item.level = rangdomRed.Next(1, 5);
-                item.field = field.OrderBy(x => Guid.NewGuid()).First();
-            }
-            return builder.Data(request.@params).build();
-        }
-
-
-
-        List<string> pins = new List<string>() {
-            "5a569451-d7b6-4bc5-85dc-4c97ba593090", "97752929-bee6-458e-b5ae-af16ee73a1e9",
-            "b32dcb15-9f13-4e8f-9f65-80e55e3b257d", "5160a86b-2d44-466f-bd82-ed08148f6607",
-            "9e6a3b59-bdeb-4b21-90ec-903ef9847864", "6d1f223d-a84e-4fab-b015-fe1c4298834b",
-            "72571322-43d9-4777-b3b1-a6a5a4bf4e10", "bf4707a6-f541-46b9-85b2-82aa6077ba27",
-            "9dd91708-be01-4947-850c-77b88e7cf2ad", "24d9f39f-906a-4ca6-bc4f-8f9307d51d5a",
-            "4acee7e2-434c-4257-9331-8c42fba14a3b", "170125f4-4cfc-40eb-aae4-7a82840a6297",
-            "6b14df14-17ae-4f47-a1e4-16738268feba", "a9c1ada9-232f-4993-bf63-3c279e5ecaac",
-            "4ff7b031-a45c-4b02-921e-933be73bb38a", "a96ebded-aeb0-42c8-ab90-8b1ab8a4a489",
-            "e3564799-3b9a-4b5d-a904-f09565f98890", "64b4326f-1f76-4c7c-8fb7-5940894e2205",
-            "4e43d507-8af1-4b21-b09e-7fe8533104e8", "25032d80-b88c-42c1-8ffd-1a30815859aa",
-            "b1baff75-fdf9-4020-acfb-af6497017f4b", "c6e8bdaf-9738-48f6-bd7f-5bc6d6444684",
-            "d75000f7-168a-4521-b056-780ef38114cc", "f6c768e8-12ea-445c-8df1-750736294a80",
-            "5ac2805d-b31d-44a3-9058-1239d5557270", "49512c48-f38a-452e-8bb9-170728cb271e",
-            "57088641-14d1-498d-ae8e-61627e0d8e4a", "2222f52f-cc3f-4ac3-96b8-638078455f64",
-            "1687d096-4d58-4828-97de-d31e23784b36", "45ae3d97-cd76-4c53-a821-e220367eb2c2" };
+        } 
     }
 }

+ 4 - 2
TEAMModelOS/Controllers/Exam/ImportExerciseController.cs

@@ -91,9 +91,10 @@ namespace TEAMModelOS.Controllers
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             bool flag = request.@params.TryGetValue("htmlString", out object htmlString);
+            bool flagLang = request.@params.TryGetValue("lang", out object lang);
             if (flag && htmlString != null && !string.IsNullOrEmpty(htmlString.ToString()))
             {
-                LangConfig langConfig= langConfigs.Where(x => x.Lang == request.lang).FirstOrDefault();
+                LangConfig langConfig= langConfigs.Where(x => x.Lang == lang.ToString()).FirstOrDefault();
                 HtmlAnalyzeService htmlAnalyzeService = new HtmlAnalyzeService(langConfig);
                 List<Service.Models.ItemInfo> exercises = htmlAnalyzeService.AnalyzeWordAsync(htmlString.ToString());
                 return builder.Data(exercises).build();
@@ -113,9 +114,10 @@ namespace TEAMModelOS.Controllers
         {
             ResponseBuilder builder = ResponseBuilder.custom();
             bool flag = request.@params.TryGetValue("htmlString", out object htmlString);
+            bool flagLang = request.@params.TryGetValue("lang", out object lang);
             if (flag && htmlString != null && !string.IsNullOrEmpty(htmlString.ToString()))
             {
-                LangConfig langConfig = langConfigs.Where(x => x.Lang == request.lang).FirstOrDefault();
+                LangConfig langConfig = langConfigs.Where(x => x.Lang == lang.ToString()).FirstOrDefault();
                 HtmlAnalyzeService htmlAnalyzeService = new HtmlAnalyzeService(langConfig);
                 Htex exercises = await HtexService.AnalyzeHtmlToHtex(azureBlobDBRepository, htmlString.ToString(), request.lang, htmlAnalyzeService);
                 return builder.Data(exercises).build();

+ 5 - 3
TEAMModelOS/Controllers/Exam/PaperController.cs

@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -13,10 +13,12 @@ namespace TEAMModelOS.Controllers
     [ApiController]
     public class PaperController: BaseController
     {
+        private SnowflakeId SnowflakeId;
         private readonly AzureCosmosFactory cosmosDBV3Repository;
-        public PaperController(AzureCosmosFactory _cosmosDBV3Repository)
+        public PaperController(AzureCosmosFactory _cosmosDBV3Repository, SnowflakeId _SnowflakeId)
         {
             cosmosDBV3Repository = _cosmosDBV3Repository;
+            SnowflakeId = _SnowflakeId;
         }
         /// <summary>
         /// 删除
@@ -83,7 +85,7 @@ namespace TEAMModelOS.Controllers
             ResponseBuilder builder = ResponseBuilder.custom();
             if (string.IsNullOrEmpty(request.@params.id))
             {
-                request.@params.id = Guid.NewGuid().ToString(); 
+                request.@params.id = SnowflakeId.NextId() + ""; 
                 request.@params.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
                 await cosmosDBV3Repository.SaveOrUpdate(request.@params);
             }

+ 6 - 4
TEAMModelOS/Controllers/Syllabus/ItemInfoController.cs

@@ -1,4 +1,4 @@
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -14,10 +14,12 @@ namespace TEAMModelOS.Controllers
     [ApiController]
     public class ItemInfoController : BaseController
     {
+        private SnowflakeId SnowflakeId;
         private readonly AzureCosmosFactory cosmosDBV3Repository;
-        public ItemInfoController(AzureCosmosFactory _cosmosDBV3Repository)
+        public ItemInfoController(AzureCosmosFactory _cosmosDBV3Repository ,SnowflakeId _SnowflakeId)
         {
             cosmosDBV3Repository = _cosmosDBV3Repository;
+            SnowflakeId = _SnowflakeId;
         }
 
         /// <summary>
@@ -33,7 +35,7 @@ namespace TEAMModelOS.Controllers
             request.@params.ForEach(x => {
               
                 if (string.IsNullOrEmpty(x.id)) {
-                    x.id = Guid.NewGuid().ToString();
+                    x.id = SnowflakeId.NextId()+"";
                 };
                 x.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
             });
@@ -48,7 +50,7 @@ namespace TEAMModelOS.Controllers
              
             if (string.IsNullOrEmpty(request.@params.id))
             {
-            request.@params.id = Guid.NewGuid().ToString();
+                request.@params.id = SnowflakeId.NextId() + "";
             };
             request.@params.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
             return builder.Data(await cosmosDBV3Repository.SaveOrUpdate(request.@params)).build();

+ 4 - 2
TEAMModelOS/Controllers/Syllabus/KnowledgeController.cs

@@ -21,11 +21,13 @@ namespace TEAMModelOS.Controllers
     //[Authorize]
     public class KnowledgeController : BaseController
     {
+        private SnowflakeId SnowflakeId;
         private AzureStorageFactory _table;
         private AzureCosmosFactory _cosmos; 
 
-        public KnowledgeController(AzureStorageFactory table, AzureCosmosFactory cosmos )
+        public KnowledgeController(AzureStorageFactory table, AzureCosmosFactory cosmos , SnowflakeId _SnowflakeId)
         {
+            SnowflakeId = _SnowflakeId;
             _table = table;
             _cosmos = cosmos;
           
@@ -288,7 +290,7 @@ namespace TEAMModelOS.Controllers
             ResponseBuilder builder = ResponseBuilder.custom();
             if (request.@params.IsNotEmpty())
             {
-                List<Knowledge> ts = await KnowledgeService.SaveOrUpdateKnowledge(_cosmos,request.@params);
+                List<Knowledge> ts = await KnowledgeService.SaveOrUpdateKnowledge(_cosmos,SnowflakeId,request.@params);
                 if (ts.Count > 0) builder.Data(ts).Extend(new Dictionary<string, object> { { "count", ts.Count } });
                 else {
                     return builder.Error(ResponseCode.FAILED, "失败!").build();

+ 4 - 3
TEAMModelOS/Controllers/Syllabus/ResourceController.cs

@@ -18,11 +18,12 @@ namespace TEAMModelOS.Controllers
     {
         private AzureStorageFactory _table;
         private AzureCosmosFactory _cosmos;
-        
-        public ResourceController(AzureStorageFactory table, AzureCosmosFactory cosmos)
+        private SnowflakeId SnowflakeId;
+        public ResourceController(AzureStorageFactory table, AzureCosmosFactory cosmos, SnowflakeId _SnowflakeId)
         {
             _table = table;
             _cosmos = cosmos;
+            SnowflakeId = _SnowflakeId;
         }
 
         /// <summary>
@@ -41,7 +42,7 @@ namespace TEAMModelOS.Controllers
                 {
                     if (item.id == null)
                     {
-                        item.id = Guid.NewGuid().ToString(); //item.sha1Code + "-" + item.extension + "-" + item.size;
+                        item.id = SnowflakeId.NextId()+""; //item.sha1Code + "-" + item.extension + "-" + item.size;
                         
                     }
                 }

+ 7 - 5
TEAMModelOS/Controllers/Task/HomeworkController.cs

@@ -28,13 +28,15 @@ namespace TEAMModelOS.Controllers.Learn
     [ApiController]
     public class HomeworkController : ControllerBase
     {
+        private SnowflakeId SnowflakeId;
         private readonly AzureCosmosFactory _cosmos;
        
         private readonly AzureServiceBusFactory _serviceBus;
-        public HomeworkController(AzureCosmosFactory cosmos , AzureServiceBusFactory serviceBus  )
+        public HomeworkController(AzureCosmosFactory cosmos , AzureServiceBusFactory serviceBus , SnowflakeId _SnowflakeId)
         {
             _cosmos = cosmos;
             _serviceBus = serviceBus;
+            SnowflakeId = _SnowflakeId;
         }
 
 
@@ -97,7 +99,7 @@ namespace TEAMModelOS.Controllers.Learn
             if (string.IsNullOrEmpty(request.@params.homeWork.id))
 
             {
-                request.@params.homeWork.id = Guid.NewGuid().ToString();
+                request.@params.homeWork.id = SnowflakeId.NextId()+"";
                 request.@params.homeWork.status = 100;
                 request.@params.reset = true;
                 request.@params.homeWork.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
@@ -113,7 +115,7 @@ namespace TEAMModelOS.Controllers.Learn
             {
                 //TimerWork<HomeWork>(request.@params.homeWork.startTime,new Dictionary<string, object> { { "id", request.@params.homeWork.id } });
                 //设定开始时间
-                string msgId = Guid.NewGuid().ToString();
+                string msgId = SnowflakeId.NextId() + "";
                 long SequenceNumber =  await _serviceBus.SendMessage<Homework>(Constants.TopicName, request.@params.homeWork.id, request.@params.homeWork.code, request.@params.homeWork.startTime,200, msgId);
                 request.@params.homeWork.sequenceNumber = SequenceNumber;
 
@@ -131,7 +133,7 @@ namespace TEAMModelOS.Controllers.Learn
             Homework homeWork = await _cosmos.SaveOrUpdate<Homework>(request.@params.homeWork);
 
             //设定结束时间
-            string msgEndId = Guid.NewGuid().ToString();
+            string msgEndId = SnowflakeId.NextId() + "";
             await _serviceBus.SendMessage<Homework>(Constants.TopicName, request.@params.homeWork.id, request.@params.homeWork.code, request.@params.homeWork.endTime,300, msgEndId);
             //_timerWorkService.TimerWork<Homework>(request.@params.homeWork.endTime, 300, new Dictionary<string, object> { { "id", request.@params.homeWork.id } });
             //清除作业
@@ -311,7 +313,7 @@ namespace TEAMModelOS.Controllers.Learn
                         //评论
                         StudentComment homeWorkComment = new StudentComment
                         {
-                            commentid = Guid.NewGuid().ToString(),
+                            commentid = SnowflakeId.NextId() + "",
                             comment = request.@params.comment,
                             createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds(),
                             fromId = request.@params.fromId,

+ 7 - 5
TEAMModelOS/Controllers/Task/LearnController.cs

@@ -22,10 +22,12 @@ namespace TEAMModelOS.Controllers.Learn
     [ApiController]
     public class LearnController: BaseController
     {
+        private SnowflakeId SnowflakeId;
         private readonly AzureCosmosFactory cosmosDBV3Repository;
         private readonly AzureServiceBusFactory _serviceBus;
-        public LearnController(AzureCosmosFactory _cosmosDBV3Repository, AzureServiceBusFactory serviceBus)
+        public LearnController(AzureCosmosFactory _cosmosDBV3Repository, AzureServiceBusFactory serviceBus, SnowflakeId _SnowflakeId)
         {
+            SnowflakeId = _SnowflakeId;
             _serviceBus = serviceBus;
             cosmosDBV3Repository = _cosmosDBV3Repository;
         }
@@ -45,7 +47,7 @@ namespace TEAMModelOS.Controllers.Learn
 
             if (request.@params.endTime > 0) {
                 //设定结束时间
-                string msgEndId = Guid.NewGuid().ToString();
+                string msgEndId = SnowflakeId.NextId()+"";
                 await _serviceBus.SendMessage<LearnTask>(Constants.TopicName, request.@params.id, request.@params.code, request.@params.endTime, 300, msgEndId);
             }
             await cosmosDBV3Repository.Save(request.@params);
@@ -94,7 +96,7 @@ namespace TEAMModelOS.Controllers.Learn
             ResponseBuilder builder = ResponseBuilder.custom();
             if (string.IsNullOrEmpty(request.@params.id))
             {
-                request.@params.id = Guid.NewGuid().ToString();
+                request.@params.id = SnowflakeId.NextId() + "";
                 request.@params.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
                 await cosmosDBV3Repository.Save(request.@params);
             }
@@ -148,7 +150,7 @@ namespace TEAMModelOS.Controllers.Learn
 
             if (string.IsNullOrEmpty(request.@params.id))
             {
-                request.@params.id = Guid.NewGuid().ToString();
+                request.@params.id = SnowflakeId.NextId() + "";
                 request.@params.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
                 await cosmosDBV3Repository.Save<LearnProcess>(request.@params);
             }
@@ -207,7 +209,7 @@ namespace TEAMModelOS.Controllers.Learn
                 {
                     if (string.IsNullOrEmpty(x.id))
                     {
-                     ///   x.id = new Guid().ToString();
+                     
                     }
                 });
                 List<LearnRecord> leanProcesses = await cosmosDBV3Repository.SaveOrUpdateAll<LearnRecord>(request.@params);

+ 6 - 5
TEAMModelOS/Controllers/Task/SurveyController.cs

@@ -22,10 +22,11 @@ namespace TEAMModelOS.Controllers
     public class SurveyController : BaseController
     {
         private readonly AzureCosmosFactory azureCosmosDBV3Repository;
- 
+        private SnowflakeId SnowflakeId;
         private readonly AzureServiceBusFactory _serviceBus;
-        public SurveyController(AzureCosmosFactory _azureCosmosDBV3Repository, AzureServiceBusFactory serviceBus)
+        public SurveyController(AzureCosmosFactory _azureCosmosDBV3Repository, AzureServiceBusFactory serviceBus, SnowflakeId _SnowflakeId)
         {
+            SnowflakeId= _SnowflakeId;
             //  _timerWorkService = timerWorkService;
             _serviceBus = serviceBus;
               azureCosmosDBV3Repository = _azureCosmosDBV3Repository;
@@ -43,7 +44,7 @@ namespace TEAMModelOS.Controllers
             //新增
             if (string.IsNullOrEmpty(request.@params.survey.id))
             {
-                request.@params.survey.id = Guid.NewGuid().ToString();
+                request.@params.survey.id = SnowflakeId.NextId()+"";
                 request.@params.survey.status = 100;
             }
             if (request.@params.survey.publishModel.Equals("0"))
@@ -54,7 +55,7 @@ namespace TEAMModelOS.Controllers
             else if (request.@params.survey.publishModel.Equals("1"))
             {
 
-                string msgId = Guid.NewGuid().ToString();
+                string msgId = SnowflakeId.NextId() + "";
                 long SequenceNumber = await _serviceBus.SendMessage<Survey>(Constants.TopicName, request.@params.survey.id, request.@params.survey.code, request.@params.survey.startTime, 200, msgId);
                 request.@params.survey.sequenceNumber = SequenceNumber;
 
@@ -65,7 +66,7 @@ namespace TEAMModelOS.Controllers
             Survey homeWork = await azureCosmosDBV3Repository.SaveOrUpdate<Survey>(request.@params.survey);
 
             //设定结束时间
-            string msgEndId = Guid.NewGuid().ToString();
+            string msgEndId = SnowflakeId.NextId() + "";
             await _serviceBus.SendMessage<Survey>(Constants.TopicName, request.@params.survey.id, request.@params.survey.code, request.@params.survey.endTime, 300, msgEndId);
 
             //清除作业

+ 6 - 5
TEAMModelOS/Controllers/Task/VoteController.cs

@@ -25,12 +25,13 @@ namespace TEAMModelOS.Controllers.Learn
     [ApiController]
     public class VoteController : BaseController
     {
-
+        private SnowflakeId SnowflakeId;
         private readonly AzureCosmosFactory _cosmos;
        
         private readonly AzureServiceBusFactory _serviceBus;
-        public VoteController(AzureCosmosFactory cosmos, AzureServiceBusFactory serviceBus)
+        public VoteController(AzureCosmosFactory cosmos, AzureServiceBusFactory serviceBus, SnowflakeId _SnowflakeId)
         {
+            SnowflakeId = _SnowflakeId;
             _cosmos = cosmos;
             _serviceBus = serviceBus;
         }
@@ -48,7 +49,7 @@ namespace TEAMModelOS.Controllers.Learn
             //新增
             if (string.IsNullOrEmpty(request.@params.vote.id))
             {
-                request.@params.vote.id = Guid.NewGuid().ToString();
+                request.@params.vote.id = SnowflakeId.NextId()+"";
                 request.@params.vote.status = 100;
             }
             if (request.@params.vote.publishModel.Equals("0"))
@@ -58,7 +59,7 @@ namespace TEAMModelOS.Controllers.Learn
                 
             } else if (request.@params.vote.publishModel.Equals("1")) {
 
-                string msgId = Guid.NewGuid().ToString();
+                string msgId = SnowflakeId.NextId() + "";
                 long SequenceNumber = await _serviceBus.SendMessage<Vote>(Constants.TopicName, request.@params.vote.id, request.@params.vote.code, request.@params.vote.startTime, 200, msgId);
                 request.@params.vote.sequenceNumber = SequenceNumber;
             }
@@ -70,7 +71,7 @@ namespace TEAMModelOS.Controllers.Learn
             //设定结束时间
             //_timerWorkService.TimerWork<Vote>(request.@params.vote.endTime, 300, new Dictionary<string, object> { { "id", request.@params.vote.id } });
             //设定结束时间
-            string msgEndId = Guid.NewGuid().ToString();
+            string msgEndId = SnowflakeId.NextId() + "";
             await _serviceBus.SendMessage<Vote>(Constants.TopicName, request.@params.vote.id, request.@params.vote.code, request.@params.vote.endTime, 300, msgEndId);
             //清除作业
             if (!request.@params.reset)

+ 4 - 4
TEAMModelOS/JsonFile/Core/LangConfig.json

@@ -1,7 +1,7 @@
 [
   {
     "Lang": "zh-CN",
-    "Name": "中国大陆",
+    "Name": "大陆",
     "Alias": "简体中文",
     "Item": {
       "Type": {
@@ -64,17 +64,17 @@
   },
   {
     "Lang": "zh-HK",
-    "Name": "中國香港",
+    "Name": "香港",
     "Alias": "繁體中文"
   },
   {
     "Lang": "zh-MO",
-    "Name": "中國澳門",
+    "Name": "澳門",
     "Alias": "繁體中文"
   },
   {
     "Lang": "zh-TW",
-    "Name": "中國台灣",
+    "Name": "台灣",
     "Alias": "繁體中文"
   }
 ]

+ 2 - 2
TEAMModelOS/Service/Syllabus/KnowledgeService.cs

@@ -26,13 +26,13 @@ namespace TEAMModelOS.Service.Services.Implement
             return idPks;
         }
 
-        public static async Task<List<Knowledge>> SaveOrUpdateKnowledge(this AzureCosmosFactory _cosmos, List<Knowledge> request)
+        public static async Task<List<Knowledge>> SaveOrUpdateKnowledge(this AzureCosmosFactory _cosmos, SnowflakeId snowflakeId, List<Knowledge> request)
         {
             foreach (Knowledge item in request)
             {
                 if (item.id == null)
                 {
-                    item.id = Guid.NewGuid().ToString();
+                    item.id = snowflakeId.NextId()+"";
                 }
                 if (item.type == 1 && item.points.Count > 0)
                 {

+ 16 - 2
TEAMModelOS/Startup.cs

@@ -32,6 +32,7 @@ namespace TEAMModelOS
 {
     public class Startup
     {
+        readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
         //private IServiceCollection _services;
         public Startup(IConfiguration configuration, IWebHostEnvironment env)
         {
@@ -76,7 +77,20 @@ namespace TEAMModelOS
                         await Task.FromResult(0);
                     };
                 });
-            
+            //設定跨域請求
+            services.AddCors(options =>
+            {
+                options.AddPolicy(MyAllowSpecificOrigins,
+                builder =>
+                {
+                    builder.WithOrigins("http://teammodelos-test.chinacloudsites.cn",
+                                        "https://www.teammodel.cn", "https://localhost:5001",
+                                        "http://localhost:5000", "http://localhost:64524",
+                                        "https://localhost:44341")
+                    .AllowAnyHeader()
+                    .AllowAnyMethod();
+                });
+            });
             services.AddAzureStorage(Configuration.GetValue<string>("Azure:Starage:ConnectionString"));            
             services.AddAzureRedis( Configuration.GetValue<string>("Azure:Redis:ConnectionString"));            
             services.AddAzureCosmos(Configuration.GetValue<string>("Azure:Cosmos:ConnectionString"));
@@ -120,7 +134,7 @@ namespace TEAMModelOS
             //app.UseSpaStaticFiles(); //使用中間件不開
             app.UseRouting();
 
-            //app.UseCors(MyAllowSpecificOrigins); //使用跨域設定
+            app.UseCors(MyAllowSpecificOrigins); //使用跨域設定
             //app.UseHttpsRedirection(); //開發中暫時關掉
             //如果应用使用身份验证/授权功能(如 AuthorizePage 或 [Authorize]),请将对 UseAuthentication 和 UseAuthorization的
             //调用放在之后、UseRouting 和 UseCors,但在 UseEndpoints之前