test
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

898 lines
38 KiB

<?php
defined('IN_IA') or exit('Access Denied');
class Redpack_WeliamController{
/**
* Comment: 红包列表
*/
public function pack_lists(){
global $_W , $_GPC;
//参数获取
$pindex = max(1 , intval($_GPC['page']));
$psize = 10;
$name = trim($_GPC['name']);
//条件生成
$where = ['uniacid' => $_W['uniacid'],'aid'=>$_W['aid']];
if ($name) $where['title LIKE'] = "%".$name."%";
if($_GPC['status'] > 0){
if($_GPC['status'] == 3){
$where['status'] = 0;
}else{
$where['status'] = $_GPC['status'];
}
}
if($_GPC['export'] > 0){
$this -> exportRedpack($where);
}
//信息获取
$lists = pdo_getslice(PDO_NAME.'redpacks' , $where , [$pindex , $psize] , $total , [] , '' , "sort DESC,id DESC");
foreach ($lists as $key => &$val) {
$usetimes = [
date('Y-m-d' , $val['use_start_time']) . ' ~ ' . date('Y-m-d' , $val['use_end_time']) ,
'领取当日起' . $val['usetime_day1'] . '天内有效' ,
'领取次日起' . $val['usetime_day2'] . '天内有效'
];
$val['usetime_text'] = $usetimes[$val['usetime_type']];
$val['all_count'] = $val['all_count'] ? $val['all_count'] . '个' : '无限';
$val['limit_count'] = $val['limit_count'] ? $val['limit_count'] . '个' : '无限';
$val['createtime'] = date('Y-m-d H:i:s' , $val['createtime']);
$val['get_count'] = pdo_getcolumn(PDO_NAME.'redpack_records' , ['packid' => $val['id']] , 'COUNT(id)');
}
$pager = wl_pagination($total , $pindex , $psize);
include wl_template('redpack/pack_lists');
}
/**
* Comment: 导出红包
*/
public function exportRedpack($where){
global $_W , $_GPC;
$lists = pdo_getall(PDO_NAME.'redpacks' , $where ,'*', '',"sort DESC,id DESC");
foreach ($lists as $key => &$val) {
$newinfo = [];
$usetimes = [
date('Y-m-d' , $val['use_start_time']) . ' ~ ' . date('Y-m-d' , $val['use_end_time']) ,
'领取当日起' . $val['usetime_day1'] . '天内有效' ,
'领取次日起' . $val['usetime_day2'] . '天内有效'
];
$val['all_count'] = $val['all_count'] ? $val['all_count'] . '个' : '无限';
$val['limit_count'] = $val['limit_count'] ? $val['limit_count'] . '个' : '无限';
$val['get_count'] = pdo_getcolumn(PDO_NAME.'redpack_records' , ['packid' => $val['id']] , 'COUNT(id)');
//判断是否过期
if($val['usetime_type'] == 0 && $val['use_end_time'] <= time()) $val['status'] = 2;
$newinfo['id'] = $val['id'];
$newinfo['title'] = $val['title'];
$newinfo['price'] = $val['cut_money'].'元/满'.$val['full_money'].'可用';
$newinfo['scene'] = $val['scene'] ? '系统发放' : '自助领取';
$newinfo['limit'] = $val['limit_count'];
$newinfo['stk'] = $val['all_count'].'/'.$val['get_count'];
if($val['status'] == 2){
$newinfo['status'] = '过期';
}else if($val['status'] == 1){
$newinfo['status'] = '上架';
}else{
$newinfo['status'] = '下架';
}
$newinfo['time'] = $usetimes[$val['usetime_type']];
$newList[] = $newinfo;
}
//标题内容
$filter = [
'id' => 'ID',
'title' => '红包名称' ,
'price' => '红包金额/使用条件' ,
'scene' => '红包场景' ,
'limit' => '每人限量' ,
'stk' => '总数量/已领数量' ,
'time' => '使用期限' ,
'status' => '状态' ,
'mobile' => '发放手机号'
];
util_csv::export_csv_2($newList, $filter, '红包列表.csv');
exit();
}
/**
* Comment: 添加/编辑红包信息
*/
public function pack_edit(){
global $_W , $_GPC;
$id = intval($_GPC['id']);
//提交操作
if (checksubmit('submit')) {
$data = $_GPC['item'];
$data['use_aids'] = iserializer($_GPC['item']['use_aids']);
$data['use_sids'] = iserializer($_GPC['item']['use_sids']);
$data['use_start_time'] = strtotime($_GPC['usetime']['start']);
$data['use_end_time'] = strtotime($_GPC['usetime']['end']);
//商品参数处理
$data['rush_ids'] = iserializer($_GPC['item']['rush_ids']);
$data['group_ids'] = iserializer($_GPC['item']['group_ids']);
$data['fight_ids'] = iserializer($_GPC['item']['fight_ids']);
$data['bargain_ids'] = iserializer($_GPC['item']['bargain_ids']);
$level = $_GPC['level'];
$data['transferlevel'] = serialize($level);
//信息判断
if (($data['usetime_type'] == 1 && empty($data['usetime_day1'])) || ($data['usetime_type'] == 2 && empty($data['usetime_day2']))) wl_message('请填写有效天数' , referer() , 'error');
//添加/编辑操作
if (!empty($id)) {
pdo_update(PDO_NAME.'redpacks' , $data , ['id' => $id]);
}else {
$data['aid'] = $_W['aid'];
$data['uniacid'] = $_W['uniacid'];
$data['createtime'] = time();
pdo_insert(PDO_NAME.'redpacks' , $data);
$id = pdo_insertid();
}
wl_message('编辑红包成功' , web_url('redpack/redpack/pack_edit' , ['id' => $id]) , 'success');
}
//添加/修改操作
if (!empty($id)) {
$item = pdo_get(PDO_NAME.'redpacks'
, ['uniacid' => $_W['uniacid'] , 'id' => $id,'aid'=>$_W['aid']]);
$item['use_aids'] = iunserializer($item['use_aids']);
$item['use_sids'] = iunserializer($item['use_sids']);
//商品参数处理
$item['rush_ids'] = iunserializer($item['rush_ids']);
$item['group_ids'] = iunserializer($item['group_ids']);
$item['fight_ids'] = iunserializer($item['fight_ids']);
$item['bargain_ids'] = iunserializer($item['bargain_ids']);
$item['level'] = unserialize($item['transferlevel']);
}else {
//默认排序为当前的最大值
$maxSort = pdo_fetchcolumn("SELECT max(sort) FROM " . tablename(PDO_NAME . "redpacks"));
$sort = $maxSort ? ($maxSort + 1) : 1;
$item = [
'sort' => $sort ,
'status' => 1 ,
'scene' => 1 ,
'use_start_time' => time() ,
'use_end_time' => time() + 60 * 24 * 3600,
'usegoods_type' => 1
];
//在代理商平台的兼容信息
if(is_agent()){
$item['use_aids'] = [$_W['aid']];
}
}
//代理商列表&商家列表
if(is_agent()){
$agents = pdo_getall(PDO_NAME.'agentusers' , ['uniacid' => $_W['uniacid'],'id'=>$_W['aid']] , ['id' , 'agentname']);
}else{
$agents = pdo_getall(PDO_NAME.'agentusers' , ['uniacid' => $_W['uniacid']] , ['id' , 'agentname']);
$agents = array_merge([['id'=>0,'agentname'=>'总平台']],$agents);
}
$stores = pdo_getall(PDO_NAME.'merchantdata' , ['uniacid' => $_W['uniacid'],'aid'=>$_W['aid']] , ['id' , 'storename']);
//获取当前代理的商品信息 抢购、团购、拼团、砍价
$where = ['uniacid' => $_W['uniacid'] , 'aid' => $_W['aid'],'status'=>[1,2]];
$rushList = pdo_getall(PDO_NAME . "rush_activity" , $where,['id','name']);
$grouponList = pdo_getall(PDO_NAME . "groupon_activity" , $where,['id','name']);
$fightList = pdo_getall(PDO_NAME . "fightgroup_goods" , $where,['id','name']);
$bargainList = pdo_getall(PDO_NAME . "bargain_activity" , $where,['id','name']);
//获取会员信息
$levels = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_halflevel') . "WHERE uniacid = {$_W['uniacid']} AND status = 1 ORDER BY sort DESC");
include wl_template('redpack/pack_edit');
}
/**
* Comment: 红包上下架操作
* Author: zzw
* Date: 2020/2/17 10:40
*/
public function pack_changeStatus(){
global $_W,$_GPC;
#1、参数获取
$id = intval($_GPC['id']);
$status = intval($_GPC['status']);
#2、改变状态 0=下架;1=上架
if($status == 1) $data['status'] = 0;
else $data['status'] = 1;
#3、信息修改
if(pdo_update(PDO_NAME."redpacks",$data,['id'=>$id])) show_json(1);
else show_json(0,'请刷新重试!');
}
/**
* Comment: 删除红包并且同时删除已领取的红包
*/
public function pack_del(){
global $_W , $_GPC;
$id = $_GPC['id'] ? : $_GPC['ids'];
$items = pdo_getall(PDO_NAME.'redpacks' , ['id' => $id , 'uniacid' => $_W['uniacid']] , ['id']);
foreach ($items as $item) {
//删除红包信息
pdo_delete(PDO_NAME.'redpacks' , ['id' => $item['id']]);
//删除已领取的红包信息
pdo_delete(PDO_NAME.'redpack_records' , ['packid' => $item['id']]);
//删除已关联到节日红包中的信息
pdo_delete(PDO_NAME."redpack_festival_join",['pack_id'=>$item['id']]);
}
show_json(1 , ['url' => referer()]);
}
/**
* Comment: 红包发放
*/
public function pack_send(){
global $_W , $_GPC;
$id = intval($_GPC['id']);
if ($_W['ispost']) {
$users = $_GPC['mids'];
if (!empty($users)) {
foreach ($users as $user) {
Redpack::pack_send($user , $id , 'send');
}
}
show_json(1 , ['url' => referer()]);
}
include wl_template('redpack/pack_send');
}
/**
* Comment: 导入红包发放
*/
public function pack_send_csv(){
global $_W, $_GPC;
#1、将获取基本信息
//$id = $_GPC['redpackid'];
$name = $_GPC['name'];//文件储存路径
$fullName = PATH_ATTACHMENT . $name;//文件在本地服务器暂存地址
#2、读取excel中的内容
$info = util_csv::read_csv_lines($fullName, 999, 0);
unlink($fullName);//获取文件信息后将.cvs文件删除
#3、对读取到的信息进行处理
foreach ($info as $k => &$v) {
//3-1 判断是否存在数据 不存在是空行,不进行任何操作
if (!is_array($v)) {
unset($info[$k]);
continue;
}
//3-2 编码转换 由gbk转为urf-8
$separator = '*separator*';//分割符 写成长字符串 防止出错
$encodres = mb_detect_encoding(implode($separator, $v), array("ASCII","GB2312","GBK","UTF-8"));
if($encodres != 'UTF-8'){
$v = explode($separator, iconv('gbk', 'utf-8', implode($separator, $v)));
}
$id = $v[0];
$getMember = pdo_get('wlmerchant_member',array('mobile' => $v[8],'uniacid' => $_W['uniacid']),array('id','nickname'));
if(empty($getMember)){
$v['send_result'] = '手机号不存在,无法发放';
continue;
}
$res = Redpack::pack_send($getMember['id'] , $id , 'send');
if(is_error($res)){
$v['send_result'] = $res['message'];
}else{
$v['send_result'] = '发放成功';
}
}
#4、定义结果表格的标题
$filter = array(
0 => 'ID',
1 => '红包名称' ,
2 => '红包金额/使用条件' ,
3 => '红包场景' ,
4 => '每人限量' ,
5 => '总数量/已领数量' ,
6 => '使用期限' ,
7 => '状态' ,
8 => '发放手机号',
'send_result' => '发放结果'
);
#5、返回批量发货的结果信息表
util_csv::save_csv($info, $filter, $_W['uniacid'].'/'.date('Y-m-d',time()).'/'.'批量发放结果信息'.date('Y-m-d',time()).'.csv');
util_csv::export_csv_2($info, $filter, '批量发放结果信息'.date('Y-m-d',time()).'.csv');
}
/**
* Comment: 领取记录
*/
public function record_lists(){
global $_W , $_GPC;
//参数获取
$pindex = max(1 , intval($_GPC['page']));
$psize = 10;
$packId = intval($_GPC['packid']);
$name = trim($_GPC['name']);
$festivalId = intval($_GPC['festival_id']);
$type = $_GPC['type'];
$status = $_GPC['status'];
//查询条件生成
$where['uniacid'] = $_W['uniacid'];
$where['aid'] = $_W['aid'];
//通过红包名称查询
if($name){
//信息获取
$lists = pdo_getall(PDO_NAME."redpacks",['title LIKE'=> '%' . $name. '%'],'id');
$ids = array_column($lists,'id');
$where['packid IN'] = $ids;
}
if($type == 1){
$where['type'] = 1;
}else if($type == 2){
$where['type'] = 2;
}else if($type == 3){
$where['type'] = 0;
}
if($status > 0){
if($status == 4){
$where['status'] = 0;
}else{
$where['status'] = $status;
}
}
//通过红包id查询
if($packId){
$where['packid'] = $packId;
$name = pdo_getcolumn(PDO_NAME.'redpacks',array('id'=>$packId),'title');
}
//通过节日红包活动查询
if($festivalId) $where['festival_id'] = $festivalId;
//领取记录获取
$lists = pdo_getslice(PDO_NAME.'redpack_records' ,$where , [$pindex , $psize] , $total , [] , '' , "id DESC");
foreach ($lists as $key => &$val) {
$val['createtime'] = date('Y-m-d H:i:s' , $val['createtime']);
$val['usetime'] = $val['usetime'] ? date('Y-m-d H:i:s' , $val['usetime']) : '--';
$val['pack'] = Redpack::pack_get($val['packid']);
$val['member'] = Member::wl_member_get($val['mid'] , ['mobile' , 'nickname' , 'avatar']);
//判断是否为节日红包领取
$val['festival_name'] = $val['festival_id'] > 0 ? pdo_getcolumn(PDO_NAME."redpack_festival",['id'=>$val['festival_id']],'name') : '--';
//判断是否有转赠记录
$val['trflag'] = pdo_getcolumn(PDO_NAME.'transferRecord',array('type'=>2,'objid'=>$val['id']),'id');
//查询使用商户
if($val['plugin'] == 'rush'){
$val['sid'] = pdo_getcolumn(PDO_NAME.'rush_order',array('id'=>$val['orderid']),'sid');
}else{
$val['sid'] = pdo_getcolumn(PDO_NAME.'order',array('id'=>$val['orderid']),'sid');
}
$val['storename'] = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$val['sid']),'storename');
}
$pager = wl_pagination($total , $pindex , $psize);
//统计信息获取
$all_num = pdo_getcolumn(PDO_NAME.'redpack_records' ,array_merge(['aid'=>$_W['aid'],'uniacid' => $_W['uniacid']],$where) , 'COUNT(id)');
$use_num = pdo_getcolumn(PDO_NAME.'redpack_records' ,array_merge($where,['aid'=>$_W['aid'],'uniacid' => $_W['uniacid'] , 'status' => 1]) , 'COUNT(id)');
$end_num = pdo_getcolumn(PDO_NAME.'redpack_records' ,array_merge($where,['aid'=>$_W['aid'],'uniacid' => $_W['uniacid'] , 'status' => 2]), 'COUNT(id)');
if($use_num > 0) $use_rate = sprintf("%0.2f",$use_num/$all_num*100);
else $use_rate = 0;
$transfer_num = pdo_getcolumn(PDO_NAME.'redpack_records' ,array_merge($where, ['aid'=>$_W['aid'],'uniacid' => $_W['uniacid'],'transferflag'=>1]) , 'COUNT(id)');
include wl_template('redpack/record_lists');
}
/**
* Comment: 删除领取记录
*/
public function record_del(){
global $_W , $_GPC;
$id = $_GPC['id'] ? : $_GPC['ids'];
$items = pdo_getall(PDO_NAME.'redpack_records' , ['id' => $id , 'uniacid' => $_W['uniacid']] , ['id']);
foreach ($items as $item) {
pdo_delete(PDO_NAME.'redpack_records' , ['id' => $item['id']]);
}
show_json(1 , ['url' => referer()]);
}
/**
* Comment: 红包使用
*/
public function record_use(){
global $_W , $_GPC;
$id = $_GPC['id'] ? : $_GPC['ids'];
$items = pdo_getall(PDO_NAME.'redpack_records' , ['id' => $id , 'uniacid' => $_W['uniacid']] , ['id']);
foreach ($items as $item) {
pdo_update(PDO_NAME.'redpack_records' , ['status' => 1 , 'usetime' => time()] , ['id' => $item['id']]);
}
show_json(1 , ['url' => referer()]);
}
/**
* Comment: 转赠记录
*/
public function record_transfer(){
global $_W , $_GPC;
$id = $_GPC['id'];
$record = pdo_getall('wlmerchant_transferRecord',array('objid' => $id,'type' =>2),'','','createtime DESC');
if(!empty($record)){
foreach ($record as &$re){
$omember = pdo_get(PDO_NAME.'member',array('id'=>$re['omid']),['nickname','avatar']);
$re['nickname'] = $omember['nickname'];
$re['avatar'] = tomedia($omember['avatar']);
if($re['nmid'] > 0){
$nmember = pdo_get(PDO_NAME.'member',array('id'=>$re['nmid']),['nickname','avatar']);
$re['getnickname'] = $nmember['nickname'];
$re['getavatar'] = $nmember['avatar'];
}
}
}
include wl_template('redpack/record_transfer');
}
/**
* Comment: 进入新人红包设置页面
* Author: zzw
* Date: 2020/2/18 14:11
*/
public function new_pack(){
global $_W , $_GPC;
#1、获取红包列表信息 仅获取上架并且为 系统发放 的红包
$where['uniacid'] = $_W['uniacid'];
$where['aid'] = $_W['aid'];
//$where['status'] = 1;
$where['scene'] = 1;
$list = pdo_getall(PDO_NAME."redpacks",$where
,['id','title','all_count','limit_count','full_money','cut_money','usegoods_type','use_start_time','use_end_time','usetime_type','usetime_day1','usetime_day2']);
if(!$list) wl_message('无可使用的红包,请先添加系统发放并且上架中的红包!' ,web_url('redpack/redpack/pack_lists'), 'error');
include wl_template('redpack/new_pack');
}
/**
* Comment: 新人红包信息设置
* Author: zzw
* Date: 2020/2/18 14:10
*/
public function new_pack_set(){
global $_W,$_GPC;
$setName = 'red_pack_new';
$set = $_GPC['set'];
#2、判断是否添加红包
$ids = array_column($set['list'],'id');
if($set['status'] == 1 && !$set['list']) Commons::sRenderError('无红包信息,请先添加红包!');
if(in_array(0,$ids)) Commons::sRenderError('存在未选择红包的信息!');
if(count($ids) != count(array_unique($ids))) Commons::sRenderError('存在重复的红包信息!');
#3、记录设置信息
$set['color'] = serialize($set['color']);//颜色设置信息转义
Setting::agentsetting_save($set,$setName);
Commons::sRenderSuccess('编辑成功!');
}
/**
* Comment: 获取新人红包设置信息
* Author: zzw
* Date: 2020/2/18 14:10
*/
public function new_pack_get(){
global $_W,$_GPC;
$setName = 'red_pack_new';
#1、获取红包列表信息 仅获取上架并且为 系统发放 的红包
$where['uniacid'] = $_W['uniacid'];
$where['aid'] = $_W['aid'];
//$where['status'] = 1;
$where['scene'] = 1;
$list = pdo_getall(PDO_NAME."redpacks",$where
,['id','title','status','all_count','limit_count','full_money','cut_money','usegoods_type','use_start_time','use_end_time','usetime_type','usetime_day1','usetime_day2']);
if(!$list) Commons::sRenderError('无可使用的红包,请先添加系统发放且上架中的红包!',['url'=>web_url('redpack/redpack/pack_lists')]);
#2、循环处理红包信息
foreach($list as $key => &$val){
//状态信息
if($val['usetime_type'] == 0 && $val['use_end_time'] <= time()) {
//判断是否过期 删除当前信息并且跳出本次循环
// unset($list[$key]);
// continue;
$state = '已过期';
}else if($val['status'] == 0){
$state = '已下架';
}else{
$state = '正常';
}
$val['title'] = $val['title']."({$state})";
//信息处理
$usetimes = [
date('Y-m-d' , $val['use_start_time']) . ' ~ ' . date('Y-m-d' , $val['use_end_time']) ,
'领取当日起' . $val['usetime_day1'] . '天内有效' ,
'领取次日起' . $val['usetime_day2'] . '天内有效'
];
$val['usetime_text'] = $usetimes[$val['usetime_type']];
$val['cut_money'] = sprintf("%.2f",$val['cut_money']);
$val['full_money'] = sprintf("%.2f",$val['full_money']);
//删除无效数据
unset($val['use_start_time']);
unset($val['usetime_day1']);
unset($val['usetime_day2']);
unset($val['usetime_type']);
}
#2、构建一个以id作为下标的新数组
$idArr = array_column($list,'id');
$newList = array_combine($idArr,$list);
#2、获取设置信息
$set = Setting::agentsetting_read($setName);
if(!$set){
$set = [
'status' => 0 ,
'image' => URL_WEB_RESOURCE . 'images/new_redpack.png' ,
'image_url' => URL_WEB_RESOURCE . 'images/new_redpack.png' ,
'wheres' => 0 ,
'list' => [] ,
'color' => [
'bg_color' => '#F02C2C' ,
'price_color' => '#FF4444' ,
'button_color' => '#FFE95D' ,
'text_color' => '#F02C2C' ,
] ,
];
}else{
$set['color'] = unserialize($set['color']);
}
#2、信息拼装
$data = [
'list' => $list ,
'new_list' => $newList ,
'set' => $set ,
];
Commons::sRenderSuccess('成功',$data);
}
/**
* Comment: 节日红包信息
* Author: zzw
* Date: 2020/2/19 10:46
*/
public function festival_pack(){
global $_W,$_GPC;
#1、参数获取
$pindex = max(1 , intval($_GPC['page']));
$psize = 10;
$name = trim($_GPC['name']);
#1、条件生成
$where = ['uniacid' => $_W['uniacid'],'aid'=>$_W['aid']];
if ($name) $where['name LIKE'] = "%".$name."%";
#1、信息获取
$field = ['id','status','name','label','start_time','end_time'];
$lists = pdo_getslice(PDO_NAME.'redpack_festival' , $where , [$pindex , $psize] , $total , $field , '' , "id DESC");
foreach ($lists as $key => &$val) {
//数据处理
$val['time'] = date("Y-m-d",$val['start_time']).' ~ '.date("Y-m-d",$val['end_time']);
$val['list'] = Redpack::getRedPackFestivalJoin($val['id'],'b.id,b.title,convert(b.full_money,decimal(10,2)) as full_money,convert(b.cut_money,decimal(10,2)) as cut_money,a.limit');
//判断是否已经过期
if($val['end_time'] <= time()) $val['status'] = 2;
unset($val['start_time']);
unset($val['end_time']);
}
$pager = wl_pagination($total , $pindex , $psize);
include wl_template('redpack/festival_pack');
}
/**
* Comment: 进入节日红包编辑页面
* Author: zzw
* Date: 2020/2/18 17:23
*/
public function festival_pack_edit(){
global $_W,$_GPC;
$id = intval($_GPC['id']);
$where['uniacid'] = $_W['uniacid'];
$where['aid'] = $_W['aid'];
$where['status'] = 1;
$where['scene'] = 1;
$list = pdo_getall(PDO_NAME."redpacks",$where
,['id','title','all_count','limit_count','full_money','cut_money','usegoods_type','use_start_time','use_end_time','usetime_type','usetime_day1','usetime_day2']);
if(!$list) wl_message('无可使用的红包,请先添加系统发放并且上架中的红包!' ,web_url('redpack/redpack/pack_lists'), 'error');
include wl_template('redpack/festival_pack_edit');
}
/**
* Comment: 获取某条节日红包信息
* Author: zzw
* Date: 2020/2/18 18:18
*/
public function festival_pack_get(){
global $_W,$_GPC;
$id = intval($_GPC['id']);
#1、获取红包列表信息 仅获取上架并且为 系统发放 的红包
$where['uniacid'] = $_W['uniacid'];
$where['aid'] = $_W['aid'];
$where['status'] = 1;
$where['scene'] = 1;
$list = pdo_getall(PDO_NAME."redpacks",$where
,['id','title','all_count','limit_count','full_money','cut_money','usegoods_type','use_start_time','use_end_time','usetime_type','usetime_day1','usetime_day2']);
if(!$list) Commons::sRenderError('无红包信息,请先添加红包!');
#2、循环处理红包信息
foreach($list as $key => &$val){
//判断是否过期 删除当前信息并且跳出本次循环
if($val['usetime_type'] == 0 && $val['use_end_time'] <= time()) {
unset($list[$key]);
continue;
}
//信息处理
$usetimes = [
date('Y-m-d' , $val['use_start_time']) . ' ~ ' . date('Y-m-d' , $val['use_end_time']) ,
'领取当日起' . $val['usetime_day1'] . '天内有效' ,
'领取次日起' . $val['usetime_day2'] . '天内有效'
];
$val['usetime_text'] = $usetimes[$val['usetime_type']];
$val['cut_money'] = sprintf("%.2f",$val['cut_money']);
$val['full_money'] = sprintf("%.2f",$val['full_money']);
//删除无效数据
unset($val['use_start_time']);
unset($val['usetime_day1']);
unset($val['usetime_day2']);
unset($val['usetime_type']);
}
#2、构建一个以id作为下标的新数组
$idArr = array_column($list,'id');
$newList = array_combine($idArr,$list);
#2、获取当前节日红包的信息
if($id){
$info = pdo_get(PDO_NAME."redpack_festival",['id'=>$id]);
if(!$info) Commons::sRenderError('信息获取失败,请刷新重试!');
$info['color'] = unserialize($info['color']);
$info['image_url'] = toimage($info['images']);
$info['start_time'] = date("Y-m-d",$info['start_time']);
$info['end_time'] = date("Y-m-d",$info['end_time']);
$info['list'] = Redpack::getRedPackFestivalJoin($id,'a.pack_id,a.limit');
}else{
$info = [
'status' => 1 ,
'name' => '新年红包' ,
'label' => '新年' ,
'images' => URL_WEB_RESOURCE . 'images/festival_redpack_5.png' ,
'image_url' => URL_WEB_RESOURCE . 'images/festival_redpack_5.png' ,
'color' => [
'bg_color' => '#BD1F29' ,
'price_color' => '#FF4444' ,
'button_color' => '#F6D286' ,
'text_color' => '#BD1F29' ,
] ,
'start_time' => date("Y-m-d" , time()) ,
'end_time' => date("Y-m-d" , strtotime("+1 Month" , time())) ,
'list' => [] ,
'redpack_calss' => 5 ,//1=自定义类型,2=中秋红包,3=国庆红包,4=圣诞红包,5=新年红包,6=端午红包
];
}
#2、信息拼装
$data = [
'list' => $list ,
'new_list' => $newList ,
'info' => $info ,
];
Commons::sRenderSuccess('成功',$data);
}
/**
* Comment: 编辑节日红包信息
* Author: zzw
* Date: 2020/2/18 17:53
*/
public function festival_pack_set(){
global $_W,$_GPC;
#1、参数获取
$id = intval($_GPC['id']);
$info = $_GPC['info'] ? : [];
#2、判断信息是否填写完整
if($info['status'] == 1 && !$info['name']) Commons::sRenderError('请输入节日名称!');
if($info['status'] == 1 && !$info['label']) Commons::sRenderError('请输入红包标签!');
$ids = array_column($info['list'],'pack_id');
if($info['status'] == 1 && !$info['list']) Commons::sRenderError('无红包信息,请先添加红包!');
if(in_array(0,$ids)) Commons::sRenderError('存在未选择红包的信息!');
if(count($ids) != count(array_unique($ids))) Commons::sRenderError('存在重复的红包信息!');
#3、记录信息/修改信息
$joinList = $info['list'];
unset($info['image_url']);
unset($info['list']);
//颜色设置信息转义
$info['color'] = serialize($info['color']);
//时间信息转义
$info['start_time'] = strtotime($info['start_time']);
$info['end_time'] = strtotime($info['end_time']);
if($id){
//修改操作
pdo_update(PDO_NAME."redpack_festival",$info,['id'=>$id]);
//删除已经存在的关联信息
pdo_delete(PDO_NAME."redpack_festival_join",['festival_id'=>$id]);
}else{
$info['uniacid'] = $_W['uniacid'];
$info['aid'] = $_W['aid'];
//添加操作
pdo_insert(PDO_NAME."redpack_festival",$info);
$id = pdo_insertid();
}
#3、添加关联信息
foreach($joinList as $key => $val){
$data = [
'uniacid' => $_W['uniacid'] ,
'pack_id' => $val['pack_id'] ,//红包id
'festival_id' => $id ,//节日信息id
'limit' => $val['limit'] ,//每人领取限制
];
pdo_insert(PDO_NAME."redpack_festival_join",$data);
}
Commons::sRenderSuccess('编辑成功!',['id'=>$id]);
}
/**
* Comment: 节日红包上下架操作
* Author: zzw
* Date: 2020/2/19 10:28
*/
public function festival_pack_changeStatus(){
global $_W,$_GPC;
#1、参数获取
$id = intval($_GPC['id']);
$status = intval($_GPC['status']);
#2、改变状态 0=下架;1=上架
if($status == 1) $data['status'] = 0;
else $data['status'] = 1;
#3、信息修改
if(pdo_update(PDO_NAME."redpack_festival",$data,['id'=>$id])) show_json(1);
else show_json(0,'请刷新重试!');
}
/**
* Comment: 节日红包删除操作
* Author: zzw
* Date: 2020/2/19 10:31
*/
public function festival_pack__del(){
global $_W , $_GPC;
$id = $_GPC['id'] ? : $_GPC['ids'];
$items = pdo_getall(PDO_NAME.'redpack_festival' , ['id' => $id , 'uniacid' => $_W['uniacid']] , ['id']);
foreach ($items as $item) {
//删除节日红包信息
pdo_delete(PDO_NAME.'redpack_festival' , ['id' => $item['id']]);
//删除通过当前活动领取的红包信息
pdo_delete(PDO_NAME.'redpack_records' , ['festival_id' => $item['id']]);
}
show_json(1);
}
/**
* Comment: 更换模板
* Author: zzw
* Date: 2020/2/26 10:34
*/
public function festival_pack_modelSelect(){
global $_W,$_GPC;
#1、参数获取
$id = $_GPC['id'] ? : 0;
$redPackCalss = $_GPC['redpack_calss'] ? : 1;
#2、判断是否已存在信息 并且模板类型为当前选中类型 符合条件则返回已存在的信息 否则返回默认信息
if($id > 0){
$info = pdo_get(PDO_NAME."redpack_festival",['id'=>$id]);
$list = Redpack::getRedPackFestivalJoin($id,'a.pack_id,a.limit');
if($info['redpack_calss'] == $redPackCalss){
if(!$info) Commons::sRenderError('信息获取失败,请刷新重试!');
$info['color'] = unserialize($info['color']);
$info['image_url'] = toimage($info['images']);
$info['start_time'] = date("Y-m-d",$info['start_time']);
$info['end_time'] = date("Y-m-d",$info['end_time']);
$info['list'] = $list;
Commons::sRenderSuccess('成功',$info);
}
}
#3、模板获取 2=中秋红包,3=国庆红包,4=圣诞红包,5=新年红包,6=端午红包
switch ($redPackCalss){
case 2:
$info = [
'name' => '中秋红包' ,
'label' => '中秋' ,
'images' => URL_WEB_RESOURCE . 'images/festival_redpack_2.png' ,
'image_url' => URL_WEB_RESOURCE . 'images/festival_redpack_2.png' ,
'color' => [
'bg_color' => '#31345D' ,
'price_color' => '#FF4444' ,
'button_color' => '#FFE95D' ,
'text_color' => '#31345D' ,
] ,
'redpack_calss' => 2 ,
];
break;//中秋红包
case 3:
$info = [
'name' => '国庆红包' ,
'label' => '国庆' ,
'images' => URL_WEB_RESOURCE . 'images/festival_redpack_3.png' ,
'image_url' => URL_WEB_RESOURCE . 'images/festival_redpack_3.png' ,
'color' => [
'bg_color' => '#F02C2C' ,
'price_color' => '#FF4444' ,
'button_color' => '#FFE95D' ,
'text_color' => '#F02C2C' ,
] ,
'redpack_calss' => 3 ,
];
break;//国庆红包
case 4:
$info = [
'name' => '圣诞红包' ,
'label' => '圣诞' ,
'images' => URL_WEB_RESOURCE . 'images/festival_redpack_4.png' ,
'image_url' => URL_WEB_RESOURCE . 'images/festival_redpack_4.png' ,
'color' => [
'bg_color' => '#E33D2C' ,
'price_color' => '#FF4444' ,
'button_color' => '#FFE95D' ,
'text_color' => '#E33D2C' ,
] ,
'redpack_calss' => 4 ,
];
break;//圣诞红包
case 5:
$info = [
'name' => '新年红包' ,
'label' => '新年' ,
'images' => URL_WEB_RESOURCE . 'images/festival_redpack_5.png' ,
'image_url' => URL_WEB_RESOURCE . 'images/festival_redpack_5.png' ,
'color' => [
'bg_color' => '#BD1F29' ,
'price_color' => '#FF4444' ,
'button_color' => '#F6D286' ,
'text_color' => '#BD1F29' ,
] ,
'redpack_calss' => 5 ,
];
break;//新年红包
case 6:
$info = [
'name' => '端午红包' ,
'label' => '端午' ,
'images' => URL_WEB_RESOURCE . 'images/festival_redpack_6.png' ,
'image_url' => URL_WEB_RESOURCE . 'images/festival_redpack_6.png' ,
'color' => [
'bg_color' => '#C1ECD3' ,
'price_color' => '#FF4444' ,
'button_color' => '#038233' ,
'text_color' => '#C1ECD3' ,
] ,
'redpack_calss' => 6 ,
];
break;//端午红包
}
#4、添加模板公共信息
$info['status'] = 1;
$info['start_time'] = date("Y-m-d" , time());
$info['end_time'] = date("Y-m-d" , strtotime("+1 Month" , time()));
$info['list'] = $list ? $list : [];
Commons::sRenderSuccess('成功',$info);
}
/**
* Comment: 保存设置信息
* Author: zzw
* Date: 2020/3/17 15:13
*/
public function set(){
global $_W,$_GPC;
#1、名称设置
$name = 'red_pack_set';
#2、保存设置信息
if (checksubmit('submit')){
$set = $_GPC['set'];
$set['intervalmin'] = sprintf("%.0f",$set['intervalmin']);
$res = Setting::wlsetting_save($set,$name);
if ($res) show_json(1);
else show_json(0, '保存失败');
}
#3、获取设置信息
$set = Setting::wlsetting_read($name);
include wl_template('redpack/set');
}
}