Просмотр исходного кода

wesmiler 报恩寺项目提交

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

+ 14 - 0
app/Http/Controllers/Api/v1/DonatesController.php

@@ -55,4 +55,18 @@ class DonatesController extends BaseController
         $params['user_id'] = $this->userId;
         return $this->service->send($params);
     }
+
+    /**
+     * 发布
+     * @param Request $request
+     * @param DonateValidator $validate
+     * @return array
+     */
+    public function xingshan(Request $request, DonateValidator $validator){
+        $params = $validator->check($request->all(),'xingshan');
+        if(!is_array($params)){
+            return message($params, false);
+        }
+        return $this->service->xingshan($this->userId);
+    }
 }

+ 5 - 0
app/Http/Validator/DonateValidator.php

@@ -8,6 +8,8 @@ class DonateValidator extends BaseValidator
         'title' => 'required|string|min:1|max:20',
         'phone' => 'required|string|min:1|max:20',
         'stock' => 'required|min:1|max:10',
+        'type' => 'required|min:1|max:5',
+        'num' => 'required|min:1|max:4',
         'thumb' => 'required|string|min:2|max:250',
         'description' => 'required|string|min:2|max:500',
     ];
@@ -30,12 +32,15 @@ class DonateValidator extends BaseValidator
         'thumb' => '图片',
         'title' => '物品名称',
         'description' => '物品描述',
+        'num' => '行善券数量',
+        'type' => '行善项目',
     ];
 
     // 当前模型所有验证场景
     public static $scenes = [
         'info'=> ['id'],
         'send'=> ['title','phone','stock','description','thumb'],
+        'xingshan'=> ['type','num'],
     ];
 
     /**

+ 114 - 0
app/Services/DonateService.php

@@ -12,6 +12,10 @@
 namespace App\Services;
 
 use App\Models\DonateModel;
+use App\Models\DynamicNoticeModel;
+use App\Models\MecryModel;
+use App\Models\MemberModel;
+use App\Models\TradeModel;
 
 /**
  * 捐赠物品管理-服务类
@@ -186,4 +190,114 @@ class DonateService extends BaseService
         $data['update_time'] = time();
         return parent::edit($data); // TODO: Change the autogenerated stub
     }
+
+    public function xingshan($userId){
+        $type = request()->get('type', 1);
+        $num = request()->get('num', 1);
+        if(!in_array($type, [1,2,3])){
+            return message('项目类型参数错误', false);
+        }
+
+        if($num <=0 || $num >1000){
+            return message('行善券数量为1-1000', false);
+        }
+
+        $memberInfo = MemberModel::where(['id' => $userId, 'mark' => 1, 'status' => 1])
+            ->select(['id', 'nickname','merits_num','coupon'])
+            ->first();
+        if (!$memberInfo) {
+            return message('您的账号不可操作或已冻结,请联系客服', false);
+        }
+
+        if($memberInfo->coupon < $num){
+            return message("账户花灯券不足,请先充值", false, [], 10003);
+        }
+
+        $params = request()->all();
+        \DB::beginTransaction();
+        $data = [
+            'user_id'=> $userId,
+            'type'=> $type,
+            'description'=> isset($params['description'])? $params['description']:'',
+            'thumb'=> isset($params['thumb'])? $params['thumb']:'',
+            'coupon'=> $num,
+            'create_time'=> time(),
+            'status'=> 1,
+        ];
+
+        if(!MecryModel::insertgetId($data)){
+            return message('处理失败,请刷新后重试', false);
+        }
+
+        if (!MemberModel::where(['id' => $userId, 'mark' => 1])->decrement('coupon', $num)) {
+            \DB::rollBack();
+            return message("扣除花灯券账户失败", false);
+        }
+
+
+        $types = [1=>'日行一善,功德无量',2=>'功德三千,阿弥陀佛',3=>'打赏平台'];
+        $data = [
+            'user_id' => $userId,
+            'source_uid' => 0,
+            'type' => 1,
+            'coin_type' => 1,
+            'pay_type' => 1,
+            'money' => $num,
+            'change_type' => 2,
+            'balance' => $memberInfo->coupon,
+            'create_time' => time(),
+            'remark' => $types[$type],
+            'status' => 1,
+        ];
+        if (!TradeModel::insertGetId($data)) {
+            \DB::rollBack();
+            return message("处理账户明细失败", false);
+        }
+
+        // 功德奖励
+        $giveGd = ConfigService::make()->getConfigByCode('xingshan_give_gd');
+        $giveGd = $giveGd>0? $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' => $types[$type],
+                'status' => 1,
+            ];
+            if (!TradeModel::insertGetId($data)) {
+                \DB::rollBack();
+                return message("处理功德奖励失败", false);
+            }
+        }
+
+// 动态
+        $data = [
+            'type' => 5,
+            'user_id' => $userId,
+            'remark' => $types[$type],
+            'update_time' => time(),
+            'create_time' => time(),
+            'status' => 1
+        ];
+        DynamicNoticeModel::insertGetId($data);
+
+        \DB::commit();
+
+        // 完成修行项目
+        PracticesService::make()->saveLog($userId, 8, $types[$type]);
+
+        return message('行善成功', true);
+    }
 }

+ 4 - 2
app/Services/EnshrineService.php

@@ -624,8 +624,6 @@ class EnshrineService extends BaseService
 
         }
 
-        \DB::commit();
-
         // 动态
         $data = [
             'type' => $type + 1,
@@ -637,6 +635,10 @@ class EnshrineService extends BaseService
         ];
         DynamicNoticeModel::insertGetId($data);
 
+        \DB::commit();
+
+
+
         // 完成修行项目
         PracticesService::make()->saveLog($userId,$type, $type == 1 ? "供奉{$goodsInfo->name}" : ($type == 3 ? "放生{$goodsInfo->name}" : '超度普渡众生'),
             );

+ 1 - 0
routes/api.php

@@ -201,6 +201,7 @@ Route::post('/signs/submit', [\App\Http\Controllers\Api\v1\SignController::class
 // 捐赠行善
 Route::post('/donates/list', [\App\Http\Controllers\Api\v1\DonatesController::class, 'index']);
 Route::post('/donates/send', [\App\Http\Controllers\Api\v1\DonatesController::class, 'send']);
+Route::post('/donates/xingshan', [\App\Http\Controllers\Api\v1\DonatesController::class, 'xingshan']);