MemberService.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2017~2021 LARAVEL研发中心
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://www.laravel.cn
  8. // +----------------------------------------------------------------------
  9. // | Author: laravel开发员 <laravel.qq.com>
  10. // +----------------------------------------------------------------------
  11. namespace App\Services\Common;
  12. use App\Models\MemberModel;
  13. use App\Models\UserModel;
  14. use App\Services\BaseService;
  15. use Earnp\GoogleAuthenticator\GoogleAuthenticator;
  16. /**
  17. * 会员管理-服务类
  18. * @author laravel开发员
  19. * @since 2020/11/11
  20. * Class MemberService
  21. * @package App\Services\Common
  22. */
  23. class MemberService extends BaseService
  24. {
  25. /**
  26. * 构造函数
  27. * @author laravel开发员
  28. * @since 2020/11/11
  29. * MemberService constructor.
  30. */
  31. public function __construct()
  32. {
  33. $this->model = new MemberModel();
  34. }
  35. /**
  36. * 静态入口
  37. * @return static|null
  38. */
  39. public static function make()
  40. {
  41. if (!self::$instance) {
  42. self::$instance = (new static());
  43. }
  44. return self::$instance;
  45. }
  46. /**
  47. * 获取资料详情
  48. * @param $where
  49. * @param array $field
  50. */
  51. public function getInfo($where, array $field = [])
  52. {
  53. $field = $field ? $field : ['id', 'username', 'realname', 'credit','trade_password', 'nickname', 'openid', 'idcard', 'trc_address', 'erc_address', 'erc_hexaddress', 'source', 'idcard_check', 'idcard_front_img', 'idcard_back_img', 'idcard_hand_img', 'safe_level', 'user_type', 'member_level', 'usdt_num', 'user_type', 'status', 'credit', 'avatar'];
  54. if (is_array($where)) {
  55. $info = $this->model->where($where)->select($field)->first();
  56. } else {
  57. $info = $this->model->where(['id' => (int)$where])->select($field)->first();
  58. }
  59. $info = $info ? $info->toArray() : [];
  60. if ($info) {
  61. $info['avatar'] = $info['avatar'] ? get_image_url($info['avatar']) : '';
  62. $info['idcard_front_img'] = $info['idcard_front_img'] ? get_image_url($info['idcard_front_img']) : '';
  63. $info['idcard_back_img'] = $info['idcard_back_img'] ? get_image_url($info['idcard_back_img']) : '';
  64. $info['usdt_num'] = isset($info['usdt_num']) ? moneyFormat($info['usdt_num'], 4) : '0.0000';
  65. $bond = UserModel::where(['user_id'=> $info['id']])->value('bond');
  66. $info['bond'] = moneyFormat($bond, 2);
  67. // 收款二维码
  68. $qrcode = \App\Services\Api\MemberService::make()->makeQrcode($info['trc_address']);
  69. $info['trc_qrcode'] = $qrcode? get_image_url($qrcode) : '';
  70. $ercQrcode = \App\Services\Api\MemberService::make()->makeQrcode($info['erc_hexaddress']);
  71. $info['erc_qrcode'] = $ercQrcode? get_image_url($ercQrcode) : '';
  72. // 谷歌验证码
  73. $info['google_qrcode'] = '';
  74. $googleSecret = UserModel::where(['user_id'=> $info['id']])->value('google_secret');
  75. if(empty($googleSecret)){
  76. $google = GoogleAuthenticator::CreateSecret();
  77. $googleSecret = isset($google['secret'])? $google['secret'] : '';
  78. UserModel::where(['user_id'=> $info['id']])->update(['google_secret'=>$googleSecret]);
  79. }
  80. if($googleSecret){
  81. $url = "otpauth://totp/".'otc168('.$info['username'].")?secret=".$googleSecret;
  82. $googleQrcode = \App\Services\Api\MemberService::make()->makeQrcode($url);
  83. $info['google_qrcode'] = $googleQrcode? get_image_url($googleQrcode) : '';
  84. }
  85. }
  86. return $info;
  87. }
  88. /**
  89. * 添加会编辑会员
  90. * @return array
  91. * @since 2020/11/11
  92. * @author laravel开发员
  93. */
  94. public function edit()
  95. {
  96. // 请求参数
  97. $data = request()->all();
  98. // 头像处理
  99. $avatar = trim($data['avatar']);
  100. if (strpos($avatar, "temp")) {
  101. $data['avatar'] = save_image($avatar, 'member');
  102. } else {
  103. $data['avatar'] = str_replace(IMG_URL, "", $data['avatar']);
  104. }
  105. // 出生日期
  106. if ($data['birthday']) {
  107. $data['birthday'] = strtotime($data['birthday']);
  108. }
  109. // 登录密码
  110. if ($data['password']) {
  111. $data['password'] = get_password($data['password'] . $data['username']);
  112. }
  113. // 城市处理
  114. $city = isset($data['city']) ? $data['city'] : [3];
  115. if (!empty($data['city'])) {
  116. // 省份
  117. $data['province_id'] = $city[0];
  118. // 城市
  119. $data['city_id'] = $city[1];
  120. // 县区
  121. $data['district_id'] = $city[2];
  122. }
  123. $id = isset($data['id'])? $data['id'] : 0;
  124. if($id && $this->model->where(['id'=> $id])->value('trade_password')){
  125. $data['safe_level'] = 2;
  126. }
  127. if(isset($data['idcard_check']) && $data['idcard_check']==1){
  128. $data['safe_level'] = $data['safe_level']==2? 3 : $data['safe_level'];
  129. }
  130. unset($data['city']);
  131. return parent::edit($data); // TODO: Change the autogenerated stub
  132. }
  133. }