Vip.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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\AisBill;
  11. use app\ais\model\AisBank;
  12. use app\ais\model\AisBankCash;
  13. use app\ais\model\AisCouponUser;
  14. use app\ais\model\AisConfig;
  15. use app\ais\model\AisVip;
  16. use app\ais\model\AisVipUser;
  17. use app\ais\model\AisStore;
  18. use app\ais\model\AisVipOrder;
  19. use app\common\facade\WechatPay;
  20. use app\common\model\SystemUserLevel;
  21. use think\helper\Time;
  22. class Vip extends Base{
  23. /**
  24. * 所有会员类型数据
  25. */
  26. public function index(){
  27. $this->apiSign();
  28. $rel = AisVip::where(['member_miniapp_id'=> $this->member_miniapp_id,'is_auto_up' => 1])->select();
  29. return enjson(200,$rel);
  30. }
  31. /**
  32. * 读取ISP会员数据
  33. */
  34. public function isp(){
  35. $this->apiSign();
  36. $rel = AisVip::where(['member_miniapp_id'=> $this->member_miniapp_id,'is_auto_up' => 0])->find();
  37. if($rel){
  38. $rel->rule = str_replace('<img', '<img class="img"',dehtml($rel->rule));
  39. }
  40. return enjson(200,$rel);
  41. }
  42. /**
  43. * 微信支付开通会员
  44. * @param string $no
  45. * @return void
  46. */
  47. public function regVip(){
  48. if (request()->isPost()) {
  49. $param['vip_id'] = $this->request->param('vip_id/d');
  50. $this->apiSign($param);
  51. $vip = AisVip::where(['member_miniapp_id' => $this->member_miniapp_id,'id' => $param['vip_id']])->find();
  52. if(empty($vip)){
  53. return enjson(403,'未找到相关会员等级');
  54. }
  55. //用户VIP
  56. $vipUser = AisVipUser::where(['uid' => $this->user->id,'vip_id' => $vip->id])->find();
  57. if($vipUser){
  58. return enjson(403,'已开通当前会员');
  59. }
  60. //创建订单
  61. $order_no = order_no($this->user->invite_code);
  62. //唤醒微信支付参数
  63. $payparm = [
  64. 'openid' => $this->user->miniapp_uid,
  65. 'miniapp_id' => $this->member_miniapp_id,
  66. 'name' => $vip->name,
  67. 'order_no' => $order_no,
  68. 'total_fee' => $vip->price * 100,
  69. 'notify_url' => api(1,'ais/notify/vippay',$this->miniapp_id),
  70. ];
  71. //读取配置
  72. if($this->member_miniapp->is_psp){
  73. $setting = AisConfig::getConfig($this->miniapp_id);
  74. if (empty($setting->mchid)) {
  75. return enjson(403,'服务商模式下,必须配置默认商户号');
  76. }
  77. $payparm['mchid'] = $setting->mchid;
  78. }
  79. $ispay = WechatPay::orderPay($payparm);
  80. if($ispay['code'] == 0){
  81. return enjson(403,$ispay['msg']);
  82. }
  83. //添加订单记录
  84. $data['order_no'] = $order_no;
  85. $data['uid'] = $this->user->id;
  86. $data['member_miniapp_id'] = $this->member_miniapp_id;
  87. $data['vip_id'] = $vip->id;
  88. $data['amount'] = $vip->price; //实际金额
  89. $data['state'] = 0;
  90. $data['create_time'] = time();
  91. $rel = AisVipOrder::create($data);
  92. if(!$rel){
  93. return enjson(403,'订单创建失败');
  94. }
  95. return enjson(200,$ispay['data']);
  96. }
  97. }
  98. }