Design und Implementierung der Online-Erlebnishalle Jingluo Culture auf Basis von SSM+Vue

Holen Sie sich am Ende den Quellcode
. Entwicklungssprache: Java
Java-Entwicklungstool: JDK1.8
Back-End-Framework: SSM
Front-End: entwickelt mit Vue-Technologie
Datenbank: MySQL5.7 kombiniert mit Navicat-Verwaltungstools
Server: Tomcat8.5
Entwicklungssoftware: IDEA/Eclipse
Ob es sich um ein Maven-Projekt handelt: Ja


Inhaltsverzeichnis

1. Projekteinführung

2. Systemdesign

Design der funktionalen Systemstruktur

3. Screenshots des Systemprojekts

Benutzerinformationsverwaltung

Produktionsvideomanagement

Unterhaltsame Videoverwaltung

Historisches Hintergrundmanagement

4. Kerncode

4.1 Login-bezogen

4.2 Datei-Upload

4.3 Verpackung


1. Projekteinführung

Die rasante Entwicklung der modernen Wirtschaft und die ständige Verbesserung und Modernisierung der Informationstechnologie haben das traditionelle Dateninformationsmanagement zu Methoden der Softwarespeicherung, Zusammenfassung und zentralisierten Verarbeitung von Dateninformationsmanagement aufgewertet. Dieses Jingluo Culture Online Experience Center wurde in einer solchen Umgebung geboren. Es kann Managern helfen, große Mengen an Dateninformationen in kurzer Zeit zu verarbeiten. Die Verwendung dieses Softwaretools kann Managern helfen, die Effizienz der Transaktionsverarbeitung zu verbessern und mit halbem Aufwand das Doppelte des Ergebnisses zu erzielen. Wirkung . Dieses Online-Erlebniszentrum von Jingluo Culture nutzt das aktuelle ausgereifte und vollständige SSM-Framework, die plattformübergreifende Java-Sprache, mit der große kommerzielle Websites entwickelt werden können, und die MySQL-Datenbank, eine der beliebtesten RDBMS-Anwendungssoftware, für die Programmentwicklung. Jingluo Culture Line Die Entwicklung des Shanghai Experience Center ist auf die Bedürfnisse der Betreiber zugeschnitten. Die Benutzeroberfläche ist einfach und schön, und das Layout der Funktionsmodule stimmt mit Websites desselben Typs überein. Während das Programm die grundlegenden erforderlichen Funktionen realisiert, ist es Bietet außerdem einige praktische Lösungen für die Sicherheitsprobleme, mit denen Dateninformationen konfrontiert sind. . Man kann sagen, dass dieses Programm Managern nicht nur dabei hilft, Arbeitsangelegenheiten effizient zu erledigen, sondern auch die Integration, Standardisierung und Automatisierung von Dateninformationen realisiert.


2. Systemdesign

Das Design der Jingluo Culture Online Experience Hall, wie das Design des Funktionsrahmens und das Design der Datenbank, bestimmt auch, ob das System auf Entwicklungsebene effizient ist und ob es auf Systemwartungsebene einfach zu warten und zu aktualisieren ist , denn in der Systemimplementierung In dieser Phase müssen alle Bedürfnisse der Benutzer berücksichtigt werden. Wenn während der Entwurfsphase nicht alle Aspekte berücksichtigt werden, kann der Systemimplementierungsteil nicht gestartet werden. Daher ist der Systemdesignteil auch ein entscheidendes Bindeglied . Nur detaillierte und umfassende Überlegungen können auf der Grundlage der Benutzerbedürfnisse angestellt werden. , Nur dann können wir hoffen, funktionale und stabile Programmsoftware zu entwickeln.

Design der funktionalen Systemstruktur

Wenn die funktionalen Anforderungen des Benutzers an das Programm analysiert und ermittelt werden, kann der Programmentwurf durchgeführt werden. Abbildung 4.2 zeigt das Funktionsstrukturdiagramm des Administrators. Der Administrator ist hauptsächlich für das Ausfüllen von Büchern und deren Kategorieinformationen sowie für die Pflege der ausgefüllten Daten, einschließlich Änderung und Löschung, verantwortlich. Der Administrator muss außerdem die Registrierungsinformationen für Lehrer überprüfen und Ankündigungsinformationen veröffentlichen. Verwalten Sie sich selbst -Service-Mietinformationen usw.



3. Screenshots des Systemprojekts

Benutzerinformationsverwaltung

Seite zur Benutzerinformationsverwaltung. Die Funktionen, die Administratoren auf dieser Seite zur Verfügung gestellt werden, sind: Benutzerinformationsabfrageverwaltung, mit der Benutzerinformationen gelöscht, Benutzerinformationen geändert, Benutzerinformationen hinzugefügt und auch Fuzzy-Abfragebedingungen für Benutzernamen durchgeführt werden können.

Produktionsvideomanagement

Seite zur Verwaltung von Produktionsvideos. Zu den Funktionen, die Administratoren auf dieser Seite bereitgestellt werden, gehören: Anzeigen veröffentlichter Produktionsvideodaten, Ändern von Produktionsvideos, Ungültigmachen von Produktionsvideos und Löschen derselben.

 

Unterhaltsame Videoverwaltung

Fun-Video-Verwaltungsseite. Zu den Funktionen, die diese Seite Administratoren bietet, gehören: Anzeigen veröffentlichter Fun-Video-Daten, Ändern von Fun-Videos, Ungültigmachen von Fun-Videos und Löschen dieser.

 

Historisches Hintergrundmanagement

Seite zur Verwaltung des historischen Hintergrunds. Zu den Funktionen, die Administratoren auf dieser Seite zur Verfügung gestellt werden, gehören: Anzeigen veröffentlichter historischer Hintergrunddaten, Ändern des historischen Hintergrunds, Ungültigmachen des historischen Hintergrunds und Löschen des historischen Hintergrunds.

 


4. Kerncode

4.1 Login-bezogen


package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

4.2 Datei-Upload

package com.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;

/**
 * 上传文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
	@Autowired
    private ConfigService configService;
	/**
	 * 上传文件
	 */
	@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
		if (file.isEmpty()) {
			throw new EIException("上传文件不能为空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File path = new File(ResourceUtils.getURL("classpath:static").getPath());
		if(!path.exists()) {
		    path = new File("");
		}
		File upload = new File(path.getAbsolutePath(),"/upload/");
		if(!upload.exists()) {
		    upload.mkdirs();
		}
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(upload.getAbsolutePath()+"/"+fileName);
		file.transferTo(dest);
		FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) {
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}
	
	/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity<byte[]> download(@RequestParam String fileName) {
		try {
			File path = new File(ResourceUtils.getURL("classpath:static").getPath());
			if(!path.exists()) {
			    path = new File("");
			}
			File upload = new File(path.getAbsolutePath(),"/upload/");
			if(!upload.exists()) {
			    upload.mkdirs();
			}
			File file = new File(upload.getAbsolutePath()+"/"+fileName);
			if(file.exists()){
				/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
					getResponse().sendError(403);
				}*/
				HttpHeaders headers = new HttpHeaders();
			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
			    headers.setContentDispositionFormData("attachment", fileName);    
			    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
	}
	
}

4.3 Verpackung

package com.utils;

import java.util.HashMap;
import java.util.Map;

/**
 * 返回数据
 */
public class R extends HashMap<String, Object> {
	private static final long serialVersionUID = 1L;
	
	public R() {
		put("code", 0);
	}
	
	public static R error() {
		return error(500, "未知异常,请联系管理员");
	}
	
	public static R error(String msg) {
		return error(500, msg);
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}

	public static R ok(String msg) {
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map<String, Object> map) {
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
		return new R();
	}

	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
}

Ich denke du magst

Origin blog.csdn.net/weixin_52721608/article/details/132899846
Empfohlen
Rangfolge