Update Order.php

This commit is contained in:
邹景立 2021-03-09 18:29:34 +08:00
parent 72e4af1c6a
commit 600b12495d

View File

@ -182,6 +182,7 @@ class Order extends Auth
public function express() public function express()
{ {
$data = $this->_vali([ $data = $this->_vali([
'uid.value' => $this->uuid,
'code.require' => '地址不能为空', 'code.require' => '地址不能为空',
'order_no.require' => '单号不能为空', 'order_no.require' => '单号不能为空',
]); ]);
@ -208,6 +209,7 @@ class Order extends Auth
public function perfect() public function perfect()
{ {
$data = $this->_vali([ $data = $this->_vali([
'uid.value' => $this->uuid,
'code.require' => '地址不能为空', 'code.require' => '地址不能为空',
'order_no.require' => '单号不能为空', 'order_no.require' => '单号不能为空',
]); ]);
@ -269,14 +271,13 @@ class Order extends Auth
public function payment() public function payment()
{ {
$data = $this->_vali([ $data = $this->_vali([
'uid.value' => $this->uuid,
'order_no.require' => '单号不能为空', 'order_no.require' => '单号不能为空',
'payment_code.require' => '参数不能为空', 'payment_code.require' => '支付不能为空',
'payment_back.default' => '', # 支付回跳地址 'payment_back.default' => '', # 支付回跳地址
'payment_image.default' => '', # 支付凭证地址 'payment_image.default' => '', # 支付凭证图片
]); ]);
$map = ['order_no' => $data['order_no']]; [$map, $order] = $this->getOrderData();
$order = $this->app->db->name('ShopOrder')->where($map)->find();
if (empty($order)) $this->error('读取订单异常');
if ($order['status'] !== 2) $this->error('不能发起支付'); if ($order['status'] !== 2) $this->error('不能发起支付');
if ($order['payment_status'] > 0) $this->error('已经完成支付'); if ($order['payment_status'] > 0) $this->error('已经完成支付');
try { try {
@ -305,17 +306,12 @@ class Order extends Auth
*/ */
public function cancel() public function cancel()
{ {
$map = $this->_vali([ [$map, $order] = $this->getOrderData();
'uid.value' => $this->uuid,
'order_no.require' => '单号不能为空',
]);
$order = $this->app->db->name('ShopOrder')->where($map)->find();
if (empty($order)) $this->error('读取订单失败');
if (in_array($order['status'], [1, 2, 3])) { if (in_array($order['status'], [1, 2, 3])) {
$result = $this->app->db->name('ShopOrder')->where($map)->update([ $result = $this->app->db->name('ShopOrder')->where($map)->update([
'status' => 0, 'status' => 0,
'cancel_status' => 1, 'cancel_status' => 1,
'cancel_remark' => '用户主动取消订单', 'cancel_remark' => '用户主动取消订单',
'cancel_datetime' => date('Y-m-d H:i:s'), 'cancel_datetime' => date('Y-m-d H:i:s'),
]); ]);
if ($result !== false && OrderService::instance()->syncStock($order['order_no'])) { if ($result !== false && OrderService::instance()->syncStock($order['order_no'])) {
@ -339,17 +335,13 @@ class Order extends Auth
*/ */
public function remove() public function remove()
{ {
$map = $this->_vali([ [$map, $order] = $this->getOrderData();
'uid.value' => $this->uuid,
'order_no.require' => '单号不能为空',
]);
$order = $this->app->db->name('ShopOrder')->where($map)->find();
if (empty($order)) $this->error('读取订单失败'); if (empty($order)) $this->error('读取订单失败');
if (in_array($order['status'], [0])) { if (in_array($order['status'], [0])) {
$result = $this->app->db->name('ShopOrder')->where($map)->update([ $result = $this->app->db->name('ShopOrder')->where($map)->update([
'status' => 0, 'status' => 0,
'deleted' => 1, 'deleted' => 1,
'deleted_remark' => '用户主动删除订单', 'deleted_remark' => '用户主动删除订单',
'deleted_datetime' => date('Y-m-d H:i:s'), 'deleted_datetime' => date('Y-m-d H:i:s'),
]); ]);
if ($result !== false) { if ($result !== false) {
@ -373,14 +365,9 @@ class Order extends Auth
*/ */
public function confirm() public function confirm()
{ {
$map = $this->_vali([ [$map, $order] = $this->getOrderData();
'uid.value' => $this->uuid, if (in_array($order['status'], [5])) {
'order_no.require' => '单号不能为空', if ($this->app->db->name('ShopOrder')->where($map)->update(['status' => 6]) !== false) {
]);
$order = $this->app->db->name('ShopOrder')->where($map)->find();
if (empty($order)) $this->error('读取订单失败');
if (in_array($order['status'], [4])) {
if ($this->app->db->name('ShopOrder')->where($map)->update(['status' => 5]) !== false) {
// 触发订单确认事件 // 触发订单确认事件
$this->app->event->trigger('ShopOrderConfirm', $order['order_no']); $this->app->event->trigger('ShopOrderConfirm', $order['order_no']);
// 返回处理成功数据 // 返回处理成功数据
@ -393,18 +380,32 @@ class Order extends Auth
} }
} }
/**
* 获取输入订单
* @return array [map, order]
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
private function getOrderData(): array
{
$map = $this->_vali(['uid.value' => $this->uuid, 'order_no.require' => '单号不能为空']);
$order = $this->app->db->name('ShopOrder')->where($map)->find();
if (empty($order)) $this->error('读取订单失败');
return [$map, $order];
}
/** /**
* 订单状态统计 * 订单状态统计
*/ */
public function total() public function total()
{ {
$map = ['uid' => $this->uuid, 'deleted' => 0]; $data = ['t0' => 0, 't1' => 0, 't2' => 0, 't3' => 0, 't4' => 0, 't5' => 0, 't6' => 0];
$data = ['t0' => 0, 't1' => 0, 't2' => 0, 't3' => 0, 't4' => 0, 't5' => 0]; $query = $this->app->db->name('ShopOrder')->where(['uid' => $this->uuid, 'deleted' => 0]);
$query = $this->app->db->name('ShopOrder')->field('status,count(1) count'); foreach ($query->field('status,count(1) count')->group('status')->cursor() as $item) {
foreach ($query->where($map)->group('status')->cursor() as $item) {
$data["t{$item['status']}"] = $item['count']; $data["t{$item['status']}"] = $item['count'];
} }
$this->success('获取统计成功', $data); $this->success('获取订单统计', $data);
} }
/** /**