diff --git a/ARW.Model/Dto/Api/ProductsInvolveds/ProductsInvolvedApiDto.cs b/ARW.Model/Dto/Api/ProductsInvolveds/ProductsInvolvedApiDto.cs index 26d6a53..366d189 100644 --- a/ARW.Model/Dto/Api/ProductsInvolveds/ProductsInvolvedApiDto.cs +++ b/ARW.Model/Dto/Api/ProductsInvolveds/ProductsInvolvedApiDto.cs @@ -19,14 +19,13 @@ namespace ARW.Model.Dto.Api.ProductsInvolveds /// - /// 涉及产品详情输入对象Api - /// + /// 订阅涉及产品 /// @author lwh /// @date 2023-11-23 /// public class ProductsInvolvedDtoApi { - [Required(ErrorMessage = "ProductsInvolvedGuid不能为空")] + [Required(ErrorMessage = "涉及产品不能为空")] public long ProductsInvolvedGuid { get; set; } } diff --git a/ARW.Model/Vo/Api/ProductsInvolveds/ProductsInvolvedApiVo.cs b/ARW.Model/Vo/Api/ProductsInvolveds/ProductsInvolvedApiVo.cs index 8318149..1f86e05 100644 --- a/ARW.Model/Vo/Api/ProductsInvolveds/ProductsInvolvedApiVo.cs +++ b/ARW.Model/Vo/Api/ProductsInvolveds/ProductsInvolvedApiVo.cs @@ -13,15 +13,6 @@ namespace ARW.Model.Vo.Api.ProductsInvolveds /// public class ProductsInvolvedVoApi { - - - /// - /// 描述 : - /// - [EpplusIgnore] - public int ProductsInvolvedId { get; set; } - - /// /// 描述 : /// @@ -38,11 +29,10 @@ namespace ARW.Model.Vo.Api.ProductsInvolveds /// - /// 描述 :排序 + /// 描述 :是否订阅 /// - [EpplusTableColumn(Header = "排序")] - public int ProductsInvolvedSort { get; set; } - + [EpplusTableColumn(Header = "是否订阅")] + public bool IsSubscribe { get; set; } } diff --git a/ARW.Service/Api/BusinessService/ProductsInvolveds/ProductsInvolvedServiceApi.cs b/ARW.Service/Api/BusinessService/ProductsInvolveds/ProductsInvolvedServiceApi.cs index c812024..6e45cf9 100644 --- a/ARW.Service/Api/BusinessService/ProductsInvolveds/ProductsInvolvedServiceApi.cs +++ b/ARW.Service/Api/BusinessService/ProductsInvolveds/ProductsInvolvedServiceApi.cs @@ -13,6 +13,7 @@ using ARW.Service.Api.IBusinessService.ProductsInvolveds; using ARW.Model.Dto.Api.ProductsInvolveds; using ARW.Model.Models.Business.ProductsInvolveds; using ARW.Model.Vo.Api.ProductsInvolveds; +using ARW.Repository.Business.SubscribeTasks; namespace ARW.Service.Api.BusinessService.ProductsInvolveds { @@ -26,21 +27,23 @@ namespace ARW.Service.Api.BusinessService.ProductsInvolveds public class ProductsInvolvedServiceImplApi : BaseService, IProductsInvolvedServiceApi { private readonly ProductsInvolvedRepository _ProductsInvolvedRepository; + private readonly SubscribeTaskRepository _SubscribeTaskRepository; - public ProductsInvolvedServiceImplApi(ProductsInvolvedRepository ProductsInvolvedRepository) + public ProductsInvolvedServiceImplApi(ProductsInvolvedRepository ProductsInvolvedRepository, SubscribeTaskRepository subscribeTaskRepository) { this._ProductsInvolvedRepository = ProductsInvolvedRepository; + _SubscribeTaskRepository = subscribeTaskRepository; } - #region Api接口代码 - - - /// + #region Api接口代码 + + + /// /// 查询涉及产品列表(Api) /// /// /// - public async Task> GetProductsInvolvedListApi(ProductsInvolvedQueryDtoApi parm) + public async Task> GetProductsInvolvedListApi(ProductsInvolvedQueryDtoApi parm, long userId) { //开始拼装查询条件d var predicate = Expressionable.Create(); @@ -49,44 +52,30 @@ namespace ARW.Service.Api.BusinessService.ProductsInvolveds var query = _ProductsInvolvedRepository .Queryable() .Where(predicate.ToExpression()) - .OrderBy(s => s.ProductsInvolvedSort,OrderByType.Desc) + .OrderBy(s => s.ProductsInvolvedSort, OrderByType.Asc) .Select(s => new ProductsInvolvedVoApi { - ProductsInvolvedId = s.ProductsInvolvedId, - ProductsInvolvedGuid = s.ProductsInvolvedGuid, - ProductsInvolvedName = s.ProductsInvolvedName, - ProductsInvolvedSort = s.ProductsInvolvedSort, - }); - + ProductsInvolvedGuid = s.ProductsInvolvedGuid, + ProductsInvolvedName = s.ProductsInvolvedName + }); - return await query.ToPageAsync(parm); + + var list = await query.ToPageAsync(parm); + + foreach (var item in list.Result) + { + var task = await _SubscribeTaskRepository.GetFirstAsync(s => s.SubscribeTaskBusinessGuid == item.ProductsInvolvedGuid && s.CustomerGuid == userId); + if (task != null) + { + item.IsSubscribe = true; + } + } + + return list; } - /// - /// 查询涉及产品详情(Api) - /// - /// - /// - public async Task GetProductsInvolvedDetails(ProductsInvolvedDtoApi parm) - { - var query = _ProductsInvolvedRepository - .Queryable() - .Where(s => s.ProductsInvolvedGuid == parm.ProductsInvolvedGuid) - .Select(s => new ProductsInvolvedApiDetailsVo - { - ProductsInvolvedId = s.ProductsInvolvedId, - ProductsInvolvedGuid = s.ProductsInvolvedGuid, - ProductsInvolvedName = s.ProductsInvolvedName, - ProductsInvolvedSort = s.ProductsInvolvedSort, - }).Take(1); - - - return await query.ToJsonAsync(); - } - - -#endregion + #endregion } } diff --git a/ARW.Service/Api/IBusinessService/ProductsInvolveds/IProductsInvolvedServiceApi.cs b/ARW.Service/Api/IBusinessService/ProductsInvolveds/IProductsInvolvedServiceApi.cs index 9cce15f..84b6454 100644 --- a/ARW.Service/Api/IBusinessService/ProductsInvolveds/IProductsInvolvedServiceApi.cs +++ b/ARW.Service/Api/IBusinessService/ProductsInvolveds/IProductsInvolvedServiceApi.cs @@ -23,14 +23,7 @@ namespace ARW.Service.Api.IBusinessService.ProductsInvolveds /// /// /// - Task> GetProductsInvolvedListApi(ProductsInvolvedQueryDtoApi parm); - - /// - /// 获取涉及产品详情(Api) - /// - /// - /// - Task GetProductsInvolvedDetails(ProductsInvolvedDtoApi parm); + Task> GetProductsInvolvedListApi(ProductsInvolvedQueryDtoApi parm,long userId); } } diff --git a/ARW.Service/Business/BusinessService/SubscribeTasks/SubscribeTaskService.cs b/ARW.Service/Business/BusinessService/SubscribeTasks/SubscribeTaskService.cs index e1d0adf..eb041f7 100644 --- a/ARW.Service/Business/BusinessService/SubscribeTasks/SubscribeTaskService.cs +++ b/ARW.Service/Business/BusinessService/SubscribeTasks/SubscribeTaskService.cs @@ -46,9 +46,9 @@ namespace ARW.Service.Business.BusinessService.SubscribeTasks .Queryable() .Where(predicate.ToExpression()) .Where(s => s.SubscribeTaskStatus == 0) - .LeftJoin((s,f) => s.CustomerGuid == f.CustomerGuid) + .LeftJoin((s, f) => s.CustomerGuid == f.CustomerGuid) .OrderBy(s => s.Create_time, OrderByType.Desc) - .Select((s,f) => new SubscribeTaskVo + .Select((s, f) => new SubscribeTaskVo { SubscribeTaskId = s.SubscribeTaskId, SubscribeTaskGuid = s.SubscribeTaskGuid, @@ -62,6 +62,24 @@ namespace ARW.Service.Business.BusinessService.SubscribeTasks return query.ToList(); } + + + + public async Task AddSubscribeTask(long customerGuid, long businessGuid, int templateId) + { + var model = new SubscribeTask + { + CustomerGuid = customerGuid, + SubscribeTaskBusinessGuid = businessGuid, + SubscribeTaskType = 1, + SubscribeTaskId = templateId, + SubscribeTaskStatus = 0 + }; + var res = await _SubscribeTaskRepository.InsertReturnSnowflakeIdAsync(model); + + return "添加成功"; + } + #endregion } diff --git a/ARW.Service/Business/IBusinessService/SubscribeTasks/ISubscribeTaskService.cs b/ARW.Service/Business/IBusinessService/SubscribeTasks/ISubscribeTaskService.cs index 34ed07e..ade532f 100644 --- a/ARW.Service/Business/IBusinessService/SubscribeTasks/ISubscribeTaskService.cs +++ b/ARW.Service/Business/IBusinessService/SubscribeTasks/ISubscribeTaskService.cs @@ -18,6 +18,17 @@ namespace ARW.Service.Business.IBusinessService.SubscribeTasks /// /// List GetSubscribeTaskList(); - + + + + /// + /// 添加订阅任务 + /// + /// 客户guid + /// 业务guid + /// 模板id + /// + Task AddSubscribeTask(long customerGuid,long businessGuid,int templateId); + } } diff --git a/ARW.WebApi/Controllers/Api/ProductsInvolveds/ProductsInvolvedApiController.cs b/ARW.WebApi/Controllers/Api/ProductsInvolveds/ProductsInvolvedApiController.cs index 56f1e10..9286e04 100644 --- a/ARW.WebApi/Controllers/Api/ProductsInvolveds/ProductsInvolvedApiController.cs +++ b/ARW.WebApi/Controllers/Api/ProductsInvolveds/ProductsInvolvedApiController.cs @@ -15,6 +15,9 @@ using ARW.Model.Models.Business.ProductsInvolveds; using ARW.Model.Vo.Api.ProductsInvolveds; using Microsoft.AspNetCore.Authorization; using Geocoding; +using ARW.Admin.WebApi.Framework; +using ARW.Service.Business.IBusinessService.SubscribeTasks; +using Senparc.Weixin.Open.WxOpenAPIs; namespace ARW.WebApi.Controllers.Api.ProductsInvolveds { @@ -29,14 +32,16 @@ namespace ARW.WebApi.Controllers.Api.ProductsInvolveds public class ProductsInvolvedApiController : BaseController { private readonly IProductsInvolvedServiceApi _ProductsInvolvedServiceApi; + private readonly ISubscribeTaskService _SubscribeTaskService; /// /// 依赖注入 /// /// 涉及产品涉及产品Api服务 - public ProductsInvolvedApiController(IProductsInvolvedServiceApi ProductsInvolvedServiceApi) + public ProductsInvolvedApiController(IProductsInvolvedServiceApi ProductsInvolvedServiceApi, ISubscribeTaskService subscribeTaskService) { _ProductsInvolvedServiceApi = ProductsInvolvedServiceApi; + _SubscribeTaskService = subscribeTaskService; } @@ -48,33 +53,39 @@ namespace ARW.WebApi.Controllers.Api.ProductsInvolveds [HttpGet("getProductsInvolvedList")] public async Task GetProductsInvolvedListApi([FromQuery] ProductsInvolvedQueryDtoApi parm) { - var res = await _ProductsInvolvedServiceApi.GetProductsInvolvedListApi(parm); + var user = JwtUtil.GetLoginUser(App.HttpContext).UserId; + var res = await _ProductsInvolvedServiceApi.GetProductsInvolvedListApi(parm, user); return SUCCESS(res); } /// - /// 获取ProductsInvolved详情(Api) + /// 订阅涉及产品 /// /// 查询参数 /// - [HttpGet("getProductsInvolvedDetails")] - public async Task GetProductsInvolvedDetails([FromQuery] ProductsInvolvedDtoApi parm) + [HttpPost("subscribe")] + public async Task Subscribe([FromBody] ProductsInvolvedDtoApi parm) { - //if (parm == null) throw new CustomException("参数错误!"); + // 微信通知模板Id + var templateId = 1; + var user = JwtUtil.GetLoginUser(App.HttpContext).UserId; + var res = await _SubscribeTaskService.AddSubscribeTask(user, parm.ProductsInvolvedGuid, templateId); + return SUCCESS(res); + } - var res = await _ProductsInvolvedServiceApi.GetProductsInvolvedDetails(parm); - - if (res != "[]") - { - res = res.Remove(0, 1); - res = res.Substring(0, res.Length - 1); - var data = res.FromJSON(); - return SUCCESS(data); - } - else - { - return SUCCESS(res); - } + /// + /// 取消订阅涉及产品 + /// + /// 查询参数 + /// + [HttpPost("cancelSubscribe")] + public async Task CancelSubscribe([FromBody] ProductsInvolvedDtoApi parm) + { + // 微信通知模板Id + var templateId = 1; + var userId = JwtUtil.GetLoginUser(App.HttpContext).UserId; + var res = await _SubscribeTaskService.DeleteAsync(s => s.SubscribeTaskBusinessGuid == parm.ProductsInvolvedGuid && s.CustomerGuid == userId); + return SUCCESS("取消成功"); } }