Authored by wuxiao

http://wiki.yoho.cn:5000/#1940-zh

开发邀请函需求,后台部分
define('admin/invitation', function(require, exports)
{
var box = require('admin/box'); // 提示框
var $ = require("jquery");
var common = require("common");
var upload = require('admin/upload');
var form_html = $("#form_pan").html() + '';
$("#form_pan").remove();
$("#add_index").click(function()
{
box.confirm
(
form_html, submit,
{
title: '添加' + $(".active").eq(1).children().text(),
width: '770px',
autoClose: false
}
);
});
$(".apply").click(function()
{
var id = $(this).attr('data-id');
var status = $(this).attr('status');
box.confirm((status > 0 ? "确定要取消显示在申请列表中吗?" : "确定要显示在申请列表中吗?"), function()
{
$.ajax
({
type: "post",
url: '/admin/invitation/showinapply',
data: "id=" + id + '&status=' + (status > 0 ? 0 : 1),
success: function(data)
{
if (data.code == 200)
{
window.location.reload();
}
else
{
box.alert(data.message);
}
}
});
});
});
$(".pass").click(function()
{
var id = $(this).attr('data-id');
var status = $(this).attr('status');
box.confirm((status > 0 ? "确定要取消显示在通过列表中吗?" : "确定要显示在通过列表中吗?"), function()
{
$.ajax
({
type: "post",
url: '/admin/invitation/showinpass',
data: "id=" + id + '&status=' + (status > 0 ? 0 : 1),
success: function(data)
{
if (data.code == 200)
{
window.location.reload();
}
else
{
box.alert(data.message);
}
}
});
});
});
//提交index
function submit()
{
var type = $('#type').val();
var d = $('#myTabContent > div.active');
var category = d.find('input[name=category]').val();
var sub = d.find('input[name$=sub]:checked').val();
var name = d.find('input[name=name]').val();
var contacter = d.find('input[name=contacter]').val();
var phone = d.find('input[name=phone]').val();
var email = d.find('input[name=email]').val();
if (type == "")
{
alert("必须选择一个类型!");
return;
}
if (name == "")
{
alert("名称不能为空!");
return;
}
if (contacter == "")
{
alert("联系人不能为空!");
return;
}
if (phone == "")
{
alert("联系电话不能为空!");
return;
}
if (email == "")
{
alert("邮箱不能为空!");
return;
}
$.ajax
({
type: "post",
url: '/admin/invitation/submit',
data: "type=" + type +
"&category=" + category +
"&sub=" + sub +
"&name=" + encodeURIComponent(name) +
"&contacter=" + encodeURIComponent(contacter) +
"&phone=" + encodeURIComponent(phone) +
"&email=" + encodeURIComponent(email),
success: function(data)
{
if (data.code == 200)
{
window.location.reload();
}
else
{
box.alert(data.message);
}
}
});
}
});
\ No newline at end of file
... ...
... ... @@ -138,4 +138,32 @@ class Config_Admin_Var
'/admin/push/view/status/1' => '已推送',
);
/**
* 邀请函类型大分类
*/
public static $invitation_category = array(
'media' => '媒体',
'brand' => '品牌商',
'master' => '艺人红人'
);
/**
* 邀请函类型子分类
*/
public static $invitation_sub = array(
//媒体
1 => '电视',
2 => '平面',
3 => '网络',
//品牌商
4 => '品牌商',
5 => '代理商',
6 => '贸易商',
//艺人红人
7 => '艺人',
8 => '经纪公司',
9 => '红人',
);
}
\ No newline at end of file
... ...
<?php
class Controller_Admin_Invitation extends Controller_Admin_Base
{
public function indexAction()
{
$type = $this->_request->query('type', 1);
$data = Facade_Invitation::getByType($type);
foreach ($data as $k=>$row){
$row['category'] = Config_Admin_Var::$invitation_category[$row['category']];
$row['sub'] = Config_Admin_Var::$invitation_sub[$row['sub']];
$data[$k] = $row;
}
$this->_view['type'] = $type;
$this->_view['data'] = $data;
}
/**
* 提交
*/
public function submitAction()
{
$type = $this->_request->query('type',1);
$category = $this->_request->query('category', 0);
$sub = $this->_request->query('sub', 0);
$name = $this->_request->query('name','');
$contacter = $this->_request->query('contacter','');
$phone = $this->_request->query('phone', '');
$email = $this->_request->query('email', '');
$ret = false;
if($type && $category && $sub && $name && $contacter && $phone && $email)
{
$ret = Facade_Invitation::add($type, $category, $sub, $name, $contacter, $phone, $email);
}
if($ret)
{
return $this->returnJson(true,200,null);
}
else
{
return $this->returnJson(false,404,null,'新增失败');
}
}
/**
* 控制是否显示在申请列表中
*/
public function showinapplyAction()
{
$id = $this->_request->query('id',0);
$status = $this->_request->query('status',0);
$ret = Facade_Invitation::showInApplyList($id, $status);
if($ret)
{
return $this->returnJson(true,200,null);
}
else
{
return $this->returnJson(false,404,null);
}
}
/**
* 控制是否显示在通过列表中
*/
public function showinpassAction()
{
$id = $this->_request->query('id',0);
$status = $this->_request->query('status',0);
$ret = Facade_Invitation::showInPassList($id, $status);
if($ret)
{
return $this->returnJson(true,200,null);
}
else
{
return $this->returnJson(false,404,null);
}
}
}
\ No newline at end of file
... ...
<?php
/**
* 邀请函
*/
class Facade_Invitation
{
/**
* 服务
*/
private static $service = null;
/**
*
* @return Service_Index
*/
private static function service ()
{
if (! isset(self::$service))
{
self::$service = new Service_Invitation();
}
return self::$service;
}
/**
* 新增邀请函
* @param int $type 表格类型,1:真实申请,2:手动添加
* @param string $category 类型大分类,media:媒体,brand:品牌厂商,master:艺人红人
* @param int $sub 类型子分类,1:媒体/电视,2:媒体/平面,3:媒体/网络,4:品牌厂商/品牌商,5:品牌厂商/代理商,6:品牌厂商/贸易商,7:艺人红人/艺人,8:艺人红人/经纪公司,9:艺人红人/红人
* @param string $name 名称
* @param string $contacter 联系人
* @param string $phone 联系电话
* @param string $email 邮箱
* @return bool
*/
public static function add ($type, $category, $sub, $name, $contacter, $phone, $email)
{
if (!in_array($category, array('media','brand','master')))
{
return false;
}
return self::service()->add($type, $category, $sub, $name, $contacter, $phone, $email);
}
/**
* 根据表格类型返回列表
* @param type $type 表格类型,1:真实申请,2:手动添加
* @return type
*/
public static function getByType($type)
{
return self::service()->getByType($type);
}
/**
* 控制是否显示在申请列表中
*
* @param int $id
* @param int $status 是否显示,1:显示,0:不显示
* @return boolean
*/
public function showInApplyList($id, $status)
{
return self::service()->update($id,array(
'show_in_apply'=>$status
));
}
/**
* 控制是否显示在通过列表中
*
* @param int $id
* @param int $status 是否显示,1:显示,0:不显示
* @return boolean
*/
public function showInPassList($id, $status)
{
return self::service()->update($id,array(
'show_in_pass'=>$status
));
}
}
... ...
<?php
/**
* 邀请函
*/
class Service_Invitation extends Lib_Service
{
const ROUTER = 'invitation.yohood.invitation';
private static $_tag = 'tag_yohood_invitation_';
private static $_key = 'key_yohood_invitation_';
/**
* 新增邀请函
* @param int $type 表格类型,1:真实申请,2:手动添加
* @param string $category 类型大分类,media:媒体,brand:品牌厂商,master:艺人红人
* @param int $sub 类型子分类,1:媒体/电视,2:媒体/平面,3:媒体/网络,4:品牌厂商/品牌商,5:品牌厂商/代理商,6:品牌厂商/贸易商,7:艺人红人/艺人,8:艺人红人/经纪公司,9:艺人红人/红人
* @param string $name 名称
* @param string $contacter 联系人
* @param string $phone 联系电话
* @param string $email 邮箱
* @return bool
*/
public function add ($type, $category, $sub, $name, $contacter, $phone, $email)
{
return self::service(self::ROUTER)->cache(false)->insert('add', array(
'type' => $type,
'category' => $category,
'sub' => $sub,
'name' => $name,
'contacter' => $contacter,
'phone' => $phone,
'email' => $email,
));
}
/**
* 根据表格类型返回列表
* @param type $type 表格类型,1:真实申请,2:手动添加
* @return type
*/
public static function getByType($type)
{
return self::service(self::ROUTER)->tag(self::$_tag)->fetchAll('getByType',array('type'=>$type));
}
/**
* 控制是否显示在申请列表中
*
* @param int $id
* @return boolean
*/
public function update($id, array $data)
{
foreach ($data as $field=>$value){
$data[$field] = "`{$field}` = '{$value}'";
}
$replaces = array(
'UPDATE'=> implode(', ', $data)
);
$status = self::service(self::ROUTER)->cache(false)->update('update',array('id'=>$id),$replaces)->status();
if($status)
{
self::service(self::ROUTER)->delTags(self::$_tag);
}
return $status;
}
}
... ...
<?xml version="1.0" encoding="UTF-8"?>
<sqlMap namespace="invitation">
<insert id="add">
INSERT INTO tbl_invitation (type, category, sub, name, contacter, phone, email, create_time) VALUES (:type, :category, :sub, :name, :contacter, :phone, :email, UNIX_TIMESTAMP())
</insert>
<select id="getByType">
SELECT * FROM tbl_invitation WHERE type = :type
</select>
<update id="update">
UPDATE tbl_invitation SET #UPDATE# WHERE id = :id
</update>
</sqlMap>
\ No newline at end of file
... ...
... ... @@ -30,6 +30,7 @@
<li <?php if ($_ctx->controller_name == 'activity' && in_array($_ctx->action_name, array('plantopic','plan'))):?>class="active"<?php endif;?>><a href="<?php echo url('activity/plantopic')?>">现场活动</a></li>
<li <?php if ($_ctx->controller_name == 'partner' && $_ctx->action_name == 'index'):?>class="active"<?php endif;?>><a href="/admin/partner/index">合作伙伴</a></li>
<li <?php if ($_ctx->controller_name == 'brand' && $_ctx->action_name == 'booth'):?>class="active"<?php endif;?>><a href="/admin/brand/booth">booth坐标</a></li>
<li <?php if ($_ctx->controller_name == 'invitation' && $_ctx->action_name == 'index'):?>class="active"<?php endif;?>><a href="/admin/invitation/index">邀请函</a></li>
</ul>
<span style="float: right;font-size: 16px;padding-top: 10px;">
<a href="<?php echo url('admin::default/logout')?>" style='color:white;'>退出</a>
... ...
<?php $this->_extends('layout/admin_layout'); ?>
<?php $this->_block('main'); ?>
<ul class="nav nav-tabs">
<li <?php echo $this->view->type == 1 ? 'class="active"' : ''; ?>>
<a href="/admin/invitation/index/type/1">真实申请表格</a>
</li>
<li <?php echo $this->view->type == 2 ? 'class="active"' : ''; ?>>
<a href="/admin/invitation/index/type/2">手动添加表格</a>
</li>
</ul>
<table class="table">
<caption style="text-align:left; padding-bottom:5px;">
<button class="btn" style="float:left;" id="add_index" href="javascript:void(0)">新增数据
<?php echo $this->view->typeDescription[$this->view->type]; ?></button>
</caption>
<thead>
<td width="15%">申请类型</td>
<td width="10%">类型</td>
<td width="15%">名称</td>
<td width="10%">联系人</td>
<td width="10%">联系电话</td>
<td width="15%">邮箱</td>
<td width="10%">申请时间</td>
<td width="15%">操作</td>
</thead>
<?php if (empty($this->view->data)) : ?>
<tr><td colspan="10" style="text-align: center">无记录</td></tr>
<?php else : ?>
<?php foreach ($this->view->data as $row) : ?>
<tr>
<td><?php echo $row['category'] ?></td>
<td><?php echo $row['sub'] ?></td>
<td><?php echo $row['name'] ?></td>
<td><?php echo $row['contacter'] ?></td>
<td><?php echo $row['phone'] ?></td>
<td><?php echo $row['email'] ?></td>
<td><?php echo date('Y-m-d H:i:s',$row['create_time']) ?></td>
<td>
<button status="<?php echo $row['show_in_apply'] ?>" data-id="<?php echo $row['id']; ?>" class="apply btn <?php echo $row['show_in_apply'] ? 'btn-primary' : ''?>">申请显示</button>
<button status="<?php echo $row['show_in_pass'] ?>" data-id="<?php echo $row['id']; ?>" class="pass btn <?php echo $row['show_in_pass'] ? 'btn-primary' : ''?>">通过显示</button>
</td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</table>
<div id="form_pan" admin="<?php echo $this->view->admin ?>" style="display:none">
<input type="hidden" id="type" name="type" value="<?php echo $this->view->type ?>">
<ul id="myTab" class="nav nav-tabs">
<li class="active"><a href="#media" data-toggle="tab">媒体申请</a></li>
<li><a href="#brand" data-toggle="tab">品牌厂商申请</a></li>
<li><a href="#master" data-toggle="tab">艺人红人申请</a></li>
</ul>
<div id="myTabContent" class="tab-content">
<div class="tab-pane fade in active" id="media">
<input type='hidden' name="category" value="media"/>
<table class="table table-bordered">
<tbody>
<tr>
<td>媒体类型<span class="text-error"> * </span></td>
<td colspan="3">
<input type="radio" name="media_sub" value="1" checked="checked"/>&nbsp;电视
<input type="radio" name="media_sub" value="2"/>&nbsp;平面
<input type="radio" name="media_sub" value="3"/>&nbsp;网络
</td>
</tr>
<tr>
<td>媒体名称<span class="text-error"> * </span></td>
<td colspan="3">
<input type="text" style="width:305px;" name="name" value=""/>
</td>
</tr>
<tr>
<td>联系人<span class="text-error"> * </span></td>
<td colspan="3">
<input type="text" style="width:305px;" name="contacter" value=""/>
</td>
</tr>
<tr>
<td>联系电话<span class="text-error"> * </span></td>
<td colspan="3">
<input type="text" style="width:305px;" name="phone" value=""/>
</td>
</tr>
<tr>
<td>邮箱<span class="text-error"> * </span></td>
<td colspan="3">
<input type="text" style="width:305px;" name="email" value=""/>
</td>
</tr>
<tr>
</tbody>
</table>
</div>
<div class="tab-pane fade" id="brand">
<input type='hidden' name="category" value="brand"/>
<table class="table table-bordered">
<tbody>
<tr>
<td>类型<span class="text-error"> * </span></td>
<td colspan="3">
<input type="radio" name="brand_sub" value="4" checked="checked"/>&nbsp;品牌商
<input type="radio" name="brand_sub" value="5"/>&nbsp;代理商
<input type="radio" name="brand_sub" value="6"/>&nbsp;贸易商
</td>
</tr>
<tr>
<td>品牌名称<span class="text-error"> * </span></td>
<td colspan="3">
<input type="text" style="width:305px;" name="name" value=""/>
</td>
</tr>
<tr>
<td>联系人<span class="text-error"> * </span></td>
<td colspan="3">
<input type="text" style="width:305px;" name="contacter" value=""/>
</td>
</tr>
<tr>
<td>联系电话<span class="text-error"> * </span></td>
<td colspan="3">
<input type="text" style="width:305px;" name="phone" value=""/>
</td>
</tr>
<tr>
<td>邮箱<span class="text-error"> * </span></td>
<td colspan="3">
<input type="text" style="width:305px;" name="email" value=""/>
</td>
</tr>
<tr>
</tbody>
</table>
</div>
<div class="tab-pane fade" id="master">
<input type='hidden' name="category" value="master"/>
<table class="table table-bordered">
<tbody>
<tr>
<td>类型<span class="text-error"> * </span></td>
<td colspan="3">
<input type="radio" name="master_sub" value="7" checked="checked"/>&nbsp;艺人
<input type="radio" name="master_sub" value="8"/>&nbsp;经纪公司
<input type="radio" name="master_sub" value="9"/>&nbsp;红人
</td>
</tr>
<tr>
<td>姓名 称呼 名称<span class="text-error"> * </span></td>
<td colspan="3">
<input type="text" style="width:305px;" name="name" value=""/>
</td>
</tr>
<tr>
<td>联系人<span class="text-error"> * </span></td>
<td colspan="3">
<input type="text" style="width:305px;" name="contacter" value=""/>
</td>
</tr>
<tr>
<td>联系电话<span class="text-error"> * </span></td>
<td colspan="3">
<input type="text" style="width:305px;" name="phone" value=""/>
</td>
</tr>
<tr>
<td>邮箱<span class="text-error"> * </span></td>
<td colspan="3">
<input type="text" style="width:305px;" name="email" value=""/>
</td>
</tr>
<tr>
</tbody>
</table>
</div>
</div>
</div>
<?php $this->_endblock(); ?>
<?php $this->_block('js'); ?>
<?php
$this->_js('index.js', array(
SITE_JS . '/lib/seajs.js',
));
?>
<script type="text/javascript">
seajs.use('admin/invitation');
</script>
<?php $this->_endblock(); ?>
... ...