public static DataProviderResultModel CreatePayBack(int userId, int debitId, string type, string merchantCode) { DataProviderResultModel result = new DataProviderResultModel(); DataBaseOperator dbo = null; try { dbo = new DataBaseOperator(); string sqlStr = "select count(1) from IFUserPayBackDebitRecord where debitId = @iDebitId and status = @iStatus and type = @iType"; ParamCollections pc = new ParamCollections(); pc.Add("@iDebitId", debitId); pc.Add("@iStatus", -2); pc.Add("@iType", type); int count = dbo.GetCount(sqlStr, pc.GetParams(true)); if (count > 0) { //重置状态。 sqlStr = @"update IFUserPayBackDebitRecord set createTime=now(),statusTime=now(),reTryTimes=0,merchantCode=@sMerchantCode where debitId = @iDebitId and status = @iStatus and type = @iType"; pc.Add("@sMerchantCode", merchantCode); pc.Add("@iDebitId", debitId); pc.Add("@iStatus", -2); pc.Add("@iType", type); dbo.ExecuteStatement(sqlStr, pc.GetParams(true)); sqlStr = "select id from IFUserPayBackDebitRecord where debitId = @iDebitId and status = @iStatus and type = @iType"; pc.Add("@iDebitId", debitId); pc.Add("@iStatus", -2); pc.Add("@iType", type); object obj = dbo.GetScalar(sqlStr, pc.GetParams(true)); result.data = obj; result.result = Result.SUCCESS; } else { sqlStr = @"insert into IFUserPayBackDebitRecord(userId, status,createTime, type, debitId, merchantCode) values(@iUserId, @iStatus,now(), @iType, @iDebitId,@sMerchantCode);"; pc.Add("@iUserId", userId); pc.Add("@iStatus", -2); pc.Add("@iType", type); pc.Add("@iDebitId", debitId); pc.Add("@sMerchantCode", merchantCode); dbo.ExecuteStatement(sqlStr, pc.GetParams(true)); sqlStr = "select id from IFUserPayBackDebitRecord where debitId = @iDebitId and status = @iStatus and type = @iType order by id desc limit 1"; pc.Add("@iDebitId", debitId); pc.Add("@iStatus", -2); pc.Add("@iType", type); object obj = dbo.GetScalar(sqlStr, pc.GetParams(true)); result.data = obj; result.result = Result.SUCCESS; } } catch (Exception ex) { result.result = Result.ERROR; Log.WriteErrorLog("DuitkuProvider::CreatePayBack", ex.Message); } finally { if (null != dbo) { dbo.Close(); dbo = null; } } return(result); }