Ejemplo n.º 1
0
        public ActionResult <string> GetUserDebitAttention(int userId)
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            try
            {
                ///逻辑
                DataProviderResultModel result = DebitProvider.GetUserDebitAttention(userId);
                if (result.result == Result.SUCCESS)
                {
                    ret.data = result.data;
                }
                else
                {
                    ret.result  = result.result;
                    ret.message = result.message;
                }
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = Convert.ToString(MainErrorModels.LOGIC_ERROR);

                Log.WriteErrorLog("MainController::GetUserDebitAttention", "异常:{0}", ex.Message);
            }
            return(JsonConvert.SerializeObject(ret));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取某条贷款记录
        /// </summary>
        /// <param name="debitId"></param>
        /// <returns></returns>
        public ActionResult <string> GetUserExtendInfo(int debitId)
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            try
            {
                ///逻辑
                DataProviderResultModel result = DebitProvider.GetUserExtendRecord(debitId);
                if (result.result == Result.SUCCESS)
                {
                    ret.data = result.data;
                }
                else
                {
                    ret.result  = result.result;
                    ret.message = result.message;
                }
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = "The program logic error from the DebitController::GetUserDebitRecord function.";

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

            return(JsonConvert.SerializeObject(ret));
        }
Ejemplo n.º 3
0
        public ActionResult <string> GetUserDebitRecordDetail()
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;

            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));
            }

            try
            {
                var requestBody = JsonConvert.DeserializeObject <DebitInfoRequestBody>(content);
                DebitRecordLogResponse  response = new DebitRecordLogResponse();
                DataProviderResultModel result   = DebitProvider.GetUserDebitRecord(requestBody.debitId);
                if (result.result == Result.SUCCESS)
                {
                    response.debitInfo = result.data as DebitInfoModel;
                    result             = DebitProvider.GetUserDebitRecordLogs(requestBody.debitId);
                    if (result.result == Result.SUCCESS)
                    {
                        response.logs = result.data as List <DebitRecordLogModel>;
                        ret.data      = response;
                        ret.result    = Result.SUCCESS;
                    }
                    else
                    {
                        ret.result  = result.result;
                        ret.message = result.message;
                    }
                }
                else
                {
                    ret.result  = result.result;
                    ret.message = result.message;
                }
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = "The program logic error from the DebitController::GetUserDebitRecordDetail function.";

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

            return(JsonConvert.SerializeObject(ret));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 获取用户的贷款记录
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public ActionResult <string> GetUserDebitRecords()
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;

            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));
            }
            try
            {
                var requestBody = JsonConvert.DeserializeObject <DebitRecordsRequestBody>(content);

                ///逻辑
                DataProviderResultModel result = DebitProvider.GetUserDebitRecords(requestBody);
                if (result.result == Result.SUCCESS)
                {
                    ret.data = result.data;
                }
                else
                {
                    ret.result  = result.result;
                    ret.message = result.message;
                }
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = "The program logic error from the DebitController::GetUserDebitRecords function.";

                Log.WriteErrorLog("v2::DebitController::GetUserDebitRecords", "UserId:{0},异常:{1}", content, ex.Message);
            }

            return(JsonConvert.SerializeObject(ret));
        }
Ejemplo n.º 5
0
        public ActionResult <string> GetUserDebitAttention()
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            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:MainController::GetUserDebitAttention", "请求参数为空。{0}", HelperProvider.GetHeader(HttpContext));
                    return(JsonConvert.SerializeObject(ret));
                }

                var requestBody = JsonConvert.DeserializeObject <UserInfoRequestBody>(content);
                int iUserId     = 0;
                int.TryParse(requestBody.userId, out iUserId);
                ///逻辑
                DataProviderResultModel result = DebitProvider.GetUserDebitAttention(iUserId);
                if (result.result == Result.SUCCESS)
                {
                    ret.data = result.data;
                }
                else
                {
                    ret.result  = result.result;
                    ret.message = result.message;
                }
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = Convert.ToString(MainErrorModels.LOGIC_ERROR);

                Log.WriteErrorLog("v2::MainController::GetUserDebitAttention", "异常:{0}", ex.Message);
            }
            return(JsonConvert.SerializeObject(ret));
        }
Ejemplo n.º 6
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));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 计算利率 2
        /// </summary>
        /// <param name="debitMoney"></param>
        /// <param name="debitPeroid"></param>
        /// <returns></returns>
        public ActionResult <string> CalcInterestRate(float debitMoney, int debitPeriod)
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            try
            {
                ///逻辑
                DebitInfo info = new DebitInfo();
                info.debitMoney  = debitMoney;
                info.debitPeriod = debitPeriod;
                info.description = String.Format("no interest rate fees\r\nonly pay back {0} after {1} days", debitMoney.ToString("#,##0.00 "), debitPeriod);
                DataProviderResultModel result = DebitProvider.GetInterestRateByDebitStyle(debitMoney, debitPeriod);
                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 = debitMoney;

                        //手续费,一次性
                        if (rate >= 1)
                        {
                            info.debitFee = rate;
                            //日息
                            info.dailyInterest = rate / debitPeriod;
                        }
                        else
                        {
                            info.debitFee = debitMoney * rate;
                            //日息
                            info.dailyInterest = debitMoney * rate / debitPeriod;
                        }
                        //实际到帐,减去手续费
                        info.actualMoney = debitMoney - info.debitFee;
                        //日息
                        info.dailyInterest = debitMoney * rate / debitPeriod;
                        //逾期日息
                        info.overdueDayInterest = debitMoney * overdueRate;
                        ret.data = info;
                    }
                    else
                    {
                        ret.result  = MainErrorModels.LOGIC_ERROR;
                        ret.message = "logic error,The rate calc result is 0.";
                    }
                }
                else
                {
                    ret.result    = Result.ERROR;
                    ret.errorCode = result.result;
                    ret.message   = result.message;
                }
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = Convert.ToString(MainErrorModels.LOGIC_ERROR);

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

            return(JsonConvert.SerializeObject(ret));
        }
Ejemplo n.º 8
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));
        }
Ejemplo n.º 9
0
        /// <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));
        }
Ejemplo n.º 10
0
        public ActionResult GetDuitkuVAInfo(int userId, int debitId, int type)
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            try
            {
                ///3为还款,4为延期
                if (type != 3 && type != 4)
                {
                    ret.result    = Result.ERROR;
                    ret.errorCode = MainErrorModels.PARAMETER_ERROR;
                    ret.message   = "type is Incorrect.";
                }
                else
                {
                    ///这里验证debitId 与 用户
                    string prefix = ConfigSettings.prefixNo;//HelperProvider.PrefixOfDuitku();
                    DataProviderResultModel result = null;

                    result = type == 3 ? DebitProvider.GetUserExtendRecord(debitId) : DebitProvider.GetUserDebitRecord(debitId);

                    if (result.result == Result.SUCCESS)
                    {
                        int dataUserId = 0;
                        if (type == 3)
                        {
                            DebitExtendModel model = result.data as DebitExtendModel;
                            dataUserId = model.userId;
                            prefix     = getPrefixNo(model.target);

                            ViewData["money"] = (model.extendFee + model.overdueMoney - model.partMoney).ToString("N0").Replace(",", ".");
                        }
                        else
                        {
                            DebitInfoModel model = result.data as DebitInfoModel;
                            dataUserId        = model.userId;
                            prefix            = getPrefixNo(model.target);
                            ViewData["money"] = (model.payBackMoney).ToString("N0").Replace(",", ".");
                        }
                        ViewData["prefix"] = prefix;

                        if (userId == dataUserId)
                        {
                            DataProviderResultModel bankInfoResult = UserProvider.GetUserBankInfo(Convert.ToString(userId));

                            if (bankInfoResult.result == Result.SUCCESS)
                            {
                                UserBankInfoModel bankInfo = bankInfoResult.data as UserBankInfoModel;

                                string vaNo = String.Format("{0}{1}{2}", prefix, type, debitId.ToString().PadLeft(15 - prefix.Length, '0'));
                                ViewData["title"]    = type == 3 ? "Anda dapat melakukan pembayaran dengan menggunakan" : "Anda dapat melakukan pembayaran dengan menggunakan";
                                ViewData["vaNo"]     = vaNo;
                                ViewData["userName"] = bankInfo.contactName;
                            }
                            else
                            {
                                ret.result  = Result.ERROR;
                                ret.message = "bank info inquiry is incorrect.";
                            }
                        }
                        else
                        {
                            ret.result  = Result.ERROR;
                            ret.message = String.Format("params is incorrect.({0}:{1})", userId, dataUserId);
                        }
                    }
                    else
                    {
                        ret.result  = result.result;
                        ret.message = result.message;
                    }
                }
            }
            catch (Exception ex)
            {
                ret.result    = Result.ERROR;
                ret.errorCode = MainErrorModels.LOGIC_ERROR;
                ret.message   = "The program logic error from the UserController::InquiryRequest function.";

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

            if (ret.result == Result.SUCCESS)
            {
                return(View());
            }
            else
            {
                ViewData["refresh"] = HttpContext.Request.Path + HttpContext.Request.QueryString;
                ViewData["message"] = ret.message;
                return(View("Error"));
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 编辑用户联系信息接口
        /// </summary>
        /// <returns></returns>
        public ActionResult <string> InquiryRequest([FromForm] DuitkuInquriyRequestModel request)
        {
            Redis  redis = new Redis();
            string key   = String.Format("InquiryRequest_{0}", request.vaNo);

            DuitkuInquriyResponseModel response = new DuitkuInquriyResponseModel();

            try
            {
                if (redis.LockTake(key, 1, 10))
                {
                    Log.WriteDebugLog("DuitkuController::InquiryRequest", "param is {0}", JsonConvert.SerializeObject(request));
                    string signature = String.Empty;
                    string duitkuKey = getDuitkuKey(request.merchantCode);
                    signature = request.merchantCode + request.action + request.vaNo + request.session + duitkuKey;
                    signature = HelperProvider.MD532(signature);

                    if (signature != request.signature)
                    {
                        response.statusCode    = "01";
                        response.statusMessage = "signature is incorrect.";
                        Log.WriteDebugLog("DuitkuController::InquiryRequest", "签名验证没有通过:{0} - 传入为:{1}", signature, request.signature);
                    }
                    else
                    {
                        response.statusCode    = "01";
                        response.statusMessage = "Request is incorrect.";
                        if (request.IsEmpty())
                        {
                            response.statusCode    = "01";
                            response.statusMessage = "Request content is empty.";
                            Log.WriteDebugLog("DuitkuController::InquiryRequest", "参数异常,缺少必要的参数:{0}", JsonConvert.SerializeObject(request));
                        }
                        else
                        {
                            /// 868005 = A,868007 = B
                            if (request.bin == "868005" || request.bin == "868007" || request.bin == "119905" || request.bin == "119906")
                            {
                                string vaNo = request.vaNo.Replace(request.bin, "");
                                if (vaNo.Length == (16 - request.bin.Length))
                                {
                                    string type     = vaNo.Substring(0, 1);
                                    string debitId  = vaNo.Substring(1);
                                    int    iDebitId = -1;
                                    request.merchantCode = String.Format("{0}{1}", request.bin, request.merchantCode);
                                    int.TryParse(debitId, out iDebitId);
                                    ///3 - 延期;4 - 还款
                                    if (type == "3")
                                    {
                                        var ret = DebitProvider.GetUserExtendRecord(iDebitId);
                                        if (ret.result == Result.SUCCESS)
                                        {
                                            var model = ret.data as DebitExtendModel;

                                            //状态为未还款,还款失败,逾期才能进行延期
                                            if (model.status == 1 || model.status == -2 || model.status == 4)
                                            {
                                                var result = DuitkuProvider.CreatePayBack(model.userId, iDebitId, type, request.merchantCode);

                                                if (result.result == Result.SUCCESS)
                                                {
                                                    response.statusCode      = "00";
                                                    response.statusMessage   = "success";
                                                    response.merchantOrderId = Convert.ToString(result.data);
                                                    response.vaNo            = request.vaNo;
                                                    response.amount          = "0";//Convert.ToString(model.extendFee + model.overdueMoney);
                                                    response.name            = "DanaPinjam";
                                                }
                                                else
                                                {
                                                    response.statusCode    = "01";
                                                    response.statusMessage = "Create extend record incorrect.";
                                                    Log.WriteErrorLog("DuitkuController::InquiryRequest", "Create extend record incorrect:{0} - {1}", iDebitId, result.message);
                                                }
                                            }
                                            else
                                            {
                                                response.statusCode    = "01";
                                                response.statusMessage = "Only within loan, overdue, payback failed , can request extend";
                                                Log.WriteErrorLog("DuitkuController::InquiryRequest", "记录的状态为:{0},不能申请延期 - {1}", model.status, iDebitId);
                                            }
                                        }
                                        else
                                        {
                                            response.statusCode    = "01";
                                            response.statusMessage = ret.message;
                                            Log.WriteErrorLog("DuitkuController::InquiryRequest", "Get extend record incorrect:{0} - {1}", iDebitId, ret.message);
                                        }
                                    }
                                    else if (type == "4")
                                    {
                                        var ret = DebitProvider.GetUserDebitRecord(iDebitId);

                                        if (ret.result == Result.SUCCESS)
                                        {
                                            var model = ret.data as DebitInfoModel;

                                            if (model.status == -2 || model.status == 1 || model.status == 4)
                                            {
                                                var result = DuitkuProvider.CreatePayBack(model.userId, iDebitId, type, request.merchantCode);

                                                if (result.result == Result.SUCCESS)
                                                {
                                                    response.statusCode      = "00";
                                                    response.statusMessage   = "success";
                                                    response.merchantOrderId = Convert.ToString(result.data);
                                                    response.vaNo            = request.vaNo;
                                                    response.amount          = "0";//Convert.ToString(model.payBackMoney + model.overdueMoney);
                                                    response.name            = "DanaPinjam";
                                                }
                                                else
                                                {
                                                    response.statusCode    = "01";
                                                    response.statusMessage = "Create payback record incorrect.";
                                                    Log.WriteErrorLog("DuitkuController::InquiryRequest", "Create payback record incorrect:{0} - {1}", iDebitId, result.message);
                                                }
                                            }
                                            else
                                            {
                                                response.statusCode    = "01";
                                                response.statusMessage = "Only within loan, overdue, payback failed , can request payback.";
                                                Log.WriteErrorLog("DuitkuController::InquiryRequest", "记录的状态为:{0},不能申请延期 - {1}", model.status, iDebitId);
                                            }
                                        }
                                        else
                                        {
                                            response.statusCode    = "01";
                                            response.statusMessage = ret.message;
                                            Log.WriteErrorLog("DuitkuController::InquiryRequest", "get debit record incorrect.{0} message = {1}", iDebitId, ret.message);
                                        }
                                    }
                                    else
                                    {
                                        response.statusCode = "01";
                                        Log.WriteErrorLog("DuitkuController::InquiryRequest", "param is incorrect. request.type:{0} debitId = {1}", type, iDebitId);
                                    }
                                }
                                else
                                {
                                    response.statusCode    = "01";
                                    response.statusMessage = "va is incorrect.";
                                    Log.WriteErrorLog("DuitkuController::InquiryRequest", "va is incorrect. request.type:{0}", vaNo);
                                }
                            }
                            else
                            {
                                response.statusCode = "01";
                                Log.WriteErrorLog("DuitkuController::InquiryRequest", "param is incorrect. request:{0}", JsonConvert.SerializeObject(request));
                            }
                        }
                    }
                    redis.LockRelease(key, 1);
                }
                else
                {
                    Log.WriteErrorLog("DuitkuController::InquiryRequest", "get lock fail.{0}", JsonConvert.SerializeObject(request));
                }
            }
            catch (Exception ex)
            {
                response.statusCode    = "01";
                response.statusMessage = ex.Message;
                Log.WriteErrorLog("DuitkuController::InquiryRequest", "异常:{0}", ex.Message);
            }
            return(JsonConvert.SerializeObject(response));
        }
Ejemplo n.º 12
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()
        {
            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));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 获取贷款种类
        /// </summary>
        /// <returns></returns>
        public ActionResult <string> GetInitDebitStyleV2()
        {
            HttpResultModel ret = new HttpResultModel();

            ret.result = Result.SUCCESS;
            try
            {
                var debitStyle = new List <float> {
                    1500000.00f
                };
                var debitPeriod = new List <int> {
                    7
                };
                List <object> retList = new List <object>();
                foreach (var style in debitStyle)
                {
                    List <DebitInfo> list = new List <DebitInfo>();
                    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 = style * overdueRate;
                                list.Add(info);
                            }
                        }
                    }
                    retList.Add(new { debitMoney = style, debitCombination = list });
                }

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

                Log.WriteErrorLog("MainController::GetInitDebitStyle", "异常:{0}", ex.Message);
            }
            return(JsonConvert.SerializeObject(ret));
        }