基于javaweb+mysql的ssm校园社团门户网站管理系统(前台、后台)(java+jsp+ssm+mysql)

基于javaweb+mysql的ssm校园社团门户网站管理系统(前台、后台)(java+jsp+ssm+mysql)

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

分为前台和后台

前台校园门户网站信息查看:学生

后台内容管理:管理员、教师、社团(角色不同,权限菜单不同)

前台

后台

技术框架

JavaBean MVC JSP SSM(Spring SpringMVC MyBatis) MySQL jQuery JavaScript CSS…

基于javaweb+mysql的SSM校园社团门户网站管理系统(前台、后台)(java+jsp+ssm+mysql)

		        }  
	     }
    	 Object attribute = request.getSession().getAttribute("isManage");
 		if(isEmpty(attribute)){
 			Integer id2 = Integer.valueOf(request.getSession().getAttribute("userId").toString());
 			schoolInfo.setAddUserId(id2);
 		}
    	 schoolInfo.setAddTime(new Date());
    	 schoolInfoService.insert(schoolInfo);
    
 		/**gzService.send(4,schoolInfo.getTitle());**/
    	
    	 return "redirect:/schoolInfo/findByObj.do";
	}
	
	
	/**
	 * 跳至修改页面
	 * @return
	 */
	@RequestMapping(value = "/update.do")
	public String update(Integer id,Model model) {
		SchoolInfo obj = schoolInfoService.load(id);
		model.addAttribute("obj",obj);
		return "schoolInfo/update";
	}
	
	/**
	 * 添加修改
	 * @return
	 */
	@RequestMapping(value = "/exUpdate.do")
	public String exUpdate(@RequestParam(value = "file", required = false) MultipartFile file,SchoolInfo schoolInfo, Model model, HttpServletRequest request, HttpServletResponse response) {
		 if(!file.isEmpty()){
	    	 System.out.println("开始");  
	    	  String path =  request.getSession().getServletContext().getRealPath("/")+"upload/";
		        String fileName = file.getOriginalFilename();  
		        String uploadPath=path+fileName;
		        File targetFile = new File(uploadPath);  
		        if(!targetFile.exists()){  
		            targetFile.mkdirs();  
	 * ajax 修改
	 * @param 
	 * @return
	 */
	@RequestMapping(value = "/exUpdate.json",method = RequestMethod.POST)
	@ResponseBody
	public String exUpdateJson(RoleAction roleAction, Model model, HttpServletRequest request, HttpServletResponse response) {
		roleActionService.update(roleAction);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "修改成功");
		return jsonObject.toString();
	}

	/**
	 * ajax 删除
	 * @return
	 */
	@RequestMapping(value = "/delete.json", produces = "text/html;charset=UTF-8", method = RequestMethod.GET)
	@ResponseBody
	public String exDeleteJson(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		//真正删除
		roleActionService.deleteById(id);
		//通过参数删除
        //Map<String,Object> params = new HashMap<String,Object>();
		//params.put("id", id);
		//roleActionService.deleteBySqId("deleteBySql", params);
		//状态删除
		//RoleAction load = roleActionService.load(id);
		//load.setIsDelete(1);
		//roleActionService.update(load);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "删除成功");
		return jsonObject.toString();
	}
	/**
	 * 单文件上传
	 * @param file
	 * @param request
	 * @param model
	 * @return
	 */
			user.setPassWord(passWord);
			user.setType(type);
			User use = userService.loadBySqlId("login",user);
			
			if(!isEmpty(use)){
				roleAct(model, use);
				request.getSession().setAttribute("user", use);
				request.getSession().setAttribute("userId", use.getId());
				return "login/mIndex";
			}else{
				return "login/login";
			}
		}else if(type == 3){
			User user = new User();
			user.setUserName(userName);
			user.setPassWord(passWord);
			user.setType(1);
			User use = userService.loadBySqlId("login",user);
			if(!isEmpty(use)){
				roleAct(model, use);
				request.getSession().setAttribute("user", use);
				request.getSession().setAttribute("userId", use.getId());
				return "login/mIndex";
			}else{
				return "login/login";
			}
		}else{
			
			//5张图片
			List<SchoolInfo> phs = schoolInfoService.listAll();
			//9个新闻
			List<News> news = newsService.listAll();
			//5个公告
			List<Notice> notices = noticeService.listAll();
			//9个招聘
			List<SchoolJob> sjs = schoolJobService.listAll();
			//5个校历
			List<Xl> xls = xlService.listAll();
			model.addAttribute("phs", phs);
			model.addAttribute("news", news);
			model.addAttribute("notices", notices);
			model.addAttribute("sjs", sjs);
			model.addAttribute("xls", xls);
			User user = new User();
			user.setUserName(userName);
	 * @param model
	 * @return
	 */
    @RequestMapping(value = "/saveFile")  
    public String saveFile(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request, Model model) {  
  
        System.out.println("开始");  
        String path = request.getSession().getServletContext().getRealPath("/upload");  
        String fileName = file.getOriginalFilename();  
        System.out.println(path);  
        File targetFile = new File(path, fileName);  
        if(!targetFile.exists()){  
            targetFile.mkdirs();  
        }  
        //保存  
        try {  
            file.transferTo(targetFile);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
  
        return "";  
    }  
	
	
	/**
	 * springMvc多文件上传
	 * @param files
	 * @param id
	 * @return
	 */
    @RequestMapping(value = "/saveFiles")
    public String saveFiles(@RequestParam("file") CommonsMultipartFile[] files,Integer id,HttpServletRequest request){
		for(int i = 0;i<files.length;i++){
	      	System.out.println("fileName---------->" + files[i].getOriginalFilename());
		  if(!files[i].isEmpty()){
            int pre = (int) System.currentTimeMillis();
	     	try {
			//拿到输出流,同时重命名上传的文件
			 String filePath = request.getRealPath("/upload");
			 File f=new File(filePath);
			 if(!f.exists()){
				f.mkdirs();
			 }
		     String fileNmae=new Date().getTime() + files[i].getOriginalFilename();
		     File file=new File(filePath+"/"+pre + files[i].getOriginalFilename());
			  if(!file.exists()){
				  file.createNewFile();
			 }
			  files[i].transferTo(file);
		//params.put("id", id);
		//roleService.deleteBySqId("deleteBySql", params);
		//状态删除
		Role load = roleService.load(id);
		load.setIsDelete(1);
		roleService.update(load);
		return "redirect:/role/findByObj.do";
	}
	
	// --------------------------------------- 华丽分割线 ------------------------------
	
	/**
	 * 分页查询 返回list json(通过对象)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByObj.json", method = RequestMethod.GET)
	@ResponseBody
	public String findByObjByEntity(Role role, Model model, HttpServletRequest request, HttpServletResponse response) {
		//分页查询
		Pager<Role> pagers = roleService.findByEntity(role);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("pagers", pagers);
		jsonObject.put("obj", role);
		return jsonObject.toString();
	}
	
	  
	/**
	 * 分页查询 返回list json(通过Map)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByMap.json", method = RequestMethod.GET)
	@ResponseBody
	public String findByMapMap(Role role, Model model, HttpServletRequest request, HttpServletResponse response) {
		//通过map查询
		jsonObject.put("pagers", pagers);
		jsonObject.put("obj", user);
		return jsonObject.toString();
	}
	
	  
	/**
	 * 分页查询 返回list json(通过Map)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByMap.json", method = RequestMethod.GET)
	@ResponseBody
	public String findByMapMap(User user, Model model, HttpServletRequest request, HttpServletResponse response) {
		//通过map查询
		Map<String,Object> params = new HashMap<String,Object>();
        if(!isEmpty(user.getUserName())){
        	params.put("userName", user.getUserName());
		}
        if(!isEmpty(user.getNickName())){
        	params.put("nickName", user.getNickName());
		}
        if(!isEmpty(user.getPassWord())){
        	params.put("passWord", user.getPassWord());
		}
        if(!isEmpty(user.getCode())){
        	params.put("code", user.getCode());
		}
        if(!isEmpty(user.getZy())){
        	params.put("zy", user.getZy());
		}
        if(!isEmpty(user.getNj())){
        	params.put("nj", user.getNj());
		}
        if(!isEmpty(user.getIsDelete())){
        	params.put("isDelete", user.getIsDelete());
		}
        if(!isEmpty(user.getType())){
        	params.put("type", user.getType());
		}
		//分页查询
		dtos.add(d3);
		GzDto d4 = new GzDto();
		d4.setNum(4);
		d4.setName("校园风采");
		dtos.add(d4);
		 */
		gzService.send(3,schoolJob.getTitle());
		return "redirect:/schoolJob/findByObj.do";
	}
	
	
	/**
	 * 跳至修改页面
	 * @return
	 */
	@RequestMapping(value = "/update.do")
	public String update(Integer id,Model model) {
		SchoolJob obj = schoolJobService.load(id);
		model.addAttribute("obj",obj);
		return "schoolJob/update";
	}
	
	/**
	 * 添加修改
	 * @return
	 */
	@RequestMapping(value = "/exUpdate.do")
	public String exUpdate(SchoolJob schoolJob, Model model, HttpServletRequest request, HttpServletResponse response) {
		schoolJobService.update(schoolJob);
		return "redirect:/schoolJob/findByObj.do";
	}
	
	/**
	 * 删除通过主键
	 * @return
	 */
	@RequestMapping(value = "/delete.do")
	public String delete(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		//真正删除
		schoolJobService.deleteById(id);
		//通过参数删除
        //Map<String,Object> params = new HashMap<String,Object>();
		//params.put("id", id);
		//schoolJobService.deleteBySqId("deleteBySql", params);
		//状态删除
		//SchoolJob load = schoolJobService.load(id);
	}
	
	
	/**
	 * ajax 添加
	 * @param 
	 * @return
	 */
	@RequestMapping(value = "/exAdd.json", method = RequestMethod.POST)
	@ResponseBody
	public String exAddJson(SchoolJob schoolJob, Model model, HttpServletRequest request, HttpServletResponse response) {
		schoolJobService.insert(schoolJob);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "添加成功");
		return jsonObject.toString();
	}
	

	/**
	 * ajax 修改
	 * @param 
	 * @return
	 */
	@RequestMapping(value = "/exUpdate.json",method = RequestMethod.POST)
	@ResponseBody
	public String exUpdateJson(SchoolJob schoolJob, Model model, HttpServletRequest request, HttpServletResponse response) {
		schoolJobService.update(schoolJob);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "修改成功");
		return jsonObject.toString();
	}

	/**
	 * ajax 删除
	 * @return
	 */
	@RequestMapping(value = "/delete.json", produces = "text/html;charset=UTF-8", method = RequestMethod.GET)
	@ResponseBody
	public String exDeleteJson(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		//真正删除
		schoolJobService.deleteById(id);
		//通过参数删除
        //Map<String,Object> params = new HashMap<String,Object>();
		//params.put("id", id);
		//schoolJobService.deleteBySqId("deleteBySql", params);
		//状态删除
		//SchoolJob load = schoolJobService.load(id);
		//load.setIsDelete(1);
		//schoolJobService.update(load);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
        if(!isEmpty(news.getTitle())){
        	params.put("title", news.getTitle());
		}
        if(!isEmpty(news.getContent())){
        	params.put("content", news.getContent());
		}
        if(!isEmpty(news.getAddTime())){
        	params.put("addTime", news.getAddTime());
		}
        if(!isEmpty(news.getAddUserId())){
        	params.put("addUserId", news.getAddUserId());
		}
		//分页查询
		Pager<News> pagers = newsService.findByMap(params);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("pagers", pagers);
		jsonObject.put("obj", news);
		return jsonObject.toString();
	}
	
	
	/**
	 * ajax 添加
	 * @param 
	 * @return
	 */
	@RequestMapping(value = "/exAdd.json", method = RequestMethod.POST)
	@ResponseBody
	public String exAddJson(News news, Model model, HttpServletRequest request, HttpServletResponse response) {
		newsService.insert(news);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "添加成功");
		return jsonObject.toString();
	}
	

	/**
	 * ajax 修改
	 * @param 
	 * @return

/**
 * @ClassName:  
 * @Description: 
 */

@Controller
@RequestMapping("/notice")
public class NoticeController extends BaseController {
	
	/**
	 * 依赖注入 start dao/service/===
	 */
	@Autowired
	private NoticeService noticeService;
	@Autowired
	private GzService gzService;
	// --------------------------------------- 华丽分割线 ------------------------------
		return "userNotice/update";
	}
	
	/**
	 * 添加修改
	 * @return
	 */
	@RequestMapping(value = "/exUpdate.do")
	public String exUpdate(UserNotice userNotice, Model model, HttpServletRequest request, HttpServletResponse response) {
		userNoticeService.update(userNotice);
		return "redirect:/userNotice/findByObj.do";
	}
	
	/**
	 * 删除通过主键
	 * @return
	 */
	@RequestMapping(value = "/delete.do")
	public String delete(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		//真正删除
		userNoticeService.deleteById(id);
		//通过参数删除
        //Map<String,Object> params = new HashMap<String,Object>();
		//params.put("id", id);
		//userNoticeService.deleteBySqId("deleteBySql", params);
		//状态删除
		//UserNotice load = userNoticeService.load(id);
		//load.setIsDelete(1);
		//userNoticeService.update(load);
		return "redirect:/userNotice/findByObj.do";
	}
	
	// --------------------------------------- 华丽分割线 ------------------------------
	
	/**
	 * 分页查询 返回list json(通过对象)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByObj.json", method = RequestMethod.GET)
	@ResponseBody
	public String findByObjByEntity(UserNotice userNotice, Model model, HttpServletRequest request, HttpServletResponse response) {

/**
 * @ClassName:  
 * @Description: 
 */

@Controller
@RequestMapping("/notice")
public class NoticeController extends BaseController {
	
	/**
	 * 依赖注入 start dao/service/===
	 */
	@Autowired
	private NoticeService noticeService;
	@Autowired
	private GzService gzService;
	// --------------------------------------- 华丽分割线 ------------------------------
	
	/**
	 * 分页查询 返回list对象(通过对象)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByObj.do")
	public String findByObj(Notice notice, Model model, HttpServletRequest request, HttpServletResponse response) {
		Object attribute = request.getSession().getAttribute("isManage");
		if(isEmpty(attribute)){
			Integer id = Integer.valueOf(request.getSession().getAttribute("userId").toString());
			notice.setAddUserId(id);
		}
		//分页查询
		Pager<Notice> pagers = noticeService.findByEntity(notice);
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", notice);
		return "notice/notice";
	}
	@RequestMapping(value = "/findByObj2.do")
	public String findByObj2(Notice notice, Model model, HttpServletRequest request, HttpServletResponse response) {
		//分页查询
		Pager<Notice> pagers = noticeService.findByEntity(notice);
		model.addAttribute("pagers", pagers);
		//真正删除
		//userService.deleteById(id);
		//通过参数删除
        //Map<String,Object> params = new HashMap<String,Object>();
		//params.put("id", id);
		//userService.deleteBySqId("deleteBySql", params);
		//状态删除
		User load = userService.load(id);
		load.setIsDelete(1);
		userService.update(load);
		User obj = userService.load(id);
		return "redirect:/user/findByMap.do?type="+obj.getType();
	}
	
	// --------------------------------------- 华丽分割线 ------------------------------
	
	/**
	 * 分页查询 返回list json(通过对象)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByObj.json", method = RequestMethod.GET)
	@ResponseBody
	public String findByObjByEntity(User user, Model model, HttpServletRequest request, HttpServletResponse response) {
		//分页查询
		Pager<User> pagers = userService.findByEntity(user);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("pagers", pagers);
		jsonObject.put("obj", user);
		return jsonObject.toString();
	}
	
	  
	/**
	 * 分页查询 返回list json(通过Map)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByMap.json", method = RequestMethod.GET)
	@ResponseBody
	public String findByMapMap(User user, Model model, HttpServletRequest request, HttpServletResponse response) {
		//通过map查询
		Map<String,Object> params = new HashMap<String,Object>();
        if(!isEmpty(user.getUserName())){
        	params.put("userName", user.getUserName());
		}
        if(!isEmpty(user.getNickName())){
        	params.put("nickName", user.getNickName());
		}
        if(!isEmpty(user.getPassWord())){

/**
 * @ClassName:  
 * @Description: 
 */

@Controller
@RequestMapping("/xkzy")
public class XkzyController extends BaseController {
	
	/**
	 * 依赖注入 start dao/service/===
	 */
	@Autowired
	private XkzyService xkzyService;
	
	// --------------------------------------- 华丽分割线 ------------------------------
	
	/**
	 * 分页查询 返回list对象(通过对象)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByObj.do")
	public String findByObj(Xkzy xkzy, Model model, HttpServletRequest request, HttpServletResponse response) {
		//分页查询
		Pager<Xkzy> pagers = xkzyService.findByEntity(xkzy);
		model.addAttribute("pagers", pagers);
		//存储查询条件
	@RequestMapping(value = "/findByMap.json", method = RequestMethod.GET)
	@ResponseBody
	public String findByMapMap(UserNotice userNotice, Model model, HttpServletRequest request, HttpServletResponse response) {
		//通过map查询
		Map<String,Object> params = new HashMap<String,Object>();
        if(!isEmpty(userNotice.getType())){
        	params.put("type", userNotice.getType());
		}
        if(!isEmpty(userNotice.getUserId())){
        	params.put("userId", userNotice.getUserId());
		}
		//分页查询
		Pager<UserNotice> pagers = userNoticeService.findByMap(params);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("pagers", pagers);
		jsonObject.put("obj", userNotice);
		return jsonObject.toString();
	}
	
	
	/**
	 * ajax 添加
	 * @param 
	 * @return
	 */
	@RequestMapping(value = "/exAdd.json", method = RequestMethod.POST)
	@ResponseBody
	public String exAddJson(UserNotice userNotice, Model model, HttpServletRequest request, HttpServletResponse response) {
		userNoticeService.insert(userNotice);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "添加成功");
		return jsonObject.toString();
	}
	

	/**
	 * ajax 修改
	 * @param 
	 * @return
	 */
	@RequestMapping(value = "/exUpdate.json",method = RequestMethod.POST)
	@ResponseBody
	public String exUpdateJson(UserNotice userNotice, Model model, HttpServletRequest request, HttpServletResponse response) {
		userNoticeService.update(userNotice);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "修改成功");
		return jsonObject.toString();
	 * @return
	 */
    @RequestMapping(value = "/saveFiles")
    public String saveFiles(@RequestParam("file") CommonsMultipartFile[] files,Integer id,HttpServletRequest request){
		for(int i = 0;i<files.length;i++){
	      	System.out.println("fileName---------->" + files[i].getOriginalFilename());
		  if(!files[i].isEmpty()){
            int pre = (int) System.currentTimeMillis();
	     	try {
			//拿到输出流,同时重命名上传的文件
			 String filePath = request.getRealPath("/upload");
			 File f=new File(filePath);
			 if(!f.exists()){
				f.mkdirs();
			 }
		     String fileNmae=new Date().getTime() + files[i].getOriginalFilename();
		     File file=new File(filePath+"/"+pre + files[i].getOriginalFilename());
			  if(!file.exists()){
				  file.createNewFile();
			 }
			  files[i].transferTo(file);
		     } catch (Exception e) {
				e.printStackTrace();
				System.out.println("上传出错");
			 }
		  }
		}
	  return "";
	}
 // --------------------------------------- 华丽分割线 ------------------------------
	
	
}

		//状态删除
		//WebCount load = webCountService.load(id);
		//load.setIsDelete(1);
		//webCountService.update(load);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "删除成功");
		return jsonObject.toString();
	}
	/**
	 * 单文件上传
	 * @param file
	 * @param request
	 * @param model
	 * @return
	 */
    @RequestMapping(value = "/saveFile")  
    public String saveFile(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request, Model model) {  
  
        System.out.println("开始");  
        String path = request.getSession().getServletContext().getRealPath("/upload");  
        String fileName = file.getOriginalFilename();  
        System.out.println(path);  
        File targetFile = new File(path, fileName);  
        if(!targetFile.exists()){  
            targetFile.mkdirs();  
        }  
        //保存  
        try {  
            file.transferTo(targetFile);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
  
        return "";  
    }  
	
	
	/**
	 * springMvc多文件上传
	 * @param files
	 * @param id
	 * @return
	 */
    @RequestMapping(value = "/saveFiles")
    public String saveFiles(@RequestParam("file") CommonsMultipartFile[] files,Integer id,HttpServletRequest request){
		for(int i = 0;i<files.length;i++){
	      	System.out.println("fileName---------->" + files[i].getOriginalFilename());
		  if(!files[i].isEmpty()){
            int pre = (int) System.currentTimeMillis();
	 * @return
	 */
	@RequestMapping(value = "/findByObj.do")
	public String findByObj(WebCount webCount, Model model, HttpServletRequest request, HttpServletResponse response) {
		//分页查询
		Pager<WebCount> pagers = webCountService.findByEntity(webCount);
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", webCount);
		return "webCount/webCount";
	}
	
	
	/**
	 * 分页查询 返回list对象(通过Map)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByMap.do")
	public String findByMap(WebCount webCount, Model model, HttpServletRequest request, HttpServletResponse response) {
		//通过map查询
		Map<String,Object> params = new HashMap<String,Object>();
        if(!isEmpty(webCount.getCountAll())){
        	params.put("countAll", webCount.getCountAll());
		}
		//分页查询
		Pager<WebCount> pagers = webCountService.findByMap(params);
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", webCount);
		return "webCount/webCount";
	}
	
	
	/**
	 * 跳至添加页面
	 * @return
	 */
	@RequestMapping(value = "/add.do")
	public String add() {
		return "webCount/add";
	}

	
	/**
	 * 添加执行
	 * @return
	 */

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值