Octopus-系统解析-OctService基类定义

OctService页面服务类,请求上下文

封装了9个属性

数据:UserData,LangItems

用户:SessionID,CustomerID,IsLogin,Customer

业务:CartID,Currency,Language

下面我来说说这几个属性是怎么初始化的,小伙伴先有一个大概的了解,其实非常的简单,理解程序代码要先理解代码的执行流程。执行的流程必然有先后的顺序,下面我让大家看看Octopuscart的先后顺序是怎么走的。

在静态构造函数中加载语言包,静态构造函数只需要执行一次

此时LangItems被初始化

在构造函数中初始化:货币,语言,购物车ID


注意:构造函数中不能获得Session对象,所以此时不能对session进行任何的操作,但是可以对cookie进行操作
货币,语言,购物车ID会被保存到客户端的Cookie中,所以我们先在此处做一次初始化【PS:语言的暂时没用到】

以货币为例:货币在前台页面可以切换。

初始化过程是:先获取系统配置的货币–》Currency具有默认的值–》从cookie中读取客户端的货币代码–》根据此代码对Currency设置–》回写货币代码到cookie【重新刷新了客户端cookie的生命周期】

语言和购物车ID都是这个初始化过程,不过我的项目中语言没有实现,代码逻辑和货币一模一样,可以照葫芦画瓢。

到此时我们已经初始化了4个属性了:

LangItems–Currency–Language–CartID小伙伴继续往下走!

在ProcessRequest中此时Session才可以使用,所以此处可以判断用户是否登陆

HttpContext.Current.Session.SessionID就可以用了,所以一下子就能拿到SessionID,那么如果用户登陆了,就可以检查session,判断是否登陆了获取登陆用户的ID。

判断逻辑非常简单,根据OCKeys.Session_User_ID键值在会话中获取顾客的ID,如果顾客的ID>0,表示当前用户登陆了。

除此之外,还对cookie进行了检查,如果用户选择记住用户选项,那么看看cookie中保存的信息是否有效。如果有效,用于也处于登陆状态。

到此处我们就初始化了SessionID—IsLogin—CustomerID—Customer 等4个选项哦!对了是不是少了一个呢?UserData:UserData我是用来存取数据用的,它在用户登陆的时候会用到,此处先不做介绍。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注