88 lines
2.6 KiB
PHP
88 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace app\api\controller;
|
|
|
|
use app\api\lists\approve\ApproveLists;
|
|
use app\common\model\Approve;
|
|
use Symfony\Component\HttpClient\HttpClient;
|
|
use think\Exception;
|
|
use think\facade\Db;
|
|
|
|
class ApproveController extends BaseApiController
|
|
{
|
|
public function lists()
|
|
{
|
|
return $this->dataLists(new ApproveLists());
|
|
}
|
|
|
|
public function approveType()
|
|
{
|
|
$list = Db::name('flow_type')->where(['status' => 1])->field(['id, title'])->select()->toArray();
|
|
return $this->success('成功', $list);
|
|
}
|
|
|
|
/**
|
|
* 前台通用审批接口 审批后的业务逻辑,
|
|
*/
|
|
public function audit()
|
|
{
|
|
try {
|
|
$params = $this->request->param(); // id check_status remark
|
|
$approve = Approve::find($params['id']);
|
|
if (!$approve) {
|
|
throw new Exception('数据不存在');
|
|
}
|
|
Db::startTrans();
|
|
|
|
// 拒绝通过
|
|
if ($params['check_status'] == 3) {
|
|
if (empty($params['remark'])) {
|
|
throw new Exception('请输入拒绝理由');
|
|
}
|
|
$this->refuse($approve, $params);
|
|
}
|
|
// 修改任务完成状态
|
|
if ($params['check_status'] == 2) {
|
|
$this->pass($approve);
|
|
}
|
|
|
|
// 回调商城,通知审核状态
|
|
if (in_array($approve['type'], [2, 3])) {
|
|
$shopMerchantInfo = json_decode($approve['extend'], true);
|
|
self::shopCallBack($approve, $shopMerchantInfo, $params);
|
|
}
|
|
Db::commit();
|
|
return $this->fail('操作成功');
|
|
} catch (Exception $exception) {
|
|
Db::rollback();
|
|
return $this->fail('审核失败');
|
|
}
|
|
}
|
|
|
|
private static function pass(Approve $approve)
|
|
{
|
|
$approve->check_status = 2;
|
|
$approve->save();
|
|
}
|
|
|
|
private static function refuse(Approve $approve, $params)
|
|
{
|
|
$approve->check_status = 3;
|
|
$approve->remard = $params['remark'];
|
|
$approve->save();
|
|
}
|
|
|
|
private static function shopCallBack(Approve $approve, $shopMerchantInfo, $params)
|
|
{
|
|
$status = $params['check_status'] == 2? 1: 2;
|
|
if ($params['check_status'] == 3) {
|
|
$status = 2;
|
|
}
|
|
// 通知商城审批状态
|
|
$requestResponse = HttpClient::create()->request('POST', env('url.shop_prefix') . '/api/merchant/syncStatus/'.$shopMerchantInfo['mer_intention_id'], [
|
|
'body' => ['status' => $status, 'type' => $approve['type']]
|
|
]);
|
|
|
|
|
|
}
|
|
} |