WchatShare.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\topic\model\share;
  11. use addon\topic\model\Topic as TopicModel;
  12. use app\model\share\WchatShareBase as BaseModel;
  13. use addon\topic\model\TopicGoods as TopicGoodsModel;
  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_TOPIC_LIST',
  24. 'path' => [ '/pages_promotion/topics/list' ],
  25. 'method_prefix' => 'topicList',
  26. ],
  27. [
  28. 'title' => '专题详情',
  29. 'config_key' => 'WCHAT_SHARE_CONFIG_TOPIC_DETAIL',
  30. 'path' => [ '/pages_promotion/topics/detail' ],
  31. 'method_prefix' => 'topicDetail',
  32. ],
  33. [
  34. 'title' => '专题商品详情',
  35. 'config_key' => 'WCHAT_SHARE_CONFIG_TOPIC_GOODS_DETAIL',
  36. 'path' => [ '/pages_promotion/topics/goods_detail' ],
  37. 'method_prefix' => 'goodsDetail',
  38. ],
  39. ];
  40. protected $sort = 9;
  41. /**
  42. * 专题列表
  43. * @param $param
  44. * @return array
  45. */
  46. protected function topicListShareData($param)
  47. {
  48. //跳转路径
  49. $link = $this->getShareLink($param);
  50. $config_data = $this->topicListShareConfig($param)[ 'value' ];
  51. $data = [
  52. 'link' => $link,
  53. 'desc' => $config_data[ 'desc' ],
  54. 'imgUrl' => $config_data[ 'imgUrl' ],
  55. 'title' => $config_data[ 'title' ]
  56. ];
  57. return [
  58. 'permission' => [
  59. 'hideOptionMenu' => false,
  60. 'hideMenuItems' => [],
  61. ],
  62. 'data' => $data,//分享内容
  63. ];
  64. }
  65. /**
  66. * 专题列表分享配置
  67. * @param $param
  68. * @return array
  69. */
  70. public function topicListShareConfig($param)
  71. {
  72. $site_id = $param[ 'site_id' ];
  73. $config = $param[ 'config' ];
  74. $config_model = new ConfigModel();
  75. $data = $config_model->getConfig([ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', $config[ 'config_key' ] ] ])[ 'data' ];
  76. if (empty($data[ 'value' ])) {
  77. $data[ 'value' ] = [
  78. 'title' => "专题列表",
  79. 'desc' => "更多活动\n快来参与",
  80. 'imgUrl' => ''
  81. ];
  82. }
  83. if (empty($data[ 'value' ][ 'imgUrl' ])) {
  84. $data[ 'value' ][ 'imgUrl' ] = img('addon/topic/icon.png');
  85. }
  86. return [
  87. 'value' => $data[ 'value' ],
  88. ];
  89. }
  90. /**
  91. * 专题详情
  92. * @param $param
  93. * @return array
  94. */
  95. protected function topicDetailShareData($param)
  96. {
  97. $site_id = $param[ 'site_id' ];
  98. //链接参数
  99. parse_str(parse_url($param[ 'url' ])[ 'query' ] ?? '', $query);
  100. if (isset($query[ 'topic_id' ])) {
  101. $topic_model = new TopicModel();
  102. $topic_detail = $topic_model->getTopicDetail([
  103. [ 'topic_id', '=', $query[ 'topic_id' ] ],
  104. [ 'site_id', '=', $site_id ],
  105. ])[ 'data' ];
  106. if (!empty($topic_detail)) {
  107. //跳转路径
  108. $link = $this->getShareLink($param);
  109. $data = [
  110. 'link' => $link,
  111. 'desc' => $topic_detail[ 'remark' ],
  112. 'imgUrl' => img($topic_detail[ 'topic_adv' ]),
  113. 'title' => $topic_detail[ 'topic_name' ],
  114. ];
  115. return [
  116. 'permission' => [
  117. 'hideOptionMenu' => false,
  118. 'hideMenuItems' => [],
  119. ],
  120. 'data' => $data,//分享内容
  121. ];
  122. }
  123. }
  124. }
  125. /**
  126. * 专题分享数据
  127. * @param $param
  128. * @return array
  129. */
  130. protected function goodsDetailShareData($param)
  131. {
  132. $url = $param[ 'url' ];
  133. $parse_res = parse_url($url);
  134. parse_str($parse_res[ 'query' ] ?? '', $query);
  135. if (isset($query[ 'id' ]) || isset($query[ 'topic_id' ])) {
  136. $id = isset($query[ 'id' ]) ? $query[ 'id' ] : $query[ 'topic_id' ];
  137. $goods = new TopicGoodsModel();
  138. $condition = [
  139. [ 'ptg.id', '=', $id ],
  140. [ 'pt.status', '=', 2 ]
  141. ];
  142. $sku_info = $goods->getTopicGoodsDetail($condition)[ 'data' ];
  143. if (!empty($sku_info)) {
  144. $config_model = new \app\model\share\WchatShare();
  145. $config_data = $config_model->goodsDetailShareConfig($param);
  146. $title = str_replace('{goods_name}', $sku_info[ 'sku_name' ], $config_data[ 'value' ][ 'title' ]);
  147. $desc = str_replace('{price}', $sku_info[ 'topic_price' ], $config_data[ 'value' ][ 'desc' ]);
  148. $link = $this->getShareLink($param);
  149. $image_url = $sku_info[ 'sku_image' ];
  150. $data = [
  151. 'title' => $title,
  152. 'desc' => $desc,
  153. 'link' => $link,
  154. 'imgUrl' => $image_url,
  155. ];
  156. return [
  157. 'permission' => [
  158. 'hideOptionMenu' => false,
  159. 'hideMenuItems' => [],
  160. ],
  161. 'data' => $data,//分享内容
  162. ];
  163. }
  164. }
  165. }
  166. }