合肥网站建设网站模板,主机做网站,网站建设咨询客户话术,wordpress 下载网站首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项目软件架构选择B/S模式和java技术总体功能模块运用自顶向下的分层思想。再然后就是实现系统并进行代码编写实现功能。论文的最后章节总结一下自己完成本论文和开发本项目的心得和总结。通过篮球论坛系统将会使篮球论坛各个方面的工作效率带来实质性的提升。
关键字B/S模式 java技术 篮球论坛 软件架构
基于springboot篮球论坛系统源码和论文356
演示视频 基于springboot篮球论坛系统源码和论文 Abstract
First of all, the thesis clearly discusses the systematic research content at the very beginning. Secondly, the analysis of system requirements analysis, understand what to do, including business analysis and business process analysis and use case analysis, further clear system requirements. Then, on the basis of understanding the requirements of the system, we need to further design the system, mainly including software architecture pattern, overall functional modules and database design. The software architecture of the project chooses B/S mode and Java technology, and the overall functional modules adopt the top-down hierarchical idea. Then is the realization of the system and code writing to achieve the function. The last chapter of the paper summarizes the experience and summary of the completion of this paper and the development of this project. Through the basketball forum system will make the basketball forum in all aspects of work efficiency to bring substantial improvement.
Key words: B/S mode Java technology basketball forum software architecture 表4-1用户表 字段名称 类型 长度 字段说明 主键 默认值 id bigint 主键 主键 username varchar 100 用户名 password varchar 100 密码 role varchar 100 角色 管理员 addtime timestamp 新增时间 CURRENT_TIMESTAMP 表4-2token表 字段名称 类型 长度 字段说明 主键 默认值 id bigint 主键 主键 userid bigint 用户id username varchar 100 用户名 tablename varchar 100 表名 role varchar 100 角色 token varchar 200 密码 addtime timestamp 新增时间 CURRENT_TIMESTAMP expiratedtime timestamp 过期时间 CURRENT_TIMESTAMP 表4-3篮球资讯 字段名称 类型 长度 字段说明 主键 默认值 id bigint 主键 主键 addtime timestamp 创建时间 CURRENT_TIMESTAMP title varchar 200 标题 introduction longtext 4294967295 简介 picture varchar 200 图片 content longtext 4294967295 内容 表4-4篮球论坛 字段名称 类型 长度 字段说明 主键 默认值 id bigint 主键 主键 addtime timestamp 创建时间 CURRENT_TIMESTAMP package com.controller;import java.util.List;
import java.util.Arrays;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import com.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
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.RestController;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.UsersEntity;
import com.service.TokenService;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;/*** 登录相关*/
RequestMapping(users)
RestController
public class UsersController {Autowiredprivate UsersService usersService;Autowiredprivate TokenService tokenService;/*** 登录*/IgnoreAuthPostMapping(value /login)public R login(String username, String password, String captcha, HttpServletRequest request) {UsersEntity user usersService.selectOne(new EntityWrapperUsersEntity().eq(username, username));if(usernull || !user.getPassword().equals(password)) {return R.error(账号或密码不正确);}String token tokenService.generateToken(user.getId(),username, users, user.getRole());R r R.ok();r.put(token, token);r.put(role,user.getRole());r.put(userId,user.getId());return r;}/*** 注册*/IgnoreAuthPostMapping(value /register)public R register(RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);if(usersService.selectOne(new EntityWrapperUsersEntity().eq(username, user.getUsername())) !null) {return R.error(用户已存在);}usersService.insert(user);return R.ok();}/*** 退出*/GetMapping(value logout)public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok(退出成功);}/*** 修改密码*/GetMapping(value /updatePassword)public R updatePassword(String oldPassword, String newPassword, HttpServletRequest request) {UsersEntity users usersService.selectById((Integer)request.getSession().getAttribute(userId));if(newPassword null){return R.error(新密码不能为空) ;}if(!oldPassword.equals(users.getPassword())){return R.error(原密码输入错误);}if(newPassword.equals(users.getPassword())){return R.error(新密码不能和原密码一致) ;}users.setPassword(newPassword);usersService.updateById(users);return R.ok();}/*** 密码重置*/IgnoreAuthRequestMapping(value /resetPass)public R resetPass(String username, HttpServletRequest request){UsersEntity user usersService.selectOne(new EntityWrapperUsersEntity().eq(username, username));if(usernull) {return R.error(账号不存在);}user.setPassword(123456);usersService.update(user,null);return R.ok(密码已重置为123456);}/*** 列表*/RequestMapping(/page)public R page(RequestParam MapString, Object params,UsersEntity user){EntityWrapperUsersEntity ew new EntityWrapperUsersEntity();PageUtils page usersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put(data, page);}/*** 列表*/RequestMapping(/list)public R list( UsersEntity user){EntityWrapperUsersEntity ew new EntityWrapperUsersEntity();ew.allEq(MPUtil.allEQMapPre( user, user)); return R.ok().put(data, usersService.selectListView(ew));}/*** 信息*/RequestMapping(/info/{id})public R info(PathVariable(id) String id){UsersEntity user usersService.selectById(id);return R.ok().put(data, user);}/*** 获取用户的session用户信息*/RequestMapping(/session)public R getCurrUser(HttpServletRequest request){Integer id (Integer)request.getSession().getAttribute(userId);UsersEntity user usersService.selectById(id);return R.ok().put(data, user);}/*** 保存*/PostMapping(/save)public R save(RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);if(usersService.selectOne(new EntityWrapperUsersEntity().eq(username, user.getUsername())) !null) {return R.error(用户已存在);}usersService.insert(user);return R.ok();}/*** 修改*/RequestMapping(/update)public R update(RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);usersService.updateById(user);//全部更新return R.ok();}/*** 删除*/RequestMapping(/delete)public R delete(RequestBody Long[] ids){ListUsersEntity user usersService.selectList(null);if(user.size() 1){usersService.deleteBatchIds(Arrays.asList(ids));}else{return R.error(管理员最少保留一个);}return R.ok();}
}package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 字典* 后端接口* author* email
*/
RestController
Controller
RequestMapping(/dictionary)
public class DictionaryController {private static final Logger logger LoggerFactory.getLogger(DictionaryController.class);private static final String TABLE_NAME dictionary;Autowiredprivate DictionaryService dictionaryService;Autowiredprivate TokenService tokenService;Autowiredprivate ForumService forumService;//论坛Autowiredprivate HuodongService huodongService;//活动Autowiredprivate HuodongCollectionService huodongCollectionService;//活动收藏Autowiredprivate HuodongLiuyanService huodongLiuyanService;//活动留言Autowiredprivate HuodongYuyueService huodongYuyueService;//活动报名Autowiredprivate NewsService newsService;//公告资讯Autowiredprivate SucaiService sucaiService;//图片素材Autowiredprivate SucaiCollectionService sucaiCollectionService;//图片素材收藏Autowiredprivate SucaiLiuyanService sucaiLiuyanService;//图片素材留言Autowiredprivate SucaishipinService sucaishipinService;//视频素材Autowiredprivate SucaishipinCollectionService sucaishipinCollectionService;//视频素材收藏Autowiredprivate SucaishipinLiuyanService sucaishipinLiuyanService;//视频素材留言Autowiredprivate YonghuService yonghuService;//用户Autowiredprivate UsersService usersService;//管理员/*** 后端列表*/RequestMapping(/page)IgnoreAuthpublic R page(RequestParam MapString, Object params, HttpServletRequest request){logger.debug(page方法:,,Controller:{},,params:{},this.getClass().getName(),JSONObject.toJSONString(params));CommonUtil.checkMap(params);PageUtils page dictionaryService.queryPage(params);//字典表数据转换ListDictionaryView list (ListDictionaryView)page.getList();for(DictionaryView 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);DictionaryEntity dictionary dictionaryService.selectById(id);if(dictionary !null){//entity转viewDictionaryView view new DictionaryView();BeanUtils.copyProperties( dictionary , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 后端保存*/RequestMapping(/save)public R save(RequestBody DictionaryEntity dictionary, HttpServletRequest request){logger.debug(save方法:,,Controller:{},,dictionary:{},this.getClass().getName(),dictionary.toString());String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永远不会进入);WrapperDictionaryEntity queryWrapper new EntityWrapperDictionaryEntity().eq(dic_code, dictionary.getDicCode()).eq(index_name, dictionary.getIndexName());if(dictionary.getDicCode().contains(_erji_types)){queryWrapper.eq(super_id,dictionary.getSuperId());}logger.info(sql语句:queryWrapper.getSqlSegment());DictionaryEntity dictionaryEntity dictionaryService.selectOne(queryWrapper);if(dictionaryEntitynull){dictionary.setCreateTime(new Date());dictionaryService.insert(dictionary);//字典表新增数据,把数据再重新查出,放入监听器中ListDictionaryEntity dictionaryEntities dictionaryService.selectList(new EntityWrapperDictionaryEntity());ServletContext servletContext request.getServletContext();MapString, MapInteger,String map new HashMap();for(DictionaryEntity d :dictionaryEntities){MapInteger, String m map.get(d.getDicCode());if(m null || m.isEmpty()){m new HashMap();}m.put(d.getCodeIndex(),d.getIndexName());map.put(d.getDicCode(),m);}servletContext.setAttribute(dictionaryMap,map);return R.ok();}else {return R.error(511,表中有相同数据);}}/*** 后端修改*/RequestMapping(/update)public R update(RequestBody DictionaryEntity dictionary, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug(update方法:,,Controller:{},,dictionary:{},this.getClass().getName(),dictionary.toString());DictionaryEntity oldDictionaryEntity dictionaryService.selectById(dictionary.getId());//查询原先数据String role String.valueOf(request.getSession().getAttribute(role));
// if(false)
// return R.error(511,永远不会进入);dictionaryService.updateById(dictionary);//根据id更新//如果字典表修改数据的话,把数据再重新查出,放入监听器中ListDictionaryEntity dictionaryEntities dictionaryService.selectList(new EntityWrapperDictionaryEntity());ServletContext servletContext request.getServletContext();MapString, MapInteger,String map new HashMap();for(DictionaryEntity d :dictionaryEntities){MapInteger, String m map.get(d.getDicCode());if(m null || m.isEmpty()){m new HashMap();}m.put(d.getCodeIndex(),d.getIndexName());map.put(d.getDicCode(),m);}servletContext.setAttribute(dictionaryMap,map);return R.ok();}/*** 删除*/RequestMapping(/delete)public R delete(RequestBody Integer[] ids, HttpServletRequest request){logger.debug(delete:,,Controller:{},,ids:{},this.getClass().getName(),ids.toString());ListDictionaryEntity oldDictionaryList dictionaryService.selectBatchIds(Arrays.asList(ids));//要删除的数据dictionaryService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 最大值*/RequestMapping(/maxCodeIndex)public R maxCodeIndex(RequestBody DictionaryEntity dictionary){logger.debug(maxCodeIndex:,,Controller:{},,dictionary:{},this.getClass().getName(),dictionary.toString());ListString descs new ArrayList();descs.add(code_index);WrapperDictionaryEntity queryWrapper new EntityWrapperDictionaryEntity().eq(dic_code, dictionary.getDicCode()).orderDesc(descs);logger.info(sql语句:queryWrapper.getSqlSegment());ListDictionaryEntity dictionaryEntityList dictionaryService.selectList(queryWrapper);if(dictionaryEntityList.size()0 ){return R.ok().put(maxCodeIndex,dictionaryEntityList.get(0).getCodeIndex()1);}else{return R.ok().put(maxCodeIndex,1);}}/*** 批量上传*/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 {ListDictionaryEntity dictionaryList new ArrayList();//上传的东西MapString, ListString 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(static/upload/ fileName);//获取文件路径File file new File(resource.getFile());if(!file.exists()){return R.error(511,找不到上传文件请联系管理员);}else{ListListString dataList PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行因为第一行是提示for(ListString data:dataList){//循环DictionaryEntity dictionaryEntity new DictionaryEntity();
// dictionaryEntity.setDicCode(data.get(0)); //字段 要改的
// dictionaryEntity.setDicName(data.get(0)); //字段名 要改的
// dictionaryEntity.setCodeIndex(Integer.valueOf(data.get(0))); //编码 要改的
// dictionaryEntity.setIndexName(data.get(0)); //编码名字 要改的
// dictionaryEntity.setSuperId(Integer.valueOf(data.get(0))); //父字段id 要改的
// dictionaryEntity.setBeizhu(data.get(0)); //备注 要改的
// dictionaryEntity.setCreateTime(date);//时间dictionaryList.add(dictionaryEntity);//把要查询是否重复的字段放入map中}//查询是否重复dictionaryService.insertBatch(dictionaryList);return R.ok();}}}}catch (Exception e){e.printStackTrace();return R.error(511,批量插入数据异常请联系管理员);}}}