MemberrechargeOrderCreate.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 山西牛酷信息科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com.cn
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace addon\memberrecharge\model;
  13. use app\model\order\OrderCreate;
  14. use app\model\system\Cron;
  15. use app\model\system\Pay;
  16. use app\model\order\Config;
  17. use app\model\member\Member as MemberModel;
  18. /**
  19. * 订单创建(拼团)
  20. *
  21. * @author Administrator
  22. *
  23. */
  24. class MemberrechargeOrderCreate extends OrderCreate
  25. {
  26. /**
  27. * 订单创建
  28. * @param unknown $data
  29. */
  30. public function create($data)
  31. {
  32. //获取用户头像
  33. $member_model = new MemberModel();
  34. $member = $member_model->getMemberInfo([['member_id', '=', $data['member_id']]], 'headimg,nickname');
  35. $member_info = $member['data'];
  36. //获取套餐信息
  37. $recharge_model = new Memberrecharge();
  38. //套餐字段
  39. $field = 'recharge_id,recharge_name,cover_img,face_value,buy_price,point,growth,coupon_id';
  40. $recharge = $recharge_model->getMemberrechargeInfo([['recharge_id', '=', $data['recharge_id']]], $field);
  41. $recharge_info = $recharge['data'];
  42. if (empty($recharge_info)) {
  43. return $this->error('', '无效的充值套餐');
  44. }
  45. //创建或加入
  46. $pay = new Pay();
  47. $out_trade_no = $pay->createOutTradeNo();
  48. $order_no = $this->createOrderNo(0);
  49. $order_data = [
  50. 'recharge_id' => $data['recharge_id'],
  51. 'order_no' => $order_no,
  52. 'out_trade_no' => $out_trade_no,
  53. 'recharge_name' => $recharge_info['recharge_name'],
  54. 'cover_img' => $recharge_info['cover_img'],
  55. 'face_value' => $recharge_info['face_value'],
  56. 'buy_price' => $recharge_info['buy_price'],
  57. 'point' => $recharge_info['point'],
  58. 'growth' => $recharge_info['growth'],
  59. 'coupon_id' => $recharge_info['coupon_id'],
  60. 'status' => 1,
  61. 'create_time' => time(),
  62. 'member_id' => $data['member_id'],
  63. 'member_img' => $member_info['headimg'],
  64. 'nickname' => $member_info['nickname'],
  65. 'order_from' => $data['order_from'],
  66. 'order_from_name' => $data['order_from_name']
  67. ];
  68. model("member_recharge_order")->startTrans();
  69. //循环生成多个订单
  70. try {
  71. $order_id = model("member_recharge_order")->add($order_data);
  72. //生成整体支付单据
  73. $pay->addPay(0, $out_trade_no, "", "会员充值套餐,面额:" . $recharge_info['face_value'], "会员充值套餐,面额:" . $recharge_info['face_value'], $recharge_info['buy_price'], '', 'MemberRechargeOrderPayNotify', '');
  74. //计算订单自动关闭时间
  75. $config_model = new Config();
  76. $order_config_result = $config_model->getOrderEventTimeConfig();
  77. $order_config = $order_config_result["data"];
  78. $now_time = time();
  79. if (!empty($order_config)) {
  80. $execute_time = $now_time + $order_config["value"]["auto_close"] * 60;//自动关闭时间
  81. } else {
  82. $execute_time = $now_time + 3600;//尚未配置 默认一天
  83. }
  84. $cron_model = new Cron();
  85. $cron_model->addCron(1, 0, "订单自动关闭", "MemberRechargeOrderClose", $execute_time, $order_id);
  86. event("MemberRechargeOrderCreate", [ 'order_id' => $order_id ]);
  87. model("member_recharge_order")->commit();
  88. return $this->success($out_trade_no);
  89. } catch (\Exception $e) {
  90. model("member_recharge_order")->rollback();
  91. return $this->error('', $e->getMessage());
  92. }
  93. }
  94. }