| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888 |
- <?php
- namespace saas\controllers;
- use common\services\xhUserAlipayService;
- use common\services\xhUserIntegralService;
- use Yii;
- use common\services\xhTrainClassService;
- use common\services\xhOrderService;
- use common\services\xhPayToolService;
- use common\services\xhRechargeService;
- use common\services\xhMerchantExtendService;
- use common\services\xhMerchantAssetService;
- use common\services\xhUserAssetService;
- use common\services\xhCouponService;
- use common\services\xhUserTagService;
- use common\models\xhUserTag;
- use common\services\xhUserTagClassService;
- use common\models\xhTrainCourse;
- use common\models\xhTrainStudent;
- use common\models\xhUser;
- use common\models\xhUserAsset;
- use common\services\xhAdminService;
- use common\services\xhMerchantService;
- use common\components\stringUtil;
- use common\components\weixinUtil;
- use common\services\xhTMessageService;
- use common\components\configDict;
- use common\components\util;
- use common\components\page;
- use common\services\xhUserService;
- use common\models\xhTrainUserCourse;
- use common\services\xhUserByDayService;
- use common\models\xhUserAlipay;
- use common\services\xhUserUniteService;
- use common\services\xhMerchantCapitalService;
- class UserController extends PlatformController
- {
-
- public function actionList()
- {
- $get = Yii::$app->request->get();
- $query = xhUser::find();
- if (isset($get['content']) && !empty($get['content'])) {
- $content = $get['content'];
- if (stringUtil::isMobieNumber($content)) {
- $query->andWhere(['mobile' => $content]);
- } else {
- $query->andWhere(['like', 'userName', $content]);
- }
- }
- if (isset($get['class']) && $get['class'] == 1) {
- $query->andWhere(['isMember' => 1]);
- }
- $countQuery = clone $query;
- $count = $countQuery->count();
- $page = isset($get['page']) ? $get['page'] : 1;
- $pageSize = 20;
- $offset = ($page - 1) * $pageSize;
- $models = $query->offset($offset)->orderBy('createTime desc')->limit($pageSize)->asArray()->all();
- $page = new page($count, $page, $pageSize);
- $paging = $page->fpage();
- return $this->render('list', [
- 'models' => $models,
- 'pages' => $paging,
- ]);
- }
-
- public function actionAlipayUser()
- {
- $get = Yii::$app->request->get();
- $query = xhUserAlipay::find();
- $countQuery = clone $query;
- $count = $countQuery->count();
- $page = isset($get['page']) ? $get['page'] : 1;
- $pageSize = 20;
- $offset = ($page - 1) * $pageSize;
- $models = $query->offset($offset)->orderBy('updateTime desc')->limit($pageSize)->asArray()->all();
- $page = new page($count, $page, $pageSize);
- $paging = $page->fpage();
- return $this->render('alipayUser', [
- 'models' => $models,
- 'pages' => $paging,
- ]);
- }
-
- public function actionAlipayUserDetail()
- {
- $get = Yii::$app->request->get();
- $alipayId = isset($get['alipayId']) ? $get['alipayId'] : '';
- $alipay = xhUserAlipayService::getByIds($alipayId, $this->merchantId);
- return $this->render('alipayUserDetail', ['alipay' => $alipay]);
- }
-
- public function actionDetail()
- {
- $get = Yii::$app->request->get();
- $id = isset($get['id']) ? $get['id'] : 0;
- $user = xhUserService::getById($id);
- $userAsset = xhUserAssetService::getByUserId($id);
- $merchantId = $user['merchantId'];
- $merchant = xhMerchantService::getById($merchantId);
- $class = xhTrainClassService::getAllByCondition(['merchantId' => $merchantId]);
- //取商标的所有用户标签
- $merchantTag = xhUserTagClassService::getMerchantTag($merchantId);
- $userTag = xhUserTagService::getUserTag($id);
- $coupon = xhCouponService::getUserCoupon($id);//取代金劵
- $merchantExtend = xhMerchantExtendService::getByMerchantId($merchantId);
- $memberIntegral = xhMerchantExtendService::getGradeList($merchantExtend, 'desc');
- $freight = configDict::getConfig('freight');//运费计算
- $alipayId = 0;
- $alipayInfo = [];
- if (!empty($user['alipayId'])) {
- $alipayId = $user['alipayId'];
- $alipayInfo = xhUserAlipayService::getByIds($alipayId, $merchantId);
- }
- return $this->render('detail', [
- 'merchantExtend' => $merchantExtend,
- 'userTag' => $userTag,
- 'coupon' => $coupon,
- 'merchantTag' => $merchantTag,
- 'user' => $user,
- 'class' => $class,
- 'userAsset' => $userAsset,
- 'memberIntegral' => $memberIntegral,
- 'freight' => $freight,
- 'merchant' => $merchant,
- 'alipayInfo' => $alipayInfo,
- ]);
- }
-
- /**
- * 升级为会员
- */
- public function actionUpgrade()
- {
- $get = Yii::$app->request->get();
- $adminId = $this->adminId;
- $admin = xhAdminService::getById($adminId);
- if (isset($get['confirmPassword']) == false) {
- util::failInfo('请填写确认密码');
- }
- if (isset($get['memberLevel']) == false || empty($get['memberLevel'])) {
- util::failInfo('请选择等级数');
- }
- $userId = isset($get['userId']) ? $get['userId'] : 0;
- $memberLevel = $get['memberLevel'];
- $user = xhUserService::getById($userId);
- if (empty($user) || $user['merchantId'] != $this->merchantId) {
- util::failInfo('客户不存在');
- }
- if (empty($user['mobile'])) {
- util::failInfo('客户还没有设置手机号哦');
- }
- $confirmPassword = $get['confirmPassword'];
- if (md5($confirmPassword) != $admin['confirmPassword']) {
- util::failInfo('确认密码有误');
- }
- $grade = xhMerchantExtendService::getGradeList($this->merchantExtend, 'desc');
- $newLevelPoint = $grade[$memberLevel]['point'];//升级到当前级别需要的积分数
- $userAsset = xhUserAssetService::getByUserId($userId);//用户资产
- if (!empty($userAsset['isMember']) && $userAsset['memberLevel'] >= $memberLevel) {
- util::failInfo('客户已经达到此级别了');
- }
- $addPoint = $newLevelPoint - $userAsset['point'];
- $upData['point'] = $newLevelPoint;//升级后的积分
- $upData['memberLevel'] = $memberLevel;
- $upData['isMember'] = 1;
- xhUserAssetService::updateByUserId($userId, $upData);
-
- $now = time();
- $date = date("Y-m-d H:i", $now);
- $cashPay = configDict::getConfig('payWay', 'cashPay');
- $allTM = xhTMessageService::getList($this->merchantId);
- $openId = $user['openId'];
- $shortTempId = 'OPENTM205211943';//升级通知
- if (isset($allTM[$shortTempId])) {
- $tempId = $allTM[$shortTempId];
- $data = [
- "touser" => $openId, "template_id" => $tempId, "url" => Yii::$app->params['frontUrl'] . '/center/right?account=' . $this->merchant['id'],
- "data" => [
- "first" => ["value" => "恭喜,您已经升为{$memberLevel}级会员。", "color" => "#173177"],
- "keyword1" => ["value" => $user['userName'], "color" => "#173177"],
- "keyword2" => ["value" => $date, "color" => "#173177"],
- "remark" => ["value" => "点击查看会员权益", "color" => "#173177"],
- ]];
- weixinUtil::sendTaskInform($data, $this->merchant);
- }
- util::successInfo();
- }
-
- /**
- * 充值
- */
- public function actionRecharge()
- {
- $get = Yii::$app->request->get();
- $rechargePassword = isset($get['rechargePassword']) ? $get['rechargePassword'] : '';
- $adminId = $this->adminId;
- $admin = xhAdminService::getById($adminId);
- if (empty($admin['confirmPassword'])) {
- util::failInfo('您还没有设置确认密码');
- }
- if (md5($rechargePassword) != $admin['confirmPassword']) {
- util::failInfo('确认密码有误哦');
- }
- $userId = isset($get['userId']) ? $get['userId'] : 0;
- $rechargeAmount = isset($get['rechargeAmount']) ? $get['rechargeAmount'] : 1;
- $user = xhUserService::getById($userId);
- if (empty($user) || $user['merchantId'] != $this->merchantId) {
- util::failInfo('访问出错,请联系网站管理员');
- }
- $openId = $user['openId'];
- $payPassword = $user['payPassword'];
- $date = date("Y-m-d H:i:s");
- $userAsset = xhUserAssetService::getByUserId($userId);
- if (empty($userAsset)) {
- util::failInfo('操作出错,请与网站管理员联系');
- }
- $totalBalance = $userAsset['balance'] + $rechargeAmount;
- $totalRecharge = $userAsset['totalRecharge'] + $rechargeAmount;
- $upData['balance'] = $totalBalance;
- $upData['totalRecharge'] = $totalRecharge;
- $return = xhRechargeService::recharge($rechargeAmount, $user, $this->adminId, $this->merchant, $this->merchantExtend, $this->merchantAsset);
- if ($return['code'] == 'A0001') {
- util::successInfo('充值成功');
- }
- util::successInfo('充值失败');
- }
-
- /**
- * 现金支付,转店主微信,转店主支付宝
- */
- public function actionCashPay()
- {
- $post = Yii::$app->request->post();
- $extend = $this->merchantExtend;
- //dump($post);die;
- $getUid = Yii::$app->request->get('userId');
- $userId = isset($getUid) ? $getUid : 0;
- $amount = isset($post['consumeAmount']) ? $post['consumeAmount'] : 1;
- $couponId = isset($post['couponId']) ? $post['couponId'] : 1;
-
- $user = xhUserService::getById($userId, $this->merchantId);
- /*if($user['merchantId'] != $this->merchantId){
- util::failInfo('非法访问');
- }*/
- if (!empty($user) && empty($user['subscribe'])) {
- util::failInfo('客户要关注公众号才能结算');
- }
- /*if(!empty($couponId)){
- $coupon = xhCouponService::getById($couponId);
- if($coupon['merchantId'] != $this->merchantId){
- util::failInfo('非法代金劵');
- }
- if($coupon['useStatus'] == 1 || time() > $coupon['deadline']){
- util::failInfo('代金劵已经失效');
- }
- if($coupon['meetAmount'] > $amount){
- util::failInfo('消费不足'.$coupon['meetAmount'].'元');
- }
- }*/
-
- $payWay = configDict::getConfig('payWay', 'cashPay');
- $payStyle = configDict::getConfig('payStyle', 'cashPay');
- $now = time();
- $expireTime = $now + 300;//订单5分钟后过期
- $payAdd['prePrice'] = $amount;
- $payAdd['actPrice'] = $amount;
- $payAdd['payWay'] = $payWay;
- $payAdd['payStyle'] = $payStyle;
- $payAdd['payStatus'] = 0;
- $payAdd['userId'] = $userId;
- $payAdd['merchantId'] = $this->merchantId;
- $payAdd['createTime'] = date("Y-m-d H:i:s", $now);
- $payAdd['deadline'] = $expireTime;
- xhOrderService::formatPost($payAdd, $post);
- $order = xhOrderService::add($payAdd);
- $id = $order['id'];
-
- $typeList = configDict::getConfig('capitalType');
- $capitalType = $typeList['xhOrder']['id'];
- $return = xhPayToolService::cashPay($id, $amount, $capitalType, $couponId);
-
- if ($return['code'] == 'A0001') {
- util::successInfo('登记成功');
- } else {
- Yii::warning(json_encode($return));
- }
- util::failInfo('登记没有成功');
- }
-
- /**
- * 重置支付密码
- */
- public function actionResetPayPassword()
- {
- $get = Yii::$app->request->get();
- $id = isset($get['id']) ? $get['id'] : 0;
- $user = xhUserService::getById($id);
- if (empty($user) || $user['merchantId'] != $this->merchantId) {
- util::failInfo('没有这个客户');
- }
- if (empty($user['subscribe'])) {
- util::failInfo('客户要先关注公众号哦');
- }
- $rand = stringUtil::getRandNum(6);
- xhUserService::updateById($id, ['payPassword' => md5($rand)]);
- $openId = $user['openId'];
- $allTM = xhTMessageService::getList($this->merchantId);
- $shortTempId = 'OPENTM207430125';
- $tempId = $allTM[$shortTempId];
- $url = Yii::$app->params['frontUrl'] . '/center/password?account=' . $this->merchant['id'];
- $data = [
- "touser" => $openId, "template_id" => $tempId, "url" => $url,
- "data" => ["first" => ["value" => '操作成功', "color" => "#173177"],
- "keyword1" => ["value" => "你的支付密码已经重置为:" . $rand, "color" => "#173177"],
- "keyword2" => ["value" => date("Y-m-d H:i"), "color" => "#173177"],
- "remark" => ["value" => "点此修改成好记的密码哦", "color" => "#173177"]]];
- weixinUtil::sendTaskInform($data, $this->merchant);
- util::successInfo();
- }
-
- /**
- * 导出用户,备份用户
- */
- public function actionExport()
- {
- $query = xhUserAsset::find();
- $query->where(['merchantId' => $this->merchantId])->andWhere(['>', 'integral', 0]);
- $userAsset = $query->orderBy('integral desc')->all();
- if (empty($userAsset)) {
- echo '没有获得积分用户';
- Yii::$app->end();
- }
- $objectPHPExcel = new \PHPExcel();
- $objectPHPExcel->setActiveSheetIndex(0);
-
- $memberCount = xhUserAsset::find()->andWhere(['isMember' => 1, 'merchantId' => $this->merchantId])->count('id');//会员数
- $allUsercount = xhUserAsset::find()->andWhere(['merchantId' => $this->merchantId])->count('id');//用户数
-
- //报表头的输出
- $objectPHPExcel->getActiveSheet()->mergeCells('B1:G1');
- $objectPHPExcel->getActiveSheet()->setCellValue('B1', '用户信息表');
-
- $objectPHPExcel->setActiveSheetIndex(0)->setCellValue('B2', '用户信息表');
- $objectPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getFont()->setSize(24);
- $objectPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
-
- $objectPHPExcel->setActiveSheetIndex(0)->setCellValue('B2', '日期:' . date("Y年m月j日"));
- $objectPHPExcel->setActiveSheetIndex(0)->setCellValue('F2', '用户数:' . $allUsercount);
- $objectPHPExcel->setActiveSheetIndex(0)->setCellValue('G2', '会员数:' . $memberCount);
- $objectPHPExcel->setActiveSheetIndex(0)->getStyle('F2')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);//右居中
- $objectPHPExcel->setActiveSheetIndex(0)->getStyle('G2')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);//右居中
-
- //表格头的输出
- $objectPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(5);
- $objectPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(7);
- $objectPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(22);
- $objectPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(17);
- $objectPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
- $objectPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
- $objectPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(22);
- $objectPHPExcel->setActiveSheetIndex(0)->setCellValue('B3', '编号');
- $objectPHPExcel->setActiveSheetIndex(0)->setCellValue('C3', '昵称');
- $objectPHPExcel->setActiveSheetIndex(0)->setCellValue('D3', '会员等级');
- $objectPHPExcel->setActiveSheetIndex(0)->setCellValue('E3', '余额');
- $objectPHPExcel->setActiveSheetIndex(0)->setCellValue('F3', '积分');
- $objectPHPExcel->setActiveSheetIndex(0)->setCellValue('G3', '创建日期');
-
- //设置居中
- $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
-
- //设置边框
- $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')->getBorders()->getTop()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
- $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')->getBorders()->getLeft()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
- $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')->getBorders()->getRight()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
- $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')->getBorders()->getBottom()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
- $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')->getBorders()->getVertical()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
-
- //设置颜色
- $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('FF66CCCC');
-
- foreach ($userAsset as $subKey => $subMUser) {
- //明细的输出
- $objectPHPExcel->getActiveSheet()->setCellValue('B' . ($subKey + 4), $subKey + 1);
- $objectPHPExcel->getActiveSheet()->setCellValue('C' . ($subKey + 4), $subMUser->xhUser->userName);
- $objectPHPExcel->getActiveSheet()->setCellValue('D' . ($subKey + 4), $subMUser->memberLevel);
- $objectPHPExcel->getActiveSheet()->setCellValue('E' . ($subKey + 4), $subMUser->balance);
- $objectPHPExcel->getActiveSheet()->setCellValue('F' . ($subKey + 4), $subMUser->integral);
- $objectPHPExcel->getActiveSheet()->setCellValue('G' . ($subKey + 4), $subMUser->createTime);
- //设置边框
- $currentRowNum = $subKey + 4;
- $objectPHPExcel->getActiveSheet()->getStyle('B' . ($subKey + 4) . ':G' . $currentRowNum)->getBorders()->getTop()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
- $objectPHPExcel->getActiveSheet()->getStyle('B' . ($subKey + 4) . ':G' . $currentRowNum)->getBorders()->getLeft()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
- $objectPHPExcel->getActiveSheet()->getStyle('B' . ($subKey + 4) . ':G' . $currentRowNum)->getBorders()->getRight()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
- $objectPHPExcel->getActiveSheet()->getStyle('B' . ($subKey + 4) . ':G' . $currentRowNum)->getBorders()->getBottom()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
- $objectPHPExcel->getActiveSheet()->getStyle('B' . ($subKey + 4) . ':G' . $currentRowNum)->getBorders()->getVertical()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
- }
-
- //设置分页显示
- //$objectPHPExcel->getActiveSheet()->setBreak( 'I55' , \PHPExcel_Worksheet::BREAK_ROW );
- //$objectPHPExcel->getActiveSheet()->setBreak( 'I10' , \PHPExcel_Worksheet::BREAK_COLUMN );
- $objectPHPExcel->getActiveSheet()->getPageSetup()->setHorizontalCentered(true);
- $objectPHPExcel->getActiveSheet()->getPageSetup()->setVerticalCentered(false);
-
- ob_end_clean();
- ob_start();
-
- header('Content-Type : application/vnd.ms-excel');
- header('Content-Disposition:attachment;filename="' . $this->merchant['merchantName'] . '会员' . date("Ymj") . '.xls"');
- $objWriter = \PHPExcel_IOFactory::createWriter($objectPHPExcel, 'Excel5');
- $objWriter->save('php://output');
- }
-
- /**
- * 报名培训
- */
- public function actionApplyTrain()
- {
- $get = Yii::$app->request->get();
- $userId = $get['userId'];
- $user = xhUserService::getById($userId);
- if (empty($user) || $user['merchantId'] != $this->merchantId) {
- util::failInfo('学员不存在');
- }
- if (empty($user['subscribe'])) {
- util::failInfo('学员还没有关注公众号哦~');
- }
- $student = xhTrainStudent::getByCondition(['userId' => $userId, 'merchantId' => $this->merchantId]);
- if (!empty($student)) {
- util::failInfo('已经报过名了哦~');
- }
- $classId = isset($get['classId']) ? $get['classId'] : 0;
- $class = xhTrainClassService::getById($classId);
- if (empty($class)) {
- util::failInfo('课程不存在哦~');
- }
- $nowTime = time();
- $stuData = ['userId' => $userId, 'merchantId' => $this->merchantId, 'registerTime' => $nowTime, 'classId' => $class['id'],
- 'addTime' => $nowTime, 'modTime' => $nowTime, 'tuition' => $class['tuition'], 'className' => $class['name'], 'lesson' => $class['lesson']];
- $student = xhTrainStudent::add($stuData);
- $course = xhTrainCourse::getAllByCondition(['classId' => $classId]);
- $userCourse = [];
- foreach ($course as $key => $val) {
- $userCourse[] = ['courseId' => $val['id'], 'courseName' => $val['name'], 'courseIntro' => $val['intro'], 'classId' => $classId, 'studentId' => $student['id'], 'userId' => $userId, 'merchantId' => $this->merchantId];
- }
- xhTrainUserCourse::batchAdd($userCourse);
- xhUserService::updateById($userId, ['identity' => 1]);
-
- $allTM = xhTMessageService::getList($this->merchantId);
- $openId = $user['openId'];
- $shortTempId = 'OPENTM401027382';
- $tempId = $allTM[$shortTempId];
- $data = array(
- "touser" => $openId,
- "template_id" => $tempId,//模板id,从公众平台后台取得
- "url" => $this->frontUrl . '/center/student-card?account=' . $this->merchant['id'],
- "data" => array(
- "first" => array(
- "value" => "恭喜,您已经成功报名。",
- "color" => "#173177"
- ),
- "keyword1" => array(
- "value" => $class['name'],
- "color" => "#173177"
- ),
- "keyword2" => array(
- "value" => date("Y-m-d H:i"),
- "color" => "#173177"
- ),
- "remark" => array(
- "value" => "您的学员卡已经激活,点此查看课程内容",
- "color" => "#173177"
- ),
- ),
- );
- weixinUtil::sendTaskInform($data, $this->merchant);
- util::successInfo('报名成功~');
- }
-
- public function actionRemark()
- {
- $get = Yii::$app->request->get();
- $userId = isset($get['userId']) ? $get['userId'] : 0;
- $user = xhUserService::getById($userId);
- if (empty($user) || $user['merchantId'] != $this->merchantId) {
- util::failInfo('用户不存在');
- }
- $remark = isset($get['remark']) ? $get['remark'] : '';
- xhUserService::updateById($userId, ['remark' => $remark]);
- util::successInfo();
- }
-
- public function actionTagUserList()
- {
- $get = Yii::$app->request->get();
- $tagId = isset($get['tagId']) ? $get['tagId'] : 0;
- $tagInfo = xhUserTagClassService::getByCondition(['tagId' => $tagId]);
- if (empty($tagInfo) || $tagInfo['merchantId'] != $this->merchantId) {
- util::stop('不合法标签');
- }
- $query = xhUserTag::find();
- $query->where(['tagId' => $tagId]);
- $query->orderBy('id desc');
- $countQuery = clone $query;
- $count = $countQuery->count();
- $page = isset($get['page']) ? $get['page'] : 1;
- $pageSize = 20;
- $offset = ($page - 1) * $pageSize;
- $models = $query->offset($offset)->orderBy('id desc')->limit($pageSize)->asArray()->all();
- $page = new page($count, $page, $pageSize);
- $paging = $page->fpage();
- $merchantTag = xhUserTagClassService::getMerchantTag($this->merchantId);
- return $this->render('tagUserList', ['models' => $models, 'paging' => $paging, 'merchantTag' => $merchantTag, 'tagInfo' => $tagInfo]);
- }
-
- public function actionTag()
- {
- $tag = xhUserTagClassService::getAllByCondition(['merchantId' => $this->merchantId]);
- return $this->render('tag', ['tag' => $tag]);
- }
-
- /**
- * 添加用户标签
- */
- public function actionTagAdd()
- {
- $post = Yii::$app->request->post();
- if (isset($post['tagName']) == false || empty($post['tagName'])) {
- util::failInfo('请填写标签名称');
- }
- $name = $post['tagName'];
- $tagArr = xhUserTagClassService::getMerchantTag($this->merchantId);
- if (!empty($tagArr) && in_array($name, $tagArr)) {
- util::failInfo('标签已经存在了');
- }
- $return = weixinUtil::createTag($this->merchant, $name);
- if (isset($return['errcode']) == false) {
- $tagId = $return['tag']['id'];
- $data = ['tagId' => $tagId, 'name' => $name, 'merchantId' => $this->merchantId];
- xhUserTagClassService::add($data, $this->merchantId);
- util::successInfo();
- }
- $errCode = $return['errcode'];
- $errList = weixinUtil::$errCodes;
- $msg = $errList[$errCode];
- util::failInfo($msg);
- }
-
- /**
- * 删除用户标签
- */
- public function actionTagDel()
- {
- $get = Yii::$app->request->get();
- if (isset($get['tagId']) == false || empty($get['tagId'])) {
- util::failInfo('请选择你要删除的标签');
- }
- $tagId = $get['tagId'];
- $status = xhUserTagService::getUserByTagId($tagId);
- if ($status) {
- util::failInfo('标签下还有用户,无法删除');
- }
- $tag = xhUserTagClassService::getByCondition(['tagId' => $tagId, 'merchantId' => $this->merchantId]);
- if (empty($tag)) {
- util::failInfo('标签不存在');
- }
- if ($tag['merchantId'] != $this->merchantId) {
- util::failInfo('非法操作');
- }
- $wxTagId = $tag['tagId'];
- $return = weixinUtil::delTag($this->merchant, $wxTagId);
- if (isset($return['errcode']) && $return['errcode'] == 0) {
- xhUserTagClassService::deleteByCondition(['tagId' => $tagId, 'merchantId' => $this->merchantId], $this->merchantId);
- util::successInfo();
- }
- $errCode = $return['errcode'];
- $errList = weixinUtil::$errCodes;
- $msg = $errList[$errCode];
- util::failInfo($msg);
- }
-
- /**
- * 修改标签
- */
- public function actionTagMod()
- {
- $get = Yii::$app->request->get();
- if (isset($get['id']) == false || empty($get['id'])) {
- util::failInfo('请选择标签');
- }
- $id = $get['id'];
- $tag = xhUserTagClassService::getByCondition(['id' => $id]);
- if (empty($tag)) {
- util::failInfo('标签已删除');
- }
- if ($tag['merchantId'] != $this->merchantId) {
- util::failInfo('非法访问');
- }
- $tagId = $tag['tagId'];
- $name = $get['tagName'];
- $return = weixinUtil::modTag($this->merchant, $tagId, $name);
- if (isset($return['errcode']) && $return['errcode'] == 0) {
- $data = ['name' => $name];
- xhUserTagClassService::updateById($id, $data, $this->merchantId);
- util::successInfo('操作成功');
- }
- $errCode = $return['errcode'];
- $errList = weixinUtil::$errCodes;
- $msg = $errList[$errCode];
- util::failInfo($msg);
- }
-
- /**
- * 对每个用户设置标签
- */
- public function actionTagSet()
- {
- $get = Yii::$app->request->get();
- $userId = isset($get['userId']) ? $get['userId'] : 0;
- $user = xhUserService::getById($userId);
- if (empty($user) || $user['merchantId'] != $this->merchantId) {
- util::failInfo('非法用户');
- }
- $tagId = isset($get['tagId']) ? $get['tagId'] : '';
- $merchantTag = xhUserTagClassService::getMerchantTag($this->merchantId);
- $mTag = array_flip($merchantTag);
- //防止非法标签id
- if (in_array($tagId, $mTag) == false) {
- util::failInfo('非法标签');
- }
- $userTag = xhUserTagService::getUserTag($userId);
- if (count($userTag) >= 3) {
- util::failInfo('最多只能设置三个标签哦');
- }
- if (in_array($tagId, $userTag)) {
- util::failInfo('此标签已经添加过了');
- }
- $openIdList = [$user['openId']];
- $return = weixinUtil::membersBatchTag($this->merchant, $openIdList, $tagId);
- if (isset($return['errcode']) == false) {
- util::failInfo('操作未成功,微信服务器没有返回');
- }
- if ($return['errcode'] != 0) {
- $errCode = $return['errcode'];
- $errList = weixinUtil::$errCodes;
- $msg = isset($errList[$errCode]) ? $errList[$errCode] : '';
- util::failInfo($msg);
- }
- $addTagData = ['merchantId' => $this->merchantId, 'tagId' => $tagId, 'userId' => $userId];
- xhUserTagService::add($addTagData);
- util::successInfo();
- }
-
- /**
- * 删除用户的标签
- */
- public function actionTagRemove()
- {
- $get = Yii::$app->request->get();
- $userId = isset($get['userId']) ? $get['userId'] : 0;
- $user = xhUserService::getById($userId);
- if (empty($user) || $user['merchantId'] != $this->merchantId) {
- util::failInfo('非法用户');
- }
- $tagId = isset($get['tagId']) ? $get['tagId'] : '';
- $merchantTag = xhUserTagClassService::getMerchantTag($this->merchantId);
- $mTag = array_flip($merchantTag);
- //防止非法标签id
- if (in_array($tagId, $mTag) == false) {
- util::failInfo('非法标签');
- }
- $openIdList = [$user['openId']];
- $return = weixinUtil::membersCancelTag($this->merchant, $openIdList, $tagId);
- if (isset($return['errcode']) == false) {
- util::failInfo('操作未成功,微信服务器没有返回');
- }
- if ($return['errcode'] != 0) {
- $errCode = $return['errcode'];
- $errList = weixinUtil::$errCodes;
- $msg = isset($errList[$errCode]) ? $errList[$errCode] : '';
- util::failInfo($msg);
- }
- xhUserTagService::deleteByCondition(['tagId' => $tagId, 'merchantId' => $this->merchantId, 'userId' => $userId]);
- util::successInfo('操作成功');
- }
-
- /**
- * 给多个用户添加标签
- */
- public function actionBatchAddUserTag()
- {
- $get = Yii::$app->request->get();
- if (isset($get['tagId']) == false || empty($get['tagId'])) {
- util::failInfo('请选择标签');
- }
- if (isset($get['userIdStr']) == false || empty($get['userIdStr'])) {
- util::failInfo('请选择用户');
- }
- $tagId = $get['tagId'];
- $userIdStr = trim($get['userIdStr']);
- $userIdList = explode(',', $userIdStr);
- $userIds = xhUserTagService::getUserIdByTagId($tagId, $this->merchantId);//取标签下的用户
- $toDoIds = array_diff($userIdList, $userIds);
- if (empty($toDoIds)) {
- util::successInfo('全部用户已经设置此标签了~');
- }
- $openIdList = [];
- $toSaveData = [];
- foreach ($toDoIds as $doKey => $doUserId) {
- $userInfo = xhUserService::getById($doUserId);
- if ($userInfo['merchantId'] == $this->merchantId) {
- $openIdList[] = $userInfo['openId'];
- $toSaveData[] = ['merchantId' => $this->merchantId, 'tagId' => $tagId, 'userId' => $doUserId];
- }
- }
- $return = weixinUtil::membersBatchTag($this->merchant, $openIdList, $tagId);//批量为用户打标签
- if (isset($return['errcode']) == false) {
- util::failInfo('操作失败');
- }
- if ($return['errcode'] == 0) {
- xhUserTagService::batchAdd($toSaveData);
- util::successInfo('操作成功');
- }
- $errCode = $return['errcode'];
- $errList = weixinUtil::$errCodes;
- $msg = isset($errList[$errCode]) ? $errList[$errCode] : '操作失败';
- util::failInfo($msg);
- }
-
- /**
- * 发放代金劵
- */
- public function actionGrantCoupon()
- {
- $get = Yii::$app->request->get();
- $userId = isset($get['userId']) ? $get['userId'] : 0;
- $userInfo = xhUserService::getById($userId);
- $merchantId = isset($userInfo['merchantId']) ? $userInfo['merchantId'] : 0;
- if ($this->merchantId != $merchantId) {
- util::failInfo('不是你的用户');
- }
- $duration = isset($get['duration']) && !empty($get['duration']) ? $get['duration'] : 60;
- $amount = isset($get['amount']) && !empty($get['amount']) ? $get['amount'] : 5;
- $meetAmount = isset($get['meetAmount']) && !empty($get['meetAmount']) ? $get['meetAmount'] : 150;
- if ($meetAmount <= $amount) {
- util::failInfo('消费金额要大于代金劵金额');
- }
- $get['beginTime'] = isset($get['beginTime']) && !empty($get['beginTime']) ? strtotime($get['beginTime']) : time();
- $get['deadline'] = $get['beginTime'] + $duration * 86400;
- $get['amount'] = $amount;
- $get['meetAmount'] = $meetAmount;
- $get['createTime'] = date("Y-m-d H:i:s");
- $get['merchantId'] = $this->merchantId;
- $get['userId'] = $userId;
- $get['number'] = 'CO' . stringUtil::buildOrderNo($userId);//代金劵编号
- xhCouponService::add($get, $userId);
- $allTM = xhTMessageService::getList($this->merchantId);
- $shortTempId = 'OPENTM207112032';//收入提醒
- $tempId = $allTM[$shortTempId];
- $openId = $userInfo['openId'];
- $data = ["touser" => $openId, "template_id" => $tempId,
- "url" => $this->frontUrl . '/center/coupon?account=' . $this->merchant['id'],
- "data" => [
- "first" => ["value" => "亲,您获得一张代金劵哦。", "color" => "#173177"],
- "keyword1" => ["value" => '代金劵', "color" => "#173177"],
- "keyword2" => ["value" => $amount . '元', "color" => "#173177"],
- "keyword3" => ["value" => date("Y-m-d H:i"), "color" => "#173177"],
- "remark" => ["value" => "点击查看详情", "color" => "#173177"]]];
- weixinUtil::sendTaskInform($data, $this->merchant);
- util::successInfo();
- }
-
- public function actionTrend()
- {
- $fans = xhUserByDayService::getLatestNum($this->merchantId, 29);
- return $this->render('trend', ['fans' => $fans,]);
- }
-
- /**
- * 将支付宝关联上微信号,积分迁移到微信号上
- */
- public function actionRelateUser()
- {
- $get = Yii::$app->request->get();
- $userId = isset($get['userId']) ? $get['userId'] : 0;
- $alipayId = isset($get['alipayId']) ? $get['alipayId'] : 0;
- $relation = xhUserAlipayService::getByIds($alipayId, $this->merchantId);
- if (empty($relation)) {
- util::failInfo('消费信息不存在');
- }
- if (isset($relation['userId']) && !empty($relation['userId'])) {
- util::failInfo('帐号已经绑定过了');
- }
- $user = xhUserService::getById($userId);
- if ($user['merchantId'] != $this->merchantId) {
- util::failInfo('不是您的用户');
- }
- $openId = $user['openId'];
- $userName = $user['userName'];
- if (!empty($user['alipayId'])) {
- util::failInfo($userName . '已经绑定过支付宝了');
- }
- xhUserAlipayService::updateByIds($alipayId, $this->merchantId, ['openId' => $openId, 'userId' => $userId, 'status' => 1]);
- $merchant = $this->merchant;
- $merchantExtend = $this->merchantExtend;
- $merchantId = $this->merchantId;
- $date = date("Y-m-d H:i:s");
- $now = time();
- $userAsset = xhUserAssetService::getByUserId($userId);
- $capitalTypeList = configDict::getConfig('capitalType');
- $capitalType = $capitalTypeList['xhUserUnite']['id'];
- $point = $relation['point'];
- $addIntegral = $point;
- $addPoint = $point;
- $totalExpend = $relation['totalExpend'];
- $uniteData = [
- 'alipayId' => $alipayId,
- 'merchantId' => $this->merchantId,
- 'userId' => $userId,
- 'point' => $point,
- 'totalExpend' => $totalExpend,
- 'operateId' => $this->adminId,
- 'addTime' => time(),
- 'createTime' => $date,
- ];
- $order = xhUserUniteService::add($uniteData);
- $orderId = $order['id'];
- $payWay = configDict::getConfig('payWay', 'alipay');
- $userIntegral = stringUtil::calcAdd($userAsset['integral'], $point);
- $userPoint = stringUtil::calcAdd($userAsset['point'], $point);
- $totalExpend = stringUtil::calcAdd($userAsset['totalExpend'], $totalExpend);
- $upAssetData = [];
- $upAssetData['integral'] = $userIntegral;
- $upAssetData['point'] = $userPoint;
- $upAssetData['totalExpend'] = $totalExpend;
- xhUserAssetService::ioChangeAsset($user, $userAsset, $upAssetData, $merchant, $merchantExtend, $order, $capitalType);//用户资产改变
-
- xhUserService::updateById($userId, ['alipayId' => $alipayId]);
-
- $integralData = [
- 'userId' => $userId,
- 'userName' => $userName,
- 'merchantId' => $merchantId,
- 'relateId' => (string)$orderId,
- 'integral' => $userIntegral,
- 'num' => $addIntegral,
- 'io' => 1,
- 'payWay' => $payWay,
- 'alipayId' => $alipayId,
- 'event' => '绑定支付宝帐号获得积分',
- 'operatorId' => $userId,
- 'createTime' => $date,
- 'addTime' => $now,
- 'capitalType' => $capitalType,
- ];
- xhUserIntegralService::add($integralData);//用户兑换型积分流水增加
-
-
- xhMerchantCapitalService::updateByCondition(['alipayId' => $alipayId, 'merchantId' => $this->merchantId], ['userId' => $userId, 'userName' => $userName]);
- xhOrderService::updateByCondition(['alipayId' => $alipayId, 'merchantId' => $this->merchantId], ['userId' => $userId]);
- util::successInfo();
- }
-
- /**
- * 关联前获取用户信息
- */
- public function actionGetUser()
- {
- $get = Yii::$app->request->get();
- $id = isset($get['id']) ? $get['id'] : 0;
- $user = xhUserService::getById($id);
- if ($user['subscribe'] == 0) {
- util::failInfo('没有关注公众号');
- }
- if ($user['merchantId'] != $this->merchantId) {
- util::failInfo('非法操作');
- }
- $largeImg = $user['avatar'];
- $avatarList = xhUserService::getAvatarList($largeImg);
- $avatar = $avatarList['small'];
- util::successInfo('操作成功', 'A0001', ['id' => $id, 'avatar' => $avatar, 'userName' => $user['userName']]);
- }
-
- }
|