$this->merchantId];//此商户的抽奖活动 $query = xhLuckyDrawActivity::find()->where($condition)->orderBy('createTime desc'); $countQuery = clone $query; $pages = new Pagination(['totalCount' => $countQuery->count(),'pageSize' => 20]); $activities = $query->offset($pages->offset)->limit($pages->limit)->asArray()->all(); $now = time(); foreach ($activities as $key => $activity){ if($activity['startTime'] > $now){ $activities[$key]['status'] = '未开始'; }else if($activity['endTime'] < $now){ $activities[$key]['status'] = '已结束'; }else{ $activities[$key]['status'] = '进行中'; } } return $this->render('list', ['activities'=>$activities, 'pages' => $pages]); } public function actionAdd() { return $this->render('add'); } public function actionSaveAdd(){ $post = Yii::$app->request->post(); $awardNames = $post['awardName']; $orders = $post['order']; $counts = $post['count']; $probabilities = $post['probability']; $luckyDrawActivityIds = ''; //表单校验 if($post['startTime'] > $post['endTime']){ util::failInfo('结束时间要大于开始时间'); } $connection = Yii::$app->db;//事务处理 $transaction = $connection->beginTransaction(); try { $post['merchantId'] = $this->merchantId; $post['startTime'] = strtotime($post['startTime']); $post['endTime'] = strtotime($post['endTime']); $post['awardIds'] = ''; $post['createTime'] = date('Y-m-d H:m:i', time()); $re = xhLuckyDrawActivityService::add($post); //奖品保存 foreach($awardNames as $key => $awardName){ $data = [ 'awardName' => $awardName, 'order' => $orders[$key], 'count' => $counts[$key], 'probability' => $probabilities[$key], 'luckyDrawActivityId' => $re['id'], ]; $drawAward = xhLuckyDrawAwardService::add($data); $luckyDrawActivityIds .= $drawAward['id'] . ','; } $luckyDrawActivityIds = rtrim($luckyDrawActivityIds, ','); //更新xhLuckyDrawActivity $update = ['awardIds' => $luckyDrawActivityIds]; xhLuckyDrawActivityService::updateById($re['id'], $update); $transaction->commit(); util::successInfo('抽奖活动保存成功', 'A0001'); }catch (Exception $e) { $transaction->rollBack(); util::failInfo('抽奖活动保存失败'); } } public function actionEdit(){ $id = Yii::$app->request->get('id'); $awards = []; $activity = xhLuckyDrawActivityService::getById($id); $this->merchantCheck($activity);//检测merchantId数据权限 $awardIds = $activity['awardIds']; $awardIdsArr = explode(',', $awardIds); foreach ($awardIdsArr as $awardId){ $awards[] = xhLuckyDrawAwardService::getById($awardId); } $awards = util::arraySequence($awards, 'order', 'SORT_ASC'); echo "
";
	    print_r($awards);
	    die;
        return $this->render('edit', ['activity'=>$activity, 'awards'=>$awards]);
    }

    public function  actionUpdate(){
        $post = Yii::$app->request->post();
        $luckyDrawActivityId = $post['id'];

        //检查是否有用户参与了,是:禁止修改
        $condition = ['luckyDrawActivityId'=>$luckyDrawActivityId];
        $participantCount = xhLuckyDrawAwardParticipant::getCount($condition);
        if($participantCount > 0){
            util::failInfo('有客户参与了抽奖活动,不能修改!');
        }
        $awardIds = $post['awardId'];
        $awardNames = $post['awardName'];
        $orders = $post['order'];
        $counts = $post['count'];
        $probabilities = $post['probability'];
        $luckyDrawActivityIds = '';

        $post['startTime'] = strtotime($post['startTime']);
        $post['endTime'] = strtotime($post['endTime']);
        $post['awardIds'] = '';
        $post['createTime'] = date('Y-m-d H:m:i', time());

        $re = xhLuckyDrawActivityService::updateById($luckyDrawActivityId, $post);
        if($re['status']){
            //奖品保存
            foreach($awardNames as $key => $awardName){
                $id = isset($awardIds[$key]) ? $awardIds[$key] : 0;
                if($id){
                    $data = [
                        'awardName' => $awardName,
                        'order' => $orders[$key],
                        'count' => $counts[$key],
                        'probability' => $probabilities[$key],
                        'luckyDrawActivityId' => $re['data']['id'],
                    ];
                    $reData = xhLuckyDrawAwardService::updateById($id, $data);
                    $drawAward = $reData['data'];
                    $luckyDrawActivityIds .= $drawAward['id'] . ',';
                }else{
                    $data = [
                        'awardName' => $awardName,
                        'order' => $orders[$key],
                        'count' => $counts[$key],
                        'probability' => $probabilities[$key],
                        'luckyDrawActivityId' => $re['data']['id'],
                    ];
                    $drawAward = xhLuckyDrawAwardService::add($data);
                    $luckyDrawActivityIds .= $drawAward['id'] . ',';
                }
            }
            $luckyDrawActivityIds = rtrim($luckyDrawActivityIds, ',');

            //更新xhLuckyDrawActivity
            $update = ['awardIds' => $luckyDrawActivityIds];
            xhLuckyDrawActivityService::updateById($luckyDrawActivityId, $update);

            util::successInfo('抽奖活动修改成功', 'A0001');
        }
        util::failInfo('抽奖活动修改失败');
    }

    public function actionSortAwards(){

    }

    /**
     * 中奖列表
     * @return string
     */
	public function actionWinList()
	{
        $luckyDrawActivityId = Yii::$app->request->get('id');
        $condition = ['luckyDrawActivityId' => $luckyDrawActivityId];
        $query = xhLuckyDrawAwardCustomer::find()->groupBy(['uid','awardId'])->where($condition)->orderBy('hitTime desc');
        //$countQuery	= clone $query;

        $pages	= new Pagination(['totalCount' => $query->count(),'pageSize' => 20]);
        $winnerList	= $query->offset($pages->offset)->limit($pages->limit)->asArray()->all();

        //按照奖品分类,展出获奖者
        if(!empty($winnerList)){
            foreach ($winnerList as $key => $winner){
                $uid = $winner['uid'];
                $winnerList[$key]['count'] = xhLuckyDrawAwardCustomer::getCount(['luckyDrawActivityId' => $luckyDrawActivityId, 'uid'=>$uid, 'awardId'=>$winner['awardId']]);
                $customer = xhUserService::getById($uid);
                $winnerList[$key]['mobile'] = $customer['mobile'];
                $winnerList[$key]['avatar'] = $customer['avatar'];
            }
        }

		return $this->render('winList', ['winnerList'=>$winnerList, 'pages'=>$pages]);
	}

    /**
     * 所有参加抽奖活动的用户列表
     * @return string
     */
	public function actionJoinList()
	{
        $luckyDrawActivityId = Yii::$app->request->get('id');

        $condition = ['luckyDrawActivityId' => $luckyDrawActivityId];
        $query = xhLuckyDrawAwardParticipant::find()->where($condition)->orderBy('participateTime desc');
        $totalCount = $query->count();

        $pages	= new Pagination(['totalCount' => $totalCount, 'pageSize' => 20]);
        $participants = $query->offset($pages->offset)->limit($pages->limit)->asArray()->all();
        $newParticipants = [];
        foreach ($participants as $participant){
            $uid = $participant['uid'];
            $user = xhUserService::getById($uid);
            $participant['userName'] = $user['userName'];
            $participant['mobile'] = $user['mobile'];
            $participant['avatar'] = $user['avatar'];
            $newParticipants[] = $participant;
        }

		return $this->render('joinList', ['participants'=>$newParticipants, 'totalCount'=>$totalCount, 'pages'=>$pages]);
	}

    /**
     * 奖品详情
     * @return string
     */
	public function  actionAwardDetail(){
        $luckyDrawActivityId = Yii::$app->request->get('id');

        $activity = xhLuckyDrawActivityService::getById($luckyDrawActivityId);
        $awardIds = $activity['awardIds'];
        $awardIdsArr = explode(',', $awardIds);
        foreach ($awardIdsArr as $awardId){
            $awards[] = xhLuckyDrawAwardService::getById($awardId);
        }
        //dump($awards);
        return $this->render('awardDetail', ['activityName'=>$activity['activityName'], 'awards'=>$awards]);
    }

    /**
     * 设置奖品已领取
     */
    public function actionSetAwardGet(){
        $awardId = Yii::$app->request->post('awardId');
        $luckyDrawActivityId = Yii::$app->request->post('activityId');
        $uid = Yii::$app->request->post('uid');

        $activity = xhLuckyDrawActivity::getById($luckyDrawActivityId);
        if($activity['merchantId'] != $this->merchantId) {//检测merchantId数据权限
            util::failInfo('非法访问', 'fail');
        }
        if($activity['endTime'] > time()){
            util::failInfo('抽奖活动未结束,禁止此设置', 'fail');
        }

        $condition = ['uid'=>$uid, 'luckyDrawActivityId'=>$luckyDrawActivityId, 'awardId'=>$awardId];
        $awardCustomers = xhLuckyDrawAwardCustomer::getAllByCondition($condition);

        foreach ($awardCustomers as $awardCustomer){
            $id = $awardCustomer['id'];
            if($awardCustomer['status'] == 1){
                //util::failInfo('已是领取状态', 'fail');
                continue;
            }

            if($awardCustomer['status'] == -1){
                //util::failInfo('已过期', 'fail');
                continue;
            }

            $data = ['status' => 1];
            $re = xhLuckyDrawAwardCustomerService::updateById($id, $data);
            /*if($re['status']){
                util::successInfo('置为领取成功', 'success');
            }else{
                util::failInfo('操作失败', 'fail');
            }*/
        }
        util::successInfo('置为领取成功', 'success');
    }

    /**
     * 生成活动链接的二维码地址
     */
    public function actionShowActQrcode()
    {
        $get			= Yii::$app->request->get();
        $id				= isset($get['id']) ? $get['id'] : 0;
        //$id校验与权限校验
        $activity			= xhLuckyDrawActivityService::getById($id);
        $this->merchantCheck($activity);//检测merchantId数据权限

        $url			= Yii::$app->params['frontUrl'].'/lottery/index?id='.$id.'&account='.$this->merchant['id'];
        $logo			= Yii::getAlias("@app").'/../images'.$this->merchant['logo'];//取商家的logo
        $imgUrl			= qrCodeUtil::generate($url, 'backend_active_url_'.$this->merchantId.'_'.$id, $logo);
        xhLuckyDrawActivityService::updateById($id, ['urlQrCode' => $imgUrl]);
        util::successInfo('操作成功','A0001',['url' =>$imgUrl]);
    }

    public function actionSendActiveUrl()
    {
        $get			= Yii::$app->request->get();
        $id				= isset($get['activeId']) ? $get['activeId'] : 0;
        $activity			= xhLuckyDrawActivityService::getById($id);
        $this->merchantCheck($activity);//检测merchantId数据权限

        $name			= $activity['activityName'];
        $url			= Yii::$app->params['frontUrl'].'/lottery/index?id='.$id.'&account='.$this->merchant['id'];
        $admin			= xhAdminToMerchantService::getAdminByMerchantId($this->merchantId);
        $openMerchant	= xhWxOpenService::getMerchant();
        xhTMessageService::sendUrl($url, $name, $openMerchant, $admin);
        util::successInfo('已发送');
    }
}