0) $where .= " AND type = {$type} "; if($status > 0) $where .= " AND status = {$status} "; //sql语句生成 $field = "id,title,type,status,create_time,start_time,end_time"; $sql = "SELECT {$field} FROM ".tablename(PDO_NAME."draw"); $order = " ORDER BY create_time DESC,id DESC "; $limit = " LIMIT {$pageStart},{$pageIndex} "; //列表信息获取 $list = pdo_fetchall($sql.$where.$order.$limit); foreach($list as $key => &$val){ //时间信息处理 $val['create_time'] = date("Y-m-d H:i:s" , $val['create_time']); $val['start_time'] = date("Y-m-d H:i:s" , $val['start_time']); $val['end_time'] = date("Y-m-d H:i:s" , $val['end_time']); //获取奖品数量 $val['prize'] = pdo_count(PDO_NAME."draw_join",['draw_id'=>$val['id'],'draw_goods_id >'=>0]); } //分页操作 $totalSql = str_replace($field,'count(*)',$sql); $total = pdo_fetchcolumn($totalSql.$where); $pager = wl_pagination($total, $page, $pageIndex); include wl_template('draw/index'); } /** * Comment: 添加抽奖活动 * Author: zzw * Date: 2020/9/16 16:10 */ public function add(){ global $_W,$_GPC; if($_W['ispost']){ //基本参数信息获取 $data = $_GPC['data']; $prize = $_GPC['prize']; $activityTime = $_GPC['activity_time']; $mysqlFun = new MysqlFunction(); //判断轮盘数量是否为偶数 if($data['type'] == 3){ if(count($prize) % 2 != 0) wl_message("轮盘数量不为偶数,请设置为偶数!" , referer() , 'error'); $data['wheel_bg'] = serialize($data['wheel_bg']); } //判断抽奖概率是否合法 $totalProbability = sprintf("%.0f",array_sum(array_column($prize,'probability'))); if($totalProbability != sprintf("%.0f",100)) wl_message("中奖概率错误,概率之和不为100%!当前概率之和:{$totalProbability}%" , referer() , 'error'); //判断活动是否存在 $isHave = pdo_get(PDO_NAME."draw",['title'=>$data['title']]); if($isHave) wl_message('已存在同名称活动!' , referer() , 'error'); //判断限制 if($data['total_join_times'] < $data['day_join_times']) wl_message('免费的总参加次数必须大于等于免费的每天参加次数!' , referer() , 'error'); if($data['total_draw_times'] < $data['day_draw_times']) wl_message('总中奖次数必须大于等于每天中奖次数!' , referer() , 'error'); if($data['total_parin_times'] < $data['day_parin_times']) wl_message('总参加次数必须大于等于每天参加次数!' , referer() , 'error'); //生成活动信息 $mysqlFun->startTrans(); $data['uniacid'] = $_W['uniacid']; $data['aid'] = $_W['aid']; $data['create_time'] = time(); $data['start_time'] = strtotime($activityTime['start']); $data['end_time'] = strtotime($activityTime['end']); $data['share_image'] = serialize($data['share_image']); $res = pdo_insert(PDO_NAME."draw",$data); if($res){ //处理奖品信息 $drawId = pdo_insertid(); foreach($prize as $pKey => $pVal){ $joinData = [ 'draw_id' => $drawId ,//抽奖活动id 'draw_goods_id' => $pVal['draw_goods_id'] ? : 0 ,//奖品id 'probability' => $pVal['probability'] ,//中奖概率 'serial_number' => $pVal['serial_number'] ,//序号(当前奖品在该活动中的顺序) ]; $result = pdo_insert(PDO_NAME."draw_join",$joinData); if(!$result){ $mysqlFun->rollback(); wl_message('添加失败,请刷新重试!' , referer() , 'error'); } } $mysqlFun->commit(); wl_message('添加成功!' , web_url('draw/draw/index') , 'success'); }else{ $mysqlFun->rollback(); wl_message('添加失败,请刷新重试!' , referer() , 'error'); } } //获取自定义装修菜单信息 if (p('diypage')) $menus = DiyMenu::getMenuList(); include wl_template('draw/add'); } /** * Comment: 编辑抽奖活动 * Author: zzw * Date: 2020/9/16 17:36 */ public function edit(){ global $_W,$_GPC; //参数信息获取 $id = intval($_GPC['id']) OR wl_message('参数错误,请刷新重试!' , referer() , 'error'); if($_W['ispost']){ //基本参数信息获取 $data = $_GPC['data']; $prize = $_GPC['prize']; $activityTime = $_GPC['activity_time']; $mysqlFun = new MysqlFunction(); //判断轮盘数量是否为偶数 if($data['type'] == 3){ if(count($prize) % 2 != 0) wl_message("轮盘数量不为偶数,请设置为偶数!" , referer() , 'error'); $data['wheel_bg'] = serialize($data['wheel_bg']); } //判断抽奖概率是否合法 $totalProbability = sprintf("%.0f",array_sum(array_column($prize,'probability'))); if($totalProbability != sprintf("%.0f",100)) wl_message("中奖概率错误,概率之和不为100%!当前概率之和:{$totalProbability}%" , referer() , 'error'); //判断活动是否存在 $isHave = pdo_get(PDO_NAME."draw",['title'=>$data['title'],'id <>'=>$id]); if($isHave) wl_message('已存在同名称活动!' , referer() , 'error'); //判断限制 if($data['total_join_times'] < $data['day_join_times']) wl_message('免费的总参加次数必须大于等于免费的每天参加次数!' , referer() , 'error'); if($data['total_draw_times'] < $data['day_draw_times']) wl_message('总中奖次数必须大于等于每天中奖次数!' , referer() , 'error'); if($data['total_parin_times'] < $data['day_parin_times']) wl_message('总参加次数必须大于等于每天参加次数!' , referer() , 'error'); //生成活动信息 $mysqlFun->startTrans(); $data['start_time'] = strtotime($activityTime['start']); $data['end_time'] = strtotime($activityTime['end']); $data['share_image'] = serialize($data['share_image']); pdo_update(PDO_NAME."draw",$data,['id'=>$id]); //删除所有的相关奖品信息 pdo_delete(PDO_NAME."draw_join",['draw_id'=>$id]); //处理奖品信息 foreach($prize as $pKey => $pVal){ //判断当前奖品是否存在 $joinData = [ 'draw_id' => $id ,//抽奖活动id 'draw_goods_id' => $pVal['draw_goods_id'] ? : 0 ,//奖品id 'probability' => $pVal['probability'] ,//中奖概率 'serial_number' => $pVal['serial_number'] ,//序号(当前奖品在该活动中的顺序) ]; $result = pdo_insert(PDO_NAME."draw_join",$joinData); if(!$result){ $mysqlFun->rollback(); wl_message('修改失败,请刷新重试!' , referer() , 'error'); } } $mysqlFun->commit(); wl_message('修改成功!' , web_url('draw/draw/index') , 'success'); } //进入编辑页面 获取当前活动基本参数信息 $info = pdo_get(PDO_NAME."draw",['id'=>$id]); $info['rule'] = htmlspecialchars_decode($info['rule']); $info['introduce'] = htmlspecialchars_decode($info['introduce']); $info['wheel_bg'] = unserialize($info['wheel_bg']); $data['share_image'] = unserialize($data['share_image']); //处理顶部幻灯片 if(!empty($info['share_image'])){ $flag = unserialize($info['share_image']); if($flag){ $info['share_image'] = $flag; }else{ $flag = $info['share_image']; $info['share_image'] = []; $info['share_image'][] = $flag; } } //获取当前活动相关的奖品信息列表 $parizeList = Draw::drawJoinList($id); $orderWhere = array_column($parizeList, 'serial_number'); array_multisort($orderWhere, SORT_ASC, $parizeList); $parizeList = array_combine($orderWhere,$parizeList) ; //获取自定义装修菜单信息 if (p('diypage')) $menus = DiyMenu::getMenuList(); include wl_template('draw/edit'); } /** * Comment: 删除一个抽奖活动信息 * Author: zzw * Date: 2020/9/16 18:13 */ public function delete(){ global $_W,$_GPC; //参数信息获取 $id = $_GPC['id'] OR show_json(0, '参数错误,请刷新重试!'); $mysqlFun = new MysqlFunction(); //删除内容 $mysqlFun->startTrans(); $res = pdo_delete(PDO_NAME."draw",['id'=>$id]); if($res && pdo_count(PDO_NAME."draw_join",['draw_id'=>$id]) > 0) $res = pdo_delete(PDO_NAME."draw_join",['draw_id'=>$id]); if ($res) { $mysqlFun->commit(); show_json(1 , '删除成功'); }else { $mysqlFun->rollback(); show_json(0 , '删除失败,请刷新重试'); } } /** * Comment: 基本设置内容 * Author: zzw * Date: 2020/9/17 11:14 */ public function set(){ global $_W,$_GPC; if($_W['ispost']){ $set = $_GPC['set']; Setting::agentsetting_save($set,'draw_set'); wl_message('设置成功!' , web_url('draw/draw/set') , 'success'); } //获取已存在的设置信息 $set = Setting::agentsetting_read('draw_set'); $set['rule'] = htmlspecialchars_decode($set['rule']); $set['introduce'] = htmlspecialchars_decode($set['introduce']); include wl_template('draw/set'); } }