基于javaweb+mysql的springboot网上水果超市商城设计和实现(java+ssm+springboot+redis)

基于javaweb+mysql的springboot网上水果超市商城设计和实现(java+ssm+springboot+redis)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb+mysql的SpringBoot网上水果超市商城设计和实现(java+ssm+springboot+redis)

主要技术实现:spring、 springmvc、 redis、 springboot、 mybatis 、session、 jquery 、 md5 、bootstarp.js tomcat、、拦截器等。

主要功能实现: 前端:登录、注册、商品分类查看、浏览水果商品、订单管理、发表评论、收藏商品、购物车管理、个人订单管理查看、个人信息查看修改、地址管理等

后台管理员:后台登录、数据统计、系统版本信息等、管理员管理、角色管理、订单管理、通知公告管理、商品种类、和商品详情管理

主要功能截图如下:

用户填写相关信息进行注册:

水果商品数据列表查看:也可以根据关键字搜索水果商品信息

水果商品详情管理:点击可以查看水果商品购买详情数据、可以进行数量操作、加入订单和购物车以及收藏商品和查看排行等功能

我的购物车详情:可以结算以及继续购物和删除购物车信息等操作

订单详情管理:

我的个人信息管理:可以进行密码修改、订单查看管理、收藏查看管理、收获地址管理

我的评论查看:

我的收藏;可以移除收藏

后台管理员端主要实现:

超级管理员admin登录

系统首页:主要功能用户、角色、通知公告信息、商品种类以及商品详情管理和用户管理以及订单信息管理等数据操作。

后台菜单管理:

用户管理:

通知公告列表展示以及内容添加:

后台管理员对水果商品的管理:

上传商品详情信息:

商品评论数据维护:

订单管理和维护:

项目使用eclipse和idea运行、推荐idea、源码架构:

数据库设计ER图:

设计报告:

    private IUserService userService;

    @Autowired
    private IOrderService orderService;

    @Autowired
    private ICommentService commentService;

    /**
     * 注册页面
     * @param model
     * @return
     */
    @RequestMapping(value="/register",method=RequestMethod.GET)
    public String register(Model model) {
        return "home/user/register";
    }

    /**
     * 登录页面
     * @param model
     * @return
     */
    @RequestMapping(value="/login",method=RequestMethod.GET)
    public String login(Model model) {
        return "home/user/login";
    }

    /**
     * 个人信息页面
     * @param model
     * @return
     */
    @RequestMapping(value="/info",method=RequestMethod.GET)
    public String info(Model model) {
        return "home/user/info";
    }

    /**
     * 修改密码页面
     * @param model
     * @return
     */
    @RequestMapping(value="/update_passwd",method=RequestMethod.GET)
    public String updatePasswd(Model model) {
        return "home/user/update_passwd";
    }

    /**
	
	/**
	 * 个人信息页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/person_info",method=RequestMethod.GET)
	public String personInfo(Model model) {
		return "admin/system/person_info";
	}
	
	/**
	 * 退出登录
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/logout",method=RequestMethod.GET)
	public String logout(Model model,HttpServletRequest request) {
		request.getSession().setAttribute(SessionConstant.SESSION_ADMIN_LOGIN_KEY, null);
		return "admin/system/login";
	}
	
	/**
	 * 登录表单验证处理
	 * @param admin
	 * @param cpacha
	 * @return
	 */
	@RequestMapping(value="/login",method=RequestMethod.POST)
	@ResponseBody
	public ResponseVo<Boolean> login(Admin admin, String cpacha, HttpServletRequest request){
		if(admin == null) {
			return ResponseVo.errorByMsg(CodeMsg.DATA_ERROR);
		}
		if(StringUtil.isEmpty(cpacha)) {
			return ResponseVo.errorByMsg(CodeMsg.CPACHA_EMPTY);
		}
		String correct_cpacha = (String) request.getSession().getAttribute("admin_login");
		//判断验证码是否过期
		if(StringUtil.isEmpty(correct_cpacha)){
			return ResponseVo.errorByMsg(CodeMsg.CPACHA_EXPIRE);
		}
		if(!cpacha.toLowerCase().equals(correct_cpacha.toLowerCase())) {
			return ResponseVo.errorByMsg(CodeMsg.CPACHA_ERROR);
			log.info("当前路径获取到的token={}", token);
			try{
				//验证token
				DecodedJWT decodedJWT = JWTUtil.verifyToken(token);
				String id = decodedJWT.getClaim("id").asString();
				request.setAttribute("id", decodedJWT.getClaim("id").asString());
				request.setAttribute("username", decodedJWT.getClaim("username").asString());
				request.setAttribute("email", decodedJWT.getClaim("email").asString());
				request.setAttribute("phone", decodedJWT.getClaim("phone").asString());
				request.setAttribute("headPic", decodedJWT.getClaim("headPic").asString());
				request.setAttribute("cartTotal", cartService.total(Long.valueOf(id)).getData()); //获取购物车商品种类
			}catch(Exception e){
				e.printStackTrace();
				//token失效或非法
				//判断该路径要不要验证
				for(String str : RuntimeConstant.userNotNeedConfirmUrl){
					if(requestURI.equals(str)){
						temp = true; //该路径不需要验证
					}
				}
				if(temp == false) {
					//该路径需要验证,并进行是否是ajax请求判断
					//首先判断是否是ajax请求
					if (StringUtil.isAjax(request)) {
						//表示是ajax请求
						try {
							response.setCharacterEncoding("UTF-8");
							//JSON.parseObject,是将Json字符串转化为相应的对象;JSON.toJSONString则是将对象转化为Json字符串。
							response.getWriter().write(JSON.toJSONString(CodeMsg.USER_SESSION_EXPIRED));
						} catch (IOException e2) {
							e2.printStackTrace();
						}
						return false;
					}
					//不是ajax请求,直接跳转页面
					try {
						log.info("没有登录或token非法,跳转登录界面!当前URL={}",requestURI);
						response.sendRedirect("/home/user/login");
					} catch (IOException e3) {
						e3.printStackTrace();

 *
 */
@RequestMapping("/admin/menu")
@Controller
public class MenuController {

	@Autowired
	private IMenuService menuService;
	
	@Autowired 
	private MenuMapper menuMapper;
	
	@Autowired
	private AuthorityMapper authorityMapper;
	
	
	/**
	 * 菜单列表页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/index",method=RequestMethod.GET)
	public String index(Model model,Integer id,HttpServletRequest request) {
		//获取列表展示有关信息
		List<Menu> allMenus = menuMapper.selectAll();
		model.addAttribute("FirstMenus",menuService.getFirstMenus(allMenus).getData());
		model.addAttribute("SecondMenus",menuService.getSecondMenus(allMenus).getData());
		model.addAttribute("ThirdMenus",menuService.getThirdMenus(allMenus).getData());
		
		//获取路径上有关信息
		Menu selectByPrimaryKey = menuMapper.selectByPrimaryKey(id);
		if(selectByPrimaryKey == null) {
			return "error/404";
		}
		Admin loginedAdmin = (Admin) request.getSession().getAttribute(SessionConstant.SESSION_ADMIN_LOGIN_KEY);
		List<Authority> selectByRoleId = authorityMapper.selectByRoleId(loginedAdmin.getRoleId()); //获取当前用户所有权限
		Set<Integer> menuIdSet = selectByRoleId.stream().map(Authority :: getMenuId).collect(Collectors.toSet());//把权限中所有菜单id取出来
		List<Menu> allMenusByStateAndPrimaryKeys = menuMapper.selectByStateAndPrimaryKeys(MenuStateEnum.OPEN.getCode(), menuIdSet);
		model.addAttribute("onThirdMenus", menuService.getThirdMenus(allMenusByStateAndPrimaryKeys).getData());
		model.addAttribute("parentMenu", menuMapper.selectByPrimaryKey(selectByPrimaryKey.getParentId()));
		model.addAttribute("currentMenu", selectByPrimaryKey);
		return "admin/menu/index";
	}
	
	/**
	 * 菜单添加图标页面
        map.put("username",findUser.getUsername());
        map.put("email",findUser.getEmail());
        map.put("phone",findUser.getPhone());
        map.put("headPic",findUser.getHeadPic());
        String token = JWTUtil.getToken(map);

        return ResponseVo.successByMsg(true, token);
    }

    @Override
    public ResponseVo<Boolean> register(User user, String repassword, String cpacha, HttpServletRequest request) {
        if(user == null) {
            return ResponseVo.errorByMsg(CodeMsg.DATA_ERROR);
        }
        //统一表单验证
        CodeMsg validate = ValidateEntityUtil.validate(user);
        if(!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {
            return ResponseVo.errorByMsg(validate);
        }
        //验证确认密码和验证码是否为空
        if(StringUtil.isEmpty(repassword)){
            return ResponseVo.errorByMsg(CodeMsg.USER_REPASSWORD_EMPTY);
        }
        if(StringUtil.isEmpty(cpacha)){
            return ResponseVo.errorByMsg(CodeMsg.CPACHA_EMPTY);
        }
        //验证两次密码输入是否一致
        if(!user.getPassword().equals(repassword)){
            return ResponseVo.errorByMsg(CodeMsg.USER_REPASSWORD_ERROR);
        }
        //判断验证码输入是否正确
        String collectCpacha = (String) request.getSession().getAttribute("user_register");
        if(StringUtil.isEmpty(collectCpacha)){
            return ResponseVo.errorByMsg(CodeMsg.CPACHA_EXPIRE);
        }
        if(!cpacha.toLowerCase().equals(collectCpacha.toLowerCase())) {
            return ResponseVo.errorByMsg(CodeMsg.CPACHA_ERROR);
        }
        //判断用户名称是否已经存在
        if(isUsernameExist(user, 0L).getData()){
            return ResponseVo.errorByMsg(CodeMsg.USER_USERNAME_ALREADY_EXIST);
        }
        //把用户信息添加到数据库
        if(userMapper.insertSelective(user) <= 0) {
            return ResponseVo.errorByMsg(CodeMsg.USER_ADD_ERROR);
        }
        //发送邮件提醒用户成功注册
	@Autowired
	private IMenuService menuService;
	
	@Autowired 
	private MenuMapper menuMapper;
	
	@Autowired
	private RoleMapper roleMapper;
	
	@Autowired
	private RoleServiceImpl roleService;
	
	@Autowired
	private AuthorityMapper authorityMapper;
	
	/**
	 * 角色列表页面
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/index",method=RequestMethod.GET)
	public String index(Model model,Integer id,String name,HttpServletRequest request,
			@RequestParam(required = false, defaultValue = "1") Integer pageNum,
			@RequestParam(required = false, defaultValue = "5") Integer pageSize //每页5个数据
			) {
		//获取列表展示有关信息
		if(StringUtil.isEmpty(name)) {
			//如果查询信息为空
			model.addAttribute("PageInfo", roleService.getRoleListByPage(pageNum, pageSize).getData());
		}else {
			model.addAttribute("PageInfo", roleService.getRoleListByPageAndName(pageNum, pageSize, name).getData());
			model.addAttribute("name",name);
		}
		//获取路径上有关信息
		Menu selectByPrimaryKey = menuMapper.selectByPrimaryKey(id);
		if(selectByPrimaryKey == null) {
			return "error/404";
		}
		Admin loginedAdmin = (Admin) request.getSession().getAttribute(SessionConstant.SESSION_ADMIN_LOGIN_KEY);
		List<Authority> selectByRoleId = authorityMapper.selectByRoleId(loginedAdmin.getRoleId()); //获取当前用户所有权限
		Set<Integer> menuIdSet = selectByRoleId.stream().map(Authority :: getMenuId).collect(Collectors.toSet());//把权限中所有菜单id取出来
		List<Menu> allMenusByStateAndPrimaryKeys = menuMapper.selectByStateAndPrimaryKeys(MenuStateEnum.OPEN.getCode(), menuIdSet);
		model.addAttribute("onThirdMenus", menuService.getThirdMenus(allMenusByStateAndPrimaryKeys).getData());
		model.addAttribute("parentMenu", menuMapper.selectByPrimaryKey(selectByPrimaryKey.getParentId()));
		model.addAttribute("currentMenu", selectByPrimaryKey);
		return "admin/role/index";
	}
	
	/**
        //判断订单留言长度是否合法
        if(remark.length() > 50){
            return ResponseVo.errorByMsg(CodeMsg.ORDER_REMARK_EXCEED_LENGTH);
        }
        //声明一个自定义错误的CodeMsg
        CodeMsg codeMsg = CodeMsg.ORDER_ERROR;
        //声明一个商品id的Set集合
        Set<Long> productIdSet = new HashSet<>();
        //遍历订单中的商品
        for(OrderItem orderItem : order.getOrderItemList()){
            productIdSet.add(orderItem.getProductId());
        }
        //获取这些选中商品的详细信息
        List<Product> productList = productMapper.selectByProductIdSet(productIdSet);
        //分别比较订单中商品购买数量是否大于库存
        for(OrderItem orderItem : order.getOrderItemList()){
            for(Product product : productList){
                if(orderItem.getProductId().equals(product.getId())){
                    if(orderItem.getQuantity() > product.getStock()){
                        codeMsg.setMsg("商品<"+product.getProductName()+">库存不足了,请减少购买数量!");
                        return ResponseVo.errorByMsg(codeMsg);
                    }
                }
            }
        }
        //减少商品库存和增加商品销量
        for(OrderItem orderItem : order.getOrderItemList()){
            for(Product product : productList){
                if(orderItem.getProductId().equals(product.getId())){
                   product.setStock(product.getStock() - orderItem.getQuantity());
                   product.setSellNum(product.getSellNum() + orderItem.getQuantity());
                }
            }
        }
        //修改数据库中商品库存和商品销量信息
        for(Product product : productList){
            if(productMapper.updateByPrimaryKeySelective(product) <= 0){
                throw new RuntimeException("商品库存信息更新失败!");
            }
        }
        //修改订单信息
        order.setAddressId(address.getId());
        order.setRemark(remark);
        order.setState(OrderStateEnum.PAYED.getCode());
        //修改数据库中的订单信息
     * @return
     */
    @RequestMapping(value="/add",method=RequestMethod.POST)
    @ResponseBody
    public ResponseVo<Boolean> add(Product product){
        return productService.add(product);
    }

    /**
     * 编辑商品操作处理
     * @param product
     * @return
     */
    @RequestMapping(value="/edit",method=RequestMethod.POST)
    @ResponseBody
    public ResponseVo<Boolean> edit(Product product){
        return productService.edit(product);
    }

    /**
     * 删除商品操作处理
     * @param id
     * @return
     */
    @RequestMapping(value="/delete",method=RequestMethod.POST)
    @ResponseBody
    public ResponseVo<Boolean> delete(Long id){
        return productService.delete(id);
    }
}

	
	/**
	 * 菜单添加图标页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/icon",method=RequestMethod.GET)
	public String icon(Model model) {
		return "admin/menu/icon";
	}
	
	/**
	 * 菜单添加页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model) {
		List<Menu> allMenus = menuMapper.selectAll();
		model.addAttribute("FirstMenus",menuService.getFirstMenus(allMenus).getData());
		return "admin/menu/add";
	}
	
	/**
	 * 菜单编辑页面
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.GET)
	public String edit(Model model,Integer id) {
		Menu selectByPrimaryKey = menuMapper.selectByPrimaryKey(id);
		if(selectByPrimaryKey == null) {
			return "error/404";
		}
		List<Menu> allMenus = menuMapper.selectAll();
		model.addAttribute("FirstMenus",menuService.getFirstMenus(allMenus).getData());
		model.addAttribute("SecondMenus",menuService.getSecondMenus(allMenus).getData());
		model.addAttribute("editMenu",selectByPrimaryKey);
		return "admin/menu/edit";
	}
	
	/**
	 * 菜单添加按钮页面
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/add_button",method=RequestMethod.GET)
	public String add_button(Model model,Integer id) {
		Menu selectByPrimaryKey = menuMapper.selectByPrimaryKey(id);
		if(selectByPrimaryKey == null) {
        if(addressMapper.deleteByPrimaryKey(id) <= 0){
            return ResponseVo.errorByMsg(CodeMsg.ADDRESS_DELETE_ERROR);
        }
        return ResponseVo.successByMsg(true, "删除地址成功!");
    }

    @Override
    public Address selectByUserIdAndFirstSelected(Long userId, Integer firstSelected) {
        return addressMapper.selectByUserIdAndFirstSelected(userId, firstSelected);
    }
}

/**
 * 前台用户登录拦截器
 *
 */
@Component
public class UserLoginInterceptor implements HandlerInterceptor{

	private Logger log = LoggerFactory.getLogger(UserLoginInterceptor.class);

	@Autowired
	private ICartService cartService;
	
	@Override
	public boolean  preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
		String requestURI = request.getRequestURI();  //取得被拦截的链接,比如:requestURI=/system/index
		Boolean temp = false; //判断当前路径是否在不需要验证的路径里面  false:不在 true:在

/**
 * 后台管理系统菜单控制器

 *
 */
@RequestMapping("/admin/menu")
@Controller
public class MenuController {

	@Autowired
	private IMenuService menuService;
	
	@Autowired 
	private MenuMapper menuMapper;
	
	@Autowired
	private AuthorityMapper authorityMapper;
	
	
	/**
	 * 菜单列表页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/index",method=RequestMethod.GET)
	public String index(Model model,Integer id,HttpServletRequest request) {
		//获取列表展示有关信息
		List<Menu> allMenus = menuMapper.selectAll();
		model.addAttribute("FirstMenus",menuService.getFirstMenus(allMenus).getData());
		model.addAttribute("SecondMenus",menuService.getSecondMenus(allMenus).getData());
		model.addAttribute("ThirdMenus",menuService.getThirdMenus(allMenus).getData());
		
		//获取路径上有关信息
		Menu selectByPrimaryKey = menuMapper.selectByPrimaryKey(id);
		if(selectByPrimaryKey == null) {
			return "error/404";
		}
		Admin loginedAdmin = (Admin) request.getSession().getAttribute(SessionConstant.SESSION_ADMIN_LOGIN_KEY);
		List<Authority> selectByRoleId = authorityMapper.selectByRoleId(loginedAdmin.getRoleId()); //获取当前用户所有权限
		Set<Integer> menuIdSet = selectByRoleId.stream().map(Authority :: getMenuId).collect(Collectors.toSet());//把权限中所有菜单id取出来
		List<Menu> allMenusByStateAndPrimaryKeys = menuMapper.selectByStateAndPrimaryKeys(MenuStateEnum.OPEN.getCode(), menuIdSet);
		model.addAttribute("onThirdMenus", menuService.getThirdMenus(allMenusByStateAndPrimaryKeys).getData());
		model.addAttribute("parentMenu", menuMapper.selectByPrimaryKey(selectByPrimaryKey.getParentId()));
		model.addAttribute("currentMenu", selectByPrimaryKey);
		return "admin/menu/index";
	}
	
	/**
	 * 菜单添加图标页面
	 * @param model
		}else {
			model.addAttribute("PageInfo", roleService.getRoleListByPageAndName(pageNum, pageSize, name).getData());
			model.addAttribute("name",name);
		}
		//获取路径上有关信息
		Menu selectByPrimaryKey = menuMapper.selectByPrimaryKey(id);
		if(selectByPrimaryKey == null) {
			return "error/404";
		}
		Admin loginedAdmin = (Admin) request.getSession().getAttribute(SessionConstant.SESSION_ADMIN_LOGIN_KEY);
		List<Authority> selectByRoleId = authorityMapper.selectByRoleId(loginedAdmin.getRoleId()); //获取当前用户所有权限
		Set<Integer> menuIdSet = selectByRoleId.stream().map(Authority :: getMenuId).collect(Collectors.toSet());//把权限中所有菜单id取出来
		List<Menu> allMenusByStateAndPrimaryKeys = menuMapper.selectByStateAndPrimaryKeys(MenuStateEnum.OPEN.getCode(), menuIdSet);
		model.addAttribute("onThirdMenus", menuService.getThirdMenus(allMenusByStateAndPrimaryKeys).getData());
		model.addAttribute("parentMenu", menuMapper.selectByPrimaryKey(selectByPrimaryKey.getParentId()));
		model.addAttribute("currentMenu", selectByPrimaryKey);
		return "admin/role/index";
	}
	
	/**
	 * 角色添加页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model) {
		return "admin/role/add";
	}
	
	/**
	 * 角色编辑页面
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.GET)
	public String edit(Model model,Integer id) {
		Role selectByPrimaryKey = roleMapper.selectByPrimaryKey(id);
		if(selectByPrimaryKey == null) {
			return "error/404";
		}
		model.addAttribute("editRole", selectByPrimaryKey);
		return "admin/role/edit";
	}
	
	

/**
 * 前台用户登录拦截器
 *
 */
@Component
public class UserLoginInterceptor implements HandlerInterceptor{

	private Logger log = LoggerFactory.getLogger(UserLoginInterceptor.class);

	@Autowired
	private ICartService cartService;
	
	@Override
	public boolean  preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
		String requestURI = request.getRequestURI();  //取得被拦截的链接,比如:requestURI=/system/index
		Boolean temp = false; //判断当前路径是否在不需要验证的路径里面  false:不在 true:在
		String token = "";
		if(requestURI.contains("/home/")){
			Cookie[] cookies = request.getCookies();
			if(cookies != null && cookies.length > 0){
				for (Cookie cookie : cookies) {
					if ("my_token".equals(cookie.getName())) {
						token = cookie.getValue();
					}
				}
			}
			log.info("当前URL={}", requestURI);
			log.info("当前路径获取到的token={}", token);
			try{
				//验证token
				DecodedJWT decodedJWT = JWTUtil.verifyToken(token);
				String id = decodedJWT.getClaim("id").asString();
				request.setAttribute("id", decodedJWT.getClaim("id").asString());
				request.setAttribute("username", decodedJWT.getClaim("username").asString());
				request.setAttribute("email", decodedJWT.getClaim("email").asString());
				request.setAttribute("phone", decodedJWT.getClaim("phone").asString());
				request.setAttribute("headPic", decodedJWT.getClaim("headPic").asString());
    public ResponseVo<String> uploadPhoto(@RequestParam(name = "photo", required = true) MultipartFile photo) {
        //判断文件类型是否是图片
        String originalFilename = photo.getOriginalFilename();
        //获取文件后缀
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."), originalFilename.length());
        if (!uploadPhotoSufix.contains(suffix.toLowerCase())) {
            return ResponseVo.errorByMsg(CodeMsg.UPLOAD_PHOTO_SUFFIX_ERROR);
        }
        //photo.getSize()单位是B
        if (photo.getSize() / 1024 > uploadPhotoMaxSize) {
            CodeMsg codeMsg = CodeMsg.UPLOAD_PHOTO_ERROR;
            codeMsg.setMsg("图片大小不能超过" + (uploadPhotoMaxSize / 1024) + "M");
            return ResponseVo.errorByMsg(codeMsg);
        }
        //准备保存文件
        File filePath = new File(uploadPhotoPath);
        if (!filePath.exists()) {
            //若不存在文件夹,则创建一个文件夹
            filePath.mkdir();
        }
        filePath = new File(uploadPhotoPath + "/" + StringUtil.getFormatterDate(new Date(), "yyyyMMdd"));
        //判断当天日期的文件夹是否存在,若不存在,则创建
        if (!filePath.exists()) {
            //若不存在文件夹,则创建一个文件夹
            filePath.mkdir();
        }
        String filename = StringUtil.getFormatterDate(new Date(), "yyyyMMdd") + "/" + System.currentTimeMillis() + suffix;
        try {
            photo.transferTo(new File(uploadPhotoPath + "/" + filename));   //把文件上传
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info("图片上传成功,保存位置:" + uploadPhotoPath + filename);
        return ResponseVo.success(filename);

    }

    /**
     * 附件统一上传类

    @Override
    public ResponseVo<PageInfo> selectByPage(Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<Order> orderList = orderMapper.selectAll();
        PageInfo pageInfo = new PageInfo<>(orderList);
        pageInfo.setList(orderList);
        return ResponseVo.success(pageInfo);
    }

    @Override
    public ResponseVo<PageInfo> selectByPageAndContent(Long orderNo, Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<Order> orderList = orderMapper.selectBySearchContent(orderNo);
        PageInfo pageInfo = new PageInfo<>(orderList);
        pageInfo.setList(orderList);
        return ResponseVo.success(pageInfo);
    }

    @Override
    public Order selectByPrimaryKey(Long id) {
        return orderMapper.selectByPrimaryKey(id);
    }

    @Override
    public List<OrderItem> getOrderItemByOrderId(Long orderId) {
        return orderMapper.getOrderItemByOrderId(orderId);
    }

    @Override
    public ResponseVo<Boolean> deleteOrder(Long orderId) {
        if(orderId == null){
            return ResponseVo.errorByMsg(CodeMsg.DATA_ERROR);
        }
        //从数据库中删除订单信息
        if(orderMapper.deleteByPrimaryKey(orderId) <= 0){
            return ResponseVo.errorByMsg(CodeMsg.ORDER_DELETE_ERROR);
        }
        return ResponseVo.successByMsg(true, "订单删除成功!");
    }

    @Override
    public List<Order> getOrderByDay() {
        return orderMapper.getOrderByDay();
    }

    @Override
    public List<Order> getOrderByWeek() {
        return orderMapper.getOrderByWeek();
    }

    @Override
    public List<Order> getOrderByMonth() {
            return ResponseVo.errorByMsg(CodeMsg.USER_REPASSWORD_ERROR);
        }
        //判断验证码输入是否正确
        String collectCpacha = (String) request.getSession().getAttribute("user_register");
        if(StringUtil.isEmpty(collectCpacha)){
            return ResponseVo.errorByMsg(CodeMsg.CPACHA_EXPIRE);
        }
        if(!cpacha.toLowerCase().equals(collectCpacha.toLowerCase())) {
            return ResponseVo.errorByMsg(CodeMsg.CPACHA_ERROR);
        }
        //判断用户名称是否已经存在
        if(isUsernameExist(user, 0L).getData()){
            return ResponseVo.errorByMsg(CodeMsg.USER_USERNAME_ALREADY_EXIST);
        }
        //把用户信息添加到数据库
        if(userMapper.insertSelective(user) <= 0) {
            return ResponseVo.errorByMsg(CodeMsg.USER_ADD_ERROR);
        }
        //发送邮件提醒用户成功注册
        //MailUtil.sendMail(MailTypeEnum.USER_REGISTER.getCode(), user.getEmail(), "");
        return ResponseVo.successByMsg(true,"注册成功!快去登录体验吧!");
    }

    @Override
    public ResponseVo<String> updateInfo(User user) {
        if(user == null){
            return ResponseVo.errorByMsg(CodeMsg.DATA_ERROR);
        }
        //获取用户密码以便通过下面统一表单验证
        User findUserById = userMapper.selectByPrimaryKey(user.getId());
        user.setPassword(findUserById.getPassword());
        //统一表单验证
        CodeMsg validate = ValidateEntityUtil.validate(user);
        if(!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {
            return ResponseVo.errorByMsg(validate);
        }
        //修改数据库中用户信息
        if(userMapper.updateByPrimaryKeySelective(user) <= 0){
            return ResponseVo.errorByMsg(CodeMsg.USER_INFO_EDIT_ERROR);
        }
        Map<String,String> map = new HashMap<>();
        map.put("id",user.getId().toString());
        map.put("username",user.getUsername());
        map.put("email",user.getEmail());
        map.put("phone",user.getPhone());
        map.put("headPic",user.getHeadPic());
        String token = JWTUtil.getToken(map);

/**
 * 后台管理系统邮箱控制器

 *
 */
@RequestMapping("/admin/mail")
@Controller
public class MailController {

	@Autowired
	private MenuMapper menuMapper;
	
	@Autowired
	private IMenuService menuService;
	
	@Autowired
	private AdminMapper adminMapper;
	
	@Autowired
	private AttachmentMapper attachmentMapper;
	
	@Autowired
	private MailMapper mailMapper;
	
	@Autowired
	private IMailService mailService;
	
	@Autowired

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值