Skip to content

Commit 3a60c2d

Browse files
authored
Merge pull request #39 from Waterticket/develop
1.4.8 업데이트
2 parents 10675da + 7bf7f86 commit 3a60c2d

File tree

9 files changed

+227
-5
lines changed

9 files changed

+227
-5
lines changed

conf/info.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
<module version="0.2">
33
<title xml:lang="ko">Hoto Pay</title>
44
<description xml:lang="ko">간단 쇼핑몰 결제 모듈 Hoto Pay 입니다</description>
5-
<version>1.4.7</version>
6-
<date>2023-11-04</date>
5+
<version>1.4.8</version>
6+
<date>2023-12-10</date>
77
<category>service</category>
88
<author email_address="[email protected]" link="https://potatosoft.kr">
99
<name xml:lang="ko">Waterticket</name>

conf/module.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<action name="dispHotopayAdminPurchaseList" type="view" />
1515
<action name="dispHotopayAdminPurchaseData" type="view" />
1616
<action name="dispHotopayAdminNotification" type="view" />
17+
<action name="dispHotopayAdminCartList" type="view" />
1718

1819
<action name="procHotopayAdminInsertConfig" type="controller" />
1920
<action name="procHotopayAdminInsertPaymentGatewayConfig" type="controller" />

hotopay.admin.view.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,4 +515,24 @@ public function dispHotopayAdminDeleteProductExtraInfo()
515515
// 스킨 파일 지정
516516
$this->setTemplateFile('delete_productextrainfo');
517517
}
518+
519+
public function dispHotopayAdminCartList()
520+
{
521+
// 현재 설정 상태 불러오기
522+
$config = $this->getConfig();
523+
$vars = Context::getRequestVars();
524+
525+
// Context에 세팅
526+
Context::set('hotopay_config', $config);
527+
528+
$output = HotopayModel::getCartItemList();
529+
Context::set('cart_item_list', $output->data);
530+
Context::set('total_count', $output->total_count);
531+
Context::set('total_page', $output->total_page);
532+
Context::set('page', $output->page);
533+
Context::set('page_navigation', $output->page_navigation);
534+
535+
// 스킨 파일 지정
536+
$this->setTemplateFile('index_cartlist');
537+
}
518538
}

hotopay.model.php

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -856,7 +856,29 @@ public static function getSubscriptionsByMemberSrl(int $member_srl): array
856856
throw new \Rhymix\Framework\Exceptions\DBError(sprintf("DB Error: %s in %s line %s", $output->getMessage(), __FILE__, __LINE__));
857857
}
858858

859-
return $output->data ?: new \stdClass();
859+
return $output->data ?: [];
860+
}
861+
862+
/**
863+
* hotopay_subscription 테이블에서 유저의 활성화 상태인 구독을 가져온다.
864+
*
865+
* @param int $member_srl
866+
* @param int $product_srl
867+
*/
868+
public static function getActiveSubscriptionsByMemberSrlWithProductSrlAndStatus(int $member_srl, int $product_srl): array
869+
{
870+
$args = new \stdClass();
871+
$args->member_srl = $member_srl;
872+
$args->product_srl = $product_srl;
873+
$args->status = ['ACTIVE'];
874+
875+
$output = executeQueryArray('hotopay.getSubscriptionsByMemberSrlWithProductSrlAndStatus', $args);
876+
if(!$output->toBool())
877+
{
878+
throw new \Rhymix\Framework\Exceptions\DBError(sprintf("DB Error: %s in %s line %s", $output->getMessage(), __FILE__, __LINE__));
879+
}
880+
881+
return $output->data ?: [];
860882
}
861883

862884
/**
@@ -1160,4 +1182,15 @@ public static function updatePurchaseItemSubscriptionSrl(int $item_srl, int $sub
11601182

11611183
return new BaseObject();
11621184
}
1185+
1186+
public static function getCartItemList()
1187+
{
1188+
$output = executeQueryArray('hotopay.getCartItemList');
1189+
if(!$output->toBool())
1190+
{
1191+
throw new \Rhymix\Framework\Exceptions\DBError(sprintf("DB Error: %s in %s line %s", $output->getMessage(), __FILE__, __LINE__));
1192+
}
1193+
1194+
return $output;
1195+
}
11631196
}

queries/getCartItemList.xml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<query id="getCartItemList" action="select">
2+
<tables>
3+
<table name="hotopay_cart" />
4+
<table name="hotopay_product" type="left join">
5+
<conditions>
6+
<condition operation="equal" column="hotopay_product.product_srl" default="hotopay_cart.product_srl" />
7+
</conditions>
8+
</table>
9+
<table name="hotopay_product_option" type="left join">
10+
<conditions>
11+
<condition operation="equal" column="hotopay_product_option.option_srl" default="hotopay_cart.option_srl" />
12+
</conditions>
13+
</table>
14+
</tables>
15+
<columns>
16+
<column name="hotopay_cart.*" />
17+
<column name="hotopay_product.product_name" />
18+
<column name="hotopay_product.product_status" />
19+
<column name="hotopay_product.product_pic_src" />
20+
<column name="hotopay_product.document_srl" />
21+
<column name="hotopay_product.tax_rate" />
22+
<column name="hotopay_product_option.title" alias="option_title" />
23+
<column name="hotopay_product_option.description" alias="option_description" />
24+
<column name="hotopay_product_option.price" alias="option_price" />
25+
<column name="hotopay_product_option.stock" alias="stock" />
26+
<column name="hotopay_product_option.status" alias="option_status" />
27+
</columns>
28+
<conditions>
29+
</conditions>
30+
<navigation>
31+
<index var="sort_index" default="cart_item_srl" order="order_type" />
32+
<list_count var="list_count" default="20" />
33+
<page_count var="page_count" default="10" />
34+
<page var="page" default="1" />
35+
</navigation>
36+
</query>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<query id="getSubscriptionsByMemberSrlWithProductSrlAndStatus" action="select">
2+
<tables>
3+
<table name="hotopay_subscription" />
4+
</tables>
5+
<columns>
6+
<column name="*" />
7+
</columns>
8+
<conditions>
9+
<condition operation="equal" column="member_srl" var="member_srl" filter="number" notnull="notnull" />
10+
<condition operation="equal" column="product_srl" var="product_srl" filter="number" notnull="notnull" pipe="and" />
11+
<condition operation="in" column="status" var="status" notnull="notnull" pipe="and" />
12+
</conditions>
13+
</query>

skins/default/order_success.html

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,4 +261,34 @@
261261
window.onpopstate = function(event) {
262262
history.go(1);
263263
};
264-
</script>
264+
</script>
265+
266+
<!--@if($purchase->reward_point > 0)-->
267+
{@
268+
$reward_point_str = number_format($purchase->reward_point);
269+
}
270+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert2.all.min.js"></script>
271+
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert2.min.css" rel="stylesheet">
272+
273+
<!--@if($pay_data->pay_status == "WAITING_FOR_DEPOSIT")-->
274+
<script>
275+
Swal.fire({
276+
title: '결제해주셔서 감사합니다!',
277+
html: '결제를 완료하신 후에 <b>{$reward_point_str}</b> 포인트를 적립해드리겠습니다!<br>'+
278+
'앞으로도 많은 이용 부탁드립니다 😄',
279+
icon: 'success',
280+
confirmButtonText: '확인'
281+
});
282+
</script>
283+
<!--@else-->
284+
<script>
285+
Swal.fire({
286+
title: '결제해주셔서 감사합니다!',
287+
html: '감사의 마음을 담아 <b>{$reward_point_str}</b> 포인트를 적립해드렸습니다!<br>'+
288+
'앞으로도 많은 이용 부탁드립니다 😄',
289+
icon: 'success',
290+
confirmButtonText: '확인'
291+
});
292+
</script>
293+
<!--@endif-->
294+
<!--@endif-->

tpl/__header.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ <h1>{$lang->cmd_hotopay} <!--@if($isLicenseValid)--><span style="color: rgb(247,
3030
<li class="x_active"|cond="$act == 'dispHotopayAdminPurchaseList' || $act == 'dispHotopayAdminInsertPurchase'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispHotopayAdminPurchaseList')}">결제 목록</a></li>
3131
<li class="x_active"|cond="$act == 'dispHotopayAdminSubscriptionIndex'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispHotopayAdminSubscriptionIndex')}">정기결제 목록</a></li>
3232
<li class="x_active"|cond="$act == 'dispHotopayAdminBillingKeyIndex'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispHotopayAdminBillingKeyIndex')}">결제수단 목록</a></li>
33+
<li class="x_active"|cond="$act == 'dispHotopayAdminCartList'"><a href="{getUrl('', 'module', 'admin', 'act', 'dispHotopayAdminCartList')}">카트 목록</a></li>
3334
</ul>
3435

3536
<!--@if(\Rhymix\Framework\Router::getRewriteLevel() != 2)-->
@@ -45,7 +46,7 @@ <h1>{$lang->cmd_hotopay} <!--@if($isLicenseValid)--><span style="color: rgb(247,
4546
}
4647
<div class="license-icon"></div>
4748
<!--@if ($license_expire_date <= 30)-->
48-
<div class="message info">
49+
<div class="message">
4950
<p>Pro 라이선스 만료까지 {$license_expire_date}일 남았습니다. ({$license_info[1]} 까지) <a href='https://potatosoft.kr/notice/11343' target='_blank'>연장 방법 확인</a></p>
5051
</div>
5152
<!--@endif-->

tpl/index_cartlist.html

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
<include target="__header.html" />
2+
3+
<h1>카트 목록</h1>
4+
5+
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
6+
<p>{$XE_VALIDATOR_MESSAGE}</p>
7+
</div>
8+
9+
<div></div>
10+
<table id="cartList" class="x_table x_table-striped x_table-hover">
11+
<caption>
12+
<strong>Total: {number_format($total_count)}, Page: {number_format($page)}/{number_format($total_page)}</strong>
13+
</caption>
14+
<thead>
15+
<tr>
16+
<th scope="col">아이템 번호</th>
17+
<th scope="col">회원</th>
18+
<th scope="col">상품명</th>
19+
<th scope="col">상품 옵션</th>
20+
<th scope="col">수량</th>
21+
<th scope="col">금액</th>
22+
<th scope="col">카트 등록일</th>
23+
<th scope="col">상세</th>
24+
</tr>
25+
</thead>
26+
<tbody>
27+
<tr loop="$cart_item_list => $no,$val">
28+
{@
29+
$member_data = MemberModel::getMemberInfoByMemberSrl($val->member_srl);
30+
}
31+
<td class="nowr">{$val->cart_item_srl}</td>
32+
<td class="nowr"><a href="#popup_menu_area" class="member_{$val->member_srl}">{$member_data->nick_name}</a> ({$val->member_srl})</td>
33+
<td class="nowr">{$val->product_name}<!--@if($val->product_status != 'selling')--> (삭제됨)<!--@endif--></td>
34+
<td class="nowr">{$val->option_title}</td>
35+
<td class="nowr">{number_format($val->quantity)}</td>
36+
<td class="nowr">₩{number_format($val->option_price * (($val->tax_rate/100) + 1))}</td>
37+
<td class="nowr">{date('Y-m-d H:i:s', strtotime($val->regdate))}</td>
38+
<td class="nowr"><a href="{getUrl('act','dispHotopayAdminModifyProduct','product_srl',$val->product_srl)}" title="상품정보">상품정보</a></td>
39+
</tr>
40+
<tr cond="!$cart_item_list">
41+
<td>{$lang->msg_not_exist_data}</td>
42+
</tr>
43+
</tbody>
44+
</table>
45+
46+
<div class="x_clearfix">
47+
<form cond="$page_navigation" action="./" class="x_pagination x_pull-left" no-error-return-url="true" style="margin-top:0">
48+
<input loop="$param => $key, $val" cond="!in_array($key, array('mid', 'vid', 'act'))" type="hidden" name="{$key}" value="{$val}" />
49+
<ul>
50+
<li class="x_disabled"|cond="!$page || $page == 1"><a href="{getUrl('page', '')}">&laquo; {$lang->first_page}</a></li>
51+
<block cond="$page_navigation->first_page != 1 && $page_navigation->first_page + $page_navigation->page_count > $page_navigation->last_page - 1 && $page_navigation->page_count != $page_navigation->total_page">
52+
{@$isGoTo = true}
53+
<li>
54+
<a href="#goTo" data-toggle title="{$lang->cmd_go_to_page}">&hellip;</a>
55+
<span cond="$isGoTo" id="goTo" class="x_input-append">
56+
<input type="number" min="1" max="{$page_navigation->last_page}" required name="page" title="{$lang->cmd_go_to_page}" />
57+
<button type="submit" class="x_add-on">Go</button>
58+
</span>
59+
</li>
60+
</block>
61+
<!--@while($page_no = $page_navigation->getNextPage())-->
62+
{@$last_page = $page_no}
63+
<li class="x_active"|cond="$page_no == $page"><a href="{getUrl('page', $page_no)}">{$page_no}</a></li>
64+
<!--@end-->
65+
<block cond="$last_page != $page_navigation->last_page && $last_page + 1 != $page_navigation->last_page">
66+
{@$isGoTo = true}
67+
<li>
68+
<a href="#goTo" data-toggle title="{$lang->cmd_go_to_page}">&hellip;</a>
69+
<span cond="$isGoTo" id="goTo" class="x_input-append">
70+
<input type="number" min="1" max="{$page_navigation->last_page}" required name="page" title="{$lang->cmd_go_to_page}" />
71+
<button type="submit" class="x_add-on">Go</button>
72+
</span>
73+
</li>
74+
</block>
75+
<li class="x_disabled"|cond="$page == $page_navigation->last_page"><a href="{getUrl('page', $page_navigation->last_page)}" title="{$page_navigation->last_page}">{$lang->last_page} &raquo;</a></li>
76+
</ul>
77+
</form>
78+
<a class="x_pull-right x_btn x_btn-inverse" href="{getUrl('','module','admin','act','dispHotopayAdminInsertBillingKey')}">{$lang->cmd_make}</a>
79+
</div>
80+
<form action="./" method="get" class="search center x_input-append" no-error-return-url="true">
81+
<input type="hidden" name="module" value="{$module}" />
82+
<select name="search_target" title="{$lang->search_target}" style="margin-right:4px">
83+
<option value="key_idx" selected="selected"|cond="$search_target=='key_idx'">{$lang->key_idx}</option>
84+
</select>
85+
<input type="search" required name="search_keyword" value="{htmlspecialchars($search_keyword)}" />
86+
<button class="x_btn x_btn-inverse" type="submit">{$lang->cmd_search}</button>
87+
<a class="x_btn" href="{getUrl('', 'module', $module, 'act', $act)}">{$lang->cmd_cancel}</a>
88+
</form>

0 commit comments

Comments
 (0)