郑州市建筑材料信息价_活字格能开发企业网站吗_北京市政府网站首都之窗_流量套餐 4呼伦贝尔旅游网站详细设计与实现

呼伦贝尔旅游网站的详细设计与实现主要是根据前面的呼伦贝尔旅游网站的需求分析和呼伦贝尔旅游网站的总体设计来设计页面并实现业务逻辑。主要从呼伦贝尔旅游网站  界面实现、业务逻辑实现这两部分进行介绍。

4.1用户功能模块

4.1.1 前台首页界面

当进入呼伦贝尔旅游网站的时候,首先映入眼帘的是系统的导航栏,下面是轮播图以及系统内容,其主界面展示如下图4-1所示。

 

图4-1 前台首页界面图

4.1.2会员登录界面

呼伦贝尔旅游网站中的前台上注册后的会员是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的会员信息是否一致,只有在一致后将会登录成功并自动跳转到呼伦贝尔旅游网站的首页中;否则将会提示相应错误信息,会员登录界面如下图4-2所示。

 

图4-2会员登录界面图

登录关键代码如下所示。

/**

     * 登录

     * @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.3会员注册界面

不是呼伦贝尔旅游网站 中正式会员的是可以在线进行注册的,如果你没有本呼伦贝尔旅游网站的账号的话,添加“注册”,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用会员注册界面展示如下图4-3所示。

 

图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.4公告栏界面

当点击导航栏上的“公告栏”的时候,就会进入对应的界面查看公告信息,公告栏界面如下图4-4所示。

 

图4-4公告栏界面图

4.1.5我的账户界面

当用户点击右上角“我的”这个按钮,会出现子菜单,点击“我的账户”可以对个人的资料以及登录系统的密码进行设置,我的账户界面如下图4-5所示。

 

图4-5我的账户界面图

4.1.6酒店信息详情界面

当访客点击了任意酒店后将会进入该酒店的详情界面,可以了解到该酒店的酒店名称、酒店星级、酒店房型、房间价格等,同时可以对该酒店进行预定+收藏+点赞+评论,酒店详情展示页面如图4-6所示。

 图4-6酒店信息详情界面图

4.2管理员功能模块

4.2.1 用户管理界面

呼伦贝尔旅游网站中的管理人员是可以对前台注册的会员进行管理的,也可以对管理员进行管控。界面如下图4-7所示。

 

图4-7用户管理界面图

用户管理关键代码如下所示。

public String encryption(String plainText) {

        String re_md5 = new String();

        try {

            MessageDigest md = MessageDigest.getInstance("MD5");

            md.update(plainText.getBytes());

            byte b[] = md.digest();

            int i;

            StringBuffer buf = new StringBuffer("");

            for (int offset = 0; offset < b.length; offset++) {

                i = b[offset];

                if (i < 0)

                    i += 256;

                if (i < 16)

                    buf.append("0");

                buf.append(Integer.toHexString(i));

            }

            re_md5 = buf.toString();

        } catch (Exception e) {

            e.printStackTrace();

        }

        return re_md5;

    }

4.3.2站点管理界面

呼伦贝尔旅游网站中的管理人员在“站点管理”这一菜单中是可以对前台显示的轮播图以及公告栏进行管控。界面如下图4-8所示。

 

图4-8站点管理界面图

站点管理关键代码如下所示。

  @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.4更多管理界面

呼伦贝尔旅游网站中的管理人员在“更多管理”这一菜单下是可以对呼伦贝尔旅游网站内的酒店信息、景区信息、饭店信息、酒店订单、景区订单、饭店订单进行管控的,其管理界面如下图4-9所示。

 

图4-9更多管理界面图

更多管理关键代码如下所示。

@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();

    }

">

网络推广网站培训班

办公室装修怎么做账、设计的拼音、永久使用、不限域名、历史价格查询

城乡规划师证报考条件?

郑州市建筑材料信息价_活字格能开发企业网站吗_北京市政府网站首都之窗_流量套餐

重庆老渔哥网络科技有限公司,是一家以互联网营销为核心的整合营销服务公司。旨在为传统中小企业提供移动互联网营销解决方案,老渔哥提供企业营销型网站定制、网络营销方案定制、微信公众号运营、网站及电商平台运营、企业定制培训、高校培训、主机域名等服务,服务不同行业,涉及教育、房产、餐饮、建材、建筑、旅游、酒店、电商、微商、农产品等上百个行业。老渔哥团队,解决客户的目标用户挖掘问题,降低运营成本并实现利润的最大化。老渔哥提供多渠道营销运营服务,为客户建立强大的营销网络及运营策略,提供针对性的定制型服务、 高效执行和实时把控、无压力沟通、协调一致的营销计划。老渔哥扎根西南区移动互联网营销领域,服务于国内各行业领先客户。老渔哥网络科技以专业和高效的团队,通过对方案、运营策略、营销创意、资源媒介等数据整合, 洞察行业的深度发展,实现企业互联网的跨越和互联网的渠道扩展,帮助客户实现线上线下的完美结合。

商业设计要点2019网页游戏排行榜如何制作一个微信刷题小程序奋进新征程企业门户网站云服务器配置要求企业网站推广的收获与启示网页设计基础教程视频教程如何把静态图片做成动态视频上海天华建筑设计有限公司合肥分公司工作室logo设计360浏览器打开是2345网址导航玛丽与魔女之花网页设计教程成都尚舍设计公司幼儿园项目建设背景服务质量好的外贸营销系统新时代中国特色社会主义心得体会网页制作的开发平台专业深圳网站定制开发关于com的网站ppt模板怎么套用提供营销型网站价格上海公共招聘网站越南注册公司流程和费用国家工商网站查询报名网站建设费用报价站长工具高清有吗网站修改数据目前还能去北京吗成品网页大全下载现在怎么做跨境电商平台室内设计师前景怎么样

猜你喜欢

  • 友情链接:
  • 加强服务保障满足群众急需i 简单网页制作素材图片 平江网站设计多少钱 web开发培训哪家好 怎样才能注册一个公司 当前成都疫情最新情况