wesmiler 4 лет назад
Родитель
Сommit
d17b7c5083

+ 7 - 0
app/Http/Controllers/Api/v1/EnshrineController.php

@@ -70,4 +70,11 @@ class EnshrineController extends BaseController
         return $this->service->actionRecord($this->userId);
     }
 
+    /**
+     * 购买物品
+     * @return array
+     */
+    public function buy(){
+        return $this->service->buy($this->userId);
+    }
 }

+ 135 - 3
app/Services/EnshrineService.php

@@ -11,9 +11,12 @@
 
 namespace App\Services;
 
+use App\Models\DynamicNoticeModel;
 use App\Models\EnshrineActionModel;
+use App\Models\EnshrineOrdersModel;
 use App\Models\EnshrineRecordModel;
 use App\Models\MemberModel;
+use App\Models\OfferingsModel;
 use App\Models\TradeModel;
 
 /**
@@ -100,11 +103,11 @@ class EnshrineService extends BaseService
                 $item['guibai_check'] = $wash? $wash : 0;
 
                 // 花
-                $item['hua_url'] = '';
+                $item['hua'] = '';
                 // 水果
-                $item['guo_url'] = '';
+                $item['guo'] = '';
                 // 香烛
-                $item['xiang_url'] = '';
+                $item['xiang'] = '';
             }
             unset($item);
         }
@@ -349,4 +352,133 @@ class EnshrineService extends BaseService
         \DB::commit();
         return message("操作成功", true);
     }
+
+    public function buy($userId){
+        $params = request()->all();
+        $id = isset($params['id'])? $params['id'] : 0;
+        $enshrineId = isset($params['enshrine_id'])? $params['enshrine_id'] : 0;
+        $type = isset($params['type'])? $params['type'] : 0;
+        if($id<=0 || $type <=0 || $enshrineId<=0){
+            return message('参数错误', false);
+        }
+
+        $enshrine = $this->model::where(['id'=> $enshrineId,'user_id'=> $userId,'mark'=> 1,'status'=> 1])
+            ->select(['id','fo_id','user_id'])
+            ->first();
+        if(!$enshrine){
+            return message('供奉记录信息不存在,无法操作', false);
+        }
+
+        $memberInfo = MemberModel::where(['id'=> $userId,'mark'=> 1,'status'=> 1])
+            ->select(['id','nickname','merits_num','coupon'])
+            ->first();
+        if(!$memberInfo){
+            return message('您的账号不可操作或已冻结,请联系客服', false);
+        }
+
+        // 物品
+        $goodsInfo = OfferingsModel::where(['id'=> $id,'mark'=> 1,'status'=> 1])
+            ->select(['id','type','goods_type','name','price'])
+            ->first();
+        if(!$goodsInfo){
+            return message('物品不存在或已下架,请刷新重试', false);
+        }
+
+        \DB::beginTransaction();
+        $data = [
+            'source_id'=> $enshrineId,
+            'goods_id'=> $id,
+            'user_id'=> $userId,
+            'type'=> $type,
+            'order_sn'=> get_order_num('F'),
+            'num'=> 1,
+            'price'=> $goodsInfo->price,
+            'total'=> $goodsInfo->price,
+            'gd_name'=> isset($params['gd_name'])? $params['gd_name'] : '',
+            'pay_at'=> date('Y-m-d H:i:s'),
+            'remark'=> isset($params['remark'])? $params['remark'] : '',
+            'create_time'=> time(),
+            'update_time'=> time(),
+            'status'=> 2
+        ];
+        if(!EnshrineOrdersModel::insertGetId($data)) {
+            \DB::rollBack();
+            return message('供奉物品失败', false);
+        }
+
+        // 扣款奖励处理
+        if($goodsInfo->price>0){
+
+            if(!MemberModel::where(['id'=> $userId, 'mark'=> 1])->increment('coupon', $goodsInfo->price)){
+                \DB::rollBack();
+                return message("更新花灯券账户失败", false);
+            }
+
+            $data = [
+                'user_id'=> $userId,
+                'source_uid'=> 0,
+                'type'=> 3,
+                'coin_type'=> 4,
+                'pay_type'=> 4,
+                'money'=> $goodsInfo->price,
+                'change_type'=> 1,
+                'balance'=> $memberInfo->coupon,
+                'create_time'=> time(),
+                'remark'=> $type == 1? "供奉{$goodsInfo->name}" : ($type == 3? "放生{$goodsInfo->name}" : '超度普渡众生'),
+                'status'=> 1,
+            ];
+            if(!TradeModel::insertGetId($data)){
+                \DB::rollBack();
+                return message("处理账户明细失败", false);
+            }
+
+            // 奖励
+            $giveGd = ConfigService::make()->getConfigByCode('enshrine_give_gd');
+            $giveGd = $giveGd? $giveGd : 0;
+            if($giveGd>0){
+                if(!MemberModel::where(['id'=> $userId, 'mark'=> 1])->increment('merits_num', $giveGd)){
+                    \DB::rollBack();
+                    return message("更新功德账户失败", false);
+                }
+
+                $data = [
+                    'user_id'=> $userId,
+                    'source_uid'=> 0,
+                    'type'=> 3,
+                    'coin_type'=> 4,
+                    'pay_type'=> 4,
+                    'money'=> $giveGd,
+                    'change_type'=> 1,
+                    'balance'=> $memberInfo->merits_num,
+                    'create_time'=> time(),
+                    'remark'=> $type==1? "跪拜祈福":'洗手祈福',
+                    'status'=> 1,
+                ];
+                if(!TradeModel::insertGetId($data)){
+                    \DB::rollBack();
+                    return message("处理功德奖励失败", false);
+                }
+
+                \DB::commit();
+                return message("获得功德值{$giveGd}", true, ['num'=> $giveGd]);
+            }
+
+        }
+
+        \DB::commit();
+
+        // 动态
+        $data = [
+            'type'=> $type+1,
+            'user_id'=> $userId,
+            'remark'=> $type == 1? "供奉{$goodsInfo->name}" : ($type == 3? "放生{$goodsInfo->name}" : '超度普渡众生'),
+            'update_time'=> time(),
+            'create_time'=> time(),
+            'status'=> 1
+        ];
+        DynamicNoticeModel::insertGetId($data);
+
+
+        return message("操作成功", true);
+    }
 }

+ 1 - 0
routes/api.php

@@ -158,5 +158,6 @@ Route::post('/enshrine/list', [\App\Http\Controllers\Api\v1\EnshrineController::
 Route::post('/enshrine/select', [\App\Http\Controllers\Api\v1\EnshrineController::class, 'select']);
 Route::post('/enshrine/packoff', [\App\Http\Controllers\Api\v1\EnshrineController::class, 'packoff']);
 Route::post('/enshrine/goods', [\App\Http\Controllers\Api\v1\EnshrineController::class, 'goods']);
+Route::post('/enshrine/buy', [\App\Http\Controllers\Api\v1\EnshrineController::class, 'buy']);
 Route::post('/enshrine/action', [\App\Http\Controllers\Api\v1\EnshrineController::class, 'actionRecord']);