深圳市公共資源交易中心官網(wǎng)杭州seo推廣公司
項(xiàng)目編號: S 009 ,文末獲取源碼。 \color{red}{項(xiàng)目編號:S009,文末獲取源碼。} 項(xiàng)目編號:S009,文末獲取源碼。
目錄
- 一、摘要
- 1.1 項(xiàng)目介紹
- 1.2 項(xiàng)目錄屏
- 二、功能模塊
- 2.1 數(shù)據(jù)中心模塊
- 2.2 二手商品檔案管理模塊
- 2.3 商品預(yù)約管理模塊
- 2.4 商品預(yù)定管理模塊
- 2.5 商品留言板管理模塊
- 2.6 商品資訊管理模塊
- 三、實(shí)體類設(shè)計(jì)
- 3.1 用戶表
- 3.2 二手商品表
- 3.3 商品預(yù)約表
- 3.4 商品預(yù)定表
- 3.5 留言表
- 3.6 資訊表
- 四、界面展示
- 五、核心代碼
- 5.1 用戶網(wǎng)頁登錄
- 5.2 用戶網(wǎng)頁注冊
- 5.3 新增商品預(yù)約
- 5.4 商品審核
- 5.5 查詢留言
- 六、免責(zé)說明
一、摘要
1.1 項(xiàng)目介紹
隨著國家生產(chǎn)力的發(fā)展,越來越多商品被生產(chǎn)了出來,超過了人們的實(shí)際消耗量,所以產(chǎn)生了大量閑置的商品,這些閑置商品有些被遺棄、有些通過二手平臺被他人使用。為了防止不必要的浪費(fèi),開發(fā)了這套面向校園的二手交易系統(tǒng),幫助用戶高效率的轉(zhuǎn)賣閑置的二手商品。
校園二手交易系統(tǒng)使用Idea開發(fā)工具完成了編碼實(shí)現(xiàn)。前端采用Vue.js,采用View UI組件庫美化界面,后端采用SpringBoot框架。在操作系統(tǒng)、開發(fā)語言、服務(wù)器,數(shù)據(jù)庫、連接技術(shù)方面,對應(yīng)使用Window操作系統(tǒng)、Java語言、Tomcat服務(wù)器、MySql數(shù)據(jù)庫以及MyBatis技術(shù)完成系統(tǒng)搭建。該系統(tǒng)基于B/S架構(gòu),采用前后端分離架構(gòu),分為網(wǎng)頁前臺和管理后臺,使用戶可以在系統(tǒng)上發(fā)布與購買二手商品、進(jìn)行留言以及掌握最新商品咨詢。
-
前端:Vue 2.7.10
-
后端:Spring Boot 3.1.10
-
數(shù)據(jù)庫:MySQL 8.0.31
1.2 項(xiàng)目錄屏
源碼下載
二、功能模塊
校園二手交易平臺的功能性需求主要包含數(shù)據(jù)中心模塊、二手商品檔案模塊、商品預(yù)約模塊、商品預(yù)定模塊、商品留言板模塊、商品資訊模塊六大模塊,是基于瀏覽器運(yùn)行的web管理后端,其中各個(gè)模塊詳細(xì)說明如下:
2.1 數(shù)據(jù)中心模塊
數(shù)據(jù)中心模塊包含了校園二手交易平臺的系統(tǒng)基礎(chǔ)配置,如登錄用戶的管理、二手平臺組織架構(gòu)的管理、用戶菜單權(quán)限的管理、系統(tǒng)日志的管理、公用文件云盤的管理。
其中登錄用戶管理模塊,由二手平臺管理員負(fù)責(zé)運(yùn)維工作,管理員可以對登錄用戶進(jìn)行增加、刪除、修改、查詢操作。
二手組織架構(gòu),指的是二手平臺管理運(yùn)營公司的組織架構(gòu),該模塊適用于管理這些組織架構(gòu)的部門層級和員工的部門歸屬情況。
用戶菜單權(quán)限管理模塊,用于管理不同權(quán)限的用戶,擁有哪些具體的菜單權(quán)限。
系統(tǒng)日志的管理,用于維護(hù)用戶登入系統(tǒng)的記錄,方便定位追蹤用戶的操作情況。
公用云盤管理模塊,用于統(tǒng)一化維護(hù)校園二手交易平臺中的圖片,如二手商品的照片、保險(xiǎn)單、三方協(xié)議等等。
2.2 二手商品檔案管理模塊
二手商品檔案模塊,維護(hù)了校園二手交易平臺中發(fā)布的二手商品數(shù)據(jù),管理員可以對二手商品數(shù)據(jù)進(jìn)行增加、刪除、修改、查詢操作。
2.3 商品預(yù)約管理模塊
商品預(yù)約指的是買家有了初步意向,申請線下查看。注冊用戶可以在二手商品檔案模塊發(fā)起預(yù)約申請,賣家在收到預(yù)約申請后,主動聯(lián)系買家對接后續(xù)預(yù)約事宜。
2.4 商品預(yù)定管理模塊
商品預(yù)定,指買家決定購買選定的商品。買家可以在二手商品檔案中選擇心儀的二手商品進(jìn)行預(yù)定,并輸入理想的價(jià)格和可選的備注信息,賣家就可以收到這個(gè)交易訂單。賣家有權(quán)同意或駁回買家的預(yù)定請求,如果同意,則生成商品交易單,確定交易。
2.5 商品留言板管理模塊
二手商品的買賣過程中難免會有一些咨詢和糾紛,所以校園二手交易平臺專門設(shè)計(jì)了商品留言板模塊,用于解決買家和賣家、買家和二手平臺的糾紛。任何一方可以在留言板中留言,或?qū)σ蚜粞缘男?br /> 息進(jìn)行回復(fù)。
2.6 商品資訊管理模塊
商品資訊管理模塊,用于校園二手交易平臺發(fā)布一些商品新聞,以及防詐騙推文等系統(tǒng)注冊用戶可以閱讀到這些新聞信息。
三、實(shí)體類設(shè)計(jì)
3.1 用戶表
數(shù)據(jù)中心模塊最核心的就是用戶了,用戶的信息包括了手機(jī)號、地址、郵箱、身份證、性別等數(shù)據(jù)等。
3.2 二手商品表
二手商品檔案模塊是對系統(tǒng)內(nèi)二手商品的數(shù)據(jù)進(jìn)行管理,二手商品的數(shù)據(jù)包括商品ID、商品品牌、三方檢測、商品照片、價(jià)格、賣家姓名、賣家手機(jī)、備注。
3.3 商品預(yù)約表
商品預(yù)約模塊用于買家對商品的線下預(yù)約,商品預(yù)約模塊應(yīng)該包括商品ID、商品品牌、商品照片、賣家姓名、賣家手機(jī)、預(yù)約時(shí)間、預(yù)約地點(diǎn)、備注。
3.4 商品預(yù)定表
商品預(yù)定模塊主要是對學(xué)生的下單信息進(jìn)行記錄和存儲,例如商品ID、商品品牌、商品照片、賣家姓名、賣家手機(jī)、下單時(shí)間、約定價(jià)格、備注。
3.5 留言表
商品留言板用于解決買家和賣家、買家和二手平臺的糾紛,包括留言內(nèi)容、留言人、留言時(shí)間、是否回復(fù)、回復(fù)人、回復(fù)時(shí)間、回復(fù)內(nèi)容、備注,任何一方可以在留言板中留言,或?qū)σ蚜粞缘男畔⑦M(jìn)行回復(fù)。
3.6 資訊表
商品資訊管理模塊,用于二手平臺發(fā)布一些商品新聞,以及防詐騙推文等系統(tǒng)注冊用戶可以閱讀到這些新聞信息,包括發(fā)布人ID、發(fā)布人、發(fā)布內(nèi)容、圖片、附件、發(fā)布時(shí)間、排序值、發(fā)布狀態(tài)。
四、界面展示
此系統(tǒng)用于校園二手交易網(wǎng)站工作人員和注冊買家。首先是校園二手交易網(wǎng)站的工作人員,可以對數(shù)據(jù)中心模塊進(jìn)行配置,發(fā)布、刪除二手商品信息,查詢學(xué)生的預(yù)約、預(yù)定信息。
對于注冊買家,可以查詢管理員發(fā)布的二手商品檔案,并根據(jù)自己的需求進(jìn)行預(yù)定、預(yù)約。
二手商品檔案模塊,維護(hù)了校園二手交易網(wǎng)站中發(fā)布的二手商品數(shù)據(jù),管理員可以對二手商品數(shù)據(jù)進(jìn)行增加、刪除、修改、查詢操作。
五、核心代碼
5.1 用戶網(wǎng)頁登錄
@RequestMapping(value = "/loginOnWeb", method = RequestMethod.GET)
@ApiOperation(value = "網(wǎng)站前臺登陸")
public Result<String> loginOnWeb(@RequestParam String userName, @RequestParam String password){QueryWrapper<User> qw = new QueryWrapper<>();qw.eq("username",userName);List<User> userList = iUserService.list(qw);if(userList.size() < 1) {return ResultUtil.error("用戶不存在");}User user = userList.get(0);if(!new BCryptPasswordEncoder().matches(password, user.getPassword())){return ResultUtil.error("密碼不正確");}String accessToken = securityUtil.getToken(user.getUsername(), true);UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(new SecurityUserDetails(user), null, null);SecurityContextHolder.getContext().setAuthentication(authentication);return new ResultUtil<String>().setData(accessToken);
}
5.2 用戶網(wǎng)頁注冊
@RequestMapping(value = "/reOnWeb", method = RequestMethod.GET)
@ApiOperation(value = "網(wǎng)站前臺注冊")
public Result<String> reOnWeb(@RequestParam String userName,@RequestParam String mobile,@RequestParam String password){QueryWrapper<User> qw = new QueryWrapper<>();qw.eq("username",userName);qw.and(wrapper -> wrapper.eq("username", userName).or().eq("mobile",mobile));Long userCount = iUserService.count(qw);if(userCount > 0) {return ResultUtil.error("用戶已存在");}User u = new User();u.setUsername(userName);u.setNickname(userName);u.setMobile(mobile);u.setEmail(u.getMobile() + "@qq.com");String encryptPass = new BCryptPasswordEncoder().encode(password);u.setPassword(encryptPass).setType(0);iUserService.saveOrUpdate(u);QueryWrapper<Role> roleQw = new QueryWrapper<>();roleQw.eq("default_role",true);List<Role> roleList = iRoleService.list(roleQw);if(roleList.size() > 0){for(Role role : roleList) {iUserRoleService.saveOrUpdate(new UserRole().setUserId(u.getId()).setRoleId(role.getId()));}}String accessToken = securityUtil.getToken(u.getUsername(), true);UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(new SecurityUserDetails(u), null, null);SecurityContextHolder.getContext().setAuthentication(authentication);return new ResultUtil<String>().setData(accessToken);
}
5.3 新增商品預(yù)約
@RequestMapping(value = "/addOrder", method = RequestMethod.GET)
@ApiOperation(value = "新增單條二手商品預(yù)定單")
public Result<Object> addOrder(@RequestParam String carId){UsedCar usedCar = iUsedCarService.getById(carId);if(usedCar == null) {return ResultUtil.error("二手商品不存在");}User currUser = securityUtil.getCurrUser();QueryWrapper<CarOrder> qw = new QueryWrapper<>();qw.eq("car_id",carId);qw.eq("buy_id",currUser.getId());if(iCarOrderService.count(qw) > 0L) {return ResultUtil.error("您已預(yù)定,無需重復(fù)預(yù)定");}CarOrder carOrder = new CarOrder();carOrder.setCarId(carId);carOrder.setBrand(usedCar.getBrand());carOrder.setSellerMoney(usedCar.getMoney());carOrder.setImageUrl(usedCar.getImageUrl());carOrder.setSellerId(usedCar.getSellId());carOrder.setSellerName(usedCar.getSellName());carOrder.setSellerMobile(usedCar.getSellMobile());carOrder.setBuyId(currUser.getId());carOrder.setBuyName(currUser.getNickname());carOrder.setOrderTime(DateUtil.now());carOrder.setContractFlag(false);carOrder.setContractTime("");iCarOrderService.saveOrUpdate(carOrder);return ResultUtil.success();
}
5.4 商品審核
@RequestMapping(value = "/doAudit", method = RequestMethod.POST)
@ApiOperation(value = "審核")
public Result<Object> doAudit(@RequestParam String id){CarOrder carOrder = iCarOrderService.getById(id);if(carOrder == null) {return ResultUtil.error("訂單不存在");}carOrder.setAuditFlag(true);iCarOrderService.saveOrUpdate(carOrder);return ResultUtil.success();
}
5.5 查詢留言
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查詢留言")
public Result<IPage<MessageBoard>> getByPage(@ModelAttribute MessageBoard board,@ModelAttribute PageVo page){QueryWrapper<MessageBoard> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(board.getDate())) {qw.eq("date",board.getDate());}if(ZwzNullUtils.isNull(board.getReplyId())) {qw.eq("reply_id","");} else {qw.eq("reply_id",board.getReplyId());}return new ResultUtil<IPage<MessageBoard>>().setData(iMessageBoardService.page(PageUtil.initMpPage(page),qw));
}
六、免責(zé)說明
- 本項(xiàng)目僅供個(gè)人學(xué)習(xí)使用,商用授權(quán)請聯(lián)系博主,否則后果自負(fù)。
- 博主擁有本軟件構(gòu)建后的應(yīng)用系統(tǒng)全部內(nèi)容所有權(quán)及獨(dú)立的知識產(chǎn)權(quán),擁有最終解釋權(quán)。
- 如有問題,歡迎在倉庫 Issue 留言,看到后會第一時(shí)間回復(fù),相關(guān)意見會酌情考慮,但沒有一定被采納的承諾或保證。
下載本系統(tǒng)代碼或使用本系統(tǒng)的用戶,必須同意以下內(nèi)容,否則請勿下載!
- 出于自愿而使用/開發(fā)本軟件,了解使用本軟件的風(fēng)險(xiǎn),且同意自己承擔(dān)使用本軟件的風(fēng)險(xiǎn)。
- 利用本軟件構(gòu)建的網(wǎng)站的任何信息內(nèi)容以及導(dǎo)致的任何版權(quán)糾紛和法律爭議及后果和博主無關(guān),博主對此不承擔(dān)任何責(zé)任。
- 在任何情況下,對于因使用或無法使用本軟件而導(dǎo)致的任何難以合理預(yù)估的損失(包括但不僅限于商業(yè)利潤損失、業(yè)務(wù)中斷與業(yè)務(wù)信息丟失),博主概不承擔(dān)任何責(zé)任。
- 必須了解使用本軟件的風(fēng)險(xiǎn),博主不承諾提供一對一的技術(shù)支持、使用擔(dān)保,也不承擔(dān)任何因本軟件而產(chǎn)生的難以預(yù)料的問題的相關(guān)責(zé)任。