总结一下用面向对象写法调用借口

总结一下用面向对象写法调用借口

<script src="jquery.min.js"></script>
<script src="store.min.js"></script>
<script src="layer/layer.js"></script>
<script>
	//获取链接参数
	function GetQueryString(name) {
		var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
		var arr = window.location.search.substr(1).match(reg);
		if (arr != null) {
			return decodeURIComponent(arr[2])
		};
		return null;
	};
	var debug = GetQueryString('debug') ? GetQueryString('debug') : 'false'; //软件版本

	//正试地址
	var stockDomain = "http://mapi.ktkt.com";
	if (debug == 'true') {
		//测试地址
		stockDomain = "http://utest.mapi.ktkt.com";
	}

	var token = GetQueryString('token'); //用户token
	var origin = GetQueryString('origin');
	var ajaxSengMode = !("WebSocket" in window ? true : false);

	// 标题切换
	// $('.set_left').find('a').on('click', function (e) {
	// 	e.preventDefault();
	// 	var url = $(this).attr("href");
	// 	window.location.href = url + "?token=" + token + "&origin=" + origin + '&debug=' + debug;
	// 	return false;
	// });
	
	var myPermissionInstance = new MyPermission({
		token: token,
		origin: origin,
		debug: debug,
		apiUrl: stockDomain,
		advancedBrowser: ajaxSengMode
	});
	console.log(myPermissionInstance);
	myPermissionInstance.Start();
</script>
!(function (win, $) {
    var myPermissionApi = function (options) {
        var domain = options.domain || '';
        var self = this;
        this.isBow = "WebSocket" in window ? true : false;
        this.Err = { "code": 500, "msg": "" };

        this.Error = function (code, msg) {
            var err = this.Err;
            err.code = code;
            err.msg = msg == "error" ? '网络不给力啊,请再次刷新' : msg;
            return err;
        };
        //请求方式
        this.ajaxSendMode = function (url, args, funcOk, funcErr) {
            var self = this;
            if (!self.isBow) {
                self.ajaxSendModeJsonp(url, args, funcOk, funcErr);
                return;
            };
            $.ajax({
                type: 'post',
                url: url,
                dataType: 'json',
                data: args,
                success: function (json) {
                    funcOk(json);
                },
                error: function (errorThrown, textStatus) {
                    if (errorThrown.status === 911) {
                        var errInfo = JSON.parse(errorThrown.responseText);
                        funcErr && funcErr(self.Error(errInfo.code, errInfo.message));
                        return;
                    };
                    funcErr && funcErr(self.Error(errorThrown.status, errorThrown.responseText));
                }
            });
        };
        this.ajaxSendModeGet = function (url, args, funcOk, funcErr) {
            var self = this;
            if (!self.isBow) {
                self.ajaxSendModeJsonp(url, args, funcOk, funcErr);
                return;
            };
            $.ajax({
                type: 'get',
                url: url,
                dataType: 'json',
                data: args,
                cache:false,
                success: function (json) {
                    /* if (json.code && json.message && json.code != 200) {
                        funcErr && funcErr(self.Error(json.code, json.message));
                        return;
                    } */
                    funcOk(json);
                },
                error: function (errorThrown, textStatus) {
                    if (errorThrown.status === 911) {
                        var errIntext = errorThrown.responseText + '';
                        var error = errIntext.replace(/^(\w+)?\(|\)\;$/mg, '');
                        var errInfo = $.parseJSON(error);
                        if (errInfo.code == undefined) {
                            errInfo.code = '25000';
                        };
                        if (errInfo.message == undefined) {
                            errInfo.message = '没有获取到服务器返回错误';
                        };
                        funcErr && funcErr(self.Error(errInfo.code, errInfo.message));
                    }
                }
            });
        };
        this.ajaxSendModeJsonp = function (url, args, funcOk, funcErr) {
            var self = this;
            $.ajax({
                type: 'get',
                url: url,
                dataType: 'jsonp',
                data: args,
                success: function (json) {
                    if (json.code && json.message && json.code != 200) {
                        funcErr && funcErr(self.Error(json.code, json.message));
                        return;
                    }
                    funcOk(json);
                },
                error: function (errorThrown, textStatus) {
                    if (errorThrown.status === 911) {
                        var errIntext = errorThrown.responseText + '';
                        var error = errIntext.replace(/^(\w+)?\(|\)\;$/mg, '');
                        var errInfo = $.parseJSON(error);
                        if (errInfo.code == undefined) {
                            errInfo.code = '25000';
                        };
                        if (errInfo.message == undefined) {
                            errInfo.message = '没有获取到服务器返回错误';
                        };
                        funcErr && funcErr(self.Error(errInfo.code, errInfo.message));
                        return;
                    }
                }
            });
        };

        // 获取我的权限
        this.getMyPermissionArgs = { 'token': '', 'origin': '', 'version': '' };
        this.getMyPermissionReq = function (args, funcOk, funcErr) {
            var url = domain + "/permission/v1/info";
            var args = $.extend(self.getMyPermissionArgs, args);
            self.ajaxSendMode(url, args, funcOk, funcErr);
        };
    }

    var MyPermission = function (options) {
        var defaults = {
            token: "",
            origin: "",
            apiUrl: "", //地址
            advancedBrowser: false //是否为高级浏览器
        };

        this.classTitle = $('#classTitle'); // 课程名称

        this.Err = { "code": 500, "msg": "" };
        this.Error = function (code, msg) {
            var err = this.Err;
            err.code = code;
            err.msg = msg == "error" ? '网络不给力啊,请再次刷新' : msg;
            return err;
        };

        this.options = $.extend({}, defaults, options);
    };
    $.extend(MyPermission.prototype, {
        Start: function () {
            this.init();
        },
        init: function () {
            var self = this;
            this.Layer = win.layer;
            this.Store = win.store;
            this.myPermissionApi = new myPermissionApi({ "domain": this.options.apiUrl });
            //显示权限列表
            this.showPermissionListFunc();
            // 我的权限
            this.getMyPermissionFunc();
        },

        // 我的权限
        getMyPermissionFunc: function () {
            var self = this;
            var args = this.myPermissionApi.getMyPermissionArgs;
            args.token = this.options.token;
            args.origin = this.options.origin;
            args.version = this.Store.get('myPermissionListVersion#');

            this.myPermissionApi.getMyPermissionReq(args, function (data) {
                console.log(data);
                //更新缓存
                if(data.refresh){
                    // 设置我的权限缓存
                    self.Store.set('myPermissionMap#', data.data);
                    // 设置版本号
                    self.Store.set('myPermissionListVersion#',data.version);
                    self.showPermissionListFunc();
                }
            }, function (err) {  
                //清除缓存
                self.localStorageHandle();
                self.showPermissionListFunc();
                self.Layer.msg(err.msg);
            });
        },

        //显示权限列表
        showPermissionListFunc: function (){
            var myPermissionMap = this.Store.get('myPermissionMap#');
            // 缓存不存在,返回
            if (!myPermissionMap) {
                this.classTitle.html('暂无');
                return;
            };
            this.classTitle.html('暂无');
        },
         //清除缓存
        localStorageHandle: function () {
            var self = this;
            self.Store.remove('myPermissionMap#');
            self.Store.remove('myPermissionListVersion#')
        },
    });


    win['MyPermission'] = MyPermission;


})(window, jQuery);

猜你喜欢

转载自blog.csdn.net/weixin_36302575/article/details/84953980