林海涛 1 年之前
父節點
當前提交
c77358da8f

+ 0 - 2
app/adminapi/controller/master_worker/MasterWorkerController.php

@@ -103,6 +103,4 @@ class MasterWorkerController extends BaseAdminController
         $result = MasterWorkerLogic::detail($params);
         return $this->data($result);
     }
-
-
 }

+ 27 - 0
app/adminapi/controller/master_worker/RetentionMoneyLogController.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace app\adminapi\controller\master_worker;
+
+use app\adminapi\controller\BaseAdminController;
+use app\adminapi\logic\master_worker\RetentionMoneyLogic;
+use app\adminapi\validate\master_worker\MasterWorkerRetentionMoneyLogValidate;
+use app\workerapi\lists\MasterWorkerRetentionMoneyLogLists;
+
+class RetentionMoneyLogController extends BaseAdminController
+{
+    public array $notNeedLogin = ['totalAmount'];
+    public function lists()
+    {
+        return $this->dataLists(new MasterWorkerRetentionMoneyLogLists());
+    }
+
+    public function totalAmount()
+    {
+        $params = (new MasterWorkerRetentionMoneyLogValidate())->get()->goCheck('totalAmount');
+        $result = RetentionMoneyLogic::totalAmount($params);
+        if (false === $result) {
+            return $this->fail(RetentionMoneyLogic::getError());
+        }
+        return $this->success('操作成功',$result, 1, 0);
+    }
+}

+ 4 - 3
app/adminapi/lists/master_worker/MasterWorkerLists.php

@@ -85,7 +85,7 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
     {
          return MasterWorker::alias('mw')
             ->join('master_worker_register mwr', 'mwr.worker_id = mw.id')
-             ->leftJoin('service_work sw','sw.master_worker_id = mw.id and sw.service_status !=4')
+            ->leftjoin('service_work sw','sw.master_worker_id = mw.id and sw.service_status !=4 ')
             ->where($this->searchWhere)
             ->where($this->queryWhere())
 //            ->field(['mw.id', 'mw.sn', 'mw.avatar', 'mw.real_avatar','mw.worker_number', 'mw.real_name', 'mw.nickname', 'mw.account', 'mw.password', 'mw.mobile', 'mw.sex', 'mw.channel', 'mw.is_disable', 'mw.login_ip', 'mw.login_time', 'mw.is_new_user', 'mw.estimate_money', 'mw.user_money', 'mw.earnest_money', 'mw.exp'])
@@ -93,7 +93,8 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
                  'mw.*',
                  'mwr.maintain_exp_type',
                  'mwr.other_exp_type',
-                 'SUM(CASE WHEN sw.work_status NOT IN (7,8) THEN 1 ELSE 0 END) work_total'])
+                 'SUM(CASE WHEN sw.work_status NOT IN (7,8) THEN 1 ELSE 0 END) work_total'
+             ])
             ->limit($this->limitOffset, $this->limitLength)
             ->order(['mw.id' => 'desc'])
             ->group(['sw.master_worker_id'])
@@ -113,7 +114,7 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
     {
         return MasterWorker::alias('mw')
             ->join('master_worker_register mwr', 'mwr.worker_id = mw.id')
-            ->leftJoin('service_work sw','sw.master_worker_id = mw.id and sw.service_status !=4')
+            ->leftjoin('service_work sw','sw.master_worker_id = mw.id and sw.service_status !=4')
             ->field([
                 'mw.*',
                 'SUM(CASE WHEN sw.work_status NOT IN (7,8) THEN 1 ELSE 0 END) work_total'])

+ 88 - 0
app/adminapi/lists/master_worker/RetentionMoneyLogLists.php

@@ -0,0 +1,88 @@
+<?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\lists\master_worker;
+
+use app\adminapi\lists\BaseAdminDataLists;
+use app\common\lists\ListsSearchInterface;
+use app\common\model\master_worker\MasterWorkerRetentionMoneyLog;
+
+
+
+/**
+ * 账记流水列表
+ * Class AccountLogLists
+ * @package app\adminapi\lists\finance
+ */
+class RetentionMoneyLogLists extends BaseAdminDataLists implements ListsSearchInterface
+{
+
+    /**
+     * @notes 搜索条件
+     * @return array
+     * @author 段誉
+     * @date 2023/2/24 15:26
+     */
+    public function setSearch(): array
+    {
+        return [
+            '=' => ['worker_id','action'],
+        ];
+    }
+
+
+    /**
+     * @notes 搜索条件
+     * @author 段誉
+     * @date 2023/2/24 15:26
+     */
+    public function queryWhere()
+    {
+        $where = [];
+        return $where;
+    }
+
+
+    /**
+     * @notes 获取列表
+     * @return array
+     * @author 段誉
+     * @date 2023/2/24 15:31
+     */
+    public function lists(): array
+    {
+        $lists = MasterWorkerRetentionMoneyLog::alias('al')
+            ->where($this->searchWhere)
+            ->where($this->queryWhere())
+            ->append(['action_text'])
+            ->limit($this->limitOffset, $this->limitLength)
+            ->select()
+            ->toArray();
+        return $lists;
+    }
+
+
+    /**
+     * @notes 获取数量
+     * @return int
+     * @author 段誉
+     * @date 2023/2/24 15:36
+     */
+    public function count(): int
+    {
+        return MasterWorkerRetentionMoneyLog::where($this->queryWhere())
+            ->where($this->searchWhere)
+            ->count();
+    }
+}

+ 48 - 0
app/adminapi/logic/master_worker/RetentionMoneyLogic.php

@@ -0,0 +1,48 @@
+<?php
+/**
+ * @author 林海涛
+ * @date 2024/7/28 下午2:36
+ */
+namespace app\adminapi\logic\master_worker;
+
+use app\common\enum\worker\WorkerAccountLogEnum;
+use app\common\logic\BaseLogic;
+use app\common\model\master_worker\MasterWorker;
+use app\common\model\master_worker\MasterWorkerRetentionMoneyLog;
+
+class RetentionMoneyLogic extends BaseLogic
+{
+    public static function totalAmount($params)
+    {
+        try{
+            $model = MasterWorker::findOrEmpty($params['worker_id']);
+            if($model->isEmpty()){
+                throw new \Exception('用户不存在');
+            }
+            $where = [];
+            $where[] = ['worker_id','=',$params['worker_id']] ;
+            $incWhere =$where;
+            $incWhere[] = ['action', '=',WorkerAccountLogEnum::INC];
+            $data = [];
+            $data['amount_inc_total'] = MasterWorkerRetentionMoneyLog::where($incWhere)
+                ->sum('amount');
+            $outWhere = $where;
+            $outWhere[] =['action', '=',WorkerAccountLogEnum::DEC];
+            $data['amount_dec_total'] = MasterWorkerRetentionMoneyLog::where($outWhere)
+                ->sum('amount');
+            $data['amount_available_total'] = $data['amount_inc_total'] - $data['amount_dec_total'];
+            $data['retention_money_status'] = $model->retention_money_status;
+            $data['retention_money_status_text'] = $model->retention_money_status_text;
+            $data['retention_pay_status'] = $model->retention_pay_status;
+            $data['retention_pay_status_text'] = $model->retention_pay_status_text;
+            $data['worker_number'] = $model->worker_number;
+            $data['real_name'] = $model->real_name;
+            $data['worker_id'] = $model->id;
+            return $data;
+        } catch(\Exception $e){
+
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+}

+ 76 - 0
app/adminapi/validate/master_worker/MasterWorkerRetentionMoneyLogValidate.php

@@ -0,0 +1,76 @@
+<?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\validate\master_worker;
+
+
+use app\common\validate\BaseValidate;
+
+
+/**
+ * MasterWorker验证器
+ * Class MasterWorkerValidate
+ * @package app\adminapi\validate\master_worker
+ */
+class MasterWorkerRetentionMoneyLogValidate extends BaseValidate
+{
+
+     /**
+      * 设置校验规则
+      * @var string[]
+      */
+    protected $rule = [
+        'worker_id' => 'require',
+        'action' => 'require',
+        'amount' => 'require',
+        'remark' => 'require'
+     ];
+
+
+    /**
+     * 参数描述
+     * @var string[]
+     */
+    protected $field = [
+        'worker_id' => '师傅ID',
+        'action' => '动作',
+        'amount' => '金额',
+        'remark' => '备注',
+    ];
+
+
+    /**
+     * @notes 添加场景
+     * @return MasterWorkerValidate
+     * @author likeadmin
+     * @date 2024/07/10 18:17
+     */
+    public function sceneAdd()
+    {
+        return $this->only(['worker_id','action','amount','remark']);
+    }
+
+
+    /**
+     * @notes 详情场景
+     * @return MasterWorkerValidate
+     * @author likeadmin
+     * @date 2024/07/10 18:17
+     */
+    public function sceneTotalAmount()
+    {
+        return $this->only(['worker_id']);
+    }
+
+}

+ 4 - 3
app/common/model/master_worker/MasterWorker.php

@@ -43,7 +43,7 @@ class MasterWorker extends BaseModel
             $status = DictData::whereIn('type_value', 'retention_money_status')->column('name','value');
             Cache::set('RETENTION_MONEY_STATUS', json_encode($status,true),5);
         } else {
-            $status = json_decode($default);
+            $status = json_decode($default,true);
         }
         return $status[$data['retention_money_status']] ?? '';
     }
@@ -54,9 +54,10 @@ class MasterWorker extends BaseModel
             $status = DictData::whereIn('type_value', 'retention_pay_status')->column('name','value');
             Cache::set('RETENTION_PAY_STATUS', json_encode($status,true),5);
         } else {
-            $status = json_decode($default);
+            $status = json_decode($default,true);
         }
-        return $status[$data['retention_pay_status']] ?? '';
+       return $status[$data['retention_pay_status']] ?? '';
+
     }
 
 }

+ 12 - 0
app/common/model/master_worker/MasterWorkerAuth.php

@@ -0,0 +1,12 @@
+<?php
+namespace app\common\model\master_worker;
+use app\common\model\BaseModel;
+
+/**
+ * @author 林海涛
+ * @date 2024/7/28 下午7:11
+ */
+class MasterWorkerAuth extends BaseModel
+{
+    protected $name = 'master_worker_auth';
+}

+ 9 - 0
app/workerapi/controller/LoginController.php

@@ -14,6 +14,7 @@
 
 namespace app\workerapi\controller;
 
+use app\common\model\master_worker\MasterWorker;
 use app\workerapi\controller\BaseApiController;
 use app\workerapi\logic\LoginLogic;
 use app\workerapi\validate\LoginAccountValidate;
@@ -65,6 +66,14 @@ class LoginController extends BaseApiController
         if (false === $result) {
             return $this->fail(LoginLogic::getError());
         }
+        if(!empty($params['wx_code']) and $params['terminal']==1){
+            $params['code'] = $params['wx_code'];
+            $params['user_id'] = MasterWorker::where('sn',$result['sn'])->value('id');
+            $wx_result = LoginLogic::mnpAuthLogin($params);
+            if ($wx_result === false) {
+                return $this->fail(LoginLogic::getError());
+            }
+        }
         return $this->data($result);
     }
 

+ 17 - 4
app/workerapi/lists/MasterWorkerRetentionMoneyLogLists.php

@@ -12,19 +12,32 @@ class MasterWorkerRetentionMoneyLogLists extends BaseWorkerDataLists
     public function queryWhere()
     {
         $where = [];
-        $where[] = ['worker_id', '=', $this->userId];
+        if(isset($this->params['formData'])){
+            $queryParams = json_decode($this->params['formData'],true);
+            if(isset($queryParams['worker_id'])){
+                $where[]= ['worker_id','=',$queryParams['worker_id']];
+            }
+        }
+        if(isset($this->params['create_time']) && !empty($this->params['create_time'])){
+            $time = [strtotime($this->params['create_time'][0]), strtotime($this->params['create_time'][1])];
+            $where[] = ['create_time', 'between', $time];
+        }
         return $where;
     }
 
     public function lists(): array
     {
-        return MasterWorkerRetentionMoneyLog::where($this->searchWhere)
+        $lists = MasterWorkerRetentionMoneyLog::where($this->searchWhere)
             ->where($this->queryWhere())
             ->append(['action_text'])
-            ->field(['id', 'action','amount','remark','create_time','update_time'])
-            ->order(['id' => 'dsc'])
+            ->field(['id', 'sn','action','amount','remark','create_time','update_time'])
+            ->order(['id' => 'desc'])
             ->select()
             ->toArray();
+        foreach ($lists as &$item) {
+            $item['amount'] = $item['action_text'] . $item['amount'];
+        }
+        return $lists;
     }
 
     public function count(): int

+ 66 - 1
app/workerapi/logic/LoginLogic.php

@@ -2,12 +2,15 @@
 namespace app\workerapi\logic;
 use app\common\enum\LoginEnum;
 use app\common\enum\notice\NoticeEnum;
+use app\common\enum\user\UserTerminalEnum;
 use app\common\logic\BaseLogic;
 use app\common\model\master_worker\MasterWorker;
+use app\common\model\master_worker\MasterWorkerAuth;
 use app\common\model\master_worker_register\MasterWorkerRegister;
 use app\common\service\FileService;
 use app\common\service\sms\SmsDriver;
- use think\facade\Config;
+use app\common\service\wechat\WeChatMnpService;
+use think\facade\Config;
 use app\workerapi\service\MasterWokerTokenService;
 
 /**
@@ -110,4 +113,66 @@ class LoginLogic extends BaseLogic
         return MasterWokerTokenService::expireToken($userInfo['token']);
     }
 
+    public static function mnpAuthLogin($params)
+    {
+        try {
+            //通过code获取微信openid
+            $response = (new WeChatMnpService())->getMnpResByCode($params['code']);
+            $response['user_id'] = $params['user_id'];
+            $response['terminal'] = UserTerminalEnum::WECHAT_MMP;
+
+            return self::createAuth($response);
+
+        } catch (\Exception  $e) {
+            self::$error = $e->getMessage();
+            return false;
+        }
+    }
+
+    /**
+     * @notes 生成授权记录
+     * @param $response
+     * @return bool
+     * @throws \Exception
+     * @author 段誉
+     * @date 2022/9/16 10:43
+     */
+    public static function createAuth($response)
+    {
+        //先检查openid是否有记录
+        $isAuth = MasterWorkerAuth::where('openid', '=', $response['openid'])->findOrEmpty();
+
+        if (!$isAuth->isEmpty()) {
+            if($isAuth->user_id != $response['user_id']) {
+                throw new \Exception('该微信已被绑定');
+            }
+            if($isAuth->user_id == 0) {
+                //更新操作
+                $isAuth->user_id = $response['user_id'];
+                $isAuth->save();
+                return true;
+            }
+            if($isAuth->user_id == $response['user_id']) {
+                return true;
+            }
+        }
+
+        if (isset($response['unionid']) && !empty($response['unionid'])) {
+            //在用unionid找记录,防止生成两个账号,同个unionid的问题
+            $userAuth = MasterWorkerAuth::where(['unionid' => $response['unionid']])
+                ->findOrEmpty();
+            if (!$userAuth->isEmpty() && $userAuth->user_id != $response['user_id']) {
+                throw new \Exception('该微信已被绑定');
+            }
+        }
+
+        //如果没有授权,直接生成一条微信授权记录
+        MasterWorkerAuth::create([
+            'user_id' => $response['user_id'],
+            'openid' => $response['openid'],
+            'unionid' => $response['unionid'] ?? '',
+            'terminal' => $response['terminal'],
+        ]);
+        return true;
+    }
 }