Ver Fonte

完善功能

gorden há 10 meses atrás
pai
commit
47f2b922b3

+ 113 - 0
app/admin/controller/customer/IndexController.php

@@ -0,0 +1,113 @@
+<?php
+
+namespace app\admin\controller\customer;
+
+use app\controller\Curd;
+use app\model\Customer;
+use app\model\Member;
+use app\model\MemberCert;
+use app\model\MemberInfo;
+use app\model\SysSerial;
+use support\Db;
+use support\exception\BusinessException;
+use support\Request;
+use Tinywan\Jwt\JwtToken;
+
+class IndexController extends Curd
+{
+    public function __construct()
+    {
+        $this->model = new Customer();
+    }
+
+    protected function afterQuery($items)
+    {
+        foreach ($items as &$item) {
+            $item->city = explode(',', $item->city);
+        }
+
+        return $items;
+    }
+
+    protected function insertInput(Request $request): array
+    {
+        $data = $this->inputFilter($request->post());
+        $data['creator'] = JwtToken::getCurrentId();
+        if (!empty($data['birth'])) {
+            $data['birth'] = date('Y-m-d', strtotime($data['birth']));
+        }
+
+        return $data;
+    }
+
+    protected function updateInput(Request $request): array
+    {
+        $primary_key = $this->model->getKeyName();
+        $id = $request->post($primary_key);
+        $data = $this->inputFilter($request->post());
+        if (!empty($data['birth'])) {
+            $data['birth'] = date('Y-m-d', strtotime($data['birth']));
+        }
+        $model = $this->model->find($id);
+        if (!$model) {
+            throw new BusinessException('记录不存在', 2);
+        }
+        unset($data[$primary_key]);
+        return [$id, $data];
+    }
+
+    public function conversion(Request $request)
+    {
+        $id = $request->post('id');
+        $customer = Customer::where('id', $id)->first();
+        if (!$customer) {
+            return json_fail('客户不存在');
+        }
+        Db::beginTransaction();
+
+        try {
+            $memberId = "ME" . str_pad(SysSerial::getSerial(), 16, "0", STR_PAD_LEFT) . random_string(6, 'up');
+            $member = [
+                'member_id' => $memberId,
+                'member_is_owner' => 'N',
+                'member_classify' => 'MEMBER',
+                'member_status' => 'ACTIVED',
+                'member_mobile' => $customer->mobile ?? '',
+                'member_from' => 'CUSTOMER',
+                'member_addtimes'=>time()
+            ];
+            Member::insert($member);
+
+            // cert
+            $cert = [
+                'join_cert_member_id' => $memberId,
+                'member_cert_name' => $customer->name,
+                'member_cert_nbr' => $customer->card_id ?? '',
+                'member_cert_birth' => $customer->birth ?? '',
+                'member_cert_gender' => $customer->gender ?? '',
+                'member_cert_province' => $customer->city ?? '',
+                'member_cert_addr' => $customer->address ?? ''
+            ];
+
+            MemberCert::insert($cert);
+
+            // info
+            $info = [
+                'join_info_member_id' => $memberId,
+                'member_info_nickname' => $customer->name
+            ];
+            MemberInfo::insert($info);
+
+            $customer->status = '正式用户';
+            $customer->save();
+
+            Db::commit();
+
+            return json_success("转正式用户成功");
+        } catch (\Exception $e) {
+            dump($e->getMessage());
+            Db::rollBack();
+            return json_fail('转正式用户失败');
+        }
+    }
+}

+ 6 - 4
app/admin/controller/sys_manage/MenuController.php

@@ -260,11 +260,13 @@ class MenuController extends Curd
             throw new BusinessException("请先登录");
         }
         $user = SysUser::where('user_id', $adminId)->first();
-        $permission = [];
-        if (!empty($user->join_user_role_id)) {
-            $role = SysRole::where('role_id', $user->join_user_role_id)->first();
-            $permission = json_decode($role->role_permission,true);
+        if (empty($user->join_user_role_id)) {
+            return json_fail('权限不足');
         }
+        $permission = [];
+
+        $role = SysRole::where('role_id', $user->join_user_role_id)->first();
+        $permission = json_decode($role->role_permission,true);
         if (!empty($permission)){
             $where['menu_name'] = ['in', implode(',', $permission)];
         }

+ 9 - 0
app/admin/service/auth/AuthService.php

@@ -2,6 +2,7 @@
 
 namespace app\admin\service\auth;
 
+use app\model\SysRole;
 use app\model\SysUser;
 use support\Db;
 use support\Request;
@@ -75,6 +76,14 @@ class AuthService
             ->first()
             ->toArray();
 
+        $user['roleName'] = '';
+        if (!empty($user['join_user_role_id'])) {
+            $role = SysRole::where('role_id', $user['join_user_role_id'])->first();
+            if (!empty($role->role_name)) {
+                $user['roleName'] = $role->role_name;
+            }
+        }
+
         return json_success('', $user);
     }
 }

+ 21 - 0
app/admin/validate/customer/IndexValidate.php

@@ -0,0 +1,21 @@
+<?php
+
+namespace app\admin\validate\customer;
+
+use support\Validate;
+
+class IndexValidate extends Validate
+{
+    protected $rule = [
+        'id'=>'require|integer',
+        'mobile'=>'mobile',
+        'card_id'=>'idCard'
+    ];
+
+    protected $message = [];
+
+    protected $scene = [
+        'add'=>['mobile','card_id'],
+        'update'=>[]
+    ];
+}

+ 18 - 0
app/model/Customer.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace app\model;
+
+use DateTimeInterface;
+use support\Model;
+
+class Customer extends Model
+{
+    protected $table = 'customer';
+
+    protected $dateFormat = 'U';
+
+    public function serializeDate(DateTimeInterface $date)
+    {
+        return $date->format('Y-m-d H:i:s');
+    }
+}

+ 7 - 0
route/admin.php

@@ -469,6 +469,13 @@ Route::group('/admin', function () {
             \app\middleware\AdminAuthCheck::class
         ]);
     });
+    Route::group('/customer', function () {
+        Route::get('/list', [\app\admin\controller\customer\IndexController::class, 'select']);
+        Route::post('/add', [\app\admin\controller\customer\IndexController::class, 'insert']);
+        Route::post('/update', [\app\admin\controller\customer\IndexController::class, 'update']);
+        Route::delete('/delete', [\app\admin\controller\customer\IndexController::class, 'delete']);
+        Route::post('/conversion',[\app\admin\controller\customer\IndexController::class,'conversion']);
+    });
     /* 用户管理 */
     Route::group('/member', function () {
         /* 家庭管理 */