|
|
using Dapper;using Npgsql;using Shentun.Peis.Enums;using System;using System.Collections.Generic;using System.Data.Common;using System.Linq;using System.Text;using System.Threading.Tasks;
namespace Shentun.Peis.PlugIns{ public class ChargeRequestPlugInsBase : ThirdPlugInsBase { public ChargeRequestPlugInsBase(string parmValue) : base(parmValue) { }
public virtual async Task<ChargeRequestPlugInsOut> SendChargeRequestAsync(ChargeRequestPlugInsInput input) { var result = new ChargeRequestPlugInsOut(); return result; }
public virtual async Task<ChargeRequestPlugInsOut> CancelChargeRequestAsync(ChargeRequestPlugInsInput input) { var result = new ChargeRequestPlugInsOut(); return result; } public virtual async Task<ChargeRequestPlugInsOut> RefundRequestAsync(ChargeRequestPlugInsInput input) { var result = new ChargeRequestPlugInsOut(); return result; }
public async Task<PatientRegisterForPlugIns> GetPatientRegisterAsync(Guid chargeRequestId) { using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) { string sql; sql = @"SELECT DISTINCT patient.id as patient_id,
patient_register.id as patient_register_id, patient_register.patient_register_no, patient.patient_no , patient_register.his_patient_id, patient_register.medical_center_id, patient_register.patient_name, patient_register.sex_id, patient_register.marital_status_id, patient_register.birth_date, patient_register.age, patient.nation_id, patient.id_no, patient.email, patient.telephone, patient.mobile_telephone, patient.addressfrom patient,patient_register,charge_requestwhere patient.id = patient_register.patient_id and patient_register.id = charge_request.patient_register_id and charge_request.id =@ChargeRequestId ";
var patientRegisterForPlugIns = (await conn.QueryAsync<PatientRegisterForPlugIns>(sql, new { ChargeRequestId = chargeRequestId })).SingleOrDefault(); return patientRegisterForPlugIns; }
}
public async Task<ChargeRequestForPlugIns> GetChargeRequestAsync(Guid chargeRequestId) { using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) { string sql; sql = @"SELECT id as charge_request_id,
charge_request_no, his_charge_no, charge_request_flag, concurrency_stamp FROM charge_request WHERE id =@ChargeRequestId ";
var chargeRequestForPlugIns = (await conn.QueryAsync<ChargeRequestForPlugIns>(sql, new { ChargeRequestId = chargeRequestId })).SingleOrDefault(); if (chargeRequestForPlugIns == null) { return null; } sql = @"
SELECT register_check_asbitem.asbitem_id, asbitem.display_name as asbitem_name, register_check_asbitem.amount * register_check_asbitem.charge_price as charges, register_check_asbitem.concurrency_stamp from register_check JOIN register_check_asbitem on register_check.id = register_check_asbitem.register_check_id JOIN charge_request on register_check_asbitem.charge_request_id = charge_request.id JOIN asbitem on register_check_asbitem.asbitem_id = asbitem.id where charge_request.id=@ChargeRequestId ";
chargeRequestForPlugIns.Asbitems = (await conn.QueryAsync<ChargeRequestAsbitemForPlugIns>(sql, new { ChargeRequestId = chargeRequestId })).ToList();
return chargeRequestForPlugIns; } }
public async Task<List<ChargeRequestForPlugIns>> GetRequests(int days) { using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) { string sql; var startDate = DateTime.Now.Date.AddDays(-days); sql = @"SELECT id as charge_request_id,
charge_request_no, his_charge_no, charge_request_flag, concurrency_stamp FROM charge_request WHERE (charge_request_flag = '0' or charge_request_flag = '2' or charge_request_flag = '4')and creation_time >@StartDate ";
var chargeRequestForPlugInss = (await conn.QueryAsync<ChargeRequestForPlugIns>(sql, new { StartDate = startDate })).ToList();
return chargeRequestForPlugInss; }
}
//public async Task CancelAppChargeRequestAsync(Guid chargeRequestId)
//{
// using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
// {
// string sql;
// sql = @" update charge_request set charge_request_flag = '2' where id = @ChargeRequestId
// ";
// conn.Execute(sql,
// new { ChargeRequestId = chargeRequestId });
// }
//}
//public async Task RefundAppChargeRequestAsync(Guid chargeRequestId)
//{
// using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
// {
// string sql;
// sql = @" update charge_request set charge_request_flag = '3' where id = @ChargeRequestId
// ";
// conn.Execute(sql,
// new { ChargeRequestId = chargeRequestId });
// }
//}
public async Task SetAppChargeRequestFlagAsync(ChargeRequestForPlugIns chargeRequestForPlugIns, char chargeRequestFlag) { using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) { //加ConcurrencyStamp,以防止并发
string sql; sql = @" update charge_request set charge_request_flag =" + chargeRequestFlag + @" where id = @ChargeRequestId and concurrency_stamp = @ConcurrencyStamp
";
conn.Execute(sql, new { ChargeRequestId = chargeRequestForPlugIns.ChargeRequestId, ConcurrencyStamp = chargeRequestForPlugIns.ConcurrencyStamp });
foreach(var chargeRequestAsbitem in chargeRequestForPlugIns.Asbitems) { if (chargeRequestFlag == ChargeRequestFlag.AlreadyCharge) { sql = @" update register_check_asbitem set is_charge = 'Y'
where charge_request_id = @ChargeRequestId and concurrency_stamp = @ConcurrencyStamp ";
conn.Execute(sql, new { ChargeRequestId = chargeRequestForPlugIns.ChargeRequestId, ConcurrencyStamp = chargeRequestAsbitem.ConcurrencyStamp }); } else if (chargeRequestFlag == ChargeRequestFlag.AlreadyRefund) { sql = @" update register_check_asbitem set is_charge = 'N'
where charge_request_id = @ChargeRequestId and concurrency_stamp = @ConcurrencyStamp ";
conn.Execute(sql, new { ChargeRequestId = chargeRequestForPlugIns.ChargeRequestId, ConcurrencyStamp = chargeRequestAsbitem.ConcurrencyStamp }); } }
} }
public virtual async Task SyncChargeRequestFlagFromInterfaceAsync(Guid chargeRequestId) {
} }
public class ChargeRequestPlugInsInput { public Guid ChargeRequestId { get; set; }
} //public class ChargeRequestAsbitemPlugInsInput
//{
//}
public class ChargeRequestPlugInsOut { public string? ThirdChargeRequestId { get; set; } }}
|