基于javaweb+mysql的springboot嘟嘟图片展览馆管理系统(java+springboot+springmvc+jpa+html+maven+mysql+redis)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot嘟嘟图片展览馆管理系统(java+springboot+springmvc+jpa+html+maven+mysql+redis)
一、项目运行 环境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
项目技术:
Springboot+ SpringMVC + JPA+ Jsp + Html+ JavaScript + JQuery + Ajax + maven等等
*/
@RequestMapping(value = "/purchaseImg.do",method = {RequestMethod.POST, RequestMethod.GET})
public ResponseBo purchaseImg(HttpServletRequest request){
ResponseBo responseBo=new ResponseBo();
try {
String uid=request.getParameter("userid");
String imgid=request.getParameter("imgid");
int uid1=Integer.parseInt(uid);
int imgid1=Integer.parseInt(imgid);
responseBo=testService.purchaseImg(uid1,imgid1);
} catch (Exception e) {
log.error("购买失败",e);
responseBo.setResMsg("购买失败");
}
return responseBo;
}
/**
* 功能描述:检查是否购买过
* 作者: wangzenghui
*/
@RequestMapping(value = "/checkPurchase.do",method = {RequestMethod.POST, RequestMethod.GET})
public ResponseBo checkPurchase(HttpServletRequest request){
ResponseBo responseBo=new ResponseBo();
try {
String uid=request.getParameter("userid");
String imgid=request.getParameter("imgid");
int uid1=Integer.parseInt(uid);
int imgid1=Integer.parseInt(imgid);
responseBo=testService.checkPurchase(uid1,imgid1);
} catch (Exception e) {
log.error("检查失败",e);
responseBo.setResMsg("检查失败");
}
return responseBo;
}
/**
* 功能描述:获取已购买的图片
* 作者: wangzenghui
*/
*/
@RequestMapping("/getComments.do")
public ResponseBo getComments(int imgid){
ResponseBo responseBo=new ResponseBo();
log.info("进入 getComments 方法");
try {
responseBo=testService.getComments(imgid);
} catch (Exception e) {
log.info("getComments 方法出现异常");
e.printStackTrace();
}
log.info("getComments 方法出参: "+responseBo.getResMsg());
return responseBo;
}
/**
* 功能描述:删除评论
* 作者: wangzenghui
*/
@RequestMapping("/delComments.do")
public ResponseBo delComments(int comid){
ResponseBo responseBo=new ResponseBo();
log.info("进入 delComments 方法");
try {
responseBo=testService.delComments(comid);
} catch (Exception e) {
log.info("delComments 方法出现异常");
e.printStackTrace();
}
log.info("delComments 方法出参: "+responseBo.getResMsg());
return responseBo;
}
/**
* 功能描述:举报评论
* 作者: wangzenghui
*/
ResponseBo unauditImg(int imgid) throws Exception;
/**
* 功能描述:获得充值表数据
* 作者: wangzenghui
*/
ResponseBo getDeposits() throws Exception;
/**
* 功能描述:添加积分,删除充值表
* 作者: wangzenghui
*/
ResponseBo addPoint(POINTS points) throws Exception;
/**
* 功能描述:获取评论
* 作者: wangzenghui
*/
ResponseBo getComments() throws Exception;
/**
* 功能描述:获取举报列表
* 作者: wangzenghui
*/
ResponseBo getComplains() throws Exception;
/**
* 功能描述:删除举报列表
* 作者: wangzenghui
*/
return responseBo;
}
@RequestMapping(value = "/testToken.do")
public ResponseBo testToken(HttpServletRequest request){
ResponseBo responseBo=new ResponseBo();
String token = request.getHeader("accessToken");
log.info("testToken.do++++++++++++++++"+String.valueOf(TokenSign.verify(token)));
String username = TokenSign.getUsername(token);
String userid= TokenSign.getUserId(token);
String userpic=TokenSign.getUserPic(token);
USERS users=new USERS();
users.setPic(userpic);
users.setName(username);
users.setId(Integer.parseInt(userid));
responseBo.setResult(users);
return responseBo;
}
}
*/
@RequestMapping(value = "/getUserById.do",method = {RequestMethod.POST, RequestMethod.GET})
public ResponseBo getUserById(HttpServletRequest request){
ResponseBo responseBo=new ResponseBo();
try {
String userid=request.getParameter("userid");
int userid2=Integer.parseInt(userid);
responseBo=testService.getUserById(userid2);
} catch (Exception e) {
log.error("查询失败",e);
responseBo.setResMsg("查询失败");
}
return responseBo;
}
/**
* 功能描述:搜索图片
* 作者: wangzenghui
*/
@RequestMapping(value = "/search.do",method = {RequestMethod.POST, RequestMethod.GET})
public ResponseBo search(HttpServletRequest request){
ResponseBo responseBo=new ResponseBo();
try {
String name=request.getParameter("name");
String type=request.getParameter("type");
log.info("进入search方法,入参 name:"+name);
ArrayList<String> names= StringUtil.split(name);
if (names.size()>1){
responseBo=testService.selectImgLikeName2(names);
}else {
if (type == null || type.equals("图片"))
responseBo = testService.selectImgLikeName(name);
else if (type.equals("用户"))
responseBo = testService.selectUserLikeName(name);
else if (type.equals("封禁用户"))
responseBo = testService.selectBanUserLikeName(name);
else if (type.equals("待审核图片"))
responseBo = testService.selectAudiImgLikeName(name);
else if (type.equals("评论"))
responseBo = testService.selectCommentsLikeName(name);
}
} catch (Exception e) {
log.error("查询失败",e);
responseBo.setResMsg("查询失败");
}
return responseBo;
}
/**
* 功能描述:根据类型获取图片
*/
ResponseBo checkPurchase(int uid,int imgid) throws Exception;
/**
* 功能描述:获取购买过的图片
* 作者: wangzenghui
*/
ResponseBo getImgPurchase(int uid) throws Exception;
/**
* 功能描述:用户充值
* 作者: wangzenghui
*/
ResponseBo deposit(DEPOSITS deposits) throws Exception;
/**
* 功能描述:添加标签
* 作者: wangzenghui
*/
ResponseBo addTags(int imgid,String tags) throws Exception;
/**
* 功能描述:添加待审核标签
* 作者: wangzenghui
*/
ResponseBo addAuditTags(int imgid,String tags) throws Exception;
/**
* 功能描述:获取标签
* 作者: wangzenghui
*/
ResponseBo getTags(String imgid) throws Exception;
/**
* 功能描述:删除标签
* 作者: wangzenghui
*/
ResponseBo delTags(int tagid) throws Exception;
/**
* 作者: wangzenghui
*/
ResponseBo login(HttpServletRequest request, USERS users) throws Exception;
/**
* 功能描述:上传图片
* 作者: wangzenghui
*/
ResponseBo upload(MultipartFile file, String title, String intro, int typeid, int userid) throws Exception;
/**
* 功能描述:获取所有图片
* 作者: wangzenghui
*/
ResponseBo getImgs() throws Exception;
/**
* 功能描述:更新用户信息
* 作者: wangzenghui
*/
ResponseBo update(HttpServletRequest request, MultipartFile file, String name) throws Exception;
/**
* 功能描述:修改密码
* 作者: wangzenghui
*/
ResponseBo updatePass(String pass, String newpass, int userid) throws Exception;
/**
* 功能描述:点赞图片
* 作者: wangzenghui
*/
ResponseBo thumb(int imgid, int userid) throws Exception;
/**
* 功能描述:收藏图片
* 功能描述: 后台功能
* 作 者: wangzenghui
* 修改记录:
* <时间> <作者> <版本> <描述>
*
*/
@RestController
@RequestMapping("/admin")
@Slf4j
public class AdminController {
@Autowired
AdminService adminService;
/**
* 功能描述:管理员登录
* 作者: wangzenghui
*/
@RequestMapping(value = "/login.do",method = RequestMethod.GET)
public ResponseBo login(HttpServletRequest request){
log.info("admin/AdminController======>login 进入方法");
ResponseBo responseBo=new ResponseBo();
String name=request.getParameter("name");
String password=request.getParameter("password");
String token=request.getHeader("accessToken");
if (token!=null) {
if (TokenSign.verify(token)) {
ADMINS admins = new ADMINS();
admins.setName(TokenSign.getUsername(token));
admins.setId(Integer.parseInt(TokenSign.getUserId(token)));
admins.setPic(TokenSign.getUserPic(token));
responseBo.setResult(admins);
return responseBo;
} else {
responseBo.setResMsg("token失效");
return responseBo;
}
}
try {
log.info("admin/AdminController======>login 进入接口,入参:name=",name);
responseBo=adminService.login(name,password);
} catch (Exception e) {
String name=request.getParameter("name");
String password=request.getParameter("password");
String token=request.getHeader("accessToken");
if (token!=null) {
if (TokenSign.verify(token)) {
ADMINS admins = new ADMINS();
admins.setName(TokenSign.getUsername(token));
admins.setId(Integer.parseInt(TokenSign.getUserId(token)));
admins.setPic(TokenSign.getUserPic(token));
responseBo.setResult(admins);
return responseBo;
} else {
responseBo.setResMsg("token失效");
return responseBo;
}
}
try {
log.info("admin/AdminController======>login 进入接口,入参:name=",name);
responseBo=adminService.login(name,password);
} catch (Exception e) {
log.error("admin/AdminController======>login 登录方法出错:{}",e);
responseBo.setResMsg("登录失败");
responseBo.setResult(e);
}
return responseBo;
}
/**
* 功能描述:获取所有用户信息
* 作者: wangzenghui
*/
@RequestMapping(value = "/getUsers.do",method = RequestMethod.GET)
public ResponseBo getUsers(HttpServletRequest request){
log.info("admin/AdminController======>getUsers 进入方法");
ResponseBo responseBo=new ResponseBo();
try {
log.info("admin/AdminController======>getUsers 进入接口,入参:无");
responseBo=adminService.getUsers();
} catch (Exception e) {
if (images == null) {
responseBo.setResMsg("查询失败");
return responseBo;
}
responseBo.setResMsg("查询成功");
responseBo.setResult(images);
return responseBo;
}
@Override
public ResponseBo getUserById(int userid) throws Exception {
ResponseBo responseBo = new ResponseBo();
USERS users = usersMapper.selectByPrimaryKey(userid);
if (users == null) {
responseBo.setResMsg("没有查询到用户");
return responseBo;
}
responseBo.setResMsg("查询成功");
responseBo.setResult(users);
return responseBo;
}
@Override
public ResponseBo selectImgLikeName(String name) throws Exception {
ResponseBo responseBo = new ResponseBo();
List result = imagesMapper.selectLikeNameOrIntro(name);
Set set = new HashSet();
for (int i = 0; i < result.size(); i++) {
IMAGES images = (IMAGES) result.get(i);
set.add(images.getId());
}
List tags = tagsMapper.selectLikeName(name);
List result2 = new ArrayList();
for (int i = 0; i < tags.size(); i++) {
TAGS temp = (TAGS) tags.get(i);
int imgid = temp.getImgid();
if (!set.contains(imgid))
result2.add(imagesMapper.selectByPrimaryKey(imgid));
}
if (result == null && tags == null) {
log.info("search方法结果 无查询结果");
responseBo.setResMsg("查询失败");
return responseBo;
}
* 作者: wangzenghui
*/
ResponseBo logout(HttpServletRequest request) throws Exception;
/**
* 功能描述:获取用户积分
* 作者: wangzenghui
*/
ResponseBo getPoints(int uid) throws Exception;
/**
* 功能描述:购买图片
* 作者: wangzenghui
*/
ResponseBo purchaseImg(int uid,int imgid) throws Exception;
/**
* 功能描述:检查是否购买过
* 作者: wangzenghui
*/
ResponseBo checkPurchase(int uid,int imgid) throws Exception;
/**
* 功能描述:获取购买过的图片
* 作者: wangzenghui
*/
ResponseBo getImgPurchase(int uid) throws Exception;
/**
* 功能描述:用户充值
* 作者: wangzenghui
*/
ResponseBo deposit(DEPOSITS deposits) throws Exception;
/**
* 功能描述:添加标签
* 作者: wangzenghui
*/
ResponseBo addTags(int imgid,String tags) throws Exception;
responseBo.setResult(images);
return responseBo;
}
@Override
public ResponseBo getUserById(int userid) throws Exception {
ResponseBo responseBo = new ResponseBo();
USERS users = usersMapper.selectByPrimaryKey(userid);
if (users == null) {
responseBo.setResMsg("没有查询到用户");
return responseBo;
}
responseBo.setResMsg("查询成功");
responseBo.setResult(users);
return responseBo;
}
@Override
public ResponseBo selectImgLikeName(String name) throws Exception {
ResponseBo responseBo = new ResponseBo();
List result = imagesMapper.selectLikeNameOrIntro(name);
Set set = new HashSet();
for (int i = 0; i < result.size(); i++) {
IMAGES images = (IMAGES) result.get(i);
set.add(images.getId());
}
List tags = tagsMapper.selectLikeName(name);
List result2 = new ArrayList();
for (int i = 0; i < tags.size(); i++) {
TAGS temp = (TAGS) tags.get(i);
int imgid = temp.getImgid();
if (!set.contains(imgid))
result2.add(imagesMapper.selectByPrimaryKey(imgid));
}
if (result == null && tags == null) {
log.info("search方法结果 无查询结果");
responseBo.setResMsg("查询失败");
return responseBo;
}
result.addAll(result2);
* 功能描述:给用户添加积分,删除充值表
* 作者: wangzenghui
*/
@Caching(evict={@CacheEvict(value="pointscache",allEntries=true)})
@RequestMapping("/addPoint.do")
public ResponseBo addPoint(POINTS points){
ResponseBo responseBo=new ResponseBo();
log.info("进入 addPoint 方法");
try {
responseBo=adminService.addPoint(points);
} catch (Exception e) {
log.info("addPoint 方法出现异常");
e.printStackTrace();
}
return responseBo;
}
/**
* 功能描述:获取评论
* 作者: wangzenghui
*/
@RequestMapping("/getComments.do")
public ResponseBo getComments(){
ResponseBo responseBo=new ResponseBo();
log.info("进入 getComments 方法");
try {
responseBo=adminService.getComments();
} catch (Exception e) {
log.info("getComments 方法出现异常");
e.printStackTrace();
}
return responseBo;
}
/**
* 功能描述:获取举报列表
* 作者: wangzenghui
*/
@RequestMapping("/getComplains.do")
public ResponseBo getComplains(){
ResponseBo responseBo=new ResponseBo();
log.info("进入 getComplains 方法");
try {
ResponseBo responseBo=new ResponseBo();
log.info("进入 deposit 方法");
try {
responseBo=testService.deposit(deposits);
} catch (Exception e) {
log.info("deposit 方法出现异常");
e.printStackTrace();
}
log.info("deposit 方法出参"+responseBo.getResMsg());
return responseBo;
}
/**
* 功能描述:添加标签
* 作者: wangzenghui
*/
@RequestMapping("/addTags.do")
public ResponseBo addTags(int imgid,String tags){
ResponseBo responseBo=new ResponseBo();
log.info("进入 addTags 方法");
try {
responseBo=testService.addTags(imgid,tags);
} catch (Exception e) {
log.info("addTags 方法出现异常");
e.printStackTrace();
}
log.info("addTags 方法出参"+responseBo.getResMsg());
return responseBo;
}
/**
* 功能描述:获取标签
* 作者: wangzenghui
*/
@RequestMapping("/getTags.do")
public ResponseBo getTags(String imgid){
ResponseBo responseBo=new ResponseBo();
log.info("进入 getTags 方法");
try {
responseBo=testService.getTags(imgid);
} catch (Exception e) {
log.info("getTags 方法出现异常");
e.printStackTrace();
}
log.info("getTags 方法出参: "+responseBo.getResMsg());
return responseBo;
}
responseBo.setResMsg("该用户不存在");
return responseBo;
}
String password = new MD5Util().EncoderByMd5(users.getPassword());
if (selUsers.getPassword().equals(password) == false) {
responseBo.setResMsg("密码错误");
return responseBo;
}
if (selUsers.getBan() == 1) {
responseBo.setResMsg("封禁账号");
return responseBo;
}
responseBo.setResMsg("登录成功");
responseBo.setResult(selUsers);
String token = TokenSign.sign(selUsers.getName(), String.valueOf(selUsers.getId()), selUsers.getPic());
responseBo.setAccessToken(token);
// request.getSession().invalidate();
// HttpSession session = request.getSession();
// session.setAttribute("users", selUsers);
return responseBo;
}
/**
* 功能描述:上传图片
* 作者: wangzenghui
*/
@Override
public ResponseBo upload(MultipartFile file, String title, String intro, int typeid, int userid) throws Exception {
ResponseBo responseBo = new ResponseBo();
if (file == null) {
responseBo.setResMsg("请上传文件");
return responseBo;
}
String fileNames = file.getOriginalFilename();//这个fileNames是上传的文件名(不是地址)
int split = fileNames.lastIndexOf(".");
String suffix = fileNames.substring(split + 1, fileNames.length());//文件后缀,用于判断上传的文件是否是合法的
/**
* 功能描述: 前台功能
* 作 者: wangzenghui
* 修改记录:
* <时间> <作者> <版本> <描述>
*
*/
@RestController
@RequestMapping("/hui/TestController")
@Slf4j
public class TestController {
@Autowired
TestService testService;
int res = -1;
TAGS dataTags = tagsMapper.selectByNameAndImgid(tag, imgidNum);
if (dataTags == null) {
TAGS newTags = new TAGS();
newTags.setName(tag);
newTags.setImgid(imgidNum);
res = tagsMapper.insert(newTags);
}
if (res == 0) {
responseBo.setResMsg("插入失败");
responseBo.setResult(i);
return responseBo;
}
responseBo.setResMsg("插入成功");
}
return responseBo;
}
@Override
public ResponseBo addAuditTags(int imgid, String tags) throws Exception {
ResponseBo responseBo = new ResponseBo();
ArrayList<String> list = StringUtil.split(tags);
for (int i = 0; i < list.size(); i++) {
String tag = list.get(i);
int imgidNum = imgid;
int res = -1;
AUDITTAGS newTags = new AUDITTAGS();
newTags.setName(tag);
newTags.setImgid(imgidNum);
res = audittagsMapper.insert(newTags);
if (res == 0) {
responseBo.setResMsg("添加失败");
responseBo.setResult(i);
return responseBo;
}
responseBo.setResMsg("添加成功");
}
return responseBo;
}
@Cacheable(value = "tagscache")
@Override
public ResponseBo getTags(String imgid) throws Exception {
ResponseBo responseBo = new ResponseBo();
/**
* 功能描述:通过审核图片
* 作者: wangzenghui
*/
@RequestMapping(value = "/auditImg.do",method = {RequestMethod.POST, RequestMethod.GET})
public ResponseBo auditImg(HttpServletRequest request){
ResponseBo responseBo=new ResponseBo();
try {
String img=request.getParameter("imgid");
int imgid=Integer.parseInt(img);
responseBo=adminService.auditImg(imgid);
} catch (Exception e) {
log.error("审核失败",e);
responseBo.setResMsg("审核失败");
}
log.info("AdminController===>auditImg 方法 出参:responseBo="+responseBo);
return responseBo;
}
/**
* 功能描述:不通过审核图片
* 作者: wangzenghui
*/
@RequestMapping(value = "/unauditImg.do",method = {RequestMethod.POST, RequestMethod.GET})
public ResponseBo unauditImg(HttpServletRequest request){
ResponseBo responseBo=new ResponseBo();
try {
String img=request.getParameter("imgid");
int imgid=Integer.parseInt(img);
responseBo=adminService.unauditImg(imgid);
} catch (Exception e) {
log.error("审核失败",e);
responseBo.setResMsg("审核失败");
}
log.info("AdminController===>unauditImg 方法 出参:responseBo="+responseBo);
return responseBo;
}
/**
* 功能描述:获取充值表数据
* 作者: wangzenghui