当前位置: 网站首页>小程序开发>网站优化

如东网站制作【如东网站优化】如东建网站、如东微信公众号运营、如东网页设计、如东微信小程序商城

发表日期: 2021-04-26 15:39:32 浏览次数:85

如东网站制作【如东网站优化】如东建网站、如东微信公众号运营、如东网页设计、如东微信小程序商城


如东县,江苏省南通市下辖县 [1]  ,位于江苏省东南部、长江三角洲北翼。县境南与通州区为邻,西与如皋市接壤,西北与海安市毗连,东面和北面濒临黄海。截至2020年末,全县下辖3个街道、12个乡镇 [2]  ,陆域面积1872平方千米,海域面积4758平方千米 [3]  ,常住人口97.71万人,实现地区生产总值1053.42亿元 [4]  。

如东是江海盐垦文化的代表。秦汉以前县境为长江口沙洲,故称扶海洲。长江、黄淮冲积成陆后,如东盐业兴起,亭场林立,至明清繁盛一时。民国之后,沿海逐步废灶兴垦,现代农渔业得到发展。 [5]  1988年对外开放后,如东沿海进一步开发,建成南黄海优良深水港口洋口港。 [6] 

2019年7月,被列为国家知识产权强县工程示范县(区) [7]  。2019年10月8日,被评为2019年度全国综合实力百强县市、2019年度全国投资潜力百强县市、2019年度全国绿色发展百强县市、2019全国营商环境百强县 [8-9]  。2020年7月29日,入选2019年重新确认国家卫生乡镇(县城)名单。 [10]  2020年12月,社科院百强县榜单中如东排名第45 [11]  。


当客户端需要调用接口服务时,可以将PhalApi封装的SDK提供给客户端开发工程师。目前客户端SDK包已支持的开发语言有:

  • JAVA

  • Objective-C

  • PHP

  • C#

  • Javascript

  • Go

  • Ruby

  • Python

客户端也可以根据自己的实际情况,封装专属的接口服务请求类。

在与客户端联调的过程中,往往会发现一些有趣的问题。例如字符编码问题,返回字段的类型问题,部分接口服务的签名验证等。简而言之,实践出真知。

5.4.2 与管理后台的联调

WeTime项目的一个特色是它的管理后台的全部数据,也是通过接口服务来获取或操作的。这与以往的管理后台的实现方式不一样,传统方式是管理后台直接操作数据库,但对于存在多个客户端的架构中,直接操作数据库不能保证业务规则的一致性。因此,尽早考虑打造项目的接口中间层,统一业务规则,业务项目可以从中获益。

提供给管理后台的接口服务,与提供给移动App的接口服务没有明显的差异,但存在微妙的区别。首先,是访问接口服务模块的划分。因为在管理后台往往需要一些更高级别、能操纵核心业务数据的功能,因此把管理后台的接口服务与移动App业务的接口服务划分在不同的模块,有助于保护接口服务的受限访问。另外,管理后台通常是提供给内部人员使用的,是针对内部的客户端,而移动App是提供给最终用户使用的,即针对市场的客户端。对于这些内部的操作流程,很多时候都需要对每次操作进行详细的纪录,以便进行业务上的复核与审计。即相比于提供给最终用户的接口服务,提供给内部人员的接口服务,在实现时更需要加强权限管理,操作纪录。

WeTime的管理后台,是基于Yii框架开发的,前端则使用了Bootsrap和jQuery进行页面布局和交互。下面是在管理后台最终查看订阅号的运行效果局部截图。

图5-10 管理后台查看订阅号页面

图5-10 管理后台查看订阅号页面

对于此管理后台,可以使用PhalApi提供的PHP版SDK包,也可以自行封装对接口服务的请求。假设已封装在PhalApiClient类,在实现类似图5-10的展示类功能时,与以往实现方式不同的是,现在需要通过PhalApiClient类从远程的接口服务获取用户的信息,而不再是直接数据库中获取。其实现的代码片段是:

    public function actionUserManagerShow()
    {
        $this->pageCurPosition['订阅号管理'] = '?r=DailyOperations/userManager';
        $this->pageCurPosition[] = '订阅号查看';
        // 更多页面设置 ... ...

        $userId = isset($_REQUEST['userId']) ? intval($_REQUEST['userId']) : 0;
        if ($userId <= 0) {
            $this->redirect('?r=DailyOperations/userManager');
            return;
        }

        $tip = '<br/>';
        $status = null;
        $dataProvider = null;
        $totalUserCount = 0;
        $userInfo = array();

        $model = new UserForm();
        $model->userId = $userId;

        $apiClient = new PhalApiClient();
        $apiClient->request('User.Info', array('otherUserId' => $userId));        

        $tip .= $apiClient->getMsg();
        $status = $apiClient->getRet();

        if ($apiClient->getRet() == PhalApiClient::STATUS_OK) {
            $data = $apiClient->getData();
            $userInfo = $data['user'];

            $model->attributes = $userInfo;
            $model->userId = $userId;
            // 更多对返回字段的处理 ... ...
        }

        // 页面渲染
        if (empty($userInfo)) {
            $this->render('confirm', 
                array(
                    'title' => '用户不存在或者已被删除', 
                    'msg' => $apiClient->getMsg(), 
                    'jumpUrl' => '?r=DailyOperations/userManager', 
                    'backUrl' => '?r=DailyOperations/userManager')
                );
            return;
        }

        $this->render('userManagerShow', array('tip' => $tip, 'status' => $status, 'model' => $model, 'userInfo' => $userInfo));
    }复制代码

上面这段代码有点长,但不难理解。先是对页面左侧菜单、页面标题的页面设置,接着是准备和初始化页面数据,以便请求远程接口服务User.Info获取指定用户的信息。随后是对接口返回的结果进行处理,以及对页面的渲染处理。

对应的模板页面的代码为:

<h3>基本信息</h3><table class="table table-hover">
      <thead>
        <tr>
          <th width="140px">用户ID</th>
          <th><?php echo $model->userId; ?></th>
        </tr>
      </thead>

      <tbody>
        <tr width="140px">
            <td>头像</td>
            <td><img id="show_UserForm_file" class="img-thumbnail" src="<?php echo !empty($model->avatar) ? $model->avatar : '/images/WeTim_Logo_128.png'; ?>" style="width:100px;"></td>
        </tr>
        <tr>
          <td>用户名/登录账号</td>
          <td><?php echo $model->username; ?></td>
        </tr>
        <tr>
          <td>昵称</td>
          <td><?php echo $model->nickname; ?></td>
        </tr>
        <tr>
          <td>用户类型</td>
          <td><?php echo $model->userType == 1 ? '<font color="red">自媒体</font>' : '<font color="blue">普通用户</font>'; ?></td>
        </tr>
        <tr>
          <td>来源的头像Url</td>
          <td><?php echo $model->comePic; ?></td>
        </tr>
        <tr>
          <td>来源的Url</td>
          <td><a href="<?php echo $model->comeUrl; ?>" target="_blank"><?php echo $model->comeUrl; ?></a></td>
        </tr>
        <tr>
          <td>来源的名称</td>
          <td><?php echo $model->comeName; ?></td>
        </tr>
        <tr>
          <td>粉丝数量</td>
          <td><?php echo $model->fans; ?></td>
        </tr>
      </tbody></table>复制代码

又如我们熟悉的日历事件发布,在管理后台最终发布日历事件的运行效果局部截图,请见5-7。

图5-11 管理后台发布日历事件页面

图5-11 管理后台发布日历事件页面

可以看到,这里也同样有图片上传功能,也需要进行事件发布,因此可以很好地重用已有的接口服务,而不再需要在管理后台系统重复实现。对于此日历事件发布,在管理后台对应的实现代码片段是:

    public function actionEventAdd()
    {
        $this->pageCurPosition[] = '事件添加';
        $this->setPageTitle($this->headerTitle . ' - ' . Yii::app()->name);
        $this->pageLeftBarPos = 12;

        $tip = '';
        $status = null;

        $model = new EventForm();
        $model->time = date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']);

        if (isset($_POST['EventForm'])) {
            $model->attributes = $_POST['EventForm'];
            if($model->validate()){
                $tip .= '<br/>';

                $model->pics = isset($_POST['pics']) && is_array($_POST['pics']) ? $_POST['pics'] : array();

                // 调用接口服务发布日历事件
                $apiClient = PhalApiClient::getInstance();
                $apiClient->request('Event.Post', $model->toArray());

                if ($apiClient->getRet() == PhalApiClient::STATUS_OK) {
                    $apiData = $apiClient->getData();
                    if ($apiData['code'] == 0) {
                        $tip .= sprintf('已经为用户:<strong>%s</strong>,成功添加事件:<strong>%s</strong>', $model->userId, $model->title);
                        $status = PhalApiClient::STATUS_OK;
                    } else {
                        $tip .= sprintf('<font color="red">添加失败,code = %s </font>', $apiData['code']);
                    $status = PhalApiClient::STATUS_WRONG;
                    }
                } else {
                    $tip .= sprintf('<font color="red">添加失败,错误信息:%s </font>', $apiClient->getMsg());
                    $status = PhalApiClient::STATUS_ERROR;
                }
            }
        }

        $this->render('eventAdd', array('tip' => $tip, 'status' => $status, 'model' => $model));
    }

c51c866ffa1ab3457f2021e8bbdbcc1.jpg

如东网站制作如东网站优化如东建网站、如东微信公众号运营、如东网页设计、如东微信小程序商城

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: http://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878