UserExtract.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. /**
  3. *
  4. * @author: xaboy<365615158@qq.com>
  5. * @day: 2018/3/3
  6. */
  7. namespace app\wap\model\user;
  8. use basic\ModelBasic;
  9. use service\SystemConfigService;
  10. use service\WechatTemplateService;
  11. use think\Url;
  12. use traits\ModelTrait;
  13. class UserExtract extends ModelBasic
  14. {
  15. use ModelTrait;
  16. //审核中
  17. const AUDIT_STATUS = 0;
  18. //未通过
  19. const FAIL_STATUS = -1;
  20. //已提现
  21. const SUCCESS_STATUS = 1;
  22. protected static $extractType = ['alipay','bank'];
  23. protected static $extractTypeMsg = ['alipay'=>'支付宝','bank'=>'银行卡'];
  24. protected static $status = array(
  25. -1=>'未通过',
  26. 0 =>'审核中',
  27. 1 =>'已提现'
  28. );
  29. public static function userExtract($userInfo,$data){
  30. if(!in_array($data['extract_type'],self::$extractType))
  31. return self::setErrorInfo('提现方式不存在');
  32. if($userInfo['now_money'] < $data['extract_price'])
  33. return self::setErrorInfo('余额不足');
  34. if(!$data['real_name'])
  35. return self::setErrorInfo('输入姓名有误');
  36. $extractMinPrice = floatval(SystemConfigService::get('user_extract_min_price'))?:0;
  37. if($data['extract_price'] < $extractMinPrice)
  38. return self::setErrorInfo('提现金额不能小于'.$extractMinPrice);
  39. $balance = bcsub($userInfo['now_money'],$data['extract_price']);
  40. $insertData = [
  41. 'uid'=>$userInfo['uid'],
  42. 'real_name'=>$data['real_name'],
  43. 'extract_type'=>$data['extract_type'],
  44. 'extract_price'=>($data['extract_price']),
  45. 'add_time'=>time(),
  46. 'balance'=>$balance,
  47. 'status'=>self::AUDIT_STATUS
  48. ];
  49. if($data['extract_type'] == 'alipay'){
  50. if(!$data['alipay_code']) return self::setErrorInfo('请输入支付宝账号');
  51. $insertData['alipay_code'] = $data['alipay_code'];
  52. $mark = '使用支付宝提现'.$insertData['extract_price'].'元';
  53. }else{
  54. if(!$data['bank_code']) return self::setErrorInfo('请输入银行卡账号');
  55. if(!$data['bank_address']) return self::setErrorInfo('请输入开户行信息');
  56. $insertData['bank_code'] = $data['bank_code'];
  57. $insertData['bank_address'] = $data['bank_address'];
  58. $mark = '使用银联卡'.$insertData['bank_code'].'提现'.$insertData['extract_price'].'元';
  59. }
  60. self::beginTrans();
  61. $res1 = self::set($insertData);
  62. if(!$res1) return self::setErrorInfo('提现失败');
  63. $res2 = User::edit(['now_money'=>$balance],$userInfo['uid'],'uid');
  64. $res3 = UserBill::expend('余额提现',$userInfo['uid'],'now_money','extract',$data['extract_price'],$res1['id'],$balance,$mark);
  65. $res = $res2 && $res3;
  66. WechatTemplateService::sendTemplate(
  67. WechatUser::uidToOpenid($userInfo['uid']),
  68. WechatTemplateService::USER_BALANCE_CHANGE,
  69. [
  70. 'first'=>'你好,申请余额提现成功!',
  71. 'keyword1'=>'余额提现',
  72. 'keyword2'=>date('Y-m-d'),
  73. 'keyword3'=>$data['extract_price'],
  74. 'remark'=>'点击查看我的余额明细'
  75. ],
  76. Url::build('wap/My/balance',[],true,true)
  77. );
  78. if($res)
  79. return true;
  80. else
  81. return self::setErrorInfo('提现失败!');
  82. }
  83. /**
  84. * 获得用户最后一次提现信息
  85. * @param $openid
  86. * @return mixed
  87. */
  88. public static function userLastInfo($uid)
  89. {
  90. return self::where(compact('uid'))->order('add_time DESC')->find();
  91. }
  92. /**
  93. * 获得用户提现总金额
  94. * @param $uid
  95. * @return mixed
  96. */
  97. public static function userExtractTotalPrice($uid)
  98. {
  99. return self::where('uid',$uid)->where('status',self::SUCCESS_STATUS)->value('SUM(extract_price)')?:0;
  100. }
  101. }