hospital-applets-api/app/Services/CouponService.php
2023-02-17 17:10:16 +08:00

96 lines
3.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}
}