From 2da2f30576a3e4584c759c41070d2a40ab39fe6f Mon Sep 17 00:00:00 2001 From: dengbw Date: Thu, 24 Nov 2022 16:50:01 +0800 Subject: [PATCH] market_draw_1124 --- .../market/Market_sylive_order_model.php | 44 +++++-- home/controllers/h5/market/Draw.php | 63 ++++----- home/views/h5/market/draw/index.php | 123 ++++++++++-------- 3 files changed, 129 insertions(+), 101 deletions(-) diff --git a/common/models/market/Market_sylive_order_model.php b/common/models/market/Market_sylive_order_model.php index 8285bebe..3c26c343 100644 --- a/common/models/market/Market_sylive_order_model.php +++ b/common/models/market/Market_sylive_order_model.php @@ -79,22 +79,40 @@ class Market_sylive_order_model extends HD_Model $winType = []; if ($activityId == 4) {//纳米BOX双11纳享嗨购日 $img = 'https://qs.haodian.cn/web/images/project/H5-ShiYu-draw'; - $winType = [ - 6 => ['title' => '150元京东卡', 'tag' => '六等奖', 'img' => $img . '/prize-jd-150.png', 'price' => 0.99, 'num' => 300] - , 5 => ['title' => '200元京东卡', 'tag' => '五等奖', 'img' => $img . '/prize-jd-200.png', 'price' => 0.99, 'num' => 200] - , 4 => ['title' => '300元京东卡', 'tag' => '四等奖', 'img' => $img . '/prize-jd-300.png', 'price' => 0.99, 'num' => 100] - , 3 => ['title' => '500元京东卡', 'tag' => '三等奖', 'img' => $img . '/prize-jd-500.png', 'price' => 0.99, 'num' => 50] - , 2 => ['title' => 'iphone14', 'tag' => '二等奖', 'img' => $img . '/prize-iPhone14.png', 'price' => 199, 'num' => 5] - , 1 => ['title' => '半价购车权益', 'tag' => '一等奖', 'img' => $img . '/prize-banjia.png', 'price' => 199, 'num' => 1] - , 7 => ['title' => '200元京东卡', 'tag' => '199独享', 'img' => $img . '/prize-jd-200.png', 'price' => 199, 'num' => 5] - , 8 => ['title' => '500元京东卡', 'tag' => '199独享', 'img' => $img . '/prize-jd-500.png', 'price' => 199, 'num' => 2] - , 9 => ['title' => '1000元京东卡', 'tag' => '199独享', 'img' => $img . '/prize-jd-1000.png', 'price' => 199, 'num' => 1] + $winType = [ 0 => ['title' => '请选择抽奖类型'] + , 6 => ['title' => '150元京东卡', 'tag' => '六等奖', 'img' => $img . '/prize-jd-150.png', 'price' => 0.99] + , 5 => ['title' => '200元京东卡', 'tag' => '五等奖', 'img' => $img . '/prize-jd-200.png', 'price' => 0.99] + , 4 => ['title' => '300元京东卡', 'tag' => '四等奖', 'img' => $img . '/prize-jd-300.png', 'price' => 0.99] + , 3 => ['title' => '500元京东卡', 'tag' => '三等奖', 'img' => $img . '/prize-jd-500.png', 'price' => 0.99] + , 2 => ['title' => 'iphone14', 'tag' => '二等奖', 'img' => $img . '/prize-iPhone14.png', 'price' => 199] + , 1 => ['title' => '半价购车权益', 'tag' => '一等奖', 'img' => $img . '/prize-banjia.png', 'price' => 199] + , 7 => ['title' => '200元京东卡', 'tag' => '199独享', 'img' => $img . '/prize-jd-200.png', 'price' => 199] + , 8 => ['title' => '500元京东卡', 'tag' => '199独享', 'img' => $img . '/prize-jd-500.png', 'price' => 199] + , 9 => ['title' => '1000元京东卡', 'tag' => '199独享', 'img' => $img . '/prize-jd-1000.png', 'price' => 199] ]; - if ($type) { - $winType = $winType[$type]; - } + } + if ($type) { + $winType = $winType[$type]; } return $winType; } + /** + * Notes:中奖人数 + * Created on: 2022/11/24 15:46 + * Created by: dengbw + * @param int $activityId + * @return array + */ + public function winNumAry($activityId = 0) + { + $winNumAry = []; + if ($activityId == 4) {//纳米BOX双11纳享嗨购日 + $winNumAry = [['title' => '请选择中奖人数', 'value' => 0], + ['title' => '1人', 'value' => 1], ['title' => '2人', 'value' => 2], + ['title' => '5人', 'value' => 5], ['title' => '50人', 'value' => 50]]; + } + return $winNumAry; + } + } \ No newline at end of file diff --git a/home/controllers/h5/market/Draw.php b/home/controllers/h5/market/Draw.php index ad79ca72..fc7d95a8 100644 --- a/home/controllers/h5/market/Draw.php +++ b/home/controllers/h5/market/Draw.php @@ -44,14 +44,14 @@ class Draw extends CI_Controller $re = $this->mdSyliveActivity->get(['drawCode' => $drawCode, 'status' => 0], 'title,activityId'); if ($re['activityId']) { $activityId = intval($re['activityId']); - $winNumAry = [['title' => '请选择...', 'value' => 0], ['title' => '1人', 'value' => 1], ['title' => '2人', 'value' => 2], - ['title' => '5人', 'value' => 5], ['title' => '50人', 'value' => 50]]; - $winTypeAry = []; + $winNumAry = $this->mdSyliveOrder->winNumAry($activityId);//中奖人数 + $winTypeAry = [];//抽奖类型 $winTypeAryGet = $this->mdSyliveOrder->winTypeAry($activityId); foreach ($winTypeAryGet as $k => $v) { if ($k == 1 || $k == 2) {//监时加上 } else { - $winTypeAry[] = ['title' => $v['tag'] . ' ' . $v['title'], 'value' => $k]; + $title = $v['tag'] ? $v['tag'] . ' ' . $v['title'] : $v['title']; + $winTypeAry[] = ['title' => $title, 'value' => $k]; } } $title = $re['title'] . '_私域直播抽奖'; @@ -102,46 +102,45 @@ class Draw extends CI_Controller $this->show_json(400, '暂无活动'); } if (date('Y-m-d H:i:s') > $re['timeEnd']) { - $this->show_json(400, '直播已结束,不能开始抽奖'); + $this->show_json(400, "直播结束时间【{$re['timeEnd']}】,不能抽奖了..."); } $winTypeAry = $this->mdSyliveOrder->winTypeAry($activityId); $price = $winTypeAry[$winType]['price']; $limit = $winNum >= 50 ? 100 : 50; - //随机数据 - $sql = "SELECT id,userId,mobile,uname,totalPrice FROM lc_market_sylive_order WHERE activityId={$activityId} - AND win=0 AND status=1 AND totalPrice>={$price} ORDER BY RAND() LIMIT {$limit}"; - $res = $this->db->query($sql)->result_array(); - $list = $result = []; - foreach ($res as $v) { - if ($v['mobile']) { - $headimg = 'https://qs.haodian.cn/web/images/project/H5-ShiYu/default-head.png'; - $tel = mobile_asterisk($v['mobile']); - $name = $v['uname'] ? name_asterisk($v['uname']) : '***'; - $re_user = $this->mdSyliveUser->get(['userId' => $v['userId']], 'nickname,headimg'); - if ($re_user) { - $re_user['headimg'] && $headimg = $re_user['headimg']; - } - $list[] = ['headimg' => $headimg, 'name' => $name, 'tel' => $tel, 'id' => intval($v['id']), - 'uname' => $v['uname'], 'mobile' => $v['mobile']]; - } - } - $count = count($list); $time = "在【" . date('Y-m-d H:i:s') . "】"; + $count = $this->mdSyliveOrder->count(['activityId' => $activityId, 'win' => 0, 'status' => 1, 'totalPrice>=' => $price]); + $list = $result = []; + if ($count) {//判断抽奖名单 + //随机数据 + $sql = "SELECT id,userId,mobile,uname,totalPrice FROM lc_market_sylive_order WHERE activityId={$activityId} + AND win=0 AND status=1 AND totalPrice>={$price} ORDER BY RAND() LIMIT {$limit}"; + $res = $this->db->query($sql)->result_array(); + foreach ($res as $v) { + if ($v['mobile']) { + $headimg = 'https://qs.haodian.cn/web/images/project/H5-ShiYu/default-head.png'; + $tel = mobile_asterisk($v['mobile']); + $name = $v['uname'] ? name_asterisk($v['uname']) : '***'; + $re_user = $this->mdSyliveUser->get(['userId' => $v['userId']], 'nickname,headimg'); + if ($re_user && $re_user['headimg']) { + $headimg = $re_user['headimg']; + } + $list[] = ['headimg' => $headimg, 'name' => $name, 'tel' => $tel, 'id' => intval($v['id']), + 'uname' => $v['uname'], 'mobile' => $v['mobile']]; + } + } + $count = count($list); + } if (!$count) { - $this->show_json(400, "{$time}暂无获取到抽奖人,不能开始抽奖"); + $this->show_json(400, "{$time}暂无获取到抽奖名单,不能开始抽奖"); } if ($count < $winNum) { $this->show_json(400, "{$time}获取到抽奖人数{$count}人,不够选择中奖人数{$winNum}人,不能开始抽奖"); } $data['list'] = $list; - //$winNumCount = $this->mdSyliveOrder->count(['activityId' => $activityId, 'win' => 1, 'status' => 1, 'winType' => $winType]); - //$num = $winTypeAry[$winType]['num']; - //$winNum = ($winNum + $winNumCount) > $num ? $num - $winNumCount : $winNum; //选择中奖人结果 shuffle($list); $result = array_slice($list, 0, $winNum); - - $msg = "{$time}获取到的信息,可开始抽奖"; + $msg = "{$time}获取到抽奖名单,可开始抽奖"; $data['result'] = $result; $data['type'] = $winType; $data['prizeUrl'] = $winTypeAry[$winType]['img']; @@ -168,6 +167,7 @@ class Draw extends CI_Controller $smsTime = date('Y-m-d H:i'); $showMobile = ''; $winNum = 0; + $dev = false !== strpos($_SERVER['HTTP_HOST'], 'dev') ? 1 : 0; foreach ($result as $v) { $ret = $this->mdSyliveOrder->update(['win' => 1, 'winType' => $winType, 'winTime' => $winTime], ["id" => $v['id']]); if ($ret) { @@ -176,7 +176,7 @@ class Draw extends CI_Controller //中奖发短信 if ($winType == 1 || $winType == 2) {//一等奖、二等奖不发短信 $showMobile = $showMobile ? $showMobile . ",{$v['uname']}({$v['mobile']})" : "{$v['uname']}({$v['mobile']})"; - } else if ($v['mobile']) { + } else if ($v['mobile'] && $dev == 0) {//dev==1不发短信通知 if ($smsTime >= "2022-11-11 19:00") {//发短信 $content = "【好店云】礼品锁定提醒:感谢您参与东风ev新能源双11嗨购日专场活动,恭喜您成功锁定({$winTypeAry['title']})礼品一份,只需您在11月30日晚20点前在当地门店选购东风ev新车型纳米box,即可领取礼品哦!"; b2m_send_sms($v['mobile'], $content); @@ -186,6 +186,7 @@ class Draw extends CI_Controller } $msg = $showMobile ? $showMobile : "成功抽中{$winNum}人"; $winNumCount = $this->mdSyliveOrder->count(['activityId' => $activityId, 'win' => 1, 'status' => 1, 'winType' => $winType]); + $data['dev'] = $dev; $data['result'] = $resultSet; $data['winMsgTip'] = $winNumCount; $this->show_json(200, $msg ? $msg : '成功抽奖', $data); diff --git a/home/views/h5/market/draw/index.php b/home/views/h5/market/draw/index.php index db8df711..5fd0c833 100644 --- a/home/views/h5/market/draw/index.php +++ b/home/views/h5/market/draw/index.php @@ -80,15 +80,15 @@ 已中奖{{winMsgTip}}人 - 选择中奖人数: + 中奖人数: 更新信息 + v-if="draw.list.length>0" href="javascript:;" @click="start">开始抽奖 开始抽奖 + href="javascript:;" @click="getDraw">{{draw.list.length>0 ? '更新' : '获取'}}抽奖名单 0) { - that.draw = {list: [], result: [], type: 0, prizeUrl: ''}; - that.list = []; - $.ajax({ - url: '/h5/market/draw/post_info', - type: 'post', - dataType: 'json', - data: {winNum: that.winNum, winType: that.winType, activityId: that.activityId}, - beforeSend: function () { - that.submitFlag = true; - }, - success: function (re) { - if (re.code == 200) { - that.msgTip = re.msg; - that.topTitle = $("#win_type_id").find("option:selected").text(); - that.draw = { - list: re.data.list, - result: re.data.result, - type: re.data.type, - prizeUrl: re.data.prizeUrl - }; - - // let arr = that.draw.list.slice(0); - // arr.sort(function () { - // return Math.random() - 0.5; - // }); - // that.list = arr; - } else { - that.msgTip = re.msg; - } - }, - complete: function () { - that.submitFlag = false; + that.isShowReset = false; + that.draw = {list: [], result: [], type: 0, prizeUrl: ''}; + that.list = []; + $.ajax({ + url: '/h5/market/draw/post_info', + type: 'post', + dataType: 'json', + data: {winNum: that.winNum, winType: that.winType, activityId: that.activityId}, + beforeSend: function () { + that.submitFlag = true; + }, + success: function (re) { + if (re.code == 200) { + that.msgTip = re.msg; + that.topTitle = $("#win_type_id").find("option:selected").text(); + that.draw = { + list: re.data.list, + result: re.data.result, + type: re.data.type, + prizeUrl: re.data.prizeUrl + }; + // let arr = that.draw.list.slice(0); + // arr.sort(function () { + // return Math.random() - 0.5; + // }); + // that.list = arr; + } else { + that.msgTip = re.msg; } - }); - } else { - that.msgTip = "请选择中奖人数" - } + }, + complete: function () { + that.submitFlag = false; + } + }); }, //中奖人数 getWinNum() { let that = this; if (that.isSubmiting) return; + if (!that.winType || !that.activityId) return; $.ajax({ url: '/h5/market/draw/post_win_num', type: 'post', @@ -264,23 +269,26 @@ } }); }, - //选择中奖个数 - changeType(e) { - this.isOpen = false; - if (this.winNum != e.target.value) { - this.draw = {list: [], result: [], type: 0, prizeUrl: ''}; - this.winNum = e.target.value; - this.list = []; - this.msgTip = ""; - } - }, //选择中奖类型 changeTitle(e) { if (this.winType != e.target.value) { this.winType = e.target.value; + this.draw = {list: [], result: [], type: 0, prizeUrl: ''}; + this.list = []; + this.msgTip = ""; this.getWinNum(); } }, + //选择中奖人数 + changeType(e) { + this.isOpen = false; + if (this.winNum != e.target.value) { + this.winNum = e.target.value; + this.draw = {list: [], result: [], type: 0, prizeUrl: ''}; + this.list = []; + this.msgTip = ""; + } + }, //开始抽奖 start() { this.msgTip = ''; @@ -288,11 +296,11 @@ this.isStartAc = true; this.timer = setInterval(res1 => { //随机排序 - let arr = this.draw.list.slice(0) + let arr = this.draw.list.slice(0); arr.sort(function () { return Math.random() - 0.5; - }) - this.list = arr + }); + this.list = arr; }, 20) }, //立即开奖 @@ -335,6 +343,7 @@ this.draw = {list: [], result: [], type: 0, prizeUrl: ''}; this.isStartAc = false; this.isOpen = true; + this.winNum = 0; }, } })