| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- using Vo;
- using Microsoft.AspNetCore.Mvc;
- using Model;
- using Services;
- using Model.Base;
- using Vo.Admin;
- using Mapster;
- using Infrastructure;
- using Common;
- using Custom;
- using LitJson;
- namespace Controllers.Admin
- {
- /// <summary>
- /// AppProjectVersion)Controller
- /// </summary>
- // [Route("${Router}$")]
- // [ApiExplorerSettings(GroupName = "AppProjectVersion")]
- public class AppProjectVersionController : BaseController
- {
- private readonly IAppProjectService _AppProjectService;
- private readonly IAppProjectVersionService _AppProjectVersionService;
- private readonly IAppProjectPageService _AppProjectPageService;
- private readonly IAppProjectPageStyleService _AppProjectPageStyleService;
- private readonly IAppProjectStaticService _AppProjectStaticService;
- private readonly IAppProjectModuleService _AppProjectModuleService;
- private readonly IAppProjectParamService _AppProjectParamService;
- private readonly IAppProjectBottomService _AppProjectBottomService;
- private readonly IAppModuleService _AppModuleService;
- private readonly IAppModuleFileService _AppModuleFileService;
- private readonly IAppModuleAndroidCodeService _AppModuleAndroidCodeService;
- private readonly IAppModuleIosCodeService _AppModuleIosCodeService;
- public AppProjectVersionController(IAppProjectService AppProjectService, IAppProjectVersionService AppProjectVersionService, IAppProjectPageService AppProjectPageService, IAppProjectPageStyleService AppProjectPageStyleService, IAppProjectStaticService AppProjectStaticService, IAppProjectModuleService AppProjectModuleService, IAppProjectParamService AppProjectParamService, IAppProjectBottomService AppProjectBottomService, IAppModuleService AppModuleService, IAppModuleFileService AppModuleFileService, IAppModuleAndroidCodeService AppModuleAndroidCodeService, IAppModuleIosCodeService AppModuleIosCodeService)
- {
- _AppProjectService = AppProjectService;
- _AppProjectVersionService = AppProjectVersionService;
- _AppProjectPageService = AppProjectPageService;
- _AppProjectPageStyleService = AppProjectPageStyleService;
- _AppProjectStaticService = AppProjectStaticService;
- _AppProjectModuleService = AppProjectModuleService;
- _AppProjectParamService = AppProjectParamService;
- _AppProjectBottomService = AppProjectBottomService;
- _AppModuleService = AppModuleService;
- _AppModuleFileService = AppModuleFileService;
- _AppModuleAndroidCodeService = AppModuleAndroidCodeService;
- _AppModuleIosCodeService = AppModuleIosCodeService;
- }
- /// <param name="page">分页参数</param>
- /// <summary>
- /// 列表
- /// </summary>
- /// <param name="page">分页对象</param>
- /// <param name="param">参数请求体</param>
- /// <returns>列表</returns>
- [HttpGet]
- [Route("/v1/omega_source/AppProjectVersion/getAppProjectVersionList")]
- public IActionResult getAppProjectVersionList([FromQuery] PagerInfo page, [FromQuery] AppProjectVersion param)
- {
- var response = _AppProjectVersionService.getAppProjectVersionList(page, param);
- return SUCCESS(response);
- }
- /// <summary>
- /// 详情
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>详情</returns>
- [HttpGet]
- [Route("/v1/omega_source/AppProjectVersion/getAppProjectVersionQuery")]
- public IActionResult getAppProjectVersionQuery([FromQuery] AppProjectVersion param)
- {
- var response = _AppProjectVersionService.GetFirst(m => m.id == param.id).Adapt<GetAppProjectVersionQueryVo>();
- return SUCCESS(response);
- }
- /// <summary>
- /// 添加
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>添加</returns>
- [HttpPost]
- [Route("/v1/omega_source/AppProjectVersion/addAppProjectVersion")]
- public IActionResult addAppProjectVersion([FromBody] AppProjectVersion param)
- {
- var modal = param.Adapt<AppProjectVersion>().ToCreate(HttpContext);
- var response = _AppProjectVersionService.InsertReturnIdentity(modal);
- // string extractPath = "/AppProject/" + param.appId + "/" + param.id + "/";
- // FileHelper.ExtractZip(param.staticFile, extractPath, true);
- // _AppProjectPageService.getPageList(extractPath, param.appId, response);
- // _AppProjectStaticService.getStaticFileList(extractPath, param.appId, response);
- return SUCCESS(response);
- }
- /// <summary>
- /// 修改
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>修改</returns>
- [HttpPut]
- [Route("/v1/omega_source/AppProjectVersion/updateAppProjectVersion")]
- public IActionResult updateAppProjectVersion([FromBody] AppProjectVersion param)
- {
- var modal = param.Adapt<AppProjectVersion>().ToUpdate(HttpContext);
- var response = _AppProjectVersionService.Update(modal, true);
- // string extractPath = "/AppProject/" + param.appId + "/" + param.id + "/";
- // FileHelper.ExtractZip(param.staticFile, extractPath, true);
- // _AppProjectPageService.getPageList(extractPath, param.appId, param.id);
- // _AppProjectStaticService.getStaticFileList(extractPath, param.appId, param.id);
- return SUCCESS(response);
- }
- /// <summary>
- /// 删除
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>删除</returns>
- [HttpDelete]
- [Route("/v1/omega_source/AppProjectVersion/deleteAppProjectVersion/{id}")]
- public IActionResult deleteAppProjectVersion([FromQuery] AppProjectVersion param)
- {
- var response = _AppProjectVersionService.Delete(param);
- return SUCCESS(response);
- }
- /// <summary>
- /// 同步已有页面
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>同步已有页面</returns>
- [HttpGet]
- [Route("/v1/omega_source/AppProjectVersion/sycnAppProjectPage")]
- public IActionResult sycnAppProjectPage([FromQuery] AppProjectVersion param)
- {
- var ver = _AppProjectVersionService.GetFirst(m => m.id == param.id);
- var defaultPageType = _AppProjectPageStyleService.GetFirst(m => m.appId == param.appId && m.versionId == param.id) ?? new AppProjectPageStyle();
- string dir = _AppProjectVersionService.sycnAppProjectPage(param);
- _AppProjectPageService.getPageList(dir, ver.appId, param.id, defaultPageType);
- _AppProjectStaticService.getStaticFileList(dir, ver.appId, param.id);
- return SUCCESS("ok");
- }
- /// <summary>
- /// 下载
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>下载</returns>
- [HttpGet]
- [Route("/v1/omega_source/AppProjectVersion/downloadAppProject")]
- public IActionResult downloadAppProject([FromQuery] AppProjectVersion param)
- {
- var appProjectVersion = _AppProjectVersionService.GetFirst(m => m.id == param.id) ?? new AppProjectVersion();
- var appProject = _AppProjectService.GetFirst(m => m.id == appProjectVersion.appId) ?? new AppProject();
- var appProjectModules = _AppProjectModuleService.GetList(m => m.appId == appProjectVersion.appId);
- var appProjectParams = _AppProjectParamService.GetList(m => m.appId == appProjectVersion.appId);
- var appProjectBottoms = _AppProjectBottomService.GetList(m => m.appId == appProjectVersion.appId);
- var moduleIds = appProjectModules.Select(m => m.moduleId).ToList();
- var appModules = _AppModuleService.GetList(m => moduleIds.Contains(m.id));
- var appModulesFiles = _AppModuleFileService.GetList(m => moduleIds.Contains(m.moduleId));
- var appProjectPages = _AppProjectPageService.GetList(m => m.appId == appProjectVersion.appId && m.versionId == appProjectVersion.id);
- MakeData makeData = new();
- string requestId = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Function.get_Random(8);
- makeData.requestId = requestId;
- Dictionary<string, string> attach = new();
- attach.Add("appKind", appProject.appKind);
- makeData.attach = Newtonsoft.Json.JsonConvert.SerializeObject(attach);
- Dictionary<string, object> pushData = new();
- pushData.Add("appProject", JsonMapper.ToJson(appProject));
- pushData.Add("appProjectVersion", JsonMapper.ToJson(appProjectVersion));
- pushData.Add("appProjectModules", JsonMapper.ToJson(appProjectModules));
- pushData.Add("appProjectParams", JsonMapper.ToJson(appProjectParams));
- pushData.Add("appProjectPages", JsonMapper.ToJson(appProjectPages));
- pushData.Add("appProjectBottoms", JsonMapper.ToJson(appProjectBottoms));
- pushData.Add("appModules", JsonMapper.ToJson(appModules));
- pushData.Add("appModulesFiles", JsonMapper.ToJson(appModulesFiles));
- if (appProject.appKind == "Android")
- {
- var appModulesAndroidCode = _AppModuleAndroidCodeService.GetList(m => moduleIds.Contains(m.moduleId));
- pushData.Add("appModulesAndroidCode", JsonMapper.ToJson(appModulesAndroidCode));
- }
- else if (appProject.appKind == "ios")
- {
- var appModulesIosCode = _AppModuleIosCodeService.GetList(m => moduleIds.Contains(m.moduleId));
- pushData.Add("appModulesIosCode", JsonMapper.ToJson(appModulesIosCode));
- }
- string fileName = "";
- Dictionary<string, string> response = new();
- if (appProject.appKind == "Android")
- {
- fileName = "androidapp" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".zip";
- response.Add("downloadUrl", App.OptionsSetting.OssConfigs.Host + "/androidcode/" + fileName);
- }
- else if (appProject.appKind == "ios")
- {
- fileName = "iosapp" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".zip";
- response["downloadUrl"] = App.OptionsSetting.OssConfigs.Host + "/applecode/" + fileName;
- }
- pushData.Add("fileName", fileName);
- makeData.data = pushData;
- // RabbitMQClient.Instance.Push("MakeAppQueue", Newtonsoft.Json.JsonConvert.SerializeObject(makeData));
- RedisServer.Cache.LPush("MakeAppQueue", Newtonsoft.Json.JsonConvert.SerializeObject(makeData));
- return SUCCESS(response);
- }
- /// <summary>
- /// 生成进度
- /// </summary>
- /// <param name="param">参数请求体</param>
- /// <returns>生成进度</returns>
- [HttpGet]
- [Route("/v1/omega_source/AppProjectVersion/getAppMakeProcess")]
- public IActionResult getAppMakeProcess([FromQuery] AppProjectVersion param)
- {
- var step = RedisServer.Cache.Get<int>("ProjectMakeProcess:" + param.id);
- Dictionary<string, int> response = new();
- response.Add("step", step);
- return SUCCESS(response);
- }
- }
- }
|