Browse Source

等级设置

gorden 9 months ago
parent
commit
dcafa2ef8e

+ 62 - 0
app/admin/controller/member/RoleController.php

@@ -5,6 +5,9 @@ namespace app\admin\controller\member;
 use app\admin\validate\member\RoleValidate;
 use app\controller\Curd;
 use app\model\MemberRole;
+use app\model\SysSerial;
+use support\Request;
+use support\Response;
 
 class RoleController extends Curd
 {
@@ -14,4 +17,63 @@ class RoleController extends Curd
         $this->validate = true;
         $this->validateClass = new RoleValidate();
     }
+
+    public function select(Request $request): Response
+    {
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $order = $request->get('order', 'desc');
+        $field = $field ?? 'member_role_addtimes';
+        $query = $this->doSelect($where, $field, $order);
+        return $this->doFormat($query, $format, $limit);
+    }
+
+    protected function doSelect(array $where, string $field = null, string $order = 'desc')
+    {
+        $model = $this->model->with([
+            'category',
+            'rulePricing'
+        ]);
+        foreach ($where as $column => $value) {
+            if (is_array($value)) {
+                if ($value[0] === 'like' || $value[0] === 'not like') {
+                    $model = $model->where($column, $value[0], "%$value[1]%");
+                } elseif (in_array($value[0], ['>', '=', '<', '<>'])) {
+                    $model = $model->where($column, $value[0], $value[1]);
+                } elseif ($value[0] == 'in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereIn($column, $valArr);
+                } elseif ($value[0] == 'not in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereNotIn($column, $valArr);
+                } elseif ($value[0] == 'null') {
+                    $model = $model->whereNull($column);
+                } elseif ($value[0] == 'not null') {
+                    $model = $model->whereNotNull($column);
+                } elseif ($value[0] !== '' || $value[1] !== '') {
+                    $model = $model->whereBetween($column, $value);
+                }
+            } else {
+                $model = $model->where($column, $value);
+            }
+        }
+        if ($field) {
+            $model = $model->orderBy($field, $order);
+        }
+        return $model;
+    }
+
+    protected function insertInput(Request $request): array
+    {
+        $data = $this->inputFilter($request->post());
+        $data['member_role_id'] = "MR" . str_pad(SysSerial::getSerial(), 16, '0', STR_PAD_LEFT) . random_string(6, 'up');
+
+        return $data;
+    }
+
 }

+ 15 - 4
app/admin/controller/member/RulePricingController.php

@@ -28,11 +28,21 @@ class RulePricingController extends Curd
         return $this->doFormat($query, $format, $limit);
     }
 
+    public function selectList(Request $request)
+    {
+        $data = $this->model->where('rule_pricing_status', 'ACTIVED')
+            ->select('rule_pricing_id', 'rule_pricing_name')
+            ->get()
+            ->toArray();
+
+        return json_success('', $data);
+    }
+
     protected function afterQuery($items)
     {
         foreach ($items as &$item) {
-            if (!empty($item->rule_pricing_goods_json)){
-                $goodsJson = json_decode($item->rule_pricing_goods_json,true);
+            if (!empty($item->rule_pricing_goods_json)) {
+                $goodsJson = json_decode($item->rule_pricing_goods_json, true);
                 $item->rule_pricing_goods_json = $goodsJson;
             }
         }
@@ -46,11 +56,12 @@ class RulePricingController extends Curd
         $data['rule_pricing_id'] = "RP" . str_pad(SysSerial::getSerial(), 16, '0', STR_PAD_LEFT) . random_string(6, 'up');
         if (!empty($data['rule_pricing_goods_json'])) {
             $data['rule_pricing_goods_json'] = json_encode(explode(',', $data['rule_pricing_goods_json']));
-        }else{
+        } else {
             $data['rule_pricing_goods_json'] = '[]';
         }
         return $data;
     }
+
     protected function updateInput(Request $request): array
     {
         $primary_key = $this->model->getKeyName();
@@ -58,7 +69,7 @@ class RulePricingController extends Curd
         $data = $this->inputFilter($request->post());
         if (!empty($data['rule_pricing_goods_json'])) {
             $data['rule_pricing_goods_json'] = json_encode(explode(',', $data['rule_pricing_goods_json']));
-        }else{
+        } else {
             $data['rule_pricing_goods_json'] = '[]';
         }
         $model = $this->model->find($id);

+ 7 - 5
app/admin/validate/member/RoleValidate.php

@@ -7,22 +7,24 @@ use support\Validate;
 class RoleValidate extends Validate
 {
     protected $rule = [
-        'member_role_id|ID' => 'require|integer',
+        'member_role_id|ID' => 'require|alphaDash',
         'join_member_role_category_id|系统分类' => 'integer',
-        'join_member_role_rule_pricing_id|计价规则' => 'integer',
+        'join_member_role_rule_pricing_id|计价规则' => 'alphaDash',
         'member_role_status|状态' => 'in:ACTIVED,DISABLED',
         'member_role_category|等级分类' => 'max:32',
         'member_role_name|等级名称' => 'require|max:64',
         'member_role_range_begin|区间起始' => 'float',
         'member_role_range_end|区间截止' => 'float',
         'member_role_sort|排序' => 'integer',
-        'member_role_groupby|分组' => '',
+        'member_role_groupby|分组' => 'max:32',
     ];
 
     protected $message = [];
 
     protected $scene = [
-        'add' => [],
-        'update' => []
+        'add' => ['join_member_role_category_id', 'join_member_role_rule_pricing_id', 'member_role_status', 'member_role_category',
+            'member_role_name', 'member_role_range_begin', 'member_role_range_end', 'member_role_sort', 'member_role_groupby'],
+        'update' => ['member_role_id', 'join_member_role_category_id', 'join_member_role_rule_pricing_id', 'member_role_status', 'member_role_category',
+            'member_role_name', 'member_role_range_begin', 'member_role_range_end', 'member_role_sort', 'member_role_groupby'],
     ];
 }

+ 19 - 0
app/model/MemberRole.php

@@ -2,6 +2,7 @@
 
 namespace app\model;
 
+use DateTimeInterface;
 use support\Model;
 
 class MemberRole extends Model
@@ -10,10 +11,28 @@ class MemberRole extends Model
 
     protected $primaryKey = 'member_role_id';
 
+    protected $keyType = 'string';
+
     protected $dateFormat = 'U';
 
     const CREATED_AT = 'member_role_addtimes';
 
     const UPDATED_AT = null;
 
+    protected function serializeDate(DateTimeInterface $date)
+    {
+        return $date->format('Y-m-d H:i:s');
+    }
+
+    public function category()
+    {
+        return $this->hasOne(SysCategory::class, 'category_id', 'join_member_role_category_id')
+            ->select('category_id', 'category_name');
+    }
+
+    public function rulePricing()
+    {
+        return $this->hasOne(RulePricing::class, 'rule_pricing_id', 'join_member_role_rule_pricing_id')
+            ->select('rule_pricing_id', 'rule_pricing_name');
+    }
 }

+ 9 - 1
route/admin.php

@@ -587,13 +587,21 @@ Route::group('/admin', function () {
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);
-
+        /* 等级计价规则 */
         Route::group('/rulePricing', function () {
+            Route::get('/selectList', [\app\admin\controller\member\RulePricingController::class, 'selectList']);
             Route::get('/list', [\app\admin\controller\member\RulePricingController::class, 'select']);
             Route::post('/add', [\app\admin\controller\member\RulePricingController::class, 'insert']);
             Route::post('/update', [\app\admin\controller\member\RulePricingController::class, 'update']);
             Route::delete('/delete', [\app\admin\controller\member\RulePricingController::class, 'delete']);
         });
+        /* 等级 */
+        Route::group('/role', function () {
+            Route::get('/list', [\app\admin\controller\member\RoleController::class, 'select']);
+            Route::post('/add', [\app\admin\controller\member\RoleController::class, 'insert']);
+            Route::post('/update', [\app\admin\controller\member\RoleController::class, 'update']);
+            Route::delete('/delete', [\app\admin\controller\member\RoleController::class, 'delete']);
+        });
     });
     /* 营销管理 */
     Route::group('/marketing', function () {