TaskSystem/app/api/controller/ApproveController.php
2023-09-19 10:34:39 +08:00

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']]
]);
}
}