User.php 13.2 KB
<?php

use Action\WebAction;
use WebPlugin\Helpers;
use Home\UserModel;
use LibModels\Web\Home\UserData;

class UserController extends WebAction
{

    /**
     * 个人中心-个人信息编辑
     */
    public function indexAction()
    {
        //判断是否登录
        $uid = $this->auditJumpLogin();

        //头部导航
        $channel = Helpers::getChannelNameByCookie();
        $this->setWebNavHeader($channel);
        //面包屑-左侧导航
        $path = UserModel::getCenterCrumb('编辑个人资料');
        $leftNav = UserModel::getCenterLeftNav('编辑个人资料',$uid);
        //用户信息-基础信息
        $userInfo = UserModel::getUserInfo($uid);
        //配置信息
        $configInfo = UserData::getTipConfig($uid);
        //联系信息
        $userContactInfo = UserModel::getUserContactInfo($uid);
        //习惯信息
        $userHabitsInfo = UserModel::getUserHabitsInfo($uid);
        //喜欢的品牌信息
        $userLikeBrandInfo = UserModel::getUserLikeBrandInfo($uid);
        //数据整合
        $data = array(
            'path' => $path,
            'homeNav' => $leftNav,
            'userThumb' => $userInfo['headIco'],
            'isShowTip' => intval($configInfo['data']['config']['sn']),
            'userPersonalInfo' => array(
                'subTitle' => '会员信息',
                'certified' => $userInfo['is_student'] === 1,
                'tipsUrl' => $userInfo['is_students'] === 1 ? Helpers::url('/', '', 'list') : Helpers::url('/product/students'),
                'firstBox' => true,
                'submitId' => 'base-info',
                'profileSrc' => $userInfo['headIco'],
                'email' => array(
                    'labelText' => '登录邮箱:',
                    'value' => $userInfo['email']
                ),
                'name' => array(
                    array(
                        'labelText' => '昵称:',
                        'value' => $userInfo['nickname'],
                        'key' => 'nickname',
                        'tips' => '与Yoho!业务或商家品牌冲突的昵称,Yoho!将有可能收回'
                    ),
                    array(
                        'labelText' => '真实姓名:',
                        'value' => $userInfo['username'],
                        'key' => 'username',
                        'tips' => '' // 4.8去掉该提示
                    )
                ),
                'gender' => array(
                    'labelText' => '性别:',
                    'key' => 'gender',
                    'data' => $userInfo['handleGender'],
                ),
                'birthday' => array(
                    'labelText' => '生日:',
                    'key' => 'birthday',
                    'tips' => '',
                    'selects' => array(
                        array(
                            'key' => 'year',
                            'options' => $userInfo['handleYear'],
                            'unit' => '年'
                        ),
                        array(
                            'key' => 'month',
                            'options' => $userInfo['handleMonth'],
                            'unit' => '月'
                        ),
                        array(
                            'key' => 'day',
                            'options' => $userInfo['handleDay'],
                            'unit'=>'日'
                        ),
                    )
                ),
                'profession' => array(
                    'labelText' => '职业:',
                    'key' => 'profession',
                    'data' => $userInfo['handleProfession'],
                ),
                'income' => array(
                    'labelText' => '收入状况:',
                    'key' => 'income',
                    'data' => $userInfo['handleIncome'],
                )
            ),
            'contactInfo' => array(
                'subTitle' => '联系信息',
                'submitId' => 'contact-info',
                'region' => array(
                    'labelText' => '来自:',
                    'selects' => array(
                        array(
                            'key' => 'province',
                            'options' => $userContactInfo['handleProvince'],
                        ),
                        array(
                            'key' => 'city',
                            'options' => $userContactInfo['handleCity']
                        ),
                        array(
                            'key' => 'areaCode',
                            'options' => $userContactInfo['handleArea']
                        )
                    ),
                ),
                'details' => array(
                    array(
                        'labelText' => '固定电话:',
                        'key' => 'phone',
                        'value' => $userContactInfo['phone'],
                        'tips' => '如: 010-82831245'
                    ),
                    array(
                        'labelText' => '手机号码:',
                        'key' => 'mobile',
                        'value' => $userContactInfo['mobile'],
                        'tips' => '填写手机号便于接收发货和收货通知'
                    ),
                    array(
                        'labelText' => 'QQ:',
                        'key' => 'qq',
                        'value' => $userContactInfo['qq'],
                        'tips' => '填写QQ方便您的好友联系你'
                    ),
                    array(
                        'longInput' => true,
                        'labelText' => '联系地址:',
                        'key' => 'fullAddress',
                        'value' => $userContactInfo['fullAddress'],
                        'tips' => '请填写详细地址'
                    ),
                    array(
                        'labelText' => '邮编:',
                        'key' => 'zipCode',
                        'value' => $userContactInfo['zipCode'],
                        'tips' => '请输入收货人所在地邮编号'
                    ),
                ),
            ),
            'habbit' => array(
                'subTitle' => '购物&着装习惯',
                'submitId' => 'shopping-info',
                'details' => array(
                    array(
                        'labelText' => '购物习惯:',
                        'data' => $userHabitsInfo['shopping'],
                    ),
                    array(
                        'labelText' => '着装习惯:',
                        'data' => $userHabitsInfo['dress'],
                    ),
                )
            ),
            'favorite' => array(
                'subTitle' => '喜爱品牌',
                'submitId' => 'favorite-brand',
                'likebrand' => (substr($userLikeBrandInfo['likeBrandStr'], 0, 1) == ',') ? $userLikeBrandInfo['likeBrandStr'] : ',' . $userLikeBrandInfo['likeBrandStr'],
                'favoriteBrands' => $userLikeBrandInfo['favBrands'],
                'hotBrands' => $userLikeBrandInfo['hotBrands'],
            )
        );
        $this->_view->display('user', array(
            'user' => $data,
            'meEditPage' => true
        ));
    }

    /**
     * 修改用户基本信息
     */
    public function editUserInfoAction()
    {
        $data = array('code' => 400, 'message' => '', 'data' => '');

        do {

            /* 判断是不是AJAX请求 */
            if (!$this->isAjax()) {
                break;
            }

            $uid = $this->auditJumpLogin();
            $params['uid'] = $uid;
            $params['nickname'] = trim($this->post('nickname'));
            $params['username'] = trim($this->post('username'));
            $params['gender'] = $this->post('gender', 3);
            $year = trim($this->post('year', ''));
            $month = trim($this->post('month', ''));
            $month = $month ? str_pad($month, 2, '0', STR_PAD_LEFT) : '';
            $day = trim($this->post('day', ''));
            $day = $day ? str_pad($day, 2, '0', STR_PAD_LEFT) : '';
            $params['birthday'] = $year ? $year . '-' . $month . '-' . $day : '';
            $params['profession'] = $this->post('profession', 0);
            $params['income'] = $this->post('income', 0);

            if (!is_numeric($params['uid']) || !$params['nickname'] || !$params['username'] || !$params['birthday']) {
                $data = array('code' => 400, 'message' => '缺失必填项', 'data' => '');
                break;
            }

            $data = UserData::editUserInfo($params);
            if (!isset($data['code'])) {
                break;
            }
        }
        while (false);

        $this->echoJson($data);
    }

    /**
     * 修改用户联系信息
     */
    public function editUserContactInfoAction()
    {
        $data = array('code' => 400, 'message' => '', 'data' => '');

        do {
            /* 判断是不是AJAX请求 */
            if (!$this->isAjax()) {
                break;
            }

            $uid = $this->auditJumpLogin();
            $params['uid'] = $uid;
            $params['areaCode'] = trim($this->post('areaCode'));
            $params['phone'] = trim($this->post('phone'));
            $params['mobile'] = trim($this->post('mobile'));
            $params['qq'] = trim($this->post('qq'));
            $params['fullAddress'] = trim($this->post('fullAddress'));
            $params['zipCode'] = trim($this->post('zipCode'));

            if (!$params['areaCode'] || !$params['fullAddress'] || !$params['zipCode'] || (!$params['phone'] && !$params['mobile'])) {
                $data = array('code' => 400, 'message' => '缺失必填项', 'data' => '');
                break;
            }

            $data = UserData::editUserContactInfo($params);
            if (!isset($data['code'])) {
                break;
            }
        }
        while (false);

        $this->echoJson($data);
    }

    /**
     * 修改用户购物着装习惯信息
     */
    public function editUserHabitsInfoAction()
    {
        $data = array('code' => 400, 'message' => '', 'data' => '');

        do {
            /* 判断是不是AJAX请求 */
            if (!$this->isAjax()) {
                break;
            }

            $uid = $this->auditJumpLogin();
            $params['uid'] = $uid;
            $params['shopping'] = trim($this->post('shopping'));
            $dressArr = $this->post('dress', '');
            $dress = '';
            if (!empty($dressArr)) {
                $dress = implode(",", $dressArr);
            }
            $params['dress'] = trim($dress);

            if (!$params['shopping']) {
                $data = array('code' => 400, 'message' => '缺失必填项', 'data' => '');
                break;
            }

            $data = UserData::editUserHabitsInfo($params);
            if (!isset($data['code'])) {
                break;
            }
        }
        while (false);

        $this->echoJson($data);
    }

    /**
     * 检查输入字符串是否在品牌库中
     */
    public function isBrandNameAction()
    {
        $data = array('code' => 400, 'message' => '', 'data' => '');

        do {
            /* 判断是不是AJAX请求 */
            if (!$this->isAjax()) {
                break;
            }

            $this->auditJumpLogin();
            $brandName = trim($this->post('brandName'));
            if (!$brandName) {
                $data = array('code' => 400, 'message' => '缺失必填项', 'data' => '');
                break;
            }

            $res = UserModel::isBrandName($brandName);
            if ($res['flag']) {
                $data = array('code' => 200, 'message' => '', 'data' => array('id' => $res['data']['brandId'], 'brand_name' => $res['data']['brandName']));
            }
            else {
                $data = array('code' => 400, 'message' => '很抱歉,您要添加的品牌不在我们的品牌库中。', 'data' => '');
            }
        }
        while (false);
        $this->echoJson($data);
    }

    /**
     * 修改用户喜爱的品牌信息
     */
    public function editUserLikeBrandAction()
    {
        $data = array('code' => 400, 'message' => '', 'data' => '');

        do {
            /* 判断是不是AJAX请求 */
            if (!$this->isAjax()) {
                break;
            }

            $uid = $this->auditJumpLogin();
            $params['uid'] = $uid;
            $params['brand'] = trim($this->post('brand', ''));

            if (!$params['brand']) {
                $data = array('code' => 400, 'message' => '缺失必填项', 'data' => '');
                break;
            }

            $data = UserData::editUserLikeBrand($params);
            if (!isset($data['code'])) {
                break;
            }
        }
        while (false);

        $this->echoJson($data);
    }

}