///
    /// 获取待自动放款的记录
    ///
    public static List <DebitUserRecord> GetReadyReleaseDebitRecords()
    {
        DataBaseOperator       dbo  = null;
        List <DebitUserRecord> list = new List <DebitUserRecord>();

        try
        {
            dbo = new DataBaseOperator();
            string           sqlStr = @"select debitId,b.BNICode,b.BankCode, b.BankName, b.userId,b.ContactName,a.actualMoney,ifnull(a.target,'A') target
                    from IFUserDebitRecord a,IFUserBankInfo b where a.status = @iStatus and a.audit_step = @iStep and 
                    a.bankId = b.bankId and b.BNICode is not null and b.BNICode != '' limit 10";
            ParamCollections pc     = new ParamCollections();
            pc.Add("@iStatus", 5);
            pc.Add("@iStep", 3);

            DataTable dt = dbo.GetTable(sqlStr, pc.GetParams());
            if (null != dt && dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DebitUserRecord record = new DebitUserRecord();
                    int             tmp    = 0;
                    int.TryParse(Convert.ToString(dt.Rows[i]["userId"]), out tmp);
                    record.userId = tmp;

                    record.userName = Convert.ToString(dt.Rows[i]["contactName"]);
                    float ftmp = 0f;
                    float.TryParse(Convert.ToString(dt.Rows[i]["actualMoney"]), out ftmp);
                    record.amountTransfer = ftmp;

                    int.TryParse(Convert.ToString(dt.Rows[i]["debitId"]), out tmp);
                    record.debitId = tmp;

                    record.bankCode    = Convert.ToString(dt.Rows[i]["BNICode"]);
                    record.target      = Convert.ToString(dt.Rows[i]["target"]);
                    record.bankAccount = Convert.ToString(dt.Rows[i]["BankCode"]);
                    record.purpose     = "auto release loan.Rp" + record.amountTransfer;
                    list.Add(record);
                }
            }
        }
        catch (Exception ex)
        {
            Log.WriteErrorLog("BusinessDao::GetReadyReleaseDebitRecords", ex.Message);
        }
        finally
        {
            if (null != dbo)
            {
                dbo.Close();
                dbo = null;
            }
        }
        return(list);
    }
Example #2
0
        static void Main(string[] args)
        {
            //AGUSTINUS WAHYU TETRA NO      !=agustinus wahyu tetra novranta
            //:             !=

            Console.WriteLine(Convert.ToString(Levenshtein("CHINTIA D W LASUT", "chintia dervini wulandari lasut".ToUpper())));

            Log.Init(1, 50240000, "yyyyMMdd", @"./logs/", LogType.Debug);

            DataBaseOperator.SetDbIniFilePath(".");
            Log.WriteDebugLog("ControlCenter::Startup", "Begin connect db");

            string connStr = DataBasePool.AddDataBaseConnectionString("debittest", "!%(**$*@^77f1fjj", 5, 5);

            Log.WriteDebugLog("ControlCenter::Startup", connStr);
            DataBaseOperator.Init("debittest");

            ControlCenter cc = new ControlCenter();

            cc.Start();

            while (true)
            {
                Thread.Sleep(100000);
            }

            return;

            string serverInfo = "127.0.0.1:6379";
            string password   = "******";

            RedisPools.RedisPools.Init(serverInfo, Proxy.None, 200, password);

            LoanBank bank = new LoanBank();

            DebitUserRecord record = new DebitUserRecord();

            record.debitId        = 111;
            record.bankAccount    = "1680001297876";
            record.bankCode       = "008";
            record.amountTransfer = 10000;
            record.purpose        = "test";
            record.userId         = 27;
            record.userName       = "******";

            string errMsg = String.Empty;

            bank.Transfer(record, out errMsg);


            //bank.CheckTransferStatus("10013");
            //$paramSignature = $email . $timestamp . $bankCode . $bankAccount . $accountName . $custRefNumber . $amountTransfer . $purpose . $disburseId . $secretKey;
        }
Example #3
0
    public InquiryResponse DuitkuInquiryRequest(DebitUserRecord record)
    {
        HttpHelper http = new HttpHelper();

        InquiryRequest request = new InquiryRequest();

        request.amountTransfer = Convert.ToString(record.amountTransfer);
        request.bankAccount    = record.bankAccount;
        request.bankCode       = record.bankCode;
        request.purpose        = record.purpose;
        request.senderId       = record.userId;
        request.senderName     = record.userName;
        request.InitSingature(record.target);

        Log.WriteDebugLog("LoanBank::Transfer", "request info:{0}", JsonConvert.SerializeObject(request));

        //查询,验证转帐的银行信息
        return(http.DuitkuInquiryRequest(request));
    }
Example #4
0
    public bool Transfer(DebitUserRecord record, out string errMsg)
    {
        Redis redis = new Redis();

        errMsg = String.Empty;
        string key    = String.Format("lock_{0}", record.debitId);
        string retKey = String.Format("release_{0}", record.debitId);

        if (redis.LockTake(key, record.debitId, 300))
        {
            try
            {
                string transferResult = redis.StringGet(retKey);
                if (!String.IsNullOrEmpty(transferResult))
                {
                    InquiryResponse response = JsonConvert.DeserializeObject <InquiryResponse>(transferResult);
                    if (response.responseCode == "00")
                    {
                        Log.WriteDebugLog("LoanBank::Transfer", "[{0}]早已转帐成功:{1}", record.debitId, response.responseDesc);
                        return(true);
                    }
                }
                else
                {
                    HttpHelper http = new HttpHelper();
                    Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 准备转帐,查询银行信息。", record.debitId);
                    //查询,验证转帐的银行信息
                    InquiryResponse response = null;
                    response = DuitkuInquiryRequest(record);

                    Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 核对银行帐号信息:{1}", record.debitId, JsonConvert.SerializeObject(response));

                    if (response.responseCode == "00")
                    {
                        Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 核对银行帐号信息,返回成功。", record.debitId);
                        Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 核对帐户名称,record:{1} ,response:{2}", record.debitId, record.userName.Trim().ToUpper(), response.accountName.Trim().ToUpper());
                        string bankUserName   = response.accountName.Replace(" ", "").Trim().ToUpper();
                        string recordUserName = record.userName.Replace(" ", "").Trim().ToUpper();

                        ///相似度匹配
                        float rate = HttpHelper.Levenshtein(bankUserName, recordUserName);

                        if (bankUserName.IndexOf(recordUserName) > -1 ||
                            rate >= 0.7)
                        {
                            Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 帐户名称正确,初使化请求准备转帐。相似度:{1}%", record.debitId, rate * 100);
                            TransferRequest transferRequest = new TransferRequest();
                            transferRequest.accountName    = record.userName.ToUpper();
                            transferRequest.amountTransfer = response.amountTransfer;
                            transferRequest.bankCode       = response.bankCode.Trim();
                            transferRequest.custRefNumber  = response.custRefNumber.Trim();
                            transferRequest.disburseId     = response.disburseId;

                            transferRequest.purpose     = record.purpose;
                            transferRequest.bankAccount = record.bankAccount;
                            transferRequest.InitSingature(record.target);

                            Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 开始转帐,渠道为:{1},请求参数为:{2}", record.debitId, record.target, JsonConvert.SerializeObject(transferRequest));

                            response = http.DuitkuTransferRequest(transferRequest);

                            Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 转帐结果为:{1}", record.debitId, JsonConvert.SerializeObject(response));
                            if (response.responseCode == "00")
                            {
                                Log.WriteDebugLog("LoanBank::Transfer", "[{0}] 转帐成功,将结果写入缓存,30天内避免重复打款。:{1}", record.debitId, response.responseDesc);
                                redis.StringSet(retKey, JsonConvert.SerializeObject(response), 60 * 60 * 24 * 30);
                                return(true);
                            }
                            else
                            {
                                errMsg = String.Format("{0}({1})", response.responseDesc, response.responseCode);
                                Log.WriteErrorLog("LoanBank::Transfer", "[{0}] 转帐失败:{1}", record.debitId, response.responseDesc);
                                return(false);
                            }
                        }
                        else
                        {
                            Log.WriteErrorLog("LoanBank::Transfer", "[{0}] 银行卡对应的名字与用户填写的名字不同:{1}!={2},相似度:{3}", record.debitId, bankUserName, recordUserName, rate);
                            errMsg = String.Format("Bank Information Incorrect.accountName:{0} incorrect.", record.userName);

                            return(false);
                        }
                    }
                    else
                    {
                        errMsg = String.Format("{0}({1})", response.responseDesc, response.responseCode);
                        Log.WriteErrorLog("LoanBank::Transfer", "[{0}] 转帐失败:{1}", record.debitId, response.responseDesc);
                        return(false);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.WriteErrorLog("LoanBank::Transfer", "[{0}] 转帐失败,发生异常,渠道:{1}, {2}", record.debitId, record.target, ex.Message);
            }
            finally
            {
                redis.LockRelease(key, record.debitId);
            }
            return(false);
        }
        else
        {
            errMsg = "get lock fail.";
            return(false);
        }
    }