買(mǎi)家商品api
標(biāo)簽(空格分隔): java springboot wechat
Dao層設(shè)計(jì)與開(kāi)發(fā)
- 實(shí)體類(lèi)創(chuàng)建,與類(lèi)目表一致,字段與數(shù)據(jù)庫(kù)對(duì)應(yīng)。
- 創(chuàng)建對(duì)應(yīng)的映射類(lèi)。這里我們會(huì)根據(jù)其中狀態(tài)進(jìn)行查詢(xún)。
/** 根據(jù)狀態(tài)查詢(xún). */
List<ProductInfo> findByProductStatus(Integer productStatus);
Service層設(shè)計(jì)與開(kāi)發(fā)
- 關(guān)于業(yè)務(wù)層,這里就要考慮賣(mài)家和買(mǎi)家的業(yè)務(wù)了,其中買(mǎi)家可以看到上架的商品,訂單庫(kù)存增刪,買(mǎi)家后臺(tái)管理中分頁(yè)查詢(xún)所有數(shù)據(jù),商品信息添加。
- 狀態(tài)查詢(xún)我們用‘0’代表上架和‘1’代表下架。這里采用枚舉的方式:
@Getter
public enum ProductInfoEnum {
UP(0,"上架"),
DOWN(1,"下架")
;
private Integer code;
private String name;
ProductInfoEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
}
- 其中關(guān)于分頁(yè)查詢(xún),采用Page<>類(lèi)。其中傳值為Pageable,具體通過(guò)PageRequest(第幾頁(yè),每頁(yè)顯示數(shù));
public Page<ProductInfo> findAll(Pageable pageable) {
return repository.findAll(pageable);
}
@Test
public void findAll() throws Exception {
PageRequest request = new PageRequest(0,2);
Page<ProductInfo> result = productInfoService.findAll(request);
log.info("total={}",result.getTotalElements());
Assert.assertNotEquals(0,result.getTotalElements());
}
Controller層設(shè)計(jì)與開(kāi)發(fā)
- 買(mǎi)家商品Api,Api大家肯定都知道封裝數(shù)據(jù)。這里我們采用封裝成Jason格式。
{
code: 0 ,
msg :"success",
data:[
{
name:"熱銷(xiāo)榜",
type:0,
foods:[
{
id:"123456",
name:"手抓餅",
price:8,
description:"手抓餅原名蔥抓餅,抓起就吃。",
icon:"http://xxxxx.jpg"
},
{
id:"123457",
name:"酸梅汁",
price:5,
description:"開(kāi)胃飲料",
icon:"http://xxxxx.jpg"
}
]
},
{
name:"男生最?lèi)?ài)",
type:1,
foods:[
{
id:"123458",
name:"小黃魚(yú)",
price:10,
description:"精炸小黃魚(yú),香脆爽口",
icon:"http://xxxxx.jpg"
}
]
}
]
}
- 這里只是示例,具體按公司要求來(lái),封裝數(shù)據(jù)這塊是前后臺(tái)交互,前端與后端人員需先意見(jiàn)一致。
- 買(mǎi)家端商品頁(yè)面展示,這里邏輯實(shí)現(xiàn):
@RequestMapping(value="/list")
public ResultVo list(){
//查詢(xún)上架商品(數(shù)據(jù)庫(kù)查詢(xún)采用一次性查詢(xún))
List<ProductInfo> productInfoList = productInfoService.findUpAll();
//查詢(xún)類(lèi)目
//傳統(tǒng)方法
// List<Integer> categoryList = new ArrayList<>();
// for(ProductInfo productInfo:productInfoList){
// categoryList.add(productInfo.getCategoryType());
// }
//java8 lambda
List<Integer> categoryList = productInfoList.stream().
map(e -> e.getCategoryType()).collect(Collectors.toList());
List<ProductCategory> ProductCategoryList =
productCategoryService.findByCategoryTypeIn(categoryList);
//數(shù)據(jù)拼裝
List<ProductVO> productVOoList = new ArrayList<>();
//類(lèi)目 封裝
for(ProductCategory productCategory : ProductCategoryList){
ProductVO productVo = new ProductVO();
productVo.setCategoryType(productCategory.getCategoryType());
productVo.setCategryName(productCategory.getCategoryName());
//商品信息封裝
List<ProductInfoVO> productInfoVOList = new ArrayList<>();
for(ProductInfo productInfo : productInfoList){
if(productVo.getCategoryType().equals(productInfo.getCategoryType())){
ProductInfoVO productInfoVO = new ProductInfoVO();
BeanUtils.copyProperties(productInfo,productInfoVO);
productInfoVOList.add(productInfoVO);
}
}
productVo.setProductInfoVOList(productInfoVOList);
productVOoList.add(productVo);
}
return ResultVOUtil.success(productVOoList);
}
- 提示:
- 數(shù)據(jù)封裝只封裝Api中需要的值,所以這里我們需要建立新的實(shí)體類(lèi)。
- 數(shù)據(jù)查詢(xún),我們遵循一次查詢(xún)內(nèi)容,后做循環(huán)處理結(jié)果,保證程序高效性。
- java8特性中的lambda公式。深入鉆研java8新特性點(diǎn)擊這里。
- chrome中添加JSONview插件獲取與安裝點(diǎn)擊這里。
- 前端交互,訪問(wèn)虛擬機(jī)的ip地址,此時(shí)會(huì)彈出請(qǐng)微信端訪問(wèn),這里我們通過(guò)添加修改緩存方式訪問(wèn)頁(yè)面過(guò)濾。
/** url:虛擬機(jī)IP/#/order */
/** F12開(kāi)發(fā)者模式,在console中輸入*/
document.cookie='openid=abc123';
/** 此時(shí)在輸入虛擬機(jī)地址直接可以訪問(wèn) */
- 接下來(lái)就是虛擬機(jī)了(前后端數(shù)據(jù)對(duì)接),原視頻UP主雖然所有的虛擬機(jī)設(shè)置都弄好了,但對(duì)于我這個(gè)虛擬機(jī)小白來(lái)說(shuō),基本的命令都不知道。這里各種坑,自己一點(diǎn)點(diǎn)給填上了,關(guān)于centos中dos基礎(chǔ)入門(mén),點(diǎn)擊這里。
vim /usr/local/nginx/conf/nginx.conf
/** 按I右下角會(huì)出現(xiàn)Insert,此時(shí)開(kāi)啟編輯狀態(tài) */
/** 更改proy_pass 127.0.0.1為項(xiàng)目運(yùn)行的IP地址(本機(jī)IP) */
/** 反向代理nginx后期講解 */
/** 按esc退出編輯狀態(tài) */
/** 輸入:wq 保存并退出*/
nginx -s reload
/** 重啟nginx */
- 網(wǎng)頁(yè)訪問(wèn)虛擬機(jī)地址,會(huì)返現(xiàn)數(shù)據(jù)對(duì)接上,這里又是一個(gè)坑,504錯(cuò)誤,找來(lái)找去,最后是防火強(qiáng)未關(guān),請(qǐng)求不到本機(jī)。
- 最后一個(gè)就是關(guān)于微信官方采用域名對(duì)接,虛擬機(jī)中修改nginx中設(shè)置域名。
vim /usr/local/nginx/conf/nginx.conf
/** 按I右下角會(huì)出現(xiàn)Insert,此時(shí)開(kāi)啟編輯狀態(tài) */
/** 更改server_name 127.0.0.1為sell.com */
/** 按esc退出編輯狀態(tài) */
/** 輸入:wq 保存并退出*/
nginx -s reload
/** 重啟nginx */
- 本機(jī)設(shè)置輸入指定sell.com會(huì)跳轉(zhuǎn)虛擬機(jī)的ip地址。訪問(wèn)路徑C:\WINDOWS\system32\drivers\etc 管理員權(quán)限在最后一行添加 虛擬機(jī)IP sell.com 保存。詳細(xì)教程點(diǎn)擊這里。
- 原視頻UP主慕課網(wǎng)(SpringBoot企業(yè)級(jí)微信點(diǎn)餐項(xiàng)目)
- 本博客撰寫(xiě)人: XiaoJinZi 轉(zhuǎn)載請(qǐng)注明出處
- 學(xué)生能力有限 附上郵箱: 986209501@qq.com 不足以及誤處請(qǐng)大佬指責(zé)