Apakah pelaksanaan kupon php
Cara melaksanakan kupon PHP: 1. Buat fail bahagian hadapan dan tentukan sama ada kupon itu wujud atau dinyahaktifkan 2. Buat fail contoh PHP 3. Melalui "public function doCoupon($params){ ...}" dan kaedah lain untuk mengendalikan situasi pengumpulan kupon.
Persekitaran pengendalian artikel ini: sistem windows7, versi PHP7.4, komputer DELL G3
Apakah kaedah pelaksanaan kupon php?
Menggunakan PHP untuk mencipta kod sampel untuk menerima aktiviti kupon
Keperluan perniagaan
Aktiviti kupon, khususnya Menurut anda keperluan sendiri. Berikut ialah keperluan perniagaan utama untuk aktiviti kupon yang dilaksanakan baru-baru ini: menetapkan templat kupon mengikut bahagian belakang, menetapkan jenis pengguna, masa mula dan tamat aktiviti kupon, dan akhirnya menjana pautan aktiviti kupon yang berbeza.
Persekitaran kod:
Kod sumber terutamanya laravel5.8. Terdapat banyak kod yang perlu disiarkan untuk keseluruhan aktiviti. Kod teras terutamanya disiarkan di bawah, untuk merujuk sahaja. Perkara utama ialah melaksanakan fungsi mengikut keperluan perniagaan anda sendiri.
Berikut ialah tangkapan skrin bahagian belakang, dijadikan modul
Tetapan dan sekatan yang perlu dibuat pada bahagian hadapan:
1 Tentukan sama ada kupon wujud atau dilumpuhkan
2 Tentukan masa mula acara dan masa mula kupon
Untuk kemudian menerima kupon acara, anda perlu menentukan situasi berikut:
1 Aktiviti telah tamat
2 Aktiviti adalah pada permulaan
3 Aktiviti ini adalah untuk pengguna baharu mengumpul, dan pengguna yang mengumpul adalah lama pengguna
4 Aktiviti ini adalah untuk pengguna lama mengumpul, dan pengguna yang mengumpul adalah pengguna baharu
5 Sama ada kupon telah dikutip
6 Telah menerima peringatan kupon
7 Berjaya diterima
Kod teras berikut dilaksanakan
/** * Function:优惠券领取处理 * Author:cyw0413 * @param $params * @return array * @throws \Exception */ public function doCoupon($params) { $activity_id = $params['activity_id']; if(!$params){ throw new \Exception("参数错误!"); } $preg_phone = '/^1[34578]\d{9}$/ims'; $is_mobile = preg_match ($preg_phone, $params['mobile']); if ($is_mobile == 0) { throw new \Exception("手机号码不正确!"); } //隐藏手机号码中间4位 $str_mobile = substr_replace($params['mobile'],'****',3,4); $activity = $this->find($activity_id); if(empty($activity)){ throw new \Exception("不存在此活动"); } $activity_link = $activity->activityLink->where('coupon_status',0); //只选择不停用的优惠券 if(count($activity_link) <= 0){ throw new \Exception("优惠券不存在或者已经停用"); }else{ //查找注册用户ID $showUser = $this->showUser($params['mobile']); //主要是过滤掉领取优惠券为0的,用laravel的同学注意看看 $detail = $activity_link->each(function($item,$index) use ($showUser) { $diffCouponQuantity = $this->diffCouponQuantity($item['config_id'],$item['quantity'],$item['activity_id'],$showUser); $item->title = $this->getCouponName($item['config_id'])['name']; $item->number = $item['quantity']; $item->msg = $diffCouponQuantity ['msg']; $item->diff = $diffCouponQuantity ['diff']; $item->code = $diffCouponQuantity ['code']; })->toArray(); if(count($detail) == 1){ foreach($detail as $val){ if($val['diff'] == 1 && $val['code'] == '400'){ throw new \Exception($detail[0]['msg']); } } } $collection_coupon = collect($detail); $collection_coupon = $collection_coupon->where('diff', '<=' ,'0'); //去除优惠券剩余数量为0,或者领取优惠券数量-剩余数量 > 0 } //判断活动开始时间与优惠券开始时间 $act_coupon = ActivityCouponBaseModel::where('activity_id',$activity['activity_id'])->first(); $check_time = $this-> checkCouponTime($act_coupon['start_time'],$activity_link); if($check_time == 'error'){ throw new \Exception("优惠券领取时间未开始,暂不可领取"); } //领取活动有以下几种情况 //1: 活动已结束 if($activity['end_time'] < date("Y-m-d H:i:s") || $activity['status'] == 1){ $result = [ 'code' => 1, ]; return $result; } //6 活动为开始时 if($activity['start_time'] > date("Y-m-d H:i:s") || $activity['status'] == 1){ $result = [ 'code' => 6, ]; return $result; } $checkUser = $this->haveUser($params['mobile']); //检查是新用户,还是老用户 根据自己的业务需求做,这个方法就不贴了 //2: 活动为新用户领取,而领取的用户是老用户 if($activity['user_type'] == 1 && !empty($checkUser)){ $result = [ 'code' => 2, ]; return $result; } //3:活动为老用户领取,而领取的用户是新用户 if($activity['user_type']==2 && empty($checkUser)){ $result = [ 'code' => 3, ]; return $result; } //4:优惠券是否领取完 $coupon = $this->getCouponExpire($collection_coupon,$params['mobile']); //这里提示有一个优惠券列表,根据自己的业务需求做,这个方法就不贴了 //return $coupon; if($coupon == 1){ $result = [ 'code' => 4, ]; return $result; } //5:已领取过优惠券提示 $userCoupon = ''; $userRate = ''; if(!empty($checkUser)){ //user存在则为老用户,再检查是否领取过 $userCoupon = $this->getUserCoupon($collection_coupon,$checkUser['user_id']); $userRate = $this->getUserCouponRate($checkUser['user_id'],$activity['activity_id']); }else{ //新用户,检查是否注册过 $var_user = UserBaseModel::where('user_name',$params['mobile'])->first(); if(!empty($var_user)){ $userCoupon = $this->getUserCoupon($collection_coupon,$var_user['user_id']); $userRate = $this->getUserCouponRate($var_user['user_id'],$activity['activity_id']); } } //return $userRate; if($userCoupon == 1){ $result = [ 'code' => 5, 'phone'=> $str_mobile, 'coupon' => $userRate, 'is_get' => false, ]; return $result; } //5:领取成功 //如果活动规定是新老用户0,新用户1,老用户2 $getCouponSuccess = $this->getCouponSuccess($activity['user_type'],$checkUser,$collection_coupon,$params['mobile']); //return $getCouponSuccess; if($getCouponSuccess['status'] == 200){ $result = [ 'code' => 5, 'phone'=> $str_mobile, 'coupon' => $getCouponSuccess['result'][0], 'is_get' => true, ]; return $result; } }
Kupon koleksi pengguna dan kupon keluaran
/** * Function:用户领取活动 * Author:cyw0413 * @param $user_type */ public function getCouponSuccess($user_type,$user,$coupon,$mobile) { if(count($coupon) > 0){ switch ($user_type){ case 1: //新用户领取,如果从来没注册过就要新增用户 $res = $this->addUser($mobile,$coupon); return [ 'result' => $res, 'status' => 200 ]; break; case 2: //老用户领取 $res = $this->insertUserCoupon($user,$coupon); return [ 'result' => $res, 'status' => 200 ]; break; default: //新老用户领取,判断是新用户还是老用户,这里的$user是有无配送单,有则为老用户; if(empty($user)){ $res = $this->addUser($mobile,$coupon); }else{ $res = $this->insertUserCoupon($user,$coupon); //老用户,直接发放优惠券 } return [ 'result' => $res, 'status' => 200 ]; break; } }else{ throw new \Exception("优惠券不存在或者已经停用"); } }
Terima dengan jayanya dan keluarkan kupon
/** * Function:发放优惠券 * Author:cyw0413 * @param $user * @param $coupon */ public function insertUserCoupon($user,$coupon) { $relate = []; foreach($coupon as $item){ $res = CouponConfigSendBaseModel::where([ 'config_id'=>$item['config_id'], 'status' => 0, ])->first(); if(empty($res) || (!empty($res) && $res['is_send'] == 0) ){ throw new \Exception("优惠券未发放,暂不可领取"); } //发放优惠券,有多少张就添加多少张,这里扣除优惠券时,主要用不同的coupon_sn来区别 $onlyCoupon = $this->getCouponName($item['config_id']); if ($onlyCoupon['expire_type'] == 0) { $start_time = $onlyCoupon['expire_start_time']; $end_time = $onlyCoupon['expire_end_time']; } else { $start_time = date('Y-m-d H:i:s'); $end_time = date('Y-m-d H:i:s', time()+86400*$onlyCoupon['expire_type']); } $result = [ 'user_id' => $user['user_id'], 'config_id' => $item['config_id'], 'name' => $onlyCoupon['name'], 'get_type' => $onlyCoupon['get_type'], 'amount' => $onlyCoupon['amount'], 'require_price' => $onlyCoupon['require_price'], 'status' => 1, 'start_time' => $start_time, 'end_time' => $end_time, ]; for($i=0; $i < $item['quantity'];$i++){ $result['coupon_sn'] = 'B'.mt_rand(1, 10000) . strtoupper(uniqid(mt_rand(1, 10000))); $userCoupon = UserCouponBaseModel::create($result); } //扣除相应的优惠券数量,这里用到了锁表,防止并发时,优惠券为-1 $couponConfig = CouponConfigBaseModel::where('config_id',$item['config_id'])->lockForUpdate()->first(); if($couponConfig->left_quantity > 0 ){ if($couponConfig->left_quantity >= $item['quantity']){ $couponConfig->left_quantity = $couponConfig->left_quantity-$item['quantity']; $couponConfig->save(); }else{ throw new \Exception("优惠券剩余数量不够扣减"); } } $relate = [ 'coupon_id' => $userCoupon->coupon_id, 'user_id' => $user['user_id'], 'config_id' => $item['config_id'], 'activity_id' => $item['activity_id'] ]; ActivityCouponUserRelateBaseModel::create($relate); $relate[] = $this->getUserCouponRate($user['user_id'],$item['activity_id']); } return $relate; }
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Apakah pelaksanaan kupon php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.
