318 lines
12 KiB
PHP
318 lines
12 KiB
PHP
<?php
|
||
header("Access-Control-Allow-Origin: *");
|
||
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, PATCH, DELETE");
|
||
header("Access-Control-Allow-Headers: Content-Type, Authorization, Content-Length, X-Requested-With");
|
||
header("Access-Control-Allow-Credentials: true");
|
||
header("Content-Type: text/html; charset=utf-8");
|
||
|
||
/**
|
||
* 门店相关活动
|
||
*/
|
||
use phprs\util\Verify;
|
||
use phprs\util\exceptions\Forbidden;
|
||
use phprs\util\Logger;
|
||
use phprs\util\exceptions\NotFound;
|
||
use phprs\ezsql\Sql;
|
||
use phprs\util\exceptions\BadRequest;
|
||
|
||
require_once 'apiBase.php';
|
||
|
||
/**
|
||
*
|
||
* 门店相关活动
|
||
* @path("/activity")
|
||
*/
|
||
class Activity extends apiBase {
|
||
/**
|
||
* 获取单个活动详细信息(错误代码:16000-16050)
|
||
* @route({"POST","/"})
|
||
* @param({"devkey","$._POST.devkey"}) 开发者key
|
||
* @param({"market_key","$._POST.market_key"}) market_key
|
||
* @param({"activity_key","$._POST.activity_key"}) activity_key
|
||
* @param({"sign","$._POST.sign"}) sign
|
||
* @throws({"phprs\util\exceptions\Forbidden","res", "403 Forbidden",{"error":"Forbidden"}}) cookie不可用
|
||
* @return("body")
|
||
*/
|
||
public function getActivity($devkey='',$market_key='',$activity_key='',$sign='') {
|
||
$result = array();
|
||
|
||
$verify_result = $this->verifyMarketApi($devkey);
|
||
if( is_error_api($verify_result) ){
|
||
return $verify_result;
|
||
}
|
||
|
||
if( empty($market_key) ) {
|
||
$result["error"] = '1';
|
||
$result["error_code"] = 11001;
|
||
$result["msg"] = "未传入market_key参数";
|
||
return $result;
|
||
}
|
||
$marketList = Sql::select('a.*')
|
||
->from('syweb_market a')
|
||
->where('a.market_key=?',$market_key)
|
||
->get($this->db ,null);
|
||
if( empty($marketList) || count($marketList)<=0 ) {
|
||
$result["error"] = '1';
|
||
$result["error_code"] = 11002;
|
||
$result["msg"] = "market_key无效";
|
||
return $result;
|
||
}
|
||
$marketList = $marketList[0];
|
||
|
||
if( empty($activity_key) ) {
|
||
$result["error"] = '1';
|
||
$result["error_code"] = 16001;
|
||
$result["msg"] = "未传入activity_key参数";
|
||
return $result;
|
||
}
|
||
|
||
$activityList = Sql::select('a.*')
|
||
->from('syweb_business_activity a')
|
||
->where('a.activity_key=?',$activity_key)
|
||
->get($this->db ,null);
|
||
if( empty($activityList) || count($activityList)<=0 ) {
|
||
$result["error"] = '1';
|
||
$result["error_code"] = 16002;
|
||
$result["msg"] = "指定的门店活动不存在或已经被删除!";
|
||
return $result;
|
||
}
|
||
$activityList = $activityList[0];
|
||
|
||
if( !empty($activityList) ) {
|
||
if( !empty($activityList["logo"]) ) {
|
||
$activityList["logo"] = "http://open.daoqijuyou77.cn".$activityList["logo"];
|
||
}
|
||
|
||
if( !empty($activityList["url"]) ) {
|
||
$activityList["url"] = str_replace("%market_key",$market_key,$activityList["url"]);
|
||
$activityList["url"] = str_replace("%activity_key",$activity_key,$activityList["url"]);
|
||
}
|
||
|
||
$activityList["titleimg_list"] = iunserializer($activityList["titleimg_list"]);
|
||
|
||
$titleImgList = array();
|
||
if( !empty($activityList["titleimg_list"]) && count($activityList["titleimg_list"])>0 ) {
|
||
foreach ($activityList["titleimg_list"] as $key => $value) {
|
||
if( !empty($value) ) {
|
||
$titleImgList[] = "http://open.daoqijuyou77.cn".$value;
|
||
}
|
||
}
|
||
}
|
||
$activityList["titleimg_list"] = $titleImgList;
|
||
}
|
||
|
||
$result["error"] = '0';
|
||
$result["data"] = $activityList;
|
||
$result["msg"] = "获取单个活动详细信息成功!";
|
||
return $result;
|
||
}
|
||
|
||
/**
|
||
* 获取活动分类信息(错误代码:16000-16050)
|
||
* @route({"POST","/class"})
|
||
* @param({"devkey","$._POST.devkey"}) 开发者key
|
||
* @param({"market_key","$._POST.market_key"}) market_key
|
||
* @param({"parent_key","$._POST.parent_key"}) parent_key
|
||
* @param({"sign","$._POST.sign"}) sign
|
||
* @throws({"phprs\util\exceptions\Forbidden","res", "403 Forbidden",{"error":"Forbidden"}}) cookie不可用
|
||
* @return("body")
|
||
*/
|
||
public function getClassList($devkey='',$market_key='',$parent_key='',$sign='') {
|
||
$result = array();
|
||
|
||
$verify_result = $this->verifyMarketApi($devkey);
|
||
if( is_error_api($verify_result) ){
|
||
return $verify_result;
|
||
}
|
||
|
||
if( empty($market_key) ) {
|
||
$result["error"] = '1';
|
||
$result["error_code"] = 11001;
|
||
$result["msg"] = "未传入market_key参数";
|
||
return $result;
|
||
}
|
||
$marketList = Sql::select('a.*')
|
||
->from('syweb_market a')
|
||
->where('a.market_key=?',$market_key)
|
||
->get($this->db ,null);
|
||
if( empty($marketList) || count($marketList)<=0 ) {
|
||
$result["error"] = '1';
|
||
$result["error_code"] = 11002;
|
||
$result["msg"] = "market_key无效";
|
||
return $result;
|
||
}
|
||
$marketList = $marketList[0];
|
||
|
||
if( empty($parent_key) ) {
|
||
$parent_key = "";
|
||
}
|
||
|
||
$class_list = $this->selectClass($parent_key,$marketList["business_key"]);
|
||
$result["error"] = '0';
|
||
$result["data"] = $class_list;
|
||
$result["msg"] = "获取活动分类信息成功!";
|
||
return $result;
|
||
}
|
||
|
||
/**
|
||
* 获取活动信息列表(错误代码:16051-16100)
|
||
* @route({"POST","/list"})
|
||
* @param({"devkey","$._POST.devkey"}) 开发者key
|
||
* @param({"market_key","$._POST.market_key"}) market_key
|
||
* @param({"type","$._POST.type"}) type
|
||
* @param({"class_key","$._POST.class_key"}) class_key
|
||
* @param({"keywords","$._POST.keywords"}) keywords
|
||
* @param({"pageno","$._POST.pageno"}) pageno
|
||
* @param({"pagesize","$._POST.pagesize"}) pagesize
|
||
* @param({"sign","$._POST.sign"}) sign
|
||
* @throws({"phprs\util\exceptions\Forbidden","res", "403 Forbidden",{"error":"Forbidden"}}) cookie不可用
|
||
* @return("body")
|
||
*/
|
||
public function getActivityList($devkey='',$market_key='',$type=0,$class_key='',$keywords='',$pageno=0,$pagesize=0,$sign='') {
|
||
$result = array();
|
||
|
||
$verify_result = $this->verifyMarketApi($devkey);
|
||
|
||
if( is_error_api($verify_result) ){
|
||
return $verify_result;
|
||
}
|
||
|
||
if( empty($market_key) ) {
|
||
$result["error"] = '1';
|
||
$result["error_code"] = 11001;
|
||
$result["msg"] = "未传入market_key参数";
|
||
return $result;
|
||
}
|
||
$marketList = Sql::select('a.*')
|
||
->from('syweb_market a')
|
||
->where('a.market_key=?',$market_key)
|
||
->get($this->db ,null);
|
||
if( empty($marketList) || count($marketList)<=0 ) {
|
||
$result["error"] = '1';
|
||
$result["error_code"] = 11002;
|
||
$result["msg"] = "market_key无效";
|
||
return $result;
|
||
}
|
||
$marketList = $marketList[0];
|
||
|
||
// 组装查询条件 begin
|
||
$conditionStr = " activity_key in (select activity_key from syweb_business_activity_market where market_key='".$marketList["market_key"]."')";
|
||
|
||
$orderStr = " id desc ";
|
||
if( !empty($type) && is_numeric($type) ){
|
||
if( $type==1 ) {
|
||
$orderStr = " access_count desc ";
|
||
} else if( $type==3 ) {
|
||
$orderStr = " id desc ";
|
||
} else if( $type==3 ) {
|
||
$conditionStr .= " and is_recommond=1 ";
|
||
} else if( $type==4 ) {
|
||
// 暂时未实现
|
||
}
|
||
}
|
||
|
||
if( !empty($class_key) ) {
|
||
$conditionStr .= " and class_key='".$class_key."'";
|
||
}
|
||
|
||
if( !empty($keywords) ) {
|
||
$conditionStr .= " and activity_name like '%".$keywords."%'";
|
||
}
|
||
// 组装查询条件 end
|
||
|
||
// 分页 begin
|
||
$pindex = max(1, intval($pageno));
|
||
if($psize){
|
||
$psize = intval($pagesize);
|
||
} else {
|
||
$psize = 20;
|
||
}
|
||
// 分页 end
|
||
|
||
$pdo = $this->db;
|
||
$pdo->beginTransaction();
|
||
|
||
$total = Sql::select(' COUNT(id) as num ')
|
||
->from('syweb_business_activity')
|
||
->where($conditionStr)
|
||
->get($this->db ,null);
|
||
$list = array();
|
||
if (!empty($total) && !empty($total[0]["num"])) {
|
||
$list = Sql::select("*")
|
||
->from('syweb_business_activity')
|
||
->where($conditionStr)
|
||
->orderBy($orderStr)
|
||
->limit(($pindex - 1) * $psize,$psize)
|
||
->get($this->db ,null);
|
||
}
|
||
$pdo->commit();
|
||
|
||
if( $list ){
|
||
foreach ($list as &$item) {
|
||
if( !empty($item["logo"]) ) {
|
||
$item["logo"] = "http://open.daoqijuyou77.cn".$item["logo"];
|
||
}
|
||
|
||
$item["url"] = str_replace("%market_key",$market_key,$item["url"]);
|
||
$item["url"] = str_replace("%activity_key",$item["activity_key"],$item["url"]);
|
||
}
|
||
|
||
$page_count = 0;
|
||
if( (int)$total[0]["num"] % $psize > 0 ) {
|
||
$page_count = (int)$total[0]["num"] / $psize + 1;
|
||
} else {
|
||
$page_count = (int)$total[0]["num"];
|
||
}
|
||
$result["error"] = '0';
|
||
$result["msg"] = '数据获取成功。';
|
||
$result["data"]["content"] = $list;
|
||
$result["data"]["pager"]["total"] = (int)$total[0]["num"];// 总记录数
|
||
$result["data"]["pager"]["pindex"] = $pindex;// 当前页索引
|
||
$result["data"]["pager"]["psize"] = $psize;// 每页记录条数
|
||
$result["data"]["pager"]["page_count"] = $page_count;// 总共的页数
|
||
return $result;
|
||
} else {
|
||
$list = array();
|
||
$result["error"] = '0';
|
||
$result["msg"] = '未查询到任何数据记录。';
|
||
$result["data"]["content"] = $list;
|
||
$result["data"]["pager"]["total"] = (int)$total[0]["num"];// 总记录数
|
||
$result["data"]["pager"]["pindex"] = $pindex;// 当前页索引
|
||
$result["data"]["pager"]["psize"] = $psize;// 每页记录条数
|
||
$result["data"]["pager"]["page_count"] = 0;// 总共的页数
|
||
return $result;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 使用递归的方式查询分类
|
||
*
|
||
**/
|
||
private function selectClass($parent_key,$business_key) {
|
||
$class_list = Sql::select('a.*')
|
||
->from('syweb_activity_class a')
|
||
->where('a.parent_key=? and a.business_key=?',$parent_key,$business_key)
|
||
->get($this->db ,null);
|
||
if( !empty($class_list) && count($class_list)>0 ) {
|
||
foreach ($class_list as &$classInfo) {
|
||
$sub_class_list = $this->selectClass($classInfo["class_key"],$business_key);
|
||
if( !empty($sub_class_list) && count($sub_class_list)>0 ) {
|
||
$classInfo["has_sub"] = 1;
|
||
$classInfo["sub_class_list"] = $sub_class_list;
|
||
} else {
|
||
$classInfo["has_sub"] = 0;
|
||
}
|
||
}
|
||
}
|
||
return $class_list;
|
||
}
|
||
|
||
/** @inject("ioc_factory") */
|
||
private $factory;
|
||
/**
|
||
* @property({"default":"@db"})
|
||
* @var PDO
|
||
*/
|
||
public $db;
|
||
// 此处删除了代码
|
||
} |