WchatShare.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\divideticket\model\share;
  11. use addon\divideticket\model\Divideticket as DivideticketModel;
  12. use addon\divideticket\model\DivideticketFriendsGroup as DivideticketFriendsGroupModel;
  13. use app\model\share\WchatShareBase as BaseModel;
  14. use app\model\system\Config as ConfigModel;
  15. /**
  16. * 分享
  17. */
  18. class WchatShare extends BaseModel
  19. {
  20. protected $config = [
  21. [
  22. 'title' => '好友瓜分卷列表',
  23. 'config_key' => 'WCHAT_SHARE_CONFIG_DIVIDE_TICKET_LIST',
  24. 'path' => [ '/pages_promotion/divideticket/list' ],
  25. 'method_prefix' => 'divideTicketList',
  26. ],
  27. [
  28. 'title' => '好友瓜分卷分享',
  29. 'config_key' => 'WCHAT_SHARE_CONFIG_DIVIDE_TICKET_DETAIL',
  30. 'path' => [ '/pages_promotion/divideticket/index' ],
  31. 'method_prefix' => 'divideTicketDetail',
  32. ],
  33. ];
  34. protected $sort = 20;
  35. /**
  36. * 好友瓜分卷分享数据
  37. * @param $param
  38. * @return array
  39. */
  40. protected function divideTicketListShareData($param)
  41. {
  42. //跳转路径
  43. $link = $this->getShareLink($param);
  44. $config_data = $this->divideTicketListShareConfig($param)[ 'value' ];
  45. $data = [
  46. 'link' => $link,
  47. 'desc' => $config_data[ 'desc' ],
  48. 'imgUrl' => $config_data[ 'imgUrl' ],
  49. 'title' => $config_data[ 'title' ]
  50. ];
  51. return [
  52. 'permission' => [
  53. 'hideOptionMenu' => false,
  54. 'hideMenuItems' => [],
  55. ],
  56. 'data' => $data,//分享内容
  57. ];
  58. }
  59. /**
  60. * 好友瓜分卷列表分享配置
  61. * @param $param
  62. * @return array
  63. */
  64. public function divideTicketListShareConfig($param)
  65. {
  66. $site_id = $param[ 'site_id' ];
  67. $config = $param[ 'config' ];
  68. $config_model = new ConfigModel();
  69. $data = $config_model->getConfig([ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', $config[ 'config_key' ] ] ])[ 'data' ];
  70. if (empty($data[ 'value' ])) {
  71. $data[ 'value' ] = [
  72. 'title' => "好友瓜分卷列表",
  73. 'desc' => "喊好友\n一起来瓜分",
  74. 'imgUrl' => ''
  75. ];
  76. }
  77. if (empty($data[ 'value' ][ 'imgUrl' ])) {
  78. $data[ 'value' ][ 'imgUrl' ] = img('addon/divideticket/icon.png');
  79. }
  80. return [
  81. 'value' => $data[ 'value' ],
  82. ];
  83. }
  84. /**
  85. * 好友瓜分卷分享数据
  86. * @param $param
  87. * @return array
  88. */
  89. protected function divideTicketDetailShareData($param)
  90. {
  91. $site_id = $param[ 'site_id' ];
  92. $member_id = $param[ 'member_id' ];
  93. //链接参数
  94. parse_str(parse_url($param[ 'url' ])[ 'query' ] ?? '', $query);
  95. if (isset($query[ 'coupon_id' ])) {
  96. $coupon_id = $query[ 'coupon_id' ];
  97. $divideticket_model = new DivideticketModel();
  98. $condition = [
  99. [ 'coupon_id', '=', $coupon_id ],
  100. [ 'site_id', '=', $site_id ],
  101. ];
  102. $divide_ticket_info = $divideticket_model->getDivideticketInfo($condition)[ 'data' ];
  103. if (!empty($divide_ticket_info)) {
  104. $link = $this->getShareLink($param);
  105. if (!empty($member_id)) {
  106. $group_model = new DivideticketFriendsGroupModel();
  107. $group_info = $group_model->getDivideticketFriendsGroupInfo([
  108. [ 'promotion_id', '=', $coupon_id ],
  109. [ '', 'exp', \think\facade\Db::raw("FIND_IN_SET({$member_id}, group_member_ids)") ],
  110. ], 'group_id')[ 'data' ];
  111. if (!empty($group_info)) {
  112. $group_id = $group_info[ 'group_id' ];
  113. $page_path = explode('?', $param[ 'url' ])[ 0 ];
  114. $link = "{$page_path}?coupon_id={$coupon_id}&group_id={$group_id}&inviter_id={$member_id}";
  115. }
  116. }
  117. $imgUrl = $divide_ticket_info[ 'image' ];
  118. if (empty($imgUrl)) $imgUrl = $this->getDefaultShareIcon();
  119. $data = [
  120. 'link' => $link,
  121. 'desc' => "仅差一人,即可瓜分{$divide_ticket_info['money']}元优惠劵",
  122. 'imgUrl' => $imgUrl,
  123. 'title' => $divide_ticket_info[ 'name' ],
  124. ];
  125. return [
  126. 'permission' => [
  127. 'hideOptionMenu' => false,
  128. 'hideMenuItems' => [],
  129. ],
  130. 'data' => $data,//分享内容
  131. ];
  132. }
  133. }
  134. }
  135. }