Calculate.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. namespace addon\memberrecharge\model\cashier;
  3. use app\model\BaseModel;
  4. class Calculate extends BaseModel
  5. {
  6. /**
  7. * 计算
  8. * @param $data
  9. * @return array
  10. */
  11. public function calculate($data)
  12. {
  13. $type = $data[ 'type' ] ?? '';
  14. if ($type == 'recharge') {
  15. $order_name = '';
  16. $goods_list = [];
  17. $data[ 'cashier_order_type' ] = 'recharge';
  18. $goods_money = 0;
  19. $sku_array = $data[ 'sku_array' ];
  20. $reward = $data[ 'reward' ] ?? [];
  21. $reward_goods_list = $data[ 'reward_goods_list' ] ?? [];
  22. $sku_ids = [];
  23. $money_array = [];
  24. foreach ($sku_array as $k => $v) {
  25. $item_recharge_id = $v[ 'recharge_id' ] ?? 0;
  26. if ($item_recharge_id > 0) {
  27. $sku_ids[] = $item_recharge_id;
  28. }
  29. $item_money = $v[ 'money' ] ?? 0;
  30. if ($item_money > 0) {
  31. $money_array[] = $item_money;
  32. }
  33. }
  34. $goods_image = 'upload/cashier/member-recharge-icon.png';
  35. if (!empty($sku_ids)) {
  36. $member_recharge_condition = array (
  37. [ 'recharge_id', 'in', $sku_ids ]
  38. );
  39. $member_recharge_list = model('member_recharge')->getList($member_recharge_condition);
  40. if (!empty($member_recharge_list)) {
  41. foreach ($member_recharge_list as $k => $v) {
  42. $item_sku_id = $v[ 'recharge_id' ];
  43. $price = $v[ 'buy_price' ];
  44. $item_goods_id = 0;//sku_id已经是充值个体组件
  45. $num = 1;
  46. $item_goods_money = $price * $num;
  47. $goods_money += $item_goods_money;
  48. $sku_name = '充值套餐' . $v[ 'recharge_name' ];
  49. $order_name = string_split($order_name, ',', '充值套餐' . $v[ 'recharge_name' ]);
  50. $goods_list[] = array (
  51. 'goods_id' => $item_goods_id,
  52. 'sku_id' => $item_sku_id,
  53. 'price' => $price,
  54. 'num' => $num,
  55. 'goods_money' => $item_goods_money,
  56. 'sku_name' => $sku_name,
  57. 'real_goods_money' => $item_goods_money,
  58. 'goods_name' => '充值礼包',
  59. 'goods_image' => $goods_image,
  60. 'spec_name' => $v[ 'recharge_name' ],
  61. 'goods_class' => 'recharge',
  62. 'goods_class_name' => '充值礼包',
  63. 'is_virtual' => 1
  64. );
  65. }
  66. }
  67. }
  68. if (!empty($money_array)) {
  69. foreach ($money_array as $k => $v) {
  70. $item_sku_id = 0;
  71. $price = $v;
  72. if ($price > 0) {
  73. $item_goods_id = 0;
  74. $num = 1;
  75. $item_goods_money = $price * $num;
  76. $goods_money += $item_goods_money;
  77. $sku_name = '自定义充值金额' . $item_goods_money;
  78. $order_name = string_split($order_name, ',', '自定义充值金额' . $item_goods_money);
  79. $goods_list[] = array (
  80. 'goods_id' => $item_goods_id,
  81. 'sku_id' => $item_sku_id,
  82. 'price' => $price,
  83. 'num' => $num,
  84. 'goods_money' => $item_goods_money,
  85. 'real_goods_money' => $item_goods_money,
  86. 'sku_name' => $sku_name,
  87. 'goods_name' => '充值',
  88. 'goods_image' => $goods_image,
  89. 'spec_name' => '自定义充值',
  90. 'goods_class' => 'recharge',
  91. 'goods_class_name' => '充值礼包',
  92. 'is_virtual' => 1
  93. );
  94. }
  95. }
  96. }
  97. if (empty($goods_list))
  98. return $this->error([], '缺少必填参数商品数据');
  99. $data[ 'goods_money' ] = $goods_money;
  100. $order_money = $goods_money;
  101. $real_goods_money = $goods_money;
  102. $pay_money = $goods_money;
  103. $data[ 'goods_list' ] = $goods_list;
  104. $data[ 'real_goods_money' ] = $real_goods_money;
  105. $data[ 'order_name' ] = $order_name;
  106. $data[ 'order_money' ] = $order_money;
  107. $data[ 'pay_money' ] = $pay_money;
  108. return $this->success($data);
  109. }
  110. }
  111. }