MCoupon.Class.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. /**
  3. * 优惠券公共方法
  4. * Created by PhpStorm.
  5. * User: XiaoMing
  6. * Date: 2019/12/24
  7. * Time: 9:46
  8. */
  9. namespace Jobs\Model\MTopic\Market;
  10. use Jobs\Dao\DCoupon;
  11. use Jobs\Dao\DUserCoupon;
  12. use Mall\Framework\Core\StatusCode;
  13. trait MCoupon
  14. {
  15. /**
  16. * @param DCoupon $object
  17. * @param $selectParams
  18. * @param null $extends
  19. * @return bool
  20. */
  21. public function selectCoupon(DCoupon $object, $selectParams, $extends = null)
  22. {
  23. $fields = 'id,isMutex,customerIds,startTime,endTime,name,couponType,reducePrice,minPrice,remark,grantType,totalNum,allowNum,customerSourceId,useShop,mustCondition,grantStartTime,grantEndTime,applyRange,categoryCollect,brandCollect,receiveNum,goodsCollect';
  24. $nowTime = time();
  25. $sql = 'SELECT ' . $fields . ' FROM qianniao_coupon_' . $this->onlineEnterpriseId . ' WHERE deleteStatus=' . StatusCode::$standard . ' AND enableStatus='.StatusCode::$standard.' AND auditStatus=' . StatusCode::$auditStatus['auditPass'] . ' AND grantStartTime<' . $nowTime . ' AND grantEndTime> ' . $nowTime . ' AND totalNum>receiveNum AND grantType=' . $selectParams['grantType'].' AND couponType='.StatusCode::$couponType['commonly'];
  26. if (!empty($extends)) {
  27. $sql .= $extends;
  28. }
  29. $dbResult = $object->query($sql);
  30. if ($dbResult === false) {
  31. echo '优惠券查询错误' . $object->error() . PHP_EOL;
  32. exit;
  33. }
  34. if (empty($dbResult)) {
  35. echo '没有可领取的优惠券' . PHP_EOL;
  36. exit;
  37. }
  38. return $dbResult;
  39. }
  40. /**
  41. * 验证优惠券,自己可以领取那些
  42. * @param DUserCoupon $object
  43. * @param $coupon
  44. * @param $params
  45. * @return mixed
  46. */
  47. public function checkCoupon(DUserCoupon $object, $coupon, $params)
  48. {
  49. foreach ($coupon as $key => $val) {
  50. $coupon[$key]['allowNum'] = $val['allowNum'];
  51. if ($val['receiveNum'] >= $val['totalNum']){
  52. echo '优惠券'.$val['id'].'已经领取完了'.PHP_EOL;
  53. unset($coupon[$key]);
  54. continue;
  55. }
  56. $dbResult = $object->count(['couponId' => $val['id'], 'userId' => $params['userCenterId']]);
  57. if ($dbResult === false) {
  58. echo '领取记录查询失败' . $object->error() . PHP_EOL;
  59. exit;
  60. }
  61. if ($dbResult >= $val['allowNum']){
  62. echo '优惠券'.$val['id'].'已经领取了'.$dbResult.'张,每人限领取'.$val['allowNum'].'张'.PHP_EOL;
  63. unset($coupon[$key]);
  64. continue;
  65. }
  66. //剩余数量不足每人领取数量
  67. if ($val['receiveNum']+$val['allowNum'] > $val['totalNum']){
  68. $rec = $val['totalNum'] - $val['receiveNum'];
  69. $coupon[$key]['allowNum'] = $rec;
  70. }
  71. }
  72. if (empty($coupon)) {
  73. echo '优惠券都领取过了' . PHP_EOL;
  74. exit;
  75. }
  76. return $coupon;
  77. }
  78. /**
  79. * 添加领取记录
  80. * @param DUserCoupon $object
  81. * @param $coupon
  82. * @param $params
  83. */
  84. public function add(DUserCoupon $object, $coupon, $params)
  85. {
  86. $insert = [];
  87. foreach ($coupon as $key => $val) {
  88. for ($i = 0;$i < $val['allowNum'];$i++){
  89. $insert[] = [
  90. 'couponId' => $val['id'],
  91. 'name' => $val['name'],
  92. 'remark' => $val['remark'],
  93. 'couponType' => $val['couponType'],
  94. 'reducePrice' => $val['reducePrice'],
  95. 'minPrice' => $val['minPrice'],
  96. 'startTime' => $val['startTime'],
  97. 'endTime' => $val['endTime'],
  98. 'applyRange' => $val['applyRange'],
  99. 'categoryCollect' => $val['categoryCollect'],
  100. 'brandCollect' => $val['brandCollect'],
  101. 'goodsCollect' => $val['goodsCollect'],
  102. 'isExpire' => StatusCode::$delete,
  103. 'isUse' => StatusCode::$standard,
  104. 'userId' => $params['userCenterId'],
  105. 'useShop' => $val['useShop'],
  106. 'customerId' => $params['customerId'],
  107. 'source' => $val['grantType'],
  108. 'createTime' => time(),
  109. 'updateTime' => time(),
  110. 'customerIds' => $val['customerIds'],
  111. 'isMutex' => isset($val['isMutex']) ? $val['isMutex'] : StatusCode::$standard,
  112. ];
  113. }
  114. }
  115. $dbResult = $object->insert($insert, true);
  116. if ($dbResult === false) {
  117. echo '操作数据库失败' . $object->error() . PHP_EOL;
  118. exit();
  119. }
  120. echo '优惠券发送成功' . PHP_EOL;
  121. }
  122. /**
  123. * @param DCoupon $object
  124. * @param $coupon
  125. * @param $params
  126. */
  127. public function receiveNumIncr(DCoupon $object, $coupon, $params,$step=1)
  128. {
  129. foreach ($coupon as $val) {
  130. $sql = 'UPDATE qianniao_coupon_' . $this->onlineEnterpriseId . ' SET receiveNum=receiveNum+' . $val['allowNum'] . ' WHERE id=' . $val['id'];
  131. $dbResult = $object->query($sql);
  132. if ($dbResult === false) {
  133. echo '操作数据库失败' . $object->error() . PHP_EOL;
  134. exit();
  135. }
  136. echo '增加' . $val['id'] . '领取数量成功' . PHP_EOL;
  137. }
  138. }
  139. }