异常合同管理接口 - 创建、审核、获取
///
// 验证登录态
var user = _auth.GetCurrentUser(session);
if (user == null)
{
return ResponseBase<EmptyResponse>.Unauthorized();
}
// 检查客户
var customer = await _customerRepo.GetByIdAsync(request.CustomerId);
if (customer == null)
{
return ResponseBase<EmptyResponse>.BadRequest('客户不存在');
}
// 检查合同
var contract = await _contractRepo.GetByIdAsync(request.ContractId);
if (contract == null)
{
return ResponseBase<EmptyResponse>.BadRequest('续约合同不存在');
}
// 创建异常合同
var anomalyContract = new AnomalyContract
{
CustomerId = request.CustomerId,
OriginalContractId = request.ContractId,
Amount = request.Amount,
BusinessType = request.BusinessType,
Status = ContractStatus.Pending,
CreatedById = user.Id,
CreatedOn = DateTime.Now,
Note = request.Note
};
await _anomalyContractRepo.InsertAsync(anomalyContract);
// 同时创建财务账单
var bill = new Bill
{
CustomerId = request.CustomerId,
ContractId = anomalyContract.Id,
Amount = request.Amount,
BusinessType = request.BusinessType,
Status = BillStatus.Pending,
CreatedById = user.Id,
CreatedOn = DateTime.Now
};
await _billRepo.InsertAsync(bill);
return ResponseBase<EmptyResponse>.Success();
}
/// <summary>
/// 审核异常合同
/// </summary>
/// <param name='session'></param>
/// <param name='id'></param>
/// <param name='request'></param>
/// <returns></returns>
[HttpPost('{id}/audit')]
[ModuleAuthorization("CRM")]
public async Task<ResponseBase<EmptyResponse>> AuditAnomalyContract(string session, int id, [FromBody] AnomalyContractAuditRequest request)
{
if (request == null)
{
return ResponseBase<EmptyResponse>.BadRequest('请求参数错误');
}
// 验证登录态
var user = _auth.GetCurrentUser(session);
if (user == null)
{
return ResponseBase<EmptyResponse>.Unauthorized();
}
// 检查异常合同
var anomalyContract = await _anomalyContractRepo.GetByIdAsync(id);
if (anomalyContract == null)
{
return ResponseBase<EmptyResponse>.BadRequest('异常合同不存在');
}
// 审核
anomalyContract.AuditedById = user.Id;
anomalyContract.AuditedOn = DateTime.Now;
anomalyContract.Status = request.Passed ? ContractStatus.Passed : ContractStatus.Rejected;
await _anomalyContractRepo.UpdateAsync(anomalyContract);
// 更新财务账单
var bill = await _billRepo.GetByContractIdAsync(id);
if (bill == null)
{
return ResponseBase<EmptyResponse>.BadRequest('财务账单不存在');
}
bill.Status = request.Passed ? BillStatus.Passed : BillStatus.Rejected;
await _billRepo.UpdateAsync(bill);
return ResponseBase<EmptyResponse>.Success();
}
/// <summary>
/// 创建一笔财务账单
/// </summary>
/// <param name='session'></param>
/// <param name='request'></param>
/// <returns></returns>
[HttpPost]
[ModuleAuthorization("CRM")]
public async Task<ResponseBase<EmptyResponse>> CreateFinanceBill(string session, [FromBody] FinanceBillCreateRequest request)
{
if (request == null)
{
return ResponseBase<EmptyResponse>.BadRequest('请求参数错误');
}
// 验证登录态
var user = _auth.GetCurrentUser(session);
if (user == null)
{
return ResponseBase<EmptyResponse>.Unauthorized();
}
// 检查客户
var customer = await _customerRepo.GetByIdAsync(request.CustomerId);
if (customer == null)
{
return ResponseBase<EmptyResponse>.BadRequest('客户不存在');
}
// 创建财务账单
var bill = new Bill
{
CustomerId = request.CustomerId,
ContractId = request.ContractId,
Amount = request.Amount,
BusinessType = request.BusinessType,
Status = BillStatus.Pending,
CreatedById = user.Id,
CreatedOn = DateTime.Now
};
await _billRepo.InsertAsync(bill);
return ResponseBase<EmptyResponse>.Success();
}
/// <summary>
/// 审核财务账单
/// </summary>
/// <param name='session'></param>
/// <param name='id'></param>
/// <param name='request'></param>
/// <returns></returns>
[HttpPost('{id}/audit')]
[ModuleAuthorization("CRM")]
public async Task<ResponseBase<EmptyResponse>> AuditFinanceBill(string session, int id, [FromBody] FinanceBillAuditRequest request)
{
if (request == null)
{
return ResponseBase<EmptyResponse>.BadRequest('请求参数错误');
}
// 验证登录态
var user = _auth.GetCurrentUser(session);
if (user == null)
{
return ResponseBase<EmptyResponse>.Unauthorized();
}
// 检查财务账单
var bill = await _billRepo.GetByIdAsync(id);
if (bill == null)
{
return ResponseBase<EmptyResponse>.BadRequest('财务账单不存在');
}
// 审核
bill.AuditedById = user.Id;
bill.AuditedOn = DateTime.Now;
bill.Status = request.Passed ? BillStatus.Passed : BillStatus.Rejected;
await _billRepo.UpdateAsync(bill);
return ResponseBase<EmptyResponse>.Success();
}
/// <summary>
/// 根据ID获取异常合同
/// </summary>
/// <param name='session'></param>
/// <param name='id'></param>
/// <returns></returns>
[HttpGet('{id}')]
[ModuleAuthorization("CRM")]
public async Task<ResponseBase<AnomalyContractResponse>> GetAnomalyContractById(string session, int id)
{
// 验证登
原文地址: https://www.cveoy.top/t/topic/lgCh 著作权归作者所有。请勿转载和采集!