基于javaweb+mysql的ssm二手汽车商城管理系统(java+jsp+bootstrap+ssm+mysql)

基于javaweb+mysql的ssm二手汽车商城管理系统(java+jsp+bootstrap+ssm+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

基于javaweb+mysql的SSM二手汽车商城管理系统(java+jsp+bootstrap+ssm+mysql)

项目介绍

本项目共分为管理员、用户、店员三种角色: 管理员角色包含以下功能: 管理员登录,在售车辆管理,品牌管理,品牌分类管理,推荐车辆,订单管理,销量统计等功能。

用户角色包含以下功能: 用户登录,用户角色首页,购物商城,查看购物车,订单管理,个人信息修改,关于我们等功能。

店员角色包含以下功能: 添加删除修改二手车,订单管理,销量统计,个人信息修改等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7/8.0版本均可; 6.是否Maven项目:否;

技术栈

  1. 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+JavaScript+jQuery+BootStrap

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中DB.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ 登录
	private PriceService priceService;
	
	@Autowired
	private ShopCartService shopCartService;
	
	@Autowired
	private PageService pageService;
	
	//导航栏的搜索框
	@RequestMapping("/navQueryIdOrName")
	public String navQueryIdOrName(Map<String, Object> map, String car_name){
		List<Car> onlineCarList = carService.queryOnlineCarByIdOrName(car_name);
		map.put("onlineCarList", onlineCarList);
		map.put("brandList", brandService.queryBeQueryBrand());
		map.put("priceList",priceService.getAllPrice());
		map.put("recommandList", carService.queryAllRecommandCar());
		return "user/shop/shopIndex";
	}
	
	//初始化商店界面
	@RequestMapping("/shopInit")
	public String shopInit(Map<String, Object> map, String currentpage){
		List<Car> onlineCarList = carService.queryAllOnlineCar();
		
		Page page = pageService.pageToCar(onlineCarList.size(), currentpage);
		int subEnd = (page.getCurrentpage()-1)*page.getSize() + page.getSize() > onlineCarList.size() ? onlineCarList.size() : (page.getCurrentpage()-1)*page.getSize() + page.getSize();
		onlineCarList = onlineCarList.subList( (page.getCurrentpage()-1)*page.getSize() , subEnd);
		
		map.put("page", page);
		map.put("onlineCarList", onlineCarList);
		map.put("brandList", brandService.queryBeQueryBrand());
		map.put("priceList",priceService.getAllPrice());
		map.put("recommandList", carService.queryAllRecommandCar());
		
		return "user/shop/shopIndex";
	}
	
	//多添加查询商品
	@RequestMapping("/queryCarByClassifys")
	public String queryCarByClassifys(String brand_id, String price_low, String price_high, String time_start, String time_end, Map<String, Object> map){
		if(time_start == null || time_start.equals("不限制"))	time_start = "1000-01-01 00:00:01";
		if(time_end == null || time_end.equals("不限制"))	time_end = "5000-01-01 00:00:01";
		
		ShopQuery shopQuery = new ShopQuery(Integer.parseInt(price_low), Integer.parseInt(price_high), brand_id, time_start, time_end);
		List<Car> onlineCarList = carService.queryCarByClassifys(shopQuery);
		
		map.put("onlineCarList", onlineCarList);
		map.put("brandList", brandService.queryBeQueryBrand());
		map.put("priceList",priceService.getAllPrice());
		map.put("recommandList", carService.queryAllRecommandCar());
		
		if(!brand_id.equals("all")){
			String name = brandService.queryBrandById(brand_id).getBrand_name();
		}
	}
	
	//修改用户的密码
	@RequestMapping("/changePassword")
	public String changePassword(String oldPwd, String newPwd, Map<String, Object> map, HttpSession session){
		Login login = (Login) session.getAttribute("loginSession");
		if(login == null){
			return "redirect:/loginInitAction";
		}else if( !login.getLogin_permission().equals("user")){
			return "redirect:/loginInitAction";
		}
		
		if( ! login.getLogin_password().equals(oldPwd)){	//输入密码错误
			map.put("changePwdError", "您输入的原密码错误");
			return "user/userInfo/changePassword";
		}
		
		login.setLogin_password(newPwd);
		loginSevice.saveLogin(login);
		map.put("changePwdSuccess", "恭喜您,修改密码成功");
		return "user/userInfo/changePassword";
	}
}
package com.carSystem.action.admin;

@Controller
@RequestMapping("/adminRecommandManage")
public class RecommandManageAction {

	@Autowired
	private CarService carService;
	
	//查询全部的在售车辆,从中找出推荐和不推荐
	@RequestMapping("/recommandList")
	public String recommandList(Map<String, Object> map){
		List<Car> onlineList = carService.queryAllOnlineCar();
		
		//推荐和不推荐的list
		List<Car> notList = new ArrayList(10);
		List<Car> yesList = new ArrayList(10);
		for(int i=0; i<onlineList.size(); i++){
			System.out.println("============>" + onlineList.get(i).getCar_status_recommend() + "=========");
	
	
	
	
	
}
package com.carSystem.action;

@Controller
public class LoginAction {
	
	@Autowired
	private LoginService loginService;
	
	@Autowired
	private PersonService personService;
	
	//登录初始化页面
	@RequestMapping("/loginInitAction")
	public String loginInitAction(){
		return "login";
	}
	
	//注册
	@RequestMapping("/register")
	public String register(String passwd, String username, String tel, String login_permession, Map<String, Object> map, HttpSession session){
		if(personService.textTelExist(tel)){
			map.put("registerTelError", "对不起,您输入的手机号码已经被注册过了。");
			return "login";
		}
		
		String newId = loginService.getNewId();
		loginService.addLogin(passwd, newId, login_permession);
		personService.addPerson(username, newId, tel);
		
		Login loginInfo = loginService.getRegisterLoginEntity();

@Controller
@RequestMapping("/admin")
public class CarManageAction {

	@Autowired
	private CarService carService;
	
	@Autowired
	private BrandService brandService;
	
	@Autowired
	private PageService pageService;
	
	//查询全部在售车辆
	@RequestMapping("/queryAllOnlineCar")
	public String queryAllOnlineCar(Map<String, Object> map, String currentpage){
		List<Car> onlineCarList = carService.queryAllOnlineCar();
		
		Page page = pageService.pageToCar(onlineCarList.size(), currentpage);
		int subEnd = (page.getCurrentpage()-1)*page.getSize() + page.getSize() > onlineCarList.size() ? onlineCarList.size() : (page.getCurrentpage()-1)*page.getSize() + page.getSize();
	@RequestMapping("/carUpdateDownShelf")
	public String carUpdateDownShelf(Map<String, Object> map, String car_id){
		map.put("carUpdateDownShelf", carService.queryDownShelfCarById(car_id).get(0));
		map.put("brandList",brandService.queryAllBrand());
		return "admin/carManage/car_update_downShelf";
	}
	
	//保存修改后的下架汽车
	@RequestMapping(value="/saveDownShelfCar", method=RequestMethod.POST)
	public String saveDownShelfCar(@RequestParam("imgSrc")MultipartFile mf, Map<String, Object> map, Car car) throws IOException{
		
		if(mf.getSize() != 0){
			InputStream is = mf.getInputStream();
			File target = new File(Constants.IMAGEPATH + mf.getOriginalFilename());
			OutputStream os = null;
			try{
				os = new FileOutputStream(target, true);
				int templeng = 0;
				byte[] tempbyte = new byte[4096];
				while((templeng = is.read(tempbyte)) != -1){
					os.write(tempbyte, 0, templeng);
					os.flush();
				}
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				try{
					is.close();
					os.close();
				}catch (IOException e) {
					e.printStackTrace();
				}
			}
			File deleteFile = new File(Constants.IMAGEPATH + car.getCar_img());
	        if (deleteFile.exists() && !car.getCar_img().equals("demo.jpg")){
	        	//deleteFile.delete();
	        }
	        
	        car.setCar_img(mf.getOriginalFilename());
		}
		carService.saveCar(car);
		return "redirect:/admin/queryAllDownShelfCar";
	}
	
	//根据编号查询下架车辆信息
	@RequestMapping("/queryDownShelfCarById")
	public String queryDownShelfCarById(Map<String, Object> map, String car_id, String currentpage){
				}catch (IOException e) {
					e.printStackTrace();
				}
			}
			File deleteFile = new File(Constants.IMAGEPATH + car.getCar_img());
	        if (deleteFile.exists() && !car.getCar_img().equals("demo.jpg")){
	        	//deleteFile.delete();
	        }
	        
	        car.setCar_img(mf.getOriginalFilename());
		}
		
		carService.saveCar(car);
		return "redirect:/shop/queryAllOnlineCar";
	}
	
	//根据车辆将汽车下架
	@RequestMapping("/carDownShelf")
	public String carDownShelf(String car_id){
		String operaDeleteId = carService.queryOnlineCarByIdOrName(car_id).get(0).getCar_shop_id();
		carService.carDownShelf(car_id, operaDeleteId);
		return "redirect:/shop/queryAllOnlineCar";
	}
	
	//下架车辆列表
	@RequestMapping("/queryAllDownShelfCar")
	public String queryAllDownShelfCar(Map<String, Object> map, HttpSession session, String currentpage){
		Login login = (Login) session.getAttribute("shoploginSession");
		if(login == null || !login.getLogin_permission().equals("shop")){
			return "redirect:/loginInitAction";
		}
		
		List<Car> downCarList = carService.shopQueryAllDownShelfCar(login.getLogin_id());
		Page page = pageService.pageToCar(downCarList.size(), currentpage);
		int subEnd = (page.getCurrentpage()-1)*page.getSize() + page.getSize() > downCarList.size() ? downCarList.size() : (page.getCurrentpage()-1)*page.getSize() + page.getSize();
		downCarList = downCarList.subList( (page.getCurrentpage()-1)*page.getSize() , subEnd);
		
		map.put("queryKind", "all");
		map.put("carDownShelfList", downCarList);
		map.put("page", page);
		return "shop/carManage/car_downShelf_list";
	}
	

		Page page = pageService.pageToOrder(orderList.size(), currentpage);
		int subEnd = (page.getCurrentpage()-1)*page.getSize() + page.getSize() > orderList.size() ? orderList.size() : (page.getCurrentpage()-1)*page.getSize() + page.getSize();
		orderList = orderList.subList( (page.getCurrentpage()-1)*page.getSize() , subEnd);
		
		map.put("page", page);
		map.put("queryKind", "idOrName");
		map.put("HistoryOrder", orderList);
		map.put("queryString", order_id);
		return "shop/orderManage/order_history";
	}
	
	//用户已经删除订单(回收站订单)
	@RequestMapping("/orderDeleteList")
	public String orderDeleteList(Map<String, Object> map, String order_shop_id, String currentpage, HttpSession session){
		List<Order> orderList = orderService.shopQueryAllDeleteOrder(order_shop_id);

		Page page = pageService.pageToOrder(orderList.size(), currentpage);
		int subEnd = (page.getCurrentpage()-1)*page.getSize() + page.getSize() > orderList.size() ? orderList.size() : (page.getCurrentpage()-1)*page.getSize() + page.getSize();
		orderList = orderList.subList( (page.getCurrentpage()-1)*page.getSize() , subEnd);
		
		map.put("page", page);
		map.put("queryKind", "all");
		map.put("DeleteOrderList", orderList);
		return "shop/orderManage/order_delete";
	}
	
	//根据id查询回收站的订单
	@RequestMapping("/queryDeleteById")
	public String queryDeleteById(Map<String, Object> map, String order_id, String order_shop_id, String currentpage){
		List<Order> orderList = orderService.shopQueryDeleteOrderById(order_id, order_shop_id);

		Page page = pageService.pageToOrder(orderList.size(), currentpage);
		int subEnd = (page.getCurrentpage()-1)*page.getSize() + page.getSize() > orderList.size() ? orderList.size() : (page.getCurrentpage()-1)*page.getSize() + page.getSize();
		orderList = orderList.subList( (page.getCurrentpage()-1)*page.getSize() , subEnd);
		
		map.put("page", page);
		map.put("queryKind", "idOrName");
		map.put("DeleteOrderList", orderList);
		map.put("queryString", order_id);
		return "shop/orderManage/order_delete";
	}
	
	//根据id彻底删除回收站的订单
	@RequestMapping("/orderDeleteById")
	public String orderDeleteById(String order_id, String order_shop_id, Map<String, Object> map, String currentpage){
		orderService.orderDeleteById(order_id);
		
		List<Order> orderTimeList = new ArrayList<Order>();

		if(year == null || year.equals("")){
			year = "2017";
		}
		if( !year.equals("2017")){
			map.put("year", year);
			map.put("month", monthArray);
			return "shop/saleCountManage/countByTime";
		}
		
		orderTimeList = orderService.shopSaleOrderTime(login.getLogin_id());
		int numSumMonth[] = new int[13]; 
		int priceSumMonth[] = new int[13]; 
//		List<ArrayList<Order>> orderMonthList = new ArrayList<ArrayList<Order>>(13);
//		for(int i=0; i<13; i++){
//			ArrayList<Order> list = new ArrayList<Order>(1);
//			orderMonthList.add(list);
//		}
		for(int i=0; i<orderTimeList.size(); i++){
			String month = orderTimeList.get(i).getOrder_time_receive().substring(5, 7);	//订单完成时间的月份
			int monthInt = Integer.parseInt(month);
			numSumMonth[monthInt]++;	//时间加进去
			priceSumMonth[monthInt]+=orderTimeList.get(i).getCar_price_new();	//销量加进去
//			orderMonthList.get(monthInt).add( orderTimeList.get(i) );	//订单列表
		}
		map.put("month", monthArray);
		map.put("year", year);
		map.put("numSum", numSumMonth);
		map.put("priceSum", priceSumMonth);
//		map.put("orderList", orderMonthList);
		return "shop/saleCountManage/countByTime";
	}
	
	
	
	//(商家)月份订单详情
	@RequestMapping("/saleOrderByMonth")
	public String saleOrderByMonth(String month, Map<String, Object> map, String shop_id, String year){
		List<Order> orderList = orderService.shopSaleOrderByMonth(year, month, shop_id);
			return "redirect:/loginInitAction";
		}
		
		int[] monthArray = new int[]{0,1,2,3,4,5,6,7,8,9,10,11,12};
		List<Order> orderTimeList = new ArrayList<Order>();

		if(year == null || year.equals("")){
			year = "2017";
		}
		if( !year.equals("2017")){
			map.put("year", year);
			map.put("month", monthArray);
			return "shop/saleCountManage/countByTime";
		}
		
		orderTimeList = orderService.shopSaleOrderTime(login.getLogin_id());
		int numSumMonth[] = new int[13]; 
		int priceSumMonth[] = new int[13]; 
//		List<ArrayList<Order>> orderMonthList = new ArrayList<ArrayList<Order>>(13);
//		for(int i=0; i<13; i++){
//			ArrayList<Order> list = new ArrayList<Order>(1);
//			orderMonthList.add(list);
//		}
		for(int i=0; i<orderTimeList.size(); i++){
			String month = orderTimeList.get(i).getOrder_time_receive().substring(5, 7);	//订单完成时间的月份
			int monthInt = Integer.parseInt(month);
			numSumMonth[monthInt]++;	//时间加进去
			priceSumMonth[monthInt]+=orderTimeList.get(i).getCar_price_new();	//销量加进去
//			orderMonthList.get(monthInt).add( orderTimeList.get(i) );	//订单列表
		}
		map.put("month", monthArray);
		map.put("year", year);
		map.put("numSum", numSumMonth);
		map.put("priceSum", priceSumMonth);
//		map.put("orderList", orderMonthList);
		return "shop/saleCountManage/countByTime";
	}
	
	
	
	//(商家)月份订单详情
	@RequestMapping("/saleOrderByMonth")
	public String saleOrderByMonth(String month, Map<String, Object> map, String shop_id, String year){
		List<Order> orderList = orderService.shopSaleOrderByMonth(year, month, shop_id);
		map.put("month", month);
		map.put("monthOrderList", orderList);
		return "shop/saleCountManage/monthOrderDetails";
	}
	
		}else{
			onlineList = carService.queryOnlineCarById(car_id);
		}
		
		//推荐和不推荐的list
		List<Car> notList = new ArrayList(10);
		List<Car> yesList = new ArrayList(10);
		for(int i=0; i<onlineList.size(); i++){
			if(onlineList.get(i).getCar_status_recommend().equals("0")){
				Car car = onlineList.get(i);
				notList.add(car);
			}
			if(onlineList.get(i).getCar_status_recommend().equals("1")){
				Car car = onlineList.get(i);
				yesList.add(car);
			}
		}
		map.put("queryString", car_id);
		map.put("yesList", yesList);
		map.put("notList", notList);
		return "admin/recommandManage/carRecommand";
	}
	
	//修改是否推荐状态
	@RequestMapping("/changeRecommandStatus")
	public String changeRecommandStatus(Map<String, Object> map, String car_id, String newStatus){
		carService.changeRecommandStatus(car_id, newStatus);
		return "redirect:/adminRecommandManage/recommandList";
	}
	
	
}
package com.carSystem.action.admin;

		carService.addCar(car);
		return "redirect:/shop/queryAllOnlineCar";
	}
	
	//查看单个车辆详情
	@RequestMapping("/carDetail")
	public String carDetails(Map<String, Object> map, String car_id){
		List<Car> list = carService.queryOnlineCarById(car_id);
		map.put("carDetail", list.get(0));
		return "shop/carManage/car_details";
	}
	
	//在线车辆信息更新初始化页面
	@RequestMapping("/carUpdateInit")
	public String carUpdateInit(Map<String, Object> map, String car_id){
		map.put("carUpdate", carService.queryOnlineCarById(car_id).get(0));
		map.put("brandList",brandService.queryAllBrand());
		return "shop/carManage/car_update";
	}
	
	//保存修改后的在售汽车
	@RequestMapping(value="/saveCar", method=RequestMethod.POST)
	public String saveOnlineCar(@RequestParam("imgSrc")MultipartFile mf, Map<String, Object> map, Car car) throws IOException{
		if(mf.getSize() != 0){
			InputStream is = mf.getInputStream();
			File target = new File(Constants.IMAGEPATH + mf.getOriginalFilename());
			OutputStream os = null;
			try{
				os = new FileOutputStream(target, true);
				int templeng = 0;
				byte[] tempbyte = new byte[4096];
				while((templeng = is.read(tempbyte)) != -1){
					os.write(tempbyte, 0, templeng);
					os.flush();
				}
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				try{
					is.close();
					os.close();
				}catch (IOException e) {
					e.printStackTrace();
				}
			}
			File deleteFile = new File(Constants.IMAGEPATH + car.getCar_img());
	        if (deleteFile.exists() && !car.getCar_img().equals("demo.jpg")){
	        	//deleteFile.delete();
			}finally{
				try{
					is.close();
					os.close();
				}catch (IOException e) {
					e.printStackTrace();
				}
			}
			File deleteFile = new File(Constants.IMAGEPATH + car.getCar_img());
	        if (deleteFile.exists() && !car.getCar_img().equals("demo.jpg")){
	        	//deleteFile.delete();
	        }
	        
	        car.setCar_img(mf.getOriginalFilename());
		}
		
		carService.saveCar(car);
		return "redirect:/shop/queryAllOnlineCar";
	}
	
	//根据车辆将汽车下架
	@RequestMapping("/carDownShelf")
	public String carDownShelf(String car_id){
		String operaDeleteId = carService.queryOnlineCarByIdOrName(car_id).get(0).getCar_shop_id();
		carService.carDownShelf(car_id, operaDeleteId);
		return "redirect:/shop/queryAllOnlineCar";
	}
	
	//下架车辆列表
	@RequestMapping("/queryAllDownShelfCar")
	public String queryAllDownShelfCar(Map<String, Object> map, HttpSession session, String currentpage){
		Login login = (Login) session.getAttribute("shoploginSession");
		if(login == null || !login.getLogin_permission().equals("shop")){
			return "redirect:/loginInitAction";
		}
		
		List<Car> downCarList = carService.shopQueryAllDownShelfCar(login.getLogin_id());
		Page page = pageService.pageToCar(downCarList.size(), currentpage);
		int subEnd = (page.getCurrentpage()-1)*page.getSize() + page.getSize() > downCarList.size() ? downCarList.size() : (page.getCurrentpage()-1)*page.getSize() + page.getSize();
		downCarList = downCarList.subList( (page.getCurrentpage()-1)*page.getSize() , subEnd);
		
		map.put("queryKind", "all");
		map.put("carDownShelfList", downCarList);
		map.put("page", page);
		return "shop/carManage/car_downShelf_list";
	}
	
	//下架车辆信息修改
	@RequestMapping("/carUpdateDownShelf")
	public String carUpdateDownShelf( Map<String, Object> map, String car_id){
	}
	
	//根据编号删除某个品牌
	@RequestMapping("/deleteBrand")
	public String deleteBrand(String brand_id){
		brandService.deleteBrand(brand_id);
		return "redirect:/admin/brandListInit";
	}
	
	
}
package com.carSystem.action.user;

@Controller
@RequestMapping("/shopCart")
public class ShopCartAction {

	@Autowired
	private ShopCartService shopCartService;
	
	
	//购物车信息表
	@RequestMapping("/shopCartList")
	public String shopCartList(HttpSession session, Map<String, Object> map){
		Login login = (Login) session.getAttribute("loginSession");
		if(login == null){
			return "redirect:/loginInitAction";
		}else if( !login.getLogin_permission().equals("user")){
			return "redirect:/loginInitAction";
		}
		List<ShopCart> shopCartList = shopCartService.getAllByPersonId(login.getLogin_id());
		map.put("shopCartList", shopCartList);
		return "user/shopCart/shopCart_list";
	}
	
	//删除全部购物车信息
	@RequestMapping("/deleteAll")
	public String deleteAll(){
		shopCartService.deleteAll();
		return "redirect:/user/updateInfoInit";
	}
	
	//利用ajax确定修改后的电话号码没有被注册
	@RequestMapping("/ajaxTextTelExist")
	public void ajaxGetStu_name(HttpServletRequest request, HttpServletResponse response, String person_tel) throws UnsupportedEncodingException{
		response.setCharacterEncoding("UTF-8");
		request.setCharacterEncoding("UTF-8");
		
		boolean boolTel = personService.textTelExist(person_tel);
		String json = new Gson().toJson(boolTel);
		try {
			response.getWriter().print(json);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	//修改用户的密码
	@RequestMapping("/changePassword")
	public String changePassword(String oldPwd, String newPwd, Map<String, Object> map, HttpSession session){
		Login login = (Login) session.getAttribute("loginSession");
		if(login == null){
			return "redirect:/loginInitAction";
		}else if( !login.getLogin_permission().equals("user")){
			return "redirect:/loginInitAction";
		}
		
		if( ! login.getLogin_password().equals(oldPwd)){	//输入密码错误
			map.put("changePwdError", "您输入的原密码错误");
			return "user/userInfo/changePassword";
		}
		
		login.setLogin_password(newPwd);
		loginSevice.saveLogin(login);
		map.put("changePwdSuccess", "恭喜您,修改密码成功");
		return "user/userInfo/changePassword";
	}
}
package com.carSystem.action.admin;

		Login queryLogin = loginService.queryLoginById(login.getLogin_id());
		if(queryLogin == null){		//账号不存在
			map.put("loginError", "账号或密码输入错误");
			return "login";
		}else if(! queryLogin.getLogin_password().equals(login.getLogin_password()) ){	//密码错误
			System.out.println("---------error-------");
			map.put("permission", queryLogin.getLogin_permission());
			map.put("loginError1", "账号或密码输入错误");
			return "login";
		}else if(queryLogin.getLogin_permission().equals("admin")){		//管理员
			System.out.println("---------admin-------");
			session.setAttribute("adminloginSession", queryLogin);
			return "admin/index";
		}else if(queryLogin.getLogin_permission().equals("shop")){		//商家
			System.out.println("---------shop-------");
			session.setAttribute("shoploginSession", queryLogin);
			session.setAttribute("shoploginSession_name", personService.queryPersonById(queryLogin.getLogin_id()).getPerson_name());
			return "shop/index";
		}else{	//用户
			System.out.println("---------user--------");
			session.setAttribute("loginSession", queryLogin);
			session.setAttribute("loginSession_name", personService.queryPersonById(queryLogin.getLogin_id()).getPerson_name());
			return "redirect:/indexInitAction";
		}
	}
	
	//跳转到(用户或商家)主页。
	@RequestMapping("/indexInitAction")
	public String indexInit(HttpSession session, Map<String, Object> map){
		Login login =  (Login)session.getAttribute("loginSession");
		if(login != null && login.getLogin_permission().equals("user") ){
			Person person = personService.queryPersonById(login.getLogin_id());
			session.setAttribute("loginSession_name", person.getPerson_name());
			System.out.println("==========index=========" + login.getLogin_permission() + "===========");
		}
		return "/user/index";
	}
	
	
	//利用ajax确定修改后的电话号码没有被注册
	@RequestMapping("/ajaxTextIdAndTel")
	public void ajaxTextIdAndTel(HttpServletRequest request, HttpServletResponse response, String person_tel, String login_id) throws UnsupportedEncodingException{
		response.setCharacterEncoding("UTF-8");
		request.setCharacterEncoding("UTF-8");

		boolean boolReturn = true;
		
		Login login = loginService.queryLoginById(login_id);
		List<Car> yesList = new ArrayList(10);
		for(int i=0; i<onlineList.size(); i++){
			System.out.println("============>" + onlineList.get(i).getCar_status_recommend() + "=========");
			if(onlineList.get(i).getCar_status_recommend().equals("0")){
				Car car = onlineList.get(i);
				notList.add(car);
			}
			if(onlineList.get(i).getCar_status_recommend().equals("1")){
				Car car = onlineList.get(i);
				yesList.add(car);
			}
		}
		
		map.put("yesList", yesList);
		map.put("notList", notList);
		return "admin/recommandManage/carRecommand";
	}
	
	//根据id查询全部的在售车辆,从中找出推荐和不推荐
	@RequestMapping("/queryRecommandCarById")
	public String queryRecommandCarById(Map<String, Object> map, String car_id){
		
		List<Car> onlineList;
		if(car_id==null || car_id.equals("")){
			onlineList = carService.queryAllOnlineCar();
		}else{
			onlineList = carService.queryOnlineCarById(car_id);
		}
		
		//推荐和不推荐的list
		List<Car> notList = new ArrayList(10);
		List<Car> yesList = new ArrayList(10);
		for(int i=0; i<onlineList.size(); i++){
			if(onlineList.get(i).getCar_status_recommend().equals("0")){
				Car car = onlineList.get(i);
				notList.add(car);
			}
			if(onlineList.get(i).getCar_status_recommend().equals("1")){
				Car car = onlineList.get(i);
				yesList.add(car);
			}
		}
		map.put("queryString", car_id);
		map.put("yesList", yesList);
		map.put("notList", notList);
		return "admin/recommandManage/carRecommand";
	}
	
	//修改是否推荐状态
	        	//deleteFile.delete();
	        }
	        
	        car.setCar_img(mf.getOriginalFilename());
		}
		
		carService.saveCar(car);
		return "redirect:/admin/queryAllOnlineCar";
	}
	
	//根据车辆将汽车下架
	@RequestMapping("/carDownShelf")
	public String carDownShelf(String car_id, HttpSession session){
		Login login = (Login)session.getAttribute("adminloginSession");
		carService.carDownShelf(car_id, login.getLogin_id());
		return "redirect:/admin/queryAllOnlineCar";
	}
	
	//下架车辆列表
	@RequestMapping("/queryAllDownShelfCar")
	public String queryAllDownShelfCar(Map<String, Object> map, String currentpage){

		List<Car> downCarList = carService.queryAllDownShelfCar();
		Page page = pageService.pageToCar(downCarList.size(), currentpage);
		int subEnd = (page.getCurrentpage()-1)*page.getSize() + page.getSize() > downCarList.size() ? downCarList.size() : (page.getCurrentpage()-1)*page.getSize() + page.getSize();
		downCarList = downCarList.subList( (page.getCurrentpage()-1)*page.getSize() , subEnd);
		
		map.put("queryKind", "all");
		map.put("page", page);
		map.put("carDownShelfList", downCarList);
		return "admin/carManage/car_downShelf_list";
	}
	
	//下架车辆信息修改
	@RequestMapping("/carUpdateDownShelf")
	public String carUpdateDownShelf(Map<String, Object> map, String car_id){
		map.put("carUpdateDownShelf", carService.queryDownShelfCarById(car_id).get(0));
		map.put("brandList",brandService.queryAllBrand());
		return "admin/carManage/car_update_downShelf";
	}
	
	//保存修改后的下架汽车
	@RequestMapping(value="/saveDownShelfCar", method=RequestMethod.POST)
	public String saveDownShelfCar(@RequestParam("imgSrc")MultipartFile mf, Map<String, Object> map, Car car) throws IOException{
		
		if(mf.getSize() != 0){
	
	//保存用户修改后的个人信息
	@RequestMapping("/saveUpdatePersonInfo")
	public String saveUpdatePersonInfo(Person person, Map<String, Object> map){
		personService.saveUpdatePersonInfo(person);
		return "redirect:/user/updateInfoInit";
	}
	
	//利用ajax确定修改后的电话号码没有被注册
	@RequestMapping("/ajaxTextTelExist")
	public void ajaxGetStu_name(HttpServletRequest request, HttpServletResponse response, String person_tel) throws UnsupportedEncodingException{
		response.setCharacterEncoding("UTF-8");
		request.setCharacterEncoding("UTF-8");
		
		boolean boolTel = personService.textTelExist(person_tel);
		String json = new Gson().toJson(boolTel);
		try {
			response.getWriter().print(json);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	//修改用户的密码
	@RequestMapping("/changePassword")
	public String changePassword(String oldPwd, String newPwd, Map<String, Object> map, HttpSession session){
		Login login = (Login) session.getAttribute("loginSession");
		if(login == null){
			return "redirect:/loginInitAction";
		}else if( !login.getLogin_permission().equals("user")){
			return "redirect:/loginInitAction";
		}
		
		if( ! login.getLogin_password().equals(oldPwd)){	//输入密码错误
			map.put("changePwdError", "您输入的原密码错误");
			return "user/userInfo/changePassword";
		}
		
		login.setLogin_password(newPwd);
		loginSevice.saveLogin(login);
		map.put("changePwdSuccess", "恭喜您,修改密码成功");
		return "user/userInfo/changePassword";
	}
}
package com.carSystem.action.admin;

	@RequestMapping("/carDownShelf")
	public String carDownShelf(String car_id, HttpSession session){
		Login login = (Login)session.getAttribute("adminloginSession");
		carService.carDownShelf(car_id, login.getLogin_id());
		return "redirect:/admin/queryAllOnlineCar";
	}
	
	//下架车辆列表
	@RequestMapping("/queryAllDownShelfCar")
	public String queryAllDownShelfCar(Map<String, Object> map, String currentpage){

		List<Car> downCarList = carService.queryAllDownShelfCar();
		Page page = pageService.pageToCar(downCarList.size(), currentpage);
		int subEnd = (page.getCurrentpage()-1)*page.getSize() + page.getSize() > downCarList.size() ? downCarList.size() : (page.getCurrentpage()-1)*page.getSize() + page.getSize();
		downCarList = downCarList.subList( (page.getCurrentpage()-1)*page.getSize() , subEnd);
		
		map.put("queryKind", "all");
		map.put("page", page);
		map.put("carDownShelfList", downCarList);
		return "admin/carManage/car_downShelf_list";
	}
	
	//下架车辆信息修改
	@RequestMapping("/carUpdateDownShelf")
	public String carUpdateDownShelf(Map<String, Object> map, String car_id){
		map.put("carUpdateDownShelf", carService.queryDownShelfCarById(car_id).get(0));
		map.put("brandList",brandService.queryAllBrand());
		return "admin/carManage/car_update_downShelf";
	}
	
	//保存修改后的下架汽车
	@RequestMapping(value="/saveDownShelfCar", method=RequestMethod.POST)
	public String saveDownShelfCar(@RequestParam("imgSrc")MultipartFile mf, Map<String, Object> map, Car car) throws IOException{
		
		if(mf.getSize() != 0){
			InputStream is = mf.getInputStream();
			File target = new File(Constants.IMAGEPATH + mf.getOriginalFilename());
			OutputStream os = null;
			try{
				os = new FileOutputStream(target, true);
		try {
			response.getWriter().print(json);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	//保存用户找回的的密码
	@RequestMapping("/findSaveNewPwd")
	public String findSaveNewPwd(Map<String, Object> map,Login login, HttpSession session){
		loginService.saveLogin(login);
		
		Login loginInfo  = loginService.queryLoginById(login.getLogin_id());
		if(loginInfo.getLogin_permission().equals("shop")){
			session.setAttribute("shoploginSession", loginInfo);
		}else{
			session.setAttribute("loginSession", loginInfo);
		}
		return "redirect:/indexInitAction";
	}
	
	
	
	
}
package com.carSystem.action.shop;

@Controller
@RequestMapping("/shopSaleCountManage")
		
		List<Car> onlineList;
		if(car_id==null || car_id.equals("")){
			onlineList = carService.queryAllOnlineCar();
		}else{
			onlineList = carService.queryOnlineCarById(car_id);
		}
		
		//推荐和不推荐的list
		List<Car> notList = new ArrayList(10);
		List<Car> yesList = new ArrayList(10);
		for(int i=0; i<onlineList.size(); i++){
			if(onlineList.get(i).getCar_status_recommend().equals("0")){
				Car car = onlineList.get(i);
				notList.add(car);
			}
			if(onlineList.get(i).getCar_status_recommend().equals("1")){
				Car car = onlineList.get(i);
				yesList.add(car);
			}
		}
		map.put("queryString", car_id);
		map.put("yesList", yesList);
		map.put("notList", notList);
		return "admin/recommandManage/carRecommand";
	}
	
	//修改是否推荐状态
	@RequestMapping("/changeRecommandStatus")
	public String changeRecommandStatus(Map<String, Object> map, String car_id, String newStatus){
		carService.changeRecommandStatus(car_id, newStatus);
		return "redirect:/adminRecommandManage/recommandList";
	}
	
	
}
package com.carSystem.action.admin;

		}
		
		map.put("saleNum", saleNum);
		map.put("salePrice", salePrice);
		map.put("brandList", brandList);
		return "shop/saleCountManage/countByBrand";
	}
	
	//某个品牌销售详情
	@RequestMapping("/saleOrderByBrand")
	public String saleOrderByBrand(String brand_id,String shop_id, Map<String, Object> map){
		List<Order> orderList = orderService.shopSaleOrderByBrandId(brand_id, shop_id);
		map.put("brand_name", brandService.queryBrandById(brand_id).getBrand_name() );
		map.put("brandOrderList", orderList);
		return "shop/saleCountManage/brandOrderDetails";
	}
	
	
	//商家订单根据时间统计销量(从订单分析)
	@RequestMapping("/saleOrderByTime")
	public String saleOrderTime(Map<String, Object> map, HttpSession session, String year){
		Login login = (Login) session.getAttribute("shoploginSession");
		if(login == null || !login.getLogin_permission().equals("shop")){
			return "redirect:/loginInitAction";
		}
		
		int[] monthArray = new int[]{0,1,2,3,4,5,6,7,8,9,10,11,12};
		List<Order> orderTimeList = new ArrayList<Order>();

		if(year == null || year.equals("")){
			year = "2017";
		}
		if( !year.equals("2017")){
			map.put("year", year);
			map.put("month", monthArray);
			return "shop/saleCountManage/countByTime";
		}
		
		orderTimeList = orderService.shopSaleOrderTime(login.getLogin_id());
		int numSumMonth[] = new int[13]; 
		int priceSumMonth[] = new int[13]; 
//		List<ArrayList<Order>> orderMonthList = new ArrayList<ArrayList<Order>>(13);
//		for(int i=0; i<13; i++){
//			ArrayList<Order> list = new ArrayList<Order>(1);
//			orderMonthList.add(list);
//		}
		for(int i=0; i<orderTimeList.size(); i++){
			String month = orderTimeList.get(i).getOrder_time_receive().substring(5, 7);	//订单完成时间的月份
			int monthInt = Integer.parseInt(month);
			numSumMonth[monthInt]++;	//时间加进去
			priceSumMonth[monthInt]+=orderTimeList.get(i).getCar_price_new();	//销量加进去
//			orderMonthList.get(monthInt).add( orderTimeList.get(i) );	//订单列表
	//修改用户的密码
	@RequestMapping("/changePassword")
	public String changePassword(String oldPwd, String newPwd, Map<String, Object> map, HttpSession session){
		Login login = (Login) session.getAttribute("loginSession");
		if(login == null){
			return "redirect:/loginInitAction";
		}else if( !login.getLogin_permission().equals("user")){
			return "redirect:/loginInitAction";
		}
		
		if( ! login.getLogin_password().equals(oldPwd)){	//输入密码错误
			map.put("changePwdError", "您输入的原密码错误");
			return "user/userInfo/changePassword";
		}
		
		login.setLogin_password(newPwd);
		loginSevice.saveLogin(login);
		map.put("changePwdSuccess", "恭喜您,修改密码成功");
		return "user/userInfo/changePassword";
	}
}
package com.carSystem.action.admin;

@Controller
@RequestMapping("/adminRecommandManage")
public class RecommandManageAction {

	@Autowired
	private CarService carService;
	
	//查询全部的在售车辆,从中找出推荐和不推荐
	@RequestMapping("/recommandList")
	public String recommandList(Map<String, Object> map){
		List<Car> onlineList = carService.queryAllOnlineCar();
		
		//推荐和不推荐的list
		List<Car> notList = new ArrayList(10);
		List<Car> yesList = new ArrayList(10);
		for(int i=0; i<onlineList.size(); i++){
			System.out.println("============>" + onlineList.get(i).getCar_status_recommend() + "=========");
			if(onlineList.get(i).getCar_status_recommend().equals("0")){
		Login login = (Login)session.getAttribute("adminloginSession");
		carService.carDownShelf(car_id, login.getLogin_id());
		return "redirect:/admin/queryAllOnlineCar";
	}
	
	//下架车辆列表
	@RequestMapping("/queryAllDownShelfCar")
	public String queryAllDownShelfCar(Map<String, Object> map, String currentpage){

		List<Car> downCarList = carService.queryAllDownShelfCar();
		Page page = pageService.pageToCar(downCarList.size(), currentpage);
		int subEnd = (page.getCurrentpage()-1)*page.getSize() + page.getSize() > downCarList.size() ? downCarList.size() : (page.getCurrentpage()-1)*page.getSize() + page.getSize();
		downCarList = downCarList.subList( (page.getCurrentpage()-1)*page.getSize() , subEnd);
		
		map.put("queryKind", "all");
		map.put("page", page);
		map.put("carDownShelfList", downCarList);
		return "admin/carManage/car_downShelf_list";
	}
	
	//下架车辆信息修改
	@RequestMapping("/carUpdateDownShelf")
	public String carUpdateDownShelf(Map<String, Object> map, String car_id){
		map.put("carUpdateDownShelf", carService.queryDownShelfCarById(car_id).get(0));
		map.put("brandList",brandService.queryAllBrand());
		return "admin/carManage/car_update_downShelf";
	}
	
	//保存修改后的下架汽车
	@RequestMapping(value="/saveDownShelfCar", method=RequestMethod.POST)
	public String saveDownShelfCar(@RequestParam("imgSrc")MultipartFile mf, Map<String, Object> map, Car car) throws IOException{
		
		if(mf.getSize() != 0){
			InputStream is = mf.getInputStream();
			File target = new File(Constants.IMAGEPATH + mf.getOriginalFilename());
			OutputStream os = null;
			try{
				os = new FileOutputStream(target, true);
				int templeng = 0;
				byte[] tempbyte = new byte[4096];
				while((templeng = is.read(tempbyte)) != -1){
					os.write(tempbyte, 0, templeng);
					os.flush();
				}
			}catch(Exception e){
	//登录处理
	@RequestMapping("/loginAction")
	public String loginAction(Login login, Map<String, Object> map, HttpSession session){
		Login queryLogin = loginService.queryLoginById(login.getLogin_id());
		if(queryLogin == null){		//账号不存在
			map.put("loginError", "账号或密码输入错误");
			return "login";
		}else if(! queryLogin.getLogin_password().equals(login.getLogin_password()) ){	//密码错误
			System.out.println("---------error-------");
			map.put("permission", queryLogin.getLogin_permission());
			map.put("loginError1", "账号或密码输入错误");
			return "login";
		}else if(queryLogin.getLogin_permission().equals("admin")){		//管理员
			System.out.println("---------admin-------");
			session.setAttribute("adminloginSession", queryLogin);
			return "admin/index";
		}else if(queryLogin.getLogin_permission().equals("shop")){		//商家
			System.out.println("---------shop-------");
			session.setAttribute("shoploginSession", queryLogin);
			session.setAttribute("shoploginSession_name", personService.queryPersonById(queryLogin.getLogin_id()).getPerson_name());
			return "shop/index";
		}else{	//用户
			System.out.println("---------user--------");
			session.setAttribute("loginSession", queryLogin);
			session.setAttribute("loginSession_name", personService.queryPersonById(queryLogin.getLogin_id()).getPerson_name());
			return "redirect:/indexInitAction";
		}
	}
	
	//跳转到(用户或商家)主页。
	@RequestMapping("/indexInitAction")
	public String indexInit(HttpSession session, Map<String, Object> map){
		Login login =  (Login)session.getAttribute("loginSession");
		if(login != null && login.getLogin_permission().equals("user") ){
			Person person = personService.queryPersonById(login.getLogin_id());
			session.setAttribute("loginSession_name", person.getPerson_name());
			System.out.println("==========index=========" + login.getLogin_permission() + "===========");
		}
		return "/user/index";
	}
	
	
	//利用ajax确定修改后的电话号码没有被注册
	        }
	        
	        car.setCar_img(mf.getOriginalFilename());
		}
		
		carService.saveCar(car);
		return "redirect:/shop/queryAllOnlineCar";
	}
	
	//根据车辆将汽车下架
	@RequestMapping("/carDownShelf")
	public String carDownShelf(String car_id){
		String operaDeleteId = carService.queryOnlineCarByIdOrName(car_id).get(0).getCar_shop_id();
		carService.carDownShelf(car_id, operaDeleteId);
		return "redirect:/shop/queryAllOnlineCar";
	}
	
	//下架车辆列表
	@RequestMapping("/queryAllDownShelfCar")
	public String queryAllDownShelfCar(Map<String, Object> map, HttpSession session, String currentpage){
		Login login = (Login) session.getAttribute("shoploginSession");
		if(login == null || !login.getLogin_permission().equals("shop")){
			return "redirect:/loginInitAction";
		}
		
		List<Car> downCarList = carService.shopQueryAllDownShelfCar(login.getLogin_id());
		Page page = pageService.pageToCar(downCarList.size(), currentpage);
		int subEnd = (page.getCurrentpage()-1)*page.getSize() + page.getSize() > downCarList.size() ? downCarList.size() : (page.getCurrentpage()-1)*page.getSize() + page.getSize();
		downCarList = downCarList.subList( (page.getCurrentpage()-1)*page.getSize() , subEnd);
		
		map.put("queryKind", "all");
		map.put("carDownShelfList", downCarList);
		map.put("page", page);
		return "shop/carManage/car_downShelf_list";
	}
	
	//下架车辆信息修改
	@RequestMapping("/carUpdateDownShelf")
	public String carUpdateDownShelf( Map<String, Object> map, String car_id){
		
		map.put("carUpdateDownShelf", carService.queryDownShelfCarById(car_id).get(0));
		map.put("brandList",brandService.queryAllBrand());
		return "shop/carManage/car_update_downShelf";
	}
	

请添加图片描述

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 1、基于JavaWEB+SSM+mysql框架构建的在线商城系统源码+数据库+项目说明(课程设计).zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 # 小小商城系统 - SSM版 练手 JavaWEB 项目,本版本为SSM版。本项目实现了通用 Mapper,免写 SQL,全自动处理关联查询。通过合理配置 MyBatis Generator 和自定义插件,灵活隔离手写代码和自动生成代码。实现了 BaseService 类对 Service 层进行抽象。通过拦截器实现了方法级粒度的鉴权,通过AOP实现了参数校验。 --------------------------- **演示**:[https://small.ડ.com/][1] 可自行注册账号,或使用后台查看权限账号 demo 密码 demo (后台入口登陆后显示) 兄弟项目: [SSH版(实现了SSM版95%功能)][3] [Servlet版(实现了SSM版85%功能)][2] ---------------------------- 本项目的亮点: * 功能齐全,页面丰富,实现了小商城的大部分功能 * 前端仿天猫2017页面,基于原生 CSS(前台)、Bootstrap(后台)、Jquery、Bootstrap Js 构建 * 本项目为 Maven 项目,后端使用 Spring 4 + SpringMVC 4 + Mybatis 3.4 + aspectj 1.8 * 实现了一个 **通用mapper**,免写 SQL,可进行单表和多表关联查询,自动插入一对多/多对一对象(注解配置关联对象,结合 MyBatis Generator ) * 实现了一个 **BaseService 类** ,集成了多条件的查询和增改删操作,普通 Service 只需写少量代码即可 * 完全**隔离** MyBatis Generator 生成代码和额外手写代码,以支持可持续化部署,实现了**多个MyBatis Generator插件**,全部采用软删除 * 通过拦截器和自定义注解实现了方法级粒度的**用户鉴权** ,不同用户组权限完全隔离 * 通过 参数注解 进行方法级**数据校验**,无需额外配置校验类 (通过 AOP 切面实现) * 统一的错误处理 讲解文章: * [小小商城项目概述 —— 需求分析、数据表设计、原型设计、多层结构设计、项目规划][4] * [SSM开发 | 合理配置 mybatis-generator,隔离机器生成代码和额外增加代码][5] * [SSM开发 | 开发自定义插件,使 mybatis-generator 支持软删除][6] * [SSM开发 | 实现 Mybatis 的通用 Mapper,免写 SQL 自动处理关联查询 (类hibernate)(mybatis-generator+自定义插件+自定义注解+静态代理+泛型+反射)][7] * [SSM开发 | 配合Mybatis,通过泛型实现 BaseService ,抽象增改删查方法][8] * [SSM开发 | 配合自定义注解 和 SpringMVC拦截器,实现 方法级粒度 用户鉴权][9] * [SSM开发 | 对 SpringMVC 传入参数 进行参数校验 (使用自定义AOP切面+自定义参数注解)][10] 功能: - [x] 首页、分类页、搜索页、产品页 - [x] 购物车页面、下单页、支付页及支付成功页 - [x] 我的订单页、确认收货及成功页、评价页 - [x] 登陆页、注册页 - [x] 全部数据库的后台可视化管理 - [x] 网站SEO设置、图片路径设置 ------------------ 安装使用: 1. 若使用IDE打开,需按 Maven 文件安装依赖 2. 若在Tomcat中部署,Maven文件中已经配置好直接在线部署,使用 maven tomcat7:deploy 可直接在线部署 (需先配置好Tomcat) 3. 导入数据库small.sql,在 \src\main\resources\jdbc.properties 中配置数据库 4. 默认后台地址 /admin ,账户密码为 admin 123456 ,新建用户在前台注册,需要后台权限需要在数据库的User表的group_列中将该用户的用户组设置为 superA

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值