f-li.cn

パッケージorg.rx.service.command.impl。

輸入lombok.Getter。
輸入lombok.Setter。
輸入org.rx.core.NQuery。
輸入org.rx.core.dto.media.MediaType。
輸入org.rx.core.dto.media.AdvFoundStatus。
輸入org.rx.core.dto.media.FindAdvResult;
輸入org.rx.service.command.Command;
輸入org.rx.service.command.HandleResult;
輸入org.springframework.context.annotation.Scope。
輸入org.springframework.core.annotation.Order。
輸入org.springframework.stereotype.Component。

輸入javax.annotation.Resource。

インポート 静的org.rx.core.Contract.require; 

@Order( 22 
@Component 
@Scope( "プロトタイプ" パブリック クラス BuyCmdが実装コマンド{
     プライベート 静的 最終列キー= "买を" ; 
    @Resource 
    プライベートFindAdvCmd findAdvCmdを。
    @Getter 
    @Setter 
    プライベート int型のステップ= 1 ;
    プライベート int型 ERRORCOUNT = 0 ; 

    @Override 
    パブリック ブールPEEK(文字列メッセージ){ 
        (メッセージ)を必要とします。
        メッセージ =message.trim()。

        ストリングgoodsName = tryGetGoodsName(メッセージ)。
        もし(!goodsName = NULL ){ 
            ステップ = 2 返す ; 
        } 
        戻り NQuery.of( "买" ).contains(メッセージ)。
    } 

    @Override 
    公共 HandleResult <ストリング> のhandleMessage(文字列はuserId、文字メッセージ){ 
        (userIdを、メッセージ)を必要とします。

        スイッチ(ステップ){
             ケース 1 
                ステップ = 2 リターン HandleResult.ok(+「1111は、私が商品にN- \ 1111買う」
                        +「N- \プロを、次の形式に返信してください」
                        +「N- \ ********を買う」
                        「\ N-を「+ 
                        」のような:アップルの携帯電話購入「これを);
             ケース 2 
                文字列goodsName = tryGetGoodsName(メッセージ);
                 IF(goodsName == nullの){
                     返す(HandleResult.okを」\ 1111は、私が品物1111を買いますN - 「+ 
                            」プロの回答形式エラーが、次の形式に返信してください:N \ - 「+ 
                            」のn \ ********を買います- 「+ 
                            」\ n」は+
                            "如:买苹果手机"、++ ERRORCOUNT> 2?ナルこの); 
                } 
                ため(のMediaType MEDIATYPE:新規のMediaType [] {MediaType.Taobao、MediaType.Jd}){ 
                    FindAdvResult recommendAdv = findAdvCmd.getRecommendAdv(MEDIATYPE、goodsName、USERID)。
                    場合(!recommendAdv = NULL && recommendAdv.getFoundStatus()== AdvFoundStatus.Ok){
                         返す(は、ユーザーID、recommendAdv findAdvCmd.handleResultをヌル)。
                    } 
                } 
                を返す)(findAdvCmd.noAdvします。
        } 
        を返す)(HandleResult.failします。
    }

    プライベート文字tryGetGoodsName(文字メッセージ){
         場合(!message.startsWith(キー)){
             戻り ヌル
        } 
        戻り message.substring(1 ).trim(); 
    } 
}

 

おすすめ

転載: www.cnblogs.com/Googler/p/11569631.html