您的位置:首页 > 移动开发 > 微信开发

微信营销活动

2015-09-08 09:54 567 查看

微信开发中的营销活动

微信营销活动推广,在公众号中一般用于设置菜单,也适用于消息的推送,也用于消息的回复。除消息推送属于主动响应外,其他则属于被动消息响应。被动响应则由一套关键字系统服务,当用户发送关键字到服务器,则触发响应的事件,服务器则以http的方式响应用户。

下面具体介绍一下关键字系统:

关键词系统

1.信息结构

CREATE TABLE `custom_keyword` (
`aid` int(11) unsigned NOT NULL COMMENT '公众号id',
`business_id` int(11) unsigned NOT NULL COMMENT '商户id',
`plc_sourceid` varchar(50) NOT NULL COMMENT '公众账号原始id',
`group_id` int(11) unsigned NOT NULL COMMENT '规则分组',
`custom_reply_id` varchar(64) NOT NULL COMMENT '回复内容id',
`ktag` varchar(50) NOT NULL COMMENT '关键词tag',
`match_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '匹配类型:1全配 2模糊',
`reply_type` smallint(6) NOT NULL DEFAULT '1' COMMENT '回复类型:1文本 2图文 3音乐',
`is_hiden` smallint(6) NOT NULL DEFAULT '0' COMMENT '0显示大于零隐藏 1关注时回复 2活动时回复',
`ctime` int(11) NOT NULL COMMENT '创建时间',
`flag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1删除标志',
UNIQUE KEY `uindex_b_p_k` (`business_id`,`plc_sourceid`,`ktag`),
UNIQUE KEY `uindex_a_k` (`aid`,`ktag`),
KEY `i_aid_group_id` (`aid`,`group_id`),
KEY `i_business_id_plc_sourceid_group_id` (`business_id`,`plc_sourceid`,`group_id`),
KEY `i_aid` (`aid`),
KEY `i_business_id_plc_sourceid` (`business_id`,`plc_sourceid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='关键字tags列表';


2.工作流程图



图1-1 关键词系统工作流图

用户状态系统

1.信息结构

CREATE TABLE `userlisten

- 列表内容

` (
`aid` int(11) unsigned NOT NULL COMMENT '公众账号id',
`wechat_id` varchar(50) NOT NULL COMMENT '用户openid',
`modules` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '模块',
`status` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '模块状态',
`reply_appid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '回复的应用id',
`reply_type` smallint(6) unsigned NOT NULL DEFAULT '0' COMMENT '回复类型',
`utime` int(11) unsigned NOT NULL COMMENT '更新时间',
`ctime` int(11) unsigned NOT NULL COMMENT '创建时间',
`flag` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '删除标志',
UNIQUE KEY `unique_a_wechat_id` (`aid`,`wechat_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


2.工作流程图



图1-2 用户状态工作流图

结论:所有营销活动,都与关键词系统有关,涉及到图文回复、素材管理(微信素材管理、第三方素材管理),前端页面展示相关的活动,经由js处理,将结果反馈给服务器,形成用户与服务器(微信-第三方)的交互。

微信墙

微信墙需求原型:





标题用于显示在大屏幕上,关键词用于用户触发该微信墙。

这里是有一篇关于微信墙的文章,介绍很详细,《微信墙怎么弄》

根据需求,首先是把所有的微信墙在后台显示出来(也可以带query查询,query数据以post形式发送):

public function actionIndex(){
$aid = intval(Yii::app()->request->getParam('aid));
$cret = Wechat::model()->getPlcaccount(array('id' => $aid, 'business_id' => $this->sdid));
$size = 12;
$page = intval(Yii::app()->request->getParam('page',1));
$aCondition = array('business_id' => $this->sdid
, 'plc_sourceid' => $cret['plc_sourceid']);
if($_GET['keywords']){
$keywords = filterString($_GET['keywords']);
$aCondition['keyword'] = array('op'=>'LIKE', 'val' = "%$keywords%");
}
$data = Wall::model()->getWall($page,$size,$aCondition,'wall');
$this->assign('data',$data);
$this->addCss('bootstrap_min','bootstrap_responsive_min','style','todc_bootstrap','themes','inside');
$this->addScript('bootstrap_min','inside','plugins.daterangepicker.moment_min');
$this->assign('aid',$aid);
$this->display('index');
}


对index操作中的变量及函数说明:

aid
是公众号托管到第三方系统中生成的id,属于第三方数据库字段,不属于微信服务器数据字段,也就是绑定公众号时生成的id

sdid
business_id
是商户注册第三方服务时生成的账户id

size
,
page
是分页函数用到的参数,分别表示大小,页数

plc_sourceid
是公众号原始id,可以登录微信后台,在
公众号设置
中可以查询到。

编辑微信墙:

public function actionEdit() {

if(empty($_POST)) {
$aid = (int)Yii::app()->request->getParam('aid');
$id = (int)Yii::app()->request->getParam('id');
$cret = Wechat::model()->getPlcaccount(array('id' => $aid, 'business_id' => $this->sdid));
$arr = array(
//'plc_sourceid'=>$cret['plc_sourceid'],
//'business_id' => $this->sdid,
'pid' => $aid,
'status' => 1,
'lt' => array('start_time' => date('Y-m-d H:i:s')),
'gt' => array('end_time' => date('Y-m-d H:i:s'))
//'start_time' => array('op'=>'<', val=>time()),
//'end_time' => array('op'=>'>', val=>time())
);
/*读取投票活动的信息*/
//$act_vote = activity::model()->getVote(1, 10, $arr);

$act_vote = Vote::model()->getVoteList($arr,1,10);
$this->assign('act_vote', $act_vote);
$this->addCss('bootstrap_min', 'bootstrap_responsive_min', 'style', 'todc_bootstrap_button', 'themes', 'plugins.uploadify.uploadify_t', 'plugins.daterangepicker.daterangepicker', 'inside');
$this->addScript('bootstrap_min', 'plugins.validation.jquery_validate_min', 'plugins.validation.jquery_validate_methods', 'plugins.form.jquery_form_min', 'jquery_ui_custom', 'plugins.uploadify.jquery_uploadify', 'plugins.mini_audio_player.jquery_jplayer_min', 'plugins.mini_audio_player.jquery_mb_miniPlayer', 'plugins.zeroclipboard.zeroclipboard_min', 'plugins.datepicker.bootstrap-datepicker', 'plugins.daterangepicker.moment_min', 'plugins.daterangepicker.daterangepicker', 'inside');
$this->assign('aid', $aid);
$this->assign('md5', $this->md5);
if($id) {
$wall = Wall::model()->getOneWall(array('id'=>$id, 'business_id'=>$this->sdid, 'plc_sourceid'=>$cret['plc_sourceid']), 'Wall');
if(1 == $wall['photo']) {
$wall_photo = Wall::model()->getOneWall(array('photo_id'=>$id, 'business_id'=>$this->sdid, 'plc_sourceid'=>$cret['plc_sourceid']), 'WallPhoto');
}
if(1 == $wall['bigwheel']) {
$wall_bigwheel = Wall::model()->getOneWall(array('bigwheel_id'=>$id, 'business_id'=>$this->sdid, 'plc_sourceid'=>$cret['plc_sourceid']), 'Wallbigwheel');
$wall_bigwheel['bigwheel_option'] = json_decode($wall_bigwheel['bigwheel_option'], true);
}
if(1 == $wall['lottery']) {
$wall_lottery = Wall::model()->getOneWall(array('lottery_id'=>$id, 'business_id'=>$this->sdid, 'plc_sourceid'=>$cret['plc_sourceid']), 'WallLottery');
$wall_lottery['lottery_option'] = json_decode($wall_lottery['lottery_option'], true);
}
if(1 == $wall['vote']) {
$wall_vote = Wall::model()->getOneWall(array('vote_id'=>$id, 'business_id'=>$this->sdid, 'plc_sourceid'=>$cret['plc_sourceid']), 'WallVote');
}
if(1 == $wall['race']) {
$wall_race = Wall::model()->getOneWall(array('race_id'=>$id, 'business_id'=>$this->sdid, 'plc_sourceid'=>$cret['plc_sourceid']), 'WallRace');
}
//签到墙
if(1 == $wall['has_signin']){
$wall_signin = array();
}
//抢红包
if(1 == $wall['has_red_packet']){
$wall_red = Wall::model()->getAllDataInfo('{{wall_red_packet}}',array("pid"=>$aid,"wall_id"=>$id,"flag"=>0)," sequence asc ");
$sequence_valid_minute_other = 0;
$game_valid_second_other = 0;
foreach($wall_red as $key => $info){
$sequence_valid_minute = (int) $info['sequence_valid_minute'];
if($sequence_valid_minute != 1 && $sequence_valid_minute != 5 && $sequence_valid_minute != 10){
$sequence_valid_minute_other = $sequence_valid_minute;
$sequence_valid_minute = 0;
}
$game_valid_second = (int) $info['game_valid_second'];
if($game_valid_second != 10 && $game_valid_second != 20 && $game_valid_second != 60){
$game_valid_second_other = $game_valid_second;
$game_valid_second = 0;
}
$valid_type = $info['valid_type'];
$valid_end_time = $valid_type == 1 ? date('Y-m-d',strtotime($info['valid_end_time'])) : '';
$valid_day = $info['valid_day'];
$name  = $info['name'];
$wall_red[$key]['enumeration_money'] = !empty($info['enumeration_money']) ? json_decode($info['enumeration_money']) : array('');
}
}

/*读取相册数据*/
$albums = Albums::model()->GetPictureListByAlbumsId($cret['plc_sourceid'],$this->sdid,$wall_photo['albums_id']);
$this->assign('wall', $wall);
$this->assign('albums', $albums);
$this->assign('wall_photo', $wall_photo);
$this->assign('wall_bigwheel', $wall_bigwheel);
$this->assign('wall_lottery', $wall_lottery);
$this->assign('wall_vote', $wall_vote);
$this->assign('wall_race', $wall_race);
$this->assign('wall_red',$wall_red);
$this->assign('sequence_valid_minute_other',$sequence_valid_minute_other);
$this->assign('game_valid_second_other',$game_valid_second_other);
$this->assign('sequence_valid_minute',$sequence_valid_minute);
$this->assign('game_valid_second',$game_valid_second);
$this->assign('valid_type',$valid_type);
$this->assign('valid_end_time',$valid_end_time);
$this->assign('valid_day',$valid_day);
$this->assign('name',$name);
$this->assign('business_id',$this->sdid);
$this->assign('id', $id);
$this->display('edit');
} else {
$this->display('add');
}
} else {
$_POST = filterString($_POST); // 参数过滤
$id = $_POST['id'];
$aid = $_POST['aid'];
$cret = Wechat::model()->getPlcaccount(array('id' => $aid, 'business_id' => $this->sdid));
$_POST['business_id'] = $this->sdid;
$_POST['plc_sourceid'] = $cret['plc_sourceid'];
$time = explode('-',$_POST['time']);
$_POST['start_time'] = strtotime(trim($time[0]));
$_POST['end_time'] = strtotime(trim($time[1]));

empty($_POST['title']) ? $_POST['title'] = '微信墙' : $_POST['title'] = $_POST['title'];
empty($_POST['photo_name']) && 1 == $_POST['photo'] ? $_POST['photo_name'] = '照片' : $_POST['photo_name'] = $_POST['photo_name'];
empty($_POST['bigwheel_name']) && 1 == $_POST['bigwheel'] ? $_POST['bigwheel_name'] = '大转盘' : $_POST['bigwheel_name'] = $_POST['bigwheel_name'];
empty($_POST['lottery_name']) && 1 == $_POST['lottery'] ? $_POST['lottery_name'] = '抽奖' : $_POST['lottery_name'] = $_POST['lottery_name'];
empty($_POST['vote_name']) && 1 == $_POST['vote'] ? $_POST['vote_name'] = '投票' : $_POST['vote_name'] = $_POST['vote_name'];
empty($_POST['play_audio']) ? $_POST['play_audio']=0 : '';
empty($_POST['photo']) ? $_POST['photo']=0 : '';
empty($_POST['bigwheel']) ? $_POST['bigwheel']=0 : '';
empty($_POST['lottery']) ? $_POST['lottery']=0 : '';
empty($_POST['vote']) ? $_POST['vote']=0 : '';
empty($_POST['race']) ? $_POST['race']=0 : '';

$envelope = (int) Yii::app()->request->getPost('has_red_packet',0);

if(1 == $_POST['bigwheel'] && !empty($_POST['bigwheel_keyword'])) $kword[] = $_POST['bigwheel_keyword'];
if(1 == $_POST['lottery'] && !empty($_POST['lottery_keyword'])) $kword[] = $_POST['lottery_keyword'];
if(1 == $_POST['vote'] && !empty($_POST['vote_keyword'])) $kword[] = $_POST['vote_keyword'];
if(1 == $_POST['race'] && !empty($_POST['paoma_keyword'])) $kword[] = $_POST['paoma_keyword'];
if(1 == $_POST['race'] && !empty($_POST['race_keyword'])) $kword[] = $_POST['race_keyword'];

if($envelope == 1){
$kword[] = Yii::app()->request->getPost('red_packet_key_word');
}
$iskword = 0;
$syskeyword = array('0','1'); //系统关键字
/* 检测关键字是否重复 */
foreach ($kword as $k => $v) {
if(in_array($v, $syskeyword)){
echo '“'.$v.'”是系统关键字,请重新输入!';exit();
}
foreach ($kword as $ki => $vi) {
if($k == $ki+1){
continue;
} elseif($kword[$k] == $kword[$ki+1]) {
$iskword = 1;
}
}
}
if ($iskword == 1) {
echo '关键字重复!';exit();
}
if(1 == $_POST['race']) {
if(1 == $_POST['race_num'] && $_POST['race_option']) {
$waste = array();
/* 根据页面样式查找需要过滤的key*/
foreach ($_POST['race_option']['sort'] as $k => $v) {
$i = $k*3;
$waste[] = $i+1;
$waste[] = $i+2;
}
/* 过滤key*/
foreach ($waste as $k => $v) {
unset($_POST['race_option']['type'][$v]);
unset($_POST['race_option']['picurl'][$v]);
unset($_POST['race_option']['title'][$v]);
}
/* 对过滤后的数组重新索引*/
$_POST['race_option']['type'] = array_values($_POST['race_option']['type']);
$_POST['race_option']['picurl'] = array_values($_POST['race_option']['picurl']);
$_POST['race_option']['title'] = array_values($_POST['race_option']['title']);
}
$req = Wall::model()->arrayRequired($_POST['race_option']);
if(false === $req){
echo '“摇一摇跑马”添加奖项不能为空';exit();
}
}

//红包强逻辑
if($envelope == 1){
$red_packet_name = Yii::app()->request->getPost('name','');//红包活动名称
$sequence_valid_minute =  (int) Yii::app()->request->getPost('sequence_valid_minute',10);//红包活动固定时间
$sequence_valid_minute_other = (int) Yii::app()->request->getPost('sequence_valid_minute_other');//其他时间
$game_valid_second = (int) Yii::app()->request->getPost('game_valid_second',10);//抢红包时间
$game_valid_second_other = (int) Yii::app()->request->getPost('game_valid_second_other');//其他时间
$valid_type = (int) Yii::app()->request->getPost('valid_type',1);//有效期类型
$valid_end_time = Yii::app()->request->getPost('valid_end_time','0000-00-00 00:00:00');//绝对有效期
$valid_day = (int)Yii::app()->request->getPost('valid_day',0);//相对有效期
$balance = Yii::app()->request->getPost('balance');//预算
$money_type = Yii::app()->request->getPost('money_type');//红包金额类型
$fixed_money = Yii::app()->request->getPost('fixed_money');//固定金额
$random_max_money = Yii::app()->request->getPost('random_max_money');//随机金额
$enumeration_money = Yii::app()->request->getPost('enumeration_money');//相随随机金额
$red_packet_id = Yii::app()->request->getPost('red_packet_id');//红包轮数主键
$red_packet_did = Yii::app()->request->getPost('red_packet_did');//被删除红包轮数
foreach($balance as $key => $value){
$type = $money_type[$key];//红包金额类型
if($type < 3){
continue;
} else if($type == 3){
$emoney = array();
foreach($enumeration_money[$key] as $number => $money){
$emoney[] = number_format($money,2,'.',',');
}
$enumeration_money[$key] = json_encode($emoney);
} else {
echo '红包数据异常';exit();
}
}
}

if(empty($id)) {
/*校验关键字是否重复*/
$arr = KeywordReply::model()->checkKeyTags($_POST['keyword'], $this->sdid, $cret['plc_sourceid']);
if($arr) {
echo '关键词重复,请重新输入!';exit();
}
$ret = Wall::model()->addWall($_POST, 'Wall');
/*插入关键字*/
$key = KeyWordReply::model()->addKeyTags($_POST['keyword'], $ret, $this->sdid, $cret['plc_sourceid'], '201');
$id = $ret;
} else {
if(0 == $_POST['examine']){
Wall::model()->updateWall(array('audit'=>0), array('wallid'=>$id,'plc_sourceid'=>$cret['plc_sourceid'], 'business_id'=>$this->sdid), 'WallUser');
}
//删除旧关键词
$tag_del = KeywordReply::model()->delKtag(array('business_id' => $this->sdid, 'plc_sourceid' =>$cret['plc_sourceid'], 'custom_reply_id' => $id,'reply_type'=>201));
/*校验关键字是否重复*/
$arr = KeywordReply::model()->checkKeyTags($_POST['keyword'], $this->sdid, $cret['plc_sourceid']);
if($arr) {
echo '关键词重复,请重新输入!';exit();
}
$aWhere = array('id'=>$id, 'plc_sourceid'=>$cret['plc_sourceid'], 'business_id'=>$this->sdid);
$ret = Wall::model()->updateWall($_POST, $aWhere, 'Wall');
/*插入关键字*/
$key = KeyWordReply::model()->addKeyTags($_POST['keyword'], $id, $this->sdid, $cret['plc_sourceid'], '201');
}
if ($this->check($ret)) {
echo '编辑失败';exit();
}
/* 附表操作*/
if(1 == $_POST['photo']) {
$_POST['photo_id'] = $id;
$albums_arr = array();
$albums_arr['photoid'] = $_POST['phout_list'];
$albums_arr['url'] = $_POST['phout_url'];
$albums_arr['title'] = $_POST['imagestexts'];
$albums_arr['description'] = array();
if($albums_arr) {
$result = Albums::model()->SavePictureByAlbumsId($albums_arr,$cret['plc_sourceid'],$this->sdid,$_POST['albums_id']);
}
$wall_photo = Wall::model()->getOneWall(array('photo_id'=>$id, 'business_id'=>$this->sdid, 'plc_sourceid'=>$cret['plc_sourceid']), 'WallPhoto');
if(empty($wall_photo)){
$photo = Wall::model()->addWall($_POST, 'WallPhoto');
}else{
$photo = Wall::model()->updateWall($_POST, array('photo_id'=>$id,'plc_sourceid'=>$cret['plc_sourceid'], 'business_id'=>$this->sdid), 'WallPhoto');
}
}
if(1 == $_POST['bigwheel']) {
$_POST['bigwheel_id'] = $id;
$req = Wall::model()->arrayRequired($_POST['bigwheel_option']);
if(false === $req){
echo '“大转盘”添加奖项不能为空';exit();
}
$_POST['bigwheel_option'] = json_encode($_POST['bigwheel_option']);
$wall_bigwheel = Wall::model()->getOneWall(array('bigwheel_id'=>$id, 'business_id'=>$this->sdid, 'plc_sourceid'=>$cret['plc_sourceid']), 'Wallbigwheel');
if(empty($wall_bigwheel)){
$bigwheel = Wall::model()->addWall($_POST, 'Wallbigwheel');
}else{
$bigwheel = Wall::model()->updateWall($_POST, array('bigwheel_id'=>$id,'plc_sourceid'=>$cret['plc_sourceid'], 'business_id'=>$this->sdid), 'Wallbigwheel');
}
}
if(1 == $_POST['lottery']) {
$_POST['lottery_id'] = $id;
$req = Wall::model()->arrayRequired($_POST['lottery_option']);
if(false === $req){
echo '“抽奖”添加奖项不能为空';exit();
}
$_POST['lottery_option'] = json_encode($_POST['lottery_option']);
$wall_lottery = Wall::model()->getOneWall(array('lottery_id'=>$id, 'business_id'=>$this->sdid, 'plc_sourceid'=>$cret['plc_sourceid']), 'WallLottery');
if(empty($wall_lottery)){
$lottery = Wall::model()->addWall($_POST, 'WallLottery');
}else{
$lottery = Wall::model()->updateWall($_POST, array('lottery_id'=>$id,'plc_sourceid'=>$cret['plc_sourceid'], 'business_id'=>$this->sdid), 'WallLottery');
}
}
if(1 == $_POST['vote']) {
$_POST['vote_id'] = $id;
$wall_vote = Wall::model()->getOneWall(array('vote_id'=>$id, 'business_id'=>$this->sdid, 'plc_sourceid'=>$cret['plc_sourceid']), 'WallVote');
if(empty($wall_vote)){
$vote = Wall::model()->addWall($_POST, 'WallVote');
} else {
$vote = Wall::model()->updateWall($_POST, array('vote_id'=>$id,'plc_sourceid'=>$cret['plc_sourceid'], 'business_id'=>$this->sdid), 'WallVote');
}
}
if(1 == $_POST['race']){
$_POST['race_id'] = $id;

$_POST['race_option'] = json_encode($_POST['race_option']);
$wall_race = Wall::model()->getOneWall(array('race_id'=>$id, 'business_id'=>$this->sdid, 'plc_sourceid'=>$cret['plc_sourceid']), 'WallRace');
if(empty($wall_race)){
$race = Wall::model()->addWall($_POST, 'WallRace');
} else {
$race = Wall::model()->updateWall($_POST, array('race_id'=>$id,'plc_sourceid'=>$cret['plc_sourceid'], 'business_id'=>$this->sdid), 'WallRace');
}
}
//红包
if(1 == $envelope){
//更新活动

if(is_array($balance) && !empty($balance)){
$sequence = 1;
foreach($balance as $balance_key => $balance_money){
$params = array();
$params['pid'] = $aid;
$params['wall_id'] = $id;
$params['sequence'] = $sequence;
$params['name'] = $red_packet_name;
$params['sequence_valid_minute'] = $sequence_valid_minute == 0 ? (int) $sequence_valid_minute_other : (int) $sequence_valid_minute;
$params['game_valid_second'] = $game_valid_second == 0 ? (int) $game_valid_second_other : (int) $game_valid_second;
$params['balance'] = $balance_money;
$params['money'] = isset($fixed_money[$balance_key]) ? $fixed_money[$balance_key] : 0.00;
$params['random_min_money'] = 0.01;
$params['random_max_money'] = isset($random_max_money[$balance_key]) ? $random_max_money[$balance_key] : 0.00;
$params['enumeration_money'] = isset($enumeration_money[$balance_key]) ? $enumeration_money[$balance_key] : 0.00;
$params['valid_type'] = $valid_type;
$params['valid_end_time'] = empty($valid_end_time) ? '0000-00-00 00:00:00' : date('Y-m-d 23:59:59',strtotime($valid_end_time));
$params['valid_day'] = $valid_day;
if(isset($red_packet_id[$balance_key])){
$where = array(
'pid' => $aid,
/*'sequence_status' => 0,*/
'id' => (int) $red_packet_id[$balance_key]
);
Wall::model()->updateDataInfo('{{wall_red_packet}}',$params,$where);
} else {
$params['money_type'] = $money_type[$balance_key];
$params['flag'] = 0;
$params['sequence_status'] = 0;
$params['create_time'] = date('Y-m-d H:i:s');
Wall::model()->insertDataInfo('{{wall_red_packet}}',$params);
}
$sequence++;
}
$red_packet_info = Wall::model()->getAllDataInfo('{{wall_red_packet}}',array('pid'=>$aid,'wall_id'=>$id, 'flag' => 0)," sequence asc");
$rd = EasyRedis::getInstance('wall');
$red_key = "{$aid}_{$id}_sequencelist";
$rd->hSet($red_key,$id,json_encode($red_packet_info));
}
//删除活动
if(!empty($red_packet_did)){
$red_packet_did = explode(',',$red_packet_did);
foreach($red_packet_did as $del_id){
if(!empty($del_id) && $del_id > 0){
Wall::model()->updateDataInfo('{{wall_red_packet}}',array('flag'=>1),array('pid'=>$aid,'id'=>$del_id));
}
}
}
}

echo json_encode(array('errno'=>'0','error'=>'编辑成功!','url' =>'/Wewall/Index?aid='.$aid));
return ;
}
}


微渠道

点球大战

鹊桥相会

大转盘

优惠劵

刮刮卡

老版圣诞活动

一战到底

砸金蛋

2048

暖男躲避战

圣诞活动

疯狂划算

拆礼盒

彩票推广

红包

全民经纪人

新年活动

微助力

童年回忆

设计原型





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信 营销 开发