Shopping.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. * 订单数据
  7. */
  8. namespace app\fastshop\model;
  9. use think\Model;
  10. class Shopping extends Model{
  11. protected $pk = 'id';
  12. protected $table = 'ai_fastshop_shopping';
  13. protected $table_cache = 'fastshop_shopping_cache'; //订单商品缓存表
  14. protected $table_field = "A.id as order_id,A.user_id,A.is_del,A.status,A.order_no,A.real_freight,A.real_amount,A.order_endtime,A.order_starttime,A.order_amount,A.express_status,A.paid_at,A.paid_time,A.express_starttime,A.express_no,A.express_company,A.express_name,A.express_phone,A.express_address,B.*";
  15. //订单信息
  16. public function orderItem(){
  17. return $this->hasOne('ShoppingCache','order_no','order_no');
  18. }
  19. //订单列表
  20. public function orderList(){
  21. return $this->hasMany('ShoppingCache','order_no','order_no');
  22. }
  23. /**
  24. * 获取订单数据(单个订单预览)
  25. * 使用:前台查询用户自己的订单
  26. * @param string $order_no 订单ID
  27. * @param integer $user_id 要获取的订单用户
  28. * @param integer $type 要获取的订单状态
  29. * @return array
  30. */
  31. public function getOrder(string $order_no,int $user_id = 0,int $is_del = 1){
  32. if($user_id){
  33. $condition['user_id'] = $user_id;
  34. }
  35. if($is_del){
  36. $condition['is_del'] = 0;
  37. }
  38. $condition['B.order_no'] = $order_no;
  39. $order = self::alias('A')->join($this->table_cache.' B','A.order_no = B.order_no','LEFT')->field($this->table_field)->where($condition)->order('id desc')->select()->toArray();
  40. return self::order_data($order);
  41. }
  42. /**
  43. * 获取用户订单数据(v1.0待清理)(用户订单管理)
  44. * @param integer $user_id 要获取的订单用户
  45. * @param integer $type 要获取的订单状态
  46. * @return array
  47. */
  48. public static function getUserOrderList(int $user_id,int $type = 0){
  49. $condition['user_id'] = $user_id;
  50. $condition['is_del'] = 0;
  51. switch ($type) {
  52. case 1:
  53. $condition['paid_at'] = 1;
  54. $condition['express_status'] = 0;
  55. break;
  56. case 2:
  57. $condition['paid_at'] = 1;
  58. $condition['express_status'] = 1;
  59. $condition['status'] = 0;
  60. break;
  61. case 3:
  62. $condition['paid_at'] = 1;
  63. $condition['status'] = 1;
  64. break;
  65. default:
  66. $condition['paid_at'] = 0;
  67. break;
  68. }
  69. $order = self::where($condition)->order('id desc')->paginate(10)->toArray();
  70. return self::order_data($order['data']);
  71. }
  72. /**
  73. * 根据条件查询订单(后台订单管理)
  74. * @param array $order_no
  75. * @return void
  76. */
  77. public function getOrderList(array $condition,$status = 0,int $page_number = 10){
  78. return self::view('fastshop_shopping','id as order_id,user_id,is_del,status,order_no,real_freight,real_amount,order_endtime,order_starttime,order_amount,express_status,paid_at,paid_time,express_starttime,express_no,express_company,express_name,express_phone,express_address')
  79. ->view('fastshop_shopping_cache','*', 'fastshop_shopping.order_no = fastshop_shopping_cache.order_no','LEFT')
  80. ->where($condition)
  81. ->order('id desc')->paginate($page_number,false,['query'=>['status' => $status]]);
  82. }
  83. /**
  84. * 无翻页
  85. */
  86. public function getOrderListNopage(array $condition,$status = 0){
  87. return self::view('fastshop_shopping','id as order_id,user_id,is_del,status,order_no,real_freight,real_amount,order_endtime,order_starttime,order_amount,express_status,paid_at,paid_time,express_starttime,express_no,express_company,express_name,express_phone,express_address')
  88. ->view('fastshop_shopping_cache','*', 'fastshop_shopping.order_no = fastshop_shopping_cache.order_no','LEFT')
  89. ->where($condition)
  90. ->order('id desc')->select();
  91. }
  92. /**
  93. * 订单数据处理(v1.0待清理)
  94. * @param array $data
  95. * @return array
  96. */
  97. public function order_data(array $data){
  98. $item = [];
  99. foreach ($data as $value) {
  100. $sku['name'] = $value['name'];
  101. $sku['img'] = $value['img'];
  102. $sku['item_id'] = $value['item_id'];
  103. $sku['buy_price'] = money($value['buy_price']);
  104. $sku['buy_nums'] = $value['buy_nums'];
  105. $sku['amount'] = money($value['buy_price']*$value['buy_nums']);
  106. $item[$value['order_no']]['order_no'] = (string)$value['order_no'];
  107. $item[$value['order_no']]['id'] = $value['order_id'];
  108. $item[$value['order_no']]['user_id'] = $value['user_id'];
  109. $item[$value['order_no']]['status'] = $value['status'];
  110. $item[$value['order_no']]['status_text'] = self::status($value['status'],$value['paid_at'],$value['express_status']);
  111. $item[$value['order_no']]['is_del'] = $value['is_del'];
  112. $item[$value['order_no']]['real_freight'] = money($value['real_freight']);
  113. $item[$value['order_no']]['real_amount'] = money($value['real_amount']);
  114. $item[$value['order_no']]['order_amount'] = money($value['order_amount']);
  115. $item[$value['order_no']]['order_starttime'] = date('Y-m-d H:s',$value['order_starttime']);
  116. $item[$value['order_no']]['order_endtime'] = date('Y-m-d H:s',$value['order_endtime']);
  117. $item[$value['order_no']]['paid_at'] = $value['paid_at'];
  118. $item[$value['order_no']]['paid_time'] = empty($value['paid_time']) ? '' : date('Y-m-d H:s',$value['paid_time']);
  119. $item[$value['order_no']]['express_status'] = $value['express_status'];
  120. $item[$value['order_no']]['express_no'] = $value['express_no'];
  121. $item[$value['order_no']]['express_starttime'] = empty($value['express_starttime']) ? '' : date('Y-m-d H:s',$value['express_starttime']);
  122. $item[$value['order_no']]['express_company'] = $value['express_company'];
  123. $item[$value['order_no']]['express_name'] = $value['express_name'];
  124. $item[$value['order_no']]['express_phone'] = $value['express_phone'];
  125. $item[$value['order_no']]['express_address'] = $value['express_address'];
  126. $item[$value['order_no']]['item'][] = $sku;
  127. }
  128. return $item;
  129. }
  130. /**
  131. * 状态数字变文字(v1.0待清理)
  132. * @return void
  133. */
  134. protected function status($status,$paid_at,$express_status){
  135. if($status == 0){
  136. if($paid_at == 1){
  137. if($express_status == 0){
  138. $status_text = '已付款';
  139. }else{
  140. $status_text = '待收货';
  141. }
  142. }else{
  143. $status_text = '待付款';
  144. }
  145. }else{
  146. $status_text = '订单结束';
  147. }
  148. return $status_text;
  149. }
  150. /**
  151. * 订单数据处理 v3.0
  152. * @param array $data
  153. * @return array
  154. */
  155. public static function orderData($data){
  156. $item = [];
  157. foreach ($data as $keys => $value) {
  158. $sku = [];
  159. foreach ($value->OrderList as $key => $rs) {
  160. $sku[$key]['name'] = $rs['name'];
  161. $sku[$key]['img'] = $rs->img;
  162. $sku[$key]['item_id'] = $rs->item_id;
  163. $sku[$key]['buy_price'] = $rs->buy_price;
  164. $sku[$key]['buy_nums'] = $rs->buy_nums;
  165. $sku[$key]['amount'] = money($rs->buy_price*$rs->buy_nums);
  166. }
  167. $item[$keys]['item'] = $sku;
  168. $item[$keys]['id'] = $value->id;
  169. $item[$keys]['order_no'] = $value->order_no;
  170. $item[$keys]['user_id'] = $value->user_id;
  171. $item[$keys]['status'] = $value->status;
  172. $item[$keys]['status_text'] = self::statusText($value->status,$value->paid_at,$value->express_status);
  173. $item[$keys]['is_del'] = $value->is_del;
  174. $item[$keys]['real_freight'] = money($value->real_freight);
  175. $item[$keys]['real_amount'] = money($value->real_amount);
  176. $item[$keys]['order_amount'] = money($value->order_amount);
  177. $item[$keys]['order_starttime'] = date('Y-m-d H:s',$value->order_starttime);
  178. $item[$keys]['order_endtime'] = date('Y-m-d H:s',$value->order_endtime);
  179. $item[$keys]['paid_at'] = $value->paid_at;
  180. $item[$keys]['paid_time'] = empty($value->paid_time) ? '' : date('Y-m-d H:s',$value->paid_time);
  181. $item[$keys]['express_status'] = $value->express_status;
  182. $item[$keys]['express_no'] = $value->express_no;
  183. $item[$keys]['express_starttime'] = empty($value->express_starttime) ? '' : date('Y-m-d H:s',$value['express_starttime']);
  184. $item[$keys]['express_company'] = $value->express_company;
  185. $item[$keys]['express_name'] = $value->express_name;
  186. $item[$keys]['express_phone'] = $value->express_phone;
  187. $item[$keys]['express_address'] = $value->express_address;
  188. }
  189. return $item;
  190. }
  191. /**
  192. * 状态数字变文字 v3.0
  193. * @return void
  194. */
  195. protected static function statusText($status,$paid_at,$express_status){
  196. if($status == 0){
  197. if($paid_at == 1){
  198. if($express_status == 0){
  199. $status_text = '已付款';
  200. }else{
  201. $status_text = '待收货';
  202. }
  203. }else{
  204. $status_text = '待付款';
  205. }
  206. }else{
  207. $status_text = '订单结束';
  208. }
  209. return $status_text;
  210. }
  211. }