Browse Source

Merge branch 'master' of http://39.98.194.76:3000/txct/wanyue_app

gorden 8 months ago
parent
commit
e7a9a50d88

+ 21 - 1
app/admin/controller/card/CardController.php

@@ -63,11 +63,12 @@ class CardController
         $params = $request->post();
         $params['join_card_batch_user_id'] = JwtToken::getCurrentId();
         // 验证器
+        $params['validtimes_status'] = $params['validtimes_status'] ?? 3;
         $validate = new CardValidate();
         if (!$validate->scene('save')->check($params)) {
             return json_fail($validate->getError());
         }
-        // 校验有效期 0 永久 1增加 2 减少
+        // 校验有效期 0 永久 1增加 2 减少 3不修改
         return CardService::save($params);
     }
 
@@ -112,4 +113,23 @@ class CardController
         return CardService::getStatusList();
     }
 
+
+    /**
+     * Notes: 储值卡绑定
+     * User: ZhouBenXu
+     * DateTime: 2024/7/2 下午6:08
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function binding(Request $request)
+    {
+        $params = $request->post();
+        var_dump($params);
+        $validate = new CardValidate();
+        if (!$validate->scene('binding')->check($params)) {
+            return json_fail($validate->getError());
+        }
+        return CardService::binding($params);
+    }
+
 }

+ 6 - 0
app/admin/controller/sys_manage/CategoryController.php

@@ -218,4 +218,10 @@ class CategoryController extends Curd
     {
         return CategoryService::delCategory($request);
     }
+
+    public function getCategoryTree(Request $request)
+    {
+        $category_id = $request->get('category_id');
+        return CategoryService::getCategoryTree($category_id);
+    }
 }

+ 19 - 12
app/admin/service/card/CardBatchService.php

@@ -15,6 +15,7 @@ use support\Response;
 use app\model\CardBatch;
 use app\model\Card;
 use app\admin\service\card\CardService;
+use app\admin\service\sys_manage\CategoryService;
 
 class CardBatchService
 {
@@ -31,6 +32,10 @@ class CardBatchService
         try {
             // 添加卡批次
             $model = new CardBatch();
+            if (is_array($params['join_card_batch_category_id'])) {
+                $params['join_card_batch_category_id'] = end($params['join_card_batch_category_id']);
+            }
+
             $model->join_card_batch_user_id = $params['join_card_batch_user_id']; // 批次创建用户 user_id
             $model->join_card_batch_category_id = $params['join_card_batch_category_id']; // 批次卡分类ID
             $model->card_batch_status = $params['card_batch_status']; // 批次状态
@@ -115,7 +120,11 @@ class CardBatchService
             $model = $cardBatchModel::find($params['card_batch_id']);
             $model->card_batch_name = $params['card_batch_name'];
             $model->card_batch_remark = $params['card_batch_remark'] ?? "";
-            $params['card_batch_status'] = $model->card_batch_status = $params['card_batch_status']; // 批次状态
+            $params['card_batch_status'] && $model->card_batch_status = $params['card_batch_status']; // 批次状态
+            // 是否有激活的卡片
+            if (Card::where('join_card_batch_id', $params['card_batch_id'])->where('card_status', 'ACTIVED')->exists()) {
+                return json_fail('存在已激活卡片不可以修改状态');
+            }
             if ($params['validtimes_status'] == 0) {
                 $model->card_batch_validtimes = 0; // 卡批次有效期 0=永久 天
             } elseif ($params['validtimes_status'] == 1) {
@@ -132,7 +141,7 @@ class CardBatchService
                 // CardService::saveCardByCardBatchId($params['card_batch_id'], $params);
                 // 修改卡批次下面的卡信息
                 $model = new Card();
-                $data['card_name'] = $params['card_batch_name'];
+//                $data['card_name'] = $params['card_batch_name'];
 
                 $card_status = array_keys($model::CARD_STATUS);
                 if (in_array($params['card_batch_status'], $card_status)) {
@@ -239,45 +248,42 @@ class CardBatchService
 
 
         if (!empty($rows)) {
+
+            // 查询所有分类信息
+            $category = array_column($rows, 'join_card_batch_category_id');
+            $categoryInfos = CategoryService::getCategoryInfos($category) ?? [];
+            $categoryInfos && $categoryInfos = array_column($categoryInfos, null, 'category_id');
+
             // 查询求和数据信息
             $card_batch_id_string = implode(',', array_column($rows, 'card_batch_id'));
             $sql = "select join_card_batch_id,
                     -- INIT
                     IFNULL(SUM(CASE WHEN card_status = 'INIT' THEN counts ELSE 0 END),0) as status_INIT_counts,
                     IFNULL(SUM(CASE WHEN card_status = 'INIT' THEN amounts ELSE 0 END),0) as status_INIT_amounts,
-                    IFNULL(SUM(CASE WHEN card_status = 'INIT' THEN addeds ELSE 0 END),0) as status_INIT_addeds,
                     -- PRODUCTED
                     IFNULL(SUM(CASE WHEN card_status = 'PRODUCTED' THEN counts ELSE 0 END),0) as status_PRODUCTED_counts,
                     IFNULL(SUM(CASE WHEN card_status = 'PRODUCTED' THEN amounts ELSE 0 END),0) as status_PRODUCTED_amounts,
-                    IFNULL(SUM(CASE WHEN card_status = 'PRODUCTED' THEN addeds ELSE 0 END),0) as status_PRODUCTED_addeds,
                     -- ENABLED
                     IFNULL(SUM(CASE WHEN card_status = 'ENABLED' THEN counts ELSE 0 END),0) as status_ENABLED_counts,
                     IFNULL(SUM(CASE WHEN card_status = 'ENABLED' THEN amounts ELSE 0 END),0) as status_ENABLED_amounts,
-                    IFNULL(SUM(CASE WHEN card_status = 'ENABLED' THEN addeds ELSE 0 END),0) as status_ENABLED_addeds,
                     -- WAITING
                     IFNULL(SUM(CASE WHEN card_status = 'WAITING' THEN counts ELSE 0 END),0) as status_WAITING_counts,
                     IFNULL(SUM(CASE WHEN card_status = 'WAITING' THEN amounts ELSE 0 END),0) as status_WAITING_amounts,
-                    IFNULL(SUM(CASE WHEN card_status = 'WAITING' THEN addeds ELSE 0 END),0) as status_WAITING_addeds,
                     -- PENDING
                     IFNULL(SUM(CASE WHEN card_status = 'PENDING' THEN counts ELSE 0 END),0) as status_PENDING_counts,
                     IFNULL(SUM(CASE WHEN card_status = 'PENDING' THEN amounts ELSE 0 END),0) as status_PENDING_amounts,
-                    IFNULL(SUM(CASE WHEN card_status = 'PENDING' THEN addeds ELSE 0 END),0) as status_PENDING_addeds,
                     -- ACTIVED
                     IFNULL(SUM(CASE WHEN card_status = 'ACTIVED' THEN counts ELSE 0 END),0) as status_ACTIVED_counts,
                     IFNULL(SUM(CASE WHEN card_status = 'ACTIVED' THEN amounts ELSE 0 END),0) as status_ACTIVED_amounts,
-                    IFNULL(SUM(CASE WHEN card_status = 'ACTIVED' THEN addeds ELSE 0 END),0) as status_ACTIVED_addeds,
                     -- DISABLED
                     IFNULL(SUM(CASE WHEN card_status = 'DISABLED' THEN counts ELSE 0 END),0) as status_DISABLED_counts,
                     IFNULL(SUM(CASE WHEN card_status = 'DISABLED' THEN amounts ELSE 0 END),0) as status_DISABLED_amounts,
-                    IFNULL(SUM(CASE WHEN card_status = 'DISABLED' THEN addeds ELSE 0 END),0) as status_DISABLED_addeds,
                     -- EXPIRED
                     IFNULL(SUM(CASE WHEN card_status = 'EXPIRED' THEN counts ELSE 0 END),0) as status_EXPIRED_counts,
                     IFNULL(SUM(CASE WHEN card_status = 'EXPIRED' THEN amounts ELSE 0 END),0) as status_EXPIRED_amounts,
-                    IFNULL(SUM(CASE WHEN card_status = 'EXPIRED' THEN addeds ELSE 0 END),0) as status_EXPIRED_addeds,
                     -- PAUSED
                     IFNULL(SUM(CASE WHEN card_status = 'PAUSED' THEN counts ELSE 0 END),0) as status_PAUSED_counts,
-                    IFNULL(SUM(CASE WHEN card_status = 'PAUSED' THEN amounts ELSE 0 END),0) as status_PAUSED_amounts,
-                    IFNULL(SUM(CASE WHEN card_status = 'PAUSED' THEN addeds ELSE 0 END),0) as status_PAUSED_addeds
+                    IFNULL(SUM(CASE WHEN card_status = 'PAUSED' THEN amounts ELSE 0 END),0) as status_PAUSED_amounts 
                     from (select join_card_batch_id, card_status, COUNT(*) as counts, SUM(card_amount) as amounts, SUM(card_added) as addeds from app_card where join_card_batch_id in (" . $card_batch_id_string . ") group by join_card_batch_id, card_status) group_data
                     group by join_card_batch_id";
 
@@ -285,6 +291,7 @@ class CardBatchService
             $card_status_total = array_column($card_status_total, null, 'join_card_batch_id');
             foreach ($rows as $key => &$value) {
                 $value['card_batch_status_value'] = $cardBatchModel::CARD_BATCH_STATUS[$value['card_batch_status']];
+                $value['category_name'] = $categoryInfos[$value['join_card_batch_category_id']]['category_name'] ?? "";
                 if ($value['card_batch_validtimes'] == 0) {
                     $value['card_batch_validtimes_value'] = "永久";
                 } else {

+ 56 - 6
app/admin/service/card/CardService.php

@@ -9,6 +9,7 @@
 
 namespace app\admin\service\card;
 
+use app\admin\service\sys_manage\CategoryService;
 use app\model\CardBatch;
 use support\Db;
 use support\exception\BusinessException;
@@ -180,7 +181,15 @@ class CardService
             })
             ->count();
         if (!empty($rows)) {
+            // 查询所有分类信息
+            $category = array_column($rows, 'join_card_category_id');
+            $categoryInfos = CategoryService::getCategoryInfos($category) ?? [];
+            $categoryInfos && $categoryInfos = array_column($categoryInfos, null, 'category_id');
+            // 查询会员信息
+
+
             foreach ($rows as $key => &$value) {
+                $value['category_name'] = $categoryInfos[$value['join_card_category_id']]['category_name'] ?? "";
                 $value['card_status_value'] = Card::CARD_STATUS[$value['card_status']];
                 !empty($value['card_json']) && $value['card_json'] = json_decode($value['card_json'], true);
                 !empty($value['card_assign_json']) && $value['card_assign_json'] = json_decode($value['card_assign_json'], true);
@@ -368,16 +377,22 @@ class CardService
             $cardBatchModel = new Card();
             $model = $cardBatchModel::find($params['card_id']);
             $model->card_name = $params['card_name'];
-            $model->join_card_member_id = $params['join_card_member_id'];
-            $params['card_status'] && $params['card_status'] = $model->card_status = Card::CARD_STATUS[$params['card_status']]; // 储值卡状态
+            $model->card_remark = $params['card_remark'] ?? "";
+
+            if ($model->card_status == "ACTIVED") {
+                return json_fail('已激活卡片不可以修改状态');
+            }
+
+            $params['join_card_member_id'] && $model->join_card_member_id = $params['join_card_member_id'] ?? "";
+            $params['card_status'] && $model->card_status = $params['card_status']; // 储值卡状态
             if ($params['validtimes_status'] == 0) { // 卡批次有效期 0 永久天  1 增加 2减少
                 $model->card_validtimes = 0;
             } elseif ($params['validtimes_status'] == 1) {
-                $model->card_validtimes = baadd($model->card_validtimes + $params['card_batch_validtimes'] * 86400);
+                $model->card_validtimes = bcadd($model->card_validtimes, $params['card_validtimes'] * 86400);
             } elseif ($params['validtimes_status'] == 2) {
-                $card_validtimes = bcsub($model->card_validtimes - $params['card_batch_validtimes'] * 86400);
+                $card_validtimes = bcsub($model->card_validtimes, $params['card_validtimes'] * 86400);
                 // 修改后的有效期不允许小于当前时间
-                if (!$card_validtimes <= time()) {
+                if ($card_validtimes <= time()) {
                     return json_fail('储值卡有效期必须大于当前时间~');
                 }
                 $model->card_validtimes = $card_validtimes;
@@ -397,7 +412,7 @@ class CardService
             dump($e->getTrace());
             return json_fail('数据写入失败~');
         }
-//        _syslog("修改储值卡", "储值卡id【" . $params['card_id'] . "】");
+        _syslog("修改储值卡", "储值卡id【" . $params['card_id'] . "】");
         return json_success('success');
     }
 
@@ -421,4 +436,39 @@ class CardService
     }
 
 
+    /**
+     * Notes: 储值卡绑定
+     * User: ZhouBenXu
+     * DateTime: 2024/7/2 下午6:08
+     * @param $params
+     * @return Response
+     */
+    public static function binding($params)
+    {
+        Db::beginTransaction();
+        try {
+            $card_ids = $params['card_id'];
+            if (!is_array($card_ids)) {
+                $card_ids = [$card_ids];
+            }
+            Card::whereIn('card_id', $card_ids)->update(['join_card_member_id'=>$params['join_card_member_id']]);
+            Db::commit();
+        } catch (\PDOException $e) {
+            Db::rollBack();
+            dump($e->getFile() . '(' . $e->getLine() . '):' . $e->getMessage());
+            return json_fail('数据写入失败~');
+        } catch (BusinessException $e) {
+            Db::rollBack();
+            dump($e->getFile() . '(' . $e->getLine() . '):' . $e->getMessage());
+            return json_fail($e->getMessage());
+        } catch (\Exception $e) {
+            Db::rollBack();
+            dump($e->getTrace());
+            return json_fail('数据写入失败~');
+        }
+        _syslog("绑定储值卡", "储值卡ID【" . implode(',', $card_ids) . '】');
+        return json_success('success');
+    }
+
+
 }

+ 81 - 0
app/admin/service/sys_manage/CategoryService.php

@@ -213,4 +213,85 @@ class CategoryService
         }
         return $category->category_super_path;
     }
+
+    /**
+     * Notes: 获取树状分类信息
+     * User: ZhouBenXu
+     * DateTime: 2024/7/2 下午2:52
+     * @param $parentId
+     * @return \support\Response
+     */
+    public static function getCategoryTree($parentId)
+    {
+        // 查询当前父级ID下的所有分类
+        $list = self::getAllCategories($parentId);
+        $allCategories = self::getTree($list,152);
+        return json_success('',$allCategories);
+    }
+
+    /**
+     * Notes: 获取指定分类下的所有分类
+     * User: ZhouBenXu
+     * DateTime: 2024/7/2 下午2:41
+     * @param $parentId
+     * @param $categories
+     * @return array|mixed
+     */
+    public static function getAllCategories($parentId = 0, $categories = [])
+    {
+        // 查询当前父级ID下的所有分类
+        $row = SysCategory::where('category_super_id', $parentId)->where('category_status', 'ACTIVED')->get()->toArray();
+        if(!empty($row)) {
+            foreach ($row as $key => $value) {
+                // 当前分类加入数组
+                $value['label'] = $value['category_name'];
+                $value['value'] = $value['category_id'];
+                $categories[] = $value;
+                // 递归查询子分类
+                $categories = self::getAllCategories($value['category_id'], $categories);
+            }
+        }
+        return $categories;
+    }
+
+    /**
+     * Notes: 树状结构
+     * User: ZhouBenXu
+     * DateTime: 2024/7/2 下午2:51
+     * @param $list
+     * @param $id
+     * @return array
+     */
+    public static function getTree($list = [], $id = 0)
+    {
+        $tree = array();
+        foreach ($list as $k => $v) {
+            if ($v['category_super_id'] == $id) {
+                if (!empty(self::getTree($list, $v['category_id']))) {
+                    $v['children'] = self::getTree($list, $v['category_id']);
+                }
+                $tree[] = $v;
+            }
+        }
+        return $tree;
+    }
+
+
+    /**
+     * @Desc 分类详情
+     * @Author Gorden
+     * @Date 2024/2/22 11:37
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public static function getCategoryInfos($ids)
+    {
+        $category = SysCategory::whereIn('category_id', $ids)->select(['category_id','category_name','category_super_id'])->get()->toArray();
+        if (!$category) {
+            return json_fail('分类不存在');
+        }
+        return $category;
+    }
+
 }

+ 1 - 1
app/admin/validate/card/CardBatchValidate.php

@@ -52,7 +52,7 @@ class CardBatchValidate extends Validate
      */
     public function checkCardSort($params)
     {
-        if ($params['card_batch_serial_begin'] < $params['card_batch_serial_end']) {
+        if ($params['card_batch_serial_begin'] > $params['card_batch_serial_end']) {
             return false;
         }
         // 查询是否存在相同前缀后缀信息

+ 2 - 0
app/admin/validate/card/CardValidate.php

@@ -18,6 +18,7 @@ class CardValidate extends Validate
         'page' => 'require', // 页码
         'pageSize' => 'require', // 分页条数
         'card_ids' => 'require', // 储值卡id
+        'join_card_member_id' => 'require', // 会员id
     ];
 
     protected $message = [];
@@ -27,6 +28,7 @@ class CardValidate extends Validate
         'delete' => ['card_ids'],
         'list' => ['page','pageSize'],
         'info' => ['card_id'],
+        'binding' => ['card_id','join_card_member_id'],
     ];
 
 

+ 2 - 0
route/admin.php

@@ -182,6 +182,7 @@ Route::group('/admin', function () {
             Route::post('/update/{id:\d+}', [\app\admin\controller\sys_manage\CategoryController::class, 'updateCategory']);
             Route::post('/updateStatus/{id:\d+}', [\app\admin\controller\sys_manage\CategoryController::class, 'updateStatus']);
             Route::delete('/delete', [\app\admin\controller\sys_manage\CategoryController::class, 'delCategory']);
+            Route::get('/categoryTree', [\app\admin\controller\sys_manage\CategoryController::class, 'getCategoryTree']);
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);
@@ -910,6 +911,7 @@ Route::group('/admin', function () {
             Route::delete('/delete', [\app\admin\controller\card\CardController::class, 'delete']);
             Route::post('/save', [\app\admin\controller\card\CardController::class, 'save']);
             Route::get('/status', [\app\admin\controller\card\CardController::class, 'getStatusList']);
+            Route::post('/binding', [\app\admin\controller\card\CardController::class, 'binding']);
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);