MemberController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\FrontController;
  4. use App\Jobs\BarrageJob;
  5. use App\Jobs\MemberShareJob;
  6. use App\Jobs\SaveImGroup;
  7. use App\Models\Comment;
  8. use App\Models\Express;
  9. use App\Models\Goods;
  10. use App\Models\GoodsBrowse;
  11. use App\Models\GoodsCollect;
  12. use App\Models\Member;
  13. use App\Models\MemberAddress;
  14. use App\Models\MemberClan;
  15. use App\Models\MemberCoins;
  16. use App\Models\MemberCoupon;
  17. use App\Models\MemberOpenId;
  18. use App\Models\Members;
  19. use App\Models\MoneyDetail;
  20. use App\Models\MoneyRecord;
  21. use App\Models\Order;
  22. use App\Models\RefundOrder;
  23. use App\Models\SeckillGoods;
  24. use App\Models\Shop;
  25. use App\Models\ShopCollect;
  26. use App\Models\ShopOrder;
  27. use App\Servers\AddressServer;
  28. use App\Servers\CommonServer;
  29. use App\Servers\ExpressServer;
  30. use App\Servers\GoodsServer;
  31. use App\Servers\ImgServer;
  32. use App\Servers\KdnServer;
  33. use App\Servers\MemberLogsServer;
  34. use App\Servers\MemberServer;
  35. use App\Servers\MergeServer;
  36. use App\Servers\MoneyDetailServer;
  37. use App\Servers\PassServer;
  38. use App\Servers\RedisDataServer;
  39. use App\Servers\SensitiveServer;
  40. use App\Servers\SmsServer;
  41. use App\Servers\WeixinServer;
  42. use App\Servers\WxTemplateServer;
  43. use Carbon\Carbon;
  44. use SimpleSoftwareIO\QrCode\Facades\QrCode;
  45. use SwooleTW\Http\Websocket\Facades\Websocket;
  46. class MemberController extends FrontController
  47. {
  48. public function __construct()
  49. {
  50. parent::__construct();
  51. }
  52. function index()
  53. {
  54. }
  55. /**
  56. * 会员注册
  57. * @return \Illuminate\Http\JsonResponse
  58. */
  59. function register()
  60. {
  61. $invite_code = request()->input('inviteCode', '');
  62. if (!empty($invite_code)) {
  63. $p_member = Member::where('invite_code', $invite_code)->where('status',1)->select(['id', 'address'])->first();
  64. }
  65. if (empty($p_member)) {
  66. return $this->apiResponseError('推荐码错误');
  67. }
  68. $address = request()->input('address', '');
  69. if (empty($address)) {
  70. return $this->apiResponseError('地址信息异常');
  71. }
  72. $member = Member::where('address', $address)->where('status',1)->select(['id', 'token_str'])->first();
  73. if ($member) {
  74. $token_str = PassServer::creatServer()->getMemberToken($member->{'id'});
  75. Member::where('id', $member->{'id'})->update(['token_str' => $token_str]);
  76. return $this->apiResponseSuccess('登陆成功', [ 'token' => $token_str]);
  77. } else {
  78. $ret = MemberServer::creatServer()->register($address, $p_member->{'id'}, '', '');
  79. if (empty($ret)) {
  80. return $this->apiResponseError('注册失败');
  81. } else {
  82. return $this->apiResponseSuccess('注册成功', $ret);
  83. }
  84. }
  85. }
  86. /**
  87. * 会员登录
  88. * @return \Illuminate\Http\JsonResponse
  89. */
  90. function login()
  91. {
  92. $mobile = request()->input('address', '');
  93. if (empty($mobile)) {
  94. return $this->apiResponseError('地址信息错误');
  95. }
  96. $member = Member::where('address', $mobile)->select(['id', 'password', 'encrypt'])->first();
  97. if (empty($member)) {
  98. return $this->apiResponseError('当前账户未注册');
  99. }
  100. $token_str = PassServer::creatServer()->getMemberToken($member->{'id'});
  101. Member::where('id', $member->{'id'})->update(['token_str' => $token_str]);
  102. return $this->apiResponseSuccess('登陆成功', ['token' => $token_str]);
  103. }
  104. /**
  105. * 设置支付密码
  106. * @return \Illuminate\Http\JsonResponse
  107. */
  108. function setPayPass()
  109. {
  110. $password = request()->input('pay_pass', '123456');
  111. $password = str_replace(' ', '', $password);
  112. if (empty($password)) {
  113. return $this->apiResponseError('请设置登录密码');
  114. }
  115. $pass_two = request()->input('pass_two', '123456');
  116. if ($password != $pass_two) {
  117. return $this->apiResponseError('两次密码输入不一致');
  118. }
  119. if (!is_numeric($password) || strlen($password) != 6) {
  120. return $this->apiResponseError('支付密码必须为6为数字');
  121. }
  122. $member = Member::where('id', request()->member['id'])->where('status',1)->select(['id', 'password', 'encrypt', 'phone'])->first();
  123. $update=[];
  124. $code = request()->input('code', '1234');
  125. if (empty($code)) {
  126. return $this->apiResponseError('请输入验证码');
  127. }
  128. $ret = SmsServer::creatServer()->verifyCode($member->{'phone'}, $code, 'set_pay_pass');
  129. if (empty($ret)) {
  130. return $this->apiResponseError('验证码错误');
  131. }
  132. $pass_server = PassServer::creatServer($password, $member->{'encrypt'});
  133. $new_pass = $pass_server->creatPassword();
  134. $update['pay_pass']=$new_pass['password'];
  135. $update['encrypt']=$new_pass['encrypt'];
  136. $ret = $member->update($update);
  137. if (empty($ret)) {
  138. return $this->apiResponseError('支付密码修改失败');
  139. } else {
  140. MemberServer::creatServer()->delMemberCache($member->{'id'});
  141. return $this->apiResponseSuccess('支付密码修改成功');
  142. }
  143. }
  144. function getIconList(){
  145. $mId=request()->member['id'];
  146. $totalPrice=0;
  147. $totalUsdt=0;
  148. $usdtPrice=CommonServer::creatServer()->getConfigValue('usdt');
  149. $luckyPrice=CommonServer::creatServer()->getConfigValue('lucky');
  150. $list=MemberCoins::where('m_id',$mId)->select(['coin_name','coin_id','num','lock_num'])->get();
  151. foreach ($list as $value){
  152. if($value->{'coin_id'}==1){
  153. $value->{'price'}=round(($value->{'num'}+$value->{'lock_num'})*$usdtPrice*$luckyPrice,6);
  154. $value->{'totalUsdt'}=round(($value->{'num'}+$value->{'lock_num'})*$luckyPrice,6);
  155. }else{
  156. $value->{'price'}=round(($value->{'num'}+$value->{'lock_num'})*$usdtPrice,6);
  157. $value->{'totalUsdt'}=round($value->{'num'}+$value->{'lock_num'},6);
  158. }
  159. $totalPrice+=$value->{'price'};
  160. $totalUsdt+=$value->{'totalUsdt'};
  161. }
  162. return $this->apiResponseSuccess('获取信息成功',['totalPrice'=>$totalPrice,'totalUsdt'=>$totalUsdt,'list'=>$list]);
  163. }
  164. /**
  165. * 获取用户资产信息
  166. */
  167. function getMoneyInfo()
  168. {
  169. $member = Member::where('id', request()->member['id'])->where('status',1)->select(['id', 'money'])->first();
  170. return $this->apiResponseSuccess('获取成功', $member);
  171. }
  172. /**
  173. * 获取会员详情
  174. */
  175. function getMemberInfo()
  176. {
  177. $m_id = request()->member['id'];
  178. //弹幕广播
  179. $info['m_id'] = $m_id;
  180. $member = RedisDataServer::creatServer()->getData('member_' . $m_id, 'json');
  181. if (empty($member) ) {
  182. $member = Member::where('id', $m_id)->where('status',1)->select(['id', 'money', 'phone', 'nickname', 'head_img', 'invite_code', 'level_id', 'sex','describe','recom_id'])->first();
  183. if (empty($member)) {
  184. return $this->apiResponseError('账户信息错误', 401);
  185. }
  186. //获取推荐关联信息
  187. $member->recomMember();
  188. $member->{'phone_num'} = $member->{'phone'};
  189. $member->{'money'} = CommonServer::creatServer()->setFormatNum($member->{'money'});;
  190. $member->{'head_img'} = CommonServer::creatServer()->ossCompress($member->{'head_img'}, 50, 2);
  191. if ($member->{'phone'}) {
  192. $member->{'phone'} = CommonServer::creatServer()->concealStr($member->{'phone'}, 0, 4, 4, 4);
  193. }
  194. $member->{'level_name'} = MemberServer::creatServer()->getLevelName($member->{'level_id'});
  195. $member->{'recommend_name'} = $member->recomMember->{'nickname'};
  196. RedisDataServer::creatServer()->setData('member_' . $m_id, $member, 'json', 30);
  197. }
  198. return $this->apiResponseSuccess('获取信息成功', $member);
  199. }
  200. /**
  201. * 保存会员信息
  202. * @return \Illuminate\Http\JsonResponse
  203. */
  204. function updateMemberInfo()
  205. {
  206. $nickname = CommonServer::creatServer()->filtrationStr('nickname');
  207. $sex = request()->input('sex', '');
  208. $head_img = request()->input('head_img', '');
  209. $update = compact('nickname', 'sex', 'head_img');
  210. $update = array_filter($update);
  211. if ($sex != '' && !in_array($sex, ['3', '1', '2','0'])) {
  212. return $this->apiResponseError('性别选择错误');
  213. }elseif ($sex==''){
  214. $update['sex']='0';
  215. }else{
  216. $update['sex']=$sex;
  217. }
  218. if (empty($update)) {
  219. return $this->apiResponseError('暂无可以更新的内容');
  220. }
  221. $m_id = request()->member['id'];
  222. $ret = Member::where('id', $m_id)->update($update);
  223. if ($ret) {
  224. $renew['group_type'] = 1;
  225. $renew['name'] = $nickname;
  226. $renew['logo'] = $head_img;
  227. //进入队列
  228. MemberServer::creatServer()->delMemberCache(request()->member['id']);
  229. return $this->apiResponseSuccess('信息保存成功');
  230. } else {
  231. return $this->apiResponseError('信息保存失败');
  232. }
  233. }
  234. /**
  235. * 获取推广团队基本信息
  236. * @return \Illuminate\Http\JsonResponse
  237. */
  238. function getTeamInfo()
  239. {
  240. $m_id = request()->member['id'];
  241. $member = Member::where('id', $m_id)->select(['id', 'nickname', 'head_img', 'recom_id'])->first();
  242. if (empty($member->{'recom_id'})) {
  243. $parent = ['id' => 0, 'nickname' => '', 'head_img' => ''];
  244. } else {
  245. $parent = Member::where('id', $member->{'recom_id'})->select(['id', 'nickname', 'head_img', 'recom_id'])->first();
  246. }
  247. $total_num = MemberClan::from('member_clans as c')
  248. ->leftJoin('members as m', 'm.id', '=', 'c.m_id')
  249. ->where('c.one_m_id', $m_id)
  250. ->where([['m.status',1], ['m.is_del',0]])
  251. ->count();
  252. return $this->apiResponseSuccess('获取数据成功', ['parent' => $parent, 'member' => $member, 'team_num' => $total_num]);
  253. }
  254. /**
  255. * 获取团队列表
  256. * @return \Illuminate\Http\JsonResponse
  257. */
  258. function getTeamList()
  259. {
  260. $type = request()->input('type', '1');
  261. $m_id = request()->member['id'];
  262. $where = [];
  263. if ($type == 1) {
  264. $where[] = ['c.one_m_id', $m_id];
  265. } elseif ($type == 2) {
  266. $where[] = ['c.two_m_id', $m_id];
  267. } else {
  268. $where[] = ['c.one_m_id', '=', $m_id, 'or'];
  269. $where[] = ['c.two_m_id', '=', $m_id, 'or'];
  270. }
  271. $list = MemberClan::from('member_clans as c')
  272. ->leftJoin('members as m', 'm.id', '=', 'c.m_id')
  273. ->where($where)
  274. ->where([['status',1], ['is_del',0]])
  275. ->select(['m.id', 'm.recom_id', 'nickname', 'head_img', 'm.created_at'])
  276. ->paginate(15);
  277. foreach ($list as $item) {
  278. $item->{'type'} = $item->{'recom_id'} == $m_id ? 1 : 2;
  279. }
  280. return $this->apiResponseSuccess('获取数据成功', ['total_num' => $list->total(), 'items' => $list->items()]);
  281. }
  282. }