版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
模塊二綜合實戰(zhàn)應(yīng)用模塊《電商web云平臺開發(fā)》思維導(dǎo)圖商城前臺開發(fā)商城后臺開發(fā)1目錄CONTENTS2項目六
商城前臺開發(fā)項目背景在全渠道數(shù)字化運營項目中,商城前臺是面向用戶端最重要的組成部分,而商城前臺的服務(wù)端業(yè)務(wù)邏輯用以支撐整個商城用戶端的運作。本項目以一個商城項目為例詳細講解Java技術(shù)的綜合開發(fā)應(yīng)用。該商城叫“鄉(xiāng)農(nóng)甄商城”,是一個基于扶農(nóng)助農(nóng)需求為扶貧鄉(xiāng)縣搭建的一個線上助銷平臺,為農(nóng)戶拓寬銷售渠道。扶農(nóng)助農(nóng)線上助銷平臺拓展銷售渠道鄉(xiāng)農(nóng)甄商城本章節(jié)主要介紹如何對商城的前臺進行開發(fā),根據(jù)業(yè)務(wù)邏輯的不同可以將前臺開發(fā)分為若干模塊,然后從數(shù)據(jù)表格的建立、實體類的創(chuàng)建、Mapper接口和Mapper映射文件的編寫、Service接口及實現(xiàn)的編寫、Controller類的編寫、等方面一步步進行編碼。研究內(nèi)容前臺用戶的注冊/登錄功能前臺商品列表展示及詳情頁前臺購物車前臺訂單管理個人信息管理學(xué)習(xí)目標(biāo)1.了解Java程序語言;2.理解SSM框架下開發(fā)功能的流程;3.認(rèn)識MySQL數(shù)據(jù)庫及SQL語句;4.理解前端各個功能的實現(xiàn)步驟。知識目標(biāo)1.能夠獨立完成前臺用戶的注冊/登錄功能開發(fā);2.能夠獨立完成前臺商品列表及展示頁功能開發(fā);3.能夠獨立完成前臺購物車相關(guān)功能開發(fā);4.能夠獨立完成前臺訂單管理功能開發(fā);5.能夠獨立完成個人信息管理功能開發(fā)。技能目標(biāo)1.通過商城項目前臺的開發(fā),讓學(xué)生了解商城系統(tǒng)的業(yè)務(wù)邏輯與開發(fā)要求。素養(yǎng)目標(biāo)任務(wù)四前臺訂單管理實施準(zhǔn)備前臺訂單管理主要是前臺用戶對訂單的操作,主要功能有用戶購買時生成訂單確認(rèn)信息、按照狀態(tài)獲取用戶的訂單列表、根據(jù)ID獲取訂單詳情、用戶取消訂單、用戶確認(rèn)收貨、用戶刪除訂單等。請同學(xué)們打開上一任務(wù)完成的項目,本任務(wù)將在此基礎(chǔ)上完成。任務(wù)實施與分析步驟1:數(shù)據(jù)庫創(chuàng)建訂單表CREATETABLE`oms_order`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'訂單id',`member_id`bigint(20)NOTNULL,`coupon_id`bigint(20)DEFAULTNULL,`order_sn`varchar(64)DEFAULTNULLCOMMENT'訂單編號',`create_time`datetimeDEFAULTNULLCOMMENT'提交時間',`member_username`varchar(64)DEFAULTNULLCOMMENT'用戶帳號',`total_amount`decimal(10,2)DEFAULTNULLCOMMENT'訂單總金額',`pay_amount`decimal(10,2)DEFAULTNULLCOMMENT'應(yīng)付金額(實際支付金額)',`freight_amount`decimal(10,2)DEFAULTNULLCOMMENT'運費金額',
……
在數(shù)據(jù)庫中創(chuàng)建訂單表,并設(shè)置字段及字段名稱任務(wù)實施與分析步驟2:創(chuàng)建實體類在com.framework.fundation.domain包下創(chuàng)建OmsOrder實體類,其屬性與數(shù)據(jù)表中的字段對應(yīng)@JsonIgnoreProperties(value="handler")publicclassOmsOrderimplementsSerializable{ privatestaticfinallongserialVersionUID=1L; @ApiModelProperty(value="訂單id") privateLongid; privateLongmemberId; privateLongcouponId; @ApiModelProperty(value="訂單編號") privateStringorderSn; @ApiModelProperty(value="提交時間") privateDatecreateTime; @ApiModelProperty(value="用戶帳號") privateStringmemberUsername; @ApiModelProperty(value="訂單總金額") privateBigDecimaltotalAmount;……任務(wù)實施與分析在OmsPortalOrderController類中創(chuàng)建生成訂單確認(rèn)信息方法confirmOrder,代碼如下: @SuppressWarnings("unchecked") @ApiOperation("生成訂單確認(rèn)信息") @RequestMapping(value="/confirmOrder",method=RequestMethod.POST) @ResponseBody publicCommonResult<Map<String,Object>>confirmOrder(@RequestBodyJSONObjectdata){ LongaddressId=data.getLong("addressId");……步驟3:創(chuàng)建生成訂單確認(rèn)信息方法任務(wù)實施與分析步驟4:定義confirmOrder方法/***根據(jù)提交信息生成訂單*/@TransactionalpublicMap<String,Object>confirmOrder(LongmemberId,LongaddressId,IntegerpayType,StringcouponId,IntegeruseIntegration,List<OmsOrderItem>orderItemList,List<Long>cartsIds,IntegerorderType,IntegersourceType);在OmsOrderService接口中定義OmsPortalOrderController類中調(diào)用的confirmOrder方法任務(wù)實施與分析步驟5:實現(xiàn)confirmOrder方法@Override publicMap<String,Object>confirmOrder(LongmemberId,LongaddressId,IntegerpayType,StringcouponId,IntegeruseIntegration,List<OmsOrderItem>orderItemList,List<Long>cartIds,IntegerorderType,IntegersourceType){ //TODOAuto-generatedmethodstub intresult=-1; Map<String,Object>result_new=newHashMap<String,Object>(); //先判斷商品庫存是否足夠 if(null!=orderItemList&&orderItemList.size()>0){ for(inti=0;i<orderItemList.size();i++){……以下代碼用來判斷商品庫存是否足夠:任務(wù)實施與分析步驟5:實現(xiàn)confirmOrder方法 if(result!=-2){ //庫存足減庫存 for(inti=0;i<orderItemList.size();i++){ OmsOrderItemom=(OmsOrderItem)orderItemList.get(i); PmsProductproduct=productMapper.get(om.getProductId().intValue()); if(product!=null){ product.setStock(product.getStock()-om.getProductQuantity()); productMapper.update(product); } //sku庫存足減庫存
……以下代碼用來減少商品庫存和sku庫存:任務(wù)實施與分析步驟5:實現(xiàn)confirmOrder方法 UmsMembermember=memberMapper.get(memberIValue()); //根據(jù)商品合計、運費計算應(yīng)付金額 OmsOrderorder=newOmsOrder(); order.setTotalAmount(calcOrderTotalAmount(orderItemList)); order.setFreightAmount(newBigDecimal(0)); //轉(zhuǎn)化為訂單信息并插入數(shù)據(jù)庫 order.setMemberId(member.getId()); order.setCreateTime(newDate()); order.setMemberUsername(member.getUsername()); //支付方式:0->未支付;1->支付寶;2->微信 order.setPayType(payType);
……以下代碼用來生成訂單信息:任務(wù)實施與分析步驟5:實現(xiàn)confirmOrder方法 /****************針對商品促銷活動開始****************/ //商品促銷信息分解 List<OmsOrderItem>promotionOrderItemList=handlePromotionAmount(orderItemList); order.setPromotionAmount(calcPromotionAmount(promotionOrderItemList)); /****************針對商品促銷活動結(jié)束****************/ /****************訂單優(yōu)惠券開始****************/ //優(yōu)惠券優(yōu)惠金額 //支付金額減去優(yōu)惠券 //BigDecimalpayAmout=newBigDecimal(0);
……以下代碼用來處理訂單中的優(yōu)惠券信息:任務(wù)實施與分析 /*****************積分分解開始*********************/ //判斷是否使用積分 if(!CommUtil.isNotNull(useIntegration)||useIntegration.equals(0)){ //不使用積分 order.setIntegrationAmount(newBigDecimal(0));……以上代碼用來處理用戶的積分信息步驟5:實現(xiàn)confirmOrder方法任務(wù)實施與分析 //設(shè)置訂單實付金額 order.setPayAmount(calcPayAmount(order)); //計算贈送積分 order.setIntegration(calcGifIntegration(promotionOrderItemList)); //計算贈送成長值 order.setGrowth(calcGiftGrowth(promotionOrderItemList)); //插入order表和order_item表 omsOrderMapper.insert(order); //改變用戶積分值 if(useIntegration>0){
……以上代碼用來改變用戶原來的積分,清楚購物車中相關(guān)商品信息步驟5:實現(xiàn)confirmOrder方法任務(wù)實施與分析在OmsOrderController類編寫按狀態(tài)分頁獲取用戶訂單列表方法list@ApiOperation("按狀態(tài)分頁獲取用戶訂單列表")@ApiImplicitParam(name="status",value="訂單狀態(tài):-1->全部;0->待付款;1->待發(fā)貨;2->已發(fā)貨;3->已完成;4->已關(guān)閉",defaultValue="-1",allowableValues="-1,0,1,2,3,4",paramType="query",dataType="int")@RequestMapping(value="/list",method=RequestMethod.GET)@ResponseBodypublicCommonResult<CommonPage<OmsOrder>>list(@RequestParamIntegerstatus,@RequestParamLongmemberId, @RequestParam(required=false,defaultValue="1")IntegerpageNum, @RequestParam(required=false,defaultValue="5")IntegerpageSize){ List<OmsOrder>orderList=orderService.list(status,pageNum,pageSize,memberId); returnCommonResult.success(CommonPage.restPage(orderList));} 步驟6:編寫按狀態(tài)分頁獲取用戶訂單列表方法任務(wù)實施與分析步驟7:定義list方法在OmsOrderService接口中定義OmsOrderController類中調(diào)用的list方法/***分頁獲取用戶訂單*/List<OmsOrder>list(Integerstatus,IntegerpageNum,IntegerpageSize,LongmemberId);任務(wù)實施與分析步驟8:實現(xiàn)list方法@OverridepublicList<OmsOrder>list(Integerstatus,IntegerpageNum,IntegerpageSize,LongmemberId){ if(status==-1){ status=null; } PageHelper.startPage(pageNum,pageSize); Map<String,Object>params=newHashMap<String,Object>(); params.put("deleteStatus",0);……omsOrderMapper.getOrderByParams(params):獲取訂單列表信息,參數(shù)params對象包括刪除狀態(tài)和用戶id任務(wù)實施與分析步驟9:編寫根據(jù)ID獲取訂單詳情方法步驟10:定義getDetail方法@ApiOperation("根據(jù)ID獲取訂單詳情")@RequestMapping(value="/detail/{orderId}",method=RequestMethod.GET)@ResponseBodypublicCommonResult<OmsOrder>detail(@PathVariableLongorderId){ OmsOrderorderDetail=orderService.getDetail(orderId); returnCommonResult.success(orderDetail);}/***根據(jù)訂單ID獲取訂單詳情*/publicOmsOrdergetDetail(Longid);任務(wù)實施與分析步驟11:實現(xiàn)getDetail方法AB在其中實現(xiàn)OmsOrderService接口中定義的getDetail方法創(chuàng)建OmsOrderServiceImpl類@OverridepublicOmsOrdergetDetail(Longid){ //TODOAuto-generatedmethodstub returnomsOrderMapper.getDetail(id);}代碼如下:任務(wù)實施與分析步驟12:編寫用戶取消訂單方法在OmsOrderController類中編寫用戶取消訂單方法cancelUserOrder@ApiOperation("用戶取消訂單")@RequestMapping(value="/cancelUserOrder",method=RequestMethod.POST)@ResponseBodypublicCommonResult<Integer>cancelUserOrder(LongorderId){ intcount=orderService.cancelOrder(orderId); if(count>0){……orderService.cancelOrder(orderId):調(diào)用orderService中取消訂單的業(yè)務(wù)方法任務(wù)實施與分析步驟13:定義cancelOrder方法在OmsOrderService接口中定義OmsOrderController類中調(diào)用的cancelOrder方法@TransactionalintcancelOrder(LongorderId);任務(wù)實施與分析步驟14:實現(xiàn)cancelOrder接口omsOrderMapper.update(cancelOrder):調(diào)用omsOrderMapper接口中的update方法,修改訂單狀態(tài)為取消omsOrderMapper.selectParam(params):根據(jù)條件查詢訂單memberService.updateIntegration(cancelOrder.getMemberId(),cancelOrder.getUseIntegration(),0):返還用戶使用的積分任務(wù)實施與分析在OmsOrderServiceImpl類中實現(xiàn)OmsOrderService接口中定義的cancelOrder方法@OverridepublicintcancelOrder(LongorderId){ //查詢未付款的取消訂單 intresult=-1; Map<String,Object>params=newHashMap<String,Object>(); params.put("id",orderId); params.put("status",0);
……步驟14:實現(xiàn)cancelOrder接口任務(wù)實施與分析步驟15:編寫用戶確認(rèn)收貨方法@ApiOperation("用戶確認(rèn)收貨")@RequestMapping(value="/confirmReceiveOrder",method=RequestMethod.POST)@ResponseBodypublicCommonResult<Integer>confirmReceiveOrder(LongorderId){ intcount=orderService.confirmReceiveOrder(orderId); if(count>0){ returnCommonResult.success(count,"操作成功"); }else{ returnCommonResult.success(count,"操作失敗"); }}在OmsOrderController類中編寫用戶確認(rèn)收貨方法confirmReceiveOrder任務(wù)實施與分析步驟16:定義confirmReceiveOrder方法/***確認(rèn)收貨*/intconfirmReceiveOrder(LongorderId);步驟17:實現(xiàn)confirmReceiveOrder方法@OverridepublicintconfirmReceiveOrder(LongorderId){ //TODOAuto-generatedmethodstub Map<String,Object>params=newHashMap<String,Object>();
……任務(wù)實施與分析步驟18:編寫用戶刪除訂單方法@ApiOperation("用戶刪除訂單")@RequestMapping(value="/deleteOrder",method=RequestMethod.POST)@ResponseBodypublicCommonResult<Integer>deleteOrder(LongorderId){ intcount=orderService.deleteOrder(orderId); if(count>0){ returnCommonResult.success(count,"操作成功"); }else{ returnCommonResult.success(count,"操作失敗"); }}在OmsOrderController類中編寫用戶刪除訂單方法deleteOrder任務(wù)實施與分析步驟19:定義deleteOrder方法/***用戶根據(jù)訂單ID刪除訂單*/intdeleteOrder(LongorderId);步驟20:實現(xiàn)deleteOrder方法@OverridepublicintdeleteOrder(LongorderId){ //TODOAuto-generatedmethodstub intresult=-1; OmsOrderorder=omsOrderMapper.get(orderIValue());……拓展知識一、超時自動取消訂單功能1234count=timeOutOrders.size():返回超時取消的訂單數(shù)量releaseSkuStockLock(timeOutOrder.getOrderItemList()):返還商品庫存omsOrderMapper.getAutoHandleOrders(params):執(zhí)行超時訂單取消功能orderSettingMapper.select():用來獲取訂單設(shè)置,其中有超時設(shè)置數(shù)據(jù)@Override publicIntege
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電纜橋架防腐項目驗收方案
- 2024【合同工用工管理辦法】正式工和合同工有什么區(qū)別
- 2024年國際文化旅游項目投資與合作合同
- 2024年國際貨物買賣合同(進口)
- 彩色瀝青自行車道設(shè)計方案
- 2024汽車購銷合同書模板
- 瀝青路面抗裂施工方案
- 城市基礎(chǔ)設(shè)施總承包管理方案
- 2024年個人勞保用品購買合同
- 小學(xué)階段近視防控實施方案
- 34_專題五 圓的計算與證明ppt課件
- 消防系統(tǒng)供電與布線
- 瘋牛病檢測規(guī)范與防控
- 小學(xué)生寫字教學(xué)經(jīng)驗交流
- 施工現(xiàn)場保衛(wèi)方案
- 風(fēng)力光伏新能源發(fā)電企業(yè)組織架構(gòu)和部門職能
- 《柔性接口給水管道支墩》(10S505國標(biāo)圖集)簡介-國標(biāo)10s505
- 河沙開采工藝流程
- 機井通電標(biāo)準(zhǔn)化設(shè)計(200kVA
- [寶典]妻管嚴(yán)攻略游戲生活休閑
- 培養(yǎng)學(xué)生良好學(xué)習(xí)習(xí)慣的物理教學(xué)策略
評論
0/150
提交評論