免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      Demo購(gòu)物車

      新增sku到購(gòu)物車

      上次課我們開(kāi)發(fā)到了顯示商品詳情

      有點(diǎn)擊”添加到購(gòu)物車”的按鈕

      但是沒(méi)有反應(yīng),我們完成添加購(gòu)物車的功能就能實(shí)現(xiàn)這個(gè)效果了

      打開(kāi)mall-order-webapi模塊

      業(yè)務(wù)邏輯中一些基本的注意事項(xiàng)

      • * 判斷用戶是否登錄,只有登錄后才能將商品新增到購(gòu)物車
      • * 驗(yàn)證購(gòu)物車信息的完整性
      • * 業(yè)務(wù)邏輯層要判斷新增的sku是否在當(dāng)前用戶的購(gòu)物車表中已經(jīng)存在
      • * 如果不存在是新增sku流程
      • * 如果已經(jīng)存在,是修改數(shù)量的流程

      開(kāi)發(fā)持久

      持久層要按上面分析的業(yè)務(wù)邏輯,開(kāi)發(fā)多個(gè)方法

    1. 判斷當(dāng)前登錄用戶購(gòu)物車中是否包含指定skuid商品的方法
    2. 新增sku到購(gòu)物車表中
    3. 修改購(gòu)物車指定sku數(shù)量的方法
    4. mapper包創(chuàng)建OmsCartMapper接口,編寫代碼如下

      @Repositorypublic interface OmsCartMapper {// 判斷當(dāng)前用戶的購(gòu)物車列表中是否包含指定sku商品的方法OmsCart selectExistsCart(@Param(“userId”) Long userId,@Param(“skuId”) Long skuId);// 新增商品到購(gòu)物車表中void saveCart(OmsCart omsCart);// 修改指定購(gòu)物車商品的數(shù)量的方法void updateQuantityById(OmsCart omsCart);}

      對(duì)應(yīng)的Mapper.xml文件

      id,user_id,sku_id,title,main_picture,price,quantity,gmt_create,gmt_modifiedselectfromoms_cartwhereuser_id=#{userId}andsku_id=#{skuId}insert into oms_cart(user_id,sku_id,title,main_picture,price,quantity) values(#{userId},#{skuId},#{title},#{mainPicture},#{price},#{quantity})updateoms_cartsetquantity=#{quantity}whereid=#{id}

      開(kāi)發(fā)業(yè)務(wù)邏輯層

      創(chuàng)建OmsCartServiceImpl類實(shí)現(xiàn)IOmsCartService接口

      實(shí)現(xiàn)其中方法,先實(shí)現(xiàn)新增購(gòu)物車的方法即可

      需要注意,我們?cè)跇I(yè)務(wù)邏輯層中需要使用用戶的信息

      要單獨(dú)編寫一個(gè)方法獲取用戶信息,

      @Servicepublic class OmsCartServiceImpl implements IOmsCartService {@Autowiredprivate OmsCartMapper omsCartMapper;@Overridepublic void addCart(CartAddDTO cartDTO) {// 獲取當(dāng)前登錄用戶的userIdLong userId=getUserId();// 查詢這個(gè)userId的用戶是否已經(jīng)將指定的sku添加到購(gòu)物車OmsCart omsCart=omsCartMapper.selectExistsCart(userId,cartDTO.getSkuId());// 判斷查詢結(jié)果是否為nullif(omsCart!=null){// 不等于null,表示當(dāng)前用戶這個(gè)sku已經(jīng)添加在購(gòu)物車列表中// 我們需要做的就是修改它的數(shù)量,根據(jù)cartDTO對(duì)象的quantity屬性值添加omsCart.setQuantity(omsCart.getQuantity()+cartDTO.getQuantity());// 調(diào)用持久層方法修改數(shù)量omsCartMapper.updateQuantityById(omsCart);}else{// 如果omsCart是null 會(huì)運(yùn)行else代碼塊// 去完成購(gòu)物車對(duì)象的新增,先實(shí)例化OmsCart對(duì)象OmsCart newOmsCart=new OmsCart();// 將參數(shù)cartDTO的同名屬性賦值給newOmsCartBeanUtils.copyProperties(cartDTO,newOmsCart);// cartDTO對(duì)象中沒(méi)有userId屬性,需要單獨(dú)賦newOmsCart.setUserId(userId);// 執(zhí)行新增omsCartMapper.saveCart(newOmsCart);}}@Overridepublic JsonPage listCarts(Integer page, Integer pageSize) {return null;}@Overridepublic void removeCart(Long[] ids) {}@Overridepublic void removeAllCarts() {}@Overridepublic void removeUserCarts(OmsCart omsCart) {}@Overridepublic void updateQuantity(CartUpdateDTO cartUpdateDTO) {}// 業(yè)務(wù)邏輯層獲得用戶信息的方法,因?yàn)槎鄠€(gè)方法需要獲得用戶信息,所以單獨(dú)編寫一個(gè)方法// 這個(gè)方法的實(shí)現(xiàn)是SpringSecurity提供的登錄用戶的容器// 方法的目標(biāo)是獲得SpringSecurity用戶容器,從容器中獲得用戶信息public CsmallAuthenticationInfo getUserInfo(){// 獲得SpringSecurity容器對(duì)象UsernamePasswordAuthenticationToken authenticationToken=(UsernamePasswordAuthenticationToken)SecurityContextHolder.getContext().getAuthentication();// 判斷獲取的容器信息是否為空if(authenticationToken!=null){// 如果容器中有內(nèi)容,證明當(dāng)前容器中有登錄用戶信息// 我們獲取這個(gè)用戶信息并返回CsmallAuthenticationInfo csmallAuthenticationInfo=(CsmallAuthenticationInfo)authenticationToken.getCredentials();return csmallAuthenticationInfo;}throw new CoolSharkServiceException(ResponseCode.UNAUTHORIZED,”沒(méi)有登錄信息”);}// 業(yè)務(wù)邏輯層中大多數(shù)方法都是獲得用戶id,所以編寫一個(gè)返回用戶id的方法public Long getUserId(){return getUserInfo().getId();}}

      開(kāi)發(fā)控制層

      創(chuàng)建OmsCartController

      @RestController@RequestMapping(“/oms/cart”)@Api(tags = “購(gòu)物車管理模塊”)public class OmsCartController {@Autowiredprivate IOmsCartService omsCartService;// 新增購(gòu)物車信息的控制層方法@PostMapping(“/add”)@ApiOperation(“新增購(gòu)物車信息”)// 判斷當(dāng)前用戶是否具有普通用戶權(quán)限ROLE_user// sso模塊登錄時(shí),會(huì)在用戶的權(quán)限列表中添加ROLE_user權(quán)限@PreAuthorize(“hasRole(‘ROLE_user’)”)// cartAddDTO參數(shù)是需要經(jīng)過(guò)SpringValidation框架驗(yàn)證的// @Validated就是激活框架驗(yàn)證功能,如果cartAddDTO不滿足驗(yàn)證要求,會(huì)自動(dòng)運(yùn)行// 統(tǒng)一由異常處理類中的BingingException異常處理public JsonResult addCart(@Validated CartAddDTO cartAddDTO){omsCartService.addCart(cartAddDTO);return JsonResult.ok(“成功添加到購(gòu)物車”);}}

      先注意sso模塊application-test.yml的地址和端口號(hào)(密碼有兩個(gè))

      也要注意order模塊application-test.yml的地址和端口號(hào)

      都保證正確的前提下

      啟動(dòng) leaf passport order

      sso:10002

      order:10005

      先訪問(wèn)10002登錄獲得JWT 用戶名jackson密碼123456

      先登錄看到JWT 然后復(fù)制JWT

      轉(zhuǎn)到10005 order模塊 文檔管理->全局參數(shù)設(shè)置->添加參數(shù)

      參數(shù)名:Authorization

      參數(shù)值:Bearer [粘貼JWT]

      然后刷新當(dāng)前10005的界面

      然后進(jìn)行發(fā)送請(qǐng)求即可成功!

      javax.xml.bindjaxb-api2.3.0

      SpringSecurity驗(yàn)證規(guī)則

      SpringSecurity框架登錄后,一定會(huì)有一個(gè)權(quán)限列表

      在userDetails對(duì)象中

      我們登錄用戶的這個(gè)對(duì)象的值可能是

      {“authorities”:[“ROLE_user”],”id”:1,”userType”:”USER”,”username”:”jackson”}

      sso模塊前臺(tái)用戶登錄時(shí),會(huì)authorities屬性中添加ROLE_user權(quán)限

      而后臺(tái)管理用戶登錄時(shí)會(huì)向authorities屬性中添加下面屬性

      [“/pms/product/read”,”/pms/product/update”,”/pms/product/delete”]

      所以想要在控制器運(yùn)行前判斷權(quán)限時(shí)就可以使用下面的寫法

      @PreAuthorize(“hasAuthority(‘ROLE_user’)”)

      hasRole判斷是專用于判斷當(dāng)前用戶角色的指令

      hasRole會(huì)自動(dòng)在我們判斷的內(nèi)容前添加ROLE_

      @PreAuthorize(“hasRole(‘ROLE_user’)”)

      開(kāi)發(fā)查詢購(gòu)物車功能

      開(kāi)發(fā)持久層

      OmsCartMapper添加方法如下

      // 根據(jù)當(dāng)前用戶id查詢購(gòu)物車列表List selectCartsByUserId(Long userId);

      OmsCartMapper.xml添加對(duì)應(yīng)內(nèi)容

      selectfromoms_cartwhereuser_id=#{id}

      開(kāi)發(fā)業(yè)務(wù)邏輯層

      OmsCartServiceImpl業(yè)務(wù)實(shí)現(xiàn)

      返回值支持分頁(yè)結(jié)果,按分頁(yè)條件查詢

      // 根據(jù)用戶id分頁(yè)查詢當(dāng)前用戶的購(gòu)物車列表@Overridepublic JsonPage listCarts(Integer page, Integer pageSize) {// 獲得用戶idLong userId=getUserId();// 執(zhí)行查詢前設(shè)置分頁(yè)條件PageHelper.startPage(page,pageSize);// 執(zhí)行分頁(yè)查詢List list=omsCartMapper.selectCartsByUserId(userId);// 實(shí)例化PageInfo對(duì)象獲得分頁(yè)信息后將它轉(zhuǎn)換為JsonPage返回return JsonPage.restPage(new PageInfo(list));}

      下面開(kāi)發(fā)控制層,調(diào)用方法進(jìn)行測(cè)試

      OmsCartController添加方法如下

      // 分頁(yè)查詢當(dāng)前用戶購(gòu)物車中的信息@GetMapping(“/list”)@ApiOperation(“分頁(yè)查詢當(dāng)前用戶購(gòu)物車中的信息”)@ApiImplicitParams({@ApiImplicitParam(value = “頁(yè)碼”,name = “page”,dataType = “int”,example = “1”),@ApiImplicitParam(value = “每頁(yè)條數(shù)”,name = “pageSize”,dataType = “int”,example = “5”)}) @PreAuthorize(“hasRole(‘ROLE_user’)”)public JsonResult listCartByPage( // 當(dāng)控制器參數(shù)可能為空,當(dāng)空時(shí),我們要給它賦默認(rèn)值時(shí),可以用下面的格式 @RequestParam(required = false,defaultValue = WebConsts.DEFAULT_PAGE) Integer page, @RequestParam(required = false,defaultValue = WebConsts.DEFAULT_PAGE_SIZE)Integer pageSize){ // 控制層調(diào)用業(yè)務(wù)邏輯層代碼 JsonPage jsonPage=omsCartService.listCarts(page,pageSize); return JsonResult.ok(jsonPage);}

      啟動(dòng)nacosseata

      啟動(dòng)leafssoorder模塊

      測(cè)試http://localhost:10005/doc.html

      刪除清空購(gòu)物車

      刪除購(gòu)物車的持久層

      我們刪除購(gòu)物車的功能支持同時(shí)刪除一個(gè)或多個(gè)購(gòu)物車中的商品

      基本思路就是將一個(gè)要?jiǎng)h除的購(gòu)物車商品的id數(shù)組傳入到Mapper中進(jìn)行刪除

      在OmsCartMapper接口中添加放方法

      // 根據(jù)購(gòu)物車的id刪除商品(支持刪除多個(gè)商品)int deleteCartsByIds(Long[] ids);

      對(duì)應(yīng)的mapper.xml

      delete fromoms_cartwhereid in#{id}

      刪除購(gòu)物車的業(yè)務(wù)邏輯層

      OmsCartServiceImpl添加方法

      // 按ids數(shù)組中的id值刪除cart表中信息@Overridepublic void removeCart(Long[] ids) {// 刪除是包含返回值的int rows=omsCartMapper.deleteCartsByIds(ids);if(rows==0){throw new CoolSharkServiceException(ResponseCode.NOT_FOUND,”購(gòu)物車中沒(méi)有您要?jiǎng)h除的商品”);}}

      開(kāi)發(fā)控制層代碼

      OmsCartController

      @PostMapping(“/delete”)@ApiOperation(“根據(jù)用戶選擇的購(gòu)物車商品刪除(支持批量)”)@ApiImplicitParam(value = “刪除購(gòu)物車的id”,name=”ids”,required = true,dataType = “array”)@PreAuthorize(“hasRole(‘ROLE_user’)”)public JsonResult removeCartsByIds(Long[] ids){omsCartService.removeCart(ids);return JsonResult.ok();}

      開(kāi)發(fā)清空當(dāng)前登錄用戶購(gòu)物車的功能

      delete fromoms_cartwhereuser_id=#{userId}@Overridepublic void removeAllCarts() {}

      清空購(gòu)物車功能

      Mapper接口

      // 刪除當(dāng)前用戶購(gòu)物車中所有內(nèi)容int deleteCartsByUserId(Long userId);

      mapper.xml

      delete fromoms_cartwhereuser_id=#{userId}

      OmsCartServiceImpl

      // 清空當(dāng)前登錄用戶購(gòu)物車@Overridepublic void removeAllCarts() {Long userId=getUserId();int rows=omsCartMapper.deleteCartsByUserId(userId);if(rows==0){throw new CoolSharkServiceException(ResponseCode.NOT_FOUND,”您的購(gòu)物車中沒(méi)有商品”);}}

      OmsCartController

      // 根據(jù)用戶id清空購(gòu)物車@PostMapping(“/delete/all”)@ApiOperation(“根據(jù)用戶id清空購(gòu)物車”)@PreAuthorize(“hasRole(‘ROLE_user’)”)public JsonResult removeCartsByUserId(){omsCartService.removeAllCarts();;return JsonResult.ok(“購(gòu)物車已清空”);}

      修改購(gòu)物車商品數(shù)量

      開(kāi)發(fā)業(yè)務(wù)邏輯層

      因?yàn)榍懊嫖覀円呀?jīng)完成了修改購(gòu)物車數(shù)量的持久層,所以不需要再編寫了,直接從業(yè)務(wù)層開(kāi)始

      // 修改購(gòu)物車商品數(shù)量的方法@Overridepublic void updateQuantity(CartUpdateDTO cartUpdateDTO) {// 持久層中已經(jīng)包含了修改數(shù)量的方法,但是參數(shù)是OmsCart// 將本方法的cartUpdateDTO參數(shù)值賦值給OmsCart再調(diào)用持久層方法即可OmsCart omsCart=new OmsCart();BeanUtils.copyProperties(cartUpdateDTO,omsCart);// 調(diào)用持久層實(shí)施修改omsCartMapper.updateQuantityById(omsCart);}

      控制層OmsCartController

      // 修改購(gòu)物車數(shù)量@PostMapping(“/update/quantity”)@ApiOperation(“修改購(gòu)物車數(shù)量”)@PreAuthorize(“hasRole(‘ROLE_user’)”)public JsonResult updateQuantity(@Validated CartUpdateDTO cartUpdateDTO){omsCartService.updateQuantity(cartUpdateDTO);return JsonResult.ok(“修改完成”);}

      重啟order測(cè)試清空和修改購(gòu)物車數(shù)量的功能

      學(xué)習(xí)記錄,如有侵權(quán)請(qǐng)聯(lián)系刪除

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
      用戶投稿
      上一篇 2022年7月18日 00:13
      下一篇 2022年7月18日 00:13

      相關(guān)推薦

      • ios手游模擬器(手游模擬器ios)

        本文主要講的是ios手游模擬器,以及和手游模擬器ios相關(guān)的知識(shí),如果覺(jué)得本文對(duì)您有所幫助,不要忘了將本文分享給朋友。 哪個(gè)iOS模擬器能多開(kāi)手游賬號(hào)?可以推薦個(gè)好用的模擬器給我嗎…

        2022年11月27日
      • 分享4條發(fā)微商朋友圈的方法(微商朋友圈應(yīng)該怎么發(fā))

        對(duì)于微商朋友來(lái)說(shuō),朋友圈的重要性不言而喻了。 那么微商的朋友圈到底該怎么發(fā)呢? 為什么同樣是經(jīng)營(yíng)一個(gè)朋友圈,有的微商看起來(lái)逼格滿滿,實(shí)際效果也不錯(cuò);而有的卻動(dòng)都不動(dòng)就被屏蔽甚至拉黑…

        2022年11月27日
      • 短視頻策劃內(nèi)容的3個(gè)要點(diǎn)(短視頻策劃內(nèi)容怎么做)

        短視頻在制作時(shí),內(nèi)容框架非常重要。如果直奔主題,然后結(jié)束,聚卓告訴你,這樣的短視頻已經(jīng)過(guò)時(shí)了?,F(xiàn)在的短視頻需要框架的,但不是任何框架,它需要一種易于理解和消化的框架。而且,現(xiàn)在大多…

        2022年11月27日
      • 拍錯(cuò)了拒收快遞運(yùn)費(fèi)誰(shuí)出(淘寶退貨運(yùn)費(fèi)誰(shuí)出)

        很多人在逛淘寶店的時(shí)候覺(jué)得寶貝圖片看著不錯(cuò)就買回來(lái),結(jié)果收貨后發(fā)現(xiàn)可能不太合適就想退貨了。那么,淘寶退貨的快遞費(fèi)用應(yīng)該由誰(shuí)來(lái)出呢?產(chǎn)生的快遞費(fèi)用應(yīng)該找誰(shuí)來(lái)負(fù)責(zé)呢? 我們知道,根據(jù)《…

        2022年11月27日
      • 美團(tuán)第三季度實(shí)現(xiàn)營(yíng)收626億元,即時(shí)配送訂單量增至50億筆

        新京報(bào)訊(記者秦勝南)11月25日,美團(tuán)發(fā)布業(yè)績(jī)公告顯示,第三季度營(yíng)收為626億元,較去年同比增長(zhǎng)28.2%,凈利潤(rùn)為12.2億元。第三季度,美團(tuán)即時(shí)配送訂單數(shù)增長(zhǎng)至50億筆。截至…

        2022年11月27日
      • 存儲(chǔ)過(guò)程語(yǔ)法(sql server存儲(chǔ)過(guò)程語(yǔ)法)

        今天小編給各位分享存儲(chǔ)過(guò)程語(yǔ)法的知識(shí),其中也會(huì)對(duì)sql server存儲(chǔ)過(guò)程語(yǔ)法進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧! oracle存儲(chǔ)過(guò)程基本語(yǔ)法…

        2022年11月26日
      • 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文(計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文七千字)

        今天小編給各位分享計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文的知識(shí),其中也會(huì)對(duì)計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)論文七千字進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧! 計(jì)算機(jī)網(wǎng)絡(luò)方面的論文3000字…

        2022年11月26日
      • 淘寶直播庫(kù)存哪里拿貨(淘寶哪里看庫(kù)存)

        近年倆直播帶貨越來(lái)越火爆,抖音、淘寶、拼多多等平臺(tái)都有直播帶貨功能,其中淘寶直播時(shí)主流帶貨平臺(tái),一些小伙伴也紛紛加入,但是作為新手不知道淘寶直播庫(kù)存哪里拿貨?下面小編為大家?guī)?lái)淘寶…

        2022年11月25日
      • 抖音帶貨傭金能拿多少(抖音帶貨傭金是真的嗎)

        現(xiàn)在大家在涮抖音的時(shí)候都會(huì)看到一些商家和主播在上面直播帶貨,只要你粉絲夠多,就會(huì)有商家找你直播帶貨,一些小伙伴也想加入直播帶貨,那么抖音帶貨傭金能拿多少?下面小編為大家?guī)?lái)抖音帶貨…

        2022年11月25日
      • 個(gè)人怎么做抖音帶貨(個(gè)人做抖音帶貨能賺錢嗎)

        抖音如今是大家很熟悉的短視頻平臺(tái),不過(guò)現(xiàn)在的抖音卻不只是短視頻那么簡(jiǎn)單,它的功能非常豐富,其中一個(gè)就是可以帶貨,相信很多小伙伴都有在抖音上買過(guò)東西,抖音如今的變現(xiàn)能力也是不容小覷的…

        2022年11月25日

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息