Authored by zhaoqing

限定商品支持小程序

... ... @@ -12,7 +12,9 @@ import java.util.List;
public interface ProductLimitUserHelpMapper {
List<LimitProductHelpUserRespBO> selectHelpInfo(@Param("userId") Integer userId, @Param("limitProductCode") String limitProductCode);
void addhelpUserInfo(LimitProductHelpUser limitProductHelpUser);
void addHelpUserInfo(LimitProductHelpUser limitProductHelpUser);
List<LimitProductHelpUserRespBO> selectHelpInfoByUidAndCode(@Param("list") List<Integer> uidList, @Param("limitProductCode") String limitProductCode);
Integer selectExistHelpInfo(@Param("helpUserId") String helpUserId, @Param("limitProductCode") String limitProductCode);
}
... ...
... ... @@ -22,7 +22,7 @@
and limit_product_code = #{limitProductCode,jdbcType=VARCHAR}
</select>
<insert id="addhelpUserInfo" parameterType="com.yoho.activity.dal.model.LimitProductHelpUser">
<insert id="addHelpUserInfo" parameterType="com.yoho.activity.dal.model.LimitProductHelpUser">
insert into limit_product_help_user (user_id, help_user_id,help_user_name,help_user_img_url,limit_product_code,create_time)
values (#{userId,jdbcType=INTEGER}, #{helpUserId,jdbcType=VARCHAR}, #{helpUserName,jdbcType=VARCHAR},
#{helpUserImgUrl,jdbcType=VARCHAR}, #{limitProductCode,jdbcType=VARCHAR}, #{createTime,jdbcType=INTEGER}
... ... @@ -39,4 +39,9 @@
</foreach>
and limit_product_code = #{limitProductCode,jdbcType=VARCHAR}
</select>
<select id="selectExistHelpInfo" resultType="java.lang.Integer">
select count(1) FROM limit_product_help_user
where help_user_id = #{helpUserId,jdbcType=INTEGER} AND limit_product_code = #{limitProductCode,jdbcType=VARCHAR}
</select>
</mapper>
\ No newline at end of file
... ...
... ... @@ -29,6 +29,7 @@ public class ProductLimitUserHelpRest {
public ApiResponse queryHelpInfo(LimitProductHelpUserRequestBO limitProductHelpUserRequestBO) {
logger.info("ProductLimitUserHelpRest queryHelpInfo params is{}", limitProductHelpUserRequestBO);
if (null == limitProductHelpUserRequestBO){
logger.info("ProductLimitUserHelpRest queryHelpInfo params is{}", limitProductHelpUserRequestBO);
return new ApiResponse.ApiResponseBuilder().code(400).message("入参不可为空").build();
}
List<LimitProductHelpUserRespBO> limitProductHelpUserList = iProductLimitUserHelpService.queryHelpInfo(limitProductHelpUserRequestBO);
... ... @@ -38,12 +39,20 @@ public class ProductLimitUserHelpRest {
@RequestMapping(params = "method=app.limitProduct.addHelpUserInfo")
@ResponseBody
public ApiResponse addhelpUserInfo(LimitProductHelpUserRequestBO limitProductHelpUserRequestBO) {
logger.info("ProductLimitUserHelpRest addhelpUserInfo params is{}", limitProductHelpUserRequestBO);
public ApiResponse addHelpUserInfo(LimitProductHelpUserRequestBO limitProductHelpUserRequestBO) {
logger.info("ProductLimitUserHelpRest addHelpUserInfo params is{}", limitProductHelpUserRequestBO);
if (null == limitProductHelpUserRequestBO){
logger.info("ProductLimitUserHelpRest addHelpUserInfo result can not null");
return new ApiResponse.ApiResponseBuilder().code(400).message("入参不可为空").build();
}
iProductLimitUserHelpService.addhelpUserInfo(limitProductHelpUserRequestBO);
//判断用户是否已经助力
Boolean flag = iProductLimitUserHelpService.judgeHelpUserExist(limitProductHelpUserRequestBO);
if (flag){
logger.info("ProductLimitUserHelpRest addHelpUserInfo can not help repeat");
return new ApiResponse.ApiResponseBuilder().code(400).message("用户已经助力过,不可重复助力").build();
}
iProductLimitUserHelpService.addHelpUserInfo(limitProductHelpUserRequestBO);
logger.info("ProductLimitUserHelpRest addHelpUserInfo success");
return new ApiResponse.ApiResponseBuilder().code(200).message("用户助力成功").build();
}
}
... ...
... ... @@ -11,5 +11,7 @@ import java.util.List;
public interface IProductLimitUserHelpService {
List<LimitProductHelpUserRespBO> queryHelpInfo(LimitProductHelpUserRequestBO limitProductHelpUserRequestBO);
void addhelpUserInfo(LimitProductHelpUserRequestBO limitProductHelpUserRequestBO);
void addHelpUserInfo(LimitProductHelpUserRequestBO limitProductHelpUserRequestBO);
Boolean judgeHelpUserExist(LimitProductHelpUserRequestBO limitProductHelpUserRequestBO);
}
... ...
... ... @@ -5,16 +5,20 @@ import com.yoho.activity.common.redis.RedisValueCache;
import com.yoho.activity.common.utils.DateUtils;
import com.yoho.activity.dal.ProductLimitUserHelpMapper;
import com.yoho.activity.dal.model.LimitProductHelpUser;
import com.yoho.activity.queue.service.IDrawlineList2MapService;
import com.yoho.activity.queue.service.IProductLimitUserHelpService;
import com.yoho.core.rest.client.hystrix.AsyncFuture;
import com.yoho.service.model.activity.drawline.request.LimitProductHelpUserRequestBO;
import com.yoho.service.model.activity.drawline.response.LimitProductHelpUserListBO;
import com.yoho.service.model.activity.drawline.response.LimitProductHelpUserRespBO;
import com.yoho.service.model.activity.drawline.response.UserBaseRspBO;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
... ... @@ -28,7 +32,8 @@ public class ProductLimitUserHelpServiceImpl implements IProductLimitUserHelpSer
private RedisValueCache redisValueCache;
@Autowired
private ProductLimitUserHelpMapper productLimitUserHelpMapper;
@Autowired
private IDrawlineList2MapService drawlineList2MapService;
@Override
public List<LimitProductHelpUserRespBO> queryHelpInfo(LimitProductHelpUserRequestBO limitProductHelpUserRequestBO) {
//先走缓存,缓存没有再走库里捞
... ... @@ -43,20 +48,46 @@ public class ProductLimitUserHelpServiceImpl implements IProductLimitUserHelpSer
logger.info("ProductLimitUserHelpServiceImpl :: queryHelpInfo result is null");
return null;
}
//获取用户头像
getUserInfo(limitProductHelpUserRequestBO.getUserId(), limitProductHelpUserRespBOList);
limitProductHelpUserListBO.setList(limitProductHelpUserRespBOList);
redisValueCache.set(CacheKeyEnum.LIMIT_USER_HELP_INFO, redisKeySuffix, limitProductHelpUserListBO, 300, TimeUnit.SECONDS);
return limitProductHelpUserListBO.getList();
}
private void getUserInfo(Integer userId, List<LimitProductHelpUserRespBO> limitProductHelpUserRespBOList) {
List<Integer> uidList = new ArrayList<>();
uidList.add(userId);
AsyncFuture<UserBaseRspBO[]> userBaseRspBOArrAsync = drawlineList2MapService.postForUserBaseInfo(uidList);
UserBaseRspBO[] userBaseRspBOs = userBaseRspBOArrAsync.get();
for (LimitProductHelpUserRespBO limitProductHelpUserRespBO : limitProductHelpUserRespBOList){
for (UserBaseRspBO userBaseRspBO : userBaseRspBOs){
if (limitProductHelpUserRespBO.getUserId().equals(userBaseRspBO.getUid())){
limitProductHelpUserRespBO.setUserImgUrl(userBaseRspBO.getHeadIco());
break;
}
}
}
}
@Override
public void addhelpUserInfo(LimitProductHelpUserRequestBO limitProductHelpUserRequestBO) {
public void addHelpUserInfo(LimitProductHelpUserRequestBO limitProductHelpUserRequestBO) {
LimitProductHelpUser limitProductHelpUser = converToModel(limitProductHelpUserRequestBO);
productLimitUserHelpMapper.addhelpUserInfo(limitProductHelpUser);
productLimitUserHelpMapper.addHelpUserInfo(limitProductHelpUser);
//清除缓存
String redisKeySuffix = limitProductHelpUserRequestBO.getUserId() + ":" + limitProductHelpUserRequestBO.getLimitProductCode();
redisValueCache.delete(CacheKeyEnum.LIMIT_USER_HELP_INFO, redisKeySuffix);
}
@Override
public Boolean judgeHelpUserExist(LimitProductHelpUserRequestBO limitProductHelpUserRequestBO) {
Integer count = productLimitUserHelpMapper.selectExistHelpInfo(limitProductHelpUserRequestBO.getHelpUserId(),limitProductHelpUserRequestBO.getLimitProductCode());
if (count > 0){
return true;
}
return false;
}
private LimitProductHelpUser converToModel(LimitProductHelpUserRequestBO limitProductHelpUserRequestBO) {
LimitProductHelpUser limitProductHelpUser = new LimitProductHelpUser();
limitProductHelpUser.setUserId(limitProductHelpUserRequestBO.getUserId());
... ...