Files
youlegames/codes/agent/game/api/source/apis/activity.php
2026-03-15 01:27:05 +08:00

318 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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;
// 此处删除了代码
}