廣州市公司網(wǎng)站建設(shè)公司在線培訓(xùn)app
?全網(wǎng)粉絲20W+,csdn特邀作者、博客專家、CSDN新星計(jì)劃導(dǎo)師、java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺(tái)優(yōu)質(zhì)作者、專注于Java技術(shù)領(lǐng)域和畢業(yè)項(xiàng)目實(shí)戰(zhàn)?
🍅文末獲取項(xiàng)目下載方式🍅
一、項(xiàng)目背景介紹:
隨著社會(huì)的快速發(fā)展和科技的不斷進(jìn)步,咖啡文化逐漸成為人們生活中不可或缺的一部分。在這一背景下,基于JAVA、Spring Boot、VUE和微信小程序的前后端分離咖啡小程序應(yīng)運(yùn)而生。這個(gè)系統(tǒng)旨在結(jié)合先進(jìn)的技術(shù)架構(gòu),為咖啡愛(ài)好者提供一個(gè)互動(dòng)平臺(tái),實(shí)現(xiàn)個(gè)性化咖啡定制、社交互動(dòng)、在線訂單等功能。通過(guò)前后端分離的設(shè)計(jì),我們探索了小程序開發(fā)的最佳實(shí)踐,為用戶和商家打造了一個(gè)便捷、創(chuàng)新的咖啡體驗(yàn)社區(qū)。這個(gè)研究背景旨在深入挖掘現(xiàn)代科技與咖啡文化的結(jié)合,為社會(huì)提供更豐富、多樣化的咖啡體驗(yàn)。
二、項(xiàng)目技術(shù)簡(jiǎn)介:
- JAVA:Java是一門面向?qū)ο缶幊陶Z(yǔ)言,不僅吸收了C++語(yǔ)言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語(yǔ)言具有功能強(qiáng)大和簡(jiǎn)單易用兩個(gè)特征。Java語(yǔ)言作為靜態(tài)面向?qū)ο缶幊陶Z(yǔ)言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚?#xff0c;允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。
- Vue:Vue (發(fā)音為 /vju?/,類似 view) 是一款用于構(gòu)建用戶界面的JavaScript框架。它基于標(biāo)準(zhǔn)HTML、CSS和JavaScript構(gòu)建,并提供了一套聲明式的、組件化的編程模型,幫助開發(fā)者高效地開發(fā)用戶界面。
Vue是一個(gè)獨(dú)立的社區(qū)驅(qū)動(dòng)的項(xiàng)目,它是由尤雨溪在2014年作為其個(gè)人項(xiàng)目創(chuàng)建, 是一個(gè)成熟的、經(jīng)歷了無(wú)數(shù)實(shí)戰(zhàn)考驗(yàn)的框架,它是目前生產(chǎn)環(huán)境中使用最廣泛的JavaScript框架之一,可以輕松處理大多數(shù)web應(yīng)用的場(chǎng)景,并且?guī)缀醪恍枰謩?dòng)優(yōu)化,并且Vue完全有能力處理大規(guī)模的應(yīng)用。 - Element-UI:Element,一套為開發(fā)者、設(shè)計(jì)師和產(chǎn)品經(jīng)理準(zhǔn)備的基于 Vue 2.0 的桌面端組件庫(kù)。
- Mybatis-Plus:MyBatis-Plus(簡(jiǎn)稱 MP)是一個(gè) MyBatis的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為 簡(jiǎn)化開發(fā)、提高效率而生。
- smart:微信小程序,小程序的一種,英文名Wechat Mini Program,是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用“觸手可及”的夢(mèng)想,用戶掃一掃或搜一下即可打開應(yīng)用。
全面開放申請(qǐng)后,主體類型為企業(yè)、政府、媒體、其他組織或個(gè)人的開發(fā)者,均可申請(qǐng)注冊(cè)小程序。微信小程序、微信訂閱號(hào)、微信服務(wù)號(hào)、微信企業(yè)號(hào)是并行的體系。
微信小程序是一種不用下載就能使用的應(yīng)用,也是一項(xiàng)創(chuàng)新,經(jīng)過(guò)將近兩年的發(fā)展,已經(jīng)構(gòu)造了新的微信小程序開發(fā)環(huán)境和開發(fā)者生態(tài)。微信小程序也是這么多年來(lái)中國(guó)IT行業(yè)里一個(gè)真正能夠影響到普通程序員的創(chuàng)新成果,已經(jīng)有超過(guò)150萬(wàn)的開發(fā)者加入到了微信小程序的開發(fā),與我們一起共同發(fā)力推動(dòng)微信小程序的發(fā)展,微信小程序應(yīng)用數(shù)量超過(guò)了一百萬(wàn),覆蓋200多個(gè)細(xì)分的行業(yè),日活用戶達(dá)到兩個(gè)億,微信小程序還在許多城市實(shí)現(xiàn)了支持地鐵、公交服務(wù)。微信小程序發(fā)展帶來(lái)更多的就業(yè)機(jī)會(huì),2017年小程序帶動(dòng)就業(yè)104萬(wàn)人,社會(huì)效應(yīng)不斷提升。
三、系統(tǒng)功能模塊介紹:
四、數(shù)據(jù)庫(kù)設(shè)計(jì):
1:‘管理員’(co_admin)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵ID |
user_name | varchar | NULL | 用戶名(select) |
pass_word | varchar | NULL | 密碼 |
head_img | varchar | NULL | 頭像(img) |
nick_name | varchar | NULL | 姓名 |
create_time | datetime | NULL | 創(chuàng)建時(shí)間 |
ad_type | int | NULL | 管理員類型[0:超級(jí)管理員,1:普通管理員] |
2:‘咖啡附加屬性’(co_attribute)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵ID |
co_id | bigint | NULL | 咖啡ID |
attribute_name | varchar | NULL | 屬性名稱 |
attribute_detail | text | NULL | 屬性詳情(json格式) |
create_time | datetime | NULL | 創(chuàng)建時(shí)間 |
3:‘咖啡分類’(co_classify)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵ID |
type_name | varchar | NULL | 分類名稱(search) |
type_info | varchar | NULL | 分類簡(jiǎn)介 |
create_time | datetime | NULL | 創(chuàng)建時(shí)間 |
4:‘咖啡詳情’(co_detail)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵ID |
co_name | varchar | NULL | 咖啡名稱(search) |
co_img | varchar | NULL | 咖啡圖片(img) |
co_price | varchar | NULL | 價(jià)格 |
co_discount | varchar | NULL | 折扣 |
co_status | int | NULL | 狀態(tài)[0:上架,1:下架] |
co_info | text | NULL | 其他說(shuō)明 |
co_detail_img | varchar | NULL | 詳情圖片(img) |
co_type_id | bigint | NULL | 所屬分類ID(select) |
co_top | int | NULL | 首頁(yè)輪播[0:推薦,1:不推薦] |
co_click_num | int | NULL | 點(diǎn)擊數(shù) |
5:‘用戶最近瀏覽’(co_footprint)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 主鍵ID |
co_id | bigint | NULL | 咖啡ID |
user_id | bigint | NULL | 用戶ID |
create_time | datetime | NULL | 創(chuàng)建時(shí)間 |
6:‘訂單’(co_order)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 訂單ID |
user_id | bigint | NULL | 用戶ID |
co_id | bigint | NULL | 咖啡ID |
all_price | varchar | NULL | 總價(jià)格 |
count | int | NULL | 購(gòu)買數(shù)量 |
tag | varchar | NULL | 其他屬性標(biāo)簽 |
order_status | int | NULL | 訂單狀態(tài)[0:購(gòu)物車,1:下單成功,3:已完結(jié)] |
remark | varchar | NULL | 用戶備注 |
pay_price | varchar | NULL | 支付金額 |
create_time | datetime | NULL | 創(chuàng)建時(shí)間 |
pay_time | datetime | NULL | 支付時(shí)間 |
7:‘微信用戶’(co_wx_user)
字段名 | 類型 | 默認(rèn)值 | 列注釋 |
---|---|---|---|
id | bigint | NULL | 用戶序號(hào) |
sex | int | NULL | 性別 |
wechat_avatar | text | NULL | wx頭像(img) |
open_id | varchar | NULL | wx openID |
nick_name | varchar | NULL | wx昵稱(select) |
create_time | datetime | NULL | 創(chuàng)建時(shí)間 |
tel | varchar | NULL | 手機(jī)號(hào) |
五、功能模塊:
-
個(gè)人訂單&我的:在我的界面可以查看自己的個(gè)人信息和歷史訂單信息
-
系統(tǒng)首頁(yè):輪播圖推薦,今日推薦,最近瀏覽
-
菜單 :關(guān)鍵字搜索,種類區(qū)分
-
詳情查看:添加訂單,選擇訂單的各個(gè)維度的種類,如溫度糖度,大杯小杯等等
-
等待取餐的訂單:
-
管理員登錄:
-
咖啡詳情管理:
-
咖啡屬性管理:
-
微信用戶信息查看:
-
訂單管理:
-
咖啡分類管理:
六、代碼示例:
/**
生成驗(yàn)證碼*/
@GetMapping("/captchaImage")
public AjaxResult getCode(HttpServletResponse response) throws IOException
{AjaxResult ajax = AjaxResult.success();boolean captchaEnabled = configService.selectCaptchaEnabled();ajax.put("captchaEnabled", captchaEnabled);if (!captchaEnabled){return ajax;} // 保存驗(yàn)證碼信息String uuid = IdUtils.simpleUUID();String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;String capStr = null, code = null;BufferedImage image = null;// 生成驗(yàn)證碼String captchaType = RuoYiConfig.getCaptchaType();if ("math".equals(captchaType)){String capText = captchaProducerMath.createText();capStr = capText.substring(0, capText.lastIndexOf("@"));code = capText.substring(capText.lastIndexOf("@") + 1);image = captchaProducerMath.createImage(capStr);}else if ("char".equals(captchaType)){capStr = code = captchaProducer.createText();image = captchaProducer.createImage(capStr);}redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);// 轉(zhuǎn)換流信息寫出FastByteArrayOutputStream os = new FastByteArrayOutputStream();try{ImageIO.write(image, "jpg", os);}catch (IOException e){return AjaxResult.error(e.getMessage());}ajax.put("uuid", uuid);ajax.put("img", Base64.encode(os.toByteArray()));return ajax;}
/**
通用的本地文件上傳
@param multipartFile 文件對(duì)象@return 文件訪問(wèn)鏈接URL*/
@PostMapping("/file")
public SimpleResponse uploadImg(@RequestParam("file") MultipartFile file) {// 文件后綴String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);File savePathFile = new File(newTomcatFolder);if (!savePathFile.exists()) {// 若不存在該目錄,則創(chuàng)建目錄savePathFile.mkdir();}// 通過(guò)UUID生成唯一文件名String filename = UUID.randomUUID() + "." + suffix;try {// 將文件保存指定目錄file.transferTo(new File(newTomcatFolder + filename));} catch (Exception e) {e.printStackTrace();return SimpleResponse.error("保存文件異常");}// 返回訪問(wèn)鏈接return SimpleResponse.success(newTomcatHost + filename);
}
/**用戶登錄*/
@PostMapping("/login")
public ReturnMsg manageLogin(@RequestBody Map<String, String> param) {if (StrUtil.isEmpty(param.get("username")) || StrUtil.isEmpty(param.get("password"))) {return ReturnMsg.error("用戶名或密碼錯(cuò)誤!");}ManageDTO manageDTO = new ManageDTO();manageDTO.setUserName(param.get("username"));manageDTO.setPassWord(param.get("password"));QueryWrapper<ManageDTO> manageDTOQueryWrapper = new QueryWrapper<>(manageDTO);manageDTOQueryWrapper.last("limit 1");ManageDTO adminDTOS = manageService.getOne(manageDTOQueryWrapper);if (adminDTOS == null) return ReturnMsg.error("用戶名或密碼錯(cuò)誤!");Map<String, Object> map = new HashMap<>();map.put("avatar", StrUtil.isNotBlank(adminDTOS.getPhotoImg()) ? adminDTOS.getPhotoImg() : "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");map.put("introduction", adminDTOS.getName() + ",你好!");map.put("name", adminDTOS.getName());map.put("roles", Arrays.asList("admin"));map.put("type", adminDTOS.getStatus());Map<String, String> returnMap = new HashMap<>();String uuid = UUID.randomUUID().toString();returnMap.put("token", uuid);userInfoMap.put(uuid, JSON.toJSONString(map));return ReturnMsg.ok(returnMap);
}
七、項(xiàng)目總結(jié):
通過(guò)對(duì)基于JAVA+SpringBoot+VUE+微信小程序的前后端分離咖啡小程序的開發(fā),讓我深刻明白開發(fā)一個(gè)程序軟件需要經(jīng)歷的流程,當(dāng)確定要開發(fā)一個(gè)基于JAVA+SpringBoot+VUE+微信小程序的前后端分離咖啡小程序的程序時(shí),
我在開發(fā)期間,對(duì)其功能進(jìn)行合理的需求分析,然后才是程序軟件的功能的框架設(shè)計(jì),數(shù)據(jù)庫(kù)的實(shí)體與數(shù)據(jù)表設(shè)計(jì),
程序軟件的功能詳細(xì)界面實(shí)現(xiàn),以及程序的功能測(cè)試等進(jìn)行全方位的細(xì)致考慮,雖然在此過(guò)程中,各個(gè)環(huán)節(jié)都遇到了大大小小的困難,但是通過(guò)對(duì)這些問(wèn)題進(jìn)行反復(fù)的分析,深入的思考,
借助各種相關(guān)文獻(xiàn)資料提供的方法與解決思路成功解決面臨的各個(gè)問(wèn)題,最后成功的讓我開發(fā)的基于JAVA+SpringBoot+VUE+微信小程序的前后端分離咖啡小程序得以正常運(yùn)行。
基于JAVA+SpringBoot+VUE+微信小程序的前后端分離咖啡小程序在功能上面是基本可以滿足用戶對(duì)系統(tǒng)的操作,但是這個(gè)程序軟件也有許多方面是不足的,因此,在下一個(gè)時(shí)間階段,有幾點(diǎn)需要改進(jìn)的地方需要提出來(lái),它們分別是:
(1)操作頁(yè)面可以滿足用戶簡(jiǎn)易操作的要求,但是在頁(yè)面多樣化設(shè)計(jì)層面上需要把一些比較豐富的設(shè)計(jì)結(jié)構(gòu)考慮進(jìn)來(lái)。
(2)程序軟件的總體安全性能需要優(yōu)化,例如程序的退出安全性,以及程序的并發(fā)性等問(wèn)題都需要進(jìn)行安全性升級(jí),讓開發(fā)的基于JAVA+SpringBoot+VUE+微信小程序的前后端分離咖啡小程序中的相關(guān)網(wǎng)站更貼合。
(3)需要對(duì)程序的數(shù)據(jù)結(jié)構(gòu)方面,程序的代碼方面等進(jìn)行優(yōu)化,讓運(yùn)行起來(lái)的程序可以保持穩(wěn)定運(yùn)行,也讓程序能夠保證短時(shí)間內(nèi)處理相關(guān)事務(wù),節(jié)省處理事務(wù)的時(shí)間,提高事務(wù)處理的效率,
同時(shí)對(duì)服務(wù)器上資源占用的比例進(jìn)行降低。
基于JAVA+SpringBoot+VUE+微信小程序的前后端分離咖啡小程序的開發(fā)一方面是對(duì)自身專業(yè)知識(shí)技能進(jìn)行最終考核,另一方面也是讓自己學(xué)會(huì)獨(dú)立解決程序開發(fā)過(guò)程中所遇到的問(wèn)題,掌握將理論知識(shí)運(yùn)用于程序開發(fā)實(shí)踐的方法。
基于JAVA+SpringBoot+VUE+微信小程序的前后端分離咖啡小程序的開發(fā)最終目標(biāo)就是讓系統(tǒng)更具人性化,同時(shí)在邏輯設(shè)計(jì)上,讓系統(tǒng)能夠更加的嚴(yán)謹(jǐn)。
八、源碼獲取:
大家點(diǎn)贊、收藏、關(guān)注、評(píng)論啦 、查看👇🏻👇🏻👇🏻獲取項(xiàng)目下載鏈接,博主聯(lián)系方式👇🏻👇🏻👇🏻
鏈接點(diǎn)擊直達(dá):下載鏈接