OrderComplete.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\event;
  11. use app\model\member\Member;
  12. use app\model\member\MemberAccount;
  13. use app\model\member\MemberLevel;
  14. use app\model\order\OrderCommon;
  15. /**
  16. * 订单完成后
  17. */
  18. class OrderComplete
  19. {
  20. // 行为扩展的执行入口必须是run
  21. public function handle($data)
  22. {
  23. //订单返还积分
  24. $order_model = new OrderCommon();
  25. $condition = array(
  26. ['order_id', '=', $data['order_id']]
  27. );
  28. $order_info = $order_model->getOrderInfo($condition, 'order_money,order_status,site_id,member_id')['data'] ?? [];
  29. //如果缺失已完成
  30. if ($order_info['order_status'] == 10) {
  31. //会员等级 计算积分返还比率
  32. $site_id = $order_info['site_id'];
  33. $member_id = $order_info['member_id'];
  34. //存在散客的情况
  35. if($member_id > 0){
  36. $member_model = new Member();
  37. $member_info_result = $member_model->getMemberInfo([['member_id', '=', $member_id], ['site_id', '=', $site_id]], 'member_level');
  38. $member_info = $member_info_result['data'];
  39. if ($member_info['member_level'] > 0) {
  40. $member_level_model = new MemberLevel();
  41. $member_level_info_result = $member_level_model->getMemberLevelInfo([['level_id', '=', $member_info['member_level']], ['site_id', '=', $site_id]], "point_feedback");
  42. $member_level_info = $member_level_info_result['data'];
  43. if ($member_level_info['point_feedback'] > 0) {
  44. //计算返还的积分
  45. $point = round($order_info['order_money'] * $member_level_info['point_feedback']);
  46. $member_account_model = new MemberAccount();
  47. $result = $member_account_model->addMemberAccount($site_id, $member_id, 'point', $point, 'order', '会员消费回馈积分', '会员消费奖励发放');
  48. if ($result['code'] < 0) {
  49. return $result;
  50. }
  51. }
  52. }
  53. }
  54. }
  55. return $order_model->success();
  56. }
  57. }