/// /// 获取待自动放款的记录 /// 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); }
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; }
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)); }
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); } }