新版订单消耗系统

OrderExtraData.php 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: shensong
  5. * Date: 2023/7/12
  6. * Time: 11:18
  7. */
  8. namespace App\Models;
  9. use Illuminate\Database\Eloquent\Model;
  10. class OrderExtraData extends Model
  11. {
  12. protected $table = 'order_extra_data';
  13. public $timestamps = false;
  14. protected static $unguarded = true;
  15. public static function getExtraData($orderIds) {
  16. if(empty($orderIds)) return null;
  17. return self::query()->select(['order_id', 'ivrp', 'date_of_collection', 'payment_days'])
  18. ->where('enable', 1)->whereIn('order_id', $orderIds)->get();
  19. }
  20. public static function getOrderIdListBySearch($search) {
  21. $query = self::query()->where('enable', 1);
  22. if(!empty($search['date_of_collection'])) {
  23. $query->where('date_of_collection', '>=', $search['date_of_collection'][0])
  24. ->where('date_of_collection', '<=', $search['date_of_collection'][1]);
  25. }
  26. return $query->pluck('order_id')->all();
  27. }
  28. public static function batchSaveData($orderIdList, $params) {
  29. # 查询已存在的订单
  30. $existsOrderIdList = self::query()->whereIn('order_id', $orderIdList)->pluck('order_id')->toArray();
  31. # 找到需要新增的订单
  32. $newOrderIdList = array_diff($orderIdList, $existsOrderIdList);
  33. $insertData = [];
  34. if(!empty($newOrderIdList)) {
  35. foreach ($newOrderIdList as $orderId) {
  36. $insertData[] = [
  37. 'order_id' => $orderId,
  38. 'enable' => 1,
  39. 'date_of_collection' => isset($params['date_of_collection']) ? $params['date_of_collection'] : null,
  40. 'payment_days' => isset($params['payment_days']) ? $params['payment_days'] : null,
  41. ];
  42. }
  43. \DB::begintransaction();
  44. $insertRes = self::query()->insert($insertData);
  45. if(!empty($existsOrderIdList)) {
  46. $params['update_time'] = date('Y-m-d H:i:s');
  47. unset($params['invoice_id']);
  48. if(empty($params['payment_days'])) unset($params['payment_days']);
  49. $updateRes = self::query()->whereIn('order_id', $existsOrderIdList)->update($params);
  50. } else {
  51. $updateRes = true;
  52. }
  53. if($insertRes && $updateRes) {
  54. \DB::commit();
  55. return ['操作成功', 0];
  56. } else {
  57. \DB::rollBack();
  58. return ['操作失败', 500];
  59. }
  60. } else {
  61. $params['update_time'] = date('Y-m-d H:i:s');
  62. unset($params['invoice_id']);
  63. if(empty($params['payment_days'])) unset($params['payment_days']);
  64. $updateRes = self::query()->whereIn('order_id', $existsOrderIdList)->update($params);
  65. if($updateRes) {
  66. return ['操作成功', 0];
  67. } else {
  68. return ['操作失败', 500];
  69. }
  70. }
  71. }
  72. public static function saveData($orderId, $params) {
  73. $exists = self::query()->where('order_id', $orderId)->exists();
  74. if($exists) {
  75. $res = self::query()->where('order_id', $orderId)->update($params);
  76. } else {
  77. $params['order_id'] = $orderId;
  78. $res = self::query()->insert($params);
  79. }
  80. if($res) {
  81. return ['操作成功', 0];
  82. } else {
  83. return ['操作失败', 500];
  84. }
  85. }
  86. }