Ver Fonte

完善功能

gorden há 10 meses atrás
pai
commit
bfa50a3b75

+ 13 - 0
app/admin/controller/member/MemberController.php

@@ -96,7 +96,10 @@ class MemberController
 
     public function selectMemberAllQuota(Request $request){
         $memberId = $request->get('member_id','');
+        $orderId = $request->get('order_id','');
         $person = $request->get('person','');
+        $selectType = $request->get('select_type','ALL');
+
         if(!$memberId){
             return json_fail('参数异常');
         }
@@ -105,6 +108,9 @@ class MemberController
         $benefit = MemberBenefit::where('join_benefit_member_id',$memberId)
             // ->whereColumn('member_benefit_limit_count','>','member_benefit_used_count')
             ->select('member_benefit_id as id','member_benefit_name as name','member_benefit_limit_count as total','member_benefit_used_count as used')
+            ->when($orderId != '',function($query) use ($orderId){
+                $query->where('join_benefit_order_id',$orderId);
+            })
             ->get()
             ->toArray();
 
@@ -116,6 +122,9 @@ class MemberController
             $item['cut'] = $item['total'] - $item['used'];
             $data[] = $item;
         }
+        if ($selectType == 'BENEFIT'){
+            return json_success('',$data);
+        }
         
         $quotas = MemberQuota::where('join_quota_member_id',$memberId)
             ->selectRaw('join_quota_member_id,join_member_rule_added_component_id,COUNT(*) as total')
@@ -144,6 +153,10 @@ class MemberController
             $memberQuota['cut'] = $memberQuota['total'] - $memberQuota['used'];
             $data[] = $memberQuota;
         }
+
+        if($selectType == 'QUOTA'){
+            return json_success('',$data);
+        }
     
         return json_success('',$data);
     }

+ 105 - 2
app/admin/controller/order/WholeController.php

@@ -13,6 +13,7 @@ use app\model\Coupon;
 use app\model\Device;
 use app\model\Goods;
 use app\model\GoodsComponent;
+use app\model\Member;
 use app\model\MemberAccount;
 use app\model\MemberBenefit;
 use app\model\Order;
@@ -243,6 +244,19 @@ class WholeController extends Curd
             $params['orderGroupId'] = 'OD' . date('YmdHis') . random_string(6, 'up');
             $params['benefitId'] = 'BF' . date('YmdHis') . random_string(6, 'up');
 
+            // 配送方式
+            if($params['delivery'] == 'PICKUP'){ // 自提
+                $params['order_express_json'] = json_encode([
+                    'express'=>'S',
+                    'premises'=>$params['dept_premises_id']
+                ]);
+            }else if($params['delivery'] == 'LOGISTICS'){
+                $params['order_express_json'] = json_encode([
+                    'express'=>'Y',
+                ]);
+                $this->saveExpress($params);
+            }
+
             // 写入主订单
             $this->insertMain($params);
             // 订单详情
@@ -250,6 +264,7 @@ class WholeController extends Curd
             // 支付记录
             $this->insertPayDetail($params);
 
+
             // 买的单个服务
             if ($goods['goods_classify'] == 'SERVICE') {
                 // 预约表
@@ -490,12 +505,12 @@ class WholeController extends Curd
                 ->get();
             // 入配送记录表
             $params = $request->post();
-            $model = new OrderExpress();
+            $model = OrderExpress::where('join_express_order_id',$params['order_id'])->first();
             $model->join_express_order_id = $params['order_id'];
             $model->order_express_goods = $sheet;
             $model->order_express_type = $params['order_express_type'];
             $model->order_express_code = $params['order_express_code'];
-            $model->order_express_city = implode("-", $params['order_express_city']);
+            $model->order_express_city = implode(",", $params['order_express_city']);
             $model->order_express_address = $params['order_express_address'];
             $model->order_express_mobile = $params['order_express_mobile'];
             $model->order_express_telephone = $params['order_express_telephone'] ?? null;
@@ -519,6 +534,77 @@ class WholeController extends Curd
         }
     }
 
+    public function writeOff(Request $request){
+        $memberId = $request->post('member_id', '');
+        $benefitId = $request->post('benefit_id', '');
+        $nbr = $request->post('nbr');
+        $times = $request->post('times', '');
+        $code = $request->post('sms_code', '');
+
+        if (!$memberId || !$benefitId) {
+            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);
+
+        $benefit = MemberBenefit::where('member_benefit_id', $benefitId)
+            ->where('join_benefit_member_id', $memberId)
+            ->first();
+        if ($benefit->member_benefit_limit_count - $benefit->member_benefit_used_count < $nbr) {
+            return json_fail('可核销数量不足');
+        }
+
+        if (!$times) {
+            $times = date('Y-m-d H:i:s');
+        } else {
+            $times = date('Y-m-d H:i:s', strtotime($times));
+        }
+
+        try {
+            Db::beginTransaction();
+            // 减额度
+            $benefit->member_benefit_used_count = $benefit->member_benefit_used_count + $nbr;
+            $benefit->save();
+            // 记录核销
+            $params = [
+                'dept_premises_id' => $request->post('dept_premises_id'),
+                'order_remark'=>$request->post('remark'),
+                'write_off_member_id' => $request->post('write_off_member_id'),
+                'join_order_member_id' => $memberId
+            ];
+            $writeOffData = OrderService::generateWriteOffData($params);
+
+            $appointments = Appointment::where('join_appointment_member_benefit_id', $benefitId)
+                ->where('appointment_status', 'INIT')
+                ->limit($nbr)
+                ->get();
+            foreach ($appointments as $appointment) {
+                Appointment::where('appointment_id', $appointment->appointment_id)->update([
+                    'appointment_status' => 'DONE',
+                    'appointment_datetime' => $times,
+                    'appointment_apply_datetime' => $times,
+                    'appointment_doing_datetime' => $times,
+                    'appointment_done_datetime' => $times,
+                    'appointment_done_json' => json_encode($writeOffData)
+                ]);
+            }
+
+            Db::commit();
+
+            return json_success('核销成功');
+        } catch (\Exception $e) {
+            dump($e->getMessage());
+            Db::rollBack();
+            return json_fail('核销失败');
+        }
+    }
+
     public function myOrder(Request $request)
     {
         $memberId = $request->get('member_id', '');
@@ -575,6 +661,23 @@ class WholeController extends Curd
         return json_success('', ['order' => $sheet, 'appointment' => $appointments]);
     }
 
+    public function saveExpress($params){
+        try{
+            $express = new OrderExpress();
+            $express->join_express_order_id = $params['orderId'];
+            $express->order_express_goods = json_encode(['sheet'=>'']);
+            $express->order_express_city = $params['order_express_city'];
+            $express->order_express_address = $params['order_express_address'];
+            $express->order_express_mobile = $params['order_express_mobile'];
+            $express->order_express_person = $params['order_express_person'];
+            $express->order_express_addtimes = time();
+            $express->save();
+        }catch(\Exception $e){
+            dump($e->getMessage());
+            throw new BusinessException('物流信息保存失败');
+        }
+    }
+
     // TODO 确认收货(完成订单)
     public function confirm($id)
     {

+ 4 - 0
app/admin/service/goods/GoodsService.php

@@ -408,6 +408,7 @@ class GoodsService
     public static function selectList(Request $request, $goodsClassify = "SERVICE")
     {
         $keywords = $request->get('keywords', '');
+        $isSupportAppointment = $request->get('is_support_appointment', ''); 
 //        if (!$keywords){
 //            return json_success('暂无数据');
 //        }
@@ -422,6 +423,9 @@ class GoodsService
             ->when($goodsClassify != '', function ($query) use ($goodsClassify) {
                 $query->where('goods_classify', $goodsClassify);
             })
+            ->when($isSupportAppointment != '', function ($query) use ($isSupportAppointment) {
+                $query->where('is_support_appointment', $isSupportAppointment);
+            })
             ->select('goods_id', 'goods_name', 'goods_sales_price', 'join_goods_category_id', 'goods_attribute_json')
             ->get()
             ->toArray();