藝品商城總結

2022-07-20 10:39:15 字數 3068 閱讀 9816

最近比較忙,所以一直沒有總結,其實總結還是很重要的,使你避免在同乙個地方跌倒兩次。故現在對這個微**做個總結。

這個**採用前後端分離的模式,主要的使用者狀態有三種 遊客 普通使用者 vip使用者 主要的介面是  登入頁 **首頁 詳情頁 支付頁 我的訂單頁 優惠券頁

對於遊客我這邊需要儲存他的訂單資訊,每次建立訂單時拼接到本地,刪除訂單時,同時將本地的訂單也刪除。其餘的狀態只要有手機號,就全部採用服務端返回的介面資料。

難點主要是登入頁和支付頁,登入頁採用的是登陸中心的介面文件,這裡主要說說支付和優惠券在這裡糾結了不少時間

當使用者是vip且擁有優惠券且購物商品滿足200時,這時候給他乙個預設的優惠券,這裡主要是理給自己的

1 支付線

支付首先分為兩種線上支付和貨到付款支付 線上支付減10元 貨到付款-0 所以這就有個邏輯

if($(支付方式!=='到付')else

$totalprice.html(totalprice);

然後當使用者是vip且總金額大於200時

if($(usertype==vip && price*num>200 支付方式!=='到付')else

$totalprice.html(totalprice);

2 優惠券線

因為從支付頁面到優惠券頁面是跳頁面,所以當選擇優惠券返回時也是開啟新頁面。這時如果你當時選擇的商品單價不滿200,當你加到一定數量超過兩百時可以使用優惠券了,但是當你從優惠券頁面返回時頁面商品數量又變成1了

所以你只能用預設的優惠券,你沒有選擇優惠券的權利,這個體驗就很差了。好吧,我們本來就是強制你用優惠券的。這時候能想到的方法是什麼?存本地,所以我就存了當前支付頁面的商品id 商品數量 商品單價 商品總價 接著存了這個頁面

請求優惠券介面的預設第乙個可用優惠券的id value 當使用者進入優惠券頁面時選擇其他的優惠券就覆蓋之前存的預設優惠券。然後使用者返回支付頁 去請求優惠券首先判斷有沒有優惠券的session,如果有就取出來使用,如果沒有則使用預設的。

然後將儲存的商品id 商品數量 單價 總價渲染到頁面,後來發現這樣有個很大的問題,就是當你有session進入支付頁你就會渲染你的session值,這時候想到的辦法就是判斷**頁面,當使用者是從優惠券頁面進來的時候才渲染頁面,可是比較坑的是

優惠頁面是window.location.href開啟的 返回後判斷**頁是undefined,這個不明白是為什麼。所以以至於比只要存了session這個session就會影響你的頁面,所以這個方法後來被廢棄。

接下來採用的方法是支付頁第一次載入,儲存預設優惠券id和value 的邏輯不變 ,只要離開這個頁面就清除使用者的優惠券資訊  從支付頁跳到優惠券頁面時,這時候就清除優惠券的session 同時將商品資訊通過url傳給優惠券頁面,在優惠券頁面儲存這些商品資訊的session 當使用者點選其他優惠券時這時候就儲存了優惠券的資訊,這時候使用window.history返回到支付頁時  如果使用者沒有點選優惠券 點選了則取這裡的優惠券資訊 如果沒有則是物理返回  這時候通過商品資訊(這裡面存了優惠券資訊) 渲染支付頁面和優惠券資訊 (這裡就是傳到優惠券的預設優惠券資訊)

這裡需要注意的時,只有從優惠券列表頁過來的需要儲存商品資訊,防止影響到其他商品,從其他頁面過來的都要清楚商品資訊。

這裡貼下結果比較重要的**

進入優惠券列表頁

function gotoyhq(event)

優惠券頁面取資料

var obj = {};

obj.number = getquerystring('number');

obj.danjia = getquerystring('danjia');

obj.zongjia = getquerystring('zongjia');

obj.zffs = getquerystring('zffs');

obj.couponsid = getquerystring('couponsid');

obj.couponsvalue = getquerystring('couponsvalue');

sessionfun('set','detailinfo',json.stringify(obj));

$yhqlist.on('click','.quan',function()else));

window.history.back(-1);

}/*設定session */

function sessionfun(type,name,value)else if(type== 'set')else

}移除session

if(location.href.indexof('pay.html') == -1)

這裡再說下支付

驗證函式

function verify()$/,

regphone = /^1[3|4|5|6|7|8][0-9]$/;

if(username == "")

if(!regname.test(username))else

if(telphone == "")

if(!regphone.test(telphone))else

if(dizhi == "" || dizhi=="請選擇省、市、區縣")else

if(xxdz == "")else

}是否顯示優惠券封裝方法

function showyhqfun(flag)))

}else

}else

} else

},error: function (msg)

});}else

}這個專案暫時還在測試中,希望不要有什麼問題,能順利上線。

ajax輪循支付結果

var $trade_no = getcookie('current_order');

var count = 0;

function countfun()

countfun();

function checkorder()

,datatype: 'json',

success:function(data)

count++;

if(count==45)

},error:function()

});}

商城專案總結

sso 單點登入系統 主要解決多系統同意登陸,基礎登陸都系統使用。使用技術 沒有頁面,只有介面 springmvc spring j redis 檢查使用者資訊是否存在 介面查詢資料庫是否由該資料 返回true或者false 註冊使用者 介面接收資料,寫入資料庫 使用者登入 介面接收登陸資料,先上資...

商城專案總結

該 專案從架構 業務 技術要點全方位考慮,使用現階段主流技術實現,涵蓋了springboot 2.3.0 mybatis 3.4.6 elasticsearch 7.6.2 rabbitmq 3.7.15 redis 5.0 mongodb 4.2.5 mysql5.7等技術,採用docker容器化...

小公尺商城專案總結

指令碼中判斷是否相等不能用equals,沒有這個方法,只能用 資料庫工具類,只需要載入一次就夠了,所以我們採用靜態 塊來初始化該方法,作為工具類使用 public static queryrunner qr null 因為是在不同包下的,所以要用public才可以呼叫 ajax往servlet傳送資...