Exemple #1
0
        public async Task <APIResult> AddActivity([FromBody] ActivityModel input)
        {
            byte[] byteArray = System.Text.Encoding.Default.GetBytes(input.Context);
            if (byteArray.Length > 1024 * 500)
            {
                return(Error("拼团活动内容不能大于500kb"));
            }

            if (input.DeliveryTakeTheirEndTimeMD < input.ActivityEndTime)
            {
                return(Error("预计自提\\快递结束时间需要比活动时间长"));
            }
            var authorizerAccessToken = GetAuthorizerAccessToken(input.ShopId);

            if (input.ActivityEndTime <= DateTime.Now)
            {
                return(Error("结束时间月份不能小于当前时间月份"));
            }
            #region 添加消息模板
            var shopTemplateMessageInfo = db.ShopTemplateMessageInfo.FirstOrDefault(m => m.ShopId.Equals(input.ShopId) && !m.IsDel && m.Title.Equals("拼团成功通知"));
            if (shopTemplateMessageInfo == null)
            {
                var addJsonResult = await TemplateApi.AddAsync(authorizerAccessToken, "AT0051", new int[] { 1, 3, 13, 16, 32, 34 }); //模板ID和关键字id都是固定的

                var list = await TemplateApi.ListAsync(authorizerAccessToken, 0, 20);

                var tesmp = list.list.FirstOrDefault(m => m.title.Equals("拼团成功通知"));
                if (tesmp != null)
                {
                    await db.ShopTemplateMessageInfo.AddAsync(new ShopTemplateMessageInfo()
                    {
                        Content = tesmp.content, CreateTime = DateTime.Now, Example = tesmp.example, ShopId = input.ShopId, TemplateId = tesmp.template_id, Title = tesmp.title
                    });

                    await db.SaveChangesAsync();

                    _logger.LogInformation($"添加消息模板成功模板ID:{tesmp.template_id}");
                }
            }
            #endregion
            input.ConglomerationActivityStatut = ConglomerationActivityStatut.已发布;
            input.ShopId = input.ShopId;
            var conglomerationActivity = _mapper.Map <ConglomerationActivity>(input);
            conglomerationActivity = db.ConglomerationActivity.Add(conglomerationActivity).Entity;
            db.SaveChanges();
            input.ConglomerationActivityId = conglomerationActivity.Id;
            SetPicking(input, conglomerationActivity);
            return(Success(conglomerationActivity));
        }