public static async Task <int> SubmitZeroActivityApplicationAsync(ZeroActivityRequest requestModel, ZeroActivityDetailModel activityDetail, string userMobile)
        {
            using (var cmd = new SqlCommand(InsertZeroActivityApplication))
            {
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("@Period", requestModel.Period);
                cmd.Parameters.AddWithValue("@UserID", requestModel.UserId);
                cmd.Parameters.AddWithValue("@UserName", requestModel.UserName);
                cmd.Parameters.AddWithValue("@PID", activityDetail.PID);
                cmd.Parameters.AddWithValue("@ProductName", activityDetail.ProductName);
                cmd.Parameters.AddWithValue("@Quantity", (activityDetail.NumOfWinners == 0 ? 0 : activityDetail.Quantity / activityDetail.NumOfWinners));
                cmd.Parameters.AddWithValue("@ProvinceID", requestModel.ProvinceID);
                cmd.Parameters.AddWithValue("@CityID", requestModel.CityID);
                cmd.Parameters.AddWithValue("@ApplyReason", requestModel.ApplicationReason);
                cmd.Parameters.AddWithValue("@CarID", requestModel.CarID);
                cmd.Parameters.AddWithValue("@Mobile", userMobile);
                var count = Convert.ToInt32(await DbHelper.ExecuteScalarAsync(cmd));
                if (count > 0)
                {
                    await RedisHelper.CreateZeroActivityApplyCache();

                    await RedisHelper.CreateZeroActivityApplyCacheOnPeriod(requestModel.Period);

                    await RedisHelper.CreateZeroActivityApplyCacheOnUserId(requestModel.UserId);
                }
                return(count);
            }
        }
Exemple #2
0
        public static async Task <int> SubmitZeroActivityApplicationAsync(ZeroActivityRequest requestModel)
        {
            try
            {
                var activityDetail = await FetchZeroActivityDetailAsync(requestModel.Period);

                if (activityDetail == null)
                {
                    return(-2);
                }
                else if (activityDetail.StatusOfActivity != 1)
                {
                    return(-3);
                }
                else if (activityDetail.PID == null || activityDetail.ProductName == null)
                {
                    return(-4);
                }
                if (await DalZeroActivity.HasZeroActivityApplicationSubmittedAsync(requestModel.UserId, requestModel.Period))
                {
                    return(-1);
                }
                string userMobile = "";

                using (var uClient = new UserAccountClient())
                {
                    var result = await uClient.GetUserByIdAsync(requestModel.UserId);

                    if (result.Success && !string.IsNullOrWhiteSpace(result.Result?.MobileNumber) && result.Result.MobileNumber.Length <= 30)
                    {
                        userMobile = result.Result.MobileNumber;
                    }
                }
                var count = await DalZeroActivity.SubmitZeroActivityApplicationAsync(requestModel, activityDetail, userMobile);

                if (count > 0)
                {
                    var actionQueueDic = new Dictionary <string, string>();
                    actionQueueDic["UserId"]     = requestModel.UserId.ToString("B");
                    actionQueueDic["ActionName"] = "12PublicTest";
                    TuhuNotification.SendNotification("notification.TaskActionQueue", actionQueueDic);
                    using (var client = CacheHelper.CreateCacheClient(DefaultClientName))
                    {
                        var existenceResult = await client.ExistsAsync(GlobalConstant.MyZeroApplyApplications + requestModel.UserId.ToString("B") + "/0/");

                        if (existenceResult.Success)
                        {
                            var removeResult = await client.RemoveAsync(GlobalConstant.MyZeroApplyApplications + requestModel.UserId.ToString("B") + "/0/");

                            if (!removeResult.Success)
                            {
                                Logger.Warn($"删除用户众测申请列表(申请中)缓存redis失败MyZeroApplyApplications:{GlobalConstant.MyZeroApplyApplications + requestModel.UserId.ToString("B") + "/0/"};Error:{removeResult.Message}", removeResult.Exception);
                            }
                        }
                    }
                }
                return(count);
            }
            catch (Exception ex)
            {
                Logger.ErrorException("SubmitZeroActivityApplication逻辑进行中出现异常", ex);
                return(0);
            }
        }
        /// <summary>
        ///提交众测申请
        /// </summary>
        /// <returns></returns>
        public async Task <OperationResult <bool> > SubmitZeroActivityApplicationAsync(ZeroActivityRequest requestModel)
        {
            if (requestModel == null)
            {
                return(OperationResult.FromError <bool>(ErrorCode.ParameterError, "传入的requestModel不能为空"));
            }
            else if (requestModel.Period < 0)
            {
                return(OperationResult.FromError <bool>(ErrorCode.ParameterError, "period参数出错,应该大于0"));
            }
            else if (requestModel.UserId == null || requestModel.UserId == Guid.Empty)
            {
                return(OperationResult.FromError <bool>(ErrorCode.ParameterError, "UserId参数不能为空"));
            }
            else if (string.IsNullOrWhiteSpace(requestModel.UserName))
            {
                return(OperationResult.FromError <bool>(ErrorCode.ParameterError, "UserName参数不能为空"));
            }

            var result = await ZeroActivityManager.SubmitZeroActivityApplicationAsync(requestModel);

            if (result > 0)
            {
                return(OperationResult.FromResult(true));
            }
            else if (result == -2)
            {
                return(OperationResult.FromError <bool>("ActivityNotExisted", "该期活动不存在"));
            }
            else if (result == -3)
            {
                return(OperationResult.FromError <bool>("ActivityNotProceeding", "该期活动不在进行中"));
            }
            else if (result == -4)
            {
                return(OperationResult.FromError <bool>("ActivityNotProceeding", "该期活动的PID或ProductName为空,无法插入"));
            }
            else if (result == -1)
            {
                return(OperationResult.FromError <bool>("ApplyExisted", "您已经申请了本期活动"));
            }
            else
            {
                return(OperationResult.FromError <bool>("InsertFailure", "新建数据失败"));
            }
        }