Modules:手机号码验证

ylbtech-Modules:手机号码验证

 手机号码验证,文档以JFB项目架构为原型,介绍实现原理,如何调用和应用实例。

架构包括5个主要模块:Basebase,Base,Service,Api和Web。表的设计,实体,数据库操作类,API,Web的网站配置、注册和找回密码实例。

1. Database返回顶部
1、\Tables\VerifyCode/VerifyCode.sql
CREATE TABLE [dbo].[VerifyCode]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY, 
    [Code] VARCHAR(50) NULL, 
    [SndTo] VARCHAR(50) NULL, 
    [SndContent] VARCHAR(1000) NULL, 
    [CreateTime] DATETIME NULL, 
    [IsDeleted] BIT NULL
)
2、
2. Base返回顶部
1、/VerifyCode/VerifyCode.cs
namespace DS.JZB.Base.VerifyCode
{
    [Dapper.Contrib.Extensions.Table("[VerifyCode]")]
    public class VerifyCode : BaseEntity
    {
        [Dapper.Contrib.Extensions.Key]
        public int Id { get; set; }
        /// <summary>
        /// 验证码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// 发送到
        /// </summary>
        public string SndTo { get; set; }
        /// <summary>
        /// 发送内容
        /// </summary>
        public string SndContent { get; set; }
    }
}
2、BaseEntity.cs
using System;

namespace DS.JZB.Base {
    public interface IEntity {
        bool IsDeleted { get; set; }
        DateTime CreateTime { get; set; }
    }

    public abstract class BaseEntity : IEntity {
        #region Implementation of IEntity

        public bool IsDeleted { get; set; } = false;
        public DateTime CreateTime { get; set; } = DateTime.Now;

        #endregion
    }
}
View Code
3、
3. Service返回顶部
1、/VerifyCode
1.1、IVerifyService.cs
using System.Data;

namespace DS.JZB.Service.VerifyCodes
{
    public interface IVerifyCodeService
    {
        /// <summary>
        /// 判断验证码是否有效
        /// </summary>
        /// <param name="code"></param>
        /// <param name="mobile"></param>
        void IsValidCode(string code, string mobile);

        /// <summary>
        /// 发送验证码
        /// </summary>
        /// <param name="sndTo"></param>
        string SndVerifyCode(string sndTo);

        void ValidateIsValidCode(string validCode, string mobile, IDbConnection conn, IDbTransaction trans);

        void IsValidCode(string code);

    }
}
1.2、VerifyService.cs
using System;
using System.Data;
using Dapper;
using Dapper.Contrib.Extensions;
using DS.JZB.Base;
using DS.JZB.Base.VerifyCode;
using DS.JZB.Common;
using System.Linq;
using DS.JZB.Service.Sms;

namespace DS.JZB.Service.VerifyCodes {
    public class VerifyCodeService : IVerifyCodeService {
        /// <summary>
        /// 验证验证码是否有效
        /// </summary>
        /// <param name="code"></param>
        /// <param name="mobile"></param>
        public void IsValidCode(string code, string mobile) {
            DbConnectionManipulator.RunMainDatabase(conn => {
                var entity =
                    conn.QueryFirstOrDefault<VerifyCode>(
                        "select * from VerifyCode where IsDeleted=0 and Code=@Code and SndTo=@SndTo",
                        new { Code = code, SndTo = mobile });
                if (entity == null)
                    throw new DsException("验证码不存在");

                //发送时间距离当前时间超过30分钟的为失败的
                if (entity.CreateTime.AddMinutes(30) < DateTime.Now)
                    throw new DsException("验证码已失效");
            });
        }

        /// <summary>
        /// 发送验证码
        /// </summary>
        /// <param name="sndTo"></param>
        public string SndVerifyCode(string sndTo) {
            if (string.IsNullOrWhiteSpace(sndTo))
                throw new DsException("请输入手机号码");

            sndTo = sndTo.Trim();

            DbConnectionManipulator.RunMainDatabase(conn => {
                //1分钟内,如果已经发送过验证码,则不允许再次发送
                var model =
                    conn.QueryFirstOrDefault("select * from VerifyCode where IsDeleted = 0 and SndTo=@SndTo and CreateTime>@CreateTime",
                        new { SndTo = sndTo, CreateTime = DateTime.Now.AddMinutes(-1) });
                if (model != null)
                    throw new DsException("验证码已发送,请勿重复发送");
            });

            var code = RndInt(6);
            var sndContent = "验证码{0}";
            sndContent = string.Format(sndContent, code);
            var entity = new VerifyCode {
                Code = code,
                SndContent = sndContent,
                SndTo = sndTo
            };
            Insert(entity);

            SmsService.Instance.SendValidateCodeSms(entity.SndTo, new {
                code = code.ToString(),
                product = "家服宝"
            });

            return code;
        }

        private void Insert(VerifyCode entity) {
            DbConnectionManipulator.RunMainDatabase(conn => {
                conn.Insert(entity);
            });
        }

        /// <summary>
        /// 验证是否是验证码
        /// </summary>
        /// <param name="validCode"></param>
        /// <param name="mobile"></param>
        /// <param name="conn"></param>
        /// <param name="trans"></param>
        public void ValidateIsValidCode(string validCode, string mobile, IDbConnection conn, IDbTransaction trans) {
            var fnOwnConn = conn == null;
            if (fnOwnConn) {
                conn = DbConnectionManipulator.GetMainDatabaseConnection();
            }

            var entity =
                conn.QueryFirstOrDefault<VerifyCode>(
                    "select * from VerifyCode where IsDeleted=0 and Code=@Code and SndTo=@SndTo",
                    new { Code = validCode, SndTo = mobile }, trans);

            if (fnOwnConn) {
                conn.Close();
                conn.Dispose();
            }
            if (entity == null)
                throw new DsException("验证码不存在");

            //发送时间距离当前时间超过30分钟的为失败的
            if (entity != null && entity.CreateTime.AddMinutes(30) < DateTime.Now)
                throw new DsException("验证码已失效");
        }

        /// <summary>
        /// n位随机码
        /// </summary>
        /// <returns></returns>
        private string RndInt(int n) {
            const string str = "0123456789";
            var rStr = "";
            var rnd = new Random();
            for (var i = 0; i < n; i++) {
                var rndNum = rnd.Next(10);
                rStr += str.Substring(rndNum, 1);
            }
            return rStr;
        }

        public void IsValidCode(string code) {
            var result = DbConnectionManipulator.RunMainDatabase(conn => {
                return conn.QuerySingle<int>(@"DECLARE @CreateTime DATETIME
SELECT @CreateTime FROM dbo.VerifyCode WHERE IsDeleted=0 AND Code=@Code
IF @@ROWCOUNT=0
BEGIN
SELECT -1
RETURN
END

IF DATEADD(MINUTE,30,@CreateTime)<GETDATE()
BEGIN
SELECT -2
RETURN
END

SELECT 0", new { Code = code });
            });
            if (result == -1)
                throw new DsException("验证码不存在", ExceptionLevel.Error);

            //发送时间距离当前时间超过30分钟的为失败的
            if (result == -2)
                throw new DsException("验证码已失效", ExceptionLevel.Error);
        }

        public void MarkValidCodeInvalid(string code, string uniqueKey) {
            if (string.IsNullOrWhiteSpace(code)) {
                throw new DsException("请填写验证码");
            }

            DbConnectionManipulator.RunMainDatabaseInTransaction((conn, trans) => {
                var obj =
                    conn.Query(
                        "SELECT TOP 1 * FROM RegCode WHERE Sign=@Sign AND CurStatus=0 AND CreateTime>=@CreateTime AND Code=@Code ORDER BY Id DESC",
                        new { Sign = uniqueKey, CreateTime = DateTime.Now.AddMinutes(-30), Code = code }, trans).FirstOrDefault();
                if (obj == null) {
                    return;
                }
                conn.Execute(@"UPDATE RegCode SET CurStatus=1 WHERE Id=@Id
UPDATE VerifyCode SET IsDeleted=1 WHERE Code=@Code", new { Id = obj.Id, Code = code }, trans);
            });
        }


    }
}
View Code
2、SMS
2.1、
2.2、
4. Api返回顶部
1、Controllers
1.1、Account
1.1.1、MemberController.cs
/// <summary>
        /// 获取注册验证码
        /// </summary>
        /// <param name="sndTo"></param>
        /// <param name="validateCode"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        [Route("GetVerifyCode"), AllowAnonymous]
        [HttpPost]
        public JsonResult GetVerifyCode(string sndTo, string validateCode, int type = 0, string vid = "", int userType = 1) {
            //if (!DefaultValidateCodeManager.Instance.IsValidValidateCode(validateCode, vid)) {
            //    return Json(ResultModel.NewError("校验码输入错误或已过期."));
            //}
            MemberModel user;
            if (userType == 1) {
                user = MemberService.GetSingleByMobile(sndTo);
            }
            else if (userType == 2) {
                user = MemberService.GetSingleCleaningByMobile(sndTo);
            }
            else {
                throw new DsException("非法调用!");
            }

            if (type == 0) {
                if (user != null) {
                    throw new DsException("该手机号码已注册,请更换!");
                }
            }
            else {
                if (user == null) {
                    throw new DsException("未找到该手机号码的注册信息,请确认!");
                }
            }

            VerifyCodeService.SndVerifyCode(sndTo);
            return Json(ResultModel.Ok());
        }

        [Route("ValidCode"), AllowAnonymous]
        public JsonResult ValidCode(MemberRegisterModel model) {

            VerifyCodeService.IsValidCode(model.VerifyCode, model.Mobile);

            return Json(ResultModel.Ok());
        }
2、Sms
2.1、ISmsService.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DS.JZB.Service.Sms {
    public interface ISmsService {
        /// <summary>
        /// 此方法发送的短信,不计入所在企业的扣费列表
        /// </summary>
        /// <param name="mobile">手机号</param>
        /// <param name="content">短信内容,不带标签</param>
        void SendValidateCodeSms(string mobile, object parameter);
        /// <summary>
        /// 此方法发送的短信,会计入所在企业的扣费列表
        /// </summary>
        void SendSms(string mobile, object parameter, string templateCode = null, string sign = SmsService.SMS_SIGN, int teamId = 0, int memberId = 0);
        /// <summary>
        /// 此方法发送的短信,会计入所在企业的扣费列表
        /// </summary>
        void SendSms(string[] mobiles, object parameter, string templateCode = null, string sign = SmsService.SMS_SIGN, int teamId = 0, int memberId = 0);
    }
}
2.2、SmsService.cs
using Dapper;
using Dapper.Contrib.Extensions;
using DS.JZB.Base;
using DS.JZB.Common;
using DS.JZB.Common.Extensions;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Sms.Model.V20170525;
using NLog;

namespace DS.JZB.Service.Sms {
    public class SmsService : ISmsService {
        public const string SMS_SIGN = "服务名称";
        public const int FREE_SMS_COUNT = 0;

        public static readonly ISmsService Instance = new SmsService();

        private SmsService() { }

        public void SendSms(string mobile, object parameter, string templateCode, string sign = SMS_SIGN, int teamId = 0, int memberId = 0) {
            DoSendSms(mobile, parameter, sign, templateCode, teamId);
        }

        public void SendSms(string[] mobiles, object parameter, string templateCode, string sign = SMS_SIGN, int teamId = 0, int memberId = 0) {
            if(mobiles.Length == 1) {
                DoSendSms(mobiles[0], parameter, sign, templateCode, teamId);
            }
            else {
                foreach (var mobile in mobiles)
                {
                    DoSendSms(mobile, parameter, sign, templateCode, teamId);
                }
            }
        }

        public void SendValidateCodeSms(string mobile, object parameter) {
            DoSendSms(mobile, parameter, "服务名称", "SMS_XXXX", 0);
        }

        private void DoSendSms(string mobile, object parameter, string sign, string templateCode, int teamId) {
            if (parameter == null) {
                throw new DsException("请指定发送短信的内容");
            }

            if (string.IsNullOrWhiteSpace(mobile)) {
                throw new DsException("请指定短信的接收者");
            }

            try
            {
                string regionId = "cn-hangzhou";
                string signName = SMS_SIGN;
                string phoneNumbers = mobile;
                string templateParam = JsonConvert.SerializeObject(parameter);


                IClientProfile clientProfile = DefaultProfile.GetProfile(regionId, AliyunSmsConfig.Instance.AccessKeyId, AliyunSmsConfig.Instance.AccessKeySecret);
                DefaultProfile.AddEndpoint(regionId, regionId, "Dysmsapi", "dysmsapi.aliyuncs.com");

                IAcsClient acsClient = new DefaultAcsClient(clientProfile);

                SendSmsRequest request = new SendSmsRequest();

                request.SignName = signName;
                request.TemplateCode = templateCode;
                request.PhoneNumbers = phoneNumbers;
                request.TemplateParam = templateParam;

                SendSmsResponse response = acsClient.GetAcsResponse(request);

                if (response != null) {
                    LogManager.GetCurrentClassLogger().Debug($"[SMS] {JsonConvert.SerializeObject(response)}");
                }
            }
            catch (ServerException e) {
                LogManager.GetCurrentClassLogger().Error(e, "[SMS] ServerException");
            }
            catch (ClientException e) {
                LogManager.GetCurrentClassLogger().Error(e, "[SMS] ClientException");

            }
        }

        private void CreateTeamSmsStatisticIfNotExists(int teamId, bool success, IDbConnection conn, IDbTransaction trans) {
            conn.Execute($@"IF NOT EXISTS(SELECT TOP 1 1 FROM TeamSmsStatistics WHERE TeamId=@TeamId AND StatisticalDate=@Now)
INSERT INTO [dbo].[TeamSmsStatistics]([TeamId],[StatisticalDate],[TotalSend],[SuccessSend],[FailedSend])
VALUES(@TeamId,@Now,1,{(success ? "1,0" : "0,1")})
ELSE
UPDATE TeamSmsStatistics SET TotalSend=TotalSend+1, {(success ? "SuccessSend=SuccessSend+1" : "FailedSend=FailedSend+1")} WHERE TeamId=@TeamId AND 

StatisticalDate=@Now", new {
                TeamId = teamId,
                Now = DateTime.Now.Date
            }, trans);
        }
    }
}
View Code
3、
5. Web返回顶部
0、web.config
<configuration>
  <appSettings>
    <add key="Aliyun:AccessKeyId" value="XXX" />
    <add key="Aliyun:AccessKeySecret" value="XXX" />
    <add key="Aliyun:EndpointManifestPath" value="D:\X\Web\App_Data\endpoints.xml" />
    <add key="Aliyun:AppCode" value="XXXX" />
    <add key="TLCert" value="D:\X\Web\App_Data\TLCert.cer" />
  </appSettings>
</configuration>
1、/m/js/shd.js
/***
     * 账号相关,登录,注册,找回密码
     * @type {{initLogin: initLogin, initRegister: initRegister, initForget: initForget}}
     */
    var accountUi = {
        initLogin: function() {

            var userType = $.getUrlParam("t");
            if(!userType) {
                userType = 1;
            }

            if(userType !== 1) {
                $(".title").html("家政员登录")
            } else {
                $(".title").html("客户登录")
            }
            var ctype = $.getUrlParam("pwd");

            $(document).on("tap", "#btnLoginSys", function() {
                if(utils.isNull($("#LoginMobile").val())) {
                    mui.toast("请输入手机号码!");
                    return false;
                }
                if(!utils.isMobile($("#LoginMobile").val())) {
                    mui.toast("您输入的不是有效的手机号");
                    $("#LoginMobile").focus();
                    return false;
                }
                if(utils.isNull($("#LoginPwd").val())) {
                    mui.toast("请输入密码!");
                    return false;
                }
                var param = {
                    Mobile: $.trim($("#LoginMobile").val()),
                    LoginPwd: CryptoJS.MD5($.trim($("#LoginPwd").val())).toString(),
                    userType: userType
                };

                var btnObj = this;
                mui(btnObj).button("loading");
                utils.postRequest("member/login", param, function(d) {
                    $.cookie("token", d.Data.Token);
                    $.cookie("memberid", d.Data.User.Id);
                    $.cookie("memberface", d.Data.User.FacePic);
                    $.cookie("membername", d.Data.User.Name);

                    if(userType == 1) {
                        $.cookie("ctoken", "");
                        $.cookie("mtoken", d.Data.Token);
                    } else {
                        $.cookie("ctoken", d.Data.Token);
                        $.cookie("mtoken", "");
                    }

                    if(window.wechatHelper.isWeiXin()) {
                        window.wechatHelper.wxEnvInit();

                        setTimeout(function() {
                            if(userType == 1) {
                                mui.openWindow("/m/customer/index.html", "/m/customer/index.html");
                            } else if(userType == 2) {
                                mui.openWindow("/m/service/index.html", "/m/service/index.html");

                            } else {
                                mui.back();
                            }

                        }, 15);
                    } else {
                        //                        mui.back();
                        if(userType == 1) {
                            mui.openWindow("/m/customer/index.html", "/m/customer/index.html");
                        } else if(userType == 2) {
                            mui.openWindow("/m/service/index.html", "/m/service/index.html");
                        } else {
                            mui.back();
                        }
                    }
                }, true).always(function(d) {
                    mui(btnObj).button("reset");
                });
            });

            $(document).on("tap", "#btnReg", function() {
                mui.openWindow("/register.html?t=" + userType, "/register.html?t=" + userType);
            });
            $(document).on("tap", "#aforget", function() {
                mui.openWindow("/forget.html?t=" + userType, "/forget.html?t=" + userType);
            });
        },
        initRegister: function() {

            var userType = $.getUrlParam("t");
            if(!userType) {
                userType = 1;
            }
            if(userType != 1) {
                $(".title").html("家政员立即注册");
            } else {
                $(".title").html("客户立即注册");
            }
            $(document).on("tap", "#btnGetCheckCode", function() {
                var p = {
                    sndTo: $.trim($("#LoginMobile").val()),
                    userType: userType
                };
                if(utils.isNull(p.sndTo) || !p.sndTo.length) {
                    mui.toast("请输入手机号码");
                    return false;
                }
                if(!utils.isMobile(p.sndTo)) {
                    mui.toast("您输入的不是有效的手机号");
                    return false;
                }
                var btnObj = this;
                mui(btnObj).button("loading");
                utils.postRequest("member/getverifycode", p, function(rev) {
                    if(rev.IsError) {
                        mui.toast(rev.Msg);
                        $(btnObj).html("获取");
                    } else {
                        countDownEnable($(btnObj));
                        //$("#btnNextReg").removeClass("mui-hidden");
                    }
                }, true, true).always(function(d) {
                    if(d.IsError) {
                        mui(btnObj).button("reset");
                    }
                });
            });

            $(document).on("tap", "#btnRegComp", function() {
                if(utils.isNull($.trim($("#LoginMobile").val()))) {
                    mui.toast("请输入手机号码");
                    return false;
                }
                if(!utils.isMobile($.trim($("#LoginMobile").val()))) {
                    mui.toast("您输入的不是有效的手机号");
                    return false;
                }
                if(utils.isNull($.trim($("#VerifyCode").val()))) {
                    mui.toast("请输入验证码");
                    return false;
                }
                if(utils.isNull($.trim($("#LoginPwd").val()))) {
                    mui.toast("请输入密码");
                    return false;
                }

                var p = {
                    Mobile: $.trim($("#LoginMobile").val()),
                    LoginPwd: CryptoJS.MD5($.trim($("#LoginPwd").val())).toString(),
                    VerifyCode: $.trim($("#VerifyCode").val()),
                    userType: userType
                };

                var btnObj = this;
                mui(btnObj).button("loading");
                utils.postRequest("member/register", p, function(d) {
                    mui.toast("注册成功!");
                    setTimeout(function() {
                        //mui.openWindow("/login.html?t=" + userType, "/login.html?t=" + userType);
                        mui.back();
                    }, 500);
                }, true).always(function(d) {
                    if(d.IsError) {
                        mui(btnObj).button("reset");
                    }
                });
            });
        },
        initForget: function() {

            var userType = $.getUrlParam("t");
            if(!userType) {
                userType = 1;
            }

            $(document).on("tap", "#btnGetCheckCode", function() {
                var p = {
                    sndTo: $.trim($("#LoginMobile").val()),
                    type: 1,
                    userType: userType
                };
                if(utils.isNull(p.sndTo) || !p.sndTo.length) {
                    mui.toast("请输入手机号码");
                    return false;
                }
                if(!utils.isMobile(p.sndTo)) {
                    mui.toast("您输入的不是有效的手机号");
                    return false;
                }
                var btnObj = this;
                mui(btnObj).button("loading");
                utils.postRequest("member/getverifycode", p, function(rev) {
                    if(rev.IsError) {
                        mui.toast(rev.Msg);
                        $(btnObj).html("获取");
                    } else {
                        countDownEnable($(btnObj));
                        //$("#btnNextReg").removeClass("mui-hidden");
                    }
                }, true, true).always(function(d) {
                    if(d.IsError) {
                        mui(btnObj).button("reset");
                    }
                });
            });

            $(document).on("tap", "#btnRegComp", function() {
                if(utils.isNull($.trim($("#LoginMobile").val()))) {
                    mui.toast("请输入手机号码");
                    return false;
                }
                if(!utils.isMobile($.trim($("#LoginMobile").val()))) {
                    mui.toast("您输入的不是有效的手机号");
                    return false;
                }
                if(utils.isNull($.trim($("#VerifyCode").val()))) {
                    mui.toast("请输入验证码");
                    return false;
                }
                if(utils.isNull($.trim($("#LoginPwd").val()))) {
                    mui.toast("请输入密码");
                    return false;
                }

                var p = {
                    Mobile: $.trim($("#LoginMobile").val()),
                    LoginPwd: CryptoJS.MD5($.trim($("#LoginPwd").val())).toString(),
                    VerifyCode: $.trim($("#VerifyCode").val()),
                    userType: userType
                };

                var btnObj = this;
                mui(btnObj).button("loading");
                utils.postRequest("member/resetpwd", p, function(d) {
                    mui.toast("密码重置成功!");
                    setTimeout(function() {
                        //mui.openWindow("/login.html?t=" + userType, "/login.html?t=" + userType);
                        mui.back();
                    }, 500);
                }, true).always(function(d) {
                    if(d.IsError) {
                        mui(btnObj).button("reset");
                    }
                });
            });
        },
        initLocalRegister: function() {
            var params = {};
            //获取填写的第几页的注册数据
            function getRegisterData(id,page) {
                utils.getRequest("localteamOther/getsingle/{0}".format(id), {IsPlatform: $.getUrlParam("p") ? true : false},
                    function (d) {
                        if (!d.Data || !d.Data.localTeamInfo) {
                            return false;
                        }
                        var localTeamInfo = d.Data.localTeamInfo;
                        switch (page) {
                            case 1:
                                $("#LinkTel").val(localTeamInfo.LinkTel);
                                if (!localTeamInfo.OpeningProvince) {
                                    $("#OpeningProvince").html('<span class="province"></span><span class="city"></span><span class="area"></span>');
                                } else if (!localTeamInfo.OpeningTown) {
                                    $("#OpeningProvince").html('<span class="province">' + localTeamInfo.OpeningProvince + '</span><span class="city">' + localTeamInfo.OpeningCity + '</span><span class="area"></span>');
                                } else {
                                    $("#OpeningProvince").html('<span class="province">' + localTeamInfo.OpeningProvince + '</span><span class="city">' + localTeamInfo.OpeningCity + '</span><span class="area">' + localTeamInfo.OpeningTown + '</span>');
                                }
                                $("#WorkAddress").val(localTeamInfo.WorkAddress);
                                $("#Management").val(localTeamInfo.ManagementId);
                                $("#InvitationNO").val(localTeamInfo.InvitationNO);
                                break;
                            case 2:
                                $("[BusinessLicenseId].mui-btn-danger").attr("BusinessLicenseId", localTeamInfo.BusinessLicenseId);
                                $("#BusinessLicenseName").val(localTeamInfo.BusinessLicenseName);
                                //$("#UniformCreditNO").val(localTeamInfo.UniformCreditNO);
                                $("#BusinessLicenseNO").val(localTeamInfo.BusinessLicenseNO);
                                $("#LegalPerson").val(localTeamInfo.LegalPerson);
                                if (!localTeamInfo.RegisterProvince) {
                                    $("#RegisterAdr").html('<span class="province"></span><span class="city"></span><span class="area"></span>');
                                } else if (!localTeamInfo.RegisterTown) {
                                    $("#RegisterAdr").html('<span class="province">' + localTeamInfo.RegisterProvince + '</span><span class="city">' + localTeamInfo.RegisterCity + '</span><span class="area"></span>');
                                } else {
                                    $("#RegisterAdr").html('<span class="province">' + localTeamInfo.RegisterProvince + '</span><span class="city">' + localTeamInfo.RegisterCity + '</span><span class="area">' + localTeamInfo.RegisterTown + '</span>');
                                }
                                $("#DetailAddress").val(localTeamInfo.DetailAddress);
                                $("[BusinessTermId].mui-btn-danger").attr("BusinessTermId",localTeamInfo.BusinessTermId);
                                $("#BusinessTermStart").val(utils.utcToLocal(localTeamInfo.BusinessTermStart,"yyyy-MM-dd"));
                                $("#BusinessTermEnd").val(utils.utcToLocal(localTeamInfo.BusinessTermEnd,"yyyy-MM-dd"));
                                $("#LinkMan").val(localTeamInfo.LinkMan);
                                $("#CardNO").val(localTeamInfo.CardNO);
                                $("#Email").val(localTeamInfo.Email);
                                $("#LowQuality").val(localTeamInfo.LowQuality);
                                break;
                            case 3:
                                //$("#AccreditUrl").attr("src", localTeamInfo.AccreditUrl);
                                if(utils.isNull(localTeamInfo.BusinessLicenseUrl)){
                                    $("#BusinessLicenseUrl").attr("src", "/img/mfsczp.jpg");
                                }else {
                                    $("#BusinessLicenseUrl").attr("src", localTeamInfo.BusinessLicenseUrl);
                                }
                                break;
                            case 4:
                                if (utils.isNull(localTeamInfo.CardNOUrl_A)) {
                                    $("#CardNOUrl_A").attr("src", "/img/mfsczp.jpg");
                                } else {
                                    $("#CardNOUrl_A").attr("src", localTeamInfo.CardNOUrl_A);
                                }
                                if (utils.isNull(localTeamInfo.CardNOUrl_B)) {
                                    $("#CardNOUrl_B").attr("src", "/img/mfsczp.jpg");
                                } else {
                                    $("#CardNOUrl_B").attr("src", localTeamInfo.CardNOUrl_B);
                                }
                                break;
                            case 5:
                                if (utils.isNull(localTeamInfo.PersonCardUrl)) {
                                    $("#PersonCardUrl").attr("src", "/img/mfsczp.jpg");
                                } else {
                                    $("#PersonCardUrl").attr("src", localTeamInfo.PersonCardUrl);
                                }
                                //$("#PermitUrl").attr("src", localTeamInfo.PermitUrl);
                                break;
                        }
                    }, true);
            }
            //经营类目接口获取
            utils.getRequest("managementitem/list", {}, function(data) {
                $("#Management").empty().append("<option value=\"\">请选择经营类目</option>");
                $(data.Data.Collection).each(function(i, item) {
                    $("#Management").append("<option value=\"" + item.Id + "\">" + item.Name + "</option>");
                });
                //获取首页注册的数据需要在获取经营类目完成后调用
                if ($.getUrlParam("p")) {
                    if (!utils.isNull($.cookie("pid"))) {
                        getRegisterData($.cookie("pid"), 1);
                    }
                } else {
                    if (!utils.isNull($.cookie("id"))) {
                        getRegisterData($.cookie("id"), 1);
                    }
                }
            }, true);

            utils.getRequest("bankitem/list", {}, function(data) {
                $("#BankItemId").empty().append("<option value=\"\">请选择开户行</option>");
                $(data.Data.Collection).each(function(i, item) {
                    $("#BankItemId").append("<option value=\"" + item.Id + "\">" + item.Name + "</option>");
                });
            }, true);

            mui.previewImage();
            // utils.uploader({
            //     browse_button: "upAccreditUrl",
            //     completeCallback: function(pic) {
            //         $("#AccreditUrl").attr("src", pic);
            //     }
            // });

            utils.uploader({
                browse_button: "upBusinessLicenseUrl",
                completeCallback: function(pic) {
                    $("#BusinessLicenseUrl").attr("src", pic);
                }
            });

            utils.uploader({
                browse_button: "upCardNOUrl_A",
                completeCallback: function(pic) {
                    $("#CardNOUrl_A").attr("src", pic);
                }
            });

            utils.uploader({
                browse_button: "upCardNOUrl_B",
                completeCallback: function(pic) {
                    $("#CardNOUrl_B").attr("src", pic);
                }
            });

            utils.uploader({
                browse_button: "upPersonCardUrl",
                completeCallback: function(pic) {
                    $("#PersonCardUrl").attr("src", pic);
                }
            });

            // utils.uploader({
            //     browse_button: "upPermitUrl",
            //     completeCallback: function(pic) {
            //         $("#PermitUrl").attr("src", pic);
            //     }
            // });

            $(document).on("tap", "#nextStep", function() {
                //验证输入信息
                if(utils.isNull($("#LinkTel").val())) {
                    mui.toast("请输入联系方式!");
                    return false;
                }
                if(!utils.isMobile($("#LinkTel").val())) {
                    mui.toast("请输入正确的联系方式!");
                    return false;
                }
                if(utils.isNull($("#OpeningProvince").find(".province").html())) {
                    mui.toast("请选择开通城市!");
                    return false;
                }
                if(utils.isNull($("#WorkAddress").val())) {
                    mui.toast("请输入办公地址!");
                    return false;
                }
                if(utils.isNull($("#Management").val())) {
                    mui.toast("请选择经营类目!");
                    return false;
                }
                var btnObj = this;
                mui(btnObj).button("loading");
                params = {
                    UserName: $.trim($("#LinkTel").val()),
                    LinkTel: $.trim($("#LinkTel").val()),
                    OpeningProvince: $.trim($("#OpeningProvince").find(".province").html()),
                    OpeningCity: $.trim($("#OpeningProvince").find(".city").html()),
                    OpeningTown: $.trim($("#OpeningProvince").find(".area").html()),
                    WorkAddress: $("#WorkAddress").val(),
                    ManagementId: $("#Management").val(),
                    InvitationNO: $("#InvitationNO").val()
                };
                if ($.getUrlParam("p")) {
                    params.IsPlatform = true; //是商家还是地方平台
                    if (!utils.isNull($.cookie("pid"))) {
                        params.Id = $.cookie("pid");
                    }
                } else {
                    params.IsPlatform = false; //是商家还是地方平台
                    if (!utils.isNull($.cookie("id"))) {
                        params.Id = $.cookie("id");
                    }
                }
                utils.postRequest("localteamOther/insertinfo", params, function(d) {
                    if($.getUrlParam("p")) {
                        params.IsPlatform = true;
                       $.cookie("pid",d.Data);
                    } else {
                        params.IsPlatform = false;
                        $.cookie("id",d.Data);
                    }
                    viewApi.go("#zzxx");
                    //获取第二页的数据
                    if($.getUrlParam("p")) {
                        if($.cookie("pid")){
                            getRegisterData($.cookie("pid"),2);
                        }
                    } else {
                        if($.cookie("id")){
                            getRegisterData($.cookie("id"),2);
                        }
                    }
                }, true).always(function() {
                    mui(btnObj).button("reset");
                });
            });
            $(document).on("tap", "#nextStep2", function() {
                //验证输入信息
                if(utils.isNull($("#BusinessLicenseName").val())) {
                    mui.toast("请输入营业执照名称!");
                    return false;
                }
                if(utils.isNull($("#BusinessLicenseNO").val())) {
                    mui.toast("请输入营业执照注册号!");
                    return false;
                }
                // if(utils.isNull($("#BusinessLicenseNO").val()) && utils.isNull($("#UniformCreditNO").val())) {
                //     mui.toast("营业执照注册号和统一社会信用代码至少填写一项!");
                //     return false;
                // }
                if(utils.isNull($("#LegalPerson").val())) {
                    mui.toast("请输法定代表人!");
                    return false;
                }
                if(utils.isNull($("#RegisterAdr").find(".province").html())) {
                    mui.toast("请选择注册地址!");
                    return false;
                }
                if(utils.isNull($("#DetailAddress").val())) {
                    mui.toast("请输入执照上的住所/经营场所!");
                    return false;
                }
                if($("[BusinessTermId].mui-btn-danger").attr("BusinessTermId") == 1) {
                    if(utils.isNull($("#BusinessTermStart").val())) {
                        mui.toast("请选择营业期限开始!");
                        return false;
                    }
                    if(utils.isNull($("#BusinessTermEnd").val())) {
                        mui.toast("请选择营业期限结束!");
                        return false;
                    }
                }
                if(utils.isNull($("#LinkMan").val())) {
                    mui.toast("请输入指定联系人姓名!");
                    return false;
                }
                if(utils.isNull($("#CardNO").val())) {
                    mui.toast("请输入身份证号!");
                    return false;
                }
                if(!utils.idCardNoUtil.checkIdCardNo($("#CardNO").val())) {
                    mui.toast("输入身份证格式不正确,请检查!");
                    return false;
                }
                var btnObj = this;
                mui(btnObj).button("loading");
                params = {};
                params = {
                    BusinessLicenseId: $("[BusinessLicenseId].mui-btn-danger").attr("BusinessLicenseId"),
                    BusinessLicenseName: $("#BusinessLicenseName").val(),
                    //UniformCreditNO: $("#UniformCreditNO").val(),
                    BusinessLicenseNO: $("#BusinessLicenseNO").val(),
                    LegalPerson: $("#LegalPerson").val(),
                    RegisterProvince: $.trim($("#RegisterAdr").find(".province").html()),
                    RegisterCity: $.trim($("#RegisterAdr").find(".city").html()),
                    RegisterTown: $.trim($("#RegisterAdr").find(".area").html()),
                    DetailAddress: $("#DetailAddress").val(),
                    BusinessTermId: $("[BusinessTermId].mui-btn-danger").attr("BusinessTermId"),
                    BusinessTermStart: $("#BusinessTermStart").val(),
                    BusinessTermEnd: $("#BusinessTermEnd").val(),
                    LinkMan: $("#LinkMan").val(),
                    CardNO: $("#CardNO").val(),
                    Email: $("#Email").val(),
                    LowQuality: $("#LowQuality").val()
                };
                if($.getUrlParam("p")) {
                    params.IsPlatform = true;
                    params.Id = $.cookie("pid");
                } else {
                    params.IsPlatform = false;
                    params.Id = $.cookie("id");
                }
                utils.postRequest("localteamOther/updateinfo", params, function(d) {
                    viewApi.go("#zzxx2");
                    //获取第3页的数据
                    if($.getUrlParam("p")) {
                        if($.cookie("pid")){
                            getRegisterData($.cookie("pid"),3);
                        }
                    } else {
                        if($.cookie("id")){
                            getRegisterData($.cookie("id"),3);
                        }
                    }
                }, true).always(function() {
                    mui(btnObj).button("reset");
                });
            });

            $(document).on("tap", "#nextStep3", function() {
                //验证输入信息
                // if($("#AccreditUrl").attr("src") == "/img/mfsczp.jpg") {
                //     mui.toast("请上传公司授权书!");
                //     return false;
                // }
                if($("#BusinessLicenseUrl").attr("src") == "/img/mfsczp.jpg") {
                    mui.toast("请上传营业执照!");
                    return false;
                }
                var btnObj = this;
                mui(btnObj).button("loading");
                params = {};
                params = {
                    //AccreditUrl: $("#AccreditUrl").attr("src"),
                    BusinessLicenseUrl: $("#BusinessLicenseUrl").attr("src")
                };
                if($.getUrlParam("p")) {
                    params.IsPlatform = true; //是商家还是地方平台
                    params.Id = $.cookie("pid");
                } else {
                    params.IsPlatform = false; //是商家还是地方平台
                    params.Id = $.cookie("id");
                }
                utils.postRequest("localteamOther/updateinfo2", params, function(d) {
                    viewApi.go("#zzxx3");
                    //获取第4页的数据
                    if($.getUrlParam("p")) {
                        if($.cookie("pid")){
                            getRegisterData($.cookie("pid"),4);
                        }
                    } else {
                        if($.cookie("id")){
                            getRegisterData($.cookie("id"),4);
                        }
                    }
                }, true).always(function() {
                    mui(btnObj).button("reset");
                });
            });

            $(document).on("tap", "#nextStep4", function() {
                //验证输入信息
                if($("#CardNOUrl_A").attr("src") == "/img/mfsczp.jpg") {
                    mui.toast("请上传身份证正面!");
                    return false;
                }
                if($("#CardNOUrl_B").attr("src") == "/img/mfsczp.jpg") {
                    mui.toast("请上传身份证背面!");
                    return false;
                }
                var btnObj = this;
                mui(btnObj).button("loading");
                params = {};
                params = {
                    CardNOUrl_A: $("#CardNOUrl_A").attr("src"),
                    CardNOUrl_B: $("#CardNOUrl_B").attr("src")
                };
                if($.getUrlParam("p")) {
                    params.IsPlatform = true; //是商家还是地方平台
                    params.Id = $.cookie("pid");
                } else {
                    params.IsPlatform = false; //是商家还是地方平台
                    params.Id = $.cookie("id");
                }
                utils.postRequest("localteamOther/updateinfo3", params, function(d) {
                    viewApi.go("#zzxx4");
                    //获取第5页的数据
                    if($.getUrlParam("p")) {
                        if($.cookie("pid")){
                            getRegisterData($.cookie("pid"),5);
                        }
                    } else {
                        if($.cookie("id")){
                            getRegisterData($.cookie("id"),5);
                        }
                    }
                }, true).always(function() {
                    mui(btnObj).button("reset");
                });
            });

            $(document).on("tap", "#nextStep5", function() {
                //验证输入信息
                if($("#PersonCardUrl").attr("src") == "/img/mfsczp.jpg") {
                    mui.toast("请上传经营者手持身份证照!");
                    return false;
                }
                // if($("#PermitUrl").attr("src") == "/img/mfsczp.jpg") {
                //     mui.toast("请上传许可资质证明!");
                //     return false;
                // }
                var btnObj = this;
                mui(btnObj).button("loading");
                params = {};
                params = {
                    PersonCardUrl: $("#PersonCardUrl").attr("src")
                    //PermitUrl: $("#PermitUrl").attr("src")
                };
                if($.getUrlParam("p")) {
                    params.IsPlatform = true; //是商家还是地方平台
                    params.Id = $.cookie("pid");
                } else {
                    params.IsPlatform = false; //是商家还是地方平台
                    params.Id = $.cookie("id");
                }
                utils.postRequest("localteamOther/updateinfo4", params, function (d) {
                    viewApi.go("#skxx");
                }, true).always(function () {
                    mui(btnObj).button("reset");
                });
            });

            $(document).on("tap", "#nextStep6", function() {
                if(utils.isNull($("#BankCardNO").val())) {
                    mui.toast("请输入银行卡号!");
                    return false;
                }
                //if (!utils.luhmCheck($("#BankCardNO").val())) {
                //    mui.toast("输入银行卡号格式不正确,请检查!");
                //    return false;
                //}
                if(utils.isNull($("#AccountName").val())) {
                    mui.toast("请输入开户名!");
                    return false;
                }
                if(utils.isNull($("#BankItemId").val())) {
                    mui.toast("请选择开户行!");
                    return false;
                }
                if(utils.isNull($("#BankBranchName").val())) {
                    mui.toast("请输入支行!");
                    return false;
                }
                if(utils.isNull($("#Bank").find(".province").html())) {
                    mui.toast("请选择开户行所在地!");
                    return false;
                }

                //验证输入信息 递交数据到服务器
                var params = {
                    UserName: $.trim($("#LinkTel").val()),
                    LinkTel: $.trim($("#LinkTel").val()),
                    OpeningProvince: $.trim($("#OpeningProvince").find(".province").html()),
                    OpeningCity: $.trim($("#OpeningProvince").find(".city").html()),
                    OpeningTown: $.trim($("#OpeningProvince").find(".area").html()),
                    WorkAddress: $("#WorkAddress").val(),
                    ManagementId: $("#Management").val(),
                    BusinessLicenseId: $("[BusinessLicenseId].mui-btn-danger").attr("BusinessLicenseId"),
                    BusinessLicenseName: $("#BusinessLicenseName").val(),
                    //UniformCreditNO: $("#UniformCreditNO").val(),
                    BusinessLicenseNO: $("#BusinessLicenseNO").val(),
                    LegalPerson: $("#LegalPerson").val(),
                    RegisterProvince: $.trim($("#RegisterAdr").find(".province").html()),
                    RegisterCity: $.trim($("#RegisterAdr").find(".city").html()),
                    RegisterTown: $.trim($("#RegisterAdr").find(".area").html()),
                    DetailAddress: $("#DetailAddress").val(),
                    BusinessTermId: $("[BusinessTermId].mui-btn-danger").attr("BusinessTermId"),
                    BusinessTermStart: $("#BusinessTermStart").val(),
                    BusinessTermEnd: $("#BusinessTermEnd").val(),
                    LinkMan: $("#LinkMan").val(),
                    CardNO: $("#CardNO").val(),
                    Email: $("#Email").val(),
                    LowQuality: $("#LowQuality").val(),
                    //AccreditUrl: $("#AccreditUrl").attr("src"),
                    BusinessLicenseUrl: $("#BusinessLicenseUrl").attr("src"),
                    PersonCardUrl: $("#PersonCardUrl").attr("src"),
                    //PermitUrl: $("#PermitUrl").attr("src"),
                    CardNOUrl_A: $("#CardNOUrl_A").attr("src"),
                    CardNOUrl_B: $("#CardNOUrl_B").attr("src"),
                    AccountTypeId: $("[AccountTypeId].mui-btn-danger").attr("AccountTypeId"),
                    AccountName: $("#AccountName").val(),
                    BankCardNO: $("#BankCardNO").val(),
                    BankProvince: $.trim($("#Bank").find(".province").html()),
                    BankCity: $.trim($("#Bank").find(".city").html()),
                    //BankTown:$.trim($("#Bank").find(".area").html()),
                    BankItemId: $("#BankItemId").val(),
                    BankBranchName: $("#BankBranchName").val(),
                    InvitationNO: $("#InvitationNO").val()
                };
                if($.getUrlParam("p")) {
                    params.IsPlatform = true; //是商家还是地方平台
                    params.Id = $.cookie("pid");
                } else {
                    params.IsPlatform = false; //是商家还是地方平台
                    params.Id = $.cookie("id");
                }
                var btnObj = this;
                mui(btnObj).button("loading");
                utils.postRequest("localteamOther/register", params, function() {
                    viewApi.go("#skxx2");
                    //这时候需要把保存的信息清掉
                    if($.getUrlParam("p")) {
                        $.cookie("pid","");
                    } else {
                        $.cookie("id","");
                    }
                }, true).always(function(d) {
                    mui(btnObj).button("reset");
                });
            });
            $(document).on("tap", "#nextStep7", function() {
                mui.openWindow("/index.html", "/index.html");
            });
            mui.ready(function() {
                /**
                 * 获取对象属性的值
                 * 主要用于过滤三级联动中,可能出现的最低级的数据不存在的情况,实际开发中需要注意这一点;
                 * @param {Object} obj 对象
                 * @param {String} param 属性名
                 */
                var _getParam = function(obj, param) {
                    return obj[param] || '';
                };

                var nativePlacePicker = new mui.PopPicker({
                    layer: 3
                });
                nativePlacePicker.setData(cityData3);
                $(document).on("tap", "#OpeningProvince,#RegisterAdr", function() {
                    var obj = $(this);
                    nativePlacePicker.show(function(items) {
                        //                        obj.html('<span class="province">' + _getParam(items[0], 'text') + '</span><span class="city">' + _getParam(items[1], 'text') + '</span>');
                        obj.html('<span class="province">' + _getParam(items[0], 'text') + '</span><span class="city">' + _getParam(items[1], 'text') + '</span><span class="area">' + _getParam(items[2], 'text') + '</span>');
                        var Openparams = {}
                        Openparams.Province = $.trim($("#OpeningProvince").find(".province").html());
                        Openparams.City = $.trim($("#OpeningProvince").find(".city").html());
                        Openparams.Town = $.trim($("#OpeningProvince").find(".area").html());
                        utils.getRequest("localteamOther/IsExist", Openparams, function(d) {
                            if(d.Data == true) {
                                if($.getUrlParam("p")) {
                                    mui.toast("该城市已存在地方平台,请选择其他城市!");
                                }
                            } else {
                                if($.getUrlParam("p")) {

                                } else {
                                    mui.toast("该城市暂无地方平台,请选择其他城市!");
                                }
                            }
                        }, true);
                    });
                });

                var cityPicker = new mui.PopPicker({
                    layer: 2
                });
                cityPicker.setData(cityData);
                $(document).on("tap", "#Bank", function() {
                    var obj = $(this);
                    cityPicker.show(function(items) {
                        obj.html('<span class="province">' + _getParam(items[0], 'text') + '</span><span class="city">' + _getParam(items[1], 'text') + '</span>');
                    });
                });

                $(document).on("tap", "[BusinessLicenseId]", function() {
                    $("[BusinessLicenseId]").removeClass("mui-btn-danger").removeClass("mui-btn-outlined");
                    $(this).addClass("mui-btn-danger").addClass("mui-btn-outlined");
                });

                $(document).on("tap", "[BusinessTermId]", function() {
                    $("[BusinessTermId]").removeClass("mui-btn-danger").removeClass("mui-btn-outlined");
                    $(this).addClass("mui-btn-danger").addClass("mui-btn-outlined");
                    if($("[BusinessTermId].mui-btn-danger").attr("BusinessTermId") == 2) {
                        $("#BussinessTime").addClass("hide");
                    } else {
                        $("#BussinessTime").removeClass("hide");
                    }
                });

                $(document).on("tap", "[AccountTypeId]", function() {
                    $("[AccountTypeId]").removeClass("mui-btn-danger").removeClass("mui-btn-outlined");
                    $(this).addClass("mui-btn-danger").addClass("mui-btn-outlined");
                });

                $("#BusinessTermStart").mobiscroll().date({
                    theme: "", // Specify theme like: theme: 'ios' or omit setting to use default
                    mode: "scroller", // Specify scroller mode like: mode: 'mixed' or omit setting to use default
                    display: "center", // Specify display mode like: display: 'bottom' or omit setting to use default
                    lang: "zh", // Specify language like: lang: 'pl' or omit setting to use default
                    dateFormat: "yy-mm-dd"
                });
                $("#BusinessTermEnd").mobiscroll().date({
                    theme: "", // Specify theme like: theme: 'ios' or omit setting to use default
                    mode: "scroller", // Specify scroller mode like: mode: 'mixed' or omit setting to use default
                    display: "center", // Specify display mode like: display: 'bottom' or omit setting to use default
                    lang: "zh", // Specify language like: lang: 'pl' or omit setting to use default
                    dateFormat: "yy-mm-dd", // 日期格式
                    max: new Date(new Date().getFullYear() + 100, 11, 31)
                });

            });
        }
    };
    window.accountUi = accountUi;
View Code
2、
6.返回顶部
 
7.返回顶部
 
8.返回顶部
 
9.返回顶部
 
10.返回顶部
 
 
11.返回顶部
 
warn作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/storebook/p/8567763.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值