192 lines
6.1 KiB
PHP
192 lines
6.1 KiB
PHP
<?php
|
|
|
|
namespace app\traits;
|
|
|
|
use app\exception\RepositoryException;
|
|
use app\model\Account;
|
|
use app\model\CouponMain;
|
|
use app\model\UsingRule;
|
|
use think\Model;
|
|
use app\model\Coupon;
|
|
|
|
|
|
trait CouponTrait
|
|
{
|
|
/**消费者持有签到券总数
|
|
* @param string $userCode
|
|
*
|
|
*
|
|
* @return int
|
|
*/
|
|
public function consumerTotalCoupon($userCode)
|
|
{
|
|
return Coupon::where("consumer_code", $userCode)->count("id");
|
|
}
|
|
|
|
/**消费者已使用签到券总数
|
|
* @param string $userCode
|
|
* @return int
|
|
*/
|
|
public function consumerUsedTotalCoupon($userCode)
|
|
{
|
|
return Coupon::where("consumer_code", $userCode)->where("is_verificated", Coupon::is_verificated_on)->count("id");
|
|
}
|
|
|
|
/**
|
|
* 消费者已使用签到券总数
|
|
* @param string $userCode
|
|
* @return int
|
|
*/
|
|
public function consumerNotUsedTotalCoupon($userCode)
|
|
{
|
|
return Coupon::where("consumer_code", $userCode)->where("is_verificated", Coupon::is_verificated_off)->count("id");
|
|
}
|
|
|
|
/**
|
|
* 消费者已使用签到券总数
|
|
* @param string $userCode
|
|
* @return array
|
|
* @throws \Exception
|
|
*/
|
|
public function consumerCouponList($where, $page, $size)
|
|
{
|
|
return Coupon::findList($where, [], $page, $size, function ($q){
|
|
return $q->with("couponBill");
|
|
}, ["id" => "desc"]);
|
|
}
|
|
|
|
/**
|
|
* 查看某个签到券的是否可以领取 0 可以领取 1 已领取不能再领取
|
|
* @param $accountCode
|
|
* @param CouponMain $couponMain
|
|
* @return int
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\DbException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
*/
|
|
public function getCouponReceiveStatus($accountCode,CouponMain $couponMain )
|
|
{
|
|
|
|
//如果 领取数量==总数
|
|
if($couponMain['received_count'] == $couponMain['count'] ){
|
|
return CouponMain::receive_status_over;
|
|
}
|
|
|
|
|
|
//没有领取记录就可以领取
|
|
$ReceiveCount = Coupon::where("coupon_id",$couponMain->id)
|
|
->where("consumer_code",$accountCode)
|
|
->count();
|
|
if($ReceiveCount <= 0){
|
|
return CouponMain::receive_status_default;
|
|
}else{
|
|
return CouponMain::receive_status_received;
|
|
}
|
|
|
|
//确定使用规则
|
|
//$usingRule =UsingRule::where("coupon_id",$couponMain->id)->find();
|
|
//if(empty($usingRule)){
|
|
// return CouponMain::COMMON_OFF;
|
|
//}
|
|
|
|
//单人日限量
|
|
//$todayReceivesCount = Coupon::where("coupon_id",$couponMain->id)
|
|
// ->where("consumer_code",$accountCode)
|
|
// ->whereTime("received_time","between",[date("Y-m-d 00:00:00"),date("Y-m-d 23:59:59")])
|
|
// ->count();
|
|
|
|
//if($todayReceivesCount >= $usingRule->person_day_total ){
|
|
|
|
//return CouponMain::COMMON_ON;
|
|
//}
|
|
|
|
|
|
//单人总限量
|
|
//if($ReceiveCount >= $usingRule->person_total ){
|
|
// return CouponMain::COMMON_ON;
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* 查看某个签到券的是否可以领取 0 可以领取 1 已领取不能再领取
|
|
* @param Account $account
|
|
* @param CouponMain $couponMain
|
|
* @return void
|
|
* @throws RepositoryException
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\DbException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
*/
|
|
public function getCouponReceiveStatusText(Account $account,CouponMain $couponMain )
|
|
{
|
|
//没有领取记录就可以领取
|
|
$ReceiveCount = Coupon::where("coupon_id",$couponMain->id)
|
|
->where("consumer_code",$account->user_code)->count();
|
|
|
|
if(!empty($ReceiveCount)){
|
|
throw new RepositoryException("您已经领取过了");
|
|
}
|
|
|
|
//确定使用规则
|
|
//$usingRule =UsingRule::where("coupon_id",$couponMain->id)->find();
|
|
//if(empty($usingRule)){
|
|
// throw new RepositoryException("使用规则错误,不能领取");
|
|
//}
|
|
|
|
|
|
//一天的总限量
|
|
//$dayTotalReceivesCount = Coupon::where("coupon_id",$couponMain->id)
|
|
// ->whereTime("received_time","between",[date("Y-m-d 00:00:00"),date("Y-m-d 23:59:59")])
|
|
// ->count();
|
|
//if($dayTotalReceivesCount >= $usingRule->day_total){
|
|
// throw new RepositoryException("单日领取总限量达到上限");
|
|
//}
|
|
|
|
|
|
//单人日限量
|
|
//$todayReceivesCount = Coupon::where("coupon_id",$couponMain->id)
|
|
// ->where("consumer_code",$account->user_code)
|
|
// ->whereTime("received_time","between",[date("Y-m-d 00:00:00"),date("Y-m-d 23:59:59")])
|
|
// ->count();
|
|
//if($todayReceivesCount >= $usingRule->person_day_total ){
|
|
// throw new RepositoryException("单人日限量达到上限");
|
|
//}
|
|
|
|
//单人总限量
|
|
//if($ReceiveCount >= $usingRule->person_total ){
|
|
// throw new RepositoryException("单人总限量达到上限");
|
|
//}
|
|
|
|
//白名单
|
|
if(!empty($couponMain->white_list)){
|
|
if (
|
|
//empty($account->real_name) ||
|
|
empty($account->mobile)) {
|
|
throw new RepositoryException("请先授权手机号");
|
|
}
|
|
if (false === strpos($couponMain->white_list, $account->mobile
|
|
//. "-" . $account->real_name
|
|
)) {
|
|
throw new RepositoryException("您没有在该签到券白名单内");
|
|
}
|
|
}
|
|
|
|
|
|
return ;
|
|
//领取不做限制 使用才做限制
|
|
|
|
//$time = time();
|
|
//一天的开始时间
|
|
//if(strtotime(date("Y-m-d " . $usingRule->day_start_time)) > $time){
|
|
// throw new RepositoryException("请在当天{$usingRule->day_start_time}-{$usingRule->day_start_time}领取");
|
|
//}
|
|
//一天的结束时间
|
|
//if(strtotime(date("Y-m-d ".$usingRule->day_end_time)) < $time){
|
|
// throw new RepositoryException("请在当天{$usingRule->day_start_time}-{$usingRule->day_start_time}前领取");
|
|
//}
|
|
|
|
}
|
|
} |