UserGoodSendController.php 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846
  1. <?php
  2. namespace App\Http\Controllers\Assit123;
  3. use App\Events\ReturnGoodLog;
  4. use App\Events\SendGoodLogEvent;
  5. use App\Models\GoodSelect;
  6. use App\Models\Select;
  7. use App\Models\Sell;
  8. use App\Models\SendGoodLog;
  9. use App\Models\User;
  10. use Carbon\Carbon;
  11. use Illuminate\Support\Facades\Auth;
  12. use Illuminate\Support\Facades\DB;
  13. use Illuminate\Support\Facades\Log;
  14. use Illuminate\Http\Request;
  15. use Illuminate\Support\Facades\Validator;
  16. class UserGoodSendController extends Controller{
  17. /**代理发货给下级代理**/
  18. public function user_send_good(Request $request)
  19. {
  20. $code = urldecode($request->code);
  21. // $rule = [
  22. // 'id' => 'required'
  23. // ];
  24. // $message = [
  25. // 'id.required' => '缺少必填项(id)'
  26. // ];
  27. // $va = Validator::make($request->all(), $rule, $message);
  28. // if ($va->fails()) {
  29. // return $this->error(50023, '', $va->errors()->first());
  30. // }
  31. DB::beginTransaction();
  32. try {
  33. $user = Auth::user();
  34. $users = User::find($user->id);
  35. if ($users->level == 1) {
  36. return $this->error(50021, '', '您是销售主管,不能进行发货操作');
  37. }
  38. $re = Select::where('code', $code)->first();
  39. if (!$re){
  40. return $this->error(500214,'','暂未找到相应的信息');
  41. }
  42. // if (Auth::user()->level==2){
  43. // $id=User::where('id',$user->agent_id)->value('id');
  44. // if ($re->user_id != $user->id && $re->user_id !=$id){
  45. // return $this->error(50021, '', '当前货物不是您的货物,不能使用此码进行发货');
  46. // }
  47. // }else{
  48. // if ($re->user_id != $user->id) {
  49. // return $this->error(50021, '', '当前货物不是您的货物,不能使用此码进行发货');
  50. // }
  51. // }
  52. if ($re->is_true == 1) {
  53. return $this->error(40028, '', '当前货物为假货,不能进行退货处理');
  54. }
  55. if ($re->com_binding == 1) {
  56. return $this->error(40028, '', '当前货物为没有与公司绑定,不能进行发货处理');
  57. }
  58. //先判断当前二维码能否进行发货
  59. if ($re->is_full == 1) {
  60. return $this->error(50021, '', '当前二维码中的部分货物已经发货,不能使用此码进行发货');
  61. }
  62. // if ($request->id == $user->id) {
  63. // return $this->error(50021, '', '不能对自己进行发货操作');
  64. // }
  65. $code_level=0;
  66. $code_num=0;
  67. if ($re->is_lowest != 1) {
  68. //中码或者大码进行发货
  69. if ($re->pid == 0 && is_numeric($re->pid)) {//不能使用大码进行发货
  70. return $this->error(50021, '', '请使用中码或者小码发货'.$re->pid);
  71. }
  72. if ($user->level!=3){
  73. return $this->error(50021, '', '请使用小码进行发货');
  74. }
  75. $code_level=1;
  76. $code_num=$re->child_num;
  77. }
  78. //判断当前二维码的是不是最低级
  79. // if ($re->is_lowest == 1) {
  80. // $re->track_status = 2;
  81. // $re->user_id = $request->id;
  82. // if (!$re->save()) {
  83. // throw new \Exception('1');
  84. // }
  85. // $user_s = User::find($request->id);
  86. // $data = [
  87. // 'op_name' => $users->nickname,
  88. // 'op_phone' => $users->mobile,
  89. // 'op_id' => $users->id,
  90. // 'accept_name' => $user_s->nickname,
  91. // 'accept_phone' => $user_s->mobile,
  92. // 'accept_id' => $user_s->id,
  93. // 'type' => 0,
  94. // 'select_id' => $re->id
  95. // ];
  96. // event(new SendGoodLogEvent($data));
  97. // //修改大码和中码状态
  98. // $num = $this->update_full($re->pid);
  99. // if ($num == 300) {
  100. // return $this->error(50021, '', '子码更改信息失败,请重新尝试发货');
  101. // }
  102. // } else {
  103. // //中码或者大码进行发货
  104. // if ($users->level != 3) {//只有代理公司能够进行扫码中码或者大码进行发货
  105. // return $this->error(50021, '', '当前等级只能使用小码进行发货');
  106. // }
  107. // $user_s = User::find($request->id);
  108. // //中码发货
  109. // if ($re->level != 1) {
  110. // $re->user_id = $request->id;
  111. // if (!$re->save()) {
  112. // throw new \Exception('1');
  113. // }
  114. // $num = $this->update_full($re->pid);
  115. // if ($num == 300) {
  116. // throw new \Exception(1);
  117. // }
  118. // $data = [
  119. // 'op_name' => $users->nickname,
  120. // 'op_phone' => $users->mobile,
  121. // 'op_id' => $users->id,
  122. // 'accept_name' => $user_s->nickname,
  123. // 'accept_phone' => $user_s->mobile,
  124. // 'accept_id' => $user_s->id,
  125. // 'type' => 0,
  126. // 'select_id' => $re->id
  127. // ];
  128. // event(new SendGoodLogEvent($data));
  129. // $level_data = Select::where('pid', $re->sort)->get();
  130. // foreach ($level_data as $k => $v) {
  131. // $res = Select::where('code', $v->code)->first();
  132. // $res->user_id = $request->id;
  133. // if (!$res->save()) {
  134. // throw new \Exception(1);
  135. // }
  136. // $data = [
  137. // 'op_name' => $users->nickname,
  138. // 'op_phone' => $users->mobile,
  139. // 'op_id' => $users->id,
  140. // 'accept_name' => $user_s->nickname,
  141. // 'accept_phone' => $user_s->mobile,
  142. // 'accept_id' => $user_s->id,
  143. // 'type' => 0,
  144. // 'select_id' => $v->id
  145. // ];
  146. // event(new SendGoodLogEvent($data));
  147. // }
  148. // } else {
  149. //
  150. // /***大码发货,并记录日志情况*/
  151. // $re->user_id = $request->id;
  152. // if (!$re->save()) {
  153. // throw new \Exception('1');
  154. // }
  155. // $data = [
  156. // 'op_name' => $users->nickname,
  157. // 'op_phone' => $users->mobile,
  158. // 'op_id' => $users->id,
  159. // 'accept_name' => $user_s->nickname,
  160. // 'accept_phone' => $user_s->mobile,
  161. // 'accept_id' => $user_s->id,
  162. // 'type' => 0,
  163. // 'select_id' => $re->id
  164. // ];
  165. // event(new SendGoodLogEvent($data));
  166. //
  167. // /**查询下级**/
  168. // $level_data = Select::where('pid', $re->sort)->get();
  169. // foreach ($level_data as $k => $v) {
  170. // /***修改所有下级的所属者*/
  171. // $res = Select::where('code', $v->code)->first();
  172. // $res->user_id = $request->id;
  173. // if (!$res->save()) {
  174. // throw new \Exception(1);
  175. // }
  176. // $data = [
  177. // 'op_name' => $users->nickname,
  178. // 'op_phone' => $users->mobile,
  179. // 'op_id' => $users->id,
  180. // 'accept_name' => $user_s->nickname,
  181. // 'accept_phone' => $user_s->mobile,
  182. // 'accept_id' => $user_s->id,
  183. // 'type' => 0,
  184. // 'select_id' => $v->id
  185. // ];
  186. // event(new SendGoodLogEvent($data));
  187. //
  188. //
  189. // /**如果现在的等级不是最低级,则执行下面的内容**/
  190. // if ($v->is_lowest != 1) {
  191. // $ress = Select::where('pid', $v->sort)->get();
  192. // foreach ($ress as $ke => $va) {
  193. // $resss = Select::where('code', $va->code)->first();
  194. // $resss->user_id = $request->id;
  195. // if (!$resss->save()) {
  196. // throw new \Exception(1);
  197. // }
  198. // $data = [
  199. // 'op_name' => $users->nickname,
  200. // 'op_phone' => $users->mobile,
  201. // 'op_id' => $users->id,
  202. // 'accept_name' => $user_s->nickname,
  203. // 'accept_phone' => $user_s->mobile,
  204. // 'accept_id' => $user_s->id,
  205. // 'type' => 0,
  206. // 'select_id' => $va->id
  207. // ];
  208. // event(new SendGoodLogEvent($data));
  209. // }
  210. // }
  211. //
  212. //
  213. // }
  214. // }
  215. // }
  216. // DB::commit();
  217. // return $this->success([]);
  218. return $this->success(['code'=>$code,'good'=>$re->good_select_id,'code_level'=>$code_level,'code_num'=>$code_num]);
  219. } catch (\Exception $exception) {
  220. DB::rollBack();
  221. return $this->error(50024, '', '发货失败,请重新尝试' . $exception);
  222. }
  223. }
  224. public function AllSendGood(Request $request){
  225. Log::error('z');
  226. $input = $request->all();
  227. $u_id=Auth::user()->id;
  228. $users=User::find($u_id);
  229. // $name=$this->JudgePhone($users->mobile);
  230. $user = User::where('id', $request->id)->first();
  231. // Log::error($input['code']);
  232. // $code = json_decode($input['code']);
  233. $code=$input['code'];
  234. if ($users->level==3){
  235. $crown_idA=$users->id;
  236. }elseif($users->level==2){
  237. $crown_idA=$users->agent_id;
  238. }else{
  239. $b_user=User::find($users->agent_id);
  240. $crown_idA=$b_user->agent_id;
  241. }
  242. Log::error(111);
  243. foreach ($code as $k=>$v){
  244. foreach ($v as $ke=>$va){
  245. $code[$k][$ke]= urldecode($va);
  246. }
  247. }
  248. if (count($code)>20){
  249. return $this->error(500214,'','最多发送20个');
  250. }
  251. DB::beginTransaction();
  252. try {
  253. foreach ($code as $ks=>$va){
  254. Log::error($va);
  255. $good=GoodSelect::where('id',$ks)->select('good_name')->first();
  256. foreach ($va as $k=>$v){
  257. $re = Select::where('code', $v)->first();
  258. if ($re){
  259. $before_user=User::find($re->user_id);
  260. $before_id=$before_user->id;
  261. $scan_type=0;
  262. if ($before_user->agent_id){
  263. if ($before_user->level==3){
  264. $crown_id=$before_user->id;
  265. }elseif($before_user->level==2){
  266. $crown_id=$before_user->agent_id;
  267. }else{
  268. $b_user=User::find($before_user->agent_id);
  269. $crown_id=$b_user->agent_id;
  270. }
  271. if ($crown_id==$crown_idA && $before_user->id==$users->id){
  272. $scan_type=0;
  273. }elseif ($crown_id==$crown_idA && $before_user->id!=$users->id){
  274. $scan_type=1;
  275. }else{
  276. $scan_type=2;
  277. }
  278. }
  279. // if ($before_user->level==3){
  280. // $crown_id=$before_user->id;
  281. // }elseif($before_user->level==2){
  282. // $crown_id=$before_user->agent_id;
  283. // }else{
  284. // $b_user=User::find($before_user->agent_id);
  285. // $crown_id=$b_user->agent_id;
  286. // }
  287. // if ($crown_id==$crown_idA && $before_user->id==$users->id){
  288. // $scan_type=0;
  289. // }elseif ($crown_id==$crown_idA && $before_user->id!=$users->id){
  290. // $scan_type=1;
  291. // }else{
  292. // $scan_type=2;
  293. // }
  294. $scan_info=json_encode([]);
  295. // 判断当前二维码的是不是最低级
  296. if ($re->is_lowest == 1) {
  297. $re->track_status = 2;
  298. $re->user_id = $request->id;
  299. if (!$re->save()) {
  300. throw new \Exception('1');
  301. }
  302. $user_s = User::find($request->id);
  303. $data = [
  304. 'op_name' => $users->nickname,
  305. 'op_phone' => $users->mobile,
  306. 'op_id' => $users->id,
  307. 'accept_name' => $user_s->nickname,
  308. 'accept_phone' => $user_s->mobile,
  309. 'accept_id' => $user_s->id,
  310. 'type' => 0,
  311. 'scan_type' =>$scan_type,
  312. 'before_id' => $before_id,
  313. 'select_id' => $re->id,
  314. 'scan_info' => $scan_info,
  315. ];
  316. event(new SendGoodLogEvent($data));
  317. //修改大码和中码状态
  318. $num = $this->update_full($re->pid);
  319. if ($num == 300) {
  320. return $this->error(50021, '', '子码更改信息失败,请重新尝试发货');
  321. }
  322. }
  323. else {
  324. //中码或者大码进行发货
  325. if ($re->pid == 0 && is_numeric($re->pid)) {//不能使用大码进行发货
  326. return $this->error(50021, '', '请使用中码或者小码发货');
  327. }
  328. if ($users->level!=3){
  329. return $this->error(50021, '', '请使用小码进行发货');
  330. }
  331. $user_s = User::find($request->id);
  332. //中码发货
  333. if ($re->level != 1) {
  334. $re->user_id = $request->id;
  335. if (!$re->save()) {
  336. throw new \Exception('1');
  337. }
  338. $num = $this->update_full($re->pid);
  339. if ($num == 300) {
  340. throw new \Exception(1);
  341. }
  342. $data = [
  343. 'op_name' => $users->nickname,
  344. 'op_phone' => $users->mobile,
  345. 'op_id' => $users->id,
  346. 'accept_name' => $user_s->nickname,
  347. 'accept_phone' => $user_s->mobile,
  348. 'accept_id' => $user_s->id,
  349. 'type' => 0,
  350. 'select_id' => $re->id,
  351. 'scan_type' =>$scan_type,
  352. 'before_id' => $before_id,
  353. 'scan_info' => $scan_info
  354. ];
  355. event(new SendGoodLogEvent($data));
  356. $level_data = Select::where('pid', $re->sort)->get();
  357. foreach ($level_data as $k => $v) {
  358. $res = Select::where('code', $v->code)->first();
  359. $res->user_id = $request->id;
  360. if (!$res->save()) {
  361. throw new \Exception(1);
  362. }
  363. $data = [
  364. 'op_name' => $users->nickname,
  365. 'op_phone' => $users->mobile,
  366. 'op_id' => $users->id,
  367. 'accept_name' => $user_s->nickname,
  368. 'accept_phone' => $user_s->mobile,
  369. 'accept_id' => $user_s->id,
  370. 'type' => 0,
  371. 'select_id' => $v->id,
  372. 'scan_type' =>$scan_type,
  373. 'before_id' => $before_id,
  374. 'scan_info' => $scan_info
  375. ];
  376. event(new SendGoodLogEvent($data));
  377. }
  378. } else {
  379. /***大码发货,并记录日志情况*/
  380. $re->user_id = $request->id;
  381. if (!$re->save()) {
  382. throw new \Exception('1');
  383. }
  384. $data = [
  385. 'op_name' => $users->nickname,
  386. 'op_phone' => $users->mobile,
  387. 'op_id' => $users->id,
  388. 'accept_name' => $user_s->nickname,
  389. 'accept_phone' => $user_s->mobile,
  390. 'accept_id' => $user_s->id,
  391. 'type' => 0,
  392. 'select_id' => $re->id,
  393. 'scan_type' =>$scan_type,
  394. 'before_id' => $before_id,
  395. 'scan_info' => $scan_info
  396. ];
  397. event(new SendGoodLogEvent($data));
  398. /**查询下级**/
  399. $level_data = Select::where('pid', $re->sort)->get();
  400. foreach ($level_data as $kas => $vas) {
  401. /***修改所有下级的所属者*/
  402. $res = Select::where('code', $vas->code)->first();
  403. $res->user_id = $request->id;
  404. if (!$res->save()) {
  405. throw new \Exception(1);
  406. }
  407. $data = [
  408. 'op_name' => $users->nickname,
  409. 'op_phone' => $users->mobile,
  410. 'op_id' => $users->id,
  411. 'accept_name' => $user_s->nickname,
  412. 'accept_phone' => $user_s->mobile,
  413. 'accept_id' => $user_s->id,
  414. 'type' => 0,
  415. 'select_id' => $vas->id,
  416. 'scan_type' =>$scan_type,
  417. 'before_id' => $before_id,
  418. 'scan_info' => $scan_info
  419. ];
  420. event(new SendGoodLogEvent($data));
  421. /**如果现在的等级不是最低级,则执行下面的内容**/
  422. if ($v->is_lowest != 1) {
  423. $ress = Select::where('pid', $v->sort)->get();
  424. foreach ($ress as $kes => $vaes) {
  425. $resss = Select::where('code', $vaes->code)->first();
  426. $resss->user_id = $request->id;
  427. if (!$resss->save()) {
  428. throw new \Exception(1);
  429. }
  430. $data = [
  431. 'op_name' => $users->nickname,
  432. 'op_phone' => $users->mobile,
  433. 'op_id' => $users->id,
  434. 'accept_name' => $user_s->nickname,
  435. 'accept_phone' => $user_s->mobile,
  436. 'accept_id' => $user_s->id,
  437. 'type' => 0,
  438. 'select_id' => $vaes->id,
  439. 'scan_type' =>$scan_type,
  440. 'before_id' => $before_id,
  441. 'scan_info' => $scan_info
  442. ];
  443. event(new SendGoodLogEvent($data));
  444. }
  445. }
  446. }
  447. }
  448. }
  449. }else {
  450. Log::error($k+1);
  451. if ($ks==1){
  452. $m='精装版';
  453. }elseif ($ks==2){
  454. $m='简约版';
  455. }elseif ($ks==3){
  456. $m='高腰版';
  457. }elseif ($ks==4){
  458. $m='纯棉版';
  459. }elseif ($ks==6){
  460. $m='青春版';
  461. }else{
  462. $m='精装(赠)';
  463. }
  464. return $this->error(40023, '', '没有查到二维码对应的信息,请删除'.$m.'中第'.($k+1).'个数据重新提交。并将对应的货物单独取出');
  465. }
  466. }
  467. }
  468. DB::commit();
  469. return $this->success([]);
  470. }catch (\Exception $exception){
  471. Log::error($exception->getMessage());
  472. return $this->error('2222','','失败啊啊啊');
  473. }
  474. }
  475. /**查询下级代理**/
  476. public function get_lower_user(Request $request)
  477. {
  478. $id = Auth::user()->id;
  479. $ids = [$id];
  480. $data = User::where('agent_id', Auth::user()->id)->whereNull('deleted_at')->pluck('id')->toArray();
  481. $user_id = array_merge($ids, $data);
  482. $search_name=$request->input('search_name')??null;
  483. if ($search_name) {
  484. $where = function ($q) use ($search_name) {
  485. $q->where('nickname', 'like', '%' . $search_name . '%')->orwhere('mobile', 'like', '%' . $search_name . '%');
  486. };
  487. $user = User::where(function ($q)use($id,$user_id){
  488. $q->whereIn('agent_id', $user_id)
  489. ->orwhere('id','like','%'.$id.'%');
  490. })->where($where)->whereNull('deleted_at')->select('mobile as phone', 'nickname', 'realname', 'id', 'headimgurl as avatar','level');
  491. $count = $user->get()->count();
  492. $re = $user->take(20)->skip(($request->page - 1) * 20)->get();
  493. return $this->success_list($re, '', $count);
  494. } else {
  495. $re = User::whereIn('agent_id', $user_id)->orwhere('id',$id)->whereNull('deleted_at')->select('mobile as phone', 'nickname', 'realname', 'id', 'headimgurl as avatar','level');
  496. $count = $re->get()->count();
  497. $re = $re->take(20)->skip(($request->page - 1) * 20)->get();
  498. return $this->success_list($re, '', $count);
  499. }
  500. }
  501. /**代理退货**/
  502. public function user_return_good(Request $request)
  503. {
  504. $user = Auth::user();
  505. $code = urldecode($request->code);
  506. $re = Select::where('code', $code)->first();
  507. $op_user = User::find($re->user_id);
  508. if ($re) {
  509. if ($re->is_true == 1) {
  510. return $this->error(40028, '', '当前货物为假货,不能进行退货处理');
  511. }
  512. $res = $this->check_user_level($user->id, $re->user_id);
  513. if ($res['code'] == 200) {
  514. if ($re->is_lowest == 1) {
  515. $re->user_id = $user->id;
  516. $re->save();
  517. $this->update_full($re->pid);
  518. $data = [
  519. 'op_name' => $op_user->nickname,
  520. 'op_phone' => $op_user->mobile,
  521. 'op_id' => $op_user->id,
  522. 'accept_name' => $user->nickname,
  523. 'accept_phone' => $user->mobile,
  524. 'accept_id' => $user->id,
  525. 'select_id' => $re->id
  526. ];
  527. event(new ReturnGoodLog($data));
  528. } else {
  529. if ($re->level == 1) {
  530. $num = $this->is_full($re->code);
  531. if ($num == 300) {
  532. return $this->error(50024, '', '当前防伪码不能进行退货处理,请使用小码进行操作');
  533. }
  534. $re->user_id = $user->id;
  535. $re->save();
  536. $data = [
  537. 'op_name' => $op_user->nickname,
  538. 'op_phone' => $op_user->mobile,
  539. 'op_id' => $op_user->id,
  540. 'accept_name' => $user->nickname,
  541. 'accept_phone' => $user->mobile,
  542. 'accept_id' => $user->id,
  543. 'select_id' => $re->id
  544. ];
  545. event(new ReturnGoodLog($data));
  546. $lower_code = Select::where('pid', $re->sort)->get();
  547. foreach ($lower_code as $k => $v) {
  548. $ress = Select::where('code', $v->code)->first();
  549. $ress->user_id = $user->id;
  550. $ress->save();
  551. $data = [
  552. 'op_name' => $op_user->nickname,
  553. 'op_phone' => $op_user->mobile,
  554. 'op_id' => $op_user->id,
  555. 'accept_name' => $user->nickname,
  556. 'accept_phone' => $user->mobile,
  557. 'accept_id' => $user->id,
  558. 'select_id' => $v->id
  559. ];
  560. event(new ReturnGoodLog($data));
  561. if ($ress->is_lowest != 1) {
  562. $lower_codes = Select::where('pid', $v->sort)->get();
  563. foreach ($lower_codes as $ke => $va) {
  564. $resss = Select::where('code', $va->code)->first();
  565. $resss->user_id = $user->id;
  566. $resss->save();
  567. $data = [
  568. 'op_name' => $op_user->nickname,
  569. 'op_phone' => $op_user->mobile,
  570. 'op_id' => $op_user->id,
  571. 'accept_name' => $user->nickname,
  572. 'accept_phone' => $user->mobile,
  573. 'accept_id' => $user->id,
  574. 'select_id' => $va->id
  575. ];
  576. event(new ReturnGoodLog($data));
  577. }
  578. }
  579. }
  580. } else {
  581. $num = $this->is_full($re->code);
  582. if ($num == 300) {
  583. return $this->error(50024, '', '当前防伪码不能进行退货处理,请使用小码进行操作');
  584. }
  585. $re->user_id = $user->id;
  586. $re->save();
  587. $data = [
  588. 'op_name' => $op_user->nickname,
  589. 'op_phone' => $op_user->mobile,
  590. 'op_id' => $op_user->id,
  591. 'accept_name' => $user->nickname,
  592. 'accept_phone' => $user->mobile,
  593. 'accept_id' => $user->id,
  594. 'select_id' => $re->id
  595. ];
  596. event(new ReturnGoodLog($data));
  597. $this->update_full($re->pid);
  598. $lower_code = Select::where('pid', $re->sort)->get();
  599. foreach ($lower_code as $k => $v) {
  600. $ress = Select::where('code', $v->code)->first();
  601. $ress->user_id = $user->id;
  602. $ress->save();
  603. $data = [
  604. 'op_name' => $op_user->nickname,
  605. 'op_phone' => $op_user->mobile,
  606. 'op_id' => $op_user->id,
  607. 'accept_name' => $user->nickname,
  608. 'accept_phone' => $user->mobile,
  609. 'accept_id' => $user->id,
  610. 'select_id' => $v->id
  611. ];
  612. event(new ReturnGoodLog($data));
  613. }
  614. }
  615. }
  616. return $this->success([]);
  617. } else {
  618. return $this->error(40028, '', $res['message']);
  619. }
  620. } else {
  621. return $this->error(40029, '', '暂未查询到相应的信息');
  622. }
  623. }
  624. /**小码发货时更改中码和大码**/
  625. public function update_full($pid)
  626. {
  627. DB::beginTransaction();
  628. try {
  629. $re = Select::where('sort', '=', $pid)->first();
  630. $re->is_full = 1;
  631. if (!$re->save()) {
  632. throw new \Exception('1');
  633. }
  634. if ($re->level != 1) {
  635. $this->update_full($re->pid);
  636. }
  637. DB::commit();
  638. return 200;
  639. } catch (\Exception $exception) {
  640. DB::rollBack();
  641. Log::error($exception);
  642. return 300;
  643. }
  644. }
  645. /**检查用户是不是自己的下级**/
  646. public function check_user_level($id, $user_id)
  647. {
  648. if ($id == $user_id) {
  649. return ['code' => 50026, 'message' => '你不能对自己的货物进行退货操作'];
  650. }
  651. $user = User::find($user_id);
  652. if ($user->level == 3) {
  653. return ['code' => 50026, 'message' => '你不能对代理公司进行退货处理'];
  654. }
  655. if ($user->agent_id != $id) {
  656. $agent_s = User::find($user->agent_id);
  657. if ($agent_s->agnet_id != $id) {
  658. return ['code' => 50026, 'message' => '当前代理不是你的下级,不能进行退货操作'];
  659. }
  660. }
  661. return ['code' => 200];
  662. }
  663. /**检查是够已经发货**/
  664. public function is_full($code)
  665. {
  666. $re = Select::where('code', $code)->first();
  667. if ($re->is_full == 1) {
  668. return 300;
  669. }
  670. return 200;
  671. }
  672. /**展示发货商品所属信息**/
  673. public function select_send_user(Request $request){
  674. $user=Auth::user();
  675. $input=$request->all();
  676. $re=Select::where('code',$input['code'])->with(['select_user','select_good'])->first();
  677. if (empty($re)){
  678. Log::error(1);
  679. return $this->error(52119,'','暂无信息查询');
  680. }
  681. if (!$re->select_user){
  682. Log::error(2);
  683. return $this->error(52120,'','暂无代理信息');
  684. }
  685. if (!$re->select_good){
  686. Log::error(3);
  687. return $this->error(52121,'','暂无商品信息');
  688. }
  689. if ($re->user_id!=$user->id){
  690. Log::error(4);
  691. return $this->error(50021,'','当前货物不是您的货物,不能使用此码进行发货');
  692. }
  693. $time=SendGoodLog::where('select_id',$re->id)->where('accept_id',$re->user_id)->orderByDesc('created_at')->first();
  694. if ($time){
  695. $times=$time->created_at->toDateString();
  696. }else{
  697. $times=Carbon::now()->toDateString();
  698. }
  699. $data=[
  700. 'style'=>$re->select_good->good_name,
  701. 'nickname'=>$re->select_user->nickname,
  702. 'avatar'=>$re->select_user->headimgurl,
  703. 'level'=>$this->judge_level($re->select_user->level),
  704. 'phone'=>$re->select_user->mobile,
  705. 'time'=>$times
  706. ];
  707. return $this->success($data);
  708. }
  709. /**展示退货商品所属信息**/
  710. public function select_return_user(Request $request){
  711. $re=Select::where('code',$request->code)->with(['select_user','select_good'])->first();
  712. if (empty($re)){
  713. return $this->error(52121,'','暂无信息查询');
  714. }
  715. if (!$re->select_user){
  716. return $this->error(52121,'','暂无代理信息');
  717. }
  718. if (!$re->select_good){
  719. return $this->error(52121,'','暂无商品信息');
  720. }
  721. $res=$this->check_user_level(Auth::user()->id,$re->user_id);
  722. if ($res['code']!=200){
  723. return $this->error($res['code'],'',$res['message']);
  724. }
  725. $time=SendGoodLog::where('select_id',$re->id)->where('accept_id',$re->user_id)->orderByDesc('created_at')->first();
  726. $data=[
  727. 'style'=>$re->select_good->good_name,
  728. 'nickname'=>$re->select_user->nickname,
  729. 'level'=>$this->judge_level($re->select_user->level),
  730. 'phone'=>$re->select_user->mobile,
  731. 'time'=>$time->created_at->toDateString()
  732. ];
  733. return $this->success($data);
  734. }
  735. /**判断等级**/
  736. public function judge_level($status){
  737. switch ($status){
  738. case 1:
  739. $level='销售主管';
  740. break;
  741. case 2:
  742. $level='销售经理';
  743. break;
  744. case 3:
  745. $level='代理公司';
  746. break;
  747. default:
  748. $level='销售主管';
  749. break;
  750. }
  751. return $level;
  752. }
  753. public function sell(Request $request){
  754. try{
  755. $id=Auth::user()->id;
  756. $code=urldecode($request->code);
  757. DB::beginTransaction();
  758. $re=Select::where('code',$code)->first();
  759. if ($re){
  760. if ($re->is_true==1){
  761. return $this->error(50024,'','当前货物是假货不能进行零售!');
  762. }
  763. if ($re->user_id!=$id){
  764. return $this->error(50024,'','当前货物绑定的代理信息不是你!');
  765. }
  766. if ($re->is_lowest!=1){
  767. return $this->error(50024,'','零售只能使用小码进行零售!');
  768. }
  769. if ($re->is_sell!=0){
  770. return $this->error(50024,'','该商品已经零售!');
  771. }
  772. $re->is_sell=1;
  773. if (!$re->save()){
  774. throw new \Exception('1');
  775. }
  776. $res=Select::where('sort',$re->pid)->first();
  777. $res->is_full=1;
  778. if (!$res->save()){
  779. throw new \Exception('1');
  780. }
  781. if ($res->level!=1){
  782. $ress=Select::where('sort',$re->pid)->first();
  783. $ress->is_full=1;
  784. if (!$ress->save()){
  785. throw new \Exception('1');
  786. }
  787. }
  788. $sell=new Sell();
  789. $sell->select_id=$re->id;
  790. $sell->select_good_id=$re->good_select_id;
  791. $sell->user_id=$re->user_id;
  792. if (!$sell->save()){
  793. throw new \Exception('1');
  794. }
  795. }
  796. DB::commit();
  797. return $this->success([]);
  798. }catch (\Exception $exception){
  799. DB::rollBack();
  800. Log::error('零售失败,原因是'.$exception);
  801. return $this->error(50021,'','操作失败,请重试!');
  802. }
  803. }
  804. public function get_arr(Request $request){
  805. $app=app('wechat.official_account');
  806. $url='http://api.app.jiuweiyun.cn/api/gzh';
  807. $app->jssdk->setUrl($url);
  808. $arr=$app->jssdk->buildConfig(array('scanQRCode'), false);
  809. return $this->success(json_decode($arr));
  810. }
  811. }