成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 用PHP做了一個領(lǐng)取優(yōu)惠券活動的示例代碼

用PHP做了一個領(lǐng)取優(yōu)惠券活動的示例代碼

熱門標(biāo)簽:百度地圖標(biāo)注偏差 400電話蘭州申請請 百度地圖怎樣標(biāo)注圖標(biāo) 外呼系統(tǒng)能給企業(yè)帶來哪些好處 余姚電話機器人 電銷機器人問門薩維品牌my 咸寧銷售電銷機器人系統(tǒng) 廣東廣州在怎么申請400電話 開發(fā)地圖標(biāo)注類網(wǎng)站

業(yè)務(wù)需求

優(yōu)惠券活動,具體還是要根據(jù)自己的需求。以下是最近實現(xiàn)的優(yōu)惠券活動,主要的業(yè)務(wù)需求:根據(jù)后端設(shè)置優(yōu)惠券模板,用戶類型設(shè)置,優(yōu)惠券活動的開始與結(jié)束時間,最后生成不同的優(yōu)惠券活動鏈接。

代碼環(huán)境

源碼主要laravel5.8,一整個活動要貼的代碼很多,下面主要貼核心代碼,僅供參考。主要還是要根據(jù)自己的業(yè)務(wù)需求來實現(xiàn)功能吧。

以下是后端截圖,做成模塊化

前端需要做的設(shè)置與限制:

1 判斷優(yōu)惠券是否存在或者停用
2 判斷活動開始時間與優(yōu)惠券開始時間

接著領(lǐng)取活動優(yōu)惠券,需要判斷以下情況:
1 活動已結(jié)束
2 活動為開始時
3 活動為新用戶領(lǐng)取,而領(lǐng)取的用戶是老用戶
4 活動為老用戶領(lǐng)取,而領(lǐng)取的用戶是新用戶
5 優(yōu)惠券是否領(lǐng)取完
6 已領(lǐng)取過優(yōu)惠券提示
7 領(lǐng)取成功

下面核心代碼實現(xiàn)

/**
 * Function:優(yōu)惠券領(lǐng)取處理
 * Author:cyw0413
 * @param $params
 * @return array
 * @throws \Exception
 */
public function doCoupon($params)
{
  $activity_id = $params['activity_id'];
  if(!$params){
    throw new \Exception("參數(shù)錯誤!");
  }

  $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); //只選擇不停用的優(yōu)惠券
  if(count($activity_link) = 0){
    throw new \Exception("優(yōu)惠券不存在或者已經(jīng)停用");

  }else{

    //查找注冊用戶ID
    $showUser = $this->showUser($params['mobile']);
    //主要是過濾掉領(lǐng)取優(yōu)惠券為0的,用laravel的同學(xué)注意看看
    $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');  //去除優(yōu)惠券剩余數(shù)量為0,或者領(lǐng)取優(yōu)惠券數(shù)量-剩余數(shù)量 > 0

  }
  //判斷活動開始時間與優(yōu)惠券開始時間
  $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("優(yōu)惠券領(lǐng)取時間未開始,暫不可領(lǐng)取");
  }

  //領(lǐng)取活動有以下幾種情況
  //1: 活動已結(jié)束
  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']); //檢查是新用戶,還是老用戶 根據(jù)自己的業(yè)務(wù)需求做,這個方法就不貼了
  //2: 活動為新用戶領(lǐng)取,而領(lǐng)取的用戶是老用戶
  if($activity['user_type'] == 1  !empty($checkUser)){
    $result = [
      'code' => 2,
    ];
    return $result;
  }

  //3:活動為老用戶領(lǐng)取,而領(lǐng)取的用戶是新用戶
  if($activity['user_type']==2  empty($checkUser)){
    $result = [
      'code' => 3,
    ];
    return $result;
  }


  //4:優(yōu)惠券是否領(lǐng)取完
  $coupon = $this->getCouponExpire($collection_coupon,$params['mobile']); //這里提示有一個優(yōu)惠券列表,根據(jù)自己的業(yè)務(wù)需求做,這個方法就不貼了
  //return $coupon;
  if($coupon == 1){
    $result = [
      'code' => 4,
    ];
    return $result;
  }

  //5:已領(lǐng)取過優(yōu)惠券提示
  $userCoupon = '';
  $userRate = '';
  if(!empty($checkUser)){
    //user存在則為老用戶,再檢查是否領(lǐng)取過
    $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:領(lǐng)取成功
  //如果活動規(guī)定是新老用戶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;
  }


}

用戶領(lǐng)取優(yōu)惠券并發(fā)放優(yōu)惠券

/**
 * Function:用戶領(lǐng)取活動
 * Author:cyw0413
 * @param $user_type
 */
public function getCouponSuccess($user_type,$user,$coupon,$mobile)
{
  if(count($coupon) > 0){

    switch ($user_type){
      case 1:
        //新用戶領(lǐng)取,如果從來沒注冊過就要新增用戶
        $res = $this->addUser($mobile,$coupon); 
        return [
          'result' => $res,
          'status' => 200
        ];
        break;
      case 2:
        //老用戶領(lǐng)取
        $res = $this->insertUserCoupon($user,$coupon);
        return [
          'result' => $res,
          'status' => 200
        ];
        break;
      default:
        //新老用戶領(lǐng)取,判斷是新用戶還是老用戶,這里的$user是有無配送單,有則為老用戶;
        if(empty($user)){
          $res = $this->addUser($mobile,$coupon);
        }else{

          $res = $this->insertUserCoupon($user,$coupon); //老用戶,直接發(fā)放優(yōu)惠券
        }
        return [
          'result' => $res,
          'status' => 200
        ];
        break;
    }
  }else{
    throw new \Exception("優(yōu)惠券不存在或者已經(jīng)停用");
  }


}

領(lǐng)取成功,則發(fā)放優(yōu)惠券

/**
 * Function:發(fā)放優(yōu)惠券
 * 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("優(yōu)惠券未發(fā)放,暫不可領(lǐng)取");
    }

    //發(fā)放優(yōu)惠券,有多少張就添加多少張,這里扣除優(yōu)惠券時,主要用不同的coupon_sn來區(qū)別
    $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);
    }

    //扣除相應(yīng)的優(yōu)惠券數(shù)量,這里用到了鎖表,防止并發(fā)時,優(yōu)惠券為-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("優(yōu)惠券剩余數(shù)量不夠扣減");
      }

    }


    $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;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Android 自定義View之邊緣凹凸的優(yōu)惠券效果的開發(fā)過程
  • 優(yōu)惠券優(yōu)惠的思路以及實踐
  • 使用Nopcommerce為商城添加滿XX減XX優(yōu)惠券功能

標(biāo)簽:重慶 十堰 銅陵 巴彥淖爾 衡陽 鷹潭 臨沂 麗江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用PHP做了一個領(lǐng)取優(yōu)惠券活動的示例代碼》,本文關(guān)鍵詞  用,PHP,做了,一個,領(lǐng)取,優(yōu)惠券,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用PHP做了一個領(lǐng)取優(yōu)惠券活動的示例代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于用PHP做了一個領(lǐng)取優(yōu)惠券活動的示例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    久久青青色综合| 久久久久久久香蕉网| 国产66精品| 成人黄色激情网| 久久99国产精品二区高清软件| 久久久精品成人| 久久久久99精品成人片我成大片| 国产精品久久久久久久天堂| 天天摸天天碰天天爽天天弄| 欧美一区二区人人喊爽| 又黄又爽的网站| 女人十八毛片嫩草av| 日韩啪啪网站| 亚洲国产日韩精品在线| 丰满少妇被猛烈进入一区二区| 欧美系列精品| www.av欧美| 欧美在线观看成人| 日韩一级电影| 国产福利小视频在线观看| 日韩精品极品毛片系列视频| 欧美18一19xxx性| 婷婷激情一区| 午夜精品久久久久久久第一页按摩| yw.尤物在线精品视频| 自拍日韩亚洲一区在线| 国产一区二区精品| 真实乱偷全部视频| 欧美性猛交视频| 最近中文字幕2019免费| 日韩av一二三区| av在线影视| 色噜噜狠狠一区二区三区狼国成人| 国产午夜精品视频一区二区三区| 操人视频91| 亚洲欧美国产视频| 国产精品视频一区二区三区四| 3d动漫精品啪啪1区2区免费| 亚洲天堂av在线播放| av资源中文色综合| 国内一区二区三区精品视频| 中国极品少妇videossexhd| 欧美另类高清zo欧美| 国产精品国产国产aⅴ| 欧美最猛性xxxxxhd| 欧美成人精品一区二区男人小说| t66y永久入口地址| 成人欧美一区二区三区视频网页| 永久555www成人免费| 日韩欧美主播在线| 99www免费人成精品| 国产成人ay| 黄色av网站在线看| 国产不卡一区| 欧美人牲a欧美精品| 欧美亚洲国产精品| 蜜臀va亚洲va欧美va天堂| 深夜福利小视频| 久久久国产精品成人免费| 神马久久久久久久久| 久久精品国产久精国产思思| 最新精品国产| 国产精品国模大尺度私拍| 国产精品99久久久久久久女警| 日韩一区二区免费看| 日韩精品免费一区二区三区| 成人18视频在线播放| 亚洲国产精品一区二区久久hs| 亚洲熟妇无码另类久久久| 国产精品911| 亚洲午夜精品一区 二区 三区| 欧美热在线视频精品999| av色资源站| 日韩精品免费在线视频| 国产淫片免费看| 国产美女精品免费电影| 中文字幕欧美专区| 欧美日韩老妇| jizz中国女人| av小片在线| 精品久久久久久久久久中文字幕| 欧美日本韩国在线| 99在线精品一区二区三区| 国产乱论精品| 日皮视频免费观看| h视频网站在线观看| 久久免费公开视频| 成人免费视频在线观看超级碰| 一二三四区在线| 国家队第一季免费高清在线观看| 无码人妻少妇伦在线电影| 欧美性www| 欧美日韩黄色影视| 农村末发育av片一区二区| 精品区在线观看| 久久久久免费观看| 欧美日韩在线视频观看| 亚洲色图欧洲色图| 91丨porny丨在线| 九色porny视频在线观看| 少妇精品久久久| 1卡2卡3卡精品视频| 国产精品91xxx| 亚洲成人999| 啪啪av大全导航福利网址| 久久亚洲综合av| 欧美日韩在线免费观看视频| 欧美专区第一页| 久久久婷婷一区二区三区不卡| 国产综合亚洲精品一区二| 国产亚洲字幕| 天天干天天操天天干天天操| 久久a级毛片毛片免费观看| 国产精品igao视频网网址不卡日韩| 性欧美高清强烈性视频| 懂色av一区二区三区| 57pao国产成人免费| 国产一区二区视频免费在线观看| 欧美一级二级三级九九九| 欧美一级免费大片| 日韩在线看片| 大桥未久在线视频| www亚洲人| 欧美a在线看| 四虎成人在线| 特大黑人巨人吊xxxx| 日本伦理一区二区三区| 日本h视频在线观看| 午夜精品在线播放| 亚洲午夜久久久影院| 国产午夜精品美女毛片视频| 亚洲视频免费在线观看| 国产精品.com| 成年人视频软件| 91av入口| 国产一级一区二区| 亚洲美女少妇无套啪啪呻吟| 国内精品不卡一区二区三区| 精品人伦一区二区色婷婷| 激情六月丁香| 激情网址大全| 国产一级影片| 在线精品观看国产| 精品国产99国产精品| 免费国产在线视频| 亚洲女成人图区| 懂色av影视一区二区三区| 波多野结衣家庭教师在线| 九九视频直播综合网| 免费成人黄色网| 色综合色狠狠综合色| 免费看欧美美女黄的网站| 欧美影院三区| 少妇精品无码一区二区免费视频| 免费av在线网站| xxxx国产视频| abab456成人免费网址| 中文字幕在线播放不卡一区| 国产69精品久久久久久| 天美一区二区三区| 日本午夜精品一区二区三区| 亚洲熟妇国产熟妇肥婆| 成人97人人超碰人人99| 日韩一区二区三区三四区视频在线观看| 久久久久久欧美精品se一二三四| 日本一区二区不卡在线| 91tv亚洲精品香蕉国产一区7ujn| 欧美网站在线| 男人最爱成人网| 亚洲天堂久久| 91成人看片片| 精品午夜福利视频| 国产裸体美女永久免费无遮挡| 色悠久久久久综合网小说| 麻豆精品在线视频| 最新av在线播放| 久久视频这里有精品| 午夜欧美一区二区三区免费观看| 亚洲一区二区三区精品在线观看| 蜜芽在线视频| 男人插曲女人视频免费| 中文国产亚洲喷潮| 亚洲国产中文在线二区三区免| 国产99视频精品免视看7| 最近中文字幕第一页| 亚洲熟女综合色一区二区三区| 美女被人操视频在线观看| 国产精品一区二区不卡| 成人丝袜18视频在线观看| 91在线视频播放地址| 小泽玛利亚av在线| 亚洲精品中文字幕在线播放| 黄色成人羞羞视频| 另类的小说在线视频另类成人小视频在线| japanese在线播放| aiss精品大尺度系列| japanese国产精品| 精彩视频一区二区| 青青国产91久久久久久| 久久精品一区二区三区四区五区| 亚洲啪啪aⅴ一区二区三区9色| 人妻少妇一区二区三区| 久久久久久美女| 97不卡在线视频| 久久久久久久国产精品毛片| 日韩在线理论| 欧美午夜春性猛交xxxx| 欧美特级限制片免费在线观看| 日本久久一区| 色爱综合网欧美| 国产成人亚洲精品自产在线| 福利视频在线看| 国产福利电影在线| 欧美中文日韩| 亚洲精品视频免费看| 久久一区二区三区电影| 99国内精品久久| 男人天堂欧美日韩| 岛国av在线网站| 成年人视频网站免费观看| 欧美区高清在线| 古典武侠综合av第一页| 欧美日韩高清| 在线欧美激情| 欧美sm极限捆绑bd| xxxxhd欧美精品| 国产精欧美一区二区三区白种人| 一级片在线观看视频| 国产精品久久久久久久久久10秀| 国产成人精品电影久久久| 精品在线视频免费观看| 99视频只有精品| 国模精品视频一区二区| 永久免费不卡在线观看黄网站| 午夜无码国产理论在线| 91在线高清观看| 中文字幕激情小说| 91在线无精精品一区二区| 久草免费在线观看视频| 99久久免费精品高清特色大片| 凹凸日日摸日日碰夜夜| 一区二区三区在线视频看| 91亚洲精品丁香在线观看| 91麻豆精品一二三区在线| xxxx视频在线| 久久夜色邦福利网| 91免费视频污| 在线观看免费高清视频97| 91丨porny丨中文| 一区精品在线观看| 日韩五码在线| 日韩精品久久| 日韩精品中文字幕一区| 精品视频1区2区| 精品国产一区二区三区四区在线观看| 欧美精品一本久久男人的天堂| 97国产成人精品视频| 久久久久久久久久久久| 国产永久免费高清在线观看| 久久99国产精品99久久| 免费看av大片| 久久99热只有频精品91密拍| 欧美日韩成人免费视频| 色诱av手机版| 成人毛片在线精品国产| 99在线视频影院| 日韩理论在线观看| 日韩在线三级| 国产不卡一区二区视频| 国产精品久久久久久一区二区| 亚洲精品电影网在线观看| 人人澡人人澡人人看欧美| 二区中文字幕| 日本免费在线视频观看| 日韩欧美a级成人黄色| 国产999久久久| 精品176极品一区| 激情综合网天天干| 欧美美最猛性xxxxxx| 男人j进女人j| 91女人视频在线观看| 欧美色欧美亚洲另类七区| av资源在线观看免费高清| 欧美一区国产| 亚洲天堂一区二区在线观看| www.国产精品一二区| 天天撸夜夜操| 日韩av在线电影| 欧美日韩mv| av在线网址导航| 欧美影院在线播放| 秋霞午夜一区二区三区视频| 日本高清不卡码| 中文字幕天堂在线| 啪啪激情综合网| 亚洲成人精品一区二区三区| 男人日女人逼逼| 欧美乱妇23p| 91蜜臀精品国产自偷在线| 日本黄色片在线播放| 亚洲精品黄网在线观看| 国产精品偷伦一区二区| 亚洲免费成人av在线| 国产精品久久久久久久久久三级| av免费在线免费观看| 免费观看久久av| 国产精品专区第二| 美女视频网站在线观看| 久久综合久久美利坚合众国| 粉嫩av一区二区三区在线播放| 佐佐木明希电影| 在线人成动漫视频在线观看| 在线精品亚洲一区二区不卡| 久久久天天操| 国产精品欧美一区喷水| 亚洲精品一区av在线播放| 亚洲人精品午夜射精日韩| 狠狠躁少妇一区二区三区| 网站一区二区三区| 老牛精品亚洲成av人片| 五月婷婷久久综合| 亚洲免费久久| 尤物av无码色av无码| 欧美性xxxx极品hd欧美风情| 国产视频在线观看视频| 精品久久久久久久久久久久| 国产精品作爱| 在线播放中文一区|