0) { $blessing_condition[] = [ 'site_id', '=', $site_id ]; } $blessing_info = $blessing_model->getMemberCardBlessingInfo($blessing_condition)[ 'data' ] ?? []; if (empty($blessing_info)) return $this->error([], '礼品卡祝福已被领取或已失效'); //todo 后续必然增加队列控制 $member_card_id = $blessing_info[ 'member_card_id' ]; $member_card_model = new MemberCard(); $member_card_condition = array ( [ 'member_card_id', '=', $member_card_id ], [ 'is_transfer', '=', 0 ] ); if ($site_id > 0) { $member_card_condition[] = [ 'site_id', '=', $site_id ]; } $member_card_info = $member_card_model->getMemberCardInfo($member_card_condition)[ 'data' ] ?? []; if (empty($member_card_info)) return $this->error([], '当前礼品卡不存在或已被领取!'); $from_member_id = $member_card_info[ 'member_id' ]; $card_id = $member_card_info[ 'card_id' ]; $member_id = $params[ 'member_id' ]; $condition = array ( [ 'card_id', '=', $card_id ], [ 'member_id', '=', $from_member_id ] ); if ($from_member_id == $member_id) return $this->error([], '不能自己领取自己的礼品卡!'); $card_model = new Card(); $card_info = $card_model->getCardInfo($condition)[ 'data' ] ?? [];// if (empty($card_info)) return $this->error([], '当前礼品卡不存在或已被领取!'); $is_allow_transfer = $card_info[ 'is_allow_transfer' ]; if ($is_allow_transfer == 0) return $this->error([], '当前礼品卡不允许转赠!'); if ($card_info[ 'status' ] != 'to_use') return $this->error([], '只有待使用的礼品卡才允许转赠!'); //将原所属者改变 $transfer_params = array ( 'card_id' => $card_id, 'member_id' => $from_member_id, 'to_member_id' => $member_id, 'member_card_id' => $member_card_id ); $result = $member_card_model->memberCardTransfer($transfer_params); if ($result[ 'code' ] < 0) return $result; $set_params = array ( 'blessing_id' => $blessing_id, 'to_member_id' => $member_id ); $result = $blessing_model->setBlessingToMember($set_params); if ($result[ 'code' ] < 0) return $result; $card_params = array ( 'site_id' => $params[ 'site_id' ], 'from_member_id' => $from_member_id, 'member_id' => $member_id, 'card_id' => $card_id, 'source' => 'gift', ); $result = $member_card_model->addMemberCard($card_params); ( new CardLog() )->add([ 'card_id' => $card_id, 'type' => 'transfer', 'operator_type' => 'member',//todo 暂时是确定的 'operator' => $member_id, 'type_id' => $result[ 'data' ] ]); return $result; } }