AddEditController.class.php 3.23 KB
<?php
/**
 * Created by IntelliJ IDEA.
 * 添加/编辑勋章
 * User: zhoutao
 * Reader: zhoutao 2017-05-31 10:02:11
 * Date: 2017-05-24 12:10:06
 */

namespace Apicp\Controller\Medal;

use Com\PackageValidate;
use Common\Common\AttachOperation;
use Common\Model\MedalModel;
use Common\Service\MedalService;

class AddEditController extends AbstractController
{
    public function index()
    {
        $validate = new PackageValidate(
            [
                'icon' => 'require',
                'icon_type' => 'in:' . MedalModel::ICON_TYPE_USER_UPLOAD . ',' . MedalModel::ICON_TYPE_SYS,
                'name' => 'require|max:' . MedalModel::NAME_MAX_LENGTH,
                'desc' => 'max:' . MedalModel::DESC_MAX_LENGTH,
            ],
            [
                'icon.require' => L('_ERR_PARAM_CAN_NOT_BE_EMPTY', ['name' => '勋章图标']),
                'icon_type.in' => L('_ERR_PARAM_MUST_IN_RANGE', [
                    'name' => '勋章图标来源类型',
                    'range' => MedalModel::ICON_TYPE_USER_UPLOAD . ',' . MedalModel::ICON_TYPE_SYS
                ]),
                'name.require' => L('_ERR_PARAM_CAN_NOT_BE_EMPTY', ['name' => '名称']),
                'name.max' => L('_ERR_PARAM_MAX_LENGTH', [
                    'name' => '名称',
                    'maxLength' => MedalModel::NAME_MAX_LENGTH]),
                'desc.max' => L('_ERR_PARAM_MAX_LENGTH', [
                    'name' => '描述',
                    'maxLength' => MedalModel::DESC_MAX_LENGTH]),
            ],
            [
                'im_id',
                'icon',
                'icon_type',
                'name',
                'desc'
            ]
        );
        $postData = $validate->postData;
        // 验证器不接受空字段数据, 这里重新获取下
        $postData['desc'] = I('post.desc');

        $attach_serv = new AttachOperation();

        try {
            $medalServ = new MedalService();
            $medalInsertData = array_diff_key_reserved($postData, ['im_id'], true);
            // 更新
            if (!empty($postData['im_id'])) {
                $medalServ->update($postData['im_id'], $medalInsertData);

                // 附件操作
                if ($postData['icon_type'] == MedalModel::ICON_TYPE_USER_UPLOAD) {
                    $attach_serv->update_attach(
                        APP_DIR,
                        'medal',
                        $postData['im_id'],
                        ['attach_ids' => [$postData['icon']]]
                    );
                }

                $this->_result['im_id'] = $postData['im_id'];
            // 新增
            } else {
                $im_id = $medalServ->insert($medalInsertData);

                // 附件操作
                if ($postData['icon_type'] == MedalModel::ICON_TYPE_USER_UPLOAD) {
                    $attach_serv->update_attach(
                        APP_DIR,
                        'medal',
                        $im_id,
                        ['attach_ids' => [$postData['icon']]]
                    );
                }

                $this->_result['im_id'] = $im_id;
            }

            $medalServ->commit();
        } catch (\Exception $e) {
            $medalServ->rollback();
        }



        return true;
    }
}