diff --git a/README.md b/README.md
index f697f1d..1303606 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,2 @@
-# document
+# document 文档
-文档
\ No newline at end of file
diff --git a/代码块/C#/bigdatacache.snippet b/代码块/C#/bigdatacache.snippet
new file mode 100644
index 0000000..48441f9
--- /dev/null
+++ b/代码块/C#/bigdatacache.snippet
@@ -0,0 +1,59 @@
+
+
+
+
+ bigdatacache
+ bigdatacache
+ 类的代码片段包含数据库访问
+ zz
+
+ Expansion
+ SurroundsWith
+
+
+
+
+
+ name
+ 字段名
+ T_APP_CONFIGS
+
+
+ daoclass
+ 类名
+ T_App_Config
+
+
+
+ /// 缓存数据
+ ///
+ private static List<$daoclass$> _$name$ = null;
+ ///
+ /// 锁
+ ///
+ private static object _$name$_LOCK = new object();
+ ///
+ /// app配置数据,引用类型,不可修改,只能查询使用
+ ///
+ public static List<$daoclass$> $name$LIST
+ {
+ get
+ {
+ if (_$name$ == null)
+ {
+ lock (_$name$_LOCK)
+ {
+ var dao = new DAO();
+ _$name$ = dao.daoRes.context.$daoclass$.ToList();
+ }
+ }
+ return _$name$;
+ }
+ }
+ $selected$$end$
+ ]]>
+
+
+
+
diff --git a/代码块/C#/classbase.snippet b/代码块/C#/classbase.snippet
new file mode 100644
index 0000000..2d3235a
--- /dev/null
+++ b/代码块/C#/classbase.snippet
@@ -0,0 +1,51 @@
+
+
+
+
+ classBll
+ classBll
+ 类的代码片段
+ zz
+
+ Expansion
+ SurroundsWith
+
+
+
+
+
+ modifier
+ 修饰符
+ public
+
+
+ name
+ 类名
+ MyClass
+
+
+ inherit
+ 类名
+ BLLBase
+
+
+
+ ///
+ ///
+ $modifier$ class $name$ : $inherit$
+ {
+ ///
+ ///
+ ///
+ ///
+ $modifier$ $name$(DAO dao):base(dao){
+
+ }
+
+ $selected$$end$
+ }]]>
+
+
+
+
diff --git a/代码块/C#/classbasedao.snippet b/代码块/C#/classbasedao.snippet
new file mode 100644
index 0000000..3cc20c8
--- /dev/null
+++ b/代码块/C#/classbasedao.snippet
@@ -0,0 +1,63 @@
+
+
+
+
+ classBlldao
+ classBlldao
+ 类的代码片段包含数据库访问
+ zz
+
+ Expansion
+ SurroundsWith
+
+
+
+
+
+ name
+ 类名
+ MyClass
+
+
+ daoclass
+ 类名
+ T_
+
+
+
+ ///
+ ///
+ public class $name$ : BLLBase
+ {
+ ///
+ ///
+ ///
+ ///
+ public $name$(DAO dao):base(dao){
+
+ }
+ ///
+ ///
+ ///
+ ///
+ public List<$daoclass$> GetList()
+ {
+ var list = dao.daoRes.context.$daoclass$.Where(it=>true).ToList();
+ return list;
+ }
+ ///
+ ///
+ ///
+ ///
+ public $daoclass$ GetFirstOrDefault() {
+ var data = dao.daoRes.context.$daoclass$.FirstOrDefault(it => true);
+ return data;
+ }
+
+ $selected$$end$
+ }]]>
+
+
+
+
diff --git a/其它/202102226远程桌面备份.json b/其它/202102226远程桌面备份.json
new file mode 100644
index 0000000..44d1094
--- /dev/null
+++ b/其它/202102226远程桌面备份.json
@@ -0,0 +1,256 @@
+{
+ "Connections": [
+ {
+ "ConnectionType": 25,
+ "Group": "moguext",
+ "ID": "3b50fe58-b722-43d8-bc07-6a768ed59462",
+ "Name": "moguext",
+ "GroupDetails": {
+ "SafePassword": "LVfk8hUoy/orZ6HR+VxTsw==",
+ "UserName": "sjgame"
+ },
+ "MetaInformation": {
+ "Cost": 0.0,
+ "PasswordHistory": [
+ {
+ "LoggedModifiedBy": "ZHANGZHE-PC\\zhangzhe",
+ "ModifiedBy": "ZHANGZHE-PC\\zhangzhe",
+ "ModifiedDateTimeString": "2023-03-29T07:19:23",
+ "SafePassword": "ob6Y/dNMaZU14hgzF60kzQ=="
+ }
+ ]
+ }
+ },
+ {
+ "Url": "43.129.195.20:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\海外",
+ "ID": "53efb8ce-b5da-40a8-a650-4d925670b61a",
+ "Name": "PC",
+ "OpenEmbedded": true,
+ "RDP": {}
+ },
+ {
+ "Url": "101.42.136.223:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\国内",
+ "ID": "8f6f0ca1-83e4-44d3-a3b6-e2b24d0117dd",
+ "Name": "PC",
+ "OpenEmbedded": true,
+ "RDP": {}
+ },
+ {
+ "Url": "82.157.13.127:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\国内",
+ "ID": "d4ad266c-0ea8-4013-8357-b58ce6bb5a19",
+ "Name": "web1",
+ "OpenEmbedded": true,
+ "RDP": {}
+ },
+ {
+ "Url": "101.32.15.216:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\海外",
+ "ID": "abc22a42-2683-4c63-802b-978141388f75",
+ "Name": "web1",
+ "OpenEmbedded": true,
+ "RDP": {}
+ },
+ {
+ "Url": "82.157.29.123:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\国内",
+ "ID": "4c69f35e-f313-4541-bafe-dd549afeea2d",
+ "Name": "web2",
+ "OpenEmbedded": true,
+ "RDP": {}
+ },
+ {
+ "Url": "101.32.14.235:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\海外",
+ "ID": "dfa45f6b-4e19-4229-b94d-0c95b6190e15",
+ "Name": "web2",
+ "OpenEmbedded": true,
+ "RDP": {}
+ },
+ {
+ "Url": "43.135.25.193:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\海外",
+ "ID": "645f675f-9ff4-4e31-a663-6ec9d7370bcf",
+ "Name": "web3",
+ "OpenEmbedded": true,
+ "RDP": {}
+ },
+ {
+ "Url": "82.157.14.24:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\国内",
+ "ID": "5f98d041-50dc-4f9b-94e4-3a6019c05eaf",
+ "Name": "web3",
+ "OpenEmbedded": true,
+ "RDP": {}
+ },
+ {
+ "Url": "121.5.26.77:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext",
+ "ID": "4ad621ac-fd72-461b-8fb7-475654c1d616",
+ "Name": "测试环境",
+ "OpenEmbedded": true,
+ "RDP": {}
+ },
+ {
+ "ConnectionType": 25,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\国内",
+ "ID": "d73becde-7ef3-4a03-9dcd-b6d2f74b5938",
+ "Name": "国内"
+ },
+ {
+ "ConnectionType": 25,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\海外",
+ "ID": "54e52304-dc8c-44e3-b050-d82b17c3eb81",
+ "Name": "海外"
+ },
+ {
+ "Url": "172.27.27.21",
+ "ConnectionType": 1,
+ "Group": "家",
+ "ID": "4a19dfdf-3774-49c2-81ee-7d3846a4a858",
+ "Name": "家",
+ "OpenEmbedded": true,
+ "MetaInformation": {
+ "Cost": 0.0,
+ "PasswordHistory": [
+ {
+ "LoggedModifiedBy": "ZHANGZHE-PC\\zhangzhe",
+ "ModifiedBy": "ZHANGZHE-PC\\zhangzhe",
+ "ModifiedDateTimeString": "2023-09-01T01:46:09",
+ "SafePassword": "JQaNT6ye7Lk="
+ },
+ {
+ "LoggedModifiedBy": "ZHANGZHE-PC\\zhangzhe",
+ "ModifiedBy": "ZHANGZHE-PC\\zhangzhe",
+ "ModifiedDateTimeString": "2023-03-30T02:42:27",
+ "SafePassword": "o63hoW1KAMI="
+ }
+ ]
+ },
+ "RDP": { "SafePassword": "UwNATVDYiZ0=", "UserName": "zpc" }
+ },
+ {
+ "ConnectionType": 25,
+ "Group": "家",
+ "ID": "6c79556d-587f-40ef-bfb0-304445f8bb4a",
+ "Name": "家"
+ },
+ {
+ "Url": "81.70.0.132:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\国内",
+ "ID": "10979a05-9984-4564-9fef-cdf1e891dce7",
+ "Name": "扩展服务",
+ "OpenEmbedded": true,
+ "RDP": {}
+ },
+ {
+ "Url": "43.129.199.134:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\海外",
+ "ID": "ddeec6fa-6fae-4068-8c18-17ec0c05083e",
+ "Name": "扩展服务",
+ "OpenEmbedded": true,
+ "RDP": {}
+ },
+ {
+ "ConnectionType": 25,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\其它",
+ "ID": "ee02aa6b-c8d9-4cf9-a4c6-38cc0e1fe205",
+ "Name": "其它"
+ },
+ {
+ "Url": "112.124.23.127:33389",
+ "ConnectionType": 1,
+ "Group": "moguext\\国内",
+ "ID": "e0062dd8-71de-4b61-8aaa-1f072ecae07f",
+ "Name": "跳板机",
+ "OpenEmbedded": true,
+ "MetaInformation": {
+ "Cost": 0.0,
+ "PasswordHistory": [
+ {
+ "LoggedModifiedBy": "ZHANGZHE-PC\\zhangzhe",
+ "ModifiedBy": "ZHANGZHE-PC\\zhangzhe",
+ "ModifiedDateTimeString": "2023-07-28T05:59:14",
+ "SafePassword": "GmAg8YgbEf2Jo1yVEEXGGckO+rAJWTrK"
+ }
+ ]
+ },
+ "RDP": {
+ "SafePassword": "eUzDxJLEO+b1vA8xlsvMWM59DNt0JJz+",
+ "UserName": "zhangzhe"
+ }
+ },
+ {
+ "Url": "112.124.23.127:33389",
+ "ConnectionType": 1,
+ "Group": "moguext\\国内",
+ "ID": "5cd54c98-ef36-4b05-ac54-8da50d057700",
+ "Name": "跳板机1",
+ "OpenEmbedded": true,
+ "MetaInformation": {
+ "Cost": 0.0,
+ "PasswordHistory": [
+ {
+ "LoggedModifiedBy": "ZHANGZHE-PC\\zhangzhe",
+ "ModifiedBy": "ZHANGZHE-PC\\zhangzhe",
+ "ModifiedDateTimeString": "2023-09-19T08:09:34",
+ "SafePassword": "omcbYur0NK7sYHNDaWy6ZskO+rAJWTrK"
+ }
+ ]
+ },
+ "RDP": {
+ "SafePassword": "fV8bd+9uDurFrlkdVsxGqc59DNt0JJz+",
+ "UserName": "yinming"
+ }
+ },
+ {
+ "Url": "43.143.246.189:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\其它",
+ "ID": "8493afcd-6f3f-41a0-87e7-f057799858bd",
+ "Name": "西南交大服务器",
+ "OpenEmbedded": true,
+ "RDP": {}
+ },
+ {
+ "Url": "146.56.198.144:33389",
+ "ConnectionType": 1,
+ "CredentialConnectionID": "1310CF82-6FAB-4B7A-9EEA-3E2E451CA2CF",
+ "Group": "moguext\\其它",
+ "ID": "e6820f26-81b8-4713-be5a-5b62dc1ea436",
+ "Name": "西南交大正式服务器-跳板机",
+ "OpenEmbedded": true,
+ "RDP": {}
+ }
+ ],
+ "DatabaseID": "a9c3669a-1bb4-426a-98f6-6d03854e8a09",
+ "Version": 2
+}
diff --git a/其它/圣剑-工作文档.docx b/其它/圣剑-工作文档.docx
new file mode 100644
index 0000000..57e99c1
Binary files /dev/null and b/其它/圣剑-工作文档.docx differ
diff --git a/其它/抖音-HISSAI绘画生成器.docx b/其它/抖音-HISSAI绘画生成器.docx
new file mode 100644
index 0000000..cbc3544
Binary files /dev/null and b/其它/抖音-HISSAI绘画生成器.docx differ
diff --git a/常用SQL/SQLQuery1.sql b/常用SQL/SQLQuery1.sql
new file mode 100644
index 0000000..3cdf661
--- /dev/null
+++ b/常用SQL/SQLQuery1.sql
@@ -0,0 +1,87 @@
+select * from HissAI_UserData.[dbo].[T_Users] where UserName like '%466bb414a3754d55%'
+select top 1000 * from Phone300_VL_UI_CBT.dbo.T_App_Config;--App
+select top 1000 * from HissAI_Res.[dbo].[T_App_Config]
+select * from Phone300_VL_UI_CBT.dbo.T_VL_UI_Popout
+select * from HissAI_UserData.[dbo].[T_Users_Data] where UserId=10123
+update HissAI_UserData.[dbo].[T_Users_Data] set Currency=1000 where id=10114
+select * from HissAI_UserData.[dbo].[T_Users] where username='24bc5fc59a5dc3b4'
+select * from HissAI_UserData.[dbo].[T_Users_Data] where UserId=10113
+select * from HissAI_UserData.[dbo].[T_Users] where username='189eed353de9b77f'
+select * from HissAI_UserData.[dbo].[T_Users_Data] where UserId=10098
+select top 1000 * from HissAI_Res.[dbo].[T_App_Images]
+select * from HissAI_UserData.[dbo].[T_Users] where username='3f952f27b93776c0'
+select * from HissAI_UserData.[dbo].[T_Users_Data]
+select * from HissAI_UserData.[dbo].[T_Users_Data]
+update HissAI_UserData.[dbo].[T_Users_Data] set Currency=0,StatisticsData='' where UserId=44
+select * from HissAI_Data.dbo.T_Draw_Log where SizeTemplateId!=0 UserId=10120
+delete HissAI_UserData.[dbo].[T_Users_Data] where userid=11
+delete HissAI_UserData.[dbo].[T_Users] where id=11
+select count(1) from HissAI_Data.dbo.T_Draw_Log
+select * from
+select *,(select count(1) from HissAI_UserData.dbo.T_User_Favorite where DataId=f.DataId and appId=f.appid ) Favorite
+from HissAI_UserData.dbo.T_User_Favorite f where userid='' and [type]=1 and appid=1 order by Favorite desc
+select RAND() from HissAI_UserData.dbo.T_User_PhotoAlbum where type=0 and id<158
+update HissAI_UserData.dbo.T_User_PhotoAlbum set type=2 where type=0 and id<158
+select * from HissAI_Res.[dbo].[T_App_Language] where name='QQɹ' and
+select * from HissAI_UserData.dbo.T_User_Favorite where [type]=0 and id=5
+select * from HissAI_UserData.dbo.T_User_PhotoAlbum where [type]=1 and DrawId=21405 and userid=7
+
+order by Favorite desc
+select * from HissAI_Data.[dbo].[T_User_LimitAction_Log]
+
+17
+ select * from HissAI_Res.dbo.[T_App_LevitatingBall]
+ select * from HissAI_Res.dbo.T_App_Popup
+ select * from HissAI_Data.[dbo].[T_Draw_Label]
+select * from HissAI_Data.[dbo].[T_Draw_Label_Describe]
+update HissAI_UserData.dbo.T_User_PhotoAlbum set Type=0 where [type]=2 order by Favorite desc
+select * from HissAI_UserData.dbo.T_User_PhotoAlbum where [type]=1 and Favorite=2
+select * from HissAI_UserData.dbo.T_User_PhotoAlbum where [type]=1 and userid=71
+ select * from HissAI_UserData.dbo.T_User_PhotoAlbum where
+[type]=1
+select * from HissAI_UserData.dbo.T_User_OrderComplete
+update p set p.Favorite=(select count(1) from HissAI_UserData.dbo.T_User_PhotoAlbum where [type]=1 and Favorite=p.id) from HissAI_UserData.dbo.T_User_PhotoAlbum p where [type]=0 and id=2
+
+
+select Id,UserId,[Type],FavoriteTime,UpdateTime,CreateTime,[Desc],AppId,DrawId,isnull((select Favorite from HissAI_UserData.dbo.T_User_PhotoAlbum where [type]=0 and id=f.Favorite),0) Favorite from HissAI_UserData.dbo.T_User_PhotoAlbum f
+where [type]=0 and userid=
+
+
+select u.Id,u.Email,u.IP,u.IpContinent,u.IpCountry,u.NickName,u.UserName,d.UserIconUrl,d.TemporaryCurrency,d.Currency,d.VipType from HissAI_UserData.[dbo].[T_Users] u left join HissAI_UserData.[dbo].[T_Users_Data] d on u.Id=d.UserId and u.AppId=d.AppId
+where u.id in ( 10079)
+
+select *,
+(select count(1) from HissAI_UserData.dbo.T_User_PhotoAlbum where DrawId=f.DrawId and appId=f.appid and [type]=0 ) Favorite
+from HissAI_UserData.dbo.T_User_PhotoAlbum f
+where userid=1 and [type]=1 and appid=1
+
+select top 30 Id,UserId, from HissAI_UserData.dbo.T_User_PhotoAlbum
+ SELECT top 30 Id, UserId, [Type], FavoriteTime, UpdateTime, CreateTime, [Desc], AppId, DrawId, Favorite, TaskId FROM
+ [HissAI_UserData].dbo.T_User_PhotoAlbum where [type]=0 and appid=1001 order by FavoriteTime
+ select ISNULL(count(1),0) from [HissAI_UserData].dbo.T_User_PhotoAlbum where [type]=0 and appid=1002
+
+ select * from Phone300_VL_UI_CBT.dbo.T_VL_UI_FloatBall_Cfg
+
+ select * from HissAI_Res.dbo.T_App_Language
+ select count(1) from HissAI_Data.dbo.T_User_LimitAction_Log where appid=1001and userid=1
+ alter table HissAI_Res.dbo.T_App_Language add AppId int not null default 1000
+
+insert into T_App_Language(Name,Value,Language)
+select '','unlimited','en'
+union all
+select '羰','ghibli scenery','en'
+union all
+select '','ghibli figure','en'
+
+select RAND() from HissAI_UserData.dbo.T_User_PhotoAlbum
+
+GalleryListDto
+
+select * from Phone300_VL_UI_CBT.dbo.T_UI_ConfigImages
+
+select top 1000 * from CloudPlatFormUserData.dbo.T_Users_ConsumeList where bossid=25001 and CreateTime>'2023-04-23';--ûѼ¼
+
+select top 1000 * from CloudPlatFormUserData.dbo.T_Users_ConsumeAgreement;--ǩԼ
+
+select top 1000 * from CloudPlatFormUserData.dbo.T_Users_ConsumeMoneyList;--ֵ¼
+
diff --git a/常用SQL/SQLQuery2.sql b/常用SQL/SQLQuery2.sql
new file mode 100644
index 0000000..1fb2844
--- /dev/null
+++ b/常用SQL/SQLQuery2.sql
@@ -0,0 +1 @@
+select ISNULL(sum(price),0) from HissAI_UserData.dbo.T_User_OrderComplete where userid=''
\ No newline at end of file
diff --git a/常用SQL/SQLQuery3sql.sql b/常用SQL/SQLQuery3sql.sql
new file mode 100644
index 0000000..60b61eb
--- /dev/null
+++ b/常用SQL/SQLQuery3sql.sql
@@ -0,0 +1,50 @@
+insert into HissAI_Res.dbo.T_App_Language(Name,Value,Language)
+SELECT '', 'unlimited', 'en'
+UNION ALL
+SELECT '羰', 'ghibli scenery', 'en'
+UNION ALL
+SELECT '', 'ghibli figure', 'en'
+UNION ALL
+SELECT 'ˮī', 'ink painting', 'en'
+UNION ALL
+SELECT 'ͷ', 'art avatar', 'en'
+UNION ALL
+SELECT 'logo', 'commercial logo', 'en'
+UNION ALL
+SELECT 'º', 'Makoto Shinkai', 'en'
+UNION ALL
+SELECT '߸', 'Comic draft', 'en'
+UNION ALL
+SELECT '־', 'magazine style', 'en'
+UNION ALL
+SELECT 'ֶ', '3D to 2D', 'en'
+UNION ALL
+SELECT 'Q', 'Q-version figure', 'en'
+UNION ALL
+SELECT 'ϴɹȴ', 'Uploaded, waiting for review', 'en'
+UNION ALL
+SELECT 'ɹ', 'Created a successful order', 'en'
+UNION ALL
+SELECT 'ɾɹ', 'successfully deleted', 'en'
+UNION ALL
+SELECT '˶Ʒѷţظύ', 'Already issued, please do not resubmit', 'en'
+UNION ALL
+SELECT 'ղسɹ', 'Collection successfully', 'en'
+UNION ALL
+SELECT '¼ɹ', 'login successful', 'en'
+UNION ALL
+SELECT '滭㲻', 'drawing point is empty', 'en'
+UNION ALL
+SELECT 'Ʒɹ', 'Product released successfully', 'en'
+UNION ALL
+SELECT 'ҪϴͼƬ', 'The image to upload does not exist', 'en'
+UNION ALL
+SELECT '滭100', 'Painting Points 100', 'en'
+UNION ALL
+SELECT '滭350', 'Drawing Points 350', 'en'
+UNION ALL
+SELECT '滭600', 'Drawing Points 600', 'en'
+UNION ALL
+SELECT 'ղԴ', 'favorite resource does not exist', 'en'
+UNION ALL
+SELECT 'ȡղسɹ', 'Cancel favorite successfully', 'en'
\ No newline at end of file
diff --git a/常用SQL/快速启动.sql b/常用SQL/快速启动.sql
new file mode 100644
index 0000000..3b10eb8
--- /dev/null
+++ b/常用SQL/快速启动.sql
@@ -0,0 +1,25 @@
+SELECT * FROM Phone300_VL_UI_CBT.dbo.T_VL_UI_Epg_CategoryCfg where appId=1 and EpgParentCategory!=0
+
+alter table Phone300_VL_UI_CBT.dbo.T_VL_UI_Epg_CategoryCfg add IsQuickStartPopUp bit default 0 not null;
+alter table Phone300_VL_UI_CBT.dbo.T_VL_UI_Epg_CategoryCfg add IsOnlineQuickStartPopUp bit default 0 not null;
+alter table Phone300_VL_UI_CBT.dbo.T_VL_UI_GameInputSetting add IsToggleKeyboard bit default 0 not null;
+alter table Phone300_VL_UI_CBT.dbo.T_VL_UI_Epg_Cfg add IsOnlineQuickStartPopUp bit default 0 not null;
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ϸ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_VL_UI_Epg_CategoryCfg', @level2type=N'COLUMN',@level2name=N'IsOnlineQuickStartPopUp'
+GO
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ϸ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_VL_UI_Epg_CategoryCfg', @level2type=N'COLUMN',@level2name=N'IsQuickStartPopUp'
+GO
+ update Phone300_VL_UI_CBT.dbo.T_VL_UI_Epg_CategoryCfg set IsQuickStartPopUp=1 where Extend1 like '%%'
+
+select* from Phone300_VL_UI_CBT.dbo.T_VL_UI_GameInputSetting
+
+
+
+ select * from Phone300_VL_UI_CBT.dbo.T_VL_UI_Epg_Cfg
+
+ alter table Phone300_VL_UI_CBT.dbo.T_VL_UI_Epg_Cfg add IsOnlineQuickStartPopUp bit default 0 not null;
+
+
+
+alter table Phone300_VL_UI_CBT.dbo.T_VL_UI_Epg_Cfg add StartEnableTime datetime;
+alter table Phone300_VL_UI_CBT.dbo.T_VL_UI_Epg_Cfg add EndEnableTime datetime;
+
\ No newline at end of file
diff --git a/常用SQL/成就表.sql b/常用SQL/成就表.sql
new file mode 100644
index 0000000..13f8795
--- /dev/null
+++ b/常用SQL/成就表.sql
@@ -0,0 +1,95 @@
+USE [MoguExt]
+GO
+
+/****** Object: Table [dbo].[T_User_Achievement] Script Date: 2022/10/10 11:25:37 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[T_User_Achievement](
+ [Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
+ [AchievemenGuid] [nvarchar](64) NULL,
+ [BossId] [nvarchar](50) NULL,
+ [AppId] [int] NOT NULL,
+ [AchievementType] [int] NOT NULL,
+ [AchievementName] [nvarchar](200) NULL,
+ [SuccessIocn] [int] NOT NULL,
+ [ProcessingIocn] [int] NOT NULL,
+ [UndoneIocn] [int] NOT NULL,
+ [Diamond] [int] NOT NULL,
+ [MoguBi] [int] NOT NULL,
+ [RestrictedDate] [datetime] NOT NULL,
+ [OrderById] [int] NOT NULL,
+ [ShowText] [nvarchar](200) NULL,
+ [CreateDateTime] [datetime] NOT NULL,
+ [UpdateTimeDate] [datetime] NOT NULL,
+ [IsEnable] [bit] NOT NULL,
+ [BackgroundIocn] [int] NOT NULL,
+ [RewardText] [nvarchar](200) NULL,
+ CONSTRAINT [PK_T_USER_ACHIEVEMENT] PRIMARY KEY CLUSTERED
+(
+ [Id] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ψһ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'AchievemenGuid'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'BossId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'app' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'AppId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾͣ1:Ϸ 2 ģ3.ֵ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'AchievementType'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'AchievementName'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾͼƬ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'SuccessIocn'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾͽͼƬ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'ProcessingIocn'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾδͼƬ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'UndoneIocn'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾͽʯ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'Diamond'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾͽĢ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'MoguBi'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'RestrictedDate'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'˳ɾ˳' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'OrderById'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʾİ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'ShowText'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'CreateDateTime'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'UpdateTimeDate'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ƿ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'IsEnable'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾ鱳ͼƬ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'BackgroundIocn'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'İ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement', @level2type=N'COLUMN',@level2name=N'RewardText'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ûɾ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Achievement'
+GO
+
+
diff --git a/常用SQL/成就表条件表.sql b/常用SQL/成就表条件表.sql
new file mode 100644
index 0000000..bd22d6f
--- /dev/null
+++ b/常用SQL/成就表条件表.sql
@@ -0,0 +1,62 @@
+USE [MoguExt]
+GO
+
+/****** Object: Table [dbo].[T_User_AchievementTrigger] Script Date: 2022/10/10 11:25:30 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[T_User_AchievementTrigger](
+ [Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
+ [AchievementTriggerName] [nvarchar](50) NULL,
+ [AchievementTriggerCondition] [nvarchar](20) NULL,
+ [AchievementTriggerValue] [nvarchar](300) NULL,
+ [AchievementTriggerParams] [nvarchar](300) NULL,
+ [AchievementTriggerTriggerType] [int] NOT NULL,
+ [CreateDateTime] [datetime] NULL,
+ [UpdateDateTime] [datetime] NULL,
+ [Identigier] [nvarchar](64) NULL,
+ [AchievementTriggerMode] [int] NOT NULL,
+ CONSTRAINT [PK_T_USER_ACHIEVEMENTTRIGGER] PRIMARY KEY CLUSTERED
+(
+ [Id] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementTrigger', @level2type=N'COLUMN',@level2name=N'Id'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementTrigger', @level2type=N'COLUMN',@level2name=N'AchievementTriggerName'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementTrigger', @level2type=N'COLUMN',@level2name=N'AchievementTriggerCondition'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ֵ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementTrigger', @level2type=N'COLUMN',@level2name=N'AchievementTriggerValue'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementTrigger', @level2type=N'COLUMN',@level2name=N'AchievementTriggerParams'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʶ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementTrigger', @level2type=N'COLUMN',@level2name=N'AchievementTriggerTriggerType'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementTrigger', @level2type=N'COLUMN',@level2name=N'CreateDateTime'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementTrigger', @level2type=N'COLUMN',@level2name=N'UpdateDateTime'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'֧ʶ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementTrigger', @level2type=N'COLUMN',@level2name=N'Identigier'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʽ1,.2ۼƣ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementTrigger', @level2type=N'COLUMN',@level2name=N'AchievementTriggerMode'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾʹ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementTrigger'
+GO
+
+
diff --git a/常用SQL/成就表进度表.sql b/常用SQL/成就表进度表.sql
new file mode 100644
index 0000000..cbf37e4
--- /dev/null
+++ b/常用SQL/成就表进度表.sql
@@ -0,0 +1,77 @@
+USE [MoguExt]
+GO
+
+/****** Object: Table [dbo].[T_User_AchievementSpeed] Script Date: 2022/10/10 11:25:45 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[T_User_AchievementSpeed](
+ [Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
+ [AchievemenGuid] [nvarchar](64) NULL,
+ [AchievemenName] [nvarchar](200) NULL,
+ [AchievemenTriggerId] [int] NOT NULL,
+ [AchievemenTriggerName] [nvarchar](200) NULL,
+ [IsComplete] [bit] NOT NULL,
+ [UserId] [nvarchar](200) NULL,
+ [BossId] [nvarchar](200) NULL,
+ [AppId] [int] NOT NULL,
+ [CreateDateTime] [datetime] NOT NULL,
+ [Remark] [nvarchar](300) NULL,
+ [Parameter1] [nvarchar](300) NULL,
+ [Parameter2] [nvarchar](300) NULL,
+ [Parameter3] [nvarchar](300) NULL,
+ CONSTRAINT [PK_T_USER_ACHIEVEMENTSPEED] PRIMARY KEY CLUSTERED
+(
+ [Id] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'Id'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾΨһ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'AchievemenGuid'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'AchievemenName'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾͽ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'AchievemenTriggerId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾͽ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'AchievemenTriggerName'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ƿ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'IsComplete'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ûid' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'UserId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'BossId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'app' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'AppId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'CreateDateTime'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ע' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'Remark'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'1' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'Parameter1'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'2' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'Parameter2'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'3' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed', @level2type=N'COLUMN',@level2name=N'Parameter3'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ûɵijɾͽ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementSpeed'
+GO
+
diff --git a/常用SQL/排行榜sql.sql b/常用SQL/排行榜sql.sql
new file mode 100644
index 0000000..48789cb
--- /dev/null
+++ b/常用SQL/排行榜sql.sql
@@ -0,0 +1,37 @@
+ --ް ѯյӸߵͽн ȥޱвѯµĵݣ
+ --ٸݵͼƬҵӦûûз
+ select UserId,Totals,UserCount,(select NickName from HissAI_UserData.dbo.T_Users u where u.Id=t.UserId ) NickName,
+ (select UserIconUrl from HissAI_UserData.dbo.T_Users_Data u where u.UserId=t.UserId ) UserIconUrl
+ from (
+ select top 30 UserId,sum(c) Totals,count(1) UserCount from (
+ select DrawId,count(1) c,
+ (select top 1 UserId from HissAI_UserData.dbo.T_User_Gallery where DrawId=l.DrawId) UserId
+ from ( select DrawId,CreateTime as ExaminationDatetime,UserId from HissAI_UserData.dbo.T_User_Like li ) l
+ where ExaminationDatetime>='2024-02-01' and ExaminationDatetime<'2024-03-01' group by DrawId
+ ) x where UserId!='' group by UserId order by Totals desc
+) t order by Totals desc
+
+-- Ȳѯ»жûȻûзͳ
+ select UserId,Totals,UserCount,(select NickName from HissAI_UserData.dbo.T_Users u where u.Id=t.UserId ) NickName,(select UserIconUrl from HissAI_UserData.dbo.T_Users_Data u where u.UserId=t.UserId ) UserIconUrl from (
+ select top 30 UserId,count(1) Totals,count(1) UserCount from HissAI_UserData.dbo.T_User_Gallery where ExaminationDatetime>='2024-02-01' and ExaminationDatetime<'2024-03-01' group by userId
+ order by Totals desc
+ ) t order by Totals desc
+
+ --ͬ ȲѯеĻͬݣٸĻͬҵӦĻûȻûͳƻͬû
+select UserId,Totals,UserCount,(select NickName from HissAI_UserData.dbo.T_Users u where u.Id=t.UserId ) NickName,(select UserIconUrl from HissAI_UserData.dbo.T_Users_Data u where u.UserId=t.UserId ) UserIconUrl from (
+ select top 30 UserId,SUM(Totals) Totals,count(1) UserCount from (
+ select FollowDrawId,count(1) Totals from (
+ select FollowDrawId,CreateTime ExaminationDatetime from HissAI_Data.dbo.T_Draw_Log where FollowDrawId!='' and IsException!=1
+ ) Draw_Log
+ where ExaminationDatetime>='2024-02-01' and ExaminationDatetime<'2024-03-01'
+ group by FollowDrawId
+ ) drawlog inner join HissAI_UserData.dbo.T_User_Gallery g
+ on g.DrawId=drawlog.FollowDrawId where UserId!=0
+ group by UserId order by Totals desc
+ ) t order by Totals desc
+
+
+
+
+
+
diff --git a/常用SQL/推出游戏条件表.sql b/常用SQL/推出游戏条件表.sql
new file mode 100644
index 0000000..19e6157
--- /dev/null
+++ b/常用SQL/推出游戏条件表.sql
@@ -0,0 +1,79 @@
+USE [MoguExt]
+GO
+
+/****** Object: Table [dbo].[T_Ext_GamePopup] Script Date: 2022/10/10 11:26:49 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[T_Ext_GamePopup](
+ [Id] [numeric](18, 0) IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
+ [ExtGamePopupId] [nvarchar](64) NULL,
+ [ProductId] [nvarchar](100) NULL,
+ [ProductImage] [int] NOT NULL,
+ [ProductType] [int] NOT NULL,
+ [AppId] [int] NOT NULL,
+ [Continent] [nvarchar](200) NULL,
+ [CountryName] [nvarchar](200) NULL,
+ [BossId] [nvarchar](200) NULL,
+ [OnlinePlatform] [nvarchar](100) NULL,
+ [CreateDateTime] [datetime] NOT NULL,
+ [UpdateDateTime] [datetime] NOT NULL,
+ [ExtGameName] [nvarchar](200) NULL,
+ [OrderById] [int] NOT NULL,
+ [IsState] [bit] NOT NULL,
+ CONSTRAINT [PK_T_EXT_GAMEPOPUP] PRIMARY KEY CLUSTERED
+(
+ [Id] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ϵͳţڹ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'ExtGamePopupId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ʒ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'ProductId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ƷͼƬ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'ProductImage'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ʒ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'ProductType'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'app' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'AppId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'Continent'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'CountryName'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'BossId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ƽ̨' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'OnlinePlatform'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'CreateDateTime'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'UpdateDateTime'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'ExtGameName'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ȼ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'OrderById'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ƿ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup', @level2type=N'COLUMN',@level2name=N'IsState'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'˳Ϸʾ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_Ext_GamePopup'
+GO
+
+
diff --git a/常用SQL/每月统计查询-国内-不包含游客.sql b/常用SQL/每月统计查询-国内-不包含游客.sql
new file mode 100644
index 0000000..032a2c5
--- /dev/null
+++ b/常用SQL/每月统计查询-国内-不包含游客.sql
@@ -0,0 +1,32 @@
+--国内tv
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=0 and LoginTime>='2023-09-01' and LoginTime<'2023-10-01'
+group by UserId
+) t
+
+--国内 tv new
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=19 and LoginTime>='2023-09-01' and LoginTime<'2023-10-01'
+group by UserId
+) t
+
+--国内 主包
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=1 and LoginTime>='2023-09-01' and LoginTime<'2023-10-01' and BossId!='25001'
+ group by UserId
+) t
+
+--国内 既游
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=3 and LoginTime>='2023-09-01' and LoginTime<'2023-10-01' and BossId!='25001'
+ group by UserId
+) t
+
+--国内 ios
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=1 and LoginTime>='2023-09-01' and LoginTime<'2023-10-01' and BossId='25001'
+ group by UserId
+) t
+
+
+
diff --git a/常用SQL/每月统计查询-国内.sql b/常用SQL/每月统计查询-国内.sql
new file mode 100644
index 0000000..8e0344a
--- /dev/null
+++ b/常用SQL/每月统计查询-国内.sql
@@ -0,0 +1,29 @@
+select count(1) from (
+
+SELECT UserID FROM MoguExt.dbo.T_Log_Login where CreateTime_Day>=20230801 and CreateTime_Day<20230901 and PlatformType='TV' and UserType>0
+and AppId=0
+group by userid
+) t
+
+
+select count(1) from (
+
+SELECT UserID FROM MoguExt.dbo.T_Log_Login where CreateTime_Day>=20230801 and CreateTime_Day<20230901 and PlatformType='APP_ANDROID' and UserType>0
+and AppId=1
+group by userid
+) t
+
+
+
+
+select count(1) from (
+
+SELECT UserID FROM MoguExt.dbo.T_Log_Login where CreateTime_Day>=20230801 and CreateTime_Day<20230901 and PlatformType='IOS' and UserType>0
+and AppId=1
+group by userid
+) t
+
+
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=3 and LoginTime>='2023-04-01' and LoginTime<'2023-05-01' and BossID!='25001' group by UserId
+) t
diff --git a/常用SQL/每月统计查询-国外.sql b/常用SQL/每月统计查询-国外.sql
new file mode 100644
index 0000000..4ab3bee
--- /dev/null
+++ b/常用SQL/每月统计查询-国外.sql
@@ -0,0 +1,83 @@
+
+
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=4 and LoginTime>='2023-04-01' and LoginTime<'2023-05-01'
+group by UserId
+) t
+
+
+
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=10 and LoginTime>='2023-04-01' and LoginTime<'2023-05-01' and BossId='25001'
+group by UserId
+) t
+
+
+
+
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=7 and LoginTime>='2023-04-01' and LoginTime<'2023-05-01' and BossId!='27002'
+ group by UserId
+) t
+
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=7 and LoginTime>='2023-04-01' and LoginTime<'2023-05-01' and BossId='27002'
+ group by UserId
+) t
+
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=8 and LoginTime>='2023-04-01' and LoginTime<'2023-05-01' and BossId='27002' group by UserId
+) t
+
+
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=9 and LoginTime>='2023-04-01' and LoginTime<'2023-05-01' group by UserId
+) t
+
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=11 and LoginTime>='2023-04-01' and LoginTime<'2023-05-01' group by UserId
+) t
+
+
+select 12,count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=12 and LoginTime>='2023-04-01' and LoginTime<'2023-05-01' group by UserId
+) t ;
+
+select 13,count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=13 and LoginTime>='2023-04-01' and LoginTime<'2023-05-01' group by UserId
+) t ;
+
+select 14,count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=14 and LoginTime>='2023-04-01' and LoginTime<'2023-05-01' group by UserId
+) t ;
+select 15,count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=15 and LoginTime>='2023-04-01' and LoginTime<'2023-05-01' group by UserId
+) t ;
+
+
+
+
+
+
+
+
+
+
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=4 and LoginTime>='2023-01-01' and LoginTime<'2023-02-01' group by UserId
+) t
+
+
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=8 and BossId='27002' and LoginTime>='2023-01-01' and LoginTime<'2023-02-01' group by UserId
+) t
+
+
+select count(1) from (
+select UserId from CloudPlatFormUserData.dbo.T_User_Login where appid=11 and BossId='27002' and LoginTime>='2023-01-01' and LoginTime<'2023-02-01' group by UserId
+) t
+
+
+
+
+
diff --git a/常用SQL/活动4003.sql b/常用SQL/活动4003.sql
new file mode 100644
index 0000000..44a97e6
--- /dev/null
+++ b/常用SQL/活动4003.sql
@@ -0,0 +1,6 @@
+select count( distinct UserID ) from MoguExt.dbo.T_HD_UserLog where HdID=4003
+select sum(ParamsInt1) from MoguExt.dbo.T_HD_UserLog where HdID=4003
+select * from MoguExt.dbo.T_HD_UserLog where HdID=4003
+select Params1,sum(ParamsInt1),((select top 1 Params2 from MoguExt.dbo.T_HD_UserLog where HdID=4003 and Params1=logx.Params1 and ParamsInt2=1 )+'-'+(select top 1 Params2 from MoguExt.dbo.T_HD_UserLog where HdID=4003 and Params1=logx.Params1 and ParamsInt2=3 )) k from MoguExt.dbo.T_HD_UserLog logx where HdID=4003 group by Params1
+
+
\ No newline at end of file
diff --git a/常用SQL/游戏多语言.sql b/常用SQL/游戏多语言.sql
new file mode 100644
index 0000000..1d05db3
--- /dev/null
+++ b/常用SQL/游戏多语言.sql
@@ -0,0 +1,96 @@
+-- ================================================
+-- Template generated from Template Explorer using:
+-- Create Procedure (New Menu).SQL
+--
+-- Use the Specify Values for Template Parameters
+-- command (Ctrl-Shift-M) to fill in the parameter
+-- values below.
+--
+-- This block of comments will not be included in
+-- the definition of the procedure.
+-- ================================================
+SET ANSI_NULLS ON
+GO
+SET QUOTED_IDENTIFIER ON
+GO
+-- =============================================
+-- Author:
+-- Create date:
+-- Description: ͬϷԣAppId4ͬAppId
+-- =============================================
+CREATE PROCEDURE [dbo].[Game_Multilingual_Synchronization]
+
+AS
+BEGIN
+declare @DefaultCfgCount int ;--Ģ
+declare @CfgAppId int ;--AppId
+declare @CfgCount int ;--AppidԵ
+ select@DefaultCfgCount=count(1) from MoguExt.dbo.T_Multilingual_Cfg where appid=4 and Extended1='Ϸ';
+ DECLARE CfgData_Cursor CURSOR FOR
+ selectAppId,count(1) from MoguExt.dbo.T_Multilingual_Cfg where appid!=4 and Extended1='Ϸ' group by AppId;
+ --α
+ OPEN CfgData_Cursor
+
+ FETCH NEXT FROM CfgData_Cursor INTO @CfgAppId,@CfgCount
+ --ѭ
+ WHILE @@FETCH_STATUS = 0
+ BEGIN
+ if @CfgCount<@DefaultCfgCount
+ begin
+ Print ('ͬ=='+Convert(nvarchar(100),@CfgAppId)+'ԭ==>'+Convert(nvarchar(100),@CfgCount));
+ insert into MoguExt.dbo.T_Multilingual_Cfg([ResId]
+ ,[CfgType]
+ ,[ResType]
+ ,[Language]
+ ,[Value]
+ ,[Uri]
+ ,[Explain]
+ ,[IsExport]
+ ,[CreateTime]
+ ,[Extended1]
+ ,[Extended2]
+ ,[ExtendedInt1]
+ ,[ExtendedInt2]
+ ,[AppId]
+ ,[Title]
+ ,[Title2]
+ ,[ImageId]
+ ,[ImageId2]
+ ,[ImageId3]
+ ,[ImageId4])
+ select [ResId]
+ ,[CfgType]
+ ,[ResType]
+ ,[Language]
+ ,[Value]
+ ,[Uri]
+ ,[Explain]
+ ,[IsExport]
+ ,[CreateTime]
+ ,[Extended1]
+ ,[Extended2]
+ ,[ExtendedInt1]
+ ,[ExtendedInt2]
+ ,@CfgAppId
+ ,[Title]
+ ,[Title2]
+ ,[ImageId]
+ ,[ImageId2]
+ ,[ImageId3]
+ ,[ImageId4] from MoguExt.dbo.T_Multilingual_Cfg where Extended1='Ϸ' and appid=4 and Value not in (
+ select Value from MoguExt.dbo.T_Multilingual_Cfg where appid=@CfgAppId and Extended1='Ϸ' )
+
+ end
+
+ else
+ begin
+ print('appid{'+Convert(nvarchar(100),@CfgAppId)+'}Ҫͬ')
+ end
+
+ FETCH NEXT FROM CfgData_Cursor INTO @CfgAppId,@CfgCount
+ END;
+ --رα
+ CLOSE CfgData_Cursor;
+ DEALLOCATE CfgData_Cursor;
+END
+GO
diff --git a/常用SQL/游戏系列表.sql b/常用SQL/游戏系列表.sql
new file mode 100644
index 0000000..1ce2071
--- /dev/null
+++ b/常用SQL/游戏系列表.sql
@@ -0,0 +1,51 @@
+USE [CloudPlatFormData]
+GO
+
+/****** Object: Table [dbo].[T_CGame_SeriesGames] Script Date: 2022/10/10 11:43:32 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[T_CGame_SeriesGames](
+ [Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
+ [SeriesId] [int] NOT NULL,
+ [SeriesName] [nvarchar](100) NULL,
+ [Remark] [nvarchar](200) NULL,
+ [OrderById] [int] NOT NULL,
+ [CreateDateTime] [datetime] NULL,
+ [UpdateDateTime] [datetime] NULL,
+ [IsOnline] [bit] NOT NULL,
+ CONSTRAINT [PK_T_CGAME_SERIESGAMES] PRIMARY KEY CLUSTERED
+(
+ [Id] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ϵбʶ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_CGame_SeriesGames', @level2type=N'COLUMN',@level2name=N'SeriesId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ϵ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_CGame_SeriesGames', @level2type=N'COLUMN',@level2name=N'SeriesName'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ע' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_CGame_SeriesGames', @level2type=N'COLUMN',@level2name=N'Remark'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_CGame_SeriesGames', @level2type=N'COLUMN',@level2name=N'OrderById'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_CGame_SeriesGames', @level2type=N'COLUMN',@level2name=N'CreateDateTime'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_CGame_SeriesGames', @level2type=N'COLUMN',@level2name=N'UpdateDateTime'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ƿ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_CGame_SeriesGames', @level2type=N'COLUMN',@level2name=N'IsOnline'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'˳ϷʱϵͳϷ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_CGame_SeriesGames'
+GO
+
+
diff --git a/常用SQL/用户反馈表.sql b/常用SQL/用户反馈表.sql
new file mode 100644
index 0000000..894775c
--- /dev/null
+++ b/常用SQL/用户反馈表.sql
@@ -0,0 +1,49 @@
+USE [HissAI_Data]
+GO
+
+/****** Object: Table [dbo].[T_User_Feedback] Script Date: 2023/5/8 10:16:42 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[T_User_Feedback](
+ [Id] [int] IDENTITY(1,1) NOT NULL,
+ [UserId] [bigint] NOT NULL,
+ [Description] [nvarchar](1000) NULL,
+ [ContactInfo] [nvarchar](100) NULL,
+ [AppId] [int] NOT NULL,
+ [CreateDateTime] [datetime] NOT NULL,
+ CONSTRAINT [PK__T_User_F__3214EC27B1F8D290] PRIMARY KEY CLUSTERED
+(
+ [Id] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+ALTER TABLE [dbo].[T_User_Feedback] ADD DEFAULT (getdate()) FOR [CreateDateTime]
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Feedback', @level2type=N'COLUMN',@level2name=N'Id'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ûId' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Feedback', @level2type=N'COLUMN',@level2name=N'UserId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Feedback', @level2type=N'COLUMN',@level2name=N'Description'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ϵϢ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Feedback', @level2type=N'COLUMN',@level2name=N'ContactInfo'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'app' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Feedback', @level2type=N'COLUMN',@level2name=N'AppId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Feedback', @level2type=N'COLUMN',@level2name=N'CreateDateTime'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'û' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_Feedback'
+GO
+
+
diff --git a/常用SQL/用户成就表完成表.sql b/常用SQL/用户成就表完成表.sql
new file mode 100644
index 0000000..61eb580
--- /dev/null
+++ b/常用SQL/用户成就表完成表.sql
@@ -0,0 +1,82 @@
+USE [MoguExt]
+GO
+
+/****** Object: Table [dbo].[T_User_AchievementFinish] Script Date: 2022/10/10 11:25:41 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE TABLE [dbo].[T_User_AchievementFinish](
+ [Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
+ [AchievemenGuid] [nvarchar](64) NULL,
+ [AchievemenName] [nvarchar](200) NULL,
+ [UserId] [nvarchar](200) NULL,
+ [BossId] [nvarchar](200) NULL,
+ [AppId] [int] NOT NULL,
+ [CreateDateTime] [datetime] NOT NULL,
+ [Remark] [nvarchar](300) NULL,
+ [ShowAchievemen] [datetime] NOT NULL,
+ [Speed] [int] NOT NULL,
+ [IsCompleted] [bit] NOT NULL,
+ [SpeedCount] [int] NOT NULL,
+ [IsShowPopup] [bit] NOT NULL,
+ [UpdateDateTime] [datetime] NOT NULL,
+ [SuccessDateTime] [datetime] NULL,
+ CONSTRAINT [PK_T_USER_ACHIEVEMENTFINISH] PRIMARY KEY CLUSTERED
+(
+ [Id] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'Id'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾΨһ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'AchievemenGuid'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ɾ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'AchievemenName'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ûid' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'UserId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'BossId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'app' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'AppId'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'CreateDateTime'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ע' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'Remark'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʾɾʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'ShowAchievemen'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'Speed'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ƿ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'IsCompleted'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ܽ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'SpeedCount'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Ƿʾ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'IsShowPopup'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'UpdateDateTime'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ʱ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish', @level2type=N'COLUMN',@level2name=N'SuccessDateTime'
+GO
+
+EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'ûɾɽ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'T_User_AchievementFinish'
+GO
+
+
diff --git a/常用SQL/系统相关/获取注释.sql b/常用SQL/系统相关/获取注释.sql
new file mode 100644
index 0000000..f1b3518
--- /dev/null
+++ b/常用SQL/系统相关/获取注释.sql
@@ -0,0 +1,39 @@
+--SELECT ֶ˵=isnull(props.[value],'') FROM syscolumns cols inner join sysobjects objs on cols.id= objs.id and objs.xtype='U' and objs.name<>'dtproperties' left join sys.extended_properties props on cols.id=props.major_id and cols.colid=props.minor_id
+
+SELECT
+ obj.name AS table_name,
+ ISNULL(ep.value,'') AS table_description
+FROM
+ sys.objects AS obj
+LEFT JOIN
+ sys.extended_properties AS ep
+ON
+ ep.major_id = obj.object_id
+ AND ep.minor_id = 0
+ AND ep.class = 1
+WHERE
+ obj.type = 'U'
+ORDER BY
+ table_name ASC;
+
+
+SELECT
+ obj.name AS table_name,
+ col.name AS column_name,
+ ISNULL(ep.value,'') AS column_description
+FROM
+ sys.objects AS obj
+INNER JOIN
+ sys.columns AS col
+ON
+ col.object_id = obj.object_id
+LEFT JOIN
+ sys.extended_properties AS ep
+ON
+ ep.major_id = obj.object_id
+ AND ep.minor_id = col.column_id
+ AND ep.class = 1
+WHERE
+ obj.type = 'U'
+ORDER BY
+ table_name ASC, col.column_id ASC;
\ No newline at end of file
diff --git a/常用SQL/系统相关/表详细信息2.sql b/常用SQL/系统相关/表详细信息2.sql
new file mode 100644
index 0000000..9f616ca
--- /dev/null
+++ b/常用SQL/系统相关/表详细信息2.sql
@@ -0,0 +1,33 @@
+
+SELECT
+
+ t.TABLE_NAME AS [TableName],
+ c.COLUMN_NAME AS [ColumnName],
+ c.ORDINAL_POSITION AS [ColumnIndex],
+ CAST(ISNULL(ep.[value], '') AS NVARCHAR(MAX)) AS [ColumnDescription],
+ c.DATA_TYPE AS [ColumnType],
+ CAST(CASE WHEN c.CHARACTER_MAXIMUM_LENGTH IS NULL THEN c.NUMERIC_PRECISION ELSE c.CHARACTER_MAXIMUM_LENGTH END AS NVARCHAR(10)) AS [ColumnSize],
+ CAST(CASE WHEN EXISTS (
+ SELECT 1 FROM HissAI_Res.INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
+ INNER JOIN HissAI_Res.INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu ON tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME AND tc.TABLE_SCHEMA = kcu.TABLE_SCHEMA AND tc.TABLE_NAME = kcu.TABLE_NAME
+ WHERE tc.CONSTRAINT_TYPE = 'PRIMARY KEY'
+ AND kcu.TABLE_SCHEMA = t.TABLE_SCHEMA
+ AND kcu.TABLE_NAME = t.TABLE_NAME
+ AND kcu.COLUMN_NAME = c.COLUMN_NAME
+ ) THEN 1 ELSE 0 END AS BIT) AS [ColumnIsPK],
+ CAST(CASE WHEN c.IS_NULLABLE = 'YES' THEN 1 ELSE 0 END AS BIT) AS [ColumnIsNull],
+ CAST(COLUMN_DEFAULT AS NVARCHAR(MAX)) AS [ColumnDefault]
+FROM
+ HissAI_Res.INFORMATION_SCHEMA.TABLES t
+INNER JOIN
+ HissAI_Res.INFORMATION_SCHEMA.COLUMNS c ON t.TABLE_SCHEMA = c.TABLE_SCHEMA AND t.TABLE_NAME = c.TABLE_NAME
+LEFT OUTER JOIN
+ HissAI_Res.sys.columns sc ON t.TABLE_SCHEMA + '.' + t.TABLE_NAME = OBJECT_SCHEMA_NAME(sc.object_id) + '.' + OBJECT_NAME(sc.object_id) AND c.COLUMN_NAME = sc.name
+LEFT OUTER JOIN
+ HissAI_Res.sys.extended_properties ep ON t.TABLE_SCHEMA + '.' + t.TABLE_NAME = OBJECT_SCHEMA_NAME(ep.major_id) + '.' + OBJECT_NAME(ep.major_id) AND sc.column_id = ep.minor_id AND ep.name = 'MS_Description'
+WHERE
+ t.TABLE_NAME = 'T_App_Config' and (ep.class=1 or ep.class is null )
+ORDER BY
+ c.ORDINAL_POSITION ASC;
+
+
\ No newline at end of file
diff --git a/常用SQL/系统相关/表详细信息、.sql b/常用SQL/系统相关/表详细信息、.sql
new file mode 100644
index 0000000..748beab
--- /dev/null
+++ b/常用SQL/系统相关/表详细信息、.sql
@@ -0,0 +1,123 @@
+
+SELECT
+ col.object_id ,
+ obj.name AS table_name,
+ col.name AS column_name,
+ ISNULL(ep.value,'') AS column_description,
+ inf.DATA_TYPE as column_type,
+ ISNULL(inf.CHARACTER_MAXIMUM_LENGTH ,0) as column_length,
+ indx.name
+FROM
+ sys.objects AS obj
+INNER JOIN
+ sys.columns AS col
+ON
+ col.object_id = obj.object_id
+LEFT JOIN
+ sys.extended_properties AS ep--ע
+ON
+ ep.major_id = obj.object_id
+ AND ep.minor_id = col.column_id
+ AND ep.class = 1
+left join
+INFORMATION_SCHEMA.COLUMNS inf
+on
+inf.TABLE_NAME=obj.name and
+inf.COLUMN_NAME=col.name
+left join sys.indexes indx
+on
+ indx.object_id = obj.object_id
+WHERE
+ obj.type = 'U' and obj.name='T_App_Config'
+ORDER BY
+ table_name ASC, col.column_id ASC;
+
+
+SELECT
+ T.TABLE_NAME AS ,
+ c.ORDINAL_POSITION as ֶ˳,
+ C.COLUMN_NAME AS ֶ,
+ CASE
+ WHEN PT.VALUE IS NULL THEN ''
+ ELSE PT.VALUE
+ END AS ֶע,
+ C.DATA_TYPE AS ֶ,
+ C.CHARACTER_MAXIMUM_LENGTH AS ֶδС,
+ CASE
+ WHEN KCU.COLUMN_NAME IS NULL THEN 0
+ ELSE 1
+ END AS Ƿ
+FROM INFORMATION_SCHEMA.TABLES T
+INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME = C.TABLE_NAME
+LEFT JOIN sys.extended_properties PT ON PT.major_id = OBJECT_ID(T.TABLE_SCHEMA + '.' + T.TABLE_NAME) AND PT.minor_id = C.ORDINAL_POSITION AND PT.NAME ='MS_Description'
+LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU ON KCU.TABLE_NAME = T.TABLE_NAME AND KCU.COLUMN_NAME = C.COLUMN_NAME AND EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC WHERE TC.CONSTRAINT_TYPE = 'PRIMARY KEY' AND TC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME)
+WHERE T.TABLE_TYPE = 'BASE TABLE' AND T.TABLE_NAME ='T_App_Config'
+ORDER BY T.TABLE_NAME, C.ORDINAL_POSITION;
+
+
+
+SELECT
+ t.TABLE_NAME AS [],
+ c.COLUMN_NAME AS [ֶ],
+ c.ORDINAL_POSITION AS [ֶ˳],
+ CAST(ISNULL(ep.[value], '') AS NVARCHAR(MAX)) AS [ֶע],
+ c.DATA_TYPE AS [ֶ],
+ CAST(CASE WHEN c.CHARACTER_MAXIMUM_LENGTH IS NULL THEN c.NUMERIC_PRECISION ELSE c.CHARACTER_MAXIMUM_LENGTH END AS NVARCHAR(10)) AS [ֶδС],
+ CAST(CASE WHEN EXISTS (
+ SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
+ INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu ON tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME AND tc.TABLE_SCHEMA = kcu.TABLE_SCHEMA AND tc.TABLE_NAME = kcu.TABLE_NAME
+ WHERE tc.CONSTRAINT_TYPE = 'PRIMARY KEY'
+ AND kcu.TABLE_SCHEMA = t.TABLE_SCHEMA
+ AND kcu.TABLE_NAME = t.TABLE_NAME
+ AND kcu.COLUMN_NAME = c.COLUMN_NAME
+ ) THEN 1 ELSE 0 END AS BIT) AS [Ƿ],
+ CAST(CASE WHEN c.IS_NULLABLE = 'YES' THEN 1 ELSE 0 END AS BIT) AS [Ƿɿ],
+ CAST(COLUMN_DEFAULT AS NVARCHAR(MAX)) AS [Ĭֵ]
+FROM
+ HissAI_Res.INFORMATION_SCHEMA.TABLES t
+INNER JOIN
+ HissAI_Res.INFORMATION_SCHEMA.COLUMNS c ON t.TABLE_SCHEMA = c.TABLE_SCHEMA AND t.TABLE_NAME = c.TABLE_NAME
+LEFT OUTER JOIN
+ HissAI_Res.sys.columns sc ON t.TABLE_SCHEMA + '.' + t.TABLE_NAME = OBJECT_SCHEMA_NAME(sc.object_id) + '.' + OBJECT_NAME(sc.object_id) AND c.COLUMN_NAME = sc.name
+LEFT OUTER JOIN
+ HissAI_Res.sys.extended_properties ep ON t.TABLE_SCHEMA + '.' + t.TABLE_NAME = OBJECT_SCHEMA_NAME(ep.major_id) + '.' + OBJECT_NAME(ep.major_id) AND sc.column_id = ep.minor_id AND ep.name = 'MS_Description'
+WHERE
+ t.TABLE_NAME = 'T_App_Config'
+ORDER BY
+ c.ORDINAL_POSITION ASC;
+
+
+ SELECT name FROM sys.databases where[name] like '%HissAI%' ;
+
+
+ SELECT
+ obj.name AS table_name,
+ ISNULL(ep.value,'') AS table_description
+FROM
+ HissAI_UserData.sys.objects AS obj
+LEFT JOIN
+ HissAI_UserData.sys.extended_properties AS ep
+ON
+ ep.major_id = obj.object_id
+ AND ep.minor_id = 0
+ AND ep.class = 1
+WHERE
+ obj.type = 'U'
+ORDER BY
+ table_name ASC;
+
+ SELECT
+ obj.name AS TableName,
+ ISNULL(ep.value,'') AS TableDescription
+ FROM
+ HissAI_UserData.sys.objects AS obj
+ LEFT JOIN
+ HissAI_UserData.sys.extended_properties AS ep
+ ON
+ ep.major_id = obj.object_id
+ AND ep.minor_id = 0
+ AND ep.class = 1
+ WHERE
+ obj.type = 'U'
+ ORDER BY
+ TableName ASC;
\ No newline at end of file
diff --git a/常用SQL/菜单修改.sql b/常用SQL/菜单修改.sql
new file mode 100644
index 0000000..b078db8
--- /dev/null
+++ b/常用SQL/菜单修改.sql
@@ -0,0 +1,3 @@
+SELECT TOP 100 * FROM Phone300_VL_UI_CBT.dbo.T_VL_UI_Epg_Cfg where EpgCategory=1003
+alter table Phone300_VL_UI_CBT.dbo.T_VL_UI_Epg_Cfg add CountryName nvarchar(200);
+alter table Phone300_VL_UI_CBT.dbo.T_VL_UI_Epg_Cfg add Continent nvarchar(200);
\ No newline at end of file
diff --git a/文档/.net/EfCode.md b/文档/.net/EfCode.md
new file mode 100644
index 0000000..34a7af6
--- /dev/null
+++ b/文档/.net/EfCode.md
@@ -0,0 +1,5 @@
+
+### 反向工程
+1. 安装 dotnet tool install --global dotnet-ef
+2. 安装包 Microsoft.EntityFrameworkCore.Design
+3. 执行命令 dotnet ef dbcontext scaffold "Server=172.27.27.12;Database=TextGenerationTest;User Id=zpc;Password=zpc;TrustServerCertificate=true;" Microsoft.EntityFrameworkCore.SqlServer -o Models --force
\ No newline at end of file
diff --git a/文档/.net/grpc.md b/文档/.net/grpc.md
new file mode 100644
index 0000000..73a2944
--- /dev/null
+++ b/文档/.net/grpc.md
@@ -0,0 +1,46 @@
+# gRPC服务
+
+## 在已有.net code 中添加gRPC服务器
+### 1.按照包
+```C#
+dotnet add package Grpc
+dotnet add package Grpc.Tools
+dotnet add package Grpc.AspNetCore
+```
+
+RegionStatisticsClientServer
+
+### 2.添加 .proto 文件
+helloworld.proto
+```C#
+syntax = "proto3";
+
+package HelloWorld;
+
+service Greeter {
+ rpc SayHello (HelloRequest) returns (HelloReply) {}
+}
+
+message HelloRequest {
+ string name = 1;
+}
+
+message HelloReply {
+ string message = 1;
+}
+```
+
+### 3.配置 csproj 文件
+```C#
+
+
+
+```
+
+### 4.生成代码
+
+###
+```C#
+
+```
+
\ No newline at end of file
diff --git a/文档/Git/git.md b/文档/Git/git.md
new file mode 100644
index 0000000..29abb14
--- /dev/null
+++ b/文档/Git/git.md
@@ -0,0 +1,107 @@
+# git
+
+# 常用命令
+
+```sh
+# 拉取代码
+ git clone [url]
+ # git clone git@192.168.1.33:mogu_server/sunnysports.git
+
+# 更新代码
+git pull
+
+# 添加到暂存区
+git add .
+
+# 提交代码
+git commit -m "提交内容"
+
+# 推送代码
+git push
+
+# 切换分支
+git checkout <分支名称>
+git checkout dev-sunny
+#查看提交历史记录。
+git log
+
+#比较当前文件与暂存区或HEAD的差异。
+git diff
+
+#将当前工作区的修改保存起来,以便稍后恢复。
+git stash
+
+#恢复之前保存的修改,并删除对应的stash。
+git stash pop
+
+#安装子模块
+git submodule init
+git submodule update
+
+```
+
+# 创建ssh证书
+## 1.启动Git Bash:
+## 2.生成新的SSH密钥
+```sh
+ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
+
+ ssh-keygen -t rsa -b 4096 -C "zpc@pc"
+```
+## 3.设置SSH代理 在某些系统上,你可能需要在每次启动计算机时添加SSH密钥到SSH代理。可以使用以下命令:
+``` sh
+eval "$(ssh-agent -s)"
+ssh-add ~/.ssh/id_rsa
+```
+## 5.复制公钥:使用以下命令将公钥复制到剪贴板:
+```sh
+cat ~/.ssh/id_rsa.pub | clip
+```
+## 6.验证
+```sh
+
+ssh -T git@192.168.1.33
+ssh -T git@github.com
+```
+ssh-copy-id -i ~/.ssh/id_rsa ubuntu@1.117.87.77
+
+# Ubuntu 添加git
+``` sh
+sudo apt update
+sudo apt install git
+git --version
+```
+## 圣剑
+
+
+
+cat ~/.ssh/id_rsa.pub
+
+eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
+
+ssh -T git@192.168.1.33
+
+ssh-keygen -t rsa -b 4096 -C "zpc1131"
+ssh-keygen -t rsa -b 4096 -C "zpc1131@gmail.com"
+ssh -T git@github.com
+### 拉取
+``` sh
+git clone git@192.168.1.33:mogu_server/sunnysports.git
+
+```
+ssh-copy-id -i D:/ssh/229.pub root@192.168.1.229
+
+eval "$(ssh-agent -s)" ssh-add D:/ssh/229
+
+eval "$(ssh-agent -s)" ssh-add ~/.ssh/229
+ssh root@192.168.1.229 -i ~/.ssh/229_rsa
+```sh
+ssh-keygen -t rsa -b 4096 -C "zhangzhe@wsl"
+/home/z/.ssh/229_rsa
+eval "$(ssh-agent -s)" ssh-add /home/z/.ssh/229_rsa
+ ssh-copy-id -i /home/z/.ssh/229_rsa.pub root@192.168.1.229
+
+git config --global user.email "zpc1131@wsl"
+ git config --global user.name "zhangzhe"
+
+```
\ No newline at end of file
diff --git a/文档/SQL Server/设置sqlserver占用内存.sql b/文档/SQL Server/设置sqlserver占用内存.sql
new file mode 100644
index 0000000..5223b81
--- /dev/null
+++ b/文档/SQL Server/设置sqlserver占用内存.sql
@@ -0,0 +1,9 @@
+EXEC sp_configure 'show advanced options', 1;
+RECONFIGURE;
+EXEC sp_configure 'max server memory (MB)';
+EXEC sp_configure 'min server memory (MB)';
+
+
+EXEC sp_configure 'max server memory (MB)', 10240; -- 10GB in MB
+EXEC sp_configure 'min server memory (MB)', 4096; -- 4GB in MB
+RECONFIGURE;
\ No newline at end of file
diff --git a/文档/linux/.net 8.md b/文档/linux/.net 8.md
new file mode 100644
index 0000000..08a0f78
--- /dev/null
+++ b/文档/linux/.net 8.md
@@ -0,0 +1,25 @@
+# [Ubuntu 22.04安装.net 8](https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-ubuntu-2204)
+
+```sh
+# 更新包
+sudo apt-get update
+# 安装.net 8
+sudo apt-get install -y dotnet-sdk-8.0
+
+```
+
+# 运行
+```sh
+#恢复依赖
+dotnet restore
+
+
+#编译项目
+dotnet build
+
+# 查看版本列表
+dotnet --list-sdks
+
+# 发布项目
+dotnet publish -c Release
+```
diff --git a/文档/linux/BaGet.md b/文档/linux/BaGet.md
new file mode 100644
index 0000000..c2d0b78
--- /dev/null
+++ b/文档/linux/BaGet.md
@@ -0,0 +1,28 @@
+# 安装BaGet
+## 注意事项
+1. 原生的BaGet使用的是.net code 3.1版本,如果使用更高的版本,需要拉取[源代码](https://github.com/loic-sharma/BaGet),切换.net版本,然后编译、发布即可。
+2. 本次安装使用的是.net8
+3. 修改配置项:appsettings.json
+```json
+{
+ "ApiKey": "d50e3dbd66",
+ "PackageDeletionBehavior": "Unlist",
+ "AllowPackageOverwrites": false,
+ "Database": {
+ "Type": "Sqlite",
+ "ConnectionString": "Data Source=./baget.db"
+ },
+ "Storage": {
+ "Type": "FileSystem",
+ "Path": "/disk/packages"
+ },
+ "Search": {
+ "Type": "Database"
+ },
+}
+```
+## 安装服务
+```sh
+
+```
+##
diff --git a/文档/linux/Gitea.md b/文档/linux/Gitea.md
new file mode 100644
index 0000000..f9d3f52
--- /dev/null
+++ b/文档/linux/Gitea.md
@@ -0,0 +1,75 @@
+# Gitea
+搭建私有Git服务器
+##
+```sh
+sudo apt update
+sudo apt install git wget -y
+# 创建git用户
+sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
+# 下载代码
+wget -O /tmp/gitea https://dl.gitea.io/gitea/1.16.7/gitea-1.16.7-linux-amd64
+wget -O /tmp/gitea https://dl.gitea.com/gitea/1.22.0/gitea-1.22.0-linux-amd64
+# 将下载的文件移动到合适的位置并赋予执行权限
+sudo mv /tmp/gitea /usr/local/bin/gitea
+sudo chmod +x /usr/local/bin/gitea
+# 创建所需的目录:
+sudo mkdir -p /var/lib/gitea/{custom,data,log}
+sudo chown -R git:git /var/lib/gitea/
+sudo chmod -R 750 /var/lib/gitea/
+sudo mkdir /etc/gitea
+sudo chown root:git /etc/gitea
+sudo chmod 770 /etc/gitea
+# 创建服务文件:
+sudo nano /etc/systemd/system/gitea.service
+
+# 添加内容
+[Unit]
+Description=Gitea
+After=syslog.target
+After=network.target
+[Service]
+RestartSec=2s
+Type=simple
+User=git
+Group=git
+WorkingDirectory=/var/lib/gitea/
+ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
+Restart=always
+Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea/
+[Install]
+WantedBy=multi-user.target
+
+#重新加载systemd并启动Gitea:
+sudo systemctl daemon-reload
+sudo systemctl enable gitea
+sudo systemctl start gitea
+sudo systemctl status gitea
+# 可选,放开防火墙
+sudo ufw allow 3000/tcp
+sudo ufw reload
+```
+
+## 配置项 /data/gitea/conf/app.ini
+1. 数据库文件路径:/var/lib/gitea/data/gitea.db
+2. 仓库根目录:/var/lib/gitea/data/gitea-repositories
+3. LFS根目录:/var/lib/gitea/data/lfs
+4. 日志路径:/var/lib/gitea/log
+5. 管理员账号:huanmeng 9-9jYRqeywr!SA3 huanmeng@admin.com
+
+
+## 在Gitea 的配置文件中设置 webhook.ALLOWED_HOST_LIST 来允许特定的服务器。
+```sh
+#找到 Gitea 的配置文件:
+#Gitea 的配置文件通常是 app.ini,它通常位于 Gitea 的安装目录下,例如 /etc/gitea/app.ini 或 /var/lib/gitea/custom/conf/app.ini。
+sudo nano /etc/gitea/app.ini
+# 设置 ALLOWED_HOST_LIST:
+# 在 [webhook] 部分中添加或修改 ALLOWED_HOST_LIST 设置,将你的服务器 IP 地址加入到允许列表中。你可以添加多个地址,用逗号分隔。
+[webhook]
+ALLOWED_HOST_LIST = 192.168.195.30
+# 如果需要允许多个 IP 地址,可以这样:
+[webhook]
+ALLOWED_HOST_LIST = 192.168.195.30,192.168.195.31,example.com
+# 保存文件并关闭编辑器。
+sudo systemctl restart gitea
+
+```
\ No newline at end of file
diff --git a/文档/linux/Gitea/webhook.json b/文档/linux/Gitea/webhook.json
new file mode 100644
index 0000000..94e98e2
--- /dev/null
+++ b/文档/linux/Gitea/webhook.json
@@ -0,0 +1,194 @@
+{
+ "ref": "refs/heads/main",
+ "before": "dd420bcda9be2ff3dde9d65b4c30c0a08c9b043c",
+ "after": "dd420bcda9be2ff3dde9d65b4c30c0a08c9b043c",
+ "compare_url": "http://123.207.203.228:3000/server/CodeRelease/compare/dd420bcda9be2ff3dde9d65b4c30c0a08c9b043c...dd420bcda9be2ff3dde9d65b4c30c0a08c9b043c",
+ "commits": [
+ {
+ "id": "dd420bcda9be2ff3dde9d65b4c30c0a08c9b043c",
+ "message": "提交代码\n",
+ "url": "http://123.207.203.228:3000/server/CodeRelease/commit/dd420bcda9be2ff3dde9d65b4c30c0a08c9b043c",
+ "author": {
+ "name": "zpc",
+ "email": "zpc1131@gmail.com",
+ "username": ""
+ },
+ "committer": {
+ "name": "zpc",
+ "email": "zpc1131@gmail.com",
+ "username": ""
+ },
+ "verification": null,
+ "timestamp": "0001-01-01T00:00:00Z",
+ "added": null,
+ "removed": null,
+ "modified": null
+ }
+ ],
+ "total_commits": 1,
+ "head_commit": {
+ "id": "dd420bcda9be2ff3dde9d65b4c30c0a08c9b043c",
+ "message": "提交代码\n",
+ "url": "http://123.207.203.228:3000/server/CodeRelease/commit/dd420bcda9be2ff3dde9d65b4c30c0a08c9b043c",
+ "author": {
+ "name": "zpc",
+ "email": "zpc1131@gmail.com",
+ "username": ""
+ },
+ "committer": {
+ "name": "zpc",
+ "email": "zpc1131@gmail.com",
+ "username": ""
+ },
+ "verification": null,
+ "timestamp": "0001-01-01T00:00:00Z",
+ "added": null,
+ "removed": null,
+ "modified": null
+ },
+ "repository": {
+ "id": 6,
+ "owner": {
+ "id": 3,
+ "login": "server",
+ "login_name": "",
+ "source_id": 0,
+ "full_name": "",
+ "email": "server@noreply.localhost",
+ "avatar_url": "http://123.207.203.228:3000/avatars/cf1e8c14e54505f60aa10ceb8d5d8ab3",
+ "html_url": "http://123.207.203.228:3000/server",
+ "language": "",
+ "is_admin": false,
+ "last_login": "0001-01-01T00:00:00Z",
+ "created": "2024-06-02T13:09:11+08:00",
+ "restricted": false,
+ "active": false,
+ "prohibit_login": false,
+ "location": "",
+ "website": "",
+ "description": "",
+ "visibility": "public",
+ "followers_count": 0,
+ "following_count": 0,
+ "starred_repos_count": 0,
+ "username": "server"
+ },
+ "name": "CodeRelease",
+ "full_name": "server/CodeRelease",
+ "description": "代码发布",
+ "empty": false,
+ "private": false,
+ "fork": false,
+ "template": false,
+ "parent": null,
+ "mirror": false,
+ "size": 39,
+ "language": "",
+ "languages_url": "http://123.207.203.228:3000/api/v1/repos/server/CodeRelease/languages",
+ "html_url": "http://123.207.203.228:3000/server/CodeRelease",
+ "url": "http://123.207.203.228:3000/api/v1/repos/server/CodeRelease",
+ "link": "",
+ "ssh_url": "git@123.207.203.228:server/CodeRelease.git",
+ "clone_url": "http://123.207.203.228:3000/server/CodeRelease.git",
+ "original_url": "",
+ "website": "",
+ "stars_count": 0,
+ "forks_count": 0,
+ "watchers_count": 1,
+ "open_issues_count": 0,
+ "open_pr_counter": 0,
+ "release_counter": 0,
+ "default_branch": "main",
+ "archived": false,
+ "created_at": "2024-06-25T11:48:41+08:00",
+ "updated_at": "2024-06-25T14:11:25+08:00",
+ "archived_at": "1970-01-01T08:00:00+08:00",
+ "permissions": {
+ "admin": false,
+ "push": false,
+ "pull": false
+ },
+ "has_issues": true,
+ "internal_tracker": {
+ "enable_time_tracker": true,
+ "allow_only_contributors_to_track_time": true,
+ "enable_issue_dependencies": true
+ },
+ "has_wiki": true,
+ "has_pull_requests": true,
+ "has_projects": true,
+ "projects_mode": "all",
+ "has_releases": true,
+ "has_packages": true,
+ "has_actions": true,
+ "ignore_whitespace_conflicts": false,
+ "allow_merge_commits": true,
+ "allow_rebase": true,
+ "allow_rebase_explicit": true,
+ "allow_squash_merge": true,
+ "allow_fast_forward_only_merge": true,
+ "allow_rebase_update": true,
+ "default_delete_branch_after_merge": false,
+ "default_merge_style": "merge",
+ "default_allow_maintainer_edit": false,
+ "avatar_url": "http://123.207.203.228:3000/",
+ "internal": false,
+ "mirror_interval": "",
+ "object_format_name": "",
+ "mirror_updated": "0001-01-01T00:00:00Z",
+ "repo_transfer": null
+ },
+ "pusher": {
+ "id": 2,
+ "login": "zhangzhe",
+ "login_name": "",
+ "source_id": 0,
+ "full_name": "",
+ "email": "zhangzhe@noreply.localhost",
+ "avatar_url": "http://123.207.203.228:3000/avatars/a41a0dc924cc9424ef91104f38c3b30d",
+ "html_url": "http://123.207.203.228:3000/zhangzhe",
+ "language": "",
+ "is_admin": false,
+ "last_login": "0001-01-01T00:00:00Z",
+ "created": "2024-05-31T17:08:51+08:00",
+ "restricted": false,
+ "active": false,
+ "prohibit_login": false,
+ "location": "",
+ "website": "",
+ "description": "",
+ "visibility": "public",
+ "followers_count": 0,
+ "following_count": 0,
+ "starred_repos_count": 0,
+ "username": "zhangzhe"
+ },
+ "sender": {
+ "id": 2,
+ "login": "zhangzhe",
+ "login_name": "",
+ "source_id": 0,
+ "full_name": "",
+ "email": "zhangzhe@noreply.localhost",
+ "avatar_url": "http://123.207.203.228:3000/avatars/a41a0dc924cc9424ef91104f38c3b30d",
+ "html_url": "http://123.207.203.228:3000/zhangzhe",
+ "language": "",
+ "is_admin": false,
+ "last_login": "0001-01-01T00:00:00Z",
+ "created": "2024-05-31T17:08:51+08:00",
+ "restricted": false,
+ "active": false,
+ "prohibit_login": false,
+ "location": "",
+ "website": "",
+ "description": "",
+ "visibility": "public",
+ "followers_count": 0,
+ "following_count": 0,
+ "starred_repos_count": 0,
+ "username": "zhangzhe"
+ }
+}
+
+
+
diff --git a/文档/linux/Gitea/webhook.发布.json b/文档/linux/Gitea/webhook.发布.json
new file mode 100644
index 0000000..8d186e5
--- /dev/null
+++ b/文档/linux/Gitea/webhook.发布.json
@@ -0,0 +1,173 @@
+
+{
+ "action": "published",
+ "release": {
+ "id": 2,
+ "tag_name": "0.0.2",
+ "target_commitish": "main",
+ "name": "测试",
+ "body": "",
+ "url": "http://123.207.203.228:3000/api/v1/repos/server/CodeRelease/releases/2",
+ "html_url": "http://123.207.203.228:3000/server/CodeRelease/releases/tag/0.0.2",
+ "tarball_url": "http://123.207.203.228:3000/server/CodeRelease/archive/0.0.2.tar.gz",
+ "zipball_url": "http://123.207.203.228:3000/server/CodeRelease/archive/0.0.2.zip",
+ "upload_url": "http://123.207.203.228:3000/api/v1/repos/server/CodeRelease/releases/2/assets",
+ "draft": false,
+ "prerelease": false,
+ "created_at": "2024-06-25T14:57:42+08:00",
+ "published_at": "2024-06-25T14:57:42+08:00",
+ "author": {
+ "id": 2,
+ "login": "zhangzhe",
+ "login_name": "",
+ "source_id": 0,
+ "full_name": "",
+ "email": "zhangzhe@noreply.localhost",
+ "avatar_url": "http://123.207.203.228:3000/avatars/a41a0dc924cc9424ef91104f38c3b30d",
+ "html_url": "http://123.207.203.228:3000/zhangzhe",
+ "language": "",
+ "is_admin": false,
+ "last_login": "0001-01-01T00:00:00Z",
+ "created": "2024-05-31T17:08:51+08:00",
+ "restricted": false,
+ "active": false,
+ "prohibit_login": false,
+ "location": "",
+ "website": "",
+ "description": "",
+ "visibility": "public",
+ "followers_count": 0,
+ "following_count": 0,
+ "starred_repos_count": 0,
+ "username": "zhangzhe"
+ },
+ "assets": [
+ {
+ "id": 5,
+ "name": "CodeRelease.0.0.2.zip",
+ "size": 1463907,
+ "download_count": 0,
+ "created_at": "2024-06-25T14:57:40+08:00",
+ "uuid": "87d80f69-7083-46be-aa29-2bc50b782718",
+ "browser_download_url": "http://123.207.203.228:3000/server/CodeRelease/releases/download/0.0.2/CodeRelease.0.0.2.zip"
+ }
+ ]
+ },
+ "repository": {
+ "id": 6,
+ "owner": {
+ "id": 3,
+ "login": "server",
+ "login_name": "",
+ "source_id": 0,
+ "full_name": "",
+ "email": "",
+ "avatar_url": "http://123.207.203.228:3000/avatars/cf1e8c14e54505f60aa10ceb8d5d8ab3",
+ "html_url": "http://123.207.203.228:3000/server",
+ "language": "",
+ "is_admin": false,
+ "last_login": "0001-01-01T00:00:00Z",
+ "created": "2024-06-02T13:09:11+08:00",
+ "restricted": false,
+ "active": false,
+ "prohibit_login": false,
+ "location": "",
+ "website": "",
+ "description": "",
+ "visibility": "public",
+ "followers_count": 0,
+ "following_count": 0,
+ "starred_repos_count": 0,
+ "username": "server"
+ },
+ "name": "CodeRelease",
+ "full_name": "server/CodeRelease",
+ "description": "代码发布",
+ "empty": false,
+ "private": false,
+ "fork": false,
+ "template": false,
+ "parent": null,
+ "mirror": false,
+ "size": 39,
+ "language": "",
+ "languages_url": "http://123.207.203.228:3000/api/v1/repos/server/CodeRelease/languages",
+ "html_url": "http://123.207.203.228:3000/server/CodeRelease",
+ "url": "http://123.207.203.228:3000/api/v1/repos/server/CodeRelease",
+ "link": "",
+ "ssh_url": "git@123.207.203.228:server/CodeRelease.git",
+ "clone_url": "http://123.207.203.228:3000/server/CodeRelease.git",
+ "original_url": "",
+ "website": "",
+ "stars_count": 0,
+ "forks_count": 0,
+ "watchers_count": 1,
+ "open_issues_count": 0,
+ "open_pr_counter": 0,
+ "release_counter": 2,
+ "default_branch": "main",
+ "archived": false,
+ "created_at": "2024-06-25T11:48:41+08:00",
+ "updated_at": "2024-06-25T14:11:25+08:00",
+ "archived_at": "1970-01-01T08:00:00+08:00",
+ "permissions": {
+ "admin": true,
+ "push": true,
+ "pull": true
+ },
+ "has_issues": true,
+ "internal_tracker": {
+ "enable_time_tracker": true,
+ "allow_only_contributors_to_track_time": true,
+ "enable_issue_dependencies": true
+ },
+ "has_wiki": true,
+ "has_pull_requests": true,
+ "has_projects": true,
+ "projects_mode": "all",
+ "has_releases": true,
+ "has_packages": true,
+ "has_actions": true,
+ "ignore_whitespace_conflicts": false,
+ "allow_merge_commits": true,
+ "allow_rebase": true,
+ "allow_rebase_explicit": true,
+ "allow_squash_merge": true,
+ "allow_fast_forward_only_merge": true,
+ "allow_rebase_update": true,
+ "default_delete_branch_after_merge": false,
+ "default_merge_style": "merge",
+ "default_allow_maintainer_edit": false,
+ "avatar_url": "http://123.207.203.228:3000/",
+ "internal": false,
+ "mirror_interval": "",
+ "object_format_name": "",
+ "mirror_updated": "0001-01-01T00:00:00Z",
+ "repo_transfer": null
+ },
+ "sender": {
+ "id": 2,
+ "login": "zhangzhe",
+ "login_name": "",
+ "source_id": 0,
+ "full_name": "",
+ "email": "zhangzhe@noreply.localhost",
+ "avatar_url": "http://123.207.203.228:3000/avatars/a41a0dc924cc9424ef91104f38c3b30d",
+ "html_url": "http://123.207.203.228:3000/zhangzhe",
+ "language": "",
+ "is_admin": false,
+ "last_login": "0001-01-01T00:00:00Z",
+ "created": "2024-05-31T17:08:51+08:00",
+ "restricted": false,
+ "active": false,
+ "prohibit_login": false,
+ "location": "",
+ "website": "",
+ "description": "",
+ "visibility": "public",
+ "followers_count": 0,
+ "following_count": 0,
+ "starred_repos_count": 0,
+ "username": "zhangzhe"
+ }
+ }
\ No newline at end of file
diff --git a/文档/linux/MySql安装使用.md b/文档/linux/MySql安装使用.md
new file mode 100644
index 0000000..9677e4c
--- /dev/null
+++ b/文档/linux/MySql安装使用.md
@@ -0,0 +1,75 @@
+# mysql 安装记录
+
+## 操作环境 Ubuntu 22.04.2 LTS
+
+### 使用 apt 方式安装
+
+```sh
+#更新系统的软件包列表
+sudo apt update
+
+#查看可用的mysql版本
+apt list -a mysql-server
+
+#安装MySQL服务器
+sudo apt install mysql-server
+
+#安装特定版本,将 替换为你想要安装的具体版本号
+sudo apt-get install mysql-server=
+sudo apt-get install mysql-server=5.7.35-1ubuntu18.04
+
+#锁定版本(可选)
+sudo apt-mark hold mysql-server
+
+#安装完成后,可以运行以下命令来启动MySQL服务
+sudo service mysql start
+
+#停止 MySQL 服务
+sudo service mysql stop
+
+#检查MySQL服务状态
+sudo service mysql status
+
+#(可选) 为了增加MySQL的安全性,你可以运行MySQL安全性脚本:
+sudo mysql_secure_installation
+
+#使用 apt-get 删除 MySQL 软件包
+sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
+
+#删除 MySQL 数据目录
+sudo rm -rf /etc/mysql /var/lib/mysql
+```
+
+### MySQL 的二进制发行版,手动安装
+
+## 常用语句
+
+```sh
+#登录
+mysql -u 用户名 -p
+#刷新权限
+FLUSH PRIVILEGES;
+#退出mysql
+exit;
+```
+
+### 常见问题
+
+#### 安装完成后登录不上去
+
+第一次登录时没有密码,造成无法登录这是由于 MYSQL 数据库一开始生成了一个随机密码
+解决方案:
+方案 1.使用命令查看随机密码,利用该文件中的 user 和 password 登录
+
+```sh
+sudo cat /etc/mysql/debian.cnf
+
+#mysql -u debian-sys-maint -p
+#mQxsCvggohEqn2rN
+```
+
+方案 2.修改密码,修改的密码可能要和 mysql 的规则一直
+
+```sh
+GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY "密码";
+```
diff --git a/文档/linux/SQL Server安装记录.md b/文档/linux/SQL Server安装记录.md
new file mode 100644
index 0000000..0182fde
--- /dev/null
+++ b/文档/linux/SQL Server安装记录.md
@@ -0,0 +1,28 @@
+# SQL Server安装记录
+
+## 操作环境 Ubuntu 22.04.2 LTS
+
+## [安装帮助文档](https://learn.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-linux-ver15&preserve-view=true&tabs=ubuntu2004#install)
+
+### 安装方法
+1.导入公共存储库 GPG 密钥
+```sh
+ curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
+```
+2.注册 SQL Server Ubuntu 存储库:
+```sh
+ sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"
+```
+3.运行以下命令以安装 SQL Server:
+```sh
+ sudo apt-get update
+ sudo apt-get install -y mssql-server
+```
+4.启动配置
+```sh
+sudo /opt/mssql/bin/mssql-conf setup
+```
+4.停止sqlserver
+```sh
+sudo systemctl stop mssql-server
+```
\ No newline at end of file
diff --git a/文档/linux/Shadowsocks.md b/文档/linux/Shadowsocks.md
new file mode 100644
index 0000000..5c9fbab
--- /dev/null
+++ b/文档/linux/Shadowsocks.md
@@ -0,0 +1,41 @@
+# 机场 Shadowsocks
+可以通过v2rayN进行代理连接,实现翻墙
+## Shadowsocks 安装
+```sh
+sudo apt update
+# 安装包
+sudo apt install shadowsocks-libev -y
+# 配置 Shadowsocks,创建并编辑 Shadowsocks 的配置文件。这个文件通常位于 /etc/shadowsocks-libev/config.json。
+sudo nano /etc/shadowsocks-libev/config.json
+# 配置项
+{
+ "server":["::1", "127.0.0.1"],
+ "mode":"tcp_and_udp",
+ "server_port":8388,
+ "local_port":1080,
+ "password":"07RT9gL2zLZ2",
+ "timeout":86400,
+ "method":"chacha20-ietf-poly1305"
+}
+
+# 启动和设置开机自启
+sudo systemctl start shadowsocks-libev
+sudo systemctl enable shadowsocks-libev
+# 配置防火墙
+sudo ufw allow 8388/tcp
+sudo ufw allow 8388/udp
+sudo ufw reload
+
+# 检测服务状态
+sudo systemctl status shadowsocks-libev
+
+
+```
+### 配置项解释
+"server": ["::1", "127.0.0.1"]:定义服务器地址。::1 是 IPv6 的本地回环地址,127.0.0.1 是 IPv4 的本地回环地址。这意味着当前配置只会监听本地回环接口。
+"mode": "tcp_and_udp":定义 Shadowsocks 工作模式,这里配置为同时支持 TCP 和 UDP 协议。
+"server_port": 8388:定义服务器监听的端口,这里设置为 8388。
+"local_port": 1080:定义本地代理的端口,这里设置为 1080。
+"password": "07RT9gL2zLZ2":定义连接到代理服务器时需要使用的密码。
+"timeout": 86400:定义连接超时时间,单位为秒,这里设置为 86400 秒(即 24 小时)。
+"method": "chacha20-ietf-poly1305":定义加密方法,这里使用 chacha20-ietf-poly1305,这是一种安全性较高的加密算法。
\ No newline at end of file
diff --git a/文档/linux/ZeroTierOne.md b/文档/linux/ZeroTierOne.md
new file mode 100644
index 0000000..2669978
--- /dev/null
+++ b/文档/linux/ZeroTierOne.md
@@ -0,0 +1,17 @@
+# 内网穿透
+
+## 安装
+```sh
+# GPG 密钥和仓库:
+curl -s https://install.zerotier.com | sudo bash
+# 安装 ZeroTier
+sudo apt install zerotier-one
+# 启动并加入网络 sudo zerotier-cli join
+sudo zerotier-cli join 48d6023c465446a4
+# 检查连接状态
+sudo zerotier-cli listnetworks
+# 开机自启
+sudo systemctl enable zerotier-one
+#
+
+```
diff --git a/文档/linux/baget/baget.service b/文档/linux/baget/baget.service
new file mode 100644
index 0000000..2acd7d1
--- /dev/null
+++ b/文档/linux/baget/baget.service
@@ -0,0 +1,40 @@
+[Unit]
+Description=BaGet NuGet Server
+After=network.target
+
+[Service]
+WorkingDirectory=/disk/BaGet/net8.0/
+ExecStart=/disk/BaGet/net8.0/BaGet
+Restart=always
+# 如果网络服务崩溃,请在10秒钟后重新启动服务:
+RestartSec=10
+SyslogIdentifier=baget
+User=root
+
+[Install]
+WantedBy=multi-user.target
+
+
+
+[Unit]
+Description=sunny-sports-api
+After=network.target
+[Service]
+# 运行 设置环境变量
+#指定服务的工作目录
+WorkingDirectory=/disk/BaGet/net8.0
+# run
+ExecStart=/disk/BaGet/net8.0/BaGet
+SyslogIdentifier=baget
+User=root
+# 打开资源限制infinity 默认会到65535
+LimitNOFILE=1048576
+LimitNPROC=infinity
+LimitCORE=infinity
+# 自动检查重启,10秒后重启
+Restart=always
+RestartSec=10
+[Install]
+WantedBy=multi-user.target
+
+
diff --git a/文档/linux/baget/部署文档.md b/文档/linux/baget/部署文档.md
new file mode 100644
index 0000000..db1e298
--- /dev/null
+++ b/文档/linux/baget/部署文档.md
@@ -0,0 +1,25 @@
+## 服务文件
+/etc/systemd/system/baget.service
+```sh
+sudo nano /etc/systemd/system/baget.service
+sudo systemctl daemon-reload
+sudo systemctl start baget
+sudo systemctl enable baget
+sudo systemctl status baget
+sudo systemctl stop baget
+```
+## 发布命令
+```sh
+# /disk/BaGet/src/BaGet$
+ dotnet publish -c Release -o /disk/BaGetApi/
+```
+
+## 同步命令
+```sh
+rsync -avz /disk/BaGetApi/ ubuntu@123.207.203.228:/disk/BaGet/net8.0/
+```
+## 上传
+```sh
+dotnet nuget push XLib.NetCore.Utility.1.0.0.nupkg --source "http://123.207.203.228:91/v3/index.json" --api-key "066f010d59"
+
+```
diff --git a/文档/linux/ffmpeg.md b/文档/linux/ffmpeg.md
new file mode 100644
index 0000000..0c675e6
--- /dev/null
+++ b/文档/linux/ffmpeg.md
@@ -0,0 +1,10 @@
+## 推取视频
+
+```sh
+nohup ffmpeg -re -stream_loop -1 -i /disk/ai_sports/data/sunny_sports/6MM20240327161002.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/stream_sunny_6MM20240327161002 >/dev/null 2>&1 &
+
+
+```
+
+rtsp://192.168.1.229:8554/stream_sunny_6MM20240327161002
+rtsp://192.168.1.229:8554/stream_sunny_8MM20240327160349
\ No newline at end of file
diff --git a/文档/linux/liunx使用记录.md b/文档/linux/liunx使用记录.md
new file mode 100644
index 0000000..50cecd8
--- /dev/null
+++ b/文档/linux/liunx使用记录.md
@@ -0,0 +1,100 @@
+# liunx 使用记录
+
+## 基础命令
+
+```sh
+#关机
+sudo shutdown now
+
+#查看发行版信息
+lsb_release -a
+
+#查看内核版本:
+uname -a
+
+#查看系统信息
+hostnamectl
+# 删除指纹
+ssh-keygen -R 106.75.209.57
+
+#安装ip查看工具
+sudo apt-get install net-tools
+
+#查看IP
+ifconfig
+
+#查看端口是否打开,有输出为开启,没有输出为关闭
+lsof -i:3306
+
+#开发防火墙的3306端口
+sudo ufw allow 3306/tcp
+
+# 创建文件夹(disk 文件夹名称)
+sudo mkdir /disk
+
+# 获取权限
+sudo chmod -R 777 *
+sudo chmod 777 /disk
+
+# 删除文件夹
+sudo rm -r /disk/sunnysports
+# 发送ssh密钥
+ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@106.75.209.57
+```
+
+### 常用命令
+
+```sh
+#文件和目录操作:
+ls: 列出目录内容。
+cd: 切换目录。
+pwd: 显示当前工作目录的路径。
+cp: 复制文件或目录。
+mv: 移动或重命名文件或目录。
+rm: 删除文件或目录。
+mkdir: 创建目录。
+chmod: 修改文件或目录的权限。
+chown: 修改文件或目录的所有者。
+
+#文件查看和编辑:
+cat: 显示文件内容。
+less: 分页查看文件内容。
+head: 显示文件的开头部分。
+tail: 显示文件的结尾部分。
+nano 或 vim: 文本编辑器。
+
+#系统信息和管理:
+uname: 显示系统信息。
+df: 显示磁盘空间使用情况。
+du: 显示目录空间使用情况。
+top 或 htop: 显示系统资源使用情况。
+ps: 显示当前运行的进程。
+kill: 终止进程。
+shutdown 或 reboot: 关闭或重启系统。
+
+#用户和权限管理:
+whoami: 显示当前登录的用户名。
+who: 显示当前登录用户的信息。
+sudo: 以超级用户权限执行命令。
+adduser 或 useradd: 添加新用户。
+passwd: 修改用户密码。
+groups: 显示用户所属的组。
+visudo: 编辑 sudoers 文件,配置用户权限。
+
+#网络相关:
+ping: 测试网络连接。
+ifconfig: 或 ip: 显示网络接口信息。
+netstat: 显示网络状态。
+traceroute 或 mtr: 追踪网络路由。
+wget 或 curl: 下载文件。
+ssh: 远程登录。
+
+#压缩和解压:
+tar: 打包和解压文件。
+gzip 或 gunzip: 压缩和解压 gzip 格式的文件。
+zip 或 unzip: 压缩和解压 zip 格式的文件。
+```
+
+
+### 服务
+1. 服务基础位置 /etc/systemd/system/
\ No newline at end of file
diff --git a/文档/linux/make.md b/文档/linux/make.md
new file mode 100644
index 0000000..ce6facc
--- /dev/null
+++ b/文档/linux/make.md
@@ -0,0 +1,9 @@
+## make
+
+```sh
+sudo apt update
+sudo apt install make
+make --version
+
+
+```
\ No newline at end of file
diff --git a/文档/linux/nano.md b/文档/linux/nano.md
new file mode 100644
index 0000000..df1799e
--- /dev/null
+++ b/文档/linux/nano.md
@@ -0,0 +1,35 @@
+# nano文本编辑
+
+## 安装
+```sh
+apt-get install -y nano
+```
+
+## 使用语法
+ ```sh
+nano <文件名或文件绝对路径>
+# 使用示例
+nano vvhan.com.txt
+nano /root/vvhan.com.txt
+```
+当你打开一个不存在的文件,那么即为新建文件。打开文件后,就可以直接编辑了。
+## 使用教程
+```sh
+Ctrl+G,显示帮助文本
+Ctrl+O,保存当前文件
+Ctrl+R,读取其他文件并插入光标位置
+Ctrl+Y,跳至上一屏幕
+Ctrl+K,剪切当前一行
+Ctrl+C,显示光标位置
+Ctrl+X,退出编辑文本
+Ctrl+J,对其当前段落(以空格为分隔符)
+Ctrl+W,搜索文本位置
+Ctrl+V,跳至下一屏幕
+Ctrl+U,粘贴文本至光标处
+Ctrl+T,运行拼写检查
+Ctrl+_,跳转到某一行
+ALT+U,撤销
+ALT+E,重做
+ALT+Y, 语法高亮
+ALT+#,显示行号
+```
\ No newline at end of file
diff --git a/文档/linux/nginx.md b/文档/linux/nginx.md
new file mode 100644
index 0000000..318bd3c
--- /dev/null
+++ b/文档/linux/nginx.md
@@ -0,0 +1,231 @@
+# Nginx
+
+## 常用命令
+```sh
+# 启动 Nginx 服务
+sudo systemctl start nginx
+# 关闭
+sudo systemctl stop nginx
+# 重启
+sudo systemctl restart nginx
+# 重新加载 Nginx 以应用更改
+sudo systemctl reload nginx
+
+# 默认目录
+cd /var/www/
+# 配置文件
+cd /etc/nginx/
+/etc/nginx/nginx.conf
+
+#测试 Nginx 配置是否正确
+sudo nginx -t
+
+```
+
+## 在 Ubuntu 22.04 上安装和配置 Nginx
+
+### 安装
+```sh
+#首先,确保您的软件包索引是最新的:
+sudo apt update
+#步骤 2:安装 Nginx
+sudo apt install nginx
+#步骤 3:启动 Nginx 服务
+sudo systemctl start nginx
+#步骤 4:使 Nginx 服务开机自启
+sudo systemctl enable nginx
+#步骤 5:检查 Nginx 状态
+sudo systemctl status nginx
+#步骤 6:配置防火墙
+sudo ufw allow 'Nginx Full'
+
+```
+
+### 配置ssh
+常见的存放路径是 /etc/nginx/ssl/
+```sh
+sudo mkdir -p /etc/nginx/ssl
+sudo cp /path/to/your/example.com.crt /etc/nginx/ssl/
+sudo cp /path/to/your/example.com.key /etc/nginx/ssl/
+
+```
+```sh
+server {
+ listen 443 ssl;
+ server_name api.zpc-xy.com;
+
+ ssl_certificate /etc/nginx/ssl/api.zpc-xy.com_nginx/api.zpc-xy.com_bundle.crt;
+ ssl_certificate_key ssl/api.zpc-xy.com_nginx/api.zpc-xy.com.key;
+
+ # ssl_protocols TLSv1.2 TLSv1.3; # 仅使用 TLS 1.2 和 1.3
+ # ssl_ciphers HIGH:!aNULL:!MD5; # 配置强密码套件
+
+ # location / {
+ # proxy_pass http://localhost:3000; # 例如,如果你有一个后端应用运行在端口3000
+ # proxy_set_header Host $host;
+ # proxy_set_header X-Real-IP $remote_addr;
+ # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ # proxy_set_header X-Forwarded-Proto $scheme;
+ # }
+}
+```
+ ### 配置文件
+```bash
+# 基础配置
+server {
+ listen 80;
+ server_name example.com www.example.com;
+
+ root /var/www/example.com/html;
+ index index.html index.htm index.nginx-debian.html;
+
+ location / {
+ try_files $uri $uri/ =404;
+ }
+}
+
+server {
+ # 添加虚拟目录映射
+ location /output/ {
+ # alias /disk/ai_sports/DataGateway/output/;
+ # 或者使用 root 指令(视具体情况而定)
+ root /disk/ai_sports/DataGateway/output/;
+
+ # 可选配置:根据需要添加其他指令,如访问控制、缓存策略等
+ autoindex on; # 如果希望列出目录内容
+ # expires 30d; # 设置静态资源缓存过期时间
+ # try_files $uri $uri/ =404; # 用于处理目录索引和文件不存在的情况
+ }
+ }
+
+
+# 代理转发
+server {
+ listen 82 default_server;
+ listen [::]:82 default_server;
+
+ #root /var/www/web;
+
+ # Add index.php to the list if you are using PHP
+ #index index.html index.htm index.nginx-debian.html;
+
+ server_name _;
+
+ location / {
+ proxy_pass http://192.168.195.32:8189;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ }
+
+
+}
+# 代理转发,允许websocket
+server {
+ listen 82 default_server;
+ listen [::]:82 default_server;
+
+ #root /var/www/web;
+
+ # Add index.php to the list if you are using PHP
+ #index index.html index.htm index.nginx-debian.html;
+
+ server_name _;
+
+
+ location / {
+ proxy_pass http://192.168.195.32:8189;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ }
+
+
+}
+
+### 添加跨域
+server {
+ listen 83 default_server;
+ listen [::]:83 default_server;
+
+ #root /var/www/web;
+
+ # Add index.php to the list if you are using PHP
+ #index index.html index.htm index.nginx-debian.html;
+
+ server_name _;
+
+ location / {
+ proxy_pass http://192.168.195.32:9967;
+
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+ # 添加自定义标头
+
+ # 添加 CORS 标头
+ add_header 'Access-Control-Allow-Origin' '*';
+ add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
+ add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
+
+ # 如果需要处理 OPTIONS 请求
+ if ($request_method = 'OPTIONS') {
+ add_header 'Access-Control-Allow-Origin' '*';
+ add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
+ add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
+ add_header 'Access-Control-Max-Age' 1728000;
+ add_header 'Content-Length' 0;
+ add_header 'Content-Type' 'text/plain charset=UTF-8';
+ return 204;
+ }
+
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ }
+
+}
+
+
+
+```
+
+
+ # 安装支持 ngx_stream 模块的 Nginx 版本:
+ ```sh
+sudo apt update
+sudo apt install nginx-full
+# 更新配置以启用 stream 模块: nginx.conf 文件中添加
+stream {
+ upstream rdp_backend {
+ server windows_server_ip:3389;
+ }
+
+ server {
+ listen 3389; # 监听的端口,可以根据需要修改
+ proxy_pass rdp_backend;
+ }
+}
+
+## 进阶选项 nginx.conf 文件中添加
+
+stream {
+ include /etc/nginx/stream.d/*.conf; # 确保 stream 块包含 conf.d 目录中的配置文件
+}
+ #/etc/nginx/stream.d/rdp.conf
+upstream rdp_backend {
+ server 192.168.195.4:3389; # 将此 IP 替换为你的 Windows 服务器 IP
+}
+
+server {
+ listen 89; # Nginx 监听的端口,可以根据需要修改
+ proxy_pass rdp_backend;
+}
+
+ ```
\ No newline at end of file
diff --git a/文档/linux/node.js.md b/文档/linux/node.js.md
new file mode 100644
index 0000000..176eda9
--- /dev/null
+++ b/文档/linux/node.js.md
@@ -0,0 +1,14 @@
+# Node.js
+[官网地址](https://nodejs.org/zh-cn/download/package-manager/all)
+### [安装](https://github.com/nodesource/distributions?tab=readme-ov-file#debian-and-ubuntu-based-distributions)
+```sh
+sudo apt-get install -y curl
+#下载Node.js安装脚本:
+curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh
+# 使用 sudo 运行Node.js设置脚本:
+sudo -E bash nodesource_setup.sh
+# 安装Node.js:
+sudo apt-get install -y nodejs
+#验证安装:
+node -v
+```
\ No newline at end of file
diff --git a/文档/linux/rsync.md b/文档/linux/rsync.md
new file mode 100644
index 0000000..ba990fe
--- /dev/null
+++ b/文档/linux/rsync.md
@@ -0,0 +1,26 @@
+# rsync 服务器文件传输
+
+## 安装
+```sh
+sudo apt-get install rsync
+```
+
+## 常用命令
+```sh
+# 从本地同步到远程服务器
+rsync -avz /path/to/local/dir/ user@remote.server:/path/to/remote/dir/
+# 从远程服务器同步到本地
+rsync -avz user@remote.server:/path/to/remote/dir/ /path/to/local/dir/
+#显示传输进度
+rsync -avz --progress /home/user/project/ user@remote.server:/home/user/backup/
+# 排除某些文件或目录 同步时排除某些文件或目录,可以使用 --exclude 选项:
+rsync -avz --exclude 'node_modules' --exclude '*.log' /home/user/project/ user@remote.server:/home/user/backup/
+# 使用 rsync 同步删除文件 在源位置删除的文件,也在目标位置删除,可以使用 --delete 选项
+rsync -avz --delete /home/user/project/ user@remote.server:/home/user/backup/
+
+```
+## 常用选项
+1. -a:归档模式,表示递归传输并保持所有文件属性。
+2. -v:详细模式,显示传输过程中的详细信息。
+3. -z:压缩文件数据,以减少传输量。
+4. -P:显示传输进度,并自动重启传输中断的部分
\ No newline at end of file
diff --git a/文档/linux/ssh.md b/文档/linux/ssh.md
new file mode 100644
index 0000000..e0325e7
--- /dev/null
+++ b/文档/linux/ssh.md
@@ -0,0 +1,69 @@
+# windwos ssh 创建
+```sh
+ssh-keygen -t rsa -b 4096 -C "zhangzhe@pc"
+# 输入路径 /c/Users/admin/.ssh/229_rsa
+# 创建的路径不能有公共的读写权限
+eval "$(ssh-agent -s)" ssh-add ~/.ssh/229_rsa
+ssh-copy-id -i ~/.ssh/229_rsa.pub root@192.168.1.229
+# 远程的时候可以添加密钥文件地址cd
+ssh root@192.168.1.229 -i ~/.ssh/229_rsa
+```
+
+# linux ssh 创建
+```sh
+ssh-keygen -t rsa -b 4096 -C "zhangzhe@wsl"
+# /home/z/.ssh/229_rsa
+eval "$(ssh-agent -s)" ssh-add /home/z/.ssh/229_rsa
+ssh-copy-id -i /home/z/.ssh/229_rsa.pub root@192.168.1.229
+ # 远程的时候可以添加密钥文件地址
+ssh root@192.168.1.229 -i ~/.ssh/229_rsa
+
+ssh root@192.168.1.229 -i ~/.ssh/229_rsa "cd /disk/work/sj_git/sunnysports/;make build-data"
+
+```
+ssh-copy-id -i /root/.ssh/id_rsa.pub
+
+# linux ssh 线上
+```sh
+ssh-keygen -t rsa -b 4096 -C "zhangzhe@wsl"
+# /home/z/.ssh/25_rsa
+eval "$(ssh-agent -s)" ssh-add /home/z/.ssh/25_rsa
+ssh-copy-id -i /home/z/.ssh/25_rsa.pub root@192.144.132.25
+ # 远程的时候可以添加密钥文件地址
+ssh root@192.144.132.25 -i ~/.ssh/25_rsa
+
+
+```
+
+```sh
+ssh-keygen -t rsa -b 4096 -C "zhangzhe@pc"
+# 输入路径 /c/Users/admin/.ssh/25_rsa
+# 创建的路径不能有公共的读写权限
+eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
+ssh-copy-id -i ~/.ssh/25_rsa.pub root@192.144.132.25
+
+ssh root@106.75.209.57
+# 远程的时候可以添加密钥文件地址
+ssh root@192.144.132.25 -i ~/.ssh/25_rsa
+```
+ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@1.117.87.77
+eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
+1.117.87.77
+dbt@com@1234
+ssh ubuntu@1.117.87.77
+ssh root@1.117.87.77
+
+
+ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.144.132.25
+
+ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@123.207.203.228
+ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@106.75.209.57
+
+ssh root@192.168.1.229 -i ~/.ssh/229_rsa
+
+123.207.203.228
+
+
+
+ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@123.207.203.228
+
diff --git a/文档/linux/服务文件/code-release.service b/文档/linux/服务文件/code-release.service
new file mode 100644
index 0000000..7ee2f7c
--- /dev/null
+++ b/文档/linux/服务文件/code-release.service
@@ -0,0 +1,22 @@
+[Unit]
+Description=code-release
+After=network.target
+[Service]
+# 运行 设置环境变量
+#指定服务的工作目录
+WorkingDirectory=/disk/CodeRelease
+# run
+ExecStart=/disk/CodeRelease/CodeRelease
+SyslogIdentifier=CodeRelease
+User=root
+# 打开资源限制infinity 默认会到65535
+LimitNOFILE=1048576
+LimitNPROC=infinity
+LimitCORE=infinity
+# 自动检查重启,10秒后重启
+Restart=always
+RestartSec=10
+[Install]
+WantedBy=multi-user.target
+
+
diff --git a/文档/linux/服务文件/部署文档.md b/文档/linux/服务文件/部署文档.md
new file mode 100644
index 0000000..12bb061
--- /dev/null
+++ b/文档/linux/服务文件/部署文档.md
@@ -0,0 +1,33 @@
+## 服务文件
+/etc/systemd/system/baget.service
+```sh
+sudo nano /etc/systemd/system/code-release.service
+sudo systemctl start code-release.service
+sudo systemctl daemon-reload
+sudo systemctl start baget
+sudo systemctl enable baget
+sudo systemctl status baget
+sudo systemctl stop baget
+
+
+sudo systemctl restart code-release
+
+```
+## 发布命令
+```sh
+# /disk/BaGet/src/BaGet$
+ dotnet publish -c Release -o /disk/BaGetApi/
+ dotnet publish -c Release -o /disk/CodeRelease/public/
+```
+
+## 同步命令
+```sh
+rsync -avz /disk/BaGetApi/ ubuntu@123.207.203.228:/disk/BaGet/net8.0/
+rsync -avz /disk/CodeRelease/public/ ubuntu@123.207.203.228:/disk/CodeRelease/
+
+```
+## 上传
+```sh
+dotnet nuget push XLib.NetCore.Utility.1.0.0.nupkg --source "http://123.207.203.228:91/v3/index.json" --api-key "066f010d59"
+
+```
diff --git a/文档/windwos/netsh 代理转发.md b/文档/windwos/netsh 代理转发.md
new file mode 100644
index 0000000..67da3ea
--- /dev/null
+++ b/文档/windwos/netsh 代理转发.md
@@ -0,0 +1,16 @@
+```sh
+# 查看所有转发
+netsh interface portproxy show all
+# 转发端口 listenaddress 转发地址 到 connectaddress
+netsh interface portproxy add v4tov4 listenport=7860 listenaddress=117.50.182.144 connectport=7860 connectaddress=127.0.0.1
+netsh advfirewall firewall add rule name="Allow Port 7860" protocol=TCP dir=in localport=7860 action=allow
+
+
+# interface portproxy add
+netsh interface portproxy add v4tov4 listenport=5000 listenaddress=117.50.182.144 connectport=5000 connectaddress=127.0.0.1
+# 删除转发
+netsh interface portproxy delete v4tov4 listenport=7860 listenaddress=117.50.182.144
+# 重启
+netsh interface portproxy reset
+
+```
\ No newline at end of file
diff --git a/文档/其它/.editorconfig b/文档/其它/.editorconfig
new file mode 100644
index 0000000..acb903c
--- /dev/null
+++ b/文档/其它/.editorconfig
@@ -0,0 +1,214 @@
+###############################
+# 核心编辑器配置选项 #
+###############################
+root = true
+# All files
+[*]
+indent_style = space
+
+# XML project files
+[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
+indent_size = 2
+
+# XML config files
+[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
+indent_size = 2
+[*.cs]
+end_of_line = lf #指定换行符的类型,可以是lf(Unix/Linux)、crlf(Windows)或cr(老式的Mac OS)。
+# Code files
+[*.{cs,csx,vb,vbx}]
+indent_size = 4
+insert_final_newline = true
+charset = utf-8 #设置文件字符集为utf-8,在 Linux 系统中,通常推荐使用 UTF-8 而不是 UTF-8 with BOM。添加 BOM 可能会干扰那些不期望在文件开头出现非 ASCII 字节的软件对 UTF-8 的使用。
+###############################
+# .NET 编码约定 #
+###############################
+[*.{cs,vb}]
+
+# 组织 using 指令,将系统引用放在前面
+dotnet_sort_system_directives_first = true
+
+# this. 语法的偏好设置
+dotnet_style_qualification_for_field = false:silent # 对字段使用 this. 语法时,不强制要求
+dotnet_style_qualification_for_property = false:silent # 对属性使用 this. 语法时,不强制要求
+dotnet_style_qualification_for_method = false:silent # 对方法使用 this. 语法时,不强制要求
+dotnet_style_qualification_for_event = false:silent # 对事件使用 this. 语法时,不强制要求
+
+# 语言关键字与 BCL(基类库)类型的偏好设置
+dotnet_style_predefined_type_for_locals_parameters_members = true:silent # 推荐在局部变量、参数和成员中使用语言关键字而不是 BCL 类型
+dotnet_style_predefined_type_for_member_access = true:silent # 推荐在成员访问中使用语言关键字而不是 BCL 类型
+
+# 括号的偏好设置
+dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent # 推荐在算术二元运算符周围始终使用括号以增强清晰度
+dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent # 推荐在关系二元运算符周围始终使用括号以增强清晰度
+dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent # 推荐在其他二元运算符周围始终使用括号以增强清晰度
+dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent # 在其他操作符周围使用括号时,只在必要时添加
+
+# 修饰符的偏好设置
+dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent # 针对非接口成员,推荐添加访问修饰符
+dotnet_style_readonly_field = true:suggestion # 推荐将字段声明为只读
+dotnet_style_object_initializer = true:suggestion # 推荐使用对象初始化器
+dotnet_style_collection_initializer = true:suggestion # 推荐使用集合初始化器
+dotnet_style_explicit_tuple_names = true:suggestion # 推荐使用显式的元组成员命名
+dotnet_style_null_propagation = true:suggestion # 推荐使用 null 条件运算符(?.)进行空引用检查
+dotnet_style_coalesce_expression = true:suggestion # 推荐使用空值合并运算符(??)
+dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent # 在检查是否为 null 时,推荐使用 is 运算符而不是引用相等方法
+dotnet_style_prefer_inferred_tuple_names = true:suggestion # 推荐使用推断的元组成员命名
+dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion # 推荐使用推断的匿名类型成员命名
+dotnet_style_prefer_auto_properties = true:silent # 推荐使用自动属性
+dotnet_style_prefer_conditional_expression_over_assignment = true:silent # 推荐使用条件表达式而不是赋值表达式
+dotnet_style_prefer_conditional_expression_over_return = true:silent # 推荐使用条件表达式而不是 return 语句
+
+###############################
+# 命名约定 #
+###############################
+
+# 样式定义
+dotnet_naming_style.pascal_case_style.capitalization = pascal_case # 使用 PascalCase 风格
+
+# 命名规则:常量字段应使用 PascalCase 风格
+dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion # 规则严重程度为建议
+dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields # 适用于 constant_fields 符号
+dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style # 风格为 PascalCase
+
+# 常量字段的符号定义
+dotnet_naming_symbols.constant_fields.applicable_kinds = field # 适用于字段
+dotnet_naming_symbols.constant_fields.applicable_accessibilities = * # 适用于所有可见性(public、internal、private 等)
+dotnet_naming_symbols.constant_fields.required_modifiers = const # 必须具有 const 修饰符
+
+###############################
+# C# 编码约定 #
+###############################
+[*.cs]
+
+# var 的偏好设置
+csharp_style_var_for_built_in_types = true:silent # 当变量的类型是内置类型时,使用 var
+csharp_style_var_when_type_is_apparent = true:silent # 当变量类型明显时,使用 var
+csharp_style_var_elsewhere = true:silent # 在其他情况下,也使用 var
+
+# 表达式主体成员的偏好设置
+csharp_style_expression_bodied_methods = false:silent # 不使用表达式主体的方法
+csharp_style_expression_bodied_constructors = false:silent # 不使用表达式主体的构造函数
+csharp_style_expression_bodied_operators = false:silent # 不使用表达式主体的运算符
+csharp_style_expression_bodied_properties = true:silent # 使用表达式主体的属性
+csharp_style_expression_bodied_indexers = true:silent # 使用表达式主体的索引器
+csharp_style_expression_bodied_accessors = true:silent # 使用表达式主体的访问器
+
+# 模式匹配的偏好设置
+csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion # 推荐使用模式匹配而非 is 与类型转换检查
+csharp_style_pattern_matching_over_as_with_null_check = true:suggestion # 推荐使用模式匹配而非 as 与 null 检查
+
+# 空检查的偏好设置
+csharp_style_throw_expression = true:suggestion # 推荐使用 throw 表达式
+csharp_style_conditional_delegate_call = true:suggestion # 推荐使用条件委托调用
+
+# 修饰符的偏好设置
+csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async:suggestion # 修饰符的推荐顺序
+
+# 表达式级别的偏好设置
+csharp_prefer_braces = true:silent # 推荐使用大括号,即使在可能省略的情况下
+csharp_style_deconstructed_variable_declaration = true:suggestion # 推荐使用解构变量声明
+csharp_prefer_simple_default_expression = true:suggestion # 推荐使用简化的默认值表达式
+csharp_style_prefer_local_over_anonymous_function = true:suggestion # 推荐使用本地函数而非匿名函数
+csharp_style_inlined_variable_declaration = true:suggestion # 推荐内联变量声明
+
+###############################
+# C# 格式化规则 #
+###############################
+# 新行偏好设置
+
+# 在大括号前添加新行(适用于所有情况)
+csharp_new_line_before_open_brace = all
+
+# 在 "else" 关键字前添加新行
+csharp_new_line_before_else = true
+
+# 在 "catch" 关键字前添加新行
+csharp_new_line_before_catch = true
+
+# 在 "finally" 关键字前添加新行
+csharp_new_line_before_finally = true
+
+# 在对象初始化器中的成员前添加新行
+csharp_new_line_before_members_in_object_initializers = true
+
+# 在匿名类型初始化器中的成员前添加新行
+csharp_new_line_before_members_in_anonymous_types = true
+
+# 在查询表达式的子句之间添加新行
+csharp_new_line_between_query_expression_clauses = true
+
+# 缩进偏好设置
+
+# 缩进 switch 语句的内容
+csharp_indent_case_contents = true
+
+# 缩进 switch 语句的标签
+csharp_indent_switch_labels = true
+
+# 缩进左对齐 switch 语句的标签
+csharp_indent_labels = flush_left
+
+# 空间首选项
+# 禁止在强制类型转换后添加空格
+csharp_space_after_cast = false
+
+# 在控制流语句(如 if、for、while)的关键字后添加空格
+csharp_space_after_keywords_in_control_flow_statements = true
+
+# 在方法调用的参数列表的括号内禁止添加空格
+csharp_space_between_method_call_parameter_list_parentheses = false
+
+# 在方法声明的参数列表的括号内禁止添加空格
+csharp_space_between_method_declaration_parameter_list_parentheses = false
+
+# 在圆括号内禁止添加空格
+csharp_space_between_parentheses = false
+
+# 在继承声明中的冒号前添加空格
+csharp_space_before_colon_in_inheritance_clause = true
+
+# 在继承声明中的冒号后添加空格
+csharp_space_after_colon_in_inheritance_clause = true
+
+# 在二元操作符周围的空格,前后都添加
+csharp_space_around_binary_operators = before_and_after
+
+# 在方法声明的空参数列表的括号内禁止添加空格
+csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
+
+# 在方法调用的方法名和左括号之间禁止添加空格
+csharp_space_between_method_call_name_and_opening_parenthesis = false
+
+# 在方法调用的空参数列表的括号内禁止添加空格
+csharp_space_between_method_call_empty_parameter_list_parentheses = false
+
+# 包装偏好设置
+csharp_preserve_single_line_statements = true # 保留单行语句的换行风格
+csharp_preserve_single_line_blocks = true # 保留单行块的换行风格
+# C# using 指令的放置偏好设置
+csharp_using_directive_placement = outside_namespace:silent # 在命名空间外部放置 using 指令,不强制要求
+
+# 表达式主体的 Lambda 表达式的偏好设置
+csharp_style_expression_bodied_lambdas = true:silent # 推荐使用表达式主体的 Lambda 表达式,不强制要求
+
+# 表达式主体的本地函数的偏好设置
+csharp_style_expression_bodied_local_functions = false:silent # 不推荐使用表达式主体的本地函数,不强制要求
+
+# 简化 using 语句的偏好设置
+csharp_prefer_simple_using_statement = true:suggestion # 推荐使用简化的 using 语句,建议使用
+
+# 命名空间声明风格的偏好设置
+csharp_style_namespace_declarations = block_scoped:silent # 使用块级作用域的命名空间声明风格,不强制要求
+
+# 方法组转换的偏好设置
+csharp_style_prefer_method_group_conversion = true:silent # 推荐使用方法组转换,不强制要求
+
+# 首选顶层语句的偏好设置
+csharp_style_prefer_top_level_statements = true:silent # 推荐使用顶层语句,不强制要求
+
+# 首选主构造函数的偏好设置
+csharp_style_prefer_primary_constructors = true:suggestion # 推荐使用主构造函数,建议使用
+
+# 使用静态本地函数的偏好设置
+csharp_prefer_static_local_function = true:suggestion # 推荐使用静态本地函数,建议使用
diff --git a/文档/其它/.editorconfig1 b/文档/其它/.editorconfig1
new file mode 100644
index 0000000..eceed73
--- /dev/null
+++ b/文档/其它/.editorconfig1
@@ -0,0 +1,38 @@
+
+root = true
+
+# 全部文件
+[*]
+indent_style = space #指定缩进风格,可以是tab(制表符)或space(空格)
+
+# Xml files
+[*.xml]
+indent_size = 2 #定义一个缩进级别的大小。
+
+[*.cs]
+end_of_line = lf #指定换行符的类型,可以是lf(Unix/Linux)、crlf(Windows)或cr(老式的Mac OS)。
+indent_style = space #指定缩进风格,可以是tab(制表符)或space(空格)
+charset = utf-8 #设置文件字符集为utf-8,在 Linux 系统中,通常推荐使用 UTF-8 而不是 UTF-8 with BOM。添加 BOM 可能会干扰那些不期望在文件开头出现非 ASCII 字节的软件对 UTF-8 的使用。
+trim_trailing_whitespace = true #指定是否删除行尾的空白字符。
+insert_final_newline = true #指定文件末尾是否应该插入一个空白行。
+indent_size = 4
+# 模式匹配的偏好设置
+csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion # 推荐使用模式匹配而非 is 与类型转换检查
+csharp_style_pattern_matching_over_as_with_null_check = true:suggestion # 推荐使用模式匹配而非 as 与 null 检查
+
+# 空检查的偏好设置
+csharp_style_throw_expression = true:suggestion # 推荐使用 throw 表达式
+csharp_style_conditional_delegate_call = true:suggestion # 推荐使用条件委托调用
+
+# 修饰符的偏好设置
+csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async:suggestion # 修饰符的推荐顺序
+
+# 表达式级别的偏好设置
+csharp_prefer_braces = true:silent # 推荐使用大括号,即使在可能省略的情况下
+csharp_style_deconstructed_variable_declaration = true:suggestion # 推荐使用解构变量声明
+csharp_prefer_simple_default_expression = true:suggestion # 推荐使用简化的默认值表达式
+csharp_style_prefer_local_over_anonymous_function = true:suggestion # 推荐使用本地函数而非匿名函数
+csharp_style_inlined_variable_declaration = true:suggestion # 推荐内联变量声明
+# 首选顶层语句的偏好设置
+csharp_style_prefer_top_level_statements = true:silent # 推荐使用顶层语句,不强制要求
+
diff --git a/文档/其它/README.md b/文档/其它/README.md
new file mode 100644
index 0000000..f697f1d
--- /dev/null
+++ b/文档/其它/README.md
@@ -0,0 +1,3 @@
+# document
+
+文档
\ No newline at end of file
diff --git a/文档/其它/sunny-sports-api.service b/文档/其它/sunny-sports-api.service
new file mode 100644
index 0000000..128f601
--- /dev/null
+++ b/文档/其它/sunny-sports-api.service
@@ -0,0 +1,20 @@
+[Unit]
+Description=sunny-sports-api
+After=network.target
+[Service]
+# 运行 设置环境变量
+#指定服务的工作目录
+WorkingDirectory=/disk/ai_sports/sunnysportsapi
+# run
+ExecStart=/disk/ai_sports/sunnysportsapi/SunnySports.Api
+SyslogIdentifier=SunnySportsApi
+User=root
+# 打开资源限制infinity 默认会到65535
+LimitNOFILE=1048576
+LimitNPROC=infinity
+LimitCORE=infinity
+# 自动检查重启,10秒后重启
+Restart=always
+RestartSec=10
+[Install]
+WantedBy=multi-user.target
diff --git a/文档/其它/sunny-sports-api.service test b/文档/其它/sunny-sports-api.service test
new file mode 100644
index 0000000..4d41361
--- /dev/null
+++ b/文档/其它/sunny-sports-api.service test
@@ -0,0 +1,20 @@
+[Unit]
+Description=sunny-sports-api
+After=network.target
+[Service]
+# 运行 设置环境变量
+#指定服务的工作目录
+WorkingDirectory=/disk/sunnysportsapi
+# run
+ExecStart=/disk/sunnysportsapi/SunnySports.Api
+SyslogIdentifier=SunnySportsApi
+User=root
+# 打开资源限制infinity 默认会到65535
+LimitNOFILE=1048576
+LimitNPROC=infinity
+LimitCORE=infinity
+# 自动检查重启,10秒后重启
+Restart=always
+RestartSec=10
+[Install]
+WantedBy=multi-user.target
diff --git a/文档/其它/test.md b/文档/其它/test.md
new file mode 100644
index 0000000..c5cf1c4
--- /dev/null
+++ b/文档/其它/test.md
@@ -0,0 +1,17 @@
+后台管理
+需要管理数据库
+需要可以添加数据库
+需要可以删除数据库
+
+学生数据库和系统库是否绑定
+
+
+dotnet ef dbcontext scaffold "Server=192.168.1.229;Database=SunnySport_StudentBase;User ID=chfl;Password=chfl;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=True;" Microsoft.EntityFrameworkCore.SqlServer --no-pluralize --force --output-dir Model/Db_Student/
+
+项目中
+学生数据库是分库,系统数据库是TenantId隔离
+需要的配置
+1.学校名称
+2.系统数据库租户id
+3.系统数据库连接字符串
+4.学生数据库连接字符串
\ No newline at end of file
diff --git a/文档/其它/工作文档.md b/文档/其它/工作文档.md
new file mode 100644
index 0000000..63f7b60
--- /dev/null
+++ b/文档/其它/工作文档.md
@@ -0,0 +1,117 @@
+# 工作文档
+
+## 远程服务器
+
+用户名:_sjgame_
+密 码:_Itvgame2020@!$#_
+默认端口号:_33389_
+
+### 国内服务器地址
+
+| 服务器名称 | 外网地址 | 内网地址 | 备注 |
+| ------------------ | ----------------- | ----------------- | -------------------- |
+| 蘑菇游戏-web-1 | 82.157.13.127 | 172.21.64.107 | 绘画接口也在服务器上 |
+| 蘑菇游戏-web-2 | 82.157.29.123 | 172.21.64.99 | |
+| 蘑菇游戏-web-3 | 82.157.14.24 | 172.21.64.69 | |
+| 蘑菇游戏-扩展服务 | 81.70.0.132 | 172.21.127.25 | |
+| 蘑菇游戏-PC | 101.42.136.223 | 172.21.64.80 | 官网服务器 |
+| ~~蘑菇游戏-web-1~~ | ~~82.157.20.213~~ | ~~172.21.112.18~~ | 已废弃 |
+| ~~蘑菇游戏-web-2~~ | ~~82.157.29.123~~ | ~~172.21.112.4~~ | 已废弃 |
+| ~~蘑菇游戏-web-3~~ | ~~82.157.14.24~~ | ~~172.21.112.25~~ | 已废弃 |
+
+### 海外服务器地址
+
+| 服务器名称 | 外网地址 | 内网地址 | 备注 |
+| ----------------- | ------------- | ------------ | ---------------------- |
+| 蘑菇游戏-web-1 | 101.32.15.216 | 172.19.0.12 | 绘画服务器 1 |
+| 蘑菇游戏-web-2 | 101.32.14.235 | 172.19.0.11 | 绘画服务器 2 |
+| 蘑菇游戏-web-3 | 43.135.25.193 | 172.19.0.95 | 绘画服务器 3 |
+| 蘑菇游戏-扩展服务 | 43.129.199 | 172.19.0.13 | |
+| 蘑菇游戏-PC | 43.129.195.20 | 172.19.0.149 | 官网服务器 |
+| DB | | 172.19.0.17 | 数据库服务器,没有外网 |
+
+### 跳板机
+
+| 服务器名称 | 外网地址 | 内网地址 | 账号 | 密码 | 备注 |
+| -------------- | -------------------- | -------- | -------- | ---------------- | -------------------------------------------------------------------------------------------------------- |
+| 测试环境跳板机 | 112.124.23.127:33389 | -------- | zhangzhe | CRPCXmdJV5IbK6kh | 测试环境绘画 vnc 地址:
_121.11.212.23:15903_
_tvgame@1_ |
+| 现网跳板机 | 112.124.23.127:33389 | -------- | yinming | nwA6QVatxEzIgEdw | 远程现网服务器地址:
_D:\Soft\mstsc-bat\无盘更新 server\601-games-国内-瑞云-华南-广东-cbd-2-(200 路)_ |
+
+### 其他服务器
+
+| 服务器名称 | 外网地址 | 内网地址 | 账号 | 密码 | 备注 |
+| ------------------------- | -------------------- | ------------------- | ------ | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 测试环境服务器 | 121.5.26.77:33389 | | sjgame | Itvgame2020@!$# | 蘑菇和绘画测试服务器 |
+| vnc 绘画服务器 | | 121.11.212.23:15903 | | _tvgame@1_ | 需要使用 vnc 连接 |
+| 西南交大服务器-测试 | 43.143.246.189:33389 | | sjgame | _Itvgame2020@!$#_ | 测试环境 |
+| 西南交大正式服务器-跳板机 | 146.56.198.144:33389 | | sjgame | _Itvgame2020@!$#_ | 远程服务器后需要登录 vpn 才能连接校园服务器 |
+| 西南交大正式服务器 | 10.31.19.58 | | sjgame | _Itvgame2020@!$#_ | 如果连上面的服务器,需要有如下步骤
1)登录跳板机:146.56.198.144:33389 用户名:sjgame 密码:Itvgame2020@!$#
2)拨VPN,在跳板机的桌面上有一个vpn.txt,上面都有说明,短信手机号是赵亮的
3)在跳板机上面直接远程:10.31.19.58 即可,然后这台就是正式的WEB服务器 |
+
+## 账号
+
+| 名称 | 账号 | 密码 | 网址 | 备注 |
+| ---------------------------------------------------------------------------------------------------- | ---------------------- | ----------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
+| [git](http://192.168.1.33/users/sign_in) | zhangzhe@holyblade.com | dbt@com@123 | _http://192.168.1.33/users/sign_in_ | git 项目管理地址 |
+| ~~[svn](http://192.168.1.19:82/svn/%e6%96%b0%e4%b8%9a%e5%8a%a1/98-%e9%a1%b9%e7%9b%ae/MoguExtCode/)~~ | zhangzhe | RG8orVOa | http://192.168.1.19:82/svn/%e6%96%b0%e4%b8%9a%e5%8a%a1/98-%e9%a1%b9%e7%9b%ae/MoguExtCode/ | 代码已经不再 svn 中管理,使用 git 管理 |
+| [禅道](https://moguyouxi.zentaopm.com/) | zhangzhe | zhangzhe0714 | _https://moguyouxi.zentaopm.com/_ | 管理项目进度 |
+| [神策](https://sj.cloud.sensorsdata.cn/login/index.html) | heyao@holyblade.com | heyao123!@# | https://sj.cloud.sensorsdata.cn/login/index.html | 用于统计app数据,没有自己的账号,注意:需要断开vpn才能访问 |
+| [蓝湖](https://lanhuapp.com/link/#/invite?sid=lx0c2ZfN) | 18761127117 | | | 手机号登录,如果没有权限,找美术开通权限 |
+| [百度统计](https://tongji.baidu.com/web/homepage/index) | 13162753112 | Mogu2022. | _https://tongji.baidu.com/web/homepage/index_ | 使用百度账号登录,如果需要发送验证码,找市场部(唐丹等人) |
+| ~~[网站监测](http://81.70.0.156:8001/)~~ | logadmin | tech@mogu2021 | http://81.70.0.156:8001/ | 现在访问不通 |
+| [友盟](https://www.umeng.com/) | 圣剑网络云游戏 | holyblade0306 | https://www.umeng.com/ | 验证手机(林宇):19521266946,类似神策 |
+| [国内鲸云](https://jyapi.moguyouxi.cn:4433/admin/login) | shengjian | sjManager@admin19 | https://jyapi.moguyouxi.cn:4433/admin/login | |
+| [海外鲸云](https://jyapihw.moguyouxi.cn:8400//admin/login) | shengjian | sjManager@admin19 | https://jyapihw.moguyouxi.cn:8400//admin/login | |
+
+## 阿里云OSS
+阿里云cdn的客户端工具
+https://help.aliyun.com/document_detail/61872.html
+~~holyblade@aliyun.com/holyblade1812~~
+AccessKey ID:_2ZtnBc61LYwbUoAq_
+AccessKey Secret:_ec4UWI8pJ9staa40HGFKcf1WewU0R5_
+
+
+## 开发事项
+
+### api接口地址
+
+#### 测试环境
+
+* 蘑菇api
+ 1. [app接口](https://test.moguyouxi.cn:8400/Phone300_Api/) _https://test.moguyouxi.cn:8400/Phone300_Api/_
+ 2. [游戏直播api](https://test.moguyouxi.cn:8400/GameLive/) _https://test.moguyouxi.cn:8400/GameLive/_
+ 3. [扩展api](https://test.moguyouxi.cn:8400/MoguExt/) _https://test.moguyouxi.cn:8400/MoguExt/_
+ 4. [游戏服务api](https://test.moguyouxi.cn:8400/GameApi/) _https://test.moguyouxi.cn:8400/GameApi/_
+ 5. [游戏对战api](https://test.moguyouxi.cn:8400/GameFight/) _https://test.moguyouxi.cn:8400/GameFight/_
+ 6. [支付api](https://test.moguyouxi.cn:8400/MoguExt.PaymentCenter/) _https://test.moguyouxi.cn:8400/MoguExt.PaymentCenter/_
+ 7. [蘑菇活动api](https://test.moguyouxi.cn:8400/MoguExt.HD/) _https://test.moguyouxi.cn:8400/MoguExt.HD/_
+* 绘画api
+ 1. [绘画api](https://test.moguyouxi.cn:8400/HissAi4.Api/) _https://test.moguyouxi.cn:8400/HissAi4.Api/_
+ 2. [绘画api_net6](https://test.moguyouxi.cn:8400/HissAi6.Api/) _https://test.moguyouxi.cn:8400/HissAi6.Api/_
+ 3. [支付api](https://test.moguyouxi.cn:8400/HissAi4.PayCenter/) _https://test.moguyouxi.cn:8400/HissAi4.PayCenter/_
+
+#### 国内正式api
+
+* 蘑菇api
+ 1. [app接口](https://sjapi.moguyouxi.cn:8400/Phone300_Api/) _https://sjapi.moguyouxi.cn:8400/Phone300_Api/_
+ 2. [游戏直播api](https://sjapi.moguyouxi.cn:8400/GameLive/) _https://sjapi.moguyouxi.cn:8400/GameLive/_
+ 3. [游戏服务api](https://sjapi.moguyouxi.cn:8400/Phone300_GameApi/) _https://sjapi.moguyouxi.cn:8400/Phone300_GameApi/_
+ 4. [游戏对战api](https://sjapi.moguyouxi.cn:8400/GameFight/) _https://sjapi.moguyouxi.cn:8400/GameFight/_
+ 5. [扩展api](https://moguext.moguyouxi.cn/MoguExt/) _https://moguext.moguyouxi.cn/MoguExt/_
+ 6. [支付api](https://moguext.moguyouxi.cn/MoguExt.PaymentCenter/) _https://moguext.moguyouxi.cn/MoguExt.PaymentCenter/_
+ 7. [蘑菇活动api](https://moguext.moguyouxi.cn/MoguExt.HD/) _https://moguext.moguyouxi.cn/MoguExt.HD/_
+* 绘画api
+ 1. [绘画api](https://api.hissai.com:8400/) _https://api.hissai.com:8400/_
+ 2. [绘画api_net6](https://api.hissai.com:8400/HissAi6.Api/) _https://api.hissai.com:8400/HissAi6.Api/_
+ 3. [支付api](https://api-pay.hissai.com/) _https://api-pay.hissai.com/_
+
+
+### 开发资料
+| 名称 | 地址 | 备注 |
+| -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---- |
+| [抖音开发文档](https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/content-security/picture-detect-v2) | https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/content-security/picture-detect-v2 | |
+| [微信开发文档](https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/skyline/introduction.html) | https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/skyline/introduction.html | |
+| [微信公众平台](https://mp.weixin.qq.com/) | https://mp.weixin.qq.com/ | |
+| [SEO综合查询](https://seo.chinaz.com/www.moguyouxi.cn) | https://seo.chinaz.com/www.moguyouxi.cn | |
+|[云测试](https://www.testin.cn/account/login.htm)|https://www.testin.cn/account/login.htm||
+|[微软技术文档](https://learn.microsoft.com/zh-cn/docs/)|https://learn.microsoft.com/zh-cn/docs/||
+|[uni-app](https://uniapp.dcloud.net.cn/)|https://uniapp.dcloud.net.cn/||
\ No newline at end of file
diff --git a/文档/其它/本地-阳光体育.md b/文档/其它/本地-阳光体育.md
new file mode 100644
index 0000000..02787c4
--- /dev/null
+++ b/文档/其它/本地-阳光体育.md
@@ -0,0 +1,18 @@
+远程方式
+```sh
+ssh -p 22 root@192.168.1.229
+# Itvgame2020@!$#
+```
+# 服务器静态文件目录
+```sh
+# /var/www/html/SunnySportsStudent
+```
+
+测试环境
+[学生端首页](http://192.168.1.229/SunnySportsStudent/index.html)
+[教师端首页](http://192.168.1.229/SunnySportsTeacher/index.html)
+唐镇环境
+[学生端首页](https://test.moguyouxi.cn/SunnySportsStudent/index.html)
+[教师端首页](https://test.moguyouxi.cn/SunnySportsTeacher/index.html)
+
+ssh -p 22 ubuntu@124.222.7.198
\ No newline at end of file
diff --git a/文档/其它/点赞.txt b/文档/其它/点赞.txt
new file mode 100644
index 0000000..9b2f566
--- /dev/null
+++ b/文档/其它/点赞.txt
@@ -0,0 +1,63 @@
+ public BaseResponse DownloadPng(int appId, long userId, long drawId)
+ {
+ //var photoAlbum = dao.daoUserData.context.T_User_PhotoAlbum.Where(t => t.Type == 0 && t.DrawId == drawId).FirstOrDefault();
+ var photoAlbum = dao.daoUserData.context.T_User_Gallery.Where(t => t.Type == 0 && t.DrawId == drawId).FirstOrDefault();
+ if (photoAlbum == null)
+ {
+ return new BaseResponse(ResonseCode.Error, "未找到画廊数据");
+ }
+ var obj = dao.daoLog.context.T_Draw_Download_log.Where(t => t.UserId == userId && t.DrawId == drawId).FirstOrDefault();
+ var imgUrl = string.Empty;
+ if (obj != null)
+ {
+ imgUrl = dao.daoData.context.T_Draw_Log.Where(it => it.Id == drawId).Select(t => t.TaskResult).FirstOrDefault();
+ return new BaseResponse(ResonseCode.Success, "", imgUrl);
+ }
+ var user = dao.daoUserData.context.T_Users_Data.Where(t => t.UserId == userId).FirstOrDefault();
+ if (user == null)
+ {
+ return new BaseResponse(ResonseCode.Error, "用户不存在");
+ }
+ var like = dao.daoUserData.context.T_User_Like.FirstOrDefault(it => it.DrawId == drawId && it.UserId == userId);
+ if (like != null)
+ {
+ if (string.IsNullOrEmpty(imgUrl))
+ {
+ imgUrl = dao.daoData.context.T_Draw_Log.Where(it => it.Id == drawId).Select(t => t.TaskResult).FirstOrDefault();
+ }
+ return new BaseResponse(ResonseCode.Success, "", imgUrl);
+ }
+ var currency = user.Currency;
+ if (currency <= 0)
+ {
+ return new BaseResponse(ResonseCode.UserNotMoney, "用户金额不足");
+ }
+ if (obj == null)
+ {
+ var t_Draw_Download_Log = new T_Draw_Download_log
+ {
+ UserId = userId,
+ DrawId = drawId,
+ GalleryId = photoAlbum.Id,
+ CreateDateTime = DateTime.Now,
+ LastDownloadDateTime = DateTime.Now,
+ DownloadCount = 1,
+ DownloadConsume = 1
+ };
+ dao.daoLog.Add(t_Draw_Download_Log);
+ }
+ else
+ {
+ obj.DownloadConsume += 1;
+ obj.DownloadCount += 1;
+ obj.LastDownloadDateTime = DateTime.Now;
+ dao.daoLog.Update(obj);
+ }
+ new AccountBLL(dao).UpUserCurrencyInfo(userId, currency: -1);
+ dao.daoLog.context.SaveChanges();
+ if (string.IsNullOrEmpty(imgUrl))
+ {
+ imgUrl = dao.daoData.context.T_Draw_Log.Where(it => it.Id == drawId).Select(t => t.TaskResult).FirstOrDefault();
+ }
+ return new BaseResponse(ResonseCode.Success, "", imgUrl);
+ }
\ No newline at end of file
diff --git a/文档/其它/阳光体育部署文档.md b/文档/其它/阳光体育部署文档.md
new file mode 100644
index 0000000..35a5734
--- /dev/null
+++ b/文档/其它/阳光体育部署文档.md
@@ -0,0 +1,232 @@
+# 阳光体育部署文档
+
+## 先决条件
+1.dotnet 8
+2.git
+
+## 运行项目
+```sh
+# 假设项目文件在 /disk/ 目录下(disk为空目录)
+sudo mkdir /disk
+sudo chmod 777 /disk
+
+# 拉取代码
+git clone git@192.168.1.33:mogu_server/sunnysports.git
+# 进入到拉取代码文件中
+cd /disk/sunnysports
+# 安装git子模块
+git submodule init
+# 拉去子模块代码,拉完需要检测下子模块文件夹中是否有文件(子模块路径:/disk/sunnysports/SunnySports/XLib)
+git submodule update
+# 切换子模块分支(先切换到主目录,在切换分支,然后拉去代码)
+cd /disk/sunnysports/SunnySports/XLib
+git checkout main
+git pull
+# 切换主项目分支(和上面一样)
+cd /disk/sunnysports
+git checkout main
+git pull
+# 还原包
+cd /disk/sunnysports/SunnySports
+dotnet restore
+# 编译项目
+cd /disk/sunnysports/SunnySports
+dotnet build
+#编译api项目
+cd /disk/sunnysports/SunnySports/1-api/SunnySports.Api
+dotnet build
+# 运行项目
+cd /disk/sunnysports/SunnySports/1-api/SunnySports.Api
+dotnet run
+```
+
+## 发布项目
+```sh
+# 假设项目文件在 /disk/ 目录下(disk文件夹中已经有sunnysports项目文件夹)
+# 创建文件夹SunnySportsApi DataGateway
+cd /disk/
+mkdir sunnysportsapi
+sudo chmod 777 sunnysportsapi
+# 发布项目
+cd /disk/sunnysports/SunnySports/1-api/SunnySports.Api
+dotnet publish -c Release -o /disk/sunnysportsapi
+# 运行项目
+cd /disk/sunnysportsapi
+./SunnySports.Api
+```
+
+## 发布项目
+```sh
+# 假设项目文件在 /disk/ 目录下(disk文件夹中已经有sunnysports项目文件夹)
+# 创建文件夹SunnySportsApi DataGateway
+cd /disk/
+mkdir DataGateway
+sudo chmod 777 DataGateway
+# 发布项目
+cd /disk/sunnysports/SunnySports/2-service/DataGateway
+dotnet publish -c Release -o /disk/DataGateway/
+rsync -avz /disk/DataGateway/ root@192.144.132.25:/disk/ai_sports/DataGateway/
+# 运行项目 /disk/DataGateway/NLog.config
+cd /disk/sunnysportsapi
+./SunnySports.Api
+```
+
+
+dotnet publish -c Release -o /disk/DataGateway
+
+## 同步项目
+```sh
+# 安装文件同步工具
+sudo apt-get install rsync
+#同步文件
+rsync -avz /disk/sunnysportsapi/ root@192.168.1.229:/disk/ai_sports/sunnysportsapi
+rsync -avz /disk/sunnysportsapi/ root@192.144.132.25:/disk/ai_sports/sunnysportsapi
+# http://192.144.132.25/
+# ssh -p 22 root@192.144.132.25
+# 192.168.1.229,服务器密码:Itvgame2020@!$#
+```
+
+sudo systemctl stop pray-api.service
+
+rsync -avz /disk/PrayForBlessingsApi ubuntu@1.117.87.77:/disk/prayforblessingsapi
+dbt@com@1234
+## 创建linux 服务
+```sh
+# 你需要创建一个systemd服务单元文件。这个文件描述了如何启动、停止和重启你的程序。你可以在/etc/systemd/system/目录下创建一个新的.service文件,比如your_program.service
+ cd /etc/systemd/system/
+ # 创建文件
+ sudo nano sunny-sports-api.service
+ #粘贴内容
+[Unit]
+Description=sunny-sports-api
+After=network.target
+[Service]
+# 运行 设置环境变量
+#指定服务的工作目录
+WorkingDirectory=/disk/ai_sports/sunnysportsapi
+# run
+ExecStart=/disk/ai_sports/sunnysportsapi/SunnySports.Api
+SyslogIdentifier=SunnySportsApi
+User=root
+# 打开资源限制infinity 默认会到65535
+LimitNOFILE=1048576
+LimitNPROC=infinity
+LimitCORE=infinity
+# 自动检查重启,10秒后重启
+Restart=always
+RestartSec=10
+[Install]
+WantedBy=multi-user.target
+
+#刷新服务
+sudo systemctl daemon-reload
+# 启动服务
+sudo systemctl start sunny-sports-api.service
+sudo systemctl start data-gateway.service
+# 检测服务状态
+sudo systemctl status sunny-sports-api.service
+# 设置开机启动
+sudo systemctl enable sunny-sports-api.service
+sudo systemctl enable data-gateway.service
+# 关闭服务
+sudo systemctl stop sunny-sports-api.service
+sudo systemctl stop data-gateway.service
+# 关闭开机启动
+sudo systemctl disable sunny-sports-api.service
+# 重新启动服务
+sudo systemctl restart sunny-sports-api.service
+sudo systemctl restart data-gateway.service
+# 发布
+cd /disk/sunnysports/SunnySports/;make build-release-229
+cd /disk/sunnysports/SunnySports/;make build-release-25
+
+```
+sudo systemctl restart data-gateway.service
+## 更新项目
+```sh
+# 先将检测服务状态,如果服务启动,先停止服务
+sudo systemctl status sunny-sports-api.service
+# 停止服务
+sudo systemctl stop sunny-sports-api.service
+sudo systemctl stop sunny-sports-api.service
+# 同步文件
+rsync -avz /disk/sunnysportsapi/ root@192.168.1.229:/disk/ai_sports/sunnysportsapi
+# 开启服务
+sudo systemctl start sunny-sports-api.service
+# 检测服务状态
+sudo systemctl status sunny-sports-api.service
+
+sudo systemctl restart sunny-sports-api.service
+```
+
+
+## 配置项
+```sh
+# 配置学生人脸存放地址
+\\\\\\\\\\
+"StudentConfig":{
+ # 存放学生人脸的路径
+ "StudentFacePath": "./StudentFace/",
+}
+```
+
+
+## 接口乱码
+
+```sh
+LANG=en_US.UTF-8
+LANGUAGE=
+LC_CTYPE="en_US.UTF-8"
+LC_NUMERIC="en_US.UTF-8"
+LC_TIME="en_US.UTF-8"
+LC_COLLATE="en_US.UTF-8"
+LC_MONETARY="en_US.UTF-8"
+LC_MESSAGES="en_US.UTF-8"
+LC_PAPER="en_US.UTF-8"
+LC_NAME="en_US.UTF-8"
+LC_ADDRESS="en_US.UTF-8"
+LC_TELEPHONE="en_US.UTF-8"
+LC_MEASUREMENT="en_US.UTF-8"
+LC_IDENTIFICATION="en_US.UTF-8"
+LC_ALL=
+
+
+LANG=zh_CN.UTF-8
+LANGUAGE=
+LC_CTYPE="zh_CN.UTF-8"
+LC_NUMERIC="zh_CN.UTF-8"
+LC_TIME="zh_CN.UTF-8"
+LC_COLLATE="zh_CN.UTF-8"
+LC_MONETARY="zh_CN.UTF-8"
+LC_MESSAGES="zh_CN.UTF-8"
+LC_PAPER="zh_CN.UTF-8"
+LC_NAME="zh_CN.UTF-8"
+LC_ADDRESS="zh_CN.UTF-8"
+LC_TELEPHONE="zh_CN.UTF-8"
+LC_MEASUREMENT="zh_CN.UTF-8"
+LC_IDENTIFICATION="zh_CN.UTF-8"
+LC_ALL=
+
+```
+
+
+
+
+## make 发布命令
+```sh
+# 229服务器
+数据网关 ssh root@192.168.1.229 "cd /disk/work/sj_git/sunnysports/;make build-data-loca"
+api ssh root@192.168.1.229 "cd /disk/work/sj_git/sunnysports/;make build-api-loca"
+前端 ssh root@192.168.1.229 "cd /disk/work/sj_git/systemadmin/;make build-test"
+
+# 25服务器
+数据网关 ssh root@192.168.1.229 "cd /disk/work/sj_git/sunnysports/;make build-data"
+api ssh root@192.168.1.229 "cd /disk/work/sj_git/sunnysports/;make build-api"
+前端 ssh root@192.168.1.229 "cd /disk/work/sj_git/systemadmin/;make build"
+ssh root@192.168.1.229 "cd /disk/work/sj_git/sunnysports/;make build-api-all"
+ssh root@192.168.1.229 "cd /disk/work/sj_git/systemadmin/;make build-r"
+
+D:\办公软件\HBuilderX\cli.exe cli publish --platform h5 --project SunnySportsStudent
+
+````
+
diff --git a/文档/服务器文档/api-1.md b/文档/服务器文档/api-1.md
new file mode 100644
index 0000000..19c76d8
--- /dev/null
+++ b/文档/服务器文档/api-1.md
@@ -0,0 +1,2 @@
+1. [网络地址](https://api.zpc-xy.com/)
+2. IP: 101.43.1.207
\ No newline at end of file
diff --git a/文档/部署/baget/baget.service b/文档/部署/baget/baget.service
new file mode 100644
index 0000000..2acd7d1
--- /dev/null
+++ b/文档/部署/baget/baget.service
@@ -0,0 +1,40 @@
+[Unit]
+Description=BaGet NuGet Server
+After=network.target
+
+[Service]
+WorkingDirectory=/disk/BaGet/net8.0/
+ExecStart=/disk/BaGet/net8.0/BaGet
+Restart=always
+# 如果网络服务崩溃,请在10秒钟后重新启动服务:
+RestartSec=10
+SyslogIdentifier=baget
+User=root
+
+[Install]
+WantedBy=multi-user.target
+
+
+
+[Unit]
+Description=sunny-sports-api
+After=network.target
+[Service]
+# 运行 设置环境变量
+#指定服务的工作目录
+WorkingDirectory=/disk/BaGet/net8.0
+# run
+ExecStart=/disk/BaGet/net8.0/BaGet
+SyslogIdentifier=baget
+User=root
+# 打开资源限制infinity 默认会到65535
+LimitNOFILE=1048576
+LimitNPROC=infinity
+LimitCORE=infinity
+# 自动检查重启,10秒后重启
+Restart=always
+RestartSec=10
+[Install]
+WantedBy=multi-user.target
+
+
diff --git a/文档/部署/baget/部署文档.md b/文档/部署/baget/部署文档.md
new file mode 100644
index 0000000..db1e298
--- /dev/null
+++ b/文档/部署/baget/部署文档.md
@@ -0,0 +1,25 @@
+## 服务文件
+/etc/systemd/system/baget.service
+```sh
+sudo nano /etc/systemd/system/baget.service
+sudo systemctl daemon-reload
+sudo systemctl start baget
+sudo systemctl enable baget
+sudo systemctl status baget
+sudo systemctl stop baget
+```
+## 发布命令
+```sh
+# /disk/BaGet/src/BaGet$
+ dotnet publish -c Release -o /disk/BaGetApi/
+```
+
+## 同步命令
+```sh
+rsync -avz /disk/BaGetApi/ ubuntu@123.207.203.228:/disk/BaGet/net8.0/
+```
+## 上传
+```sh
+dotnet nuget push XLib.NetCore.Utility.1.0.0.nupkg --source "http://123.207.203.228:91/v3/index.json" --api-key "066f010d59"
+
+```