MemberService.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  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. protected static $instance = null;
  27. /**
  28. * 构造函数
  29. * @author laravel开发员
  30. * @since 2020/11/11
  31. * MemberService constructor.
  32. */
  33. public function __construct()
  34. {
  35. $this->model = new MemberModel();
  36. }
  37. /**
  38. * 静态入口
  39. * @return static|null
  40. */
  41. public static function make()
  42. {
  43. if (!self::$instance) {
  44. self::$instance = (new static());
  45. }
  46. return self::$instance;
  47. }
  48. /**
  49. * 获取资料详情
  50. * @param $where
  51. * @param array $field
  52. */
  53. public function getInfo($where, array $field = [])
  54. {
  55. $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','bank_front_img','bank_back_img','credit_score_img', 'safe_level', 'user_type', 'member_level', 'usdt_num', 'user_type', 'status', 'credit', 'avatar'];
  56. if (is_array($where)) {
  57. $info = $this->model->where($where)->select($field)->first();
  58. } else {
  59. $info = $this->model->where(['id' => (int)$where])->select($field)->first();
  60. }
  61. $info = $info ? $info->toArray() : [];
  62. if ($info) {
  63. $info['avatar'] = $info['avatar'] ? get_image_url($info['avatar']) : '';
  64. $info['idcard_front_img'] = $info['idcard_front_img'] ? get_image_url($info['idcard_front_img']) : '';
  65. $info['idcard_back_img'] = $info['idcard_back_img'] ? get_image_url($info['idcard_back_img']) : '';
  66. $info['usdt_num'] = isset($info['usdt_num']) ? moneyFormat($info['usdt_num'], 4) : '0.0000';
  67. $bond = UserModel::where(['user_id'=> $info['id']])->value('bond');
  68. $info['bond'] = moneyFormat($bond, 2);
  69. // 收款二维码
  70. $qrcode = \App\Services\Api\MemberService::make()->makeQrcode($info['trc_address']);
  71. $info['trc_qrcode'] = $qrcode? get_image_url($qrcode) : '';
  72. $ercQrcode = \App\Services\Api\MemberService::make()->makeQrcode($info['erc_hexaddress']);
  73. $info['erc_qrcode'] = $ercQrcode? get_image_url($ercQrcode) : '';
  74. // 谷歌验证码
  75. $info['google_qrcode'] = '';
  76. $googleSecret = UserModel::where(['user_id'=> $info['id']])->value('google_secret');
  77. if(empty($googleSecret)){
  78. $google = GoogleAuthenticator::CreateSecret();
  79. $googleSecret = isset($google['secret'])? $google['secret'] : '';
  80. UserModel::where(['user_id'=> $info['id']])->update(['google_secret'=>$googleSecret]);
  81. }
  82. if($googleSecret){
  83. $url = "otpauth://totp/".'otc168('.$info['username'].")?secret=".$googleSecret;
  84. $googleQrcode = \App\Services\Api\MemberService::make()->makeQrcode($url);
  85. $info['google_qrcode'] = $googleQrcode? get_image_url($googleQrcode) : '';
  86. }
  87. }
  88. return $info;
  89. }
  90. /**
  91. * 获取承兑商
  92. * @return mixed
  93. */
  94. public function getBusiness()
  95. {
  96. $params = request()->all();
  97. $list = $this->model->where(['status'=> 1,'mark'=>1,'user_type'=> 2])
  98. ->where(function($query) use($params){
  99. $keyword = isset($params['keyword'])? trim($params['keyword']) : '';
  100. if($keyword){
  101. $query->where('username','like',"%{$keyword}%");
  102. }
  103. $userId = isset($params['user_id'])? $params['user_id'] : 0;
  104. if($userId){
  105. $query->whereNotIn('id',[$userId]);
  106. }
  107. })
  108. ->select(['id','username'])
  109. ->take(100)
  110. ->orderBy('id','desc')
  111. ->get();
  112. return $list;
  113. }
  114. /**
  115. * 获取接口注册的用户
  116. * @param $apiId
  117. * @param int $userType
  118. * @return mixed
  119. */
  120. public function getCountByApi($apiId, $userType=0)
  121. {
  122. $where = ['api_id'=> $apiId,'status'=> 1,'mark'=>1];
  123. if($userType){
  124. $where['user_type'] = $userType;
  125. }
  126. return $this->model->where($where)
  127. ->whereIn('user_type',[3,5])
  128. ->count('id');
  129. }
  130. /**
  131. * 添加会编辑会员
  132. * @return array
  133. * @since 2020/11/11
  134. * @author laravel开发员
  135. */
  136. public function edit()
  137. {
  138. // 请求参数
  139. $data = request()->all();
  140. // 头像处理
  141. $avatar = isset($data['avatar'])? trim($data['avatar']) : '';
  142. if ($avatar && strpos($avatar, "temp")) {
  143. $data['avatar'] = save_image($avatar, 'member');
  144. } else if($avatar){
  145. $data['avatar'] = str_replace(IMG_URL, "", $data['avatar']);
  146. }
  147. // 出生日期
  148. if ($data['birthday']) {
  149. $data['birthday'] = strtotime($data['birthday']);
  150. }
  151. // 登录密码
  152. if ($data['password']) {
  153. $data['password'] = get_password($data['password'] . $data['username']);
  154. }
  155. // 城市处理
  156. $city = isset($data['city']) ? $data['city'] : [3];
  157. if (!empty($data['city'])) {
  158. // 省份
  159. $data['province_id'] = $city[0];
  160. // 城市
  161. $data['city_id'] = $city[1];
  162. // 县区
  163. $data['district_id'] = $city[2];
  164. }
  165. $id = isset($data['id'])? $data['id'] : 0;
  166. if($id && $this->model->where(['id'=> $id])->value('trade_password')){
  167. $data['safe_level'] = 2;
  168. }
  169. if(isset($data['idcard_check']) && $data['idcard_check']==1){
  170. $safeLevel = isset($data['safe_level'])? isset($data['safe_level']) : 2;
  171. $data['safe_level'] = $safeLevel==2? 3 : $safeLevel;
  172. }
  173. unset($data['city']);
  174. return parent::edit($data); // TODO: Change the autogenerated stub
  175. }
  176. }