CashierOrderReward.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\store\model\cashier;
  11. use app\model\BaseModel;
  12. use app\model\member\Hongbao;
  13. use app\model\member\MemberAccount;
  14. use app\model\member\MemberCoupon;
  15. /**
  16. * 常规订单操作
  17. *
  18. * @author Administrator
  19. *
  20. */
  21. class CashierOrderReward extends BaseModel
  22. {
  23. /**
  24. * 增加订单赠送项
  25. * @param $params
  26. * @return array
  27. */
  28. public function addOrderReward($params){
  29. $order_id = $params['order_id'];
  30. $type = $params['type'];
  31. $num = $params['num'];
  32. $relate_id = $params['relate_id'] ?? 0;
  33. $member_id = $params['member_id'];
  34. $promotion_type = $params['promotion_type'];
  35. $site_id = $params['site_id'];
  36. $promotion_id = $params['promotion_id'];
  37. $order_goods_id = $params['order_goods_id'] ?? '';
  38. $status = $params['status'] ?? 0;
  39. $desc = $params['desc'];
  40. $data = array(
  41. 'order_id' => $order_id,
  42. 'promotion_type' => $promotion_type,
  43. 'promotion_id' => $promotion_id,
  44. 'type' => $type,
  45. 'num' => $num,
  46. 'site_id' => $site_id,
  47. 'relate_id' => $relate_id,
  48. 'order_goods_id' => $order_goods_id,
  49. 'status' => $params['status'] ?? 0,
  50. 'member_id' => $member_id,
  51. 'status' => $status,
  52. 'desc' => $desc
  53. );
  54. model('store_cashier_order_reward')->add($data);
  55. return $this->success();
  56. }
  57. /**
  58. * 获取优惠券记录
  59. * @param $condition
  60. * @param string $field
  61. */
  62. public function getOrderRewardList($condition, $field = '*', $order = ''){
  63. $list = model('store_cashier_order_reward')->getList($condition, $field, $order);
  64. return $this->success($list);
  65. }
  66. /**
  67. * 发放订单奖励
  68. * @param $params
  69. */
  70. public function grantOrderReward($params){
  71. $order_id = $params['order_id'] ?? 0;
  72. if($order_id > 0) {
  73. $site_id = $params['site_id'];
  74. $member_id= $params['member_id'];
  75. $condition = array(
  76. ['order_id', '=', $order_id],
  77. ['status', '=', 0]
  78. );
  79. $reward_list = $this->getOrderRewardList($condition)['data'] ?? [];
  80. if (!empty($reward_list)) {
  81. //已关闭的订单想就不能发放相关的奖励了
  82. $close_goods_ids = model('store_cashier_order_goods')->getValue([['order_id', '=', $order_id], ['order_goods_status', '=', 'close']], 'order_goods_id');
  83. foreach ($reward_list as $k => $v) {
  84. if(!empty($close_goods_ids)){//已关闭就不要发了,可能会修改状态
  85. $item_order_goods_ids = $v['order_goods_id'];
  86. if(empty($item_order_goods_ids))
  87. continue;
  88. $item_order_goods_ids = explode(',', $item_order_goods_ids);
  89. $temp_intersect = array_intersect($item_order_goods_ids,$close_goods_ids);
  90. if(empty($temp_intersect))
  91. continue;
  92. }
  93. $v['member_id'] = $member_id;
  94. $v['site_id'] = $site_id;
  95. //调用钩子发放奖励
  96. $result = event('CashierOrderRewardGrant', $v, true);
  97. if(!empty($result)){
  98. if($result['code'] < 0)
  99. return $result;
  100. }else{
  101. }
  102. //修改状态
  103. $temp_data = array(
  104. 'status' => 1
  105. );
  106. $temp_condition = array(
  107. ['order_reward_id', '=', $v['order_reward_id']]
  108. );
  109. model('store_cashier_order_reward')->update($temp_data, $temp_condition);
  110. }
  111. }
  112. return $this->success();
  113. }
  114. return $this->error();
  115. }
  116. }