MemberController.php 9.2 KB

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