Browse Source

供应商账号优化

wufeng 2 years ago
parent
commit
b4b2545a14

+ 77 - 88
app/abutment/logic/Account.php

@@ -37,7 +37,9 @@ class Account
 
         //更新token
         $token = Str::random(40, -1);
-        $expire_time = date('Y-m-d H:i:s', time() + mt_rand(3600, 7200));
+
+        $expire_int = mt_rand(3600, 7200);
+        $expire_time = date('Y-m-d H:i:s', time() + $expire_int);
 
         $rs = $db
             ->where($db->getPk(), $res[$db->getPk()])
@@ -63,15 +65,16 @@ class Account
             'supplier_list' => $list,
         ];
 
-        Cache::set(Config::get('redis_key.user_info_token') . $token, json_encode($info), $expire_time);
+        //过期时间指定一个具体的日期的时候,还没到这个日期缓存就过期了,指定一个秒数,可以符合预期,邪门儿
+        Cache::set(Config::get('redis_key.user_info_token') . $token, json_encode($info), $expire_int);
 
         return json_show(0, '登录成功', $info);
 
 
     }
 
-    //获取供应商下普通账号列表
-    public static function geAccounttList(array $param = [])
+    //获取供应商账号列表
+    public static function getAccountList(array $param = [])
     {
 
         $db = new SupplierRelationUserModel();
@@ -85,11 +88,12 @@ class Account
             ]);
 
         if ($param['keyword'] != '') $rs->whereLike('b.nickname|b.mobile', '%' . $param['keyword'] . '%');
+        if ($param['status'] != '') $rs->where('a.status', $param['status']);
 
         $count = $rs->count('a.id');
 
         $list = $rs
-            ->field('a.id,b.uid,b.nickname,b.mobile,b.email,a.status')
+            ->field('a.id,b.uid,b.nickname,b.mobile,b.email,a.status,a.addtime,a.creater')
             ->order('a.addtime', 'desc')
             ->page($param['page'], $param['size'])
             ->select()
@@ -99,7 +103,7 @@ class Account
 
     }
 
-    //修改密码
+    //修改供应商账号密码
     public static function changePassword(array $param = [])
     {
 
@@ -124,14 +128,14 @@ class Account
         $password = get_encryption_password($param['new_password']);
 
         $rs = $db
-            ->where($db->getPk(), $res[$db->getPk()])
+            ->where('uid', $res['uid'])
             ->save(['password' => $password['password'], 'salt' => $password['salt']]);
 
         return $rs ? json_show(0, '修改密码成功') : json_show(1005, '修改密码失败');
 
     }
 
-    //获取账号信息
+    //获取供应商账号账号信息
     public static function readAccount(array $param = [])
     {
         $res = SupplierUser::field('uid,nickname,mobile,email')
@@ -158,9 +162,18 @@ class Account
     }
 
     //添加供应商账号
-    public static function addAccount(array $param = [])
+    public static function addAccount(array $param = [], string $token = '')
     {
 
+        $user = GetUserInfo($token);
+
+        //查找供应商名称
+        $supplierName = Db::name('supplier')
+            ->where(['code' => $param['supplierNo']])
+            ->value('name', '');
+
+        if ($supplierName == '') return json_show(1004, '该供应商名称不存在');
+
         Db::connect('mysql_sys')->startTrans();
 
         try {
@@ -186,6 +199,8 @@ class Account
                     'salt' => $password['salt'],//盐值
                     'status' => $db::$status_normal,
                     'is_del' => $db::$is_del_normal,
+                    'createrid' => $user['data']['user_id'] ?? 0,
+                    'creater' => $user['data']['nickname'] ?? '',
                 ]);
 
                 $res->status = $db::$status_normal;
@@ -200,7 +215,8 @@ class Account
                     ])->findOrEmpty()
                     ->isEmpty();
 
-                if (!$rs) $is_insert = false;//该关联关系已存在,无需新增
+                if ($rs) throw new  Exception('不能重复添加');//该关联关系已存在,无需新增
+                else $is_insert = false;
 
             }
 
@@ -208,9 +224,11 @@ class Account
                 SupplierRelationUserModel::create([
                     'uid' => $res->uid,
                     'supplierNo' => $param['supplierNo'],
-                    'supplierName' => $param['supplierName'],
+                    'supplierName' => $supplierName,
                     'status' => $res->status,
                     'is_del' => $db::$is_del_normal,
+                    'createrid' => $user['data']['user_id'] ?? 0,
+                    'creater' => $user['data']['nickname'] ?? '',
                 ])->save();
             }
 
@@ -227,62 +245,55 @@ class Account
     public static function editAccount(array $param = [])
     {
 
-        Db::connect('mysql_sys')->startTrans();
+        $db = new SupplierUserModel();
 
-        try {
+        $res = $db
+            ->field('uid')
+            ->where(['uid' => $param['uid'], 'is_del' => $db::$is_del_normal])
+            ->findOrEmpty()
+            ->isEmpty();
 
-            $db = new SupplierUserModel();
+        if ($res) return json_show(1004, '该账号不存在');
 
-            $res = $db
-                ->where('is_del', $db::$is_del_normal)
-                ->whereIn('mobile', [$param['mobile'], $param['old_mobile']])
-                ->column('uid,status', 'mobile');
+        $rs = $db
+            ->where('uid', $param['uid'])
+            ->save($param);
 
-            $is_insert = true;
-            if (!isset($res[$param['mobile']])) {
-                //新增账号
-                $password = get_encryption_password(Config::get('app.default_password'));
-                $res[$param['mobile']]['uid'] = $db->insertGetId([
-                    'nickname' => $param['nickname'],//姓名
-                    'mobile' => $param['mobile'],//手机号
-                    'email' => $param['email'],//邮箱
-                    'password' => $password['password'],//密码密文
-                    'salt' => $password['salt'],//盐值
-                    'status' => $db::$status_normal,
-                    'is_del' => $db::$is_del_normal,
-                ]);
+        return $rs ? json_show(0, '修改成功') : json_show(1005, '修改失败');
 
-                $res[$param['mobile']]['status'] = $db::$status_normal;
+    }
 
-            } else {
+    //修改供应商账号状态
+    public static function statusAccount(array $param = [])
+    {
 
-                $rs = SupplierRelationUserModel::field('id')
-                    ->where([
-                        'is_del' => $db::$is_del_normal,
-                        'uid' => $res[$param['mobile']]['uid'],
-                        'supplierNo' => $param['supplierNo'],
-                    ])->findOrEmpty()
-                    ->isEmpty();
+        Db::connect('mysql_sys')->startTrans();
 
-                if (!$rs) $is_insert = false;//该关联关系已存在,无需新增
+        try {
 
-            }
+            $db = new SupplierUserModel();
 
-            if ($is_insert) {
-                SupplierRelationUserModel::create([
-                    'uid' => $res[$param['mobile']]['uid'],
-                    'supplierNo' => $param['supplierNo'],
-                    'supplierName' => $param['supplierName'],
-                    'status' => $res[$param['mobile']]['status'],
+            $res = $db
+                ->field('uid,status')
+                ->where([
+                    'uid' => $param['uid'],
                     'is_del' => $db::$is_del_normal,
-                ])->save();
-            }
-            //把旧的账号的关联关系解除
+                ])->findOrEmpty();
+
+            if ($res->isEmpty()) throw new Exception('该账号不存在');
+            if ($res->status == $param['status']) throw new Exception('不能重复操作');
+
+            $db->where([
+                'uid' => $param['uid'],
+                'is_del' => $db::$is_del_normal,
+            ])->where('status', '<>', $param['status'])
+                ->save(['status' => $param['status']]);
+
             SupplierRelationUserModel::where([
+                'uid' => $param['uid'],
                 'is_del' => $db::$is_del_normal,
-                'uid' => $res[$param['old_mobile']]['uid'],
-                'supplierNo' => $param['supplierNo'],
-            ])->save(['is_del' => $db::$is_del_deleted]);
+            ])->where('status', '<>', $param['status'])
+                ->save(['status' => $param['status']]);
 
             Db::connect('mysql_sys')->commit();
             return json_show(0, '操作成功');
@@ -293,8 +304,8 @@ class Account
 
     }
 
-    //修改供应商账号状态
-    public static function statusAccount(array $param = [])
+    //删除供应商账号
+    public static function deleteAccount(int $uid = 0)
     {
 
         Db::connect('mysql_sys')->startTrans();
@@ -306,48 +317,26 @@ class Account
             $res = $db
                 ->field('uid')
                 ->where([
+                    'uid' => $uid,
                     'is_del' => $db::$is_del_normal,
-                    'mobile' => $param['mobile'],
                 ])->findOrEmpty();
 
-            if (!$res->isEmpty()) {
-
-                $rs = SupplierRelationUserModel::field('id')->where([
-                    'is_del' => $db::$is_del_normal,
-                    'uid' => $res->uid,
-                    'supplierNo' => $param['supplierNo'],
-                ])
-                    ->where('status', '<>', $param['status'])
-                    ->findOrEmpty();
+            if ($res->isEmpty()) throw new Exception('该账号不存在或已删除');
 
-                if ($rs->isEmpty()) throw new Exception('当前供应商账号未与当前供应商绑定或重复操作');
-                else SupplierRelationUserModel::where('id', $rs->id)->save(['status' => $param['status']]);
+            $db->where('uid', $uid)
+                ->where('is_del', $db::$is_del_normal)
+                ->save(['is_del' => $db::$is_del_deleted]);
 
-            } else throw new Exception('当前供应商账号不存在');
+            SupplierRelationUserModel::where('uid', $uid)
+                ->where('is_del', $db::$is_del_normal)
+                ->save(['is_del' => $db::$is_del_deleted]);
 
             Db::connect('mysql_sys')->commit();
-            return json_show(0, '操作成功');
+            return json_show(0, '删除成功');
         } catch (Exception $exception) {
             Db::connect('mysql_sys')->rollback();
-            return json_show(1005, '操作失败,' . $exception->getMessage());
+            return json_show(1005, '删除失败,' . $exception->getMessage());
         }
-
-    }
-
-    //删除供应商账号
-    public static function deleteAccount(array $param = [])
-    {
-
-        $where = [['is_del', '=', SupplierUserModel::$is_del_normal]];
-
-        if (isset($param['supplierNo']) && $param['supplierNo'] != '') $where[] = ['supplierNo', '=', $param['supplierNo']];
-        if (isset($param['id']) && $param['id'] != '') $where[] = ['id', '=', $param['id']];
-
-        $res = SupplierRelationUserModel::where($where)
-            ->save(['is_del' => SupplierUserModel::$is_del_deleted]);
-
-        return $res ? json_show(0, '操作成功') : json_show(1005, '操作失败');
-
     }
 
 }

+ 18 - 20
app/admin/controller/Account.php

@@ -1,35 +1,35 @@
 <?php
 
-
 namespace app\admin\controller;
 
 //采销端管理供应商账号
 use app\abutment\logic\Account as AccountLogic;
-use think\facade\Config;
+use app\abutment\model\SupplierUser;
 use think\facade\Validate;
 
 class Account extends Base
 {
 
-    //获取供应商下普通账号列表
-    public function geAccounttList()
+    //获取供应商账号列表
+    public function getAccountList()
     {
 
-        $param = $this->request->filter('trim')->only(['supplierNo', 'keyword' => '', 'page' => 1, 'size' => 15], 'post');
+        $param = $this->request->filter('trim')->only(['supplierNo', 'keyword' => '', 'status' => '', 'page' => 1, 'size' => 15], 'post');
 
         $val = Validate::rule([
             'supplierNo|供应商编码' => 'require|alphaNum|length:18',
             'keyword|关键字' => 'chsDash|max:100',
+            'status|状态' => 'number|in:' . SupplierUser::$status_disabled . ',' . SupplierUser::$status_normal,
             'page|页码' => 'require|number|gt:0',
             'size|每页数量' => 'require|number|elt:100',
         ]);
 
         if (!$val->check($param)) return json_show(1004, $val->getError());
 
-        return AccountLogic::geAccounttList($param);
+        return AccountLogic::getAccountList($param);
     }
 
-    //修改密码
+    //修改供应商账号密码
     public function changePassword()
     {
         $param = $this->request->filter('trim')->only(['uid', 'old_password', 'new_password', 'confirm_password'], 'post');
@@ -46,7 +46,7 @@ class Account extends Base
         return AccountLogic::changePassword($param);
     }
 
-    //读取账号信息
+    //读取供应商账号账号信息
     public function readAccount()
     {
         $param = $this->request->filter('trim')->only(['uid'], 'post');
@@ -62,19 +62,20 @@ class Account extends Base
     public function addAccount()
     {
 
-        $param = $this->request->filter('trim')->only(['supplierNo', 'supplierName', 'nickname', 'mobile', 'email' => ''], 'post');
+        $param = $this->request->filter('trim')->only(['supplierNo', 'nickname', 'mobile', 'email' => ''], 'post');
 
         $val = Validate::rule([
             'nickname|姓名' => 'require|max:255',
             'mobile|手机号' => 'require|number|length:11|mobile',
             'email|邮箱' => 'email',
             'supplierNo|供应商编码' => 'require|alphaNum|length:18',
-            'supplierName|供应商名称' => 'require|max:255',
         ]);
 
         if (!$val->check($param)) return json_show(1004, $val->getError());
 
-        return AccountLogic::addAccount($param);
+        $token = $this->request->filter('trim')->post('token');
+
+        return AccountLogic::addAccount($param,$token);
 
     }
 
@@ -82,15 +83,13 @@ class Account extends Base
     public function editAccount()
     {
 
-        $param = $this->request->filter('trim')->only(['old_mobile', 'nickname', 'mobile', 'email'=>'','supplierNo','supplierName'], 'post');
+        $param = $this->request->filter('trim')->only(['uid', 'nickname', 'mobile', 'email' => ''], 'post');
 
         $val = Validate::rule([
+            'uid|用户ID' => 'require|number|gt:0',
             'nickname|姓名' => 'require|max:255',
             'mobile|手机号' => 'require|number|length:11|mobile',
             'email|邮箱' => 'email',
-            'old_mobile|原始手机号' => 'require|number|length:11|mobile',
-            'supplierNo|供应商编码' => 'require|alphaNum|length:18',
-            'supplierName|供应商名称' => 'require|max:255',
         ]);
 
         if (!$val->check($param)) return json_show(1004, $val->getError());
@@ -102,11 +101,10 @@ class Account extends Base
     //启/禁用 供应商账号
     public function statusAccount()
     {
-        $param = $this->request->filter('trim')->only(['supplierNo','mobile', 'status'], 'post');
+        $param = $this->request->filter('trim')->only(['uid', 'status'], 'post');
 
         $val = Validate::rule([
-            'supplierNo|供应商编码' => 'require|alphaNum|length:18',
-            'mobile|手机号' => 'require|number|length:11|mobile',
+            'uid|用户ID' => 'require|number|gt:0',
             'status|状态' => 'require|number|in:' . \app\abutment\model\SupplierUser::$status_normal . ',' . \app\abutment\model\SupplierUser::$status_disabled,
         ]);
 
@@ -119,9 +117,9 @@ class Account extends Base
     //删除供应商账号
     public function deleteAccount()
     {
-        $id = $this->request->filter('trim')->post('id/d', 0);
+        $uid = $this->request->filter('trim')->post('uid/d', 0);
 
-        return AccountLogic::deleteAccount(['id' => $id]);
+        return AccountLogic::deleteAccount($uid);
 
     }
 

+ 1 - 46
app/admin/controller/Suppler.php

@@ -2,8 +2,6 @@
 
 namespace app\admin\controller;
 
-use app\abutment\logic\Account;
-use app\abutment\model\SupplierUser;
 use app\admin\common\Ocr;
 use app\admin\model\ChangeLog;
 use think\App;
@@ -211,17 +209,6 @@ class Suppler extends Base
                     return error_show(1002, "添加失败");
                 }
 
-                //维护联系人账号
-                $res = Account::addAccount([
-                    'mobile' => $mobile,
-                    'nickname' => $contactor,
-                    'email' => $email,
-                    'supplierNo' => $tr,
-                    'supplierName' => $name,
-                ]);
-
-                if ($res->getData()['code'] != 0) throw new \Exception('添加联系人账号关联关系失败');
-
                 Db::commit();
                 return app_show(0, "添加成功", ["id" => $join]);
             } else {
@@ -499,20 +486,6 @@ class Suppler extends Base
                     return error_show(1002, "更新失败");
                 }
 
-                //维护联系人账号
-                if ($item['mobile'] != $mobile) {
-                    $res = Account::editAccount([
-                        'old_mobile' => $item['mobile'],
-                        'mobile' => $mobile,
-                        'nickname' => $contactor,
-                        'email' => $email,
-                        'supplierNo' => $info['code'],
-                        'supplierName' => $info['name'],
-                    ]);
-
-                    if ($res->getData()['code']!=0) throw new \Exception('修改联系人的账号失败');
-                }
-
                 Db::commit();
                 return app_show(0, "编辑成功");
             } else {
@@ -567,16 +540,6 @@ class Suppler extends Base
 
             ChangeLog::logAdd("1", $sup['code'], json_encode($sup, JSON_UNESCAPED_UNICODE), json_encode($vam, JSON_UNESCAPED_UNICODE), $this->post['token'], $this->post);
 
-            //维护联系人账号
-//            $res = SupplierUser::where('is_del', SupplierUser::$is_del_normal)
-//                ->where('type', SupplierUser::$type_default)
-//                ->whereFindInSet('supplierNos', $sup['code'])->save([
-//                    'is_del' => SupplierUser::$is_del_deleted,
-//                    'updatetime' => date('Y-m-d H:i:s')
-//                ]);
-            $res = Account::deleteAccount(['supplierNo' => $sup['code']]);
-            if ($res->getData()['code'] != 0) throw new \Exception('删除联系人账号失败');
-
             Db::commit();
             return app_show(0, '删除成功');
         } catch (\Exception $exception) {
@@ -627,7 +590,7 @@ class Suppler extends Base
         $info = Db::name("supplier")
             ->alias('a')
             ->field('a.id,a.code,a.status,b.mobile')
-            ->leftJoin('supplier_contact b','b.code=a.code')
+            ->leftJoin('supplier_contact b', 'b.code=a.code')
             ->where(['a.id' => $param['id'], 'a.is_del' => 0])
             ->find();
         if (empty($info)) return error_show(1005, '未找到对应数据');
@@ -644,14 +607,6 @@ class Suppler extends Base
                     'updatetime' => date("Y-m-d H:i:s"),
                 ]);
 
-            //维护联系人账号
-            $res = Account::statusAccount([
-                'mobile' => $info['mobile'],
-                'status' => $param['status'],
-                'supplierNo' => $info['code'],
-            ]);
-            if ($res->getData()['code'] != 0) throw new \Exception($msg . '联系人账号失败');
-
             Db::commit();
             return app_show(0, $msg . '成功');
         } catch (\Exception $exception) {

+ 3 - 3
app/admin/route/app.php

@@ -607,9 +607,9 @@ Route::rule('bkreport','admin/Stat/bkReport');//
 Route::rule('standbooklist','admin/StandingBook/getList');//台账列表
 Route::rule('standbookdetail','admin/StandingBook/getDetail');//台账详情
 
-route::rule('geAccounttList', 'admin/Account/geAccounttList');//获取供应商下普通账号列表
-route::rule('changePassword', 'admin/Account/changePassword');//修改密码
-route::rule('readAccount', 'admin/Account/readAccount');//获取账号信息
+route::rule('getAccountList', 'admin/Account/getAccountList');//获取供应商账号列表
+route::rule('changePassword', 'admin/Account/changePassword');//修改供应商账号密码
+route::rule('readAccount', 'admin/Account/readAccount');//获取供应商账号账号信息
 route::rule('addAccount', 'admin/Account/addAccount');//添加供应商账号
 route::rule('editAccount', 'admin/Account/editAccount');//修改供应商账号
 route::rule('statusAccount', 'admin/Account/statusAccount');//修改供应商账号状态