Config.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. * 获取配置
  7. */
  8. namespace app\ais\controller\api\v1;
  9. use app\ais\controller\api\Base;
  10. use app\ais\model\AisConfig;
  11. use app\ais\model\AisCouponUser;
  12. use app\ais\model\AisOrder;
  13. use app\ais\model\AisStore;
  14. use app\ais\model\AisStoreBill;
  15. use app\ais\model\AisStoreGroup;
  16. use app\ais\model\AisStoreUnion;
  17. use app\ais\model\AisShopOrder;
  18. use app\ais\model\AisVip;
  19. use app\ais\model\AisVipUser;
  20. use app\common\facade\Upload;
  21. use Yurun\Util\HttpRequest;
  22. use think\Db;
  23. class Config extends Base{
  24. /**
  25. * 获取应用配置
  26. **/
  27. public function index(){
  28. $info = AisConfig::getConfig($this->miniapp->id);
  29. if(!isset($info)) {
  30. return enjson(403,'应用未配置');
  31. }
  32. $writer = json_decode($info->writer);
  33. $config['service_telephone'] = $info->service_telephone ??'';
  34. $config['shore_img'] = $writer->shore_img ??'';
  35. $config['shore_text'] = $writer->shore_text ??'';
  36. $config['mch_text'] = $writer->mch_text ??'';
  37. $config['mch_qrcode'] = $writer->mch_qrcode ??'';
  38. $config['group_profit'] = $info->group_profit ??0;
  39. //未绑定手机
  40. $config['user_bindphone'] = "";
  41. //是否会员
  42. $config['vip'] = ['is_vip' => 0,'info' => []];;
  43. //判断用户是否商家
  44. $config['store'] = ['is_store' => 0,'info' => []];
  45. //判断是否圈主
  46. $config['group'] = [
  47. 'is_group' => 0,
  48. 'join_num' => 0,
  49. 'order' => 0,
  50. 'count' => 0,
  51. 'help' => 0,
  52. 'group_member' => $info->group_member,
  53. 'group_join' => $info->group_join,
  54. 'info' => []
  55. ];
  56. $config['user_coupon_num'] = 0; //优惠券
  57. $config['user_order_num'] = 0; //买单数
  58. $config['user_save_money'] = 0; //已省钱
  59. $config['shop_order'] = 0; //优选订单数量
  60. if($this->user){
  61. //是否会员并返回会员信息
  62. $vip = AisVipUser::with(['vip' => function($query) {
  63. $query->field('id,name,is_auto_up,price,open_queue_reward,open_share_reward,open_store_num,open_vip_num,pay_queue_reward,pay_share_reward,price,rule');
  64. }])->where(['is_lock' => 0,'uid' => $this->user->id])->find();
  65. if(!empty($vip)){
  66. $config['vip']['is_vip'] = 1;
  67. $config['vip']['info'] = $vip->vip;
  68. }
  69. //统计订单
  70. $config['shop_order'] = AisShopOrder::where(['uid' =>$this->user->id,'paid_at' =>1,'status' => 0])->count(); //已支付未核销的订单
  71. $config['user_bindphone'] = $this->user->phone_uid ?? ''; //未绑定手机
  72. //优惠券
  73. $config['user_coupon_num'] = AisCouponUser::where(['member_miniapp_id' => $this->miniapp_id, 'is_end' => 0, 'uid' => $this->user->id])->count();
  74. //买单数
  75. $config['user_order_num'] = AisOrder::where(['member_miniapp_id' => $this->miniapp_id, 'state' => 1, 'uid' => $this->user->id])->count();
  76. //已省钱
  77. $config['user_save_money'] = AisCouponUser::where(['member_miniapp_id' => $this->miniapp_id, 'is_end' => 1, 'uid' => $this->user->id])->where('money', '>', 0)->sum('money');
  78. $store = AisStore::manageStore($this->user->id);
  79. if ($store) {
  80. $config['store']['is_store'] = 1;
  81. $config['store']['info'] = $store->toArray();
  82. $group_ids = AisStoreUnion::where(['member_miniapp_id' => $this->miniapp_id,'type' => 0,'store_id' => $store->id])->column('group_id');
  83. //圈主加群数量
  84. $config['group']['join_num'] = AisStoreUnion::where(['member_miniapp_id' => $this->miniapp_id,'store_id' => $store->id,'type' => 0])->count();
  85. //买单
  86. $config['group']['order'] = AisStoreBill::where(['member_miniapp_id' => $this->miniapp_id])->whereIn('store_id',AisStoreUnion::where(['member_miniapp_id' => $this->miniapp_id,'type' => 0])->whereIn('group_id',$group_ids)->column('store_id'))->sum('money');
  87. //次数
  88. $config['group']['count'] = AisCouponUser::where(['member_miniapp_id' => $this->miniapp_id])->whereIn('store_id',AisStoreUnion::where(['member_miniapp_id' => $this->miniapp_id,'type' => 0])->whereIn('group_id',$group_ids)->column('store_id'))->count();
  89. //互助
  90. $help = 0;
  91. foreach ($group_ids as $group_id){
  92. $help += AisCouponUser::where(['member_miniapp_id' => $this->miniapp_id,'is_end' => 1])->where('','EXP',Db::raw("FIND_IN_SET(".$group_id.",group_ids)"))->count();
  93. }
  94. $config['group']['help'] = $help;
  95. }
  96. $group = AisStoreGroup::where(['member_miniapp_id' => $this->miniapp_id,'uid' => $this->user->id])->find();
  97. if ($group) {
  98. $config['group']['is_group'] = 1;
  99. $config['group']['info'] = $group->toArray();
  100. }
  101. }
  102. return enjson(200,'应用配置',$config);
  103. }
  104. /**
  105. * 腾讯地图服务
  106. * @return void
  107. */
  108. public function lib(){
  109. $info = AisConfig::getConfig($this->miniapp->id);
  110. if(empty($info->qq_lbs_key)) {
  111. return enjson(403,'应用未配置QQLbs服务');
  112. }
  113. if(empty($this->lbs)){
  114. return enjson(204);
  115. }
  116. $http = new HttpRequest;
  117. $response = $http->get('https://apis.map.qq.com/ws/geocoder/v1/?location='.$this->lbs->lat.','.$this->lbs->lng.'&key='.$info->qq_lbs_key);
  118. $content = $response->json();
  119. if(empty($content)){
  120. return enjson(204,'位置请求失败');
  121. }
  122. if($content->status != 0){
  123. return enjson(403,$content->message);
  124. }
  125. return enjson(200,['address' => $content->result->formatted_addresses->recommend,'adcode' => $content->result->ad_info->adcode]);
  126. }
  127. /**
  128. * 上传图片
  129. * @return void
  130. */
  131. public function upImg(){
  132. $this->isUserAuth();
  133. if(request()->isPost()){
  134. $rel = Upload::index();
  135. if($rel['error'] == 0){
  136. return json(['code'=>200,'msg'=>'success','data' => $rel['url']]);
  137. }else{
  138. return json(['code'=>204,'msg'=>'error']);
  139. }
  140. }
  141. }
  142. }