摘 要
随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,线下管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,游戏美术外包管理信息系统就是信息时代变革中的产物之一。
任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤;以java语言设计为基础,实现了游戏美术外包管理信息系统。该系统基于B/S即所谓浏览器/服务器模式,应用java技术,选择MySQL作为后台数据库。系统主要包括系统首页,个人中心,用户管理,公司管理,作品信息管理,作品订单管理,外包需求管理,外包应征管理,流程追踪管理,在线交流管理,在线回复管理,管理员管理,留言反馈,系统管理等功能模块。
本文首先介绍了游戏美术外包管理信息技术发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图以及E-R图。然后,设计框架并根据设计的框架编写代码以实现系统的各个功能模块。最后,对初步完成的系统进行测试,主要是功能测试、单元测试和性能测试。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。
关键词:游戏美术外包管理信息;java;MySQL数据库
基于ssm游戏美术外包管理信息系统源码和论文757
演示视频:
基于ssm游戏美术外包管理信息系统源码和论文
Abstract
With the rapid development of information technology and network technology, human beings have entered a new information age, offline management technology has been unable to efficiently and conveniently manage information. In order to meet the needs of The Times and optimize the management efficiency, a variety of management systems have emerged. All walks of life have entered the information management era. The game art outsourcing management information system is one of the products in the information era.
Any system should follow the basic process of system design, this system is no exception, also need to go through market research, demand analysis, outline design, detailed design, coding, testing these steps; Based on Java language design, the game art outsourcing management information system is implemented. The system is based on B/S browser/server mode, the application of Java technology, MySQL as the background database. The system mainly includes system home page, personal center, user management, company management, works information management, works order management, outsourcing demand management, outsourcing application management, process tracking management, online communication management, online response management, administrator management, message feedback, system management and other functional modules.
This article first introduced the game art outsourcing management development background and current situation of the development of information technology, and then follow the routine software development process, first of all, in view of the system and the selection of suitable language development platform, according to the requirement analysis module and database structure design, and then based on the system's overall function module design rendering system function module chart, flow diagram and e-r diagram. Then, design the framework and write code according to the designed framework to achieve each functional module of the system. Finally, the preliminary completed system is tested, mainly functional test, unit test and performance test. The test results show that the system can achieve the required functions, and the running condition is fair and there is no obvious defect.
Key words: Game art outsourcing management information; Java; The MySQL database
package com.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
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 com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.GongsiEntity;
import com.entity.view.GongsiView;
import com.service.GongsiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 公司
* 后端接口
* @author
* @email
* @date 2022-03-29 16:14:51
*/
@RestController
@RequestMapping("/gongsi")
public class GongsiController {
@Autowired
private GongsiService gongsiService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
GongsiEntity user = gongsiService.selectOne(new EntityWrapper<GongsiEntity>().eq("zhanghao", username));
if(user==null || !user.getMima().equals(password)) {
return R.error("账号或密码不正确");
}
if("否".equals(user.getSfsh())) return R.error("账号已锁定,请联系管理员审核。");
String token = tokenService.generateToken(user.getId(), username,"gongsi", "公司" );
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@RequestMapping("/register")
public R register(@RequestBody GongsiEntity gongsi){
//ValidatorUtils.validateEntity(gongsi);
GongsiEntity user = gongsiService.selectOne(new EntityWrapper<GongsiEntity>().eq("zhanghao", gongsi.getZhanghao()));
if(user!=null) {
return R.error("注册用户已存在");
}
Long uId = new Date().getTime();
gongsi.setId(uId);
gongsiService.insert(gongsi);
return R.ok();
}
/**
* 退出
*/
@RequestMapping("/logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
GongsiEntity user = gongsiService.selectById(id);
return R.ok().put("data", user);
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
GongsiEntity user = gongsiService.selectOne(new EntityWrapper<GongsiEntity>().eq("zhanghao", username));
if(user==null) {
return R.error("账号不存在");
}
user.setMima("123456");
gongsiService.updateById(user);
return R.ok("密码已重置为:123456");
}
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,GongsiEntity gongsi,
HttpServletRequest request){
EntityWrapper<GongsiEntity> ew = new EntityWrapper<GongsiEntity>();
PageUtils page = gongsiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gongsi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,GongsiEntity gongsi,
HttpServletRequest request){
EntityWrapper<GongsiEntity> ew = new EntityWrapper<GongsiEntity>();
PageUtils page = gongsiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gongsi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( GongsiEntity gongsi){
EntityWrapper<GongsiEntity> ew = new EntityWrapper<GongsiEntity>();
ew.allEq(MPUtil.allEQMapPre( gongsi, "gongsi"));
return R.ok().put("data", gongsiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(GongsiEntity gongsi){
EntityWrapper< GongsiEntity> ew = new EntityWrapper< GongsiEntity>();
ew.allEq(MPUtil.allEQMapPre( gongsi, "gongsi"));
GongsiView gongsiView = gongsiService.selectView(ew);
return R.ok("查询公司成功").put("data", gongsiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
GongsiEntity gongsi = gongsiService.selectById(id);
return R.ok().put("data", gongsi);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
GongsiEntity gongsi = gongsiService.selectById(id);
return R.ok().put("data", gongsi);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody GongsiEntity gongsi, HttpServletRequest request){
gongsi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(gongsi);
GongsiEntity user = gongsiService.selectOne(new EntityWrapper<GongsiEntity>().eq("zhanghao", gongsi.getZhanghao()));
if(user!=null) {
return R.error("用户已存在");
}
gongsi.setId(new Date().getTime());
gongsiService.insert(gongsi);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody GongsiEntity gongsi, HttpServletRequest request){
gongsi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(gongsi);
GongsiEntity user = gongsiService.selectOne(new EntityWrapper<GongsiEntity>().eq("zhanghao", gongsi.getZhanghao()));
if(user!=null) {
return R.error("用户已存在");
}
gongsi.setId(new Date().getTime());
gongsiService.insert(gongsi);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody GongsiEntity gongsi, HttpServletRequest request){
//ValidatorUtils.validateEntity(gongsi);
gongsiService.updateById(gongsi);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
gongsiService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<GongsiEntity> wrapper = new EntityWrapper<GongsiEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = gongsiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
package com.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
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 com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.ZaixianhuifuEntity;
import com.entity.view.ZaixianhuifuView;
import com.service.ZaixianhuifuService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 在线回复
* 后端接口
* @author
* @email
* @date 2022-03-29 16:14:52
*/
@RestController
@RequestMapping("/zaixianhuifu")
public class ZaixianhuifuController {
@Autowired
private ZaixianhuifuService zaixianhuifuService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ZaixianhuifuEntity zaixianhuifu,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
zaixianhuifu.setYonghuming((String)request.getSession().getAttribute("username"));
}
if(tableName.equals("gongsi")) {
zaixianhuifu.setZhanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<ZaixianhuifuEntity> ew = new EntityWrapper<ZaixianhuifuEntity>();
PageUtils page = zaixianhuifuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zaixianhuifu), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ZaixianhuifuEntity zaixianhuifu,
HttpServletRequest request){
EntityWrapper<ZaixianhuifuEntity> ew = new EntityWrapper<ZaixianhuifuEntity>();
PageUtils page = zaixianhuifuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zaixianhuifu), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( ZaixianhuifuEntity zaixianhuifu){
EntityWrapper<ZaixianhuifuEntity> ew = new EntityWrapper<ZaixianhuifuEntity>();
ew.allEq(MPUtil.allEQMapPre( zaixianhuifu, "zaixianhuifu"));
return R.ok().put("data", zaixianhuifuService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(ZaixianhuifuEntity zaixianhuifu){
EntityWrapper< ZaixianhuifuEntity> ew = new EntityWrapper< ZaixianhuifuEntity>();
ew.allEq(MPUtil.allEQMapPre( zaixianhuifu, "zaixianhuifu"));
ZaixianhuifuView zaixianhuifuView = zaixianhuifuService.selectView(ew);
return R.ok("查询在线回复成功").put("data", zaixianhuifuView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
ZaixianhuifuEntity zaixianhuifu = zaixianhuifuService.selectById(id);
return R.ok().put("data", zaixianhuifu);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
ZaixianhuifuEntity zaixianhuifu = zaixianhuifuService.selectById(id);
return R.ok().put("data", zaixianhuifu);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ZaixianhuifuEntity zaixianhuifu, HttpServletRequest request){
zaixianhuifu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(zaixianhuifu);
zaixianhuifuService.insert(zaixianhuifu);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody ZaixianhuifuEntity zaixianhuifu, HttpServletRequest request){
zaixianhuifu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(zaixianhuifu);
zaixianhuifuService.insert(zaixianhuifu);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody ZaixianhuifuEntity zaixianhuifu, HttpServletRequest request){
//ValidatorUtils.validateEntity(zaixianhuifu);
zaixianhuifuService.updateById(zaixianhuifu);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
zaixianhuifuService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<ZaixianhuifuEntity> wrapper = new EntityWrapper<ZaixianhuifuEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
}
if(tableName.equals("gongsi")) {
wrapper.eq("zhanghao", (String)request.getSession().getAttribute("username"));
}
int count = zaixianhuifuService.selectCount(wrapper);
return R.ok().put("count", count);
}
}