CouponService.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace addons\CloudStock\common\services;
  3. use addons\CloudStock\common\models\CloudStockAgent;
  4. use addons\CloudStock\common\models\CloudStockGoods;
  5. use addons\CloudStock\common\models\CouponSetting;
  6. use addons\Coupon\common\enums\AddonsCouponEnum;
  7. use addons\Coupon\common\models\AddonsCouponUserRelate;
  8. use common\enums\StatusEnum;
  9. use common\models\user\UserWithdrawLog;
  10. use yii\helpers\Json;
  11. use Exception;
  12. use Yii;
  13. class CouponService extends BaseService
  14. {
  15. /**
  16. * 赠送优惠券
  17. * @param $type 0补货 1配货
  18. * @param $user_id
  19. * @param $goods_arr [['goods_id'=>1,'num'=>2],['goods_id'=>2,'num'=>5]]
  20. * @return bool
  21. */
  22. public function compute($type, $user_id,$goods_arr)
  23. {
  24. $where = ['goods_id' => array_column($goods_arr,'goods_id'), 'mall_id' => $this->mall_id, 'is_buhuo' => 1, 'status' => StatusEnum::ENABLED];
  25. if($type == 1){
  26. $where['is_peihuo'] = 1;
  27. }
  28. $cloud_stock_goods_list = CloudStockGoods::find()->where($where)->asArray()->all();
  29. if (empty($cloud_stock_goods_list)) {
  30. return true;
  31. }
  32. $coupon_goods = [];
  33. $goods_arr = array_column($goods_arr,null,'goods_id');
  34. foreach ($cloud_stock_goods_list as $item){
  35. $coupon_goods[] = [
  36. 'goods_id'=>$item['goods_id'],
  37. 'num'=>$goods_arr[$item['goods_id']]['num'],
  38. ];
  39. }
  40. $cloud_stock_agent = CloudStockAgent::getOne([
  41. ['user_id' => $user_id],
  42. ['mall_id' => $this->mall_id],
  43. ['status' => StatusEnum::ENABLED],
  44. ]);
  45. $coupon_data = CouponSetting::getGiveCoupon($this->mall_id,$coupon_goods,$cloud_stock_agent['level']);
  46. if(empty($coupon_data)) return true;
  47. $give_arr = [];
  48. foreach ($coupon_data as $item){
  49. if($item['give_num'] <= 0) continue;
  50. foreach ($item['coupon_arr'] as $coupon){
  51. if(isset($give_arr[$coupon['coupon_id']])){
  52. $give_arr[$coupon['coupon_id']] += $coupon['num'] * $item['give_num'];
  53. }else{
  54. $give_arr[$coupon['coupon_id']] = $coupon['num'] * $item['give_num'];
  55. }
  56. }
  57. }
  58. if(empty($give_arr)) return true;
  59. $res = AddonsCouponUserRelate::giveCoupon($this->mall_id, $user_id, $give_arr, AddonsCouponEnum::SEND_FROM20);
  60. if($res === false) Yii::error(AddonsCouponUserRelate::getStaticError());
  61. return true;
  62. }
  63. }