Fans.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\wechat\model;
  11. use app\model\BaseModel;
  12. /**
  13. * 微信粉丝
  14. */
  15. class Fans extends BaseModel
  16. {
  17. /***************************************************************** 微信粉丝 start ***************************************************************************/
  18. /**
  19. * 获取粉丝列表
  20. * @param array $condition
  21. * @param string $field
  22. * @param string $order
  23. * @param string $limit
  24. */
  25. public function getFansList($condition = [], $field = '*', $order = '', $limit = null)
  26. {
  27. $list = model('wechat_fans')->getList($condition, $field, $order, '', '', '', $limit);
  28. return $this->success($list);
  29. }
  30. /**
  31. * 获取粉丝分页列表
  32. * @param array $condition
  33. * @param number $page
  34. * @param string $page_size
  35. * @param string $order
  36. * @param string $field
  37. */
  38. public function getFansPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'subscribe_time desc', $field = '*')
  39. {
  40. $list = model('wechat_fans')->pageList($condition, $field, $order, $page, $page_size);
  41. return $this->success($list);
  42. }
  43. /**
  44. * 为微信粉丝批量打标签
  45. * @param $data
  46. */
  47. public function batchtagging($data)
  48. {
  49. //调用微信接口服务器配置 修改微信端粉丝标签
  50. $res = model('wechat_fans')->update(['tagid_list' => implode(',', $data['tag_id_list'])], ['openid' => ['in', $data['openid_list']]]);
  51. return $this->success($res);
  52. }
  53. /**
  54. * 为微信粉丝批量取消标签
  55. * @param unknown $data
  56. */
  57. public function batchUnTagging($data)
  58. {
  59. return $this->success();
  60. }
  61. /**
  62. * 同步粉丝标签
  63. * @param unknown $openid_list
  64. */
  65. public function syncFans($openid_list)
  66. {
  67. $wechat_model = new Wechat();
  68. $select_result = $wechat_model->selectUser($openid_list);//获取多个微信粉丝信息
  69. if ($select_result["code"] != 0)
  70. return $select_result;
  71. $user_list = $select_result["data"]["user_info_list"];
  72. $subscribe_scene_array = array(
  73. "ADD_SCENE_SEARCH" => "公众号搜索",
  74. "ADD_SCENE_ACCOUNT_MIGRATION" => "公众号迁移",
  75. "ADD_SCENE_PROFILE_CARD" => "名片分享",
  76. "ADD_SCENE_QR_CODE" => "扫描二维码",
  77. "ADD_SCENE_PROFILE_ LINK" => "图文页内名称点击",
  78. "ADD_SCENE_PROFILE_ITEM" => "图文页右上角菜单",
  79. "ADD_SCENE_PAID" => "支付后关注",
  80. "ADD_SCENE_OTHERS" => "其他",
  81. );
  82. foreach ($user_list as $user_k => $user_item) {
  83. $unionid = empty($user_item["unionid"]) ? '' : $user_item["unionid"];
  84. $province = base64_encode($user_item["province"]);
  85. $city = base64_encode($user_item["city"]);
  86. $nickname = base64_encode($user_item['nickname']);
  87. $nickname_decode = preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $user_item['nickname']);
  88. $data = array(
  89. 'nickname' => $nickname,
  90. 'nickname_decode' => $nickname_decode,
  91. 'headimgurl' => $user_item['headimgurl'],
  92. 'sex' => $user_item["sex"],
  93. 'language' => $user_item["language"],
  94. 'country' => $user_item["country"],
  95. 'province' => $province,
  96. 'city' => $city,
  97. 'district' => '',
  98. 'openid' => $user_item["openid"],
  99. 'unionid' => $unionid,
  100. 'groupid' => $user_item["groupid"],
  101. 'is_subscribe' => $user_item["subscribe"],
  102. 'remark' => $user_item["remark"],
  103. 'update_date' => time(),
  104. 'tagid_list' => empty($user_item["tagid_list"]) ? '' : implode(',', $user_item["tagid_list"]),
  105. 'subscribe_scene' => $user_item["subscribe_scene"],
  106. 'subscribe_scene_name' => $subscribe_scene_array[$user_item["subscribe_scene"]],
  107. 'qr_scene' => $user_item["qr_scene"],
  108. 'qr_scene_str' => $user_item["qr_scene_str"],
  109. 'subscribe_time' => $user_item["subscribe_time"],
  110. );
  111. $res = model("wechat_fans")->add($data);
  112. }
  113. return $this->success();
  114. }
  115. /***************************************************************** 微信粉丝 end ***************************************************************************/
  116. /***************************************************************** 微信粉丝标签 start ***************************************************************************/
  117. /**
  118. * 增加粉丝标签
  119. * @param $data
  120. */
  121. public function addFansTag($data)
  122. {
  123. $res = model('wechat_fans_tag')->add($data);
  124. if ($res === false)
  125. return $this->error('', 'UNKNOW_ERROR');
  126. //同步修改微信端粉丝标签
  127. return $this->success($res);
  128. }
  129. /**
  130. * 编辑粉丝标签
  131. * @param $data
  132. * @param $condition
  133. * @return int|\multitype
  134. */
  135. public function editFansTag($data, $condition)
  136. {
  137. $res = model('wechat_fans_tag')->update($data, $condition);
  138. if ($res === false)
  139. return $this->error('', 'UNKNOW_ERROR');
  140. //同步修改微信端粉丝标签
  141. return $this->success($res);
  142. }
  143. /**
  144. * 删除标签
  145. * @param unknown $data
  146. */
  147. public function deleteFansTag($condition)
  148. {
  149. $res = model('wechat_fans_tag')->delete($condition);
  150. return $this->success($res);
  151. }
  152. /**
  153. * 获取粉丝列表
  154. * @param array $condition
  155. * @param string $field
  156. * @param string $order
  157. * @param string $limit
  158. */
  159. public function getFansTagList($condition = [], $field = '*', $order = '', $limit = null)
  160. {
  161. $list = model('wechat_fans_tag')->getList($condition, $field, $order, '', '', '', $limit);
  162. return $this->success($list);
  163. }
  164. /**
  165. * 获取微信粉丝标签列表
  166. */
  167. public function getFansTagPageList($condition = [], $page = 1, $list_rows = PAGE_LIST_ROWS, $order = '', $field = true)
  168. {
  169. $list = model('wechat_fans_tag')->pageList($condition, $field, $order, $page, $list_rows);
  170. return $this->success($list);
  171. }
  172. /**
  173. * 同步粉丝标签
  174. * @param unknown $data
  175. */
  176. public function syncFansTag()
  177. {
  178. return $this->success();
  179. }
  180. /***************************************************************** 微信粉丝标签 end ***************************************************************************/
  181. /**
  182. * 增加粉丝
  183. * @param $data
  184. */
  185. public function addFans($data)
  186. {
  187. $res = model('wechat_fans')->add($data);
  188. return $this->success($res);
  189. }
  190. /**
  191. * 取消关注
  192. */
  193. public function unfollowWechat($open_id)
  194. {
  195. $data = array(
  196. 'is_subscribe' => 0,
  197. 'update_date' => time(),
  198. 'unsubscribe_time' => time()
  199. );
  200. $wechat_fans_model = model('wechat_fans');
  201. $res = $wechat_fans_model->update($data, ['openid' => $open_id]);
  202. return success($res);
  203. }
  204. /**
  205. * 粉丝详情
  206. * @param $condition
  207. */
  208. public function getFansInfo($condition, $field = "*")
  209. {
  210. if (!empty($cache)) {
  211. return $this->success($cache);
  212. }
  213. $info = model('wechat_fans')->getInfo($condition, $field);
  214. return $this->success($info);
  215. }
  216. /**
  217. * 编辑粉丝
  218. * @param $data
  219. * @param $condition
  220. */
  221. public function editFans($data, $condition)
  222. {
  223. $data["update_date"] = time();
  224. $result = model("wechat_fans")->update($data, $condition);
  225. return $this->success($result);
  226. }
  227. }