| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 |
- <?php
- namespace backend\controllers;
- use Yii;
- use yii\data\Pagination;
- use common\components\util;
- use common\components\qrCodeUtil;
- use common\models\xhLuckyDrawActivity;
- use common\models\xhLuckyDrawAwardCustomer;
- use common\models\xhLuckyDrawAwardParticipant;
- use common\services\xhLuckyDrawActivityService;
- use common\services\xhLuckyDrawAwardService;
- use common\services\xhUserService;
- use common\services\xhLuckyDrawAwardCustomerService;
- use common\services\xhWxOpenService;
- use common\services\xhAdminToMerchantService;
- use common\services\xhTMessageService;
- class LotteryController extends BackendController
- {
- public function actionList()
- {
- $condition = ['merchantId' => $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 "<pre>";
- 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('已发送');
- }
- }
|