123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- using Attribute;
- using Dto;
- using Vo;
- using Model;
- using Model.Base;
- using Repository;
- using Service;
- using Microsoft.AspNetCore.Mvc;
- using Aliyun.OSS;
- using Common;
- using System.Text.RegularExpressions;
- using Infrastructure.Model;
- using Base;
- using Mapster;
- namespace Services
- {
- /// <summary>
- /// 页面模板更新信息Service业务层处理
- /// </summary>
- [AppService(ServiceType = typeof(IPageUpdateInfoService), ServiceLifetime = LifeTime.Transient)]
- public class PageUpdateInfoService : BaseService<PageUpdateInfo>, IPageUpdateInfoService
- {
- /// <summary>
- /// 页面模板更新信息-列表
- /// </summary>
- /// <param name="parm">请求参数</param>
- /// <returns>页面模板更新信息列表</returns>
- public PagedInfo<PageUpdateInfoListVo> List([FromQuery] PageUpdateInfoListDto parm, [FromQuery] PagerInfo page)
- {
- //开始拼装查询条件
- var predicate = Expressionable.Create<PageUpdateInfo>();
- predicate = predicate.And(m => m.appVersion == parm.appVersion);
- predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.kind), m => m.kind.Contains(parm.kind));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.title), m => m.title.Contains(parm.title));
- predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.modulePath), m => m.modulePath.Contains(parm.modulePath));
- var response = Queryable()
- .Where(predicate.ToExpression())
- .OrderBy(m => m.id)
- .ToPage<PageUpdateInfo, PageUpdateInfoListVo>(page);
- return response;
- }
-
- /// <summary>
- /// 页面模板更新信息-刷新文件
- /// </summary>
- /// <param name="parm">请求参数</param>
- /// <returns>页面模板更新信息刷新文件</returns>
- public void UpdateTemplate([FromQuery] PageUpdateInfoUpdateTemplateDto parm)
- {
- OssConfigs ossConfigs = new();
- AppSettings.Bind("OssConfigs", ossConfigs);
- string kind = parm.kind;
- if(!string.IsNullOrEmpty(parm.appVersion))
- {
- kind += "/" + parm.appVersion;
- }
- GetSystemFiles(ossConfigs, kind);
- foreach (string filename in SystemFiles)
- {
- string template = filename.Substring(filename.LastIndexOf("/") + 1);
- if (template.EndsWith(".html"))
- {
- PageUpdateInfo check = GetFirst(m => m.modulePath == template && m.kind == parm.kind && m.appVersion == parm.appVersion);
- if (check == null)
- {
- string ModuleContent = Function.GetNetFileContent(ossConfigs.Host + "template/app/" + kind + "/" + template);
- if (!string.IsNullOrEmpty(ModuleContent))
- {
- string admintitle = "";
- string title = "";
- Match match = Regex.Match(ModuleContent, "<title>.*?</title>", RegexOptions.IgnoreCase);
- if (match.Success)
- {
- admintitle = match.Value.Replace("<title>", "").Replace("</title>", "");
- // if (admintitle.Contains("-"))
- // {
- // title = admintitle.Substring(admintitle.LastIndexOf("-") + 1);
- // }
- // else
- // {
- title = admintitle;
- // }
- }
- var item = GetFirst(m => m.modulePath == template && m.appVersion == parm.appVersion);
- if(item == null)
- {
- Add(new PageUpdateInfo()
- {
- createDate = DateTime.Now,
- updateDate = DateTime.Now,
- kind = parm.kind,
- leftAction1 = "{\"Url\":\"GoBack#{\\\"Level\\\":\\\"1\\\"}\",\"Jump\":\"1\",\"Kind\":\"2\"}",
- leftBtn1 = "static/images/left.png",
- skidFlag = true,
- showScrollBar = false,
- title = title,
- showTitle = true,
- statusBarStyle = "default",
- textColor = "333333",
- backgroudColor = "FFFFFF",
- modulePath = template,
- moduleVersion = 1,
- mustUpdate = true,
- appVersion = Function.CheckNull(parm.appVersion),
- });
- }
- else
- {
- item.updateDate = DateTime.Now;
- item.title = title;
- Update(item, true);
- }
- }
- }
- }
- }
- }
- List<string> SystemFiles;
- private void GetSystemFiles(OssConfigs ossConfigs, string Kind = "default")
- {
- SystemFiles = new List<string>();
- var client = new OssClient(ossConfigs.Endpoint, ossConfigs.Key, ossConfigs.Secret);
- var listObjectsRequest = new ListObjectsRequest(ossConfigs.BucketName);
- listObjectsRequest.MaxKeys = 1000;
- listObjectsRequest.Prefix = "template/app/" + Kind + "/";
- var result = client.ListObjects(listObjectsRequest);
- foreach (var summary in result.ObjectSummaries)
- {
- SystemFiles.Add(summary.Key);
- }
- }
- /// <summary>
- /// 生成APP配置文件
- /// </summary>
- /// <param name="parm">请求参数</param>
- /// <returns>生成APP配置文件</returns>
- public string makeAppInitData(string kind, string appVersion = "")
- {
- OssConfigs ossConfigs = new();
- AppSettings.Bind("OssConfigs", ossConfigs);
- string GotoPages = "{";
- string PageInfoList = "{";
- string LibFile = "{";
- List<PageUpdateInfo> newpages = GetList(m => m.kind == kind && m.appVersion == appVersion);
- if(!string.IsNullOrEmpty(appVersion))
- {
- kind += "/" + appVersion;
- }
- foreach (PageUpdateInfo page in newpages)
- {
- string FileName = page.modulePath.Split('.')[0];
- var pageinfo = page.Adapt<AppPageInfoVo>();
- pageinfo.dataId = Function.MD5_16(pageinfo.id.ToString() + "123890");
- PageInfoList += "\"page" + FileName + "\":" + Newtonsoft.Json.JsonConvert.SerializeObject(pageinfo) + ",";
- string PagePath = "template/app/" + kind + "/" + page.modulePath;
- string pageContent = Function.GetNetFileContent(ossConfigs.Host + PagePath);
- pageContent = Dbconn.Encrypt3DES(pageContent, "*ga34|^7");
- LibFile += "\"page" + FileName + "\":\"" + pageContent + "\",";
- }
- PageInfoList = PageInfoList.TrimEnd(',');
- PageInfoList += "}";
- GotoPages = GotoPages.TrimEnd(',');
- GotoPages += "}";
- LibFile = LibFile.TrimEnd(',');
- LibFile += "}";
- return Dbconn.Encrypt3DES(PageInfoList, "*ga34|^7") + "#cut#" + GotoPages + "#cut#" + Dbconn.Encrypt3DES(LibFile, "*ga34|^7");
- }
- }
- }
|