index.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. <?php
  2. /**
  3. * cms首页
  4. *
  5. *
  6. *
  7. */
  8. use bonus\account;
  9. defined('InShopNC') or exit('Access Invalid!');
  10. require_once(BASE_ROOT_PATH . '/helper/goods_helper.php');
  11. require_once(BASE_ROOT_PATH . '/helper/special_helper.php');
  12. require_once(BASE_ROOT_PATH . '/helper/index_tab.php');
  13. require_once(BASE_ROOT_PATH . '/helper/util_helper.php');
  14. require_once(BASE_ROOT_PATH . '/helper/third_author/wxauthor.php');
  15. require_once(BASE_ROOT_PATH . '/mobile/control/special.php');
  16. require_once(BASE_ROOT_PATH . '/helper/third_author/wxauthor.php');
  17. require_once(BASE_ROOT_PATH . '/helper/session_helper.php');
  18. require_once(BASE_ROOT_PATH . '/helper/url_helper.php');
  19. class indexControl extends specialControl
  20. {
  21. const HomeSpecialID = 0;
  22. public function __construct()
  23. {
  24. parent::__construct();
  25. }
  26. public function tabsOp()
  27. {
  28. $tabs = index_tab::instance()->tabs();
  29. return self::outsuccess(array('tabs' => $tabs));
  30. }
  31. public function splashOp()
  32. {
  33. $sig = $_GET['sig'];
  34. $ret = $this->pub_special($this->splash_id());
  35. if(empty($ret['special_list'])) {
  36. return self::outsuccess(null);
  37. }
  38. $block = $ret['special_list'][0];
  39. if(empty($block) || empty($block['items'])) {
  40. return self::outsuccess(null);
  41. }
  42. $image = $block['items'][0]['image'];
  43. if(empty($sig) || $sig != md5($image)) {
  44. return self::outsuccess(array('sig' => md5($image),'url' => $image));
  45. } else {
  46. return self::outsuccess(null);
  47. }
  48. }
  49. private function splash_id()
  50. {
  51. global $config;
  52. $special_id = $config['splash_page']['special_id'];
  53. return $special_id;
  54. }
  55. public function inoherbOp()
  56. {
  57. return self::outsuccess(['direct_uri' => BASE_SITE_URL . '/hfive/inoherb/index.html?2'],"redirect");
  58. }
  59. public function memberOp()
  60. {
  61. $idol = $_GET['member_id'];
  62. if(empty($idol)) {
  63. return self::outerr(errcode::ErrParamter);
  64. }
  65. $memkey = urldecode($idol);
  66. $relay_id = intval(util::decrypt_data($memkey));
  67. if(session_helper::need_wechat_author()) {
  68. $author = new thrid_author\wxauthor();
  69. $url = BASE_SITE_URL . "/mobile/index.php?act=index&op=member&member_id={$idol}&relay_id={$relay_id}";
  70. $url = $author->enter($url);
  71. return self::outsuccess(['direct_uri' => $url],"redirect");
  72. }
  73. if(session_helper::logined() == false || wechat_helper::invite_bonus_tag())
  74. {
  75. if(wechat_helper::invite_bonus_tag()) {
  76. wechat_helper::clear_invite_bonus();
  77. }
  78. $type_sn = account_helper::invite_bonus($relay_id);
  79. if($type_sn == false) {
  80. return self::outerr(errcode::ErrBonus,"生成邀请红包失败.");
  81. }
  82. else {
  83. $ref_url = url_helper::bonus_open_url($type_sn);
  84. return self::outsuccess(['direct_uri' => $ref_url],"redirect");
  85. }
  86. }
  87. else {
  88. $myself = session_helper::memberid();
  89. $relateion = new \relation\mem_relation($myself);
  90. $isfriend = $relateion->is_follower($relay_id);
  91. return self::outsuccess(array('info' => new member_info($relay_id),'is_friend' => $isfriend),"member/index",'wap');
  92. }
  93. }
  94. public function room_inviteOp()
  95. {
  96. $room_id = intval($_GET['room_id']);
  97. $relay_id = intval($_GET["relay_id"]);
  98. if(session_helper::need_wechat_author())
  99. {
  100. $_SESSION['client_type'] = 'wap';
  101. $author = new thrid_author\wxauthor();
  102. $url = author_url::room_invite_url($room_id,$relay_id);
  103. $url = $author->enter($url);
  104. Log::record("url:$url",Log::DEBUG);
  105. return self::outsuccess(['direct_uri' => $url],"redirect");
  106. }
  107. $result = room\factory_client::instance()->invite($room_id,$relay_id,[session_helper::memberid()]);
  108. if(session_helper::isapp())
  109. {
  110. $_SESSION['client_type'] = 'ajax';
  111. if($result === false) {
  112. return self::outerr(errcode::ErrRoom,"进入失败");
  113. } else {
  114. $members = member_info::get_members($result['newusers']);
  115. $result['invitees'] = $members;
  116. $result["url"] = BASE_SITE_URL.'/mobile/index.php?act=member_talk&op=room_detail&talk_type=room&talk_id='.$result['room'];
  117. return self::outsuccess($result);
  118. }
  119. }
  120. else {
  121. $_SESSION['client_type'] = 'wap';
  122. return self::outsuccess(null,"talk/share_bonus");
  123. }
  124. }
  125. public function room_detailOp()
  126. {
  127. $talk_type = trim($_GET['talk_type']);
  128. $talk_id = intval($_GET["talk_id"]);
  129. $relay_id = intval($_GET['relay_id']);
  130. if(session_helper::need_wechat_author())
  131. {
  132. $author = new thrid_author\wxauthor();
  133. $url = author_url::room_detail_url($talk_type,$talk_id,$relay_id);
  134. $url = $author->enter($url);
  135. Log::record("url:$url",Log::DEBUG);
  136. return self::outsuccess(['direct_uri' => $url],"redirect");
  137. }
  138. $url = url_helper::room_detail_url($talk_type,$talk_id,$relay_id);
  139. return self::outsuccess(['direct_uri' => $url],"redirect");
  140. }
  141. public function member_detailOp()
  142. {
  143. $type = 3;
  144. $apply_id = intval($_GET['apply_id']);
  145. if($apply_id >0) {
  146. $type = 2;
  147. $member_id = "";
  148. }else{
  149. $type = 1;
  150. }
  151. $visitor_id = intval($_GET['visitor_id']);
  152. $from_type = intval($_GET['from_type']);
  153. if(!isset($visitor_id) || empty($visitor_id)){
  154. return self::outerr("参数有误");
  155. }
  156. if(!isset($from_type) || empty($from_type)){
  157. return self::outerr("参数有误");
  158. }
  159. $from_type = $from_type == 1?"room":"qrcode";
  160. $member_id = session_helper::memberid();
  161. $talks_helper = new room\talks_helper();
  162. $mine_friends = $talks_helper->friends($member_id);
  163. $is_friend = in_array($visitor_id ,$mine_friends);
  164. $member_info = [];
  165. $visitor_info = [];
  166. $items = member_info::get_members([$visitor_id,$member_id]);
  167. if (count($items) == 2)
  168. {
  169. foreach ($items as $item){
  170. if($item['member_id'] == $member_id){
  171. $member_info = $item;
  172. }elseif($item['member_id'] == $visitor_id){
  173. $visitor_info = $item;
  174. }
  175. }
  176. } elseif( count($items) == 1) {
  177. $member_info = $visitor_info = $items[0];
  178. } else {
  179. }
  180. $items = Model('room')->getRoomParts(["member_id"=>$visitor_id,'state' => 0],'room_id',false);
  181. $xroomids = [];
  182. if(!empty($items)) {
  183. foreach ($items as $item){
  184. $xroomids[] = $item['room_id'];
  185. }
  186. }
  187. $items = Model('room')->getRoomParts(["member_id"=>$member_id ,'state' => 0],'room_id',false);
  188. $yroomids = [];
  189. if(!empty($items)) {
  190. foreach ($items as $item){
  191. $yroomids[] = $item['room_id'];
  192. }
  193. }
  194. $intersect = array_intersect($xroomids,$yroomids);
  195. return self::outsuccess(["type"=>1,"common_rooms"=>count($intersect),"is_friend"=>$is_friend,"from_type"=>$from_type,"visitor_info"=>$visitor_info,"member_info"=>$member_info],"/talk/member_detail");
  196. }
  197. }
  198. class tpl_member
  199. {
  200. private $mOutput;
  201. private $mInfo;
  202. private $mIsFriend;
  203. private $mPred;
  204. public function __construct($output)
  205. {
  206. $this->mOutput = $output;
  207. $this->mInfo = $this->mOutput['info'];
  208. $this->mIsFriend = $this->mOutput['is_friend'];
  209. $userid = $this->mInfo->member_id();
  210. $this->mPred = new account($userid);
  211. }
  212. public function output_group()
  213. {
  214. $amount = $this->mPred->total_bonus();
  215. $amount = intval($amount * 100 + 0.5) / 100;
  216. $discount = $this->mInfo->discount_self();
  217. $discount = intval($discount * 100 + 0.5) / 100;
  218. $result = "<div class=\"cell\">
  219. <span class=\"cell_label\">红包余额</span><span class=\"cell_content\"><span class=\"letter_pro\">$amount</span>元</span>
  220. </div>
  221. <div class=\"cell\">
  222. <span class=\"cell_label\">累计节省</span><span class=\"cell_content\"><span class=\"letter_pro\">$discount</span>元</span>
  223. </div>";
  224. if(!session_helper::isapp()) {
  225. $from = '<div class="cell">
  226. <span class="cell_label">信息来源</span><span class="cell_content">来自扫一扫</span>
  227. </div>';
  228. $result .= $from;
  229. }
  230. return $result;
  231. }
  232. public function output_btn()
  233. {
  234. $is_friend = $this->mOutput['is_friend'];
  235. if(!session_helper::isapp())
  236. {
  237. $result = '<div class="submit">';
  238. if($is_friend) {
  239. $result .= '<p class="cell_label">你已经是他的粉丝了</p>';
  240. } else {
  241. $result .= '<button type="button" id="btn_add_friend" class="add_friend_btn">关注</button>';
  242. }
  243. $result .= '</div>';
  244. }
  245. else
  246. {
  247. $result = '<div class="submit">
  248. <button type="button" id="btn_thief_bonus" class="add_friend_btn">偷一点</button>
  249. </div>
  250. <div class="submit">
  251. <button type="button" id="btn_send_bonus" class="send_bonus_btn">发红包</button>
  252. </div>';
  253. if(!$is_friend) {
  254. $result .= '<div class="submit">';
  255. $result .= '<button type="button" id="btn_add_friend" class="add_friend_btn">关注</button>';
  256. $result .= '</div>';
  257. }
  258. }
  259. return $result;
  260. }
  261. }