Share.php 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <?php
  2. namespace app\index\controller;
  3. use app\common\controller\Frontend;
  4. use app\common\library\Redis;
  5. use app\common\library\WeChatObject;
  6. use app\common\service\ActiveShareService;
  7. use app\common\service\ShareService;
  8. use app\main\constants\CacheConstants;
  9. use app\main\constants\RechargeConstants;
  10. use app\main\constants\UrlConstants;
  11. use app\main\helper\ArrayHelper;
  12. use app\main\service\AdminService;
  13. use app\main\service\BuyMoreService;
  14. use app\main\service\ExportFansService;
  15. use app\main\service\LogService;
  16. use app\main\service\UrlService;
  17. use app\main\service\UserService;
  18. use think\Config;
  19. use think\Cookie;
  20. use think\Request;
  21. use function fast\array_get;
  22. class Share extends Frontend
  23. {
  24. protected $layout = '';
  25. public function _initialize()
  26. {
  27. parent::_initialize();
  28. }
  29. /**
  30. * 活动入口页
  31. * @return string
  32. * @throws \think\Exception
  33. */
  34. public function index()
  35. {
  36. if (UserService::instance()->getRunTimeObject()->urlType == UrlConstants::REFERRAL_GROUND_PAGE_SPREAD) { //如果业务域名就跳转;
  37. $userInfo = UserService::instance()->getUserInfo();
  38. $adminConfig = AdminService::instance()->getAdminConfigModel()->getAdminInfoAll($userInfo->channel_id);
  39. $shareHost = Config::get('site.share_domain') . '/index/share/index?';
  40. if (strstr('http', $shareHost) === false) {
  41. $shareHost = 'http://' . $shareHost;
  42. }
  43. $params['from'] = 'wechat';
  44. $params['share_type'] = $this->request->get('type');
  45. $params['admin_id'] = $adminConfig['admin_id'];
  46. $params['channel_id'] = $userInfo->channel_id;
  47. $params['user_id'] = $userInfo->id;
  48. $shareHost .= http_build_query($params);
  49. $this->redirect($shareHost);
  50. }
  51. $userInfo = UserService::instance()->getUserInfo();
  52. $isOpenShare = Config::get('site.is_open_share');
  53. $channels = Config::get('site.share_channels');
  54. // echo $channels;
  55. // echo $userInfo->channel_id;exit;
  56. if ($isOpenShare && $channels != -1) {
  57. $channels = explode(',', $channels);
  58. $userChannel = explode(',', $userInfo->channel_id);
  59. $isHave = array_intersect($channels, $userChannel);
  60. if (empty($channels) || !$isHave) {
  61. $isOpenShare = 0;
  62. }
  63. }
  64. $toUrl = getCurrentDomain($userInfo->channel_id, '/index/user/recent');
  65. //获得分享内容
  66. $content = ActiveShareService::instance()->getShareContent($userInfo->channel_id, $userInfo->id);
  67. //获得分享统计
  68. $data = ShareService::instance()->getShareUserList($userInfo->id, 0, 6, $userInfo->nickname);
  69. $data['pageNum'] = 0;
  70. $data['lenNum'] = 6;
  71. //弹幕
  72. $barrage = ShareService::instance()->getShareBarrage($userInfo->id);
  73. // ShareService::instance()->attentionUser(60053,['nickname'=>'nihao','avatar'=>44544]);
  74. // ShareService::instance()->updateUserSourceTime($userInfo->id,60052);
  75. // $re = ShareService::instance()->ClickShareLink($userInfo->id,60052,1111111);
  76. // dump($re);exit;
  77. $this->assign('share_rules', Config::get('site.share_rules'));
  78. $this->assign('log_host', Config::get('site.loghost')); //设置打点域名
  79. $this->assign('content', str_replace("'", "\"", $content));
  80. $this->assign('barrage', $barrage);
  81. $this->assign('is_open_share', $isOpenShare);
  82. $this->assign('to_url', $toUrl);
  83. // dump($data)
  84. $this->assign('data', $data);
  85. return $this->view->fetch();
  86. }
  87. public function exportfans()
  88. {
  89. $user = UserService::instance()->getUserInfo();
  90. $channel_id = $user->channel_id;
  91. $fans = ExportFansService::instance()->checkFansSignToExport($channel_id, $user->id)->data;
  92. if ($fans) {
  93. $this->assign('fans', $fans);
  94. $adminConfig = AdminService::instance()->getAdminConfigModel()->getAdminInfoAll($user->channel_id);
  95. $this->assign('adminconfig', $adminConfig);
  96. return $this->view->fetch();
  97. } else {
  98. $this->redirect(getCurrentDomain($channel_id, '/index/user/recent'));
  99. }
  100. }
  101. //引导落地页
  102. public function leadpage($id)
  103. {
  104. if (empty($id) || !intval($id)) {
  105. $this->error('链接不存在');
  106. die;
  107. }
  108. $data = model("ExportFans")->getOne($id);
  109. if (!$data || !isset($data['lead_img']) || empty($data['lead_img'])) {
  110. $this->error('链接不存在');
  111. die;
  112. }
  113. $this->view->assign('data', $data);
  114. return $this->fetch();
  115. }
  116. //引导落地页
  117. public function landpage($id, $type)
  118. {
  119. $admininfo = model('AdminConfig')->getAdminInfoAll($this->urlChannelId);
  120. $wechat = new WeChatObject($admininfo);
  121. $officialAccount = $wechat->getOfficialAccount();
  122. //使用原始url生成签名
  123. $url = Request::instance()->url(true);
  124. $url = preg_replace('/:\d+$/', '', trim($url)); //去除 :端口 结束的
  125. $url = preg_replace('/:\d+\//', '/', trim($url)); //去除 :端口/
  126. $officialAccount->jssdk->setUrl($url);
  127. $json = $officialAccount->jssdk->buildConfig(['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareQZone'], false, false, true);
  128. $this->assign('wxjson', $json);
  129. if (empty($id) || !intval($id)) {
  130. $this->error('链接不存在');
  131. die;
  132. }
  133. $data = model("ExportFans")->getOne($id);
  134. if (!$data) {
  135. $this->error('链接不存在');
  136. die;
  137. }
  138. if ($type == 'sign') {
  139. $lead_field = 'lead_img';
  140. } else {
  141. $lead_field = $type . '_lead_img';
  142. }
  143. $row = [
  144. 'id' => $data['id'],
  145. 'lead_img' => ArrayHelper::array_get($data, $lead_field),
  146. 'share_icon' => ArrayHelper::array_get($data, 'share_icon'),
  147. 'title' => ArrayHelper::array_get($data, 'lead_title'),
  148. 'share_title' => ArrayHelper::array_get($data, 'share_title'),
  149. 'share_desc' => ArrayHelper::array_get($data, 'share_desc'),
  150. 'share_url' => ArrayHelper::array_get($data, 'share_url'),
  151. ];
  152. $this->view->assign('data', $row);
  153. return $this->fetch();
  154. }
  155. public function addkandian($id)
  156. {
  157. $user = UserService::instance()->getUserInfo();
  158. $export = ExportFansService::instance()->getExportFansModel()->getOne($id);
  159. if (!$export) {
  160. $this->error('活动已结束', '', '下次再来获取书币哦');
  161. }
  162. //书币赠送次数超限
  163. $cache = CacheConstants::getExportFansGiveKandianCount($user->id);
  164. if (Redis::instance()->get($cache) >= $export['share_times']) {
  165. $this->error('当日获取书币次数已满', '', '下次再来获取书币哦');
  166. }
  167. $cookie = Cookie::get('once');
  168. if (!$cookie) {
  169. $success = rand(0, 1);
  170. if ($success == 1) {
  171. BuyMoreService::instance()->addFreeKandian($user->id, $export['share_free_kandian'], 0, 3, RechargeConstants::RECHARGE_TYPE_ACTIVITY);
  172. Redis::instance()->incr($cache);
  173. Redis::instance()->expire($cache, 86400);
  174. Cookie::delete('once');
  175. $this->success('恭喜您获得<span style="color: red;">' . $export['share_free_kandian'] . '书币</span>', '', '请到<a href="/index/recharge/record">个人中心>充值记录</a>查看');
  176. } else {
  177. Cookie::set('once', 1);
  178. $this->error('您本次分享未获得书币', '', '下次分享必定获取书币');
  179. }
  180. } else {
  181. BuyMoreService::instance()->addFreeKandian($user->id, $export['share_free_kandian'], 0, 3, RechargeConstants::RECHARGE_TYPE_ACTIVITY);
  182. Redis::instance()->incr($cache);
  183. Redis::instance()->expire($cache, 86400);
  184. Cookie::delete('once');
  185. $this->success('恭喜您获得<span style="color: red;">' . $export['share_free_kandian'] . '书币</span>', '', '请到<a href="/index/recharge/record">个人中心>充值记录</a>查看');
  186. }
  187. }
  188. }