制作网页的基本代码_crm厂商排名_青岛栈桥景区_中国机械加工网站官网

外贸网站源码去一品资源

天津做网络推广公司有哪些、cnd设计网是干嘛的、永久使用、不限域名、施工企业管理制度完整版

模板网免费下载素材?

制作网页的基本代码_crm厂商排名_青岛栈桥景区_中国机械加工网站官网

4 新能源汽车换电帮管理小程序详细设计与实现

新能源汽车换电帮管理小程序的详细设计与实现主要是根据前面的新能源汽车换电帮管理小程序的需求分析和新能源汽车换电帮管理小程序的总体设计来设计页面并实现业务逻辑。主要从新能源汽车换电帮管理小程序界面实现、业务逻辑实现这两部分进行介绍。

4.1用户功能模块

4.1.1 前台首页界面

当进入新能源汽车换电帮管理小程序的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,再往下是公告信息,其主界面展示如下图4-1所示。

图4-1 前台首页界面图

4.1.2 用户注册界面

新能源汽车换电帮管理小程序的用户和换电站管理者时可以进行注册登录,当用户右上角“注册”按钮的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用用户注册界面展示如下图4-2所示。

图4-2注册界面图

注册关键代码如下所示。

/**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

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

        query.put("username",user.getUsername());

        List list = service.select(query, new HashMap<>()).getResultList();

        if (list.size()>0){

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

        }

        user.setUserId(null);

        user.setPassword(service.encryption(user.getPassword()));

        service.save(user);

        return success(1);

}

/**

     * 用户ID:[0,8388607]用户获取其他与用户相关的数据

     */

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Column(name = "user_id")

    private Integer userId;

    /**

     * 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

     */

    @Basic

    @Column(name = "state")

    private Integer state;

    /**

     * 所在用户组:[0,32767]决定用户身份和权限

     */

    @Basic

    @Column(name = "user_group")

    private String userGroup;

    /**

     * 上次登录时间:

     */

    @Basic

    @Column(name = "login_time")

    private Timestamp loginTime;

    /**

     * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "phone")

    private String phone;

    /**

     * 手机认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "phone_state")

    private Integer phoneState;

    /**

     * 用户名:[0,16]用户登录时所用的账户名称

     */

    @Basic

    @Column(name = "username")

    private String username;

    /**

     * 昵称:[0,16]

     */

    @Basic

    @Column(name = "nickname")

    private String nickname;

    /**

     * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

     */

    @Basic

    @Column(name = "password")

    private String password;

    /**

     * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "email")

    private String email;

    /**

     * 邮箱认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "email_state")

    private Integer emailState;

    /**

     * 头像地址:[0,255]

     */

    @Basic

    @Column(name = "avatar")

    private String avatar;

    /**

     * 创建时间:

     */

    @Basic

    @Column(name = "create_time")

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    private Timestamp createTime;

    @Basic

    @Transient

    private String code;

}

4.1.3 用户登录界面

新能源汽车换电帮管理小程序中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到新能源汽车换电帮管理小程序的首页中;否则将会提示相应错误信息,用户登录界面如下图4-3所示。

图4-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;

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

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

            map.put("username", username);

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

        }

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

            map.put("email", email);

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

        }

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

            map.put("phone", phone);

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

        }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.select(groupMap, new HashMap<>()).getResultList();

        if (groupList.size()<1){

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

        }

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

        //查询用户审核状态

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

            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();

            String res = String.valueOf(service.runCountSql(sql).getSingleResult());

            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, "账号或密码不正确");

        }

}

4.1.4 换电站详情界面

用户可以查看换电站信息,在查询到自己想要了解的换电站的时候,可以进入查看详细的介绍,点击“预约”这一按钮以后会跳转到预约信息填写的界面,根据提示填写好预约的信息,点击“提交”以后预约就完成了,在换电站详情这个界面,同时支持用户对喜欢的换电站进行收藏、点赞的功能,换电站详情展示页面如图4-4所示。

                         

图4-4 换电站详情界面图

4.1.5 预约界面

当用户在预约详情界面想要进行预约,点击下方的“预约”按钮,就会跳转到预约信息填写界面,根据界面提示输入预约信息,点击“提交”按钮,预约就完成了,预约界面如下图4-5所示。

图4-5预约界面图

4.1.6密码修改界面

用户使用该新能源汽车换电帮管理小程序注册完成后,用户对登录密码有修改需求时,系统也可以提供用户修改密码权限。系统中所有的操作者能够变更自己的密码信息,执行该功能首先必须要登入系统,然后选择密码变更选项以后在给定的文本框中填写初始密码和新密码来完成修改密码的操作。在填写的时候,假如两次密码填写存在差异,那么此次密码变更操作失败,下面的图片展示的就是该板块对应的工作面。界面如下图4-8所示。

                       

图4-6 密码修改界面图

4.2管理人员功能模块

4.2.1用户管理界面

新能源汽车换电帮管理小程序中的管理人员在“用户管理”这一菜单是中可以对注册的电车用户,换电站管理者进行管控。界面如下图4-7所示。

图4-7用户管理界面图

用户管理的逻辑代码如下:

 @PostMapping("/add")

    @Transactional

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

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

    @Transactional

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

        service.insert(map);

        return success(1);

}

    public Map<String,Object> readBody(BufferedReader reader){

        BufferedReader br = null;

        StringBuilder sb = new StringBuilder("");

        try{

            br = reader;

            String str;

            while ((str = br.readLine()) != null){

                sb.append(str);

            }

            br.close();

            String json = sb.toString();

            return JSONObject.parseObject(json, Map.class);

        }catch (IOException e){

            e.printStackTrace();

        }finally{

            if (null != br){

                try{

                    br.close();

                }catch (IOException e){

                    e.printStackTrace();

                }

            }

        }

        return null;

}

    public void insert(Map<String,Object> body){

        StringBuffer sql = new StringBuffer("INSERT INTO ");

        sql.append("`").append(table).append("`").append(" (");

        for (Map.Entry<String,Object> entry:body.entrySet()){

            sql.append("`"+humpToLine(entry.getKey())+"`").append(",");

        }

        sql.deleteCharAt(sql.length()-1);

        sql.append(") VALUES (");

        for (Map.Entry<String,Object> entry:body.entrySet()){

            Object value = entry.getValue();

            if (value instanceof String){

                sql.append("'").append(entry.getValue()).append("'").append(",");

            }else {

                sql.append(entry.getValue()).append(",");

            }

        }

        sql.deleteCharAt(sql.length() - 1);

        sql.append(")");

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

        Query query = runCountSql(sql.toString());

        query.executeUpdate();

    }

4.2.2 公共管理界面

管理员点击“公共管理”这一菜单会显示轮播图、公告栏这两个子菜单,管理员可以对前台展示的公告消息和轮播图进行设置,界面如下图4-8所示。

图4-8公共管理界面图

公共管理逻辑代码如下所示。

  @RequestMapping(value = "/del")

    @Transactional

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

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

}

    @Transactional

    public void delete(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");

        sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));

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

        Query query1 = runCountSql(sql.toString());

        query1.executeUpdate();

    }

4.2.3 电池型号管理界面

点击“电池型号”按钮会显示所有的电池型号信息,如果想要添加新的电池型号,点击“添加”按钮根据提示输入电池型号信息,点击“提交”后在电池型号管理界面就可以显示了,如果信息有错,点击“编辑”按钮可以对电池型号信息进行更新维护,也可以直接删除某一电池型号,界面如下图4-9所示。

图4-9电池型号管理界面图

4.2.4 换电站管理界面

点击“换电站管理”按钮会显示所有的换电站信息,如果想要添加新的换电站,点击“添加”按钮根据提示输入换电站信息,点击“提交”后在换电站管理界面就可以显示了,如果信息有错,点击“编辑”按钮可以对换电站信息进行更新维护,也可以直接删除某一换电站,界面如下图4-10所示。

图4-10换电站攻略界面图

4.2.5 预约管理界面

点击“预约管理”按钮会显示所有的预约信息,如果想要添加新的预约,点击“添加”按钮根据提示输入预约信息,点击“提交”后在预约管理界面就可以显示了,如果信息有错,点击“编辑”按钮可以对预约信息进行更新维护,也可以直接删除某一预约,界面如下图4-11所示。

图4-11预约管理界面图

4.2.6 电桩信息管理界面

点击“电桩信息管理”按钮会显示所有的电桩信息,如果想要添加新的电桩信息,点击“添加”按钮根据提示输入电桩信息,点击“提交”后在电桩信息管理界面就可以显示了,如果信息有错,点击“编辑”按钮可以对电桩信息进行更新维护,也可以直接删除某一电桩信息,界面如下图4-12所示。

图4-12电桩信息管理界面图

4.2.7 订单评价管理界面

点击“订单评价管理”按钮会显示所有的订单评价信息,如果想要添加新的订单评价信息,点击“添加”按钮根据提示输入订单评价信息,点击“提交”后在订单评价管理界面就可以显示了,如果信息有错,点击“编辑”按钮可以对订单评价信息进行更新维护,也可以直接删除某一订单评价信息,界面如下图4-13所示。

图4-13订单评价管理界面

5系统测试

5.1 系统测试用例

系统测试包括:用户登录功能测试、订单评价展示功能测试、订单信息添加、电桩搜索、密码修改、预约功能测试,如表5-1、5-2、5-3、5-4、5-5、5-6所示:

用户登录功能测试:

表5-1 用户登录功能测试表

用例名称

用户登录系统

目的

测试用户通过正确的用户名和密码可否登录功能

前提

未登录的情况下

测试流程

1) 进入登录页面

2) 输入正确的用户名和密码

预期结果

用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入

实际结果

实际结果与预期结果一致

订单评价查看功能测试:

表5-2 订单评价查看功能测试表

用例名称

订单评价查看

目的

测试订单评价查看功能

前提

测试流程

点击订单评价

预期结果

可以查看到所有订单评价信息

实际结果

实际结果与预期结果一致

管理员添加订单信息界面测试:

表5-3 管理员添加订单信息界面测试表

用例名称

添加订单信息测试用例

目的

测试订单信息添加功能

前提

管理员用户正常登录情况下

测试流程

1)管理员点击订单信息,然后点击添加后并填写信息。

2)点击进行提交。

预期结果

提交以后,页面首页会显示新的订单信息 

实际结果

实际结果与预期结果一致

电桩搜索功能测试:

表5-4电桩搜索功能测试表

用例名称

电桩搜索测试

目的

测试电桩搜索功能

前提

测试流程

1)在搜索框填入搜索关键字。

2)点击搜索按钮。

预期结果

页面显示包含有搜索关键字的电桩

实际结果

实际结果与预期结果一致

密码修改搜索功能测试:

表5-5 密码修改功能测试表

用例名称

密码修改测试用例

目的

测试管理员密码修改功能

前提

管理员用户正常登录情况下

测试流程

1)管理员密码修改并完成填写。

2)点击进行提交。

预期结果

使用新的密码可以登录

实际结果

实际结果与预期结果一致

预约功能测试:

表5-6预约功能测试表

用例名称

预约测试用例

目的

测试用户预约功能

前提

用户正常登录情况下

测试流程

1)搜索查看电桩信息,点击预约。

2)填写预约信息,点击进行提交。

预期结果

预约成功

实际结果

实际结果与预期结果一致

5.2 系统测试结果

通过编写新能源汽车换电帮管理小程序的测试用例,已经检测完毕用户登录模块、订单评价展示模块、订单信息添加模块、电桩搜索模块、密码修改模块、预约模块功能测试,通过这6大模块为新能源汽车换电帮管理小程序的后期推广运营提供了强力的技术支撑。

模板建站服务公司东莞大岭山中西医结合医院户外广告牌报价明细表沪佳哪个好信息查询系统丹阳网站建设开发武汉建设工程交易信息网域名网站有哪些网站服务器怎么看是哪个厂家的ie浏览器手机版下载教育机构如何引流与推广网络营销设计国家食品查询网入口拓者设计吧室内设计论坛域名查询到期时间万方网官网入口义乌小程序网页游戏源码交易平台建设局工资一年多少钱自己开设计工作室华为云专业网站定制哪个推客平台最好抖音代运营考核标准2000个免费货源网站微信答题小程序注册网站要身份证吗设计之家房屋装修游戏破解版hao123全面分析广告创意设计总结幼儿园线性主题网络图设计沈阳企业关键词优化

猜你喜欢

  • 友情链接:
  • 施工企业负责人带班检查计划 阿里巴巴外发加工网是否真实 兰州装饰公司十强 无需登录网页小游戏网站 搜索引擎推广策略 咋样做网站