Forráskód Böngészése

小程序增加支付方式

zqwang 1 éve
szülő
commit
0b1b227d78

+ 56 - 11
modules/Manage/Http/Controllers/MiniprogramController.php

@@ -2,6 +2,7 @@
 
 namespace Modules\Manage\Http\Controllers;
 
+use Catch\Exceptions\FailedException;
 use Illuminate\Routing\Controller;
 use Catch\Base\CatchController;
 use Illuminate\Http\Request;
@@ -23,7 +24,7 @@ class MiniprogramController extends CatchController
     use UserTrait;
     public function __construct(protected readonly Miniprogram $miniprogram,protected readonly UserHasMiniprograms $userHasMiniprograms)
     {
-        
+
     }
 
     const  COMPANY_ROLE = 'company';
@@ -45,13 +46,13 @@ class MiniprogramController extends CatchController
         $page_size = $request->input('limit', 15);
         $where = [];
         if($name){
-            $where[] = ['name','like','%'.$name.'%']; 
+            $where[] = ['name','like','%'.$name.'%'];
         }
         if($play_name){
-            $where[] = ['play_name','like','%'.$play_name.'%']; 
+            $where[] = ['play_name','like','%'.$play_name.'%'];
         }
         if($company){
-            $where[] = ['company','like','%'.$company.'%']; 
+            $where[] = ['company','like','%'.$company.'%'];
         }
 
         if($type){
@@ -67,10 +68,11 @@ class MiniprogramController extends CatchController
             ->select('miniprogram.*')
             ->paginate($page_size);
         }
-       
         foreach($result as $item){
             $item->type_name = MiniprogramType::from($item->type)->name();
             $item->status_name = $item->status == 1 ?'启用':'禁用';
+            $item->pay_merchant_name = getProp($item->pay_merchant_info,'name','-');
+            unset($item->pay_merchant_info);
         }
         return $result;
     }
@@ -85,6 +87,28 @@ class MiniprogramController extends CatchController
     {
         $validate_result = $request->validated();
         $validate_result['remark'] = $request->post('remark','') ?? '';
+        if (getProp($validate_result,'pay_merchant_id',0)){
+            $info = DB::table('pay_merchants')->where('id',$validate_result['pay_merchant_id'])->first();
+            if (empty($info)){
+                throw  new  FailedException("支付方式不存在");
+            }
+            if ($info->miniprogram_type != $validate_result['type']){
+                throw  new  FailedException("小程序类型和支付的小程序类型不匹配");
+            }
+            $validate_result['pay_merchant_info'] = [
+                'pay_merchant_id' => $info->id,
+                'name' => $info->name,
+                'pay_type' => $info->pay_type,
+                'payee_name' => $info->payee_name,
+                'miniprogram_type' => $info->miniprogram_type,
+                'pay_appid' => $info->pay_appid,
+            ];
+
+        }else{
+            $validate_result['pay_merchant_id'] = 0;
+            $validate_result['pay_merchant_info'] = [];
+        }
+
         return $this->miniprogram->create($validate_result)->toArray();
 
     }
@@ -113,6 +137,27 @@ class MiniprogramController extends CatchController
         if($request->post('remark','')){
             $validate_result['remark'] = $request->post('remark','');
         }
+        if (getProp($validate_result,'pay_merchant_id',0)){
+            $info = DB::table('pay_merchants')->where('id',$validate_result['pay_merchant_id'])->first();
+            if (empty($info)){
+                throw  new  FailedException("支付方式不存在");
+            }
+            if ($info->miniprogram_type != $validate_result['type']){
+                throw  new  FailedException("小程序类型和支付的小程序类型不匹配");
+            }
+            $validate_result['pay_merchant_info'] = [
+                'pay_merchant_id' => $info->id,
+                'name' => $info->name,
+                'pay_type' => $info->pay_type,
+                'payee_name' => $info->payee_name,
+                'miniprogram_type' => $info->miniprogram_type,
+                'pay_appid' => $info->pay_appid,
+            ];
+
+        }else{
+            $validate_result['pay_merchant_id'] = 0;
+            $validate_result['pay_merchant_info'] = [];
+        }
         $this->miniprogram->where('id',$id)->update($validate_result);
         return [];
     }
@@ -143,10 +188,10 @@ class MiniprogramController extends CatchController
 
     /**
      * 绑定小程序和投放公司的关系 或者投放公司把小程序分配给优化师
-     * @param [type] $miniprogram_id 
+     * @param [type] $miniprogram_id
      * @param Request $request  uid=2,3,4,5 actison=on|off on:分配,off取消分配
      * @return array
-     * 
+     *
      */
     public function allocationStore($miniprogram_id,Request $request)
     {
@@ -202,12 +247,12 @@ class MiniprogramController extends CatchController
      * response = [
      *      'on'=>[ ['id'=>1,'username'=>'公司1','user_has_miniprogram'=>1],[]  ],
      *      'off'=>[['id'=>1,'username'=>'公司1','user_has_miniprogram'=>0],[]],
-     *      'all'=>[ 
+     *      'all'=>[
      *          ['id'=>1,'username'=>'公司1','user_has_miniprogram'=>1],
-     *          ['id'=>2,'username'=>'公司1','user_has_miniprogram'=>0] 
+     *          ['id'=>2,'username'=>'公司1','user_has_miniprogram'=>0]
      *          ]
      *      ]
-     * 
+     *
      */
     public function getAllocationInfo($miniprogram_id){
         $uid = $this->getLoginUser()->id;
@@ -216,7 +261,7 @@ class MiniprogramController extends CatchController
         }else{
             $all_company_account = UserService::getOptimizers($uid,['users.username','users.id']);
         }
-       
+
         $result = $all_company_account->map(function ($item,$key) use($miniprogram_id) {
             $info = $this->userHasMiniprograms->where('uid',$item->id)->where('miniprogram_id',$miniprogram_id)->where('is_enabled',1)->count();
             if($info){

+ 5 - 3
modules/Manage/Http/Requests/MiniprogramUpdateRequest.php

@@ -33,11 +33,12 @@ class MiniprogramUpdateRequest extends FormRequest
             ],
             'appsecret'=>'required|min:30|max:64',
             'appid'=>'required|min:18|max:32',
-            'status'=>'in:0,1'
+            'status'=>'in:0,1',
+            'pay_merchant_id' => "Integer|gt:0"
         ];
     }
 
-    
+
     public function messages(): array
     {
         return [
@@ -45,7 +46,8 @@ class MiniprogramUpdateRequest extends FormRequest
             'appid.min'=>'appid太短',
             'appid.max'=>'appid过长',
             'appsecret.min'=>'appsecret太短',
-            'appsecret.max'=>'appsecret过长'
+            'appsecret.max'=>'appsecret过长',
+            "pay_merchant_id" => "支付配置不正确",
         ];
     }
 }

+ 2 - 2
modules/Manage/Models/Miniprogram.php

@@ -14,7 +14,7 @@ class Miniprogram extends BaseModel
     protected $table = 'miniprogram';
 
     protected $fillable = [
-        'id', 'name', 'company', 'type', 'appid', 'appsecret', 'status', 'remark', 'play_name','created_at', 'updated_at'
+        'id', 'name', 'company', 'type', 'appid', 'appsecret',"pay_merchant_id","pay_merchant_info", 'status', 'remark', 'play_name','created_at', 'updated_at'
     ];
-
+    protected $casts = ['pay_merchant_info' =>'array'];
 }