修改创建问诊订单 优惠卷部分
This commit is contained in:
@@ -10,34 +10,75 @@ use App\Model\UserCoupon;
|
||||
class UserCouponService extends BaseService
|
||||
{
|
||||
/**
|
||||
* 获取用户可用优惠卷-单条
|
||||
* @param string|int $user_id 用户id
|
||||
* @param string|int $inquiry_type 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
|
||||
* @param int $coupon_client 使用平台(1:小程序)
|
||||
* 获取患者问诊可用的优惠卷
|
||||
* @param string|int $user_id
|
||||
* @param string|int $inquiry_type
|
||||
* @return array
|
||||
*/
|
||||
public function getUserUsableCouponOne(string|int $user_id, string|int $inquiry_type, int $coupon_client = 1): array
|
||||
public function getUserInquiryUsableCoupon(string|int $user_id, string|int $inquiry_type): 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:删除)
|
||||
|
||||
$application_scope_params = [1, $inquiry_type]; // 适用范围(1:全部 2:快速问诊 3:专家问诊 4:公益问诊 5:问诊购药)
|
||||
|
||||
$user_coupon = \App\Model\UserCoupon::getDateWithCouponOne($params, $coupon_params, $application_scope_params);
|
||||
if (empty($user_coupon)) {
|
||||
$user_coupons = UserCoupon::getUserInquiryUsableCoupon($user_id, $inquiry_type);
|
||||
if (empty($user_coupons)) {
|
||||
return array();
|
||||
}
|
||||
|
||||
return $user_coupon->toArray();
|
||||
// 选中的优惠卷
|
||||
$selected_coupons = array();
|
||||
|
||||
// 优惠卷最高金额
|
||||
$coupon_high_price = 0;
|
||||
|
||||
// 是否存在互斥卷
|
||||
$is_mutex = 0;
|
||||
|
||||
// 可选择优惠卷中是否存在互斥卷
|
||||
foreach ($user_coupons as $coupon) {
|
||||
if ($coupon['is_mutex'] == 1) {
|
||||
$is_mutex = 1;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($user_coupons as $coupon) {
|
||||
if (empty($selected_coupon)) {
|
||||
$selected_coupons[] = $coupon; // 选中的优惠卷数据
|
||||
|
||||
$coupon_high_price = $coupon['coupon_price'];
|
||||
continue;
|
||||
}
|
||||
|
||||
// 处理存在互斥卷情况
|
||||
if ($is_mutex == 1) {
|
||||
// 选择金额最高的为选中
|
||||
if ($coupon['coupon_price'] < $coupon_high_price){
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($coupon['coupon_price'] > $coupon_high_price) {
|
||||
$coupon_high_price = $coupon['coupon_price'];
|
||||
|
||||
// 选中的优惠卷数据置空
|
||||
$selected_coupons = array();
|
||||
$selected_coupons[] = $coupon;
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$selected_coupons[] = $coupon; // 选中的优惠卷数据
|
||||
}
|
||||
|
||||
return $selected_coupons;
|
||||
}
|
||||
|
||||
// 获取可用优惠卷总金额
|
||||
public function getCouponTotalPrice(array $coupons): int
|
||||
{
|
||||
$coupon_total_price = 0;
|
||||
|
||||
foreach ($coupons as $coupon){
|
||||
$coupon_total_price = bcadd($coupon_total_price,$coupon['coupon_price'],2);
|
||||
}
|
||||
|
||||
return $coupon_total_price;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user