123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <?php
- /**
- * 优惠券公共方法
- * Created by PhpStorm.
- * User: XiaoMing
- * Date: 2019/12/24
- * Time: 9:46
- */
- namespace Jobs\Model\MTopic\Market;
- use Jobs\Dao\DCoupon;
- use Jobs\Dao\DUserCoupon;
- use Mall\Framework\Core\StatusCode;
- trait MCoupon
- {
- /**
- * @param DCoupon $object
- * @param $selectParams
- * @param null $extends
- * @return bool
- */
- public function selectCoupon(DCoupon $object, $selectParams, $extends = null)
- {
- $fields = 'id,isMutex,customerIds,startTime,endTime,name,couponType,reducePrice,minPrice,remark,grantType,totalNum,allowNum,customerSourceId,useShop,mustCondition,grantStartTime,grantEndTime,applyRange,categoryCollect,brandCollect,receiveNum,goodsCollect';
- $nowTime = time();
- $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'];
- if (!empty($extends)) {
- $sql .= $extends;
- }
- $dbResult = $object->query($sql);
- if ($dbResult === false) {
- echo '优惠券查询错误' . $object->error() . PHP_EOL;
- exit;
- }
- if (empty($dbResult)) {
- echo '没有可领取的优惠券' . PHP_EOL;
- exit;
- }
- return $dbResult;
- }
- /**
- * 验证优惠券,自己可以领取那些
- * @param DUserCoupon $object
- * @param $coupon
- * @param $params
- * @return mixed
- */
- public function checkCoupon(DUserCoupon $object, $coupon, $params)
- {
- foreach ($coupon as $key => $val) {
- $coupon[$key]['allowNum'] = $val['allowNum'];
- if ($val['receiveNum'] >= $val['totalNum']){
- echo '优惠券'.$val['id'].'已经领取完了'.PHP_EOL;
- unset($coupon[$key]);
- continue;
- }
- $dbResult = $object->count(['couponId' => $val['id'], 'userId' => $params['userCenterId']]);
- if ($dbResult === false) {
- echo '领取记录查询失败' . $object->error() . PHP_EOL;
- exit;
- }
- if ($dbResult >= $val['allowNum']){
- echo '优惠券'.$val['id'].'已经领取了'.$dbResult.'张,每人限领取'.$val['allowNum'].'张'.PHP_EOL;
- unset($coupon[$key]);
- continue;
- }
- //剩余数量不足每人领取数量
- if ($val['receiveNum']+$val['allowNum'] > $val['totalNum']){
- $rec = $val['totalNum'] - $val['receiveNum'];
- $coupon[$key]['allowNum'] = $rec;
- }
- }
- if (empty($coupon)) {
- echo '优惠券都领取过了' . PHP_EOL;
- exit;
- }
- return $coupon;
- }
- /**
- * 添加领取记录
- * @param DUserCoupon $object
- * @param $coupon
- * @param $params
- */
- public function add(DUserCoupon $object, $coupon, $params)
- {
- $insert = [];
- foreach ($coupon as $key => $val) {
- for ($i = 0;$i < $val['allowNum'];$i++){
- $insert[] = [
- 'couponId' => $val['id'],
- 'name' => $val['name'],
- 'remark' => $val['remark'],
- 'couponType' => $val['couponType'],
- 'reducePrice' => $val['reducePrice'],
- 'minPrice' => $val['minPrice'],
- 'startTime' => $val['startTime'],
- 'endTime' => $val['endTime'],
- 'applyRange' => $val['applyRange'],
- 'categoryCollect' => $val['categoryCollect'],
- 'brandCollect' => $val['brandCollect'],
- 'goodsCollect' => $val['goodsCollect'],
- 'isExpire' => StatusCode::$delete,
- 'isUse' => StatusCode::$standard,
- 'userId' => $params['userCenterId'],
- 'useShop' => $val['useShop'],
- 'customerId' => $params['customerId'],
- 'source' => $val['grantType'],
- 'createTime' => time(),
- 'updateTime' => time(),
- 'customerIds' => $val['customerIds'],
- 'isMutex' => isset($val['isMutex']) ? $val['isMutex'] : StatusCode::$standard,
- ];
- }
- }
- $dbResult = $object->insert($insert, true);
- if ($dbResult === false) {
- echo '操作数据库失败' . $object->error() . PHP_EOL;
- exit();
- }
- echo '优惠券发送成功' . PHP_EOL;
- }
- /**
- * @param DCoupon $object
- * @param $coupon
- * @param $params
- */
- public function receiveNumIncr(DCoupon $object, $coupon, $params,$step=1)
- {
- foreach ($coupon as $val) {
- $sql = 'UPDATE qianniao_coupon_' . $this->onlineEnterpriseId . ' SET receiveNum=receiveNum+' . $val['allowNum'] . ' WHERE id=' . $val['id'];
- $dbResult = $object->query($sql);
- if ($dbResult === false) {
- echo '操作数据库失败' . $object->error() . PHP_EOL;
- exit();
- }
- echo '增加' . $val['id'] . '领取数量成功' . PHP_EOL;
- }
- }
- }
|