14 changed files with 446 additions and 0 deletions
@ -0,0 +1,30 @@ |
|||
package com.epmet.resi.mine.dto.from; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotBlank; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @DateTime 2020/11/3 11:07 上午 |
|||
*/ |
|||
@Data |
|||
public class BadgeListFormDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = 9082922684993474574L; |
|||
|
|||
public interface BadgeList{} |
|||
|
|||
/** |
|||
* 用户ID |
|||
*/ |
|||
@NotBlank(message = "用户ID不能为空",groups = {BadgeList.class}) |
|||
private String userId; |
|||
|
|||
/** |
|||
* 客户ID |
|||
*/ |
|||
@NotBlank(message = "客户ID不能为空",groups = {BadgeList.class}) |
|||
private String customerId; |
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
package com.epmet.resi.mine.dto.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @DateTime 2020/11/3 11:08 上午 |
|||
*/ |
|||
@Data |
|||
public class BadgeListResultDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = -6542233940679158922L; |
|||
|
|||
/** |
|||
* 徽章ID |
|||
*/ |
|||
private String badgeId; |
|||
|
|||
/** |
|||
* 徽章图片地址 |
|||
*/ |
|||
private String badgeIcon; |
|||
|
|||
/** |
|||
* 徽章是否点亮 |
|||
*/ |
|||
private String isOpened; |
|||
} |
|||
@ -1,8 +1,16 @@ |
|||
package com.epmet.modules.badege.service; |
|||
|
|||
import com.epmet.resi.mine.dto.from.BadgeListFormDTO; |
|||
import com.epmet.resi.mine.dto.result.BadgeListResultDTO; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @DateTime 2020/11/3 10:52 上午 |
|||
*/ |
|||
public interface BadgeService { |
|||
|
|||
List<BadgeListResultDTO> getBadgeList(BadgeListFormDTO badgeListFormDTO); |
|||
|
|||
} |
|||
|
|||
@ -0,0 +1,15 @@ |
|||
package com.epmet.constant; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @DateTime 2020/11/3 2:45 下午 |
|||
*/ |
|||
public interface BadgeConstant { |
|||
|
|||
String BADGE_KEY = "epmet:badge:"; |
|||
|
|||
String BADGE = "badge"; |
|||
|
|||
String DEFAULT_CUSTOMER = "default"; |
|||
|
|||
} |
|||
@ -0,0 +1,26 @@ |
|||
package com.epmet.dto.form; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotBlank; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @DateTime 2020/11/3 11:07 上午 |
|||
*/ |
|||
@Data |
|||
public class UserBadgeListFormDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = 9082922684993474574L; |
|||
|
|||
/** |
|||
* 用户ID |
|||
*/ |
|||
private String userId; |
|||
|
|||
/** |
|||
* 客户ID |
|||
*/ |
|||
private String customerId; |
|||
} |
|||
@ -0,0 +1,46 @@ |
|||
package com.epmet.dto.result; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonIgnore; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @DateTime 2020/11/3 11:08 上午 |
|||
*/ |
|||
@Data |
|||
public class UserBadgeListResultDTO implements Serializable { |
|||
|
|||
private static final long serialVersionUID = -6542233940679158922L; |
|||
|
|||
/** |
|||
* 徽章ID |
|||
*/ |
|||
private String badgeId; |
|||
|
|||
/** |
|||
* 徽章图片地址 |
|||
*/ |
|||
private String badgeIcon; |
|||
|
|||
/** |
|||
* 徽章是否点亮 |
|||
*/ |
|||
private String isOpened; |
|||
@JsonIgnore |
|||
private String customerId; |
|||
@JsonIgnore |
|||
private String badgeName; |
|||
@JsonIgnore |
|||
private String fixationBadgeType; |
|||
@JsonIgnore |
|||
private Boolean status; |
|||
|
|||
public UserBadgeListResultDTO() { |
|||
this.badgeId = ""; |
|||
this.badgeIcon = ""; |
|||
this.isOpened = "0"; |
|||
this.status = false; |
|||
} |
|||
} |
|||
@ -0,0 +1,37 @@ |
|||
package com.epmet.controller; |
|||
|
|||
import com.epmet.commons.tools.utils.Result; |
|||
import com.epmet.dto.form.UserBadgeListFormDTO; |
|||
import com.epmet.dto.result.UserBadgeListResultDTO; |
|||
import com.epmet.service.UserBadgeService; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.PostMapping; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @DateTime 2020/11/3 11:16 上午 |
|||
*/ |
|||
@RestController |
|||
@RequestMapping("badge") |
|||
public class UserBadgeController { |
|||
|
|||
@Autowired |
|||
private UserBadgeService userBadgeService; |
|||
|
|||
/** |
|||
* @Description 查询已经点亮的徽章 |
|||
* @Param userBadgeListFormDTO |
|||
* @author zxc |
|||
* @date 2020/11/3 1:33 下午 |
|||
*/ |
|||
@PostMapping("badgelist") |
|||
public Result<List<UserBadgeListResultDTO>> selectBadgeList(@RequestBody UserBadgeListFormDTO userBadgeListFormDTO){ |
|||
return new Result<List<UserBadgeListResultDTO>>().ok(userBadgeService.selectBadgeList(userBadgeListFormDTO)); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,32 @@ |
|||
package com.epmet.dao; |
|||
|
|||
import com.epmet.dto.form.UserBadgeListFormDTO; |
|||
import com.epmet.dto.result.UserBadgeListResultDTO; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @DateTime 2020/11/3 1:22 下午 |
|||
*/ |
|||
@Mapper |
|||
public interface UserBadgeDao { |
|||
|
|||
/** |
|||
* @Description 查询已经点亮的徽章 |
|||
* @Param userBadgeListFormDTO |
|||
* @author zxc |
|||
* @date 2020/11/3 1:33 下午 |
|||
*/ |
|||
List<UserBadgeListResultDTO> selectBadgeList(UserBadgeListFormDTO userBadgeListFormDTO); |
|||
|
|||
/** |
|||
* @Description 查询默认徽章和改名后的徽章 |
|||
* @Param userBadgeListFormDTO |
|||
* @author zxc |
|||
* @date 2020/11/3 3:11 下午 |
|||
*/ |
|||
List<UserBadgeListResultDTO> selectAllBadge(UserBadgeListFormDTO userBadgeListFormDTO); |
|||
|
|||
} |
|||
@ -0,0 +1,50 @@ |
|||
package com.epmet.redis; |
|||
|
|||
import com.alibaba.fastjson.JSON; |
|||
import com.epmet.commons.tools.redis.RedisUtils; |
|||
import com.epmet.commons.tools.utils.ConvertUtils; |
|||
import com.epmet.constant.BadgeConstant; |
|||
import com.epmet.dto.result.UserBadgeListResultDTO; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @DateTime 2020/11/3 2:21 下午 |
|||
*/ |
|||
@Component |
|||
public class UserBadgeRedis { |
|||
|
|||
@Autowired |
|||
private RedisUtils redisUtils; |
|||
|
|||
/** |
|||
* @Description 获取徽章信息 |
|||
* @Param customerId |
|||
* @author zxc |
|||
* @date 2020/11/3 2:50 下午 |
|||
*/ |
|||
public List<UserBadgeListResultDTO> getUserBadge(String customerId){ |
|||
Object userBadge = redisUtils.hGet(BadgeConstant.BADGE_KEY + customerId, BadgeConstant.BADGE); |
|||
if (null == userBadge){ |
|||
return new ArrayList<>(); |
|||
} |
|||
return JSON.parseArray(userBadge.toString(), UserBadgeListResultDTO.class); |
|||
} |
|||
|
|||
/** |
|||
* @Description 存放徽章信息 |
|||
* @Param userBadge |
|||
* @Param customerId |
|||
* @author zxc |
|||
* @date 2020/11/3 2:51 下午 |
|||
*/ |
|||
public void setUserBadge(List<UserBadgeListResultDTO> userBadge,String customerId){ |
|||
redisUtils.hSet(BadgeConstant.BADGE_KEY+customerId,BadgeConstant.BADGE, JSON.toJSON(userBadge).toString(),-1); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,22 @@ |
|||
package com.epmet.service; |
|||
|
|||
import com.epmet.dto.form.UserBadgeListFormDTO; |
|||
import com.epmet.dto.result.UserBadgeListResultDTO; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @DateTime 2020/11/3 11:18 上午 |
|||
*/ |
|||
public interface UserBadgeService { |
|||
|
|||
/** |
|||
* @Description 查询已经点亮的徽章 |
|||
* @Param userBadgeListFormDTO |
|||
* @author zxc |
|||
* @date 2020/11/3 1:33 下午 |
|||
*/ |
|||
List<UserBadgeListResultDTO> selectBadgeList(UserBadgeListFormDTO userBadgeListFormDTO); |
|||
|
|||
} |
|||
@ -0,0 +1,79 @@ |
|||
package com.epmet.service.impl; |
|||
|
|||
import com.epmet.constant.BadgeConstant; |
|||
import com.epmet.dao.UserBadgeDao; |
|||
import com.epmet.dto.form.UserBadgeListFormDTO; |
|||
import com.epmet.dto.result.UserBadgeListResultDTO; |
|||
import com.epmet.redis.UserBadgeRedis; |
|||
import com.epmet.service.UserBadgeService; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.beans.BeanUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.util.CollectionUtils; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* @Author zxc |
|||
* @DateTime 2020/11/3 11:18 上午 |
|||
*/ |
|||
@Service |
|||
@Slf4j |
|||
public class UserBadgeServiceImpl implements UserBadgeService { |
|||
|
|||
@Autowired |
|||
private UserBadgeDao userBadgeDao; |
|||
@Autowired |
|||
private UserBadgeRedis userBadgeRedis; |
|||
|
|||
/** |
|||
* @Description 查询已经点亮的徽章 |
|||
* @Param userBadgeListFormDTO |
|||
* @author zxc |
|||
* @date 2020/11/3 1:33 下午 |
|||
*/ |
|||
@Override |
|||
public List<UserBadgeListResultDTO> selectBadgeList(UserBadgeListFormDTO userBadgeListFormDTO) { |
|||
List<UserBadgeListResultDTO> userBadge = userBadgeRedis.getUserBadge(userBadgeListFormDTO.getCustomerId()); |
|||
if (CollectionUtils.isEmpty(userBadge)){ |
|||
List<UserBadgeListResultDTO> resultUserBadge = new ArrayList<>(); |
|||
List<UserBadgeListResultDTO> userBadgeListResultDTOS = userBadgeDao.selectAllBadge(userBadgeListFormDTO); |
|||
if (!CollectionUtils.isEmpty(userBadgeListResultDTOS)){ |
|||
Map<String, List<UserBadgeListResultDTO>> groupByCustomer = userBadgeListResultDTOS.stream().collect(Collectors.groupingBy(UserBadgeListResultDTO::getCustomerId)); |
|||
resultUserBadge.addAll(groupByCustomer.get(BadgeConstant.DEFAULT_CUSTOMER)); |
|||
List<UserBadgeListResultDTO> badgeByCustomer = groupByCustomer.get(userBadgeListFormDTO.getCustomerId()); |
|||
resultUserBadge.forEach(r -> { |
|||
badgeByCustomer.forEach(b -> { |
|||
if (r.getBadgeId().equals(b.getBadgeId())){ |
|||
BeanUtils.copyProperties(b,r); |
|||
} |
|||
}); |
|||
}); |
|||
userBadgeRedis.setUserBadge(resultUserBadge,userBadgeListFormDTO.getCustomerId()); |
|||
} |
|||
} |
|||
userBadge = userBadgeRedis.getUserBadge(userBadgeListFormDTO.getCustomerId()); |
|||
List<UserBadgeListResultDTO> userBadgeListResultDTOS = userBadgeDao.selectBadgeList(userBadgeListFormDTO); |
|||
if (CollectionUtils.isEmpty(userBadgeListResultDTOS)){ |
|||
return userBadge; |
|||
} |
|||
userBadge.forEach(u -> { |
|||
userBadgeListResultDTOS.forEach(badge -> { |
|||
if (u.getBadgeId().equals(badge.getBadgeId())){ |
|||
badge.setBadgeIcon(u.getBadgeIcon()); |
|||
u.setStatus(true); |
|||
} |
|||
}); |
|||
}); |
|||
userBadge.forEach(u -> { |
|||
if (!u.getStatus()){ |
|||
userBadgeListResultDTOS.add(u); |
|||
} |
|||
}); |
|||
return userBadgeListResultDTOS; |
|||
} |
|||
} |
|||
@ -0,0 +1,37 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
|
|||
<mapper namespace="com.epmet.dao.UserBadgeDao"> |
|||
|
|||
<!-- 查询已经点亮的徽章 --> |
|||
<select id="selectBadgeList" resultType="com.epmet.dto.result.UserBadgeListResultDTO"> |
|||
SELECT |
|||
ub.BADGE_ID, |
|||
ub.IS_OPENED |
|||
FROM |
|||
resi_user_badge ub |
|||
WHERE |
|||
ub.DEL_FLAG = 0 |
|||
AND ub.CERTIFICATION_AUTID_STATUS = 'pass' |
|||
AND ub.IS_OPENED = 1 |
|||
AND ub.CUSTOMER_ID = #{customerId} |
|||
AND ub.USER_ID = #{userId} |
|||
ORDER BY ub.UPDATED_TIME DESC |
|||
</select> |
|||
|
|||
<!-- 查询默认徽章和改名后的徽章 --> |
|||
<select id="selectAllBadge" resultType="com.epmet.dto.result.UserBadgeListResultDTO"> |
|||
SELECT |
|||
id AS badgeId, |
|||
CUSTOMER_ID, |
|||
BADGE_NAME, |
|||
BADGE_ICON, |
|||
FIXATION_BADGE_TYPE |
|||
FROM badge |
|||
WHERE |
|||
DEL_FLAG = '0' |
|||
AND (CUSTOMER_ID = 'default' OR CUSTOMER_ID = 'zxc') |
|||
</select> |
|||
|
|||
|
|||
</mapper> |
|||
Loading…
Reference in new issue