9#if __DCL_HAVE_THIS_FILE__
16void EShopServlet::onViewOrder(
21 Writer& out = ctx.
writer();
22 ListedStringToStringArrayMap& params = ctx.__formMap;
25 String strName = (params[L
"name"])[0];
26 String strTel = (params[L
"tel"])[0];
27 String strAddr = (params[L
"tel"])[0];
31 "INSERT INTO ES_ORDER_MASTER(ORDER_DATETIME, USER_ID,"
32 " DELIVERY_NAME, DELIVERY_TEL, DELIVERY_ADDR)\n"
33 " VALUES(CURRENT_TIMESTAMP, :USER_ID, :DELIVERY_NAME, "
34 " :DELIVERY_TEL, :DELIVERY_ADDR)"
36 q.params()[0].setValue(session.
userID());
37 q.params()[1].setValue(strName);
38 q.params()[2].setValue(strTel);
39 q.params()[3].setValue(strAddr);
43 "SELECT MAX(ORDER_ID) FROM ES_ORDER_MASTER "
44 " WHERE USER_ID = " + String::valueOf(session.
userID())
49 "INSERT INTO ES_ORDER_DETAIL\n"
50 " SELECT " + q.fields()[0].asString() + L
", S.PRODUCT_ID, P.PRICE, S.QUANTITY "
51 " FROM ES_SHOPPING_BASKET S "
52 " INNER JOIN ES_PRODUCT P ON S.PRODUCT_ID = P.PRODUCT_ID \n"
53 " WHERE SESSION_ID = \'" + session.
sessionID() + L
"\'"
57 "DELETE FROM ES_SHOPPING_BASKET "
58 " WHERE SESSION_ID = \'" + session.
sessionID() + L
"\'"
62 SQLQuery qMaster(session.
SQLConn());
64 "SELECT * FROM ES_ORDER_MASTER "
65 " WHERE USER_ID = :USER_ID"
67 qMaster.params()[0].setValue(session.
userID());
71 TextTemplate tpl = *__pViewOrder;
72 TextTemplate& tplOrder = tpl[L
"ORDER"];
73 TextTemplate& tplEmpty = tpl[L
"EMPTY"];
77 tpl.assign(L
"EMPTY", tplEmpty);
80 String strDetailSQL = L
""
81 "SELECT P.IMAGE_FILE_NAME, P.PRODUCT_NAME, P.QUALITY, "
82 " D.PRICE, D.QUANTITY, D.PRICE * D.QUANTITY AS AMOUNT\n"
83 " FROM ES_ORDER_DETAIL D "
84 " INNER JOIN ES_PRODUCT P ON (D.PRODUCT_ID = P.PRODUCT_ID)\n"
85 " WHERE D.ORDER_ID = :ORDER_ID \n"
86 " ORDER BY D.PRODUCT_ID";
88 SQLQuery qDetail(session.
SQLConn());
90 TextTemplate& tplMaster = tplOrder[L
"MASTER_ROW"];
91 TextTemplate& tplDetail = tplMaster[L
"DETAIL_ROW"];
94 while(!qMaster.eof()) {
95 int nOrderID = qMaster.fields().byName(L
"ORDER_ID").asInteger();
100 qDetail.prepare(strDetailSQL);
101 qDetail.params()[0].setValue(nOrderID);
105 int64_t nSubTotal = 0;
106 while(!qDetail.eof()) {
108 qDetail.fields().byName(L
"AMOUNT").getValue(nAmount);
109 nSubTotal += nAmount;
110 tplDetail.assign(qDetail.fields(), L
" ");
113 tplMaster.assign(L
"DETAIL_ROW", tplDetail);
116 tplMaster.append(L
"DETAIL_ROW", tplDetail);
121 tplMaster.assign(L
"SUB_TOTAL", String::valueOf(nSubTotal));
123 tplMaster.assign(qMaster.fields(), L
" ");
124 tplMaster.assign(L
"NO", String::valueOf(nNo++));
125 tplOrder.append(L
"MASTER_ROW", tplMaster);
128 tplOrder.assign(L
"TOTAL", String::valueOf(nTotal));
129 tpl.assign(L
"ORDER", tplOrder);
const String & sessionID() const
SQLConnection * SQLConn() const