ソースを参照

登录验证逻辑

黄贺彬 6 年 前
コミット
005029c399

+ 12 - 0
TEAMModelOS.Model/Syllabus/Dtos/KnowledgeDto.cs

@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace TEAMModelOS.Model.Syllabus.Dtos
+{
+    public class KnowledgeDto
+    {
+        public List<string> Periods { get; set; }
+        public Dictionary<string, object> PointParams { get;set;}
+    }
+}

+ 1 - 1
TEAMModelOS.Model/Syllabus/Models/KnowledgePoint.cs

@@ -23,7 +23,7 @@ namespace TEAMModelOS.Model.Syllabus.Models
         /// <summary>
         /// 描述
         /// </summary>
-        public string Description { get; set; }
+        //public string Description { get; set; }
         /// <summary>
         /// 学科
         /// </summary>

+ 36 - 0
TEAMModelOS.Service/Core/Implements/LoginInfoService.cs

@@ -65,6 +65,41 @@ namespace TEAMModelOS.Service.Core.Implements
                     await Update<LoginInfo>(login);
                     return result;
                 }
+
+                ///不验证TmdID
+                result.CheckTicket = true;
+                LoginInfo loginInfo = new LoginInfo
+                {
+                    PartitionKey = "15283771540",
+                    Phone = "15283771540",
+                    RowKey = Guid.NewGuid().ToString(),
+                    TeamModelId = ticketInfo.TeamModelId,
+                    Name = ticketInfo.Name,
+                    Ticket = ticketInfo.Ticket,
+                    CountryCode ="86"
+                };
+                TeamModelUser user = await FindOneByKey<TeamModelUser>("TeamModelId", ticketInfo.TeamModelId);
+                if (user == null || string.IsNullOrEmpty(user.RowKey))
+                {
+                    user = new TeamModelUser { RowKey = Guid.NewGuid().ToString(), PartitionKey = loginInfo.CountryCode, RegisterTime = DateTimeHelper.ConvertToTimeStamp13(DateTime.Now) };
+                }
+                user.Cellphone = "15283771540";
+                user.NickName = ticketInfo.Name;
+                if (string.IsNullOrEmpty(user.FullName))
+                {
+                    user.FullName = ticketInfo.Name;
+                }
+                user.TeamModelId = ticketInfo.TeamModelId;
+                user.CountryCode = "86";
+                JwtResponse jwtToken = await CreateJwtToken(loginInfo);
+                loginInfo.Token = jwtToken.Access_token;
+                loginInfo.Scope = jwtToken.Scope;
+                result.JwtToken = jwtToken;
+                await Save<LoginInfo>(loginInfo);
+                await SaveOrUpdate<TeamModelUser>(user);
+                return result;
+
+                /*
                 JosnRPCRequest<Dictionary<string, object>> request = new JosnRPCRequest<Dictionary<string, object>>
                 {
                     method = "UserInfo"
@@ -124,6 +159,7 @@ namespace TEAMModelOS.Service.Core.Implements
                     result.CheckTicket = false;
                     return result;
                 }
+                */
             }
             else
             {

+ 40 - 0
TEAMModelOS.Service/Syllabus/Implements/KnowledgeService.cs

@@ -1,6 +1,11 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Text;
+using System.Threading.Tasks;
+using TEAMModelOS.Model.Syllabus.Dtos;
+using TEAMModelOS.Model.Syllabus.Models;
+using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
 using TEAMModelOS.Service.Core.Implements;
 using TEAMModelOS.Service.Syllabus.Interfaces;
 
@@ -8,5 +13,40 @@ namespace TEAMModelOS.Service.Syllabus.Implements
 {
     public class KnowledgeService : BaseService, IKnowledgeService
     {
+        public async Task<List<KnowledgePoint>> FindKnowledgePointByDict(KnowledgeDto knowledgePoint) {
+            List<KnowledgePoint> points = await FindListByDict<KnowledgePoint>(knowledgePoint.PointParams);
+            if (knowledgePoint.Periods.IsNotEmpty()) {
+                HashSet<KnowledgePoint> knowledges = new HashSet<KnowledgePoint>();
+                foreach (string period in knowledgePoint.Periods) {
+                    if (!string.IsNullOrEmpty(period)) {
+                        knowledges.UnionWith(points.Where(x => x.AdvicePeriodCode.Contains(period)).ToHashSet());
+                    }
+                }
+                return knowledges.OrderBy(x=>x.Order).ToList();
+            }
+            return points.OrderBy(x => x.Order).ToList(); 
+        }
+
+        public async Task<List<KnowledgePoint>> FindKnowledgeBlockAndPointByDict(KnowledgeDto knowledgePoint) {
+            List<KnowledgeBlock> blocks = await FindListByDict<KnowledgeBlock>(knowledgePoint.PointParams);
+            List<KnowledgeBlockPoint> blockPoints = await FindListByDict<KnowledgeBlockPoint>(knowledgePoint.PointParams);
+            HashSet<KnowledgeBlock> knowledges = new HashSet<KnowledgeBlock>();
+            HashSet<KnowledgeBlockPoint> knowledgeBlocks = new HashSet<KnowledgeBlockPoint>();
+            if (knowledgePoint.Periods.IsNotEmpty())
+            {
+               
+                foreach (string period in knowledgePoint.Periods)
+                {
+                    if (!string.IsNullOrEmpty(period))
+                    {
+                        knowledges.UnionWith(blocks.Where(x => x.AdvicePeriodCode.Contains(period)).ToHashSet());
+                        knowledgeBlocks.UnionWith(blockPoints.Where(x => x.AdvicePeriodCode.Contains(period)).ToHashSet());
+                    }
+                }
+                //knowledges.OrderBy(x => x.Order).ToList();
+               // knowledgeBlocks.OrderBy(x => x.Order).ToList();
+            }
+            return null; 
+        }
     }
 }

+ 5 - 0
TEAMModelOS.Service/Syllabus/Interfaces/IKnowledgeService.cs

@@ -1,11 +1,16 @@
 using System;
 using System.Collections.Generic;
 using System.Text;
+using System.Threading.Tasks;
+using TEAMModelOS.Model.Syllabus.Dtos;
+using TEAMModelOS.Model.Syllabus.Models;
 using TEAMModelOS.Service.Core.Interfaces;
 
 namespace TEAMModelOS.Service.Syllabus.Interfaces
 {
     public interface IKnowledgeService : IBusinessService, IBaseService
     {
+        Task<List<KnowledgePoint>> FindKnowledgePointByDict(KnowledgeDto knowledgePoint);
+        Task<List<KnowledgePoint>> FindKnowledgeBlockAndPointByDict(KnowledgeDto knowledgePoint);
     }
 }

+ 32 - 1
TEAMModelOS/Controllers/Syllabus/KnowledgeController.cs

@@ -5,6 +5,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
 using TEAMModelOS.Controllers.Core;
+using TEAMModelOS.Model.Syllabus.Dtos;
 using TEAMModelOS.Model.Syllabus.Models;
 using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
 using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
@@ -30,6 +31,36 @@ namespace TEAMModelOS.Controllers.Syllabus
             List<KnowledgePoint> data = await knowledgeService.FindListByDict<KnowledgePoint>(request.@params);
             return builder.Data(data).build();
         }
-
+        [HttpPost("FindKnowledgePointByDict")]
+        public async Task<BaseJosnRPCResponse> FindKnowledgePointByDict(JosnRPCRequest<KnowledgeDto> request)
+        {
+            request.@params.PointParams.TryAdd("PartitionKey", request.lang);
+            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            List<KnowledgePoint> data = new List<KnowledgePoint>();
+            if (request.@params != null && request.@params.PointParams.TryGetValue("SubjectCode", out _))
+            {
+                data = await knowledgeService.FindKnowledgePointByDict(request.@params);
+            }
+            else {
+                builder.Error("SubjectCode is null or empty!", "SubjectCode is null or empty!");
+            }
+            return builder.Data(data).Extend(new Dictionary<string, object> { { "count", data.Count } }).build();
+        }
+        [HttpPost("FindKnowledgeBlockAndPointByDict")]
+        public async Task<BaseJosnRPCResponse> FindKnowledgeBlockAndPointByDict(JosnRPCRequest<KnowledgeDto> request)
+        {
+            request.@params.PointParams.TryAdd("PartitionKey", request.lang);
+            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            List<KnowledgePoint> data = new List<KnowledgePoint>();
+            if (request.@params != null && request.@params.PointParams.TryGetValue("SubjectCode", out _))
+            {
+                data = await knowledgeService.FindKnowledgeBlockAndPointByDict(request.@params);
+            }
+            else
+            {
+                builder.Error("SubjectCode is null or empty!", "SubjectCode is null or empty!");
+            }
+            return builder.Data(data).Extend(new Dictionary<string, object> { { "count", data.Count } }).build();
+        }
     }
 }

+ 115 - 37
TEAMModelOS/Controllers/Syllabus/Seed/SyllabusSeedDataController.cs

@@ -35,7 +35,7 @@ namespace TEAMModelOS.Controllers.Syllabus.Seed
         /// <param name="identity"></param>
         /// <returns></returns>
         [HttpGet("Knowledge")]
-        public BaseJosnRPCResponse Knowledge(string code = "Subject_Chinese-Period_21")
+        public async Task<BaseJosnRPCResponse> Knowledge(string code = "Subject_Chinese-Period_21")
         {
             string[] sp = code.Split("-");
             JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
@@ -48,11 +48,16 @@ namespace TEAMModelOS.Controllers.Syllabus.Seed
             int index = 0;
             foreach (Point point1 in points)
             {
+
+                KnowledgeBlock knowledgeBlock1= await knowledgeBlockService.FindOneByDict<KnowledgeBlock>(new Dictionary<string, object> { { "Name",point1.pointName }, { "SubjectCode", sp[0] }});
                 string RowKey1 = Guid.NewGuid().ToString();
+                if (knowledgeBlock1 != null && !string.IsNullOrEmpty(knowledgeBlock1.RowKey))
+                {
+                    RowKey1 = knowledgeBlock1.RowKey;
+                }
                 if (point1.childPoint != null)
                 {
-
-                    KnowledgeBlock block1 = new KnowledgeBlock
+                      knowledgeBlock1 = new KnowledgeBlock
                     {
                         RowKey = RowKey1,
                         PartitionKey = "zh-CN",
@@ -62,22 +67,34 @@ namespace TEAMModelOS.Controllers.Syllabus.Seed
                         Order = index,
                         AdvicePeriodCode = sp[1]
                     };
-                    knowledgeBlocks.Add(block1);
+                    await knowledgeBlockService.SaveOrUpdate<KnowledgeBlock>(knowledgeBlock1);
                 }
                 else
                 {
+                    KnowledgePoint knowledgePoint = await knowledgeBlockService.FindOneByDict<KnowledgePoint>(new Dictionary<string, object> { { "Name", point1.pointName }, { "SubjectCode", sp[0] } });
                     string RowKey3 = Guid.NewGuid().ToString();
-                    string RowKey4 = Guid.NewGuid().ToString();
-                    KnowledgePoint knowledgePoint = new KnowledgePoint
+                    if (knowledgePoint != null && !string.IsNullOrEmpty(knowledgePoint.RowKey))
                     {
-                        RowKey = RowKey3,
-                        PartitionKey = "zh-CN",
-                        SubjectCode = sp[0],
-                        Name = point1.pointName,
-                        AdvicePeriodCode = sp[1],
-                        Order = index
-                    };
+                        RowKey3 = knowledgePoint.RowKey;
+                        if (!knowledgePoint.AdvicePeriodCode.Contains(sp[1]))
+                        {
+                            knowledgePoint.AdvicePeriodCode = knowledgePoint.AdvicePeriodCode + "," + sp[1];
+                        }
+                    }
+                    else
+                    {
+                        knowledgePoint = new KnowledgePoint
+                        {
+                            RowKey = RowKey3,
+                            PartitionKey = "zh-CN",
+                            SubjectCode = sp[0],
+                            Name = point1.pointName,
+                            AdvicePeriodCode = sp[1],
+                            Order = index
+                        };
+                    }
 
+                    string RowKey4 = Guid.NewGuid().ToString();
                     KnowledgeBlockPoint blockPoint = new KnowledgeBlockPoint
                     {
                         RowKey = RowKey4,
@@ -87,11 +104,11 @@ namespace TEAMModelOS.Controllers.Syllabus.Seed
                         BlockId = RowKey1,
                         PointId = RowKey3,
                         Order = index,
-                        AdvicePeriodCode = sp[1],
+                        AdvicePeriodCode = knowledgePoint.AdvicePeriodCode,
                         SubjectCode = sp[0]
                     };
-                    knowledgePoints.Add(knowledgePoint);
-                    blockPoints.Add(blockPoint);
+                    await knowledgeBlockService.SaveOrUpdate<KnowledgePoint>(knowledgePoint);
+                    await knowledgeBlockService.SaveOrUpdate<KnowledgeBlockPoint>(blockPoint);
                 }
                 index++;
                 if (point1.childPoint != null)
@@ -99,34 +116,98 @@ namespace TEAMModelOS.Controllers.Syllabus.Seed
                     foreach (Point point2 in point1.childPoint)
                     {
                         string RowKey2 = Guid.NewGuid().ToString();
-                        KnowledgeBlock block2 = new KnowledgeBlock
+                        KnowledgeBlock knowledgeBlock2 = await knowledgeBlockService.FindOneByDict<KnowledgeBlock>(new Dictionary<string, object> { { "Name", point2.pointName }, { "SubjectCode", sp[0] } });
+                        if (knowledgeBlock2 != null && !string.IsNullOrEmpty(knowledgeBlock2.RowKey))
                         {
-                            RowKey = RowKey2,
-                            PartitionKey = "zh-CN",
-                            Name = point2.pointName,
-                            SubjectCode = sp[0],
-                            Pid = RowKey1,
-                            Order = index,
-                            AdvicePeriodCode = sp[1],
-                        };
-                        knowledgeBlocks.Add(block2);
-                        index++;
+                            RowKey2 = knowledgeBlock2.RowKey;
+                            knowledgeBlock2.Pid = knowledgeBlock2.RowKey;
+                        }
                         if (point2.childPoint != null)
                         {
-                            foreach (Point point3 in point2.childPoint)
+                            knowledgeBlock1 = new KnowledgeBlock
                             {
-                                string RowKey3 = Guid.NewGuid().ToString();
-                                string RowKey4 = Guid.NewGuid().ToString();
-                                KnowledgePoint knowledgePoint = new KnowledgePoint
+                                RowKey = RowKey2,
+                                PartitionKey = "zh-CN",
+                                Name = point2.pointName,
+                                SubjectCode = sp[0],
+                                Pid = knowledgeBlock1.RowKey,
+                                Order = index,
+                                AdvicePeriodCode = sp[1]
+                            };
+                            await knowledgeBlockService.SaveOrUpdate<KnowledgeBlock>(knowledgeBlock1);
+                        }
+                        else
+                        {
+                            KnowledgePoint knowledgePoint = await knowledgeBlockService.FindOneByDict<KnowledgePoint>(new Dictionary<string, object> { { "Name", point2.pointName }, { "SubjectCode", sp[0] } });
+                            string RowKey3 = Guid.NewGuid().ToString();
+                            if (knowledgePoint != null && !string.IsNullOrEmpty(knowledgePoint.RowKey))
+                            {
+                                RowKey3 = knowledgePoint.RowKey;
+                                if (!knowledgePoint.AdvicePeriodCode.Contains(sp[1]))
+                                {
+                                    knowledgePoint.AdvicePeriodCode = knowledgePoint.AdvicePeriodCode + "," + sp[1];
+                                }
+                            }
+                            else
+                            {
+                                knowledgePoint = new KnowledgePoint
                                 {
                                     RowKey = RowKey3,
                                     PartitionKey = "zh-CN",
                                     SubjectCode = sp[0],
-                                    Name = point3.pointName,
+                                    Name = point2.pointName,
                                     AdvicePeriodCode = sp[1],
                                     Order = index
                                 };
+                            }
 
+                            string RowKey4 = Guid.NewGuid().ToString();
+                            KnowledgeBlockPoint blockPoint = new KnowledgeBlockPoint
+                            {
+                                RowKey = RowKey4,
+                                PartitionKey = "zh-CN",
+                                Name = point2.pointName,
+                                Alias = point2.pointName,
+                                BlockId = RowKey2,
+                                PointId = RowKey3,
+                                Order = index,
+                                AdvicePeriodCode = knowledgePoint.AdvicePeriodCode,
+                                SubjectCode = sp[0]
+                            };
+                            await knowledgeBlockService.SaveOrUpdate<KnowledgePoint>(knowledgePoint);
+                            await knowledgeBlockService.SaveOrUpdate<KnowledgeBlockPoint>(blockPoint);
+                        }
+
+
+
+                        index++;
+                        if (point2.childPoint != null)
+                        {
+                            foreach (Point point3 in point2.childPoint)
+                            {
+                                KnowledgePoint knowledgePoint = await knowledgeBlockService.FindOneByDict<KnowledgePoint>(new Dictionary<string, object> { { "Name", point3.pointName }, { "SubjectCode", sp[0] } });
+                                string RowKey3 = Guid.NewGuid().ToString();
+                                if (knowledgePoint != null && !string.IsNullOrEmpty(knowledgePoint.RowKey))
+                                {
+                                    RowKey3 = knowledgePoint.RowKey;
+                                    if (!knowledgePoint.AdvicePeriodCode.Contains(sp[1]))
+                                    {
+                                        knowledgePoint.AdvicePeriodCode = knowledgePoint.AdvicePeriodCode + "," + sp[1];
+                                    }
+                                }
+                                else
+                                {
+                                    knowledgePoint = new KnowledgePoint
+                                    {
+                                        RowKey = RowKey3,
+                                        PartitionKey = "zh-CN",
+                                        SubjectCode = sp[0],
+                                        Name = point3.pointName,
+                                        AdvicePeriodCode = sp[1],
+                                        Order = index
+                                    };
+                                }
+                                string RowKey4 = Guid.NewGuid().ToString();
                                 KnowledgeBlockPoint blockPoint = new KnowledgeBlockPoint
                                 {
                                     RowKey = RowKey4,
@@ -139,18 +220,15 @@ namespace TEAMModelOS.Controllers.Syllabus.Seed
                                     AdvicePeriodCode = sp[1],
                                     SubjectCode = sp[0]
                                 };
-                                knowledgePoints.Add(knowledgePoint);
-                                blockPoints.Add(blockPoint);
                                 index++;
+                                await knowledgeBlockService.SaveOrUpdate<KnowledgePoint>(knowledgePoint);
+                                await knowledgeBlockService.SaveOrUpdate<KnowledgeBlockPoint>(blockPoint);
                             }
                         }
 
                     }
                 }
             }
-            knowledgeBlockService.SaveOrUpdateAll(knowledgeBlocks);
-            knowledgeBlockService.SaveOrUpdateAll(knowledgePoints);
-            knowledgeBlockService.SaveOrUpdateAll(blockPoints);
             builder.Data(points);
             return builder.build();
         }