ArticleDeleteController.class.php 3.01 KB
<?php
/**
 * ArticleDeleteController.class.php
 * 删除文章推荐 RPC 接口
 * @author Deepseath
 * @version $Id$
 */
namespace Rpc\Controller\Recommender;

use Common\Service\CommonRecommenderService;
use Think\Log;
use Common\Model\CommonRecommenderModel;
use Think\Exception;
use Common\Service\CommonRecommenderRightService;

/**
 * 删除文章推荐 RPC 接口
 *
 * @uses 调用方法:\Com\Rpc::phprpc(rpc 接口 url)->invoke(接口方法名, 需要传入的参数数组key-value);
 */
class ArticleDeleteController extends AbstractController
{

    /**
     * 删除指定文章推荐信息
     * @desc 【RPC】删除指定文章推荐信息接口
     * @param mixed app:true 被推荐数据所在应用模块目录标识名
     * @param mixed dataCategoryId:true 被推荐数据所属的分类Id,可以为空,但必须提供该参数
     * @param mixed dataId:true 被推荐数据的原始数据 Id
     * @return boolean
     */
    public function Index()
    {
        if (!$this->_checkKeyParams()) {
            return false;
        }

        $recommenderService = new CommonRecommenderService();
        $recommenderRightService = new CommonRecommenderRightService();

        $conds = [
            'type' => CommonRecommenderModel::TYPE_ARTICLE,
            'app_dir' => $this->_params['app'],
            'data_category_id' => $this->_params['dataCategoryId'],
            'data_id' => $this->_params['dataId']
        ];

        // 获取所有待删除的推荐 ID
        $list = $recommenderService->list_by_appData($conds['type'], $conds['app_dir'], $conds['data_id'], $conds['data_category_id']);
        if (empty($list)) {
            Log::record('<!-- 删除推荐数据:');
            Log::record('!! 未发现待删除的数据 !!');
            Log::record(print_r($this->_params, true));
            Log::record('结束删除推荐数据 -->');
            return true;
        }

        // 所有待操作的数据 id
        $recommenderIds = array_keys($list);
        unset($list);

        try {
            // 启动数据更改过程
            $recommenderService->start_trans();
            // 删除推荐数据主表
            $recommenderService->delete($recommenderIds);
            // 删除权限可见范围表
            $recommenderRightService->delete_by_conds([
                'recommender_id' => $recommenderIds
            ]);
            // 提交数据更改
            $recommenderService->commit();
        } catch (Exception $e) {
            // 回滚数据
            $recommenderService->rollback();
            Log::record('<!-- 删除推荐数据:');
            Log::record('!! 数据库操作失败 !!');
            Log::record(print_r($this->_params, true));
            Log::record('结束删除推荐数据 -->');
            E('_ERR_ACTIVITY_ADD_FAILED');
            return false;
        }

        Log::record('<!-- 删除推荐数据:');
        Log::record(print_r($this->_params, true));
        Log::record('结束删除推荐数据 -->');

        return true;
    }
}