diff --git a/app/api/controller/CompanyController.php b/app/api/controller/CompanyController.php index 033fddcd7..82f07eaff 100644 --- a/app/api/controller/CompanyController.php +++ b/app/api/controller/CompanyController.php @@ -5,9 +5,12 @@ namespace app\api\controller; use app\common\logic\contract\ContractLogic; use app\common\model\auth\Admin; use app\common\model\Company; +use app\common\model\company\CompanyAccountLog; use app\common\model\contract\Contract; +use app\common\model\task\Task; use app\common\model\user\User; use app\common\model\user\UserAccountLog; +use think\Exception; use think\facade\Db; use app\common\model\informationg\UserInformationg; use app\common\model\informationg\UserInformationgDemand; @@ -201,7 +204,7 @@ class CompanyController extends BaseApiController public function shareholder_info() { // $params = $this->request->param(); - $find = Company::where('id', $this->userInfo['company_id'])->field('shareholder_money,village')->find()->toArray(); + $find = Company::where('id', $this->userInfo['company_id'])->field('id,shareholder_money,village')->find()->toArray(); $find['is_contract'] = 0; $find['check_status'] = 0; if ($find) { @@ -227,10 +230,17 @@ class CompanyController extends BaseApiController } else { $find['is_village'] = 0; } + // 股金任务是否完成 + $task = Task::where(['company_id' => $find['id'], 'type' => 35, 'status' => 3])->find(); + $find['is_done_task'] = 0; + if (!empty($task)) { + $find['is_done_task'] = 1; + } } else { $find['contract_url'] = ''; $find['contract_time'] = ''; $find['is_village'] = 0; + $find['is_done_task'] = 0; } return $this->success('ok', $find); } @@ -262,8 +272,75 @@ class CompanyController extends BaseApiController } return $this->fail(ContractLogic::getError()); } + + /** + * 小组服务公司股金上交 + */ public function pay_share_capital() { - // return + try { + $param = $this->request->param(); + // 上交股金金额 + $amount = $param['amount']; + // 小组服务公司 + $serviceGroupCompany = Company::where('id', $this->userInfo['company_id'])->find()->toArray(); + if ($amount < 0) { + $this->fail('参数错误,金额不能为负数'); + } + if ($amount > $serviceGroupCompany['shareholder_money']) { + $this->fail('公司股东金额不足以抵扣上交股金金额'); + } + // 村管理公司 + $villageCompany = Company::where(['village'=>$serviceGroupCompany['village'], 'company_type' => 17])->find()->toArray(); + + Db::startTrans(); + $sharecapitalChangeLogData = [ + 'subordinate_company_id' => $serviceGroupCompany['id'], + 'parent_company_id' => $villageCompany['id'], + 'amount' => $amount + ]; + $sharecapitalChangeLogInsertId = Db::name('company_sharecapital_change_log')->insertGetId($sharecapitalChangeLogData); + + // 小组服务公司股金变动 + 公司股金减少记录 + $leftAmount = bcsub($serviceGroupCompany['shareholder_money'], $amount, 2); + Company::where('id', $this->userInfo['company_id'])->save('shareholder_money', $leftAmount); + $company_log1 = [ + 'sn' => generate_sn(UserAccountLog::class, 'sn', 20), + 'company_id' => $serviceGroupCompany['id'], + 'change_object' => 2, // 变动对象 1余额 2股金 + 'change_type' => CompanyAccountLog::SHAREHOLDER_DEC_DEPOSIT, //变动类型 + 'action' => 2, //1-增加 2-减少 + 'left_amount' => $leftAmount, //变动后数量 + 'change_amount' => $amount, //变动数量 + 'extend' => json_encode(['company_sharecapital_change_log_id' => $sharecapitalChangeLogInsertId]), + 'status' => 1, + ]; + CompanyAccountLog::create($company_log1); + + // 村管理公司股金变动 + 公司股金增加记录 + $addAmount = bcadd($villageCompany['shareholder_money'], $amount, 2); + Company::where('id', $villageCompany['id'])->save('shareholder_money', $addAmount); + + // 公司账户变动记录 + $company_log2 = [ + 'sn' => generate_sn(UserAccountLog::class, 'sn', 20), + 'company_id' => $villageCompany['id'], + 'change_object' => 2, // 变动对象 1余额 2股金 + 'change_type' => CompanyAccountLog::TASK_INC_SHAREHOLDER_MONEY, //变动类型 + 'action' => 1, //1-增加 2-减少 + 'left_amount' => $addAmount, //变动后数量 + 'change_amount' => $amount, //变动数量 + 'extend' => json_encode(['company_sharecapital_change_log_id' => $sharecapitalChangeLogInsertId]), + 'status' => 1, + ]; + CompanyAccountLog::create($company_log2); + Db::commit(); + return $this->success('上交成功'); + } catch (Exception $e) { + Db::rolback(); + return $this->fail($e->getMessage()); + } + + } }