$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('已发送');
}
}