Exemplo n.º 1
0
        // 更新 RideData 資料
        private bool UpdateRideData()
        {
            bool ret = false;

            try
            {
                List <RideData> rideList = db.GetSql().Queryable <RideData>().With(SqlSugar.SqlWith.RowLock).ToList();

                SaveLog($"[Info] Update Ride Data , Total Count: {rideList.Count}");

                for (int idx = 0; idx < rideList.Count; idx++)
                {
                    RideData info = rideList[idx];

                    redis.GetRedis((int)Connect.RedisDB.emRedisDB_Ride).HashSet($"RideData_" + info.MemberID, hashTransfer.TransToHashEntryArray(info));

                    SaveLog($"[Info] Update Ride Data, User: {info.MemberID}");
                }

                ret = true;
            }
            catch (Exception ex)
            {
                SaveLog($"[Error] Update Ride Data Catch Error, Msg:{ex.Message}");
            }

            return(ret);
        }
Exemplo n.º 2
0
        // 更新 UserAccount 資料
        private bool UpdateUserAccount()
        {
            bool ret = false;

            try
            {
                List <UserAccount> accountList = db.GetSql().Queryable <UserAccount>().With(SqlSugar.SqlWith.RowLock).ToList();

                SaveLog($"[Info] Update User Account , Total Count: {accountList.Count}");

                for (int idx = 0; idx < accountList.Count; idx++)
                {
                    UserAccount info = accountList[idx];

                    redis.GetRedis((int)Connect.RedisDB.emRedisDB_User).HashSet($"UserAccount_" + info.Email, hashTransfer.TransToHashEntryArray(info));

                    SaveLog($"[Info] Update User Account , User: {info.Email}");
                }

                ret = true;
            }
            catch (Exception ex)
            {
                SaveLog($"[Error] Update User Account Catch Error, Msg:{ex.Message}");
            }

            return(ret);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 使用者登入
        /// </summary>
        /// <param name="data"> 封包資料 </param>
        /// <returns> 結果 </returns>
        public string OnUserLogin(string data)
        {
            string ret = "";

            UserLogin packet = JsonConvert.DeserializeObject <UserLogin>(data);

            UserLoginResult rData = new UserLoginResult();

            try
            {
                string uID = FireBaseHandler.Instance.CheckFireBaseUserToken(packet.Token).Result;

                if (uID != "")
                {
                    UserAccount account = GetSql().Queryable <UserAccount>().Where(it => it.UID == uID).Single();

                    // 有找到帳號
                    if (account != null)
                    {
                        UserInfo userInfo = GetSql().Queryable <UserInfo>().Where(it => it.MemberID == account.MemberID).Single();

                        // 有找到會員
                        if (userInfo != null)
                        {
                            rData.Result   = (int)UserLoginResult.ResultDefine.emResult_Success;
                            rData.MemberID = account.MemberID;
                        }
                        else
                        {
                            SaveLog("[Warning] MessageFcunction::OnUserLogin Can't Find User Info");

                            rData.Result = (int)UserLoginResult.ResultDefine.emResult_Fail;
                        }
                    }
                    else
                    {
                        string dateTime = DateTime.UtcNow.ToString("yyyy-MM-dd hh:mm:ss");

                        string guidAll = Guid.NewGuid().ToString();

                        string[] guidList = guidAll.Split('-');

                        UserAccount newAccount = new UserAccount();

                        // 建立新帳號
                        newAccount.MemberID       = "Dblha-" + guidList[0];  // 取GUID前8碼
                        newAccount.UID            = uID;
                        newAccount.NotifyToken    = "";
                        newAccount.RegisterSource = packet.LoginSource;
                        newAccount.RegisterDate   = dateTime;

                        rData.MemberID = newAccount.MemberID;

                        UserInfo newInfo = new UserInfo();

                        // 新增使用者資訊
                        newInfo.MemberID           = newAccount.MemberID;
                        newInfo.Email              = packet.Email == null ? "" : packet.Email;
                        newInfo.NickName           = packet.NickName == null ? "" : packet.NickName;
                        newInfo.Birthday           = "";
                        newInfo.BodyHeight         = 0;
                        newInfo.BodyWeight         = 0;
                        newInfo.FrontCover         = "";
                        newInfo.Avatar             = packet.Avatar == null ? "" : packet.Avatar;;
                        newInfo.Photo              = "";
                        newInfo.Mobile             = "";
                        newInfo.County             = -1;
                        newInfo.TeamList           = "[]";
                        newInfo.FriendList         = "[]";
                        newInfo.BlackList          = "[]";
                        newInfo.SpecificationModel = "";


                        RideData rideData = new RideData();

                        // 新增騎乘資料
                        rideData.MemberID      = newAccount.MemberID;
                        rideData.TotalDistance = 0;
                        rideData.TotalAltitude = 0;
                        rideData.TotalRideTime = 0;

                        WeekRideData curWeek = new WeekRideData();

                        // 新增本週騎乘資料
                        string firsDay = weekProcess.GetWeekFirstDay(DateTime.UtcNow);
                        string lastDay = weekProcess.GetWeekLastDay(DateTime.UtcNow);

                        curWeek.MemberID     = newAccount.MemberID;
                        curWeek.WeekFirstDay = firsDay;
                        curWeek.WeekLastDay  = lastDay;
                        curWeek.WeekDistance = 0;

                        // 設定DB 交易的起始點
                        GetSql().BeginTran();

                        // 寫入資料庫
                        if (GetSql().Insertable(newAccount).With(SqlSugar.SqlWith.TabLockX).ExecuteCommand() > 0)
                        {
                            if (GetSql().Insertable(newInfo).With(SqlSugar.SqlWith.TabLockX).ExecuteCommand() > 0 &&
                                GetSql().Insertable(rideData).With(SqlSugar.SqlWith.TabLockX).ExecuteCommand() > 0 &&
                                GetSql().Insertable(curWeek).With(SqlSugar.SqlWith.TabLockX).ExecuteCommand() > 0)
                            {
                                rData.Result = (int)UserLoginResult.ResultDefine.emResult_Success;

                                GetRedis((int)Connect.RedisDB.emRedisDB_User).HashSet($"UserAccount_" + newAccount.MemberID, hashTransfer.TransToHashEntryArray(newAccount));
                                GetRedis((int)Connect.RedisDB.emRedisDB_User).HashSet($"UserInfo_" + newInfo.MemberID, hashTransfer.TransToHashEntryArray(newInfo));
                                GetRedis((int)Connect.RedisDB.emRedisDB_Ride).HashSet($"RideData_" + rideData.MemberID, hashTransfer.TransToHashEntryArray(rideData));
                                GetRedis((int)Connect.RedisDB.emRedisDB_Ride).HashSet($"RideData_" + rideData.MemberID, hashTransfer.TransToHashEntryArray(rideData));
                                GetRedis((int)Connect.RedisDB.emRedisDB_Ride).HashSet($"CurWeekRideData_" + newAccount.MemberID, hashTransfer.TransToHashEntryArray(curWeek));

                                SaveLog($"[Info] MessageFcunction::OnUserLogin Create New Account Success");

                                // DB 交易提交
                                GetSql().CommitTran();
                            }
                            else
                            {
                                rData.Result = (int)UserLoginResult.ResultDefine.emResult_Fail;

                                SaveLog($"[Warning] MessageFcunction::OnUserLogin Can Not Inseart User Info Or Ride Data");
                            }
                        }
                        else
                        {
                            rData.Result = (int)UserLoginResult.ResultDefine.emResult_Fail;

                            SaveLog($"[Warning] MessageFcunction::OnUserLogin UID: {newAccount.UID} Repeat");
                        }
                    }
                }
                else
                {
                    SaveLog("[Warning] MessageFcunction::OnUserLogin Fire Base Token Certification Error");

                    rData.Result = (int)UserLoginResult.ResultDefine.emResult_Fail;
                }
            }
            catch (Exception ex)
            {
                SaveLog($"[Error] MessageFcunction::OnUserLogin Catch Error, Msg:{ex.Message}");

                rData.Result = (int)UserLoginResult.ResultDefine.emResult_Fail;
            }

            // DB 交易失敗, 啟動Rollback
            if (rData.Result != (int)UserLoginResult.ResultDefine.emResult_Success)
            {
                GetSql().RollbackTran();
            }

            JObject jsMain = new JObject();

            jsMain.Add("CmdID", (int)S2C_CmdID.emUserLoginResult);
            jsMain.Add("Data", JsonConvert.DeserializeObject <JObject>(JsonConvert.SerializeObject(rData)));

            ret = jsMain.ToString();

            return(ret);
        }