StoreCouponIssue.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. /**
  3. *
  4. * @author: xaboy<365615158@qq.com>
  5. * @day: 2018/01/18
  6. */
  7. namespace app\routine\model\store;
  8. use basic\ModelBasic;
  9. use traits\ModelTrait;
  10. class StoreCouponIssue extends ModelBasic
  11. {
  12. use ModelTrait;
  13. /**
  14. * @param string $prefix
  15. * @return $this
  16. */
  17. public static function validWhere($prefix = '')
  18. {
  19. $model = new self;
  20. if($prefix){
  21. $model->alias($prefix);
  22. $prefix .= '.';
  23. }
  24. $newTime = time();
  25. return $model->where("{$prefix}status",1)
  26. ->where(function($query) use($newTime,$prefix){
  27. $query->where(function($query) use($newTime,$prefix){
  28. $query->where("{$prefix}start_time",'<',$newTime)->where("{$prefix}end_time",'>',$newTime);
  29. })->whereOr(function ($query) use($prefix){
  30. $query->where("{$prefix}start_time",0)->where("{$prefix}end_time",0);
  31. });
  32. })->where("{$prefix}is_del",0);
  33. }
  34. public static function issueUserCoupon($id,$uid)
  35. {
  36. $issueCouponInfo = self::validWhere()->where('id',$id)->find();
  37. if(!$issueCouponInfo) return self::setErrorInfo('领取的优惠劵已领完或已过期!');
  38. if(StoreCouponIssueUser::be(['uid'=>$uid,'issue_coupon_id'=>$id]))
  39. return self::setErrorInfo('已领取过该优惠劵!');
  40. self::beginTrans();
  41. $res1 = false != StoreCouponUser::addUserCoupon($uid,$issueCouponInfo['cid']);
  42. $res2 = false != StoreCouponIssueUser::addUserIssue($uid,$id);
  43. $res3 = true;
  44. if($issueCouponInfo['total_count'] > 0){
  45. $issueCouponInfo['remain_count'] -= 1;
  46. $res3 = false !== $issueCouponInfo->save();
  47. }
  48. $res = $res1 && $res2 & $res3;
  49. self::checkTrans($res);
  50. return $res;
  51. }
  52. }