ShopOrderLogic.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace app\workerapi\logic\shops;
  3. use app\common\logic\BaseLogic;
  4. use app\common\model\article\Article;
  5. use app\common\model\decorate\DecoratePage;
  6. use app\common\model\decorate\DecorateTabbar;
  7. use app\common\model\setting\PostageRegion;
  8. use app\common\model\shops\ShopAddress;
  9. use app\common\model\shops\ShopOrders;
  10. use app\common\model\user\UserAddress;
  11. use app\common\service\ConfigService;
  12. use app\common\service\FileService;
  13. use think\db\Query;
  14. use think\facade\Db;
  15. /**
  16. * 订单
  17. */
  18. class ShopOrderLogic extends BaseLogic
  19. {
  20. /**
  21. * @notes 获取详情
  22. * @param $params
  23. * @return array
  24. * @author likeadmin
  25. * @date 2024/07/18 13:51
  26. */
  27. public static function detail($params): array
  28. {
  29. $detail = ShopOrders::with(['orderGoods'=>function(Query $query){
  30. $query->field(['sn','goods_name','goods_image','number','service_fee','company_name','delivery_type','shop_goods_type','goods_specs_inventory_id','specs_type','custom_attribute_items','specs'])->append(['spec_arr','delivery_type_text','shop_goods_type_text']);
  31. }])->field('id, sn, real_name,mobile, address,pay_time, paw_way,pay_sn, pay_status, refund_status, refund_transaction_id,create_time,shop_order_type,amount_total, order_amount')
  32. ->append(['pay_way_text','pay_status_text','refund_status_text'])->where(['sn'=> $params['sn'],'worker_id'=>$params['worker_id']])->findOrEmpty()->toArray();
  33. $orderGoodsArr = [];
  34. $companyNameArr = array_column($detail['orderGoods'],'company_name');
  35. foreach($companyNameArr as $val) {
  36. $orderGoods = [];
  37. foreach ($detail['orderGoods'] as $goodVal) {
  38. if($val == $goodVal['company_name']){
  39. unset($goodVal['goodsSpecsInventory'], $goodVal['custom_attribute_items'], $goodVal['specs'], $goodVal['sn'], $goodVal['goods_specs_inventory_id'],$goodVal['company_name']);
  40. $orderGoods[] = $goodVal;
  41. }
  42. }
  43. if(!empty($orderGoods)){
  44. $orderGoodsArr[] = [
  45. 'company_name' => $val,
  46. 'goods' => $orderGoods
  47. ];
  48. }
  49. }
  50. $detail['orderGoods'] = $orderGoodsArr;
  51. return $detail;
  52. }
  53. public static function cancelOrder($params):bool
  54. {
  55. Db::startTrans();
  56. try {
  57. $orderModel = ShopOrders::where([
  58. 'shop_order_type' => 1,
  59. 'worker_id' => $params['worker_id'],
  60. 'sn'=>$params['sn']
  61. ])->findOrEmpty();
  62. if($orderModel->isEmpty()){
  63. throw new \Exception('订单不存在或不是待支付状态');
  64. }
  65. $orderModel->shop_order_type = 0;
  66. $orderModel->save();
  67. Db::commit();
  68. return true;
  69. } catch (\Exception $e) {
  70. Db::rollback();
  71. self::setError($e->getMessage());
  72. return false;
  73. }
  74. }
  75. }