黄学彪
2020-12-17 9f326f4000847e6167d8166fa2f6a66f53cb3734
ZigbeeApp/Shared/Phone/Common/Logic/HdlMemberLogic.cs
New file
@@ -0,0 +1,215 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone
{
    /// <summary>
    /// 成员的逻辑业务
    /// </summary>
    public class HdlMemberLogic
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 本地安防数据
        /// </summary>
        private static HdlMemberLogic m_Current = null;
        /// <summary>
        /// 本地安防数据
        /// </summary>
        public static HdlMemberLogic Current
        {
            get
            {
                if (m_Current == null)
                {
                    m_Current = new HdlMemberLogic();
                }
                return m_Current;
            }
        }
        #endregion
        #region ■ 成员列表___________________________
        /// <summary>
        /// 获取成员列表信息
        /// </summary>
        /// <returns></returns>
        public List<MemberInfoRes> GetMemberListInfo(ShowNetCodeMode mode = ShowNetCodeMode.No)
        {
            var pra = new { homeId = Common.Config.Instance.Home.Id };
            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/app/child/account/findAll", RestSharp.Method.POST, pra, null, null, CheckMode.A账号权限);
            //检测状态码
            if (HdlCheckLogic.Current.CheckNetCode(result, mode) == false)
            {
                return null;
            }
            var listInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MemberInfoRes>>(result.Data.ToString());
            var listCheck = new List<string>();
            var listShowInfo = new List<MemberInfoRes>();
            foreach (MemberInfoRes infoRes in listInfo)
            {
                if (listCheck.Contains(infoRes.ChildAccountId) == true
                    || infoRes.Account == HdlUserCenterResourse.UserInfo.UserPhone
                    || infoRes.Account == HdlUserCenterResourse.UserInfo.UserEmail)
                {
                    //如果是它自己的话,不显示
                    continue;
                }
                if (infoRes.ChildAccountType == "ADMIN")
                {
                    infoRes.AccountType = 1;
                }
                if (HdlUserCenterResourse.ResidenceOption.AuthorityNo != 1 && infoRes.AccountType != 0)
                {
                    //不能够获取权限等级比他高的(主人自己可以无视这个判断)
                    continue;
                }
                listCheck.Add(infoRes.ChildAccountId);
                //添加成员信息的缓存
                listShowInfo.Add(infoRes);
            }
            return listShowInfo;
        }
        #endregion
        #region ■ 成员权限___________________________
        /// <summary>
        /// 设置远程操作权限
        /// </summary>
        /// <param name="i_childAccountId">子账号的主键</param>
        /// <param name="i_statu">true:可以远程操作 false:不可以远程操作</param>
        /// <param name="mode">失败时是否显示tip消息</param>
        /// <returns></returns>
        public bool SetRemoteOperationPermissions(string i_childAccountId, bool i_statu, ShowNetCodeMode mode = ShowNetCodeMode.YES)
        {
            var pra = new { childAccountId = i_childAccountId, homeId = Common.Config.Instance.Home.Id, isRemoteControl = i_statu };
            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/app/child/account/update", RestSharp.Method.POST, pra, null, null, CheckMode.A账号权限);
            //检测状态码
            if (HdlCheckLogic.Current.CheckNetCode(result, mode) == false)
            {
                return false;
            }
            return true;
        }
        /// <summary>
        /// 编辑成员的权限
        /// </summary>
        /// <param name="i_childAccountId">子账号的主键</param>
        /// <param name="i_authorityNo">1:普通成员 3:管理员</param>
        /// <returns></returns>
        public bool EditorMemberAuthority(string i_childAccountId, int i_authorityNo)
        {
            string authorityDiv = i_authorityNo == 3 ? "ADMIN" : "ORDINARY";
            var pra = new { homeId = Common.Config.Instance.Home.Id, childAccountId = i_childAccountId, childAccountType = authorityDiv };
            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/app/child/account/update", RestSharp.Method.POST, pra);
            //检测状态码
            if (HdlCheckLogic.Current.CheckNetCode(result, ShowNetCodeMode.YES) == false)
            {
                return false;
            }
            return true;
        }
        #endregion
        #region ■ 删除成员___________________________
        /// <summary>
        /// 删除成员
        /// </summary>
        /// <param name="i_childAccountId">子账号的主键</param>
        /// <param name="mode">失败时是否显示tip消息</param>
        /// <returns></returns>
        public bool DeleteMember(string i_childAccountId, ShowNetCodeMode mode = ShowNetCodeMode.YES)
        {
            var pra = new { childAccountId = i_childAccountId, homeId = Common.Config.Instance.Home.Id };
            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/app/child/account/delete", RestSharp.Method.POST, pra, null, null, CheckMode.A账号权限);
            //检测状态码
            if (HdlCheckLogic.Current.CheckNetCode(result, mode) == false)
            {
                return false;
            }
            return true;
        }
        #endregion
        #region ■ 添加成员___________________________
        /// <summary>
        /// 添加成员
        /// </summary>
        /// <param name="i_account">子账号的Phone或者Email</param>
        /// <param name="i_nickName">备注子账号的昵称</param>
        /// <param name="mode">失败时是否显示tip消息</param>
        /// <returns></returns>
        public MemberInfoRes AddMember(string i_account, string i_nickName, ShowNetCodeMode mode = ShowNetCodeMode.YES)
        {
            var pra = new
            {
                account = i_account,
                childAccountType = "ORDINARY",
                homeId = Common.Config.Instance.Home.Id,
                isRemoteControl = true,
                nickName = i_nickName
            };
            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("home-wisdom/app/child/account/add", RestSharp.Method.POST, pra, null, null, CheckMode.A账号权限, false, 3, true);
            //检测状态码
            if (HdlCheckLogic.Current.CheckNetCode(result, mode) == false)
            {
                return null;
            }
            var info = Newtonsoft.Json.JsonConvert.DeserializeObject<MemberInfoRes>(result.Data.ToString());
            return info;
        }
        #endregion
        #region ■ 搜索账号___________________________
        /// <summary>
        /// 根据账号,检索账号的基本信息
        /// </summary>
        /// <param name="i_account">邮箱或者手机号</param>
        /// <returns></returns>
        public AccountInfoResult SearchNormalInfoByAccount(string i_account)
        {
            var pra = new { account = i_account };
            var result = HdlHttpLogic.Current.RequestResponseFromZigbeeHttps("smart-footstone/member/memberInfo/getMemberInfoByAccount", RestSharp.Method.POST, pra, null, null, CheckMode.A不检测, false, 3, true);
            if (result == null)
            {
                //网关连接失败,请确认网络
                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.uGatewayIsNotLinkAndCheckNetwork));
                return null;
            }
            if (result.Code == HttpMessageEnum.A10010)
            {
                //账号不存在
                return new AccountInfoResult();
            }
            var info = Newtonsoft.Json.JsonConvert.DeserializeObject<AccountInfoResult>(result.Data.ToString());
            info.Account = i_account;
            if (info.MemberName == string.Empty)
            {
                info.MemberName = info.Account;
            }
            //下载头像
            info.HeadImage = HdlAccountLogic.Current.DownLoadAccountPictrue(i_account);
            return info;
        }
        #endregion
    }
}