Browse Source

储值卡

gorden 3 months ago
parent
commit
2a175d636f
1 changed files with 44 additions and 2 deletions
  1. 44 2
      app/admin/controller/coupon/CardController.php

+ 44 - 2
app/admin/controller/coupon/CardController.php

@@ -114,6 +114,13 @@ class CardController extends Curd
                     $item['valid_datetime'] = date('Y/m/d H:i:s', strtotime($item['card_assign_datetime'])) . '-' . date('Y/m/d H:i:s', strtotime($item['card_deadline_datetime']));
                 }
             }
+            $cardExtendJson = [];
+            if (!empty($item['card_extend_json'])) {
+                $cardExtendJson = json_decode($item['card_extend_json'], true);
+            }
+            if (!empty($cardExtendJson['issue_datetime'])) {
+                $item['issue_datetime'] = $cardExtendJson['issue_datetime'];
+            }
         }
 
         return $items;
@@ -228,19 +235,54 @@ class CardController extends Curd
     {
         $params = $request->post();
 
+        Db::beginTransaction();
         try {
             $issueMode = $params['issue'];
             // 1.按卡号
             if ($issueMode == 'CARDID' && !empty($params['card_id'])) {
-                Card::whereIn('card_id', $params['card_id'])->where('is_issue', 'N')->update(['is_issue' => 'Y']);
+                foreach ($params['card_id'] as $card_id) {
+                    $card = Card::where('card_id', $card_id)->select('card_id', 'is_issue', 'card_extend_json')->first();
+                    if (!empty($card)) {
+                        $cardExtendJson = json_decode($card->card_extend_json, true);
+                        $cardExtendJson['issue_datetime'] = date('Y-m-d H:i:s');
+                        $card->card_extend_json = json_encode($cardExtendJson);
+                        $card->is_issue = 'Y';
+                        $card->save();
+                    } else {
+                        throw new BusinessException($card_id . "不存在");
+                    }
+                }
             } elseif ($issueMode == 'ISSUE' && !empty($params['card_issue_id'])) {
                 // 2.按批次
-                Card::where('join_card_issue_id', $params['card_issue_id'])->where('is_issue', 'N')->update(['is_issue' => 'Y']);
+                $cards = Card::where('join_card_issue_id', $params['card_issue_id'])
+                    ->where('is_issue', 'N')
+                    ->select('card_id', 'card_extend_json')
+                    ->get()
+                    ->toArray();
+                if (!empty($cards)) {
+                    foreach ($cards as $cardItem) {
+                        $cardExtendJson = json_decode($cardItem['card_extend_json'], true);
+                        $cardExtendJson['issue_datetime'] = date('Y-m-d H:i:s');
+                        Card::where('card_id', $cardItem['card_id'])->update([
+                            'is_issue' => 'Y',
+                            'card_extend_json' => json_encode($cardExtendJson)
+                        ]);
+                    }
+                } else {
+                    throw new BusinessException("批次不存在");
+                }
             }
 
+            Db::commit();
             _syslog("储值卡", '发行成功');
             return json_success('success');
+        } catch (BusinessException $e) {
+            Db::rollBack();
+            _syslog("储值卡", "发行失败:" . $e->getMessage());
+            Log::error('储值卡发行失败', ['msg' => $e->getMessage()]);
+            return json_fail("发行失败:" . $e->getMessage());
         } catch (\Exception $e) {
+            Db::rollBack();
             _syslog("储值卡", '发行失败');
             Log::error('储值卡发行失败', ['msg' => $e->getMessage()]);
             return json_fail("发行失败");