基于javaweb的校园社团门户管理系统(java+ssm+jsp+mysql)

基于javaweb的校园社团门户管理系统(java+ssm+jsp+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

20220519001638

20220519001639

20220519001640

20220519001642

20220519001643

基于javaweb+jsp的校园社团门户管理系统(java+SSM+JSP+mysql)

系统主要实现的功能分前台用户和后台管理:

前台功能主要有:账号登录、添加关注模块,新闻快讯、通知公告、校历、求职招聘、学科资源信息展现等。

后台管理功能有:后台管理员角色管理、权限管理、社团管理、老师管理、用户管理、公告管理、新闻管理、校园风采管理、求职招聘管理、校历管理、学科资源管理等,老师。系统功能非常丰富完善。

运行环境:jdk1.8、eclipse/idea、Mysql5.7、Navicat/Sqlyog、Maven3.5/3.6

角色管理控制器:

@Controller

@RequestMapping(“/role”)

public class RoleController extends BaseController {

/**

  • 依赖注入 start dao/service/===

*/

@Autowired

private RoleService roleService;

@Autowired

private RoleActionService roleActionService;

@Autowired

private ActionService actionService;

// --------------------------------------- 华丽分割线 ------------------------------

/**

  • 分页查询 返回list对象(通过对象)

  • @param request

  • @param response

  • @return

*/

@RequestMapping(value = “/findByObj.do”)

public String findByObj(Role role, Model model, HttpServletRequest request, HttpServletResponse response) {

//分页查询

Pager pagers = roleService.findByEntity(role);

model.addAttribute(“pagers”, pagers);

//存储查询条件

model.addAttribute(“obj”, role);

return “role/role”;

/**

  • 分页查询 返回list对象(通过Map)

  • @param request

  • @param response

  • @return

*/

@RequestMapping(value = “/findByMap.do”)

public String findByMap(Role role, Model model, HttpServletRequest request, HttpServletResponse response) {

//通过map查询

Map<String,Object> params = new HashMap<String,Object>();

if(!isEmpty(role.getName())){

params.put(“name”, role.getName());

if(!isEmpty(role.getIsDelete())){

params.put(“isDelete”, role.getIsDelete());

//分页查询

Pager pagers = roleService.findByMap(params);

model.addAttribute(“pagers”, pagers);

//存储查询条件

model.addAttribute(“obj”, role);

return “role/role”;

/**

  • 跳至添加页面

  • @return

*/

@RequestMapping(value = “/add.do”)

public String add() {

return “role/add”;

/**

  • 添加执行

  • @return

*/

@RequestMapping(value = “/exAdd.do”)

public String exAdd(Role role, Model model, HttpServletRequest request, HttpServletResponse response) {

role.setIsDelete(0);

roleService.insert(role);

return “redirect:/role/findByObj.do”;

/**

  • 跳至修改页面

  • @return

*/

@RequestMapping(value = “/update.do”)

public String update(Integer id,Model model) {

Role role = roleService.load(id);

model.addAttribute(“obj”,role);

return “role/update”;

/**

  • 跳至修改页面

  • @return

*/

@RequestMapping(value = “/updateRole.do”)

public String updateRole(Integer id,Model model) {

//根据roleId去 角色权限表查看这个角色共有多少权限

// private Integer actionId;//权限id

// private Integer roleId;//角色id

// private Action action;//权限

// private Role role;//角色

Role role = roleService.load(id);

Map<String, Object> map = MapUtils.getMap();

map.put(“roleId”, id);

List list = roleActionService.list(map);

//查询所有权限

Map<String, Object> map2 = MapUtils.getMap();

List listAll = actionService.list(map2);

//判断当前选中的

List ids = new ArrayList();

List acids = new ArrayList();

List listAll2 = new ArrayList();

if(!isEmpty(list)){

for(RoleAction ac : list){

ids.add(ac.getActionId());

if(!isEmpty(listAll)){

for(Action ac : listAll){

if(ids.contains(ac.getId())){

ac.setIsCheck(1);

}else{

ac.setIsCheck(0);

listAll2.add(ac);

model.addAttribute(“list”,list);

model.addAttribute(“id”,id);

model.addAttribute(“listAll”,listAll2);

return “role/updateRole”;

@RequestMapping(value = “/exUpdateRole.do”)

public String exUpdateRole(Integer[] qx,Model model,Integer id) {

Map<String, Object> map = MapUtils.getMap();

map.put(“roleId”, id);

roleActionService.deleteBySqId(“deleteBySqId”, map);

if(!isEmpty(qx)){

for(Integer q : qx){

RoleAction rl = new RoleAction();

rl.setRoleId(id);

rl.setActionId(q);

roleActionService.insert(rl);

return “redirect:/role/findByObj.do”;

/**

  • 添加修改

  • @return

*/

@RequestMapping(value = “/exUpdate.do”)

public String exUpdate(Role role, Model model, HttpServletRequest request, HttpServletResponse response) {

roleService.update(role);

return “redirect:/role/findByObj.do”;

/**

  • 删除通过主键

  • @return

*/

@RequestMapping(value = “/delete.do”)

public String delete(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {

//真正删除

//roleService.deleteById(id);

//通过参数删除

//Map<String,Object> params = new HashMap<String,Object>();

//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 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查询

Map<String,Object> params = new HashMap<String,Object>();

if(!isEmpty(role.getName())){

params.put(“name”, role.getName());

if(!isEmpty(role.getIsDelete())){

params.put(“isDelete”, role.getIsDelete());

//分页查询

Pager pagers = roleService.findByMap(params);

JSONObject jsonObject = JsonUtil2.getJsonObject();

jsonObject.put(“pagers”, pagers);

jsonObject.put(“obj”, role);

return jsonObject.toString();

/**

  • ajax 添加

  • @param

  • @return

*/

@RequestMapping(value = “/exAdd.json”, method = RequestMethod.POST)

@ResponseBody

public String exAddJson(Role role, Model model, HttpServletRequest request, HttpServletResponse response) {

roleService.insert(role);

JSONObject jsonObject = JsonUtil2.getJsonObject();

jsonObject.put(“message”, “添加成功”);

return jsonObject.toString();

/**

  • ajax 修改

  • @param

  • @return

*/

@RequestMapping(value = “/exUpdate.json”,method = RequestMethod.POST)

@ResponseBody

public String exUpdateJson(Role role, Model model, HttpServletRequest request, HttpServletResponse response) {

roleService.update(role);

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) {

//真正删除

roleService.deleteById(id);

//通过参数删除

//Map<String,Object> params = new HashMap<String,Object>();

//params.put(“id”, id);

//roleService.deleteBySqId(“deleteBySql”, params);

//状态删除

//Role load = roleService.load(id);

//load.setIsDelete(1);

//roleService.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();

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 “”;

// --------------------------------------- 华丽分割线 ------------------------------

用户管理控制层:

@Controller

@RequestMapping(“/user”)

public class UserController extends BaseController {

/**

  • 依赖注入 start dao/service/===

*/

@Autowired

private UserService userService;

@Autowired

private RoleService roleService;

// --------------------------------------- 华丽分割线 ------------------------------

/**

  • 分页查询 返回list对象(通过对象)

  • @param request

  • @param response

  • @return

*/

@RequestMapping(value = “/findByObj.do”)

public String findByObj(User user, Model model, HttpServletRequest request, HttpServletResponse response) {

//分页查询

Pager pagers = userService.findByEntity(user);

model.addAttribute(“pagers”, pagers);

//存储查询条件

model.addAttribute(“obj”, user);

return “user/user”;

/**

  • 分页查询 返回list对象(通过Map)

  • @param request

  • @param response

  • @return

*/

@RequestMapping(value = “/findByMap.do”)

public String findByMap(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());

//分页查询

Pager pagers = userService.findByMap(“findByNickName”, params);

model.addAttribute(“pagers”, pagers);

//存储查询条件

model.addAttribute(“obj”, user);

if(user.getType() == 1){

return “user/user1”;

if(user.getType() == 2){

return “user/user2”;

if(user.getType() == 3){

return “user/user3”;

return “user/user”;

/**

  • 跳至添加页面

  • @return

*/

@RequestMapping(value = “/add.do”)

public String add(Integer type) {

if(type == 1){

return “user/add1”;

if(type == 2){

return “user/add2”;

if(type == 3){

return “user/add3”;

return “user/add”;

/**

  • 添加执行

  • @return

*/

@RequestMapping(value = “/exAdd.do”)

public String exAdd(User user, Model model, HttpServletRequest request, HttpServletResponse response) {

user.setIsDelete(0);

userService.insert(user);

return “redirect:/user/findByMap.do?type=”+user.getType();

@RequestMapping(value = “/jsFp.do”)

public String jsFp(Integer id,Model model,Integer type) {

User obj = userService.load(id);

model.addAttribute(“obj”,obj);

List list = roleService.list(MapUtils.getMap());

model.addAttribute(“list”, list);

return “user/jsFp”;

@RequestMapping(value = “/exUpdateFp.do”)

public String exUpdateFp(User user,Integer js, Model model, HttpServletRequest request, HttpServletResponse response) {

user.setRoleId(js);

userService.update(user);

User load = userService.load(user.getId());

return “redirect:/user/findByMap.do?type=”+load.getType();

/**

  • 跳至修改页面

  • @return

*/

@RequestMapping(value = “/update.do”)

public String update(Integer id,Model model,Integer type) {

User obj = userService.load(id);

model.addAttribute(“obj”,obj);

if(type == 1){

return “user/update1”;

if(type == 2){

return “user/update2”;

if(type == 3){

return “user/update3”;

return “”;

/**

  • 添加修改

  • @return

*/

@RequestMapping(value = “/exUpdate.do”)

public String exUpdate(User user, Model model, HttpServletRequest request, HttpServletResponse response) {

userService.update(user);

return “redirect:/user/findByMap.do?type=”+user.getType();

/**

  • 删除通过主键

  • @return

*/

@RequestMapping(value = “/delete.do”)

public String delete(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {

//真正删除

//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 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())){

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());

//分页查询

Pager pagers = userService.findByMap(params);

JSONObject jsonObject = JsonUtil2.getJsonObject();

jsonObject.put(“pagers”, pagers);

jsonObject.put(“obj”, user);

return jsonObject.toString();

/**

  • ajax 添加

  • @param

  • @return

*/

@RequestMapping(value = “/exAdd.json”, method = RequestMethod.POST)

@ResponseBody

public String exAddJson(User user, Model model, HttpServletRequest request, HttpServletResponse response) {

userService.insert(user);

JSONObject jsonObject = JsonUtil2.getJsonObject();

jsonObject.put(“message”, “添加成功”);

return jsonObject.toString();

/**

  • ajax 修改

  • @param

  • @return

*/

@RequestMapping(value = “/exUpdate.json”,method = RequestMethod.POST)

@ResponseBody

public String exUpdateJson(User user, Model model, HttpServletRequest request, HttpServletResponse response) {

userService.update(user);

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) {

//真正删除

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);

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();

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 “”;

// --------------------------------------- 华丽分割线 ------------------------------

登录相关控制层:

/**

  • 登陆相关

  • @author yy

*/

@Controller

@RequestMapping(“/login”)

public class LoginController extends BaseController{

@Autowired

private WebCountService webCountService;

@Autowired

private ManageService manageService;

@Autowired

private UserService userService;

@Autowired

private ActionService actionService;

@Autowired

private NewsService newsService;

@Autowired

private NoticeService noticeService;

@Autowired

private SchoolInfoService schoolInfoService;

@Autowired

private SchoolJobService schoolJobService;

@Autowired

private XlService xlService;

/**

  • 跳转登陆

  • @return

*/

@RequestMapping(value = “/login.do”)

public String login(){

return “login/login”;

/**

  • 用户首页

  • @return

*/

@RequestMapping(value = “/index.do”)

public String index(Model model){

// @Autowired

// private NewsService newsService;

// @Autowired

// private NoticeService noticeService;

// @Autowired

// private SchoolInfoService schoolInfoService;

// @Autowired

// private SchoolJobService schoolJobService;

//5张图片

List phs = schoolInfoService.listAll();

//9个新闻

List news = newsService.listAll();

//5个公告

List notices = noticeService.listAll();

//9个招聘

List sjs = schoolJobService.listAll();

//5个校历

List xls = xlService.listAll();

model.addAttribute(“phs”, phs);

model.addAttribute(“news”, news);

model.addAttribute(“notices”, notices);

model.addAttribute(“sjs”, sjs);

model.addAttribute(“xls”, xls);

WebCount load = webCountService.load(1);

load.setCountAll(load.getCountAll()+1);

webCountService.update(load);

model.addAttribute(“count”, load.getCountAll()+1);

return “login/index”;

@RequestMapping(value = “/welcome.do”)

public String welcome(){

return “login/welcome”;

@RequestMapping(value = “/toLogin.do”)

public String findByObj(String userName,String passWord,Integer type, Model model, HttpServletRequest request, HttpServletResponse response,HttpSession session) {

if(type == null){

return “login/login”;

//type == 管理员 2 社团 3 教师 4用户

session.removeAttribute(“isManage”);

session.removeAttribute(“user”);

session.removeAttribute(“userId”);

//private Integer type;// 1老师 2 社团3.用户

if(type == 1){

Manage manage = new Manage();

manage.setUserName(userName);

manage.setPassWord(passWord);

Manage man = manageService.loadBySqlId(“login”, manage);

if(!isEmpty(man)){

request.getSession().setAttribute(“isManage”, 1);

return “login/mIndex”;

}else{

return “login/login”;

}else if(type == 2){

User user = new User();

user.setUserName(userName);

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 phs = schoolInfoService.listAll();

//9个新闻

List news = newsService.listAll();

//5个公告

List notices = noticeService.listAll();

//9个招聘

List sjs = schoolJobService.listAll();

//5个校历

List 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);

user.setPassWord(passWord);

user.setType(3);

User use = userService.loadBySqlId(“login”,user);

if(!isEmpty(use)){

request.getSession().setAttribute(“user”, use);

request.getSession().setAttribute(“userId”, use.getId());

return “login/index”;

private void roleAct(Model model, User user) {

if(!isEmpty(user.getRole())){

List actions = new ArrayList();

List roleActions = user.getRole().getRoleActions();

if(!isEmpty(roleActions)){

for (RoleAction ra: roleActions) {

actions.add(actionService.load(ra.getActionId()));

model.addAttribute(“actions”, actions);

/**

  • 退出

  • @param session

  • @return

*/

@RequestMapping(value = “/tuichu.do”)

public String tuichu(HttpSession session){

session.invalidate();

return “login/login”;

@RequestMapping(value = “/utu.do”)

public String utu(HttpSession session){

session.invalidate();

return “redirect:/login/index.do”;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值