Bladeren bron

完善功能

gorden 11 maanden geleden
bovenliggende
commit
533f952e50

+ 1 - 0
app/admin/controller/member/OwnerController.php

@@ -23,6 +23,7 @@ class OwnerController
             ->where('member.member_is_owner','Y')
             ->where(function ($query) use ($keywords) {
                 $query->where('member.member_mobile', 'like', '%' . $keywords . '%')
+                    ->orWhere("member.member_id", 'like', '%' . $keywords . '%')
                     ->orWhere("member_cert.member_cert_name", 'like', '%' . $keywords . '%');
             })->get();
         $data = [];

+ 7 - 5
app/admin/controller/sys_manage/ArticleController.php

@@ -4,9 +4,11 @@ namespace app\admin\controller\sys_manage;
 
 use app\admin\validate\sys_manage\AdvValidate;
 use app\admin\validate\sys_manage\ArticleValidate;
+use app\admin\validate\sys_manage\ContentValidate;
 use app\controller\Curd;
 use app\model\Adv;
 use app\model\Article;
+use app\model\Content;
 use support\Request;
 use support\Response;
 
@@ -14,9 +16,9 @@ class ArticleController extends Curd
 {
     public function __construct()
     {
-        $this->model = new Article();
+        $this->model = new Content();
         $this->validate = true;
-        $this->validateClass = new ArticleValidate();
+        $this->validateClass = new ContentValidate();
     }
 
     /** 列表
@@ -31,9 +33,9 @@ class ArticleController extends Curd
     public function select(Request $request): Response
     {
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
-        $where['type'] = 'article';
+        $where['content_category'] = 'ARTICLE';
         $order = $request->get('order', 'desc');
-        $field = $field ?? 'sort';
+        $field = $field ?? 'content_sort';
         $query = $this->doSelect($where, $field, $order);
         return $this->doFormat($query, $format, $limit);
     }
@@ -50,7 +52,7 @@ class ArticleController extends Curd
     protected function insertInput(Request $request): array
     {
         $data = $this->inputFilter($request->post());
-        $data['type'] = 'article';
+        $data['content_category'] = 'ARTICLE';
 
         return $data;
     }

+ 3 - 3
app/admin/controller/sys_manage/CategoryController.php

@@ -32,7 +32,7 @@ class CategoryController extends Curd
         $order = $request->get('order', 'desc');
         $field = $field ?? 'category_sort';
         $query = $this->doSelect($where, $field, $order);
-        return $this->doFormat($query, $format, $limit);
+        return $this->doFormat($query, $format, 1000);
     }
 
     protected function formatTree($items): Response
@@ -40,8 +40,8 @@ class CategoryController extends Curd
         $format_items = [];
         foreach ($items as $item) {
             $format_items[] = [
-                'name' => $item->title ?? $item->name ?? $item->id ?? $item->category_name,
-                'value' => (string)$item->id ?? (string)$item->category_id,
+                'name' => $item->category_name,
+                'value' => (string)$item->category_id,
                 'id' => $item->id ?? $item->category_id,
                 'pid' => $item->pid ?? $item->category_super_id,
                 'category_id' => $item->category_id,

+ 7 - 5
app/admin/controller/sys_manage/NewsController.php

@@ -4,9 +4,11 @@ namespace app\admin\controller\sys_manage;
 
 use app\admin\validate\sys_manage\AdvValidate;
 use app\admin\validate\sys_manage\ArticleValidate;
+use app\admin\validate\sys_manage\ContentValidate;
 use app\controller\Curd;
 use app\model\Adv;
 use app\model\Article;
+use app\model\Content;
 use support\Request;
 use support\Response;
 
@@ -14,9 +16,9 @@ class NewsController extends Curd
 {
     public function __construct()
     {
-        $this->model = new Article();
+        $this->model = new Content();
         $this->validate = true;
-        $this->validateClass = new ArticleValidate();
+        $this->validateClass = new ContentValidate();
     }
 
     /** 列表
@@ -31,9 +33,9 @@ class NewsController extends Curd
     public function select(Request $request): Response
     {
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
-        $where['type'] = 'news';
+        $where['content_category'] = 'NEWS';
         $order = $request->get('order', 'desc');
-        $field = $field ?? 'sort';
+        $field = $field ?? 'content_sort';
         $query = $this->doSelect($where, $field, $order);
         return $this->doFormat($query, $format, $limit);
     }
@@ -50,7 +52,7 @@ class NewsController extends Curd
     protected function insertInput(Request $request): array
     {
         $data = $this->inputFilter($request->post());
-        $data['type'] = 'news';
+        $data['content_category'] = 'NEWS';
 
         return $data;
     }

+ 35 - 17
app/admin/service/member/MemberService.php

@@ -30,15 +30,25 @@ class MemberService
         $rows = $rows->with([
             'info' => function ($query) {
                 $query->select('join_info_member_id', 'member_info_nickname', 'member_info_headimg');
+            },
+            'cert' => function ($query) {
+                $query->select('join_cert_member_id', 'member_cert_birth', 'member_cert_gender', 'member_cert_name', 'member_cert_nbr',
+                    'member_cert_province', 'member_cert_city', 'member_cert_addr', 'member_cert_face', 'member_cert_photo');
             }
-        ])->select('member_id', 'member_is_owner', 'member_classify', 'member_status', 'member_mobile', 'member_from')
+        ])->select('member_id', 'member_is_owner', 'member_classify', 'member_status', 'member_mobile', 'member_from', 'member_addtimes')
             ->orderBy('member_addtimes', 'DESC')
             ->forPage($page, $pageSize)
             ->get()
             ->toArray();
 
         foreach ($rows as &$row) {
-            $row['info']['member_info_headimg'] = getenv('STORAGE_DOMAIN') . $row['info']['member_info_headimg'];
+            if (!empty($row['info']['member_info_headimg'])) {
+                $row['info']['member_info_headimg'] = getenv('STORAGE_DOMAIN') . $row['info']['member_info_headimg'];
+            }
+            if (!empty($row['cert']['member_cert_face'])) {
+                $row['cert']['member_cert_face'] = getenv('STORAGE_DOMAIN') . $row['cert']['member_cert_face'];
+                $row['cert']['member_cert_photo'] = getenv('STORAGE_DOMAIN') . $row['cert']['member_cert_photo'];
+            }
         }
 
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));
@@ -71,11 +81,14 @@ class MemberService
             // member cert
             $certData = [
                 'join_cert_member_id' => $memberId,
-                'member_cert_name' => $params['cert_name'],
-                'member_cert_nbr' => $params['cert_nbr'],
-                'member_cert_birth' => $params['birth'],
-                'member_cert_gender' => $params['gender'],
-                'member_cert_addr' => $params['addr'],
+                'member_cert_nation' => $params['member_cert_nation'] ?? '',
+                'member_cert_name' => $params['cert_name'] ?? '',
+                'member_cert_nbr' => $params['cert_nbr'] ?? '',
+                'member_cert_birth' => $params['birth'] ?? '',
+                'member_cert_gender' => $params['gender'] ?? '',
+                'member_cert_province' => $params['province'] ?? '',
+                'member_cert_city' => $params['city'] ?? '',
+                'member_cert_addr' => $params['addr'] ?? '',
                 'member_cert_face' => str_replace(getenv('STORAGE_DOMAIN'), '', $params['member_cert_face']),
                 'member_cert_photo' => str_replace(getenv('STORAGE_DOMAIN'), '', $params['member_cert_photo']),
             ];
@@ -109,7 +122,9 @@ class MemberService
     public static function deviceList($id)
     {
         $rows = MemberDevice::leftJoin('device', 'device.device_id', '=', 'member_device.join_member_device_id')
-            ->where('member_device.join_device_member_id', $id)
+            ->leftJoin('member', 'member.member_id', '=', 'member_device.join_device_member_id')
+            ->select('device.device_category', 'device.device_name', 'device.device_type', 'member.member_mobile', 'member_device.*')
+            ->where('member_device.join_device_master_member_id', $id)
             ->get()
             ->toArray();
 
@@ -129,35 +144,38 @@ class MemberService
         $params = $request->post();
         try {
             $data = [
-                'join_device_member_id' =>$params['join_device_member_id'],
+                'join_device_member_id' => $params['join_device_member_id'] ?? '',
+                'join_device_master_member_id' => $params['join_device_master_member_id'],
                 'join_member_device_id' => $params['join_member_device_id'],
                 'member_device_status' => $params['member_device_status'],
-                'member_device_key' => $params['member_device_key'],
+                'member_device_key' => $params['member_device_key'] ?? '',
                 'member_device_config_json' => !empty($params['member_device_config_json']) ? $params['member_device_config_json'] : null,
-                'member_device_remark'=>$params['member_device_remark'] ?? null,
-                'member_device_addtimes'=>time(),
+                'member_device_remark' => $params['member_device_remark'] ?? null,
+                'member_device_addtimes' => time(),
             ];
 
             MemberDevice::insert($data);
-        }catch (\Exception $e){
+        } catch (\Exception $e) {
             dump($e->getMessage());
             return json_fail('绑定失败');
         }
 
         return json_success('绑定成功');
     }
+
     public static function updateDevice(Request $request)
     {
         $params = $request->post();
         try {
             $data = [
                 'member_device_status' => $params['member_device_status'],
+                'join_device_member_id' => $params['join_device_member_id'],
                 'member_device_config_json' => !empty($params['member_device_config_json']) ? $params['member_device_config_json'] : null,
-                'member_device_remark'=>$params['member_device_remark'] ?? null,
+                'member_device_remark' => $params['member_device_remark'] ?? null,
             ];
 
-            MemberDevice::where('member_device_id',$request->post('member_device_id'))->update($data);
-        }catch (\Exception $e){
+            MemberDevice::where('member_device_id', $request->post('member_device_id'))->update($data);
+        } catch (\Exception $e) {
             dump($e->getMessage());
             return json_fail('绑定失败');
         }
@@ -169,6 +187,6 @@ class MemberService
     {
         $id = SysSerial::getSerial();
 
-        return "ME" . str_pad($id, 16, "0", STR_PAD_LEFT) . random_string(8);
+        return "ME" . str_pad($id, 16, "0", STR_PAD_LEFT) . random_string(6, 'up');
     }
 }

+ 21 - 8
app/admin/service/member/OwnerService.php

@@ -28,15 +28,25 @@ class OwnerService
         $rows = $rows->with([
             'info' => function ($query) {
                 $query->select('join_info_member_id', 'member_info_nickname', 'member_info_headimg');
+            },
+            'cert' => function ($query) {
+                $query->select('join_cert_member_id', 'member_cert_birth', 'member_cert_gender', 'member_cert_name', 'member_cert_nbr',
+                    'member_cert_province', 'member_cert_city', 'member_cert_addr', 'member_cert_face', 'member_cert_photo');
             }
-        ])->select('member_id', 'member_is_owner', 'member_classify', 'member_status', 'member_mobile', 'member_from')
+        ])->select('member_id', 'member_is_owner', 'member_classify', 'member_status', 'member_mobile', 'member_from', 'member_addtimes')
             ->orderBy('member_addtimes', 'DESC')
             ->forPage($page, $pageSize)
             ->get()
             ->toArray();
 
-        foreach ($rows as &$row){
-            $row['info']['member_info_headimg'] = getenv('STORAGE_DOMAIN').$row['info']['member_info_headimg'];
+        foreach ($rows as &$row) {
+            if (!empty($row['info']['member_info_headimg'])) {
+                $row['info']['member_info_headimg'] = getenv('STORAGE_DOMAIN') . $row['info']['member_info_headimg'];
+            }
+            if (!empty($row['cert']['member_cert_face'])) {
+                $row['cert']['member_cert_face'] = getenv('STORAGE_DOMAIN') . $row['cert']['member_cert_face'];
+                $row['cert']['member_cert_photo'] = getenv('STORAGE_DOMAIN') . $row['cert']['member_cert_photo'];
+            }
         }
 
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));
@@ -69,11 +79,14 @@ class OwnerService
             // member cert
             $certData = [
                 'join_cert_member_id' => $memberId,
-                'member_cert_name' => $params['cert_name'],
-                'member_cert_nbr' => $params['cert_nbr'],
-                'member_cert_birth' => $params['birth'],
-                'member_cert_gender' => $params['gender'],
-                'member_cert_addr' => $params['addr'],
+                'member_cert_nation' => $params['member_cert_nation'] ?? '',
+                'member_cert_name' => $params['cert_name'] ?? '',
+                'member_cert_nbr' => $params['cert_nbr'] ?? '',
+                'member_cert_birth' => $params['birth'] ?? '',
+                'member_cert_gender' => $params['gender'] ?? '',
+                'member_cert_province' => $params['province'] ?? '',
+                'member_cert_city' => $params['city'] ?? '',
+                'member_cert_addr' => $params['addr'] ?? '',
                 'member_cert_face' => str_replace(getenv('STORAGE_DOMAIN'), '', $params['member_cert_face']),
                 'member_cert_photo' => str_replace(getenv('STORAGE_DOMAIN'), '', $params['member_cert_photo']),
             ];

+ 17 - 13
app/admin/service/order/AppointmentService.php

@@ -12,29 +12,33 @@ class AppointmentService
     {
         $page = $request->get('page');
         $pageSize = $request->get('pageSize');
-        $id = $request->get('id','');
-        $mobile = $request->get('mobile','');
+        $id = $request->get('id', '');
+        $mobile = $request->get('mobile', '');
 
 
         $rows = Db::table('appointment')
-            ->leftJoin('member','member.member_id','=','appointment.join_appointment_member_id')
-            ->leftJoin('goods','goods.goods_id','=','appointment.join_appointment_goods_id')
-            ->leftJoin('order','order.order_id','=','appointment.join_appointment_order_id')
-            ->leftJoin('member_benefit','member_benefit.member_benefit_id','=','appointment.join_appointment_member_benefit_id')
-            ->when($id != '', function ($query) use ($id){
-                $query->where('appointment.appointment_id','like','%'.$id.'%');
-            })->when($mobile != '', function ($query) use ($mobile){
-                $query->where('member.member_mobile','like','%'.$mobile.'%');
+            ->leftJoin('member', 'member.member_id', '=', 'appointment.join_appointment_member_id')
+            ->leftJoin('goods', 'goods.goods_id', '=', 'appointment.join_appointment_goods_id')
+            ->leftJoin('order', 'order.order_id', '=', 'appointment.join_appointment_order_id')
+            ->leftJoin('goods_sku', 'goods_sku.goods_sku_id', '=', 'appointment.join_appointment_goods_sku_id')
+            ->when($id != '', function ($query) use ($id) {
+                $query->where('appointment.appointment_id', 'like', '%' . $id . '%');
+            })->when($mobile != '', function ($query) use ($mobile) {
+                $query->where('member.member_mobile', 'like', '%' . $mobile . '%');
             });
 
         $total = $rows->count('member.member_id');
-        $rows = $rows->select('member.member_mobile','appointment.*','goods.*','order.*','member_benefit.*')
-            ->orderBy('appointment.appointment_addtimes','desc')
-            ->forPage($page,$pageSize)
+        $rows = $rows->select('member.member_mobile', 'appointment.*', 'goods.goods_name', 'goods.goods_cover',
+            'order.order_name', 'goods_sku.goods_sku_specs_json', 'order.order_amount_total', 'order.order_amount_pay',
+            'order.order_category', 'order.order_status_system', 'order.order_status_payment', 'order.order_status_storage',
+            'order.order_addtimes')
+            ->orderBy('appointment.appointment_addtimes', 'desc')
+            ->forPage($page, $pageSize)
             ->get();
 
         foreach ($rows as &$row) {
             $row->goods_cover = getenv('STORAGE_DOMAIN') . $row->goods_cover;
+            $row->goods_sku_specs_json = !empty($row->goods_sku_specs_json) ? json_decode($row->goods_sku_specs_json, true) : [];
         }
 
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));

+ 12 - 12
app/admin/service/sys_manage/CategoryService.php

@@ -85,13 +85,17 @@ class CategoryService
             if (!$categoryId) {
                 throw new \Exception('添加分类失败');
             }
-            // 回填path
-            $categoryPath = self::getCategoryPath($params['category_super_id']) . $categoryId . '/';
-            SysCategory::where('category_id', $categoryId)->update(['category_super_path' => $categoryPath]);
+            // 不是顶级分类,有path
+            if ($params['category_super_id'] != 0) {
+                // 回填path
+                $categoryPath = self::getCategoryPath($params['category_super_id']);
+                SysCategory::where('category_id', $categoryId)->update(['category_super_path' => $categoryPath . '#' . $categoryId . '#']);
+            }
             // 提交事务
             DB::commit();
         } catch (\Exception $e) {
             DB::rollBack();
+            dump($e->getMessage());
             return json_fail('添加分类失败');
         }
 
@@ -128,9 +132,9 @@ class CategoryService
                 'category_extend_json' => !empty($params['category_extend_json']) ? $params['category_extend_json'] : '{}',
                 'category_addtimes' => time()
             ];
-            if ($category->category_super_id != $params['category_super_id']) {
+            if ($category->category_super_id != $params['category_super_id'] && $params['category_super_id'] != 0) {
                 $data['category_super_id'] = $params['category_super_id'];
-                $data['category_super_path'] = self::getCategoryPath($params['category_super_id']) . $id . '/';
+                $data['category_super_path'] = self::getCategoryPath($params['category_super_id']) . '#' . $id . '#';
             }
             if (!SysCategory::where('category_id', $id)->update($data)) {
                 throw new \Exception('分类修改失败');
@@ -199,15 +203,11 @@ class CategoryService
      */
     public static function getCategoryPath($categoryId)
     {
-        if ($categoryId == 0) {
-            return '/0/';
-        }
-
-        $path = SysCategory::where('category_id', $categoryId)->value('category_super_path');
-        if (!$path) {
+        $category = SysCategory::where('category_id', $categoryId)->first();
+        if (!$category) {
             throw new \Exception('分类不存在');
         }
 
-        return $path;
+        return $category->category_super_path;
     }
 }

+ 2 - 2
app/admin/validate/member/MemberValidate.php

@@ -27,9 +27,9 @@ class MemberValidate extends Validate
     protected $message = [];
 
     protected $scene = [
-        'add' => ['account_name', 'avatar', 'source', 'is_owner', 'classify', 'birth', 'gender', 'status', 'mobile', 'addr', 'cert_name',
+        'add' => ['avatar', 'source', 'is_owner', 'classify', 'birth', 'gender', 'status', 'mobile', 'addr', 'cert_name',
             'cert_nbr', 'member_cert_face', 'member_cert_photo'],
-        'update' => ['id', 'account_name', 'avatar', 'source', 'is_owner', 'classify', 'birth', 'gender', 'status', 'mobile', 'addr', 'cert_name',
+        'update' => ['id', 'avatar', 'source', 'is_owner', 'classify', 'birth', 'gender', 'status', 'mobile', 'addr', 'cert_name',
             'cert_nbr', 'member_cert_face', 'member_cert_photo']
     ];
 }

+ 18 - 0
app/admin/validate/sys_manage/ContentValidate.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace app\admin\validate\sys_manage;
+
+use think\Validate;
+
+class ContentValidate extends Validate
+{
+    protected $rule = [
+        'content_id' => 'require|integer',
+        'content_title' => 'require',
+    ];
+
+    protected $scene = [
+        'add' => ['content_title'],
+        'update' => ['content_id', 'content_title']
+    ];
+}

+ 24 - 0
app/model/Content.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace app\model;
+
+use DateTimeInterface;
+use support\Model;
+
+class Content extends Model
+{
+    protected $table = 'content';
+
+    protected $primaryKey = 'content_id';
+
+    protected $dateFormat = 'U';
+
+    const CREATED_AT = 'content_addtimes';
+
+    const UPDATED_AT = null;
+
+    protected function serializeDate(DateTimeInterface $date)
+    {
+        return $date->format('Y-m-d H:i:s');
+    }
+}

+ 6 - 0
app/model/Member.php

@@ -2,6 +2,7 @@
 
 namespace app\model;
 
+use DateTimeInterface;
 use support\Model;
 
 class Member extends Model
@@ -18,6 +19,11 @@ class Member extends Model
 
     const UPDATED_AT = null;
 
+    public function serializeDate(DateTimeInterface $date)
+    {
+        return $date->format('Y-m-d H:i:s');
+    }
+
     /**
      * @Desc 关联member cert
      * @Author Gorden