整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          移動(dòng)商城的分類查詢?cè)O(shè)計(jì)、商品詳情頁(yè)設(shè)計(jì)、用戶下單功能

          移動(dòng)商城的分類查詢?cè)O(shè)計(jì)、商品詳情頁(yè)設(shè)計(jì)、用戶下單功能實(shí)現(xiàn)

          城的分類查詢?cè)O(shè)計(jì)

          商城的分類查詢主要用于展示一個(gè)一級(jí)分類列表,通過(guò)一級(jí)分類列表提供的分類ID(作為參數(shù)),跳轉(zhuǎn)到商品控制器中進(jìn)行商品查詢。

          分類查詢主要是通過(guò)分類列表進(jìn)行跳轉(zhuǎn)的。分類主頁(yè)的控制器SortsController 的設(shè)計(jì)代碼如下所示:

          @Restcontroller
          @RequestMapping( "/sorts")
          public class SortsController {
          CAutowired
          private SortsRestService sortsRestService;
          @RequestMapping(value="/index")
          public ModelAndview findAll() {
          Gson gson=TreeMapConvert.getGson();
          List<SortsQo> sortses=gson.fromJson(sortsRestService.findist (),new
          TypeToken<List<SortsQ0>>(){].getType());
          return new ModelAndView ( "sorts/index", "sortses",sortses);}
          }

          即通過(guò)鏈接“l(fā)index”所在的方法中,取得分類列表數(shù)據(jù),然后返回分類主頁(yè)視圖設(shè)計(jì)“index.html”。

          分類主頁(yè)視圖設(shè)計(jì)是一個(gè)H5單頁(yè),主體部分的實(shí)現(xiàn)代碼如下所示:

          <section class="orderList">
          <ul th:each-"sorts: ${sortses} ">
          <li th:onclick=" 1javascript:gotoGoods ('+$ {sorts.id}+');'">
          <div class-"orderInfList">
          <div class="orderInfTxtclearPb">
          <p><a th:href=" '/goods/index?sortsid='+${sorts.id}"
          th:text="${sorts.name) "></a></p>
          </div>
          </div>
          </li>
          </ul></section>

          這里只是簡(jiǎn)單地使用一個(gè)“th:each”循環(huán)語(yǔ)句,將一級(jí)分類列表逐條進(jìn)行顯示。當(dāng)在操作界面上單擊一個(gè)分類時(shí),將使用分類ID作為參數(shù),跳轉(zhuǎn)到商品控制器設(shè)計(jì)中進(jìn)行商品查詢。

          分類查詢的顯示效果如圖9-2所示。

          商品詳情頁(yè)設(shè)計(jì)

          首先通過(guò)控制器調(diào)用商品服務(wù)接口GoodsRestService的 findByld獲取數(shù)據(jù),然后返回一個(gè)頁(yè)面視圖設(shè)計(jì)“show.html”,其中,控制器的實(shí)現(xiàn)代碼如下所示:

          @RestController
          @RequestMapping ( "/goods")
          public class GoodsController {
          @Autowired
          private GoodsRestService goodsRestService;
          @RequestMapping (value="/{id} "')
          public ModelAndView findById (@Pathvariable Long id)
          String json=goodsRestService. findById(id);
          GoodsQo goodsQo=new Gson().fromJson(json, GoodsQo.class);return new ModelAndView ("goods/show", "goods",goodsQ0);
          }
          }

          頁(yè)面視圖設(shè)計(jì)“show.html”是一個(gè)H5單頁(yè),實(shí)現(xiàn)代碼如下所示:

          <!DOCTYPE html>
          <html xmlns:th="http://www.thymeleaf.org">
          <head>
          <meta charset="utf-8"/>
          <meta content="yes" name="apple-mobile-web-app-capable"/>
          <meta content="black" name="apple-mobile-web-app-status-bar-style"<meta name="format-detection" content="telephone=no"/>
          <title>商品內(nèi)容</title>
          <link th:href="@{/styles/main.css}" rel="stylesheet" type="text/css"<style type="text/css">
          article,aside,dialog, footer,header,section, footer,nav,figure,menuldisplay:block }
          </style>
          <script th:src="@{/scripts/jquery-1.10.2.min.js}"></script><script th:src="@{/scripts/viewscale.js}"></script>
          </head>
          <body>
          <div class="swiper-container" style="height: 450px;">
          <div class="swiper-wrapper">
          <div class="swiper-slide">
          <img th:src="${ goods.photo}"/></div>
          </div></div>
          <div class="spxg prize">
          <div class="intro" th:text="${ goods.name}">商品名稱</div><div class="info">
          <span class="prize">
          <em>價(jià)格:¥</em><em id="priceShowl" original="0.1"
          th:text="${goods.price} ">67</em>
          /span>
          </div>
          </div>
          <div class="contents">
          <div class="abstract"></div>
          <div th:text="${goods.contents} "></div>
          </div>
          <div class="fix-bottom-buy">
          <input id="goodsid" name="goodsid" type="hidden"
          th:value="${goods.id} "/>
          <div class="col-2">
            <a id="addCartBtn" href="javascript:void(0)"
          onclick="history.back();"class="btn white">返回商城</a>
          <a id="buyNowBtn" th:href=" ' /order/accounts/'+${goods.id}"
          class="btn red">立即購(gòu)買</a>
          </div>
          </div></body></html>

          詳情頁(yè)顯示了商品的詳細(xì)信息,并且提供了“立即購(gòu)買”的跳轉(zhuǎn)鏈接。單擊“立即購(gòu)買”按鈕后將進(jìn)行用戶登錄狀態(tài)檢查。

          商品詳情頁(yè)設(shè)計(jì)完成之后,顯示效果如圖9-3所示。

          用戶下單功能實(shí)現(xiàn)

          當(dāng)用戶在商品詳情頁(yè)中單擊“立即購(gòu)買”按鈕之后,將調(diào)用OrderController控制器,代碼如下所示:

          @RestController
          @RequestMapping ("/order")@slf4j
          public class OrderController {
          @Autowired
          private GoodsRestService goodsRestService;
          @ReguestMapping (value=" /accounts/{id} ")
          public ModelAndView accounts (ModelMap model, (PathVariable Long id)(
          String json=goodsRestService.findById(id);
          GoodsQo goodsQo=new Gson ().fromJson(json,GoodsQo.class);return new ModelAndView( "order/accounts", "goods", goodsQ0);
          }
          }

          首先通過(guò)商品ID取得商品信息,然后,返回一個(gè)賬號(hào)視圖設(shè)計(jì)。在這個(gè)視圖設(shè)計(jì)中,一方面顯示商品的價(jià)格,另一方面進(jìn)行用戶登錄狀態(tài)檢查。

          賬號(hào)視圖設(shè)計(jì)“accounts.html”是一個(gè)H5單頁(yè),完整的實(shí)現(xiàn)代碼如下所示:

          <!DOCTYPE html>
          <html xmlns:th="http://www.thymeleaf.org">
          <head>
          <meta  charset="utf-8"/>
          <meta content="yes" name="apple-mobile-web-app-capable"/>
          <meta content="black" name="apple-mobile-web-app-status-bar-style"/><meta name="format-detection" content="telephone=no"/>
          <title>結(jié)算</title>
          <link th:href="G{/styles/microApply.css}" rel="stylesheet"
          type="text/css"/>
          <link th:href="@{/styles/globalWap.css}" rel="stylesheet"
          type="text/css"/>
          <style type="text/css">
          article,aside,dialog, footer, header, section, footer, nav, figure
          menu{display:block}
          </style>
          <script th:src="@{/scripts/viewscale.js}"></script>
          <script th:src="@(/scripts/jquery-1.10.2.min.js}"></script><script th:srC="@ {/scripts/Event_alert.js}"></script>
          </head>
          <body>
          <div class="content prompt1">
          <div class=" verifyErrO">
          <span></span>
          </diV>
          <div class="sure"><input class="longinBtn" type="submit" value="確定
          " /></div>
          </div>
          <input id="goodsid" name="goodsid" type="hidden"
          th:value="${goods.id] "/>
          <input id="merchantid" name="goodsid" type="hidden"
          th:value="${goods.merchantid}"/>
          <div class="content prompt2">
          <div class="verifyErro">
          <span></span>
          <p class="swit" th:text="'訂單金額:¥'+(${ goods.price} ?
          $ {#numbers.formatDecimal (goods.price,0,'COMMA',2,'POINT')}:'')">確認(rèn)購(gòu)買嗎?</p>
          <p class="countdown"></p></div>
          <div class="sure">xinput class="accountsBtn" type="submit" value="
          確定"/></div>
          </div>
          <div class="copy">關(guān)于我們</div></body>
          <script>
          /*<![CDATA[*/$(function(){
          var storage=window. localStorage;var user=storage.getItem ("user");var userid;
          var goodsid=$('#goodsid').val();
          var merchantid=$('#merchantid').val();
          if(user){
          var a=JSON.parse(user);userid=a.userid;
          //console. log (a.userid);$('.prompt1').hide ();
          $('.prompt2 ').show();
          }else {
          $('.prompt2 ').hide();$('.prompt1') .show();
          $('.longinBtn').click (function(){
          $(' .accountsBtn').click(function(){
          $.ajax({
          url:"../buyone" ,data:{
          id:goodsid,subsid:userid,
          merchantid:merchantid},
          type: "POST",
          dataType: "json",
          success: function(data){
          if(data && (parseInt (data) >0)){
          alertEC("購(gòu)買成功!");
          }else{
          alertEC("下單失敗!");
          });
          setTimeout(function(){
          window . location.href="../index";}, 600);
          });
          });
          /*]]>*/</script></html>

          在這個(gè)設(shè)計(jì)中,首先對(duì)用戶的賬號(hào)進(jìn)行檢查。如果是未登錄狀態(tài),則轉(zhuǎn)到登錄頁(yè)面提示用戶登錄。

          如果用戶已經(jīng)登錄,則提示用戶確認(rèn)購(gòu)買,然后執(zhí)行購(gòu)買下單的操作。如果下單成功,則提示“購(gòu)買成功”,并從操作界面跳轉(zhuǎn)到訂單列表頁(yè)面。

          注意:這里為了“跑通”整個(gè)下單的操作流程,省略了支付的環(huán)節(jié)。

          用戶進(jìn)行購(gòu)買下單的操作是通過(guò)控制器OrderController實(shí)現(xiàn)的,代碼如下所示:

          @RestController
          @RequestMapping ( "/order")@slf4j
          public class OrderController {
          @Autowired
          private OrderRestService orderRestService;CAutowired
          private GoodsRestService goodsRestService;
          @RequestMapping(value="/buyone", method=RequestMethod. POST)public String buyone (GoodsQo buyone){
          String json=goodsRestService.findById (buyone.getId());GoodsQo goodsQ0=new Gson().fromJson(json,GoodsQo.class);if(goodsQ0 !=null){
          Integer sum=1;
          OrderDetailQ0 orderDetailQ0=new OrderDetailQ0();orderDetailQ0.setGoodsid(goodsQo.getId());
          orderDetailQo.setGoodsname(goodsQo.getName());orderDetai1Qo.setPrice(goodsQo.getPrice());orderDetailQ0.setPhoto (goodsQo.getPhoto());orderDetailQo.setNums(sum);
          orderDetailQ0.setMoney(sum * goodsQo.getPrice());
          List<0rderDetailQ0> list=new ArrayList<>();
          1ist .add(orderDetailQ0);
          OrderQo orderQ0=new OrderQo();orderQo.setOrder Details(list);//借用分類ID來(lái)傳輸用戶編號(hào)
          orderQo.setUserid (buyone.getSubsid());
          orderQo.setMerchantid(goodsQo.getMerchantid());orderQo.setAmount(sum *goodsQo.getPrice());
          orderQo.setOrderNo (new Long ( (new Date()).getTime()).toString()//已付款
          orderQo. setStatus (StatusEnum. PAID.getCode());orderQo.setCreated(new Date());
          String response=orderRestService.create (orderQo);
          1oa.info ( "====下單結(jié)果:"+response);
          //更新庫(kù)存
          if(response !=null) {
          Integer buynum=goodsQo.getBuynum()==null ? sum : sum
          goodsQ0 .getBuynum();
          goodsQo.setBuynum (buynum);
          goodsRestService. update(goodsQo);//下單成功
          return "1";
          }else{
          //下單失敗
          return "-1";
          }
          //系統(tǒng)異常return "-2";
          }
          }

          首先獲取商品信息和用戶信息,然后根據(jù)這些信息,調(diào)用訂單服務(wù)接口創(chuàng)建一個(gè)新訂單,最后調(diào)用商品服務(wù)接口更新庫(kù)存信息。

          如果下單成功,則通過(guò)上面的視圖設(shè)計(jì),提示下單成功。提示信息會(huì)停留600ms,隨后自動(dòng)跳轉(zhuǎn)到訂單的主頁(yè)中。在訂單主頁(yè)中用戶可以看到訂單列表。

          本文給大家講解的內(nèi)容SpringCloud微服務(wù)架構(gòu)實(shí)戰(zhàn):商城的分類查詢?cè)O(shè)計(jì)、商品詳情頁(yè)設(shè)計(jì)、用戶下單功能實(shí)現(xiàn)

          1. 下篇文章給大家講解的是SpringCloud微服務(wù)架構(gòu)實(shí)戰(zhàn):商城的用戶登錄與賬戶切換設(shè)計(jì)、訂單查詢?cè)O(shè)計(jì)、集成測(cè)試;
          2. 覺(jué)得文章不錯(cuò)的朋友可以轉(zhuǎn)發(fā)此文關(guān)注小編;
          3. 感謝大家的支持!


          客目錄:

          ......

          十、基于Django+mysql的點(diǎn)餐系統(tǒng)設(shè)計(jì)-第十篇(H5手機(jī)移動(dòng)端點(diǎn)餐:登錄)

          十一、基于Django+mysql的點(diǎn)餐系統(tǒng)設(shè)計(jì)-第十一篇(H5手機(jī)移動(dòng)端點(diǎn)餐:購(gòu)物車操作)

          十二、基于Django+mysql點(diǎn)餐系統(tǒng)設(shè)計(jì)-第十二篇(移動(dòng)端:會(huì)員下單處理)


          本章源碼下載地址:https://github.com/hopeSuceess/testorder/tree/testorder_20220622_01

            上一篇講了購(gòu)物車操作,緊接著上一篇繼續(xù)講新增購(gòu)物車后,這些餐品的下單操作。首先在Model層定義數(shù)據(jù)庫(kù)表,在myadmin/models.py中編寫如下代碼:

          # 訂單模型
          class Orders(models.Model):
              shop_id=models.IntegerField() # 店鋪id號(hào)
              member_id=models.IntegerField() # 會(huì)員id
              user_id=models.IntegerField() # 操作員id
              money=models.FloatField() # 金額
              status=models.IntegerField(default=1)  #訂單狀態(tài):1進(jìn)行中/2無(wú)效/3已完成
              payment_status=models.IntegerField(default=1) # 支付狀態(tài):1未支付/2已支付/3已退款
              create_at=models.DateTimeField(default=datetime.now) # 創(chuàng)建時(shí)間
              update_at=models.DateTimeField(default=datetime.now) # 修改時(shí)間
          
              class Meta:
                  db_table="orders" # 更改表名
          
          # 訂單詳情模型
          class OrderDetail(models.Model):
              order_id=models.IntegerField() #訂單id
              # product_id=models.IntegerField() # 菜品id
              product=models.ForeignKey('Product', on_delete=models.CASCADE) #多對(duì)一
              product_name=models.CharField(max_length=50) # 菜品名稱
              price=models.FloatField()  # 單價(jià)
              quantity=models.IntegerField()  # 數(shù)量
              status=models.IntegerField(default=1) #狀態(tài):1正常/9刪除
          
              class Meta:
                  db_table="order_detail" # 更改表名
          
          # 支付信息模型
          class Payment(models.Model):
              order_id=models.IntegerField() #訂單id號(hào)
              member_id=models.IntegerField() #會(huì)員id
              money=models.FloatField() #支付金額
              type=models.IntegerField() # 付款方式:1會(huì)員付款/2收銀收款
              bank=models.IntegerField(default=1) #收款銀行渠道:1微信/2余額/3現(xiàn)金/4支付寶
              status=models.IntegerField(default=1) #支付狀態(tài):1未支付2/已支付/3已退款
              create_at=models.DateTimeField(default=datetime.now) # 創(chuàng)建時(shí)間
              update_at=models.DateTimeField(default=datetime.now) # 修改時(shí)間
          
              class Meta:
                  db_table="payment" # 更改表名

            定義完了數(shù)據(jù)庫(kù)表,開(kāi)始編寫路由控制器的邏輯,在mobile/urls.py中先定義加載移動(dòng)端訂單頁(yè)的路由邏輯

              # 訂單處理
              path('orders/add', index.addOrders, name="mobile_addorders"), # 加載移動(dòng)端訂單頁(yè)

            定義完了路由邏輯,現(xiàn)在開(kāi)始寫view層的實(shí)現(xiàn)邏輯,在mobile/views/cart.py中編寫addOrders函數(shù)

          def addOrders(request):
              """移動(dòng)端下單表單頁(yè)"""
              # 嘗試從session中獲取名字為cartlist的購(gòu)物車信息,若沒(méi)有返回{}
              cartlist=request.session.get('cartlist', {})
              total_money=0 # 初始化一個(gè)總金額
              # 遍歷購(gòu)物車中的菜品并累加總金額
              for vo in cartlist.values():
                  total_money +=vo['num']*vo['price']
              request.session['total_money']=total_money
              return render(request, "mobile/addOrders.html")

            view層實(shí)現(xiàn)的邏輯要渲染到前端,現(xiàn)在對(duì)template層進(jìn)行邏輯實(shí)現(xiàn),templates/mobile/addOrders.html中的代碼如下:


          {% extends 'mobile/base.html' %}

          {% load static %}

          {% block mainbody %}

          <!--頭部-->

          <header>

          <div class="header">

          <h1>提交訂單</h1>

          <a href="javascript:window.history.back();" class="return"><i></i></a>

          </div>

          </header>

          <! --內(nèi)容區(qū)-->

          <article class="main-container add-product">

          <!--產(chǎn)品-->

          <div class="list-content cartlist order-Pro">

          <ul>

          {% for vo in request.session.cartlist.values %}

          <li class="line">

          <a href="#"><div class="pro-img"><img src="{% static 'uploads/product/' %}{{ vo.cover_pic }}" alt=""></div></a>

          <div class="pro-con"><h3>{{ vo.name }}</h3><b>¥{{ vo.price }}</b>×{{ vo.num }}</div>

          </li>

          {% endfor %}

          </ul>

          </div>

          <!--支付方式-->

          <div class="order-Delivery line" id="orderPays">

          <p>支付方式</p>

          <ol class="FilterContentList">

          </ol>

          <div class="list">

          <ul class="line">

          <li class="select" bank="4"><i class="icon-alipay"></i>支付寶支付<em class="icon-correct"></em></li>

          <li bank="1"><i class="icon-weixinpay"></i>微信支付<em class="icon-correct"></em></li>

          </ul>

          </div>

          </div>

          <br><br>

          </article>

          <!---底部欄目-->

          <footer>

          <div class="button"><button onclick="doSubmit()">提交訂單</button></div>

          <h4>實(shí)付款:¥{{ request.session.total_money }}</h4>

          </footer>

          {% endblock %}

          {% block myjavascript %}

          <script>

          //支付方式上的單選按鈕點(diǎn)擊效果

          $("ul.line li").click(function () {

          $("ul.line li").removeClass("select");

          $(this).addClass("select");

          });

          //執(zhí)行訂單提交操作函數(shù)

          function doSubmit(){

          {#bid=$("ul.line li.select").attr("bank"); // 獲取支付方式#}

          {#window.location.href="{% url 'mobile_doaddorders' %}?bank="+bid;#}

          window.location.href="{% url 'mobile_doaddorders' %}";

          }

          </script>

          {% endblock %}



            好了,現(xiàn)在啟動(dòng)工程調(diào)試一下,訪問(wèn)http://127.0.0.1:8000/mobile/,選擇菜品后,點(diǎn)擊"去結(jié)算",跳到了"提交訂單"頁(yè)

          繼續(xù)往下寫,在提交訂單頁(yè)提交訂單,這里涉及了多個(gè)數(shù)據(jù)庫(kù)表的插入:訂單信息表、支付表、訂單詳情表,這三表里的信息在后續(xù)的查詢中都會(huì)用到。

          在mobile/views/index.py中實(shí)現(xiàn)doAddOrders函數(shù)

          def doAddOrders(request):
              '''執(zhí)行移動(dòng)端下單操作'''
              try:
                  #執(zhí)行訂單信息的添加
                  od=Orders()
                  od.shop_id=request.session['shopinfo']['id']
                  od.member_id=request.session['mobileuser']['id']
                  od.user_id=0
                  od.money=request.session['total_money']
                  od.status=1 #訂單狀態(tài):1進(jìn)行中/2無(wú)效/3已完成
                  od.payment_status=2 #支付狀態(tài):1未支付/2已支付/3已退款
                  od.create_at=datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                  od.update_at=datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                  od.save()
          
          
                  # 執(zhí)行支付信息添加
                  op=Payment()
                  op.order_id=od.id #訂單id號(hào)
                  op.member_id=request.session['mobileuser']['id']
                  op.type=2 #1會(huì)員付款/2收銀收款
                  op.bank=request.GET.get("bank", 3) # 收款銀行渠道:1微信/2余額/3現(xiàn)金/4支付寶
                  op.money=request.session['total_money']
                  op.status=2 # 支付狀態(tài):1未支付/2已支付/3已退款
                  op.create_at=datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                  op.update_at=datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                  op.save()
          
                  # 執(zhí)行訂單詳情的添加
                  cartlist=request.session.get("cartlist", {}) # 獲取購(gòu)物車中的菜品信息
                  # 遍歷購(gòu)物車中的菜品并添加到訂單詳情中
                  for item in cartlist.values():
                      ov=OrderDetail()
                      ov.order_id=od.id # 訂單id
                      ov.product_id=item['id'] # 菜品id
                      ov.product_name=item['name'] # 菜品名稱
                      ov.price=item['price'] # 單價(jià)
                      ov.quantity=item['num']  #數(shù)量
                      ov.status=1 # 狀態(tài):1正常/9刪除
                      ov.save()
          
                  del request.session['cartlist']
          
                  del request.session['total_money']
              except Exception as err:
                  print(err)
              return render(request,"mobile/orderinfo.html", {"order": od})

            下面實(shí)現(xiàn)template層的邏輯,在templates/mobile目錄下創(chuàng)建orderinfo.html,orderinfo.html中的代碼邏輯如下:

          #! -*- coding: UTF-8 -*-

          #@Time : 2022/2/3 18:17

          #@Author : 中國(guó)

          #@File : index.py

          #@Software : PyCharm

          from datetime import datetime

          from django.http import HttpResponse

          from django.shortcuts import redirect, render

          from django.urls import reverse

          from myadmin.models import Category, Product, Shop, Member, Payment, OrderDetail, Orders

          def index(request):

          # # 接收到前端的處理邏輯,返回”歡迎來(lái)到大堂點(diǎn)餐!“

          # return HttpResponse('歡迎來(lái)到手機(jī)移動(dòng)端點(diǎn)餐頁(yè)面!')

          '''移動(dòng)端首頁(yè)'''

          #獲取并判斷當(dāng)前店鋪信息

          shopinfo=request.session.get("shopinfo", None)

          if shopinfo is None:

          return redirect(reverse("mobile_shop")) # 重定向到店鋪選擇頁(yè)

          # 獲取當(dāng)前店鋪下的菜品類別和菜品信息

          clist=Category.objects.filter(shop_id=shopinfo['id'],status=1)

          productlist=dict()

          for vo in clist:

          plist=Product.objects.filter(category_id=vo.id, status=1)

          productlist[vo.id]=plist

          context={'categorylist': clist, 'productlist': productlist.items(), 'cid': clist[0]}

          return render(request, "mobile/index.html", context)

          def shop(request):

          '''呈現(xiàn)店鋪選擇頁(yè)面'''

          context={'shoplist': Shop.objects.filter(status=1)}

          return render(request, 'mobile/shop.html', context)

          def selectShop(request):

          '''執(zhí)行店鋪選擇'''

          # 獲取店鋪id號(hào),通過(guò)店鋪id號(hào)獲取店鋪信息

          sid=request.GET['sid']

          ob=Shop.objects.get(id=sid)

          # 將店鋪信息放入到seession中

          request.session['shopinfo']=ob.toDict()

          return redirect(reverse('mobile_index'))

          def register(request):

          '''加載注冊(cè)/登錄頁(yè)面'''

          return render(request, "mobile/register.html")

          def doRegister(request):

          '''執(zhí)行注冊(cè)/登錄'''

          # 驗(yàn)證短信碼

          verifycode="1234" # request.session['verifycode']

          code=request.POST['code']

          if verifycode !=code:

          context={'info': '驗(yàn)證碼錯(cuò)誤'}

          return render(request, "mobile/register.html", context)

          try:

          #根據(jù)手機(jī)號(hào)碼獲取當(dāng)前會(huì)員信息

          member=Member.objects.get(mobile=request.POST['mobile'])

          except Exception as err:

          # 此處可以執(zhí)行當(dāng)前會(huì)員注冊(cè)(添加)

          ob=Member()

          ob.nickname="顧客" #默認(rèn)會(huì)員名稱

          ob.avatar="moren.png" # 默認(rèn)頭像

          ob.mobile=request.POST['mobile'] # 手機(jī)號(hào)碼

          ob.status=1

          ob.create_at=datetime.now().strftime("%Y-%m-%d %H:%M:%S")

          ob.update_at=datetime.now().strftime("%Y-%m-%d %H:%M:%S")

          ob.save()

          member=ob

          # 檢查當(dāng)前會(huì)員狀態(tài)

          if member.status==1:

          # 將當(dāng)前會(huì)員信息轉(zhuǎn)換成字典格式并存放到seession中

          request.session['mobileuser']=member.toDict()

          # 重定向到首頁(yè)

          return redirect(reverse("mobile_index"))

          else:

          context={"info": '此賬號(hào)信息禁用'}

          return render(request, "mobile/register.html", context)

          def addOrders(request):

          '''移動(dòng)端下單表單頁(yè)'''

          # 嘗試從session中獲取名字為cartlist的購(gòu)物車信息,若沒(méi)有返回{}

          cartlist=request.session.get('cartlist', {})

          total_money=0 # 初始化一個(gè)總金額

          # 遍歷購(gòu)物車中的菜品并累加總金額

          for vo in cartlist.values():

          total_money +=vo['num']*vo['price']

          request.session['total_money']=total_money # 放進(jìn)session

          return render(request,"mobile/addOrders.html")

          def doAddOrders(request):

          '''執(zhí)行移動(dòng)端下單操作'''

          try:

          #執(zhí)行訂單信息的添加

          od=Orders()

          od.shop_id=request.session['shopinfo']['id']

          od.member_id=request.session['mobileuser']['id']

          od.user_id=0

          od.money=request.session['total_money']

          od.status=1 #訂單狀態(tài):1進(jìn)行中/2無(wú)效/3已完成

          od.payment_status=2 #支付狀態(tài):1未支付/2已支付/3已退款

          od.create_at=datetime.now().strftime("%Y-%m-%d %H:%M:%S")

          od.update_at=datetime.now().strftime("%Y-%m-%d %H:%M:%S")

          od.save()

          # 執(zhí)行支付信息添加

          op=Payment()

          op.order_id=od.id #訂單id號(hào)

          op.member_id=request.session['mobileuser']['id']

          op.type=2 #1會(huì)員付款/2收銀收款

          op.bank=request.GET.get("bank", 3) # 收款銀行渠道:1微信/2余額/3現(xiàn)金/4支付寶

          op.money=request.session['total_money']

          op.status=2 # 支付狀態(tài):1未支付/2已支付/3已退款

          op.create_at=datetime.now().strftime("%Y-%m-%d %H:%M:%S")

          op.update_at=datetime.now().strftime("%Y-%m-%d %H:%M:%S")

          op.save()

          # 執(zhí)行訂單詳情的添加

          cartlist=request.session.get("cartlist", {}) # 獲取購(gòu)物車中的菜品信息

          # 遍歷購(gòu)物車中的菜品并添加到訂單詳情中

          for item in cartlist.values():

          ov=OrderDetail()

          ov.order_id=od.id # 訂單id

          ov.product_id=item['id'] # 菜品id

          ov.product_name=item['name'] # 菜品名稱

          ov.price=item['price'] # 單價(jià)

          ov.quantity=item['num'] #數(shù)量

          ov.status=1 # 狀態(tài):1正常/9刪除

          ov.save()

          del request.session['cartlist']

          del request.session['total_money']

          except Exception as err:

          print(err)

          return render(request,"mobile/orderinfo.html", {"order": od})



              運(yùn)行工程,點(diǎn)擊提交訂單,如下圖

            會(huì)員下單處理寫完了,總體來(lái)說(shuō)也是增刪改查,下一篇講訂單的展示


          #頭條創(chuàng)作挑戰(zhàn)賽#

          十一、感恩節(jié)、黑五步步逼近,這也意味著現(xiàn)在已經(jīng)全面踏入2019旺季沖刺!不管你是新手賣家,還是eBay大賣,想要更多流量、更多市場(chǎng),必須要了解這個(gè)操作!

          今年早些時(shí)候,eBay與臺(tái)灣最大的拍賣網(wǎng)站之一露天拍賣攜手合作,將eBay.com上的刊登無(wú)縫整合到露天拍賣平臺(tái)(https://pub.ruten.com.tw/ebaynew/index.html),方便臺(tái)灣消費(fèi)者使用中文查詢搜索、下單購(gòu)買eBay.com上的產(chǎn)品。賣家刊登的物品,只要物流選擇遞送的目的地包含臺(tái)灣,就會(huì)有機(jī)會(huì)被整合到露天平臺(tái)上。這就為eBay賣家進(jìn)一步拓展臺(tái)灣市場(chǎng)帶來(lái)了極大的便利。

          所以,不要再猶豫,不要再等待,現(xiàn)在就檢查你的刊登設(shè)置

          如果你還未添加臺(tái)灣為送貨地點(diǎn)選項(xiàng):請(qǐng)盡早添加臺(tái)灣為其中一個(gè)送貨地選項(xiàng);

          如果你已經(jīng)添加臺(tái)灣為送貨地選項(xiàng)的賣家:建議可重新評(píng)估及優(yōu)化運(yùn)送至臺(tái)灣的物流方式,以提升刊登的曝光機(jī)會(huì)。

          如何操作

          設(shè)置國(guó)際運(yùn)送方案,運(yùn)送到全世界, 選擇運(yùn)送方式并設(shè)置運(yùn)費(fèi)

          賣家可以選擇屏蔽一些不便運(yùn)送的國(guó)家和地區(qū),如要運(yùn)送到臺(tái)灣,請(qǐng)勿屏蔽臺(tái)灣

          賣家常見(jiàn)問(wèn)題分享

          Q:eBay上哪些刊登會(huì)呈現(xiàn)在露天拍賣平臺(tái)?

          A:只要您的刊登滿足以下2個(gè)條件:

          1)商品所在地在美國(guó)、香港地區(qū)、或者中國(guó)大陸

          2)送貨地點(diǎn)包括臺(tái)灣。

          系統(tǒng)將自動(dòng)同步有關(guān)刊登到露天拍賣,增加臺(tái)灣買家的購(gòu)買機(jī)會(huì)。

          Q:哪些eBay刊登信息將同步到露天拍賣刊登頁(yè)?

          A:eBay商品頁(yè)上的所有商品信息,包括圖像、標(biāo)題、描述和運(yùn)送方式等信息都將同步至露天拍賣。

          https://goods.ruten.com.tw/item/show?30193433560276

          Q:露天拍賣的訂單將如何在eBay上呈現(xiàn)?

          A:露天拍賣的訂單,包括詳細(xì)的買家收貨信息(注:買家地址將為英文)將同步到eBay上,在賣家后臺(tái)“My eBay”中顯示。如同其他來(lái)自臺(tái)灣地區(qū)的訂單一樣,賣家只需一如既往在“My eBay”中處理相關(guān)訂單即可。

          Q:通過(guò)露天拍賣購(gòu)買eBay商品的買家政策是什么?

          A:有關(guān)詳細(xì)的買家政策,請(qǐng)參閱https://pub.ruten.com.tw/global/article.html,并注意第七點(diǎn)特別提及買方承擔(dān)的進(jìn)口稅責(zé)任

          Q:如何知道商品是否成功刊登到露天拍賣?

          A:如刊登成功,商品會(huì)在露天拍賣的搜索結(jié)果中出現(xiàn),而且顯示帶有“海外代購(gòu)”的標(biāo)志。

          eBay與露天的合作

          露天市集,是全臺(tái)最大交易市集,2018年平臺(tái)成交金額(GMV)突破新臺(tái)幣3,305億,不但是「臺(tái)灣NO.1拍賣網(wǎng)站」,更是全臺(tái)唯一超過(guò)千億交易金額的電商平臺(tái),成交規(guī)模已經(jīng)超過(guò)臺(tái)灣大型百貨及實(shí)體店鋪。

          露天同時(shí)擁有超過(guò)1,100萬(wàn)名會(huì)員,其中有超過(guò)200萬(wàn)具有賣家會(huì)員身份,透過(guò)累積多年的珍貴電商消費(fèi)數(shù)據(jù),2018年起,露天持續(xù)增加電商大數(shù)據(jù)分析功能和人工智能服務(wù)內(nèi)容,采取開(kāi)放架構(gòu),已發(fā)展成為全臺(tái)主要的AI電商平臺(tái)。

          今年四月,eBay攜手露天拍賣整合跨境電商(https://pub.ruten.com.tw/ebaynew/index.html),通過(guò)露天拍賣平臺(tái)向臺(tái)灣開(kāi)放ebay.com上GC賣家的物品刊登。臺(tái)灣用戶可以于露天平臺(tái)以“全程中文化”的購(gòu)物頁(yè)面與簡(jiǎn)單易用的購(gòu)物流程直接使用中文搜尋、選購(gòu)以及下單購(gòu)買eBay平臺(tái)上的產(chǎn)品,同時(shí)使用當(dāng)?shù)亟鹆魍瓿筛犊睿唐分彼团_(tái)灣,極大提升了他們的海淘購(gòu)物體驗(yàn)!

          (呈現(xiàn)在露天拍賣網(wǎng)上的eBay listing)

          來(lái)看看露天拍賣上都在賣什么?

          生活家居產(chǎn)品成為大熱,

          男女時(shí)尚單品趨勢(shì)良好。

          玩具、相機(jī)、電腦等娛樂(lè)消費(fèi)品類潛力巨大!

          (露天拍賣2018年商品結(jié)構(gòu))

          (在露天拍賣上成交量前5名的eBay listing品類)

          這么大的市場(chǎng),這么簡(jiǎn)單的操作,

          你還在猶豫什么?

          動(dòng)動(dòng)手指操作起來(lái),Q4不沖待何時(shí)?

          (來(lái)源:ebay)

          以上內(nèi)容屬作者個(gè)人觀點(diǎn),不代表雨果網(wǎng)立場(chǎng)!如有侵權(quán),請(qǐng)聯(lián)系我們。

          有任何eBay問(wèn)題,請(qǐng)關(guān)注微信號(hào)【ebaycifnews】

          上雨果網(wǎng)搜索“跨境資料庫(kù)”,領(lǐng)取歐美/東南亞各國(guó)市場(chǎng)商機(jī)、各大平臺(tái)熱銷品報(bào)告、跨境電商營(yíng)銷白皮書!


          主站蜘蛛池模板: 色天使亚洲综合一区二区| 在线视频国产一区| 亚洲一区中文字幕在线观看| 精彩视频一区二区三区| 三上悠亚日韩精品一区在线| 无码视频免费一区二三区| 日本高清不卡一区| 中文字幕一区二区免费| 一区二区三区日本电影| 日本一区二区三区在线看| 伦精品一区二区三区视频| 无码一区二区三区| 肉色超薄丝袜脚交一区二区| 久久一区二区三区免费| 日本一区二区三区在线视频| 国产无人区一区二区三区 | 国产精品电影一区| 色窝窝无码一区二区三区成人网站| 黄桃AV无码免费一区二区三区| 武侠古典一区二区三区中文| 精品一区二区三区3d动漫| 国产裸体舞一区二区三区| 大香伊蕉日本一区二区| 国产一区二区免费在线| 色综合视频一区二区三区| 日韩动漫av在线播放一区| 亚洲美女高清一区二区三区 | 成人精品一区二区三区中文字幕 | 亚洲国产综合精品中文第一区| 国产区精品一区二区不卡中文| 国产suv精品一区二区33| 午夜福利一区二区三区在线观看| 文中字幕一区二区三区视频播放| 久久91精品国产一区二区| 91在线一区二区| 在线免费视频一区| 久久99国产一区二区三区| 亚洲AV无码一区二区乱子伦| 韩国美女vip福利一区| 国产精品亚洲专一区二区三区| 美女视频一区二区|