<noframes id="bhrfl"><address id="bhrfl"></address>

    <address id="bhrfl"></address>

    <noframes id="bhrfl"><address id="bhrfl"><th id="bhrfl"></th></address>

    <form id="bhrfl"><th id="bhrfl"><progress id="bhrfl"></progress></th></form>

    <em id="bhrfl"><span id="bhrfl"></span></em>

    全部
    常見問題
    產品動態
    精選推薦

    凍結積分后使用問題

    管理 管理 編輯 刪除

    問題說明:積分凍結后積分展示有誤,商品抵扣有誤

    修改文件:app\model\user\UserBill

    修改方法:searchIsFrozenAttr()

        public function searchIsFrozenAttr($query, $value)
        {
            if ($value) {
                $query->where('frozen_time', '>', time());
            } else {
                $query->where('frozen_time', '<=', time());
            }
        }


    修改文件:app\services\user\UserSignServices

    修改方法:signUser()

    public function signUser(int $uid, $sign, $integral, $all)
        {
            /** @var UserServices $userServices */
            $userServices = app()->make(UserServices::class);
            $user = $userServices->getUserCacheInfo($uid);
            if (!$user) {
                throw new ValidateException('數據不存在');
            }
            $data = ['uid' => $user['uid'], 'nickname' => $user['nickname'], 'phone' => $user['phone'], 'now_money' => $user['now_money'], 'integral' => $user['integral'], 'is_promoter' => $user['is_promoter'] ?? 0];
            //是否統計簽到
            if ($sign || $all) {
                $data['sum_sgin_day'] = $this->getSignSumDay($uid);
                $data['is_day_sgin'] = $this->getIsSign($uid);
                $data['is_YesterDay_sgin'] = $this->getIsSign($uid, 'yesterday');
                if (!$data['is_day_sgin'] && !$data['is_YesterDay_sgin']) {
                    $data['sign_num'] = 0;
                }
            }
            /** @var UserIntegralServices $userIntegralServices */
            $userIntegralServices = app()->make(UserIntegralServices::class);
            [$clear_integral, $clear_time] = $userIntegralServices->getUserClearIntegral($uid, $user);
            $data['clear_integral'] = $clear_integral;
            $data['clear_time'] = $clear_time;
            //是否統計積分使用情況
            if ($integral || $all) {
                /** @var UserBillServices $userBill */
                $userBill = app()->make(UserBillServices::class);
                $data['sum_integral'] = intval($userBill->getRecordCount($uid, 'integral', [], '', true));
                $data['deduction_integral'] = intval($userBill->getRecordCount($uid, 'integral') ?? 0);
                $data['today_integral'] = intval($userBill->getRecordCount($uid, 'integral', [], 'today', true));
    
                $data['frozen_integral'] = $userBill->getBillSum(['uid' => $uid, 'category' => 'integral', 'pm' => 1, 'is_frozen' => 1]);
                $data['integral'] = bcsub((string)$user['integral'],(string)$data['frozen_integral'],0);
                $data['integral_effective_status'] = (int)sys_config('integral_effective_status');
                $data['clear_end'] = '';
                if ($data['integral_effective_status']) {
                    [$clear_end, $start, $end] = $userIntegralServices->getTime();
                    $data['clear_end'] = date('Y-m-d', $clear_end);
                }
            }
            if (!$user['is_promoter']) {
                $data['is_promoter'] = (int)sys_config('store_brokerage_statu') == 2;
            }
            return $data;
        }


    修改文件:app\services\user\UserServices

    修改方法:personalHome()

    public function personalHome(array $user, $tokenData)
        {
            $uid = (int)$user['uid'];
            /** @var StoreCouponUserServices $storeCoupon */
            $storeCoupon = app()->make(StoreCouponUserServices::class);
            /** @var UserMoneyServices $userMoneyServices */
            $userMoneyServices = app()->make(UserMoneyServices::class);
            /** @var UserExtractServices $userExtract */
            $userExtract = app()->make(UserExtractServices::class);
            /** @var StoreOrderServices $storeOrder */
            $storeOrder = app()->make(StoreOrderServices::class);
            /** @var UserLevelServices $userLevel */
            $userLevel = app()->make(UserLevelServices::class);
            /** @var StoreServiceServices $storeService */
            $storeService = app()->make(StoreServiceServices::class);
            /** @var WechatUserServices $wechatUser */
            $wechatUser = app()->make(WechatUserServices::class);
            /** @var UserRelationServices $productRelation */
            $productRelation = app()->make(UserRelationServices::class);
            /** @var SystemMessageServices $systemMessageServices */
            $systemMessageServices = app()->make(SystemMessageServices::class);
            /** @var DiyServices $diyServices */
            $diyServices = app()->make(DiyServices::class);
            /** @var AgentLevelServices $agentLevelServices */
            $agentLevelServices = app()->make(AgentLevelServices::class);
            /** @var StoreProductLogServices $storeProductLogServices */
            $storeProductLogServices = app()->make(StoreProductLogServices::class);
            //是否存在核銷碼
            if (!$user['bar_code']) {
                $bar_code = $this->getBarCode();
                $this->dao->update($uid, ['bar_code' => $bar_code], 'uid');
                $user['bar_code'] = $bar_code;
            }
            //獲取配置參數
            $configData = SystemConfigService::more([
                'member_card_status',
                'brokerage_func_status',
                'store_brokerage_statu',
                'store_brokerage_price',
                'member_func_status',
                'recharge_switch',
                'extract_time',
                'balance_func_status',
                'invoice_func_status',
                'special_invoice_status',
                'user_extract_bank_status',
                'user_extract_wechat_status',
                'user_extract_alipay_status',
                'user_extract_balance_status',
                'level_activate_status'
            ]);
            //看付費會員是否開啟
            $user['is_open_member'] = $user['svip_open'] = !!($configData['member_card_status'] ?? 0);
            $user['agent_level_name'] = '';
            //分銷等級信息
            if ($user['agent_level']) {
                $levelInfo = $agentLevelServices->getLevelInfo((int)$user['agent_level'], 'id,name');
                $user['agent_level_name'] = $levelInfo && $levelInfo['name'] ? $levelInfo['name'] : '';
            }
            $wechatUserInfo = $wechatUser->getOne(['uid' => $uid, 'user_type' => $tokenData['type']], 'uid,is_complete');
            $user['is_complete'] = $wechatUserInfo['is_complete'] ?? 0;
            $user['couponCount'] = $storeCoupon->getUserValidCouponCount((int)$uid);
            $user['like'] = $productRelation->getUserCount($uid, 0, 'like');
            $user['collectProductCount'] = $productRelation->getUserCount($uid, 0, 'collect', 'product');
            $user['collectVideoCount'] = 0;
            if (sys_config('video_func_status', 1)) {
                $user['collectVideoCount'] = $productRelation->getUserCount($uid, 0, 'collect', 'video');
            }
            $user['orderStatusNum'] = $storeOrder->getOrderData($uid);
            $user['notice'] = 0;
            $user['recharge'] = $userMoneyServices->getRechargeSum($uid);//累計充值
            $user['orderStatusSum'] = (float)$userMoneyServices->sum(['uid' => $uid, 'pm' => 0, 'status' => 1], 'number', true);
            $user['extractTotalPrice'] = $userExtract->getExtractSum(['uid' => $uid, 'status' => 1]);//累計提現
            $user['extractPrice'] = $user['brokerage_price'];//可提現
            $user['statu'] = (int)($configData['store_brokerage_statu'] ?? 0);
            $orderStatusSum = (float)$storeOrder->sum(['pid' => 0, 'paid' => 1, 'refund_status' => [0, 3], 'uid' => $user['uid'], 'is_del' => 0], 'pay_price', true);//累計有效消費
            $user['spread_status'] = ($configData['brokerage_func_status'] ?? 1) && $this->checkUserPromoter($user['uid'], $user, $orderStatusSum);
            if (!$user['is_promoter'] && $user['spread_status']) {
                $this->dao->update($uid, ['is_promoter' => 1], 'uid');
                $user['is_promoter'] = 1;
            }
            if ($user['statu'] == 3) {
                $storeBrokeragePrice = $configData['store_brokerage_price'] ?? 0;
                $user['promoter_price'] = bcsub((string)$storeBrokeragePrice, (string)$user['orderStatusSum'], 2);
            }
            /** @var UserBrokerageServices $userBrokerageServices */
            $userBrokerageServices = app()->make(UserBrokerageServices::class);
            $user['broken_commission'] = max($userBrokerageServices->getUserFrozenPrice($uid), 0);
            $user['commissionCount'] = max(bcsub((string)$user['brokerage_price'], (string)$user['broken_commission'], 2), 0);
            $user['spread_user_count'] = $this->dao->count(['spread_uid' => $uid]);
            $user['spread_order_count'] = $storeOrder->count(['type' => 0, 'paid' => 1, 'refund_status' => [0, 3], 'is_del' => 0, 'is_system_del' => 0, 'spread_or_uid' => $uid]);
            //用戶等級信息
            $userLevelInfo = $userLevel->homeGetUserLevel((int)$user['uid'], $user);
            $user = array_merge($user, $userLevelInfo);
            $user['yesterDay'] = $userBrokerageServices->getUsersBokerageSum(['uid' => $uid, 'pm' => 1], 'yesterday');
            $user['recharge_switch'] = (int)($configData['recharge_switch'] ?? 0);//充值開關
            $user['adminid'] = $storeService->checkoutIsService(['uid' => $uid, 'status' => 1, 'customer' => 1]);
            $user['broken_day'] = (int)($configData['extract_time'] ?? 0);//傭金凍結時間
            $user['balance_func_status'] = (int)($configData['balance_func_status'] ?? 0);
            $user['invioce_func'] = !!($configData['invoice_func_status'] ?? 0);
            $user['special_invoice'] = $user['invioce_func'] && ($configData['special_invoice_status'] ?? 0);
            $user['pay_vip_status'] = $user['is_ever_level'] || ($user['is_money_level'] && $user['overdue_time'] > time());
            $user['member_style'] = (int)$diyServices->getColorChange('member');
            if ($user['is_ever_level']) {
                $user['vip_status'] = 1;//永久會員
            } else {
                if (!$user['is_money_level'] && $user['overdue_time'] && $user['overdue_time'] < time()) {
                    $user['vip_status'] = -1;//開通過已過期
                } else if (!$user['overdue_time'] && !$user['is_money_level']) {
                    $user['vip_status'] = 2;//沒有開通過
                } else if ($user['is_money_level'] && $user['overdue_time'] && $user['overdue_time'] > time()) {
                    $user['vip_status'] = 3;//開通了,沒有到期
                }
            }
            $user['service_num'] = $systemMessageServices->getUserMessageNum($uid);
            $user['is_agent_level'] = ($configData['brokerage_func_status'] ?? 1) && $agentLevelServices->count(['status' => 1, 'is_del' => 0]);
            $user['visit_num'] = $storeProductLogServices->getDistinctCount(['uid' => $uid, 'type' => 'visit'], 'product_id');
            $user['user_extract_bank_status'] = (int)($configData['user_extract_bank_status'] ?? 1);
            $user['user_extract_wechat_status'] = (int)($configData['user_extract_wechat_status'] ?? 1);
            $user['user_extract_alipay_status'] = (int)($configData['user_extract_alipay_status'] ?? 1);
            $user['user_extract_balance_status'] = (int)($configData['user_extract_balance_status'] ?? 1);
            //是否享受新人專享
            /** @var StoreNewcomerServices $newcomerServices */
            $newcomerServices = app()->make(StoreNewcomerServices::class);
            $user['newcomer_status'] = $newcomerServices->checkUserNewcomer($uid);
            $user['level_activate_status'] = $configData['level_activate_status'];
            $user['member_func_status'] = $configData['member_func_status'];
            $extendInfo = SystemConfigService::get('user_extend_info', []);
            $user['register_extend_info'] = [];
            if (!$user['level_activate_status'] || $user['level_status']) {//不需要激活,用戶激活狀態默認為1
                $user['level_status'] = 1;
            } else {
                $user['level_status'] = 0;
            }
            /** @var UserBillServices $userBill */
            $userBill = app()->make(UserBillServices::class);
            $user['integral'] = bcsub((string)$user['integral'],(string)$userBill->getBillSum(['uid' => $uid, 'category' => 'integral', 'pm' => 1, 'is_frozen' => 1]),0);
            if ($extendInfo) {
                foreach ($extendInfo as $item) {
                    if (isset($item['use']) && $item['use'] && isset($item['user_show']) && $item['user_show']) $user['register_extend_info'][] = $item;
                }
            }
            if (isset($user['extend_info']) && $user['extend_info']) {
                $default = $this->defaultExtendInfo;
                $params = array_column($default, 'param');
                $sex = $this->rSex;
                foreach ($user['extend_info'] as &$info) {
                    if (isset($info['param']) && in_array($info['param'], $params)) {
                        if ($info['param'] == 'sex') {
                            $info['value'] = $sex[$user['sex']] ?? 0;
                        } elseif ($info['param'] == 'birthday') {
                            $info['value'] = ($user['birthday'] ?? '') ? date('Y-m-d', $user['birthday']) : '';
                        } elseif ($info['param'] == 'address') {
                            $info['value'] = $user['addres'] ?? '';
                        } else {
                            $info['value'] = $user[$info['param']] ?? '';
                        }
                    }
                }
            }
    
            $user['is_default_avatar'] = $user['avatar'] == sys_config('h5_avatar') ? 1 : 0;
            $user['promoter_status'] = app()->make(SystemUserApplyServices::class)->value(['uid' => $user['uid'], 'is_del' => 0, 'type' => 0], 'status') ?? -1;
            return $user;
        }


    修改文件:app\services\order\StoreOrderComputedServices

    修改方法:useIntegral()

    public function useIntegral(bool $useIntegral, $userInfo, string $payPrice, array $other)
        {
            /** @var UserBillServices $userBillServices */
            $userBillServices = app()->make(UserBillServices::class);
            // 可用積分
            $usable = bcsub((string)$userInfo['integral'], (string)$userBillServices->getBillSum(['uid' => $userInfo['uid'], 'category' => 'integral', 'pm' => 1, 'is_frozen' => 1]), 0);
    
            $deductionPrice = 0;
            $usedIntegral = 0;
            if ($userInfo && $useIntegral && $usable > 0 && $payPrice) {
    			$integralMaxType = sys_config('integral_max_type', 1);//積分抵用上限類型1:積分、2:訂單金額比例
    			if ($integralMaxType == 1) {//最多抵用積分
    				$integralMaxNum = sys_config('integral_max_num', 200);
    				if ($integralMaxNum > 0 && $usable > $integralMaxNum) {
    					$integral = $integralMaxNum;
    				} else {
    					$integral = $usable;
    				}
    				$deductionPrice = (float)bcmul((string)$integral, (string)$other['integralRatio'], 2);
    				if ($deductionPrice < $payPrice) {
    					$payPrice = bcsub((string)$payPrice, (string)$deductionPrice, 2);
    					$usedIntegral = $integral;
    				} else {
    					if ($other['integralRatio']) {
    						$deductionPrice = $payPrice;
    						$usedIntegral = (int)ceil(bcdiv((string)$payPrice, (string)$other['integralRatio'], 2));
    					}
    					$payPrice = 0;
    				}
    			} else {//最高抵用比率
    				$integralMaxRate = sys_config('integral_max_rate', 0);
    				$deductionPrice = (float)bcmul((string)$usable, (string)$other['integralRatio'], 2);
    				if ($integralMaxRate > 0 && $integralMaxRate <= 100) {
    					$integralMaxPrice = (float)bcmul((string)$payPrice, (string)bcdiv((string)$integralMaxRate, '100', 2), 2);
    				} else {
    					$integralMaxPrice = $payPrice;
    				}
    				$deductionPrice = min($deductionPrice, $integralMaxPrice);
    				$payPrice = bcsub((string)$payPrice, (string)$deductionPrice, 2);
    				$usedIntegral = ceil(bcdiv((string)$deductionPrice, (string)$other['integralRatio'], 2));
    			}
                if ($payPrice <= 0) $payPrice = 0;
            }
            $SurplusIntegral = (int)bcsub((string)$usable, $usedIntegral, 0);
            return [$payPrice, $deductionPrice, $usedIntegral, $SurplusIntegral];
        }


    修改文件:app\services\order\StoreOrderServices

    修改方法:getOrderConfirmData()


    public function getOrderConfirmData(array $user, $cartId, bool $new, int $addressId, int $shipping_type = 1, int $store_id = 0, int $coupon_id = 0)
        {
            $addr = $data = [];
            $uid = (int)$user['uid'];
            /** @var UserAddressServices $addressServices */
            $addressServices = app()->make(UserAddressServices::class);
            if ($addressId) {
                $addr = $addressServices->getAdderssCache($addressId);
            }
            //沒傳地址id或地址已刪除未找到 ||獲取默認地址
            if (!$addr) {
                $addr = $addressServices->getUserDefaultAddressCache($uid);
            }
            $data['upgrade_addr'] = 0;
            if ($addr) {
                $addr = is_object($addr) ? $addr->toArray() : $addr;
                if (isset($addr['upgrade']) && $addr['upgrade'] == 0) {
                    $data['upgrade_addr'] = 1;
                }
            } else {
                $addr = [];
            }
            if ($store_id) {
                /** @var SystemStoreServices $storeServices */
                $storeServices = app()->make(SystemStoreServices::class);
                $storeServices->getStoreInfo($store_id);
            }
            /** @var StoreCartServices $cartServices */
            $cartServices = app()->make(StoreCartServices::class);
            //獲取購物車信息
            $cartGroup = $cartServices->getUserProductCartListV1($uid, $cartId, $new, $addr, $shipping_type, $store_id, $coupon_id);
            $storeFreePostage = floatval(sys_config('store_free_postage')) ?: 0;//滿額包郵金額
            $data['storeFreePostage'] = $storeFreePostage;
            $validCartInfo = $cartGroup['valid'];
            $giveCartList = $cartGroup['giveCartList'] ?? [];
            /** @var StoreOrderComputedServices $computedServices */
            $computedServices = app()->make(StoreOrderComputedServices::class);
            $priceGroup = $computedServices->getOrderPriceGroup($uid, $validCartInfo, $addr, $storeFreePostage);
            $priceGroup['couponPrice'] = $cartGroup['couponPrice'] ?? 0;
    		$priceGroup['useCoupon'] = $cartGroup['useCoupon'] ?? [];
            $priceGroup['firstOrderPrice'] = $cartGroup['firstOrderPrice'] ?? 0;
            $validCartInfo = array_merge($priceGroup['cartInfo'] ?? $validCartInfo, $giveCartList);
            $other = [
                'offlinePostage' => sys_config('offline_postage'),
                'integralRatio' => sys_config('integral_ratio'),
                'give_integral' => $cartGroup['giveIntegral'] ?? 0,
                'give_coupon' => $cartGroup['giveCoupon'] ?? [],
                'give_product' => $cartGroup['giveProduct'],
                'promotions' => $cartGroup['promotions']
            ];
            $deduction = $cartGroup['deduction'];
            $data['product_type'] = $deduction['product_type'] ?? 0;
            $data['valid_count'] = count($validCartInfo);
            $data['addressInfo'] = $addr;
            $data['type'] = $deduction['type'] ?? 0;
            $data['activity_id'] = $deduction['activity_id'] ?? 0;
            $data['seckill_id'] = $deduction['type'] == 1 ? $deduction['activity_id'] : 0;
            $data['bargain_id'] = $deduction['type'] == 2 ? $deduction['activity_id'] : 0;
            $data['combination_id'] = $deduction['type'] == 3 ? $deduction['activity_id'] : 0;
    		$data['storeIntegralId'] = $deduction['type'] == 4 ? $deduction['activity_id'] : 0;
    		$data['discount_id'] = $deduction['type'] == 5 ? $deduction['activity_id'] : 0;
            $data['luck_record_id'] = $deduction['type'] == 8 ? $deduction['activity_id'] : 0;
    		$data['newcomer_id'] = $deduction['type'] == 7 ? $deduction['activity_id'] : 0;
            $data['collate_code_id'] = $deduction['type'] == 9 || $deduction['type'] == 10 ? $deduction['collate_code_id'] : 0;
            $data['deduction'] = in_array($deduction['product_type'], [1, 2]) || $deduction['activity_id'] > 0;
            $data['cartInfo'] = array_merge($cartGroup['cartInfo'], $giveCartList);
            // $data['giveCartInfo'] = $giveCartList;
            $data['custom_form'] = [];
            if (isset($cartGroup['cartInfo'][0]['productInfo']['system_form_id']) && $cartGroup['cartInfo'][0]['productInfo']['system_form_id']) {
    			/** @var SystemFormServices $systemFormServices */
    			$systemFormServices = app()->make(SystemFormServices::class);
    			$formInfo = $systemFormServices->value(['id' => $cartGroup['cartInfo'][0]['productInfo']['system_form_id']], 'value');
    			if ($formInfo) {
    				$data['custom_form'] = is_string($formInfo) ? json_decode($formInfo, true) : $formInfo;
    			}
            }
            $data['give_integral'] = $other['give_integral'];
            $data['give_coupon'] = [];
            if ($other['give_coupon']) {
                /** @var StoreCouponIssueServices $couponIssueService */
                $couponIssueService = app()->make(StoreCouponIssueServices::class);
                $data['give_coupon'] = $couponIssueService->getColumn([['id', 'IN', $other['give_coupon']]], 'id,coupon_title');
            }
            $data['priceGroup'] = $priceGroup;
            $data['orderKey'] = $this->cacheOrderInfo($uid, $validCartInfo, $priceGroup, $other, $addr, $cartGroup['invalid'] ?? [], $deduction);
    
    		$userInfo = ['uid' => $user['uid'], 'nickname' => $user['nickname'], 'phone' => $user['phone'], 'now_money' => $user['now_money'], 'integral' => $user['integral']];
    		$userInfo['vip'] = isset($priceGroup['vipPrice']) && $priceGroup['vipPrice'] > 0;
    		$userInfo['vip_id'] = 0;
    		$userInfo['discount'] = 0;
    		//用戶等級是否開啟
    		if (sys_config('member_func_status', 1)) {
    			/** @var UserLevelServices $levelServices */
    			$levelServices = app()->make(UserLevelServices::class);
    			$userLevel = $levelServices->getUerLevelInfoByUid($uid);
    			if ($userInfo['vip'] || $userLevel) {
    				$userInfo['vip'] = true;
    				$userInfo['vip_id'] = $userLevel['id'] ?? 0;
    				$userInfo['discount'] = $userLevel['discount'] ?? 0;
    			}
    		}
    		$userInfo['real_name'] = isset($user['real_name']) && $user['real_name'] ? $user['real_name'] : $user['nickname'];
    		$userInfo['record_pone'] = isset($user['record_phone']) && $user['record_phone'] ?  $user['record_phone'] : $user['phone'];
            /** @var UserBillServices $userBill */
            $userBill = app()->make(UserBillServices::class);
            $userInfo['integral'] = bcsub((string)$userInfo['integral'], (string)$userBill->getBillSum(['uid' => $userInfo['uid'], 'category' => 'integral', 'pm' => 1, 'is_frozen' => 1]), 0);
            $data['userInfo'] = $userInfo;
    
    		$data['offlinePostage'] = $other['offlinePostage'];
            $data['integralRatio'] = $other['integralRatio'];
    		$data['integral_ratio_status'] = (int)sys_config('integral_ratio_status', 1);
            $data['store_func_status'] = (int)(sys_config('store_func_status', 1));//門店是否開啟
            $data['store_self_mention'] = false;//門店核銷
            $data['store_delivery_status'] = false;//門店配送
            if ($data['store_func_status']) {
                //門店核銷是否開啟
                /** @var SystemStoreServices $systemStoreServices */
                $systemStoreServices = app()->make(SystemStoreServices::class);
                $data['store_self_mention'] = sys_config('store_self_mention') && $systemStoreServices->count(['type' => 0, 'delivery_type' => [1, 3]]);
                $data['store_delivery_status'] = !!$systemStoreServices->count(['type' => 0, 'delivery_type' => [1, 2]]);
            }
            $data['store_func_status'] = $data['store_func_status'] && ($data['store_self_mention'] || $data['store_delivery_status']);
    
            $data['system_store'] = [];//門店信息
            /** @var UserInvoiceServices $userInvoice */
            $userInvoice = app()->make(UserInvoiceServices::class);
            $invoice_func = $userInvoice->invoiceFuncStatus();
            $data['invoice_func'] = $invoice_func['invoice_func'];
            $data['special_invoice'] = $invoice_func['special_invoice'];
    		/** @var UserServices $userServices */
    		$userServices = app()->make(UserServices::class);
    		$data['svip_status'] = $svip_status = $userServices->checkUserIsSvip($uid);
    		$svip_price = 0.00;
    		//開啟付費會員 且用戶不是付費會員 //計算 開通付費會員節省金額
    		if (sys_config('member_card_status', 1) && !$svip_status) {
    			$payPrice = $cartServices->getPayPrice((string)$priceGroup['totalPrice'], (string)($priceGroup['couponPrice'] ?? 0), (string)($priceGroup['firstOrderPrice'] ?? 0));
    			[$vipPayPrice, $payPostage, $storePostageDiscount] = $cartServices->computeUserVipCart($uid, $cartId, $shipping_type, $new, $store_id, false, $coupon_id, $addr);
    			$svip_price = (float)max(bcadd((string)bcsub((string)$payPrice, (string)$vipPayPrice, 2), (string)$storePostageDiscount, 2), 0);
    		}
    		$data['svip_price'] = $svip_price;
            /** @var UserBillServices $userBillServices */
            $userBillServices = app()->make(UserBillServices::class);
            $data['usable_integral'] = bcsub((string)$user['integral'], (string)$userBillServices->getBillSum(['uid' => $user['uid'],'category' => 'integral', 'pm' => 1, 'is_frozen' => 1]), 0);
            $data['integral_open'] = sys_config('integral_ratio', 0) > 0;
            return $data;
        }


    修改文件:app\services\activity\lottery\LuckLotteryServices

    修改方法:getLotteryNum()

    public function getLotteryNum(int $uid, int $lottery_id, array $userInfo = [], array $lottery = [])
        {
            /** @var UserServices $userServices */
            $userServices = app()->make(UserServices::class);
            if (!$userInfo) {
                $userInfo = $userServices->getUserInfo($uid);
            }
            if (!$userInfo) {
                throw new ValidateException('用戶不存在');
            }
            if (!$lottery) {
                $lottery = $this->dao->getLottery($lottery_id, '*', [], true);
            }
            if (!$lottery) {
                throw new ValidateException('該活動已經下架,請持續關注');
            }
            //抽獎類型:1:積分2:余額3:下單支付成功4:訂單評價5:拉新人
            switch ($lottery['factor']) {
                case 1:
                    /** @var UserBillServices $userBillServices */
                    $userBillServices = app()->make(UserBillServices::class);
                    $usable_integral = bcsub((string)$userInfo['integral'], (string)$userBillServices->getBillSum(['uid' => $userInfo['uid'],'category' => 'integral', 'pm' => 1, 'is_frozen' => 1]), 0);
                    return $usable_integral > 0 && $lottery['factor_num'] > 0 ? floor($usable_integral / $lottery['factor_num']) : 0;
                    break;
                case 2:
                    return $userInfo['now_money'] > 0 && $lottery['factor_num'] > 0 ? floor($userInfo['now_money'] / $lottery['factor_num']) : 0;
                    break;
                case 3:
                    return $this->getCacheLotteryNum($uid, 'order');
                    break;
                case 4:
                    return $this->getCacheLotteryNum($uid, 'comment');
                    break;
                case 5:
                    return $userInfo['spread_lottery'] ?? 0;
                    break;
                default:
                    throw new ValidateException('暫未有該類型活動');
                    break;
            }
        }


    修改文件:app\services\order\StoreOrderCreateServices

    修改方法:deductIntegral()

    public function deductIntegral(array $userInfo, bool $useIntegral, array $priceData, int $uid, string $key)
        {
            $res2 = true;
            if (sys_config('integral_ratio_status', 1) && $userInfo && $useIntegral && $userInfo['integral'] > 0) {
                /** @var UserServices $userServices */
                $userServices = app()->make(UserServices::class);
                if (!$priceData['SurplusIntegral'] && $priceData['usedIntegral'] >= $userInfo['integral']) {
                    $integral = 0;
                } else {
                    $integral = bcsub((string)$userInfo['integral'], (string)$priceData['usedIntegral']);
                }
                $res2 = false !== $userServices->update($uid, ['integral' => $integral]);
                /** @var UserBillServices $userBillServices */
                $userBillServices = app()->make(UserBillServices::class);
                $res3 = $userBillServices->income('deduction', $uid, [
                    'number' => (int)$priceData['usedIntegral'],
                    'deductionPrice' => $priceData['deduction_price']
                ], $integral, $key);
    
                $res2 = $res2 && false != $res3;
            }
            if (!$res2) {
                throw new ValidateException('使用積分抵扣失敗!');
            }
        }


    請登錄后查看

    全 最后編輯于2024-12-11 11:19:30

    快捷回復
    回復
    回復
    回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
    排序 默認正序 回復倒序 點贊倒序

    {{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

    作者 管理員 企業

    {{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
    {{item.is_suggest == 1? '取消推薦': '推薦'}}
    沙發 板凳 地板 {{item.floor}}#
    {{item.user_info.title || '暫無簡介'}}
    附件

    {{itemf.name}}

    {{item.created_at}}  {{item.ip_address}}
    打賞
    已打賞¥{{item.reward_price}}
    {{item.like_count}}
    {{item.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復

    {{itemc.user_info.nickname}}

    {{itemc.user_name}}

    回復 {{itemc.comment_user_info.nickname}}

    附件

    {{itemf.name}}

    {{itemc.created_at}}
    打賞
    已打賞¥{{itemc.reward_price}}
    {{itemc.like_count}}
    {{itemc.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復
    查看更多
    打賞
    已打賞¥{{reward_price}}
    1180
    {{like_count}}
    {{collect_count}}
    添加回復 ({{post_count}})

    相關推薦

    快速安全登錄

    使用微信掃碼登錄
    {{item.label}} 加精
    {{item.label}} {{item.label}} 板塊推薦 常見問題 產品動態 精選推薦 首頁頭條 首頁動態 首頁推薦
    取 消 確 定
    回復
    回復
    問題:
    問題自動獲取的帖子內容,不準確時需要手動修改. [獲取答案]
    答案:
    提交
    bug 需求 取 消 確 定
    打賞金額
    當前余額:¥{{rewardUserInfo.reward_price}}
    {{item.price}}元
    請輸入 0.1-{{reward_max_price}} 范圍內的數值
    打賞成功
    ¥{{price}}
    完成 確認打賞

    微信登錄/注冊

    切換手機號登錄

    {{ bind_phone ? '綁定手機' : '手機登錄'}}

    {{codeText}}
    切換微信登錄/注冊
    暫不綁定
    亚洲欧美字幕
    CRMEB客服

    CRMEB咨詢熱線 咨詢熱線

    400-8888-794

    微信掃碼咨詢

    CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
    返回頂部 返回頂部
    CRMEB客服