商品模块SQL和业务逻辑.md 9.25 KB

#product项目#

文档中只涉及数据库的相关查询逻辑,并未包含缓存的相关内容,具体请查询业务代码。

##CommentController 评论## ###查询商品的最新评论 1、yh_comment
select * from comments where element_id=? and comment_type=1 and status=1 order by create_time desc limit 1

###分页查询商品评论 1、yh_comment
select * from comments where element_id=? comment_type=1 and status=1 order by create_time desc limit ?,?
2、yoho_passport 查询用户昵称
select * from user_base where uid = #{uid} limit 1

##ConsultController 咨询 ###查询咨询总数 1、yh_passport

select count(1) from consult where product_id =? and answer_user_id > 0

###查询商品最新咨询 1、yh_passport
select * from consult where product_id =? and answer_user_id > 0 order by id DESC limit 1

###分页查询咨询 1、yh_passport
select * from consult where product_id =? and answer_user_id > 0 order by id DESC limit ?,?

###查询是咨询列表否点赞喜欢、有用 1、数据存储在redis中

"yh:like:id:" + consultId 咨询被喜欢次数
"yh:useful:id:" + consultId 咨询被用户点有用次数
"yh:like:id:" + consultId+":"+uid 该用户是否喜该咨询
"yh:useful:id:" + consultId+":"+uid 该用户是否对该咨询点有用

###新增咨询 1、yh_shops 查询product是否存在根据商品id。
select * from product where id=? 不存在直接抛异常,中断执行。

2、yh_passport 插入咨询表
insert into consult values()

###咨询点赞接口 1、判断是否已经点赞
从redis中取:"yh:like:id:" + consultId+":"+uid 判断用户是否已经点赞,已经点赞直接返回。
2、增加redis中key为:"yh:like:id:" + consultId。 咨询的点赞的总数。
3、增加redis中key为:"yh:like:id:" + consultId+":"+uid的值为1,标示已点赞
4、yh_consult 异步记录点赞表
a:select count(1) from consult_praise_$(consultId%100) where where consult_id=? and uid=? 判断是否已经点赞,已经点赞,直接返回
b:insert into consult_praise_$(consultId%100) (consult_id,uid,create_time) values(?,?,?)

###咨询有用接口 1、判断用户是否已经点击有用
从redis中取:"yh:useful:id:" + consultId+":"+uid 判断用户是否已经点击有用,已经点击则直接返回。
2、增加redis中key为:"yh:useful:id:" + consultId。咨询的有用总数。
3、增加redis中key为:"yh:useful:id:" + consultId+":"+uid;的值为1,标示该用户已经点击有用。
4、yh_consult 异步记录点有用
a:select count(1) from consult_useful_$(consultId%100) where consult_id=? and uid=? 判断用户是否已经点击有用,已经点有用,直接返回
b:insert into consult_useful_$(consultId%100) (consult_id,uid,create_time) values(?,?,?) 插入用户点击有用表。

##CouponsController ###根据品牌Id查询品牌及优惠券相关信息 1、缓存中查询品牌相关信息,品牌不存在直接返回。 2、yhb_promotion
select coupons_id from brand_coupons where status=2 and brand_id =? order by update_time desc,create_time desc 3、yhb_promotion
select * from coupons where id in ()

##KeywordsController ###搜索关键词及平台记录接口 1、异步插入表 yh_shops.search_keywords 表,平台编号

pc 1
mobile 2
h5 3
ipad 4

##LimitProductController 限量商品Controller ## ###查询已经发布的限量商品 ###

  1. 查询限量销售商品 select * from yh_shops.limit_product where 1=1 and status=1 and sale_time < UNIX_TIMESTAMP()order by sale_time DESC
  2. 查询限量销售商品关联商品 select * from yh_shops.limit_product_attach where product_id in()
  3. 封装关联关系并缓存
  4. 根据商品skn(erp_product_id)查询商品ID select * from yh_shops.product where erp_product_id in()
  5. 根据商品id查询商品价格 select * from yh_shops.product_price where product_id in()
  6. 封装并返回结果

查询热门发售的限量商品

  1. 查询限量热门商品 select * from yh_shops.limit_product where 1=1 and hotFlag=1 and status=1 order by order_by DESC (备注:区别于已经发布的是限量商品查询条件)
  2. 查询限量销售商品关联商品 select * from yh_shops.limit_product_attach where product_id in() (备注:limit_product_attach表中的product_id实际是limit_product表中的id,而不是商品表中的Id)
  3. 封装限量销售商品和附件的关联关系并缓存。
  4. 根据商品skn(erp_product_id)查询商品ID select * from yh_shops.product where erp_product_id in()
  5. 根据商品id查询商品价格 select * from yh_shops.product_price where product_id in()

###查询即将发售的限量商品###

  1. 查询即将发售的限量商品 select * from yh_shops.limit_product where 1=1 and status=1 and showFlag=1 and sale_time > UNIX_TIMESTAMP() order by order_by DESC,sale_time ASC;
  2. 查询限量销售商品关联商品 select * from yh_shops.limit_product_attach where product_id in() (备注:limit_product_attach表中的product_id实际是limit_product表中的id,而不是商品表中的Id)
  3. 封装限量销售商品和附件的关联关系并缓存。
  4. 根据商品skn(erp_product_id)查询商品ID select * from yh_shops.product where erp_product_id in()
  5. 根据商品id查询商品价格 select * from yh_shops.product_price where product_id in()

###根据限量商品code获取限量商品详情###

  1. 根据商品code查询限量商品 select * from yh_shops.limit_product where code =? and status=1

  2. 查询限量销售商品关联商品 select * from yh_shops.limit_product_attach where product_id in() (备注:limit_product_attach表中的product_id实际是limit_product表中的id,而不是商品表中的Id)

  3. 封装限量销售商品和附件的关联关系并缓存。

  4. 根据商品skn(erp_product_id)查询商品ID select * from yh_shops.product where erp_product_id in()

  5. 根据商品id查询商品价格 select * from yh_shops.product_price where product_id in()

###根据活动ID查询限量商品### 1.根据活动ID查询限量商品 select * form yh_shops.limit_product where activityId=? and status=1

  1. 查询限量销售商品关联商品 select * from yh_shops.limit_product_attach where product_id in() (备注:limit_product_attach表中的product_id实际是limit_product表中的id,而不是商品表中的Id)

###批量根据限量商品code获取限量商品详情###

  1. 根据商品code列表查询商品详情

select * from yh_shops.limit_product where code in ()

  1. 查询限量商品关联的商品 select * from yh_shops.limit_product_attach where product_id in()
  2. 封装限量销售商品和附件的关联关系并缓存。
  3. 根据商品skn(erp_product_id)查询商品ID select * from yh_shops.product where erp_product_id in()
  4. 根据商品id查询商品价格 select * from yh_shops.product_price where product_id in() ###已经发售的商品总数###
  5. 查询已经发售的商品总数 select count(1) from yh_shops.limit_product where sale_time<UNIX_TIMESTAMP() and status=1

###热门发售商品的发售总数###

  1. 查询热门发售商品的发售总数 select count(1) from yh_shops.limit_product where hotFlag=1 and status=1

###即将发售的商品总数## 1.查询即将发售的商品总数

select count(1) from yh_shops.limit_product where sale_time>UNIX_TIMESTAMP() and status=1 and showFlag=1

###给后台提供的新增限量商品###

  1. 校验限量商品是否存在
    select * from yh_shops.limit_product where code=?
  2. 插入限量商品
    insert into yh_shops.limit_product values();

#promotion模块

##CouponController ###发送优惠券 flag=1支持重复发送###

  1. 检查用户是否已经领取过优惠券

    select count(1) from yhb_promotion.coupons_logs where uid=8038725 and coupon_id=11759;

  2. 检查券是否存在

    select * from yhb_promotion.coupons where id= 11759;

  3. 查询券类型是否存在

select * from yhb_promotion.coupon_type ;

  1. 判断yhb_promotion.coupons.custom_type 是否存在,存在需要校验用户的会员级别等信息

  2. 查询一个可用的优惠券

    select * from yhb_promotion.coupons_sn where is_use="N" limit 1; select * from yhb_promotion.a_coupons_sn where is_use="N" limit 1; select * from yhb_promotion.b_coupons_sn where is_use="N" limit 1;

  3. 增加券的领用记录(包括用户id,是否重复领用标记,券号等)

insert into yhb_promotion.coupons_logs value();

  1. 缓存中增加券的领用数量,并设置用户的领券状态
  1. 记录用户领券同步表(用户id,券号等)

insert into yhb_promotion.user_coupon_logs_sync value();