ssm605基于SSM的游戏商城的设计与实现+jsp【已测试】

时间:2024-06-09 10:29:08

 

前言:????‍???? 计算机行业的同仁们,大家好!作为专注于Java领域多年的开发者,我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源:

????‍???? SpringBoot的精选案例推介!????
????‍???? 想要把握小程序开发的精髓?这里有你需要的优选案例!????

点开文末链接,即可获取这些精品案例的源码。分享知识,共同进步!????????
???? 掌握这些案例,让你的编程之路更加顺畅。立即查看详情和获取源码!

希望这些资料能帮助你们在技术旅程中更进一步!????

a7cbac05496a4a41a10eb78bf98c3177.png
项目名

 ssm605基于SSM的游戏商城的设计与实现+jsp【已测试】
技术栈

 
SpringBoot+Vue+小程序+MySQL+Maven


一、-环境介绍

 

1.1 运行环境

 
开发语言:Java
数据库:MySQL
系统架构:B/S
后端:SpringBoot(MyBatis)
前端:Vue
工具:IDEA,JDK1.8,Maven

 

二、ssm605基于SSM的游戏商城的设计与实现+jsp【已测试】-系统介绍

 
2.1 项目介绍

        当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈进。以前相关行业对于游戏信息的管理和控制,采用人工登记的方式保存相关数据,这种以人力为主的管理模式已然落后。本人结合使用主流的程序开发技术,设计了一款基于SSM的游戏商城,可以较大地减少人力、财力的损耗,方便相关人员及时更新和保存信息。本游戏商城是建立在B/S模式的基础之上,通过使用idea平台上编写相关的Java代码,实现对系统的功能模块的设计,使用MySQL数据库设计相关的数据表,实现对系统数据资源的管理和控制,使用SSM框架创建相关的项目主流架构,实现系统的基本框架搭建,最后再通过使用Tomcat浏览器将所研发的系统发布到网上,便于相关的用户运行和使用本系统。本文对系统进行实现的可行性分析,设计的功能及数据库规划,以及设计的主要功能模块测试等内容做了较为详细的介绍,并且在本文中也展示了系统主要的功能模块设计界面和操作界面,并对其做出了必要的解释说明,方便用户对系统进行操作和使用,以及后期的相关人员对系统进行更新和维护。本系统的实现可以极大地提高相关行业的工作效率,提升用户的使用体验,因此在现实生活中运用本系统具有很大的使用价值。

 

关键词:游戏管理;Java语言;B/S架构;MySQL数据库

2.2 功能模块

 0b1381843d1d44d8bb121880a7f38195.png
 


三、-系统展示

 
3.1部分功能图文展示

f9d8e9637525443db09ccb8201db5ea8.pnga13017c1ac7c48bea8ad476ec6096717.pngdde114b6378a472c8506c76f147cebb6.png06f1209d76fd404f910bbe239f1217d2.png87035341c5a1460085f276b0fe344eae.png446a6e34b0794540bcf9762f321c1cf7.png9b0e55ba73ea4bd89b413db6179a9103.pngaf6b5956bc5d44daaf069d802301e125.pngfc44827584534ef388d5378f7c822931.pngadab83b7f75b4e72b2e7fbfd4e7d0002.png08aa18bbd0484e668776c538b8ad3cb1.png1ec08e5e4e2749b8ad14a8454af6f03e.png0b02bba61cdb43f89eb8386246dff896.png
四、ssm605基于SSM的游戏商城的设计与实现+jsp【已测试】-部分代码设计

 
4.1.部分代码以及数据库如下:

表4-1 管理员信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

username

String

用户名

3

password

String

密码

4

role

String

角色

5

addtime

Date

新增时间

 

表4-2 用户信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

username

String

账户

3

password

String

密码

4

yonghu_uuid_

number

String

用户编号

5

yonghu_name

String

用户姓名

6

yonghu_phone

String

用户手机号

7

yonghu_id_number

String

用户身份证号

8

yonghu_photo

String

用户头像

9

age

Integer

年龄

10

sex_types

Integer

性别

11

xueli_types

Integer

学历

12

yonghu_email

String

电子邮箱

13

new_money

BigDecimal

余额

14

yonghu_sum_jifen

BigDecimal

总积分

15

yonghu_new_jifen

BigDecimal

现积分

16

huiyuandengji_types

Integer

会员等级

17

create_time

Date

创建时间

 

表4-3 字典信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

dic_code

String

字段

3

dic_name

String

字段名

4

code_index

Integer

编码

5

index_name

String

编码名字

6

super_id

Integer

父字段编号

7

beizhu

String

备注

8

create_time

Date

创建时间

 

表4-4 游戏信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

youxi_name

String

游戏名称

3

youxi_uuid_number

String

游戏编号

4

youxi_photo

String

游戏照片

5

youxi_zuidipeizhi

String

最低配置

6

youxi_tuijianpeizhi

String

推荐配置

7

youxi_kaifashang

String

开发商

8

youxi_yuyan

String

支持语言

9

youxi_kongjian

String

需要空间

10

youxi_shoufa

String

首发日期

11

youxi_address

String

游戏下载链接

12

youxi_price

Integer

购买获得积分

13

youxi_old_money

BigDecimal

游戏原价

14

youxi_new_money

BigDecimal

现价

15

youxi_clicknum

Integer

游戏热度

16

youxi_content

String

游戏详细介绍

17

shangxia_types

Integer

是否上架

18

youxi_delete

Integer

逻辑删除

19

create_time

Date

创建时间

 

表4-5 游戏订单信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

youxi_order_uuid_number

String

订单号

3

youxi_id

Integer

游戏

4

yonghu_id

Integer

用户

5

youxi_order_true_price

BigDecimal

实付价格

6

youxi_order_types

Integer

订单类型

7

youxi_order_payment_types

Integer

支付类型

8

insert_time

Date

订单创建时间

9

create_time

Date

创建时间

 

表4-6 游戏评价信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

youxi_id

Integer

游戏

3

yonghu_id

Integer

用户

4

youxi_commentback_text

String

评价内容

5

insert_time

Date

评价时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

 

表4-7 游戏收藏信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

youxi_id

Integer

游戏

3

yonghu_id

Integer

用户

4

youxi_collection_

types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

 

表4-8 购物车信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

yonghu_id

Integer

所属用户

3

youxi_id

Integer

游戏

4

buy_number

Integer

购买数量

5

create_time

Date

添加时间

6

update_time

Date

更新时间

7

insert_time

Date

创建时间

 

表4-9 公告信息表

序号

列名

数据类型

说明

允许空

1

id

Int

编号

2

gonggao_name

String

公告名称

3

gonggao_photo

String

公告图片

4

gonggao_types

Integer

公告类型

5

insert_time

Date

公告发布时间

6

gonggao_content

String

公告详情

7

create_time

Date

创建时间


package com.controller;

import com.alibaba.fastjson.JSONObject;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.YouxiEntity;
import com.entity.view.YouxiView;
import com.service.DictionaryService;
import com.service.TokenService;
import com.service.YonghuService;
import com.service.YouxiService;
import com.utils.PageUtils;
import com.utils.PoiUtil;
import com.utils.R;
import com.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * 游戏
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/youxi")
public class YouxiController {
    private static final Logger logger = LoggerFactory.getLogger(YouxiController.class);

    @Autowired
    private YouxiService youxiService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;

    //级联表service

    @Autowired
    private YonghuService yonghuService;


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永不会进入");
        else if("用户".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        params.put("youxiDeleteStart",1);params.put("youxiDeleteEnd",1);
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }
        PageUtils page = youxiService.queryPage(params);

        //字典表数据转换
        List<YouxiView> list =(List<YouxiView>)page.getList();
        for(YouxiView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        YouxiEntity youxi = youxiService.selectById(id);
        if(youxi !=null){
            //entity转view
            YouxiView view = new YouxiView();
            BeanUtils.copyProperties( youxi , view );//把实体数据重构到view中

            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody YouxiEntity youxi, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,youxi:{}",this.getClass().getName(),youxi.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");

        Wrapper<YouxiEntity> queryWrapper = new EntityWrapper<YouxiEntity>()
            .eq("youxi_name", youxi.getYouxiName())
            .eq("youxi_uuid_number", youxi.getYouxiUuidNumber())
            .eq("youxi_types", youxi.getYouxiTypes())
            .eq("youxi_zuidipeizhi", youxi.getYouxiZuidipeizhi())
            .eq("youxi_tuijianpeizhi", youxi.getYouxiTuijianpeizhi())
            .eq("youxi_kaifashang", youxi.getYouxiKaifashang())
            .eq("youxi_yuyan", youxi.getYouxiYuyan())
            .eq("youxi_kongjian", youxi.getYouxiKongjian())
            .eq("youxi_shoufa", youxi.getYouxiShoufa())
            .eq("youxi_address", youxi.getYouxiAddress())
            .eq("youxi_price", youxi.getYouxiPrice())
            .eq("youxi_clicknum", youxi.getYouxiClicknum())
            .eq("shangxia_types", youxi.getShangxiaTypes())
            .eq("youxi_delete", youxi.getYouxiDelete())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        YouxiEntity youxiEntity = youxiService.selectOne(queryWrapper);
        if(youxiEntity==null){
            youxi.setYouxiClicknum(1);
            youxi.setShangxiaTypes(1);
            youxi.setYouxiDelete(1);
            youxi.setCreateTime(new Date());
            youxiService.insert(youxi);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody YouxiEntity youxi, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,youxi:{}",this.getClass().getName(),youxi.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
        //根据字段查询是否有相同数据
        Wrapper<YouxiEntity> queryWrapper = new EntityWrapper<YouxiEntity>()
            .notIn("id",youxi.getId())
            .andNew()
            .eq("youxi_name", youxi.getYouxiName())
            .eq("youxi_uuid_number", youxi.getYouxiUuidNumber())
            .eq("youxi_types", youxi.getYouxiTypes())
            .eq("youxi_zuidipeizhi", youxi.getYouxiZuidipeizhi())
            .eq("youxi_tuijianpeizhi", youxi.getYouxiTuijianpeizhi())
            .eq("youxi_kaifashang", youxi.getYouxiKaifashang())
            .eq("youxi_yuyan", youxi.getYouxiYuyan())
            .eq("youxi_kongjian", youxi.getYouxiKongjian())
            .eq("youxi_shoufa", youxi.getYouxiShoufa())
            .eq("youxi_address", youxi.getYouxiAddress())
            .eq("youxi_price", youxi.getYouxiPrice())
            .eq("youxi_clicknum", youxi.getYouxiClicknum())
            .eq("shangxia_types", youxi.getShangxiaTypes())
            .eq("youxi_delete", youxi.getYouxiDelete())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        YouxiEntity youxiEntity = youxiService.selectOne(queryWrapper);
        if("".equals(youxi.getYouxiPhoto()) || "null".equals(youxi.getYouxiPhoto())){
                youxi.setYouxiPhoto(null);
        }
        if(youxiEntity==null){
            youxiService.updateById(youxi);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }



    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        ArrayList<YouxiEntity> list = new ArrayList<>();
        for(Integer id:ids){
            YouxiEntity youxiEntity = new YouxiEntity();
            youxiEntity.setId(id);
            youxiEntity.setYouxiDelete(2);
            list.add(youxiEntity);
        }
        if(list != null && list.size() >0){
            youxiService.updateBatchById(list);
        }
        return R.ok();
    }


    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save(String fileName, HttpServletRequest request){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            List<YouxiEntity> youxiList = new ArrayList<>();//上传的东西
            Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
            Date date = new Date();
            int lastIndexOf = fileName.lastIndexOf(".");
            if(lastIndexOf == -1){
                return R.error(511,"该文件没有后缀");
            }else{
                String suffix = fileName.substring(lastIndexOf);
                if(!".xls".equals(suffix)){
                    return R.error(511,"只支持后缀为xls的excel文件");
                }else{
                    URL resource = this.getClass().getClassLoader().getResource("../../upload/" + fileName);//获取文件路径
                    File file = new File(resource.getFile());
                    if(!file.exists()){
                        return R.error(511,"找不到上传文件,请联系管理员");
                    }else{
                        List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
                        dataList.remove(0);//删除第一行,因为第一行是提示
                        for(List<String> data:dataList){
                            //循环
                            YouxiEntity youxiEntity = new YouxiEntity();
//                            youxiEntity.setYouxiName(data.get(0));                    //游戏名称 要改的
//                            youxiEntity.setYouxiUuidNumber(data.get(0));                    //游戏编号 要改的
//                            youxiEntity.setYouxiPhoto("");//详情和图片
//                            youxiEntity.setYouxiTypes(Integer.valueOf(data.get(0)));   //游戏类型 要改的
//                            youxiEntity.setYouxiZuidipeizhi(data.get(0));                    //最低配置 要改的
//                            youxiEntity.setYouxiTuijianpeizhi(data.get(0));                    //推荐配置 要改的
//                            youxiEntity.setYouxiKaifashang(data.get(0));                    //开发商 要改的
//                            youxiEntity.setYouxiYuyan(data.get(0));                    //支持语言 要改的
//                            youxiEntity.setYouxiKongjian(data.get(0));                    //需要空间 要改的
//                            youxiEntity.setYouxiShoufa(data.get(0));                    //首发日期 要改的
//                            youxiEntity.setYouxiAddress(data.get(0));                    //游戏下载链接 要改的
//                            youxiEntity.setYouxiPrice(Integer.valueOf(data.get(0)));   //购买获得积分 要改的
//                            youxiEntity.setYouxiOldMoney(data.get(0));                    //游戏原价 要改的
//                            youxiEntity.setYouxiNewMoney(data.get(0));                    //现价 要改的
//                            youxiEntity.setYouxiClicknum(Integer.valueOf(data.get(0)));   //游戏热度 要改的
//                            youxiEntity.setYouxiContent("");//详情和图片
//                            youxiEntity.setShangxiaTypes(Integer.valueOf(data.get(0)));   //是否上架 要改的
//                            youxiEntity.setYouxiDelete(1);//逻辑删除字段
//                            youxiEntity.setCreateTime(date);//时间
                            youxiList.add(youxiEntity);


                            //把要查询是否重复的字段放入map中
                                //游戏编号
                                if(seachFields.containsKey("youxiUuidNumber")){