Browse Source

等级折扣规则

gorden 9 months ago
parent
commit
e8f3ec35a5

+ 7 - 0
app/admin/controller/goods/EntityGoodsController.php

@@ -24,6 +24,13 @@ class EntityGoodsController
         return GoodsService::select($request, 'GOODS');
     }
 
+    public function selectAll(Request $request)
+    {
+        $goodsIds = $request->get('goods_id', '');
+
+        return GoodsService::selectAll($goodsIds);
+    }
+
     /**
      * @Desc 商品详情
      * @Author Gorden

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

@@ -0,0 +1,17 @@
+<?php
+
+namespace app\admin\controller\member;
+
+use app\admin\validate\member\RoleValidate;
+use app\controller\Curd;
+use app\model\MemberRole;
+
+class RoleController extends Curd
+{
+    public function __construct()
+    {
+        $this->model = new MemberRole();
+        $this->validate = true;
+        $this->validateClass = new RoleValidate();
+    }
+}

+ 72 - 0
app/admin/controller/member/RulePricingController.php

@@ -0,0 +1,72 @@
+<?php
+
+namespace app\admin\controller\member;
+
+use app\admin\validate\member\RulePricingValidate;
+use app\controller\Curd;
+use app\model\RulePricing;
+use app\model\SysSerial;
+use support\exception\BusinessException;
+use support\Request;
+use support\Response;
+
+class RulePricingController extends Curd
+{
+    public function __construct()
+    {
+        $this->model = new RulePricing();
+        $this->validate = true;
+        $this->validateClass = new RulePricingValidate();
+    }
+
+    public function select(Request $request): Response
+    {
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $order = $request->get('order', 'desc');
+        $field = $field ?? 'rule_pricing_addtimes';
+        $query = $this->doSelect($where, $field, $order);
+        return $this->doFormat($query, $format, $limit);
+    }
+
+    protected function afterQuery($items)
+    {
+        foreach ($items as &$item) {
+            if (!empty($item->rule_pricing_goods_json)){
+                $goodsJson = json_decode($item->rule_pricing_goods_json,true);
+                $item->rule_pricing_goods_json = $goodsJson;
+            }
+        }
+
+        return $items;
+    }
+
+    protected function insertInput(Request $request): array
+    {
+        $data = $this->inputFilter($request->post());
+        $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{
+            $data['rule_pricing_goods_json'] = '[]';
+        }
+        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['rule_pricing_goods_json'])) {
+            $data['rule_pricing_goods_json'] = json_encode(explode(',', $data['rule_pricing_goods_json']));
+        }else{
+            $data['rule_pricing_goods_json'] = '[]';
+        }
+        $model = $this->model->find($id);
+        if (!$model) {
+            throw new BusinessException('记录不存在', 2);
+        }
+        unset($data[$primary_key]);
+        return [$id, $data];
+    }
+
+}

+ 12 - 0
app/admin/service/goods/GoodsService.php

@@ -18,6 +18,18 @@ use support\Response;
 
 class GoodsService
 {
+    public static function selectAll($goodsIds)
+    {
+        $goods = Goods::where('goods_status', 'ON')
+            ->when($goodsIds != '', function ($query) use ($goodsIds) {
+                $query->whereIn('goods_id', $goodsIds);
+            })
+            ->select('goods_id', 'goods_name')
+            ->get();
+
+        return json_success('', $goods);
+    }
+
     public static function select(Request $request, $classify = "GOODS")
     {
         $page = $request->get('page');

+ 1 - 1
app/admin/service/member/MemberService.php

@@ -58,7 +58,7 @@ class MemberService
                 'member_cert_nation' => $row['member_cert_nation'],
             ];
             $row['is_auth'] = "未认证";
-            if (!empty($row['member_cert_nbr']) && !empty($row['member_cert_face']) && !empty($row['member_cert_photo'])) {
+            if (!empty($row['member_cert_nbr']) && !empty($row['member_cert_name'])) {
                 $row['is_auth'] = "已认证";
             }
         }

+ 28 - 0
app/admin/validate/member/RoleValidate.php

@@ -0,0 +1,28 @@
+<?php
+
+namespace app\admin\validate\member;
+
+use support\Validate;
+
+class RoleValidate extends Validate
+{
+    protected $rule = [
+        'member_role_id|ID' => 'require|integer',
+        'join_member_role_category_id|系统分类' => 'integer',
+        'join_member_role_rule_pricing_id|计价规则' => 'integer',
+        '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|分组' => '',
+    ];
+
+    protected $message = [];
+
+    protected $scene = [
+        'add' => [],
+        'update' => []
+    ];
+}

+ 26 - 0
app/admin/validate/member/RulePricingValidate.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace app\admin\validate\member;
+
+use support\Validate;
+
+class RulePricingValidate extends Validate
+{
+    protected $rule = [
+        'rule_pricing_id|ID' => 'require|alphaDash',
+        'rule_pricing_classify|归类' => 'max:32',
+        'rule_pricing_status|状态' => 'in:ACTIVED,DISABLED',
+        'rule_pricing_category|分类' => 'max:32',
+        'rule_pricing_name|规则名称' => 'require|max:64',
+        'rulr_priceing_nbr|规则数值' => 'float',
+        'rule_pricing_sort|排序' => 'integer',
+        'rule_pricing_groupby|分组' => 'max:32',
+    ];
+
+    protected $message = [];
+
+    protected $scene = [
+        'add' => ['rule_pricing_status', 'rule_pricing_category', 'rule_pricing_name', 'rulr_priceing_nbr', 'rule_pricing_sort', 'rule_pricing_groupby'],
+        'update' => ['rule_pricing_id', 'rule_pricing_status', 'rule_pricing_category', 'rule_pricing_name', 'rulr_priceing_nbr', 'rule_pricing_sort', 'rule_pricing_groupby']
+    ];
+}

+ 19 - 0
app/model/MemberRole.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace app\model;
+
+use support\Model;
+
+class MemberRole extends Model
+{
+    protected $table = 'member_role';
+
+    protected $primaryKey = 'member_role_id';
+
+    protected $dateFormat = 'U';
+
+    const CREATED_AT = 'member_role_addtimes';
+
+    const UPDATED_AT = null;
+
+}

+ 26 - 0
app/model/RulePricing.php

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

+ 8 - 0
route/admin.php

@@ -22,6 +22,7 @@ Route::group('/admin', function () {
     Route::group('/goods', function () {
         /* 实物商品管理 */
         Route::group('/entity', function () {
+            Route::get('/selectAll', [\app\admin\controller\goods\EntityGoodsController::class, 'selectAll']);
             Route::get('/list', [\app\admin\controller\goods\EntityGoodsController::class, 'select']);
             Route::get('/info', [\app\admin\controller\goods\EntityGoodsController::class, 'info']);
             Route::post('/add', [\app\admin\controller\goods\EntityGoodsController::class, 'insert']);
@@ -586,6 +587,13 @@ Route::group('/admin', function () {
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);
+
+        Route::group('/rulePricing', function () {
+            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('/marketing', function () {