174 lines
5.9 KiB
PHP
174 lines
5.9 KiB
PHP
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | likeadmin快速开发前后端分离管理后台(PHP版)
|
||
// +----------------------------------------------------------------------
|
||
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
||
// | 开源版本可自由商用,可去除界面版权logo
|
||
// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
|
||
// | github下载:https://github.com/likeshop-github/likeadmin
|
||
// | 访问官网:https://www.likeadmin.cn
|
||
// | likeadmin团队 版权所有 拥有最终解释权
|
||
// +----------------------------------------------------------------------
|
||
// | author: likeadminTeam
|
||
// +----------------------------------------------------------------------
|
||
|
||
namespace app\adminapi\logic;
|
||
|
||
|
||
use app\common\logic\BaseLogic;
|
||
use app\common\model\auth\Admin;
|
||
use app\common\model\cost_project\CostProject;
|
||
use app\common\model\marketing\MarketingContract;
|
||
use app\common\model\ProjectCommission;
|
||
use app\common\model\ProjectCommissionDetail;
|
||
use app\common\model\zjzx_finance\ZjzxRefund;
|
||
use think\facade\Db;
|
||
|
||
|
||
/**
|
||
* ProjectCommission逻辑
|
||
* Class ProjectCommissionLogic
|
||
* @package app\adminapi\logic
|
||
*/
|
||
class ProjectCommissionLogic extends BaseLogic
|
||
{
|
||
|
||
|
||
/**
|
||
* @notes 编辑
|
||
* @param array $params
|
||
* @return bool
|
||
* @author likeadmin
|
||
* @date 2024/02/23 09:37
|
||
*/
|
||
public static function edit(array $params): bool
|
||
{
|
||
Db::startTrans();
|
||
try {
|
||
ProjectCommission::where('id', $params['id'])->update([
|
||
'project_id' => $params['project_id'],
|
||
'rate' => $params['rate'],
|
||
'bczfze' => $params['bczfze'],
|
||
'djr' => $params['djr'],
|
||
'apptime' => !empty($params['apptime']) ? strtotime($params['apptime']) : 0,
|
||
'remark' => $params['remark'] ?? '',
|
||
'update_time' => time(),
|
||
]);
|
||
if (!empty($params['project_commission_detail'])) {
|
||
foreach ($params['project_commission_detail'] as $item) {
|
||
if (!empty($item['id'])) {
|
||
ProjectCommissionDetailLogic::edit($item);
|
||
} else {
|
||
$item['project_commission_id'] = $params['id'];
|
||
ProjectCommissionDetailLogic::add($item);
|
||
}
|
||
}
|
||
}
|
||
Db::commit();
|
||
return true;
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
self::setError($e->getMessage());
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @notes 添加
|
||
* @param array $params
|
||
* @return bool
|
||
* @author likeadmin
|
||
* @date 2024/02/23 09:37
|
||
*/
|
||
public static function add(array $params): bool
|
||
{
|
||
Db::startTrans();
|
||
try {
|
||
$projectCommission = ProjectCommission::create([
|
||
'dataid' => generate_sn(ProjectCommission::class, 'dataid'),
|
||
'num' => generate_sn(ProjectCommission::class, 'num'),
|
||
'project_id' => $params['project_id'],
|
||
'rate' => $params['rate'],
|
||
'bczfze' => $params['bczfze'],
|
||
'djr' => $params['djr'],
|
||
'apptime' => !empty($params['apptime']) ? strtotime($params['apptime']) : 0,
|
||
'remark' => $params['remark'] ?? '',
|
||
]);
|
||
if (!empty($params['project_commission_detail'])) {
|
||
foreach ($params['project_commission_detail'] as $item) {
|
||
$item['project_commission_id'] = $projectCommission->id;
|
||
ProjectCommissionDetailLogic::add($item);
|
||
}
|
||
}
|
||
Db::commit();
|
||
return true;
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
self::setError($e->getMessage());
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @notes 删除
|
||
* @param array $params
|
||
* @return bool
|
||
* @author likeadmin
|
||
* @date 2024/02/23 09:37
|
||
*/
|
||
public static function delete(array $params): bool
|
||
{
|
||
$detail = ProjectCommissionDetail::where('project_commission_id', 'in', $params['id'])->findOrEmpty();
|
||
if (!$detail->isEmpty()) {
|
||
self::setError('此数据关联了提成明细信息,须删除提成明细信息');
|
||
return false;
|
||
}
|
||
return ProjectCommission::destroy($params['id']);
|
||
}
|
||
|
||
|
||
/**
|
||
* @notes 获取详情
|
||
* @param $params
|
||
* @return array
|
||
* @author likeadmin
|
||
* @date 2024/02/23 09:37
|
||
*/
|
||
public static function detail($params): array
|
||
{
|
||
$data = ProjectCommission::withoutField('create_time,update_time,delete_time')->findOrEmpty($params['id'])->toArray();
|
||
$project = CostProject::field('project_name,project_num,contract_id,industry,principal')->where('id', $data['project_id'])->findOrEmpty();
|
||
$contract = MarketingContract::field('contract_name')->where('id', $project['contract_id'])->findOrEmpty();
|
||
$admin = Admin::field('name')->where('id', $project['principal'])->findOrEmpty();
|
||
$djr = Admin::field('name')->where('id', $data['djr'])->findOrEmpty();
|
||
$data['djr_name'] = $djr?->name;
|
||
$data['project_name'] = $project['project_name'];
|
||
$data['project_num'] = $project['project_num'];
|
||
$data['contract_name'] = $contract['contract_name'];
|
||
$data['industry_nature'] = $project->industry_text;
|
||
$data['principal_name'] = $admin?->name;
|
||
//到账金额
|
||
$data['total_refund_amount'] = ZjzxRefund::where('project_id', $data['project_id'])->sum('amount');
|
||
//已支付总额
|
||
$data['total_pay_amount'] = ProjectCommission::where('project_id', $data['project_id'])->sum('bczfze');
|
||
//应提成总金额
|
||
$data['total_commission_amount'] = $data['total_refund_amount'] * ($data['rate'] / 100);
|
||
$data['project_commission_detail'] = ProjectCommissionDetail::field('id,engineer,task_name,task_type,professional_type,zj_amount,sk_amount,tc_rate,tc_amount,pay_amount,other_fee,remark')->where('project_commission_id', $data['id'])->select()->each(function ($data) {
|
||
$data['task_type_text'] = $data->task_type_text;
|
||
$data['professional_type_text'] = $data->professional_type_text;
|
||
})->toArray();
|
||
return $data;
|
||
}
|
||
|
||
public static function datas()
|
||
{
|
||
$datas = ProjectCommission::field(['id', 'num'])
|
||
->order(['id' => 'desc'])
|
||
->select()
|
||
->toArray();
|
||
foreach ($datas as &$item) {
|
||
$item['projectinfo'] = 'ID:' . $item['id'] . ' / 单号:' . $item['num'];
|
||
}
|
||
return $datas;
|
||
}
|
||
} |