sun-pc-linux 5 tháng trước cách đây
mục cha
commit
80016edd3a
39 tập tin đã thay đổi với 202 bổ sung192 xóa
  1. 0 15
      pack-nrhe/mongo-migrations/1_apps.down.json
  2. 0 13
      pack-nrhe/mongo-migrations/1_apps.up.json
  3. 0 20
      pack-nrhe/nginx/www/admin.html
  4. 0 0
      pack-nrhe/nginx/www/assets/Col-7508b53a.js
  5. 0 0
      pack-nrhe/nginx/www/assets/Form-46ad1153.js
  6. 0 1
      pack-nrhe/nginx/www/assets/admin-4be52a10.js
  7. 0 69
      pack-nrhe/nginx/www/assets/bg_admin_login-d7103c44.svg
  8. 0 1
      pack-nrhe/nginx/www/assets/collapseMotion-14d9ada7.js
  9. 0 0
      pack-nrhe/nginx/www/assets/dayjs.min-486c7a11.js
  10. 0 0
      pack-nrhe/nginx/www/assets/image-e1abec51.js
  11. 0 0
      pack-nrhe/nginx/www/assets/index-00053b44.js
  12. 0 0
      pack-nrhe/nginx/www/assets/index-0c31c85b.js
  13. 0 0
      pack-nrhe/nginx/www/assets/index-149ee1ea.css
  14. 0 0
      pack-nrhe/nginx/www/assets/index-1cdd5ad1.js
  15. 0 0
      pack-nrhe/nginx/www/assets/index-2d379a5b.js
  16. 0 1
      pack-nrhe/nginx/www/assets/index-32f2804b.css
  17. 0 0
      pack-nrhe/nginx/www/assets/index-33c9ec48.js
  18. 0 0
      pack-nrhe/nginx/www/assets/index-55e8f3dc.js
  19. 0 0
      pack-nrhe/nginx/www/assets/index-700f8bec.js
  20. 0 1
      pack-nrhe/nginx/www/assets/index-876b3752.css
  21. 0 0
      pack-nrhe/nginx/www/assets/index-a5a98795.js
  22. 0 0
      pack-nrhe/nginx/www/assets/index-b08a7613.js
  23. 0 1
      pack-nrhe/nginx/www/assets/index-b1663414.css
  24. 0 0
      pack-nrhe/nginx/www/assets/index-ba6da956.js
  25. 0 1
      pack-nrhe/nginx/www/assets/index-d373ff0b.css
  26. 0 1
      pack-nrhe/nginx/www/assets/index-f34e8151.js
  27. 0 0
      pack-nrhe/nginx/www/assets/index-f79a4cc5.js
  28. 0 0
      pack-nrhe/nginx/www/assets/index-fae1c727.js
  29. BIN
      pack-nrhe/nginx/www/assets/login_bg-090e5069.png
  30. 0 0
      pack-nrhe/nginx/www/assets/main-4801cc52.js
  31. 0 0
      pack-nrhe/nginx/www/assets/main-f8bd3d55.css
  32. BIN
      pack-nrhe/nginx/www/assets/starter_bg-f0e05934.png
  33. 0 0
      pack-nrhe/nginx/www/assets/useFlexGapSupport-310043de.js
  34. BIN
      pack-nrhe/nginx/www/favicon.ico
  35. 0 53
      pack-nrhe/nginx/www/index.html
  36. 0 3
      src/.gitignore
  37. 168 0
      src/api/test.go
  38. 10 3
      src/go.mod
  39. 24 9
      src/go.sum

+ 0 - 15
pack-nrhe/mongo-migrations/1_apps.down.json

@@ -1,15 +0,0 @@
-[
-    {
-        "delete": "apps",
-        "deletes": [
-           {
-             "q" : {
-                "_id": {
-                    "$oid": "637dde15ad5446a2050456f1"
-                }
-             },
-             "limit" : 1
-           }
-        ]
-     }
-]

+ 0 - 13
pack-nrhe/mongo-migrations/1_apps.up.json

@@ -1,13 +0,0 @@
-[
-    {
-        "insert": "apps",
-        "documents": [ {
-            "_id": {
-                "$oid": "637dde15ad5446a2050456f1"
-            },
-            "name": "cr-svc",
-            "key": "cr-svc",
-            "restrict": false
-        }]
-     }
-]

+ 0 - 20
pack-nrhe/nginx/www/admin.html

@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <link rel="shortcut icon " type="images/x-icon" href="./favicon.ico" />
-    <meta
-      name="viewport"
-      content="width=device-width, initial-scale=1.0,user-scalable=no"
-    />
-    <title>中国中车--成都7号线虚拟仿真教学系统--后台管理</title>
-    <script type="module" crossorigin src="./assets/admin-4be52a10.js"></script>
-    <link rel="modulepreload" crossorigin href="./assets/main-4801cc52.js">
-    <link rel="modulepreload" crossorigin href="./assets/index-f79a4cc5.js">
-    <link rel="stylesheet" href="./assets/main-f8bd3d55.css">
-  </head>
-  <body>
-    <div id="app"></div>
-    
-  </body>
-</html>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/Col-7508b53a.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/Form-46ad1153.js


+ 0 - 1
pack-nrhe/nginx/www/assets/admin-4be52a10.js

@@ -1 +0,0 @@
-import{d as t,c as e,r,P as o,a as s,b as u}from"./main-4801cc52.js";import{u as a,r as n}from"./index-f79a4cc5.js";const p=t(()=>(a().initAuth(),()=>e(o,null,{default:()=>[e(r("router-view"),null,null)]})));s(p).use(n).use(u()).mount("#app");

+ 0 - 69
pack-nrhe/nginx/www/assets/bg_admin_login-d7103c44.svg

@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="1361px" height="609px" viewBox="0 0 1361 609" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
-    <title>Group 21</title>
-    <desc>Created with Sketch.</desc>
-    <defs></defs>
-    <g id="Ant-Design-Pro-3.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="账户密码登录-校验" transform="translate(-79.000000, -82.000000)">
-            <g id="Group-21" transform="translate(77.000000, 73.000000)">
-                <g id="Group-18" opacity="0.8" transform="translate(74.901416, 569.699158) rotate(-7.000000) translate(-74.901416, -569.699158) translate(4.901416, 525.199158)">
-                    <ellipse id="Oval-11" fill="#CFDAE6" opacity="0.25" cx="63.5748792" cy="32.468367" rx="21.7830479" ry="21.766008"></ellipse>
-                    <ellipse id="Oval-3" fill="#CFDAE6" opacity="0.599999964" cx="5.98746479" cy="13.8668601" rx="5.2173913" ry="5.21330997"></ellipse>
-                    <path d="M38.1354514,88.3520215 C43.8984227,88.3520215 48.570234,83.6838647 48.570234,77.9254015 C48.570234,72.1669383 43.8984227,67.4987816 38.1354514,67.4987816 C32.3724801,67.4987816 27.7006688,72.1669383 27.7006688,77.9254015 C27.7006688,83.6838647 32.3724801,88.3520215 38.1354514,88.3520215 Z" id="Oval-3-Copy" fill="#CFDAE6" opacity="0.45"></path>
-                    <path d="M64.2775582,33.1704963 L119.185836,16.5654915" id="Path-12" stroke="#CFDAE6" stroke-width="1.73913043" stroke-linecap="round" stroke-linejoin="round"></path>
-                    <path d="M42.1431708,26.5002681 L7.71190162,14.5640702" id="Path-16" stroke="#E0B4B7" stroke-width="0.702678964" opacity="0.7" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.405357899873153,2.108036953469981"></path>
-                    <path d="M63.9262187,33.521561 L43.6721326,69.3250951" id="Path-15" stroke="#BACAD9" stroke-width="0.702678964" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.405357899873153,2.108036953469981"></path>
-                    <g id="Group-17" transform="translate(126.850922, 13.543654) rotate(30.000000) translate(-126.850922, -13.543654) translate(117.285705, 4.381889)" fill="#CFDAE6">
-                        <ellipse id="Oval-4" opacity="0.45" cx="9.13482653" cy="9.12768076" rx="9.13482653" ry="9.12768076"></ellipse>
-                        <path d="M18.2696531,18.2553615 C18.2696531,13.2142826 14.1798519,9.12768076 9.13482653,9.12768076 C4.08980114,9.12768076 0,13.2142826 0,18.2553615 L18.2696531,18.2553615 Z" id="Oval-4" transform="translate(9.134827, 13.691521) scale(-1, -1) translate(-9.134827, -13.691521) "></path>
-                    </g>
-                </g>
-                <g id="Group-14" transform="translate(216.294700, 123.725600) rotate(-5.000000) translate(-216.294700, -123.725600) translate(106.294700, 35.225600)">
-                    <ellipse id="Oval-2" fill="#CFDAE6" opacity="0.25" cx="29.1176471" cy="29.1402439" rx="29.1176471" ry="29.1402439"></ellipse>
-                    <ellipse id="Oval-2" fill="#CFDAE6" opacity="0.3" cx="29.1176471" cy="29.1402439" rx="21.5686275" ry="21.5853659"></ellipse>
-                    <ellipse id="Oval-2-Copy" stroke="#CFDAE6" opacity="0.4" cx="179.019608" cy="138.146341" rx="23.7254902" ry="23.7439024"></ellipse>
-                    <ellipse id="Oval-2" fill="#BACAD9" opacity="0.5" cx="29.1176471" cy="29.1402439" rx="10.7843137" ry="10.7926829"></ellipse>
-                    <path d="M29.1176471,39.9329268 L29.1176471,18.347561 C23.1616351,18.347561 18.3333333,23.1796097 18.3333333,29.1402439 C18.3333333,35.1008781 23.1616351,39.9329268 29.1176471,39.9329268 Z" id="Oval-2" fill="#BACAD9"></path>
-                    <g id="Group-9" opacity="0.45" transform="translate(172.000000, 131.000000)" fill="#E6A1A6">
-                        <ellipse id="Oval-2-Copy-2" cx="7.01960784" cy="7.14634146" rx="6.47058824" ry="6.47560976"></ellipse>
-                        <path d="M0.549019608,13.6219512 C4.12262681,13.6219512 7.01960784,10.722722 7.01960784,7.14634146 C7.01960784,3.56996095 4.12262681,0.670731707 0.549019608,0.670731707 L0.549019608,13.6219512 Z" id="Oval-2-Copy-2" transform="translate(3.784314, 7.146341) scale(-1, 1) translate(-3.784314, -7.146341) "></path>
-                    </g>
-                    <ellipse id="Oval-10" fill="#CFDAE6" cx="218.382353" cy="138.685976" rx="1.61764706" ry="1.61890244"></ellipse>
-                    <ellipse id="Oval-10-Copy-2" fill="#E0B4B7" opacity="0.35" cx="179.558824" cy="175.381098" rx="1.61764706" ry="1.61890244"></ellipse>
-                    <ellipse id="Oval-10-Copy" fill="#E0B4B7" opacity="0.35" cx="180.098039" cy="102.530488" rx="2.15686275" ry="2.15853659"></ellipse>
-                    <path d="M28.9985381,29.9671598 L171.151018,132.876024" id="Path-11" stroke="#CFDAE6" opacity="0.8"></path>
-                </g>
-                <g id="Group-10" opacity="0.799999952" transform="translate(1054.100635, 36.659317) rotate(-11.000000) translate(-1054.100635, -36.659317) translate(1026.600635, 4.659317)">
-                    <ellipse id="Oval-7" stroke="#CFDAE6" stroke-width="0.941176471" cx="43.8135593" cy="32" rx="11.1864407" ry="11.2941176"></ellipse>
-                    <g id="Group-12" transform="translate(34.596774, 23.111111)" fill="#BACAD9">
-                        <ellipse id="Oval-7" opacity="0.45" cx="9.18534718" cy="8.88888889" rx="8.47457627" ry="8.55614973"></ellipse>
-                        <path d="M9.18534718,17.4450386 C13.8657264,17.4450386 17.6599235,13.6143199 17.6599235,8.88888889 C17.6599235,4.16345787 13.8657264,0.332739156 9.18534718,0.332739156 L9.18534718,17.4450386 Z" id="Oval-7"></path>
-                    </g>
-                    <path d="M34.6597385,24.809694 L5.71666084,4.76878945" id="Path-2" stroke="#CFDAE6" stroke-width="0.941176471"></path>
-                    <ellipse id="Oval" stroke="#CFDAE6" stroke-width="0.941176471" cx="3.26271186" cy="3.29411765" rx="3.26271186" ry="3.29411765"></ellipse>
-                    <ellipse id="Oval-Copy" fill="#F7E1AD" cx="2.79661017" cy="61.1764706" rx="2.79661017" ry="2.82352941"></ellipse>
-                    <path d="M34.6312443,39.2922712 L5.06366663,59.785082" id="Path-10" stroke="#CFDAE6" stroke-width="0.941176471"></path>
-                </g>
-                <g id="Group-19" opacity="0.33" transform="translate(1282.537219, 446.502867) rotate(-10.000000) translate(-1282.537219, -446.502867) translate(1142.537219, 327.502867)">
-                    <g id="Group-17" transform="translate(141.333539, 104.502742) rotate(275.000000) translate(-141.333539, -104.502742) translate(129.333539, 92.502742)" fill="#BACAD9">
-                        <circle id="Oval-4" opacity="0.45" cx="11.6666667" cy="11.6666667" r="11.6666667"></circle>
-                        <path d="M23.3333333,23.3333333 C23.3333333,16.8900113 18.1099887,11.6666667 11.6666667,11.6666667 C5.22334459,11.6666667 0,16.8900113 0,23.3333333 L23.3333333,23.3333333 Z" id="Oval-4" transform="translate(11.666667, 17.500000) scale(-1, -1) translate(-11.666667, -17.500000) "></path>
-                    </g>
-                    <circle id="Oval-5-Copy-6" fill="#CFDAE6" cx="201.833333" cy="87.5" r="5.83333333"></circle>
-                    <path d="M143.5,88.8126685 L155.070501,17.6038544" id="Path-17" stroke="#BACAD9" stroke-width="1.16666667"></path>
-                    <path d="M17.5,37.3333333 L127.466252,97.6449735" id="Path-18" stroke="#BACAD9" stroke-width="1.16666667"></path>
-                    <polyline id="Path-19" stroke="#CFDAE6" stroke-width="1.16666667" points="143.902597 120.302281 174.935455 231.571342 38.5 147.510847 126.366941 110.833333"></polyline>
-                    <path d="M159.833333,99.7453842 L195.416667,89.25" id="Path-20" stroke="#E0B4B7" stroke-width="1.16666667" opacity="0.6"></path>
-                    <path d="M205.333333,82.1372105 L238.719406,36.1666667" id="Path-24" stroke="#BACAD9" stroke-width="1.16666667"></path>
-                    <path d="M266.723424,132.231988 L207.083333,90.4166667" id="Path-25" stroke="#CFDAE6" stroke-width="1.16666667"></path>
-                    <circle id="Oval-5" fill="#C1D1E0" cx="156.916667" cy="8.75" r="8.75"></circle>
-                    <circle id="Oval-5-Copy-3" fill="#C1D1E0" cx="39.0833333" cy="148.75" r="5.25"></circle>
-                    <circle id="Oval-5-Copy-2" fill-opacity="0.6" fill="#D1DEED" cx="8.75" cy="33.25" r="8.75"></circle>
-                    <circle id="Oval-5-Copy-4" fill-opacity="0.6" fill="#D1DEED" cx="243.833333" cy="30.3333333" r="5.83333333"></circle>
-                    <circle id="Oval-5-Copy-5" fill="#E0B4B7" cx="175.583333" cy="232.75" r="5.25"></circle>
-                </g>
-            </g>
-        </g>
-    </g>
-</svg>

+ 0 - 1
pack-nrhe/nginx/www/assets/collapseMotion-14d9ada7.js

@@ -1 +0,0 @@
-import{s as a,T as u,b8 as h,a0 as v,aA as g}from"./main-4801cc52.js";var o=Symbol("SizeProvider"),I=function(t){var i=u("configProvider",h),s=a(function(){return t.size||i.componentSize});return v(o,s),s},P=function(t){var i=t?a(function(){return t.size}):u(o,a(function(){return"default"}));return i};function p(e,t,i,s){for(var n=e.length,r=i+(s?1:-1);s?r--:++r<n;)if(t(e[r],r,e))return r;return-1}function m(e){return e!==e}function y(e,t,i){for(var s=i-1,n=e.length;++s<n;)if(e[s]===t)return s;return-1}function x(e,t,i){return t===t?y(e,t,i):p(e,m,i)}function S(e,t){var i=e==null?0:e.length;return!!i&&x(e,t,0)>-1}function b(e,t,i){for(var s=-1,n=e==null?0:e.length;++s<n;)if(i(t,e[s]))return!0;return!1}function f(e,t){if(e.classList)return e.classList.contains(t);var i=e.className;return" ".concat(i," ").indexOf(" ".concat(t," "))>-1}function c(e,t){e.classList?e.classList.add(t):f(e,t)||(e.className="".concat(e.className," ").concat(t))}function l(e,t){if(e.classList)e.classList.remove(t);else if(f(e,t)){var i=e.className;e.className=" ".concat(i," ").replace(" ".concat(t," ")," ")}}var L=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"ant-motion-collapse",i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return{name:t,appear:i,css:!0,onBeforeEnter:function(n){n.style.height="0px",n.style.opacity="0",c(n,t)},onEnter:function(n){g(function(){n.style.height="".concat(n.scrollHeight,"px"),n.style.opacity="1"})},onAfterEnter:function(n){n&&(l(n,t),n.style.height=null,n.style.opacity=null)},onBeforeLeave:function(n){c(n,t),n.style.height="".concat(n.offsetHeight,"px"),n.style.opacity=null},onLeave:function(n){setTimeout(function(){n.style.height="0px",n.style.opacity="0"})},onAfterLeave:function(n){n&&(l(n,t),n.style&&(n.style.height=null,n.style.opacity=null))}}};const E=L;export{I as a,S as b,E as c,b as d,p as e,P as u};

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/dayjs.min-486c7a11.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/image-e1abec51.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-00053b44.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-0c31c85b.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-149ee1ea.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-1cdd5ad1.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-2d379a5b.js


+ 0 - 1
pack-nrhe/nginx/www/assets/index-32f2804b.css

@@ -1 +0,0 @@
-.iv8jxc8{width:100%;height:100%;color:#343434;background-color:#f2f2f2;font-size:24px;border-radius:2px;cursor:pointer}.iv8jxc8 .wapper{width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.iv8jxc8 .file{padding:24px 0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.iv8jxc8 .file .up_txt{margin-top:10px;font-size:14px;color:#343434}.iv8jxc8 .no_value{padding:24px 0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.iv8jxc8 .no_value .up_txt{margin-top:10px;font-size:14px;color:#343434}.m53krek{width:400px}.m53krek .radio_g{width:100%;text-align:center;margin-bottom:24px}.m53krek .select_inp,.m53krek .select_inp input{cursor:pointer}.pfvoc72 .banner_table .cover_img{max-width:300px;height:100px;object-fit:contain}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-33c9ec48.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-55e8f3dc.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-700f8bec.js


+ 0 - 1
pack-nrhe/nginx/www/assets/index-876b3752.css

@@ -1 +0,0 @@
-.mlgg4eb a{display:block}.pq3nqh9{height:100vh}.pq3nqh9 .ant-layout-header{position:fixed;left:0;top:0;width:100%;z-index:3;padding:0 20px}.pq3nqh9 .page_content{height:100%;width:100%;padding:88px 24px 24px 224px}.pq3nqh9 .page_content .ant-page-header{padding:0 0 15px}.sr2c0hp{position:fixed;left:0;top:0;padding-top:64px;z-index:2;overflow-y:auto;overflow-x:hidden;height:100%}.sr2c0hp.ant-layout-sider{background-color:#fff;border-right:1px solid #f0f0f0}.sr2c0hp .ant-menu-inline{border-right:none}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-a5a98795.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-b08a7613.js


+ 0 - 1
pack-nrhe/nginx/www/assets/index-b1663414.css

@@ -1 +0,0 @@
-.h1o4yyee{padding:20px;height:100%;overflow-y:auto}.eskyc9u{max-height:500px;overflow-y:auto;overflow-x:hidden}.eskyc9u .ant-col{padding-bottom:6px;border-bottom:1px solid #e5e5e5}.m9za2m9{width:400px}.m9za2m9 .radio_g{width:100%;text-align:center;margin-bottom:24px}.m9za2m9 .options_items .ant-input-group-wrapper{margin-bottom:10px}.m9za2m9 .options_items .ant-input-group-wrapper:last-child{margin-bottom:0}.m9za2m9 .options_items .ant-input-group-addon{width:36px}.m9za2m9 .select_inp,.m9za2m9 .select_inp input{cursor:pointer}.pwd2bxw .banner_table .cover_img{max-width:300px;height:100px;object-fit:contain}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-ba6da956.js


+ 0 - 1
pack-nrhe/nginx/www/assets/index-d373ff0b.css

@@ -1 +0,0 @@
-.p1fwmfaj{height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;background:url(./bg_admin_login-d7103c44.svg) no-repeat center/contain}.p1fwmfaj .content{width:100%;max-width:400px;margin:0 auto;padding:20px 30px;background:#f9f9f9 url(./login_bg-090e5069.png) no-repeat center top/100% 150px;border-radius:8px;border:1px solid #333}.p1fwmfaj .logo{width:80px;height:80px;line-height:80px;text-align:center;background-color:#fff;box-shadow:0 3px 24px 1px #0000001a;border-radius:10px;margin:0 auto 10px}.p1fwmfaj .logo img{display:inline;height:40px;object-fit:contain}.p1fwmfaj .title{text-align:center;font-size:18px;color:#fff;margin-bottom:30px}.p1fwmfaj .login_btn{background-color:#e35757;color:#fff}.p1fwmfaj .login_btn:hover{border-color:#e35757}

+ 0 - 1
pack-nrhe/nginx/www/assets/index-f34e8151.js

@@ -1 +0,0 @@
-import{g as v}from"./image-e1abec51.js";import{u as w}from"./index-f79a4cc5.js";import{d as h,f as u,c as e,k as l,D as s,I as n,B as x}from"./main-4801cc52.js";import{F as o,R as I,a as c}from"./Form-46ad1153.js";import"./useFlexGapSupport-310043de.js";import"./Col-7508b53a.js";import"./collapseMotion-14d9ada7.js";const y={wrapperCol:{span:24}},B={wrapperCol:{span:24}},N=h({setup(){const d=w(),i=u({loading:!1,loginType:"default"}),t=u({account:"",password:"",role:"admin"}),m=u({account:[{required:!0,message:"请输入正确的账号",trigger:"change"}],password:[{required:!0,message:"请输入正确的密码",trigger:"change"}],role:[{required:!0,message:"角色不能为空",trigger:"change"}]}),{validate:p,validateInfos:r}=o.useForm(t,m);async function g(){p().then(a=>{const f={password:a.password,role:a.role,loginName:a.account};d.passwordLogin(f)})}return()=>e("div",{class:F},[e("div",{class:"content"},[e("div",{class:"logo"},[e("img",{src:v("logo.png")},null)]),e("div",{class:"title"},[l("后台管理系统")]),e(o,s(y,{name:"basic"}),{default:()=>[e(o.Item,s({name:"account"},r.account),{default:()=>[e(n,{placeholder:"请输入账号",value:t.account,"onUpdate:value":a=>t.account=a,maxlength:30},null)]}),e(o.Item,s({name:"password"},r.password),{default:()=>[e(n.Password,{placeholder:"请输入密码",value:t.password,"onUpdate:value":a=>t.password=a,maxlength:18},null)]}),e(o.Item,s({name:"role"},r.role),{default:()=>[e(I,{class:"flex justify-center w-full ",value:t.role,"onUpdate:value":a=>t.role=a},{default:()=>[e("div",{class:"flex-1 text-center"},[e(c,{value:"teacher"},{default:()=>[l("教员")]})]),e("div",{class:"flex-1 text-center"},[e(c,{value:"admin"},{default:()=>[l("管理员")]})])]})]}),e(o.Item,s(B,{style:{marginBottom:0}}),{default:()=>[e(x,{htmlType:"submit",block:!0,class:"login_btn",size:"large",loading:i.loading,onClick:g},{default:()=>[l("登录")]})]})]})])])}}),F="p1fwmfaj";export{N as default};

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-f79a4cc5.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/index-fae1c727.js


BIN
pack-nrhe/nginx/www/assets/login_bg-090e5069.png


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/main-4801cc52.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/main-f8bd3d55.css


BIN
pack-nrhe/nginx/www/assets/starter_bg-f0e05934.png


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
pack-nrhe/nginx/www/assets/useFlexGapSupport-310043de.js


BIN
pack-nrhe/nginx/www/favicon.ico


+ 0 - 53
pack-nrhe/nginx/www/index.html

@@ -1,53 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <link rel="shortcut icon " type="images/x-icon" href="./favicon.ico" />
-    <meta
-      name="viewport"
-      content="width=device-width, initial-scale=1.0,user-scalable=no"
-    />
-    <title>中国中车--成都7号线虚拟仿真教学系统</title>
-    <script>
-      (function setRootFont() {
-        var _self = window;
-        _self.selfFontSize = undefined;
-        _self.width = 1120; //设置默认最大宽度
-        _self.fontSize = 100; //默认字体大小
-        _self.widthProportion = function () {
-          var clientWidth =
-            document.documentElement.clientWidth > 1120
-              ? 1120
-              : document.documentElement.clientWidth;
-          var p = clientWidth / _self.width;
-          return p;
-        };
-
-        _self.changePage = function () {
-          var w = _self.widthProportion();
-          _self.selfFontSize = w * _self.fontSize;
-
-          document
-            .getElementsByTagName("html")[0]
-            .setAttribute("style", "font-size:" + _self.selfFontSize + "px");
-        };
-
-        _self.changePage();
-        window.addEventListener(
-          "resize",
-          function () {
-            _self.changePage();
-          },
-          false
-        );
-      })();
-    </script>
-    <script type="module" crossorigin src="./assets/index-700f8bec.js"></script>
-    <link rel="modulepreload" crossorigin href="./assets/main-4801cc52.js">
-    <link rel="stylesheet" href="./assets/main-f8bd3d55.css">
-  </head>
-  <body>
-    <div id="app"></div>
-    
-  </body>
-</html>

+ 0 - 3
src/.gitignore

@@ -1,5 +1,2 @@
 local*
 *.log
-images
-assets
-package

+ 168 - 0
src/api/test.go

@@ -0,0 +1,168 @@
+package api
+
+import (
+	"errors"
+	"fmt"
+	"net/url"
+	"nrhe-train/db/repo"
+	"nrhe-train/log"
+	"strconv"
+	"time"
+
+	"github.com/gin-gonic/gin"
+	"github.com/xuri/excelize/v2"
+	"go.mongodb.org/mongo-driver/bson"
+)
+
+// 导入试题
+func ImportTest(c *gin.Context, apictx *ApiSession) (interface{}, error) {
+	isAdmin, err := IsAdmin(c, apictx)
+	if err != nil {
+		return nil, err
+	}
+	if !isAdmin {
+		return nil, errors.New("没有权限")
+	}
+	db := c.Param("scope")
+	if len(db) == 0 {
+		return nil, errors.New("scope不能为空")
+	}
+	file, _, err := c.Request.FormFile("file")
+	if err != nil {
+		return nil, errors.New("文件错误")
+	}
+	excel, err := excelize.OpenReader(file)
+	if err != nil {
+		return nil, err
+	}
+	excelIndex := excel.GetActiveSheetIndex()
+	sheetName := excel.GetSheetName(excelIndex)
+	tests, err := excel.GetRows(sheetName)
+	if err != nil {
+		return nil, err
+	}
+	errors := []string{}
+
+	if len(tests) > 0 {
+		for index, ts := range tests {
+			rowNum := index + 1
+			// 标题行
+			if index == 0 {
+				continue
+			}
+			// 表头
+			if index == 1 {
+				continue
+			}
+			// 去除可能的空行
+			if len(ts) == 0 {
+				continue
+			}
+			// 去除可能的空行
+			if len(ts[0]) == 0 {
+				continue
+			}
+			// 问题(content) 试题类型(type)  (options)选项A 选项B 选项C 选项D 分值(score) (answer)答案
+			test := &model.Test{}
+			test.Content = ts[0]
+			test.Uid = apictx.User.ID
+			test.Type = ts[1]
+			socre, _ := strconv.Atoi(ts[6])
+			test.Socre = &socre
+			test.Answer = ts[7]
+
+			if ts[1] == "选择" {
+				test.Options = map[string]string{
+					"A": ts[2],
+					"B": ts[3],
+					"C": ts[4],
+					"D": ts[5],
+				}
+			}
+			if ts[1] == "判断" {
+				test.Options = map[string]string{
+					"T": "正确",
+					"F": "错误",
+				}
+			}
+			test.CreateTime = time.Now()
+			test.UpdateTime = time.Now()
+
+			_, err = repo.RepoAddDbDoc(apictx.CreateRepoCtx(), db, repo.CollectionTest, test)
+			if err != nil {
+				errors = append(errors, fmt.Sprintf("第%d行错误: %s", rowNum, "保存数据失败, 请检查数据格式是否正确"))
+				log.Error(err)
+			}
+
+		}
+	}
+
+	return errors, nil
+}
+
+// 导出试题
+func ExportTest(c *gin.Context, apictx *ApiSession) (interface{}, error) {
+	isAdmin, err := IsAdmin(c, apictx)
+	if err != nil {
+		return nil, err
+	}
+	if !isAdmin {
+		return nil, errors.New("没有权限")
+	}
+	db := c.Param("scope")
+	if len(db) == 0 {
+		return nil, errors.New("scope不能为空")
+	}
+	f := excelize.NewFile()
+	index, _ := f.NewSheet("Sheet1")
+	f.SetActiveSheet(index)
+	f.SetDefaultFont("宋体")
+
+	testExcel := NewTestExcel(f)
+	testExcel.Title = fmt.Sprintf("%s-考核试题", db)
+
+	_, _, query := UtilQueryPageSize(c)
+	// 获取试题列表
+	tests := make([]*model.Test, 0)
+	err = repo.RepoSeachDocs(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
+		Db:          db,
+		CollectName: repo.CollectionTest,
+		Query:       query,
+		Sort:        bson.M{"createTime": 1},
+	}, &tests)
+	if err != nil {
+		return nil, err
+	}
+	testExcel.Content = tests
+	fmt.Println(len(tests))
+	testExcel.Draws()
+	fileName := url.PathEscape(fmt.Sprintf("%s-考核试题.xlsx", db))
+	c.Header("Content-Type", "application/octet-stream")
+	c.Header("Content-Disposition", "attachment; filename="+fileName)
+	c.Header("Content-Transfer-Encoding", "binary")
+
+	err = f.Write(c.Writer)
+	if err != nil {
+		return nil, err
+	}
+
+	return nil, nil
+}
+
+// 下载试题模板
+func TestTmplate(c *gin.Context, apictx *ApiSession) (interface{}, error) {
+	db := c.Param("scope")
+	fmt.Println(db)
+	filename := "考核试题模板.xlsx"
+	// url.PathEscape将字符串中的特殊字符进行编码,使其符合URL规范
+	filename = url.PathEscape(filename)
+
+	// 设置下载的文件名
+	c.Writer.Header().Add("Content-Disposition", fmt.Sprintf("attachment; filename=%s", filename))
+
+	// 设置文件类型
+	c.Writer.Header().Add("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+
+	c.File(TESTS_TMPLATE_FILE)
+	return nil, nil
+}

+ 10 - 3
src/go.mod

@@ -9,6 +9,7 @@ require (
 	github.com/go-redis/redis/v8 v8.11.5
 	github.com/natefinch/lumberjack v2.0.0+incompatible
 	github.com/spf13/viper v1.9.0
+	github.com/xuri/excelize/v2 v2.8.1
 	go.mongodb.org/mongo-driver v1.11.1
 	go.uber.org/dig v1.12.0
 	go.uber.org/zap v1.17.0
@@ -40,6 +41,7 @@ require (
 	github.com/mitchellh/mapstructure v1.4.2 // indirect
 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 	github.com/modern-go/reflect2 v1.0.2 // indirect
+	github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
 	github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
 	github.com/nats-io/jwt/v2 v2.3.0 // indirect
 	github.com/nats-io/nats.go v1.22.1 // indirect
@@ -47,6 +49,8 @@ require (
 	github.com/nats-io/nuid v1.0.1 // indirect
 	github.com/pelletier/go-toml v1.9.4 // indirect
 	github.com/pkg/errors v0.9.1 // indirect
+	github.com/richardlehane/mscfb v1.0.4 // indirect
+	github.com/richardlehane/msoleps v1.0.3 // indirect
 	github.com/spf13/afero v1.6.0 // indirect
 	github.com/spf13/cast v1.4.1 // indirect
 	github.com/spf13/jwalterweatherman v1.1.0 // indirect
@@ -56,13 +60,16 @@ require (
 	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
 	github.com/xdg-go/scram v1.1.2 // indirect
 	github.com/xdg-go/stringprep v1.0.4 // indirect
+	github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 // indirect
+	github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 // indirect
 	github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
 	go.uber.org/atomic v1.10.0 // indirect
 	go.uber.org/multierr v1.6.0 // indirect
-	golang.org/x/crypto v0.4.0 // indirect
+	golang.org/x/crypto v0.19.0 // indirect
+	golang.org/x/net v0.21.0 // indirect
 	golang.org/x/sync v0.1.0 // indirect
-	golang.org/x/sys v0.3.0 // indirect
-	golang.org/x/text v0.5.0 // indirect
+	golang.org/x/sys v0.17.0 // indirect
+	golang.org/x/text v0.14.0 // indirect
 	google.golang.org/protobuf v1.28.1 // indirect
 	gopkg.in/ini.v1 v1.66.6 // indirect
 	gopkg.in/yaml.v2 v2.4.0 // indirect

+ 24 - 9
src/go.sum

@@ -889,6 +889,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN
 github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
 github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
 github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
+github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
 github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
 github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
 github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
@@ -1033,6 +1035,11 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1
 github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
 github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
 github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
+github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
+github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
+github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
+github.com/richardlehane/msoleps v1.0.3 h1:aznSZzrwYRl3rLKRT3gUk9am7T/mLNSnJINvN0AQoVM=
+github.com/richardlehane/msoleps v1.0.3/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
 github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
 github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
@@ -1112,7 +1119,7 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
+github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
 github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
 github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
 github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
@@ -1164,6 +1171,12 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:
 github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
 github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
+github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 h1:Chd9DkqERQQuHpXjR/HSV1jLZA6uaoiwwH3vSuF3IW0=
+github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
+github.com/xuri/excelize/v2 v2.8.1 h1:pZLMEwK8ep+CLIUWpWmvW8IWE/yxqG0I1xcN6cVMGuQ=
+github.com/xuri/excelize/v2 v2.8.1/go.mod h1:oli1E4C3Pa5RXg1TBXn4ENCXDV5JUMlBluUhG7c+CEE=
+github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 h1:qhbILQo1K3mphbwKh1vNm4oGezE1eF9fQWmNiIpSfI4=
+github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
 github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
 github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a h1:fZHgsYlfvtyqToslyjUt3VOPF4J7aK/3MPcK7xp3PDk=
 github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/R083muKhosV54bj5niojjWZvU8xrevuH4=
@@ -1268,8 +1281,8 @@ golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm
 golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8=
-golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80=
+golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
+golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
 golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1293,6 +1306,7 @@ golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+o
 golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
 golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
 golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
+golang.org/x/image v0.14.0 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4=
 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
 golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -1388,7 +1402,8 @@ golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qx
 golang.org/x/net v0.0.0-20220111093109-d55c255bac03/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU=
+golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
+golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
 golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -1548,8 +1563,8 @@ golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20220317061510-51cd9980dadf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
-golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
+golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -1565,8 +1580,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
-golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
 golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1657,8 +1672,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
 golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
 golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
 golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
 golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác