User.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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\green\controller\api\v1;
  9. use app\green\controller\api\Base;
  10. use app\green\model\GreenBankCash;
  11. use app\green\model\GreenConfig;
  12. use app\green\model\GreenUser;
  13. use app\common\facade\Inform;
  14. use app\common\model\SystemMemberSms;
  15. class User extends Base{
  16. /**
  17. * 提现申请
  18. **/
  19. public function cash(){
  20. if (request()->isPost()) {
  21. $data = [
  22. 'money' => $this->request->param('money/f', ''),
  23. 'safepassword' => $this->request->param('safepassword/s', ''),
  24. 'sign' => $this->request->param('sign/s', ''),
  25. ];
  26. $rel = $this->apiSign($data);
  27. if($rel['code'] != 200){
  28. return enjson(500,'签名验证失败');
  29. }
  30. $data['user_id'] = $this->user->id;
  31. $data['member_miniapp_id'] = $this->miniapp_id;
  32. $validate = $this->validate($data, 'Bank.getcash');
  33. if (true !== $validate) {
  34. return enjson(403,$validate);
  35. }
  36. if($data['money'] < 0){
  37. return enjson(403,'申请不能小于 0 元');
  38. }
  39. //判断安全密码是否正确
  40. if(!password_verify(md5($data['safepassword']),$this->user->safe_password)) {
  41. return enjson(403,'安全密码不正确');
  42. }
  43. //判断是否关联的公众号账户和输入提现信息
  44. $setting = GreenConfig::where(['member_miniapp_id' => $this->miniapp_id])->find();
  45. if($setting->is_wechat_touser == 0){
  46. $bankInfo = model('SystemUserBank')->where(['user_id' => $this->user->id])->find();
  47. if(empty($bankInfo)){
  48. return enjson(302,'请先完善您的个人信息',['url'=>'/pages/helper/bindbank']);
  49. }
  50. }
  51. //判断提现周期
  52. $bankCash = GreenBankCash::where(['user_id' => $this->user->id])->field('state,update_time')->order('id desc')->find();
  53. if(!empty($bankCash)){
  54. if($bankCash->state == 0){
  55. return enjson(403,'上次申请还未到账,禁止连续提现');
  56. }
  57. }
  58. //减少
  59. $info = GreenUser::cash($this->miniapp_id,$this->user->id,$data['money']);
  60. if(!$info){
  61. return enjson(403,"金额不足");
  62. }
  63. //增加申请记录
  64. $cash['member_miniapp_id'] = $data['member_miniapp_id'];
  65. $cash['user_id'] = $data['user_id'];
  66. $cash['money'] = $data['money'];
  67. $cash['realmoney'] = 0;
  68. $cash['state'] = 0;
  69. $cash['update_time'] = time();
  70. $rel = GreenBankCash::insert($cash);
  71. if($rel){
  72. //后台通知
  73. SystemMemberSms::sms($this->miniapp_id,'您有一条提现待审核',url('green/bank/cash'));
  74. //申请者微信通知
  75. Inform::sms($this->user->id,$this->miniapp_id,['title' =>'业务进展通知','type' => '提现申请','content' =>'您的提现申请正在审核中']);
  76. //后台管理员微信通知
  77. Inform::sms(\app\common\event\User::isFounder($this->miniapp_id)->user_id,$this->miniapp_id,['title' =>'业务进展通知', 'type' => '提现申请', 'content' =>'您有一条新的提现申请待审核']);
  78. return enjson(200,"申请已提交,请等待审核.");
  79. }
  80. return enjson(403,"金额不足");
  81. }
  82. }
  83. /**
  84. * 提现记录
  85. */
  86. public function log(){
  87. $param['date'] = $this->request->param('date/s', '');
  88. $param['page'] = $this->request->param('page/d', 1);
  89. $param['sign'] = $this->request->param('sign');
  90. $rel = $this->apiSign($param);
  91. if($rel['code'] != 200){
  92. return enjson(500,'签名验证失败');
  93. }
  94. $condition[] = ['user_id','=',$this->user->id];
  95. if($param['date']){
  96. list($start, $end) = self::month( $param['date']);
  97. $condition[] = ['update_time','>=',$start];
  98. $condition[] = ['update_time','<=',$end];
  99. }
  100. $info = GreenBankCash::where(['member_miniapp_id' => $this->miniapp_id])->where($condition)->order('id desc')->paginate(10)->toArray();
  101. if(empty($info['data'])){
  102. return enjson(204,'empty');
  103. }else{
  104. return enjson(200,'success', $info);
  105. }
  106. }
  107. protected static function month($str){
  108. $day = explode("-",$str);
  109. $begin = mktime(0, 0, 0, $day[1], 1, $day[0]);
  110. $end = mktime(23, 59, 59, $day[1], date('t', $begin), $day[0]);
  111. return [$begin, $end];
  112. }
  113. }