物流公司哪家便宜又好_制作企业网页_seo推广有效果吗_开发公司工程部绩效考核管理办法 [5]王利民,韩义勇,雷霆.社区服务系统的设计[J].微型机与应用,2013,32(16):11-13+16.

">

地图上如何添加自己公司的地址

app开发公司怎么赚钱的、天津网站建设有哪些、永久使用、不限域名、河北邢台是不是很穷

大连高新园区招聘?

物流公司哪家便宜又好_制作企业网页_seo推广有效果吗_开发公司工程部绩效考核管理办法

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

        Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));

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

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

}   

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

            Duration duration = Duration.ofSeconds(7200L);

            redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);

            // 返回用户信息

            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.1.5 景点信息界面

可查看所有景点信息,支持关键字(景点名称、景点类型)、搜索和下拉(景点类型、排序)搜索,点击可查看详情,进行点赞、收藏和评论,并可点击下单购票操作,填写并提交购票信息(购票日期、购票用户、用户手机、购票数量、支付金额)。其界面如下图所示。

图4-5景点信息详情界面图

4.1.6 个人中心界面

可对个人首页、攻略论坛、购票订单、订单配送、收藏等信息进行管控。例如,点击“攻略论坛”,可查看自己的攻略论坛信息,进行增改删查操作,支持攻略标题、攻略分类、攻略标签、审核状态搜索,点击可查看详情和查看评论;点击“购票订单”,可查看自己的购票订单信息,进行查询操作,支持购票单号、景点名称、购票日期、审核状态、支付状态搜索,点击可查看详情,并可点击进行支付操作;点击“订单配送”,可查看自己的订单配送信息,进行查询操作,支持配送状态、签收状态搜索,可点击查看详情,和进行签收操作;点击“收藏”,可管理所有收藏信息,包括旅游商城、攻略论坛等,进行查看和删除操作。可点击查看详情。其界面如下图所示:

图4-6个人中心论坛攻略界面图

4.2 管理员功能模块

4.2.1 后台首页界面

可查看商品销售金额统计、商品销售数量统计等信息数据分析图表。其界面如下图所示。

图4-7后台首页界面图

4.2.2 系统用户界面

可对旅游用户和管理员进行管控,包括进行增删改查操作,点击可查看详情。其界面如下图所示。

图4-8系统用户界面图

4.2.3 攻略论坛管理界面

可对攻略论坛和进行管理,进行增删改查操作,支持攻略标题、攻略分类、攻略标签、审核状态搜索,可点击查看详情(攻略标题、攻略分类、攻略标签、发布人、攻略内容、审核状态),进行审核,并可查看评论。其界面如下图所示。

图4-9 攻略论坛管理详情界面图

4.2.4 景点信息管理界面

可查看所有景点信息,进行增删改查操作,支持景点名称、景点类型搜索,点击可查看详情(景点名称、景点类型、封面、售票单价、景点电话、景点地址、景点介绍)和查看评论)。其界面如下图所示。

图4-10 景点信息管理界面图

4.2.5 购票订单管理界面

可查看所有购票订单信息,进行查询和删除操作,支持购票单号、景点名称、购票日期、审核状态、支付状态搜索,点击可查看详情,并可点击支付,修改支付状态。其界面如下图所示。

图4-11 购票订单管理界面图

4.2.6 系统管理界面

可对首页的轮播图和广告进行管理。点击“轮播图”,可查看添加的轮播图信息,进行增删改查操作,支持标题搜索,可点击查看详情;点击“广告管理”,可查看添加的广告信息,进行增删改查操作,支持标题、投放位置搜索,可点击查看详情(标题、链接、投放位置、内容)。其界面如下图所示。

图4-12 系统管理广告界面图

轮播图片上传的代码如下:

   @PostMapping("/upload")

    public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {

        log.info("进入方法");

        if (file.isEmpty()) {

            return error(30000, "没有选择文件");

        }

        try {

            //判断有没路径,没有则创建

            String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";

            File targetDir = new File(filePath);

            if (!targetDir.exists() && !targetDir.isDirectory()) {

                if (targetDir.mkdirs()) {

                    log.info("创建目录成功");

                } else {

                    log.error("创建目录失败");

                }

            }

            String fileName = file.getOriginalFilename();

            File dest = new File(filePath + fileName);

            log.info("文件路径:{}", dest.getPath());

            log.info("文件名:{}", dest.getName());

            file.transferTo(dest);

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("url", "/api/upload/" + fileName);

            return success(jsonObject);

        } catch (IOException e) {

            log.info("上传失败:{}", e.getMessage());

        }

        return error(30000, "上传失败");

    }

4.2.7 商城管理界面

可对旅游商城、分类列表、订单列表、订单配送等信息进行管理,进行增删改查操作,可点击查看详情。例如,点击“旅游商城”,可查看所有旅游商城信息,支持标题、分类、商品规格搜索,可点击查看详情和查看评论;点击“分类列表”,可查看所有分类信息,支持分类名称搜索,可点击查看详情;点击“订单列表”,可查看所有订单信息,支持订单号、商品名称、联系人姓名、状态搜索,可点击查看详情(商品名称、订单号、商品图片、价格、原价、购买数量、总价、联系人名称、联系人地址、订单状态、买家、备注、发货日期),和点击进行配送操作;点击“订单配送”,可查看所有订单配送信息,支持配送状态、签收状态搜索,可点击查看详情(订单号、商品名称、购买数量、交易总额、发货日期、配送单号、联系人、买家、收货地址、配送状态、签收状态),可点击签收,修改签收状态。其界面如下图所示。

图4-13 商城管理订单列表界面图

添加关键代码如下:

    @PostMapping("/add")

    @Transactional

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

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

        return success(1);

    }

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

    service.insert(map);

     return success(1);

 }

删除关键代码如下:

    @RequestMapping(value = "/del")

    @Transactional

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

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

        return success(1);

    }

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

        QueryWrapper wrapper = new QueryWrapper<E>();

        toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);

        baseMapper.delete(wrapper);

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

    }

5系统测试

5.1 系统测试目的

无论什么样的系统,测试都至关重要,通过测试可以检查出潜藏的缺陷,从而确保系统的性能和稳定性,避免Bug的出现,并确保系统的功能和性价比达到预期的要求。

5.2 系统测试用例

系统测试包括:用户登录功能测试、旅游商城展示功能、景点信息添加功能、密码修改功能测试,如表5-1、5-2、5-3、5-4所示:

用户登录功能测试:

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

用例名称

用户登录系统

目的

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

前提

未登录的情况下

测试流程

1) 进入登录页面

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

预期结果

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

实际结果

实际结果与预期结果一致

旅游商城展示功能测试:

表5-2 旅游商城展示功能测试表

用例名称

旅游商城展示

目的

测试旅游商城展示功能

前提

用户登录

测试流程

点击旅游商城

预期结果

可以查看到所有旅游商城信息

实际结果

实际结果与预期结果一致

景点信息添加界面测试:

表5-3 景点信息添加界面测试表

用例名称

景点信息添加测试用例

目的

测试景点信息添加功能

前提

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

测试流程

1)管理员点击商城管理下方的景点信息,进入添加页面填写信息。

2)填写完毕后点击进行提交。

预期结果

提交以后,页面会显示新的景点信息

密码修改功能测试:

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

用例名称

密码修改测试用例

目的

测试密码修改功能

前提

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

测试流程

1)点击密码修改并完成填写。

2)点击进行提交。

预期结果

使用新的密码可以登录

实际结果

实际结果与预期结果一致

5.3 系统测试结果

通过编写沧州旅游攻略分享互动平台的测试用例,已经检测完毕用户登录功能测试、旅游商城展示功能、景点信息添加功能、密码修改功能测试,通过的测试为沧州旅游攻略分享互动平台的后期推广运营提供了强力的技术支撑。

网页托管平台排名石家庄制作网站的公司邢台发广告的平台有哪些中央气象台台风网台风实时路径网页升级访问紧急升级访问中成都布马网络科技有限公司深圳网站定制建设开发公司资质质量体系a8新媒体的案例湖北潜江今天最新消息郑州最好的精神病医院在线设计网站哪个好荣耀手机最新款2022新上市东营政府网官网大画册设计网站在线黑科技网站南宁公司网站开发邢台市做网站介休市政府领导分工企业系统集成企业大黄页易优cms破解朋友圈推广图片个人主页的html设计隔离需要多少钱开发公司工程部年终工作总结及明年工作计划在线设计图案成都网站优化教程真实的广州公司注册中山网站搜索排名日本网站制作公司

猜你喜欢

  • 友情链接:
  • 网页设计品牌故事 建筑人才网官网96877 证件照片制作软件免费下载 深圳网站建设优化排名 微信里的小程序游戏怎么删除 天津个人网站制作