Ver código fonte

Merge branch 'group_0313'

dongxiaoqin 1 ano atrás
pai
commit
cef7c08f77

+ 13 - 0
app/adminapi/controller/group_activity/GroupUserOrderController.php

@@ -18,6 +18,7 @@ namespace app\adminapi\controller\group_activity;
 
 use app\adminapi\controller\BaseAdminController;
 use app\adminapi\lists\group_activity\GroupUserOrderLists;
+use app\adminapi\logic\group_activity\GroupUserOrderLogic;
 
 
 /**
@@ -39,5 +40,17 @@ class GroupUserOrderController extends BaseAdminController
     {
         return $this->dataLists(new GroupUserOrderLists());
     }
+    /**
+     * @notes 用户订单退款
+     */
+    public function refundOrder() 
+    {
+        $params = $this->request->request('id');
+        $result = GroupUserOrderLogic::refundOrder($params);
+        if (true === $result) {
+            return $this->success('退款成功', [], 1, 1);
+        }
+        return $this->fail(GroupUserOrderLogic::getError());
+    }
 
 }

+ 1 - 0
app/adminapi/lists/group_activity/GroupActivityLists.php

@@ -75,6 +75,7 @@ class GroupActivityLists extends BaseAdminDataLists implements ListsSearchInterf
             $item['participant_num'] = $item['participant_num'] ? explode(',', $item['participant_num']) : [];
             $item['simulate_num'] = $item['simulate_num'] ? explode(',', $item['simulate_num']) : [];
             $item['area'] = $item['area'] ? explode(',', $item['area']) : [];
+            $item['end_time'] = date('Y-m-d H:i:s', $item['end_time']);
         }
         return $list;
     }

+ 1 - 1
app/adminapi/logic/group_activity/GroupActivityCategoryLogic.php

@@ -120,7 +120,7 @@ class GroupActivityCategoryLogic extends BaseLogic
     public static function getQRCode($params,$url)
     {
         try {
-            $mnp_page = 'pages/web_view/group_catogory';
+            $mnp_page = 'pages/web_view/group';
             
             $scene_page = 'group';
             Log::info('getQRCode:'.rawurlencode($scene_page));

+ 0 - 2
app/adminapi/logic/group_activity/GroupOrderLogic.php

@@ -15,11 +15,9 @@
 namespace app\adminapi\logic\group_activity;
 
 
-use think\facade\Log;
 use think\facade\Queue;
 use app\common\logic\BaseLogic;
 use app\common\model\user\User;
-use app\common\model\equity\UserEquity;
 use app\common\model\equity\EquityConfig;
 use app\common\model\group_activity\GroupOrder;
 use app\common\model\group_activity\GroupActivity;

+ 106 - 0
app/adminapi/logic/group_activity/GroupUserOrderLogic.php

@@ -0,0 +1,106 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\adminapi\logic\group_activity;
+
+
+use think\Exception;
+use think\facade\Db;
+use think\facade\Log;
+use app\common\enum\RefundEnum;
+use app\common\logic\BaseLogic;
+use app\common\logic\RefundLogic;
+use app\common\model\equity\UserEquity;
+use app\common\model\refund\RefundRecord;
+use app\common\model\equity\UserEquityLog;
+use app\common\model\group_activity\GroupUserOrder;
+
+/**
+ * 拼团用户订单
+ * Class GroupOrderLogic
+ * @package app\adminapi\logic\group_activity
+ */
+class GroupUserOrderLogic extends BaseLogic
+{
+    /**
+     * 订单退款
+     * @param $params
+     * @return false|void
+     */
+    public static function refundOrder($params)
+    {
+        Db::startTrans();
+        try {
+            $order =  GroupUserOrder::where([
+                    'id'=>$params['id']
+                ])->field('id,sn,status,order_amount,pay_status,pay_way,user_equity_id,user_id,order_terminal')->findOrEmpty()->toArray();
+            if(empty($order)){
+                self::setError('订单不存在');
+                return false;
+            }
+            if($order['status'] != 1 || $order['pay_status'] != 1){
+                self::setError('当前订单不支持退款');
+                return false;
+            }
+            if ($order['user_equity_id']) {
+                //判断权益卡是否已使用
+                $used = UserEquityLog::where(['user_equity_id' => $order['user_equity_id'],'user_id' => $params['user_id']])->count();
+                if ($used) {
+                    self::setError('当前权益卡已使用,不支持退款');
+                    return false;
+                }
+                //删除用户权益卡
+                $userEquity = UserEquity::where(['id' => $order['user_equity_id'],'user_id' => $params['user_id']])->findOrEmpty();
+                $userEquity->delete();
+            }
+
+            //将用户订单状态更新为申请退款
+            GroupUserOrder::where('id',$order['id'])->update(['status' => 3,'refund_status' => 1]);
+
+            // 生成退款记录
+            $recordSn = generate_sn(RefundRecord::class, 'sn');
+            $record = RefundRecord::create([
+                'sn' => $recordSn,
+                'user_id' => $order['user_id'],
+                'order_id' => $order['id'],
+                'order_sn' => $order['sn'],
+                'order_type' => RefundEnum::ORDER_TYPE_GROUP,
+                'order_amount' => $order['order_amount'],
+                'refund_amount' => $order['order_amount'],
+                'refund_type' => RefundEnum::TYPE_ADMIN,
+                'transaction_id' => $order['transaction_id'] ?? '',
+                'refund_way' => RefundEnum::getRefundWayByPayWay($order['pay_way']),
+            ]);
+
+            // 退款
+            $result = RefundLogic::refund($order, $record['id'], $order['order_amount'], 1);
+            
+            if ($result !== true) {
+                $resultMsg = RefundLogic::getError();
+                Log::write("拼团订单退款失败,订单号:{$order['sn']},原因:{$resultMsg}");
+                self::setError($resultMsg);
+                return false;
+            }
+
+            Db::commit();
+            return true;
+        }
+        catch (\Exception $e) {
+            Db::rollback();
+            self::setError($e->getMessage());
+            Log::write("拼团订单退款失败:".$e->getMessage());
+            return false;
+        }
+    }
+}

+ 3 - 2
app/api/controller/GroupActivityController.php

@@ -24,7 +24,8 @@ class GroupActivityController extends BaseApiController
     public function categoryList()
     {
         $id = (int)$this->request->param('id');
-        $result = GroupActivityLogic::categoryList($id);
+        $block_key = (int)$this->request->param('block_key');
+        $result = GroupActivityLogic::categoryList($id,$block_key);
         return $this->data($result);
     }
 
@@ -43,7 +44,7 @@ class GroupActivityController extends BaseApiController
      */
     public function orderDetail(){
         $order_id = (int)$this->request->param('order_id');
-        $result = GroupActivityLogic::orderDetail($order_id,$this->request->domain());
+        $result = GroupActivityLogic::orderDetail($order_id,$this->userId,$this->request->domain());
         return $this->data($result);
     }
 

+ 19 - 5
app/api/logic/GroupActivityLogic.php

@@ -30,11 +30,20 @@ class GroupActivityLogic extends BaseLogic
     /**
      * 活动分类数据
      */
-    public static function categoryList($id){
+    public static function categoryList($id,$block_key = ''){
+        
         $detail = GroupActivityCategory::where('id',$id)->where('status',1)->field('id,title,images,block_data')->findOrEmpty()->toArray();
         if($detail) {
-            $detail['images'] = $detail['images'] ? explode(",",$detail['images']) : [];
             $detail['block_data'] = $detail['block_data'] ? json_decode($detail['block_data'],true) : [];
+            if ($block_key) {
+                foreach($detail['block_data'] as $item) {
+                    if ($block_key == $item['block_key']) {
+                        return $item;
+                    }
+                }
+            } else {
+                $detail['images'] = $detail['images']? explode(",",$detail['images']) : [];
+            }
         }
         return $detail;
     }
@@ -65,7 +74,7 @@ class GroupActivityLogic extends BaseLogic
     /**
      * @notes 拼团订单详情
      */
-    public static function orderDetail($order_id,$url){
+    public static function orderDetail($order_id,$user_id,$url){
         
         $detail = GroupOrder::where(['id'=>$order_id])->findOrEmpty()->toArray();
         if(!empty($detail)){
@@ -73,7 +82,8 @@ class GroupActivityLogic extends BaseLogic
                 'id','title','image','start_time','end_time','type','equity_id',
                 'participant_num','origin_price','price','form_time_limit','area'
             ])->findOrEmpty()->toArray();
-            
+            $detail['is_paid'] = 0;
+            $detail['order_id'] = 0;
             $detail['activity']['area'] = explode(",",$detail['activity']['area']);
 
             $detail['users'] = GroupUserOrder::alias('a')
@@ -87,6 +97,10 @@ class GroupActivityLogic extends BaseLogic
                 if (strpos($item['avatar'], 'http') === false && !empty($item['avatar'])) {
                     $item['avatar'] = config('custom.cdn_url').$item['avatar'];
                 }
+                if ($item['user_id'] == $user_id) {
+                    $detail['is_paid'] = 1;
+                    $detail['order_id'] = $item['id'];
+                }
             }
             //如果开启了模拟成团,成团后,自动填补剩余人数
             if ($detail['status'] == 1 && $detail['num'] < $detail['activity']['participant_num']) {
@@ -382,7 +396,7 @@ class GroupActivityLogic extends BaseLogic
     public static function getQRCode($params,$url)
     {
         try {
-            $mnp_page = 'pages/group/orderSure';
+            $mnp_page = 'pages/group/team';
             
             $scene_page = 'group';
             $response = (new WeChatMnpService())->getUnlimitedQRCode(