基于javaweb+mysql的springboot前台+后台精品水果商城系统设计和实现(java+springboot+ssm+mysql+html+maven)

基于javaweb+mysql的springboot前台+后台精品水果商城系统设计和实现(java+springboot+ssm+mysql+html+maven)

运行环境

Java≥8、MySQL≥5.7

开发工具

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

适用

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

功能说明

基于javaweb+mysql的SpringBoot前台+后台精品水果商城系统设计和实现(java+springboot+ssm+mysql+html+maven)

一、项目简述

本系统主要实现的功能有: 前台用户的登录注册,水果商品的展示,水果的购物车, 购物车新增结算等等,银行卡的支付绑定,收货地址的维护,密码修改等等功能 后台管理的用户管理,商品管理,分类管理,订单管理等等。

二、项目运行

1运行环境

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: Springboot+ SpringMVC + MyBatis + HTML + ThymeLeaf + JavaScript + JQuery + Ajax + maven等等


@Controller
@RequestMapping("/order")
public class OrderController {
	
	@Autowired
	private OrderEntityMapper orderDao;
	@Autowired
	private UserEntityMapper userEntityMapper;
	@Autowired
	private ShopCarEntityMapper shopCarDao;
	@Autowired
	private BankCarEntityMapper bankDao;
	@Autowired
	private TranstacRecordEntityMapper transtacDao;
	
	@RequestMapping("/addOrder")
	@ResponseBody
	@Transactional(propagation=Propagation.NOT_SUPPORTED)
	public JSONObject addOrder(HttpSession session,HttpServletRequest request){
		JSONObject result = new JSONObject();
		Integer userId = (Integer) session.getAttribute("userId");
		String carIds = request.getParameter("carIds");
		JSONArray jsonCarIds = JSONArray.parseArray(carIds);
		if(userId == null){
			result.put("code","100");
			result.put("message","用户名不能为空");
		}
		try {
			OrderEntity orderEntity = new OrderEntity();
			for(Object item : jsonCarIds){
				JSONObject param = (JSONObject) item;
				ShopCarEntity shopCarEntity = shopCarDao.selectById(param.getInteger("carId"));
				UserEntity user = userEntityMapper.selectById(userId);
				orderEntity.setCreater(user.getName());
				orderEntity.setCreateTime(new Date());
				orderEntity.setOrderAddress(shopCarEntity.getReceiveAddress());
				orderEntity.setOrderCode(RandomUtils.randomString(5)+RandomUtils.randomNumber(8));
				orderEntity.setProductNumber(jsonCarIds.size());
				if(orderEntity.getCountMoney() != null){
					orderEntity.setOrderMoney(shopCarEntity.getRelPrice().add(orderEntity.getCountMoney()));
					orderEntity.setDiscountMoney(shopCarEntity.getDiscountPrice().add(orderEntity.getDiscountMoney()));
					orderEntity.setCountMoney(shopCarEntity.getCountProce().add(orderEntity.getOrderMoney()));
					orderEntity.setProductName(shopCarEntity.getProductName()+" , "+orderEntity.getProductName());
				}else{
		return "redirect:/admin/product/productList";
	}
	
	@RequestMapping("/productList")
	public ModelAndView productList(HttpServletRequest request){
		ModelAndView mv = new ModelAndView();
		Map<String, Object> param = new HashMap<String, Object>();
		List<ProductEntity> productEntities = productDao.listByMap(param);
		mv.addObject("products",productEntities);
		mv.setViewName("/admin/product/product_list");
		return mv;
	}
	
	@RequestMapping("/delete")
	@ResponseBody
	public JSONObject delete(HttpServletRequest request){
		JSONObject result = new JSONObject();
		String productId = request.getParameter("productId");
		if(StringUtils.isEmpty(productId)){
			result.put("code","100");
			result.put("msg","");
			return result;
		}
		try {
			productDao.delete(Integer.parseInt(productId));
			result.put("code","200");
			result.put("msg","删除成功");
		} catch (Exception e) {
			e.printStackTrace();
			result.put("code","100");
			result.put("msg","系统异常");
		}
		return result;
	}
}

public class ProductsController {
	
	@Autowired
	private ProductEntityMapper productDao;
	@Autowired
	private ClassifyEntityMapper classifyDao;
	
	@RequestMapping("/products")
	public ModelAndView indexPage(HttpServletRequest request){
		ModelAndView mv = new ModelAndView();
		String classId = request.getParameter("classId");
		String minPrice = request.getParameter("minPrice");
		String maxPrice = request.getParameter("maxPrice");
		String search = request.getParameter("search");
		try {
			Map<String, Object> param = new HashMap<String, Object>();
			param.put("classId", classId);
			param.put("minPrice", minPrice);
			param.put("maxPrice", maxPrice);
			param.put("search", search);
			List<ProductEntity> productEntities = productDao.listByMap(param);
			List<ClassifyEntity> classifyEntities = classifyDao.listByMap(param);
			mv.addObject("minPrice",minPrice);
			mv.addObject("maxPrice",maxPrice);
			mv.addObject("search",search);;
			mv.addObject("products",productEntities);
			mv.addObject("classifys",classifyEntities);
		} catch (Exception e) {
			e.printStackTrace();
		}
		mv.setViewName("/customer/products");
		return mv;
	}
	
	
	/**
	 * 查看商品详情
	 * @param request
	 * @return
	 */
	@RequestMapping("/signle")
	public ModelAndView productList(HttpServletRequest request){
		ModelAndView mv = new ModelAndView();
		String id = request.getParameter("id");
		try {
			ProductEntity product = productDao.selectById(Integer.parseInt(id));
			Map<String, Object> param = new HashMap<String, Object>();
			List<ClassifyEntity> classifyEntities = classifyDao.listByMap(param);

@Controller
@RequestMapping("/order")
public class OrderController {
	
	@Autowired
	private OrderEntityMapper orderDao;
	@Autowired
	private UserEntityMapper userEntityMapper;
	@Autowired
	private ShopCarEntityMapper shopCarDao;
	@Autowired
	private BankCarEntityMapper bankDao;
	@Autowired
	private TranstacRecordEntityMapper transtacDao;
	
	@RequestMapping("/addOrder")
	@ResponseBody
	@Transactional(propagation=Propagation.NOT_SUPPORTED)
	public JSONObject addOrder(HttpSession session,HttpServletRequest request){
		JSONObject result = new JSONObject();
		Integer userId = (Integer) session.getAttribute("userId");
	 * @param session
	 * @return
	 */
	@RequestMapping("/shopcarList")
	public ModelAndView shopcarList(HttpServletRequest request,HttpSession session){
		ModelAndView mv = new ModelAndView();
		Integer userId = (Integer) session.getAttribute("userId");
		try {
			Map<String, Object> param = new HashMap<String, Object>();
			param.put("userId", userId);
			param.put("status", 1);
			List<ShopCarEntity> shopCarEntities = shopCarDao.listByMap(param);
			mv.addObject("shopCars",shopCarEntities);
			mv.setViewName("/customer/shop_car");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return mv;
	}
	
	/**
	 * 删除购物车信息
	 * @param request
	 * @param session
	 * @return
	 */
	@RequestMapping("/deleShopCar")
	@ResponseBody
	public JSONObject deleShopCar(HttpServletRequest request,HttpSession session){
		JSONObject result = new JSONObject();
		try {
			Integer userId = (Integer) session.getAttribute("userId");
			String carId = request.getParameter("carId");
			UserEntity userEntity = userDao.selectById(userId);
			if(userEntity != null){
				shopCarDao.delete(Integer.valueOf(carId));
			}
			result.put("msg", "删除购物车成功");
			result.put("code", "200");
		} catch (Exception e) {
			e.printStackTrace();
			result.put("msg", "系统异常");
			result.put("code", "500");
		}
		return result;
	}
	
			mv.addObject("message","用户名不能为空");
		}else if(StringUtils.isEmpty(password)){
			mv.addObject("code","100");
			mv.addObject("message","用户名不能为空");
		}
		UserEntity user = userEntityMapper.getByUserName(username);
		if(user != null){
			mv.addObject("code","100");
			mv.addObject("msg","密码错误");
			if(user.getPassword().equals(password)){
				mv.addObject("code","100");
				mv.addObject("data",username);
				mv.setViewName("/customer/shopcar");
			}
		}else{
			mv.addObject("code","100");
			mv.addObject("msg","用户不存在");
		}
		return mv;
	}
	
	@RequestMapping("/customerLogin")
	public ModelAndView customerLogin(HttpServletRequest request,HttpSession session){
		ModelAndView mv = new ModelAndView("/customer/login");
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		if(StringUtils.isEmpty(username)){
			mv.addObject("code","100");
			mv.addObject("message","用户名不能为空");
		}else if(StringUtils.isEmpty(password)){
			mv.addObject("code","100");
			mv.addObject("message","用户名不能为空");
		}
		UserEntity user = userEntityMapper.getByUserName(username);
		session.setAttribute("userId", user.getId());
		if(user != null){
			mv.addObject("code","100");
			mv.addObject("msg","密码错误");
			if(user.getPassword().equals(password)){
				mv.addObject("code","100");
				orderEntity.setOrderCode(RandomUtils.randomString(5)+RandomUtils.randomNumber(8));
				orderEntity.setProductNumber(jsonCarIds.size());
				if(orderEntity.getCountMoney() != null){
					orderEntity.setOrderMoney(shopCarEntity.getRelPrice().add(orderEntity.getCountMoney()));
					orderEntity.setDiscountMoney(shopCarEntity.getDiscountPrice().add(orderEntity.getDiscountMoney()));
					orderEntity.setCountMoney(shopCarEntity.getCountProce().add(orderEntity.getOrderMoney()));
					orderEntity.setProductName(shopCarEntity.getProductName()+" , "+orderEntity.getProductName());
				}else{
					orderEntity.setOrderMoney(shopCarEntity.getRelPrice());
					orderEntity.setDiscountMoney(shopCarEntity.getDiscountPrice());
					orderEntity.setCountMoney(shopCarEntity.getCountProce());
					orderEntity.setProductName(shopCarEntity.getProductName());
				}
				orderEntity.setStatus((short)1);
				orderEntity.setIsDelete((short)0);
				orderEntity.setOrderUserId(userId);
				shopCarEntity.setStatus((short)2);
				shopCarDao.update(shopCarEntity);
			}
			orderDao.insert(orderEntity);
			result.put("code", "200");
			result.put("msg", "提交订单成功");
		} catch (Exception e) {
			e.printStackTrace();
			result.put("code", "200");
			result.put("msg", "提交订单失败");
		}
		return result;
	}
	
	/**
	 * 查看订单详情
	 * @param session
	 * @param request
	 * @return
	 */
	@RequestMapping("/viewOrder")
	public ModelAndView viewOrder(HttpSession session,HttpServletRequest request){
		ModelAndView mv = new ModelAndView("/customer/view_order");
		String orderId = request.getParameter("orderId");
		try {
			OrderEntity orderEntity = orderDao.selectById(Integer.valueOf(orderId));
			mv.addObject("order", orderEntity);
			mv.addObject("code", "200");
			mv.addObject("msg", "查看成功");
		} catch (Exception e) {
			e.printStackTrace();
			mv.addObject("code", "100");
			mv.addObject("msg", "失败");
		}
			orderDao.delete(Integer.valueOf(orderId));
			result.put("code", "200");
			result.put("msg", "删除成功");
		} catch (Exception e) {
			e.printStackTrace();
			result.put("code", "100");
			result.put("msg", "删除失败");
		}
		return result;
	}
	
	@RequestMapping("/cancleOrder")
	@ResponseBody
	public JSONObject cancleOrder(HttpSession session,HttpServletRequest request){
		JSONObject result = new JSONObject();
		Integer userId = (Integer) session.getAttribute("userId");
		if(userId == null){
			result.put("code","100");
			result.put("message","用户名不能为空");
		}
		String orderId = request.getParameter("orderId");
		try {
			UserEntity userEntity = new UserEntity();
			userEntity=userEntityMapper.selectById(userId);
			OrderEntity orderEntity =new OrderEntity();
			orderEntity.setId(Integer.valueOf(orderId));
			orderEntity.setModifier(userEntity.getUserName());
			orderEntity.setModifyTime(new Date());
			orderEntity.setStatus((short)3);
			orderDao.update(orderEntity);
			result.put("code", "200");
			result.put("msg", "取消成功");
		} catch (Exception e) {
			e.printStackTrace();
			result.put("code", "100");
			result.put("msg", "删除失败");
		}
		return result;
	}
	
	/**
	 * 支付订单
	 * @param session
	 * @param request
	 * @return
	 */
	@RequestMapping("/payOrder")
		bankCarEntity.setCarNumber(request.getParameter("carNumber"));
		try {
			UserEntity user = new UserEntity();
			user = userEntityMapper.selectById(userId);
			bankCarEntity.setModifier(user.getUserName());
			bankCarEntity.setModifyTime(new Date());
			bankDao.update(bankCarEntity);
			mv.addObject("bankCar",bankCarEntity);
			mv.setViewName("/customer/bank_car");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return mv;
	}
}

@Controller
@RequestMapping("/admin")
public class AdminLoginController {
	public static final String adminUsername = ConfigUtils.getPropertiesByKey("admin.username");
	public static final String adminPassword = ConfigUtils.getPropertiesByKey("admin.password");
	
	@Autowired
	private UserEntityMapper userEntityMapper;
	
	@RequestMapping("")
	public String admin(){
		return "/admin/admin_login";
	}
	
	@RequestMapping("/login")
	public String indexPage(){
		}
		UserEntity user = userEntityMapper.getByUserName(username);
		if(user != null){
			mv.addObject("code","100");
			mv.addObject("msg","用户名已存在");
		}else{
			UserEntity userEntity = new UserEntity();
			userEntity.setUserName(username);
			userEntity.setCreater(username);
			userEntity.setCreateTime(new Date());
			userEntity.setEmail(email);
			userEntity.setIsDelete((short)0);
			userEntity.setPassword(password);
			userEntity.setSex((short)1);
			userEntity.setName(username);
			userEntity.setAddress(address);
			userEntity.setPhone(phone);
			userEntity.setStatus((short)1);
			userEntity.setUserCode(RandomUtils.randomString(4)
					+RandomUtils.randomNumber(6));
			userEntityMapper.insert(userEntity);
			mv.addObject("code","200");
			mv.addObject("msg","注册成功");
			mv.addObject("data",username);
			mv.setViewName("/customer/login");
		}
		return mv;
	}
	
	@RequestMapping("/shopcar")
	public ModelAndView shopcar(HttpServletRequest request){
		ModelAndView mv = new ModelAndView("/customer/login");
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
		if(StringUtils.isEmpty(username)){
			mv.addObject("code","100");
			mv.addObject("message","用户名不能为空");
		}else if(StringUtils.isEmpty(password)){
			mv.addObject("code","100");
			mv.addObject("message","用户名不能为空");
		}
		UserEntity user = userEntityMapper.getByUserName(username);
		if(user != null){
			mv.addObject("code","100");
			mv.addObject("msg","密码错误");
		String orderId = request.getParameter("orderId");
		try {
			OrderEntity orderEntity = orderDao.selectById(Integer.valueOf(orderId));
			mv.addObject("order", orderEntity);
			mv.addObject("code", "200");
			mv.addObject("msg", "查看成功");
		} catch (Exception e) {
			e.printStackTrace();
			mv.addObject("code", "100");
			mv.addObject("msg", "失败");
		}
		return mv;
	}
	
	@RequestMapping("/deleteOrder")
	@ResponseBody
	public JSONObject deleteOrder(HttpSession session,HttpServletRequest request){
		JSONObject result = new JSONObject();
		Integer userId = (Integer) session.getAttribute("userId");
		if(userId == null){
			result.put("code","100");
			result.put("message","用户名不能为空");
			return result;
		}
		String orderId = request.getParameter("orderId");
		try {
			orderDao.delete(Integer.valueOf(orderId));
			result.put("code", "200");
			result.put("msg", "删除成功");
		} catch (Exception e) {
			e.printStackTrace();
			result.put("code", "100");
			result.put("msg", "删除失败");
		}
		return result;
	}
	
	@RequestMapping("/cancleOrder")
	@ResponseBody
	public JSONObject cancleOrder(HttpSession session,HttpServletRequest request){
		JSONObject result = new JSONObject();
		Integer userId = (Integer) session.getAttribute("userId");
		if(userId == null){
			result.put("code","100");
			result.put("message","用户名不能为空");
		}
		String orderId = request.getParameter("orderId");
		try {
			UserEntity userEntity = new UserEntity();
			userEntity=userEntityMapper.selectById(userId);
			OrderEntity orderEntity =new OrderEntity();
			orderEntity.setId(Integer.valueOf(orderId));
			orderEntity.setModifier(userEntity.getUserName());
			}
			result.put("code", "200");
			result.put("msg", "成功");
		} catch (Exception e) {
			e.printStackTrace();
			result.put("code", "100");
			result.put("msg", "系统异常");
		}
		return result;
	}
}

@Controller
@RequestMapping("/shopcar")
public class ShopCarController {
		String productId = request.getParameter("classifyId");
		if(StringUtils.isEmpty(productId)){
			result.put("code","100");
			result.put("msg","");
			return result;
		}
		try {
			classifyDao.delete(Integer.parseInt(productId));
			result.put("code","200");
			result.put("msg","删除成功");
		} catch (Exception e) {
			e.printStackTrace();
			result.put("code","100");
			result.put("msg","系统异常");
		}
		return result;
	}
}

@Controller
@RequestMapping("/customer")
public class ProductsController {
	
	@Autowired
	private ProductEntityMapper productDao;
	@Autowired
	private ClassifyEntityMapper classifyDao;
	
	@RequestMapping("/products")
		JSONObject result = new JSONObject();
		try {
			Integer userId = (Integer) session.getAttribute("userId");
			String carId = request.getParameter("carId");
			UserEntity userEntity = userDao.selectById(userId);
			if(userEntity != null){
				shopCarDao.delete(Integer.valueOf(carId));
			}
			result.put("msg", "删除购物车成功");
			result.put("code", "200");
		} catch (Exception e) {
			e.printStackTrace();
			result.put("msg", "系统异常");
			result.put("code", "500");
		}
		return result;
	}
	
	@RequestMapping("/delete")
	@ResponseBody
	public JSONObject delete(HttpServletRequest request){
		JSONObject result = new JSONObject();
		String carId = request.getParameter("carId");
		if(StringUtils.isEmpty(carId)){
			result.put("code","100");
			result.put("msg","");
			return result;
		}
		try {
			shopCarDao.delete(Integer.parseInt(carId));
			result.put("code","200");
			result.put("msg","删除成功");
		} catch (Exception e) {
			e.printStackTrace();
			result.put("code","100");
			result.put("msg","系统异常");
		}
		return result;
	}
	
	@RequestMapping("/updateProNum")
	@ResponseBody

@Controller
@RequestMapping("/admin/product")
public class ProductController {
	
	@Autowired
	private ProductEntityMapper productDao;
	
	@RequestMapping("/addProductPage")
	public String addProductPage(){
		return "/admin/product/product_add";
	}
	
	@RequestMapping("/addProduct")
	public String addProduct(HttpServletRequest request,ProductEntity product){
		try {
			if(product != null){
				product.setCreater("admin");
				product.setCreateTime(new Date());
				product.setStatus((short)1);
				product.setIsDelete((short)0);
				productDao.insert(product);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "redirect:/admin/product/productList";
	}
	
	@RequestMapping("/productList")
	public ModelAndView productList(HttpServletRequest request){
		ModelAndView mv = new ModelAndView();
		Map<String, Object> param = new HashMap<String, Object>();
		List<ProductEntity> productEntities = productDao.listByMap(param);
		mv.addObject("products",productEntities);
		} catch (Exception e) {
			e.printStackTrace();
			result.put("code", "200");
			result.put("msg", "提交订单失败");
		}
		return result;
	}
	
	/**
	 * 查看订单详情
	 * @param session
	 * @param request
	 * @return
	 */
	@RequestMapping("/viewOrder")
	public ModelAndView viewOrder(HttpSession session,HttpServletRequest request){
		ModelAndView mv = new ModelAndView("/customer/view_order");
		String orderId = request.getParameter("orderId");
		try {
			OrderEntity orderEntity = orderDao.selectById(Integer.valueOf(orderId));
			mv.addObject("order", orderEntity);
			mv.addObject("code", "200");
			mv.addObject("msg", "查看成功");
		} catch (Exception e) {
			e.printStackTrace();
			mv.addObject("code", "100");
			mv.addObject("msg", "失败");
		}
		return mv;
	}
	
	@RequestMapping("/deleteOrder")
	@ResponseBody
	public JSONObject deleteOrder(HttpSession session,HttpServletRequest request){
		JSONObject result = new JSONObject();
		Integer userId = (Integer) session.getAttribute("userId");
		if(userId == null){
			result.put("code","100");
			result.put("message","用户名不能为空");
			return result;
		}
		String orderId = request.getParameter("orderId");
		try {
			orderDao.delete(Integer.valueOf(orderId));
	}
	
	@RequestMapping("/register")
	public String register(HttpServletRequest request){
		request.setAttribute("code", "200");
		request.setAttribute("msg", "");
		return "/customer/register";
	}
	
	/**
	 * 客户注册/注册成功到个人中心
	 * @param request
	 * @return
	 */
	@RequestMapping("/customerRegister")
	public ModelAndView customerRegister(HttpServletRequest request){
		ModelAndView mv = new ModelAndView("/customer/register");
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String email = request.getParameter("email");
		String phone = request.getParameter("phone");
		String address = request.getParameter("address");
		if(StringUtils.isEmpty(username)){
			mv.addObject("code","100");
			mv.addObject("message","用户名不能为空");
		}else if(StringUtils.isEmpty(password)){
			mv.addObject("code","100");
			mv.addObject("message","用户名不能为空");
		}
		UserEntity user = userEntityMapper.getByUserName(username);
		if(user != null){
			mv.addObject("code","100");
			mv.addObject("msg","用户名已存在");
		}else{
			UserEntity userEntity = new UserEntity();
			userEntity.setUserName(username);
			userEntity.setCreater(username);
			userEntity.setCreateTime(new Date());
			userEntity.setEmail(email);
			userEntity.setIsDelete((short)0);
			userEntity.setPassword(password);
			userEntity.setSex((short)1);
			userEntity.setName(username);
			userEntity.setAddress(address);
			userEntity.setPhone(phone);
			userEntity.setStatus((short)1);
			userEntity.setUserCode(RandomUtils.randomString(4)
			
			ShopCarEntity shopCarEntity = shopCarDao.selectById(Integer.parseInt(carId));
			ProductEntity productEntity = productDao.selectById(shopCarEntity.getProductId());
//			if(productEntity.getProductNum() < Integer.parseInt(number)){
//				result.put("code","100");
//				result.put("msg","库存不足");
//				return result;
//			}
			shopCarEntity.setProductNum(Integer.parseInt(number));
			shopCarEntity.setId(Integer.parseInt(carId));
			shopCarDao.update(shopCarEntity);
			result.put("code","200");
			result.put("msg","删除成功");
		} catch (Exception e) {
			e.printStackTrace();
			result.put("code","100");
			result.put("msg","系统异常");
		}
		return result;
	}
}

@Controller
@RequestMapping("/bankcar")
public class BankCarController {
	
	@Autowired
	private UserEntityMapper userEntityMapper;
	@Autowired
	private BankCarEntityMapper bankDao;
	
	
	@RequestMapping("/bankcarPage")
	public ModelAndView contactusPage(HttpServletRequest request){
		ModelAndView mv = new ModelAndView("/customer/add_bank_car");

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值