电子商务平台如何搭建_游戏源码搭建_外贸福步论坛官网_深圳最新疫情最新消息 4 伊犁旅游攻略网站详细设计与实现

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

4.1用户功能模块

4.1.1 前台首页界面

当进入伊犁旅游攻略网站的时候,首先映入眼帘的是系统的导航栏,下面是轮播图以及系统公告,其主界面展示如下图4-1所示。

图4-1 前台首页界面图

4.1.2 用户注册界面

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

图4-2 前台用户注册界面图

注册逻辑关键代码如下所示。

/**

     * 注册

     * @return

     */

    @PostMapping("register")

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

        // 查询用户

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

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

        query.put("username",String.valueOf(map.get("username")));

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

        if (list.size()>0){

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

        }

        map.put("password",service.encryption(String.valueOf(map.get("password"))));

        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){

        E entity = JSON.parseObject(JSON.toJSONString(body),eClass);

        baseMapper.insert(entity);

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

}

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;

        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;

}

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资源管理界面图

资源管理关键代码如下所示。

@RequestMapping(value = "/del")

    @Transactional

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

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

        return success(1);

}

4.2.2系统用户管理界面

伊犁旅游攻略网站中的管理人员是可以对前台注册的用户进行管理的,也可以对管理员进行管控。界面如下图4-8所示。

图4-8系统用户管理界面图

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

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;

}

4.2.3交流管理界面

伊犁旅游攻略网站中的管理人员在“交流管理”这一菜单下是可以对伊犁旅游攻略网站内的论坛列表、论坛分类列表进行管控的,其管理界面如下图4-9所示。

图4-9交流管理界面图

4.2.4订票信息管理界面

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

图4-10订票信息管理界面图

">

开发app用什么工具

今日军事新闻视频、3d效果图设计制作、永久使用、不限域名、临沂疫情最新情况

网址格式?

电子商务平台如何搭建_游戏源码搭建_外贸福步论坛官网_深圳最新疫情最新消息

海外公司注册代办深圳平面设计买外贸服装去哪个网站汕头网站建设网站推广品牌营销策划包括哪些内容深圳网站建设设计首选公司蚌埠网站设计网站制作方案模板代理公司注册有哪些开发流程有哪些阶段拉扎斯网络科技上海有限公司物流网家装公司排名广州百度网站推广如何发布网站长沙网页设计服务价格东莞app开发定制电商网页设计公司珠海策划网站建设平台b2b平台排行web前端开发的软件凡科商城靠谱吗桂阳网站制作公司外贸网店杭州企业网站中铁建设集团有限公司登录苏州网站建设风兰公司简介怎么写模板微信小程序源码免费下载房产信息网站系统企业形象设计vi手册

猜你喜欢

  • 友情链接:
  • 上海营销型网站建设价格 邮箱或企业邮箱 亚马逊跨境电商靠谱吗 素材网站哪个好 凡客官方网站 济南企业网站设计