优化
This commit is contained in:
@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.collection.ListUtil;
|
import cn.hutool.core.collection.ListUtil;
|
||||||
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
@ -39,6 +40,7 @@ import cn.iocoder.yudao.module.member.service.tag.MemberTagService;
|
|||||||
import cn.iocoder.yudao.module.member.service.userexpand.UserExpandService;
|
import cn.iocoder.yudao.module.member.service.userexpand.UserExpandService;
|
||||||
import cn.iocoder.yudao.module.member.util.MemberConstants;
|
import cn.iocoder.yudao.module.member.util.MemberConstants;
|
||||||
import cn.iocoder.yudao.module.member.util.QRCodeWithJWTUtil;
|
import cn.iocoder.yudao.module.member.util.QRCodeWithJWTUtil;
|
||||||
|
import cn.iocoder.yudao.module.member.util.SubsidyCount;
|
||||||
import cn.iocoder.yudao.module.system.api.dishesnutrition.DishesNutritionApi;
|
import cn.iocoder.yudao.module.system.api.dishesnutrition.DishesNutritionApi;
|
||||||
import cn.iocoder.yudao.module.system.api.dishesnutrition.dto.DishesNutritionRespDTO;
|
import cn.iocoder.yudao.module.system.api.dishesnutrition.dto.DishesNutritionRespDTO;
|
||||||
import cn.iocoder.yudao.module.system.api.face.FaceApi;
|
import cn.iocoder.yudao.module.system.api.face.FaceApi;
|
||||||
@ -50,6 +52,7 @@ import cn.iocoder.yudao.module.system.api.social.dto.SocialWxPhoneNumberInfoResp
|
|||||||
import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum;
|
import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
@ -784,12 +787,65 @@ public class MemberUserServiceImpl implements MemberUserService {
|
|||||||
public BigDecimal getReductionAmount(Long userId, BigDecimal money, LocalDateTime time) {
|
public BigDecimal getReductionAmount(Long userId, BigDecimal money, LocalDateTime time) {
|
||||||
|
|
||||||
String timePeriod = TimePeriodEnum.getTimePeriod(time);
|
String timePeriod = TimePeriodEnum.getTimePeriod(time);
|
||||||
|
String format = LocalDateTimeUtil.format(time, "yyyy-MM-dd");
|
||||||
MemberUserDO memberUserDO = memberUserMapper.selectById(userId);
|
MemberUserDO memberUserDO = memberUserMapper.selectById(userId);
|
||||||
List<Long> tagIds = memberUserDO.getTagIds();
|
List<Long> tagIds = memberUserDO.getTagIds();
|
||||||
if (CollectionUtil.isEmpty(tagIds)) {
|
if (CollectionUtil.isEmpty(tagIds)) {
|
||||||
return BigDecimal.ZERO;
|
return BigDecimal.ZERO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
String redisKey = userId +"-subsidy";
|
||||||
|
String mapString = memberUserRedisTemplate.opsForValue().get(redisKey);
|
||||||
|
int count=0;
|
||||||
|
SubsidyCount newSubsidyCount = new SubsidyCount();
|
||||||
|
newSubsidyCount.setMorningCount(0);
|
||||||
|
newSubsidyCount.setNoonCount(0);
|
||||||
|
newSubsidyCount.setNightCount(0);
|
||||||
|
|
||||||
|
|
||||||
|
if (StringUtils.isNotBlank(mapString)) {
|
||||||
|
HashMap<String, SubsidyCount> map = new HashMap<>();
|
||||||
|
try {
|
||||||
|
map = objectMapper.readValue(mapString,
|
||||||
|
new TypeReference<HashMap<String, SubsidyCount>>() {});
|
||||||
|
} catch (JsonProcessingException e) {
|
||||||
|
log.error("JSON 转换异常 mapString: {}", mapString, e);
|
||||||
|
}
|
||||||
|
SubsidyCount subsidyCount = map.get(format);
|
||||||
|
if(subsidyCount!=null){
|
||||||
|
BeanUtil.copyProperties(subsidyCount,newSubsidyCount);
|
||||||
|
if(TimePeriodEnum.MORNING.getCode().equals(timePeriod)){
|
||||||
|
count = subsidyCount.getMorningCount();
|
||||||
|
}else if(TimePeriodEnum.MIDDAY.getCode().equals(timePeriod)){
|
||||||
|
count = subsidyCount.getNoonCount();
|
||||||
|
}else if(TimePeriodEnum.NIGHT.getCode().equals(timePeriod)){
|
||||||
|
count = subsidyCount.getNightCount();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if(count>0){
|
||||||
|
return BigDecimal.ZERO;
|
||||||
|
}else {
|
||||||
|
HashMap<String, SubsidyCount> map = new HashMap<>();
|
||||||
|
|
||||||
|
if(TimePeriodEnum.MORNING.getCode().equals(timePeriod)){
|
||||||
|
newSubsidyCount.setMorningCount(newSubsidyCount.getMorningCount()+1);
|
||||||
|
}else if(TimePeriodEnum.MIDDAY.getCode().equals(timePeriod)){
|
||||||
|
newSubsidyCount.setNoonCount(newSubsidyCount.getNoonCount()+1);
|
||||||
|
}else if(TimePeriodEnum.NIGHT.getCode().equals(timePeriod)){
|
||||||
|
newSubsidyCount.setNightCount(newSubsidyCount.getNightCount()+1);
|
||||||
|
}
|
||||||
|
map.put(format,newSubsidyCount);
|
||||||
|
try {
|
||||||
|
String json = objectMapper.writeValueAsString(map);
|
||||||
|
memberUserRedisTemplate.opsForValue().set(redisKey, json);
|
||||||
|
} catch (JsonProcessingException e) {
|
||||||
|
log.error("JSON 转换异常 map: {}", map, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
List<MemberTagDO> tagList = memberTagService.getTagList(tagIds);
|
List<MemberTagDO> tagList = memberTagService.getTagList(tagIds);
|
||||||
|
|
||||||
if (tagList.size() > 1) {
|
if (tagList.size() > 1) {
|
||||||
@ -1217,4 +1273,30 @@ public class MemberUserServiceImpl implements MemberUserService {
|
|||||||
}
|
}
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Integer getSubsidyCount(Long userId, String timePeriod,LocalDateTime time) {
|
||||||
|
String format = LocalDateTimeUtil.format(time, "yyyy-MM-dd");
|
||||||
|
String start;
|
||||||
|
String end;
|
||||||
|
if(TimePeriodEnum.MORNING.getCode().equals(timePeriod)){
|
||||||
|
start = format+" "+TimePeriodEnum.MORNING.getStartTime();
|
||||||
|
end = format+" "+"09:59:59";
|
||||||
|
}else if (TimePeriodEnum.MIDDAY.getCode().equals(timePeriod)){
|
||||||
|
start= format+" "+TimePeriodEnum.MIDDAY.getStartTime();
|
||||||
|
end = format+" "+TimePeriodEnum.MIDDAY.getEndTime();
|
||||||
|
}else {
|
||||||
|
start = format+" "+TimePeriodEnum.NIGHT.getStartTime();
|
||||||
|
end = format+" "+TimePeriodEnum.NIGHT.getEndTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalDateTime startTime = LocalDateTimeUtil.parse(start, "yyyy-MM-dd HH:mm:ss");
|
||||||
|
LocalDateTime endTime = LocalDateTimeUtil.parse(end, "yyyy-MM-dd HH:mm:ss");
|
||||||
|
List<DishOrderDO> dishOrderDOS = dishOrderMapper.selectList(Wrappers.<DishOrderDO>lambdaQuery()
|
||||||
|
.eq(DishOrderDO::getUserId, userId)
|
||||||
|
.between(DishOrderDO::getCreateTime, startTime, endTime)
|
||||||
|
.gt(DishOrderDO::getSubsidyAmount, BigDecimal.ZERO)
|
||||||
|
);
|
||||||
|
return dishOrderDOS.size();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.util;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SubsidyCount {
|
||||||
|
private Integer morningCount;
|
||||||
|
private Integer noonCount;
|
||||||
|
private Integer nightCount;
|
||||||
|
}
|
Reference in New Issue
Block a user