Order.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. namespace app\Home\controller;
  3. use think\Db;
  4. class Order extends Base
  5. {
  6. public function __construct()
  7. {
  8. parent::__construct();
  9. }
  10. /**
  11. * @param status 0/1/2
  12. * @param page
  13. * @param size
  14. */
  15. public function list(){
  16. $page = isset($this->post['page'])&&$this->post['page']!="" ? intval($this->post['page']):1;
  17. $size = isset($this->post['size'])&&$this->post['size']!="" ? intval($this->post['size']):10;
  18. $status = isset($this->post['status'])&&$this->post['status']!="" ? intval($this->post['status']):0;
  19. $where=["is_del"=>0,"accountid"=>$this->userinfo['id']];
  20. if($status!=0 && in_array($status,[1,2])){
  21. $where['status']=$status;
  22. }
  23. $count =Db::name("order_info")->where($where)->count();
  24. $total = ceil($count/$size);
  25. $page = $page>$total?$total:$page;
  26. $list = Db::name("order_info")->where($where)->page($page,$size)->field("id,order_sn,order_num,order_time,delivery_time,post_code,post_name,status")
  27. ->select();
  28. return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
  29. }
  30. /**
  31. * @param id 订单id
  32. */
  33. public function info(){
  34. $id = isset($this->post['id'])&&$this->post['id']!="" ? intval($this->post['id']):"";
  35. if($id==""){
  36. return error_show(1004,"参数id 不能为空");
  37. }
  38. $order = Db::name("order_info")->where(["is_del"=>0,"accountid"=>$this->userinfo['id'],"id"=>$id])->field("id,
  39. order_sn,order_num,order_time,delivery_time,status, post_code,post_name,provice_name,city_name,area_name,addr,contector,contector_mobile,nickname")->find();
  40. if(empty($order)){
  41. return error_show(1005,"未找到订单数据");
  42. }
  43. return app_show(0,"获取成功",$order);
  44. }
  45. /**
  46. * @param num
  47. * @param addrid
  48. */
  49. public function ist(){
  50. $name = isset($this->post['name'])&&$this->post['name']!==""? intval($this->post['name']): "";
  51. if($name==""){
  52. return error_show(1004,'参数name');
  53. }
  54. }
  55. public function add(){
  56. $num = isset($this->post['num'])&&$this->post['num']!="" ? intval($this->post['num']):"";
  57. if($num==""){
  58. return error_show(1004,"参数num 不能为空或0");
  59. }
  60. $id = isset($this->post['unit_id'])&&$this->post['unit_id']!=""? intval($this->post['id']):"";
  61. if($id==""){
  62. return error_show(1004,"参数id不能为空");
  63. }
  64. $addrid = isset($this->post['addrid'])&&$this->post['addrid']!="" ? intval($this->post['addrid']):"";
  65. if($addrid==""){
  66. return error_show(1004,"参数addrid 不能为空");
  67. }
  68. $stock = Db::name("account_stock")->where(['is_del'=>0,"accountid"=>$this->userinfo['id']])->find();
  69. if(empty($stock) || $stock['stock_balance']<$num){
  70. return error_show(1004,"库存数量不足");
  71. }
  72. $addr =Db::name("rela_addr")->alias('a')->join("addr b","a.addrid=b.id","left")->where(["a.accountid"=>$this->userinfo['id'],
  73. "b.is_del"=>0,"b.id"=>$addrid])->field("b.id,b.provice,b.provice_name,b.city,b.city_name,b.area,b.area_name,b.addr,b.contector,b.mobile,b.addtime")->find();
  74. if(empty($addr)){
  75. return error_show(1004,"地址数据未找到");
  76. }
  77. Db::startTrans();
  78. try{
  79. $ordersn =makeNo("FC");
  80. $data=[
  81. "order_sn"=>$ordersn,
  82. "accountid"=>$this->userinfo['id'],
  83. "order_num"=>$num,
  84. "is_del"=>0,
  85. "status"=>1,
  86. "addtime"=>date("Y-m-d H:i:s"),
  87. "updatetime"=>date("Y-m-d H:i:s"),
  88. "order_time"=>date("Y-m-d H:i:s"),
  89. ];
  90. $ordercreate= Db::name("order")->insert($data,false,true);
  91. if($ordercreate>0){
  92. $post =[
  93. "order_sn"=>$ordersn,
  94. "addrid"=>$addrid,
  95. "order_num"=>$num,
  96. 'post_code'=>"",
  97. 'post_name'=>"",
  98. "status"=>1,
  99. "is_del"=>0,
  100. "addtime"=>date("Y-m-d H:i:s"),
  101. "updatetime"=>date("Y-m-d H:i:s")
  102. ];
  103. $orderpost=Db::name("order_post")->insert($post);
  104. if($orderpost){
  105. $updatestock= Db::name("account_stock")->where($stock)->update
  106. (['stock_balance'=>$stock['stock_balance']-$num,
  107. "stock_delivery"=>$stock['stock_delivery']+$num,"updatetime"=>date("Y-m-d H:i:s")]);
  108. if($updatestock){
  109. $log=[
  110. "accountid"=>$this->userinfo['id'],
  111. "run_stock"=>$num,
  112. "type"=>3,
  113. "after_stock"=>$stock['stock_balance']-$num,
  114. "before_stock"=>$stock['stock_balance'],
  115. "action_uid"=>$this->userinfo['id'],
  116. "action_name"=>$this->userinfo['nickname'],
  117. "addtime"=>date("Y-m-d H:i:s")
  118. ];
  119. $stocklog =Db::name("stock_log")->insert($log);
  120. if($stocklog){
  121. Db::commit();
  122. return app_show(0,"下单成功",['orderid'=>$ordercreate]);
  123. }
  124. }
  125. }
  126. }
  127. Db::rollback();
  128. return error_show(1006,"下单失败");
  129. }catch (\Exception $e){
  130. Db::rollback();
  131. return error_show(1005,$e->getMessage());
  132. }
  133. }
  134. public function Stock(){
  135. $stock = Db::name("account_stock")->where(["accountid"=>$this->userinfo['id'],'is_del'=>0])->find();
  136. $data=[];
  137. $data['stock'] = isset($stock['stock_balance']) ? $stock['stock_balance']:0;
  138. return app_show(0,"获取成功",$data);
  139. }
  140. }