示例#1
0
        public async Task <APIResult> Add([FromBody] AddArgs args)
        {
            if (string.IsNullOrEmpty(args.Phone))
            {
                throw new ArgumentNullException("Phone");
            }
            if (!smsOptions.SmsTemplates.ContainsKey(args.TaskType))
            {
                throw new Exception($"{args.TaskType}短信模板未配置");
            }

            var phone       = args.Phone.Trim();
            var operationIP = GetIp();

            var isPhone = Regex.IsMatch(phone, @"^1[23456789]\d{9}$", RegexOptions.IgnoreCase);

            if (!isPhone)
            {
                throw new Exception("手机号码格式不正确,请正确输入手机号码!");
            }

            var isBindMember = memberDb.IsBindMemberPhone(phone);

            if (!isBindMember)
            {
                throw new Exception(string.Format("手机号码:{0}没有绑定会员", phone));
            }

            memberDb.CheckMemberSMSValiCodeTaskLimitRule(phone, operationIP, args.TaskType);

            var code    = CommonUtil.CreateIntNoncestr(6);
            var content = string.Format(smsOptions.SmsTemplates[args.TaskType], code);
            await smsHandler.SendAsync(phone, content);

            MemberSMSValiCodeTask task = new MemberSMSValiCodeTask()
            {
                Phone       = phone,
                IP          = operationIP,
                TaskState   = MemberSMSValiCodeTaskState.未使用,
                TaskTime    = DateTime.Now,
                TaskEndTime = DateTime.Now.AddMinutes(3),
                TaskType    = args.TaskType,
                Code        = code,
            };

            memberDb.AddToMemberSMSValiCodeTask(task);
            memberDb.SaveChanges();

            return(Success());
        }