From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 30 八月 2022 09:37:38 +0800
Subject: [PATCH] 合并了IOS的代码
---
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs | 300 ++++++++++++++++++++++++++++++++++++-----------------------
1 files changed, 182 insertions(+), 118 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
index 7a4303f..8d233fd 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
@@ -15,9 +15,19 @@
/// </summary>
public static Action<bool> LogicAction = null;
/// <summary>
+ /// 鏇存柊褰撳墠闂ㄩ攣娑夊強鐨勭姸鎬併�愪富瑕佺敤浜庨棬閿佹搷浣滃父寮�妯″紡鐨勫洖璋冦��
+ /// </summary>
+ public static Action<string, bool> UpdateCurrentDoorlockAction = null;
+ /// <summary>
/// 缃戝叧锛堥棬閿侊級鎵�鍦ㄧ殑鏃堕棿
/// </summary>
public static DateTime DoorlockZoneTime = DateTime.Now;
+ /// <summary>
+ /// 鎵�鏈夐棬閿佷腑鐨勫父寮�妯″紡鍊糩鐢ㄤ簬鎺ㄩ�佹煡璇紝鎻愮ず闂ㄩ攣澶辨晥锛�
+ /// keys:闂ㄩ攣mac+epoint value:鏄惁甯稿紑妯″紡
+ /// ture:甯稿紑锛� false:鍏抽棴
+ /// </summary>
+ public static Dictionary<string, bool?> DoorLockNormallyMode = new Dictionary<string, bool?> { };
/// <summary>
/// 甯稿紑妯″紡鎵ц鏃堕棿
/// </summary>
@@ -132,13 +142,13 @@
/// 闂ㄩ攣鏄惁鏀寔甯稿紑[杩欓噷鏆傛椂鍙湁S-One闂ㄩ攣鏀寔锛孒06C涓嶆敮鎸�, 鍚庢湡閫氳繃鑳藉姏鍊兼敮鎸乚
/// </summary>
/// <param name="doorLock:褰撳墠闂ㄩ攣"></param>
- /// <returns></returns>
+ /// <returns>true:鏀寔甯稿紑锛沠alse锛� 涓嶆敮鎸佸父寮�</returns>
public static bool CanNormallyOpen(ZigBee.Device.DoorLock doorLock)
{
var listDevice = new List<CommonDevice> { };
listDevice.Add(doorLock);
var devTemp = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice);
- if (devTemp.ConcreteType == DeviceConcreteType.IntelligentLocks_Sone)
+ if (devTemp.ConcreteType != DeviceConcreteType.IntelligentLocks_H06C)
{
return true;
}
@@ -151,10 +161,13 @@
public static void NormallyOpenModeValue(ZigBee.Device.DoorLock doorLock, bool value)
{
doorLock.IsDoorLockNormallyMode = value;
-
- if (LogicAction != null)
+ if (DoorLockCommonInfo.DoorLockNormallyMode.ContainsKey(doorLock.DeviceAddr + doorLock.DeviceEpoint))
{
- LogicAction(value);
+ DoorLockCommonInfo.DoorLockNormallyMode[doorLock.DeviceAddr + doorLock.DeviceEpoint] = value;
+ }
+ else
+ {
+ DoorLockCommonInfo.DoorLockNormallyMode.Add(doorLock.DeviceAddr + doorLock.DeviceEpoint, value);
}
}
@@ -163,9 +176,10 @@
/// </summary>
/// <param name="doorLock">褰撳墠闂ㄩ攣</param>
/// <param name="doorLockMessType">瀵艰嚧闂ㄩ攣澶辨晥鐨勬搷浣滅被鍨�</param>
- /// <param name="haveLogic">缃戝叧涓槸鍚﹀瓨鍦ㄩ�昏緫甯稿紑妯″紡</param>
+ /// <param name="haveLogic">缃戝叧涓槸鍚﹀瓨鍦ㄩ�昏緫甯稿紑妯″紡</param>
/// <param name="action">鍥炶皟澶勭悊鏇存柊鍐呭</param>
- public static async void NomallyOpenModeInvalidDialog(ZigBee.Device.DoorLock doorLock, DoorLockMessType doorLockMessType, bool haveLogic, Action action = null)
+ /// <param name="type">1:纭甯稿紑妯″紡宸茬粡寮�鍚紱0:甯稿紑妯″紡澶辨晥鎻愮ず</param>
+ public static async void NomallyOpenModeInvalidDialog(ZigBee.Device.DoorLock doorLock, DoorLockMessType doorLockMessType, bool haveLogic, Action<bool> action = null, int type = 0)
{
//甯稿紑妯″紡鍙兘涓讳汉鎿嶄綔
if (UserCenterResourse.UserInfo.AuthorityNo != 1)
@@ -196,13 +210,23 @@
{
//涓婃姤鈥滃父寮�妯″紡鈥濆凡琚彇娑堬紝app榛樿浜嗏�滃父寮�妯″紡鈥濊鍙栨秷
DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
+ if (LogicAction != null)
+ {
+ LogicAction(false);
+ }
+ if (haveLogic)
+ {
+ //姝ゅ鍒犻櫎娓╁眳鍩庣殑甯稿紑妯″紡鐗规畩閫昏緫
+ var resTemp1 = await Shared.Phone.Device.Logic.SkipView.DelAllLogic(doorLock);
+ }
}
else
{
//淇濇寔甯稿紑
NormallyOpenModeValue(doorLock, true);
}
- action?.Invoke();
+ action?.Invoke(doorLock.IsDoorLockNormallyMode);
+ action = null;
};
alert.CancelClickEvent += async () =>
@@ -211,9 +235,6 @@
{
//涓婃姤鈥滃父寮�妯″紡鈥濆凡琚彇娑�
Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
-
- //娓╁眳鍩庢柟娉曪紵锛燂紵
- //姝ゅ鏄惁瑕佸垹闄ゆ俯灞呭煄鐨勭壒娈婇�昏緫
//app閲嶆柊寮�鍚�滃父寮�妯″紡鈥�
var result = await doorLock.SetNormallyOpenModeFuncAsync(true);
@@ -226,7 +247,12 @@
NormallyOpenModeValue(doorLock, false);
CommonPage.Loading.Hide();
});
- action?.Invoke();
+ action?.Invoke(doorLock.IsDoorLockNormallyMode);
+ action = null;
+ if (LogicAction != null)
+ {
+ LogicAction(false);
+ }
return;
}
if (result.defaultControlResponseData.status != 0)
@@ -238,19 +264,27 @@
NormallyOpenModeValue(doorLock, false);
CommonPage.Loading.Hide();
});
- action?.Invoke();
+
+ action?.Invoke(doorLock.IsDoorLockNormallyMode);
+ action = null;
+ if (LogicAction != null)
+ {
+ LogicAction(false);
+ }
return;
}
else
{
- //鍒涘缓甯稿紑妯″紡鐨勭壒娈婇�昏緫
- var resu = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock);
Application.RunOnMainThread(() =>
{
string msg0 = Language.StringByID(R.MyInternationalizationString.OpenNormallyOpenModeSuccess);
ShowTipMsg(msg0);
NormallyOpenModeValue(doorLock, true);
CommonPage.Loading.Hide();
+ if (LogicAction != null)
+ {
+ LogicAction(true);
+ }
});
}
}
@@ -259,7 +293,8 @@
//app鎿嶄綔涓嶅彇娑堚�滃父寮�妯″紡鈥�
DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true);
}
- action?.Invoke();
+ action?.Invoke(doorLock.IsDoorLockNormallyMode);
+ action = null;
};
alert.ConfirmClickEvent += async () =>
@@ -267,10 +302,14 @@
if (doorLockMessType == DoorLockMessType.DeviceReport || doorLockMessType == DoorLockMessType.ServicePush)
{
NormallyOpenModeValue(doorLock, false);
+ if (LogicAction != null)
+ {
+ LogicAction(false);
+ }
if (haveLogic)
{
- //娓╁眳鍩庢柟娉曪紵锛燂紵
- //姝ゅ鏄惁瑕佸垹闄ゆ俯灞呭煄鐨勭壒娈婇�昏緫
+ //姝ゅ鍒犻櫎娓╁眳鍩庣殑甯稿紑妯″紡鐗规畩閫昏緫
+ var resTemp1 = await Shared.Phone.Device.Logic.SkipView.DelAllLogic(doorLock);
}
}
else
@@ -285,7 +324,12 @@
ShowTipMsg(Language.StringByID(R.MyInternationalizationString.GwResponseOvertime));
CommonPage.Loading.Hide();
});
- action?.Invoke();
+ action?.Invoke(doorLock.IsDoorLockNormallyMode);
+ action = null;
+ if (LogicAction != null)
+ {
+ LogicAction(false);
+ }
return;
}
if (result.defaultControlResponseData.status != 0)
@@ -296,7 +340,12 @@
ShowTipMsg(msg1);
CommonPage.Loading.Hide();
});
- action?.Invoke();
+ action?.Invoke(doorLock.IsDoorLockNormallyMode);
+ action = null;
+ if (LogicAction != null)
+ {
+ LogicAction(false);
+ }
return;
}
else
@@ -308,9 +357,8 @@
//鍒犻櫎璁剧疆甯稿紑妯″紡鍒涘缓鐨勯�昏緫
if (haveLogic)
{
- var resTemp1 = await Shared.Phone.Device.Logic.SkipView.Exist(3);
- //娓╁眳鍩庢柟娉曪紵锛燂紵
- //姝ゅ鏄惁瑕佸垹闄ゆ俯灞呭煄鐨勭壒娈婇�昏緫
+ //姝ゅ鍒犻櫎娓╁眳鍩庣殑甯稿紑妯″紡鐗规畩閫昏緫
+ var resTemp1 = await Shared.Phone.Device.Logic.SkipView.DelAllLogic(doorLock);
}
Application.RunOnMainThread(() =>
{
@@ -318,14 +366,18 @@
ShowTipMsg(msg2);
CommonPage.Loading.Hide();
});
+ if (LogicAction != null)
+ {
+ LogicAction(false);
+ }
}
}
- action?.Invoke();
+ action?.Invoke(doorLock.IsDoorLockNormallyMode);
+ action = null;
};
}
-
-/// <summary>
+ /// <summary>
/// 鍒犻櫎甯稿紑妯″紡
/// </summary>
/// <param name="doorLock">褰撳墠闂ㄩ攣</param>
@@ -351,8 +403,7 @@
return false;
}
-
- /// <summary>
+ /// <summary>
/// 璁剧疆甯稿紑妯″紡
/// </summary>
/// <param name="doorLock">褰撳墠闂ㄩ攣</param>
@@ -361,7 +412,7 @@
public static async System.Threading.Tasks.Task<bool> SetNormallyOpenModeFuncAsync(ZigBee.Device.DoorLock doorLock)
{
//app璁剧疆鈥滃父寮�妯″紡鈥濆け璐�
- var result = await doorLock.SetNormallyOpenModeFuncAsync(false);
+ var result = await doorLock.SetNormallyOpenModeFuncAsync(true);
if (result == null || result.defaultControlResponseData == null || result.defaultControlResponseData.status != 0)
{
return false;
@@ -375,6 +426,7 @@
}
return false;
}
+
/// <summary>
/// 鍚姩甯稿紑妯″紡銆愬脊绐椼��
/// </summary>
@@ -473,7 +525,7 @@
var listDevice = new List<CommonDevice> { };
listDevice.Add(doorLock);
var devTemp = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice);
- if (devTemp.ConcreteType == DeviceConcreteType.IntelligentLocks_Sone)
+ if (devTemp.ConcreteType != DeviceConcreteType.IntelligentLocks_H06C)
{
return true;
}
@@ -555,26 +607,28 @@
var SubAccounListTemp = await ZigBee.Device.DoorLock.GetSubAccountByDistributedMark();
var SubAccounListDictionary = new Dictionary<string, Shared.Phone.UserCenter.MemberInfoRes> { };
- foreach (var member in SubAccounListTemp)
- {
- //鍒ゆ柇涓�涓处鎴风粦瀹氫簡閭鐨勬儏鍐�
- if (SubAccounListDictionary.ContainsKey(member.DistributedMark) == true
- || member.Account == UserCenterResourse.UserInfo.Phone
- || member.Account == UserCenterResourse.UserInfo.Email)
- {
- //濡傛灉鏄畠鑷繁鐨勮瘽锛屼笉鏄剧ず,璐︽埛鍜岀粦瀹氱殑閭鍙樉绀哄叾涓箣涓�
- continue;
+ if (SubAccounListTemp != null)
+ {
+ foreach (var member in SubAccounListTemp)
+ {
+ //鍒ゆ柇涓�涓处鎴风粦瀹氫簡閭鐨勬儏鍐�
+ if (SubAccounListDictionary.ContainsKey(member.DistributedMark) == true
+ || member.Account == UserCenterResourse.UserInfo.Phone
+ || member.Account == UserCenterResourse.UserInfo.Email)
+ {
+ //濡傛灉鏄畠鑷繁鐨勮瘽锛屼笉鏄剧ず,璐︽埛鍜岀粦瀹氱殑閭鍙樉绀哄叾涓箣涓�
+ continue;
+ }
+ //鍘绘帀瀛愯处鎴蜂腑鏅�氭垚鍛橈紝鐣欎笅鎷ユ湁绠$悊鍛樻潈闄愮殑鎴愬憳
+ //锛堝洜涓哄垎閰嶈处鎴风粰鏅�氭垚鍛橈紝鏅�氭垚鍛樺湪app涓笉鑳借繘鍏ヨ澶囩鐞嗛偅閲岋紝鎵�浠ユ病鍙戞煡鐪嬩富浜哄垎閰嶅璐︽埛锛�
+ if (member.AccountType != 1)
+ {
+ continue;
+ }
+
+ SubAccounListDictionary.Add(member.DistributedMark, member);
}
- //鍘绘帀瀛愯处鎴蜂腑鏅�氭垚鍛橈紝鐣欎笅鎷ユ湁绠$悊鍛樻潈闄愮殑鎴愬憳
- //锛堝洜涓哄垎閰嶈处鎴风粰鏅�氭垚鍛橈紝鏅�氭垚鍛樺湪app涓笉鑳借繘鍏ヨ澶囩鐞嗛偅閲岋紝鎵�浠ユ病鍙戞煡鐪嬩富浜哄垎閰嶅璐︽埛锛�
- if (member.AccountType != 1)
- {
- continue;
- }
-
- SubAccounListDictionary.Add(member.DistributedMark, member);
}
-
foreach (var addMemberID in SubAccounListDictionary.Keys)
{
SubAccounList.Add(SubAccounListDictionary[addMemberID]);
@@ -999,81 +1053,81 @@
/// <summary>
/// 鑾峰彇浜戠瀛樺偍鐨勯棬閿佹垚鍛樹俊鎭�
/// </summary>
- public static async System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>> GetLocaDoorLockAccountlist(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes curAccountObj, int curPage)
- {
- return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>>>)(async () =>
- {
- // 璇诲彇浜戠闂ㄩ攣璁惧涓殑淇℃伅
- var localDoorLockObj = new ZigBee.Device.DoorLock.GetDoorLockData() { };
- if (UserCenterResourse.UserInfo.AuthorityNo != 1)
- {
- localDoorLockObj.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
- localDoorLockObj.IsOtherAccountCtrl = true;
- }
- localDoorLockObj.CloudAccountId = curAccountObj.SubAccountDistributedMark;
- {
- localDoorLockObj.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
- }
- if (doorLock.DeviceAddr != null)
- {
- localDoorLockObj.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
- }
- var pageSetting = new ZigBee.Device.DoorLock.PageSetting() { };
- pageSetting.Page = curPage;
- localDoorLockObj.pageSetting = pageSetting;
- var getDoorLockInfoList = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj);
- if (getDoorLockInfoList != null)
- {
- foreach (var curDoorLockUser in getDoorLockInfoList.PageData)
- {
- var doorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
- if (curDoorLockUser.DoorLockLocalUserId != null)
- {
- doorLockObj.UserID = int.Parse(curDoorLockUser.DoorLockLocalUserId);
- doorLockObj.UnlockType = curDoorLockUser.OpenLockMode;
- doorLockObj.UserName = curDoorLockUser.UserIdRemarks;
- }
- doorLockObj.PrimaryId = curDoorLockUser.Id;
- doorLockObj.EntryTime = curDoorLockUser.EntryTime;
- doorLockObj.ConnectedAccount = curDoorLockUser.CloudAccountId;
- if (doorLock.localDoorLockAccountList.ContainsKey(curDoorLockUser.CloudAccountId) == false)
- {
- doorLock.localDoorLockAccountList.Add(doorLockObj.ConnectedAccount, doorLockObj);
- }
- else
- {
- doorLock.localDoorLockAccountList[curDoorLockUser.DoorLockLocalUserId] = doorLockObj;
- }
- }
- }
- return doorLock.localDoorLockUserList;
- }));
- }
+ //public static async System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>> GetLocaDoorLockAccountlist(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes curAccountObj, int curPage)
+ //{
+ // return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>>>)(async () =>
+ // {
+ // // 璇诲彇浜戠闂ㄩ攣璁惧涓殑淇℃伅
+ // var localDoorLockObj = new ZigBee.Device.DoorLock.GetDoorLockData() { };
+ // if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+ // {
+ // localDoorLockObj.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+ // localDoorLockObj.IsOtherAccountCtrl = true;
+ // }
+ // localDoorLockObj.CloudAccountId = curAccountObj.SubAccountDistributedMark;
+ // {
+ // localDoorLockObj.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+ // }
+ // if (doorLock.DeviceAddr != null)
+ // {
+ // localDoorLockObj.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+ // }
+ // var pageSetting = new ZigBee.Device.DoorLock.PageSetting() { };
+ // pageSetting.Page = curPage;
+ // localDoorLockObj.pageSetting = pageSetting;
+ // var getDoorLockInfoList = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj);
+ // if (getDoorLockInfoList != null)
+ // {
+ // foreach (var curDoorLockUser in getDoorLockInfoList.PageData)
+ // {
+ // var doorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
+ // if (curDoorLockUser.DoorLockLocalUserId != null)
+ // {
+ // doorLockObj.UserID = int.Parse(curDoorLockUser.DoorLockLocalUserId);
+ // doorLockObj.UnlockType = curDoorLockUser.OpenLockMode;
+ // doorLockObj.UserName = curDoorLockUser.UserIdRemarks;
+ // }
+ // doorLockObj.PrimaryId = curDoorLockUser.Id;
+ // doorLockObj.EntryTime = curDoorLockUser.EntryTime;
+ // doorLockObj.ConnectedAccount = curDoorLockUser.CloudAccountId;
+ // if (doorLock.localDoorLockAccountList.ContainsKey(curDoorLockUser.CloudAccountId) == false)
+ // {
+ // doorLock.localDoorLockAccountList.Add(doorLockObj.ConnectedAccount, doorLockObj);
+ // }
+ // else
+ // {
+ // doorLock.localDoorLockAccountList[curDoorLockUser.DoorLockLocalUserId] = doorLockObj;
+ // }
+ // }
+ // }
+ // return doorLock.localDoorLockUserList;
+ // }));
+ //}
/// <summary>
/// 鑾峰彇鏈湴鍖归厤鎴愬憳鐨勯棬閿佺敤鎴蜂俊鎭垪琛�
/// </summary>
- public static async System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>> GetMatchDoorlockAccountList(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes curAccountObj)
- {
- return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>>>)(async () =>
- {
- var curAccountDoorLockUserList = new Dictionary<int, ZigBee.Device.DoorLock.LocaDoorLockObj>();
- foreach (var curUserId in doorLock.localDoorLockAccountList.Keys)
- {
- var curDoorLockUser = doorLock.localDoorLockAccountList[curUserId];
+ //public static async System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>> GetMatchDoorlockAccountList(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes curAccountObj)
+ //{
+ // return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>>>)(async () =>
+ // {
+ // var curAccountDoorLockUserList = new Dictionary<int, ZigBee.Device.DoorLock.LocaDoorLockObj>();
+ // foreach (var curUserId in doorLock.localDoorLockAccountList.Keys)
+ // {
+ // var curDoorLockUser = doorLock.localDoorLockAccountList[curUserId];
- if (string.IsNullOrEmpty(curDoorLockUser.ConnectedAccount) || curDoorLockUser.ConnectedAccount != curAccountObj.SubAccountDistributedMark)
- {
- continue;
- }
- else
- {
- curAccountDoorLockUserList.Add(curDoorLockUser.UserID, curDoorLockUser);
- }
- }
- return curAccountDoorLockUserList;
- }));
- }
+ // if (string.IsNullOrEmpty(curDoorLockUser.ConnectedAccount) || curDoorLockUser.ConnectedAccount != curAccountObj.SubAccountDistributedMark)
+ // {
+ // continue;
+ // }
+ // else
+ // {
+ // curAccountDoorLockUserList.Add(curDoorLockUser.UserID, curDoorLockUser);
+ // }
+ // }
+ // return curAccountDoorLockUserList;
+ // }));
+ //}
/// <summary>
/// 鐢熸垚6浣嶄复鏃跺瘑鐮�
@@ -1086,6 +1140,16 @@
return password;
}
+ //// <summary>
+ /// 鍙栧緱鏌愭湀鐨勬渶鍚庝竴澶�
+ /// </summary>
+ /// <param name="datetime">瑕佸彇寰楁湀浠芥渶鍚庝竴澶╃殑鏃堕棿</param>
+ /// <returns></returns>
+ public static DateTime LastDayOfMonth(DateTime datetime)
+ {
+ return datetime.AddDays(1 - datetime.Day).AddMonths(1).AddDays(-1);
+ }
+
/// <summary>
/// 灏哢NIX鏃堕棿鎴宠浆鎹㈡垚绯荤粺鏃堕棿(绮剧‘鍒扮)
/// <returns></returns>
--
Gitblit v1.8.0