Browse Source

散客下单双十一

gorden 4 months ago
parent
commit
38a2e0546e

+ 25 - 0
app/admin/controller/content/SubjectController.php

@@ -0,0 +1,25 @@
+<?php
+
+namespace app\admin\controller\content;
+
+use app\controller\Curd;
+use app\model\Content;
+use support\Request;
+use support\Response;
+
+class SubjectController extends Curd
+{
+    public function __construct()
+    {
+        $this->model = new Content();
+    }
+
+    public function select(Request $request): Response
+    {
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $where['content_category'] = 'SUBJECT';
+        $this->model = $this->model->with('user');
+        $query = $this->doSelect($where, $field, $order);
+        return $this->doFormat($query, $format, $limit);
+    }
+}

+ 29 - 15
app/admin/controller/order/GoodsController.php

@@ -2,6 +2,7 @@
 
 namespace app\admin\controller\order;
 
+use app\admin\service\coupon\CouponDetailService;
 use app\admin\service\member\MemberService;
 use app\admin\service\order\OrderService;
 use app\admin\service\order\OrderSheetService;
@@ -235,7 +236,34 @@ class GoodsController extends Curd
         if (!empty($params['dept_premises_id'])) {
             $premises = SysDept::where('dept_name', $params['dept_premises_id'])->first();
         }
+        try {
+            // 下单账户
+            if (empty($params['join_order_member_id']) && !empty($params['mobile'])) {
+                if (Member::where('member_mobile', $params['mobile'])->exists()) {
+                    throw new BusinessException('会员已存在');
+                }
+                $params['join_order_member_id'] = $params['member_id'] = 'MR' . date('ymdHi') . random_string(4, 'up');
+                // 创建会员
+                MemberService::createMember($params);
+
+            } else if (empty($params['join_order_member_id']) && empty($params['mobile'])) {
+                $params['join_order_member_id'] = Member::where('member_mobile', '0000')->value('member_id');
+            }
+            if (empty($params['join_order_member_id'])) {
+                throw new BusinessException('检查下单账户');
+            }
+            // 带着优惠券,要发券
+            if (!empty($params['custom_member_id'])){
+                // 把券从000000加到真实账户
+                CouponDetailService::transCoupon('000000',$params['join_order_member_id']);
+            }
+        }catch (\Exception $e){
+            Db::rollBack();
+            Log::error('创建订单失败', ['msg' => $e->getMessage()]);
+            _syslog("订单", "创建订单失败");
+            return json_fail('创建订单失败');
 
+        }
         $params['goods_classify'] = $goodsClassifys[0];
         Db::beginTransaction();
         try {
@@ -296,20 +324,6 @@ class GoodsController extends Curd
                     throw new BusinessException('密码错误,请重新输入');
                 }
             }
-            // 下单账户
-            if (empty($params['join_order_member_id']) && !empty($params['mobile'])) {
-                if (Member::where('member_mobile', $params['mobile'])->exists()) {
-                    throw new BusinessException('会员已存在');
-                }
-                $params['join_order_member_id'] = $params['member_id'] = 'MR' . date('ymdHi') . random_string(4, 'up');
-                // 创建会员
-                MemberService::createMember($params);
-            } else if (empty($params['join_order_member_id']) && empty($params['mobile'])) {
-                $params['join_order_member_id'] = Member::where('member_mobile', '0000')->value('member_id');
-            }
-            if (empty($params['join_order_member_id'])) {
-                throw new BusinessException('检查下单账户');
-            }
 
             $qrcodePayAmount = 0;
             $params['orderId'] = 'OD' . date('ymdHi') . random_string(4, 'up');
@@ -1793,7 +1807,7 @@ class GoodsController extends Curd
             $params['order_extend_json']['referee'] = $params['referee'] ?? '';
             $orderAmount = [];
             foreach ($params['goodsContentList'] as $goods) {
-                $amountPay = floatval($goods['goods_sales_price']) * $goods['nbr'];
+                $amountPay = round((floatval($goods['goods_sales_price']) * $goods['nbr'] / $params['order_amount_total']) * $params['order_amount_pay'], 2);
                 $discountJson = [];
                 if (!empty($params['order_discount_json'])) {
                     $discountJson = json_decode($params['order_discount_json'], true);

+ 1 - 1
app/admin/controller/order/ServicesController.php

@@ -1931,7 +1931,7 @@ class ServicesController extends Curd
             $params['order_extend_json']['referee'] = $params['referee'] ?? '';
             $orderAmount = [];
             foreach ($params['goodsContentList'] as $goods) {
-                $amountPay = floatval($goods['goods_sales_price']) * $goods['nbr'];
+                $amountPay = round((floatval($goods['goods_sales_price']) * $goods['nbr'] / $params['order_amount_total']) * $params['order_amount_pay'], 2);
                 $discountJson = [];
                 if (!empty($params['order_discount_json'])) {
                     $discountJson = json_decode($params['order_discount_json'], true);

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

@@ -4989,10 +4989,10 @@ class WholeController extends Curd
             Db::beginTransaction();
             $payStatus = 'N';
             if (in_array('WXPAY', $payDetailType)) {
-                $result = Pay::wechat(config('payment.wxpay'))->find($groupId, 'pos');
-                $result = json_decode(json_encode($result), true);
-//                $result = '{"return_code":"SUCCESS","return_msg":"OK","result_code":"SUCCESS","mch_id":"1680393367","appid":"wxc6274da7198e3eb4","openid":"o3JAn6Ii_bAlxS-jbNEC4WnPhdwM","is_subscribe":"N","trade_type":"MICROPAY","trade_state":"SUCCESS","bank_type":"OTHERS","total_fee":"1000","fee_type":"CNY","cash_fee":"1000","cash_fee_type":"CNY","transaction_id":"4200067718202409250802875650","out_trade_no":"OD24092518408RV7","attach":[],"time_end":"20240925184009","trade_state_desc":"支付成功","nonce_str":"OeGOkjch4eaV5qIt","sign":"6DCB3BFC594EBC018A2BEE2C3DFEA4E3"}';
-//                $result = json_decode($result, true);
+//                $result = Pay::wechat(config('payment.wxpay'))->find($groupId, 'pos');
+//                $result = json_decode(json_encode($result), true);
+                $result = '{"return_code":"SUCCESS","return_msg":"OK","result_code":"SUCCESS","mch_id":"1680393367","appid":"wxc6274da7198e3eb4","openid":"o3JAn6Ii_bAlxS-jbNEC4WnPhdwM","is_subscribe":"N","trade_type":"MICROPAY","trade_state":"SUCCESS","bank_type":"OTHERS","total_fee":"1000","fee_type":"CNY","cash_fee":"1000","cash_fee_type":"CNY","transaction_id":"4200067718202409250802875650","out_trade_no":"OD24092518408RV7","attach":[],"time_end":"20240925184009","trade_state_desc":"支付成功","nonce_str":"OeGOkjch4eaV5qIt","sign":"6DCB3BFC594EBC018A2BEE2C3DFEA4E3"}';
+                $result = json_decode($result, true);
                 if (!empty($result['return_code']) && $result['return_code'] == 'SUCCESS' && !empty($result['result_code']) && $result['result_code'] == 'SUCCESS' && !empty($result['trade_state']) && $result['trade_state'] == 'SUCCESS') {
                     $payStatus = 'Y';
                     foreach ($orders as $order) {

+ 31 - 2
app/admin/service/coupon/CouponDetailService.php

@@ -365,12 +365,41 @@ class CouponDetailService
             Db::commit();
         } catch (BusinessException $e) {
             Db::rollBack();
-            Log::error('优惠券发放失败',['msg'=>$e->getMessage()]);
+            Log::error('优惠券发放失败', ['msg' => $e->getMessage()]);
             throw new BusinessException($e->getMessage());
         } catch (\Exception $e) {
             Db::rollBack();
-            Log::error('优惠券发放失败',['msg'=>$e->getMessage()]);
+            Log::error('优惠券发放失败', ['msg' => $e->getMessage()]);
             throw new BusinessException('优惠券发放失败');
         }
     }
+
+    /**
+     * @Desc 把指定账户的优惠券加到另一个账户
+     * @Author Gorden
+     * @Date 2024/11/7 16:33
+     *
+     * @param $originMemberId
+     * @param $memberId
+     * @return void
+     */
+    public static function transCoupon($originMemberId, $memberId)
+    {
+        $details = CouponDetail::where('join_coupon_detail_member_id', $originMemberId)
+            ->where('coupon_detail_status', 'ACTIVED')
+            ->get()
+            ->toArray();
+        foreach ($details as $detail) {
+            $detailModel = new CouponDetail();
+            $detailModel->coupon_detail_id = 'CUDT' . date('ymdHi').random_string(6,'up');
+            $detailModel->join_detail_coupon_id = $detail['join_detail_coupon_id'];
+            $detailModel->join_coupon_detail_member_id = $memberId;
+            $detailModel->coupon_detail_status = $detail['coupon_detail_status'];
+            $detailModel->coupon_detail_deadline_datetime = $detail['coupon_detail_deadline_datetime'];
+            $detailModel->coupon_detail_gain_datetime = date('Y-m-d H:i:s');
+            $detailModel->coupon_detail_extend_json = $detail['coupon_detail_extend_json'];
+            $detailModel->coupon_detail_addtimes = time();
+            $detailModel->save();
+        }
+    }
 }

+ 2 - 2
app/admin/service/order/OrderService.php

@@ -594,8 +594,8 @@ class OrderService
 //                    ->where('coupon_goods.join_coupon_goods_sku_id', $good['sku_id'])
                     ->where('join_goods_coupon_id', $couponId)
                     ->where('coupon_detail.join_coupon_detail_member_id', $memberId)
-                    ->where('coupon_detail.coupon_detail_gain_datetime', '<', date('Y-m-d H:i:s'))
-                    ->where('coupon_detail.coupon_detail_deadline_datetime', '>', date('Y-m-d H:i:s'));
+                    ->where('coupon_detail.coupon_detail_gain_datetime', '<=', date('Y-m-d H:i:s'))
+                    ->where('coupon_detail.coupon_detail_deadline_datetime', '>=', date('Y-m-d H:i:s'));
                 if ($settlementNow == 'Y' && $type == 'pay') {
                     $couponDetail = $couponDetail->whereIn('coupon_detail.coupon_detail_status', ['ACTIVED']);
                 } else {

+ 8 - 0
route/admin.php

@@ -40,6 +40,14 @@ Route::group('/admin', function () {
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);
+        Route::group('/subject', function () {
+            Route::get('/list', [\app\admin\controller\content\SubjectController::class, 'select']);
+            Route::post('/add', [\app\admin\controller\content\SubjectController::class, 'insert']);
+            Route::post('/update', [\app\admin\controller\content\SubjectController::class, 'update']);
+            Route::delete('/delete', [\app\admin\controller\content\SubjectController::class, 'delete']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
         Route::group('/activity', function () {
             Route::get('/list', [\app\admin\controller\content\ActivityController::class, 'select']);
             Route::post('/add', [\app\admin\controller\content\ActivityController::class, 'insert']);