From 6e23580f067d8a8c0c72f948d1425ab612db061b Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 3 Nov 2020 15:55:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=BD=E7=AB=A0=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resi/mine/dto/from/BadgeListFormDTO.java | 30 +++++++ .../mine/dto/result/BadgeListResultDTO.java | 30 +++++++ .../badege/controller/BadgeController.java | 20 +++++ .../modules/badege/service/BadgeService.java | 8 ++ .../badege/service/impl/BadgeServiceImpl.java | 14 ++++ .../com/epmet/constant/BadgeConstant.java | 15 ++++ .../epmet/dto/form/UserBadgeListFormDTO.java | 26 ++++++ .../dto/result/UserBadgeListResultDTO.java | 46 +++++++++++ .../epmet/controller/UserBadgeController.java | 37 +++++++++ .../main/java/com/epmet/dao/UserBadgeDao.java | 32 ++++++++ .../java/com/epmet/redis/UserBadgeRedis.java | 50 ++++++++++++ .../com/epmet/service/UserBadgeService.java | 22 ++++++ .../service/impl/UserBadgeServiceImpl.java | 79 +++++++++++++++++++ .../main/resources/mapper/UserBadgeDao.xml | 37 +++++++++ 14 files changed, 446 insertions(+) create mode 100644 epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/from/BadgeListFormDTO.java create mode 100644 epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/BadgeListResultDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/constant/BadgeConstant.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeListFormDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeListResultDTO.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBadgeController.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeDao.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBadgeService.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java create mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml diff --git a/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/from/BadgeListFormDTO.java b/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/from/BadgeListFormDTO.java new file mode 100644 index 0000000000..ef8ef67308 --- /dev/null +++ b/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/from/BadgeListFormDTO.java @@ -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; +} diff --git a/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/BadgeListResultDTO.java b/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/BadgeListResultDTO.java new file mode 100644 index 0000000000..41f82feed4 --- /dev/null +++ b/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/BadgeListResultDTO.java @@ -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; +} diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/badege/controller/BadgeController.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/badege/controller/BadgeController.java index 9d98bfa74a..059f37972f 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/badege/controller/BadgeController.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/badege/controller/BadgeController.java @@ -1,8 +1,18 @@ package com.epmet.modules.badege.controller; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.modules.badege.service.BadgeService; +import com.epmet.resi.mine.dto.from.BadgeListFormDTO; +import com.epmet.resi.mine.dto.result.BadgeListResultDTO; +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 10:42 上午 @@ -10,4 +20,14 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("badge") public class BadgeController { + + @Autowired + private BadgeService badgeService; + + @PostMapping("list") + public Result> getBadgeList(@RequestBody BadgeListFormDTO badgeListFormDTO){ + ValidatorUtils.validateEntity(badgeListFormDTO, BadgeListFormDTO.BadgeList.class); + return new Result>().ok(badgeService.getBadgeList(badgeListFormDTO)); + } + } diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/badege/service/BadgeService.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/badege/service/BadgeService.java index 18c5f38926..1aa44135c9 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/badege/service/BadgeService.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/badege/service/BadgeService.java @@ -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 getBadgeList(BadgeListFormDTO badgeListFormDTO); + } diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/badege/service/impl/BadgeServiceImpl.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/badege/service/impl/BadgeServiceImpl.java index 6a848eb868..3d6c5f02d2 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/badege/service/impl/BadgeServiceImpl.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/badege/service/impl/BadgeServiceImpl.java @@ -1,9 +1,15 @@ package com.epmet.modules.badege.service.impl; +import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.modules.badege.service.BadgeService; +import com.epmet.resi.mine.dto.from.BadgeListFormDTO; +import com.epmet.resi.mine.dto.result.BadgeListResultDTO; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** * @Author zxc * @DateTime 2020/11/3 10:53 上午 @@ -11,4 +17,12 @@ import org.springframework.stereotype.Service; @Service @Slf4j public class BadgeServiceImpl implements BadgeService { + + @Autowired + private EpmetUserOpenFeignClient epmetUserOpenFeignClient; + + @Override + public List getBadgeList(BadgeListFormDTO badgeListFormDTO) { + return null; + } } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/BadgeConstant.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/BadgeConstant.java new file mode 100644 index 0000000000..e95fc2a5c0 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/BadgeConstant.java @@ -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"; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeListFormDTO.java new file mode 100644 index 0000000000..c77cee2d1f --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeListFormDTO.java @@ -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; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeListResultDTO.java new file mode 100644 index 0000000000..a9db8612a2 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeListResultDTO.java @@ -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; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBadgeController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBadgeController.java new file mode 100644 index 0000000000..a11fc74409 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBadgeController.java @@ -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> selectBadgeList(@RequestBody UserBadgeListFormDTO userBadgeListFormDTO){ + return new Result>().ok(userBadgeService.selectBadgeList(userBadgeListFormDTO)); + } + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeDao.java new file mode 100644 index 0000000000..d836a2e510 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBadgeDao.java @@ -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 selectBadgeList(UserBadgeListFormDTO userBadgeListFormDTO); + + /** + * @Description 查询默认徽章和改名后的徽章 + * @Param userBadgeListFormDTO + * @author zxc + * @date 2020/11/3 3:11 下午 + */ + List selectAllBadge(UserBadgeListFormDTO userBadgeListFormDTO); + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java new file mode 100644 index 0000000000..56492844b1 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java @@ -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 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 userBadge,String customerId){ + redisUtils.hSet(BadgeConstant.BADGE_KEY+customerId,BadgeConstant.BADGE, JSON.toJSON(userBadge).toString(),-1); + } + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBadgeService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBadgeService.java new file mode 100644 index 0000000000..367f16993b --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBadgeService.java @@ -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 selectBadgeList(UserBadgeListFormDTO userBadgeListFormDTO); + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java new file mode 100644 index 0000000000..7ee534b2f6 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java @@ -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 selectBadgeList(UserBadgeListFormDTO userBadgeListFormDTO) { + List userBadge = userBadgeRedis.getUserBadge(userBadgeListFormDTO.getCustomerId()); + if (CollectionUtils.isEmpty(userBadge)){ + List resultUserBadge = new ArrayList<>(); + List userBadgeListResultDTOS = userBadgeDao.selectAllBadge(userBadgeListFormDTO); + if (!CollectionUtils.isEmpty(userBadgeListResultDTOS)){ + Map> groupByCustomer = userBadgeListResultDTOS.stream().collect(Collectors.groupingBy(UserBadgeListResultDTO::getCustomerId)); + resultUserBadge.addAll(groupByCustomer.get(BadgeConstant.DEFAULT_CUSTOMER)); + List 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 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; + } +} diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml new file mode 100644 index 0000000000..b709353ce5 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + +