mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 16:13:26 +08:00
【新增】增加易联云小票打印机后台配置表【CoreCmsPrinter】,取消使用配置文件配置,并且支持多台打印机绑定不同门店,实现不同门店不同打印机打单。
This commit is contained in:
@@ -12,7 +12,7 @@ using InitQ.Attributes;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using SqlSugar;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 售后审核通过后对积分的返还处理
|
||||
@@ -13,7 +13,7 @@ using InitQ.Attributes;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 售后审核通过后处理
|
||||
@@ -19,7 +19,7 @@ using InitQ.Abstractions;
|
||||
using InitQ.Attributes;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 支付宝支付成功后推送到接口进行数据处理
|
||||
@@ -8,7 +8,6 @@
|
||||
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.0.12" />
|
||||
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.12" />
|
||||
<PackageReference Include="InitQ" Version="1.0.0.12" />
|
||||
<PackageReference Include="Qc.YilianyunSdk" Version="1.0.7" />
|
||||
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.15.0" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ using InitQ.Abstractions;
|
||||
using InitQ.Attributes;
|
||||
using NLog;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
public class DemoSubscribe : IRedisSubscribe
|
||||
{
|
||||
@@ -22,7 +22,7 @@ using InitQ.Abstractions;
|
||||
using InitQ.Attributes;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 消息推送
|
||||
@@ -14,7 +14,7 @@ using InitQ.Attributes;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 订单完结后走代理或分销商提成处理
|
||||
@@ -16,7 +16,7 @@ using InitQ.Attributes;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 门店订单自动发货
|
||||
@@ -13,7 +13,7 @@ using InitQ.Attributes;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 订单完成时,结算该订单
|
||||
266
CoreCms.Net.RedisMQ/OrderPrintSubscribe.cs
Normal file
266
CoreCms.Net.RedisMQ/OrderPrintSubscribe.cs
Normal file
@@ -0,0 +1,266 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using CoreCms.Net.Configuration;
|
||||
using CoreCms.Net.IServices;
|
||||
using CoreCms.Net.Loging;
|
||||
using CoreCms.Net.Model.Entities;
|
||||
using CoreCms.Net.Model.ViewModels.YiLianYun;
|
||||
using CoreCms.Net.Utility.Helper;
|
||||
using Flurl.Http;
|
||||
using InitQ.Abstractions;
|
||||
using InitQ.Attributes;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
public class OrderPrintSubscribe : IRedisSubscribe
|
||||
{
|
||||
private readonly ICoreCmsOrderItemServices _orderItemServices;
|
||||
private readonly ICoreCmsAreaServices _areaServices;
|
||||
private readonly ICoreCmsPrinterServices _coreCmsPrinterServices;
|
||||
|
||||
|
||||
public OrderPrintSubscribe(ICoreCmsOrderItemServices orderItemServices, ICoreCmsAreaServices areaServices, ICoreCmsPrinterServices coreCmsPrinterServices)
|
||||
{
|
||||
_orderItemServices = orderItemServices;
|
||||
_areaServices = areaServices;
|
||||
_coreCmsPrinterServices = coreCmsPrinterServices;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 订单打印队列
|
||||
/// </summary>
|
||||
/// <param name="msg"></param>
|
||||
/// <returns></returns>
|
||||
[Subscribe(RedisMessageQueueKey.OrderPrint)]
|
||||
private async Task OrderPrint(string msg)
|
||||
{
|
||||
try
|
||||
{
|
||||
var order = JsonConvert.DeserializeObject<CoreCmsOrder>(msg);
|
||||
if (order == null)
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单打印队列", "订单获取失败");
|
||||
return;
|
||||
}
|
||||
CoreCmsPrinter model = null;
|
||||
if (order.storeId > 0)
|
||||
{
|
||||
model = await _coreCmsPrinterServices.QueryByClauseAsync(p => p.storeId == order.storeId && p.isOpen == true, true, true);
|
||||
}
|
||||
model ??= await _coreCmsPrinterServices.QueryByClauseAsync(p => p.isDefault == true && p.isOpen == true, true, true);
|
||||
|
||||
if (model == null)
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单打印队列", "打印机获取失败");
|
||||
return;
|
||||
}
|
||||
|
||||
var isNeedToken = false;
|
||||
if (string.IsNullOrEmpty(model.accessToken) || model.expiressEndTime == null)
|
||||
{
|
||||
isNeedToken = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//判断是否过期
|
||||
var dt = DateTime.Now;
|
||||
if (dt >= model.expiressEndTime)
|
||||
{
|
||||
var ts = dt - Convert.ToDateTime(model.expiressEndTime);
|
||||
if (ts.Days > 35)
|
||||
{
|
||||
isNeedToken = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
RefreshYiLianYunToken refreshToken = new RefreshYiLianYunToken
|
||||
{
|
||||
client_id = model.clientId,
|
||||
grant_type = "client_credentials",
|
||||
timestamp = CommonHelper.GetDateTimeStamp(DateTime.Now),
|
||||
scope = "all",
|
||||
id = Guid.NewGuid().ToString()
|
||||
};
|
||||
refreshToken.sign = CommonHelper.Md5For32((refreshToken.client_id + refreshToken.timestamp + model.clientSecret).ToLowerInvariant()).ToLowerInvariant();
|
||||
var resultData = await YiLianYunConfig.AuthUrl.PostJsonAsync(refreshToken).ReceiveJson<YiLianYunAuthResult>();
|
||||
//将获取到的数据存入数据库
|
||||
if (resultData.error == "0")
|
||||
{
|
||||
model.accessToken = resultData.body.access_token;
|
||||
model.refreshToken = resultData.body.refresh_token;
|
||||
model.expiresIn = resultData.body.expires_in;
|
||||
model.expiressEndTime = DateTime.Now.AddSeconds(resultData.body.expires_in);
|
||||
|
||||
await _coreCmsPrinterServices.UpdateAsync(
|
||||
p => new CoreCmsPrinter()
|
||||
{
|
||||
accessToken = resultData.body.access_token,
|
||||
refreshToken = resultData.body.refresh_token,
|
||||
expiresIn = resultData.body.expires_in,
|
||||
expiressEndTime = model.expiressEndTime,
|
||||
parameters = JsonConvert.SerializeObject(resultData.body)
|
||||
}, p => p.clientId == model.clientId && p.clientSecret == model.clientSecret, true);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单打印队列", "刷新AccessToken:" + resultData.error_description);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isNeedToken)
|
||||
{
|
||||
var getToken = new YiLianYunParam
|
||||
{
|
||||
client_id = model.clientId,
|
||||
grant_type = "client_credentials",
|
||||
timestamp = CommonHelper.GetDateTimeStamp(DateTime.Now),
|
||||
scope = "all",
|
||||
id = Guid.NewGuid().ToString()
|
||||
};
|
||||
getToken.sign = CommonHelper.Md5For32((getToken.client_id + getToken.timestamp + model.clientSecret).ToLowerInvariant()).ToLowerInvariant();
|
||||
|
||||
var resultData = await YiLianYunConfig.AuthUrl.PostJsonAsync(getToken).ReceiveJson<YiLianYunAuthResult>();
|
||||
//将获取到的数据存入数据库
|
||||
if (resultData.error == "0")
|
||||
{
|
||||
model.accessToken = resultData.body.access_token;
|
||||
model.refreshToken = resultData.body.refresh_token;
|
||||
model.expiresIn = resultData.body.expires_in;
|
||||
model.expiressEndTime = DateTime.Now.AddSeconds(resultData.body.expires_in);
|
||||
|
||||
await _coreCmsPrinterServices.UpdateAsync(
|
||||
p => new CoreCmsPrinter()
|
||||
{
|
||||
accessToken = resultData.body.access_token,
|
||||
refreshToken = resultData.body.refresh_token,
|
||||
expiresIn = resultData.body.expires_in,
|
||||
expiressEndTime = model.expiressEndTime,
|
||||
parameters = JsonConvert.SerializeObject(resultData.body)
|
||||
}, p => p.clientId == model.clientId && p.clientSecret == model.clientSecret, true);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单打印队列", "获取AccessToken:" + resultData.error_description);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//获取打印机是否在线
|
||||
var statusParam = new GetPrintStatusParam
|
||||
{
|
||||
client_id = model.clientId,
|
||||
access_token = model.accessToken,
|
||||
machine_code = model.machineCode,
|
||||
timestamp = CommonHelper.GetDateTimeStamp(DateTime.Now),
|
||||
id = Guid.NewGuid().ToString()
|
||||
};
|
||||
statusParam.sign = CommonHelper.Md5For32((statusParam.client_id + statusParam.timestamp + model.clientSecret).ToLowerInvariant()).ToLowerInvariant();
|
||||
|
||||
var getPrintStatusResult = await YiLianYunConfig.GetPrintStatusUrl.PostJsonAsync(statusParam).ReceiveJson<YiLianYunGetPrintStatusResult>();
|
||||
if (getPrintStatusResult.error != "0")
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单打印队列", "获取打印机在线状态:" + getPrintStatusResult.error_description);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (getPrintStatusResult.body.state)
|
||||
{
|
||||
case "0":
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单打印队列", "获取打印机在线状态:机器未在线");
|
||||
return;
|
||||
case "2":
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单打印队列", "机器缺纸");
|
||||
return;
|
||||
}
|
||||
|
||||
var payStr = EnumHelper.GetEnumDescriptionByKey<GlobalEnumVars.PaymentsTypes>(order.paymentCode);
|
||||
var items = await _orderItemServices.QueryListByClauseAsync(p => p.orderId == order.orderId);
|
||||
var areas = await _areaServices.GetAreaFullName(order.shipAreaId);
|
||||
order.shipAreaName = areas.status ? areas.data + "" : "";
|
||||
|
||||
var receiptType = order.receiptType switch
|
||||
{
|
||||
(int)GlobalEnumVars.OrderReceiptType.IntraCityService => "同城配送",
|
||||
(int)GlobalEnumVars.OrderReceiptType.Logistics => "物流快递",
|
||||
(int)GlobalEnumVars.OrderReceiptType.SelfDelivery => "门店自提",
|
||||
_ => string.Empty
|
||||
};
|
||||
|
||||
var printStr = new StringBuilder();
|
||||
printStr.Append("<center>--" + receiptType + "订单--</center>\r");
|
||||
printStr.Append("................................\r");
|
||||
printStr.Append("<center>--" + payStr + "--</center>\r");
|
||||
printStr.Append("下单时间:" + order.createTime.ToString("yyyy-MM-dd HH:mm:ss") + "\r");
|
||||
printStr.Append("订单编号:" + order.orderId + "\r");
|
||||
printStr.Append("**************商品**************\r");
|
||||
printStr.Append("<center>--购买明细--</center>\r");
|
||||
|
||||
if (items != null && items.Any())
|
||||
{
|
||||
foreach (var item in items)
|
||||
{
|
||||
printStr.Append(item.name + "*" + item.nums + "\r");
|
||||
}
|
||||
}
|
||||
//printStr.Append("<center>--其他消费--</center>\r");
|
||||
//printStr.Append("餐盒 1 2\r");
|
||||
printStr.Append("................................\r");
|
||||
printStr.Append("积分抵扣:¥" + order.pointMoney + "\r");
|
||||
printStr.Append("订单优惠:¥" + order.orderDiscountAmount + "\r");
|
||||
printStr.Append("商品优惠:¥" + order.goodsDiscountAmount + "\r");
|
||||
printStr.Append("优惠券:¥" + order.couponDiscountAmount + "\r");
|
||||
printStr.Append("总价:¥" + order.orderAmount + "\r");
|
||||
printStr.Append("*******************************\r");
|
||||
printStr.Append("区域:" + order.shipAreaName + "\r");
|
||||
printStr.Append("地址:" + order.shipAddress + "\r");
|
||||
printStr.Append("联系:" + order.shipName + " " + order.shipMobile + "\r");
|
||||
printStr.Append("***************完结*************\r");
|
||||
|
||||
//小票打印
|
||||
WordPrintRespone wordPrintRespone = new WordPrintRespone
|
||||
{
|
||||
client_id = model.clientId,
|
||||
access_token = model.accessToken,
|
||||
machine_code = model.machineCode,
|
||||
content = printStr.ToString(),
|
||||
origin_id = order.orderId,
|
||||
timestamp = CommonHelper.GetDateTimeStamp(DateTime.Now)
|
||||
};
|
||||
wordPrintRespone.sign = CommonHelper
|
||||
.Md5For32((wordPrintRespone.client_id + wordPrintRespone.timestamp + model.clientSecret)
|
||||
.ToLowerInvariant()).ToLowerInvariant();
|
||||
wordPrintRespone.id = Guid.NewGuid().ToString();
|
||||
|
||||
//打印文本:缺少参数!请检查参数信息!!或更改下请求头:Content-Type:application/x-www-form-urlencoded
|
||||
var resultData = await YiLianYunConfig.PrintTextUrl
|
||||
.WithHeader("Content-Type", "application/x-www-form-urlencoded")
|
||||
.PostUrlEncodedAsync(wordPrintRespone).ReceiveJson<YiLianYunGetPrintTextResult>();
|
||||
//当token返回失败时
|
||||
if (resultData.error != "0")
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单打印队列", "打印文本:" + resultData.error_description);
|
||||
}
|
||||
else
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单打印队列", "打印文本:打印成功");
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.RedisMessageQueue, "订单打印队列", msg, ex);
|
||||
}
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ using Newtonsoft.Json.Linq;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api.Models;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 微信模板消息【小程序,公众号都走这里】
|
||||
@@ -1,226 +0,0 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using CoreCms.Net.Configuration;
|
||||
using CoreCms.Net.IServices;
|
||||
using CoreCms.Net.Loging;
|
||||
using CoreCms.Net.Model.Entities;
|
||||
using CoreCms.Net.Utility.Helper;
|
||||
using InitQ.Abstractions;
|
||||
using InitQ.Attributes;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using Qc.YilianyunSdk;
|
||||
using LogLevel = NLog.LogLevel;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
{
|
||||
public class OrderPrintSubscribe : IRedisSubscribe
|
||||
{
|
||||
private readonly YilianyunService _yilianyunService;
|
||||
private readonly ICoreCmsApiAccessTokenServices _accessTokenServices;
|
||||
private readonly ICoreCmsOrderItemServices _orderItemServices;
|
||||
private readonly ICoreCmsAreaServices _areaServices;
|
||||
|
||||
private readonly string _machineCode = AppSettingsConstVars.YiLianYunConfigMachineCode; //设备号
|
||||
private readonly string _msign = AppSettingsConstVars.YiLianYunConfigMsign;// 终端密钥
|
||||
private readonly string _printerName = AppSettingsConstVars.YiLianYunConfigPrinterName; // 打印机名称
|
||||
private readonly string _phone = AppSettingsConstVars.YiLianYunConfigPhone; //手机卡号
|
||||
private readonly bool _enabled = AppSettingsConstVars.YiLianYunConfigEnabled; //是否开启
|
||||
|
||||
|
||||
public OrderPrintSubscribe(YilianyunService yilianyunService, ICoreCmsApiAccessTokenServices accessTokenServices, ICoreCmsOrderItemServices orderItemServices, ICoreCmsAreaServices areaServices)
|
||||
{
|
||||
_yilianyunService = yilianyunService;
|
||||
_accessTokenServices = accessTokenServices;
|
||||
_orderItemServices = orderItemServices;
|
||||
_areaServices = areaServices;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 订单打印队列
|
||||
/// </summary>
|
||||
/// <param name="msg"></param>
|
||||
/// <returns></returns>
|
||||
[Subscribe(RedisMessageQueueKey.OrderPrint)]
|
||||
private async Task OrderPrint(string msg)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (_enabled == false)
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单打印队列", "打印机未开启");
|
||||
return;
|
||||
}
|
||||
var order = JsonConvert.DeserializeObject<CoreCmsOrder>(msg);
|
||||
if (order == null)
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单打印队列", "订单获取失败");
|
||||
return;
|
||||
}
|
||||
|
||||
var accessModel = await _accessTokenServices.QueryByClauseAsync(p =>
|
||||
p.code == GlobalEnumVars.ThirdPartyEquipment.YiLianYun.ToString() && p.machineCode == _machineCode);
|
||||
string accessToken;
|
||||
if (accessModel == null)
|
||||
{
|
||||
var onPostAuthTerminal = _yilianyunService.AuthTerminal(_machineCode, _msign, _phone, _printerName);
|
||||
if (onPostAuthTerminal.IsSuccess())
|
||||
{
|
||||
accessToken = onPostAuthTerminal.Body.Access_Token;
|
||||
|
||||
accessModel = new CoreCmsApiAccessToken();
|
||||
accessModel.code = GlobalEnumVars.ThirdPartyEquipment.YiLianYun.ToString();
|
||||
accessModel.name = EnumHelper.GetEnumDescriptionByKey<GlobalEnumVars.ThirdPartyEquipment>(GlobalEnumVars.ThirdPartyEquipment.YiLianYun.ToString());
|
||||
accessModel.machineCode = _machineCode;
|
||||
accessModel.accessToken = onPostAuthTerminal.Body.Access_Token;
|
||||
accessModel.refreshToken = onPostAuthTerminal.Body.Refresh_Token;
|
||||
accessModel.expiresIn = onPostAuthTerminal.Body.Expires_In != null ? Convert.ToInt32(onPostAuthTerminal.Body.Expires_In) : 0;
|
||||
accessModel.expiressEndTime = onPostAuthTerminal.Body.ExpiressEndTime;
|
||||
accessModel.parameters = JsonConvert.SerializeObject(onPostAuthTerminal.Body);
|
||||
accessModel.createTime = DateTime.Now;
|
||||
|
||||
await _accessTokenServices.InsertAsync(accessModel);
|
||||
}
|
||||
else
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.RedisMessageQueue, "易联云重新获取Token失败", JsonConvert.SerializeObject(onPostAuthTerminal));
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//判断是否过期
|
||||
var dt = DateTime.Now;
|
||||
if (dt >= accessModel.expiressEndTime)
|
||||
{
|
||||
var ts = dt - Convert.ToDateTime(accessModel.expiressEndTime);
|
||||
|
||||
if (ts.Days > 35)
|
||||
{
|
||||
|
||||
var onPostAuthTerminal = _yilianyunService.AuthTerminal(_machineCode, _msign, _phone, _printerName);
|
||||
if (onPostAuthTerminal.IsSuccess())
|
||||
{
|
||||
accessToken = onPostAuthTerminal.Body.Access_Token;
|
||||
|
||||
accessModel.code = GlobalEnumVars.ThirdPartyEquipment.YiLianYun.ToString();
|
||||
accessModel.name = EnumHelper.GetEnumDescriptionByKey<GlobalEnumVars.ThirdPartyEquipment>(GlobalEnumVars.ThirdPartyEquipment.YiLianYun.ToString());
|
||||
accessModel.machineCode = _machineCode;
|
||||
accessModel.accessToken = onPostAuthTerminal.Body.Access_Token;
|
||||
accessModel.refreshToken = onPostAuthTerminal.Body.Refresh_Token;
|
||||
accessModel.expiresIn = onPostAuthTerminal.Body.Expires_In != null ? Convert.ToInt32(onPostAuthTerminal.Body.Expires_In) : 0;
|
||||
accessModel.expiressEndTime = onPostAuthTerminal.Body.ExpiressEndTime;
|
||||
accessModel.parameters = JsonConvert.SerializeObject(onPostAuthTerminal.Body);
|
||||
accessModel.createTime = DateTime.Now;
|
||||
|
||||
await _accessTokenServices.UpdateAsync(accessModel);
|
||||
}
|
||||
else
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.RedisMessageQueue, "易联云重新获取Token失败", JsonConvert.SerializeObject(onPostAuthTerminal));
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var result = _yilianyunService.RefreshToken(accessModel.machineCode, accessModel.refreshToken);
|
||||
if (result.IsSuccess())
|
||||
{
|
||||
accessToken = result.Body.Access_Token;
|
||||
|
||||
accessModel.accessToken = result.Body.Access_Token;
|
||||
accessModel.refreshToken = result.Body.Refresh_Token;
|
||||
accessModel.expiresIn = result.Body.Expires_In != null ? Convert.ToInt32(result.Body.Expires_In) : 0;
|
||||
accessModel.expiressEndTime = result.Body.ExpiressEndTime;
|
||||
await _accessTokenServices.UpdateAsync(accessModel);
|
||||
}
|
||||
else
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.RedisMessageQueue, "易联云更新Token失败", JsonConvert.SerializeObject(result));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
accessToken = accessModel.accessToken;
|
||||
}
|
||||
}
|
||||
//获取打印机是否在线
|
||||
var printerStatus = string.Empty;
|
||||
var resultOnline = _yilianyunService.PrinterGetStatus(accessModel.accessToken, accessModel.machineCode);
|
||||
if (resultOnline.IsSuccess())
|
||||
{
|
||||
printerStatus = resultOnline.Body.State.ToString();
|
||||
}
|
||||
if (printerStatus == "在线")
|
||||
{
|
||||
var payStr = EnumHelper.GetEnumDescriptionByKey<GlobalEnumVars.PaymentsTypes>(order.paymentCode);
|
||||
var items = await _orderItemServices.QueryListByClauseAsync(p => p.orderId == order.orderId);
|
||||
var areas = await _areaServices.GetAreaFullName(order.shipAreaId);
|
||||
order.shipAreaName = areas.status ? areas.data + "" : "";
|
||||
|
||||
var receiptType = string.Empty;
|
||||
if (order.receiptType == (int)GlobalEnumVars.OrderReceiptType.IntraCityService)
|
||||
{
|
||||
receiptType = "同城配送";
|
||||
}
|
||||
else if (order.receiptType == (int)GlobalEnumVars.OrderReceiptType.Logistics)
|
||||
{
|
||||
receiptType = "物流快递";
|
||||
}
|
||||
else if (order.receiptType == (int)GlobalEnumVars.OrderReceiptType.SelfDelivery)
|
||||
{
|
||||
receiptType = "门店自提";
|
||||
}
|
||||
|
||||
var printStr = new StringBuilder();
|
||||
printStr.Append("<center>--" + receiptType + "订单--</center>\r");
|
||||
printStr.Append("................................\r");
|
||||
printStr.Append("<center>--" + payStr + "--</center>\r");
|
||||
printStr.Append("下单时间:" + order.createTime.ToString("yyyy-MM-dd HH:mm:ss") + "\r");
|
||||
printStr.Append("订单编号:" + order.orderId + "\r");
|
||||
printStr.Append("**************商品**************\r");
|
||||
printStr.Append("<center>--购买明细--</center>\r");
|
||||
|
||||
if (items != null && items.Any())
|
||||
{
|
||||
foreach (var item in items)
|
||||
{
|
||||
printStr.Append(item.name + "*" + item.nums + "\r");
|
||||
}
|
||||
}
|
||||
//printStr.Append("<center>--其他消费--</center>\r");
|
||||
//printStr.Append("餐盒 1 2\r");
|
||||
printStr.Append("................................\r");
|
||||
printStr.Append("积分抵扣:¥" + order.pointMoney + "\r");
|
||||
printStr.Append("订单优惠:¥" + order.orderDiscountAmount + "\r");
|
||||
printStr.Append("商品优惠:¥" + order.goodsDiscountAmount + "\r");
|
||||
printStr.Append("优惠券:¥" + order.couponDiscountAmount + "\r");
|
||||
printStr.Append("总价:¥" + order.orderAmount + "\r");
|
||||
printStr.Append("*******************************\r");
|
||||
printStr.Append("区域:" + order.shipAreaName + "\r");
|
||||
printStr.Append("地址:" + order.shipAddress + "\r");
|
||||
printStr.Append("联系:" + order.shipName + " " + order.shipMobile + "\r");
|
||||
printStr.Append("***************完结*************\r");
|
||||
var onPostPrintText = _yilianyunService.PrintText(accessToken, _machineCode, printStr.ToString());
|
||||
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Trace, LogType.RedisMessageQueue, "易联云打印结果", JsonConvert.SerializeObject(onPostPrintText));
|
||||
}
|
||||
else
|
||||
{
|
||||
NLogUtil.WriteAll(LogLevel.Trace, LogType.RedisMessageQueue, "易联云机器离线", JsonConvert.SerializeObject(resultOnline));
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.RedisMessageQueue, "订单打印队列", msg, ex);
|
||||
throw;
|
||||
}
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,7 @@ using Newtonsoft.Json;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api.Models;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 自定义交易组件-同步创建售后单
|
||||
@@ -24,7 +24,7 @@ using NLog;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api.Models;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 自定义交易组件-同步订单确认收货
|
||||
@@ -23,7 +23,7 @@ using Newtonsoft.Json;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api.Models;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 自定义交易组件-同步发货信息
|
||||
@@ -23,7 +23,7 @@ using Newtonsoft.Json;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api.Models;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 自定义交易组件-同步订单状态(弃用,新版已经取消了同步)
|
||||
@@ -21,7 +21,7 @@ using InitQ.Attributes;
|
||||
using Newtonsoft.Json;
|
||||
using SqlSugar;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户相关队列操作
|
||||
@@ -13,7 +13,7 @@ using InitQ.Attributes;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace CoreCms.Net.RedisMQ.Subscribe
|
||||
namespace CoreCms.Net.RedisMQ
|
||||
{
|
||||
/// <summary>
|
||||
/// 微信支付成功后推送到接口进行数据处理
|
||||
Reference in New Issue
Block a user