Recommend.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. namespace app\controller\api\warehouse;
  3. use app\common\repositories\store\product\ProductRepository;
  4. use crmeb\basic\BaseController;
  5. use think\facade\Cache;
  6. use think\facade\Db;
  7. class Recommend extends BaseController
  8. {
  9. public function lsts()
  10. {
  11. $today = date('Y-m-d');
  12. $res = Db::name('Recommend') -> where('status',1) -> where("show_time <= '$today'") -> group('show_time') -> order('show_time desc') -> limit(10) -> field('show_time') -> select() -> toArray();
  13. $date = array_column($res,'show_time');
  14. $list = Db::name('Recommend') -> where('status',1) -> whereIn('show_time',$date) -> field("id,recommend_image,show_time") -> select() -> toArray();
  15. return app('json')->success($this -> order($list,$date));
  16. }
  17. public function detail(){
  18. $data = $this -> request -> params(['id']);
  19. if(empty($data['id'])){
  20. return app('json')->fail('参数错误');
  21. }
  22. $detail = Db::name('Recommend')
  23. -> alias('r')
  24. -> join('StoreProduct sp','r.product_id = sp.product_id')
  25. -> where('id',$data['id'])
  26. -> field('r.name,r.product_id,r.show_time,r.recommend_image,r.details,r.images,sp.image,sp.store_name,sp.price,sp.dc_price,sp.type,sp.ot_price')
  27. -> find();
  28. $detail['images'] = json_decode($detail['images'],true);
  29. $ProductRepository=app() -> make(ProductRepository::class);
  30. $detail['yanglaojin'] =$ProductRepository->yanglaojin($detail['product_id'],0,1);
  31. return app('json')->success($detail);
  32. }
  33. public function share(){
  34. $data = $this -> request -> params(['id']);
  35. if(empty($data['id'])){
  36. return app('json')->fail('参数错误');
  37. }
  38. $detail = Db::name('Recommend')
  39. -> where('id',$data['id'])
  40. -> field('name,recommend_image,details')
  41. -> find();
  42. return app('json')->success($detail);
  43. }
  44. public function order($list,$date){
  45. $new = [];
  46. // $today = date('Y-m-d');
  47. foreach($date as $value){
  48. $news = [];
  49. $d = explode('-',$value);
  50. $news['date'] = $d[1].'月'.$d[2].'日';
  51. foreach ($list as $key => $v){
  52. if($v['show_time'] == $value){
  53. $news['list'][] = $v;
  54. }
  55. }
  56. $new[] = $news;
  57. unset($news);
  58. }
  59. return $new;
  60. }
  61. public function get_access_token(){
  62. $access_token = Cache::get('wx9909df446471d46b_access_token');
  63. if ($access_token)
  64. return $access_token;
  65. $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx9909df446471d46b&secret=9f1bb3a062b163fa5a780c976092f009";
  66. $res = curlGet($url);
  67. Cache::set('wx9909df446471d46b_access_token', $res['access_token'], $res['expires_in']);
  68. return $res['access_token'];
  69. }
  70. public function get_ticket(){
  71. $ticket = Cache::get('wx9909df446471d46b_ticket');
  72. if($ticket)
  73. return $ticket;
  74. $access_token = $this -> get_access_token();
  75. $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$access_token&type=jsapi";
  76. $res = curlGet($url);
  77. Cache::set('wx9909df446471d46b_ticket', $res['ticket'], $res['expires_in']);
  78. return $res['ticket'];
  79. }
  80. public function wx_config(){
  81. $data = $this -> request -> params(['url']);
  82. if(empty($data['url'])){
  83. return app('json')->fail('参数错误');
  84. }
  85. $noncestr = $this->getRandStr(16);//随机字符串
  86. $jsapi_ticket = $this -> get_ticket();
  87. $timestamp = time();
  88. $url = $data['url'];
  89. $sign = sha1("jsapi_ticket={$jsapi_ticket}&noncestr={$noncestr}&timestamp={$timestamp}&url={$url}");
  90. $data = [
  91. 'timestamp' => $timestamp,
  92. 'noncestor' => $noncestr,
  93. 'signature' => $sign,
  94. ];
  95. return app('json')->success($data);
  96. }
  97. /**
  98. * 随机字符串
  99. */
  100. public function getRandStr($length)
  101. {
  102. //字符组合
  103. $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  104. $len = strlen($str) - 1;
  105. $randstr = '';
  106. for ($i = 0; $i < $length; $i++) {
  107. $num = mt_rand(0, $len);
  108. $randstr .= $str[$num];
  109. }
  110. return $randstr;
  111. }
  112. public function add_madia(){
  113. $data = $this -> request -> params(['images']);
  114. if(empty($data['images'])){
  115. return app('json')->fail('参数错误');
  116. }
  117. $images = $data['images'];
  118. $id = [];
  119. foreach($images as $value){
  120. if(strpos($value,'https://cdn.bjtdba.com') !== false || strpos($value,'http://cdn.bjtdba.com') !== false ){
  121. $image = str_replace('https://cdn.bjtdba.com','/data/store',$value);
  122. $image = str_replace('http://cdn.bjtdba.com','/data/store',$image);
  123. $access_token = $this -> get_access_token();
  124. $url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=$access_token&type=image";
  125. $data = ['media' => new \CURLFile($image)];
  126. $result = $this -> httpRequest($data,$url);
  127. $id[] = $result['media_id'] ?? json_encode($result);
  128. }
  129. }
  130. return app('json')->success($id);
  131. }
  132. public function httpRequest($data,$url){
  133. // $data = ['form-data' => $data];
  134. // if(is_array($data)){
  135. // $data = json_encode($data);
  136. // }
  137. // dump($data);
  138. $curl = curl_init();
  139. curl_setopt($curl, CURLOPT_URL, $url);
  140. curl_setopt($curl, CURLOPT_RETURNTRANSFER , true);
  141. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  142. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
  143. curl_setopt($curl, CURLOPT_POST, 1);
  144. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  145. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  146. $output = curl_exec($curl);
  147. // dump(curl_error($curl));
  148. curl_close($curl);
  149. // dump($output);
  150. return json_decode($output, true);
  151. }
  152. }