基于javaweb+mysql的ssm婚纱影楼摄影商城系统(java+ssm+jsp+jquery+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SSM婚纱影楼摄影商城系统(java+ssm+jsp+jquery+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版本; 6.是否Maven项目:否;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+CSS+JavaScript+jQuery
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中springmvc-servlet.xml配置文件中的数据库配置改为自己的配置; 4. 运行项目,在浏览器中输入http://localhost:8080/ 登录 用户账号/密码: user/123456 管理员账号/密码:admin/admin
orders.setStatus(name); } if ("addtime".equals(cond)) { orders.setAddtime(name); } } List<String> nameList = new ArrayList<String>(); List<String> valueList = new ArrayList<String>(); nameList.add(cond); valueList.add(name); PageHelper.getPage(this.ordersService.getOrdersByLike(orders), "orders", nameList, valueList, 10, number, this.getRequest(), "query"); name = null; cond = null; return "admin/queryorders"; } // 按主键查询数据 @RequestMapping("getOrdersById.action") public String getOrdersById(String id ) { Orders orders = this.ordersService.getOrdersById(id); this.getRequest().setAttribute("orders", orders); List<Users> usersList = this.usersService.getAllUsers(); this.getRequest().setAttribute("usersList", usersList); return "admin/editorders"; } public OrdersService getOrdersService() { return ordersService; } public void setOrdersService(OrdersService ordersService) { this.ordersService = ordersService; } }
复制
// 更新数据 @RequestMapping("updateAdmin.action") public String updateAdmin(Admin admin) { this.adminService.updateAdmin(admin); return "redirect:/admin/getAllAdmin.action"; } // 显示全部数据 @RequestMapping("getAllAdmin.action") public String getAllAdmin(String number) { List<Admin> adminList = this.adminService.getAllAdmin(); PageHelper.getPage(adminList, "admin", null, null, 10, number, this.getRequest(), null); return "admin/listadmin"; } // 按条件查询数据 (模糊查询) @RequestMapping("queryAdminByCond.action") public String queryAdminByCond(String cond, String name, String number) { Admin admin = new Admin(); if (cond != null) { if ("username".equals(cond)) { admin.setUsername(name); } if ("password".equals(cond)) { admin.setPassword(name); } if ("realname".equals(cond)) { admin.setRealname(name); } if ("contact".equals(cond)) { admin.setContact(name); } if ("addtime".equals(cond)) { admin.setAddtime(name); } } List<String> nameList = new ArrayList<String>(); List<String> valueList = new ArrayList<String>(); nameList.add(cond); valueList.add(name); PageHelper.getPage(this.adminService.getAdminByLike(admin), "admin", nameList, valueList, 10, number, this.getRequest(), "query"); name = null; cond = null; return "admin/queryadmin"; } // 按主键查询数据 @RequestMapping("getAdminById.action")
复制
} List<City> cityList = this.cityService.getAllCity(); this.getRequest().setAttribute("cityList", cityList); return "users/checkout"; } // 结算 @RequestMapping("checkout.action") public String checkout() { this.front(); if (this.getSession().getAttribute("userid") == null) { return "redirect:/index/preLogin.action"; } String userid = (String) this.getSession().getAttribute("userid"); Cart cart1 = new Cart(); cart1.setUsersid(userid); List<Cart> cartList = this.cartService.getCartByCond(cart1); if (cartList.size() == 0) { this.getRequest().setAttribute("message", "请选购摄影套餐"); return "redirect:/index/cart.action"; } else { // 获取一个1200-9999的随机数 防止同时提交 String ordercode = "PD" + VeDate.getStringDatex(); double total = 0; for (Cart cart : cartList) { Details details = new Details(); details.setDetailsid(VeDate.getStringDatex() + (Math.random() * 9 + 1) * 1200); details.setJiancaiid(cart.getJiancaiid()); details.setNum(cart.getNum()); details.setOrdercode(ordercode); details.setPrice(cart.getPrice()); details.setPeihuoid(this.getRequest().getParameter("peihuoid")); details.setCityid(this.getRequest().getParameter("cityid")); details.setViewdate(this.getRequest().getParameter("viewdate")); this.detailsService.insertDetails(details); Jiancai goods = this.jiancaiService.getJiancaiById(cart.getJiancaiid()); goods.setSellnum("" + (Integer.parseInt(goods.getSellnum()) + Integer.parseInt(cart.getNum()))); this.jiancaiService.updateJiancai(goods); total += Double.parseDouble(cart.getPrice()) * Double.parseDouble(cart.getNum()); this.cartService.deleteCart(cart.getCartid()); } Orders orders = new Orders(); orders.setAddtime(VeDate.getStringDateShort()); orders.setOrdercode(ordercode); orders.setStatus("未付款"); orders.setTotal("" + total); orders.setUsersid(userid); this.ordersService.insertOrders(orders); }
复制
public TopicService getTopicService() { return topicService; } public void setTopicService(TopicService topicService) { this.topicService = topicService; } } //定义为控制器 @Controller // 设置路径 @RequestMapping(value = "/cart", produces = "text/plain;charset=utf-8") public class CartAction extends BaseAction { // 注入Service 由于标签的存在 所以不需要getter setter @Autowired @Resource private CartService cartService; @Autowired @Resource private UsersService usersService; @Autowired @Resource private JiancaiService jiancaiService; // 准备添加数据 @RequestMapping("createCart.action") public String createCart() { List<Users> usersList = this.usersService.getAllUsers();
复制
@Autowired @Resource private CityService cityService; @Autowired @Resource private PeihuoService peihuoService; // 准备添加数据 @RequestMapping("createDetails.action") public String createDetails() { List<Jiancai> jiancaiList = this.jiancaiService.getAllJiancai(); this.getRequest().setAttribute("jiancaiList", jiancaiList); List<City> cityList = this.cityService.getAllCity(); this.getRequest().setAttribute("cityList", cityList); List<Peihuo> peihuoList = this.peihuoService.getAllPeihuo(); this.getRequest().setAttribute("peihuoList", peihuoList); return "admin/adddetails"; } // 添加数据 @RequestMapping("addDetails.action") public String addDetails(Details details) { this.detailsService.insertDetails(details); return "redirect:/details/createDetails.action"; } // 通过主键删除数据 @RequestMapping("deleteDetails.action") public String deleteDetails(String id) { this.detailsService.deleteDetails(id); return "redirect:/details/getAllDetails.action"; } // 批量删除数据 @RequestMapping("deleteDetailsByIds.action") public String deleteDetailsByIds() { String[] ids = this.getRequest().getParameterValues("detailsid"); for (String detailsid : ids) { this.detailsService.deleteDetails(detailsid); } return "redirect:/details/getAllDetails.action"; }
复制
//定义为控制器 @Controller // 设置路径 @RequestMapping(value = "/peihuo", produces = "text/plain;charset=utf-8") public class PeihuoAction extends BaseAction { // 注入Service 由于标签的存在 所以不需要getter setter @Autowired @Resource private PeihuoService peihuoService; @Autowired @Resource private CityService cityService; // 准备添加数据 @RequestMapping("createPeihuo.action") public String createPeihuo() { List<City> cityList = this.cityService.getAllCity(); this.getRequest().setAttribute("cityList", cityList); return "admin/addpeihuo"; } // 添加数据 @RequestMapping("addPeihuo.action") public String addPeihuo(Peihuo peihuo) { this.peihuoService.insertPeihuo(peihuo); return "redirect:/peihuo/createPeihuo.action"; } // 通过主键删除数据 @RequestMapping("deletePeihuo.action") public String deletePeihuo(String id) { this.peihuoService.deletePeihuo(id); return "redirect:/peihuo/getAllPeihuo.action"; } // 批量删除数据 @RequestMapping("deletePeihuoByIds.action") public String deletePeihuoByIds() { String[] ids = this.getRequest().getParameterValues("peihuoid"); for (String peihuoid : ids) { this.peihuoService.deletePeihuo(peihuoid); } return "redirect:/peihuo/getAllPeihuo.action";
复制
int maxPage = pageNumber; if (maxPage % 12 == 0) { maxPage = maxPage / 12; } else { maxPage = maxPage / 12 + 1; } if (number == null) { number = "0"; } int start = Integer.parseInt(number) * 12; int over = (Integer.parseInt(number) + 1) * 12; int count = pageNumber - over; if (count <= 0) { over = pageNumber; } for (int i = start; i < over; i++) { Jiancai x = tempList.get(i); flimList.add(x); } String html = ""; StringBuffer buffer = new StringBuffer(); buffer.append(" 共为"); buffer.append(maxPage); buffer.append("页 共有"); buffer.append(pageNumber); buffer.append("条 当前为第"); buffer.append((Integer.parseInt(number) + 1)); buffer.append("页 "); if ((Integer.parseInt(number) + 1) == 1) { buffer.append("首页"); } else { buffer.append("<a href=\"index/all.action?number=0\">首页</a>"); } buffer.append(" "); if ((Integer.parseInt(number) + 1) == 1) { buffer.append("上一页"); } else { buffer.append("<a href=\"index/all.action?number=" + (Integer.parseInt(number) - 1) + "\">上一页</a>"); } buffer.append(" "); if (maxPage <= (Integer.parseInt(number) + 1)) {
复制
} if ("address".equals(cond)) { peihuo.setAddress(name); } if ("contact".equals(cond)) { peihuo.setContact(name); } if ("memo".equals(cond)) { peihuo.setMemo(name); } } List<String> nameList = new ArrayList<String>(); List<String> valueList = new ArrayList<String>(); nameList.add(cond); valueList.add(name); PageHelper.getPage(this.peihuoService.getPeihuoByLike(peihuo), "peihuo", nameList, valueList, 10, number, this.getRequest(), "query"); name = null; cond = null; return "admin/querypeihuo"; } // 按主键查询数据 @RequestMapping("getPeihuoById.action") public String getPeihuoById(String id) { Peihuo peihuo = this.peihuoService.getPeihuoById(id); this.getRequest().setAttribute("peihuo", peihuo); List<City> cityList = this.cityService.getAllCity(); this.getRequest().setAttribute("cityList", cityList); return "admin/editpeihuo"; } public PeihuoService getPeihuoService() { return peihuoService; } public void setPeihuoService(PeihuoService peihuoService) { this.peihuoService = peihuoService; }
复制
} // 添加数据 @RequestMapping("addCity.action") public String addCity(City city) { this.cityService.insertCity(city); return "redirect:/city/createCity.action"; } // 通过主键删除数据 @RequestMapping("deleteCity.action") public String deleteCity(String id) { this.cityService.deleteCity(id); return "redirect:/city/getAllCity.action"; } // 批量删除数据 @RequestMapping("deleteCityByIds.action") public String deleteCityByIds() { String[] ids = this.getRequest().getParameterValues("cityid"); for (String cityid : ids) { this.cityService.deleteCity(cityid); } return "redirect:/city/getAllCity.action"; } // 更新数据 @RequestMapping("updateCity.action") public String updateCity(City city) { this.cityService.updateCity(city); return "redirect:/city/getAllCity.action"; } // 显示全部数据 @RequestMapping("getAllCity.action") public String getAllCity(String number) { List<City> cityList = this.cityService.getAllCity(); PageHelper.getPage(cityList, "city", null, null, 10, number, this.getRequest(), null); return "admin/listcity"; } // 按条件查询数据 (模糊查询) @RequestMapping("queryCityByCond.action") public String queryCityByCond(String cond, String name, String number) { City city = new City(); if (cond != null) { if ("cityname".equals(cond)) { city.setCityname(name); } } List<String> nameList = new ArrayList<String>(); List<String> valueList = new ArrayList<String>();
复制
number = "0"; } int start = Integer.parseInt(number) * 12; int over = (Integer.parseInt(number) + 1) * 12; int count = pageNumber - over; if (count <= 0) { over = pageNumber; } for (int i = start; i < over; i++) { Jiancai x = tempList.get(i); flimList.add(x); } String html = ""; StringBuffer buffer = new StringBuffer(); buffer.append(" 共为"); buffer.append(maxPage); buffer.append("页 共有"); buffer.append(pageNumber); buffer.append("条 当前为第"); buffer.append((Integer.parseInt(number) + 1)); buffer.append("页 "); if ((Integer.parseInt(number) + 1) == 1) { buffer.append("首页"); } else { buffer.append("<a href=\"index/hot.action?number=0\">首页</a>"); } buffer.append(" "); if ((Integer.parseInt(number) + 1) == 1) { buffer.append("上一页"); } else { buffer.append("<a href=\"index/hot.action?number=" + (Integer.parseInt(number) - 1) + "\">上一页</a>"); } buffer.append(" "); if (maxPage <= (Integer.parseInt(number) + 1)) { buffer.append("下一页"); } else { buffer.append("<a href=\"index/hot.action?number=" + (Integer.parseInt(number) + 1) + "\">下一页</a>"); } buffer.append(" "); if (maxPage <= (Integer.parseInt(number) + 1)) { buffer.append("尾页"); } else { buffer.append("<a href=\"index/hot.action?number=" + (maxPage - 1) + "\">尾页</a>"); } html = buffer.toString(); this.getRequest().setAttribute("html", html);
复制
} else { this.getRequest().setAttribute("message", "旧密码错误"); } return "admin/editpwd"; } // 管理员退出登录 @RequestMapping("exit.action") public String exit() { this.getSession().removeAttribute("adminid"); this.getSession().removeAttribute("adminname"); this.getSession().removeAttribute("realname"); return "admin/index"; } // 准备添加数据 @RequestMapping("createAdmin.action") public String createAdmin() { return "admin/addadmin"; } // 添加数据 @RequestMapping("addAdmin.action") public String addAdmin(Admin admin) { admin.setAddtime(VeDate.getStringDateShort()); this.adminService.insertAdmin(admin); return "redirect:/admin/createAdmin.action"; } // 通过主键删除数据 @RequestMapping("deleteAdmin.action") public String deleteAdmin(String id) { this.adminService.deleteAdmin(id); return "redirect:/admin/getAllAdmin.action"; } // 批量删除数据 @RequestMapping("deleteAdminByIds.action") public String deleteAdminByIds() { String[] ids = this.getRequest().getParameterValues("adminid"); for (String adminid : ids) { this.adminService.deleteAdmin(adminid); } return "redirect:/admin/getAllAdmin.action"; } // 更新数据 @RequestMapping("updateAdmin.action") public String updateAdmin(Admin admin) { this.adminService.updateAdmin(admin); return "redirect:/admin/getAllAdmin.action";
复制
if ("password".equals(cond)) { users.setPassword(name); } if ("realname".equals(cond)) { users.setRealname(name); } if ("sex".equals(cond)) { users.setSex(name); } if ("birthday".equals(cond)) { users.setBirthday(name); } if ("contact".equals(cond)) { users.setContact(name); } if ("regdate".equals(cond)) { users.setRegdate(name); } } List<String> nameList = new ArrayList<String>(); List<String> valueList = new ArrayList<String>(); nameList.add(cond); valueList.add(name); PageHelper.getPage(this.usersService.getUsersByLike(users), "users", nameList, valueList, 10, number, this.getRequest(), "query"); name = null; cond = null; return "admin/queryusers"; } // 按主键查询数据 @RequestMapping("getUsersById.action") public String getUsersById(String id ) { Users users = this.usersService.getUsersById(id); this.getRequest().setAttribute("users", users); return "admin/editusers"; } public UsersService getUsersService() { return usersService; } public void setUsersService(UsersService usersService) { this.usersService = usersService; } }
复制
Orders orders = this.ordersService.getOrdersById(this.getRequest().getParameter("id")); orders.setStatus("已取消"); this.ordersService.updateOrders(orders); return "redirect:/index/showOrders.action"; } // 订单明细 @RequestMapping("orderdetail.action") public String orderdetail(String id) { this.front(); if (this.getSession().getAttribute("userid") == null) { return "redirect:/index/preLogin.action"; } Details details = new Details(); details.setOrdercode(id); List<Details> detailsList = this.detailsService.getDetailsByCond(details); this.getRequest().setAttribute("detailsList", detailsList); return "users/orderdetail"; } // 按分类查询 @RequestMapping("cate.action") public String cate(String id, String number) { this.front(); Jiancai goods = new Jiancai(); goods.setCateid(id); List<Jiancai> flimList = new ArrayList<Jiancai>(); List<Jiancai> tempList = this.jiancaiService.getJiancaiByCond(goods); int pageNumber = tempList.size(); int maxPage = pageNumber; if (maxPage % 12 == 0) { maxPage = maxPage / 12; } else { maxPage = maxPage / 12 + 1; } if (number == null) { number = "0"; } int start = Integer.parseInt(number) * 12; int over = (Integer.parseInt(number) + 1) * 12; int count = pageNumber - over; if (count <= 0) { over = pageNumber; } for (int i = start; i < over; i++) { Jiancai x = tempList.get(i); flimList.add(x); } String html = ""; StringBuffer buffer = new StringBuffer();
复制
public String checkout() { this.front(); if (this.getSession().getAttribute("userid") == null) { return "redirect:/index/preLogin.action"; } String userid = (String) this.getSession().getAttribute("userid"); Cart cart1 = new Cart(); cart1.setUsersid(userid); List<Cart> cartList = this.cartService.getCartByCond(cart1); if (cartList.size() == 0) { this.getRequest().setAttribute("message", "请选购摄影套餐"); return "redirect:/index/cart.action"; } else { // 获取一个1200-9999的随机数 防止同时提交 String ordercode = "PD" + VeDate.getStringDatex(); double total = 0; for (Cart cart : cartList) { Details details = new Details(); details.setDetailsid(VeDate.getStringDatex() + (Math.random() * 9 + 1) * 1200); details.setJiancaiid(cart.getJiancaiid()); details.setNum(cart.getNum()); details.setOrdercode(ordercode); details.setPrice(cart.getPrice()); details.setPeihuoid(this.getRequest().getParameter("peihuoid")); details.setCityid(this.getRequest().getParameter("cityid")); details.setViewdate(this.getRequest().getParameter("viewdate")); this.detailsService.insertDetails(details); Jiancai goods = this.jiancaiService.getJiancaiById(cart.getJiancaiid()); goods.setSellnum("" + (Integer.parseInt(goods.getSellnum()) + Integer.parseInt(cart.getNum()))); this.jiancaiService.updateJiancai(goods); total += Double.parseDouble(cart.getPrice()) * Double.parseDouble(cart.getNum()); this.cartService.deleteCart(cart.getCartid()); } Orders orders = new Orders(); orders.setAddtime(VeDate.getStringDateShort()); orders.setOrdercode(ordercode); orders.setStatus("未付款"); orders.setTotal("" + total); orders.setUsersid(userid); this.ordersService.insertOrders(orders); } return "redirect:/index/showOrders.action"; }
复制
@RequestMapping("updateCart.action") public String updateCart(Cart cart) { this.cartService.updateCart(cart); return "redirect:/cart/getAllCart.action"; } // 显示全部数据 @RequestMapping("getAllCart.action") public String getAllCart(String number) { List<Cart> cartList = this.cartService.getAllCart(); PageHelper.getPage(cartList, "cart", null, null, 10, number, this.getRequest(), null); return "admin/listcart"; } // 按条件查询数据 (模糊查询) @RequestMapping("queryCartByCond.action") public String queryCartByCond(String cond, String name, String number) { Cart cart = new Cart(); if (cond != null) { if ("username".equals(cond)) { cart.setUsername(name); } if ("jiancainame".equals(cond)) { cart.setJiancainame(name); } if ("num".equals(cond)) { cart.setNum(name); } if ("price".equals(cond)) { cart.setPrice(name); } } List<String> nameList = new ArrayList<String>(); List<String> valueList = new ArrayList<String>(); nameList.add(cond); valueList.add(name); PageHelper.getPage(this.cartService.getCartByLike(cart), "cart", nameList, valueList, 10, number, this.getRequest(), "query"); name = null; cond = null; return "admin/querycart"; } // 按主键查询数据 @RequestMapping("getCartById.action") public String getCartById(String id) { Cart cart = this.cartService.getCartById(id);
复制
if ((Integer.parseInt(number) + 1) == 1) { buffer.append("首页"); } else { buffer.append("<a href=\"index/article.action?number=0\">首页</a>"); } buffer.append(" "); if ((Integer.parseInt(number) + 1) == 1) { buffer.append("上一页"); } else { buffer.append("<a href=\"index/article.action?number=" + (Integer.parseInt(number) - 1) + "\">上一页</a>"); } buffer.append(" "); if (maxPage <= (Integer.parseInt(number) + 1)) { buffer.append("下一页"); } else { buffer.append("<a href=\"index/article.action?number=" + (Integer.parseInt(number) + 1) + "\">下一页</a>"); } buffer.append(" "); if (maxPage <= (Integer.parseInt(number) + 1)) { buffer.append("尾页"); } else { buffer.append("<a href=\"index/article.action?number=" + (maxPage - 1) + "\">尾页</a>"); } html = buffer.toString(); this.getRequest().setAttribute("html", html); this.getRequest().setAttribute("articleList", articleList); return "users/article"; } // 阅读公告 @RequestMapping("read.action") public String read(String id) { this.front(); Article article = this.articleService.getArticleById(id); article.setHits("" + (Integer.parseInt(article.getHits()) + 1)); this.articleService.updateArticle(article); this.getRequest().setAttribute("article", article); return "users/read"; } // 准备登录 @RequestMapping("preLogin.action") public String prelogin() { this.front(); return "users/login"; } // 用户登录 @RequestMapping("login.action") public String login() { this.front(); String username = this.getRequest().getParameter("username"); String password = this.getRequest().getParameter("password");
复制
} //定义为控制器 @Controller // 设置路径 @RequestMapping(value = "/cart", produces = "text/plain;charset=utf-8") public class CartAction extends BaseAction { // 注入Service 由于标签的存在 所以不需要getter setter @Autowired @Resource private CartService cartService; @Autowired @Resource private UsersService usersService; @Autowired @Resource private JiancaiService jiancaiService; // 准备添加数据 @RequestMapping("createCart.action") public String createCart() { List<Users> usersList = this.usersService.getAllUsers(); this.getRequest().setAttribute("usersList", usersList); List<Jiancai> jiancaiList = this.jiancaiService.getAllJiancai(); this.getRequest().setAttribute("jiancaiList", jiancaiList); return "admin/addcart"; }
复制
Users users = new Users(); if(cond != null){ if ("username".equals(cond)) { users.setUsername(name); } if ("password".equals(cond)) { users.setPassword(name); } if ("realname".equals(cond)) { users.setRealname(name); } if ("sex".equals(cond)) { users.setSex(name); } if ("birthday".equals(cond)) { users.setBirthday(name); } if ("contact".equals(cond)) { users.setContact(name); } if ("regdate".equals(cond)) { users.setRegdate(name); } } List<String> nameList = new ArrayList<String>(); List<String> valueList = new ArrayList<String>(); nameList.add(cond); valueList.add(name); PageHelper.getPage(this.usersService.getUsersByLike(users), "users", nameList, valueList, 10, number, this.getRequest(), "query"); name = null; cond = null; return "admin/queryusers"; } // 按主键查询数据 @RequestMapping("getUsersById.action") public String getUsersById(String id ) { Users users = this.usersService.getUsersById(id); this.getRequest().setAttribute("users", users); return "admin/editusers"; } public UsersService getUsersService() { return usersService; } public void setUsersService(UsersService usersService) { this.usersService = usersService; } }
复制