package org.rx.service.command.impl;

import lombok.Getter;
import lombok.Setter;
import org.rx.core.NQuery;
import org.rx.core.dto.media.MediaType;
import org.rx.core.dto.media.AdvFoundStatus;
import org.rx.core.dto.media.FindAdvResult;
import org.rx.service.command.Command;
import org.rx.service.command.HandleResult;
import org.springframework.context.annotation.Scope;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import javax.annotation.Resource; import static org.rx.core.Contract.require; @Order(22)
@Component
@Scope("prototype")
public class BuyCmd implements Command {
private static final String key = "买";
@Resource
private FindAdvCmd findAdvCmd;
@Getter
@Setter
private int step = 1;
private int errorCount = 0; @Override
public boolean peek(String message) {
require(message);
message = message.trim(); String goodsName = tryGetGoodsName(message);
if (goodsName != null) {
step = 2;
return true;
}
return NQuery.of("买").contains(message);
} @Override
public HandleResult<String> handleMessage(String userId, String message) {
require(userId, message); switch (step) {
case 1:
step = 2;
return HandleResult.ok("一一一一我 买 商 品一一一一\n" +
"亲,请回复如下格式:\n" +
"买********\n" +
"\n" +
"如:买苹果手机", this);
case 2:
String goodsName = tryGetGoodsName(message);
if (goodsName == null) {
return HandleResult.ok("一一一一我 买 商 品一一一一\n" +
"亲,回复格式错误,请回复如下格式:\n" +
"买********\n" +
"\n" +
"如:买苹果手机", ++errorCount > 2 ? null : this);
}
for (MediaType mediaType : new MediaType[]{MediaType.Taobao, MediaType.Jd}) {
FindAdvResult recommendAdv = findAdvCmd.getRecommendAdv(mediaType, goodsName, userId);
if (recommendAdv != null && recommendAdv.getFoundStatus() == AdvFoundStatus.Ok) {
return findAdvCmd.handleResult(userId, recommendAdv, null);
}
}
return findAdvCmd.noAdv();
}
return HandleResult.fail();
} private String tryGetGoodsName(String message) {
if (!message.startsWith(key)) {
return null;
}
return message.substring(1).trim();
}
}

f-li.cn的更多相关文章

  1. http://f.dataguru.cn/forum.php?mod=viewthread&tid=44212&fromuid=4771

    http://f.dataguru.cn/forum.php?mod=viewthread&tid=44212&fromuid=4771

  2. 如何在Html的CSS中去除<li>标签前面小黑点,和ul、LI部分属性方法

    div是很多人做网站都会用到的,但在显示效果时前面总是会有一个小黑点,这个效果很多人不想要,但又不知到如何去除,然而我们可以用以下方法来清除. 1.在CSS中写入代码.找到相关性的CSS,在..li和 ...

  3. 如何在Html的div+css中去除<li>标签前面小黑点,和ul、LI部分属性方法

    div是很多人做网站都会用到的,但在显示效果时前面总是会有一个小黑点,这个效果很多人不想要,但又不知到如何去除,然而我们可以用以下方法来清除. 1.在CSS中写入代码.找到相关性的CSS,在..li和 ...

  4. 关于css中使用ul li的一些体会

    参考网址:http://hi.baidu.com/july_leo/item/5237cd612070ae2668105b40 如何修改ul li的显示 ----------------------- ...

  5. 2018"百度之星"程序设计大赛 - 资格赛 A/B/E/F

    调查问卷  Accepts: 505  Submissions: 2436  Time Limit: 6500/6000 MS (Java/Others)  Memory Limit: 262144/ ...

  6. [HTML]去除li前面的小黑点,和ul、LI部分属性

    [转] 对于很多人用div来做网站时,总会用到,但在显示效果时前面总是会有一个小黑点,这个令很多人头痛,但又找不到要源,其它我们可以用以下方法来清除.[HTML]去除li前面的小黑点,和ul.LI部分 ...

  7. HTML中的ul, ol,li , dl,dt, dd标签

    ul: unordered lists ol: ordered lists li: Lists ol 有序列表. <ol><li>……</li><li> ...

  8. [HTML]去除li前面的小黑点,和ul、LI部分属性[转]

    转摘自:http://blog.csdn.net/cqkxzyi/article/details/7606181 对于很多人用div来做网站时,总会用到,但在显示效果时前面总是会有一个小黑点,这个令很 ...

  9. Html中CSS之去除li前面的小黑点,和ul、LI部分属性方法

    对于很多人用div来做网站时,总会用到,但在显示效果时前面总是会有一个小黑点,这个令很多人头痛,但又找不到要源,其它我们可以用以下方法来清除.1.在CSS中写入代码.找到相关性的CSS,在..li和. ...

  10. 02.lib-v1.js

    /* Date: 2014-07-29 4:06:07 [PM] */ function StringBuilder() { this.strings = new Array, this.length ...

随机推荐

  1. ZROI week3

    作业 poj 1091 跳蚤 容斥原理. 考虑能否跳到旁边就是卡牌的\(gcd\)是否是1,可以根据裴蜀定理证明. 考虑正着做十分的麻烦,所以倒着做,也就是用\(M^N - (不合法)\)即可. 不合 ...

  2. PostgreSQL9.6的新特性并行查询

    PostgreSQL在2016年9月发布了9.6版本,在该版本中新增了并行计算功能,目前PG支持的并行查询主要是顺序扫描(Sequencial Scans),并且支持部分链接查询(join)和聚合(a ...

  3. Name your feature branches by convention

    https://docs.microsoft.com/en-us/azure/devops/repos/git/git-branching-guidance?view=azure-devops Nam ...

  4. 81、Tensorflow实现LeNet-5模型,多层卷积层,识别mnist数据集

    ''' Created on 2017年4月22日 @author: weizhen ''' import os import tensorflow as tf import numpy as np ...

  5. ADO方式,VC调用Execute执行INSERT INTO插入变量SQL语句的写法

    ADO方式,VC调用Execute执行INSERT INTO插入变量SQL语句的写法 有些情况下,SQL SERVER 2008r2中需要保存float,int类型的数据,当C 中的变量为double ...

  6. z-index只能用在定位元素上

    弄了很久才突然想到z-index只能用在被定位的元素上. 定位的时候要注意给父级定位 在ie7里有问题的部分

  7. PAT甲级——A1148 WerewolfSimpleVersion【20】

    Werewolf(狼人杀) is a game in which the players are partitioned into two parties: the werewolves and th ...

  8. 常用numpy和pandas

    常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数据进行快速运算的标准数学 ...

  9. sort的排序及使用

    sort() 方法在适当的位置对数组的元素进行排序,并返回数组.数组会按照字符的Unicode进行排序(把数组里面当成字符串处理) 1. 按升序排列: var arr=[1,11,2,22,5,4,0 ...

  10. Process Array

    http://xiaorui.cc/2016/05/10/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90multiprocessing%E7%9A%84value-array ...