MemberController.php 9.7 KB

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