package com.zyy.book.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zyy.book.component.UserInterceptor;
import com.zyy.book.entity.*;
import com.zyy.book.exception.MyException;
import com.zyy.book.output.MyMsg;
import com.zyy.book.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Calendar;
import java.util.Date;
/**
* <p>
* 前端控制器
* </p>
*
* @author zyy
* @since 2021-02-23
*/
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
@Autowired
private IOrderService orderService;
@Autowired
private IRechargeService rechargeService;
@Autowired
private IBookService bookService;
@Autowired
private IBookChapterService bookChapterService;
@RequestMapping(method = RequestMethod.GET, path = "/logout")
public void logout(HttpServletRequest request, HttpServletResponse response) throws IOException {
HttpSession session = request.getSession();
session.removeAttribute(UserInterceptor.USER_SESSION_KEY);
response.sendRedirect("/");
}
@RequestMapping(method = RequestMethod.GET, path = "/login")
public ModelAndView login() {
return new ModelAndView("home/user/login");
}
@RequestMapping(method = RequestMethod.POST, path = "/login")
public MyMsg loginPost(@RequestParam String username,
@RequestParam String password,
HttpServletRequest request) throws MyException {
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.eq("username", username);
User user = userService.getOne(userQueryWrapper);
if (user == null) {
throw new MyException("用户或密码不正确");
}
if (!user.getPassword().equals(DigestUtils.md5DigestAsHex(password.getBytes()))) {
throw new MyException("用户或密码不正确");
}
HttpSession session = request.getSession();
session.setAttribute(UserInterceptor.USER_SESSION_KEY, user);
/*更新时间*/
user.setUpdatedAt(LocalDateTime.now());
userService.saveOrUpdate(user);
return new MyMsg(MyMsg.SUCCESS, "登陆成功");
}
@RequestMapping(method = RequestMethod.GET, path = "/reg")
public ModelAndView reg() {
return new ModelAndView("home/user/reg");
}
@RequestMapping(method = RequestMethod.POST, path = "/reg")
public MyMsg regPost(@RequestBody User user) throws MyException {
if (!StringUtils.hasText(user.getUsername()) || !StringUtils.hasText(user.getPassword())) {
throw new MyException("用户名或密码不能为空");
}
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.eq("username", user.getUsername());
int count = userService.count(userQueryWrapper);
if (count > 0) {
throw new MyException("用户名已存在");
}
if (user.getPhone().length() != 11) {
throw new MyException("手机号码长度为11位");
}
user.setPassword(DigestUtils.md5DigestAsHex(user.getPassword().getBytes()));
user.setBalance(new BigDecimal(0));
boolean save = userService.save(user);
if (!save) {
throw new MyException("注册失败");
}
return new MyMsg(MyMsg.SUCCESS, "", user);
}
@RequestMapping(method = RequestMethod.GET, path = "/index")
public ModelAndView index() {
return new ModelAndView("home/user/index");
}
@RequestMapping(method = RequestMethod.POST, path = "/vip")
public MyMsg vip(HttpServletRequest request) throws MyException {
HttpSession session = request.getSession();
User user1 = (User) session.getAttribute(UserInterceptor.USER_SESSION_KEY);
User user = userService.getById(user1.getId());
if (user.getVipExpirationAt() != null && user.getVipExpirationAt().isAfter(LocalDateTime.now())) {
throw new MyException("会员未过期");
}
if (user.getBalance().compareTo(new BigDecimal(100)) < 0) {
throw new MyException("开通VIP余额不足 ¥" + User.VIP_PRICE);
}
user.setBalance(user.getBalance().subtract(new BigDecimal(User.VIP_PRICE)));
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.YEAR, 1);
LocalDateTime localDateTime = LocalDateTime.ofInstant(calendar.toInstant(), ZoneOffset.systemDefault());
user.setVipExpirationAt(localDateTime);
userService.saveOrUpdate(user);
return new MyMsg(MyMsg.SUCCESS, "开通成功", user);
}
@RequestMapping(method = RequestMethod.GET, path = "/info")
public ModelAndView info(HttpServletRequest request) {
HttpSession session = request.getSession();
User user1 = (User) session.getAttribute(UserInterceptor.USER_SESSION_KEY);
User user = userService.getById(user1.getId());
return new ModelAndView("home/user/info", "user", user);
}
@RequestMapping(method = RequestMethod.POST, path = "/info")
public MyMsg infoPost(@RequestParam String gender,
@RequestParam String birthday,
@RequestParam String phone,
HttpServletRequest request) throws MyException, ParseException {
if (phone == null || phone.length() != 11) {
throw new MyException("手机号必须为11位");
}
HttpSession session = request.getSession();
User user1 = (User) session.getAttribute(UserInterceptor.USER_SESSION_KEY);
User user = userService.getById(user1.getId());
user.setGender(gender);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
user.setBirthday(simpleDateFormat.parse(birthday));
user.setPhone(phone);
userService.saveOrUpdate(user);
return new MyMsg(MyMsg.SUCCESS, "操作成功");
}
@RequestMapping(method = RequestMethod.GET, path = "/recharge")
public ModelAndView recharge(HttpServletRequest request) {
HttpSession session = request.getSession();
User user1 = (User) session.getAttribute(UserInterceptor.USER_SESSION_KEY);
User user = userService.getById(user1.getId());
ModelAndView view = new ModelAndView();
view.setViewName("home/user/recharge");
view.addObject("user", user);
view.addObject("vipPrice", User.VIP_PRICE);
return view;
}
@RequestMapping(method = RequestMethod.POST, path = "/recharge")
public MyMsg recharge(@RequestParam BigDecimal balance, HttpServletRequest request) throws MyException {
if (balance.compareTo(BigDecimal.ZERO) < 0) {
throw new MyException("金额必须大于0");
}
HttpSession session = request.getSession();
User user1 = (User) session.getAttribute(UserInterceptor.USER_SESSION_KEY);
User user = userService.getById(user1.getId());
if (user.getBalance() == null) {
user.setBalance(new BigDecimal(0));
}
BigDecimal newBalance = user.getBalance().add(balance);
user.setBalance(newBalance);
userService.saveOrUpdate(user);
/*log*/
Recharge recharge = new Recharge()
没有合适的资源?快使用搜索试试~ 我知道了~
毕业设计:在线阅读系统论文(源码 + 数据库 + 说明文档)
共488个文件
js:125个
png:84个
java:67个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 187 浏览量
2024-05-05
22:09:47
上传
评论
收藏 8.71MB RAR 举报
温馨提示
毕业设计:在线阅读系统论文(源码 + 数据库 + 说明文档) 第二章 网站开发所需要的工具 7 2.1 系统开发工具介绍 7 2.1.1 Macromedia Dreamweaver MX 2004简介 7 2.1.2 Macromedia Fireworks MX 2004简介 8 2.1.3 Macromedia Flash MX 2004简介 9 2.1.4 JSP简介 10 2.1.5 MSSQL简介 11 2.2 系统需求 12 2.2.1 Macromedia Dreamweaver MX等软件的系统需求 12 2.2.2 tomcat配置 12 2.3 JDK配置 14 第三章 系统分析 16 3.1整体框架结构 16 3.2 系统的E-R图 18 第四章 页面设计 26 4.1首页: 26 3.3.2 书籍查询浏览页: 29 3.3.3 在线留言页面: 32 3.3.4关于本站页面 34 3.3.4用户注册页面 35 3.3.7个人后台管理页面 37 第四章 管理员操作界面 39 4.1 管理员登陆界面 39 4.2 管理员操作界面 42 4.3 管理员操作详解 4
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计:在线阅读系统论文(源码 + 数据库 + 说明文档) (488个子文件)
book.mwb.bak 21KB
mvnw.cmd 6KB
summernote-bs3.css 143KB
bootstrap.min.css 118KB
bootstrap.min14ed.css 118KB
style.min.css 97KB
style.min862f.css 97KB
style.css 53KB
animate.min.css 46KB
user.css 42KB
style.css 38KB
datepicker3.css 33KB
font-awesome.min93e3.css 26KB
ambiance.css 25KB
style.min.css 25KB
sweetalert.css 18KB
simditor.css 17KB
ui.jqgridffe4.css 16KB
style.css 15KB
layer.css 14KB
jasny-bootstrap.min.css 14KB
chosen.css 12KB
dropzone.css 11KB
fullcalendar.css 11KB
summernote.css 10KB
plyr.css 10KB
codemirror.css 7KB
blueimp-gallery.min.css 7KB
awesome-bootstrap-checkbox.css 7KB
toastr.min.css 7KB
webuploader-demo.min.css 6KB
jquery.steps.css 6KB
footable.core.css 5KB
layer.css 5KB
jquery.fancybox.css 5KB
dataTables.bootstrap.css 5KB
bootstrap-table.min.css 4KB
clockpicker.css 4KB
basic.css 4KB
bootstrap-colorpicker.min.css 3KB
cropper.min.css 3KB
ion.rangeSlider.css 3KB
jquery.nouislider.css 3KB
bootstrap-markdown.min.css 3KB
jquery.gritter.css 3KB
ion.rangeSlider.skinFlat.css 2KB
login.min.css 1KB
custom.css 1KB
bootstrap-treeview.css 1KB
fullcalendar.print.css 660B
switchery.css 611B
webuploader.css 515B
morris-0.4.3.min.css 443B
在线阅读系统论文.doc 346KB
fontawesome-webfontd41d.eot 67KB
fontawesome-webfont93e3.eot 67KB
qd_iconfont.eot 49KB
glyphicons-halflings-regulard41d.eot 20KB
glyphicons-halflings-regular.eot 20KB
iconfont.eot 7KB
iconfont.eot 7KB
footabled41d.eot 5KB
footable.eot 5KB
[email protected] 14KB
loading.gif 11KB
fancybox_loading.gif 6KB
loading-0.gif 6KB
loading.gif 4KB
loading-2.gif 2KB
loading-upload.gif 2KB
loading-1.gif 701B
blank.gif 43B
ie-spacer.gif 43B
.gitignore 422B
read.html 13KB
detail.html 8KB
list.html 7KB
edit.html 7KB
add.html 7KB
reg.html 6KB
category.html 5KB
search.html 5KB
list.html 5KB
index.html 5KB
readRecord.html 4KB
edit.html 4KB
rank.html 4KB
add.html 4KB
list.html 4KB
login.html 3KB
list.html 3KB
index.html 3KB
recharge.html 3KB
edit.html 3KB
add.html 3KB
password.html 3KB
count.html 3KB
login.html 3KB
info.html 2KB
new.html 2KB
共 488 条
- 1
- 2
- 3
- 4
- 5
资源评论
学习资源网
- 粉丝: 938
- 资源: 1587
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功