linwu 1 rok pred
rodič
commit
54261fa40c

+ 78 - 0
app/admin/controller/Agent.php

@@ -8,7 +8,9 @@ use app\common\model\Worker as WorkerModel;
 use app\common\model\Agent as AgentModel;
 use app\common\model\AgentForm as AgentFormModel;
 use app\common\model\Broker as BrokerModel;
+use app\common\model\AgentMoney as AgentMoneyModel;
 
+use app\common\service\AgentMoneyService;
 use app\common\validate\Agent as AgentValidate;
 use think\exception\ValidateException;
 use think\facade\Db;
@@ -277,5 +279,81 @@ class Agent extends BaseController
         ]));
     }
 
+    public function settleIncome()
+    {
+        $agentid = input('agentid');
+        $value    = input('value');
+
+        if (empty($agentid) || $value <= 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "参数错误",
+            ]));
+        }
+
+        $agent = AgentModel::find($agentid);
+        if (empty($agent)) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        if ($agent['money'] < $value) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "门店收益不足",
+            ]));
+        }
+
+        $moneyService = new AgentMoneyService();
+        $moneyService->settle($agentid, -$value, '门店结算', '平台与门店线下结算');
+
+        exit(json_encode([
+            'code' => 0,
+            'msg'  => "",
+        ]));
+    }
+
+    public function moneyList()
+    {
+        $agentid = input('agentid');
+        if (empty($agentid)) {
+            exit("未查询到数据");
+        }
 
+        return view('agent/moneylist', [
+            'agentid' => $agentid,
+        ]);
+    }
+
+    public function listMoney()
+    {
+        $agentid = input('agentid');
+        if (empty($agentid)) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+
+        $limit = input('limit/d', 20);
+        $page  = input('page/d', 1);
+        $map   = [
+            ['agentid', '=', $agentid],
+        ];
+        $list  = AgentMoneyModel::where($map)->order('id', 'DESC')->limit($limit)->page($page)->select();
+        $count = AgentMoneyModel::where($map)->count();
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
 }

+ 34 - 1
app/admin/view/agent/agentlist.html

@@ -52,6 +52,8 @@
 				{{#  } }}
 			</script>
 			<script type="text/html" id="setTpl">
+				<a class="layui-btn layui-btn-xs" lay-event="money"><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>
@@ -87,13 +89,15 @@
 					{ field: 'realname', title: '负责人姓名', edit: 'text' },
 					{ field: 'mobile', width: 150, title: '负责人手机号', edit: 'text' },
 					{ field: 'muser', title: '关联的用户(姓名-手机号)', templet: '#muserTpl', minWidth: 250, align: 'left' },
+					{ field: 'money', title: '收益', width: 120 },
+					{ field: 'money_total', title: '总收益', width: 120 },
 					{ field: 'province', title: '省' },
 					{ field: 'city', title: '市' },
 					{ field: 'district', title: '区县' },
 					{ field: 'address', width: 200, title: '详细地址', hide: 'true', edit: 'text' },
 					{ field: 'createtime', width: 170, title: '创建时间', sort: true },
 					{ field: 'status_text', title: '状态', minWidth: 80, align: 'center' },
-					{ title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#setTpl' }
+					{ title: '操作', width: 350, align: 'center', fixed: 'right', toolbar: '#setTpl' }
 				]
 			],
 			page: true,
@@ -201,6 +205,35 @@
 					area: ['550px', '550px']
 				});
 				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 + 'agent/settleIncome',
+							data: {
+								value: value,
+								agentid: data.id
+							},
+							done: function(res) {
+								table.reload('LAY-agent-agentlist-table');
+							}
+						});
+						layer.close(index);
+					});
+				});
+			} else if (obj.event === 'money') {
+				index = layer.open({
+					type: 2,
+					title: '结算明细',
+					content: 'moneylist.html?agentid=' + data.id,
+					maxmin: true,
+					area: ['750px', '480px']
+				});
+				layer.full(index);
 			}
 		});
 

+ 38 - 0
app/admin/view/agent/moneylist.html

@@ -0,0 +1,38 @@
+<div class="layui-fluid">
+	<div class="layui-card">
+		<div class="layui-card-body">
+			<table id="LAY-agent-incomelist-table" lay-filter="LAY-agent-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,
+			form = layui.form,
+			table = layui.table;
+		form.render();
+
+		table.render({
+			elem: '#LAY-agent-incomelist-table',
+			url: setter.baseAdminUrl + 'agent/listMoney?agentid={$agentid}',
+			cols: [
+				[
+					{ field: 'title', title: '标题' },
+					{ field: 'value', title: '收益', width: 120 },
+					{ field: 'remark', title: '备注' },
+					{ field: 'createtime', title: '时间'},
+				]
+			],
+			page: true,
+			limit: 50,
+			cellMinWidth: 150,
+			text: '对不起,加载出现异常!'
+		});
+	});
+</script>

+ 28 - 0
app/common/service/AgentMoneyService.php

@@ -47,4 +47,32 @@ class AgentMoneyService extends BaseService
 
         return $this->success('成功');
     }
+
+    public function settle($id, $value, $title, $remark = '')
+    {
+        if (empty($value)) {
+            return false;
+        }
+
+        $agent   = AgentModel::where('id', $id)->find();
+        $money = new AgentMoneyModel();
+        $money->save([
+            'workerid'     => $agent['workerid'],
+            'agentid'     => $id,
+            'title'        => $title,
+            'origin_value' => $agent['money'],
+            'value'        => $value,
+            'remark'       => $remark,
+            'createtime'   => time(),
+            'yeartime'     => date("Y"),
+            'monthtime'    => date("Ym"),
+        ]);
+
+        //修改收益
+        $agent->money += $value;
+        if ($value > 0) {
+            $agent->money_total += $value;
+        }
+        $agent->save();
+    }
 }

+ 80 - 0
app/worker/controller/Agent.php

@@ -2,11 +2,13 @@
 
 namespace app\worker\controller;
 
+use app\common\service\AgentMoneyService;
 use app\worker\BaseController;
 use app\common\model\Agent as AgentModel;
 use app\common\model\Broker as BrokerModel;
 use app\common\model\ComjobsReport as ComjobsReportModel;
 use app\common\model\User as UserModel;
+use app\common\model\AgentMoney as AgentMoneyModel;
 
 use app\common\validate\Agent as AgentValidate;
 use think\exception\ValidateException;
@@ -238,4 +240,82 @@ class Agent extends BaseController
             'code' => 0,
         ]));
     }
+
+    public function settleIncome()
+    {
+        $agentid = input('agentid');
+        $value    = input('value');
+
+        if (empty($agentid) || $value <= 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "参数错误",
+            ]));
+        }
+
+        $agent = AgentModel::find($agentid);
+        if (empty($agent)) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        if ($agent['money'] < $value) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "门店收益不足",
+            ]));
+        }
+
+        $moneyService = new AgentMoneyService();
+        $moneyService->settle($agentid, -$value, '门店结算', '企业与门店线下结算');
+
+        exit(json_encode([
+            'code' => 0,
+            'msg'  => "",
+        ]));
+    }
+
+    public function moneyList()
+    {
+        $agentid = input('agentid');
+        if (empty($agentid)) {
+            exit("未查询到数据");
+        }
+
+        return view('agent/moneylist', [
+            'agentid' => $agentid,
+        ]);
+    }
+
+    public function listMoney()
+    {
+        $agentid = input('agentid');
+        if (empty($agentid)) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+
+        $limit = input('limit/d', 20);
+        $page  = input('page/d', 1);
+        $map   = [
+            ['agentid', '=', $agentid],
+        ];
+        $list  = AgentMoneyModel::where($map)->order('id', 'DESC')->limit($limit)->page($page)->select();
+        $count = AgentMoneyModel::where($map)->count();
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
 }

+ 15 - 2
app/worker/controller/Login.php

@@ -25,12 +25,25 @@ class Login
     public function login()
     {
         $mobile = trim(input('mobile'));
+        $yzm = trim(input('yzm'));
         $data   = Db::name('worker')
             ->where('mobile', $mobile)
             ->find();
         if (empty($data)) {
-            $res['code']    = 1;
-            $res['message'] = '该手机号未注册,请先注册';
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => '该手机号未注册,请先注册',
+            ]));
+        }
+
+        if (!env('APP_DEBUG')) {
+            $yzm_code = Session::get('yzm_code');
+            if ($yzm_code != $yzm) {
+                exit(json_encode([
+                    'code' => 1,
+                    'msg'  => '手机验证码错误',
+                ]));
+            }
         }
 
         $workeradmin = WorkerModel::where(['mobile' => $mobile])->findOrEmpty()->toArray();

+ 34 - 1
app/worker/view/agent/agentlist.html

@@ -39,6 +39,8 @@
 			</script>
 			<script type="text/html" id="setTpl">
 				<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="transfer"><i class="layui-icon layui-icon-spread-left"></i>下线转移</a>
+				<a class="layui-btn layui-btn-xs" lay-event="money"><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>
@@ -72,13 +74,15 @@
 					{ field: 'realname', title: '负责人姓名', edit: 'text' },
 					{ field: 'mobile', width: 150, title: '负责人手机号', edit: 'text' },
 					{ field: 'muser', title: '关联的用户(姓名-手机号)', templet: '#muserTpl', minWidth: 250, align: 'left' },
+					{ field: 'money', title: '收益', width: 120 },
+					{ field: 'money_total', title: '总收益', width: 120 },
 					{ field: 'province', title: '省' },
 					{ field: 'city', title: '市' },
 					{ field: 'district', title: '区县' },
 					{ field: 'address', width: 200, title: '详细地址', hide: 'true', edit: 'text' },
 					{ field: 'createtime', width: 170, title: '创建时间', sort: true },
 					{ field: 'status_text', title: '状态', minWidth: 80, align: 'center' },
-					{ title: '操作', width: 250, align: 'center', fixed: 'right', toolbar: '#setTpl' }
+					{ title: '操作', width: 420, align: 'center', fixed: 'right', toolbar: '#setTpl' }
 				]
 			],
 			page: true,
@@ -187,6 +191,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.baseWorkerUrl + 'agent/settleIncome',
+							data: {
+								value: value,
+								agentid: data.id
+							},
+							done: function(res) {
+								table.reload('LAY-agent-agentlist-table');
+							}
+						});
+						layer.close(index);
+					});
+				});
+			} else if (obj.event === 'money') {
+				index = layer.open({
+					type: 2,
+					title: '结算明细',
+					content: 'moneylist.html?agentid=' + data.id,
+					maxmin: true,
+					area: ['750px', '480px']
+				});
+				layer.full(index);
 			}
 		});
 

+ 38 - 0
app/worker/view/agent/moneylist.html

@@ -0,0 +1,38 @@
+<div class="layui-fluid">
+	<div class="layui-card">
+		<div class="layui-card-body">
+			<table id="LAY-agent-incomelist-table" lay-filter="LAY-agent-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,
+			form = layui.form,
+			table = layui.table;
+		form.render();
+
+		table.render({
+			elem: '#LAY-agent-incomelist-table',
+			url: setter.baseWorkerUrl + 'agent/listMoney?agentid={$agentid}',
+			cols: [
+				[
+					{ field: 'title', title: '标题' },
+					{ field: 'value', title: '收益', width: 120 },
+					{ field: 'remark', title: '备注' },
+					{ field: 'createtime', title: '时间'},
+				]
+			],
+			page: true,
+			limit: 50,
+			cellMinWidth: 150,
+			text: '对不起,加载出现异常!'
+		});
+	});
+</script>