基于javaweb+mysql的ssm茶叶溯源系统(java+ssm+jsp+bootstrap+layui+mysql)

基于javaweb+mysql的ssm茶叶溯源系统(java+ssm+jsp+bootstrap+layui+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

基于javaweb+mysql的SSM茶叶溯源系统(java+ssm+jsp+bootstrap+layui+mysql)

项目介绍

茶叶溯源系统,分为前台与后台。普通用户可在前台通过18位的编码查询茶叶的出售历史。 后台分为两种角色,管理员与经销商; 管理员主要功能包括: 主界面; 管理员管理:管理员列表、添加管理员; 分类管理:茶叶类型的添加、删除、修改; 茶叶管理:茶叶列表、添加、删除、修改茶叶; 大包装管理:大包装列表、添加、删除、修改大包装; 单品管理:售出统计、单品信息修改; 经销商主要功能包括: 主界面; 售出单品:确认售出单品;

环境需要

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.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 6.数据库:MySql 5.7版本;

技术栈

  1. 后端:Spring SpringMVC MyBatis 2. 前端:JSP+bootstrap+jQuery+layUI

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置; 3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行; 4. 运行项目,输入localhost:8080/tea-web/ 登录

@Controller
public class PackController {
	@Autowired
	PackService pa;
	
	@Autowired
	ItemService it;
	
	public static String getRandomUUID() {
		  //1、创建时间戳
		  java.util.Date dateNow = new java.util.Date();
		  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
		  String dateNowStr = dateFormat.format(dateNow);
		  StringBuffer sb = new StringBuffer(dateNowStr);

		  //2、创建随机对象
		  Random rd = new Random();
		  
		  //3、产生4位随机数
		  String n = "";
		  int rdGet; //取得随机数

		  do {
		   rdGet = Math.abs(rd.nextInt()) % 10 + 48; //产生48到57的随机数(0-9的键位值)
		   // rdGet=Math.abs(rd.nextInt())%26+97; //产生97到122的随机数(a-z的键位值)
		   char num1 = (char) rdGet;
		   String dd = Character.toString(num1);
		   n += dd;
			it.deleteByPackId(packId);
			pa.delete(packId);
			return "ok";
	  	}
}

@Controller
public class TeasController {
	@Autowired
	TeasDao teasDao;
	@Autowired 
	TeasService ts;
	
	@Autowired
	TypeService ts1;
	/*
	 * 重复代码块,用来进行插入和更改时的时候对其进行调用。
	 */	
	 @RequestMapping("/TeasPage")
	 public ModelAndView TeasPage(
				@RequestParam(defaultValue="1") Integer currentPage,Map<String,Object> map){
			System.out.println("已到达");
			PageHelper.startPage(currentPage,8);

@Controller
public class RetailerController {
	@Autowired
	RetailerService re;
	
	public Retailer getParameter(HttpServletRequest request)throws Exception{
		Retailer record=new Retailer();
		record.setAccount(request.getParameter("account"));
		record.setPwd(request.getParameter("pwd"));
		record.setRetName(request.getParameter("retName"));
		return record;
	}
	
	 @RequestMapping("/RetailerLoginPage") 
	  public String  RetailerLoginPage(HttpServletRequest request,HttpServletResponse response,HttpSession session
			) throws UnknownHostException{
				 return "views/retailer_login";
	  }
	
	@RequestMapping("/RetailerLogin") 
	 public String  RetailerLogin(HttpServletRequest request,HttpServletResponse response,HttpSession session
			 	) throws UnknownHostException{
		
		 	String account=request.getParameter("account");
		    String password=request.getParameter("pwd");
	        Retailer retailer = re.selectByAccount(account);
	        System.out.print("************************");
	      
	        if(account==null){
				request.setAttribute("msg", "零售商不存在");
				  System.out.print("零售商不存在");
				return "views/login";
			}
		record.setTeaMaker(request.getParameter("teaMaker"));
		record.setMakePicture(request.getParameter("makePicture"));
		record.settId(Integer.parseInt(request.getParameter("tId")));
		record.setRetId(Integer.parseInt(request.getParameter("retId")));
		return record;
	}
	
	 @RequestMapping("/PackPage")
	 public ModelAndView TeasPage(
				@RequestParam(defaultValue="1") Integer currentPage,Map<String,Object> map){
			System.out.println("已到达");
			PageHelper.startPage(currentPage,8);
			List<Pack> list=pa.selectAll();
			PageInfo<Pack> pageInfo=new PageInfo<Pack>(list,8);
			map.put("pageInfo", pageInfo);
			return new ModelAndView("/views/list_pack");
	 }
	 
	 @RequestMapping("/InsertPack")
		public ModelAndView InsertPack(HttpServletRequest request,MultipartFile makePicture)throws Exception {
		  Pack record=new Pack();
			record.setPackId(getRandomUUID());;
			record.setMakePicture(UploadUtil.fileUpload(makePicture));
			record.setMakeAdress(request.getParameter("makeAdress"));
			record.setTeaMaker(request.getParameter("teaMaker"));
			record.setRetId(Integer.parseInt(request.getParameter("retId")));
			record.settId(Integer.parseInt(request.getParameter("tId")));		
			pa.insert(record);
			for(int i =0; i< 10;i++) {
				Item item=new Item();
				item.setItemId(getRandomUUID());
				item.setSaled(0);
				item.setPackId(record.getPackId());
				it.insert(item);
			}
			return new ModelAndView("redirect:PackPage");
		}
	 
		@RequestMapping("/DeletePack")
	  	@ResponseBody
	  	public String deletePack(@Param("packId") String packId) {
			System.out.println(" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
			System.out.print(packId);
			System.out.print(" 66666666666666666666666666666666666666666");
			it.deleteByPackId(packId);
			pa.delete(packId);
			return "ok";
	  	}
}
	@RequestMapping("/toLoginOutRetailer") 
	  public String toViewsLoginOutRetailer(HttpServletRequest request) {
		  request.getSession().invalidate();
		  return "views/retailer_login";
	  }
	
	@RequestMapping("/toWebHome") 
	  public String toWebHome(HttpServletRequest request) {
		  
		  return "web/main1";
	  }
	
	@RequestMapping("/toWebLoginOut") 
	  public String toWebLoginOut(HttpServletRequest request) {
		  request.getSession().invalidate();
		  return "web/login";
	  }
	@RequestMapping("/toViewsInfo") 
	public String toViewsInfo(HttpServletRequest request) {
		 
		  return "views/info";
	  }
	@RequestMapping("/toViewsAddAdmin") 
	public String toViewsAddAdmin(HttpServletRequest request) { 
		  return "views/add_admin";
	  }
	
	@RequestMapping("/toViewsAddUser")
	public String toViewsAddUse() {
		 return "views/add_user";
	}
	
	@RequestMapping("/toWebRegiste")
	public ModelAndView toWebRegiste() {
		 return new ModelAndView("web/register");
	}
	
	/*
	 * @RequestMapping("")
	public String() {
		 return "views/addAdmin";
	}*/
	
	@RequestMapping("toWebLogin")
	public String toWebLogin() {
		
		 return "/web/login2";
	}
				 return "views/admin_login";
	  }
			
	  //查询并分页
		@RequestMapping("/AdminPage")
		public ModelAndView AdminPage(
				@RequestParam(defaultValue="1") Integer currentPage,Map<String,Object> map){
			System.out.println("已到达");
			PageHelper.startPage(currentPage,8);
			List<Admin> list=as.selectAll();
			PageInfo<Admin> pageInfo=new PageInfo<Admin>(list,8);
			map.put("pageInfo", pageInfo);
			return new ModelAndView("views/admin");
		}
		
		@RequestMapping("/InsertAdmin")
		public ModelAndView addAdmin(HttpServletRequest request,String uname,String pwd,String nickname)throws Exception {
			Admin record=new Admin();
			record.setUname(uname);
			record.setPwd(nickname);
			record.setNickname(nickname);

			as.insert(record);
			return new ModelAndView("redirect:AdminPage");
		
		}
		
		//根据主键删除id
		@RequestMapping("/DeleteByAdminId")
		@ResponseBody
		public String deleteByPrimaryKey(@Param("id") int id) {
			as.delete(id);
			return "ok";
		}
		
		@RequestMapping(value="/ToUpdateAdmin")
		public String ToUpdateAdmin(HttpServletRequest request,int id) {
			
			Admin admin=as.findById(id);
			request.setAttribute("admin", admin);
		    return "views/update_admin";
		}
		
		@RequestMapping("/UpdateAdmin")
		public ModelAndView UpdateAdmin(HttpServletRequest request,int id,String uname,String pwd,String nickname)throws Exception {
			Admin record=new Admin();
			record.setUname(uname);
			record.setPwd(pwd);
			record.setNickname(nickname);

			as.update(record,id);
			return new ModelAndView("redirect:AdminPage");
			Admin admin=as.findById(id);
			request.setAttribute("admin", admin);
		    return "views/update_admin";
		}
		
		@RequestMapping("/UpdateAdmin")
		public ModelAndView UpdateAdmin(HttpServletRequest request,int id,String uname,String pwd,String nickname)throws Exception {
			Admin record=new Admin();
			record.setUname(uname);
			record.setPwd(pwd);
			record.setNickname(nickname);

			as.update(record,id);
			return new ModelAndView("redirect:AdminPage");
		
		}
		
		
		/*//模糊查询
		@RequestMapping("/selectByName")
		public String findByName(
				@RequestParam(defaultValue="1") Integer currentPage,
				HttpServletRequest request,Map<String,Object> map) {
			String Adminname=request.getParameter("search");
			System.out.println(Adminname);
			PageHelper.startPage(currentPage,8);
			List<Admin> list=AdminService.selectByName(Adminname);
			PageInfo<Admin> pageInfo=new PageInfo<Admin>(list,8);
			map.put("pageInfo", pageInfo);
			return "/Admin/showAdmin";
		}*/
	
		
		
		

}

		  return "views/info";
	  }
	@RequestMapping("/toViewsAddAdmin") 
	public String toViewsAddAdmin(HttpServletRequest request) { 
		  return "views/add_admin";
	  }
	
	@RequestMapping("/toViewsAddUser")
	public String toViewsAddUse() {
		 return "views/add_user";
	}
	
	@RequestMapping("/toWebRegiste")
	public ModelAndView toWebRegiste() {
		 return new ModelAndView("web/register");
	}
	
	/*
	 * @RequestMapping("")
	public String() {
		 return "views/addAdmin";
	}*/
	
	@RequestMapping("toWebLogin")
	public String toWebLogin() {
		
		 return "/web/login2";
	}
	
	@RequestMapping("toViewsAddTeas")
	public String toViewsAddTeas(HttpServletRequest request) {
		request.setAttribute("typeList", ts.selectAll());
		 return "views/add_teas";
	}
	 
	@RequestMapping("toViewsAddPack")
	public String toViewsAddPack(HttpServletRequest request) {
		request.setAttribute("teaList", tea.selectAll());
		request.setAttribute("retailerList", re.selectAll());
		return "views/add_pack";
	} 
	
	
	
	
}

public class PackController {
	@Autowired
	PackService pa;
	
	@Autowired
	ItemService it;
	
	public static String getRandomUUID() {
		  //1、创建时间戳
		  java.util.Date dateNow = new java.util.Date();
		  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
		  String dateNowStr = dateFormat.format(dateNow);
		  StringBuffer sb = new StringBuffer(dateNowStr);

		  //2、创建随机对象
		  Random rd = new Random();
		  
		  //3、产生4位随机数
		  String n = "";
		  int rdGet; //取得随机数

		  do {
		   rdGet = Math.abs(rd.nextInt()) % 10 + 48; //产生48到57的随机数(0-9的键位值)
		   // rdGet=Math.abs(rd.nextInt())%26+97; //产生97到122的随机数(a-z的键位值)
		   char num1 = (char) rdGet;
		   String dd = Character.toString(num1);
		   n += dd;
		  } while (n.length() < 4);// 假如长度小于4
		  sb.append(n);
		  
		  //4、返回唯一码
		  return sb.toString();
		 }
	
	public Pack getParameter(HttpServletRequest request)throws Exception{
		Pack record=new Pack();
		record.setPackId(request.getParameter("packId"));
		record.setMakeAdress(request.getParameter("makeAdress"));
		record.setTeaMaker(request.getParameter("teaMaker"));
		record.setMakePicture(request.getParameter("makePicture"));
		record.settId(Integer.parseInt(request.getParameter("tId")));
		record.setRetId(Integer.parseInt(request.getParameter("retId")));
		return record;
	}
	
	 @RequestMapping("/PackPage")
	 public ModelAndView TeasPage(
				@RequestParam(defaultValue="1") Integer currentPage,Map<String,Object> map){
			System.out.println("已到达");
			PageHelper.startPage(currentPage,8);
			List<Pack> list=pa.selectAll();

@Controller
public class PackController {
	@Autowired
	PackService pa;
	
	@Autowired
	ItemService it;
	
	public static String getRandomUUID() {
		  //1、创建时间戳
		  java.util.Date dateNow = new java.util.Date();
		  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
		  String dateNowStr = dateFormat.format(dateNow);
		  StringBuffer sb = new StringBuffer(dateNowStr);

		  //2、创建随机对象
		  Random rd = new Random();
		  
		  //3、产生4位随机数
		  String n = "";
		  int rdGet; //取得随机数

		  do {
		   rdGet = Math.abs(rd.nextInt()) % 10 + 48; //产生48到57的随机数(0-9的键位值)
		   // rdGet=Math.abs(rd.nextInt())%26+97; //产生97到122的随机数(a-z的键位值)
		   char num1 = (char) rdGet;
		   String dd = Character.toString(num1);
		   n += dd;
		  } while (n.length() < 4);// 假如长度小于4
		  sb.append(n);
		  
		  //4、返回唯一码
		  return sb.toString();
		 }
		}
		
		//根据主键删除id
		@RequestMapping("/DeleteByAdminId")
		@ResponseBody
		public String deleteByPrimaryKey(@Param("id") int id) {
			as.delete(id);
			return "ok";
		}
		
		@RequestMapping(value="/ToUpdateAdmin")
		public String ToUpdateAdmin(HttpServletRequest request,int id) {
			
			Admin admin=as.findById(id);
			request.setAttribute("admin", admin);
		    return "views/update_admin";
		}
		
		@RequestMapping("/UpdateAdmin")
		public ModelAndView UpdateAdmin(HttpServletRequest request,int id,String uname,String pwd,String nickname)throws Exception {
			Admin record=new Admin();
			record.setUname(uname);
			record.setPwd(pwd);
			record.setNickname(nickname);

			as.update(record,id);
			return new ModelAndView("redirect:AdminPage");
		
		}
		
		
		/*//模糊查询
		@RequestMapping("/selectByName")
		public String findByName(
				@RequestParam(defaultValue="1") Integer currentPage,
				HttpServletRequest request,Map<String,Object> map) {
			String Adminname=request.getParameter("search");
			System.out.println(Adminname);
			PageHelper.startPage(currentPage,8);
			List<Admin> list=AdminService.selectByName(Adminname);
			PageInfo<Admin> pageInfo=new PageInfo<Admin>(list,8);
			map.put("pageInfo", pageInfo);
			return "/Admin/showAdmin";
		}*/
	
		
		
		

}

@Controller
public class PackController {
	@Autowired
	PackService pa;
	
	@Autowired
	ItemService it;
	
	public static String getRandomUUID() {
		  //1、创建时间戳
		  java.util.Date dateNow = new java.util.Date();
		  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
		  String dateNowStr = dateFormat.format(dateNow);
		  StringBuffer sb = new StringBuffer(dateNowStr);

		  //2、创建随机对象
		  Random rd = new Random();
		  
		  //3、产生4位随机数
		  String n = "";
		  int rdGet; //取得随机数

		  do {
		   rdGet = Math.abs(rd.nextInt()) % 10 + 48; //产生48到57的随机数(0-9的键位值)
		   // rdGet=Math.abs(rd.nextInt())%26+97; //产生97到122的随机数(a-z的键位值)
		   char num1 = (char) rdGet;
		   String dd = Character.toString(num1);
		   n += dd;
		  } while (n.length() < 4);// 假如长度小于4
		  sb.append(n);
		  
		  //4、返回唯一码
		  return sb.toString();
		 }
	
	public Pack getParameter(HttpServletRequest request)throws Exception{
		Pack record=new Pack();
		record.setPackId(request.getParameter("packId"));
		record.setMakeAdress(request.getParameter("makeAdress"));
		record.setTeaMaker(request.getParameter("teaMaker"));
		record.setMakePicture(request.getParameter("makePicture"));
		record.settId(Integer.parseInt(request.getParameter("tId")));
		record.setRetId(Integer.parseInt(request.getParameter("retId")));
		return record;
	}
	
	 @RequestMapping("/PackPage")
	 public ModelAndView TeasPage(
				@RequestParam(defaultValue="1") Integer currentPage,Map<String,Object> map){
			System.out.println("已到达");
	 }
	 
	 @RequestMapping("/InsertPack")
		public ModelAndView InsertPack(HttpServletRequest request,MultipartFile makePicture)throws Exception {
		  Pack record=new Pack();
			record.setPackId(getRandomUUID());;
			record.setMakePicture(UploadUtil.fileUpload(makePicture));
			record.setMakeAdress(request.getParameter("makeAdress"));
			record.setTeaMaker(request.getParameter("teaMaker"));
			record.setRetId(Integer.parseInt(request.getParameter("retId")));
			record.settId(Integer.parseInt(request.getParameter("tId")));		
			pa.insert(record);
			for(int i =0; i< 10;i++) {
				Item item=new Item();
				item.setItemId(getRandomUUID());
				item.setSaled(0);
				item.setPackId(record.getPackId());
				it.insert(item);
			}
			return new ModelAndView("redirect:PackPage");
		}
	 
		@RequestMapping("/DeletePack")
	  	@ResponseBody
	  	public String deletePack(@Param("packId") String packId) {
			System.out.println(" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
			System.out.print(packId);
			System.out.print(" 66666666666666666666666666666666666666666");
			it.deleteByPackId(packId);
			pa.delete(packId);
			return "ok";
	  	}
}

}

@Controller
public class AdminController {
	@Autowired 
	AdminService as;
	/*
	 * 重复代码块,用来进行插入和更改时的时候对其进行调用。
	 */
	public Admin getParameter(HttpServletRequest request)throws Exception{
		Admin record=new Admin();
		record.setUname(request.getParameter("uname"));
		record.setPwd(request.getParameter("pwd"));
		record.setNickname(request.getParameter("nickname"));
		return record;
	}
	
	 @RequestMapping("/AdminLogin") 
	  public String  AdminLogin(HttpServletRequest request,HttpServletResponse response,HttpSession session
			) throws UnknownHostException{
		public ModelAndView InsertPack(HttpServletRequest request,MultipartFile makePicture)throws Exception {
		  Pack record=new Pack();
			record.setPackId(getRandomUUID());;
			record.setMakePicture(UploadUtil.fileUpload(makePicture));
			record.setMakeAdress(request.getParameter("makeAdress"));
			record.setTeaMaker(request.getParameter("teaMaker"));
			record.setRetId(Integer.parseInt(request.getParameter("retId")));
			record.settId(Integer.parseInt(request.getParameter("tId")));		
			pa.insert(record);
			for(int i =0; i< 10;i++) {
				Item item=new Item();
				item.setItemId(getRandomUUID());
				item.setSaled(0);
				item.setPackId(record.getPackId());
				it.insert(item);
			}
			return new ModelAndView("redirect:PackPage");
		}
	 
		@RequestMapping("/DeletePack")
	  	@ResponseBody
	  	public String deletePack(@Param("packId") String packId) {
			System.out.println(" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
			System.out.print(packId);
			System.out.print(" 66666666666666666666666666666666666666666");
			it.deleteByPackId(packId);
			pa.delete(packId);
			return "ok";
	  	}
}

		public ModelAndView InsertPack(HttpServletRequest request,MultipartFile makePicture)throws Exception {
		  Pack record=new Pack();
			record.setPackId(getRandomUUID());;
			record.setMakePicture(UploadUtil.fileUpload(makePicture));
			record.setMakeAdress(request.getParameter("makeAdress"));
			record.setTeaMaker(request.getParameter("teaMaker"));
			record.setRetId(Integer.parseInt(request.getParameter("retId")));
			record.settId(Integer.parseInt(request.getParameter("tId")));		
			pa.insert(record);
			for(int i =0; i< 10;i++) {
				Item item=new Item();
				item.setItemId(getRandomUUID());
				item.setSaled(0);
				item.setPackId(record.getPackId());
				it.insert(item);
			}
			return new ModelAndView("redirect:PackPage");
		}
	 
		@RequestMapping("/DeletePack")
	  	@ResponseBody
	  	public String deletePack(@Param("packId") String packId) {
			System.out.println(" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
			System.out.print(packId);
			System.out.print(" 66666666666666666666666666666666666666666");
			it.deleteByPackId(packId);
			pa.delete(packId);
			return "ok";
	  	}
}

	@RequestMapping("/DeleteByItemId")
  	@ResponseBody
  	public String deleteByTeasId(@Param("deleteItemId") String deleteItemId) {
		it.delete(deleteItemId);
		return "ok";
  	}
	
	@RequestMapping(value="/ToUpdateItem")
	public String ToUpdateItem(HttpServletRequest request,String itemId) {
		request.setAttribute("packList", pa.selectAll());
		request.setAttribute("itemId", itemId);
		return "views/update_item";
	}
	
  	@RequestMapping("/UpdateItem")
	public ModelAndView UpdateItem(HttpServletRequest request)throws Exception {
  		Item record = new Item();
  		record.setItemId(request.getParameter("itemId"));
		record.setPackId(request.getParameter("packId"));
		it.updatePackId(record);
		return new ModelAndView("redirect:ModifyItem");
	
	}
  	
  	@RequestMapping("/FindItem")
	public ModelAndView FindItem(HttpServletRequest request,@Param("searchInput") String searchInput)throws Exception {
  		FindList list = fi.findList(searchInput);
  		FindList list2 = fi.findList2(searchInput);
  		request.setAttribute("List_item", list);
  		request.setAttribute("List_pack", list2);
  		System.out.print(list);
//  		if(list2 != null) {
//  			return new ModelAndView("/views/result_1");
//  		}else if(list.getSaled() == 0) {
//  			return new ModelAndView("/views/result_2");
//  		}else {
//  			return new ModelAndView("/views/result_3");
//  		}
		if(list2 == null) {
			return new ModelAndView("/views/result_3");
		}else if(list.getSaled() == 0) {
			return new ModelAndView("/views/result_2");
		}else {
			return new ModelAndView("/views/result_1");
		}
	}
  	
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值