文末獲取源碼,項目編號: S 069 。 \color{red}{文末獲取源碼,項目編號:S069。} 文末獲取源碼,項目編號:S069。
目錄
- 一、摘要
- 1.1 項目介紹
- 1.2 項目錄屏
- 二、系統設計
- 2.1 功能模塊設計
- 2.2 研究方法
- 三、系統展示
- 四、核心代碼
- 4.1 查詢免稅種類
- 4.2 查詢物品檔案
- 4.3 新增顧客
- 4.4 新增消費記錄
- 4.5 審核免稅
- 五、免責說明
一、摘要
1.1 項目介紹
基于JAVA+Vue+SpringBoot+MySQL的免稅店商城管理系統,包含了顧客模塊、免稅物品模塊、免稅費率模塊、購買登記模塊和免稅審核模塊,還包含系統自帶的用戶管理、部門管理、角色管理、菜單管理、日志管理、數據字典管理、文件管理、圖表展示等基礎模塊,免稅店商城管理系統基于角色的訪問控制,給免稅管理員、免稅工作人員使用,可將權限精確到按鈕級別,您可以自定義角色并分配權限,系統適合設計精確的權限約束需求。
1.2 項目錄屏
源碼下載
二、系統設計
本項目是基于Vue和SpringBoot的免稅店商城管理系統,是一個前后端分離的項目,是當下軟件開發主流模式。
2.1 功能模塊設計
該項目中包括三個角色,分別是免稅店管理員、審核員、系統管理員。對于免稅店管理員而言,免稅店管理員主要負責對顧客信息和購買物品進行登記并上傳到系統,以便審核員審核顧客信息。對于審核員而言,審核員負責發布免稅最新比例在系統中,設置各類商品的免稅比例,方便物品稅率改變后物品價值計算,以及免稅物品發貨審核,經過審核之后的商品才會發貨。對于系統管理員而言,系統管理員負責在審核員審核顧客不滿足購買免稅店商品條件之后的會員卡退費,以及對會員和審核員的登陸賬號、角色、權限進行配置,還有維護數據庫穩定。
登錄方面,系統前端將賬號、密碼、驗證碼轉化為 JSON 格式,使用 ajax 請求后端 API 接口,后端接口完成業務邏輯判斷,再將登陸結果返回給前端,前端將根據返回結果判斷接下來的頁面跳轉。登陸頁面包含賬號密碼和手機號碼兩個選擇來進行登錄。輸入賬號、密碼和驗證碼后點擊登陸,即可登陸系統,此處賬號密碼不能為空,如果密碼輸入錯誤,系統將進行密碼錯誤提示,不能登陸系統,如果驗證碼過期,則需要重新獲取驗證。登陸鑒權功能由后端完成。 此系統用于三類人群進行登陸、使用,分別是免稅店管理員、系統管理員、審核員。界面方面塊使用了 View UI 的 Table 組件,和 Form 組件作為搜索欄。添加彈窗使用了 View UI 的 Drawer 抽屜組件。確認彈窗使用了 View UI 的 Modal 組件。
2.2 研究方法
采用的研究方法主要是文獻研究法、功能分析法、描述研究法。首先文獻研究法是根據所研究的目的或課題,通過調查文獻獲取資料,從而全面地、正確地了解掌握免稅店商城管理方面的相關知識。然后用描述研究法對于相關的技術進行進一步了解,最后通過功能分析法對要完成的設計進行功能模塊具體分析,從而實現整個系統。
首先是進行文獻分析。大量收集有關免稅店商城管理系統的文獻,進行研究。為后續的系統分析建立基礎。
第二是系統分析。學習有關SpringBoot、Vue、MySQL等技術以及免稅店商城管理系統相關的技術。然后對系統進行可行性和需求分析,包括對該系統操作、技術和管理員等方面的分析論證,以及對系統的登錄、審核管理、顧客信息登記功能進行需求分析論證。
第三是系統設計。先對設計思想、目標和系統結構進行簡單概述。然后對各角色的實現要求進行分析,最后根據以上功能涉及的數據庫結構設計進行詳細描述,展示該系統的全部功能。
最后是系統開發。對以上的分析進行逐步開發設計,搭建后臺,實現框架后填充各個功能,并且不斷完善不足之處。
三、系統展示
四、核心代碼
4.1 查詢免稅種類
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查詢免稅種類")
public Result<IPage<Insurance>> getByPage(@ModelAttribute Insurance insurance ,@ModelAttribute PageVo page){QueryWrapper<Insurance> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(insurance.getTitle())) {qw.like("title",insurance.getTitle());}if(!ZwzNullUtils.isNull(insurance.getContent())) {qw.like("content",insurance.getContent());}IPage<Insurance> data = iInsuranceService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Insurance>>().setData(data);
}
4.2 查詢物品檔案
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查詢物品檔案")
public Result<IPage<Operation>> getByPage(@ModelAttribute Operation operation ,@ModelAttribute PageVo page){QueryWrapper<Operation> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(operation.getTitle())) {qw.like("title",operation.getTitle());}if(!ZwzNullUtils.isNull(operation.getType())) {qw.like("type",operation.getType());}if(!ZwzNullUtils.isNull(operation.getDescribed())) {qw.like("described",operation.getDescribed());}IPage<Operation> data = iOperationService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Operation>>().setData(data);
}
4.3 新增顧客
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增顧客")
public Result<Roster> insert(Roster roster){Insurance insurance = iInsuranceService.getById(roster.getInsuranceId());if(insurance != null) {roster.setInsuranceName(insurance.getTitle());}iRosterService.saveOrUpdate(roster);return new ResultUtil<Roster>().setData(roster);
}
4.4 新增消費記錄
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增消費記錄")
public Result<SeeDoctor> insert(SeeDoctor seeDoctor){Roster roster = iRosterService.getById(seeDoctor.getUserId());if(roster == null) {return ResultUtil.error("顧客不存在");}seeDoctor.setUserName(roster.getName());seeDoctor.setDate(DateUtil.today());iSeeDoctorService.saveOrUpdate(seeDoctor);roster.setMoney(seeDoctor.getBalanceNew());iRosterService.saveOrUpdate(roster);// 生成審核單Examine examine = new Examine();examine.setUserId(roster.getId());examine.setUserName(roster.getName());examine.setExemptionId(roster.getInsuranceId());examine.setExemptionName(roster.getInsuranceName());examine.setMoney(seeDoctor.getPriceYou());examine.setStatus(0);examine.setMessage("");examine.setRemark("");iExamineService.saveOrUpdate(examine);return new ResultUtil<SeeDoctor>().setData(seeDoctor);
}
4.5 審核免稅
@RequestMapping(value = "/audit", method = RequestMethod.POST)
@ApiOperation(value = "審核免稅")
public Result<Object> audit(@RequestParam String id,@RequestParam String msg){Examine examine = iExamineService.getById(id);if(examine == null) {return ResultUtil.error("審核單不存在");}examine.setStatus(1);examine.setMessage(msg);iExamineService.saveOrUpdate(examine);return ResultUtil.success();
}
五、免責說明
- 本項目僅供個人學習使用,商用授權請聯系博主,否則后果自負。
- 博主擁有本軟件構建后的應用系統全部內容所有權及獨立的知識產權,擁有最終解釋權。
- 如有問題,歡迎在倉庫 Issue 留言,看到后會第一時間回復,相關意見會酌情考慮,但沒有一定被采納的承諾或保證。
下載本系統代碼或使用本系統的用戶,必須同意以下內容,否則請勿下載!
- 出于自愿而使用/開發本軟件,了解使用本軟件的風險,且同意自己承擔使用本軟件的風險。
- 利用本軟件構建的網站的任何信息內容以及導致的任何版權糾紛和法律爭議及后果和博主無關,博主對此不承擔任何責任。
- 在任何情況下,對于因使用或無法使用本軟件而導致的任何難以合理預估的損失(包括但不僅限于商業利潤損失、業務中斷與業務信息丟失),博主概不承擔任何責任。
- 必須了解使用本軟件的風險,博主不承諾提供一對一的技術支持、使用擔保,也不承擔任何因本軟件而產生的難以預料的問題的相關責任。