文件
mashangyoujiu/Application/Api/Controller/TurntableApiController.class.php

807 行
33 KiB
PHP
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
namespace Api\Controller;
use Think\Controller;
use Addons\Api\GlobalFunction;
use Addons\Api\ResultCodeManager;
//[1.4.13]
class TurntableApiController extends Controller
{
//小程序端
//我的活动 大转盘中奖记录
public function TurntableWinList()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'vid',// '会员ID',
'page',// 当前页数
'page_size',// 每页记录数
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
$page = empty($post['page']) ? 1 : $post['page'];
$page_size = empty($post['page_size']) ? 10 : $post['page_size'];
$turntable = D('TurntableUse')->getTurntableWinList('', '', $post['vid'], $page, $page_size);
//获取记录总数
$total = D('TurntableUse')->getTurntableWinCount('', '', $post['vid']);
$page_info = [
'page' => $page,
'page_size' => $page_size,
'data_total' => $total,
];
if (!empty($turntable)) {
foreach ($turntable as &$val) {
$val['add_time'] = date('Y.m.d H:i', $val['add_time']);
}
unset($val);
}
$data = [
'data' => $turntable,
'page_info' => $page_info,
];
if (!$turntable) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::NO_DATA, ResultCodeManager::$messages[ResultCodeManager::NO_DATA]));
}
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $data));
}
//活动页面 我的奖品
public function TurntableMyPrize()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'vid',// '会员ID',
'turntable_id',// '转盘活动ID',
'page',// 当前页数
'page_size',// 每页记录数
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
$page = empty($post['page']) ? 1 : $post['page'];
$page_size = empty($post['page_size']) ? 10 : $post['page_size'];
$turntable = D('TurntableUse')->getTurntableWinList('', $post['turntable_id'], $post['vid'], $page, $page_size);
//获取记录总数
$total = D('TurntableUse')->getTurntableWinCount('', $post['turntable_id'], $post['vid']);
$page_info = [
'page' => $page,
'page_size' => $page_size,
'data_total' => $total,
];
if (!empty($turntable)) {
foreach ($turntable as &$val) {
$val['add_time'] = date('Y.m.d H:i', $val['add_time']);
}
unset($val);
}
$data = [
'data' => $turntable,
'page_info' => $page_info,
];
if (!$turntable) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::NO_DATA, ResultCodeManager::$messages[ResultCodeManager::NO_DATA]));
}
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $data));
}
//查看实物奖品详情
public function winTurntablePrizeDetail()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'win_id',// '中奖记录ID,
'vid',// '会员ID,
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
//查询奖品详情
$prize = D('TurntableUse')->getPrizeDetail($post['win_id'], $post['vid']);
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $prize));
}
//获取会员默认收货地址
public function getVipAddress()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'vid',// '会员ID,
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
$map = [
'uid' => $post['vid'],
'state' => 0,
'status' => 1,
];
$prize = D('Address')->getFind($map, 'id,address,house_number,name,phone,province,city,area');
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $prize));
}
//获取会员收货地址列表
public function getVipAddressList()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'vid',// '会员ID,
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
$map = [
'uid' => $post['vid'],
'state' => 0,
];
$prize = D('Address')->getSelect($map, 'id,address,house_number,name,phone,province,city,area');
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $prize));
}
//获取奖品配送方式
public function getPrizeDeliveryType()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'prize_id',// '奖品ID,
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
$map = [
'id' => $post['prize_id'],
];
//查询奖品详情
$prize = D('TurntablePrize')->getFind($map, 'id,prize_name,prize_img,type,delivery_type,receive_auth,receive_start,receive_end');
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $prize));
}
//添加奖品领取收货地址
public function addPrizeAddress()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'vid',// '会员ID,
'name',// '收货人姓名,
'phone',// '收货人手机,
'address',// '收货地址,
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
$data = [
'uid' => $post['vid'],
'address' => $post['address'],
'name' => $post['name'],
'phone' => $post['phone'],
];
//添加收货地址
$prize = D('Address')->addOrder($data);
//查询收货地址
$address = D('Address')->getFind(['id' => $prize]);
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $address));
}
//自提信息页面查看门店
public function getDeliveryStore()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'win_id',// '中奖记录ID,
'latitude',// '维度,
'longitude',// '经度,
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
$record = D('TurntableUse')->getFind(['id' => $post['win_id']]);
//判断当前奖品是否可以自提
$prize = D('TurntablePrize')->getFind(['id' => $record['turntable_prize_id']]);
if ($prize['delivery_type'] != 2 && $prize['delivery_type'] != 3) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::DELIVERY_TYPE_ERROR, ResultCodeManager::$messages[ResultCodeManager::DELIVERY_TYPE_ERROR]));
}
$lat = $post['latitude'];
$lng = $post['longitude'];
//查询大转盘活动限制的门店信息
$Turntable = D('Turntable')->getFind(['id' => $prize['turntable_id']]);
if ($Turntable['turntable_type'] == 5) {//任务类型活动不限制门店 查询所有门店
$map['merchantid'] = $Turntable['merchant_id'];
$filed = 'id,storetag,latitude,longitude,ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN((' . $lat . ' * PI() / 180 - latitude * PI() / 180) / 2),2) + COS(' . $lat . ' * PI() / 180) * COS(latitude * PI() / 180) * POW(SIN((' . $lng . ' * PI() / 180 - longitude * PI() / 180) / 2),2))) * 1000) AS juli,business_time';
$storeList = M('retail_store')->where($map)->field($filed)->order('juli ASC')->select();
} else {//查询中奖所在门店
$mop['id'] = $record['store_id'];
$filed = 'id,storetag,latitude,longitude,ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN((' . $lat . ' * PI() / 180 - latitude * PI() / 180) / 2),2) + COS(' . $lat . ' * PI() / 180) * COS(latitude * PI() / 180) * POW(SIN((' . $lng . ' * PI() / 180 - longitude * PI() / 180) / 2),2))) * 1000) AS juli,business_time';
$storeList = D('Store')->getSelect($mop, $filed);
}
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $storeList));
}
//领取信息提交
public function updateReceiveInfo()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'win_id',// 中奖记录ID,
'prize_id',// 奖品ID,
// 'store_id',// 门店ID,
// 'username',// 中奖人姓名,
// 'phone',// 手机号,
// 'address',// 地址,
'delivery_type',// 1配送 2自提,
'prize_type',// 奖品类型:1实物 2门店商品 ,
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
//判断中奖记录是否存在
$mp = [
'id' => $post['win_id'],
'turntable_prize_id' => $post['prize_id'],
'prize_type' => $post['prize_type'],
'status' => 1
];
$prize_record = D('TurntableUse')->getFind($mp);
if (!$prize_record) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::NO_WIN_PRIZE_RECORD, ResultCodeManager::$messages[ResultCodeManager::NO_WIN_PRIZE_RECORD]));
}
//判断当前奖品是否领取时间过期
$prize = D('TurntablePrize')->getFind(['id' => $post['prize_id']]);
if ($prize['receive_auth'] == 2) {
if ($prize['receive_start'] > time() || $prize['receive_end'] < time()) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::RECEIVE_TIMEOUT, ResultCodeManager::$messages[ResultCodeManager::RECEIVE_TIMEOUT]));
}
}
//更新中奖记录表
$save_data = [
'status' => 2,
'receive_time' => time(),
'delivery_status' => 1,
'username' => isset($post['username']) ? $post['username'] : '',
'phone' => isset($post['phone']) ? $post['phone'] : '',
'delivery_type' => $post['delivery_type'],
];
if ($post['delivery_type'] == 2) {
//生成核销码
$save_data['receive_code'] = getPickCode();
$save_data['store_id'] = $post['store_id'];
} else {
$save_data['address'] = $post['address'];
}
//更新中奖记录
$Turntable = D('TurntableUse')->updateOrder(['id' => $prize_record['id']], $save_data);
if (!$Turntable) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::E_SAVE_ERROR, ResultCodeManager::$messages[ResultCodeManager::E_SAVE_ERROR]));
}
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS]));
}
//查看奖品配送信息
public function getDeliveryOrder()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'win_id',// '中奖记录ID,
'delivery_type',// '用户领取时所选配送方式:1配送 2自提 ,
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
$record = D('TurntableUse')->getFind(['id' => $post['win_id']]);
if (empty($record)) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::THE_DATA_NO_HAVE, ResultCodeManager::$messages[ResultCodeManager::THE_DATA_NO_HAVE]));
}
$prize = D('TurntablePrize')->getFind(['id' => $record['turntable_prize_id']]);
if ($post['delivery_type'] == 1) {
$data = [
'delivery_status' => $record['delivery_status'],
'order_num' => $record['order_num'],
'receive_time' => $record['receive_time'],
'delivery_type' => $record['delivery_type'],
'prize_id' => $prize['id'],
'prize_img' => $prize['prize_img'],
'prize_name' => $prize['prize_name'],
'prize_type' => $prize['type'],
];
} else {
$store = D('Store')->getFind(['id' => $record['store_id']]);
$data = [
'delivery_status' => $record['delivery_status'],
'order_num' => $record['order_num'],
'receive_time' => $record['receive_time'],
'delivery_type' => $record['delivery_type'],
'prize_id' => $prize['id'],
'prize_img' => $prize['prize_img'],
'prize_name' => $prize['prize_name'],
'prize_type' => $prize['type'],
'shop_name' => $store['storetag'],
'shop_lat' => $store['latitude'],
'shop_lng' => $store['longitude'],
'username' => $record['username'],
'phone' => $record['phone'],
'receive_code' => $record['receive_code'],
];
}
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $data));
}
//小程序我的页面 查询任务模式转盘信息
public function getTaskTurntable()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'merchant_id',// 商户ID
'vid',// 会员ID
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
//查询转盘活动
$mop['merchant_id'] = $post['merchant_id'];
$mop['turntable_type'] = 5;
$mop['status'] = 1;
$fields = 'id,turntable_name,start_time,end_time,strategy,explain,task_type,one_consume,one_month_num';
$turntable = D('Turntable')->getFind($mop, $fields);
//获取对应奖品数据
if (!$turntable) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::NO_DATA, ResultCodeManager::$messages[ResultCodeManager::NO_DATA]));
}
$map['turntable_id'] = $turntable['id'];
$field = 'id,prize_name,prize_img,prize_num,prize_total,prob,type';
$prize_list = D('TurntablePrize')->getSelect($map, $field);
$turntable['prize_list'] = $prize_list;
//查询用户拥有抽奖次数
$user_num = D('TurntableTaskChance')->getFind(['uid' => $post['vid'], 'turntable_id' => $turntable['id']]);
$turntable['user_num'] = $user_num;
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $turntable));
}
//获取大转盘信息
public function getTurntableInfo()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'turntable_id',// 转盘ID
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
//查询转盘活动
$mop['id'] = $post['turntable_id'];
$mop['status'] = 1;
$fields = 'id,turntable_name,start_time,end_time,strategy,explain,turntable_type';
$turntable = D('Turntable')->getFind($mop, $fields);
//获取对应奖品数据
if (!$turntable) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::NO_DATA, ResultCodeManager::$messages[ResultCodeManager::NO_DATA]));
}
$map['turntable_id'] = $turntable['id'];
$field = 'id,prize_name,prize_img,prize_num,prize_total,prob,type';
$prize_list = D('TurntablePrize')->getSelect($map, $field);
$turntable['prize_list'] = $prize_list;
$turntable['user_num'] = [
"id" => "0",
"turntable_id" => $turntable['id'],
"uid" => "",
"num" => "1",
"use_num" => "0",
"near_time" => ""
];
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $turntable));
}
//大转盘抽奖
public function getRunTurntable()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'turntable_id',// 转盘活动ID
'vid',// 会员ID
'merchant_id',// 商户ID
// 'bill_order_id',// 用户支付订单ID
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
//查询转盘活动
$turntable = D('Turntable')->getFind(['id' => $post['turntable_id'], 'status' => 1]);
if (!$turntable) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::TURNTABLE_CLOSE, ResultCodeManager::$messages[ResultCodeManager::TURNTABLE_CLOSE]));
}
//查询订单是否已使用
if (isset($post['bill_order_id'])) {
$order_record = D('TurntableUse')->getCount(['turntable_id' => $post['turntable_id'], 'bill_id' => $post['bill_order_id']]);
if ($order_record) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::WIN_NUM_NULL, ResultCodeManager::$messages[ResultCodeManager::WIN_NUM_NULL]));
}
}
//判断转盘类型
if ($turntable['turntable_type'] == 5) {//任务模式 需要判断抽奖次数
$t_uid_num = D('TurntableTaskChance')->getFind(['uid' => $post['vid'], 'turntable_id' => $post['turntable_id']]);
if (!$t_uid_num) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::WIN_NUM_NULL, ResultCodeManager::$messages[ResultCodeManager::WIN_NUM_NULL]));
}
if ($t_uid_num['num'] <= 0) {//没有抽奖次数
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::WIN_NUM_NULL, ResultCodeManager::$messages[ResultCodeManager::WIN_NUM_NULL]));
} else {
//修改剩余抽奖数
$t_save = [
'num' => $t_uid_num['num'] - 1,
'use_num' => $t_uid_num['use_num'] + 1
];
D('TurntableTaskChance')->updateOrder(['id' => $t_uid_num['id']], $t_save);
}
}
//查询用户当日抽奖次数
$today_start = strtotime(date('Y-m-d', time()));
$today_end = $today_start + (24 * 3600);
$map['add_time'] = array('between', array($today_start, $today_end));
$map['user_id'] = $post['vid'];
$map['turntable_id'] = $post['turntable_id'];
$today = D('TurntableUse')->getCount($map);
//查询用户活动期间总的抽奖次数
$map['user_id'] = $post['vid'];
$map['turntable_id'] = $post['turntable_id'];
$total = D('TurntableUse')->getCount($map);
//判断转盘每日次数限制
if ($turntable['day_num'] != 0 && $today >= $turntable['day_num']) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::TODAY_TO_MAX, ResultCodeManager::$messages[ResultCodeManager::TODAY_TO_MAX]));
}
//判断转盘总的抽奖次数限制
if ($turntable['max_num'] != 0 && $total >= $turntable['max_num']) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::TURNTABLE_TO_MAX, ResultCodeManager::$messages[ResultCodeManager::TURNTABLE_TO_MAX]));
}
//查询转盘奖品
$prize_arr = D('TurntablePrize')->getSelect(['turntable_id' => $post['turntable_id']], '*', 'prob ASC');
$run_prize = [];
$total_prob = 0;
$i = 0;
$rand_max = 0;
foreach ($prize_arr as $val) {
//记录尚余库存的奖品
$prize_count = D('TurntableUse')->getCount(['turntable_id' => $post['turntable_id'], 'turntable_prize_id' => $val['id']]);
if ($val['prize_total'] - $prize_count > 0) {
$total_prob += $val['prob'] * 100;
if ($i == 0) {
$run_prize[$i] = $val;
$run_prize[$i]['prob_start'] = 0;
$run_prize[$i]['prob_end'] = $val['prob'] * 100;
$rand_max = $run_prize[$i]['prob_end'];
} else {
$run_prize[$i] = $val;
$run_prize[$i]['prob_start'] = $run_prize[$i - 1]['prob_end'];
$run_prize[$i]['prob_end'] = $run_prize[$i]['prob_start'] + ($val['prob'] * 100);
$rand_max = $run_prize[$i]['prob_end'];
}
$i++;
}
}
// print_r($run_prize);die();
if (empty($run_prize)) {//所有奖品均被抽完
//关闭转盘活动
D('Turntable')->updateOrder(['id' => $post['turntable_id']], ['status' => 2]);
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::ALL_PRIZE_IS_NULL, ResultCodeManager::$messages[ResultCodeManager::ALL_PRIZE_IS_NULL]));
}
$prob_win = mt_rand(0, $rand_max);
//print_r($prob_win);die();
//返回前端的奖品信息
$win_prize_info = [];
foreach ($run_prize as $vvl) {
if ($prob_win >= $vvl['prob_start'] && $prob_win < $vvl['prob_end']) {
//中奖
//再次判断奖品库存
$prize_stock = D('TurntableUse')->getCount(['turntable_id' => $post['turntable_id'], 'turntable_prize_id' => $vvl['id']]);
if ($vvl['prize_total'] - $prize_stock <= 0) {//库存不足
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::PRIZE_IS_NULL, ResultCodeManager::$messages[ResultCodeManager::PRIZE_IS_NULL]));
} else {
//判断奖品类型
switch ($vvl['type']) {
case 3://积分
//增加用户积分
D('RetailVip')->toSetInc(['id' => $post['vid']], 'integral', $vvl['prize_num']);
//新增中奖记录
$win_data = [
'user_id' => $post['vid'],
'add_time' => time(),
'status' => 1,
'merchant_id' => $post['merchant_id'],
'turntable_prize_id' => $vvl['id'],
'turntable_id' => $post['turntable_id'],
'delivery_status' => 2,
'delivery_type' => 3,
'store_id' => empty($post['store_id']) ? '' : $post['store_id'],
'prize_type' => $vvl['type']
];
if (isset($post['bill_order_id'])) {
$win_data['bill_id'] = $post['bill_order_id'];
}
$record_id = D('TurntableUse')->addOrder($win_data);
//生成中奖订单号 更新中奖记录
$order_num = orderNumber($record_id);
$sace_data = [
'order_num' => 'T' . $order_num
];
D('TurntableUse')->updateOrder(['id' => $record_id], $sace_data);
//更新奖品库存
D('TurntablePrize')->toSetDec(['id' => $vvl['id']], 'prize_total',1);
break;
case 4://余额
//增加用户积分
D('RetailVip')->toSetInc(['id' => $post['vid']], 'balance', $vvl['prize_num']);
//新增中奖记录
$win_data = [
'user_id' => $post['vid'],
'add_time' => time(),
'status' => 1,
'merchant_id' => $post['merchant_id'],
'turntable_prize_id' => $vvl['id'],
'turntable_id' => $post['turntable_id'],
'delivery_status' => 2,
'delivery_type' => 3,
'store_id' => empty($post['store_id']) ? '' : $post['store_id'],
'prize_type' => $vvl['type']
];
if (isset($post['bill_order_id'])) {
$win_data['bill_id'] = $post['bill_order_id'];
}
$record_id = D('TurntableUse')->addOrder($win_data);
//生成中奖订单号 更新中奖记录
$order_num = orderNumber($record_id);
$sace_data = [
'order_num' => 'T' . $order_num
];
D('TurntableUse')->updateOrder(['id' => $record_id], $sace_data);
//更新奖品库存
D('TurntablePrize')->toSetDec(['id' => $vvl['id']], 'prize_total',1);
break;
default:
//新增中奖记录
$win_data = [
'user_id' => $post['vid'],
'add_time' => time(),
'status' => 1,
'merchant_id' => $post['merchant_id'],
'turntable_prize_id' => $vvl['id'],
'turntable_id' => $post['turntable_id'],
'delivery_status' => 1,
'store_id' => empty($post['store_id']) ? '' : $post['store_id'],
'prize_type' => $vvl['type']
];
if (isset($post['bill_order_id'])) {
$win_data['bill_id'] = $post['bill_order_id'];
}
$record_id = D('TurntableUse')->addOrder($win_data);
//生成中奖订单号 更新中奖记录
$order_num = orderNumber($record_id);
$sace_data = [
'order_num' => 'T' . $order_num
];
D('TurntableUse')->updateOrder(['id' => $record_id], $sace_data);
//更新奖品库存
D('TurntablePrize')->toSetDec(['id' => $vvl['id']], 'prize_total',1);
break;
}
$win_prize_info = [
'id' => $vvl['id'],
'prize_name' => $vvl['prize_name'],
'prize_img' => $vvl['prize_img'],
'type' => $vvl['type'],
];
}
}
}
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $win_prize_info));
}
//小程序门店首页 查询是否有转盘或红包活动
public function checkTurntable()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'merchant_id',// 商户ID
'uid',// 用户ID
'store_id',// 门店ID
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
$data = searchTurntableOrReward(2, $post['merchant_id'], $post['store_id'], $post['vid'], $post['uid'], '');
if (!empty($data) && $data['activity_type'] == 1) {//转盘活动
//查询用户当日抽奖次数
$today_start = strtotime(date('Y-m-d', time()));
$today_end = $today_start + (24 * 3600);
$map['add_time'] = array('between', array($today_start, $today_end));
$map['user_id'] = $post['vid'];
$map['turntable_id'] = $data['activity_id'];
$today = D('TurntableUse')->getCount($map);
//查询用户活动期间总的抽奖次数
$map['user_id'] = $post['vid'];
$map['turntable_id'] = $data['activity_id'];
$total = D('TurntableUse')->getCount($map);
$turntable = D('Turntable')->getFind(['id' => $data['activity_id']]);
//判断转盘每日次数限制
if ($turntable['day_num'] != 0 && $today >= $turntable['day_num']) {
$data = [];
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $data));
}
//判断转盘总的抽奖次数限制
if ($turntable['max_num'] != 0 && $total >= $turntable['max_num']) {
$data = [];
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $data));
}
}
//判断红包活动
if (!empty($data) && $data['activity_type'] == 2) {
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $data));
}
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $data));
}
//支付成功页面 查询是否有转盘或红包活动
public function payCheckTurntable()
{
$post = I('post.');//接收前端传参 array
$validParams = [
'merchant_id',// 商户ID
'uid',// 用户ID
'store_id',// 门店ID
'vid',// 会员ID
'order_no',// 用户支付订单号
];//定义过滤字段
$check = GlobalFunction::checkParams($validParams, $post);
if ($check['status'] == 1) {//值为1 过滤出错 前端字段传参不全
$this->ajaxReturn($check['result']);//返回缺失字段
}
//查询订单ID
$mmp['pay_state'] = 1;
$mmp['vid'] = $post['vid'];
$mmp['uid'] = $post['uid'];
$mmp['order_no'] = $post['order_no'];
$order = D('RetailBillOrder')->getFind($mmp);
$data = searchTurntableOrReward(3, $post['merchant_id'], $post['store_id'], $post['vid'], $post['uid'], $order['id']);
$this->ajaxReturn(GlobalFunction::buildResult(ResultCodeManager::SUCCESS, ResultCodeManager::$messages[ResultCodeManager::SUCCESS], $data));
}
}