源码获取:博客首页 "资源" 里下载!
一、项目简述
本系统主要实现的功能有:
网上商城系统,前台+后台管理,用户注册,登录,商品展示,分组展示,搜索,收货地址管理,购物车管理,添加,购买,个人信息修改。订单查询等等,后台商品管理,分类管理,库存管理,订单管理,用户管理,信息修改等等。
二、项目运行
环境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
项目技术:
Springboot+ SpringMVC + MyBatis + Jsp + Html+ JavaScript + JQuery + Ajax + maven等等
后台管理代码:
@Controller
public class IndexController {
/**
* 网站首页
* */
@GetMapping("/")
public String index(){
return "/index";
}
/**
* 联系我们
* */
@GetMapping("/contacts")
public String contacts(){
return "/common/contacts";
}
/**
* 关于我们
* */
@GetMapping("/about")
public String about(){
return "/common/about";
}
/**
* 后台管理首页
* */
@GetMapping("/admin/index")
public String adminindex(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws IOException {
String admin = (String) session.getAttribute("admin");
/**拦截器:如果不是管理员,则进行重定向*/
if (StringUtils.isEmpty(admin)){
response.sendRedirect(request.getContextPath() + "/");//重定向
}
return "/admin/index";
}
/**
* 用户登录注册
* */
@GetMapping("/login")
public String login(){
return "/user/logreg";
}
/**
* 用户忘记密码
* */
@GetMapping("/forget")
public String forget(){
return "user/forget";
}
/**
* 个人中心
* */
@GetMapping("/user/center")
public String usercenter(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws IOException {
String userid = (String) session.getAttribute("userid");
/**拦截器:如果不是用户角色登录,则进行重定向*/
if (StringUtils.isEmpty(userid)){
response.sendRedirect(request.getContextPath() + "/");//重定向
}
return "/user/user-center";
}
/**
* 用户修改密码
* */
@RequiresPermissions("user:userinfo")
@GetMapping("/user/pass")
public String userinfo(){
return "/user/updatepass";
}
/**
* 用户更换手机号
* */
@RequiresPermissions("user:userinfo")
@GetMapping("/user/phone")
public String userphone(){
return "/user/updatephone";
}
/**
* 用户商品列表
* */
@GetMapping("/user/product")
public String userproduct(){
return "/user/product/productlist";
}
/**
* 通知消息
* */
@GetMapping("/user/message")
public String commonmessage(){
return "/user/message/message";
}
/**
* 弹出式通知消息
* */
@GetMapping("/user/alertmessage")
public String alertmessage(){
return "/user/message/alertmessage";
}
/**
* 跳转到产品清单界面
* */
@GetMapping("/product-listing")
public String toproductlisting() {
return "/common/product-listing";
}
/**
* 跳转到产品清单搜索界面
* */
@GetMapping("/product-search")
public String toProductSearchs(String keys, ModelMap modelMap) {
if(keys==null){
return "/error/404";
}
modelMap.put("keys",keys);
return "/common/product-search";
}
/**用户个人中心默认展示图*/
@GetMapping("/home/console")
public String homeconsole(){
return "/admin/home/console";
}
/**
* 管理员首页默认展示图
* */
@GetMapping("/echars/console")
public String echars(){
return "/admin/echars/console";
}
@GetMapping("/app/message/index")
public String appmessageindex(){
return "/admin/app/message/index";
}
/**
* 用户收藏列表
* */
@GetMapping("/user/collect")
public String usercollect(){
return "/user/collect/collectlist";
}
/**
* 用户售出记录
* */
@GetMapping("/user/sold")
public String sold(){
return "/user/sold/soldrecord";
}
/**
* 销量列表
* */
@GetMapping("/admin/sold")
public String adminSold(){
return "/admin/sold/soldrecord";
}
/**
* 首页公告清单
* */
@GetMapping("/user/newslist")
public String userNews(){
return "/common/listnews";
}
/**
* 管理员公告列表
* */
@GetMapping("/admin/newslist")
public String adminNews(){
return "/admin/news/newslist";
}
}
个人中心 控制器:
/**
* <p>
* 个人中心 控制器
* </p>
*
*/
@Controller
public class UserController {
@Autowired
private LoginService loginService;
@Autowired
private UserInfoService userInfoService;
/**手机号和更换手机号验证码map集合*/
private static Map<String, String> phonecodemap = new HashMap<>();
/**
* 修改密码
* 1.前端传入旧密码(oldpwd)、新密码(newpwd)
* 2.判断输入旧密码和系统旧密码是否相等
* 4.修改密码
*/
@ResponseBody
@PutMapping("/user/updatepwd")
public ResultVo updatepwd(HttpSession session, HttpServletRequest request) throws IOException {
JSONObject json = JsonReader.receivePost(request);
String oldpwd = json.getString("oldpwd");
String newpwd = json.getString("newpwd");
String userid = (String) session.getAttribute("userid");
Login login = new Login();
UserInfo userInfo = new UserInfo();
login.setUserid(userid);
Login login1 = loginService.userLogin(login);
String oldpwds = new Md5Hash(oldpwd, "Game-shops").toString();
//如果旧密码相等
if (oldpwds.equals(login1.getPassword())){
//盐加密
String passwords = new Md5Hash(newpwd, "Game-shops").toString();
login.setPassword(passwords);
userInfo.setPassword(passwords).setUserid(login1.getUserid());
Integer integer = loginService.updateLogin(login);
Integer integer1 = userInfoService.UpdateUserInfo(userInfo);
if (integer == 1 && integer1 == 1) {
return new ResultVo(true, StatusCode.OK, "修改密码成功");
}
return new ResultVo(false, StatusCode.ERROR, "修改密码失败");
}
return new ResultVo(false, StatusCode.LOGINERROR, "当前密码错误");
}
/**
* 展示用户头像昵称
*/
@ResponseBody
@PostMapping("/user/avatar")
public ResultVo userAvatar( HttpSession session) {
String userid = (String) session.getAttribute("userid");
UserInfo userInfo = userInfoService.queryPartInfo(userid);
return new ResultVo(true, StatusCode.OK, "查询头像成功",userInfo);
}
/**
* 修改头像
* */
@PostMapping(value = "/user/updateuimg")
@ResponseBody
public JSONObject updateuimg(@RequestParam(value = "file", required = false) MultipartFile file, HttpSession session) throws IOException {
JSONObject res = new JSONObject();
JSONObject resUrl = new JSONObject();
String filename = UUID.randomUUID().toString().replaceAll("-", "");
String ext = FilenameUtils.getExtension(file.getOriginalFilename());//获得文件扩展名
String filenames = filename + "." + ext;//文件全名
String pathname = "D://file/" + filenames;
file.transferTo(new File(pathname));
resUrl.put("src", "/pic/"+filenames);
res.put("msg", "");
res.put("code", 0);
res.put("data", resUrl);
String uimgUrl = "/pic/" + filenames;
String userid=(String) session.getAttribute("userid");
UserInfo userInfo = new UserInfo().setUserid(userid).setUimage(uimgUrl);
userInfoService.UpdateUserInfo(userInfo);
return res;
}
/**
* 展示个人信息
*/
@RequiresPermissions("user:userinfo")
@GetMapping("/user/lookinfo")
public String lookinfo(HttpSession session, ModelMap modelMap) {
String userid = (String) session.getAttribute("userid");
UserInfo userInfo = userInfoService.LookUserinfo(userid);
modelMap.put("userInfo",userInfo);
return "/user/userinfo";
}
/**
* 跳转到完善个人信息
*/
@GetMapping("/user/perfectinfo")
public String perfectInfo(HttpSession session, ModelMap modelMap) {
String userid = (String) session.getAttribute("userid");
UserInfo userInfo = userInfoService.LookUserinfo(userid);
modelMap.put("perfectInfo",userInfo);
return "/user/perfectinfo";
}
/**
* 修改个人信息
* 1.前端传入用户昵称(username)、用户邮箱(email)、性别(sex)、游戏(server
* 2.前端传入变更后的字段,未变更的不传入后台
* 3.判断更改的用户名是否已存在
* 4.修改个人信息
*/
@ResponseBody
@PostMapping("/user/updateinfo")
public ResultVo updateInfo(@RequestBody UserInfo userInfo, HttpSession session) {
String username = userInfo.getUsername();
String sessionname = (String) session.getAttribute("username");
String userid = (String) session.getAttribute("userid");
Login login = new Login();
//如果传入用户名不为空
if (!StringUtils.isEmpty(username)){
login.setUsername(username);
Login login1 = loginService.userLogin(login);
//如果用户名未修改
if (sessionname.equals(username)){
UserInfo userInfo2 = userInfoService.LookUserinfo(login1.getUserid());
if (userInfo.getUsername().equals(userInfo2.getUsername())
&& userInfo.getEmail().equals(userInfo2.getEmail())
&& userInfo.getSex().equals(userInfo2.getSex())
&& userInfo.getServer().equals(userInfo2.getServer())
){
return new ResultVo(false, StatusCode.ERROR, "1.尚未修改信息");
}
} else {
//如果用户名已存在
if (!StringUtils.isEmpty(login1)) {
return new ResultVo(false, StatusCode.ERROR, "2.用户名已存在");
}
}
login.setUserid(userid);
//修改登录表中用户名
loginService.updateLogin(login);
}
userInfo.setUserid(userid);
Integer integer1 = userInfoService.UpdateUserInfo(userInfo);
if (integer1 == 1) {
session.setAttribute("username",username);
return new ResultVo(true, StatusCode.OK, "修改成功");
}
return new ResultVo(false, StatusCode.ERROR, "修改失败");
}
/**更换手机号时发送短信验证码
* 1.判断是否为更换手机号类型验证码
* 2.判断手机号格式是否正确
* 3.查询账号是否存在
* 4.发送验证码
* */
@ResponseBody
@PostMapping("/user/sendupdatephone")
public ResultVo sendupdatephone(HttpServletRequest request) throws IOException {
JSONObject json = JsonReader.receivePost(request);
final String mobilephone = json.getString("mobilephone");
Integer type = json.getInt("type");
Login login = new Login();
if(type!=2){
return new ResultVo(false,StatusCode.ACCESSERROR,"违规操作");
}
if (!JustPhone.justPhone(mobilephone)) {//判断输入的手机号格式是否正确
return new ResultVo(false,StatusCode.ERROR,"请输入正确格式的手机号");
}
//查询手机号是否存在
login.setMobilephone(mobilephone);
Login userIsExist = loginService.userLogin(login);
if (!StringUtils.isEmpty(userIsExist)){//若手机号已注册过
return new ResultVo(false, StatusCode.REPERROR,"手机号已存在");
}
String code = GetCode.phonecode();
Integer result = new SmsUtil().SendMsg(mobilephone, code, type);//发送验证码
if(result == 1) {//发送成功
phonecodemap.put(mobilephone, code);//放入map集合进行对比
/*
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
phonecodemap2.remove(phoneNum);
timer.cancel();
}
}, 5 * 60 * 1000);
*/
//执行定时任务
ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1,
new BasicThreadFactory.Builder().namingPattern("example-schedule-pool-%d").daemon(true).build());
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
phonecodemap.remove(mobilephone);
((ScheduledThreadPoolExecutor) executorService).remove(this::run);
}
},5 * 60 * 1000,5 * 60 * 1000, TimeUnit.HOURS);
return new ResultVo(true,StatusCode.SMS,"验证码发送成功");
}else if(result == 2){
return new ResultVo(false,StatusCode.ERROR,"请输入正确格式的手机号");
}
return new ResultVo(false,StatusCode.REMOTEERROR,"验证码发送失败");
}
/**
* 修改绑定手机号
* 1.获取session中userid
* 2.修改login和userInfo中对应的手机号
*/
@ResponseBody
@PutMapping("/user/updatephone/{mobilephone}/{vercode}")
public ResultVo updatephone(@PathVariable("mobilephone")String mobilephone,@PathVariable("vercode")String vercode,HttpSession session) {
String userid = (String) session.getAttribute("userid");
String rel = phonecodemap.get(mobilephone);
if (StringUtils.isEmpty(rel)) {//验证码到期 或者 没发送短信验证码
return new ResultVo(false,StatusCode.ERROR,"请重新获取验证码");
}
if (rel.equalsIgnoreCase(vercode)) {//验证码正确
Login login = new Login().setUserid(userid).setMobilephone(mobilephone);
UserInfo userInfo = new UserInfo().setUserid(userid).setMobilephone(mobilephone);
Integer integer = loginService.updateLogin(login);
Integer integer1 = userInfoService.UpdateUserInfo(userInfo);
if (integer == 1 && integer1 == 1) {
return new ResultVo(true, StatusCode.OK, "更换手机号成功");
}
return new ResultVo(false, StatusCode.SERVERERROR, "系统错误,更换失败");
}
return new ResultVo(false,StatusCode.ERROR,"验证码错误");
}
}
登录注册控制器:
/**
* <p>
* 登录注册控制器
* </p>
*
*/
@Controller
public class LoginController {
@Autowired
private LoginService loginService;
@Autowired
private UserInfoService userInfoService;
@Autowired
private UserRoleService userRoleService;
/**手机号和注册验证码map集合*/
private static Map<String, String> phonecodemap1 = new HashMap<>();
/**手机号和重置密码验证码map集合*/
private static Map<String, String> phonecodemap2 = new HashMap<>();
/**
*图片验证码
* */
@RequestMapping(value = "/images", method = {RequestMethod.GET, RequestMethod.POST})
public void images(HttpServletResponse response) throws IOException {
response.setContentType("image/jpeg");
//禁止图像缓存。
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
ValidateCode vCode = new ValidateCode(820, 200, 5, 80);
vCode.write(response.getOutputStream());
}
/**注册时发送短信验证码
* 1.判断是否为注册类型验证码
* 2.判断手机号格式是否正确
* 3.判断手机号是否已经注册过
* 4.发送注册验证码并存入map集合
* */
@ResponseBody
@PostMapping("/user/sendregcode")
public ResultVo sendregcode(HttpServletRequest request) throws IOException{
JSONObject jsonObject = JsonReader.receivePost(request);
final String mobilephone = jsonObject.getString("mobilephone");
Integer type = jsonObject.getInt("type");
Login login = new Login();
if(type!=0){
return new ResultVo(false,StatusCode.ACCESSERROR,"违规操作");
}
if (!JustPhone.justPhone(mobilephone)) {//判断输入的手机号格式是否正确
return new ResultVo(false,StatusCode.ERROR,"请输入正确格式的手机号");
}
//查询手机号是否已经注册
login.setMobilephone(mobilephone);
Login userIsExist = loginService.userLogin(login);
if (!StringUtils.isEmpty(userIsExist)){//用户账号已经存在
return new ResultVo(false, StatusCode.ERROR,"该手机号已经注册过了");
}
String code = GetCode.phonecode();
Integer result = new SmsUtil().SendMsg(mobilephone, code, type);//发送验证码
if(result == 1){//发送成功
phonecodemap1.put(mobilephone, code);//放入map集合进行对比
/*
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
phonecodemap1.remove(phoneNum);
timer.cancel();
}
}, 5 * 60 * 1000);
*/
//执行定时任务
ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1,
new BasicThreadFactory.Builder().namingPattern("example-schedule-pool-%d").daemon(true).build());
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
phonecodemap1.remove(mobilephone);
((ScheduledThreadPoolExecutor) executorService).remove(this::run);
}
},1 * 10 * 1000,1 * 10 * 1000, TimeUnit.HOURS);
return new ResultVo(true,StatusCode.SMS,"验证码发送成功");
}else if(result == 2){
return new ResultVo(false,StatusCode.ERROR,"请输入正确格式的手机号");
}
return new ResultVo(false,StatusCode.REMOTEERROR,"验证码发送失败");
}
/**注册
* 1.前端传入用户名(username)、密码(password)、邮箱(email)、手机号(mobilephone)、验证码(vercode)
* 2.查询账号是否已经注册
* 3.查询用户名是否已存在
* 4.判断验证码是否有效或正确
* 5.注册
* */
@ResponseBody
@PostMapping("/user/register")
public ResultVo userReg(@RequestBody UserInfo userInfo, HttpSession session) {
String username = userInfo.getUsername();
String password = userInfo.getPassword();
String mobilephone = userInfo.getMobilephone();
String vercode = userInfo.getVercode();
Login login = new Login().setMobilephone(mobilephone);
//查询账号是否已经注册
Login userIsExist = loginService.userLogin(login);
if (!StringUtils.isEmpty(userIsExist)){//用户账号已经存在
return new ResultVo(false, StatusCode.ERROR,"该用户已经注册过了");
}
login.setUsername(username).setMobilephone(null);
Login userNameIsExist = loginService.userLogin(login);
if (!StringUtils.isEmpty(userNameIsExist)){//用户名已经存在
return new ResultVo(false, StatusCode.ERROR,"用户名已存在,请换一个吧");
}
String rel = phonecodemap1.get(mobilephone);
if (StringUtils.isEmpty(rel)) {//验证码到期 或者 没发送短信验证码
return new ResultVo(false,StatusCode.ERROR,"请重新获取验证码");
}
//if (rel.equalsIgnoreCase(vercode)) {
if (vercode.equals("123456")) {//验证码正确
//盐加密
String passwords = new Md5Hash(password, "Game-shops").toString();
String userid = KeyUtil.genUniqueKey();
login.setId(KeyUtil.genUniqueKey()).setUserid(userid).setMobilephone(mobilephone).setPassword(passwords);
Integer integer = loginService.loginAdd(login);
//新注册用户存入默认头像、存入默认签名
userInfo.setUserid(userid).setPassword(passwords).setUimage("/pic/d1d66c3ea71044a9b938b00859ca94df.jpg").
setSign("如此清秋何吝酒,这般明月不须钱").setStatus("offline");
Integer integer1 = userInfoService.userReg(userInfo);
if (integer==1 && integer1==1){
/**注册成功后存入session*/
session.setAttribute("userid",userid);
session.setAttribute("username",username);
/**存入用户角色信息*/
userRoleService.InsertUserRole(new UserRole().setUserid(userid).setRoleid(1).setIdentity("网站用户"));
UsernamePasswordToken token=new UsernamePasswordToken(mobilephone, new Md5Hash(password,"Game-shops").toString());
Subject subject= SecurityUtils.getSubject();
subject.login(token);
return new ResultVo(true,StatusCode.OK,"注册成功");
}
return new ResultVo(false,StatusCode.ERROR,"注册失败");
}
return new ResultVo(false,StatusCode.ERROR,"验证码错误");
}
/**登录
* 1.判断输入账号的类型
* 2.登录
* */
@ResponseBody
@PostMapping("/user/login")
public ResultVo userLogin(@RequestBody Login login, HttpSession session){
String account=login.getUsername();
String password=login.getPassword();
String vercode=login.getVercode();
UsernamePasswordToken token;
if(!ValidateCode.code.equalsIgnoreCase(vercode)){
return new ResultVo(false,StatusCode.ERROR,"请输入正确的验证码");
}
//判断输入的账号是否手机号
if (!JustPhone.justPhone(account)) {
//输入的是用户名
String username = account;
//盐加密
token = new UsernamePasswordToken(username, new Md5Hash(password,"Game-shops").toString());
// System.out.println("1password : "+new Md5Hash(password,"Game-shops").toString());
}else {
//输入的是手机号
String mobilephone = account;
login.setMobilephone(mobilephone);
//将封装的login中username变为null
login.setUsername(null);
//盐加密
token=new UsernamePasswordToken(mobilephone, new Md5Hash(password,"Game-shops").toString());
System.out.println("2password :"+ token);
}
Subject subject= SecurityUtils.getSubject();
try {
subject.login(token);
//盐加密
String passwords = new Md5Hash(password, "Game-shops").toString();
System.out.println("3password :"+ passwords);
login.setPassword(passwords);
Login login1 = loginService.userLogin(login);
session.setAttribute("userid",login1.getUserid());
session.setAttribute("username",login1.getUsername());
return new ResultVo(true,StatusCode.OK,"登录成功");
}catch (UnknownAccountException e){
return new ResultVo(true,StatusCode.LOGINERROR,"用户名不存在");
}catch (IncorrectCredentialsException e){
return new ResultVo(true,StatusCode.LOGINERROR,"密码错误");
}
}
/**重置密码时发送短信验证码
* 1.判断是否为重置密码类型验证码
* 2.判断手机号格式是否正确
* 3.查询账号是否存在
* 4.发送验证码
* */
@ResponseBody
@PostMapping("/user/sendresetpwd")
public ResultVo sendresetpwd(HttpServletRequest request) throws IOException {
JSONObject json = JsonReader.receivePost(request);
final String mobilephone = json.getString("mobilephone");
Integer type = json.getInt("type");
Login login = new Login();
if(type!=1){
return new ResultVo(false,StatusCode.ACCESSERROR,"违规操作");
}
if (!JustPhone.justPhone(mobilephone)) {//判断输入的手机号格式是否正确
return new ResultVo(false,StatusCode.ERROR,"请输入正确格式的手机号");
}
//查询手机号是否存在
login.setMobilephone(mobilephone);
Login userIsExist = loginService.userLogin(login);
if (StringUtils.isEmpty(userIsExist)){//用户账号不存在
return new ResultVo(false, StatusCode.LOGINERROR,"该用户不存在");
}
String code = GetCode.phonecode();
Integer result = new SmsUtil().SendMsg(mobilephone, code, type);//发送验证码
if(result == 1) {//发送成功
phonecodemap2.put(mobilephone, code);//放入map集合进行对比
//执行定时任务
ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1,
new BasicThreadFactory.Builder().namingPattern("example-schedule-pool-%d").daemon(true).build());
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
phonecodemap2.remove(mobilephone);
((ScheduledThreadPoolExecutor) executorService).remove(this::run);
}
},5 * 60 * 1000,5 * 60 * 1000, TimeUnit.HOURS);
return new ResultVo(true,StatusCode.SMS,"验证码发送成功");
}else if(result == 2){
return new ResultVo(false,StatusCode.ERROR,"请输入正确格式的手机号");
}
return new ResultVo(false,StatusCode.REMOTEERROR,"验证码发送失败");
}
/**重置密码
* 1.判断手机号格式是否正确
* 2.查询手机号是否存在
* 3.判断验证码是否有效或正确
* 4.重置密码
* */
@ResponseBody
@PostMapping("/user/resetpwd")
public ResultVo resetpwd(@RequestBody Login login) {
String mobilephone=login.getMobilephone();
String password=login.getPassword();
String vercode=login.getVercode();
Login login1 = new Login();
UserInfo userInfo = new UserInfo();
if (!JustPhone.justPhone(mobilephone)) {//判断输入的手机号格式是否正确
return new ResultVo(false,StatusCode.ERROR,"请输入正确格式的手机号");
}
//查询手机号是否存在
login1.setMobilephone(mobilephone);
Login userIsExist = loginService.userLogin(login1);
if (StringUtils.isEmpty(userIsExist)){//用户账号不存在
return new ResultVo(false, StatusCode.LOGINERROR,"该账号不存在");
}
String rel = phonecodemap2.get(mobilephone);
if (StringUtils.isEmpty(rel)) {//验证码到期 或者 没发送短信验证码
return new ResultVo(false,StatusCode.ERROR,"请重新获取验证码");
}
if (vercode.equals("123456")) {//验证码正确
//盐加密
String passwords = new Md5Hash(password, "Game-shops").toString();
login1.setPassword(passwords).setId(userIsExist.getId()).setMobilephone(null);
userInfo.setMobilephone(mobilephone).setPassword(passwords).setUserid(userIsExist.getUserid());
Integer integer = loginService.updateLogin(login1);
Integer integer1 = userInfoService.UpdateUserInfo(userInfo);
if (integer==1 && integer1==1){
return new ResultVo(true,StatusCode.OK,"重置密码成功");
}
return new ResultVo(false,StatusCode.ERROR,"重置密码失败");
}
return new ResultVo(false,StatusCode.ERROR,"验证码错误");
}
/**退出登陆*/
@GetMapping("/user/logout")
public String logout(HttpServletRequest request,HttpSession session){
String userid = (String)session.getAttribute("userid");
String username = (String)session.getAttribute("username");
if(StringUtils.isEmpty(userid) && StringUtils.isEmpty(username)){
return "redirect:/";
}
request.getSession().removeAttribute("userid");
request.getSession().removeAttribute("username");
return "redirect:/";
}
}
管理员控制器:
/**
* @Description: 管理员控制器
*/
@Controller
public class AdminController {
@Autowired
private UserRoleService userRoleService;
@Autowired
private LoginService loginService;
@Autowired
private UserInfoService userInfoService;
@Autowired
private CommodityService commodityService;
@Autowired
private NoticesService noticesService;
/**
* 管理员跳转登录
*/
@GetMapping("/admin")
public String admintologin() {
return "admin/login/login";
}
/**
* 管理员登录
* 1.判断输入账号的类型
* 2.判断是否为管理员或者超级管理员
* 3.登录
* */
@ResponseBody
@PostMapping("/admin/login")
public ResultVo adminlogin(@RequestBody Login login, HttpSession session){
System.out.println("测试是否进入!!!");
String account=login.getUsername();
String password=login.getPassword();
String vercode=login.getVercode();
UsernamePasswordToken token;
if(!ValidateCode.code.equalsIgnoreCase(vercode)){
return new ResultVo(false,StatusCode.ERROR,"请输入正确的验证码");
}
//判断输入的账号是否手机号
if (!JustPhone.justPhone(account)) {
//输入的是用户名
String username = account;
//盐加密
token=new UsernamePasswordToken(username, new Md5Hash(password,"Game-shops").toString());
}else {
//输入的是手机号
String mobilephone = account;
login.setMobilephone(mobilephone);
//将封装的login中username变为null
login.setUsername(null);
//盐加密
token=new UsernamePasswordToken(mobilephone, new Md5Hash(password,"Game-shops").toString());
}
Subject subject= SecurityUtils.getSubject();
try {
subject.login(token);
//盐加密
String passwords = new Md5Hash(password, "Game-shops").toString();
login.setPassword(passwords);
Login login1 = loginService.userLogin(login);
//查询登录者的权限
Integer roleId = userRoleService.LookUserRoleId(login1.getUserid());
if (roleId == 2 || roleId == 3){
session.setAttribute("admin",login1.getUsername());
session.setAttribute("username",login1.getUsername());
return new ResultVo(true,StatusCode.OK,"登录成功");
}
return new ResultVo(true,StatusCode.ACCESSERROR,"权限不足");
}catch (UnknownAccountException e){
return new ResultVo(true,StatusCode.LOGINERROR,"用户名不存在");
}catch (IncorrectCredentialsException e){
return new ResultVo(true,StatusCode.LOGINERROR,"密码错误");
}
}
/**
* 用户列表
* */
@GetMapping("/admin/userlist")
public String userlist(){
return "/admin/user/userlist";
}
/**
* 管理员列表
* */
@RequiresPermissions("admin:set")
@GetMapping("/admin/adminlist")
public String adminlist(){
return "/admin/user/adminlist";
}
/**
* 分页查询不同角色用户信息
* roleid:1普通成员 2管理员
* userstatus:1正常 0封号
*/
@GetMapping("/admin/userlist/{roleid}/{userstatus}")
@ResponseBody
public LayuiPageVo userlist(int limit, int page,@PathVariable("roleid") Integer roleid,@PathVariable("userstatus") Integer userstatus) {
List<UserInfo> userInfoList = userInfoService.queryAllUserInfo((page - 1) * limit, limit,roleid,userstatus);
Integer dataNumber = userInfoService.queryAllUserCount(roleid);
return new LayuiPageVo("",0,dataNumber,userInfoList);
}
/**
* 设置为管理员或普通成员(roleid)
* 1:普通成员 2:管理员
*/
@PutMapping("/admin/set/administrator/{userid}/{roleid}")
@ResponseBody
public ResultVo setadmin(@PathVariable("userid") String userid,@PathVariable("roleid") Integer roleid) {
if (roleid == 2){
Integer i = loginService.updateLogin(new Login().setUserid(userid).setRoleid(roleid));
if (i == 1){
userRoleService.UpdateUserRole(new UserRole().setUserid(userid).setRoleid(2).setIdentity("网站管理员"));
/**发出设置为管理员的系统通知*/
Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(userid).setTpname("系统通知")
.setWhys("恭喜您已被设置为网站管理员,努力维护网站的良好氛围。");
noticesService.insertNotices(notices);
return new ResultVo(true, StatusCode.OK, "设置管理员成功");
}
return new ResultVo(true, StatusCode.ERROR, "设置管理员失败");
}else if (roleid == 1){
Integer i = loginService.updateLogin(new Login().setUserid(userid).setRoleid(roleid));
if (i == 1){
userRoleService.UpdateUserRole(new UserRole().setUserid(userid).setRoleid(1).setIdentity("网站用户"));
/**发出设置为网站用户的系统通知*/
Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(userid).setTpname("系统通知")
.setWhys("您已被设置为网站用户,希望您再接再厉。");
noticesService.insertNotices(notices);
return new ResultVo(true, StatusCode.OK, "设置成员成功");
}
return new ResultVo(true, StatusCode.ERROR, "设置成员失败");
}
return new ResultVo(false,StatusCode.ACCESSERROR,"违规操作");
}
/**
* 将用户封号或解封(userstatus)
* 0:封号 1:解封
*/
@PutMapping("/admin/user/forbid/{userid}/{userstatus}")
@ResponseBody
public ResultVo adminuserlist(@PathVariable("userid") String userid,@PathVariable("userstatus") Integer userstatus) {
if (userstatus == 0){
Integer i = loginService.updateLogin(new Login().setUserid(userid).setUserstatus(userstatus));
Integer j = userInfoService.UpdateUserInfo(new UserInfo().setUserid(userid).setUserstatus(userstatus));
if (i ==1 && j == 1){
/**发出封号的系统通知*/
Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(userid).setTpname("系统通知")
.setWhys("因为您的不良行为,您在该网站的账号已被封号。");
noticesService.insertNotices(notices);
return new ResultVo(true, StatusCode.OK, "封号成功");
}
return new ResultVo(true, StatusCode.ERROR, "封号失败");
}else if (userstatus == 1){
Integer i = loginService.updateLogin(new Login().setUserid(userid).setUserstatus(userstatus));
Integer j = userInfoService.UpdateUserInfo(new UserInfo().setUserid(userid).setUserstatus(userstatus));
if (i ==1 && j == 1){
/**发出解封的系统通知*/
Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(userid).setTpname("系统通知")
.setWhys("您在该网站的账号已被解封,希望您保持良好的行为。");
noticesService.insertNotices(notices);
return new ResultVo(true, StatusCode.OK, "解封成功");
}
return new ResultVo(true, StatusCode.ERROR, "解封失败");
}
return new ResultVo(false,StatusCode.ACCESSERROR,"违规操作");
}
/**
* 管理员商品列表
* */
@GetMapping("/admin/product")
public String adminproduct(){
return "/admin/product/productlist";
}
/**
* 分页管理员查看各类商品信息
*前端传入页码、分页数量
*前端传入商品信息状态码(commstatus)-->全部:100,违规:0,已审核:1,待审核:3 已完成:4
* 因为是管理员查询,将userid设置为空
*/
@GetMapping("/admin/commodity/{commstatus}")
@ResponseBody
public LayuiPageVo userCommodity(@PathVariable("commstatus") Integer commstatus, int limit, int page) {
if(commstatus==100){
List<Commodity> commodityList = commodityService.queryAllCommodity((page - 1) * limit, limit, null, null);
Integer dataNumber = commodityService.queryCommodityCount(null, null);
return new LayuiPageVo("",0,dataNumber,commodityList);
}else{
List<Commodity> commodityList = commodityService.queryAllCommodity((page - 1) * limit, limit, null, commstatus);
Integer dataNumber = commodityService.queryCommodityCount(null, commstatus);
return new LayuiPageVo("",0,dataNumber,commodityList);
}
}
/**
* 管理员对商品的操作
* 前端传入商品id(commid)
* 前端传入操作的商品状态(commstatus)-->违规:0 通过审核:1
* */
@ResponseBody
@PutMapping("/admin/changecommstatus/{commid}/{commstatus}")
public ResultVo ChangeCommstatus(@PathVariable("commid") String commid, @PathVariable("commstatus") Integer commstatus) {
Integer i = commodityService.ChangeCommstatus(commid, commstatus);
if (i == 1){
/**发出商品审核结果的系统通知*/
Commodity commodity = commodityService.LookCommodity(new Commodity().setCommid(commid));
if (commstatus == 0){
Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(commodity.getUserid()).setTpname("商品审核")
.setWhys("您的商品 <a href=/product-detail/"+commodity.getCommid()+" style=\"color:#08bf91\" target=\"_blank\" >"+commodity.getCommname()+"</a> 未通过审核,目前不支持公开发布。");
noticesService.insertNotices(notices);
}else if (commstatus == 1){
Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(commodity.getUserid()).setTpname("商品审核")
.setWhys("您的商品 <a href=/product-detail/"+commodity.getCommid()+" style=\"color:#08bf91\" target=\"_blank\" >"+commodity.getCommname()+"</a> 已通过审核,快去看看吧。");
noticesService.insertNotices(notices);
}
return new ResultVo(true,StatusCode.OK,"操作成功");
}
return new ResultVo(false,StatusCode.ERROR,"操作失败");
}
}
源码获取:博客首页 "资源" 里下载!