96 lines
3.6 KiB
PHP
96 lines
3.6 KiB
PHP
<?php
|
||
|
||
namespace App\Services;
|
||
|
||
use App\Model\Coupon;
|
||
use App\Model\UserCoupon;
|
||
|
||
/**
|
||
* 优惠卷
|
||
*/
|
||
class CouponService extends BaseService
|
||
{
|
||
/**
|
||
* 获取用户可用优惠卷
|
||
* @param string|int $user_id 用户id
|
||
* @param string|int $inquiry_type 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
|
||
* @param int $coupon_client 使用平台(1:小程序)
|
||
* @return array
|
||
*/
|
||
public function getUserUsableCoupon(string|int $user_id,string|int $inquiry_type,int $coupon_client = 1): array
|
||
{
|
||
// 问诊类型需加1
|
||
$inquiry_type = $inquiry_type + 1;
|
||
|
||
$params = array();
|
||
$params[] = ['user_id','=',$user_id];
|
||
$params[] = ['user_coupon_status','=',0];// 状态(0:未使用 1:已使用 3:已过期)
|
||
$params[] = ['valid_start_time','>',date('Y-m-d H:i:s',time())]; // 有效使用时间
|
||
$params[] = ['valid_end_time','<',date('Y-m-d H:i:s',time())]; // 过期使用时间
|
||
|
||
$coupon_params = array();
|
||
$coupon_params[] = ['coupon_client','=',$coupon_client];
|
||
$coupon_params[] = ['coupon_status','=',1]; // 状态(1:正常 2:强制失效 3:结束 4:删除)
|
||
$coupon_params[] = ['application_scope','in',[1,$inquiry_type]]; // 适用范围(1:全部 2:快速问诊 3:专家问诊 4:公益问诊 5:问诊购药)
|
||
|
||
$user_coupon = UserCoupon::getWithCouponList($params,$coupon_params);
|
||
if (empty($user_coupon)){
|
||
return array();
|
||
}
|
||
|
||
return $user_coupon->toArray();
|
||
}
|
||
|
||
/**
|
||
* 发放用户优惠卷
|
||
* @param int $distribution_object 发放对象(1:新注册用户 2:会员 3:近期消费 4:近期购药)
|
||
* @param string $user_id
|
||
* @param string $patient_id
|
||
* @param int $coupon_client 使用平台(1:小程序)
|
||
* @return bool
|
||
*/
|
||
public function DistributeCoupon(int $distribution_object,string $user_id,string $patient_id,int $coupon_client = 1): bool
|
||
{
|
||
$params = array();
|
||
$params['coupon_client'] = $coupon_client;
|
||
$params['coupon_status'] = 1;
|
||
$params['distribution_object'] = $distribution_object; // 发放对象(1:新注册用户 2:会员 3:近期消费 4:近期购药)
|
||
|
||
$coupon = Coupon::getList($params);
|
||
if (empty($coupon)){
|
||
return true;
|
||
}
|
||
|
||
foreach ($coupon as $key => $value){
|
||
// 判断发放数量
|
||
if ($value['coupon_count'] == $value['coupon_take_count']){
|
||
continue;
|
||
}
|
||
|
||
// 进行发放
|
||
$data = array();
|
||
$data['user_id'] = $user_id;
|
||
$data['patient_id'] = $patient_id;
|
||
$data['coupon_id'] = $value['coupon_id'];
|
||
|
||
if ($value['valid_type'] == 1){
|
||
// 有效类型(1:绝对时效,xxx-xxx时间段有效 2:相对时效 n天内有效)
|
||
$data['valid_start_time'] = $value['valid_start_time']; // 有效使用时间
|
||
$data['valid_end_time'] = $value['valid_end_time']; // 过期使用时间
|
||
}elseif ($value['valid_type'] == 2){
|
||
// 有效类型(1:绝对时效,xxx-xxx时间段有效 2:相对时效 n天内有效)
|
||
$data['valid_start_time'] = date('Y-m-d H:i:s',time()); // 有效使用时间
|
||
$data['valid_end_time'] = date("Y-m-d H:i:s",strtotime($value['valid_days'] . " day"));
|
||
}else{
|
||
return false;
|
||
}
|
||
|
||
$res = UserCoupon::addUserCoupon($data);
|
||
if (empty($res)){
|
||
return false;
|
||
}
|
||
}
|
||
|
||
return true;
|
||
}
|
||
} |