Browse Source

微信支付调整

gorden 8 months ago
parent
commit
66fa18a5be

+ 131 - 1
app/admin/controller/member/QuotaController.php

@@ -19,6 +19,7 @@ use support\exception\BusinessException;
 use support\Request;
 use support\Response;
 use support\view\Raw;
+use Tinywan\Jwt\JwtToken;
 
 class QuotaController extends Curd
 {
@@ -323,8 +324,110 @@ class QuotaController extends Curd
         }
     }
 
-    public static function doWriteOff($params){
+    /**
+     * @Desc 额度核销-批量
+     * @Author Gorden
+     * @Date 2024/6/4 8:32
+     *
+     * @param Request $request
+     * @return Response
+     */
+    public function writeOffBatch(Request $request)
+    {
+        $params = $request->post();
+        $memberId = $params['member_id'] ?? '';
+        $times = $params['times'] ?? '';
+        $code = $params['sms_code'] ?? '';
+
+        if (!$memberId || !$code) {
+            return json_fail("参数异常");
+        }
+
+        // 验证码核验
+        $member = Member::find($memberId);
+        $mobile = $member->member_mobile;
+        $key = "SMS:CODE:WRITE_OFF:" . $mobile;
+        $redisCode = Redis::get($key);
+        if ($redisCode != $code) {
+            return json_fail("验证码错误,请重新输入");
+        }
+        
+        if (!$times) {
+            $params['times'] = date('Y-m-d H:i:s');
+        } else {
+            $params['times'] = date('Y-m-d H:i:s', strtotime($times));
+        }
+
+        Db::beginTransaction();
+        try {
+            foreach($params['quotaList'] as $quota){
+                if (!isset($quota['nbr']) || intval($quota['nbr']) == 0){
+                    continue;
+                }
+                $nbr = intval($quota['nbr']);
+                
+                $quotas = MemberQuota::where('join_quota_member_id', $memberId)
+                ->where('join_member_rule_added_component_id', $quota['rule_added_component_id'])
+                ->where('member_quota_status', 'PENDING')
+                ->limit($nbr)
+                ->get()
+                ->toArray();
+                
+                if ($quotas[0]['member_quota_nbr'] != '-99.00' && count($quotas) < intval($nbr)) {
+                    return json_fail("可核销数量不足");
+                }
+                // 生成核销数据
+                $param = [
+                    'component_id'=>$quota['rule_added_component_id'],
+                    'member_id'=>$memberId,
+                    'write_off_member_id'=>$params['write_off_member_id'],
+                    'dept_premises_id'=>$params['dept_premises_id'] ?? '',
+                    'times'=>$params['times'],
+                    'remark'=>$params['remark'] ?? ''
+                ];
+                $writeOffData = AddedService::generateWriteOffData($param);
+                if($quotas[0]['member_quota_nbr'] != '-99.00'){
+                    foreach ($quotas as $quota) {
+                        $writeOffData['member_quota_id'] = $quota['member_quota_id'];
         
+                        MemberQuota::where('member_quota_id', $quota['member_quota_id'])->update([
+                            'member_quota_status' => 'USED',
+                            'member_quota_used_json' => json_encode($writeOffData)
+                        ]);
+                    }
+                }else{
+                    $quota = $quotas[0];
+                    for($i=0;$i<$nbr;$i++){
+                        $quota['member_quota_id'] = 'MQ'.date('YmdHis').random_string(6,'up');
+                        $quota['member_quota_status'] = 'USED';
+                        $quota['member_quota_used_json'] = json_encode($writeOffData);
+                        $quota['member_quota_addtimes'] = strtotime($quota['member_quota_addtimes']);
+                        $quota['member_quota_nbr'] = 1;
+                        MemberQuota::insert($quota);
+                    }
+                }   
+            }
+
+            _syslog("核销","核销成功");
+
+            //  清除验证码
+            // Redis::del($key);
+
+            Db::commit();
+
+            return json_success("核销成功");
+        } catch (\Exception $e) {
+            Db::rollBack();
+
+            dump($e->getMessage());
+            _syslog("核销","核销失败");
+
+            return json_fail("核销失败");
+        }
+    }
+
+    public static function doWriteOff($params)
+    {    
         $quotas = MemberQuota::where('join_quota_member_id', $params['member_id'])
             ->where('join_member_rule_added_component_id', $params['component_id'])
             ->where('member_quota_status', 'PENDING')
@@ -364,4 +467,31 @@ class QuotaController extends Curd
 
     }
 
+    /**
+     * 会员账户,批量核销选择的权益
+     */
+    public function chooseList(Request $request)
+    {
+        $memberId = $request->get('member_id', '');
+        $componentIds = $request->get('component_ids', []);
+
+        if(empty($componentIds) || !$memberId){
+            return json_fail("参数异常");
+        }
+
+        $components = RuleAddedComponent::whereIn('rule_added_component_id',$componentIds)
+            ->select('rule_added_component_name','rule_added_component_id')
+            ->get();
+        foreach ($components as &$component){
+            $component->unused = MemberQuota::where('join_quota_member_id',$memberId)
+                ->where('join_member_rule_added_component_id',$component->rule_added_component_id)
+                ->where('member_quota_status','PENDING')
+                ->count();
+        }
+
+        $member = Member::where('member_id',$memberId)->select('member_id','member_mobile')->first();
+
+        return json_success('',['member'=>$member,'quotas'=>$components]);
+    }
+
 }

+ 8 - 8
app/admin/controller/order/WholeController.php

@@ -1129,14 +1129,14 @@ class WholeController extends Curd
             return json_fail("请填写有效的核销数量");
         }
 
-        // $member = Member::find($memberId);
-        // $mobile = $member->member_mobile;
-        // $key = "SMS:CODE:QUOTA:" . $mobile;
-        // $redisCode = Redis::get($key);
-        // if ($redisCode != $code) {
-        //     return json_fail("验证码错误,请重新输入");
-        // }
-        // Redis::del($key);
+        $member = Member::find($memberId);
+        $mobile = $member->member_mobile;
+        $key = "SMS:CODE:WRITE_OFF:" . $mobile;
+        $redisCode = Redis::get($key);
+        if ($redisCode != $code) {
+            return json_fail("验证码错误,请重新输入");
+        }
+        Redis::del($key);
 
         $benefits = MemberBenefit::whereIn('member_benefit_id', $benefitIds)
             ->where('join_benefit_member_id', $memberId)

+ 2 - 2
app/api/controller/pay/WxpayController.php

@@ -47,14 +47,14 @@ class WxpayController
                 }
                 $payData['openid'] = $params['openid'];
                 $config = config('payment.wxpay');
-                $wxpay = Pay::wechat($config)->mp($payData)->getContent();
+                $wxpay = Pay::wechat($config)->mp($payData);
             }elseif ($params['platform'] == 'mp-weixin'){   // 小程序
                 if (empty($params['openid'])){
                     Db::rollBack();
                     return json_fail("缺少OpenID 参数");
                 }
                 $payData['openid'] = $params['openid'];
-                $wxpay = Pay::wechat(config('payment.wxpay'))->miniapp($payData)->getContent();
+                $wxpay = Pay::wechat(config('payment.wxpay'))->miniapp($payData);
             }else{
                 throw new PayException("平台参数无效");
             }

+ 3 - 0
route/admin.php

@@ -722,6 +722,9 @@ Route::group('/admin', function () {
             Route::post('/update', [\app\admin\controller\member\QuotaController::class, 'update']);
             Route::post('/writeOff', [\app\admin\controller\member\QuotaController::class, 'writeOff']);
             Route::delete('/delete', [\app\admin\controller\member\QuotaController::class, 'delete']);
+            Route::get('/chooseList', [\app\admin\controller\member\QuotaController::class, 'chooseList']);
+
+            Route::post('/writeOffBatch', [\app\admin\controller\member\QuotaController::class, 'writeOffBatch']);
         });
     });
     /* 营销管理 */