StoreCouponIssue.php 2.0 KB

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