소스 검색

劳务公司结算

linwu 1 년 전
부모
커밋
9baea64c0b

+ 489 - 413
app/admin/controller/Worker.php

@@ -1,431 +1,507 @@
 <?php
+
 namespace app\admin\controller;
 
 use app\admin\BaseController;
 use app\common\model\User as UserModel;
 use app\common\model\Worker as WorkerModel;
 use app\common\model\WorkerForm as WorkerFormModel;
+use app\common\model\WorkerIncome as WorkerIncomeModel;
 
 use app\common\model\WorkerShareCate as WorkerShareCateModel;
 use app\common\model\WorkerShare as WorkerShareModel;
 
+use app\common\service\WorkerIncomeService;
 use think\facade\Db;
 
 class Worker extends BaseController
 {
-	
-	// 推广海报
-	public function shareList()
-	{
-		$catelist = WorkerShareCateModel::order(['priority'=>'desc','id'=>'desc'])->select();
-		return view('worker/sharelist',[
-			'catelist'		=> $catelist
-		]); 
-	}
-	
-	public function shareCateForm()
-	{
-		$id = input('id/d', 0);
-		$sharecate = WorkerShareCateModel::findOrEmpty($id);
-		return view('worker/sharecateform',[
-			'sharecate'		=> $sharecate
-		]);
-	}
-	
-	public function shareForm()
-	{
-		$id = input('id/d', 0);
-		$share = WorkerShareModel::findOrEmpty($id);
-		$catelist = WorkerShareCateModel::order(['priority'=>'desc','id'=>'desc'])->select();
-		return view('worker/shareform',[
-			'share'		=> $share,
-			'catelist'		=> $catelist
-		]);
-	}
-	
-	public function editShareCate()
-	{
-		$id = input('id/d', 0);
-		$data = array(
-			'title' 	=> input('title/s', ""),
-			'status' 	=> input('status/d', 1),
-			'priority'  => input('priority/d', 0)
-		);
-		if (empty($id)){
-			$sharecate = WorkerShareCateModel::create($data);
-		}else{
-			$sharecate = WorkerShareCateModel::find($id);
-			$sharecate->save($data);
-		}
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function editShare()
-	{
-		$id = input('id/d', 0);
-		$data = array(
-			'cateid'	=> input('cateid/d', 0),
-			'title' 	=> input('title/s', ""),
-			'tilpic' 	=> input('tilpic/s', ""),
-			'status'	=> input('status/d', 1),
-			'priority'  => input('priority/d', 0)
-		); 
-		if (empty($id)){
-			$share = WorkerShareModel::create($data);
-		}else{
-			$share = WorkerShareModel::find($id);
-			$share->save($data);
-		}
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function listShareCate()
-	{
-		$limit = input('limit');
-		$page = input('page');
-		$list = WorkerShareCateModel::withCount('workerShare')->order(['priority'=>'desc','id'=>'desc'])->limit($limit)->page($page)->append(['status_text'])->select();
-		$count = WorkerShareCateModel::count();
-		if ($count==0){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "未查询到数据"
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 0,
-			'msg'	=> "",
-			'count' => $count,
-			'data'  => $list
-		)));
-	}	
-	
-	public function listShare()
-	{
-		$limit = input('limit');
-		$page = input('page');
-		$map = array();
-		$cateid = input('cateid/d', 0);
-		if (!empty($cateid)){
-			$map[] = ['cateid', '=', $cateid];
-		}
-		$status = input('status/d', 0);
-		if (!empty($status)){
-			$map[] = ['status', '=', $status];
-		}
-		$list = WorkerShareModel::with('workerShareCate')->where($map)->order(['priority'=>'desc','id'=>'desc'])->limit($limit)->page($page)->append(['status_text','stype_text'])->select();
-		$count = WorkerShareModel::where($map)->count();
-		if ($count==0){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "未查询到数据"
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 0,
-			'msg'	=> "",
-			'count' => $count,
-			'data'  => $list
-		)));
-	}
-	
-	public function fieldShareCate()
-	{
-		$id = input('id/d', 0);
-		$info = WorkerShareCateModel::find($id);
-		$info->save([
-			input('field/s')  => input('value/s', "")
-		]);
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function fieldShare()
-	{
-		$id = input('id/d', 0);
-		$info = WorkerShareModel::find($id);
-		$info->save([
-			input('field/s')  => input('value/s', "")
-		]);
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function delShareCate()
-	{
-		$id = input('id/d', 0);
-		$sharecate = WorkerShareCateModel::where('id',$id)->select();
-		WorkerShareModel::where('cateid', '=', $id)->delete(); 
-		$result = $sharecate->delete();
-		if ($result){
-			exit(json_encode(array(
-				'code' 	=> 0,
-				'msg'	=> ""
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 1,
-			'msg'	=> "删除失败,请稍后重试"
-		)));
-	}
-	
-	public function delShare()
-	{
-		$id = input('id/d', 0);
-		$share = WorkerShareModel::where('id',$id)->select();
-		$result = $share->delete();
-		if ($result){
-			exit(json_encode(array(
-				'code' 	=> 0,
-				'msg'	=> ""
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 1,
-			'msg'	=> "删除失败,请稍后重试"
-		)));
-	}
-	
-	// 申请注册经纪人
-	public function fworkerList()
-	{
-		return view('worker/fworkerlist');
-	}
-	
-	public function fworkerForm()
-	{
-		$id = input('id/d, 0');
-		$fworker = WorkerFormModel::findOrEmpty($id);
-		return view('worker/fworkerform',[
-			'fworker'	=> $fworker
-		]);
-	}
-	
-	public function editFworker()
-	{
-		$id = input('id/d');
-		$fworker = WorkerFormModel::findOrEmpty($id);
-		$fworker->save([
-			'comname'  		=> input('comname/s', ""),
-			'address'  		=> input('address/s', ""),
-			'details'  		=> input('details/s', ""),
-			'realname'  	=> input('realname/s', ""),
-			'mobile'    	=> input('mobile/s', ""),
-			'address'		=> input('address/s', ""),
-			'comjobs'		=> input('comjobs/s', ""),
-			'status'		=> input('status/d', 1),
-			'remark'		=> input('remark/s', ""),
-			'createtime'	=> input('createtime/s', ""),
-		]);
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function fieldFworker()
-	{
-		$id = input('id/d',0); 
-		$info = WorkerFormModel::findOrEmpty($id);
-		$info->save([
-			input('field/s')  => input('value/s', "")
-		]);
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function delFworker()
-	{
-		$idarr = input('idarr/a');
-		$fworker = WorkerFormModel::whereIn('id',$idarr)->select();
-		$result = $fworker->delete();
-		if ($result){
-			exit(json_encode(array(
-				'code' 	=> 0,
-				'msg'	=> ""
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 1,
-			'msg'	=> "删除失败,请稍后重试"
-		)));
-	}
-	
-	public function listFworker()
-	{
-		$limit = input('limit');
-		$page = input('page');
-		$map = array();
-		$keywords = input('keywords/s');
-		if (!empty($keywords)){
-			$map[] =['comname|realname', 'like', '%'.$keywords.'%'];
-		}
-		$status = input('status/d');
-		if (!empty($status)){
-			$map[] = ['status', '=', $status];
-		}
-		$list = WorkerFormModel::where($map)->order('id','DESC')->limit($limit)->page($page)->append(['status_text'])->select();
-		$count = WorkerFormModel::where($map)->count();
-		if ($count==0){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "未查询到数据"
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 0,
-			'msg'	=> "",
-			'count' => $count,
-			'data'  => $list
-		)));
-	}
-	
-	 
-	
-	
-	
-	
-	public function workerList()
-	{
-		return view('worker/workerlist');
-	}
-	
-	public function workerForm()
-	{
-		$id = input('id/d', 0);
-		$worker = WorkerModel::with(['muser'])->findOrEmpty($id);
-		return view('worker/workerform',[
-			'worker'		=> $worker
-		]);
-	}
-	
-	public function editWorker()
-	{
-		$id = input('id/d', "");
-		$muser = UserModel::where(['mobile'=>input('musermobile/s', '')])->findOrEmpty();
-		if ($muser->isEmpty()){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "关联的用户不存在。"
-			)));
-		}
-		$data = [
-			'userid'		=> $muser->id,
-			'wtype'			=> input('wtype/d', 1),
-			'title'			=> input('title/s', ""),
-			'ftitle'		=> input('ftitle/s', ""),
-			'tilpic'  		=> input('tilpic/s', ""),
-			'realname'  	=> input('realname/s', ""),
-			'mobile'    	=> input('mobile/s', ""),
-			'weixin'    	=> input('weixin/s', ""),
-			'latitude'		=> input('latitude/f'),
-			'longitude'		=> input('longitude/f'),
-			'province'		=> input('province/s'),
-			'city'			=> input('city/s'),
-			'district'		=> input('district/s'),
-			'address'		=> input('address/s'),
-			'picone'		=> input('picone/s', ""),
-			'pictwo'		=> input('pictwo/s', ""),
-			'picthr'		=> input('picthr/s', ""),
-			'details'		=> input('details/s'),
-			'priority'    	=> input('priority/d', 0),
-			'remark'  		=> input('remark/s', ""),
-			'status'		=> input('status/d', 1)
-		];
-		$password = input('password/s', "");
-		if (empty($id)){
-			$data['createtime'] = time();
-			$worker = WorkerModel::create($data);
-		}else{
-			$worker = WorkerModel::find($id);
-			$worker->save($data);
-		}
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function fieldWorker()
-	{
-		$id = input('id/d',0); 
-		$info = WorkerModel::findOrEmpty($id);
-		if ($info->isEmpty()){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "信息不存在。"
-			)));
-		}else{
-			$info->save([
-				input('field/s')  => input('value', "")
-			]);
-		}
-		exit(json_encode(array(
-			'code' 	=> 0
-		)));
-	}
-	
-	public function delWorker()
-	{
-		$access_admin = session('access_admin');
-		$password = input('password');
-		if ( $access_admin['password'] !== md5($password) ){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "操作密码验证失败"
-			)));
-		}
-		$idarr = input('idarr/a');
-        $result = Db::name('worker')->whereIn('id',$idarr)->update(['deletetime'=>time()]);
-		if ($result){
-			exit(json_encode(array(
-				'code' 	=> 0,
-				'msg'	=> ""
-			)));
-		}
-		exit(json_encode(array(
-			'code' 	=> 1,
-			'msg'	=> "删除失败,请稍后重试"
-		)));
-	}
-	
-	public function listWorker()
-	{
-		$limit = input('limit');
-		$page = input('page');
-		$map = array();
-		$keywords = input('keywords/s', "");
-		if (!empty($keywords)){
-			$map[] =['title|realname', 'like', '%'.$keywords.'%'];
-		}
-		$wtype = input('wtype/d', 0);
-		if (!empty($wtype)){
-			$map[] = ['wtype', '=', $wtype];
-		}
-		$status = input('status/d', 0);
-		if (!empty($status)){
-			$map[] = ['status', '=', $status];
-		}
-		$list = WorkerModel::with(['muser'])->where($map)->order(['priority'=>'DESC','id'=>'DESC'])->limit($limit)->page($page)->append(['wtype_text','status_text'])->select();
-		//dd($list);
-		$count = WorkerModel::where($map)->count();
-		if ($count==0){
-			exit(json_encode(array(
-				'code' 	=> 1,
-				'msg'	=> "未查询到数据"
-			)));
-		}
+
+    // 推广海报
+    public function shareList()
+    {
+        $catelist = WorkerShareCateModel::order(['priority' => 'desc', 'id' => 'desc'])->select();
+        return view('worker/sharelist', [
+            'catelist' => $catelist,
+        ]);
+    }
+
+    public function shareCateForm()
+    {
+        $id        = input('id/d', 0);
+        $sharecate = WorkerShareCateModel::findOrEmpty($id);
+        return view('worker/sharecateform', [
+            'sharecate' => $sharecate,
+        ]);
+    }
+
+    public function shareForm()
+    {
+        $id       = input('id/d', 0);
+        $share    = WorkerShareModel::findOrEmpty($id);
+        $catelist = WorkerShareCateModel::order(['priority' => 'desc', 'id' => 'desc'])->select();
+        return view('worker/shareform', [
+            'share'    => $share,
+            'catelist' => $catelist,
+        ]);
+    }
+
+    public function editShareCate()
+    {
+        $id   = input('id/d', 0);
+        $data = [
+            'title'    => input('title/s', ""),
+            'status'   => input('status/d', 1),
+            'priority' => input('priority/d', 0),
+        ];
+        if (empty($id)) {
+            $sharecate = WorkerShareCateModel::create($data);
+        } else {
+            $sharecate = WorkerShareCateModel::find($id);
+            $sharecate->save($data);
+        }
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function editShare()
+    {
+        $id   = input('id/d', 0);
+        $data = [
+            'cateid'   => input('cateid/d', 0),
+            'title'    => input('title/s', ""),
+            'tilpic'   => input('tilpic/s', ""),
+            'status'   => input('status/d', 1),
+            'priority' => input('priority/d', 0),
+        ];
+        if (empty($id)) {
+            $share = WorkerShareModel::create($data);
+        } else {
+            $share = WorkerShareModel::find($id);
+            $share->save($data);
+        }
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function listShareCate()
+    {
+        $limit = input('limit');
+        $page  = input('page');
+        $list  = WorkerShareCateModel::withCount('workerShare')->order(['priority' => 'desc', 'id' => 'desc'])->limit($limit)->page($page)->append(['status_text'])->select();
+        $count = WorkerShareCateModel::count();
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
+
+    public function listShare()
+    {
+        $limit  = input('limit');
+        $page   = input('page');
+        $map    = [];
+        $cateid = input('cateid/d', 0);
+        if (!empty($cateid)) {
+            $map[] = ['cateid', '=', $cateid];
+        }
+        $status = input('status/d', 0);
+        if (!empty($status)) {
+            $map[] = ['status', '=', $status];
+        }
+        $list  = WorkerShareModel::with('workerShareCate')->where($map)->order(['priority' => 'desc', 'id' => 'desc'])->limit($limit)->page($page)->append(['status_text', 'stype_text'])->select();
+        $count = WorkerShareModel::where($map)->count();
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
+
+    public function fieldShareCate()
+    {
+        $id   = input('id/d', 0);
+        $info = WorkerShareCateModel::find($id);
+        $info->save([
+            input('field/s') => input('value/s', ""),
+        ]);
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function fieldShare()
+    {
+        $id   = input('id/d', 0);
+        $info = WorkerShareModel::find($id);
+        $info->save([
+            input('field/s') => input('value/s', ""),
+        ]);
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function delShareCate()
+    {
+        $id        = input('id/d', 0);
+        $sharecate = WorkerShareCateModel::where('id', $id)->select();
+        WorkerShareModel::where('cateid', '=', $id)->delete();
+        $result = $sharecate->delete();
+        if ($result) {
+            exit(json_encode([
+                'code' => 0,
+                'msg'  => "",
+            ]));
+        }
+        exit(json_encode([
+            'code' => 1,
+            'msg'  => "删除失败,请稍后重试",
+        ]));
+    }
+
+    public function delShare()
+    {
+        $id     = input('id/d', 0);
+        $share  = WorkerShareModel::where('id', $id)->select();
+        $result = $share->delete();
+        if ($result) {
+            exit(json_encode([
+                'code' => 0,
+                'msg'  => "",
+            ]));
+        }
+        exit(json_encode([
+            'code' => 1,
+            'msg'  => "删除失败,请稍后重试",
+        ]));
+    }
+
+    // 申请注册经纪人
+    public function fworkerList()
+    {
+        return view('worker/fworkerlist');
+    }
+
+    public function fworkerForm()
+    {
+        $id      = input('id/d, 0');
+        $fworker = WorkerFormModel::findOrEmpty($id);
+        return view('worker/fworkerform', [
+            'fworker' => $fworker,
+        ]);
+    }
+
+    public function editFworker()
+    {
+        $id      = input('id/d');
+        $fworker = WorkerFormModel::findOrEmpty($id);
+        $fworker->save([
+            'comname'    => input('comname/s', ""),
+            'address'    => input('address/s', ""),
+            'details'    => input('details/s', ""),
+            'realname'   => input('realname/s', ""),
+            'mobile'     => input('mobile/s', ""),
+            'address'    => input('address/s', ""),
+            'comjobs'    => input('comjobs/s', ""),
+            'status'     => input('status/d', 1),
+            'remark'     => input('remark/s', ""),
+            'createtime' => input('createtime/s', ""),
+        ]);
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function fieldFworker()
+    {
+        $id   = input('id/d', 0);
+        $info = WorkerFormModel::findOrEmpty($id);
+        $info->save([
+            input('field/s') => input('value/s', ""),
+        ]);
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function delFworker()
+    {
+        $idarr   = input('idarr/a');
+        $fworker = WorkerFormModel::whereIn('id', $idarr)->select();
+        $result  = $fworker->delete();
+        if ($result) {
+            exit(json_encode([
+                'code' => 0,
+                'msg'  => "",
+            ]));
+        }
+        exit(json_encode([
+            'code' => 1,
+            'msg'  => "删除失败,请稍后重试",
+        ]));
+    }
+
+    public function listFworker()
+    {
+        $limit    = input('limit');
+        $page     = input('page');
+        $map      = [];
+        $keywords = input('keywords/s');
+        if (!empty($keywords)) {
+            $map[] = ['comname|realname', 'like', '%' . $keywords . '%'];
+        }
+        $status = input('status/d');
+        if (!empty($status)) {
+            $map[] = ['status', '=', $status];
+        }
+        $list  = WorkerFormModel::where($map)->order('id', 'DESC')->limit($limit)->page($page)->append(['status_text'])->select();
+        $count = WorkerFormModel::where($map)->count();
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
+
+
+    public function workerList()
+    {
+        return view('worker/workerlist');
+    }
+
+    public function workerForm()
+    {
+        $id     = input('id/d', 0);
+        $worker = WorkerModel::with(['muser'])->findOrEmpty($id);
+        return view('worker/workerform', [
+            'worker' => $worker,
+        ]);
+    }
+
+    public function editWorker()
+    {
+        $id    = input('id/d', "");
+        $muser = UserModel::where(['mobile' => input('musermobile/s', '')])->findOrEmpty();
+        if ($muser->isEmpty()) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "关联的用户不存在。",
+            ]));
+        }
+        $data     = [
+            'userid'    => $muser->id,
+            'wtype'     => input('wtype/d', 1),
+            'title'     => input('title/s', ""),
+            'ftitle'    => input('ftitle/s', ""),
+            'tilpic'    => input('tilpic/s', ""),
+            'realname'  => input('realname/s', ""),
+            'mobile'    => input('mobile/s', ""),
+            'weixin'    => input('weixin/s', ""),
+            'latitude'  => input('latitude/f'),
+            'longitude' => input('longitude/f'),
+            'province'  => input('province/s'),
+            'city'      => input('city/s'),
+            'district'  => input('district/s'),
+            'address'   => input('address/s'),
+            'picone'    => input('picone/s', ""),
+            'pictwo'    => input('pictwo/s', ""),
+            'picthr'    => input('picthr/s', ""),
+            'details'   => input('details/s'),
+            'priority'  => input('priority/d', 0),
+            'remark'    => input('remark/s', ""),
+            'status'    => input('status/d', 1),
+        ];
+        $password = input('password/s', "");
+        if (empty($id)) {
+            $data['createtime'] = time();
+            $worker             = WorkerModel::create($data);
+        } else {
+            $worker = WorkerModel::find($id);
+            $worker->save($data);
+        }
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function fieldWorker()
+    {
+        $id   = input('id/d', 0);
+        $info = WorkerModel::findOrEmpty($id);
+        if ($info->isEmpty()) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "信息不存在。",
+            ]));
+        } else {
+            $info->save([
+                input('field/s') => input('value', ""),
+            ]);
+        }
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+
+    public function delWorker()
+    {
+        $access_admin = session('access_admin');
+        $password     = input('password');
+        if ($access_admin['password'] !== md5($password)) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "操作密码验证失败",
+            ]));
+        }
+        $idarr  = input('idarr/a');
+        $result = Db::name('worker')->whereIn('id', $idarr)->update(['deletetime' => time()]);
+        if ($result) {
+            exit(json_encode([
+                'code' => 0,
+                'msg'  => "",
+            ]));
+        }
+        exit(json_encode([
+            'code' => 1,
+            'msg'  => "删除失败,请稍后重试",
+        ]));
+    }
+
+    public function listWorker()
+    {
+        $limit    = input('limit');
+        $page     = input('page');
+        $map      = [];
+        $keywords = input('keywords/s', "");
+        if (!empty($keywords)) {
+            $map[] = ['title|realname', 'like', '%' . $keywords . '%'];
+        }
+        $wtype = input('wtype/d', 0);
+        if (!empty($wtype)) {
+            $map[] = ['wtype', '=', $wtype];
+        }
+        $status = input('status/d', 0);
+        if (!empty($status)) {
+            $map[] = ['status', '=', $status];
+        }
+        $list = WorkerModel::with(['muser'])->where($map)->order(['priority' => 'DESC', 'id' => 'DESC'])->limit($limit)->page($page)->append(['wtype_text', 'status_text'])->select();
+        //dd($list);
+        $count = WorkerModel::where($map)->count();
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
         //var_dump(json_decode($list,true));
-		exit(json_encode(array(
-			'code' 	=> 0,
-			'msg'	=> "",
-			'count' => $count,
-			'data'  => $list
-		)));
-	}
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
+
+    public function incomeList()
+    {
+        $workerid = input('workerid');
+        if (empty($workerid)) {
+            exit("未查询到数据");
+        }
+
+        return view('worker/incomelist', [
+            'workerid' => $workerid,
+        ]);
+    }
+
+    public function listIncome()
+    {
+        $workerid = input('workerid');
+        if (empty($workerid)) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+
+        $limit    = input('limit/d', 20);
+        $page     = input('page/d', 1);
+        $map = [
+            ['workerid','=',$workerid]
+        ];
+        $list  = WorkerIncomeModel::where($map)->order('id', 'DESC')->limit($limit)->page($page)->select();
+        $count = WorkerIncomeModel::where($map)->count();
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
+
+    public function settleIncome()
+    {
+        $workerid = input('workerid');
+        $value    = input('value');
+
+        if (empty($workerid) || $value <= 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "参数错误",
+            ]));
+        }
+
+        $worker = WorkerModel::find($workerid);
+        if (empty($worker)) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        if ($worker['income'] < $value) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "公司收益不足",
+            ]));
+        }
+
+        $incomeService = new WorkerIncomeService();
+        $incomeService->add($workerid, -$value, '商家结算', '平台与劳务公司线下结算');
 
+        exit(json_encode([
+            'code' => 0,
+            'msg'  => "",
+        ]));
+    }
 }

+ 39 - 0
app/admin/view/worker/incomelist.html

@@ -0,0 +1,39 @@
+<div class="layui-fluid">
+	<div class="layui-card">
+		<div class="layui-card-body">
+			<table id="LAY-worker-incomelist-table" lay-filter="LAY-worker-incomelist-table"></table>
+		</div>
+	</div>
+</div>
+
+<script>
+	layui.config({
+		base: '/static/echoui/' //静态资源所在路径
+	}).extend({
+		index: 'lib/index' //主入口模块
+	}).use(['index', 'form', 'set', 'table'], function() {
+		var $ = layui.$,
+			setter = layui.setter,
+			admin = layui.admin,
+			form = layui.form,
+			table = layui.table;
+		form.render();
+
+		table.render({
+			elem: '#LAY-worker-incomelist-table',
+			url: setter.baseAdminUrl + 'worker/listincome?workerid={$workerid}',
+			cols: [
+				[
+					{ field: 'title', title: '标题' },
+					{ field: 'value', title: '收益', width: 120 },
+					{ field: 'remark', title: '备注' },
+					{ field: 'createtime', title: '时间'},
+				]
+			],
+			page: true,
+			limit: 50,
+			cellMinWidth: 150,
+			text: '对不起,加载出现异常!'
+		});
+	});
+</script>

+ 34 - 1
app/admin/view/worker/workerlist.html

@@ -51,6 +51,8 @@
 				{{#  } }}
 			</script>
 			<script type="text/html" id="setTpl">
+				<a class="layui-btn layui-btn-xs" lay-event="income"><i class="layui-icon layui-icon-table"></i>结算明细</a>
+				<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="settle"><i class="layui-icon layui-icon-edit"></i>收益结算</a>
 				<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
 				<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
 			</script>
@@ -83,6 +85,8 @@
 					{ field: 'wtype_text', title: '公司类型', edit: 'text' },
 					{ field: 'realname', title: '姓名', width: 150, edit: 'text' },
 					{ field: 'mobile', title: '手机号', width: 150, edit: 'text' },
+					{ field: 'income', title: '收益', width: 120 },
+					{ field: 'income_total', title: '总收益', width: 120 },
 					{ field: 'weixin', title: '微信号', width: 150, edit: 'text' },
 					{ field: 'muser', title: '关联的用户(姓名-手机号)', templet: '#muserTpl', minWidth: 250, align: 'left' },
 					{ field: 'province', title: '省' },
@@ -91,7 +95,7 @@
 					{ field: 'address', width: 200, title: '详细地址', hide: 'true', edit: 'text' },
 					{ field: 'status_text', title: '状态', width: 100, align: 'center' },
 					{ field: 'createtime', title: '创建时间', width: 170, hide: true },
-					{ title: '操作', width: 170, align: 'center', fixed: 'right', toolbar: '#setTpl' }
+					{ title: '操作', width: 340, align: 'center', fixed: 'right', toolbar: '#setTpl' }
 				]
 			],
 			page: true,
@@ -200,6 +204,35 @@
 					area: ['750px', '480px']
 				});
 				layer.full(index);
+			} else if (obj.event === 'settle') {
+				layer.prompt({
+					formType: 0,
+					title: '请输入要结算的金额'
+				}, function(value, index) {
+					layer.close(index);
+					layer.confirm('确定要结算吗?', function(index) {
+						admin.req({
+							url: setter.baseAdminUrl + 'worker/settleIncome',
+							data: {
+								value: value,
+								workerid: data.id
+							},
+							done: function(res) {
+								table.reload('LAY-worker-workerlist-table');
+							}
+						});
+						layer.close(index);
+					});
+				});
+			} else if (obj.event === 'income') {
+				index = layer.open({
+					type: 2,
+					title: '结算明细',
+					content: 'incomelist.html?workerid=' + data.id,
+					maxmin: true,
+					area: ['750px', '480px']
+				});
+				layer.full(index);
 			}
 		});
 

+ 65 - 62
app/common/model/Agent.php

@@ -1,4 +1,5 @@
 <?php
+
 namespace app\common\model;
 
 use think\Model;
@@ -9,69 +10,71 @@ class Agent extends Model
     use SoftDelete;
     protected $deleteTime = 'deletetime';
     protected $defaultSoftDelete = 0;
-	// 设置字段信息
+    // 设置字段信息
     protected $schema = [
-        'id'			=> 'int',
-		'userid'		=> 'int',
-		'workerid'		=> 'int',
-		'loginname'		=> 'string',
-		'password'		=> 'string',
-		'idnumber'		=> 'string',
-		'title'			=> 'string',
-		'tilpic'		=> 'string',
-		'picall'		=> 'string',
-        'realname'		=> 'string',
-		'mobile'		=> 'string',
-		'telephone'		=> 'string',
-		'latitude'		=> 'float',
-		'longitude'		=> 'float',
-		'province'      => 'string',
-		'city'       	=> 'string',
-		'district'     	=> 'string',
-		'address'       => 'string',
-		'details'       => 'string',
-		'priority'		=> 'int',
-		'remark'		=> 'string',
-		'status'		=> 'tinyint',
-		'createtime'    => 'int',
-		'wxampcode'		=> 'string'
+        'id'           => 'int',
+        'userid'       => 'int',
+        'workerid'     => 'int',
+        'loginname'    => 'string',
+        'password'     => 'string',
+        'idnumber'     => 'string',
+        'title'        => 'string',
+        'tilpic'       => 'string',
+        'picall'       => 'string',
+        'realname'     => 'string',
+        'mobile'       => 'string',
+        'telephone'    => 'string',
+        'latitude'     => 'float',
+        'longitude'    => 'float',
+        'province'     => 'string',
+        'city'         => 'string',
+        'district'     => 'string',
+        'address'      => 'string',
+        'details'      => 'string',
+        'priority'     => 'int',
+        'remark'       => 'string',
+        'status'       => 'tinyint',
+        'createtime'   => 'int',
+        'wxampcode'    => 'string',
+        'income'       => 'decimal',
+        'income_total' => 'decimal',
     ];
-	
-	// 设置字段自动转换类型
-	protected $type = [
-		'picall'		=> 'json',
-		'createtime'	=> 'timestamp:Y-m-d H:i:s'
+
+    // 设置字段自动转换类型
+    protected $type = [
+        'picall'     => 'json',
+        'createtime' => 'timestamp:Y-m-d H:i:s',
     ];
-	protected $jsonAssoc = true; 
-	
-	public function getStatusTextAttr($value,$data)
-	{
-		$status = [1=>'正常',2=>'禁用'];
-		return $status[$data['status']];
-	}
-	
-	// 关联User
-	public function muser()
-	{
-	    return $this->hasOne(User::class, "id", "userid");
-	}
-	
-	// 关联Worker
-	public function worker()
-	{
-	    return $this->hasOne(Worker::class, "id", "workerid");
-	}
-	
-	// 关联Broker
-	public function broker()
-	{
-	    return $this->hasMany(Broker::class, "agentid", "id");
-	}
-	
-	// 关联Partjob
-	public function partjob()
-	{
-	    return $this->hasMany(Partjob::class, "agentid", "id");
-	} 
-	
+    protected $jsonAssoc = true;
+
+    public function getStatusTextAttr($value, $data)
+    {
+        $status = [1 => '正常', 2 => '禁用'];
+        return $status[$data['status']];
+    }
+
+    // 关联User
+    public function muser()
+    {
+        return $this->hasOne(User::class, "id", "userid");
+    }
+
+    // 关联Worker
+    public function worker()
+    {
+        return $this->hasOne(Worker::class, "id", "workerid");
+    }
+
+    // 关联Broker
+    public function broker()
+    {
+        return $this->hasMany(Broker::class, "agentid", "id");
+    }
+
+    // 关联Partjob
+    public function partjob()
+    {
+        return $this->hasMany(Partjob::class, "agentid", "id");
+    }
+
 }

+ 2 - 0
app/common/model/BrokerIncome.php

@@ -10,6 +10,8 @@ class BrokerIncome extends Model
     protected $schema = [
         'id'           => 'int',
         'brokerid'     => 'int',
+        'workerid'     => 'int',
+        'agentid'      => 'int',
         'title'        => 'string',
         'origin_value' => 'decimal',
         'value'        => 'decimal',

+ 7 - 5
app/common/model/Worker.php

@@ -34,11 +34,13 @@ class Worker extends Model
         'picthr'    => 'string',
         'details'   => 'string',
 
-        'priority'   => 'int',
-        'remark'     => 'string',
-        'status'     => 'tinyint',
-        'createtime' => 'int',
-        'is_public'  => 'int',
+        'priority'     => 'int',
+        'remark'       => 'string',
+        'status'       => 'tinyint',
+        'createtime'   => 'int',
+        'is_public'    => 'int',
+        'income'       => 'decimal',
+        'income_total' => 'decimal',
     ];
 
     // 设置字段自动转换类型

+ 34 - 0
app/common/model/WorkerIncome.php

@@ -0,0 +1,34 @@
+<?php
+
+namespace app\common\model;
+
+use think\Model;
+
+class WorkerIncome extends Model
+{
+    // 设置字段信息
+    protected $schema = [
+        'id'           => 'int',
+        'workerid'     => 'int',
+        'title'        => 'string',
+        'origin_value' => 'decimal',
+        'value'        => 'decimal',
+        'remark'       => 'string',
+        'status'       => 'int',
+        'createtime'   => 'int',
+        'yeartime'     => 'int',
+        'monthtime'    => 'int',
+    ];
+
+    // 设置字段自动转换类型
+    protected $type = [
+        'createtime' => 'timestamp:Y-m-d H:i:s',
+    ];
+
+    // 关联User
+    public function worker()
+    {
+        return $this->hasOne(Worker::class, "id", "workerid");
+    }
+
+}

+ 21 - 2
app/common/service/IncomeService.php

@@ -4,15 +4,23 @@ namespace app\common\service;
 
 use app\common\model\BrokerIncome as BrokerIncomeModel;
 use app\common\model\Broker as BrokerModel;
+use app\common\model\Worker as WorkerModel;
+use app\common\model\Agent as AgentModel;
 
 class IncomeService extends BaseService
 {
     public function add($broker_id, $value, $title, $remark = '')
     {
+        if (empty($value)) {
+            return false;
+        }
+
         $broker   = BrokerModel::where('id', $broker_id)->find();
-        $integral = new BrokerIncomeModel();
-        $integral->save([
+        $income = new BrokerIncomeModel();
+        $income->save([
             'brokerid'     => $broker_id,
+            'workerid'     => $broker['workerid'],
+            'agentid'      => $broker['agentid'],
             'title'        => $title,
             'origin_value' => $broker['income'],
             'value'        => $value,
@@ -22,10 +30,21 @@ class IncomeService extends BaseService
             'monthtime'    => date("Ym"),
         ]);
 
+        //修改收益
+        $worker         = WorkerModel::where('id', $broker['workerid'])->find();
+        $worker->income += $value;
+        $agent          = AgentModel::where('id', $broker['agentid'])->find();
+        $agent->income  += $value;
         $broker->income += $value;
+
+        //修改累计收益
         if ($value > 0) {
             $broker->income_total += $value;
+            $worker->income_total += $value;
+            $agent->income_total  += $value;
         }
         $broker->save();
+        $worker->save();
+        $agent->save();
     }
 }

+ 36 - 0
app/common/service/WorkerIncomeService.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace app\common\service;
+
+use app\common\model\Worker as WorkerModel;
+use app\common\model\WorkerIncome as WorkerIncomeModel;
+
+class WorkerIncomeService extends BaseService
+{
+    public function add($id, $value, $title, $remark = '')
+    {
+        if (empty($value)) {
+            return false;
+        }
+
+        $worker   = WorkerModel::where('id', $id)->find();
+        $income = new WorkerIncomeModel();
+        $income->save([
+            'workerid'     => $id,
+            'title'        => $title,
+            'origin_value' => $worker['income'],
+            'value'        => $value,
+            'remark'       => $remark,
+            'createtime'   => time(),
+            'yeartime'     => date("Y"),
+            'monthtime'    => date("Ym"),
+        ]);
+
+        //修改收益
+        $worker->income += $value;
+        if ($value > 0) {
+            $worker->income_total += $value;
+        }
+        $worker->save();
+    }
+}