public LockGold UpdateLockGold(long amount, int typeLock, string otp = "")
        {
            try
            {
                if (amount <= 0)
                {
                    return new LockGold
                           {
                               ResponseCode = -99
                           }
                }
                ;

                if (typeLock == 2)
                {
                    long accountId = AccountSession.AccountID;

                    var account = AccountDAO.GetAccountById(accountId);

                    var    infoApp = OtpDAO.GetCurrentCounter(accountId);
                    string token   = infoApp?.AppT;
                    if (!string.IsNullOrEmpty(infoApp?.AppT))
                    {
                        if (OTPApp.ValidateOTP($"{Security.MD5Encrypt($"{accountId}_{token}")}_{token}", otp))
                        {
                            goto doneOTP;
                        }
                    }

                    if (string.IsNullOrEmpty(otp) || (!OTP.OTP.ValidateOTP(accountId, otp, account.Tel)))
                    {
                        return new LockGold
                               {
                                   ResponseCode = -60
                               }
                    }
                    ;
                }
doneOTP:
                SecurityDAO.UpdateLockGold(AccountSession.AccountID, amount, typeLock, "user lock", out long currGold);
                return(new LockGold
                {
                    ResponseCode = 1,
                    CurrentGold = currGold,
                });
            }
            catch (Exception ex)
            {
                NLogManager.PublishException(ex);
            }
            return(new LockGold
            {
                ResponseCode = -99
            });
        }