sale_id); $pic_url = VerifyCard::findOne($sale_log->verify_card_id)->pic_url; $account = VerifyCardAccount::findOne($sale_log->account_id)->account; $scene = "id:{$this->sale_id}"; $res = ShareQrcode::wxQrcode('user/write_off_card/card_write_card/card_write_card', $scene); $url_path = ''; if (isset($res['code']) && $res['code'] == 0) { $url_path = $res['url_path']; } return [ "code"=>0, "data"=>[ "pic_url"=>$pic_url, "url_path"=>$url_path, "account"=>$account ] ]; } public function clerkCard(){ $t = \Yii::$app->db->beginTransaction(); try { $user_id = get_saas_user_id(); $store_user_id = get_user_id(); $mdStaff = MdStaff::find()->where(['saas_user_id'=>$user_id,'is_delete'=>0])->one(); if(empty($mdStaff)){ throw new \Exception("非核销员与店长,不可核销"); } $sale_log = VerifyCardSale::findOne($this->sale_id); $card = VerifyCard::findOne($sale_log->verify_card_id); if ($sale_log->status == 1) { throw new \Exception("卡已兑换或核销"); } if ($card->begin_time > time() && intval($card->date_type) === 2) { throw new \Exception("卡未到使用时间 不可使用"); } if ($card->expire_day > 0 && $sale_log->end_time <= time()) { throw new \Exception("卡已过期,不能使用"); } if ($card->type == 1) { if($sale_log->left_num > 0) { $sale_log->use_num = $sale_log->use_num + 1; $sale_log->left_num = $sale_log->left_num - 1; $sale_log->left_num == 0 && $sale_log->status = 1; $sale_log->save(); } elseif($card->is_unlimited == 1) { /* begin 2025/07/28 09:21:50 id1267 判断是否为无限次核销卡 WPing丶 */ $sale_log->use_num = $sale_log->use_num + 1; $sale_log->save(); /* end */ }else{ throw new \Exception("核销卡次数已用完"); } } else if ($card->type == 2) { $sale_log->use_num = $sale_log->use_num + 1; $sale_log->left_num = $sale_log->left_num - 1; $sale_log->status = 1; $sale_log->save(); } else { throw new \Exception("未知类型,卡不可用"); } // 增加核销记录 $log = new VerifyCardLog(); $log->store_id = get_store_id(); $log->sale_id = $this->sale_id; $log->shop_id = $mdStaff->md_id; $log->verify_person = $store_user_id; $log->user_id = $sale_log->user_id; $log->use_time = time(); $log->type = VerifyCardLog::WRITE_TYPE_WRITE_OFF; $log->describe = $card->type == 1 ? '核销卡核销' : '礼品卡核销'; $log->save(); $t->commit(); return [ 'code' => 0, 'msg' => '核销完成', ]; } catch (\Exception $e) { $t->rollBack(); return [ 'code'=>1, 'msg'=>$e->getMessage() ]; } } public function getCard(){ try { $user_id = get_saas_user_id(); $mdStaff = MdStaff::find()->where(['saas_user_id'=>$user_id,'is_delete'=>0])->one(); if(empty($mdStaff)){ throw new \Exception("非核销员与店长,不可核销"); } $sale_log = VerifyCardSale::findOne($this->sale_id); if(intval($sale_log->status) !== 0){ throw new \Exception("卡已失效"); } $verifyCard = VerifyCard::findOne($sale_log->verify_card_id); $account = VerifyCardAccount::findOne($sale_log->account_id)->account; $goods_list = []; if ($verifyCard->type == 2) { $goods_list = Goods::find() ->where(['store_id' => get_store_id()]) ->andWhere(['in', 'id', json_decode($verifyCard->goods_ids, true)]) ->asArray() ->all(); foreach ($goods_list as $k => $val) { $val['attr'] = json_decode($val['attr'], true); $goods_info = Goods::findOne($val['id']); $goods_list[$k]['attr_group_list'] = $goods_info->getAttrGroupList(); } } return [ "code"=>0, "data"=>[ 'goods_list' => $goods_list, 'card_type' => $verifyCard->type, "pic_url"=>$verifyCard->pic_url, "bg_url"=>$verifyCard->bg_pic_url, "name"=>$verifyCard->name, "account"=>$account, "use_num"=>$sale_log->use_num, "left_num"=>$verifyCard->is_unlimited == 1 ? '无限次' : $sale_log->left_num, 'is_unlimited' => $verifyCard->is_unlimited,//2025年7月26日17:34:04 id1267开发内容:根据核销次数来判断是否是无限次卡(在规定时间内可无限次核销) ], "msg"=>"成功", ]; }catch (\Exception $e){ return [ "code"=>1, "msg"=>$e->getMessage() ]; } } }