この記事は、Javaweb書店の注文モジュールに関する研究です。
1.関連するクラスを作成します
ドメイン:
注文
OrderItem
DAO:Orderdao
サービス:Orderservice
Web.Servlete:OrderServlet
/** *注文エントリクラス */public class OrderItem {private string iid; private int count; //数量プライベートダブルサブトーテル; //小計プライベート注文注文; //プライベートブックブックを注文; //購入する本}}} /** * Order Class */public class Order {private string oid;プライベートデート注文時間; //注文時間プライベートダブル合計; //合計プライベートイント状態; // 4種類の注文ステータスはあります。 Public Class Orderdao {private queryrunner qr = new txqueryrunner(); / ***注文の追加* @param Order*/ public void addorder(order order){try {string sql = "注文値に挿入(?、、?、、?、?、?)"; / * * utilの日付のSQLへの変換を処理するためのタイムスタンプobject [] params = {order.getoid()、timestamp、order.getTotal()、order.getState()、order.getowner()。getUid()、order.getAddress()}; qr.update(sql、params); } catch(sqlexception e){新しいruntimeexception(e); }} /***注文エントリを挿入* @param OrderItemList* /public void addorderItemlist(list <dorderitem> orderitemlist){ /*** batch(string sql、object [] [] of queryrunner class params)*パラメーションは複数の1次元配列です! *各1次元配列はSQLで1回実行され、複数の1次元配列が複数回実行されます*/ try {string sql = "OrderItem値(?、?、?、、?)"に挿入/** OrderItemListを2次元配列に変換* OrderItemオブジェクトを1次元配列に変換*/ object [] [] [] Params = new object [OrderItemList.size()] []; // OrderItemListをループし、各OrderItemオブジェクトを使用して、(int i = 0; i <orderitemlist.size(); i ++){orderitem item = orderitemlist.get(i); params [i] = new object [] {item.getiid()、item.getCount()、item.getSubtotal()、item.getorder()。getoid()、item.getbook()。getBid()}; } qr.batch(sql、params); // batch processing} catch(sqlexception e){throw new runtimeexception(e); }} / ** * uidによるクエリ注文 * @param uid * @return * / public list <order> findbyuid( / * *1。uidのすべてのリスト<オーダー> uid * 2。 List <Order> OrderList = Qr.Query(SQL、New BeanListhandler <Order>(Order.Class)、UID); / * *2。各注文をループして、すべての独自の注文エントリをロードします */for(order order:orderlist){loadOrderItems(order); //注文オブジェクトのすべての注文エントリを追加}/ * * *3。NOURTERORDERリスト */return OrderList; } catch(sqlexception e){新しいruntimeexception(e); }} / ** *指定された注文のすべての注文エントリをロード * @param Order * @Throws SQLECCEPTION * / private void loadOrderItems(注文注文)スローSqlexception { / * * 2つの表:Orderem、book * / string sql = "select * from orderem i、book b where i.bid = b.bid ="; / * *行の結果セットはもはやjavabeanではないため、Beanlisthandlerを使用できなくなりますが、Maplisthandler */ list <Map <String、Object >> MapList = Qr.Query(SQL、new MapListhandler()、Order.getoid()); / * * MAPLISTは複数のマップであり、各マップは結果セットの行に対応しています * 1行: * {IID = C7AD5492F27D492189105FB50E55CBB6、COUT = 2、SUBOTAL = 60.0、OID = 1AE8A70354C947F8B81B81B81B81B81B80ADA6783155 hibernate、rish = 30.0、著者= Zhang weiqin、image = book_img/8991366-1_l.jpg、cid = 2} *結果はOrderItem)であり、OrderItem*/ list <orderItem> orderitemlist = toorderitemlist(maplist);を保存します。 Order.SetOrderItemList(OrderItemList); } / ** * MAPLIST内の各マップを2つのオブジェクトに変換し、関係を確立します * @Param MapList * @return * / private list <orderitem> toorderitemlist(list <map <string、object >> maplist){list <orderitem> orderitemlist = new ArrayList <OrderItem>(); for(map <string、object> map:maplist){orderitem item = toorderitem(map); orderitemlist.add(item); } return OrderItemList; } / ** *マップをOrderItemオブジェクトに変換 * @param Map * @return * / private OrderItem toorderItem(Map <String、Object> Map){OrderItem OrderItem = commonutils.tobean(Map、OrderItem.class); book book = commonutils.tobean(map、book.class); OrderItem.setbook(book); return orderitem; } / ** * road Order * @param oid * @return * / public Order load(string oid){try { / * * 1。注文= qr.query(sql、new beanhandler <Order>(Order.class)、oid); /** 2。注文のすべてのエントリをロード*/ loadOrderItems(注文); /** 3。注文リストを返します*/ return Order; } catch(sqlexception e){新しいruntimeexception(e); }} / ** * oidを介した注文ステータス * @param oid * @return * / public int getStateByoid(string oid){try {string sql = "oid =?" return(integer)qr.query(sql、new scalarhandler()、oid); } catch(sqlexception e){新しいruntimeexception(e); }} / ** *注文ステータスの変更 * @param oid * @param state * @return * / public void updatestate(string oid、int state){try {string sql = "update set state =?where oid =?"; Qr.Update(SQL、STATE、OID); } catch(sqlexception e){新しいruntimeexception(e); }}} Public Class Orderservice {Private OrderDao OrderDao = new OrderDao(); / ***支払い方法* @param oid*/ public void zhifu(string oid){/** 1。注文のステータスを取得***次のコードを1つない場合、**この方法は何もしない場合、この方法は何もしません*/ int statedao.getStateByoid(oid); if(state == 1){//注文ステータスを2 Orderdao.updatestate(oid、2)に変更します。 }} / ***注文の追加*トランザクション要求* @param Order* / public void add(order order){try {//トランザクションjdbcutils.begintransaction(); OrderDao.Addorder(注文); // OrderDao.AddOrderItemList(Order.GetOrderItemList())を挿入します。 //すべてのエントリを注文に挿入//トランザクションjdbcutils.committransaction()を送信します。 } catch(Exception E){//ロールバックトランザクションtry {jdbcutils.rollbackTransaction(); } catch(sqlexception e1){} new runtimeexception(e); }} / ** *私の注文 * @param uid * @return * / public list <Order> myorders(string uid){return orderdao.findbyuid(uid); } / ** * load Order * @param oid * @return * / public Order load(string oid){return orderdao.load(oid); } /** *領収書の確認 * @param oid * @throws orderexception * /public void confism(string oid)throws orderexception { / * * 1。注文ステータスを確認します。 3でない場合は、例外をスローします */int state = ordao.getStateByoid(oid); //注文ステータスを取得します(state!= 3)新しいorderexceptionをスローします( "注文の確認が失敗しました、あなたは良いことではありません!"); /** 2。注文ステータスを4に変更し、トランザクションが成功していることを示します*/ orderdao.updatestate(oid、4); }} Public Class OrderServletはBaseServletを拡張します{Private Orderservice Orderservice = new Orderservice(); / ** *銀行への支払い * * @param request * @param Response * @return * @throws servletexception * @throws ioexception */ public string zhifu(httpservletrequest request、httpservletrequest Response)スローServletexception、ioexception {properties propis = new Properties(); inputstream input = this.getClass()。getClassLoader().GetResourCeaSStream( "merchantinfo.properties"); propss.load(input); /** 13パラメーターを準備*/文字列P0_CMD = "Buy";文字列P1_MERID = PROPS.GETPROPERTY( "P1_MERID");文字列p2_order = request.getParameter( "oid");文字列p3_amt = "0.01";文字列p4_cur = "cny";文字列p5_pid = "";文字列p6_pcat = "";文字列p7_pdesc = "";文字列p8_url = props.getProperty( "p8_url");文字列p9_saf = "";文字列pa_mp = ""; string pd_frpid = request.getParameter( "pd_frpid");文字列pr_needResponse = "1"; / * * hmac */ string keyvalue = props.getProperty( "keyvalue"); String hmac = Payuntutil.Buildhmac(P0_CMD、P1_MERID、P2_ORDER、P3_AMT、P4_CUR、P5_PID、P6_PCAT、P7_PDESC、P8_URL、P9_SAF、PA_MP、PD_FRPID、PR_NEDRESPENSEPHENS、KEYVALUE); /** yibaoおよび13+1パラメーターのURLを接続*/ stringBuilder url = new StringBuilder(props.getProperty( "url")); url.append( "?p0_cmd =")。append(p0_cmd); url.append( "&p1_merid =")。append(p1_merid); url.append( "&p2_order =")。append(p2_order); url.append( "&p3_amt =")。append(p3_amt); url.append( "&p4_cur =")。append(p4_cur); url.append( "&p5_pid =")。append(p5_pid); url.append( "&p6_pcat =")。append(p6_pcat); url.append( "&p7_pdesc =")。append(p7_pdesc); url.append( "&p8_url =")。append(p8_url); url.append( "&p9_saf =")。append(p9_saf); url.append( "&pa_mp =")。append(pa_mp); url.append( "&pd_frpid =")。append(pd_frpid); url.Append( "&pr_needResponse =")。append(pr_needResponse); url.append( "&hmac =")。append(hmac); System.out.println(url); /** yibaoにリダイレクト*/ respons.sendredirect(url.tostring()); nullを返します。 } /***この方法はyibaoコールバックメソッドです。 Yibaoがこの方法を呼んでいるかどうかを判断する必要があります! * * @param request * @param Response * @return * @throws servletexception * @throws ioexception */ public string back(httpservletrequest request、httpservletresponse response)servletexception、ioexception、ioexception、ioexception {/ *1。get11 + 1 */ string p1_merid = request.getParameter "); string r0_cmd = request.getParameter( "r0_cmd");文字列r1_code = request.getParameter( "r1_code"); string r2_trxid = request.getParameter( "r2_trxid");文字列r3_amt = request.getParameter( "r3_amt");文字列r4_cur = request.getParameter( "r4_cur");文字列r5_pid = request.getParameter( "r5_pid");文字列r6_order = request.getParameter( "r6_order");文字列r7_uid = request.getParameter( "r7_uid");文字列r8_mp = request.getParameter( "r8_mp"); string r9_btype = request.getParameter( "r9_btype"); string hmac = request.getParameter( "hmac"); / * * 2。訪問者がYibaoであるかどうかを確認してください! */ Properties Props = new Properties(); inputstream input = this.getClass()。getClassLoader().GetResourCeaSStream( "merchantinfo.properties"); propss.load(input);文字列keyvalue = props.getProperty( "keyvalue"); boolean bool = paymentutil.verifycallback(hmac、p1_merid、r0_cmd、r1_code、r2_trxid、r3_amt、r4_cur、r5_pid、r6_order、r7_uid、r8_mp、r9_btype、keyvalue); if(!bool){//検証がrequest.setattribute( "msg"、 "あなたは良いことではない!"); "f:/jsps/msg.jsp"を返します。 }/** 3。ステータスの注文を取得し、注文ステータスを変更するかどうかを判断し、ポイントやその他のビジネスオペレーションを追加します*/Orderservice.zhifu(r6_order); //データベースを操作することは可能です。 /** 4。現在のコールバックメソッドを決定*ポイントツーポイントの場合、成功から始まる文字列にフィードバックする必要があります*/ if(r9_btype.equals( "2")){respons.getWriter()。print( "success"); } / * * 5。成功情報を保存してmsg.jsp * / request.setattribute( "msg"、 "支払いが成功しました!売り手が出荷するのを待ってください!あなたが待ってください〜"); "f:/jsps/msg.jsp"を返します。 } /** *領収書の確認 * * @param request * @param Response * @return * @throws servletexception * @throws ioexception * /public string confide(httpservletrequest request、httpservletresponse応答)スローServletexception、ioexception、ioexception { / * * 1。 *成功した情報を保存し、msg.jspに転送します */ string oid = request.getParameter( "oid"); {Orderservice.confirm(oid); request.setattribute( "msg"、 "おめでとうございます、トランザクションは成功しました!"); } catch(orderexception e){request.setattribute( "msg"、e.getmessage()); } "f:/jsps/msg.jsp"を返します。 } /** *注文の読み込み * * @param request * @param Response * @return * @throws servletexception * @throws ioexception * /public string load(httpservletrequestリクエスト、httpservletrequest Response)スローServletexception、ioexception、ioexception { / * * 1。 /jsps/order/desc.jsp */request.setAttribute( "order"、orderservice.load(request.getParameter( "oid"))); "f:/jsps/order/desc.jsp"; } /** *私の注文 * * @param request * @param Response * @return * @throws servletexception * @throws ioexception * /public string myorders(httpservletrequest request、httpservletrequess Response)スローServletexception、ioexception { / * * 1。 OrderService#Myorders(UID)ユーザーリストのすべての注文を取得する<注文> 3。 List <Order> OrderList = OrderService.Myorders(user.getUid()); request.setAttribute( "OrderList"、OrderList); "f:/jsps/order/list.jsp"; } /** *セッションで車を使用して注文オブジェクトを生成する注文を追加 * * @param request * @param Response * @return * @throws servletexception * @throws ioexception * /public string request(httpservletrequest request(httpservletresponse応答)注文4を完了する方法4。 //カートを注文オブジェクトに変換しますorder.setoid(commonutils.uuid()); //番号Order.SetOrderTime(new Date())を設定します。 // set order.setState(1); //注文ステータスを1に設定します。 Order.Setowner(user); //注文所有者order.settotal(cart.getTotal()); //注文合計を設定して、注文エントリコレクションを作成 * * cartitemlist */ list <orderitem> orderitemlist = new arraylist <orderItem>(); //カート内のすべてのcartitemsをループして、各cartitemオブジェクトを使用してorderitemオブジェクトを作成し、(cartitem cartitem:cart.getcartitems()){orderitem oi = new orderitem(); //注文エントリOi.setiid(commonutils.uuid(); oi.setcount(cartitem.getCount()); //エントリ数を設定oi.setbook(cartitem.getbook()) //すべての注文エントリを注文に追加します。 //ショッピングカートをクリアします。clear(); // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// request.setAttribute( "Order"、Order); "/jsps/order/desc.jsp"を返します。 }}2。注文を生成します
3。私の注文(ユーザーによるチェック)
4。注文をロードします(IDでチェック)
5.領収書を確認します
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。