✨ feat(crm): 订单列表页增加同步按钮及功能
This commit is contained in:
parent
224c437e7f
commit
aab4878d82
|
@ -74,12 +74,17 @@
|
||||||
|
|
||||||
<el-table-column align="center" fixed width="200" label="操作">
|
<el-table-column align="center" fixed width="200" label="操作">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button :type="scope.row.backs&&scope.row.backs.status==0? types[7] : types[4]" size="small" icon="el-icon-refresh" @click="onCirculation(scope.row)">
|
<el-button-group>
|
||||||
|
<el-button :type="scope.row.backs&&scope.row.backs.status==0? types[7] : types[4]" size="small" icon="el-icon-refresh" @click="onCirculation(scope.row)">
|
||||||
{{ scope.row.backs&&scope.row.backs.status==0?'流转中':'流转出' }}
|
{{ scope.row.backs&&scope.row.backs.status==0?'流转中':'流转出' }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button :type="types[scope.row.order_status]" size="small" icon="el-icon-edit" @click="onInfo(scope.row)">
|
<el-button :type="types[scope.row.order_status]" size="small" icon="el-icon-edit" @click="onInfo(scope.row)">
|
||||||
跟进
|
跟进
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button size="small" icon="el-icon-thumb" @click="onOneClickRepair(scope.row)">
|
||||||
|
同步
|
||||||
|
</el-button>
|
||||||
|
</el-button-group>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
|
@ -597,6 +602,22 @@ export default {
|
||||||
}
|
}
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
onOneClickRepair(item) {
|
||||||
|
this.$axios.post('/admin/order/oneClickRepair', { id: item.id}).then(res => {
|
||||||
|
this.dialogVisible = false
|
||||||
|
this.$notify({
|
||||||
|
title: '成功',
|
||||||
|
message: '同步完成',
|
||||||
|
type: 'success'
|
||||||
|
});
|
||||||
|
this.getList()
|
||||||
|
}).catch(err => {
|
||||||
|
this.$notify.error({
|
||||||
|
title: "错误",
|
||||||
|
message: err
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ use app\model\Backs;
|
||||||
use app\model\Follows;
|
use app\model\Follows;
|
||||||
use app\model\Orders;
|
use app\model\Orders;
|
||||||
use app\model\Logs;
|
use app\model\Logs;
|
||||||
|
use app\server\Orders as ServerOrders;
|
||||||
use stdClass;
|
use stdClass;
|
||||||
use support\Log;
|
use support\Log;
|
||||||
use support\Redis;
|
use support\Redis;
|
||||||
|
@ -504,4 +505,35 @@ class OrderController extends base
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键修复订单问题
|
||||||
|
* @param Request $request
|
||||||
|
* @return \support\Response
|
||||||
|
* @throws \think\db\exception\DataNotFoundException
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @throws \think\db\exception\ModelNotFoundException
|
||||||
|
*/
|
||||||
|
public function oneClickRepair(Request $request)
|
||||||
|
{
|
||||||
|
$id = $request->post('id', 0);
|
||||||
|
$order = Orders::where('id', $id)->find();
|
||||||
|
|
||||||
|
if(empty($order)) {
|
||||||
|
return $this->error(2004, '记录没有找到.');
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$flow = [];
|
||||||
|
|
||||||
|
// 订单是待使用状态,先同步第三方状态
|
||||||
|
if (ServerOrders::isDaishiyong($order)) {
|
||||||
|
ServerOrders::syncFromThird($order);
|
||||||
|
$flow[] = "订单为待使用状态,已请求第三方进行同步。";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->success(implode("\n", $flow));
|
||||||
|
}catch(\Exception $e) {
|
||||||
|
return $this->error(2006, '出错了:' . $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -4,11 +4,21 @@ namespace app\server;
|
||||||
|
|
||||||
use app\common\Error;
|
use app\common\Error;
|
||||||
use app\model\Admins as AdminsModel;
|
use app\model\Admins as AdminsModel;
|
||||||
|
use app\model\Finances as FinancesModel;
|
||||||
use app\model\Orders as OrdersModel;
|
use app\model\Orders as OrdersModel;
|
||||||
use support\Log;
|
use support\Log;
|
||||||
use support\Redis;
|
use support\Redis;
|
||||||
|
|
||||||
class Orders {
|
class Orders {
|
||||||
|
public static function isDaishiyong(OrdersModel $order): bool
|
||||||
|
{
|
||||||
|
// 根据 OrdersModel::AllOssStatusSql[1] 进行判断
|
||||||
|
// ((os=1 and order_status=3) or (os=2 and order_status=4) or (os=3 and order_status=1))
|
||||||
|
return $order->os == 1 && $order->order_status == 3
|
||||||
|
|| $order->os == 2 && $order->order_status == 4
|
||||||
|
|| $order->os == 3 && $order->order_status == 1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @params []OrdersModel $order
|
* @params []OrdersModel $order
|
||||||
* @return array
|
* @return array
|
||||||
|
@ -68,4 +78,69 @@ class Orders {
|
||||||
|
|
||||||
return count($orders) > 1 ? $result : reset($result);
|
return count($orders) > 1 ? $result : reset($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function syncFromThird(OrdersModel $order)
|
||||||
|
{
|
||||||
|
$got = null;
|
||||||
|
|
||||||
|
switch ($order->os) {
|
||||||
|
case 1:
|
||||||
|
$mt = new Meituan();
|
||||||
|
$it = $mt->get(1, null, null, $order->sn);
|
||||||
|
|
||||||
|
if ($it) {
|
||||||
|
$got = $it[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$dy = new Douyin();
|
||||||
|
$it = $dy->get(1, null, null, $order->sn);
|
||||||
|
if ($it) {
|
||||||
|
$got = $it[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_null($got)) {
|
||||||
|
Log::info(__METHOD__ . ": get from os is null", [$order]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$back = $order->save($got);
|
||||||
|
|
||||||
|
if ($back) {
|
||||||
|
self::finance(0, $order->id, $order->asset_price);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function finance($type = 1, $order_id = 0, $price = 0)
|
||||||
|
{
|
||||||
|
//总的关于这个订单的金额
|
||||||
|
$total = FinancesModel::where('order_id', $order_id)->sum('total');
|
||||||
|
//如果总金额大于提交上来的核销金额,那就是退费的
|
||||||
|
//如果提交上来的金额小于总金额,那就是核销的
|
||||||
|
|
||||||
|
if ($total > $price) {
|
||||||
|
$type = 2;
|
||||||
|
$fee = -($total - $price);
|
||||||
|
} elseif ($total < $price) {
|
||||||
|
$type = 1;
|
||||||
|
$fee = $price - $total;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FinancesModel::create([
|
||||||
|
'order_id' => $order_id,
|
||||||
|
'type' => $type,
|
||||||
|
'total' => $fee,
|
||||||
|
'status' => 1
|
||||||
|
]);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
.pagination-container[data-v-28fdfbeb]{padding:32px 16px;position:fixed;bottom:0;left:0;width:100%;background:#fff;padding:40px 280px;-webkit-box-shadow:0 -2px 10px rgba(0,0,0,.1);box-shadow:0 -2px 10px rgba(0,0,0,.1);z-index:100}.pagination-container.hidden[data-v-28fdfbeb]{display:none}.app-container[data-v-4983868b]{position:relative;padding-bottom:60px}.el-table[data-v-4983868b],.filter-container[data-v-4983868b]{padding-bottom:52px}
|
.pagination-container[data-v-28fdfbeb]{padding:32px 16px;position:fixed;bottom:0;left:0;width:100%;background:#fff;padding:40px 280px;-webkit-box-shadow:0 -2px 10px rgba(0,0,0,.1);box-shadow:0 -2px 10px rgba(0,0,0,.1);z-index:100}.pagination-container.hidden[data-v-28fdfbeb]{display:none}.app-container[data-v-a256f162]{position:relative;padding-bottom:60px}.el-table[data-v-a256f162],.filter-container[data-v-a256f162]{padding-bottom:52px}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue