LsGoodSendController.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Events\SendGoodLogEvent;
  4. use App\Models\Express;
  5. use App\Models\FwCode;
  6. use App\Models\FwCodeLog;
  7. use App\Models\GoodSelect;
  8. use App\Models\OrderTest;
  9. use App\Models\Select;
  10. use App\Models\User;
  11. use Carbon\Carbon;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Facades\DB;
  14. use Illuminate\Support\Facades\Log;
  15. use Illuminate\Support\Facades\Validator;
  16. class LsGoodSendController extends Controller
  17. {
  18. public function getinfo(Request $request)
  19. {
  20. Log::info('请求了');
  21. $input = $request->all();
  22. Log::info($input);
  23. $rules = [
  24. 'sign' => 'required',
  25. 'string' => 'required',
  26. ];
  27. $messages = [
  28. 'sign.required' => 'sign不能为空.',
  29. 'string.required' => 'info不能为空.',
  30. ];
  31. $validator = Validator::make($input, $rules, $messages);
  32. if ($validator->fails()) {
  33. return response()->json(['status' => 0, 'message' => '参数不对哦']);
  34. }
  35. if ($input['sign'] != 'AD253SghasdklasSdafAGAdsa541') {
  36. return response()->json(['status' => 0, 'message' => '标识不对哦']);
  37. }
  38. $info = $input['string'];
  39. $result = mb_strpos($info, 'http');
  40. if ($result === false) {
  41. Log::error('string不对啊--'.$info);
  42. return response()->json(['status' => 0, 'message' => 'string不对啊']);
  43. }
  44. // $result = mb_strpos($info, 'http');
  45. $result1 = mb_strripos($info, 'CL');
  46. if ($result1 === false) {
  47. Log::error('缺少CL哦--'.$info);
  48. return response()->json(['status' => 0, 'message' => '缺少CL哦']);
  49. }
  50. // $url = mb_substr($info, $result, $result1 - $result);
  51. // $sts = trim($url);
  52. // $num = mb_strpos($sts, 'auth');
  53. // $code = mb_substr($sts, $num + 5);
  54. $code=$this->extractData($info);
  55. if (!$code){
  56. Log::error($info.'=====缺少code');
  57. return response()->json(['status' => 0, 'message' => '缺少code哦']);
  58. // return response()->json(['status' => 0, 'message' => '缺少code哦']);
  59. }
  60. $express = mb_substr($info, 2, $result - 3);
  61. $express_info = Express::where('express_number', $express)->first();
  62. Log::info('进行到了这里1');
  63. if ($express_info) {
  64. $status = mb_strpos($express_info->note, '精');
  65. if ($status !== false) {
  66. $good_id = 1;
  67. } else {
  68. $status = mb_strpos($express_info->note, '高');
  69. if ($status !== false) {
  70. $good_id = 3;
  71. } else {
  72. $status = mb_strpos($express_info->note, '青');
  73. if ($status !== false) {
  74. $good_id = 9;
  75. } else {
  76. $status = mb_strpos($express_info->note, '红');
  77. if ($status !== false) {
  78. $good_id = 1;
  79. } else {
  80. $status = mb_strpos($express_info->note, '袜子');
  81. if ($status !== false) {
  82. $good_id = 14;
  83. } else {
  84. Log::error('找不到款式哦--'.$info);
  85. return response()->json(['status' => 0, 'message' => '找不到款式哦']);
  86. }
  87. }
  88. }
  89. }
  90. }
  91. $orders=OrderTest::where('id',$express_info->order_id)->first();
  92. $user = User::where('id', $express_info->user_id)->first();
  93. if ($orders){
  94. $user=User::where('id',$orders->good_user_id)->first();
  95. }
  96. $good = GoodSelect::find($good_id);
  97. Log::info($code);
  98. if (mb_strlen($code)>18){
  99. $re = Select::where('code', $code)->first();
  100. if ($re) {
  101. if ($re->level!=1){
  102. Log::error('防伪码不对啊--'.$info);
  103. return response()->json(['status' => 0, 'message' => '防伪码不对啊']);
  104. }
  105. /***大码发货,并记录日志情况*/
  106. $re->user_id = $request->id;
  107. $re->com_binding = 0;
  108. $re->is_true = 0;
  109. $re->good_select_id = $good_id;
  110. if (!$re->save()) {
  111. return response()->json(['status' => 0, 'message' => '']);
  112. }
  113. $data = [
  114. 'op_name' => '流水线',
  115. 'op_phone' => '流水线',
  116. 'op_id' => 0,
  117. 'good_name' => $good->good_name,
  118. 'accept_name' => $user->nickname,
  119. 'accept_phone' => $user->mobile,
  120. 'accept_id' => $user->id,
  121. 'type' => 1,
  122. 'select_id' => $re->id
  123. ];
  124. event(new SendGoodLogEvent($data));
  125. /**查询**/
  126. $level_data = Select::where('pid', $re->sort)->get();
  127. foreach ($level_data as $ke => $va) {
  128. /***修改所所属者*/
  129. $res = Select::where('code', $va->code)->first();
  130. $res->user_id = $user->id;
  131. $res->com_binding = 0;
  132. $res->is_true = 0;
  133. $res->good_select_id = $good_id;
  134. if (!$res->save()) {
  135. throw new \Exception(1);
  136. }
  137. $data = [
  138. 'op_name' => '流水线',
  139. 'op_phone' => '流水线',
  140. 'op_id' => 0,
  141. 'good_name' => $good->good_name,
  142. 'accept_name' => $user->nickname,
  143. 'accept_phone' => $user->mobile,
  144. 'accept_id' => $user->id,
  145. 'type' => 1,
  146. 'select_id' => $va->id
  147. ];
  148. event(new SendGoodLogEvent($data));
  149. /**如果现在的等级不是最低级,则执行下面的内容**/
  150. if ($va->is_lowest != 1) {
  151. $ress = Select::where('pid', $va->sort)->get();
  152. foreach ($ress as $kes => $vas) {
  153. $resss = Select::where('code', $vas->code)->first();
  154. $resss->user_id = $user->id;
  155. $resss->com_binding = 0;
  156. $resss->is_true = 0;
  157. $resss->good_select_id = $good_id;
  158. if (!$resss->save()) {
  159. return response()->json(['status' => 0, 'message' => '']);
  160. }
  161. $data = [
  162. 'op_name' => '流水线',
  163. 'op_phone' => '流水线',
  164. 'op_id' => 0,
  165. 'accept_name' => $user->nickname,
  166. 'accept_phone' => $user->mobile,
  167. 'accept_id' => $user->id,
  168. 'type' => 1,
  169. 'good_name' => $good->good_name,
  170. 'select_id' => $vas->id
  171. ];
  172. event(new SendGoodLogEvent($data));
  173. }
  174. }
  175. }
  176. return response()->json(['status' => 1, 'message' => '成功了啊']);
  177. }
  178. }else{
  179. if (mb_strlen($code)==10){
  180. $re = FwCode::where('top_code', $code)->first();
  181. if (!$re){
  182. return response()->json(['status' => 0, 'message' => '防伪码找不到哦','data'=>[]]);
  183. }
  184. $child_count=FwCode::where('top_code',$code)->groupBy('user_id')->get();
  185. if (count($child_count)!=1){
  186. return response()->json(['status' => 0, 'message' => '小码已发货不能使用大码发货','data'=>[]]);
  187. }
  188. $child=FwCode::where('top_code',$code)->get();
  189. FwCode::where('top_code',$code)->update(['user_id'=>$user->id,'goods_id'=>$good_id]);
  190. foreach ($child as $kke=>$vve){
  191. $data = [
  192. 'op_name' => '流水线',
  193. 'op_phone' => '',
  194. 'op_id' => 0,
  195. 'good_name'=>$good->good_name,
  196. 'accept_name' => $user->nickname,
  197. 'accept_phone' => $user->mobile,
  198. 'accept_id' => $user->id,
  199. 'type' => 1,
  200. 'select_id' => $vve->id
  201. ];
  202. $this->sendlog($data);
  203. }
  204. return response()->json(['status' => 1, 'message' => '成功了啊']);
  205. }
  206. return response()->json(['status' => 0, 'message' => '防伪码用的是小码','data'=>[]]);
  207. }
  208. Log::error('防伪码找不到哦--'.$info);
  209. return response()->json(['status' => 0, 'message' => '防伪码找不到哦','data'=>$re]);
  210. } else {
  211. Log::error('快递单找不到--'.$info);
  212. return response()->json(['status' => 0, 'message' => '快递单找不到']);
  213. }
  214. }
  215. public function extractData($str) {
  216. try {
  217. // 根据不同的URL模式进行分割和提取
  218. if (strpos($str, 'fw.jiuweiyun.cn') !== false) {
  219. // 处理第一个URL模式
  220. $pattern = '/f=([a-zA-Z0-9]+) /';
  221. preg_match($pattern, $str, $matches);
  222. return $matches[1];
  223. } elseif (strpos($str, 'fangw.jiuweiyun.cn') !== false) {
  224. // 处理第二个URL模式
  225. $pattern = '/auth\/([^ ]+) CL/';
  226. preg_match($pattern, $str, $matches);
  227. return $matches[1];
  228. }
  229. return null;
  230. }catch (\Exception $exception){
  231. return null;
  232. }
  233. }
  234. public function sendlog($event){
  235. DB::beginTransaction();
  236. try{
  237. $log=new FwCodeLog();
  238. if ($event['type']==1){
  239. $op_id=0;
  240. $note='此货物('.$event['good_name'].')由'.$event['op_name'].'在'.Carbon::now()->toDateTimeString().'发给昵称为:'.$event['accept_name'].'、手机号为:'.$event['accept_phone'].'的代理';
  241. }else{
  242. $op_id=$event['op_id'];
  243. $note='此货物由昵称为:'.$event['op_name'].'、手机号为:'.$event['op_phone'].'在'.Carbon::now()->toDateTimeString().'发给昵称为:'.$event['accept_name'].'、手机号为:'.$event['accept_phone'].'的代理';
  244. }
  245. $event['note']=$note;
  246. $event['op_id']=$op_id;
  247. // SendGoodLog::create($event);
  248. $log->op_name=$event['op_name'];
  249. $log->op_phone=$event['op_phone'];
  250. $log->op_id=$op_id;
  251. $log->accept_name=$event['accept_name'];
  252. $log->accept_phone=$event['accept_phone'];
  253. $log->accept_id=$event['accept_id'];
  254. $log->select_id=$event['select_id'];
  255. $log->note=$note;
  256. if (!$log->save()){
  257. throw new \Exception('1');
  258. }
  259. DB::commit();
  260. }catch (\Exception $exception){
  261. Log::error($exception);
  262. DB::rollBack();
  263. }
  264. }
  265. public function getinfos(Request $request)
  266. {
  267. Log::info('请求了');
  268. $input = $request->all();
  269. Log::info($input);
  270. $rules = [
  271. 'sign' => 'required',
  272. 'string' => 'required',
  273. ];
  274. $messages = [
  275. 'sign.required' => 'sign不能为空.',
  276. 'string.required' => 'info不能为空.',
  277. ];
  278. $validator = Validator::make($input, $rules, $messages);
  279. if ($validator->fails()) {
  280. return response()->json(['status' => 0, 'message' => '参数不对哦']);
  281. }
  282. if ($input['sign'] != 'AD253SghasdklasSdafAGAdsa541') {
  283. return response()->json(['status' => 0, 'message' => '标识不对哦']);
  284. }
  285. $info = $input['string'];
  286. $result = mb_strpos($info, 'http');
  287. if ($result === false) {
  288. Log::error('string不对啊--'.$info);
  289. return response()->json(['status' => 0, 'message' => 'string不对啊']);
  290. }
  291. // $result = mb_strpos($info, 'http');
  292. $result1 = mb_strripos($info, 'CL');
  293. if ($result1 === false) {
  294. Log::error('缺少CL哦--'.$info);
  295. return response()->json(['status' => 0, 'message' => '缺少CL哦']);
  296. }
  297. $url = mb_substr($info, $result, $result1 - $result);
  298. $sts = trim($url);
  299. $num = mb_strpos($sts, 'auth');
  300. $code = mb_substr($sts, $num + 5);
  301. $express = mb_substr($info, 2, $result - 3);
  302. $express_info = Express::where('express_number', $express)->first();
  303. Log::info('进行到了这里1');
  304. if ($express_info) {
  305. $status = mb_strpos($express_info->note, '精');
  306. if ($status !== false) {
  307. $good_id = 1;
  308. } else {
  309. $status = mb_strpos($express_info->note, '高');
  310. if ($status !== false) {
  311. $good_id = 3;
  312. } else {
  313. $status = mb_strpos($express_info->note, '青');
  314. if ($status !== false) {
  315. $good_id = 9;
  316. } else {
  317. $status = mb_strpos($express_info->note, '红');
  318. if ($status !== false) {
  319. $good_id = 1;
  320. } else {
  321. Log::error('找不到款式哦--'.$info);
  322. return response()->json(['status' => 0, 'message' => '找不到款式哦']);
  323. }
  324. }
  325. }
  326. }
  327. $orders=OrderTest::where('id',$express_info->order_id)->first();
  328. $user = User::where('id', $express_info->user_id)->first();
  329. if ($orders){
  330. $user=User::where('id',$orders->good_user_id)->first();
  331. }
  332. $good = GoodSelect::find($good_id);
  333. Log::info($code);
  334. $re = Select::where('code', $code)->first();
  335. if ($re) {
  336. if ($re->level!=1){
  337. Log::error('防伪码不对啊--'.$info);
  338. return response()->json(['status' => 0, 'message' => '防伪码不对啊']);
  339. }
  340. /***大码发货,并记录日志情况*/
  341. $re->user_id = $request->id;
  342. $re->com_binding = 0;
  343. $re->is_true = 0;
  344. $re->good_select_id = $good_id;
  345. if (!$re->save()) {
  346. return response()->json(['status' => 0, 'message' => '']);
  347. }
  348. $data = [
  349. 'op_name' => '流水线',
  350. 'op_phone' => '流水线',
  351. 'op_id' => 0,
  352. 'good_name' => $good->good_name,
  353. 'accept_name' => $user->nickname,
  354. 'accept_phone' => $user->mobile,
  355. 'accept_id' => $user->id,
  356. 'type' => 1,
  357. 'select_id' => $re->id
  358. ];
  359. event(new SendGoodLogEvent($data));
  360. /**查询**/
  361. $level_data = Select::where('pid', $re->sort)->get();
  362. foreach ($level_data as $ke => $va) {
  363. /***修改所所属者*/
  364. $res = Select::where('code', $va->code)->first();
  365. $res->user_id = $user->id;
  366. $res->com_binding = 0;
  367. $res->is_true = 0;
  368. $res->good_select_id = $good_id;
  369. if (!$res->save()) {
  370. throw new \Exception(1);
  371. }
  372. $data = [
  373. 'op_name' => '流水线',
  374. 'op_phone' => '流水线',
  375. 'op_id' => 0,
  376. 'good_name' => $good->good_name,
  377. 'accept_name' => $user->nickname,
  378. 'accept_phone' => $user->mobile,
  379. 'accept_id' => $user->id,
  380. 'type' => 1,
  381. 'select_id' => $va->id
  382. ];
  383. event(new SendGoodLogEvent($data));
  384. /**如果现在的等级不是最低级,则执行下面的内容**/
  385. if ($va->is_lowest != 1) {
  386. $ress = Select::where('pid', $va->sort)->get();
  387. foreach ($ress as $kes => $vas) {
  388. $resss = Select::where('code', $vas->code)->first();
  389. $resss->user_id = $user->id;
  390. $resss->com_binding = 0;
  391. $resss->is_true = 0;
  392. $resss->good_select_id = $good_id;
  393. if (!$resss->save()) {
  394. return response()->json(['status' => 0, 'message' => '']);
  395. }
  396. $data = [
  397. 'op_name' => '流水线',
  398. 'op_phone' => '流水线',
  399. 'op_id' => 0,
  400. 'accept_name' => $user->nickname,
  401. 'accept_phone' => $user->mobile,
  402. 'accept_id' => $user->id,
  403. 'type' => 1,
  404. 'good_name' => $good->good_name,
  405. 'select_id' => $vas->id
  406. ];
  407. event(new SendGoodLogEvent($data));
  408. }
  409. }
  410. }
  411. return response()->json(['status' => 1, 'message' => '成功了啊']);
  412. }
  413. Log::error('防伪码找不到哦--'.$info);
  414. return response()->json(['status' => 0, 'message' => '防伪码找不到哦','data'=>$re]);
  415. } else {
  416. Log::error('快递单找不到--'.$info);
  417. return response()->json(['status' => 0, 'message' => '快递单找不到']);
  418. }
  419. }
  420. }