GoodController.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Events\SendGoodLogEvent;
  4. use App\Models\Express;
  5. use App\Models\GoodSelect;
  6. use App\Models\OrderTest;
  7. use App\Models\Select;
  8. use App\Models\User;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Auth;
  11. use Illuminate\Support\Facades\DB;
  12. use Illuminate\Support\Facades\Log;
  13. class GoodController extends Controller
  14. {
  15. /**公司扫码快递单*/
  16. public function get_express(Request $request){
  17. $datas=Express::where('express_number',$request->express_number)->first();
  18. $data['belong_user_nickname']='';
  19. $data['belong_user_mobile']='';
  20. $data['address_name']='';
  21. if ($datas){
  22. $order=OrderTest::with(['get_good_user','get_address_user'])->find($data->order_id);
  23. if (!$order->get_good_user->isEmpty()){
  24. $data['belong_user_nickname']=$order->get_good_user->nickname;
  25. $data['belong_user_mobile']=$order->get_good_user->mobile;
  26. }
  27. if (!$order->get_address_user->isEmpty()){
  28. $data['address_name']=$order->get_address_user->username;
  29. }
  30. }else{
  31. $datas=Express::where('express_number',"'".$request->express_number)->first();
  32. $data['belong_user_nickname']='';
  33. $data['belong_user_mobile']='';
  34. $data['address_name']='';
  35. if ($datas){
  36. $order=OrderTest::with(['get_good_user','get_address_user'])->find($data->order_id);
  37. if (!$order->get_good_user->isEmpty()){
  38. $data['belong_user_nickname']=$order->get_good_user->nickname;
  39. $data['belong_user_mobile']=$order->get_good_user->mobile;
  40. }
  41. if (!$order->get_address_user->isEmpty()){
  42. $data['address_name']=$order->get_address_user->username;
  43. }
  44. }
  45. }
  46. return $this->success($data);
  47. }
  48. /*四种商品的选择**/
  49. public function get_good(){
  50. $re=GoodSelect::select('id','good_name')->get();
  51. return $this->success($re);
  52. }
  53. /****/
  54. /**公司发货**/
  55. public function send_goods(Request $request){
  56. $input=$request->all();
  57. $user=User::where('id',$request->id)->first();
  58. $re=Select::where('code',$input['code'])->first();
  59. if ($re){
  60. DB::beginTransaction();
  61. try{
  62. //小码发货
  63. if ($re->is_lowest==1){
  64. $re->user_id=$user->id;
  65. $re->com_binding=0;
  66. $re->track_status=2;
  67. $re->com_binding=0;
  68. $re->good_select_id=$request->good_select_id;
  69. $num=$this->update_full($re->pid);
  70. if ($num==300){
  71. return $this->error(50021,'','修改状态出错');
  72. }
  73. $data=[
  74. 'op_name'=>'公司',
  75. 'op_phone'=>'',
  76. 'op_id'=>'',
  77. 'accept_name'=>$user->nickname,
  78. 'accept_phone'=>$user->mobile,
  79. 'accept_id'=>$user->id,
  80. 'type'=>1,
  81. 'select_id'=>$re->id
  82. ];
  83. event(new SendGoodLogEvent($data));
  84. }else{//中码或者大码发货
  85. $num=$this->is_full($input['code']);
  86. if ($num==300){
  87. return $this->error(50026,'','小码已经部分发货,不能扫描中码或者大码进行发货');
  88. }
  89. $this->send_child_good($re->sort,$user->id,$request->good_select_id);
  90. $re->user_id=$user->id;
  91. $re->com_binding=0;
  92. $re->track_status=2;
  93. $re->com_binding=0;
  94. $re->good_select_id=$request->good_select_id;
  95. }
  96. $re->save();
  97. DB::commit();
  98. return $this->success([]);
  99. }catch (\Exception $exception){
  100. DB::rollBack();
  101. return $this->error(40023,'','发货失败,请重新尝试');
  102. }
  103. }else{
  104. return $this->error(40023,'','没有查到二维码对应的信息,请重试');
  105. }
  106. }
  107. /**子码同时发货**/
  108. public function send_child_good($id,$user_id,$good_select_id){
  109. DB::beginTransaction();
  110. try{
  111. //查找下一级
  112. $data=Select::where('pid',$id)->get();
  113. //当前货物信息
  114. $re=Select::where('sort','=',$id)->first();
  115. //中码发货时
  116. if ($re->level!=1){
  117. //修改中码所属大码的状态
  118. $num=$this->update_full($re->pid);
  119. if ($num==300){
  120. throw new \Exception(1);
  121. }
  122. }
  123. foreach ($data as $k=>$v){
  124. if ($v->is_lowest!=1){
  125. $num=$this->send_child_good($v->id,$user_id,$good_select_id);
  126. if ($num==300){
  127. throw new \Exception(1);
  128. }
  129. }
  130. $se=Select::find($v->id);
  131. $se->track_status=2;
  132. $se->com_binding=0;
  133. $se->user_id=$user_id;
  134. $se->good_select_id=$good_select_id;
  135. if (!$se->save()){
  136. throw new \Exception('1');
  137. }
  138. $user_s=User::find($user_id);
  139. $data=[
  140. 'op_name'=>'公司',
  141. 'op_phone'=>'',
  142. 'op_id'=>'',
  143. 'accept_name'=>$user_s->nickname,
  144. 'accept_phone'=>$user_s->mobile,
  145. 'accept_id'=>$user_s->id,
  146. 'type'=>1,
  147. 'select_id'=>$v->id
  148. ];
  149. event(new SendGoodLogEvent($data));
  150. }
  151. DB::commit();
  152. return 200;
  153. }catch (\Exception $exception){
  154. DB::rollBack();
  155. return 300;
  156. }
  157. }
  158. /**代理发货**/
  159. public function user_send_good(Request $request){
  160. DB::beginTransaction();
  161. try{
  162. $user=Auth::user();
  163. $users=User::find($user->id);
  164. $re=Select::where('code',$request->code)->first();
  165. if ($re->user_id!=$user->id){
  166. return $this->error(50021,'','当前货物不是您的货物,不能使用此码进行发货');
  167. }
  168. //先判断当前二维码能否进行发货
  169. if ($re->is_full==1){
  170. return $this->error(50021,'','当前二维码中的部分货物已经发货,不能使用此码进行发货');
  171. }
  172. if ($request->id==$user->id){
  173. return $this->error(50021,'','不能对自己进行发货操作');
  174. }
  175. //判断当前二维码的是不是最低级
  176. if ($re->is_lowest==1){
  177. $re->track_status=2;
  178. $re->user_id=$request->id;
  179. if (!$re->save()){
  180. throw new \Exception('1');
  181. }
  182. $user_s=User::find($request->id);
  183. $data=[
  184. 'op_name'=>$users->nickname,
  185. 'op_phone'=>$users->mobile,
  186. 'op_id'=>$users->id,
  187. 'accept_name'=>$user_s->nickname,
  188. 'accept_phone'=>$user_s->mobile,
  189. 'accept_id'=>$user_s->id,
  190. 'type'=>0,
  191. 'select_id'=>$re->id
  192. ];
  193. event(new SendGoodLogEvent($data));
  194. $num=$this->update_full($re->pid);
  195. if ($num==300){
  196. return $this->error(50021,'','子码更改信息失败,请重新尝试发货');
  197. }
  198. }else{
  199. //中码或者大码进行发货
  200. if ($users->level!=3){//只有代理公司能够进行扫码中码或者大码进行发货
  201. return $this->error(50021,'','当前等级只能使用小码进行发货');
  202. }
  203. //子码跟着更改代理信息
  204. $num=$this->user_send_goods($re->sort,$request->id,$user->id);
  205. if ($num==300){
  206. throw new \Exception('1');
  207. }
  208. }
  209. DB::commit();
  210. return $this->success([]);
  211. }catch (\Exception $exception){
  212. DB::rollBack();
  213. return $this->error(50024,'','发货失败,请重新尝试'.$exception);
  214. }
  215. }
  216. /**代理发货子码跟着发货**/
  217. public function user_send_goods($pid,$user_id,$id,$type=0){
  218. DB::beginTransaction();
  219. try{
  220. //查找下一级
  221. $data=Select::where('pid',$pid)->get();
  222. //当前货物信息
  223. $re=Select::where('sort','=',$pid)->first();
  224. //中码发货时
  225. if ($type==0){
  226. if ($re->level!=1){
  227. //修改中码所属大码的状态
  228. $num=$this->update_full($re->pid);
  229. if ($num==300){
  230. throw new \Exception(1);
  231. }
  232. }
  233. }
  234. foreach ($data as $k=>$v){
  235. if ($v->is_lowest!=1){
  236. $num=$this->user_send_goods($v->sort,$user_id,$id);
  237. if ($num==300){
  238. throw new \Exception(1);
  239. }
  240. }
  241. $se=Select::find($v->id);
  242. $se->track_status=2;
  243. $se->user_id=$user_id;
  244. if (!$se->save()){
  245. Log::error('走了这里(所属者的改变)');
  246. throw new \Exception('1');
  247. }
  248. $users=User::find($id);
  249. $user_s=User::find($user_id);
  250. $data=[
  251. 'op_name'=>$users->nickname,
  252. 'op_phone'=>$users->mobile,
  253. 'op_id'=>$users->id,
  254. 'accept_name'=>$user_s->nickname,
  255. 'accept_phone'=>$user_s->mobile,
  256. 'accept_id'=>$user_s->id,
  257. 'type'=>0,
  258. 'select_id'=>$v->id
  259. ];
  260. event(new SendGoodLogEvent($data));
  261. }
  262. DB::commit();
  263. return 200;
  264. }catch (\Exception $exception){
  265. DB::rollBack();
  266. Log::error($exception);
  267. return 300;
  268. }
  269. }
  270. /**小码发货时更改中码和大码**/
  271. public function update_full($pid){
  272. DB::beginTransaction();
  273. try{
  274. $re=Select::where('sort','=',$pid)->first();
  275. $re->is_full=1;
  276. if (!$re->save()){
  277. throw new \Exception('1');
  278. }
  279. if ($re->level!=1){
  280. $this->update_full($re->pid);
  281. }
  282. DB::commit();
  283. return 200;
  284. }catch (\Exception $exception){
  285. DB::rollBack();
  286. Log::error($exception);
  287. return 300;
  288. }
  289. }
  290. /**查询**/
  291. public function get_lower_user(Request $request){
  292. return $this->success_list([]);
  293. }
  294. /**检查是够已经发货**/
  295. public function is_full($code){
  296. $re=Select::where('code',$code)->first();
  297. if ($re->is_full==1){
  298. return 300;
  299. }
  300. return 200;
  301. }
  302. /**代理退货**/
  303. public function user_return_good(Request $request){
  304. $user=Auth::user();
  305. $re=Select::where('code',$request->code)->first();
  306. if ($re){
  307. $res=$this->check_user_level($user->id,$re->user_id);
  308. if ($res['code']==200){
  309. return $this->success([]);
  310. }
  311. }
  312. }
  313. /**检查用户**/
  314. public function check_user_level($id,$user_id){
  315. if ($id==$user_id){
  316. return ['code'=>50026,'message'=>'你不能对自己的货物进行退货操作'];
  317. }
  318. return ['code'=>200];
  319. }
  320. public function new_send_good(Request $request){
  321. if ($request->id){
  322. return $this->error(50026,'','请选择代理进行发货');
  323. }
  324. DB::beginTransaction();
  325. try{
  326. }catch (\Exception $exception){
  327. }
  328. }
  329. }