美文网首页
秒杀第十四节:秒杀模型管理--活动模型创建(与商品结合)

秒杀第十四节:秒杀模型管理--活动模型创建(与商品结合)

作者: 小石读史 | 来源:发表于2020-08-19 19:06 被阅读0次

    首先创建秒杀模型

    @Data
    public class PromoModel {
        private Integer id;
    
        //秒杀活动状态,1表示还未开始,2表示进行中,3表示已结束
        private Integer status;
    
        //秒杀活动名称
        private String promoName;
    
        //秒杀开始时间
        private DateTime startDate;
    
        private DateTime endDate;
    
        //秒杀活动使用商品
        private Integer itemId;
    
        //秒杀获得的商品价格
        private BigDecimal promoItemPrice;
    }
    

    增加pom引用

    <!--joda-->
        <dependency>
          <groupId>joda-time</groupId>
          <artifactId>joda-time</artifactId>
          <version>2.9.1</version>
        </dependency>
    

    表设计并初始化数据

    DROP TABLE IF EXISTS `promo`;
    
    CREATE TABLE `promo` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `promo_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `start_date` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
      `end_date` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
      `item_id` int(11) NOT NULL DEFAULT '0',
      `promo_item_price` decimal(10,2) NOT NULL DEFAULT '0.00',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    
    /*Data for the table `promo` */
    
    insert  into `promo`(`id`,`promo_name`,`start_date`,`end_date`,`item_id`,`promo_item_price`) values 
    (2,'小米水壶限时抢购','2019-04-11 00:00:00','2021-04-17 00:00:00',40,200.00);
    

    修改pom.xml将允许自动覆盖文件改为false,然后修改mybatis-generator.xml表,最后使用mybatis自动生成器生成基础服务。使用方式在秒杀第三节有说明

    将活动模型与商品模型结合。
    新增PromoService方法增加根据商品id查询秒杀活动信息接口

    public interface PromoService {
    
        PromoModel getPromoById(Integer itemId);
    }
    

    新增PromoServiceImpl implements PromoService

    @Service
    public class PromoServiceImpl implements PromoService {
    
        @Autowired
        PromoDOMapper promoDOMapper;
    
        @Override
        public PromoModel getPromoById(Integer itemId) {
            //获取对应商品的秒杀信息
            PromoDO promoDO = promoDOMapper.selectByItemId(itemId);
            PromoModel promoModel = convertFromDataObject(promoDO);
            if(promoModel == null) {
                return null;
            }
    
            //判断秒杀活动的当前状态
            DateTime now = new DateTime();
            if(promoModel.getStartDate().isAfterNow()){
                promoModel.setStatus(1);
            } else if(promoModel.getEndDate().isBeforeNow()) {
                promoModel.setStatus(3);
            } else {
                promoModel.setStatus(2);
            }
    
    
            return promoModel;
        }
    
        private PromoModel convertFromDataObject(PromoDO promoDO){
            if(promoDO == null) {
                return null;
            }
            PromoModel promoModel = new PromoModel();
            BeanUtils.copyProperties(promoDO,promoModel);
            promoModel.setStartDate(new DateTime(promoDO.getStartDate()));
            promoModel.setEndDate(new DateTime(promoDO.getEndDate()));
    
            return promoModel;
        }
    }
    

    在PromoDOMapper.java和PromoDOMapper.xml上新增根据商品id查询秒杀详情方法

    PromoDO selectByItemId(Integer itemId);
    
    <select id="selectByItemId" parameterType="java.lang.Integer" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from promo
        where item_id = #{itemId,jdbcType=INTEGER}
      </select>
    

    在ItemModel类中新增PromoModel类


    image.png

    在ItemServiceImpl的查询商品详情方法getItemById里面增加秒杀信息返回


    image.png

    在ItemVo中增加秒杀信息返回


    image.png
    修改ItemController中的查询商品详情方法返回秒杀信息
    image.png

    测试查询商品详情参数:http://localhost:8080/item/get?id=40
    返回值(包含秒杀信息):

    {
        "status": "success",
        "data": {
            "id": 40,
            "title": "小米水壶",
            "price": 299.00,
            "stock": 99,
            "description": "小水杯",
            "sales": null,
            "imgUrl": "https://i8.mifile.cn/a1/pms_1504498936.11861982.jpg",
            "promoStatus": 2,
            "promoPrice": 200.00,
            "promoId": 2,
            "startDate": "2019-04-11 00:00:00"
        }
    }
    

    相关文章

      网友评论

          本文标题:秒杀第十四节:秒杀模型管理--活动模型创建(与商品结合)

          本文链接:https://www.haomeiwen.com/subject/rowpdktx.html