青岛网页建设_php空间购买_郑州网站推广_惠州seo博客 图5-1数据库连接原理

    1. 登录模块的实现

为确保系统安全性,系统操作员只有在登录界面输入正确的用户名、密码、权限以及验证码,单击“登录”按钮后才能够进入本系统的主界面。

用户登录流程图如下所示。

图5-2用户登录流程图

登录界面如下图所示。

图5-3登录界面

用户登录的逻辑代码如下所示。

/**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        QueryWrapper wrapper = new QueryWrapper<User>();

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

}

    public String select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

        sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

        }

        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

        }

        log.info("[{}] - 查询操作,sql: {}",table,sql);

        return sql.toString();

}

    public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

    1. 用户模块的实现
      1. 注册模块的实现

用户输入用户名、密码、电话、姓名等必填信息后,点击注册按钮完成用户的注册。

用户注册流程图如下所示。

图5-5用户注册流程图

用户注册界面如下图所示。

图5-6用户注册界面

      1. 网站公告模块的实现

用户点击网站公告按钮进入公告列表,可以点击查看,管理员发布网站公告,可以对公告进行增删改查操作。

发表公告流程图如下所示。

图5-7发布公告流程图

网站公告界面如图所示。

图5-8网站公告界面

网站公告关键代码如下所示。

@RequestMapping("/get_list")

    public Map<String, Object> getList(HttpServletRequest request) {

        Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

        return success(map);

      1. 旅游产品模块的实现

用户点击某个旅游产品进入旅游产品详细页,点击旅游产品页,进行产品浏览,管理员可以对景点信息进行增删改查。

旅游产品流程图如下所示。

图5-9景点信息流程图

旅游产品界面如图所示。

图5-10旅游产品界面

旅游产品关键代码如下所示。

@RequestMapping("/get_obj")

    public Map<String, Object> obj(HttpServletRequest request) {

        List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

}

    1. 管理员模块的实现
      1. 公共管理模块的实现

系统公共管理主要是对新公告的添加和旧公告的删除。这个权限只有管理员具有。

公共管理界面如下图所示。

图5-11网站公告管理界面

公共管理关键代码如下所示。

@RequestMapping("/get_list")

    public Map<String, Object> getList(HttpServletRequest request) {

        Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

        return success(map);

      1. 密码修改模块的实现

密码修改是对当前登录用户的密码进行修改,在管理员登录页面后右上方也能进行密码修改。

密码修改流程图如下所示。

图5-12密码修改流程图

      1. 旅游产品管理模块的实现

旅游产品添加功能主要指对其编号、名称、介绍等一些基本信息的添加、删除和修改。产品查询能根据景点名称等多种条件对景点信息进行查询。

旅游产品添加流程图如下所示。

图5-13旅游产品添加流程图

旅游产品管理如下图所示。

图5-14旅游产品管理界面

旅游产品添加管理界面如下所示。

图5-15旅游产品添加管理界面

旅游产品添加管理关键代码如下所示。

 @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        Map<String,Object> paramMap = service.readBody(request.getReader());

        this.addMap(paramMap);

        return success(1);

}

    @Transactional

    public Map<String, Object> addMap(Map<String,Object> map){

        service.insert(map);

        return success(1);

}

  1. 系统测试
    1. 测试目标

系统测试是用于检查软件的质量、性能、可靠性等是否符合用户需求。一套严谨的、规范的、完善的测试过程将大大提高软件的质量、可信度、可靠性,降低软件的出错率,降低用户风险系数。通过在计算机上对系统进行测试试验并从中发现此系统中存在的问题和错误然后加以修改,使之更加符合用户需求。

1.测试的目的是通过测试来发现程序在执行过程中的错误的过程。

2.好的测试方案是可以检验出还未被发现的错误的方案。

3.好的测试是发现了到目前为止还未被发现的错误的测试。

4.该系统能够完成景点信息、票务信息、用户维护、公共管理等功能,做到所开发的系统操作简单,尽量使系统操作不受用户对电脑知识水平的限制。

    1. 功能测试

下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。

表6-1 系统登录功能测试用例

功能描述

用于系统登录

测试目的

检测登录时的合法性检查

测试数据以及操作

预期结果

实际结果

输入的用户名和密码带有非法字符

提示用户名或者密码错误

与预期结果一致

输入的用户名或者密码为空

提示用户名或者密码错误

与预期结果一致

输入的用户名和密码不存在

提示用户名或者密码错误

与预期结果一致

输入正确的用户名和密码

登录成功

与预期结果一致

下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的响应情况。得出该功能达到了设计目标。

表6-2 注册功能测试用例

功能描述

用于用户注册

测试目的

检测用户注册时的合法性检查

测试数据以及操作

预期结果

实际结果

输入的手机号不合法

提示请输入正确的手机号码

与预期结果一致

输入的字段为空

提示必填项不能为空

与预期结果一致

输入的密码少于6位

提示密码必须为6-12位

与预期结果一致

输入的密码大于12位

提示密码必须为6-12位

与预期结果一致

下表是景点信息管理功能的测试用例,检测了景点信息管理中对景点信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;用户登录系统。

表6-3 旅游产品管理的测试用例

功能描述

用于旅游产品管理

测试目的

检测旅游产品管理时的各种操作的运行情况

测试数据以及操作

预期结果

实际结果

点击添加旅游产品,必填项合法输入,点击保存

提示添加成功

与预期结果一致

点击添加景点,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击修改旅游产品,必填项修改为空,点击保存

提示必填项不能为空

与预期结果一致

点击修改旅游产品,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击删除旅游产品,选择旅游产品删除

提示删除成功

与预期结果一致

点击搜索旅游产品,输入存在的旅游产品名

查找出旅游产品

与预期结果一致

点击搜索旅游产品,输入不存在的旅游产品名

不显示旅游产品

与预期结果一致

下表是网站公告管理功能的测试用例,检测了网站公告管理中公告发布操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;用户登录系统。

表6-4 网站公告管理的测试用例

功能描述

用于网站公告管理

测试目的

检测网站公告管理时各种操作的情况

测试数据以及操作

预期结果

实际结果

未编辑标题,点击提交

提示请添加标题

与预期结果一致

未编辑内容,点击提交

提示请编辑发布内容

与预期结果一致

未选择发布时间,点击提交

提示请选择发布时间

与预期结果一致

    1. 测试结果

根据以上测试情况,测试结果如下表所示。

表6-5测试结果表

测试项目

测试结果

登录测试

成功

修改密码测试

成功

公告信息测试

成功

类型管理测试

成功

我的订单测试

成功

用户管理测试

成功

旅游产品管理测试

成功

旅游资讯管理测试

成功

">

腾脉网建站

网页价格、自己免费做网站、永久使用、不限域名、百度快照优化公司

广州排名seo公司?

青岛网页建设_php空间购买_郑州网站推广_惠州seo博客

} wap网站设计佛山关键词优化北京网站优化公司建网页宁波网站推广九成seo青岛建网站公司制作一般网站上海优化seo自助建站系统网站生成系统广州推广公司建网站多少钱深圳网站建设卓企重庆网络营销网上交易系统扬州seo哪个网站建站好重庆网站外包长沙微信营销公司平台网站开发网络推广沈阳苏州网站开发公司国外网站搭建分销网站系统公司网站管理组建网站东莞网络营销外包福州seo服务网站优化重庆seo服务

猜你喜欢