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}前领取"); //} } }