<?php
namespace eapie\source\request\merchant;
use eapie\main;
use eapie\error;
class admin_type extends \eapie\source\request\merchant {
public function api_edit($data = array()){
object(parent::REQUEST_ADMIN)->check(parent::AUTHORITY_MERCHANT_EDIT);
object(parent::ERROR)->check($data, 'merchant_id', parent::TABLE_MERCHANT, array('args', 'exists_id'));
if( !empty($data['type_id']) && is_array($data['type_id'])){
$type_id = array();
foreach($data['type_id'] as $value){
if(is_string($value) || is_numeric($value)){
$type_id[] = cmd(array($value), 'str addslashes');
}
}
}
if( !empty($type_id) ){
$in_string = "\"".implode("\",\"", $type_id)."\"";
$type_where = array();
$type_where[] = array("type_id IN([-])", $in_string, true) $type_where[] = array("[and] type_module=[+]", parent::MODULE_MERCHANT_TYPE);
$type_data = object(parent::TABLE_TYPE)->select(array("where"=>$type_where));
}
$old_data = object(parent::TABLE_MERCHANT_TYPE)->select(array(
"where" => array( array("merchant_id=[+]", (string)$data['merchant_id']) )
));
$clear_data = array();
$clear_data["type_id"] = array();
$clear_data["delete"] = array();
$clear_data["insert"] = array();
if( !empty($old_data) ){
foreach($old_data as $value){
$clear_data["delete"][$value["type_id"]] = $value["merchant_type_id"];
}
}
if( !empty($type_data) ){
foreach($type_data as $type_value){
$clear_data["type_id"][] = $type_value["type_id"];
if( isset($clear_data["delete"][$type_value["type_id"]]) ){
unset($clear_data["delete"][$type_value["type_id"]]);
}else{
$insert_data = array(
"merchant_type_id" => object(parent::TABLE_MERCHANT_TYPE)->get_unique_id(),
"merchant_id" => $data['merchant_id'],
"type_id" => $type_value["type_id"],
"user_id" => $_SESSION["user_id"],
"merchant_type_time" => time()
);
$clear_data["insert"][] = $insert_data;
}
}
}
if( !empty($clear_data["insert"]) ){
object(parent::TABLE_MERCHANT_TYPE)->insert_batch($clear_data["insert"]);
}
if( !empty($clear_data["delete"]) ){
$in_string = "\"".implode("\",\"", $clear_data["delete"])."\"";
object(parent::TABLE_MERCHANT_TYPE)->delete(array( array("merchant_type_id IN([-])", $in_string, true) ));
}
if( empty($clear_data["insert"]) && empty($clear_data["delete"]) ){
throw new error("没有需要更新的数据");
}
object(parent::TABLE_ADMIN_LOG)->insert($data, $clear_data);
object(parent::TABLE_MERCHANT)->update(
array( array('merchant_id=[+]', $data['merchant_id']) ),
array('merchant_update_time' => time() )
);
return true;
}
}