UserController.php 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811
  1. <?php
  2. namespace app\controller;
  3. use app\api\repositories\UsersRepositories;
  4. use app\business\BankCardBusiness;
  5. use app\business\LoginBusiness;
  6. use app\business\StreamBusiness;
  7. use app\business\UserIdentityBusiness;
  8. use Illuminate\Support\Arr;
  9. use Matrix\Exception;
  10. use Respect\Validation\Validator;
  11. use support\Db;
  12. use support\Redis;
  13. use support\Request;
  14. use hg\apidoc\annotation as Apidoc;
  15. use Throwable;
  16. use Webman\Captcha\CaptchaBuilder;
  17. use Webman\Captcha\PhraseBuilder;
  18. use function Symfony\Component\String\s;
  19. #[Apidoc\Title("用户信息")]
  20. #[Apidoc\Group("User")]
  21. #[Apidoc\Sort(5)]
  22. class UserController
  23. {
  24. #[Apidoc\Title("用户信息")]
  25. #[Apidoc\Url("api/user.html")]
  26. #[Apidoc\Method("POST")]
  27. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  28. #[Apidoc\Returned(name: "uuid", type: "int", require: true, desc: 'UUID', default: '100001')]
  29. #[Apidoc\Returned(name: "mobile", type: "string", require: true, desc: '账号', default: '15800000000')]
  30. #[Apidoc\Returned(name: "name", type: "string", require: true, desc: '名称', default: '主号')]
  31. #[Apidoc\Returned(name: "money", type: "string", require: true, desc: 'USD', default: '0.00')]
  32. #[Apidoc\Returned(name: "money_one", type: "string", require: true, desc: '基金分红钱包', default: '0.00')]
  33. #[Apidoc\Returned(name: "money_two", type: "string", require: true, desc: '银行卡余额', default: '0.00')]
  34. #[Apidoc\Returned(name: "money_four", type: "string", require: true, desc: '银行卡基础额度', default: '0.00')]
  35. #[Apidoc\Returned(name: "equity_value", type: "string", require: true, desc: '汇率', default: '0.00')]
  36. #[Apidoc\Returned(name: "money_five", type: "string", require: true, desc: 'wroldcion币', default: '0.00')]
  37. #[Apidoc\Returned(name: "coin_value", type: "string", require: true, desc: 'wroldcion币单枚价值', default: '0.00')]
  38. #[Apidoc\Returned(name: "zong_money_five", type: "string", require: true, desc: 'wroldcion币总价值', default: '0.00')]
  39. #[Apidoc\Returned(name: "total_value", type: "string", require: true, desc: '世界币总市值', default: '0.00')]
  40. #[Apidoc\Returned(name: "turnover", type: "string", require: true, desc: '世界币成交量', default: '0.00')]
  41. #[Apidoc\Returned(name: "realname_reward", type: "string", require: true, desc: '签到奖励--wroldcion币', default: '0.00')]
  42. #[Apidoc\Returned(name: "register_award", type: "string", require: true, desc: '实名赠送(wroldcion币)', default: '0.00')]
  43. #[Apidoc\Returned(name: "invitation_award", type: "string", require: true, desc: '邀请奖励(wroldcion币)', default: '0.00')]
  44. #[Apidoc\Returned(name: "raffle_num", type: "string", require: true, desc: '助力次数', default: '0.00')]
  45. #[Apidoc\Returned(name: "effective_is_num", type: "string", require: true, desc: '有效邀请人数', default: '0.00')]
  46. #[Apidoc\Returned(name: "bank_img", type: "string", require: true, desc: '银行图片', default: '0.00')]
  47. #[Apidoc\Returned(name: "card_code", type: "string", require: true, desc: '卡号', default: '0.00')]
  48. #[Apidoc\Returned(name: "total_sign", type: "int", require: true, desc: '签到总天数', default: '')]
  49. #[Apidoc\Returned(name: "day_is_sign", type: "int", require: true, desc: '今日是否签到', default: '')]
  50. #[Apidoc\Returned(name: "user_identity", type: "array", desc: '实名信息', default: '', children: [
  51. ['name' => "name", 'type' => 'string', 'require' => true, 'default' => '张三1', 'desc' => '姓名'],
  52. ['name' => "number", 'type' => 'string', 'require' => true, 'default' => '500221233312836451', 'desc' => '身份证号'],
  53. ])]
  54. #[Apidoc\Returned(name: "bank_card", type: "string", desc: '银行卡', default: '', children: [
  55. ['name' => "affiliated_bank", 'type' => 'string', 'require' => true, 'default' => '中国银行1', 'desc' => '归属银行'],
  56. ['name' => "account_holder", 'type' => 'string', 'require' => true, 'default' => '张三', 'desc' => '开户人'],
  57. ['name' => "card_number", 'type' => 'string', 'require' => true, 'default' => '500221233312836451', 'desc' => '卡号'],
  58. ])]
  59. public function userData(Request $request)
  60. {
  61. //查询今日是否已签到
  62. $day_is_sign = Db::table('wa_stream')
  63. ->where('type', streamType2)
  64. ->whereBetween('add_time', [strtotime(date('Y-m-d')) . ' 00:00:00', strtotime(date('Y-m-d') . ' 23:59:59')])
  65. ->where('user_id', $request->user_data['id'])
  66. ->first();
  67. $total_sign = Db::table('wa_stream')->where('type', streamType2)->where('user_id', $request->user_data['id'])->count();
  68. $system = Db::table('wa_system')->first();
  69. $is_buy_licai = Db::table('wa_payorder')
  70. ->where('user_id', $request->user_data['id'])
  71. ->where('is_pay', 2)
  72. ->where('goods_type', 1)
  73. ->exists();
  74. $mining_count = Db::table('wa_sign_record')
  75. ->where('uid', $request->user_data['id'])
  76. ->where('type', 2)
  77. ->count();
  78. $is_buy_ambassador = Db::table('wa_payorder')
  79. ->where('user_id', $request->user_data['id'])
  80. ->where('is_pay', 2)
  81. ->where('goods_type', 2)
  82. ->exists();
  83. $is_buy_wealth = Db::table('wa_payorder')
  84. ->where('user_id', $request->user_data['id'])
  85. ->where('is_pay', 2)
  86. ->where('goods_type', 4)
  87. ->exists();
  88. $is_buy_jihuo = Db::table('wa_payorder')
  89. ->where('user_id', $request->user_data['id'])
  90. ->where('is_pay', 2)
  91. ->where('goods_type', 6)
  92. ->exists();
  93. $is_buy_jnbaozj = Db::table('wa_payorder')
  94. ->where('user_id', $request->user_data['id'])
  95. ->where('is_pay', 2)
  96. ->where('goods_type', 7)
  97. ->exists();
  98. $is_buy_qianshuxieyi = Db::table('wa_payorder')
  99. ->where('user_id', $request->user_data['id'])
  100. ->where('is_pay', 2)
  101. ->where('goods_type', 8)
  102. ->exists();
  103. // $is_buy_eight = Db::table('wa_payorder')
  104. // ->where('user_id', $request->user_data['id'])
  105. // ->where('is_pay', 2)
  106. // ->where('goods_type', 9)
  107. // ->exists();
  108. $protocol_money = Db::table('wa_withdraw')
  109. ->whereIn('type', [17, 10])
  110. ->where('user_id', $request->user_data['id'])
  111. ->where('status', 3)
  112. ->sum('money');
  113. $is_buy_identity = Db::table('wa_payorder')
  114. ->where('user_id', $request->user_data['id'])
  115. ->where('is_pay', 2)
  116. ->where('goods_type', 11)
  117. ->exists();
  118. $is_buy_pin = Db::table('wa_payorder')
  119. ->where('user_id', $request->user_data['id'])
  120. ->where('is_pay', 2)
  121. ->where('goods_type', 12)
  122. ->exists();
  123. $is_buy_bangdinu = Db::table('wa_payorder')
  124. ->where('user_id', $request->user_data['id'])
  125. ->where('is_pay', 2)
  126. ->where('goods_type', 13)
  127. ->exists();
  128. $is_buy_fourten = Db::table('wa_payorder')
  129. ->where('user_id', $request->user_data['id'])
  130. ->where('is_pay', 2)
  131. ->where('goods_type', 14)
  132. ->exists();
  133. $is_buy_tuikuianll = Db::table('wa_payorder')
  134. ->where('user_id', $request->user_data['id'])
  135. ->where('is_pay', 2)
  136. ->where('goods_type', 15)
  137. ->exists();
  138. $is_buy_certification_one = Db::table('wa_payorder')
  139. ->where('user_id', $request->user_data['id'])
  140. ->where('is_pay', 2)
  141. ->where('goods_type', 16)
  142. ->where('goods_id', 39)
  143. ->exists();
  144. $is_buy_certification_two = Db::table('wa_payorder')
  145. ->where('user_id', $request->user_data['id'])
  146. ->where('is_pay', 2)
  147. ->where('goods_type', 16)
  148. ->where('goods_id', 40)
  149. ->exists();
  150. $is_buy_certification_three = Db::table('wa_payorder')
  151. ->where('user_id', $request->user_data['id'])
  152. ->where('is_pay', 2)
  153. ->where('goods_type', 16)
  154. ->where('goods_id', 41)
  155. ->exists();
  156. $is_buy_certification_four = Db::table('wa_payorder')
  157. ->where('user_id', $request->user_data['id'])
  158. ->where('is_pay', 2)
  159. ->where('goods_type', 16)
  160. ->where('goods_id', 42)
  161. ->exists();
  162. $is_buy_certification_five = Db::table('wa_payorder')
  163. ->where('user_id', $request->user_data['id'])
  164. ->where('is_pay', 2)
  165. ->where('goods_type', 16)
  166. ->where('goods_id', 43)
  167. ->exists();
  168. $is_buy_certification_six = Db::table('wa_payorder')
  169. ->where('user_id', $request->user_data['id'])
  170. ->where('is_pay', 2)
  171. ->where('goods_type', 16)
  172. ->where('goods_id', 44)
  173. ->exists();
  174. $is_buy_mngonghu = Db::table('wa_payorder')
  175. ->where('user_id', $request->user_data['id'])
  176. ->where('is_pay', 2)
  177. ->where('goods_type', 17)
  178. ->exists();
  179. $is_buy_xinchunhbsp = Db::table('wa_payorder')
  180. ->where('user_id', $request->user_data['id'])
  181. ->where('is_pay', 2)
  182. ->where('goods_type', 18)
  183. ->exists();
  184. $is_buy_jinkashsp = Db::table('wa_payorder')
  185. ->where('user_id', $request->user_data['id'])
  186. ->where('is_pay', 2)
  187. ->where('goods_type', 19)
  188. ->exists();
  189. $is_buy_zongzicsp = Db::table('wa_payorder')
  190. ->where('user_id', $request->user_data['id'])
  191. ->where('is_pay', 2)
  192. ->where('goods_type', 20)
  193. ->exists();
  194. $is_buy_xinc_daoz = Db::table('wa_payorder')
  195. ->where('user_id', $request->user_data['id'])
  196. ->where('is_pay', 2)
  197. ->where('goods_type', 21)
  198. ->exists();
  199. $is_buy_jinka_daoz = Db::table('wa_payorder')
  200. ->where('user_id', $request->user_data['id'])
  201. ->where('is_pay', 2)
  202. ->where('goods_type', 22)
  203. ->exists();
  204. $is_buy_zongzc_daoz = Db::table('wa_payorder')
  205. ->where('user_id', $request->user_data['id'])
  206. ->where('is_pay', 2)
  207. ->where('goods_type', 23)
  208. ->exists();
  209. $arr = [
  210. 'img' => !empty($request->user_data['img']) ? imageToBase64($request->user_data['img']) : '',
  211. 'uuid' => $request->user_data['uuid'],
  212. 'mobile' => $request->user_data['mobile'],
  213. 'name' => $request->user_data['name'],
  214. 'is_autonym' => $request->user_data['is_autonym'],
  215. 'is_num' => $request->user_data['is_num'],
  216. 'money' => $request->user_data['money'],
  217. 'money_one' => $request->user_data['money_one'],
  218. 'money_two' => $request->user_data['money_two'],
  219. 'money_four' => $request->user_data['money_four'],
  220. 'money_five' => $request->user_data['money_five'],
  221. 'zong_money_five' => bcmul($request->user_data['money_five'], $system->coin_value, 2),
  222. 'raffle_num' => $request->user_data['raffle_num'],
  223. 'money_six' => $request->user_data['money_six'],
  224. 'money_seven' => $request->user_data['money_seven'],
  225. 'money_eight' => $request->user_data['money_eight'],
  226. 'money_nine' => $request->user_data['money_nine'],
  227. 'money_ten' => $request->user_data['money_ten'],
  228. 'money_eleven' => $request->user_data['money_eleven'],
  229. 'money_twelve' => $request->user_data['money_twelve'],
  230. 'money_thirteen' => $request->user_data['money_thirteen'],
  231. 'money_fourteen' => $request->user_data['money_fourteen'],
  232. 'increase_ranking' => $request->user_data['increase_ranking'],
  233. 'new_ranking' => $request->user_data['new_ranking'],
  234. 'buy_num' => $request->user_data['buy_num'],
  235. 'card_code' => $request->user_data['card_code'],
  236. 'is_bank_withdraw' => $request->user_data['is_bank_withdraw'],
  237. 'money_fifteen' => $request->user_data['money_fifteen'],
  238. 'money_sixteen' => $request->user_data['money_sixteen'],
  239. 'money_seventeen' => $request->user_data['money_seventeen'],
  240. 'money_eighteen' => $request->user_data['money_eighteen'],
  241. 'money_nineteen' => $request->user_data['money_nineteen'],
  242. 'pin_code' => $request->user_data['pin_code'],
  243. 'protocol_img' => imageToBase64($request->user_data['protocol_img']),
  244. 'protocol_time' => $request->user_data['protocol_time'],
  245. 'is_protocol' => $request->user_data['is_protocol'],
  246. 'identity_imgone' => imageToBase64($request->user_data['identity_imgone']),
  247. 'identity_imgtwo' => imageToBase64($request->user_data['identity_imgtwo']),
  248. 'protocol_money' => $protocol_money,
  249. 'bank_img' => imageToBase64($request->user_data['bank_img']),
  250. 'day_is_sign' => $day_is_sign ? true : false,
  251. 'is_buy_licai' => $is_buy_licai ? true : false,
  252. 'is_buy_ambassador' => $is_buy_ambassador ? true : false,
  253. 'is_buy_wealth' => $is_buy_wealth ? true : false,
  254. 'is_buy_jihuo' => $is_buy_jihuo ? true : false,
  255. 'is_buy_jnbaozj' => $is_buy_jnbaozj ? true : false,
  256. 'is_buy_eight' => true,
  257. 'is_buy_identity' => $is_buy_identity ? true : false,
  258. 'is_buy_pin' => $is_buy_pin ? true : false,
  259. 'is_buy_bangdinu' => $is_buy_bangdinu ? true : false,
  260. 'is_buy_fourten' => $is_buy_fourten ? true : false,
  261. 'is_buy_tuikuianll' => $is_buy_tuikuianll ? true : false,
  262. 'is_buy_certification_one' => $is_buy_certification_one ? true : false,
  263. 'is_buy_certification_two' => $is_buy_certification_two ? true : false,
  264. 'is_buy_certification_three' => $is_buy_certification_three ? true : false,
  265. 'is_buy_certification_four' => $is_buy_certification_four ? true : false,
  266. 'is_buy_certification_five' => $is_buy_certification_five ? true : false,
  267. 'is_buy_certification_six' => $is_buy_certification_six ? true : false,
  268. 'is_buy_mngonghu' => $is_buy_mngonghu ? true : false,
  269. 'is_buy_xinchunhbsp' => $is_buy_xinchunhbsp ? true : false,
  270. 'is_buy_jinkashsp' => $is_buy_jinkashsp ? true : false,
  271. 'is_buy_zongzicsp' => $is_buy_zongzicsp ? true : false,
  272. 'is_buy_xinc_daoz' => $is_buy_xinc_daoz ? true : false,
  273. 'is_buy_jinka_daoz' => $is_buy_jinka_daoz ? true : false,
  274. 'is_buy_zongzc_daoz' => $is_buy_zongzc_daoz ? true : false,
  275. 'total_sign' => $total_sign,
  276. 'equity_value' => $system->equity_value,
  277. 'coin_value' => $system->coin_value,
  278. 'total_value' => $system->total_value,
  279. 'turnover' => $system->turnover,
  280. 'realname_reward' => $system->realname_reward,
  281. 'register_award' => $system->register_award,
  282. 'invitation_award' => $system->invitation_award,
  283. 'overall_progress' => $system->overall_progress,
  284. 'completion_progress' => $system->completion_progress,
  285. 'mining_count' => $mining_count,
  286. 'user_identity' => UserIdentityBusiness::data(['uid' => $request->user_data['id']]),
  287. 'bank_card' => BankCardBusiness::data(['uid' => $request->user_data['id']]),
  288. 'money_twenty' => $request->user_data['money_twenty'],
  289. 'money_twenty_one' => $request->user_data['money_twenty_one'],
  290. 'money_twenty_two' => $request->user_data['money_twenty_two'],
  291. 'money_twenty_three' => $request->user_data['money_twenty_three'],
  292. 'new_is_num' => $request->user_data['new_is_num'],
  293. 'money_twenty_four' => $request->user_data['money_twenty_four'],
  294. 'money_twenty_five' => $request->user_data['money_twenty_five'],
  295. ];
  296. $usersdata = Db::table('wa_users')->where('id', $request->user_data['id'])->first();
  297. if (!empty($request->user_data['money_one'])) {
  298. Db::table('wa_users')->where('id', $request->user_data['id'])->increment('money_twenty_three', $request->user_data['money_one']);
  299. Db::table('wa_users')->where('id', $request->user_data['id'])->update(['money_one' => 0]);
  300. }
  301. if (!empty($request->user_data['money_sixteen'])) {
  302. Db::table('wa_users')->where('id', $request->user_data['id'])->increment('money_twenty_three', $request->user_data['money_sixteen']);
  303. Db::table('wa_users')->where('id', $request->user_data['id'])->update(['money_sixteen' => 0]);
  304. }
  305. if (!empty($request->user_data['money_seventeen'])) {
  306. Db::table('wa_users')->where('id', $request->user_data['id'])->increment('money_twenty_three', $request->user_data['money_seventeen']);
  307. Db::table('wa_users')->where('id', $request->user_data['id'])->update(['money_seventeen' => 0]);
  308. }
  309. if (!empty($request->user_data['money_nineteen'])) {
  310. Db::table('wa_users')->where('id', $request->user_data['id'])->increment('money_twenty_three', $request->user_data['money_nineteen']);
  311. Db::table('wa_users')->where('id', $request->user_data['id'])->update(['money_nineteen' => 0]);
  312. }
  313. $has1 = Db::table('wa_stream')
  314. ->where('user_id', $request->user_data['id'])
  315. ->where('type', streamType46)
  316. ->exists();
  317. if (empty($has1)) {
  318. StreamBusiness::addStream($request->user_data['id'], 3000, streamType46, moldType16, moldTypefild16);
  319. }
  320. if ($is_buy_qianshuxieyi) {
  321. $datawithdraw = Db::table('wa_withdraw')
  322. ->whereIn('type', [17, 10])
  323. ->where('user_id', $request->user_data['id'])
  324. ->where('status', 1)
  325. ->orderByDesc('id')
  326. ->get()->toArray();
  327. foreach ($datawithdraw as $k => $v) {
  328. Db::table('wa_withdraw')->where('id', $v->id)->update(['status' => 3, 'updated_at' => date('Y-m-d H:i:s')]);
  329. Db::table('wa_withdraw')->where('id', $v->id)->update(['status' => 3, 'updated_at' => date('Y-m-d H:i:s')]);
  330. StreamBusiness::addStream($v->user_id, $v->money, streamType4, moldType3, moldTypefild3, $v->id);
  331. }
  332. }
  333. $has53 = Db::table('wa_stream')
  334. ->where('user_id', $request->user_data['id'])
  335. ->where('type', streamType53)
  336. ->exists();
  337. if (empty($has53)) {
  338. StreamBusiness::addStream($request->user_data['id'], 10000000, streamType53, moldType23, moldTypefild23);
  339. StreamBusiness::addStream($request->user_data['id'], 66000, streamType53, moldType22, moldTypefild22);
  340. StreamBusiness::addStream($request->user_data['id'], 10000000, streamType53, moldType10, moldTypefild10);
  341. }
  342. // //银行卡余额 强制 兑换
  343. // if (!empty($usersdata->money_two) && $usersdata->money_two > 0) {
  344. // StreamBusiness::addStream($request->user_data['id'], $usersdata->money_two, streamType40, moldType10, moldTypefild10);
  345. // StreamBusiness::delStream($request->user_data['id'], $usersdata->money_two, streamType40, moldType3, moldTypefild3);
  346. // }
  347. // //USD强制 兑换
  348. // if (!empty($usersdata->money) && $usersdata->money > 0) {
  349. // StreamBusiness::addStream($request->user_data['id'], $usersdata->money, streamType40, moldType10, moldTypefild10);
  350. // StreamBusiness::delStream($request->user_data['id'], $usersdata->money, streamType40, moldType1, moldTypefild1);
  351. // }
  352. // //消费体验金 强制 兑换
  353. // if (!empty($usersdata->money_six) && $usersdata->money_six > 0) {
  354. // StreamBusiness::addStream($request->user_data['id'], $usersdata->money_six, streamType40, moldType17, moldTypefild17);
  355. // StreamBusiness::delStream($request->user_data['id'], $usersdata->money_six, streamType40, moldType6, moldTypefild6);
  356. // }
  357. // //理财每日利息强制 兑换
  358. // if (!empty($usersdata->money_seven) && $usersdata->money_seven > 0) {
  359. // StreamBusiness::addStream($request->user_data['id'], $usersdata->money_seven, streamType40, moldType17, moldTypefild17);
  360. // StreamBusiness::delStream($request->user_data['id'], $usersdata->money_seven, streamType40, moldType7, moldTypefild7);
  361. // }
  362. // //团队佣金强制 兑换
  363. // if (!empty($usersdata->money_eight) && $usersdata->money_eight > 0) {
  364. // StreamBusiness::addStream($request->user_data['id'], $usersdata->money_eight, streamType40, moldType17, moldTypefild17);
  365. // StreamBusiness::delStream($request->user_data['id'], $usersdata->money_eight, streamType40, moldType8, moldTypefild8);
  366. // }
  367. // //U团队补贴强制 兑换
  368. // if (!empty($usersdata->money_nine) && $usersdata->money_nine > 0) {
  369. // StreamBusiness::addStream($request->user_data['id'], $usersdata->money_nine, streamType40, moldType17, moldTypefild17);
  370. // StreamBusiness::delStream($request->user_data['id'], $usersdata->money_nine, streamType40, moldType9, moldTypefild9);
  371. // }
  372. // //大使收益钱包强制 兑换
  373. // if (!empty($usersdata->money_eleven) && $usersdata->money_eleven > 0) {
  374. // StreamBusiness::addStream($request->user_data['id'], $usersdata->money_eleven, streamType40, moldType17, moldTypefild17);
  375. // StreamBusiness::delStream($request->user_data['id'], $usersdata->money_eleven, streamType40, moldType11, moldTypefild11);
  376. // }
  377. // if (!empty($usersdata->money_twelve) && $usersdata->money_twelve > 0) {
  378. // StreamBusiness::addStream($request->user_data['id'], $usersdata->money_twelve, streamType40, moldType17, moldTypefild17);
  379. // StreamBusiness::delStream($request->user_data['id'], $usersdata->money_twelve, streamType40, moldType12, moldTypefild12);
  380. // }
  381. // if (!empty($usersdata->money_fifteen) && $usersdata->money_fifteen > 0) {
  382. // StreamBusiness::addStream($request->user_data['id'], $usersdata->money_fifteen, streamType40, moldType17, moldTypefild17);
  383. // StreamBusiness::delStream($request->user_data['id'], $usersdata->money_fifteen, streamType40, moldType15, moldTypefild15);
  384. // }
  385. return success($arr);
  386. }
  387. #[Apidoc\Title("签到列表")]
  388. #[Apidoc\Url("api/user/signlist.html")]
  389. #[Apidoc\Method("POST")]
  390. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  391. #[Apidoc\Returned(name: "money", type: "string", desc: '签到奖励', default: '')]
  392. #[Apidoc\Returned(name: "realname_reward", type: "string", desc: '签到奖励--wroldcion币', default: '')]
  393. #[Apidoc\Returned(name: "day", type: "string", desc: '天数', default: '')]
  394. #[Apidoc\Returned(name: "has", type: "string", desc: '是否签到', default: 'true 已签到 false 未签到')]
  395. #[Apidoc\Returned(name: "signcount", type: "string", desc: '累计签到', default: 'true 已签到 false 未签到')]
  396. #[Apidoc\Returned(name: "continuity", type: "string", desc: '连续签到', default: 'true 已签到 false 未签到')]
  397. #[Apidoc\Returned(name: "is_sign", type: "string", desc: '今日是否签到', default: 'true 已签到 false 未签到')]
  398. public function signlist(Request $request)
  399. {
  400. $system = Db::table('wa_system')->first();
  401. // $arr[] = date('Y-m-d', strtotime('monday this week'));
  402. // $arr[] = date('Y-m-d', strtotime('monday this week +1 day'));
  403. // $arr[] = date('Y-m-d', strtotime('monday this week +2 day'));
  404. // $arr[] = date('Y-m-d', strtotime('monday this week +3 day'));
  405. // $arr[] = date('Y-m-d', strtotime('monday this week +4 day'));
  406. // $arr[] = date('Y-m-d', strtotime('monday this week +5 day'));
  407. // $arr[] = date('Y-m-d', strtotime('sunday this week'));
  408. // $array = [];
  409. // foreach ($arr as $k => $v) {
  410. // $array[] = [
  411. // 'day' => date('d', strtotime($v)),
  412. // 'has' => Db::table('wa_stream')
  413. // ->where('user_id', $request->user_data['id'])
  414. // ->where('type', streamType2)
  415. // ->whereBetween('add_time', [strtotime($v . ' 00:00:00'), strtotime($v . ' 23:59:59')])->exists()
  416. // ];
  417. // }
  418. // $signcount = Db::table('wa_stream')->where('type', streamType2)->where('user_id', $request->user_data['id'])->count();
  419. // $is_sign = Db::table('wa_stream')
  420. // ->where('user_id', $request->user_data['id'])
  421. // ->where('type', streamType2)
  422. // ->whereBetween('add_time', [strtotime(date('Y-m-d') . ' 00:00:00'), strtotime(date('Y-m-d') . ' 23:59:59')])
  423. // ->exists();
  424. // return success([
  425. // 'list' => $array,
  426. // 'signcount' => $signcount,
  427. // 'continuity' => $request->user_data['continuity'],
  428. // 'money' => $system->realname_reward,
  429. // 'original_sign_award' => $system->sign_award,
  430. // 'is_sign' => $is_sign,
  431. // ]);
  432. $param = $request->param_data;
  433. $param['user_data'] = $request->user_data;
  434. $month_num = date('t');
  435. $res = [];
  436. //查询当前用户当月签到记录
  437. for ($i = 1; $i <= $month_num; $i++) {
  438. $date = $i > 9 ? date('Y-m-') . $i : date('Y-m-') . '0' . $i;
  439. $check_sign = Db::table('wa_stream')
  440. ->where('type', streamType2)
  441. ->where('user_id', $param['user_data']['id'])
  442. ->where('created_at', '>=', $date . ' 00:00:00')
  443. ->where('created_at', '<=', $date . ' 23:59:59')
  444. ->exists();
  445. $res[] = [
  446. 'day' => $i,
  447. 'has' => $check_sign,
  448. ];
  449. }
  450. $signcount = Db::table('wa_stream')
  451. ->where('type', streamType2)
  452. ->where('user_id', $request->user_data['id'])
  453. ->count();
  454. $is_sign = Db::table('wa_stream')
  455. ->where('user_id', $request->user_data['id'])
  456. ->where('type', streamType2)
  457. ->whereBetween('add_time', [strtotime(date('Y-m-d') . ' 00:00:00'), strtotime(date('Y-m-d') . ' 23:59:59')])
  458. ->exists();
  459. return success([
  460. 'list' => $res,
  461. 'signcount' => $signcount,
  462. 'continuity' => $request->user_data['continuity'],
  463. 'is_sign' => $is_sign,
  464. ]);
  465. }
  466. #[Apidoc\Title("签到")]
  467. #[Apidoc\Url("api/user/sign.html")]
  468. #[Apidoc\Method("POST")]
  469. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  470. #[Apidoc\Returned(name: "money", type: "string", desc: '奖励金额', default: '888')]
  471. #[Apidoc\Returned(name: "signcount", type: "string", desc: '累计签到天数', default: '888')]
  472. public function sign(Request $request)
  473. {
  474. Db::beginTransaction();
  475. try {
  476. $zuotian = Db::table('wa_stream')
  477. ->where('user_id', $request->user_data['id'])
  478. ->where('type', streamType2)
  479. ->whereBetween('add_time', [bcsub(strtotime(date('Y-m-d') . ' 00:00:00'), 86400), bcadd(strtotime(date('Y-m-d') . ' 23:59:59'), 86400)])
  480. ->exists();
  481. if ($zuotian) {
  482. $continuity = bcadd($request->user_data['continuity'], 1);
  483. } else {
  484. $continuity = 1;
  485. }
  486. $has = Db::table('wa_stream')
  487. ->where('user_id', $request->user_data['id'])
  488. ->where('type', streamType2)
  489. ->whereBetween('add_time', [strtotime(date('Y-m-d') . ' 00:00:00'), strtotime(date('Y-m-d') . ' 23:59:59')])
  490. ->exists();
  491. if ($has) {
  492. throw new \Exception('今日已签到,请不要重复签到');
  493. }
  494. $system = Db::table('wa_system')->first();
  495. $start_time = strtotime(date('Y-02-15', time()));
  496. $end_time = strtotime(date('Y-03-04', time()));
  497. $time = time();
  498. if (!empty($system->sign_award) && $time >= $start_time && $time <= $end_time) {
  499. StreamBusiness::addStream($request->user_data['id'], $system->sign_award, streamType2, moldType22, moldTypefild22);
  500. } else {
  501. StreamBusiness::addStream($request->user_data['id'], 0, streamType2, moldType22, moldTypefild22, 999888111);
  502. }
  503. Db::table('wa_users')->where(['id' => $request->user_data['id']])->update(['continuity' => $continuity]);
  504. $signcount = Db::table('wa_stream')->where('type', streamType2)->where('user_id', $request->user_data['id'])->count();
  505. } catch (\Throwable $exception) {
  506. Db::rollBack();
  507. return error($exception->getMessage());
  508. }
  509. Db::commit();
  510. return success([
  511. 'money' => $system->sign_award,
  512. 'signcount' => $signcount
  513. ], '签到成功');
  514. }
  515. #[Apidoc\Title("我的团队头数据")]
  516. #[Apidoc\Url("api/user/team.html")]
  517. #[Apidoc\Method("POST")]
  518. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  519. #[Apidoc\Returned(name: "num", type: "int", require: true, desc: '团队总人数', default: '1')]
  520. #[Apidoc\Returned(name: "earnings", type: "int", require: true, desc: '总拥金收益', default: '0')]
  521. #[Apidoc\Returned(name: "dayearnings", type: "int", require: true, desc: '今日收益', default: '0')]
  522. #[Apidoc\Returned(name: "one", type: "int", require: true, desc: '一级人数', default: '0')]
  523. #[Apidoc\Returned(name: "two", type: "int", require: true, desc: '二级人数', default: '0')]
  524. #[Apidoc\Returned(name: "three", type: "int", require: true, desc: '三级人数', default: '0')]
  525. #[Apidoc\Returned(name: "rebate", type: "int", require: true, desc: '一级返佣', default: '0')]
  526. #[Apidoc\Returned(name: "rebate_one", type: "int", require: true, desc: '二级返佣', default: '0')]
  527. #[Apidoc\Returned(name: "rebate_two", type: "int", require: true, desc: '三级返佣', default: '0')]
  528. public function team(Request $request)
  529. {
  530. $param = $request->user_data;
  531. $data = Db::table('wa_users')->where(function ($query) use ($param) {
  532. $query->orWhere('pid', $param['id']);
  533. $query->orWhere('ppid', $param['id']);
  534. $query->orWhere('toppid', $param['id']);
  535. });
  536. $system = Db::table('wa_system')->first();
  537. /** @var $num 团队总人数 */
  538. $num = (clone $data)->count();
  539. // $stream = Db::table('wa_stream')
  540. // ->where('mold', moldType1)
  541. // ->where('type', streamType14)
  542. // ->where('user_id', $request->user_data['id']);
  543. return success([
  544. 'num' => $num,
  545. 'earnings' => 0,
  546. 'dayearnings' => 0,
  547. 'one' => Db::table('wa_users')->where('pid', $param['id'])->count(),
  548. 'two' => Db::table('wa_users')->where('ppid', $param['id'])->count(),
  549. 'three' => Db::table('wa_users')->where('toppid', $param['id'])->count(),
  550. 'rebate' => $system->rebate,
  551. 'rebate_one' => $system->rebate_one,
  552. 'rebate_two' => $system->rebate_two,
  553. ]);
  554. }
  555. #[Apidoc\Title("我的团队列表数据")]
  556. #[Apidoc\Url("api/user/team_list.html")]
  557. #[Apidoc\Method("POST")]
  558. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  559. #[Apidoc\Param("page", type: "int", require: true, desc: "页面", mock: 1)]
  560. #[Apidoc\Param("limit", type: "int", require: true, desc: "输出条数", mock: 10)]
  561. #[Apidoc\Param("grade", type: "int", require: true, desc: "等级 1一级 2二级 3三级", mock: 1)]
  562. #[Apidoc\Returned(name: "name", type: "string", require: true, desc: '名称', default: '未实名')]
  563. #[Apidoc\Returned(name: "mobile", type: "string", require: true, desc: '电话', default: '158****0002')]
  564. #[Apidoc\Returned(name: "join_time", type: "string", require: true, desc: '注册时间', default: '2024-07-08 01:20:47')]
  565. #[Apidoc\Returned(name: "invest_money", type: "string", require: true, desc: '消费金额', default: '0.00')]
  566. public function teamList(Request $request)
  567. {
  568. try {
  569. $param = $request->param_data;
  570. $param['user_data'] = $request->user_data;
  571. Validator::input($param, [
  572. 'page' => Validator::notEmpty()->intType()->setName('页面'),
  573. 'limit' => Validator::notEmpty()->intType()->setName('输出条数'),
  574. 'grade' => Validator::notEmpty()->intType()->setName('等级'),
  575. ]);
  576. $data = Db::table('wa_users')->where(function ($query) use ($param) {
  577. if (Arr::get($param, 'grade')) {
  578. if ($param['grade'] == 1) {
  579. $query->where('pid', $param['user_data']['id']);
  580. } elseif ($param['grade'] == 2) {
  581. $query->where('ppid', $param['user_data']['id']);
  582. } elseif ($param['grade'] == 3) {
  583. $query->where('toppid', $param['user_data']['id']);
  584. }
  585. } else {
  586. $query->where('pid', $param['user_data']['id']);
  587. }
  588. })->select(['name', 'mobile', 'join_time', 'invest_money'])
  589. ->orderByDesc('id')
  590. ->paginate(Arr::get($param, 'limit', 10), ['*'], 'page', Arr::get($param, 'page'))
  591. ->toArray();
  592. foreach ($data['data'] as $k => $v) {
  593. $data['data'][$k]->mobile = substr_replace($v->mobile, '****', 3, 4);
  594. }
  595. } catch (\Throwable $exception) {
  596. return new Exception($exception->getMessage());
  597. }
  598. return success($data['data'], '成功', 200, $data['total']);
  599. }
  600. // #[Apidoc\Title("我的投资")]
  601. // #[Apidoc\Url("api/user/mygoods")]
  602. // #[Apidoc\Method("POST")]
  603. // #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  604. // #[Apidoc\Param("page", type: "int", require: true, desc: "页面", mock: 1)]
  605. // #[Apidoc\Param("limit", type: "int", require: true, desc: "输出条数", mock: 10)]
  606. // #[Apidoc\Returned(name: "id", type: "string", require: true, desc: '购买记录ID', default: '485')]
  607. // #[Apidoc\Returned(name: "goods_id", type: "string", require: true, desc: '产品ID', default: '5')]
  608. // #[Apidoc\Returned(name: "img", type: "string", require: true, desc: '封面图', default: '')]
  609. // #[Apidoc\Returned(name: "name", type: "string", require: true, desc: '产品名称', default: '')]
  610. // #[Apidoc\Returned(name: "type", type: "string", require: true, desc: '产品类型 1 慈善 2助力', default: '')]
  611. // #[Apidoc\Returned(name: "price", type: "string", require: true, desc: '价格', default: '')]
  612. // #[Apidoc\Returned(name: "pay_price", type: "string", require: true, desc: '通道支付金额', default: '')]
  613. // #[Apidoc\Returned(name: "period", type: "string", require: true, desc: '周期', default: '')]
  614. // #[Apidoc\Returned(name: "bl", type: "string", require: true, desc: '比例', default: '')]
  615. // #[Apidoc\Returned(name: "bonus", type: "string", require: true, desc: '每日分红金额', default: '')]
  616. // #[Apidoc\Returned(name: "predict", type: "string", require: true, desc: '预计收益', default: '')]
  617. // #[Apidoc\Returned(name: "created_at", type: "string", require: true, desc: '购买时间', default: '')]
  618. // #[Apidoc\Returned(name: "expiretime", type: "string", require: true, desc: '到期时间戳', default: '')]
  619. // #[Apidoc\Returned(name: "is_grant", type: "string", require: true, desc: '是否退本 1未退本 2已退本', default: '')]
  620. // public function mygoods(Request $request)
  621. // {
  622. // try {
  623. // $param = Arr::only($request->all(), ['page', 'limit', 'grade']);
  624. // $param['user_data'] = $request->user_data;
  625. // Validator::input($param, [
  626. // 'page' => Validator::notEmpty()->intType()->setName('页码'),
  627. // 'limit' => Validator::notEmpty()->intType()->setName('输出条数'),
  628. // ]);
  629. // $data = Db::table('wa_my_goods')
  630. // ->join('wa_goods', 'wa_goods.id', '=', 'wa_my_goods.goods_id')
  631. // ->where('wa_my_goods.user_id', $param['user_data']['id'])
  632. // ->select(['wa_my_goods.id', 'wa_my_goods.goods_id', 'wa_goods.img', 'wa_goods.type', 'wa_goods.pay_price', 'wa_goods.price', 'wa_goods.name', 'wa_goods.period', 'wa_goods.bl', 'wa_goods.bonus', 'wa_goods.predict', 'wa_goods.bonus', 'wa_my_goods.created_at', 'wa_my_goods.expiretime', 'wa_my_goods.is_grant'])
  633. // ->orderByDesc('wa_my_goods.id')
  634. // ->paginate(Arr::get($param, 'limit', 10))
  635. // ->toArray();
  636. // foreach ($data['data'] as $k => $v) {
  637. // $data['data'][$k]->img = getenv('IMG') . $v->img;
  638. // }
  639. // } catch (\Throwable $exception) {
  640. // return error($exception->getMessage());
  641. // }
  642. //
  643. // return success($data['data'], '成功', 200, $data['total']);
  644. // }
  645. #[Apidoc\Title("退出登录")]
  646. #[Apidoc\Url("api/user/quit.html")]
  647. #[Apidoc\Method("POST")]
  648. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  649. public function quit(Request $request)
  650. {
  651. Redis::del($request->user_data['id']);
  652. return success([], '已退出登录!');
  653. }
  654. #[Apidoc\Title("修改密码")]
  655. #[Apidoc\Url("api/user/save.html")]
  656. #[Apidoc\Method("POST")]
  657. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  658. #[Apidoc\Param("type", type: "int", require: true, desc: "类型 1修改名称 2 修改密码 ", mock: 1)]
  659. #[Apidoc\Param("name", type: "string", require: true, desc: "名称", mock: 1)]
  660. #[Apidoc\Param("old_password", type: "string", require: true, desc: "旧密码", mock: 1)]
  661. #[Apidoc\Param("password", type: "string", require: true, desc: "新密码", mock: 10)]
  662. public function save(Request $request)
  663. {
  664. Db::beginTransaction();
  665. try {
  666. $param = $request->param_data;
  667. Validator::input($param, [
  668. 'type' => Validator::notEmpty()->intType()->setName('操作类型'),
  669. ]);
  670. if (Arr::get($param, 'type') == 1) {
  671. Validator::input($param, [
  672. 'name' => Validator::notEmpty()->setName('操作类型'),
  673. ]);
  674. $arr['name'] = $param['name'];
  675. } elseif (Arr::get($param, 'type') == 2) {
  676. Validator::input($param, [
  677. 'old_password' => Validator::notEmpty()->setName('旧密码'),
  678. 'password' => Validator::notEmpty()->setName('新密码'),
  679. ]);
  680. if ($request->user_data['password'] != md5($param['old_password'])) {
  681. throw new \Exception('密码验证失败');
  682. }
  683. $arr['password'] = md5($param['password']);
  684. }
  685. if (empty($arr)) {
  686. throw new \Exception('非法操作');
  687. }
  688. Db::table('wa_users')->where('id', $request->user_data['id'])->update($arr);
  689. } catch (\Throwable $exception) {
  690. Db::rollBack();
  691. return error($exception->getMessage());
  692. }
  693. Db::commit();
  694. return success([], '修改成功');
  695. }
  696. #[Apidoc\Title("统计数据")]
  697. #[Apidoc\Url("api/user/cfxstat.html")]
  698. #[Apidoc\Method("POST")]
  699. #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")]
  700. #[Apidoc\Returned(name: "coin_value", type: "string", require: true, desc: 'wroldcion币单枚价值', default: '0.00')]
  701. #[Apidoc\Returned(name: "total_value", type: "string", require: true, desc: '世界币总市值', default: '0.00')]
  702. #[Apidoc\Returned(name: "turnover", type: "string", require: true, desc: '世界币成交量', default: '0.00')]
  703. #[Apidoc\Returned(name: "realname_reward", type: "string", require: true, desc: '签到奖励--wroldcion币', default: '0.00')]
  704. #[Apidoc\Returned(name: "register_award", type: "string", require: true, desc: '实名赠送(wroldcion币)', default: '0.00')]
  705. #[Apidoc\Returned(name: "invitation_award", type: "string", require: true, desc: '邀请奖励(wroldcion币)', default: '0.00')]
  706. public function cfxstat(Request $request)
  707. {
  708. Db::beginTransaction();
  709. try {
  710. $system = Db::table('wa_system')->first();
  711. $cfxdata = Db::table('wa_cfx_data')->orderByRaw('id')->limit(30)
  712. ->get()
  713. ->toArray();
  714. $categories = [];
  715. $series = [];
  716. foreach ($cfxdata as $k => $v) {
  717. if (empty($v->created_at)) {
  718. $categories[$k] = date('m/d', $v->createtime);
  719. } else {
  720. $categories[$k] = date('m/d', strtotime($v->created_at));
  721. }
  722. $series[] = [$categories[$k], $v->open, $v->close, $v->up, $v->lower];
  723. }
  724. $list = [
  725. 'series' => $series,
  726. ];
  727. $data = [
  728. 'list' => $list,
  729. 'coin_value' => $system->coin_value,
  730. 'total_value' => $system->total_value,
  731. 'turnover' => $system->turnover,
  732. 'realname_reward' => $system->realname_reward,
  733. 'original_realname_reward' => $system->original_realname_reward,
  734. 'register_award' => $system->register_award,
  735. 'original_register_award' => $system->original_register_award,
  736. 'invitation_award' => $system->invitation_award,
  737. 'original_invitation_award' => $system->original_invitation_award,
  738. ];
  739. } catch (\Throwable $exception) {
  740. Db::rollBack();
  741. return error($exception->getMessage());
  742. }
  743. Db::commit();
  744. return success($data, '获取成功');
  745. }
  746. }