瀏覽代碼

皇冠续期

gorden 5 月之前
父節點
當前提交
aa401b4c75

+ 77 - 0
app/admin/controller/member/MemberController.php

@@ -3,6 +3,7 @@
 namespace app\admin\controller\member;
 
 use app\admin\service\member\MemberService;
+use app\admin\service\notify\RechargeService;
 use app\admin\service\order\OrderService;
 use app\admin\validate\member\MemberValidate;
 use app\model\Coupon;
@@ -13,6 +14,7 @@ use app\model\Member;
 use app\model\MemberAccount;
 use app\model\MemberBenefit;
 use app\model\MemberQuota;
+use app\model\MemberRole;
 use app\model\Order;
 use app\model\OrderReturn;
 use app\model\OrderSheet;
@@ -22,6 +24,7 @@ use support\exception\BusinessException;
 use support\Log;
 use support\Request;
 use Tinywan\Jwt\JwtToken;
+use function _PHPStan_cc8d35ffb\RingCentral\Psr7\str;
 
 class MemberController
 {
@@ -1233,4 +1236,78 @@ class MemberController
             return json_fail('退款失败');
         }
     }
+
+    public function crownContinue(Request $request)
+    {
+        $memberId = $request->post('member_id');
+        $dataTime = $request->post('datetime', date('Y-m-d'));
+        $sendAll = $request->post('send_all', false);
+        $orderId = $request->post('order_id');
+        if (!$memberId || !$orderId) {
+            return json_fail('参数异常');
+        }
+
+        $member = Member::where('member_id', $memberId)->first();
+
+        try {
+            Db::beginTransaction();
+            $roleConfigJson = [];
+            if (!empty($member->member_role_config_json)) {
+                $roleConfigJson = json_decode($member->member_role_config_json, true);
+                if (!empty($roleConfigJson['next'])) {
+                    unset($roleConfigJson['next']);
+                }
+            }
+
+            $roleConfigJson['deadline_datetime'] = date('Y-m-d 23:59:59', strtotime($dataTime . ' + 364 days'));
+            $member->member_role_config_json = json_encode($roleConfigJson);
+            $member->member_role_begintime = date('Y-m-d 00:00:00', strtotime($dataTime));
+
+            $memberRoleId = MemberRole::where('member_role_category', 'COMBINE')
+                ->where('member_role_status', 'ACTIVED')
+                ->where('member_role_name', 'like', '%皇冠%')
+                ->value('member_role_id');
+            $member->join_member_role_id = $memberRoleId;
+            $member->save();
+            if ($sendAll === true) {
+                $payDetail = PayDetail::whereJsonContains('join_pay_object_json->order_id', $orderId)
+                    ->first();
+                if (!empty($payDetail->pay_extend_json)) {
+                    $payExtendJson = json_decode($payDetail->pay_extend_json, true);
+                    $account = MemberAccount::where('join_account_member_id', $memberId)
+                        ->where('member_account_classify', 'CASH')
+                        ->first();
+                    $account->member_account_added = $account->member_account_added + $payExtendJson['added_amount'];
+                    $account->save();
+                }
+                // 产生一条支付记录
+                PayDetail::insert([
+                    'join_pay_member_id' => $memberId,
+                    'join_pay_order_id' => 'CROWN_CONTINUE',
+                    'join_pay_object_json' => '[]',
+                    'pay_status' => 'SUCCESS',
+                    'pay_category' => 'CROWN_CONTINUE',
+                    'pay_amount' => 0,
+                    'pay_paytimes' => date('Y-m-d H:i:s'),
+                    'pay_prepayid' => $memberId . '-CASH',
+                    'pay_extend_json' => $payDetail->pay_extend_json,
+                    'pay_addtimes' => time()
+                ]);
+
+                $goodsAttributeJson = RechargeService::getGoodsAttributeJson($orderId);
+
+                // 发券
+                $couponParams['order_id'] = $orderId;
+                RechargeService::disposeRoleCoupon($goodsAttributeJson, $couponParams, $memberId);
+            }
+            Db::commit();
+
+            return json_success('success');
+        } catch (\Exception $e) {
+            dump($e->getTrace());
+            Db::rollBack();
+            Log::error("续期失败:" . $e->getMessage());
+            return json_fail("续期失败");
+        }
+    }
 }

+ 5 - 11
app/admin/controller/order/RechargeController.php

@@ -104,16 +104,6 @@ class RechargeController extends Curd
             'cert' => function ($query) {
                 $query->select('join_cert_member_id', 'member_cert_name');
             },
-//            'return' => function ($query) use ($where){
-//                if (isset($where['return'])){
-//                    dump($where['return']);
-//                    $query = $query->where('order_return_status',$where['return']);
-//                }
-//                $query->select('orders_return_id', 'join_return_order_id', 'order_return_status');
-//            },
-            // 'express' => function ($query) {
-            //     $query->select('join_express_order_id', 'order_express_type');
-            // }
         ])->leftJoin('order_return', 'order_return.join_return_order_id', '=', 'order.order_id')
             ->leftJoin('order_express', 'order_express.join_express_order_id', '=', 'order.order_id');
         // ->leftJoin('order_sheet','join_sheet_order_id','=','order.order_id');
@@ -158,11 +148,15 @@ class RechargeController extends Curd
     {
         foreach ($items as &$item) {
             $sheetDeng = '';
+            $item['is_crown'] = 'N';
             $item['sheet'] = $item['sheets'][0] ?? [];
             if (!empty($item['sheet'])) {
                 $goods = Goods::where('goods_id', $item['sheet']['join_sheet_goods_id'])->first();
                 if (count($item['sheets']) > 1 && $goods->goods_classify == 'MEALS') {
-                    $sheetDeng = ' 等餐品';
+                    $sheetDeng = ' 等';
+                }
+                if ($goods && $goods->goods_name && strpos($goods->goods_name,'皇冠') !== false){
+                    $item['is_crown'] = 'Y';
                 }
                 $item['sheet']['goods_name'] = ($goods && $goods->goods_name) ? $goods->goods_name . $sheetDeng : '';
                 $item['sheet']['goods_classify'] = $goods->goods_classify ?? '';

+ 19 - 7
app/admin/service/member/MemberService.php

@@ -1111,12 +1111,12 @@ class MemberService
             } else if (mb_substr($item['goods_category'], 0, 7) == '会员合伙人产品') {
                 $item['goods_category'] = '会员合伙人充值';
             }
-            if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE', 'PARTNER', 'IN'])) {
+            if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE','CROWN_CONTINUE', 'PARTNER', 'IN'])) {
                 $item['balance_type'] = 'add';
             } else {
                 $item['balance_type'] = 'cut';
             }
-            if ($key == 0 && in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE'])) {
+            if ($key == 0 && in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE','CROWN_CONTINUE'])) {
                 if (!empty($item['pay_extend_json']) && !in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE'])) {
                     $extendJson = json_decode($item['pay_extend_json'], true);
                     if (!isset($extendJson['added_amount'])) {
@@ -1127,11 +1127,17 @@ class MemberService
 //                        continue;
 //                    }
                     if (isset($extendJson['added_amount']) && floatval($extendJson['added_amount']) > 0) {
+                        $payCategory = 'ADDED';
+                        if ($item['pay_category'] == 'GIVE'){
+                            $payCategory = 'GIVE';
+                        }elseif ($item['pay_category'] == 'CROWN_CONTINUE'){
+                            $payCategory = 'CROWN_CONTINUE';
+                        }
                         $data[] = [
                             'join_pay_member_id' => $item['join_pay_member_id'],
                             'pay_addtimes' => $item['pay_addtimes'],
                             'pay_amount' => $extendJson['added_amount'],
-                            'pay_category' => $item['pay_category'] == 'GIVE' ? 'GIVE' : 'ADDED',
+                            'pay_category' => $payCategory,
                             'balance' => number_format($balance, 2, '.', ''),
                             'balance_type' => 'add',
                         ];
@@ -1159,22 +1165,28 @@ class MemberService
 
                 $item['balance'] = number_format($balance, 2, '.', '');
                 $balance = $balance - $item['pay_amount'];
-                if ($item['pay_category'] != 'GIVE') {
+                if (!in_array($item['pay_category'],['GIVE','CROWN_CONTINUE']) ) {
                     $data[] = $item;
                 }
 
                 continue;
             }
 
-            if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE', 'PARTNER', 'COMBINE', 'IN'])) {
+            if (in_array($item['pay_category'], ['RECHARGE', 'REFUND', 'GIVE','CROWN_CONTINUE', 'PARTNER', 'COMBINE', 'IN'])) {
                 if (!empty($item['pay_extend_json']) && !in_array($item['join_pay_order_id'], ['PARTNER', 'COMBINE'])) {
                     $extendJson = json_decode($item['pay_extend_json'], true);
                     if (isset($extendJson['added_amount']) && floatval($extendJson['added_amount']) > 0) {
+                        $payCategory = 'ADDED';
+                        if ($item['pay_category'] == 'GIVE'){
+                            $payCategory = 'GIVE';
+                        }elseif ($item['pay_category'] == 'CROWN_CONTINUE'){
+                            $payCategory = 'CROWN_CONTINUE';
+                        }
                         $data[] = [
                             'join_pay_member_id' => $item['join_pay_member_id'],
                             'pay_addtimes' => $item['pay_addtimes'],
                             'pay_amount' => $extendJson['added_amount'],
-                            'pay_category' => $item['pay_category'] == 'GIVE' ? 'GIVE' : 'ADDED',
+                            'pay_category' => $payCategory,
                             'balance' => number_format($balance, 2, '.', ''),
                             'balance_type' => 'add',
                         ];
@@ -1206,7 +1218,7 @@ class MemberService
                 $balance = $balance + $item['pay_amount'];
             }
 
-            if ($item['pay_category'] != 'GIVE') {
+            if (!in_array($item['pay_category'],['GIVE','CROWN_CONTINUE']) ) {
                 $data[] = $item;
             }
         }

+ 2 - 0
route/admin.php

@@ -799,6 +799,8 @@ Route::group('/admin', function () {
             Route::post('/roleBenefitRefund', [\app\admin\controller\member\MemberController::class, 'roleBenefitRefund']);
             Route::post('/refundOrder', [\app\admin\controller\member\MemberController::class, 'refundOrder']);
             Route::post('/exportConsumptionList', [\app\admin\controller\member\MemberController::class, 'exportConsumptionList']);
+            Route::post('/crownContinue', [\app\admin\controller\member\MemberController::class, 'crownContinue']);
+
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);