Browse Source

发票重开,抬头添加编辑接口

master
wanghongjun 2 months ago
parent
commit
81cf75cd8e
  1. 113
      app/controller/admin/InvoiceHead.php
  2. 27
      app/controller/admin/InvoiceIssuance.php
  3. 4
      route/app.php

113
app/controller/admin/InvoiceHead.php

@ -3,6 +3,8 @@
namespace app\controller\admin;
use app\model\WechatPucode;
use app\service\invoice\InvoiceIssuanceService;
use app\util\ReturnCode;
use think\Response;
use app\model\InvoiceHead as InvoiceHeadModel;
use app\model\WechatUser as WechatUserModel;
@ -25,8 +27,7 @@ class InvoiceHead extends Base
$where = [];
if (isset($param['pucode']) && !empty($param['pucode'])) {
$wechat_user_ids = WechatPucode::where([['pucode', 'like', "%{$param['pucode']}%"]])->column('wechat_user_id');
$where[] = ['wechat_user_id', 'in', $wechat_user_ids];
$where[] = ['pucode', 'in', explode(',',$param['pucode'])];
}
$InvoiceHead = new InvoiceHeadModel();
@ -40,8 +41,8 @@ class InvoiceHead extends Base
if ($WechatUser) {
$item['wechat_user_name'] = $WechatUser['nickname'];
$item['headimgurl'] = $WechatUser['headimgurl'];
$item['phone'] = $WechatUser['phone'];
}
$item['pucode'] = WechatPucode::where('wechat_user_id', $item['wechat_user_id'])->value('pucode');
unset($item['wechat_user_id']);
})->toArray();
$listInfo = $listObj['data'];
@ -52,4 +53,110 @@ class InvoiceHead extends Base
]);
}
public function save(): Response
{
try {
$params = $this->request->post();
$id = $params['id'] ?? '';
$phone = $params['phone'];
$pucode = $params['pucode'];
$type = $params['type'];
$tax_number = $params['tax_number'];
$title = $params['title'];
// 数据验证
$tax_number_str = $type == 1 ? '身份证号' :'纳税识别号';
$tax_number_rule = $type == 1 ? 'idCard' :'alphaNum';
$rule = [
'phone|手机号' => 'require|mobile',
'type|抬头类型' => 'require|number|in:0,1',
'title|抬头' => 'require',
"tax_number|{$tax_number_str}" => "require|{$tax_number_rule}|length:18"
];
validate()->rule($rule)->check($params);
if ($type != 1) {
// 验证纳税识别号
$str = '0-9A-HJ-NPQRTUWXY';
$pattern = '/^[' . $str . ']{2}\d{6}[' . $str . ']{10}$/';
if (!preg_match($pattern, $tax_number)) {
throw new \Exception('纳税人编号格式不符合', ReturnCode::PARAM_INVALID);
}
}
$wechat_user_id = (new WechatUserModel())->where(['phone' => $phone, 'delete_time' => 0])->value('id');
if (!$wechat_user_id) {
throw new \Exception('当前手机号用户不存在', ReturnCode::RECORD_NOT_FOUND);
}
$feeUserInfo = (new InvoiceIssuanceService())->getFeeUserData($pucode);
$address = isset($feeUserInfo['MaillingAddress']) && !empty($feeUserInfo['MaillingAddress']) ? $feeUserInfo['MaillingAddress']: '';
$telephone = isset($feeUserInfo['Telephone']) && !empty($feeUserInfo['Telephone']) ? $feeUserInfo['Telephone']: '';
$bank_name = isset($feeUserInfo['BankName']) && !empty($feeUserInfo['BankName']) ? $feeUserInfo['BankName']: '';
$bank_account = isset($feeUserInfo['BankAccountCode']) && !empty($feeUserInfo['BankAccountCode']) ? $feeUserInfo['BankAccountCode']: '';
// 验证手机号和用户编号是否有关联
if ($telephone) {
$telephoneArr = explode(',', $telephone);
if (!in_array($phone, $telephoneArr)) {
throw new \Exception('当前手机号未关联输入的用户编号', ReturnCode::RECORD_NOT_FOUND);
}
}
// 保存操作
$query = [
'pucode' => $pucode,
'wechat_user_id' => $wechat_user_id,
];
$InvoiceHeadId = (new InvoiceHeadModel())->where($query)->value('id');
if (!$id && $InvoiceHeadId) $id = $InvoiceHeadId;
if ($id) {
if (!is_numeric($id)) {
throw new \Exception('编号数据错误', ReturnCode::RECORD_NOT_FOUND);
}
$InvoiceHeadData = (new InvoiceHeadModel())->where(['id' => $id])->find();
if (!$InvoiceHeadData) {
throw new \Exception('数据不存在', ReturnCode::RECORD_NOT_FOUND);
}
// 更新
$InvoiceHeadData->pucode = $pucode;
$InvoiceHeadData->type = $type;
$InvoiceHeadData->title = $title;
$InvoiceHeadData->tax_number = $tax_number;
if (!$InvoiceHeadData->address) {
$InvoiceHeadData->address = $address;
}
if (!$InvoiceHeadData->telephone) {
$InvoiceHeadData->telephone = $telephone;
}
if (!$InvoiceHeadData->bank_name) {
$InvoiceHeadData->bank_name = $bank_name;
}
if (!$InvoiceHeadData->bank_account) {
$InvoiceHeadData->bank_account = $bank_account;
}
$InvoiceHeadData->save();
} else {
// 新增
$data['type'] = $type;
$data['title'] = $title;
$data['tax_number'] = $tax_number;
$data['address'] = $address;
$data['telephone'] = $telephone;
$data['bank_name'] = $bank_name;
$data['bank_account'] = $bank_account;
$data['wechat_user_id'] = $wechat_user_id;
$data['create_time'] = time();
$data['pucode'] = $pucode;
InvoiceHeadModel::create($data);
}
return $this->buildSuccess();
} catch (\Exception $e) {
return $this->buildFailed($e->getCode(), $e->getMessage());
}
}
}

27
app/controller/admin/InvoiceIssuance.php

@ -3,6 +3,7 @@
namespace app\controller\admin;
use app\model\InvoiceHead;
use app\model\InvoiceIssuanceData;
use app\util\ReturnCode;
use think\Response;
use app\model\InvoiceIssuance as InvoiceIssuanceModel;
@ -40,7 +41,7 @@ class InvoiceIssuance extends Base
$where[] = ['merge', '=', $param['merge']];
}
if (isset($param['status']) && is_numeric($param['status']) && in_array($param['status'], [0, 3, 4])) {
if (isset($param['status']) && is_numeric($param['status']) && in_array($param['status'], [0, 2, 3, 4])) {
$where[] = ['status', '=', $param['status']];
}
@ -82,6 +83,8 @@ class InvoiceIssuance extends Base
$item->head_type = InvoiceHead::$typeArr[$InvoiceHeadRes['type']];
$item->head_title = $InvoiceHeadRes['title'];
}
$invoice_pdf = InvoiceIssuanceData::where(['invoice_issuance_id' => $item->id, 'status' => 1])->value('pdf_filepath');
$item->invoice_pdf = $invoice_pdf;
unset($item->invoice_head_id, $item->project_id);
})->toArray();
$listInfo = $listObj['data'];
@ -138,4 +141,26 @@ class InvoiceIssuance extends Base
return $this->buildFailed(ReturnCode::EMPTY_PARAMS, $e->getMessage());
}
}
public function restart(): Response
{
try {
$id = $this->request->get('id', '');
if (!$id) {
throw new \Exception('缺少必要参数');
}
$InvoiceIssuance = (new InvoiceIssuanceModel())->where('id', $id)->find();
if ($InvoiceIssuance['status'] != 2) {
throw new \Exception('当前状态无法重新开票');
}
$data = ['status' => 0];
$result = $InvoiceIssuance->save($data);
if (!$result) {
throw new \Exception('重新开票失败');
}
return $this->buildSuccess();
} catch (\Exception $e) {
return $this->buildFailed(ReturnCode::EMPTY_PARAMS, $e->getMessage());
}
}
}

4
route/app.php

@ -68,11 +68,13 @@ Route::group('admin', function() {
Route::rule('Login/getAccessMenu', 'admin.Login/getAccessMenu', 'get')->middleware([app\middleware\AdminAuth::class, app\middleware\AdminResponse::class]);
Route::rule('WechatUser/index', 'admin.WechatUser/index', 'get')->middleware([app\middleware\AdminAuth::class, app\middleware\AdminPermission::class, app\middleware\AdminLog::class, app\middleware\AdminResponse::class]);
Route::rule('WechatUser/exportTemplate', 'admin.WechatUser/exportTemplate', 'get');
Route::rule('WechatUser/importUser', 'admin.WechatUser/importUser', 'post')->middleware([app\middleware\AdminAuth::class, app\middleware\AdminPermission::class, app\middleware\AdminLog::class, app\middleware\AdminResponse::class]);
Route::rule('WechatUser/importUser', 'admin.WechatUser/importUser', 'post')->middleware([app\middleware\AdminAuth::class, app\middleware\AdminPermission::class, app\middleware\AdminResponse::class]);
Route::rule('InvoiceIssuance/index', 'admin.InvoiceIssuance/index', 'get')->middleware([app\middleware\AdminAuth::class, app\middleware\AdminPermission::class, app\middleware\AdminLog::class, app\middleware\AdminResponse::class]);
Route::rule('InvoiceIssuance/getIndexData', 'admin.InvoiceIssuance/getIndexData', 'get')->middleware([app\middleware\AdminAuth::class, app\middleware\AdminPermission::class, app\middleware\AdminLog::class, app\middleware\AdminResponse::class]);
Route::rule('InvoiceIssuance/cancel', 'admin.InvoiceIssuance/cancel', 'get')->middleware([app\middleware\AdminAuth::class, app\middleware\AdminPermission::class, app\middleware\AdminLog::class, app\middleware\AdminResponse::class]);
Route::rule('InvoiceIssuance/restart', 'admin.InvoiceIssuance/restart', 'get')->middleware([app\middleware\AdminAuth::class, app\middleware\AdminPermission::class, app\middleware\AdminLog::class, app\middleware\AdminResponse::class]);
Route::rule('InvoiceHead/index', 'admin.InvoiceHead/index', 'get')->middleware([app\middleware\AdminAuth::class, app\middleware\AdminPermission::class, app\middleware\AdminLog::class, app\middleware\AdminResponse::class]);
Route::rule('InvoiceHead/save', 'admin.InvoiceHead/save', 'post')->middleware([app\middleware\AdminAuth::class, app\middleware\AdminPermission::class, app\middleware\AdminLog::class, app\middleware\AdminResponse::class]);
Route::rule('Index/statistics', 'admin.Index/statistics', 'get')->middleware([app\middleware\AdminAuth::class, app\middleware\AdminPermission::class, app\middleware\AdminResponse::class]);
Route::rule('Index/getFinalReportData', 'admin.Index/getFinalReportData', 'get')->middleware([app\middleware\AdminAuth::class, app\middleware\AdminPermission::class, app\middleware\AdminResponse::class]);
Route::miss('admin.Miss/index');

Loading…
Cancel
Save