Share.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?php
  2. /**
  3. * Share.php UTF-8
  4. * 分享
  5. *
  6. * @date : 2017/2/7 22:30
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 7.0
  11. */
  12. namespace huosdk\share;
  13. use huosdk\game\Game;
  14. use huosdk\game\Gamepack;
  15. use think\Config;
  16. use think\Db;
  17. use think\Loader;
  18. use think\Session;
  19. class Share {
  20. /**
  21. * 玩家ID与游戏ID为为空时 表示分享app
  22. *
  23. * @param int $mem_id
  24. * @param int $game_id
  25. *
  26. * @return string
  27. */
  28. public function getGame($mem_id = 0, $game_id = 0) {
  29. $_app_id = $game_id;
  30. $_mem_id = $mem_id;
  31. $cfg_app_congig = Config::get('config.HUOAPP');
  32. if (empty($_mem_id)) {
  33. return false;
  34. }
  35. // $_url = Url::build('wap/Game/read', ['gameid' => $_app_id, 'agentid' => $_mem_agent_id]);
  36. // $_url = Config::get('domain.SDKSITE').$_url;
  37. // if (in_array($_app_id, $cfg_app_congig)) { //没考虑双端问题
  38. if ($_app_id == $cfg_app_congig['APP_APPID']) {//安卓
  39. //分享app, 则分享每个app的下载地址
  40. $_gp_class = new Gamepack($mem_id);
  41. $_url = $_gp_class->getMemAppurl($mem_id);
  42. } elseif ($_app_id == $cfg_app_congig['IOS_APP_APPID']) {//ios
  43. $_url = SDKSITE."/ios/index.html";
  44. } else {
  45. //分享游戏 则分享官方游戏
  46. $_g_class = new Game();
  47. $_url = $_g_class->getDownlink($_app_id);
  48. }
  49. //生成分享信息
  50. $_title = Db::name('game_info')->where('app_id', $_app_id)->value('publicity');
  51. $_content = Db::name('game_info')->where('app_id', $_app_id)->value('description');
  52. $_share_id = $this->genLog($_mem_id, $_app_id, $_url, $_title, $_content);
  53. Loader::import('phpqrcode.phpqrcode');
  54. $object = new \QRcode();
  55. $level = 3;
  56. $size = 4;
  57. $errorCorrectionLevel = intval($level);//容错级别
  58. $matrixPointSize = intval($size);//生成图片大小
  59. $filename = $_mem_id.".png";
  60. $_path = Config::get('config.UPLOADPATH');
  61. $_savepath = ROOT_SITE_PATH.$_path.$filename;
  62. $object->png($_url, $_savepath, $errorCorrectionLevel, $matrixPointSize, 2);
  63. $_rdata['shareid'] = $_share_id;
  64. $_rdata['title'] = $_title ? $_title : '早游戏';
  65. $_rdata['url'] = $_url;
  66. $_rdata['sharetext'] = $_content ? $_content : '早游戏下载地址';
  67. $_rdata['codeurl'] = Config::get('domain.STATICSITE').'/upload/share/'.$filename;
  68. // 2017年8月4日23:38:23 wc
  69. $_rdata['sharetotal'] = $this->getShareTotal($_mem_id);
  70. $_rdata['memcnt'] = $this->getMemShareCnt($_mem_id);
  71. // 判断是否分包成功
  72. $_url = 1;
  73. if ($_url) {
  74. // 获取玩家分享获得的金币数
  75. $_res = Db::name('options')->where(['option_name' => 'mem_share_icon'])->value('option_value');
  76. $_mem_share_data = json_decode($_res, true);
  77. $_mem_share_icon = $_mem_share_data['option_value'];
  78. // 添加玩家积分
  79. $_mitg_class = new \huosdk\integral\Memitg($_mem_id);
  80. $_mitg_class->addbyAction(ITG_SHARE, $_mem_id);
  81. }
  82. return $_rdata;
  83. }
  84. /**
  85. * 获取玩家分享获得的总金额
  86. */
  87. public function getShareTotal($_mem_id) {
  88. $_sharetotal = Db::name('mem_integral_log')
  89. ->where(array('mem_id' => $_mem_id))
  90. ->sum('give_integral');
  91. return empty($_sharetotal) ? 0 : ceil(100 * $_sharetotal) / 100;
  92. }
  93. /**
  94. * 获取玩家分享获取的好友数
  95. */
  96. public function getMemShareCnt($_mem_id) {
  97. $_memcnt = Db::name('members')
  98. ->where(array('parent_mem_id' => $_mem_id))
  99. ->count('id');
  100. return empty($_memcnt) ? 0 : $_memcnt;
  101. }
  102. /**
  103. * 生成分享ID
  104. *
  105. * @param int $mem_id
  106. * @param int $app_id
  107. * @param string $url
  108. * @param string $title
  109. * @param string $content
  110. *
  111. * @return bool|int|string
  112. */
  113. public function genLog($mem_id = 0, $app_id = 0, $url = '', $title = '', $content = '') {
  114. $_share_data['mem_id'] = $mem_id;
  115. $_share_data['app_id'] = $app_id;
  116. $_share_data['imei'] = empty(Session::get('device_id', 'device')) ? '' : Session::get('device_id', 'device');
  117. $_share_data['deviceinfo'] = empty(Session::get('deviceinfo', 'device'))
  118. ? ''
  119. : Session::get(
  120. 'deviceinfo', 'device'
  121. );
  122. $_share_data['userua'] = empty(Session::get('userua', 'device')) ? '' : Session::get('userua', 'device');
  123. $_share_data['from'] = empty(Session::get('from', 'device')) ? '' : Session::get('from', 'device');
  124. $_share_data['create_time'] = time();
  125. $_share_data['title'] = empty($title) ? "" : $title;
  126. $_share_data['content'] = empty($content) ? "" : $content;
  127. $_share_data['url'] = $url;
  128. $_id = Db::name('share_log')->insertGetId($_share_data);
  129. if (false === $_id) {
  130. return false;
  131. }
  132. return $_id;
  133. }
  134. public function getList(array $map, $page = 1, $offset = 10) {
  135. $_mem_id = Session::get('id', 'user');
  136. if (!$_mem_id) {
  137. $_mem_id = Session::get('user.id');
  138. }
  139. $_map['parent_mem_id'] = $_mem_id;
  140. $_field = [
  141. 'm.id' => 'id',
  142. 'FROM_UNIXTIME(m.reg_time)' => 'time',
  143. "m.nickname" => 'username',
  144. "g.name" => 'gamename'
  145. ];
  146. $_join = [
  147. [
  148. Config::get('database.prefix').'game g',
  149. 'g.id=m.app_id',
  150. 'LEFT'
  151. ]
  152. ];
  153. $_rdata['count'] = Db::name('members')
  154. ->alias('m')
  155. ->join($_join)
  156. ->where($_map)
  157. ->count();
  158. if ($_rdata['count'] > 0) {
  159. $_page = $page." , ".$offset;
  160. $_list = Db::name('members')
  161. ->alias('m')
  162. ->field($_field)
  163. ->join($_join)
  164. ->where($_map)
  165. ->order("m.reg_time desc")
  166. ->page($_page)
  167. ->select();
  168. if (empty($_list)) {
  169. $_rdata['list'] = null;
  170. } else {
  171. $_rdata['list'] = $_list;
  172. }
  173. } else {
  174. $_rdata = null;
  175. }
  176. return $_rdata;
  177. }
  178. }