修改
This commit is contained in:
@ -21,6 +21,10 @@ public interface IJournalPageService: IBaseService<JournalPage>
|
|||||||
|
|
||||||
Task<JournalPageV2Output> DetailAsync(long id);
|
Task<JournalPageV2Output> DetailAsync(long id);
|
||||||
Task<bool> DeleteAsync(long id);
|
Task<bool> DeleteAsync(long id);
|
||||||
|
/// <summary>
|
||||||
//Task<List<JournalPageNoArticleOutput>> PageNoArticleAsync(long id);
|
/// 回调接口-自动铺码, 书页铺码后回调接口,更新书页的点阵码
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bookPagePrintDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<bool> CallbackPageUpdatePageNo(JournalPagePrintDto journalPagePrintDto);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,11 @@ namespace QYZH.InteractiveMagazine.Models.Enum;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public enum PetTemplateTypeEnum
|
public enum PetTemplateTypeEnum
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 默认
|
||||||
|
/// </summary>
|
||||||
|
[Description("默认")]
|
||||||
|
Default = 0,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 普通
|
/// 普通
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -1,7 +1,10 @@
|
|||||||
|
|
||||||
|
using Aliyun.Acs.Core.Logging;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using QYZH.InteractiveMagazine.Common.Extensions;
|
using QYZH.InteractiveMagazine.Common.Extensions;
|
||||||
|
using QYZH.InteractiveMagazine.Common.Helpers;
|
||||||
using QYZH.InteractiveMagazine.Infrastructure.OSS;
|
using QYZH.InteractiveMagazine.Infrastructure.OSS;
|
||||||
using QYZH.InteractiveMagazine.Infrastructure.RabbitMQ;
|
using QYZH.InteractiveMagazine.Infrastructure.RabbitMQ;
|
||||||
using QYZH.InteractiveMagazine.IService;
|
using QYZH.InteractiveMagazine.IService;
|
||||||
@ -11,6 +14,7 @@ using QYZH.InteractiveMagazine.Models.Entity;
|
|||||||
using QYZH.InteractiveMagazine.Models.Enum;
|
using QYZH.InteractiveMagazine.Models.Enum;
|
||||||
using QYZH.InteractiveMagazine.Repository;
|
using QYZH.InteractiveMagazine.Repository;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Net;
|
||||||
using Yitter.IdGenerator;
|
using Yitter.IdGenerator;
|
||||||
|
|
||||||
namespace QYZH.InteractiveMagazine.Service;
|
namespace QYZH.InteractiveMagazine.Service;
|
||||||
@ -20,6 +24,8 @@ public class JournalPageService(BaseRepository<Journal> JournalRepository,
|
|||||||
IHttpClientFactory httpClientFactory,
|
IHttpClientFactory httpClientFactory,
|
||||||
IConfiguration configuration,
|
IConfiguration configuration,
|
||||||
IRabbitMQService rabbitMqService,
|
IRabbitMQService rabbitMqService,
|
||||||
|
ILogger<AiBasePromptService> logger,
|
||||||
|
BaseRepository<JournalPage> JournalPageRepository,
|
||||||
BaseRepository<JournalPageTask> JournalPageTaskRepository,
|
BaseRepository<JournalPageTask> JournalPageTaskRepository,
|
||||||
BaseRepository<JournalPageTaskAnswer> JournalPageTaskAnswerRepository) : BaseRepository<JournalPage>, IJournalPageService
|
BaseRepository<JournalPageTaskAnswer> JournalPageTaskAnswerRepository) : BaseRepository<JournalPage>, IJournalPageService
|
||||||
{
|
{
|
||||||
@ -108,10 +114,87 @@ public class JournalPageService(BaseRepository<Journal> JournalRepository,
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<bool> UpdatePageNoAsync(long JournalId)
|
public async Task<bool> UpdatePageNoAsync(long JournalId)
|
||||||
{
|
{
|
||||||
var msRes = await rabbitMqService.SendAsync(new RabbitMQSendParam { Exchange = "ex.journal", Queue = "mq.journal.dotcode.auto", RoutingKey = "rk.journal.dotcode.auto", Data = JournalId });//发生消息
|
var journalEntity = await JournalRepository.Queryable().FirstAsync(w => w.Id == JournalId);
|
||||||
|
BusinessException.ThrowIf(journalEntity == null, "不存在此期刊");
|
||||||
|
|
||||||
|
//如果书籍状态不等于“已归档”,“已废弃”,“已铺码”的情况下,就更新状态为“已铺码”
|
||||||
|
BusinessException.ThrowIf((JournalStatusEnum)journalEntity.Status is JournalStatusEnum.Abandoned or JournalStatusEnum.Archive or JournalStatusEnum.Codeing, "当前【状态】不允许铺码");
|
||||||
|
|
||||||
|
var journalPageList = await JournalPageRepository.Queryable().Where(x => x.JournalId == JournalId).OrderBy(x => x.PageNum).ToListAsync();
|
||||||
|
BusinessException.ThrowIf(journalPageList.Count == 0, "此期刊不存在任何书页");
|
||||||
|
|
||||||
|
var uploadPdfUrl = DomainHelper.OssFullUrl(journalEntity?.PdfUrl!);
|
||||||
|
BusinessException.ThrowIf(string.IsNullOrWhiteSpace(uploadPdfUrl), "此期刊上传的PDF路径错误,请检查期刊PDF文件是否上传成功");
|
||||||
|
|
||||||
|
logger.LogInformation("uploadPdfUrl:" + uploadPdfUrl);
|
||||||
|
//验证是否上传了PDF文件
|
||||||
|
var response = await httpClientFactory.CreateClient().SendAsync(new HttpRequestMessage(HttpMethod.Head, uploadPdfUrl));
|
||||||
|
BusinessException.ThrowIf(response.StatusCode != HttpStatusCode.OK, "获取期刊上传的PDF文件失败,请检查PDF文件是否上传成功");
|
||||||
|
|
||||||
|
journalEntity.Status = (int)JournalStatusEnum.Codeing;
|
||||||
|
|
||||||
|
await JournalRepository.Updateable(journalEntity).UpdateColumns(x => new { x.Status, x.UpdatedAt }).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
var data = new JournalPagePrintDto
|
||||||
|
{
|
||||||
|
JournalId = JournalId,
|
||||||
|
JournalPdfUrl = uploadPdfUrl,
|
||||||
|
PageNum = [.. journalPageList.Select(x => x.PageNum)]
|
||||||
|
};
|
||||||
|
var msRes = await rabbitMqService.SendAsync(new RabbitMQSendParam { Exchange = "ex.journal", Queue = "mq.journal.dotcode.auto", RoutingKey = "rk.journal.dotcode.auto", Data = data });//发生消息
|
||||||
return msRes;
|
return msRes;
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 回调接口-自动铺码, 书页铺码后回调接口,更新书页的点阵码
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<bool> CallbackPageUpdatePageNo(JournalPagePrintDto request)
|
||||||
|
{
|
||||||
|
return await UseTranAsync(async () =>
|
||||||
|
{
|
||||||
|
var journalEntity = await JournalRepository.Queryable().FirstAsync(w => w.Id == request.JournalId);
|
||||||
|
BusinessException.ThrowIf(journalEntity == null, "不存在此书");
|
||||||
|
|
||||||
|
//如果书籍状态不等于“铺码中”则不允许回调接口更新点阵码
|
||||||
|
BusinessException.ThrowIf(journalEntity.Status != (int)JournalStatusEnum.Codeing, "当前【状态】不允许修改铺码");
|
||||||
|
|
||||||
|
var bookPageList = await JournalPageRepository.Queryable().Where(x => x.JournalId == request.JournalId).OrderBy(x => x.PageNum).ToListAsync();
|
||||||
|
|
||||||
|
BusinessException.ThrowIf(bookPageList.Count == 0, "此书不存在任何书页");
|
||||||
|
|
||||||
|
journalEntity.Status = (int)request.Status!.Value;
|
||||||
|
journalEntity.UpdatedAt = DateTime.Now;
|
||||||
|
|
||||||
|
//如果铺码成功了,并且之前已经有下载链接了,就删除原来的文件
|
||||||
|
if (request.Status == JournalStatusEnum.CodeSuccess && !string.IsNullOrWhiteSpace(journalEntity.DownloadJournalPagePdfName))
|
||||||
|
{
|
||||||
|
//删除oss上原来的文件
|
||||||
|
ossService.DeleteObject(journalEntity.DownloadJournalPagePdfName.RemoveDomain());
|
||||||
|
}
|
||||||
|
//如果铺码成功了,就更新下载链接,以及书页的点阵码
|
||||||
|
if (request.Status == JournalStatusEnum.CodeSuccess)
|
||||||
|
{
|
||||||
|
journalEntity.DownloadJournalPagePdfName = request.DownloadJournalPagePdfName;
|
||||||
|
|
||||||
|
BusinessException.ThrowIf(request.PageNo.Length != bookPageList.Count, $"点阵码条数与页码数量不匹配,点阵码条数:{request.PageNo.Length},页码数量:{bookPageList.Count}");
|
||||||
|
|
||||||
|
|
||||||
|
for (var i = 0; i < bookPageList.Count; i++)
|
||||||
|
{
|
||||||
|
//让也页码和点阵码的顺序必须保持一致
|
||||||
|
bookPageList[i].PageNo = request.PageNo[i];
|
||||||
|
bookPageList[i].UpdatedAt = DateTime.Now;
|
||||||
|
}
|
||||||
|
|
||||||
|
await JournalPageRepository.UpdateRangeAsync(bookPageList);
|
||||||
|
}
|
||||||
|
|
||||||
|
await JournalRepository.Updateable(journalEntity).UpdateColumns(x => new { x.Status, x.DownloadJournalPagePdfName, x.UpdatedAt }).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
public async Task<JournalPageV2Output> DetailAsync(long id)
|
public async Task<JournalPageV2Output> DetailAsync(long id)
|
||||||
{
|
{
|
||||||
var output = await Queryable()
|
var output = await Queryable()
|
||||||
|
|||||||
@ -252,7 +252,7 @@ public class PetService(
|
|||||||
logger.LogWarning("喂养失败,宠物未激活,PetId: {PetId}, Status: {Status}", input.PetId, pet.Status);
|
logger.LogWarning("喂养失败,宠物未激活,PetId: {PetId}, Status: {Status}", input.PetId, pet.Status);
|
||||||
throw new BusinessException("宠物未激活,无法喂养", 400);
|
throw new BusinessException("宠物未激活,无法喂养", 400);
|
||||||
}
|
}
|
||||||
FeedPetOutput result = new FeedPetOutput ();
|
FeedPetOutput result = new FeedPetOutput();
|
||||||
// 事务保证一致性
|
// 事务保证一致性
|
||||||
await UseTranAsync(async () =>
|
await UseTranAsync(async () =>
|
||||||
{
|
{
|
||||||
@ -590,6 +590,11 @@ public class PetService(
|
|||||||
if (template == null || template.IsDeleted)
|
if (template == null || template.IsDeleted)
|
||||||
throw new BusinessException("宠物模板不存在", 404);
|
throw new BusinessException("宠物模板不存在", 404);
|
||||||
|
|
||||||
|
|
||||||
|
if (template.Type == PetTemplateTypeEnum.Default)
|
||||||
|
throw new BusinessException("默认模板不允许删除", 400);
|
||||||
|
|
||||||
|
|
||||||
// 校验是否有用户宠物实例关联
|
// 校验是否有用户宠物实例关联
|
||||||
var hasUserPet = petRepository.Context.Queryable<UserPet>()
|
var hasUserPet = petRepository.Context.Queryable<UserPet>()
|
||||||
.Any(p => p.TemplateId == id && !p.IsDeleted);
|
.Any(p => p.TemplateId == id && !p.IsDeleted);
|
||||||
@ -659,9 +664,9 @@ public class PetService(
|
|||||||
var template = await petTemplateRepository.GetByIdAsync(id);
|
var template = await petTemplateRepository.GetByIdAsync(id);
|
||||||
if (template == null || template.IsDeleted)
|
if (template == null || template.IsDeleted)
|
||||||
throw new BusinessException("宠物模板不存在", 404);
|
throw new BusinessException("宠物模板不存在", 404);
|
||||||
|
|
||||||
template.Status = template.Status == (int)DefaultStatusEnum.Active
|
template.Status = template.Status == (int)DefaultStatusEnum.Active
|
||||||
? (int)DefaultStatusEnum.Inactive
|
? (int)DefaultStatusEnum.Inactive
|
||||||
: (int)DefaultStatusEnum.Active;
|
: (int)DefaultStatusEnum.Active;
|
||||||
template.UpdatedBy = "System";
|
template.UpdatedBy = "System";
|
||||||
template.UpdatedAt = DateTime.Now;
|
template.UpdatedAt = DateTime.Now;
|
||||||
|
|||||||
@ -374,6 +374,18 @@ namespace QYZH.InteractiveMagazine.WebApi.Controllers
|
|||||||
return BaseResponse<bool>.Success(data);
|
return BaseResponse<bool>.Success(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 回调接口-自动铺码, 书页铺码后回调接口,更新书页的点阵码
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bookPagePrintDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost, Route("page/callbackupdatepageno")]
|
||||||
|
[AllowAnonymous]
|
||||||
|
public async Task<BaseResponse<bool>> CallbackPageUpdatePageNo([FromBody] JournalPagePrintDto journalPagePrintDto)
|
||||||
|
{
|
||||||
|
var data = await JournalPageService.CallbackPageUpdatePageNo(journalPagePrintDto);
|
||||||
|
return BaseResponse<bool>.Success(data);
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 下载书籍页码点阵码PDF文件名称
|
/// 下载书籍页码点阵码PDF文件名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -67,6 +67,6 @@
|
|||||||
"DurationSeconds": 3600, //过期时间(秒)
|
"DurationSeconds": 3600, //过期时间(秒)
|
||||||
"Endpoint": "oss-cn-beijing.aliyuncs.com",
|
"Endpoint": "oss-cn-beijing.aliyuncs.com",
|
||||||
"ProjectName": "InteractiveMagazine",
|
"ProjectName": "InteractiveMagazine",
|
||||||
"Domain": "https://oss.test.qyzhjy.com/"
|
"Domain": "http://oss.test.qyzhjy.com/"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,6 +16,7 @@ namespace QYZH.InteractiveMagazine.WorkService.Consumers;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class AutoDotCodeConsumer(IConfiguration configuration,
|
public class AutoDotCodeConsumer(IConfiguration configuration,
|
||||||
IServiceScopeFactory scopeFactory,
|
IServiceScopeFactory scopeFactory,
|
||||||
|
IWebHostEnvironment webHostEnvironment,
|
||||||
ILogger<AutoDotCodeConsumer> logger,
|
ILogger<AutoDotCodeConsumer> logger,
|
||||||
IHttpClientFactory httpClientFactory,
|
IHttpClientFactory httpClientFactory,
|
||||||
OssService ossService
|
OssService ossService
|
||||||
@ -78,7 +79,7 @@ public class AutoDotCodeConsumer(IConfiguration configuration,
|
|||||||
#region 调用铺码程序
|
#region 调用铺码程序
|
||||||
|
|
||||||
// 从配置中获取点阵文件Id
|
// 从配置中获取点阵文件Id
|
||||||
var dotId = configuration.GetValue("PrintConfig:DotId", 683790963662917);
|
var dotId = configuration.GetValue("PrintConfig:DotId", 765837655859269);
|
||||||
|
|
||||||
var dotfile = await dBContext.Queryable<DotFile>().FirstAsync(x => x.Id == dotId, cancellationToken);
|
var dotfile = await dBContext.Queryable<DotFile>().FirstAsync(x => x.Id == dotId, cancellationToken);
|
||||||
if (dotfile == null)
|
if (dotfile == null)
|
||||||
@ -87,9 +88,10 @@ public class AutoDotCodeConsumer(IConfiguration configuration,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var exePath = AppDomain.CurrentDomain.BaseDirectory + "PrintToolV2.7\\PrintTool.exe";
|
var printToolDirectory = Path.Combine(webHostEnvironment.ContentRootPath, "PrintToolV2.7");
|
||||||
|
var exePath = Path.Combine(printToolDirectory, "PrintTool.exe");
|
||||||
|
|
||||||
var xmlPath = AppDomain.CurrentDomain.BaseDirectory + $"PrintToolV2.7\\{dotfile.FileName}";
|
var xmlPath = Path.Combine(printToolDirectory, dotfile.FileName);
|
||||||
|
|
||||||
|
|
||||||
#region 注释说明
|
#region 注释说明
|
||||||
@ -151,7 +153,8 @@ public class AutoDotCodeConsumer(IConfiguration configuration,
|
|||||||
// 从第一个开始执行,连续铺码N条(N为书籍页数)
|
// 从第一个开始执行,连续铺码N条(N为书籍页数)
|
||||||
string pageStr = "{" + $"[{dotFileDetailList[0].PageName},{pageNumMax}]" + "}";
|
string pageStr = "{" + $"[{dotFileDetailList[0].PageName},{pageNumMax}]" + "}";
|
||||||
|
|
||||||
var cmd = $"PrintTool.exe -sMode=Generate -sPDF={uploadFilePath} -sLIC={xmlPath} -pStart=1 -oPDF={downloadFilePath} -dPageAddr=1 -dPrint={dPrint} -dDotSize=40 -dType=0 -dOutFile=0 -dControlPageNum={pageStr}";
|
var arguments = $"-sMode=Generate -sPDF=\"{uploadFilePath}\" -sLIC=\"{xmlPath}\" -pStart=1 -oPDF=\"{downloadFilePath}\" -dPageAddr=1 -dPrint={dPrint} -dDotSize=40 -dType=0 -dOutFile=0 -dControlPageNum={pageStr}";
|
||||||
|
var cmd = $"\"{exePath}\" {arguments}";
|
||||||
|
|
||||||
logger.LogInformation($"执行PrintTool.exe 的命令: {cmd}");
|
logger.LogInformation($"执行PrintTool.exe 的命令: {cmd}");
|
||||||
|
|
||||||
@ -160,9 +163,9 @@ public class AutoDotCodeConsumer(IConfiguration configuration,
|
|||||||
{
|
{
|
||||||
p.StartInfo = new ProcessStartInfo
|
p.StartInfo = new ProcessStartInfo
|
||||||
{
|
{
|
||||||
WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory + "PrintToolV2.7",
|
WorkingDirectory = printToolDirectory,
|
||||||
FileName = "cmd.exe",
|
FileName = exePath,
|
||||||
Arguments = "/c " + cmd, // /c参数表示执行后关闭
|
Arguments = arguments,
|
||||||
UseShellExecute = false, //是否使用操作系统shell启动
|
UseShellExecute = false, //是否使用操作系统shell启动
|
||||||
RedirectStandardInput = true, //接受来自调用程序的输入信息
|
RedirectStandardInput = true, //接受来自调用程序的输入信息
|
||||||
RedirectStandardOutput = true, //由调用程序获取输出信息
|
RedirectStandardOutput = true, //由调用程序获取输出信息
|
||||||
@ -336,4 +339,4 @@ internal class CallbackUpdateJournalStatusResponse
|
|||||||
public bool Result { get; set; }
|
public bool Result { get; set; }
|
||||||
|
|
||||||
public bool IsSuccess { get; set; }
|
public bool IsSuccess { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<licensecontainer version="1.0">
|
||||||
|
<license level="0" name="Root license segment 1761" owner="WWZN" info="segment 1761" type="enterprise" guid="segment 1761" parentid="0">
|
||||||
|
<page width="11720" height="11720" />
|
||||||
|
<time expire="20341025" creation="20241025" />
|
||||||
|
<user id="0" />
|
||||||
|
<pattern category="enterprise">
|
||||||
|
<pageaddress start="1761.0.0.0" stop="1761.5725.52.107" pagesnum="32775624" />
|
||||||
|
</pattern>
|
||||||
|
<permissions nbrof="3">
|
||||||
|
<permission id="0" value="1" name="sublicense" />
|
||||||
|
<permission id="1" value="1" name="deallocate" />
|
||||||
|
<permission id="2" value="1" name="print" />
|
||||||
|
</permissions>
|
||||||
|
<signature value="846682277F67BD118D24382FBC6DD09AF3E0A921A677F96C34B69E46C951CAC4FDD373E3652EC8FEC18FABA8CA9FAACB19E544447023DAD11CBB6EBB8389A714756395E8CA882F980FB6ED3778DFF6108C90401A43D93CD68A26B362D243FA0F160221506ADA7D031126792DC494CB4CC99C099FC8E05C19CF365D1740B2C907D7393FB73E18642236936E43F2A8FAF21E970269A5ED76BA4231F08C690D4D5D425F637AF4A38FEA4F016609696153708983F373C12EC7533D4B2CDAA496A5FA3916497FA64524D56695C58E48C71F29008EE0BD4EC5B7DBA24BCB2395FAA0D36CFEF2B63C3BC230FBDF04A56F20712FB261F5EBBF1A9E18EF3A4DF998C810248ED7F94C13F5302496914896CD3EA05D92B2B784411796D1D3B5FB00B3B2E6ADDBD68E481A9306785C05C53088DE795CE2F46E1EEAE75E80CEA8F5FF4B08B9A356C543D34B036463D699A6E4131DE9B685364A78D66455A1173823B378CA64359497E8B7E52C7E60EEAC74C1C7F991FE9F62E55DE121010820611C61E70457B5FE12AA7A0DCEEF28AE369DFE6CFB6DE4B0DDE770A4262C209C163EB31DA1150D8AF5886A792438F91A1727DB71E8AEE4247E05ECD7A5C1392260E9CFD186989B71695F308C97EC6A1F7008D90BAA1746CABB60F7A078BBF347514CC98D1AEA380946F438C0B777128E5A72FEB85FDEF16F065C93E70884BB77536CC7DEEFF01F" />
|
||||||
|
</license>
|
||||||
|
<license level="2" name="license_1761.211.21.48_10000" owner="CQQY" info="segment 1761" type="CommonB2B" guid="1761.211.21.48_10000" parentid="1761.174.38.0_1000000">
|
||||||
|
<page width="8512" height="8512" />
|
||||||
|
<time expire="20360122" creation="20260122" />
|
||||||
|
<user id="1" />
|
||||||
|
<pattern category="enterprise">
|
||||||
|
<pageaddress start="1761.211.21.48" stop="1761.213.8.3" pagesnum="10000" />
|
||||||
|
</pattern>
|
||||||
|
<permissions nbrof="3">
|
||||||
|
<permission id="0" value="1" name="sublicense" />
|
||||||
|
<permission id="1" value="1" name="deallocate" />
|
||||||
|
<permission id="2" value="1" name="print" />
|
||||||
|
</permissions>
|
||||||
|
<signature value="0BA47A5B9A71CF0680CE1CA41A58FF4DAAA97CD168F331494142150E8BD5A8E93F1369FD8CF026EE577F041C1F8A95D408FC4286BEE366D967DD604D2D482E2105004048C0690D637983591893CE7DC7CEBAEEC9C9569ED62955D044F21769BFE060961413818202E5BDE0216215300BF75238A08A681461DDC539ADB11DA9C3DC5F0B1E3FCDBE70A8F3E39F9FB30F74468DDC93F5D1105B8B8B99F52E13DBAC2C828DF493852037A44B7E6D22D2EAE85942A4F45ECD26F3D17E94EC63226E5A5334DF61781F20B9B65A8B7055950BA15A55D935DFE4A76A8CB4C8C9EDCF7BDDA1C03B6C64CAB8BBECC51684B7F9FD39F17F747F954A8EC3C0D90409FEE30CF5" />
|
||||||
|
<publickey value="MIIBCgKCAQEAvKvG8GB+Q8GzBGalOEUlLKQlCQG1nmjX3n+ErjuclTUgpo7Ai0akc+77aZV3sbLgVEr1o6TuuHb+aijmJfq6raOW3W5GobAKt6i4QIGWBfzJ3V3YlpTadIWVMYcjSR2tCh4shT4mkQg4DDBT6CvuBSOLuEu8qKtBiNGAikm2Hn3kmeGM4Oy5fKam4GSO3cHEIKgWQES5AMae6KyQmcrxtlFNciFgO+/DfDGSo94QjvMURdyg+kysOAiANxXqEbH1SiDeiQEGeOCQROq2j8T6zJ96mxyYZCuaLxE2Uh5LSxYolLVKw1kq+ukeve23LXvvEV5miZmKQB5NUhRFvU6JIwIDAQAB" />
|
||||||
|
</license>
|
||||||
|
</licensecontainer>
|
||||||
@ -2,6 +2,8 @@ using Hangfire;
|
|||||||
using Hangfire.Dashboard;
|
using Hangfire.Dashboard;
|
||||||
using Hangfire.MemoryStorage;
|
using Hangfire.MemoryStorage;
|
||||||
using QYZH.InteractiveMagazine.Infrastructure.RabbitMQ;
|
using QYZH.InteractiveMagazine.Infrastructure.RabbitMQ;
|
||||||
|
using QYZH.InteractiveMagazine.Infrastructure.Redis;
|
||||||
|
using QYZH.InteractiveMagazine.Infrastructure.SDK;
|
||||||
using QYZH.InteractiveMagazine.Models.Settings;
|
using QYZH.InteractiveMagazine.Models.Settings;
|
||||||
using QYZH.InteractiveMagazine.WorkService.Consumers;
|
using QYZH.InteractiveMagazine.WorkService.Consumers;
|
||||||
using QYZH.InteractiveMagazine.WorkService.Jobs;
|
using QYZH.InteractiveMagazine.WorkService.Jobs;
|
||||||
@ -49,6 +51,9 @@ SugarIocServices.ConfigurationSugar(db =>
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 显式注册 ISqlSugarClient,供后台服务中通过 DI 解析
|
||||||
|
builder.Services.AddScoped<ISqlSugarClient>(_ => DbScoped.SugarScope);
|
||||||
|
|
||||||
// 配置Hangfire(内存存储,后续可切换Redis)
|
// 配置Hangfire(内存存储,后续可切换Redis)
|
||||||
builder.Services.AddHangfire(config => config
|
builder.Services.AddHangfire(config => config
|
||||||
.UseMemoryStorage()
|
.UseMemoryStorage()
|
||||||
@ -58,6 +63,15 @@ builder.Services.AddHangfire(config => config
|
|||||||
}));
|
}));
|
||||||
builder.Services.AddHangfireServer();
|
builder.Services.AddHangfireServer();
|
||||||
|
|
||||||
|
// 配置Redis
|
||||||
|
builder.Services.AddCSRedisCacheExtension(builder.Configuration.GetSection("RedisSettings"));
|
||||||
|
|
||||||
|
// 配置HttpClient
|
||||||
|
builder.Services.AddHttpClient();
|
||||||
|
|
||||||
|
// 配置OSS/SDK服务
|
||||||
|
builder.Services.AddSDKService(builder.Configuration);
|
||||||
|
|
||||||
// 配置RabbitMQ
|
// 配置RabbitMQ
|
||||||
builder.Services.AddRabbitMQ(builder.Configuration);
|
builder.Services.AddRabbitMQ(builder.Configuration);
|
||||||
|
|
||||||
|
|||||||
@ -22,4 +22,58 @@
|
|||||||
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
|
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="PrintToolV2.7\bin\gsdll32.dll">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\bin\gsdll32_1.dll">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\bin\gsdll32_10.dll">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\bin\gsdll32_9.dll">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\bin\gswin32c.exe">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\bin\info.exe">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\bin\libiconv2.dll">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\bin\print.exe">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\bin\tk.exe">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\PrintTool.exe">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\sublic_license_1714.0.0.0_10.xml">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\sublic_license_1761.172.8.16_1000.xml">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\sublic_license_1761.211.21.48_10000.xml">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\wfdlicense.dll">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\wfdprint.dll">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\命令行方式调用方法.txt">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="PrintToolV2.7\返回值说明.txt">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -2,6 +2,11 @@
|
|||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"DefaultConnection": "server=192.168.20.150;port=13306;database=InteractiveMagazine;user=user;password=n68792bu!y99r905;charset=utf8mb4;"
|
"DefaultConnection": "server=192.168.20.150;port=13306;database=InteractiveMagazine;user=user;password=n68792bu!y99r905;charset=utf8mb4;"
|
||||||
},
|
},
|
||||||
|
"RedisSettings": {
|
||||||
|
"ConnectionString": "192.168.20.150:16379,defaultDatabase=5",
|
||||||
|
"Sentinels": [],
|
||||||
|
"ExpireSecondRange": [ 3600, 7200 ]
|
||||||
|
},
|
||||||
"RabbitMq": {
|
"RabbitMq": {
|
||||||
"HostName": "192.168.20.150",
|
"HostName": "192.168.20.150",
|
||||||
"Port": 5672,
|
"Port": 5672,
|
||||||
@ -55,6 +60,14 @@
|
|||||||
"DurationSeconds": 3600, //过期时间(秒)
|
"DurationSeconds": 3600, //过期时间(秒)
|
||||||
"Endpoint": "oss-cn-beijing.aliyuncs.com",
|
"Endpoint": "oss-cn-beijing.aliyuncs.com",
|
||||||
"ProjectName": "InteractiveMagazine",
|
"ProjectName": "InteractiveMagazine",
|
||||||
"Domain": "https://oss.test.qyzhjy.com/"
|
"Domain": "http://oss.test.qyzhjy.com/"
|
||||||
|
},
|
||||||
|
"PrintConfig": {
|
||||||
|
"DPrint": 0, //打印场景,0:普通激光打印机,1:工业印刷,默认为0(可选)
|
||||||
|
"CallBackApiUrl": "http://localhost:8080/api/page/callbackupdatepageno", // 开发环境 打印成功回调API地址修改打印状态
|
||||||
|
//"CallBackApiUrl": "http://192.168.20.150:8000/api/icr/page/callbackupdatepageno", // 测试环境 打印成功回调API地址修改打印状态
|
||||||
|
//"CallBackApiUrl": "https://zyb.qyzhjy.com/zybback/api/icr/page/callbackupdatepageno", // 正式环境 打印成功回调API地址修改打印状态
|
||||||
|
//这个ID执行的xml文件是:sublic_license_1761.172.8.16_1000.xml,如果想执行sublic_license_1761.211.21.48_10000.xml 换成 765837655859269 ---暂时没有导入页码
|
||||||
|
"DotId": 765837655859269
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user