Преглед на файлове

Merge branch 'master' of http://106.12.23.251:10080/CDHABOOK/CE

chenmy преди 4 години
родител
ревизия
52168d1e7e

+ 19 - 19
HiTeachCE/ClientApp/package-lock.json

@@ -1,5 +1,5 @@
 {
-  "name": "hiteachcloud",
+  "name": "hiteachce",
   "version": "0.1.0",
   "lockfileVersion": 1,
   "requires": true,
@@ -3563,7 +3563,7 @@
     },
     "brorand": {
       "version": "1.1.0",
-      "resolved": "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz",
+      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
       "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
       "dev": true
     },
@@ -3606,7 +3606,7 @@
     },
     "browserify-rsa": {
       "version": "4.0.1",
-      "resolved": "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz",
+      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
       "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
       "dev": true,
       "requires": {
@@ -3616,7 +3616,7 @@
     },
     "browserify-sign": {
       "version": "4.0.4",
-      "resolved": "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.0.4.tgz",
+      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
       "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
       "dev": true,
       "requires": {
@@ -3679,7 +3679,7 @@
     },
     "buffer-xor": {
       "version": "1.0.3",
-      "resolved": "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz",
+      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
       "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
       "dev": true
     },
@@ -4247,7 +4247,7 @@
     },
     "colors": {
       "version": "0.6.2",
-      "resolved": "http://registry.npm.taobao.org/colors/download/colors-0.6.2.tgz",
+      "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
       "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
       "dev": true
     },
@@ -5485,7 +5485,7 @@
     },
     "duplexer": {
       "version": "0.1.1",
-      "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz",
+      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
       "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
       "dev": true
     },
@@ -6693,7 +6693,7 @@
     },
     "findup": {
       "version": "0.1.5",
-      "resolved": "https://registry.npm.taobao.org/findup/download/findup-0.1.5.tgz",
+      "resolved": "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz",
       "integrity": "sha1-itkpozk7rGJ5V6fl3kYjsGsOLOs=",
       "dev": true,
       "requires": {
@@ -6703,7 +6703,7 @@
       "dependencies": {
         "commander": {
           "version": "2.1.0",
-          "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.1.0.tgz?cache=0&sync_timestamp=1564195111889&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz",
           "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=",
           "dev": true
         }
@@ -7710,7 +7710,7 @@
     },
     "hash-base": {
       "version": "3.0.4",
-      "resolved": "https://registry.npm.taobao.org/hash-base/download/hash-base-3.0.4.tgz",
+      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
       "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
       "dev": true,
       "requires": {
@@ -7765,7 +7765,7 @@
     },
     "hmac-drbg": {
       "version": "1.0.1",
-      "resolved": "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz",
+      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
       "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
       "dev": true,
       "requires": {
@@ -7994,7 +7994,7 @@
     },
     "https-browserify": {
       "version": "1.0.0",
-      "resolved": "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz",
+      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
       "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
       "dev": true
     },
@@ -9224,7 +9224,7 @@
       "dependencies": {
         "find-cache-dir": {
           "version": "0.1.1",
-          "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-0.1.1.tgz",
+          "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
           "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
           "requires": {
             "commondir": "^1.0.1",
@@ -9234,7 +9234,7 @@
         },
         "find-up": {
           "version": "1.1.2",
-          "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-1.1.2.tgz",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
           "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
           "requires": {
             "path-exists": "^2.0.0",
@@ -9243,7 +9243,7 @@
         },
         "path-exists": {
           "version": "2.1.0",
-          "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
           "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
           "requires": {
             "pinkie-promise": "^2.0.0"
@@ -9251,7 +9251,7 @@
         },
         "pkg-dir": {
           "version": "1.0.0",
-          "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-1.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
           "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
           "requires": {
             "find-up": "^1.0.0"
@@ -9692,7 +9692,7 @@
     },
     "minimalistic-crypto-utils": {
       "version": "1.0.1",
-      "resolved": "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz",
+      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
       "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
       "dev": true
     },
@@ -10371,7 +10371,7 @@
     },
     "os-browserify": {
       "version": "0.3.0",
-      "resolved": "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz",
+      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
       "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
       "dev": true
     },
@@ -14573,7 +14573,7 @@
       "dependencies": {
         "inherits": {
           "version": "2.0.3",
-          "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.3.tgz",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
           "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
           "dev": true
         }

+ 2 - 2
HiTeachCE/Context/HttpGlobalExceptionInvoke.cs

@@ -110,9 +110,9 @@ namespace HiTeachCE.Context
             }
                 var data = new ErrorResponse<string>(bizCode, msg, devmsg);
                 context.Response.ContentType = Constants.CONTENT_TYPE_JSON;
-                //if (context.Response.HasStarted) {
+                if (context.Response.HasStarted) {
                 await context.Response.WriteAsync(JsonNetHelper.ToJson(data));
-                //}
+                }
 
             }
             /// <summary>

+ 5 - 5
HiTeachCE/Controllers/LoginController.cs

@@ -76,7 +76,7 @@ namespace HiTeachCE.Controllers
          
             string accessKey = BaseConfigModel.Configuration["DingAuth:appId"];
             string appSecret = BaseConfigModel.Configuration["DingAuth:appSecret"]; 
-            IDingTalkClient client = new DefaultDingTalkClient(BaseConfigModel.Configuration["DingAuth:appSecret:getuserinfo_bycode"]);
+            IDingTalkClient client = new DefaultDingTalkClient(BaseConfigModel.Configuration["DingAuth:getuserinfo_bycode"]);
             OapiSnsGetuserinfoBycodeRequest req = new OapiSnsGetuserinfoBycodeRequest();
             req.TmpAuthCode = request.@params;
             OapiSnsGetuserinfoBycodeResponse rsp = client.Execute(req, accessKey, appSecret);
@@ -371,7 +371,7 @@ namespace HiTeachCE.Controllers
         }
 
         /// <summary>
-        /// 初始化登录
+        /// 钉钉初始化登录
         /// </summary>
         /// <param name="request"></param>
         /// <returns></returns>
@@ -380,9 +380,9 @@ namespace HiTeachCE.Controllers
         {
             JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
             string appId = BaseConfigModel.Configuration["DingAuth:appId"];
-            string appSecret = BaseConfigModel.Configuration["DingAuth:appSecret"];
+          //  string appSecret = BaseConfigModel.Configuration["DingAuth:appSecret"];
             string callback = BaseConfigModel.Configuration["DingAuth:callback"];
-            return builder.Data(new { appId,appSecret,callback}).build();
+            return builder.Data(new { appId,callback}).build();
         }
 
         /// <summary>
@@ -397,7 +397,7 @@ namespace HiTeachCE.Controllers
             if (!string.IsNullOrEmpty(request.@params))
             {
                 var code = securityCode.GetRandomEnDigitalText(4).ToLower();
-                var imgbyte = securityCode.GetGifEnDigitalCodeByte(code);
+                var imgbyte = securityCode.GetEnDigitalCodeByte(code);
                 string base64 = "data:image/png;base64," + Convert.ToBase64String(imgbyte);
                 RedisHelper.HSet("captcha:" + request.@params, request.@params, code);
                 RedisHelper.Expire("captcha:" + request.@params, smsTTL);

+ 30 - 3
HiTeachCE/Controllers/MqttController.cs

@@ -11,6 +11,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Linq.Expressions;
 using System.Threading.Tasks;
+using TEAMModelOS;
 using TEAMModelOS.SDK.Context.Configuration;
 using TEAMModelOS.SDK.Context.Exception;
 using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
@@ -171,7 +172,32 @@ namespace HiTeachCE.Controllers
             {
                 if (RedisHelper.Exists("group:" + groupNum))
                 {
+                    Dictionary<string, MQTTMember> member = RedisHelper.HGetAll<MQTTMember>("group:" + groupNum);
+                    if (member != null) {
+                        foreach (string key in member.Keys)
+                        {
+                            if (member[key] != null && member[key].role .Contains("lecturer") && Role.Contains("lecturer") &&    Unionid != member[key].unionid)
+                            {
+                                throw new BizException("教室只能有一个创建者加入", ResponseCode.DATA_EXIST);
+                            }
+                        }
+                    }
                     dict = MqttInfo(deviceId, deviceId, groupNum, Unionid, Role);
+                    Dictionary<string, MQTTMember> members = RedisHelper.HGetAll<MQTTMember>("group:" + groupNum);
+                    List<MQTTMember> learners = new List<MQTTMember>();
+                    MQTTMember lecturer = null;
+                    foreach (string key in members.Keys) {
+                        if (members[key].role.Contains("lecturer"))
+                        {
+                            lecturer= members[key];
+                            
+                        }
+                        else {
+                            learners.Add(members[key]);
+                        }
+                    }
+                    dict.Add("lecturer", lecturer);
+                    dict.Add("learners", learners);
                 }
                 else
                 {
@@ -201,7 +227,7 @@ namespace HiTeachCE.Controllers
             Dictionary<string, string> connectInfo = new Dictionary<string, string>
             {
                 { "brokerHostName", brokerHostName  },
-                { "brokerHostNameWSS", "wss://" +brokerHostName+"/mqtt"} ,
+                { "brokerHostNameWSS", "wss://" +brokerHostName+"/mqtt/"} ,
                 { "clientID", deviceId },
                 //使用BCrypt加密
                 { "password",h1} ,
@@ -212,13 +238,14 @@ namespace HiTeachCE.Controllers
             Dictionary<string, string> publishTopic = BaseConfigModel.Configuration.GetSection("PublishTopic").Get<Dictionary<string, string>>();
             publishTopic["sendMsg"] = publishTopic["sendMsg"].Replace("{deviceId}", deviceId).Replace("{groupNum}", groupNum);
             dict.Add("mqtt", new Dictionary<string, object>() { { "connectInfo", connectInfo }, { "publishTopic", publishTopic }, { "subscribeTopic", subscribeTopic } });
+          
             List<string> topic = new List<string>();
             topic.AddRange(publishTopic.Values.ToList());
             topic.AddRange(subscribeTopic.Values.ToList());
             MQTTInfo mqtt = new MQTTInfo
             {
                 brokerHostName = brokerHostName,
-                brokerHostNameWSS = "wss://" + brokerHostName + "/mqtt",
+                brokerHostNameWSS = "wss://" + brokerHostName + "/mqtt/",
                 clientID = deviceId,
                 //使用BCrypt加密
                 password = h2,
@@ -230,7 +257,7 @@ namespace HiTeachCE.Controllers
                 clientId = ClientId,
                 deviceId = deviceId,
                 unionid = Unionid,
-                role = "lecturer",
+                role = Role,
                 groupNum = groupNum
             };
             RedisHelper.HSet("group:" + groupNum, deviceId, groupMember);

+ 0 - 1
HiTeachCE/Extension/Jwt/JwtAuth.cs

@@ -84,7 +84,6 @@ namespace HiTeachCE.Extension
                 };
             });
             if (services == null) throw new ArgumentNullException(nameof(services));
-
             // 1【授权】、这个和上边的异曲同工,好处就是不用在controller中,写多个 roles 。
             // 然后这么写 [Authorize(Policy = "Admin")]
             services.AddAuthorization(options =>

+ 9 - 46
HiTeachCE/Extension/Mqtt/MQTTExtension.cs

@@ -25,17 +25,6 @@ namespace HiTeachCE.Extension.Mqtt
                 builder.WithDefaultEndpointPort(3000);
                builder.WithConnectionValidator(c =>
                {
-                    //从IServiceCollection中构建     ServiceProvider, 用以使用注入访问数据库的服务
-                    //  var serprovider = services.BuildServiceProvider();
-
-                    //  _logger.LogInformation($" ClientId:{c.ClientId} Endpoint:{c.Endpoint} Username:{c.Username} Password:{c.Password} WillMessage:{c.WillMessage}");
-
-                    //if (c.ClientId.Length < 5)
-                    //{
-                    //    c.ReasonCode = MqttConnectReasonCode.ClientIdentifierNotValid;
-                    //    return;
-                    //}
-
                      
                     MQTTInfo info= RedisHelper.HGet<MQTTInfo>("mqtt:"+c.ClientId, c.ClientId);
                     if (info != null)
@@ -81,27 +70,15 @@ namespace HiTeachCE.Extension.Mqtt
                             context.AcceptPublish = true;
                         }
                         else
-                        {
-                            context.AcceptPublish = false;
+                        {///改变
+                           context.AcceptPublish = true;
                         }
                     }
-                    else {
-                        context.AcceptPublish = false;
+                    else {///改变
+                       context.AcceptPublish = true;
                     }
                      
-                    //if (MqttTopicFilterComparer.IsMatch(context.ApplicationMessage.Topic, "/myTopic/WithTimestamp/#"))
-                    //{
-                    //    context.ApplicationMessage.Payload = Encoding.UTF8.GetBytes(DateTime.Now.ToString("O"));
-                    //}
-
-                    //if (context.ApplicationMessage.Topic == "not_allowed_topic")
-                    //{
-                    //    context.AcceptPublish = false;
-                    //    context.CloseConnection = true;
-                    //}
-
-                    // _logger.Log(LogLevel.Information, $"clientId:{context.ClientId}, topic:{context.ApplicationMessage.Topic}");
-                    //  _logger.Log(LogLevel.Information, $"Payload:{Encoding.Default.GetString(context.ApplicationMessage.Payload)}");
+                   
                 })///订阅拦截验证
                 .WithSubscriptionInterceptor((context) =>
                {
@@ -124,27 +101,13 @@ namespace HiTeachCE.Extension.Mqtt
                             context.AcceptSubscription = true;
                         }
                         else
-                        {
-                            context.AcceptSubscription = false;
+                        {///改变
+                            context.AcceptSubscription = true;
                         }
                     }
-                    else {
-                        context.AcceptSubscription = false;
+                    else {///改变
+                       context.AcceptSubscription = true;
                     }
-                    
-                    //   context.ClientId
-                    //if (context.TopicFilter.Topic.StartsWith("admin/foo/bar") && context.ClientId != "theAdmin")
-                    //{
-                    //    context.AcceptSubscription = false;
-                    //}
-
-                    //if (context.TopicFilter.Topic.StartsWith("the/secret/stuff") && context.ClientId != "Imperator")
-                    //{
-                    //    context.AcceptSubscription = false;
-                    //    context.CloseConnection = true;
-                    //}
-
-                    // context.TopicFilter.Topic.start
                 });
            });
             services.AddMqttTcpServerAdapter();

+ 1 - 3
HiTeachCE/HiTeachCE.csproj

@@ -79,8 +79,6 @@
   </Target>
 
   <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties properties_4launchsettings_1json__JsonSchema="" />
-    </VisualStudio>
+    <VisualStudio><UserProperties appsettings_1json__JsonSchema="" properties_4launchsettings_1json__JsonSchema="" /></VisualStudio>
   </ProjectExtensions>
 </Project>

+ 6 - 0
HiTeachCE/Startup.cs

@@ -47,6 +47,12 @@ namespace HiTeachCE
         // This method gets called by the runtime. Use this method to add services to the container.
         public void ConfigureServices(IServiceCollection services)
         {
+            services.Configure<FormOptions>(x =>
+            {
+                x.ValueLengthLimit = int.MaxValue;
+                x.MultipartBodyLengthLimit = long.MaxValue; // In case of multipart
+                x.MultipartHeadersLengthLimit = int.MaxValue;
+            });
             services.AddControllersWithViews();
             //跨域设置
             services.AddCors();