激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)

Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)

2022-03-11 00:49OldWinePot Java教程

讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)寵物在線商城系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平

該系統(tǒng)分為前臺(tái)和后臺(tái),前臺(tái)可以自主注冊(cè),后臺(tái)管理員角色,除基礎(chǔ)腳手架外,實(shí)現(xiàn)的功能有:
后臺(tái)管理員功能有:商品分類管理、商品管理、套餐管理、新聞分類管理、新聞管理、常見問題、關(guān)于我們、團(tuán)隊(duì)管理、訂單查看和前臺(tái)用戶查看等功能。 前臺(tái)用戶功能有:注冊(cè)登錄、查看商品、購物車、支付訂單、評(píng)價(jià)、照片庫、新聞列表、個(gè)人中心、購買套餐等功能。

運(yùn)行環(huán)境:windows/Linux均可、jdk1.8、mysql5.7、maven3.5\maven3.6、idea/eclipse均可。

Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)

Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)

Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)

Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)

Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)

Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)

系統(tǒng)控制器代碼:

/**
* 系統(tǒng)控制器
* @author Admin
*
*/
@RequestMapping("/system")
@Controller
public class SystemController {

	
	
	@Autowired
	private OperaterLogService operaterLogService;
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private DatabaseBakService databaseBakService;

	@Autowired
	private StaffService staffService;
	@Autowired
	private OrderAuthService orderAuthService;

	private Logger log = LoggerFactory.getLogger(SystemController.class);
	
	/**
	 * 登錄頁面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/login",method=RequestMethod.GET)
	public String login(Model model){
		model.addAttribute("loginTypes", LoginType.values());
		return "admin/system/login";
	}
	
	/**
	 * 用戶登錄提交表單處理方法
	 * @param request
	 * @param cpacha
	 * @return
	 */
	@RequestMapping(value="/login",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> login(HttpServletRequest request,String username,String password,String cpacha,Integer type){
		if(StringUtils.isEmpty(username)){
			return Result.error(CodeMsg.ADMIN_USERNAME_EMPTY);
		}
		if(StringUtils.isEmpty(password)){
			return Result.error(CodeMsg.ADMIN_PASSWORD_EMPTY);
		}

		//表示實(shí)體信息合法,開始驗(yàn)證驗(yàn)證碼是否為空
		if(StringUtils.isEmpty(cpacha)){
			return Result.error(CodeMsg.CPACHA_EMPTY);
		}
		//說明驗(yàn)證碼不為空,從session里獲取驗(yàn)證碼
		Object attribute = request.getSession().getAttribute("admin_login");
		if(attribute == null){
			return Result.error(CodeMsg.SESSION_EXPIRED);
		}
		//表示session未失效,進(jìn)一步判斷用戶填寫的驗(yàn)證碼是否正確
		if(!cpacha.equalsIgnoreCase(attribute.toString())){
			return Result.error(CodeMsg.CPACHA_ERROR);
		}

		if(type == LoginType.ADMINISTRATOR.getCode()){
			//表示驗(yàn)證碼正確,開始查詢數(shù)據(jù)庫,檢驗(yàn)密碼是否正確
			User findByUsername = userService.findByUsername(username);
			//判斷是否為空
			if(findByUsername == null){
				return Result.error(CodeMsg.ADMIN_USERNAME_NO_EXIST);
			}
			//表示用戶存在,進(jìn)一步對(duì)比密碼是否正確
			if(!findByUsername.getPassword().equals(password)){
				return Result.error(CodeMsg.ADMIN_PASSWORD_ERROR);
			}
			//表示密碼正確,接下來判斷用戶狀態(tài)是否可用
			if(findByUsername.getStatus() == User.ADMIN_USER_STATUS_UNABLE){
				return Result.error(CodeMsg.ADMIN_USER_UNABLE);
			}
			//檢查用戶所屬角色狀態(tài)是否可用
			if(findByUsername.getRole() == null || findByUsername.getRole().getStatus() == Role.ADMIN_ROLE_STATUS_UNABLE){
				return Result.error(CodeMsg.ADMIN_USER_ROLE_UNABLE);
			}
			//檢查用戶所屬角色的權(quán)限是否存在
			if(findByUsername.getRole().getAuthorities() == null || findByUsername.getRole().getAuthorities().size() == 0){
				return Result.error(CodeMsg.ADMIN_USER_ROLE_AUTHORITES_EMPTY);
			}
			//檢查一切符合,可以登錄,將用戶信息存放至session
			request.getSession().setAttribute(SessionConstant.SESSION_USER_LOGIN_KEY, findByUsername);
			request.getSession().setAttribute("loginType",type);

			//銷毀session中的驗(yàn)證碼
			request.getSession().setAttribute("admin_login", null);
			//將登陸記錄寫入日志庫
			operaterLogService.add("用戶【"+username+"】于【" + StringUtil.getFormatterDate(new Date(), "yyyy-MM-dd HH:mm:ss") + "】登錄系統(tǒng)!");
			log.info("用戶成功登錄,user = " + findByUsername);
		}else{
			Staff byJobNumber = staffService.findByNameAndIsStatus(username);
			//判斷是否為空
			if(byJobNumber == null){
				return Result.error(CodeMsg.ADMIN_USERNAME_NO_EXIST);
			}

			//表示用戶存在,進(jìn)一步對(duì)比密碼是否正確
			if(!byJobNumber.getPassword().equals(password)){
				return Result.error(CodeMsg.ADMIN_PASSWORD_ERROR);
			}

			//檢查用戶所屬角色狀態(tài)是否可用
			if(byJobNumber.getRole() == null || byJobNumber.getRole().getStatus() == Role.ADMIN_ROLE_STATUS_UNABLE){
				return Result.error(CodeMsg.ADMIN_USER_ROLE_UNABLE);
			}

			//檢查用戶所屬角色的權(quán)限是否存在
			if(byJobNumber.getRole().getAuthorities() == null || byJobNumber.getRole().getAuthorities().size() == 0){
				return Result.error(CodeMsg.ADMIN_USER_ROLE_AUTHORITES_EMPTY);
			}
			//檢查一切符合,可以登錄,將用戶信息存放至session
			request.getSession().setAttribute(SessionConstant.SESSION_STAFF_LOGIN_KEY, byJobNumber);
			request.getSession().setAttribute("loginType",type);
			//銷毀session中的驗(yàn)證碼
			request.getSession().setAttribute("admin_login", null);
			//將登陸記錄寫入日志庫
			operaterLogService.add("用戶【"+username+"】于【" + StringUtil.getFormatterDate(new Date(), "yyyy-MM-dd HH:mm:ss") + "】登錄系統(tǒng)!");
			log.info("員工成功登錄,user = " + byJobNumber);
		}

		return Result.success(true);
	}
	
	/**
	 * 登錄成功后的系統(tǒng)主頁
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/index")
	public String index(Model model){
		model.addAttribute("operatorLogs", operaterLogService.findLastestLog(10));
		model.addAttribute("userTotal", userService.total());
		model.addAttribute("operatorLogTotal", operaterLogService.total());
		model.addAttribute("databaseBackupTotal", databaseBakService.total());
		model.addAttribute("onlineUserTotal", SessionListener.onlineUserCount);
		return "admin/system/index";
	}
	
	/**
	 * 注銷登錄
	 * @return
	 */
	@RequestMapping(value="/logout")
	public String logout(){
		Integer loginType = (Integer) SessionUtil.get("loginType");
		if(loginType == LoginType.ADMINISTRATOR.getCode()){
			User loginedUser = SessionUtil.getLoginedUser();
			if(loginedUser != null){
				SessionUtil.set(SessionConstant.SESSION_USER_LOGIN_KEY, null);
			}
		}else if(loginType == LoginType.STAFF.getCode()){
			Staff loginedStaff = SessionUtil.getLoginedStaff();
			if(loginedStaff != null){
				SessionUtil.set(SessionConstant.SESSION_STAFF_LOGIN_KEY,null);
			}
		}
		return "redirect:login";
	}
	
	/**
	 * 無權(quán)限提示頁面
	 * @return
	 */
	@RequestMapping(value="/no_right")
	public String noRight(){
		return "admin/system/no_right";
	}
	
	/**
	 * 修改用戶個(gè)人信息
	 * @return
	 */
	@RequestMapping(value="/update_userinfo",method=RequestMethod.GET)
	public String updateUserInfo(){
		return "admin/system/update_userinfo";
	}
	
	/**
	 * 修改個(gè)人信息保存
	 * @param user
	 * @return
	 */
	@RequestMapping(value="/update_userinfo",method=RequestMethod.POST)
	public String updateUserInfo(User user){
		User loginedUser = SessionUtil.getLoginedUser();
		loginedUser.setEmail(user.getEmail());
		loginedUser.setMobile(user.getMobile());
		loginedUser.setHeadPic(user.getHeadPic());
		//首先保存到數(shù)據(jù)庫
		userService.save(loginedUser);
		//更新session里的值
		SessionUtil.set(SessionConstant.SESSION_USER_LOGIN_KEY, loginedUser);
		return "redirect:update_userinfo";
	}
	
	/**
	 * 修改密碼頁面
	 * @return
	 */
	@RequestMapping(value="/update_pwd",method=RequestMethod.GET)
	public String updatePwd(){
		return "admin/system/update_pwd";
	}
	
	/**
	 * 修改密碼表單提交
	 * @param oldPwd
	 * @param newPwd
	 * @return
	 */
	@RequestMapping(value="/update_pwd",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> updatePwd(@RequestParam(name="oldPwd",required=true)String oldPwd,
			@RequestParam(name="newPwd",required=true)String newPwd
			){
		Integer loginType = (Integer) SessionUtil.get("loginType");
		if(loginType == LoginType.ADMINISTRATOR.getCode()){
			User loginedUser = SessionUtil.getLoginedUser();
			if(!loginedUser.getPassword().equals(oldPwd)){
				return Result.error(CodeMsg.ADMIN_USER_UPDATE_PWD_ERROR);
			}
			if(StringUtils.isEmpty(newPwd)){
				return Result.error(CodeMsg.ADMIN_USER_UPDATE_PWD_EMPTY);
			}
			if(newPwd.length()<4 || newPwd.length()>32){
				return Result.error(CodeMsg.ADMIN_USER_PWD_LENGTH_ERROR);
			}
			loginedUser.setPassword(newPwd);
			//保存數(shù)據(jù)庫
			userService.save(loginedUser);
			//更新session
			SessionUtil.set(SessionConstant.SESSION_USER_LOGIN_KEY, loginedUser);
		}else{
			Staff loginedStaff = SessionUtil.getLoginedStaff();

			Staff staff = staffService.find(loginedStaff.getId());
			if(!staff.getPassword().equals(oldPwd)){
				return Result.error(CodeMsg.ADMIN_USER_UPDATE_PWD_ERROR);
			}
			if(StringUtils.isEmpty(newPwd)){
				return Result.error(CodeMsg.ADMIN_USER_UPDATE_PWD_EMPTY);
			}

			staff.setPassword(newPwd);

			CodeMsg codeMsg = ValidateEntityUtil.validate(staff);
			if (codeMsg.getCode() != CodeMsg.SUCCESS.getCode()){
				return Result.error(codeMsg);
			}

			loginedStaff.setPassword(newPwd);
			//保存數(shù)據(jù)庫
			staffService.save(loginedStaff);
			//更新session
			SessionUtil.set(SessionConstant.SESSION_STAFF_LOGIN_KEY, loginedStaff);
		}

		return Result.success(true);
	}
	
	/**
	 * 日志管理列表
	 * @param model
	 * @param operaterLog
	 * @param pageBean
	 * @return
	 */
	@RequestMapping(value="/operator_log_list")
	public String operatorLogList(Model model,OperaterLog operaterLog,PageBean<OperaterLog> pageBean){
		model.addAttribute("pageBean", operaterLogService.findList(operaterLog, pageBean));
		model.addAttribute("operator", operaterLog.getOperator());
		model.addAttribute("title", "日志列表");
		return "admin/system/operator_log_list";
	}

	/**
	 * 刪除操作日志,可刪除多個(gè)
	 * @param ids
	 * @return
	 */
	@RequestMapping(value="/delete_operator_log",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> delete(String ids){
		if(!StringUtils.isEmpty(ids)){
			String[] splitIds = ids.split(",");
			for(String id : splitIds){
				operaterLogService.delete(Long.valueOf(id));
			}
		}
		return Result.success(true);
	}
	
	/**
	 * 清空整個(gè)日志
	 * @return
	 */
	@RequestMapping(value="/delete_all_operator_log",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> deleteAll(){
		operaterLogService.deleteAll();
		return Result.success(true);
	}
}

到此這篇關(guān)于Java 實(shí)戰(zhàn)交易平臺(tái)項(xiàng)目之寵物在線商城系統(tǒng)的文章就介紹到這了,更多相關(guān)Java 寵物在線商城系統(tǒng)內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/pastclouds/article/details/121123436

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 在线a亚洲视频播放在线观看 | 香蕉国产9 | 一日本道久久久精品国产 | 亚洲卡通动漫在线观看 | 55夜色66夜色国产精品视频 | 九九热视频在线免费观看 | 欧美一区二区三区四区五区动图 | 欧洲精品色 | 一区二区视| 国产毛片在线高清视频 | 九九看片 | 美女被免费网站在线软件 | 久久精品中文字幕 | 免费看黄色一级片 | 美女福利视频国产 | 在线成人免费观看 | 国产毛片在线高清视频 | 久久精品免费国产 | 成人福利在线 | 久久av喷吹av高潮av懂色 | 国产精品成人亚洲一区二区 | 曰韩一级片 | 成人福利视频在 | 毛片在线看免费 | 免费黄色欧美视频 | 国产精品嘿咻嘿咻在线播放 | 男女羞羞视频在线免费观看 | 韩国一级免费视频 | 国产激情视频在线 | 91av亚洲| 国产精品剧情一区二区三区 | 精品国产91久久久久久久妲己 | 91九色视频在线播放 | 成人免费毛片一 | 红杏成人性视频免费看 | 欧美高清另类自拍视频在线看 | 国产高清成人久久 | 一级黄色电影网站 | 做爰xxxⅹ性护士hd在线 | 一区在线免费视频 | 色婷婷综合久色aⅴ |