增加交易唯一码,方便在网络状态不佳的情况下重新获取操作结果

This commit is contained in:
qmj
2026-05-26 08:45:24 +08:00
parent 8208ba7488
commit 42e6579447
30 changed files with 2891 additions and 374 deletions
@@ -12,7 +12,6 @@ using UFIDA.U8.Framework.Api.ControlObject.Entity;
using UFIDA.U8.Framework.Api.ControlObject.Json;
using UFIDA.U8.Framework.Api.ControlObject.ST;
using UFIDA.U8.Framework.Api.ControlObject.U8M;
using UFIDA.U8.Framework.Api.Entity;
using UFIDA.U8.Framework.Api.Models;
using UFIDA.U8.Framework.Api.Unit;
// ReSharper disable StringLiteralTypo
@@ -45,22 +44,31 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// <param name="sAddedState">传空字符串</param>
/// <param name="bReMote">是否远程</param>
/// <param name="bVerify">是否生成时审核</param>
/// <param name="bVerify2"></param>
/// <param name="tradeid">请求ID</param>
/// <returns></returns>
[HttpPost]
[Route("api/U8/ST/{cCardNum}/Insert")]
public async Task<BaseResult<string>> Insert(string cAccId, string cCardNum, [FromBody] Dictionary<string, object> input, bool bCheck = true, bool bBeforCheckStock = true, bool bIsRedVouch = false, string sAddedState = "", bool bReMote = false, bool? bVerify = null, bool? bVerify2 = null)
public async Task<BaseResult<string>> Insert(string cAccId, string cCardNum, [FromBody] Dictionary<string, object> input, bool bCheck = true, bool bBeforCheckStock = true, bool bIsRedVouch = false, string sAddedState = "", bool bReMote = false, bool? bVerify = null, bool? bVerify2 = null, string tradeid = null)
{
try
{
if (Request.Headers.TryGetValues("userToken", out var values))
{
return await InsertToken(cCardNum, input, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote, bVerify);
return await InsertToken(cCardNum, input, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote, bVerify, bVerify2);
}
var db = CommUnit.GetDbClient();
var workId = SnowFlakeSingle.Instance.NextId();
if (string.IsNullOrWhiteSpace(tradeid))
{
tradeid = $"{workId}";
}
await CommUnit.SaveResult(tradeid, true);
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:新增,对接账套:{cAccId},数据:{input.ToJson()}");
//LoginParamter param;
@@ -250,13 +258,23 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var res = await co.Insert(baseLogin, input, cCardNum, voucherInfo.VoucherType, bGetCode, codeKey, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote, bVerify ?? voucherInfo.bVerify, voucherInfo.bPrintDom, bVerify2 ?? false);
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
var res = new BaseResult<string> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
}
@@ -272,10 +290,11 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// <param name="sAddedState">传空字符串</param>
/// <param name="bReMote">是否远程</param>
/// <param name="bVerify">是否生成时审核</param>
/// <param name="bVerify2"></param>
/// <returns></returns>
[HttpPost]
[Route("api/U8/ST/{cCardNum}/Insert/Token")]
public async Task<BaseResult<string>> InsertToken(string cCardNum, [FromBody] Dictionary<string, object> input, bool bCheck = true, bool bBeforCheckStock = true, bool bIsRedVouch = false, string sAddedState = "", bool bReMote = false, bool? bVerify = null, bool? bVerify2 = null)
public async Task<BaseResult<string>> InsertToken(string cCardNum, [FromBody] Dictionary<string, object> input, bool bCheck = true, bool bBeforCheckStock = true, bool bIsRedVouch = false, string sAddedState = "", bool bReMote = false, bool? bVerify = null, bool? bVerify2 = null, string tradeid = null)
{
try
{
@@ -283,7 +302,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
_logInfo.Debug($"当前接口:api/U8/ST/{cCardNum}/Insert/{userToken},参数:{input.ToJson()}");
var output = CommUnit.GetDecrypt(userToken).ToObject<LoginOutput>();
var output = CommUnit.GetDecrypt(userToken).ToObject<UserTokenInfo>();
var token = CommUnit.GetDecrypt(output.userToken);
@@ -291,28 +310,18 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
if (string.IsNullOrWhiteSpace(tradeid))
{
tradeid = $"{workId}";
}
await CommUnit.SaveResult(tradeid, true);
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:新增,对接账套:{output.cAccId},数据:{input.ToJson()}");
//LoginParamter param;
var baseLogin = new BaseLogin();
if (!_cache.TryGetValue($"U8_{userToken}_{output.cAccId}", out BaseLogin baseLogin))
{
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
baseLogin.Init(token, false, 5);
_cache.Clear();
_cache.Set($"U8_{userToken}_{output.cAccId}", baseLogin);
}
//else
//{
// param = await CommUnit.GetLoginParamter(cAccId);
//}
baseLogin.Init(output, false);
_logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
@@ -475,13 +484,25 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var res = await co.Insert(baseLogin, input, cCardNum, voucherInfo.VoucherType, bGetCode, codeKey, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote, bVerify ?? voucherInfo.bVerify, voucherInfo.bPrintDom, bVerify2 ?? false);
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
baseLogin.ShutDown();
return res;
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
var res = new BaseResult<string> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
}
@@ -719,7 +740,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// <exception cref="Exception"></exception>
[HttpGet]
[Route("api/U8/ST/{cCardNum}/Verify/Code")]
public async Task<BaseResult<string>> Verify(string cAccId, string cCardNum, string cCode, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
public async Task<BaseResult<string>> Verify(string cAccId, string cCardNum, string cCode, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false, string tradeid = null)
{
try
{
@@ -727,6 +748,13 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
if (string.IsNullOrWhiteSpace(tradeid))
{
tradeid = $"{workId}";
}
await CommUnit.SaveResult(tradeid, true);
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:审核,对接账套:{cAccId},单号:{cCode}");
//LoginParamter param;
@@ -761,13 +789,25 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var co = new USERPCO();
return await co.Verify(baseLogin, cCardNum, voucherInfo.VoucherType, cCode, bCheck, bBeforCheckStock, bList);
var res = await co.Verify(baseLogin, cCardNum, voucherInfo.VoucherType, cCode, bCheck, bBeforCheckStock, bList);
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "审核失败", result = ex.Message };
var res = new BaseResult<string> { bSuccess = false, message = "审核失败", result = ex.Message };
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
}
@@ -784,7 +824,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// <exception cref="Exception"></exception>
[HttpGet]
[Route("api/U8/ST/{cCardNum}/Verify/ID")]
public async Task<BaseResult<string>> Verify(string cAccId, string cCardNum, long voucherId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
public async Task<BaseResult<string>> Verify(string cAccId, string cCardNum, long voucherId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false, string tradeid = null)
{
try
{
@@ -792,6 +832,13 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
if (string.IsNullOrWhiteSpace(tradeid))
{
tradeid = $"{workId}";
}
await CommUnit.SaveResult(tradeid, true);
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:审核,对接账套:{cAccId},ID:{voucherId}");
//LoginParamter param;
@@ -826,13 +873,25 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var co = new USERPCO();
return await co.Verify(baseLogin, cCardNum, voucherInfo.VoucherType, voucherId, bCheck, bBeforCheckStock, bList);
var res = await co.Verify(baseLogin, cCardNum, voucherInfo.VoucherType, voucherId, bCheck, bBeforCheckStock, bList);
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "审核失败", result = ex.Message };
var res = new BaseResult<string> { bSuccess = false, message = "审核失败", result = ex.Message };
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
}
@@ -953,7 +1012,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// <exception cref="Exception"></exception>
[HttpGet]
[Route("api/U8/ST/{cCardNum}/UnVerify/Code")]
public async Task<BaseResult<string>> UnVerify(string cAccId, string cCardNum, string cCode, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
public async Task<BaseResult<string>> UnVerify(string cAccId, string cCardNum, string cCode, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false, string tradeid = null)
{
try
{
@@ -961,6 +1020,13 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
if (string.IsNullOrWhiteSpace(tradeid))
{
tradeid = $"{workId}";
}
await CommUnit.SaveResult(tradeid, true);
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{cAccId},单号:{cCode}");
//LoginParamter param;
@@ -995,13 +1061,25 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var co = new USERPCO();
return await co.UnVerify(baseLogin, cCardNum, voucherInfo.VoucherType, cCode, bCheck, bBeforCheckStock, bList);
var res = await co.UnVerify(baseLogin, cCardNum, voucherInfo.VoucherType, cCode, bCheck, bBeforCheckStock, bList);
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "弃审失败", result = ex.Message };
var res = new BaseResult<string> { bSuccess = false, message = "弃审失败", result = ex.Message };
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
}
@@ -1019,7 +1097,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// <exception cref="Exception"></exception>
[HttpGet]
[Route("api/U8/ST/{cCardNum}/UnVerify/ID")]
public async Task<BaseResult<string>> UnVerify(string cAccId, string cCardNum, long voucherId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
public async Task<BaseResult<string>> UnVerify(string cAccId, string cCardNum, long voucherId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false, string tradeid = null)
{
try
{
@@ -1027,6 +1105,13 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
if (string.IsNullOrWhiteSpace(tradeid))
{
tradeid = $"{workId}";
}
await CommUnit.SaveResult(tradeid, true);
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{cAccId},ID:{voucherId}");
//LoginParamter param;
@@ -1061,13 +1146,25 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var co = new USERPCO();
return await co.UnVerify(baseLogin, cCardNum, voucherInfo.VoucherType, voucherId, bCheck, bBeforCheckStock, bList);
var res = await co.UnVerify(baseLogin, cCardNum, voucherInfo.VoucherType, voucherId, bCheck, bBeforCheckStock, bList);
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "弃审失败", result = ex.Message };
var res = new BaseResult<string> { bSuccess = false, message = "弃审失败", result = ex.Message };
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
}
@@ -1188,7 +1285,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// <exception cref="Exception"></exception>
[HttpGet]
[Route("api/U8/ST/{cCardNum}/Delete/Code")]
public async Task<BaseResult<string>> Delete(string cAccId, string cCardNum, string cCode, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
public async Task<BaseResult<string>> Delete(string cAccId, string cCardNum, string cCode, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false, string tradeid = null)
{
try
{
@@ -1196,6 +1293,13 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
if (string.IsNullOrWhiteSpace(tradeid))
{
tradeid = $"{workId}";
}
await CommUnit.SaveResult(tradeid, true);
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{cAccId},单号:{cCode}");
//LoginParamter param;
@@ -1230,13 +1334,25 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var co = new USERPCO();
return await co.Delete(baseLogin, cCardNum, voucherInfo.VoucherType, cCode, bCheck, bBeforCheckStock, bList);
var res = await co.Delete(baseLogin, cCardNum, voucherInfo.VoucherType, cCode, bCheck, bBeforCheckStock, bList);
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "删除失败", result = ex.Message };
var res = new BaseResult<string> { bSuccess = false, message = "删除失败", result = ex.Message };
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
}
@@ -1254,7 +1370,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// <exception cref="Exception"></exception>
[HttpGet]
[Route("api/U8/ST/{cCardNum}/Delete/ID")]
public async Task<BaseResult<string>> Delete(string cAccId, string cCardNum, long voucherId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false)
public async Task<BaseResult<string>> Delete(string cAccId, string cCardNum, long voucherId, bool bCheck = true, bool bBeforCheckStock = true, bool bList = false, string tradeid = null)
{
try
{
@@ -1262,6 +1378,13 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
if (string.IsNullOrWhiteSpace(tradeid))
{
tradeid = $"{workId}";
}
await CommUnit.SaveResult(tradeid, true);
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{cAccId},ID:{voucherId}");
//LoginParamter param;
@@ -1296,13 +1419,25 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var co = new USERPCO();
return await co.UnVerify(baseLogin, cCardNum, voucherInfo.VoucherType, voucherId, bCheck, bBeforCheckStock, bList);
var res = await co.UnVerify(baseLogin, cCardNum, voucherInfo.VoucherType, voucherId, bCheck, bBeforCheckStock, bList);
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "删除失败", result = ex.Message };
var res = new BaseResult<string> { bSuccess = false, message = "删除失败", result = ex.Message };
res.tradeid = tradeid;
await CommUnit.SaveResult(tradeid, false, res);
return res;
}
}