diff --git a/app/Builders/ImGroupUserList.php b/app/Builders/ImGroupUserList.php
index e8f7a03d..9bdda5be 100644
--- a/app/Builders/ImGroupUserList.php
+++ b/app/Builders/ImGroupUserList.php
@@ -3,6 +3,7 @@
namespace App\Builders;
use App\Repos\ImGroup as ImGroupRepo;
+use App\Repos\User as UserRepo;
class ImGroupUserList extends Builder
{
@@ -24,20 +25,43 @@ class ImGroupUserList extends Builder
$groupRepo = new ImGroupRepo();
- $columns = ['id', 'type', 'name', 'avatar', 'about', 'user_count'];
+ $columns = ['id', 'type', 'name', 'avatar', 'about', 'owner_id', 'user_count'];
$groups = $groupRepo->findByIds($ids, $columns);
+ $users = $this->getGroupOwners($groups->toArray());
+
$baseUrl = kg_ci_base_url();
$result = [];
foreach ($groups->toArray() as $group) {
- $group['group'] = $baseUrl . $group['avatar'];
+ $group['avatar'] = $baseUrl . $group['avatar'];
+ $group['owner'] = $users[$group['owner_id']] ?? new \stdClass();
+ unset($group['owner_id']);
$result[$group['id']] = $group;
}
return $result;
}
+ protected function getGroupOwners(array $groups)
+ {
+ $ids = kg_array_column($groups, 'owner_id');
+
+ $userRepo = new UserRepo();
+
+ $users = $userRepo->findByIds($ids, ['id', 'name']);
+
+ $result = [];
+
+ if ($users->count() > 0) {
+ foreach ($users->toArray() as $user) {
+ $result[$user['id']] = $user;
+ }
+ }
+
+ return $result;
+ }
+
}
diff --git a/app/Builders/NavTreeList.php b/app/Builders/NavTreeList.php
index 950752c6..ef6bb4a3 100644
--- a/app/Builders/NavTreeList.php
+++ b/app/Builders/NavTreeList.php
@@ -62,7 +62,8 @@ class NavTreeList extends Builder
{
return NavModel::query()
->where('parent_id = :parent_id:', ['parent_id' => $navId])
- ->andWhere('deleted = 0')
+ ->andWhere('published = 1')
+ ->orderBy('priority ASC')
->execute();
}
@@ -74,7 +75,8 @@ class NavTreeList extends Builder
{
return NavModel::query()
->where('position = :position:', ['position' => $position])
- ->andWhere('level = 1 AND deleted = 0')
+ ->andWhere('level = 1 AND published = 1')
+ ->orderBy('priority ASC')
->execute();
}
diff --git a/app/Builders/OrderList.php b/app/Builders/OrderList.php
index fb63c54d..18caf72b 100644
--- a/app/Builders/OrderList.php
+++ b/app/Builders/OrderList.php
@@ -24,7 +24,7 @@ class OrderList extends Builder
$users = $this->getUsers($orders);
foreach ($orders as $key => $order) {
- $orders[$key]['user'] = $users[$order['user_id']] ?? new \stdClass();
+ $orders[$key]['owner'] = $users[$order['owner_id']] ?? new \stdClass();
}
return $orders;
@@ -130,7 +130,7 @@ class OrderList extends Builder
*/
protected function getUsers(array $orders)
{
- $ids = kg_array_column($orders, 'user_id');
+ $ids = kg_array_column($orders, 'owner_id');
$userRepo = new UserRepo();
diff --git a/app/Builders/RefundList.php b/app/Builders/RefundList.php
index 855d29d8..c7e6aea8 100644
--- a/app/Builders/RefundList.php
+++ b/app/Builders/RefundList.php
@@ -24,7 +24,7 @@ class RefundList extends Builder
$users = $this->getUsers($refunds);
foreach ($refunds as $key => $refund) {
- $refunds[$key]['user'] = $users[$refund['user_id']] ?? new \stdClass();
+ $refunds[$key]['owner'] = $users[$refund['owner_id']] ?? new \stdClass();
}
return $refunds;
@@ -49,7 +49,7 @@ class RefundList extends Builder
public function getUsers(array $refunds)
{
- $ids = kg_array_column($refunds, 'user_id');
+ $ids = kg_array_column($refunds, 'owner_id');
$userRepo = new UserRepo();
diff --git a/app/Builders/TradeList.php b/app/Builders/TradeList.php
index 8e032972..d3199abb 100644
--- a/app/Builders/TradeList.php
+++ b/app/Builders/TradeList.php
@@ -24,7 +24,7 @@ class TradeList extends Builder
$users = $this->getUsers($trades);
foreach ($trades as $key => $trade) {
- $trades[$key]['user'] = $users[$trade['user_id']] ?? new \stdClass();
+ $trades[$key]['owner'] = $users[$trade['owner_id']] ?? new \stdClass();
}
return $trades;
@@ -49,7 +49,7 @@ class TradeList extends Builder
public function getUsers($trades)
{
- $ids = kg_array_column($trades, 'user_id');
+ $ids = kg_array_column($trades, 'owner_id');
$userRepo = new UserRepo();
diff --git a/app/Http/Admin/Controllers/OrderController.php b/app/Http/Admin/Controllers/OrderController.php
index ae85b4da..2fd302a1 100644
--- a/app/Http/Admin/Controllers/OrderController.php
+++ b/app/Http/Admin/Controllers/OrderController.php
@@ -40,8 +40,8 @@ class OrderController extends Controller
$order = $orderService->getOrder($id);
$trades = $orderService->getTrades($order->id);
$refunds = $orderService->getRefunds($order->id);
- $account = $orderService->getAccount($order->user_id);
- $user = $orderService->getUser($order->user_id);
+ $account = $orderService->getAccount($order->owner_id);
+ $user = $orderService->getUser($order->owner_id);
$this->view->setVar('order', $order);
$this->view->setVar('trades', $trades);
@@ -51,43 +51,15 @@ class OrderController extends Controller
}
/**
- * @Post("/{id:[0-9]+}/close", name="admin.order.close")
+ * @Get("/{id:[0-9]+}/statuses", name="admin.order.statuses")
*/
- public function closeAction($id)
+ public function statusesAction($id)
{
$orderService = new OrderService();
- $orderService->closeOrder($id);
+ $statuses = $orderService->getStatusHistory($id);
- $location = $this->request->getHTTPReferer();
-
- $content = [
- 'location' => $location,
- 'msg' => '关闭订单成功',
- ];
-
- return $this->jsonSuccess($content);
- }
-
- /**
- * @Post("/refund", name="admin.order.refund")
- */
- public function refundAction()
- {
- $tradeId = $this->request->getPost('trade_id', 'int');
-
- $orderService = new OrderService;
-
- $orderService->refundTrade($tradeId);
-
- $location = $this->request->getHTTPReferer();
-
- $content = [
- 'location' => $location,
- 'msg' => '订单退款成功',
- ];
-
- return $this->jsonSuccess($content);
+ $this->view->setVar('statuses', $statuses);
}
}
diff --git a/app/Http/Admin/Controllers/RefundController.php b/app/Http/Admin/Controllers/RefundController.php
index 7901929a..b0c1df05 100644
--- a/app/Http/Admin/Controllers/RefundController.php
+++ b/app/Http/Admin/Controllers/RefundController.php
@@ -40,8 +40,8 @@ class RefundController extends Controller
$refund = $refundService->getRefund($id);
$order = $refundService->getOrder($refund->order_id);
$trade = $refundService->getTrade($refund->trade_id);
- $account = $refundService->getAccount($trade->user_id);
- $user = $refundService->getUser($trade->user_id);
+ $account = $refundService->getAccount($trade->owner_id);
+ $user = $refundService->getUser($trade->owner_id);
$this->view->setVar('refund', $refund);
$this->view->setVar('order', $order);
@@ -50,6 +50,18 @@ class RefundController extends Controller
$this->view->setVar('user', $user);
}
+ /**
+ * @Get("/{id:[0-9]+}/statuses", name="admin.refund.statuses")
+ */
+ public function statusesAction($id)
+ {
+ $refundService = new RefundService();
+
+ $statuses = $refundService->getStatusHistory($id);
+
+ $this->view->setVar('statuses', $statuses);
+ }
+
/**
* @Post("/{id:[0-9]+}/review", name="admin.refund.review")
*/
diff --git a/app/Http/Admin/Controllers/TradeController.php b/app/Http/Admin/Controllers/TradeController.php
index 44ec58d8..add93e79 100644
--- a/app/Http/Admin/Controllers/TradeController.php
+++ b/app/Http/Admin/Controllers/TradeController.php
@@ -40,8 +40,8 @@ class TradeController extends Controller
$trade = $tradeService->getTrade($id);
$refunds = $tradeService->getRefunds($trade->id);
$order = $tradeService->getOrder($trade->order_id);
- $account = $tradeService->getAccount($trade->user_id);
- $user = $tradeService->getUser($trade->user_id);
+ $account = $tradeService->getAccount($trade->owner_id);
+ $user = $tradeService->getUser($trade->owner_id);
$this->view->setVar('refunds', $refunds);
$this->view->setVar('trade', $trade);
@@ -51,22 +51,15 @@ class TradeController extends Controller
}
/**
- * @Post("/{id:[0-9]+}/close", name="admin.trade.close")
+ * @Get("/{id:[0-9]+}/statuses", name="admin.trade.statuses")
*/
- public function closeAction($id)
+ public function statusesAction($id)
{
$tradeService = new TradeService();
- $tradeService->closeTrade($id);
+ $statuses = $tradeService->getStatusHistory($id);
- $location = $this->request->getHTTPReferer();
-
- $content = [
- 'location' => $location,
- 'msg' => '关闭交易成功',
- ];
-
- return $this->jsonSuccess($content);
+ $this->view->setVar('statuses', $statuses);
}
/**
diff --git a/app/Http/Admin/Services/Order.php b/app/Http/Admin/Services/Order.php
index 858214c1..d43adf42 100644
--- a/app/Http/Admin/Services/Order.php
+++ b/app/Http/Admin/Services/Order.php
@@ -64,6 +64,13 @@ class Order extends Service
return $this->findOrFail($id);
}
+ public function getStatusHistory($id)
+ {
+ $orderRepo = new OrderRepo();
+
+ return $orderRepo->findStatusHistory($id);
+ }
+
protected function findOrFail($id)
{
$validator = new OrderValidator();
diff --git a/app/Http/Admin/Services/PayTest.php b/app/Http/Admin/Services/PayTest.php
index 35bac228..99824649 100644
--- a/app/Http/Admin/Services/PayTest.php
+++ b/app/Http/Admin/Services/PayTest.php
@@ -32,7 +32,7 @@ abstract class PayTest extends Service
$order->subject = '测试 - 支付测试0.01元';
$order->amount = 0.01;
- $order->user_id = $authUser['id'];
+ $order->owner_id = $authUser['id'];
$order->item_type = OrderModel::ITEM_TEST;
$order->create();
@@ -50,7 +50,7 @@ abstract class PayTest extends Service
{
$trade = new TradeModel();
- $trade->user_id = $order->user_id;
+ $trade->owner_id = $order->owner_id;
$trade->order_id = $order->id;
$trade->subject = $order->subject;
$trade->amount = $order->amount;
diff --git a/app/Http/Admin/Services/Refund.php b/app/Http/Admin/Services/Refund.php
index 06541519..e0df2bc9 100644
--- a/app/Http/Admin/Services/Refund.php
+++ b/app/Http/Admin/Services/Refund.php
@@ -47,6 +47,13 @@ class Refund extends Service
return $this->findOrFail($id);
}
+ public function getStatusHistory($id)
+ {
+ $refundRepo = new RefundRepo();
+
+ return $refundRepo->findStatusHistory($id);
+ }
+
public function getTrade($tradeId)
{
$tradeRepo = new TradeRepo();
diff --git a/app/Http/Admin/Services/Trade.php b/app/Http/Admin/Services/Trade.php
index c0279fb4..b471c9c0 100644
--- a/app/Http/Admin/Services/Trade.php
+++ b/app/Http/Admin/Services/Trade.php
@@ -47,6 +47,13 @@ class Trade extends Service
return $tradeRepo->findById($id);
}
+ public function getStatusHistory($id)
+ {
+ $tradeRepo = new TradeRepo();
+
+ return $tradeRepo->findStatusHistory($id);
+ }
+
public function getOrder($orderId)
{
$orderRepo = new OrderRepo();
@@ -87,7 +94,7 @@ class Trade extends Service
$refund->subject = $trade->subject;
$refund->amount = $trade->amount;
- $refund->user_id = $trade->user_id;
+ $refund->owner_id = $trade->owner_id;
$refund->order_id = $trade->order_id;
$refund->trade_id = $trade->id;
$refund->apply_note = '后台人工申请退款';
diff --git a/app/Http/Admin/Views/group/list.volt b/app/Http/Admin/Views/group/list.volt
index 0f4638f1..28c448ac 100644
--- a/app/Http/Admin/Views/group/list.volt
+++ b/app/Http/Admin/Views/group/list.volt
@@ -1,3 +1,11 @@
+{%- macro type_info(value) %}
+ {% if value == 'course' %}
+ 课
+ {% elseif value == 'chat' %}
+ 聊
+ {% endif %}
+{%- endmacro %}
+
{%- macro owner_info(owner) %}
{% if owner %}
{{ owner.name }}({{ owner.id }})
@@ -42,7 +50,7 @@
{% for item in pager.items %}
{{ item.id }}
- {{ item.name }}
+ {{ item.name }} {{ type_info(item.type) }}
{{ owner_info(item.owner) }}
{{ item.user_count }}
diff --git a/app/Http/Admin/Views/order/list.volt b/app/Http/Admin/Views/order/list.volt
index cc892321..0c5ada41 100644
--- a/app/Http/Admin/Views/order/list.volt
+++ b/app/Http/Admin/Views/order/list.volt
@@ -40,8 +40,8 @@
单号:{{ item.sn }}
- 昵称:{{ item.user.name }}
- 编号:{{ item.user.id }}
+ 昵称:{{ item.owner.name }}
+ 编号:{{ item.owner.id }}
{{ '¥%0.2f'|format(item.amount) }}
{{ order_status(item.status) }}
diff --git a/app/Http/Admin/Views/order/order_info.volt b/app/Http/Admin/Views/order/order_info.volt
index 666dafc0..74434b77 100644
--- a/app/Http/Admin/Views/order/order_info.volt
+++ b/app/Http/Admin/Views/order/order_info.volt
@@ -1,3 +1,5 @@
+{% set order_status_url = url({'for':'admin.order.statuses','id':order.id}) %}
+
订单信息
@@ -11,6 +13,7 @@
订单金额
订单类型
订单状态
+ 历史状态
创建时间
@@ -18,6 +21,24 @@
{{ '¥%0.2f'|format(order.amount) }}
{{ item_type(order.item_type) }}
{{ order_status(order.status) }}
+
+ 详情
+
{{ date('Y-m-d H:i:s',order.create_time) }}
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/Http/Admin/Views/order/search.volt b/app/Http/Admin/Views/order/search.volt
index 42ae4f38..e98fdcff 100644
--- a/app/Http/Admin/Views/order/search.volt
+++ b/app/Http/Admin/Views/order/search.volt
@@ -7,7 +7,7 @@
diff --git a/app/Http/Admin/Views/order/show.volt b/app/Http/Admin/Views/order/show.volt
index 0511e734..5821d02d 100644
--- a/app/Http/Admin/Views/order/show.volt
+++ b/app/Http/Admin/Views/order/show.volt
@@ -27,8 +27,8 @@
{{ item.sn }}
{{ '¥%0.2f'|format(item.amount) }}
- {{ substr(item.apply_note,0,15) }}
- {{ refund_status(item) }}
+ {{ substr(item.apply_note,0,15) }}
+ {{ refund_status(item.status) }}
{{ date('Y-m-d H:i:s',item.create_time) }}
详情
diff --git a/app/Http/Admin/Views/order/statuses.volt b/app/Http/Admin/Views/order/statuses.volt
new file mode 100644
index 00000000..f3a4f620
--- /dev/null
+++ b/app/Http/Admin/Views/order/statuses.volt
@@ -0,0 +1,14 @@
+{{ partial('order/macro') }}
+
+
+
+ 状态
+ 时间
+
+ {% for item in statuses %}
+
+ {{ order_status(item.status) }}
+ {{ date('Y-m-d H:i:s',item.create_time) }}
+
+ {% endfor %}
+
\ No newline at end of file
diff --git a/app/Http/Admin/Views/refund/list.volt b/app/Http/Admin/Views/refund/list.volt
index 27abc8ed..ca0e6e69 100644
--- a/app/Http/Admin/Views/refund/list.volt
+++ b/app/Http/Admin/Views/refund/list.volt
@@ -40,8 +40,8 @@
单号:{{ item.order.sn }}
- 昵称:{{ item.user.name }}
- 编号:{{ item.user.id }}
+ 昵称:{{ item.owner.name }}
+ 编号:{{ item.owner.id }}
{{ '¥%0.2f'|format(item.amount) }}
{{ refund_status(item.status) }}
diff --git a/app/Http/Admin/Views/refund/macro.volt b/app/Http/Admin/Views/refund/macro.volt
index 229c1a40..2b593d36 100644
--- a/app/Http/Admin/Views/refund/macro.volt
+++ b/app/Http/Admin/Views/refund/macro.volt
@@ -12,4 +12,22 @@
{% elseif value == 'failed' %}
已失败
{% endif %}
+{%- endmacro %}
+
+{%- macro refund_status_history(items) %}
+ {% for item in items %}
+ {% if item.status == 'pending' %}
+ 创建时间:{{ date('Y-m-d H:i:s',item.create_time) }}
+ {% elseif item.status == 'canceled' %}
+ 取消时间:{{ date('Y-m-d H:i:s',item.create_time) }}
+ {% elseif item.status == 'approved' %}
+ 过审时间:{{ date('Y-m-d H:i:s',item.create_time) }}
+ {% elseif item.status == 'refused' %}
+ 拒绝时间:{{ date('Y-m-d H:i:s',item.create_time) }}
+ {% elseif item.status == 'finished' %}
+ 完成时间:{{ date('Y-m-d H:i:s',item.create_time) }}
+ {% elseif item.status == 'failed' %}
+ 失败时间:{{ date('Y-m-d H:i:s',item.create_time) }}
+ {% endif %}
+ {% endfor %}
{%- endmacro %}
\ No newline at end of file
diff --git a/app/Http/Admin/Views/refund/search.volt b/app/Http/Admin/Views/refund/search.volt
index 5d81b273..51946a9d 100644
--- a/app/Http/Admin/Views/refund/search.volt
+++ b/app/Http/Admin/Views/refund/search.volt
@@ -14,7 +14,7 @@
diff --git a/app/Http/Admin/Views/refund/show.volt b/app/Http/Admin/Views/refund/show.volt
index 5a0a0c61..b1c6d3d4 100644
--- a/app/Http/Admin/Views/refund/show.volt
+++ b/app/Http/Admin/Views/refund/show.volt
@@ -2,6 +2,8 @@
{{ partial('trade/macro') }}
{{ partial('refund/macro') }}
+{% set refund_status_url = url({'for':'admin.refund.statuses','id':refund.id}) %}
+
退款信息
@@ -12,6 +14,7 @@
退款金额
退款备注
退款状态
+ 历史状态
创建时间
@@ -26,6 +29,9 @@
{% endif %}
{{ refund_status(refund.status) }}
+
+ 详情
+
{{ date('Y-m-d H:i:s',refund.create_time) }}
@@ -74,4 +80,19 @@
-{{ partial('order/user_info') }}
\ No newline at end of file
+{{ partial('order/user_info') }}
+
+
\ No newline at end of file
diff --git a/app/Http/Admin/Views/refund/statuses.volt b/app/Http/Admin/Views/refund/statuses.volt
new file mode 100644
index 00000000..7f65791f
--- /dev/null
+++ b/app/Http/Admin/Views/refund/statuses.volt
@@ -0,0 +1,14 @@
+{{ partial('refund/macro') }}
+
+
+
+ 状态
+ 时间
+
+ {% for item in statuses %}
+
+ {{ refund_status(item.status) }}
+ {{ date('Y-m-d H:i:s',item.create_time) }}
+
+ {% endfor %}
+
\ No newline at end of file
diff --git a/app/Http/Admin/Views/setting/pay_alipay_test.volt b/app/Http/Admin/Views/setting/pay_alipay_test.volt
index 4e5f5c64..e9928f7b 100644
--- a/app/Http/Admin/Views/setting/pay_alipay_test.volt
+++ b/app/Http/Admin/Views/setting/pay_alipay_test.volt
@@ -46,7 +46,7 @@
clearInterval(interval);
}
},
- error: function (xhr) {
+ error: function () {
$('#error-tips').removeClass('layui-hide');
$('#qrcode').addClass('layui-hide');
clearInterval(interval);
diff --git a/app/Http/Admin/Views/setting/pay_wxpay_test.volt b/app/Http/Admin/Views/setting/pay_wxpay_test.volt
index 8ba62ff0..50a4a8ac 100644
--- a/app/Http/Admin/Views/setting/pay_wxpay_test.volt
+++ b/app/Http/Admin/Views/setting/pay_wxpay_test.volt
@@ -46,7 +46,7 @@
clearInterval(interval);
}
},
- error: function (xhr) {
+ error: function () {
$('#error-tips').removeClass('layui-hide');
$('#qrcode').addClass('layui-hide');
clearInterval(interval);
diff --git a/app/Http/Admin/Views/trade/list.volt b/app/Http/Admin/Views/trade/list.volt
index cc8205ec..f57e4f80 100644
--- a/app/Http/Admin/Views/trade/list.volt
+++ b/app/Http/Admin/Views/trade/list.volt
@@ -42,8 +42,8 @@
单号:{{ item.order.sn }}
- 昵称:{{ item.user.name }}
- 编号:{{ item.user.id }}
+ 昵称:{{ item.owner.name }}
+ 编号:{{ item.owner.id }}
{{ '¥%0.2f'|format(item.amount) }}
{{ channel_type(item.channel) }}
diff --git a/app/Http/Admin/Views/trade/macro.volt b/app/Http/Admin/Views/trade/macro.volt
index 65b269f5..57ff020a 100644
--- a/app/Http/Admin/Views/trade/macro.volt
+++ b/app/Http/Admin/Views/trade/macro.volt
@@ -1,3 +1,11 @@
+{%- macro channel_type(value) %}
+ {% if value == 'alipay' %}
+ 支付宝
+ {% elseif value == 'wxpay' %}
+ 微信
+ {% endif %}
+{%- endmacro %}
+
{%- macro trade_status(value) %}
{% if value == 'pending' %}
待支付
@@ -10,10 +18,16 @@
{% endif %}
{%- endmacro %}
-{%- macro channel_type(value) %}
- {% if value == 'alipay' %}
- 支付宝
- {% elseif value == 'wxpay' %}
- 微信
- {% endif %}
+{%- macro trade_status_history(items) %}
+ {% for item in items %}
+ {% if item.status == 'pending' %}
+ 创建时间:{{ date('Y-m-d H:i:s',item.create_time) }}
+ {% elseif item.status == 'finished' %}
+ 完成时间:{{ date('Y-m-d H:i:s',item.create_time) }}
+ {% elseif item.status == 'closed' %}
+ 关闭时间:{{ date('Y-m-d H:i:s',item.create_time) }}
+ {% elseif item.status == 'refunded' %}
+ 退款时间:{{ date('Y-m-d H:i:s',item.create_time) }}
+ {% endif %}
+ {% endfor %}
{%- endmacro %}
\ No newline at end of file
diff --git a/app/Http/Admin/Views/trade/search.volt b/app/Http/Admin/Views/trade/search.volt
index 70f38476..7c845e6e 100644
--- a/app/Http/Admin/Views/trade/search.volt
+++ b/app/Http/Admin/Views/trade/search.volt
@@ -14,7 +14,7 @@
diff --git a/app/Http/Admin/Views/trade/show.volt b/app/Http/Admin/Views/trade/show.volt
index c0ad90ba..02aa5ee2 100644
--- a/app/Http/Admin/Views/trade/show.volt
+++ b/app/Http/Admin/Views/trade/show.volt
@@ -30,7 +30,7 @@
{{ item.sn }}
{{ '¥%0.2f'|format(item.amount) }}
- {{ substr(item.apply_note,0,15) }}
+ {{ substr(item.apply_note,0,15) }}
{{ refund_status(item) }}
{{ date('Y-m-d H:i:s',item.create_time) }}
详情
diff --git a/app/Http/Admin/Views/trade/statuses.volt b/app/Http/Admin/Views/trade/statuses.volt
new file mode 100644
index 00000000..541cc7fb
--- /dev/null
+++ b/app/Http/Admin/Views/trade/statuses.volt
@@ -0,0 +1,14 @@
+{{ partial('trade/macro') }}
+
+
+
+ 状态
+ 时间
+
+ {% for item in statuses %}
+
+ {{ trade_status(item.status) }}
+ {{ date('Y-m-d H:i:s',item.create_time) }}
+
+ {% endfor %}
+
\ No newline at end of file
diff --git a/app/Http/Admin/Views/trade/trade_info.volt b/app/Http/Admin/Views/trade/trade_info.volt
index 560c189e..c7d27a6d 100644
--- a/app/Http/Admin/Views/trade/trade_info.volt
+++ b/app/Http/Admin/Views/trade/trade_info.volt
@@ -1,3 +1,5 @@
+{% set trade_status_url = url({'for':'admin.trade.statuses','id':trade.id}) %}
+
交易信息
@@ -8,6 +10,7 @@
交易金额
交易平台
交易状态
+ 历史状态
创建时间
@@ -15,6 +18,24 @@
{{ '¥%0.2f'|format(trade.amount) }}
{{ channel_type(trade.channel) }}
{{ trade_status(trade.status) }}
+
+ 详情
+
{{ date('Y-m-d H:i:s',trade.create_time) }}
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/Http/Web/Controllers/ImController.php b/app/Http/Web/Controllers/ImController.php
index c48ea999..5f90e478 100644
--- a/app/Http/Web/Controllers/ImController.php
+++ b/app/Http/Web/Controllers/ImController.php
@@ -337,4 +337,32 @@ class ImController extends LayerController
return $this->jsonSuccess();
}
+ /**
+ * @Post("/friend/{id:[0-9]+}/quit", name="web.im.quit_friend")
+ */
+ public function quitFriendAction($id)
+ {
+ $service = new ImService();
+
+ $service->quitFriend($id);
+
+ $content = ['msg' => '解除好友成功'];
+
+ return $this->jsonSuccess($content);
+ }
+
+ /**
+ * @Post("/group/{id:[0-9]+}/quit", name="web.im.quit_group")
+ */
+ public function quitGroupAction($id)
+ {
+ $service = new ImService();
+
+ $service->quitGroup($id);
+
+ $content = ['msg' => '退出群组成功'];
+
+ return $this->jsonSuccess($content);
+ }
+
}
diff --git a/app/Http/Web/Controllers/ImGroupController.php b/app/Http/Web/Controllers/ImGroupController.php
new file mode 100644
index 00000000..0d9dd7e8
--- /dev/null
+++ b/app/Http/Web/Controllers/ImGroupController.php
@@ -0,0 +1,59 @@
+handle($this->authUser->id);
+ $pager = $service->handle();
$pager->items = kg_array_object($pager->items);
@@ -169,9 +167,9 @@ class MyController extends Controller
*/
public function groupsAction()
{
- $service = new UserGroupListService();
+ $service = new MyGroupListService();
- $pager = $service->handle($this->authUser->id);
+ $pager = $service->handle();
$pager->items = kg_array_object($pager->items);
@@ -192,32 +190,4 @@ class MyController extends Controller
return $this->jsonSuccess($content);
}
- /**
- * @Post("/friend/{id:[0-9]+}/delete", name="web.my.delete_friend")
- */
- public function deleteFriendAction($id)
- {
- $service = new MyFriendDeleteService();
-
- $service->handle($id);
-
- $content = ['msg' => '删除好友成功'];
-
- return $this->jsonSuccess($content);
- }
-
- /**
- * @Post("/group/{id:[0-9]+}/delete", name="web.my.delete_group")
- */
- public function deleteGroupAction($id)
- {
- $service = new MyGroupDeleteService();
-
- $service->handle($id);
-
- $content = ['msg' => '退出群组成功'];
-
- return $this->jsonSuccess($content);
- }
-
}
diff --git a/app/Http/Web/Services/ImFriendTrait.php b/app/Http/Web/Services/ImFriendTrait.php
index 529257eb..0db29816 100644
--- a/app/Http/Web/Services/ImFriendTrait.php
+++ b/app/Http/Web/Services/ImFriendTrait.php
@@ -129,6 +129,19 @@ Trait ImFriendTrait
$this->handleRefuseFriendNotice($user, $sender);
}
+ public function quitFriend($id)
+ {
+ $user = $this->getLoginUser();
+
+ $validator = new ImFriendUserValidator();
+
+ $friend = $validator->checkFriend($id);
+
+ $friendUser = $validator->checkFriendUser($user->id, $friend->id);
+
+ $friendUser->delete();
+ }
+
protected function handleApplyFriendNotice(ImUserModel $sender, ImUserModel $receiver, ImFriendGroupModel $group, $remark)
{
$userRepo = new ImUserRepo();
diff --git a/app/Http/Web/Services/ImGroup.php b/app/Http/Web/Services/ImGroup.php
new file mode 100644
index 00000000..18afa1ac
--- /dev/null
+++ b/app/Http/Web/Services/ImGroup.php
@@ -0,0 +1,28 @@
+handleRefuseGroupNotice($user, $sender);
}
+ public function quitGroup($id)
+ {
+ $loginUser = $this->getLoginUser();
+
+ $user = $this->getImUser($loginUser->id);
+
+ $validator = new ImGroupUserValidator();
+
+ $group = $validator->checkGroup($id);
+
+ $groupUser = $validator->checkGroupUser($group->id, $user->id);
+
+ $groupUser->delete();
+
+ $this->decrGroupUserCount($group);
+
+ $this->decrUserGroupCount($user);
+ }
+
protected function handleApplyGroupNotice(ImUserModel $sender, ImGroupModel $group, $remark)
{
$userRepo = new ImUserRepo();
diff --git a/app/Http/Web/Views/my/friends.volt b/app/Http/Web/Views/my/friends.volt
index a032969c..c302c498 100644
--- a/app/Http/Web/Views/my/friends.volt
+++ b/app/Http/Web/Views/my/friends.volt
@@ -38,9 +38,9 @@
{% for item in pager.items %}
{% set user_url = url({'for':'web.user.show','id':item.id}) %}
- {% set delete_url = url({'for':'web.my.delete_friend','id':item.id}) %}
+ {% set delete_url = url({'for':'web.im.quit_friend','id':item.id}) %}
- {{ item.name }}
+ {{ item.name }}
{{ gender_info(item.gender) }}
{{ item.location }}
{{ item.active_time|time_ago }}
diff --git a/app/Http/Web/Views/my/groups.volt b/app/Http/Web/Views/my/groups.volt
index b183b2a7..6e221af8 100644
--- a/app/Http/Web/Views/my/groups.volt
+++ b/app/Http/Web/Views/my/groups.volt
@@ -18,6 +18,7 @@
{% if pager.total_pages > 0 %}
+
@@ -25,18 +26,26 @@
名称
- 成员数
+ 群主
+ 成员
操作
{% for item in pager.items %}
- {% set delete_url = url({'for':'web.my.delete_group','id':item.id}) %}
+ {% set owner_url = url({'for':'web.user.show','id':item.owner.id}) %}
+ {% set manage_url = url({'for':'web.im_group.manage','id':item.id}) %}
+ {% set delete_url = url({'for':'web.im.quit_group','id':item.id}) %}
- {{ item.name }} {{ type_info(item.type) }}
+ {{ item.name }} {{ type_info(item.type) }}
+ {{ item.owner.name }}
{{ item.user_count }}
- 退出
+ {% if auth_user.id == item.owner.id %}
+ 管理
+ {% else %}
+ 退出
+ {% endif %}
{% endfor %}
diff --git a/app/Http/Web/Views/order/pay.volt b/app/Http/Web/Views/order/pay.volt
index e2775dfe..0392f098 100644
--- a/app/Http/Web/Views/order/pay.volt
+++ b/app/Http/Web/Views/order/pay.volt
@@ -24,8 +24,8 @@
-
-
+
+
diff --git a/app/Http/Web/Views/partials/header.volt b/app/Http/Web/Views/partials/header.volt
index e2aa1762..02f6b4b1 100644
--- a/app/Http/Web/Views/partials/header.volt
+++ b/app/Http/Web/Views/partials/header.volt
@@ -3,20 +3,16 @@
diff --git a/app/Models/ImGroup.php b/app/Models/ImGroup.php
index 289e8a72..191328bf 100644
--- a/app/Models/ImGroup.php
+++ b/app/Models/ImGroup.php
@@ -133,6 +133,10 @@ class ImGroup extends Model
if ($this->deleted == 1) {
$this->published = 0;
}
+
+ if (Text::startsWith($this->avatar, 'http')) {
+ $this->avatar = self::getAvatarPath($this->avatar);
+ }
}
public function afterFetch()
diff --git a/app/Models/Order.php b/app/Models/Order.php
index 01eb8e46..680f9a5c 100644
--- a/app/Models/Order.php
+++ b/app/Models/Order.php
@@ -65,7 +65,7 @@ class Order extends Model
*
* @var int
*/
- public $user_id;
+ public $owner_id;
/**
* 条目编号
diff --git a/app/Models/Refund.php b/app/Models/Refund.php
index 595b254e..736ab10c 100644
--- a/app/Models/Refund.php
+++ b/app/Models/Refund.php
@@ -29,7 +29,7 @@ class Refund extends Model
*
* @var string
*/
- public $user_id;
+ public $owner_id;
/**
* 订单编号
diff --git a/app/Models/Trade.php b/app/Models/Trade.php
index cd5e345b..357e3f9b 100644
--- a/app/Models/Trade.php
+++ b/app/Models/Trade.php
@@ -33,7 +33,7 @@ class Trade extends Model
*
* @var int
*/
- public $user_id;
+ public $owner_id;
/**
* 订单编号
diff --git a/app/Repos/Order.php b/app/Repos/Order.php
index 20436be4..5c6972c2 100644
--- a/app/Repos/Order.php
+++ b/app/Repos/Order.php
@@ -30,8 +30,8 @@ class Order extends Repository
$builder->andWhere('sn = :sn:', ['sn' => $where['sn']]);
}
- if (!empty($where['user_id'])) {
- $builder->andWhere('user_id = :user_id:', ['user_id' => $where['user_id']]);
+ if (!empty($where['owner_id'])) {
+ $builder->andWhere('owner_id = :owner_id:', ['owner_id' => $where['owner_id']]);
}
if (!empty($where['item_id'])) {
@@ -105,7 +105,7 @@ class Order extends Repository
$status = OrderModel::STATUS_FINISHED;
return OrderModel::findFirst([
- 'conditions' => 'user_id = ?1 AND item_id = ?2 AND item_type = ?3 AND status = ?4',
+ 'conditions' => 'owner_id = ?1 AND item_id = ?2 AND item_type = ?3 AND status = ?4',
'bind' => [1 => $userId, 2 => $itemId, 3 => $itemType, 4 => $status],
'order' => 'id DESC',
]);
@@ -122,7 +122,7 @@ class Order extends Repository
$status = OrderModel::STATUS_PENDING;
return OrderModel::findFirst([
- 'conditions' => 'user_id = ?1 AND item_id = ?2 AND item_type = ?3 AND status= ?4',
+ 'conditions' => 'owner_id = ?1 AND item_id = ?2 AND item_type = ?3 AND status= ?4',
'bind' => [1 => $userId, 2 => $itemId, 3 => $itemType, 4 => $status],
'order' => 'id DESC',
]);
diff --git a/app/Repos/Refund.php b/app/Repos/Refund.php
index f33e325c..83d9f4e5 100644
--- a/app/Repos/Refund.php
+++ b/app/Repos/Refund.php
@@ -21,8 +21,8 @@ class Refund extends Repository
$builder->where('1 = 1');
- if (!empty($where['user_id'])) {
- $builder->andWhere('user_id = :user_id:', ['user_id' => $where['user_id']]);
+ if (!empty($where['owner_id'])) {
+ $builder->andWhere('owner_id = :owner_id:', ['owner_id' => $where['owner_id']]);
}
if (!empty($where['order_id'])) {
diff --git a/app/Repos/Trade.php b/app/Repos/Trade.php
index 082c5541..3d6e4755 100644
--- a/app/Repos/Trade.php
+++ b/app/Repos/Trade.php
@@ -5,6 +5,7 @@ namespace App\Repos;
use App\Library\Paginator\Adapter\QueryBuilder as PagerQueryBuilder;
use App\Models\Refund as RefundModel;
use App\Models\Trade as TradeModel;
+use App\Models\TradeStatus as TradeStatusModel;
use Phalcon\Mvc\Model;
use Phalcon\Mvc\Model\Resultset;
use Phalcon\Mvc\Model\ResultsetInterface;
@@ -28,8 +29,8 @@ class Trade extends Repository
$builder->andWhere('sn = :sn:', ['sn' => $where['sn']]);
}
- if (!empty($where['user_id'])) {
- $builder->andWhere('user_id = :user_id:', ['user_id' => $where['user_id']]);
+ if (!empty($where['owner_id'])) {
+ $builder->andWhere('owner_id = :owner_id:', ['owner_id' => $where['owner_id']]);
}
if (!empty($where['order_id'])) {
@@ -116,6 +117,17 @@ class Trade extends Repository
->execute();
}
+ /**
+ * @param int $tradeId
+ * @return ResultsetInterface|Resultset|TradeStatusModel[]
+ */
+ public function findStatusHistory($tradeId)
+ {
+ return TradeStatusModel::query()
+ ->where('trade_id = :trade_id:', ['trade_id' => $tradeId])
+ ->execute();
+ }
+
/**
* @param int $tradeId
* @return RefundModel|Model|bool
diff --git a/app/Services/Frontend/My/ImFriendDelete.php b/app/Services/Frontend/Im/ImFriendDelete.php
similarity index 92%
rename from app/Services/Frontend/My/ImFriendDelete.php
rename to app/Services/Frontend/Im/ImFriendDelete.php
index 64af1d52..6ad4ecc3 100644
--- a/app/Services/Frontend/My/ImFriendDelete.php
+++ b/app/Services/Frontend/Im/ImFriendDelete.php
@@ -1,6 +1,6 @@
delete();
- $this->updateGroupUserCount($group);
+ $this->decrGroupUserCount($group);
}
- protected function updateGroupUserCount(ImGroupModel $group)
+ protected function decrGroupUserCount(ImGroupModel $group)
{
- $repo = new ImGroupRepo();
+ if ($group->user_count > 0) {
+ $group->user_count -= 1;
+ $group->update();
+ }
+ }
- $userCount = $repo->countUsers($group->id);
-
- $group->user_count = $userCount;
-
- $group->update();
+ protected function decrUserGroupCount(ImUserModel $user)
+ {
+ if ($user->group_count > 0) {
+ $user->group_count -= 1;
+ $user->update();
+ }
}
}
diff --git a/app/Services/Frontend/Im/ImGroupUserDelete.php b/app/Services/Frontend/Im/ImGroupUserDelete.php
new file mode 100644
index 00000000..9087534d
--- /dev/null
+++ b/app/Services/Frontend/Im/ImGroupUserDelete.php
@@ -0,0 +1,52 @@
+request->getPost();
+
+ $loginUser = $this->getLoginUser();
+
+ $validator = new ImGroupUserValidator();
+
+ $group = $validator->checkGroup($post['group_id']);
+
+ $user = $validator->checkUser($post['user_id']);
+
+ $validator->checkOwner($group->owner_id, $loginUser->id);
+
+ $groupUser = $validator->checkGroupUser($group->id, $user->id);
+
+ $groupUser->delete();
+
+ $this->decrGroupUserCount($group);
+
+ $this->decrUserGroupCount($user);
+ }
+
+ protected function decrGroupUserCount(ImGroupModel $group)
+ {
+ if ($group->user_count > 0) {
+ $group->user_count -= 1;
+ $group->update();
+ }
+ }
+
+ protected function decrUserGroupCount(ImUserModel $user)
+ {
+ if ($user->group_count > 0) {
+ $user->group_count -= 1;
+ $user->update();
+ }
+ }
+
+}
diff --git a/app/Services/Frontend/My/FriendList.php b/app/Services/Frontend/My/FriendList.php
new file mode 100644
index 00000000..88a80857
--- /dev/null
+++ b/app/Services/Frontend/My/FriendList.php
@@ -0,0 +1,20 @@
+getLoginUser();
+
+ $service = new UserFriendListService();
+
+ return $service->handle($user->id);
+ }
+
+}
diff --git a/app/Services/Frontend/My/GroupList.php b/app/Services/Frontend/My/GroupList.php
new file mode 100644
index 00000000..444a73af
--- /dev/null
+++ b/app/Services/Frontend/My/GroupList.php
@@ -0,0 +1,20 @@
+getLoginUser();
+
+ $service = new UserGroupListService();
+
+ return $service->handle($user->id);
+ }
+
+}
diff --git a/app/Services/Frontend/Order/OrderCancel.php b/app/Services/Frontend/Order/OrderCancel.php
index 0867d40d..0e6ed754 100644
--- a/app/Services/Frontend/Order/OrderCancel.php
+++ b/app/Services/Frontend/Order/OrderCancel.php
@@ -20,7 +20,7 @@ class OrderCancel extends FrontendService
$validator = new OrderValidator();
- $validator->checkOwner($user->id, $order->user_id);
+ $validator->checkOwner($user->id, $order->owner_id);
$validator->checkIfAllowCancel($order);
diff --git a/app/Services/Frontend/Order/OrderCreate.php b/app/Services/Frontend/Order/OrderCreate.php
index 491eedb9..52346338 100644
--- a/app/Services/Frontend/Order/OrderCreate.php
+++ b/app/Services/Frontend/Order/OrderCreate.php
@@ -87,7 +87,7 @@ class OrderCreate extends FrontendService
$order = new OrderModel();
- $order->user_id = $user->id;
+ $order->owner_id = $user->id;
$order->item_id = $course->id;
$order->item_type = OrderModel::ITEM_COURSE;
$order->item_info = $itemInfo;
@@ -122,7 +122,7 @@ class OrderCreate extends FrontendService
$order = new OrderModel();
- $order->user_id = $user->id;
+ $order->owner_id = $user->id;
$order->item_id = $package->id;
$order->item_type = OrderModel::ITEM_PACKAGE;
$order->item_info = $itemInfo;
@@ -151,7 +151,7 @@ class OrderCreate extends FrontendService
$order = new OrderModel();
- $order->user_id = $user->id;
+ $order->owner_id = $user->id;
$order->item_id = $vip->id;
$order->item_type = OrderModel::ITEM_VIP;
$order->item_info = $itemInfo;
@@ -176,7 +176,7 @@ class OrderCreate extends FrontendService
$order = new OrderModel();
- $order->user_id = $user->id;
+ $order->owner_id = $user->id;
$order->item_id = "{$course->id}-{$reward->id}";
$order->item_type = OrderModel::ITEM_REWARD;
$order->item_info = $itemInfo;
diff --git a/app/Services/Frontend/Refund/RefundCancel.php b/app/Services/Frontend/Refund/RefundCancel.php
index 956a11ae..b49016e7 100644
--- a/app/Services/Frontend/Refund/RefundCancel.php
+++ b/app/Services/Frontend/Refund/RefundCancel.php
@@ -22,7 +22,7 @@ class RefundCancel extends FrontendService
$validator = new RefundValidator();
- $validator->checkOwner($user->id, $refund->user_id);
+ $validator->checkOwner($user->id, $refund->owner_id);
$refund->status = RefundModel::STATUS_CANCELED;
diff --git a/app/Services/Frontend/Refund/RefundCreate.php b/app/Services/Frontend/Refund/RefundCreate.php
index 7647cf86..a699a90d 100644
--- a/app/Services/Frontend/Refund/RefundCreate.php
+++ b/app/Services/Frontend/Refund/RefundCreate.php
@@ -31,7 +31,7 @@ class RefundCreate extends FrontendService
$validator = new OrderValidator();
- $validator->checkOwner($user->id, $order->user_id);
+ $validator->checkOwner($user->id, $order->owner_id);
$validator->checkIfAllowRefund($order);
@@ -54,7 +54,7 @@ class RefundCreate extends FrontendService
$refund->apply_note = $applyNote;
$refund->order_id = $order->id;
$refund->trade_id = $trade->id;
- $refund->user_id = $user->id;
+ $refund->owner_id = $user->id;
$refund->status = RefundModel::STATUS_APPROVED;
$refund->review_note = '退款周期内无条件审批';
diff --git a/app/Services/Frontend/Trade/TradeCancel.php b/app/Services/Frontend/Trade/TradeCancel.php
deleted file mode 100644
index fca35f5f..00000000
--- a/app/Services/Frontend/Trade/TradeCancel.php
+++ /dev/null
@@ -1,18 +0,0 @@
-amount = $order->amount;
$trade->channel = $channel;
$trade->order_id = $order->id;
- $trade->user_id = $user->id;
+ $trade->owner_id = $user->id;
$trade->create();
diff --git a/app/Validators/ImGroupUser.php b/app/Validators/ImGroupUser.php
index 2df64ebe..24d67079 100644
--- a/app/Validators/ImGroupUser.php
+++ b/app/Validators/ImGroupUser.php
@@ -17,7 +17,7 @@ class ImGroupUser extends Validator
public function checkUser($id)
{
- $validator = new User();
+ $validator = new ImUser();
return $validator->checkUser($id);
}
diff --git a/public/static/admin/css/common.css b/public/static/admin/css/common.css
index f2f037b2..9626e547 100644
--- a/public/static/admin/css/common.css
+++ b/public/static/admin/css/common.css
@@ -179,3 +179,12 @@ img.kg-qrcode {
padding-top: 0;
border-top: none;
}
+
+.kg-status-history {
+ line-height: 30px;
+}
+
+.kg-status-history .time {
+ margin-left: 10px;
+ color: #666;
+}
diff --git a/public/static/crossdomain.xml b/public/static/crossdomain.xml
deleted file mode 100644
index 8218e632..00000000
--- a/public/static/crossdomain.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/public/static/web/js/order.pay.js b/public/static/web/js/order.pay.js
index 0f21193c..529fbe7f 100644
--- a/public/static/web/js/order.pay.js
+++ b/public/static/web/js/order.pay.js
@@ -9,24 +9,23 @@ layui.use(['jquery', 'layer'], function () {
var statusUrl = $('input[name=trade_status_url]').val();
var forwardUrl = $('input[name=forward_url]').val();
var orderSn = $('input[name=order_sn]').val();
- var $qrBox = $('#' + channel + '-qr-box');
+ var $qrBlock = $('#' + channel + '-qrcode');
var $snInput = $('input[name=' + channel + '_trade_sn]');
var qrTitle = channel === 'alipay' ? '支付宝扫码支付' : '微信扫码支付';
- var qrHtml = $qrBox.html();
+ var qrHtml = $qrBlock.html();
if (qrHtml.length === 0) {
var postData = {order_sn: orderSn, channel: channel};
$.post(createUrl, postData, function (res) {
qrHtml = '
';
showQrLayer(qrTitle, qrHtml);
- $qrBox.html(qrHtml);
+ $qrBlock.html(qrHtml);
$snInput.html(res.sn);
var interval = setInterval(function () {
var queryData = {sn: res.sn};
$.get(statusUrl, queryData, function (res) {
if (res.status === 'finished') {
clearInterval(interval);
- var html = '
支付成功
';
- $('#pay-layer').html(html);
+ $('#pay-layer').html('
支付成功
');
setTimeout(function () {
window.location.href = forwardUrl;
}, 5000);