分享好友 最新动态首页 最新动态分类 切换频道
电子书店管理系统设计与实现-附源码080050
2024-12-28 06:12

电子书店管理系统的详细设计与实现主要是根据前面的电子书店管理系统的需求分析和电子书店管理系统的总体设计来设计页面并实现业务逻辑。主要从电子书店管理系统界面实现、业务逻辑实现这两部分进行介绍。

电子书店管理系统设计与实现-附源码080050

4.1用户功能模块

4.1.1 前台首页界面

当进入电子书店管理系统的时候,首先映入眼帘的是系统的导航栏,下面是轮播图以及系统内容,其主界面展示如下图4-1所示。

图4-1 前台首页界面图

4.1.2 用户注册界面

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

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

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

    @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用户登录界面图

登录系统主要代码如下。

    @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评论界面图

评论逻辑代码如下所示。

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

}

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更多管理界面图

最新文章
成语典故 楚王买马
原作者:韩愈(唐朝)改编:韩中清编发:槐卿图文:网络汉·韩婴《韩诗外传》卷七:“使骥不得伯乐,安得千里之足。”唐·韩愈《杂说》四:“世有伯乐,然后有千里马。千里马常有,而伯乐不常有。”[1]传说中,天上管理马匹的神仙叫伯乐。
新手找不到入口怎么办教程图片:轻松找到入口的实用工具
在互联网时代,我们经常会遇到找不到入口的情况。无论是寻找某个网站的特定页面,还是解决某个技术问题,有时候我们会感到困惑和无助。不要担心!介绍一些轻松找到入口的实用工具和技巧,帮助你快速解决问题。使用搜索引擎搜索引擎是我们在
最新网页手游游戏推荐 2024最新网页手游游戏排行榜前十名
最新网页手游游戏推荐有哪些?下面1912yx小编为小伙伴们带来2024最新网页手游游戏排行榜前十名,感兴趣的小伙伴们可以进入游戏合集看看哦!1、《全民学霸》(点击进入)《全民学霸》是一款模拟经营休闲游戏,玩家可以在游戏中扮演一所学校
磁力搜索BT搜索引擎最新版下载
磁力搜索BT搜索引擎APP一款可以搜索全网资源的磁力搜索神器,软件内置拥有磁力源,大家可以在设置中进行磁力源的切换,直接在首页的搜索框中搜索想要查看的资源即可,支持直接播放以及下载功能。1、为您提供海量资源,网络资源,磁力搜索,
百度蜘蛛池租用:打造高效域名蜘蛛池,揭秘优质蜘蛛池制作标准
百度蜘蛛池租用服务提供高效域名蜘蛛池搭建,遵循优质蜘蛛池制作标准,助您提升搜索引擎抓取效率,优化网站排名。本文目录导读:域名蜘蛛池概述域名蜘蛛池制作标准随着互联网的快速发展,网站数量呈爆炸式增长,搜索引擎优化(SEO)成为企
网站关键词自然排名优化怎么排名上升的快我网站结构是没有问题
关键词选择与分析要实现关键词排名的快速上升,首先需要选择合适的关键词。这需要我们对目标用户进行深入的分析,了解他们的搜索习惯和需求。还需要对竞争对手的网站进行调研,分析他们的关键词策略,找出我们的优势和不足。在选择关键词时
老牛体会,,,,炒股赚钱,只有且必须潜付,,网上一致说要买什么板块了,就热起来了
老牛体会,,,,炒股赚钱,只有且必须潜付,,网上一致说要买什么板块了,就热起来了,热了,只能减仓或卖光,不能热了再进买,,看看这几天的啤酒,,商场股,最没热的,冷清的,板块,,一下子至少都涨二个板,,,,,什么板块都会涨也
新潮传媒80亿融资背后:京东觅线下流量 博弈阿里分众
在分众传媒成为行业龙头之后,电梯传媒的格局之争还远未结束。“交易型平台型的流量是即时的,线上流量集中度越来越高。当BAT和头条占据了75%流量的时候,算法会让每一个流量购买者成本不断增加。线下平台的逻辑是广告,但是场景被数字化之
科技发展战略
进入21世纪以来,中国的科技发展战略开始发生转变。国民经济和社会发展“十五”规划与科技部随后制订的科技发展规划和高技术产业发展规划明确提出了实现技术跨越式发展的总体目标,强调要在“促进产业技术升级”和“提高科技持续创新能力”
领域知识库构建及信息检索系统
系统源码及原文免费下载地址请访问:www.54manong.com 一、 系统简介 通过对网络爬虫工具的设置并扩展,自动抓取行业领域资料,或通过语料管理模块上传领域相关资料,形成语料库。调用信息抽取模块和信息去噪模块
相关文章
推荐文章
发表评论
0评