RefundOrder.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace app\api\model\service;
  3. use think\Exception;
  4. use think\Model;
  5. class RefundOrder extends Model
  6. {
  7. // 表名
  8. protected $name = 'service_refund_order';
  9. // 自动写入时间戳字段
  10. protected $autoWriteTimestamp = 'int';
  11. // 定义时间戳字段名
  12. protected $createTime = 'createtime';
  13. protected $updateTime = 'updatetime';
  14. public static function applyRefund($params)
  15. {
  16. $order = Order::where(['user_id'=>$params['user_id'],'id'=>$params['id'],'status'=>['>',0]])->field('id,user_id,is_service,payprice,to_shop,skill_id,shop_id,status,payprice')->find();
  17. if(!$order)
  18. {
  19. throw new Exception('当前订单无法申请退款');
  20. }
  21. if($order['is_service'] > 0)
  22. {
  23. throw new Exception('请勿重复申请退款');
  24. }
  25. if($order['payprice'] < $params['refund_price'] || $params['refund_price']<0)
  26. {
  27. throw new Exception('当前退款金额不符');
  28. }
  29. $refundReason = RefundReason::where(['id'=>$params['refund_reason_id']])->value('name');
  30. $params['refund_reason'] = $refundReason;
  31. $params['order_id'] = $params['id'];
  32. unset($params['id']);
  33. $refundOrder = new RefundOrder($params);
  34. $refundOrder->allowField(true)->save();
  35. if($order['is_service'] != 1)
  36. {
  37. Order::where(['id'=>$order['id']])->update(['is_service'=>1]);
  38. }
  39. OrderLog::create(['order_id'=>$order['id'],'user_id'=>$order['user_id'],'type'=>8,'content'=>'订单已申请退款']);
  40. if($order['skill_id'])
  41. {
  42. $skillOpenid = UserInfo::getOpenid($order['skill_id'],1);
  43. Order::createOrderTemplateParams(['id'=>$order['id'],'user_id'=>$order['user_id'],'to_shop'=>$order['to_shop'],'type'=>1,'templateAttr'=>'skill_sales_template','openid'=>$skillOpenid]);
  44. }
  45. if($order['shop_id'])
  46. {
  47. $shopOpenid = UserInfo::getOpenid($order['shop_id'],2);
  48. Order::createOrderTemplateParams(['id'=>$order['id'],'user_id'=>$order['user_id'],'to_shop'=>$order['to_shop'],'type'=>2,'templateAttr'=>'shop_sales_template','openid'=>$shopOpenid]);
  49. }
  50. return $order;
  51. }
  52. public static function cancelRefundOrder($refundOrder)
  53. {
  54. self::where('order_id',$refundOrder['order_id'])->update(['state'=>-2]);
  55. Order::where('id',$refundOrder['order_id'])->update(['is_service'=>0]);
  56. OrderLog::create(['order_id'=>$refundOrder['order_id'],'user_id'=>$refundOrder['user_id'],'type'=>17,'content'=>'用户取消申请退款']);
  57. return true;
  58. }
  59. }