系统设计与编写

August 12 , 2015

本文档参考新浪微博API腾讯接入API微信API,主要方向在于应用层系统在编写时候会碰到的一些问题。

例如会员系统,在开发这个应用的时候,按照开发流程有以下步骤(1-3为后台,4-5为系统):

  • 1.数据库设计
  • 2.后台的基本数据处理CURD
  • 3.后台对外的数据API接口处理(数据的获取,修改),自然也是根据上面的CURD进行扩展编写
  • 4.系统应用层对服务器接口调用时候的认证处理(安全问题,后期的开放平台问题)
  • 5.应用层和前端交互数据(数据安全问题)

关于模型

以前在开发微互动后台的时候总会编写同样的代码,比如:

  • memcache的处理
  • 数据库异常的输出
  • 页面的跳转
  • 数据列表的分页
  • ajax调用时候的action与模型方法的关系

编写一个模型的总体父类,所有的非账号相关的模型类都要进行继承,各个模型都放在各自的modules中。

关于modules的命名规则

比如会员系统:

手机端的命名规则为:evip | 后台命名规则为:evipManage

关于http的api接口都放在api这个modules中,针对于哪个系统就编写相对应的Controller。

关于父类中的方法

  • 读取数据时候的Memcache操作

    无论是单条数据还是列表数据的读取,都需要在Memcache中进行处理,相对的Key的命名方式为:类名+搜索条件

$cache=Yii::app()->cache;//调用缓存

/******获取******/

$list = $cache->get('Text:ghid=123456789,name=aduu,status=1');

/******存储******/

//模型的方法名规范,动作_参数条件,如下动作:getList,参数:ghid,name,status
$list = Text::getList_ghid_name_status('123456789', 'news',1);

//将获取的数据存储到memcache
$cache->set('Text:ghid=123456789,name=aduu,status=1', $list,60);

  • 数据的创建,删除

    在create,update,delete操作的时候,也需要对Memcache进行操作,Yii中CActiveRecord有一些我们可以重写的方法:

    • beforeSave()
    • afterSave()
    • beforDelete()
    • afterDelete()
    • beforeFind()
    • beforeCount()
    • afterFind()

    重写的方法里面可以对缓存进行重新的赋值或者删除,做到拿到的数据减少误差。

  • 数据库的异常问题

    目前的代码中要显示出数据库的错误每次都要使用这段代码:

public static function getSaveErrmsg($model){
    $errmsg = '';
    foreach ($model->errors as $item){
        foreach ($item as $k=>$v){
            $errmsg .= $v .',';
        }
    }
    return $errmsg;
}

关于认证

Oauth认证这块上次corel的文档中大多数的已经说过了,这里简要的提一下,既然是要做开发平台的,那么我们自己的产品也用同样的方式进行处理。

即我们自己有自己的App KeyApp Secret,然后使用同样的方式进行系统的开发。

发表评论

(请不要填写空的评论)
提交评论 使用QQ登录