public override async Task OnAuthorizationAsync(AuthorizationFilterContext filterContext)
        {
            string path = filterContext.HttpContext.Request.QueryString.ToString();
            var    list = filterContext.ActionDescriptor.FilterDescriptors.Where(p => ((FilterDescriptor)p).Filter.GetType() == typeof(AllowAnonymousFilter));

            if (list.Count() == 1 || path.ToLower().IndexOf("isdebug") > -1)
            {
                return;
            }
            string token   = filterContext.HttpContext.Request.Headers["token"];
            string userId  = filterContext.HttpContext.Request.Headers["userId"];
            string qudao   = filterContext.HttpContext.Request.Headers["qudao"];
            string version = filterContext.HttpContext.Request.Headers["version"];
            string pkgName = filterContext.HttpContext.Request.Headers["pkgName"];

            if (String.IsNullOrEmpty(token))
            {
                HttpResultModel ret = new HttpResultModel
                {
                    result  = MainErrorModels.THE_TOKEN_VALIDATION_FAILED,
                    message = "Token validation failed."
                };
                //var response = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK);
                var content = new ContentResult();
                content.Content      = JsonConvert.SerializeObject(ret);
                content.StatusCode   = 200;
                filterContext.Result = content;

                Log.WriteWarning("CustomActionFilter::OnActionExecuting", "{0} {1} {2} {3} version:{4}", token, userId, qudao, ret.message, version);
            }
            else
            {
                Redis  redis = HelperProvider.GetRedis();
                string guid  = redis.StringGet(String.Format("user_guid_{0}", userId));

                string ctoken = HelperProvider.MD5Encrypt32(String.Format("{0}{1}", userId, guid));

                if (ctoken != token)
                {
                    HttpResultModel ret = new HttpResultModel
                    {
                        result  = MainErrorModels.THE_TOKEN_VALIDATION_FAILED,
                        message = "Token validation failed."
                    };
                    var content = new ContentResult();
                    content.Content      = JsonConvert.SerializeObject(ret);
                    content.StatusCode   = 200;
                    filterContext.Result = content;

                    Log.WriteDebugLog("CustomActionFilter::OnActionExecuting", "{0} {1} {2} {3} version:{4}", token, userId, qudao, ctoken, version);
                }
            }

            //await base.OnAuthorizationAsync(filterContext);
        }
        /// <summary>
        /// 获取贷款种类
        /// </summary>
        /// <returns></returns>
        public ActionResult <string> GetBankCodes()
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            try
            {
                Redis  redis   = HelperProvider.GetRedis();
                string key     = "BankCodes";
                string retJson = redis.StringGet(key);

                if (String.IsNullOrEmpty(retJson))
                {
                    DataProviderResultModel result = MainInfoProvider.GetBankCodes();
                    if (result.result == Result.SUCCESS)
                    {
                        ret.data = result.data;
                    }
                    else
                    {
                        ret.result    = Result.ERROR;
                        ret.errorCode = result.result;
                        ret.message   = result.message;
                    }
                    redis.StringSet(key, JsonConvert.SerializeObject(ret), 300);
                }
                else
                {
                    return(retJson);
                }
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = Convert.ToString(MainErrorModels.LOGIC_ERROR);

                Log.WriteErrorLog("MainController::GetBankCodes", "异常:{0}", ex.Message);
            }

            return(JsonConvert.SerializeObject(ret));
        }
Esempio n. 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="debitId"></param>
        /// <param name="payBackDebitMoney"></param>
        /// <param name="certificateUrl"></param>
        /// <returns></returns>
        public ActionResult <string> SubmitExtendDebitRequest(int userId, int debitId, float payBackDebitMoney, string certificateUrl = "")
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            Redis redis = HelperProvider.GetRedis();

            try
            {
                string lockKey = "submitExtend";
                if (redis.LockTake(lockKey, userId))
                {
                    ///逻辑
                    DataProviderResultModel result = DebitProvider.ExtendDebitRequest(userId, debitId, payBackDebitMoney, certificateUrl);
                    ret.result = result.result;
                    if (result.result != Result.SUCCESS)
                    {
                        ret.result    = Result.ERROR;
                        ret.errorCode = result.result;
                        ret.message   = result.message;
                    }
                    redis.LockRelease(lockKey, userId);
                }
                else
                {
                    ret.result    = Result.ERROR;
                    ret.errorCode = MainErrorModels.ALREADY_SUBMIT_REQUEST;
                    ret.message   = "already submit request.";
                }
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = Convert.ToString(MainErrorModels.LOGIC_ERROR);

                Log.WriteErrorLog("DebitController::SubmitExtendDebitRequest", "异常:{0}", ex.Message);
            }

            return(JsonConvert.SerializeObject(ret));
        }
        public ActionResult <string> PublishVersion(int version, int isMust)
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            try
            {
                Redis  redis  = HelperProvider.GetRedis();
                string result = Convert.ToString(redis.StringSet("appVersion", version));
                result += Convert.ToString(redis.StringSet("updateIsMust", isMust));

                ret.data = result;
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = Convert.ToString(MainErrorModels.LOGIC_ERROR);

                Log.WriteErrorLog("MainController::GetCertificate", "异常:{0}", ex.Message);
            }
            return(JsonConvert.SerializeObject(ret));
        }
Esempio n. 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="debitMoney"></param>
        /// <param name="debitPeroid"></param>
        /// <param name="bankId"></param>
        /// <param name="description"></param>
        /// <returns></returns>
        public ActionResult <string> SubmitDebitRequest(int userId, float debitMoney, string description, int bankId = 0, int debitPeriod = 0, int debitPeroid = 0, string deviceId = "")
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            Redis redis = HelperProvider.GetRedis();

            try
            {
                string pkgName = HttpContext.Request.Headers["pkgName"];
                if (String.IsNullOrEmpty(pkgName) && String.IsNullOrEmpty(redis.StringGet(String.Format("attention_{0}", userId))))
                {
                    Log.WriteDebugLog("DebitController::SubmitDebitRequest", "[{0}] 用的是老版本,发短信通知他去下载最新版", userId);
                    WaveCellSMSSingleSender.Authorization  = ConfigSettings.WaveCellSMSAuthorization;
                    WaveCellSMSSingleSender.SubAccountName = ConfigSettings.WaveCellSMSAccountName;
                    WaveCellSMSSingleSender waveCellSMSSender = new WaveCellSMSSingleSender();

                    string key  = String.Format("UserAllInfoV5_{0}", userId);
                    string info = redis.StringGet(key);
                    if (!String.IsNullOrEmpty(info))
                    {
                        UserAllInfoModel          userInfo = JsonConvert.DeserializeObject <UserAllInfoModel>(info);
                        string                    phone    = "+62" + userInfo.userPersonalInfo.userName;
                        string                    msg      = "Anda masih menggunakan aplikasi versi lama, silahkan klik  https://play.google.com/store/apps/details?id=com.danapinjam.vip untuk mengunduh versi terbaru.";
                        WaveCellSMSResponseModels sendRet  = waveCellSMSSender.Send(phone, msg);
                    }
                    redis.StringSet(String.Format("attention_{0}", userId), "1");
                }

                if (userId > 146724 && String.IsNullOrEmpty(pkgName))
                {
                    ret.result    = Result.ERROR;
                    ret.errorCode = MainErrorModels.PARAMETER_ERROR;
                    ret.message   = "Anda masih menggunakan aplikasi versi lama, silahkan klik  https://play.google.com/store/apps/details?id=com.danapinjam.vip untuk mengunduh versi terbaru.";

                    Log.WriteWarning("DebitController::SubmitDebitRequest", "新用户,老版本将不允许借款。{0}", HelperProvider.GetHeader(HttpContext));
                    return(JsonConvert.SerializeObject(ret));
                }
                string lockKey = "submitdebit";
                if (redis.LockTake(lockKey, userId))
                {
                    debitPeriod = debitPeriod == 0 ? debitPeroid : debitPeriod;
                    if (String.IsNullOrEmpty(deviceId))
                    {
                        deviceId = HttpContext.Request.Headers["deviceNo"];
                    }

                    if (bankId == 0)
                    {
                        DataProviderResultModel bankInfoResult = DebitProvider.GetUserBankId(userId);
                        if (bankInfoResult.result == Result.SUCCESS)
                        {
                            int.TryParse(Convert.ToString(bankInfoResult.data), out bankId);
                        }
                        else
                        {
                            ret.result    = Result.ERROR;
                            ret.errorCode = MainErrorModels.PARAMETER_ERROR;
                            ret.message   = bankInfoResult.message;
                            redis.LockRelease(lockKey, userId);
                            return(JsonConvert.SerializeObject(ret));
                        }
                        Log.WriteWarning("DebitController::SubmitDebitRequest", "警告:用户【{0}】提交时BankId为空,可能是老版本。", userId);
                    }

                    ///逻辑
                    DataProviderResultModel result = DebitProvider.SubmitDebitReuqest(userId, debitMoney, debitPeriod, bankId, description, deviceId);
                    ret.result = result.result;
                    if (result.result == Result.SUCCESS)
                    {
                        ret.data = result.data;
                    }
                    else
                    {
                        ret.result    = Result.ERROR;
                        ret.errorCode = result.result;
                        ret.message   = result.message;
                    }
                    redis.LockRelease(lockKey, userId);
                }
                else
                {
                    ret.result    = Result.ERROR;
                    ret.errorCode = MainErrorModels.ALREADY_SUBMIT_REQUEST;
                    ret.message   = "already submit request.";

                    Log.WriteDebugLog("DebitController::SubmitDebitRequest", "[{0}] 重复请求。", userId);
                }
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = Convert.ToString(MainErrorModels.LOGIC_ERROR);

                Log.WriteErrorLog("DebitController::SubmitDebitRequest", "异常:{0}", ex.Message);
            }
            finally
            {
                Log.WriteDebugLog("UserController::SubmitDebitRequest", "{0}", HelperProvider.GetHeader(HttpContext));
            }
            return(JsonConvert.SerializeObject(ret));
        }
        /// <summary>
        /// 获取贷款种类
        /// </summary>
        /// <returns></returns>
        public ActionResult <string> GetInitDebitStyle()
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            Redis redis = HelperProvider.GetRedis();

            try
            {
                string userId    = HttpContext.Request.Headers["userId"];
                var    iUserId   = 0;
                var    userLevel = 0;
                int.TryParse(userId, out iUserId);
                if (iUserId > 0)
                {
                    string key  = String.Format("UserAllInfoV5_{0}", userId);
                    string info = redis.StringGet(key);
                    if (!String.IsNullOrEmpty(info))
                    {
                        UserAllInfoModel userInfo = JsonConvert.DeserializeObject <UserAllInfoModel>(info);
                        userLevel = userInfo.userLevel;

                        Log.WriteDebugLog("v2::MainController::GetInitDebitStyle", "用户的等级是:{0}", userLevel);
                    }
                    else
                    {
                        DataProviderResultModel dataProviderResult = UserProvider.GetUserAllInfo(userId);
                        if (dataProviderResult.result == Result.SUCCESS)
                        {
                            UserAllInfoModel userInfo = dataProviderResult.data as UserAllInfoModel;
                            userLevel = userInfo.userLevel;
                            redis.StringSet(key, JsonConvert.SerializeObject(userInfo));
                        }
                        else
                        {
                            Log.WriteDebugLog("v2::MainController::GetInitDebitStyle", "获取缓存与数据库为空:{0}", userId);
                        }
                    }
                }
                else
                {
                    Log.WriteDebugLog("v2::MainController::GetInitDebitStyle", "用户ID没有传入");
                    userLevel = 0;
                }

                var debitStyle = new List <float> {
                    1500000.00f, 2100000.00f, 2700000.00f
                };
                var debitDesc = new SortedList <float, string>();
                debitDesc.Add(1500000.00f, "ISI LENGKAP DATA PRIBADI ANDA DENGAN BENAR MAKA SYSTEM CREDIT KITA AKAN MELAKUKAN PENGECEKAN DAN PINJAMAN AKAN DIBERIKAN SECARA AUTOMATIS BILA LOLOS VERIFIKASI. TERIMA KASIH");
                debitDesc.Add(2100000.00f, "PEMINJAMAN DENGAN NOMINAL INI HANYA BISA DIPINJAMKAN KALAU SUDAH PERNAH MELAKUKAN PEMBAYARAN TEPAT WAKTU ATAU PERPANJANGAN PRODUCT A DENGAN NOMINAL RP 1.500.000 SEBANYAK 2 KALI PEMINJAMAN");
                debitDesc.Add(2700000.00f, "PEMINJAMAN DENGAN NOMINAL INI HANYA BISA DIPINJAMKAN KALAU SUDAH PERNAH MELAKUKAN PEMBAYARAN TEPAT WAKTU ATAU PERPANJANGAN PRODUCT B DENGAN NOMINAL RP 2.100.000 SEBANYAK 2 KALI PEMINJAMAN");

                var debitPeriod = new List <int> {
                    7
                };
                //List<object> retList = new List<object>();
                List <DebitInfo> list = new List <DebitInfo>();
                foreach (var style in debitStyle)
                {
                    foreach (var period in debitPeriod)
                    {
                        DebitInfo info = new DebitInfo();
                        info.debitMoney  = style;
                        info.debitPeriod = period;

                        info.description = "Ketika Anda melakukan pinjam\r\nBiaya admin harus dibayar diawal";
                        DataProviderResultModel result = DebitProvider.GetInterestRateByDebitStyle(style, period);
                        if (result.result == Result.SUCCESS)
                        {
                            float rate        = 0f;
                            float overdueRate = 0f;

                            if (null != result.data)
                            {
                                List <float> rates = result.data as List <float>;

                                rate        = rates[0];
                                overdueRate = rates[1];
                                //贷多少,还多少
                                info.payBackMoney = style;
                                //手续费,一次性
                                if (rate >= 1)
                                {
                                    info.debitFee = rate;
                                    //日息
                                    info.dailyInterest = rate / period;
                                }
                                else
                                {
                                    info.debitFee = style * rate;
                                    //日息
                                    info.dailyInterest = style * rate / period;
                                }
                                info.adminFee = String.Format("Biaya Admin Rp {0}", info.debitFee);
                                //实际到帐,减去手续费
                                info.actualMoney = style - info.debitFee;

                                //逾期日息
                                info.overdueDayInterest = info.actualMoney * overdueRate;

                                //描述
                                info.description  = debitDesc[style];
                                info.displayStyle = 1;
                                if (userLevel == 0)
                                {
                                    if (style > 1500000)
                                    {
                                        info.displayStyle = 0;
                                    }
                                }
                                if (userLevel == 1)
                                {
                                    if (style > 2100000)
                                    {
                                        info.displayStyle = 0;
                                    }
                                }
                                list.Add(info);
                            }
                        }
                    }
                }
                ret.data = list;
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = Convert.ToString(MainErrorModels.LOGIC_ERROR);

                Log.WriteErrorLog("v2::MainController::GetInitDebitStyle", "异常:{0}", ex.Message);
            }
            return(JsonConvert.SerializeObject(ret));
        }
        /// <summary>
        /// 启动时获取全局的配置信息
        /// </summary>
        /// <returns></returns>
        public ActionResult <string> GetInitAppConfig()
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            try
            {
                string version  = HttpContext.Request.Headers["version"];
                string pkgName  = HttpContext.Request.Headers["pkgName"];
                int    iVersion = 0;
                int.TryParse(version, out iVersion);

                Redis redis = HelperProvider.GetRedis();
                version = redis.StringGet("appVersion");
                int newVersion = 0;
                int.TryParse(version, out newVersion);

                int updateIsMust = 0;
                int.TryParse(redis.StringGet("updateIsMust"), out updateIsMust);
                SortedList <string, string> list = new SortedList <string, string>();
                if (String.IsNullOrEmpty(pkgName))
                {
                    list.Add("isUpdate", "1");
                    list.Add("version", Convert.ToString(newVersion));
                    list.Add("isMust", "0");

                    Log.WriteDebugLog("MainController::GetInitAppConfig", "老版本:提示升级,{0}", HelperProvider.GetHeader(HttpContext));
                }
                else
                {
                    list.Add("isUpdate", Convert.ToString(newVersion > iVersion ? 1 : 0));
                    list.Add("version", Convert.ToString(newVersion));
                    list.Add("isMust", Convert.ToString(updateIsMust));
                }
                //Anda masih menggunakan aplikasi versi lama, silahkan klik https://play.google.com/store/apps/details?id=com.danapinjam.vip untuk mengunduh versi terbaru.
                list.Add("downloadUrl", "https://play.google.com/store/apps/details?id=com.danapinjam.vip");
                list.Add("aboutUrl", "http://api.danapinjam.com/api/Home/about");
                list.Add("helpUrl", "http://api.danapinjam.com/api/Home/Help");
                list.Add("contactusUrl", "http://api.danapinjam.com/api/Home/contactus");
                list.Add("agreementUrl2", "http://api.danapinjam.com/api/Home/agreement2");
                list.Add("agreementUrl", "http://api.danapinjam.com/api/Home/agreement");

                ///下面是第三方支付的说明页面
                list.Add("atmh5url", ConfigSettings.atmh5url);
                list.Add("paymethod", String.IsNullOrEmpty(ConfigSettings.PayMethod) ? "1" : ConfigSettings.PayMethod);

                ///以下是OSS的相关配置
                list.Add("ossRegion", "ap-southeast-5");
                list.Add("bucketName", "yjddebit");
                list.Add("ossEndPoint", "http://oss-ap-southeast-5.aliyuncs.com");
                list.Add("ossUrl", "http://yjddebit.oss-ap-southeast-5.aliyuncs.com");

                list.Add("privacyPolicy", "http://api.smalldebit.club/static/html/privacy.html");
                list.Add("indexIntro", "Lakukan Pembayaran Tepat Waktu\r\n&\r\nNikmati Pinjaman Yang Lebih Besar");

                ret.data = list;
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = Convert.ToString(MainErrorModels.LOGIC_ERROR);

                Log.WriteErrorLog("v2::MainController::GetInitAppConfig", "异常:{0}", ex.Message);
            }
            return(JsonConvert.SerializeObject(ret));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="debitMoney"></param>
        /// <param name="debitPeroid"></param>
        /// <param name="bankId"></param>
        /// <param name="description"></param>
        /// <returns></returns>
        public ActionResult <string> SubmitDebitRequest()
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            Redis redis = HelperProvider.GetRedis();

            try
            {
                //需要增加银行信息的记录,为后期历史记录做准备。
                string content = HelperProvider.GetRequestContent(HttpContext);
                if (String.IsNullOrEmpty(content))
                {
                    ret.result    = Result.ERROR;
                    ret.errorCode = MainErrorModels.PARAMETER_ERROR;
                    ret.message   = "The request body is empty.";

                    Log.WriteErrorLog("v2:DebitController::SubmitDebitRequest", "请求参数为空。{0}", HelperProvider.GetHeader(HttpContext));
                    return(JsonConvert.SerializeObject(ret));
                }

                var requestBody = JsonConvert.DeserializeObject <SubmitDebitRequestBody>(content);

                string pkgName = HttpContext.Request.Headers["pkgName"];
                string lockKey = "submitdebit";
                if (redis.LockTake(lockKey, requestBody.userId))
                {
                    if (String.IsNullOrEmpty(requestBody.deviceId))
                    {
                        requestBody.deviceId = HttpContext.Request.Headers["deviceNo"];
                    }

                    if (requestBody.bankId < 1)
                    {
                        ret.result    = Result.ERROR;
                        ret.errorCode = MainErrorModels.PARAMETER_ERROR;
                        ret.message   = "The bankId is empty.";
                        redis.LockRelease(lockKey, requestBody.userId);

                        Log.WriteWarning("v2::DebitController::SubmitDebitRequest", "警告:用户【{0}】提交时BankId为空。", requestBody.userId);
                        return(JsonConvert.SerializeObject(ret));
                    }

                    ///逻辑
                    DataProviderResultModel result = DebitProvider.SubmitDebitReuqestV2(requestBody.userId, requestBody.debitMoney, requestBody.debitPeriod, requestBody.bankId, requestBody.description, requestBody.deviceId);
                    ret.result = result.result;
                    if (result.result == Result.SUCCESS)
                    {
                        ret.data = result.data;
                    }
                    else
                    {
                        ret.result    = Result.ERROR;
                        ret.errorCode = result.result;
                        ret.message   = result.message;
                    }
                    redis.LockRelease(lockKey, requestBody.userId);
                }
                else
                {
                    ret.result    = Result.ERROR;
                    ret.errorCode = MainErrorModels.ALREADY_SUBMIT_REQUEST;
                    ret.message   = "already submit request.";

                    Log.WriteDebugLog("v2::DebitController::SubmitDebitRequest", "[{0}] 重复请求。", requestBody.userId);
                }
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = Convert.ToString(MainErrorModels.LOGIC_ERROR);

                Log.WriteErrorLog("v2::DebitController::SubmitDebitRequest", "异常:{0}", ex.Message);
            }
            finally
            {
                Log.WriteDebugLog("v2::DebitController::SubmitDebitRequest", "{0}", HelperProvider.GetHeader(HttpContext));
            }
            return(JsonConvert.SerializeObject(ret));
        }