From 6643f63dd9e1c1f4a4e8345a38e0039c88f7161b Mon Sep 17 00:00:00 2001 From: Cloud <3183761076@qq.com> Date: Mon, 5 Dec 2022 18:26:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=82=AE=E7=AE=B1=E5=8F=91?= =?UTF-8?q?=E9=80=81bug=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 13 ++ .../dhu/common/GlobalExceptionHandler.java | 23 +- .../java/com/dhu/config/WebMvcConfig.java | 4 +- .../com/dhu/controller/DishController.java | 30 ++- .../dhu/controller/EmployeeController.java | 48 ++-- .../com/dhu/controller/SetmealController.java | 6 + .../com/dhu/controller/UserController.java | 73 ++++-- src/main/java/com/dhu/entity/User.java | 43 ---- .../java/com/dhu/filter/LoginCheckFilter.java | 3 +- src/main/java/com/dhu/mapper/UserMapper.java | 22 +- .../java/com/dhu/service/UserService.java | 19 +- .../com/dhu/service/impl/UserServiceImpl.java | 39 +++- src/main/resources/application.yml | 14 +- .../resources/backend/images/login/logo.png | Bin 9694 -> 15640 bytes src/main/resources/backend/images/logo.png | Bin 24582 -> 0 bytes src/main/resources/backend/index.html | 5 +- .../resources/backend/page/food/list.html | 2 +- .../resources/backend/page/login/login.html | 213 ++++++++++-------- src/main/resources/front/api/login.js | 8 + src/main/resources/front/index.html | 6 +- src/main/resources/front/page/add-order.html | 4 +- .../resources/front/page/address-edit.html | 2 +- src/main/resources/front/page/address.html | 2 +- .../resources/front/page/login-email.html | 26 +-- src/main/resources/front/page/login.html | 40 ++-- src/main/resources/front/page/no-wify.html | 4 +- src/main/resources/front/page/order.html | 4 +- src/main/resources/front/page/user.html | 9 +- 28 files changed, 422 insertions(+), 240 deletions(-) delete mode 100644 src/main/java/com/dhu/entity/User.java delete mode 100644 src/main/resources/backend/images/logo.png diff --git a/pom.xml b/pom.xml index 1f535af..286af75 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,13 @@ spring-boot-starter-thymeleaf + + + + + + + com.aliyun @@ -146,6 +153,12 @@ druid-spring-boot-starter 1.1.23 + + + + + + diff --git a/src/main/java/com/dhu/common/GlobalExceptionHandler.java b/src/main/java/com/dhu/common/GlobalExceptionHandler.java index cfe62ed..3aed6bf 100644 --- a/src/main/java/com/dhu/common/GlobalExceptionHandler.java +++ b/src/main/java/com/dhu/common/GlobalExceptionHandler.java @@ -1,6 +1,8 @@ package com.dhu.common; import lombok.extern.slf4j.Slf4j; +//import org.apache.shiro.authz.AuthorizationException; +//import org.apache.shiro.authz.UnauthorizedException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; @@ -18,7 +20,7 @@ import java.sql.SQLIntegrityConstraintViolationException; public class GlobalExceptionHandler { /** - * 异常处理方法 + * sql异常处理方法 * @return */ @ExceptionHandler(SQLIntegrityConstraintViolationException.class) @@ -33,7 +35,7 @@ public class GlobalExceptionHandler { } /** - * 异常处理方法 + * 业务异常处理方法 * @return */ @ExceptionHandler(CustomException.class) @@ -41,4 +43,21 @@ public class GlobalExceptionHandler { log.error(ex.getMessage()); return R.error(ex.getMessage()); } + + /** + * 权限异常处理方法 + */ +// @ExceptionHandler(UnauthorizedException.class) +// public R unauthorizedException(Exception ex){ +// log.error(ex.getMessage()); +// return R.error("当前用户无相应权限"); +// } +// +// @ExceptionHandler(AuthorizationException.class) +// public R authorizationException(Exception ex){ +// log.error(ex.getMessage()); +// return R.error("权限认证失败"); +// } + + } diff --git a/src/main/java/com/dhu/config/WebMvcConfig.java b/src/main/java/com/dhu/config/WebMvcConfig.java index 380fdd4..e04109e 100644 --- a/src/main/java/com/dhu/config/WebMvcConfig.java +++ b/src/main/java/com/dhu/config/WebMvcConfig.java @@ -62,9 +62,9 @@ public class WebMvcConfig extends WebMvcConfigurationSupport { private ApiInfo apiInfo(){ return new ApiInfoBuilder() - .title("瑞吉外卖") + .title("食为天") .version("1.0") - .description("瑞吉外卖接口文档") + .description("食为天线上点餐系统接口文档") .build(); } } diff --git a/src/main/java/com/dhu/controller/DishController.java b/src/main/java/com/dhu/controller/DishController.java index 865b1f4..a536a38 100644 --- a/src/main/java/com/dhu/controller/DishController.java +++ b/src/main/java/com/dhu/controller/DishController.java @@ -7,6 +7,7 @@ import com.dhu.dto.DishDto; import com.dhu.entity.Category; import com.dhu.entity.Dish; import com.dhu.entity.DishFlavor; +import com.dhu.entity.Setmeal; import com.dhu.service.CategoryService; import com.dhu.service.DishFlavorService; import com.dhu.service.DishService; @@ -169,9 +170,34 @@ public class DishController { } } - @DeleteMapping("/status") - public R deleteByIds(@PathVariable Collection ids){ + /** + * 批量删除 + * @param ids + * @return + */ + @DeleteMapping + public R deleteByIds(@RequestParam List ids){ dishService.removeByIds(ids); return R.success("删除成功"); } + + /** + * 批量停售与起售 + * @param status + * @param ids + * @return + */ + @PostMapping("/status/{status}") + public R saleOrNoSale(@PathVariable("status") int status,@RequestParam List ids) { + log.info("status:{} ids:{}",status,ids); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(ids!=null, Dish::getId, ids); + List dishes = dishService.list(lqw); + dishes.stream().map((item) ->{ + item.setStatus(status); + dishService.updateById(item); + return item; + }).collect(Collectors.toList()); + return R.success(status == 1 ?"起售成功":"停售成功"); + } } diff --git a/src/main/java/com/dhu/controller/EmployeeController.java b/src/main/java/com/dhu/controller/EmployeeController.java index cce605d..e2ddb2e 100644 --- a/src/main/java/com/dhu/controller/EmployeeController.java +++ b/src/main/java/com/dhu/controller/EmployeeController.java @@ -7,11 +7,19 @@ import com.dhu.entity.Employee; import com.dhu.service.EmployeeService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; +//import org.apache.shiro.SecurityUtils; +//import org.apache.shiro.authc.AuthenticationException; +//import org.apache.shiro.authc.AuthenticationToken; +//import org.apache.shiro.authc.UsernamePasswordToken; +//import org.apache.shiro.authz.annotation.RequiresRoles; +//import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.DigestUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.util.Map; @Slf4j @RestController @@ -38,7 +46,6 @@ public class EmployeeController { LambdaQueryWrapper lqw = new LambdaQueryWrapper(); lqw.eq(Employee::getUsername, employee.getUsername()); Employee emp = employeeService.getOne(lqw); - R result = new R(); //查询成功或失败 if (emp == null) { @@ -56,9 +63,32 @@ public class EmployeeController { } } +// @PostMapping("/login") +// public R login(HttpSession session, @RequestBody Map map) { +// +// //1.获取登录认证的subject对象 +// Subject subject = SecurityUtils.getSubject(); +// String password = map.get("password").toString(); +// String name = map.get("username").toString(); +// boolean rememberMe = (boolean) map.get("rememberMe"); +// //2.将账号密码封装到token中 +// AuthenticationToken token = new UsernamePasswordToken(name, password,rememberMe); +// //调用Login方法进行登录认证 +// try{ +// subject.login(token); +// session.setAttribute("user", token.getPrincipal().toString()); +// Employee employee = new Employee(); +// employee.setName(token.getPrincipal().toString()); +// return R.success(employee); +// } catch (AuthenticationException e){ +// e.printStackTrace(); +// log.info("登录失败"); +// return R.error("登录失败"); +// } +// } + /** * 员工退出方法 - * * @param request * @return */ @@ -75,19 +105,12 @@ public class EmployeeController { * @param employee * @return */ +// @RequiresRoles("admin") @PostMapping public R save(HttpServletRequest request, @RequestBody Employee employee) { log.info("新增员工,员工信息:{}", employee.toString()); //设置初始密码(md5加密) employee.setPassword(DigestUtils.md5DigestAsHex("123456".getBytes())); - //设置员工创建时间 -// employee.setCreateTime(LocalDateTime.now()); - //设置更新时间 -// employee.setUpdateTime(LocalDateTime.now()); - //设置创建人ID和更新人ID -// Long empId = (Long) request.getSession().getAttribute("employee"); -// employee.setCreateUser(empId); -// employee.setUpdateUser(empId); //保存数据到数据库 employeeService.save(employee); return R.success("添加成功"); @@ -126,13 +149,10 @@ public class EmployeeController { * @param employee * @return */ +// @RequiresRoles("admin") @PutMapping public R update(HttpServletRequest request, @RequestBody Employee employee){ log.info(employee.toString()); - //HttpSession session = request.getSession(); - //Long empId = (Long) session.getAttribute("employee"); - //employee.setUpdateUser(empId); - //employee.setUpdateTime(LocalDateTime.now()); long id = Thread.currentThread().getId(); log.info("线程id为:{}", id); employeeService.updateById(employee); diff --git a/src/main/java/com/dhu/controller/SetmealController.java b/src/main/java/com/dhu/controller/SetmealController.java index 2426726..0c2a28e 100644 --- a/src/main/java/com/dhu/controller/SetmealController.java +++ b/src/main/java/com/dhu/controller/SetmealController.java @@ -96,6 +96,12 @@ public class SetmealController { return R.success("套餐数据删除成功"); } + /** + * 菜品停售与起售 + * @param status + * @param ids + * @return + */ @PostMapping("/status/{status}") public R saleOrNoSale(@PathVariable("status") int status,@RequestParam List ids) { log.info("status:{} ids:{}",status,ids); diff --git a/src/main/java/com/dhu/controller/UserController.java b/src/main/java/com/dhu/controller/UserController.java index f9f9138..b368e2b 100644 --- a/src/main/java/com/dhu/controller/UserController.java +++ b/src/main/java/com/dhu/controller/UserController.java @@ -2,6 +2,7 @@ package com.dhu.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.dhu.common.R; +import com.dhu.entity.Employee; import com.dhu.entity.User; import com.dhu.service.UserService; import com.dhu.utils.ValidateCodeUtils; @@ -9,6 +10,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.util.DigestUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @@ -26,7 +28,7 @@ public class UserController { private RedisTemplate redisTemplate; /** - * 发送邮箱验证码 + * 发送手机验证码 * * @param user * @param session @@ -48,14 +50,17 @@ public class UserController { return R.success("手机验证码发送成功,请及时查看"); } return R.error("发生未知错误,验证码发送失败"); - - } + /** + * 发送邮箱校验码 + * @param user + * @return + */ @PostMapping("sendEmail") public R sendEmail(@RequestBody User user) { //获取邮箱账号 - String email = user.getPhone(); + String email = user.getEmail(); String subject = "食为天点餐系统登录验证码"; @@ -67,9 +72,6 @@ public class UserController { //发送邮箱验证码 userService.sendMsg(email, subject, context); - //将随机生成的验证码保存到session中 -// session.setAttribute(email,code); - //验证码保存到Redis中,并且设置验证码有效时间为5分钟 redisTemplate.opsForValue().set(email, code, 5, TimeUnit.MINUTES); return R.success("邮箱验证码发送成功,请及时查看"); @@ -92,30 +94,62 @@ public class UserController { //获取手机号 String phone = map.get("phone").toString(); + //将页面传输过来的密码进行MD5加密 + String password = map.get("password").toString(); + password = DigestUtils.md5DigestAsHex(password.getBytes()); + + //使用加密后的密码进行数据库查询 + LambdaQueryWrapper lqw = new LambdaQueryWrapper(); + lqw.eq(User::getPhone, phone); + User user = userService.getOne(lqw); + + //进行验证码的比对(页面提交的验证码和Session中保存的验证码比对) + if (user != null) { + //如果能够比对成功,说明登录成功 + //登陆成功,将用户Id存入Session并返回登录成功结果 + session.setAttribute("user", user.getId()); + return R.success(user); + } + return R.error("登录失败"); + } + + /** + * 邮箱登录 + * @param map + * @param session + * @return + */ + @PostMapping("/login-email") + public R login_email(@RequestBody Map map, HttpSession session) { + log.info(map.toString()); + //获取邮箱 + String email = map.get("email").toString(); + log.info("邮箱={}", email); //获取验证码 String code = map.get("code").toString(); - + log.info("验证码={}",code); //从Session中获取保存的验证码 // Object codeInSession = session.getAttribute(phone); - // 从Redis中获取缓存验证码 - Object codeInRedis = redisTemplate.opsForValue().get(phone); - + Object codeInRedis = redisTemplate.opsForValue().get(email); //进行验证码的比对(页面提交的验证码和Session中保存的验证码比对) if (codeInRedis != null && codeInRedis.equals(code)) { //如果能够比对成功,说明登录成功 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(User::getPhone, phone); - + queryWrapper.eq(User::getEmail, email); User user = userService.getOne(queryWrapper); if (user == null) { //判断当前手机号对应的用户是否为新用户,如果是新用户就自动完成注册 user = new User(); - user.setPhone(phone); + user.setEmail(email); user.setStatus(1); // 取邮箱的前五位为用户名 - user.setName(phone.substring(0, 6)); + user.setName(email.substring(0, 6)); + // 取邮箱@前的数字部分为密码 + String password = email.split("@")[0]; + user.setPassword(password); + user.setPhone("15577437713"); + log.info("user={}",user); userService.save(user); } session.setAttribute("user", user.getId()); @@ -136,10 +170,11 @@ public class UserController { return R.success("安全退出成功!"); } - @GetMapping("getByPhone") - public R getByPhone(String phone) { + @GetMapping("getById") + public R getById(HttpSession session) { + Long id =(Long) session.getAttribute("user"); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(User::getPhone, phone); + lqw.eq(User::getId, id); User user = userService.getOne(lqw); return R.success(user); } diff --git a/src/main/java/com/dhu/entity/User.java b/src/main/java/com/dhu/entity/User.java deleted file mode 100644 index 8d973db..0000000 --- a/src/main/java/com/dhu/entity/User.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dhu.entity; - -import lombok.Data; -import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; -import java.io.Serializable; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -/** - * 用户信息 - */ -@Data -public class User implements Serializable { - - private static final long serialVersionUID = 1L; - - private Long id; - - - //姓名 - private String name; - - - //手机号 - private String phone; - - - //性别 0 女 1 男 - private String sex; - - - //身份证号 - private String idNumber; - - - //头像 - private String avatar; - - - //状态 0:禁用,1:正常 - private Integer status; -} diff --git a/src/main/java/com/dhu/filter/LoginCheckFilter.java b/src/main/java/com/dhu/filter/LoginCheckFilter.java index 57c6b28..31ed675 100644 --- a/src/main/java/com/dhu/filter/LoginCheckFilter.java +++ b/src/main/java/com/dhu/filter/LoginCheckFilter.java @@ -35,6 +35,7 @@ public class LoginCheckFilter implements Filter { "/user/sendMsg", "/user/sendEmail", "/user/login", + "/user/login-email", "/doc.html", "/webjars/**", "/swagger-resources", @@ -93,4 +94,4 @@ public class LoginCheckFilter implements Filter { } return false; } -} +} \ No newline at end of file diff --git a/src/main/java/com/dhu/mapper/UserMapper.java b/src/main/java/com/dhu/mapper/UserMapper.java index 8efd520..8cbf199 100644 --- a/src/main/java/com/dhu/mapper/UserMapper.java +++ b/src/main/java/com/dhu/mapper/UserMapper.java @@ -1,9 +1,29 @@ package com.dhu.mapper; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dhu.entity.User; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +/** +* @author 缄默 +* @description 针对表【user(用户信息)】的数据库操作Mapper +* @createDate 2022-12-04 13:20:36 +* @Entity com.dhu.entity.User +*/ @Mapper public interface UserMapper extends BaseMapper { + + //获取用户角色信息 + @Select("select name from role where id in(select rid from role_user where uid =( select id from user where name =#{principal}));") + List getUserRoleInfoMapper(@Param("principal")String principal); + + List getUserPermissionInfoMapper(@Param("roles")List roles); } + + + + diff --git a/src/main/java/com/dhu/service/UserService.java b/src/main/java/com/dhu/service/UserService.java index 6f349ad..88d1a18 100644 --- a/src/main/java/com/dhu/service/UserService.java +++ b/src/main/java/com/dhu/service/UserService.java @@ -1,9 +1,24 @@ package com.dhu.service; -import com.baomidou.mybatisplus.extension.service.IService; import com.dhu.entity.User; +import com.baomidou.mybatisplus.extension.service.IService; -public interface UserService extends IService { +import java.util.List; +/** +* @author 缄默 +* @description 针对表【user(用户信息)】的数据库操作Service +* @createDate 2022-12-04 13:20:36 +*/ +public interface UserService extends IService { public void sendMsg(String email, String subject, String context); + + User getUserInfoByName(String name); + + //根据用户查询角色信息 + List getUserRoleInfo(String principal); + + //根据角色查询权限 + List getUserPermissionInfo(List roles); + } diff --git a/src/main/java/com/dhu/service/impl/UserServiceImpl.java b/src/main/java/com/dhu/service/impl/UserServiceImpl.java index 42e68be..dc54c91 100644 --- a/src/main/java/com/dhu/service/impl/UserServiceImpl.java +++ b/src/main/java/com/dhu/service/impl/UserServiceImpl.java @@ -1,21 +1,33 @@ package com.dhu.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dhu.entity.User; -import com.dhu.mapper.UserMapper; import com.dhu.service.UserService; +import com.dhu.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service; +import java.util.List; + +/** +* @author 缄默 +* @description 针对表【user(用户信息)】的数据库操作Service实现 +* @createDate 2022-12-04 13:20:36 +*/ @Service -public class UserServiceImpl extends ServiceImpl implements UserService { +public class UserServiceImpl extends ServiceImpl + implements UserService{ @Value("${spring.mail.username}") private String from; //邮件发送人 @Autowired private JavaMailSender mailSender; + + @Autowired + private UserMapper userMapper; @Override public void sendMsg(String to, String subject, String context) { SimpleMailMessage mailMessage = new SimpleMailMessage(); @@ -27,4 +39,27 @@ public class UserServiceImpl extends ServiceImpl implements Us mailSender.send(mailMessage); } + + @Override + public User getUserInfoByName(String name) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(User::getName, name); + User user = userMapper.selectOne(lqw); + return user; + } + + @Override + public List getUserRoleInfo(String principal) { + return userMapper.getUserRoleInfoMapper(principal); + } + + //获取角色权限信息 + @Override + public List getUserPermissionInfo(List roles) { + return userMapper.getUserPermissionInfoMapper(roles); + } } + + + + diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 3ec05fc..4e95204 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -11,6 +11,16 @@ spring: username: 3183761076@qq.com password: ypkoxfpwysdndebi default-encoding: utf-8 + smtp: + auth: true + ssl: + trust: smtp.qq.com + socketFactory: + class: 'javax.net.ssl.SSLSocketFactory' + port: 465 + starttls: + enable: true + required: true redis: password: a20011028 host: 101.133.226.33 @@ -40,4 +50,6 @@ mybatis-plus: db-config: id-type: ASSIGN_ID reggie: - path: /usr/local/img/ \ No newline at end of file + path: /usr/local/img/ +#shiro: +# loginUrl: /myController/login \ No newline at end of file diff --git a/src/main/resources/backend/images/login/logo.png b/src/main/resources/backend/images/login/logo.png index 86f104c9b1ba385473fb9bd8873a0af8c38c9604..6bd9fb8a652554e94903e0187bd3b5dda83c8e34 100644 GIT binary patch literal 15640 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 BtYQEF diff --git a/src/main/resources/backend/index.html b/src/main/resources/backend/index.html index f128773..96dd56a 100644 --- a/src/main/resources/backend/index.html +++ b/src/main/resources/backend/index.html @@ -4,7 +4,7 @@ - 瑞吉外卖管理端 + 食为天管理端 @@ -34,7 +34,8 @@