根据用户id查看优惠券的信息。
放缓存?要想是什么缓存,是单机的还是redis分布式?放在缓存是读多写少的高并发的场景的。
方案:加索引。
用户优惠券列表返回值
package com.xdclass.couponserviceapi.dto;
import java.io.Serializable;
/**
* @author daniel
* 用户优惠券列表返回值
*/
public class UserCouponInfoDto extends UserCouponDto implements Serializable {
/**
* 优惠金额
*/
private Integer reduceAmount;
/**
* 达到金额,如满500减50
*/
private Integer achieveAmount;
public Integer getReduceAmount() {
return reduceAmount;
}
public void setReduceAmount(Integer reduceAmount) {
this.reduceAmount = reduceAmount;
}
public Integer getAchieveAmount() {
return achieveAmount;
}
public void setAchieveAmount(Integer achieveAmount) {
this.achieveAmount = achieveAmount;
}
}
@Override
public List<UserCouponInfoDto> userCouponList(Integer userId) {
List<UserCouponInfoDto> dtos = Lists.newArrayList();
if(userId==null){
return dtos;
}
List<TUserCoupon> userCoupon = getUserCoupon(userId);
if(CollectionUtils.isEmpty(userCoupon)){
return dtos;
}
Map<Integer,TCoupon> idCouponMap = getCouponMap(userCoupon);
//封装coupon
return wrapCoupon(userCoupon,idCouponMap);
}
--------------------------------13-1-----------13-2------------------------------
rpc远程挑试:
第一步:写junit测试
--------------------------------13-3------------------------------
首先暴露接口出去。
/***
* 获取有效时间的可用优惠券列表
* // 1、是否存在远程调用 HTTP、RPC Metrics
* // 2、大量内存处理 list.contain() ==>set.contain
* @return
*/
public List<CouponDto> getCouponList();
public String saveUserCoupon(UserCouponDto dto);
public List<UserCouponInfoDto> userCouponList(Integer userId);
起shop项目,注意要修改下mysql的版本为5.1.46。
连起来了:
--------------------------------13-4------------------------------