| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <?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\master_worker;
- use app\common\model\finance\MasterWorkerCaseOutLog;
- use app\common\model\master_worker\EngineerSettlement;
- use app\common\logic\BaseLogic;
- use app\common\model\master_worker\MasterWorker;
- use think\facade\Db;
- /**
- * EngineerSettlement逻辑
- * Class EngineerSettlementLogic
- * @package app\adminapi\logic
- */
- class EngineerSettlementLogic extends BaseLogic
- {
- /**
- * @notes 添加
- * @param array $params
- * @return bool
- * @author likeadmin
- * @date 2024/11/15 17:21
- */
- public static function add(array $params): bool
- {
- Db::startTrans();
- try {
- foreach ($params as $param) {
- EngineerSettlement::create([
- 'master_worker_id' => $param['master_worker_id'],
- 'worker_number' => $param['worker_number'],
- 'engineer_name' => $param['engineer_name'],
- 'original_balance' => $param['original_balance'],
- 'total_settlement_amount' => $param['total_settlement_amount'],
- 'deduction_amount' => $param['deduction_amount'],
- 'final_settlement_amount' => $param['final_settlement_amount'],
- 'settlement_time' => $param['settlement_time'],
- 'settlement_details_remarks' => $param['settlement_details_remarks'],
- ]);
- $masterWorker = MasterWorker::where('id', $param['master_worker_id'])->where('worker_number', $param['worker_number'])->find();
- if($masterWorker && $masterWorker->user_money >= $param['total_settlement_amount']){
- $masterWorker->user_money = $masterWorker->user_money - $param['total_settlement_amount'];
- $masterWorker->save();
- MasterWorkerCaseOutLog::create([
- 'sn' => generate_sn(MasterWorkerCaseOutLog::class,'sn'),
- 'worker_id' => $masterWorker->id,
- 'title' => '财务打款',
- 'change_amount' => $param['total_settlement_amount'],
- 'review_status' => 3,
- 'admin_id' => $param['admin_id'],
- 'remark' => '财务打款',
- 'create_time' => time(),
- 'update_time' => time(),
- ]);
- }else{
- throw new \Exception('工程师不存在、余额不足');
- }
- }
- 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/11/15 17:21
- */
- public static function edit(array $params): bool
- {
- Db::startTrans();
- try {
- EngineerSettlement::where('id', $params['id'])->update([
- 'master_worker_id' => $params['master_worker_id'],
- 'worker_number' => $params['worker_number'],
- 'engineer_name' => $params['engineer_name'],
- 'original_balance' => $params['original_balance'],
- 'total_settlement_amount' => $params['total_settlement_amount'],
- 'deduction_amount' => $params['deduction_amount'],
- 'final_settlement_amount' => $params['final_settlement_amount'],
- 'settlement_time' => $params['settlement_time'],
- 'settlement_details_remarks' => $params['settlement_details_remarks'],
- ]);
- 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/11/15 17:21
- */
- public static function delete(array $params): bool
- {
- return EngineerSettlement::destroy($params['id']);
- }
- /**
- * @notes 获取详情
- * @param $params
- * @return array
- * @author likeadmin
- * @date 2024/11/15 17:21
- */
- public static function detail($params): array
- {
- return EngineerSettlement::findOrEmpty($params['id'])->toArray();
- }
- public static function downloadLists(): array
- {
- return EngineerSettlement::where('id','>',0)
- ->field(['id', 'master_worker_id', 'worker_number', 'engineer_name', 'original_balance', 'total_settlement_amount', 'deduction_amount', 'final_settlement_amount', 'settlement_time', 'settlement_details_remarks'])
- ->order(['id' => 'desc'])
- ->select()
- ->toArray();
- }
- public static function engineerSettlementValidate($params)
- {
- try {
- foreach ($params as &$param) {
- $masterWorker = MasterWorker::where('id', $param['master_worker_id'])->where('worker_number', $param['worker_number'])->findOrFail();
- if($masterWorker->user_money < $param['total_settlement_amount']) throw new \Exception('余额不足');
- //判断日期时间格式是否正确 2024/1/1 00:00:00 或 2024-1-1 00:00:00
- if(!preg_match('/^[0-9]{4}\/[0-9]{1,2}\/[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}$/', $param['settlement_time'])
- && !preg_match('/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}$/', $param['settlement_time'])){
- throw new \Exception('日期时间格式错误');
- }else{
- $param['settlement_time'] = date('Y-m-d H:i:s', strtotime($param['settlement_time']));
- }
- if(!is_float($param['original_balance']) || !is_float($param['total_settlement_amount']) || !is_float($param['deduction_amount']) || !is_float($param['final_settlement_amount'])){
- throw new \Exception('金额格式错误');
- }
- if(!is_int($param['master_worker_id'])){
- throw new \Exception('工程师ID格式错误');
- }
- if(!is_numeric($param['worker_number'])){
- throw new \Exception('工程师编号格式错误');
- }
- }
- } catch (\Exception $e) {
- throw new \Exception($e->getMessage());
- }
- return $params;
- }
- }
|