Exemplo n.º 1
0
        /// <summary>
        /// 收藏行程
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="userId"></param>
        /// <returns>Task&lt;Response&gt;.</returns>
        /// <exception cref="NotImplementedException"></exception>
        public async Task <Response <CollectStrokeResponse> > CollectStroke(CollectStrokeRequest request)
        {
            var userId   = contextAccessor.UserId();
            var userInfo = await this.strokeContext.Users.FirstOrDefaultAsync(x => x.Id == userId);

            if (userInfo == null || !userInfo.IsActive)
            {
                throw new Exception("用户信息不存在或已被禁用");
            }
            var strokeInfo = await this.strokeContext.Strokes.FirstOrDefaultAsync(x => x.Id == request.StrokeId);

            if (strokeInfo == null)
            {
                throw new Exception("获取行程失败");
            }

            var collectId = 0l;

            if (request.CollectId == 0)
            {
                var collectStoke = await this.strokeContext.StrokeCollects.FirstOrDefaultAsync(x => x.StrokeId == request.StrokeId && x.UserId == userId);

                if (collectStoke != null)
                {
                    throw new Exception("该行程已经收藏");
                }
                //添加收藏
                var newCollect = this.strokeContext.StrokeCollects.Add(new StrokeCollect
                {
                    StrokeId = request.StrokeId,
                    UserId   = userId,
                    IsActive = true
                });
                this.strokeContext.SaveChanges();
                collectId = newCollect.Entity.Id;
            }
            else
            {
                var collectStoke = await this.strokeContext.StrokeCollects.FirstOrDefaultAsync(x => x.Id == request.CollectId);

                if (collectStoke == null)
                {
                    throw new Exception("获取收藏行程信息失败");
                }
                this.strokeContext.StrokeCollects.Remove(collectStoke);
                this.strokeContext.SaveChanges();
            }

            return(new Response <CollectStrokeResponse>
            {
                Data = new CollectStrokeResponse
                {
                    CollectId = collectId
                }
            });
        }
 public Task <Response <CollectStrokeResponse> > CollectStroke([FromBody] CollectStrokeRequest request)
 {
     return(this.strokeService.CollectStroke(request));
 }