基于javaweb+mysql的ssm+maven校园物品租赁管理系统(java+ssm+jsp+layui+maven+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SSM+Maven校园物品租赁管理系统(java+ssm+jsp+layui+maven+mysql)
一、项目简述 环境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
项目技术:
JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
/**
* @methodsName: findid
* @description: 查找一个物品的详细信息
* @param: itemId:物品id
* @return: String 前往admin模块下更新物品的jsp页面
* @throws:
*/
@RequestMapping("/findId")
public String findid(String itemId, Model model) {
//根据物品id唯一查找到该物品
Item item = itemService.findItemId(itemId);
model.addAttribute("item", item);
return "admin/changeItem";
}
/**
* @methodsName: findItemIdUpdate
* @description: 更新一个物品的信息
* @param: item:要更新的物品信息
* @return: String 前往admin模块下更新物品的jsp页面
* @throws:
*/
@RequestMapping("/findItemIdUpdate")
public String findItemIdUpdate(Item item, Model model) {
itemService.updateItem(item);
model.addAttribute("item", item);
model.addAttribute("error", "更新成功");
return "admin/changeItem";
}
//qny
//租客修改自己出租的物品
@RequestMapping("/zukeToUpdateItem")
public String zukeToUpdateItem(Model model,Integer itemId){
Item item = itemService.findItemId(itemId.toString());
model.addAttribute("item",item);
return "user/zukeupdateitem";
}
//qny
}
//qny
//更新用户信息
@RequestMapping("/checkuserlist")
public String checkuserlist(Model model, Userlist userlist, HttpSession httpSession) throws Exception {
User user = (User)httpSession.getAttribute("user");
Integer userId = user.getId();
userlist.setUser_id(userId);
Userlist list = userlistService.finduserlistupdate(userlist);
if (list != null) {
model.addAttribute("error", "该身份证号码已被绑定");
model.addAttribute("userlist", userlist);
} else {
userlistService.updateuserlist(userlist);
User user2 = new User();
user2.setUsername(userlist.getName());
user2.setId(userId);
user2.setPhone(userlist.getPhone());
userService.updateUser(user2);
model.addAttribute("error", "更新成功");
model.addAttribute("userlist", userlist);
}
return "user/updateuserlist";
}
/**
* @methodsName: findAllUserList
* @description: admin查看所有用户的信息
* @param: page: 展示第几页的数据;pageSize: 每页展示多少条数据
* @return: String: 前往admin模块下展示所有用户信息的action
* @throws:
*/
@RequestMapping("/findalluserlist")
public String findAllUserList(Model model,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "8") Integer pageSize) {
PageHelper.startPage(page, pageSize);
List<Userlist> userlist = userlistService.findalluserlist();
PageInfo<Userlist> p = new PageInfo<Userlist>(userlist);
model.addAttribute("userlist", userlist);
}
@RequestMapping("/updateschedule")
public String updateschedule(Schedule schedule, Model model) {
scheduleService.updateschedule(schedule);
model.addAttribute("error", "更新成功");
model.addAttribute("schedule", schedule);
model.addAttribute("mainPage", "updateschedule.jsp");
return "admin/main1";
}
@RequestMapping("/toinsert")
public String toinsert(Model model) {
model.addAttribute("mainPage", "addschedule.jsp");
return "admin/main1";
}
@RequestMapping("/toupdate")
public String toupdate(Model model, Integer id) {
Schedule schedule = scheduleService.selectbyid(id);
model.addAttribute("schedule", schedule);
model.addAttribute("mainPage", "updateschedule.jsp");
return "admin/main1";
}
}
//租客删除自己出租的商品
@RequestMapping("/zukeDeleteItem")
public String zukeDeleteItem(Integer itemId){
itemService.deleteItem(itemId);
return "redirect:itemListByZuke.action";
}
@RequestMapping("/toahouselist")
public String toahouselist() {
return "ahouselist.action";
}
/**
* @methodsName: findid
* @description: 查找一个物品的详细信息
* @param: itemId:物品id
* @return: String 前往admin模块下更新物品的jsp页面
* @throws:
*/
@RequestMapping("/findId")
public String findid(String itemId, Model model) {
//根据物品id唯一查找到该物品
Item item = itemService.findItemId(itemId);
model.addAttribute("item", item);
return "admin/changeItem";
}
/**
* @methodsName: findItemIdUpdate
* @description: 更新一个物品的信息
* @param: item:要更新的物品信息
* @return: String 前往admin模块下更新物品的jsp页面
* @throws:
*/
@RequestMapping("/findItemIdUpdate")
public String findItemIdUpdate(Item item, Model model) {
itemService.updateItem(item);
model.addAttribute("item", item);
model.addAttribute("error", "更新成功");
return "admin/changeItem";
}
//qny
//租客修改自己出租的物品
@RequestMapping("/zukeToUpdateItem")
public String zukeToUpdateItem(Model model,Integer itemId){
Item item = itemService.findItemId(itemId.toString());
model.addAttribute("item",item);
@RequestMapping("/deleteapplyout")
public String deleteapplyout(Model model, Integer aoId) {
applyoutService.deleteapplyout(aoId);
model.addAttribute("error", "deletesucess");
return "redirect:getmyapplyout.action";
}
/**
* @methodsName: adminDeleteApplyout
* @description: admin删除一条已处理的退租信息
* @param: aoid: 已处理退租信息的id
* @return: String: 重定向到admin查看所有退租申请的action
* @throws:
*/
@RequestMapping("/adminDeleteApplyout")
public String adminDeleteApplyout(Model model, Integer aoid) {
applyoutService.deleteapplyout(aoid);
model.addAttribute("info", "deletesucess");
return "redirect:findallapplyout.action";
}
//qny
//用户删除已处理的退租申请列表
@RequestMapping("/deleteApplyoutByUser")
public String deleteApplyoutByUser(Model model, Integer aoId) {
applyoutService.deleteapplyout(aoId);
model.addAttribute("error", "deletesucess");
return "redirect:findAllApplyoutByZuke.action";
}
//qny
//租客查看自己的所有退租申请
@RequestMapping("/getmyapplyout")
public String getmyapplyout(Model model, HttpSession httpSession,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "8") Integer pageSize) {
User user1 = (User) httpSession.getAttribute("user");
PageHelper.startPage(page, pageSize);
//根据userList中的id查询出对应用户的退租申请结果
List<Applyout> ApplyoutList = applyoutService.getMyApplyOutByUserId(user1.getId());
PageInfo<Applyout> p = new PageInfo<Applyout>(ApplyoutList);
model.addAttribute("ApplyoutList", ApplyoutList);
model.addAttribute("p", p);
return "user/myapplyout";
}
}
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "8") Integer pageSize){
//开启分页
PageHelper.startPage(page, pageSize);
//得到已缴纳的租金列表
List<QueryPaid> queryPaids = paidService.getAllPaid(vo);
PageInfo<QueryPaid> p = new PageInfo<QueryPaid>(queryPaids);
//得到已缴纳的租金金额
Integer sumPrice = paidService.getAllPaidRent(vo);
model.addAttribute("queryPaids", queryPaids);
model.addAttribute("sum", sumPrice);
model.addAttribute("p", p);
model.addAttribute("vo", vo);
return"admin/paid";
}
/**
* @methodsName: getAllPaidBackRent
* @description: admin查看所有退回的租金信息
* @param: page: 展示第几页的数据;pageSize: 每页展示多少条数据
* @param: vo: 用来封装前端传来的查询字段,以便进行条件查询
* @return: String: 前往admin模块下展示所有已退回租金信息的jsp页面
* @throws:
*/
@RequestMapping("getAllPaidBackRent")
public String getAllPaidBackRent(Model model,QueryVo vo,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "8") Integer pageSize){
//开启分页
PageHelper.startPage(page, pageSize);
//得到已退回的租金列表
List<QueryPaid> queryPaids = paidService.getAllPaidBack(vo);
PageInfo<QueryPaid> p = new PageInfo<QueryPaid>(queryPaids);
//得到已退回的租金金额
Integer sumPrice = paidService.getAllPaidBackRent(vo);
model.addAttribute("queryPaids", queryPaids);
model.addAttribute("sum", sumPrice);
model.addAttribute("p", p);
model.addAttribute("vo", vo);
return"admin/payback";
}
/**
* @methodsName: deletePayBack
* @description: admin删除一条退回的租金信息
* @param: payId: 要删除的退回租金信息的id
* @return: String: 重定向到admin模块下展示所有已退回租金信息的action
* @throws:
*/
@RequestMapping("/deletePayBack")
public String deletePayBack(Integer payId) {
paidService.deletePayBack(payId);
PageInfo<Wrong> p = new PageInfo<Wrong>(list);
model.addAttribute("wrong", list);
model.addAttribute("p", p);
model.addAttribute("mainPage", "wrong.jsp");
return "admin/main1";
}
// 租客查看自己的未处理报障
@RequestMapping("/mywronglist")
public String mywronglist(Model model, HttpSession httpSession,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "8") Integer pageSize) {
User user1 = (User) httpSession.getAttribute("user");
Userlist userlist = userlistService.findhasuserlist(user1.getId());
QueryVo vo = new QueryVo();
// vo.setUserlist_id(userlist.getId());
PageHelper.startPage(page, pageSize);
List<Wrong> list = solveService.findwrong(vo);
PageInfo<Wrong> p = new PageInfo<Wrong>(list);
model.addAttribute("p", p);
model.addAttribute("wrong", list);
model.addAttribute("mainPage", "mywrong.jsp");
return "user/main";
}
// 管理员处理报障
@RequestMapping("/gotosolve")
public String gotosolve(Integer id, Model model) {
Wrong wrong = solveService.findbyid(id);
Solve solve = new Solve();
solve.setItemId(wrong.getItemId());
solve.setItemName(wrong.getItemName());
solve.setDate(wrong.getDate());
solve.setDetail(wrong.getDetail());
solve.setUserName(wrong.getUserName());
solve.setUserlist_id(wrong.getUserlist_id());
solve.setStatus("已处理");
solveService.gotosolve(id, solve);
model.addAttribute("error", "duesucess");
return "redirect:selectall.action";
}
}
* @return: String: 前往admin模块下展示所有已退回租金信息的jsp页面
* @throws:
*/
@RequestMapping("getAllPaidBackRent")
public String getAllPaidBackRent(Model model,QueryVo vo,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "8") Integer pageSize){
//开启分页
PageHelper.startPage(page, pageSize);
//得到已退回的租金列表
List<QueryPaid> queryPaids = paidService.getAllPaidBack(vo);
PageInfo<QueryPaid> p = new PageInfo<QueryPaid>(queryPaids);
//得到已退回的租金金额
Integer sumPrice = paidService.getAllPaidBackRent(vo);
model.addAttribute("queryPaids", queryPaids);
model.addAttribute("sum", sumPrice);
model.addAttribute("p", p);
model.addAttribute("vo", vo);
return"admin/payback";
}
/**
* @methodsName: deletePayBack
* @description: admin删除一条退回的租金信息
* @param: payId: 要删除的退回租金信息的id
* @return: String: 重定向到admin模块下展示所有已退回租金信息的action
* @throws:
*/
@RequestMapping("/deletePayBack")
public String deletePayBack(Integer payId) {
paidService.deletePayBack(payId);
return "redirect:getAllPaidBackRent.action";
}
}
public static int daysxiangcha(String dateStr1, String dateStr2) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
try{
dateStr1 = sdf.format(sdf2.parse(dateStr1));
dateStr2 = sdf.format(sdf2.parse(dateStr2));
} catch (ParseException e) {
e.printStackTrace();
}
int year1 = Integer.parseInt(dateStr1.substring(0, 4));
int month1 = Integer.parseInt(dateStr1.substring(4, 6));
int day1 = Integer.parseInt(dateStr1.substring(6, 8));
int year2 = Integer.parseInt(dateStr2.substring(0, 4));
int month2 = Integer.parseInt(dateStr2.substring(4, 6));
int day2 = Integer.parseInt(dateStr2.substring(6, 8));
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.YEAR, year1);
c1.set(Calendar.MONTH, month1 - 1);
c1.set(Calendar.DAY_OF_MONTH, day1);
Calendar c2 = Calendar.getInstance();
c2.set(Calendar.YEAR, year2);
c2.set(Calendar.MONTH, month2 - 1);
c2.set(Calendar.DAY_OF_MONTH, day2);
long mills = c1.getTimeInMillis() > c2.getTimeInMillis()
? c1.getTimeInMillis() - c2.getTimeInMillis()
: c2.getTimeInMillis() - c1.getTimeInMillis();
return (int) (mills / 1000 / 3600 / 24);
}
}
private ApplyService applyService;
@Autowired
private CheckoutService checkoutService;
@Autowired
private UserlistService userlistService;
@Autowired
private ItemMapper itemMapper;
/**
* @methodsName: insertHetong
* @description: 新增租赁合同信息
* @param: itemId: 被租赁的物品id; hetong: 即将插入的合同信息
* @return: String: 重定向到admin查看所有租赁申请的action
* @throws:
*/
@RequestMapping("/inserthetong")
public String insertHetong(Model model, Integer itemId,Hetong hetong,
HttpSession httpSession) {
hetong = hetongService.getApplyByItemId(itemId);
//1.拿到itemId,查询masterId
Item item = itemService.findItemId(hetong.getItemId());
int masterId = item.getMasterId();
//2.根据masterId查询出租人身份证
Userlist master = userlistService.findhasuserlist(masterId);
//3.将出租人身份证写入合同
hetong.setChuZuIdcard(master.getIdcard());
//4.填充合同信息并插入合同数据表
hetong.setZuKeId(hetong.getZuKeId());
hetong.setChuZuId(item.getMasterId().toString());
hetongService.inserthetong(hetong);
Hetong hetong1 = hetongService.findhetong(hetong.getItemId());
//5.更新物品状态
Item item2 = itemService.findItemId(hetong1.getItemId());
item2.setStatus("已租赁");
itemService.updateItemStatus(item2);
//7.更改申请状态
Apply apply = new Apply();
apply.setItemId(hetong.getItemId());;
apply.setStatus("已同意");
applyService.updateApplyStatus(apply);
//8.重定向到admin查看所有租赁申请的action
model.addAttribute("info", "zusuccess");
return "redirect:/findapplylist.action";
}
//qny
//用户同意别人的租赁申请
@RequestMapping("/insertHetongByZuke")
public String insertHetongByZuke(Model model, Integer itemId,Hetong hetong,
HttpSession httpSession) {
/**
* @methodsName: deleteItem
* @description: 删除一个物品的信息
* @param: id: 要删除物品的id
* @return: String:重定向到itemList.action,从而展示删除该物品后的所有可供租赁物品信息
* @throws:
*/
@RequestMapping("/deleteItem")
public String deleteItem(Integer id) {
itemService.deleteItem(id);
return "redirect:itemList.action";
}
//qny
//租客删除自己出租的商品
@RequestMapping("/zukeDeleteItem")
public String zukeDeleteItem(Integer itemId){
itemService.deleteItem(itemId);
return "redirect:itemListByZuke.action";
}
@RequestMapping("/toahouselist")
public String toahouselist() {
return "ahouselist.action";
}
/**
* @methodsName: findid
* @description: 查找一个物品的详细信息
* @param: itemId:物品id
* @return: String 前往admin模块下更新物品的jsp页面
* @throws:
*/
@RequestMapping("/findId")
public String findid(String itemId, Model model) {
//根据物品id唯一查找到该物品
Item item = itemService.findItemId(itemId);
@Controller
public class ApplyController {
@Autowired
private UserlistService userlistService;
@Autowired
private ItemService itemService;
@Autowired
private ApplyService applyService;
@Autowired
private PaidService paidService;
/**
* @methodsName: InsertItemApply
* @description: 更改被租赁物品状态为“已被申请”,进行余额转移,插入一条租赁申请
* @param: apply: 封装了申请租赁一个物品需要的信息
* @return: String: 重定向到user模块下展示该用户全部租赁申请的action
* @throws:
*/
@RequestMapping("/InsertItemApply")
public String InsertItemApply(HttpSession httpSession, Model model, Apply apply) {
User user1 = (User) httpSession.getAttribute("user");
Integer user_id = user1.getId();
Userlist list = userlistService.findhasuserlist(user_id);
if (list == null) {
model.addAttribute("info", "applycheck");
return "redirect:item.action";
} else {
@Controller
@RequestMapping("/paid")
public class PaidController {
@Autowired
private PaidService paidService;
@Autowired
private UserlistService userlistService;
@Autowired
private ItemService itemService;
// 管理员查找所有已缴租金列表
@RequestMapping("/selectall")
public String selectall(Model model, QueryVo vo, @RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "8") Integer pageSize) {
PageHelper.startPage(page, pageSize);
List<Paid> list = paidService.selectall(vo);
PageInfo<Paid> p = new PageInfo<Paid>(list);
Double sum = paidService.selectsum(vo);
model.addAttribute("paid", list);
model.addAttribute("sum", sum);
model.addAttribute("p", p);
model.addAttribute("mainPage", "paid.jsp");
model.addAttribute("vo", vo);
return "admin/main1";
}
//qny
// 租客查看自己已缴租金列表
@RequestMapping("/findmypaid")
public String findmypaid(HttpSession httpSession, Model model,QueryVo vo,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "8") Integer pageSize) {
User user1 = (User) httpSession.getAttribute("user");
vo.setUserId(user1.getId());
PageHelper.startPage(page, pageSize);
List<QueryPaid> queryPaids = paidService.getPaidListByTime(vo);
PageInfo<QueryPaid> p = new PageInfo<QueryPaid>(queryPaids);
model.addAttribute("queryPaids", queryPaids);
Integer sumPrice = paidService.getAllPriceByUserId(vo,user1.getId());
model.addAttribute("sum", sumPrice);
model.addAttribute("p", p);
model.addAttribute("vo", vo);
return "user/mypaid";
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.YEAR, year1);
c1.set(Calendar.MONTH, month1 - 1);
c1.set(Calendar.DAY_OF_MONTH, day1);
Calendar c2 = Calendar.getInstance();
c2.set(Calendar.YEAR, year2);
c2.set(Calendar.MONTH, month2 - 1);
c2.set(Calendar.DAY_OF_MONTH, day2);
long mills = c1.getTimeInMillis() > c2.getTimeInMillis()
? c1.getTimeInMillis() - c2.getTimeInMillis()
: c2.getTimeInMillis() - c1.getTimeInMillis();
return (int) (mills / 1000 / 3600 / 24);
}
}
@Controller
public class ItemListController {
@Autowired
private ItemService itemService;
public String getItemByCQ(
Model model,
String itemId,
String itemName,
HttpSession httpSession,
@RequestParam(defaultValue = "0.0") double minPrice,
@RequestParam(defaultValue = "0.0") double maxPrice,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "8") Integer pageSize) {
QueryItem qItem = new QueryItem();
qItem.setItemId(itemId);
qItem.setItemName(itemName);
qItem.setMaxPrice(maxPrice);
qItem.setMinPrice(minPrice);
//设置分页形式
PageHelper.startPage(page, pageSize);
//得到所有可供租赁物品的信息
List<Item> item = itemService.getItemByCompositeQuery(qItem);
//进行分页
PageInfo<Item> p = new PageInfo<Item>(item);
User user = (User)httpSession.getAttribute("user");
if (user.getType()=="admin") {
model.addAttribute("p", p);
model.addAttribute("item", item);
model.addAttribute("qItem",qItem);
return "admin/itemList";
}else{
model.addAttribute("p", p);
model.addAttribute("itemList", item);
model.addAttribute("qItem",qItem);
return "user/itemList";
}
}
//qny
//租客查看自己的出租物品
@RequestMapping("/itemListByZuke")
public String itemListByZuke(Model model,HttpSession httpSession,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "8") Integer pageSize){
User zuke = (User)httpSession.getAttribute("user");
model.addAttribute("info", "添加成功");
itemService.insertItem(item);
model.addAttribute("item", item);
return "admin/addItem";
}
}
//qny
//租客添加物品时跳转到物品添加页面
@RequestMapping("/toAddItemByZuke")
public String toAddItemByZuke(Model model) {
return "user/myadditem";
}
//qny
//租客添加物品
@RequestMapping("/addItemByZuke")
public String addItemByZuke(Model model,HttpSession httpSession,Item item){
User zuke = (User) httpSession.getAttribute("user");
item.setMasterId(zuke.getId());
//查询物品编号是否已存在
Item item2 = itemService.getItemByItemNumber(item.getItemNumber());
if (item2!=null) {
model.addAttribute("error", "此编号已存在");
model.addAttribute("item", item);
return "user/myadditem";
}else{
itemService.insertItem(item);
model.addAttribute("error", "添加成功");
model.addAttribute("item", item);
return "user/myadditem";
}
}
/**
* @methodsName: deleteItem
* @description: 删除一个物品的信息
* @param: id: 要删除物品的id
* @return: String:重定向到itemList.action,从而展示删除该物品后的所有可供租赁物品信息
* @throws:
*/
@RequestMapping("/deleteItem")
public String deleteItem(Integer id) {
itemService.deleteItem(id);
return "redirect:itemList.action";
}
*/
@RequestMapping("updatePwd")
public String updatePwd(Model model,String OriginalPwd,String NewPwd,
String ConfirmPwd,HttpSession httpSession){
//1.判断新密码与确认密码是否相同
if (!NewPwd.equals(ConfirmPwd)) {
model.addAttribute("info", "新密码与确认密码不一致");
return "user/updatePwd";
}
//2.根据id查询密码后与原密码比较看是否相同
User user = (User)httpSession.getAttribute("user");
Integer id = user.getId();
User user2 = userService.getUserById(id);
if (!OriginalPwd.equals(user2.getPassword())) {
model.addAttribute("info", "原密码不正确");
return "user/updatePwd";
}
//3.更新密码
user2.setPassword(NewPwd);
userService.updateUser(user2);
model.addAttribute("info", "密码更新成功");
return "user/updatePwd";
}
/**
* @methodsName: gotoUpdatePwd
* @description: 前往更新用户密码
* @param:
* @return: String: 前往更新密码页面
* @throws:
*/
@RequestMapping("gotoUpdatePwd")
public String gotoUpdatePwd(Model model){
return"user/updatePwd";
}
/**
* @methodsName: adminGotoUpdatePwd
* @description: 前往更新管理员密码页面
* @param:
* @return: String: 前往更新密码页面
* @throws:
*/
@RequestMapping("adminGotoUpdatePwd")
public String adminGotoUpdatePwd(Model model){
return"admin/updatePwd";