StoreRefundOrderDao.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. namespace app\common\dao\store\order;
  3. use app\common\dao\BaseDao;
  4. use app\common\model\BaseModel;
  5. use app\common\model\store\order\StoreOrder;
  6. use app\common\model\store\order\StoreRefundOrder;
  7. use app\common\repositories\system\merchant\MerchantRepository;
  8. use think\db\BaseQuery;
  9. use think\db\exception\DbException;
  10. class StoreRefundOrderDao extends BaseDao
  11. {
  12. protected function getModel(): string
  13. {
  14. return StoreRefundOrder::class;
  15. }
  16. /**
  17. * @param array $where
  18. * @return BaseQuery
  19. * @author zfy
  20. * @day 2020/6/12
  21. */
  22. public function search(array $where)
  23. {
  24. if(isset($where['is_trader']) && $where['is_trader'] !== ''){
  25. $query = StoreRefundOrder::hasWhere('merchant',function($query)use($where){
  26. $query->where('is_trader',$where['is_trader']);
  27. });
  28. }else{
  29. $query = (StoreRefundOrder::getDB())->alias('StoreRefundOrder');
  30. }
  31. $query->when(isset($where['mer_id']) && $where['mer_id'] !== '', function ($query) use ($where) {
  32. $query->where('StoreRefundOrder.mer_id', $where['mer_id']);
  33. })->when(isset($where['order_sn']) && $where['order_sn'] !== '', function ($query) use ($where) {
  34. $ids = StoreOrder::where('order_sn','like','%'.$where['order_sn'].'%')->column('order_id');
  35. $query->where('order_id','in',$ids);
  36. })->when(isset($where['refund_order_sn']) && $where['refund_order_sn'] !== '', function ($query) use ($where) {
  37. $query->where('refund_order_sn', 'like', '%' . $where['refund_order_sn'] . '%');
  38. })->when(isset($where['status']) && $where['status'] !== '', function ($query) use ($where) {
  39. $query->where('StoreRefundOrder.status', $where['status']);
  40. })->when(isset($where['uid']) && $where['uid'] !== '', function ($query) use ($where) {
  41. $query->where('uid', $where['uid']);
  42. })->when(isset($where['id']) && $where['id'] !== '', function ($query) use ($where) {
  43. $query->where('refund_order_id', $where['id']);
  44. })->when(isset($where['is_del']) && $where['is_del'] !== '', function ($query) use ($where) {
  45. $query->where('StoreRefundOrder.is_del', $where['is_del']);
  46. })->when(isset($where['type']) && $where['type'] == 1, function ($query) {
  47. $query->whereIn('StoreRefundOrder.status', [0, 1, 2]);
  48. })->when(isset($where['type']) && $where['type'] == 2, function ($query) {
  49. $query->whereIn('status', [-1, 3]);
  50. })->when(isset($where['refund_type']) && $where['refund_type'] !== '',function($query)use($where){
  51. $query->where('refund_type',$where['refund_type']);
  52. })->when(isset($where['reconciliation_type']) && $where['reconciliation_type'] !== '' ,function($query)use($where){
  53. $query->when($where['reconciliation_type'],
  54. function($query)use($where){$query->where('reconciliation_id','<>',0);},
  55. function($query)use($where){$query->where('reconciliation_id',0);}
  56. );
  57. })->when(isset($where['date']) && $where['date'] !== '', function ($query) use ($where) {
  58. getModelTime($query,$where['date'],'StoreRefundOrder.create_time');
  59. })->when(isset($where['order_id']) && $where['order_id'] !== '', function ($query) use ($where) {
  60. $query->where('order_id', $where['order_id']);
  61. })->when(isset($where['delivery_id']) && $where['delivery_id'] !== '', function ($query) use ($where) {
  62. $query->where('StoreRefundOrder.delivery_id', $where['delivery_id']);
  63. })->order('StoreRefundOrder.create_time DESC');
  64. return $query;
  65. }
  66. /**
  67. * @param $id
  68. * @return mixed
  69. * @author Qinii
  70. * @day 2020-06-12
  71. */
  72. public function getOne($id)
  73. {
  74. return $this->getModel()::where($this->getPk(),$id)->with([
  75. 'refundProduct.product',
  76. 'user' => function($query){
  77. $query->field('uid,nickname,phone');
  78. },
  79. 'order.orderProduct'
  80. ])->find();
  81. }
  82. /**
  83. * @param $where
  84. * @return bool
  85. * @author Qinii
  86. * @day 2020-06-12
  87. */
  88. public function getFieldExists($where)
  89. {
  90. return (($this->getModel()::getDB())->where($where)->count()) > 0;
  91. }
  92. /**
  93. * @param $uid
  94. * @param $id
  95. * @return int
  96. * @throws DbException
  97. * @author zfy
  98. * @day 2020/6/12
  99. */
  100. public function userDel($uid, $id)
  101. {
  102. return StoreRefundOrder::getDB()->where('uid', $uid)->where('refund_order_id', $id)->where('status', 3)->update(['is_del' => 1, 'status_time' => date('Y-m-d H:i:s')]);
  103. }
  104. /**
  105. * TODO超过期限退款申请
  106. * @param $time
  107. * @return mixed
  108. * @author Qinii
  109. * @day 2020-06-13
  110. */
  111. public function getTimeOutIds($time)
  112. {
  113. return ($this->getModel()::getDB())->where('status_time','<=',$time)
  114. ->where(function($query){
  115. $query->where(function($query){
  116. $query->where('refund_type',1)->where('status',0);
  117. })->whereOr(function($query){
  118. $query->where('refund_type',2)->where('status',2);
  119. });
  120. })->column('refund_order_id');
  121. }
  122. /**
  123. * TODO
  124. * @param $reconciliation_id
  125. * @return mixed
  126. * @author Qinii
  127. * @day 2020-06-15
  128. */
  129. public function reconciliationUpdate($reconciliation_id)
  130. {
  131. return ($this->getModel()::getDB())->whereIn('reconciliation_id',$reconciliation_id)->update(['reconciliation_id' => 0]);
  132. }
  133. public function refundPirceByOrder(array $orderIds)
  134. {
  135. return $this->getModel()::getDB()->whereIn('order_id',$orderIds)->where('status',3)->sum('refund_price');
  136. }
  137. }