支付优化
This commit is contained in:
@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.member.service.amount;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserInfoCardVO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.rechargelog.RechargeLogDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.rechargelog.RechargeLogDO;
|
||||||
@ -16,6 +18,7 @@ import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
|||||||
import cn.iocoder.yudao.module.member.service.appup.AppUpService;
|
import cn.iocoder.yudao.module.member.service.appup.AppUpService;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
@ -41,16 +44,7 @@ public class AmountServiceImpl implements AmountService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MemberUserMapper userMapper;
|
private MemberUserMapper userMapper;
|
||||||
@Resource
|
|
||||||
private DishOrderMapper dishOrderMapper;
|
|
||||||
@Resource
|
|
||||||
private CardMapper cardMapper;
|
|
||||||
@Resource
|
|
||||||
private IntegralRefundMapper refundMapper;
|
|
||||||
@Resource
|
|
||||||
private RechargeLogMapper rechargeLogMapper;
|
|
||||||
|
|
||||||
public final static Map<String, Object> userLocks = new WeakHashMap<>();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void operateAmount(Long userId, BigDecimal money, BigDecimal cashAmount, BigDecimal giftAmount, BigDecimal wxAmount) {
|
public void operateAmount(Long userId, BigDecimal money, BigDecimal cashAmount, BigDecimal giftAmount, BigDecimal wxAmount) {
|
||||||
|
@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.member.service.amount;
|
|||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserInfoCardVO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.refund.RefundDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.refund.RefundDO;
|
||||||
@ -14,6 +16,7 @@ import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
|
|||||||
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -45,6 +48,9 @@ public class CashRechargeServiceImpl implements CashRechargeService {
|
|||||||
@Resource
|
@Resource
|
||||||
private MemberGroupMapper memberGroupMapper;
|
private MemberGroupMapper memberGroupMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private StringRedisTemplate cashRechargeRedisTemplate;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void rechargeByAdmin(List<Long> userIds, Long groupId, BigDecimal money) {
|
public void rechargeByAdmin(List<Long> userIds, Long groupId, BigDecimal money) {
|
||||||
@ -63,6 +69,7 @@ public class CashRechargeServiceImpl implements CashRechargeService {
|
|||||||
BigDecimal wxNewMoney;
|
BigDecimal wxNewMoney;
|
||||||
BigDecimal giftNewMoney;
|
BigDecimal giftNewMoney;
|
||||||
BigDecimal cashNewAmount;
|
BigDecimal cashNewAmount;
|
||||||
|
String name;
|
||||||
|
|
||||||
synchronized (getUserLock(userId)) {
|
synchronized (getUserLock(userId)) {
|
||||||
MemberUserDO memberUserDO = userMapper.selectById(userId);
|
MemberUserDO memberUserDO = userMapper.selectById(userId);
|
||||||
@ -84,6 +91,7 @@ public class CashRechargeServiceImpl implements CashRechargeService {
|
|||||||
wxNewMoney = memberUserDO.getWxAmount();
|
wxNewMoney = memberUserDO.getWxAmount();
|
||||||
giftNewMoney = memberUserDO.getGiftAmount();
|
giftNewMoney = memberUserDO.getGiftAmount();
|
||||||
cashNewAmount = memberUserDO.getCashAmount();
|
cashNewAmount = memberUserDO.getCashAmount();
|
||||||
|
name = memberUserDO.getNickname();
|
||||||
}
|
}
|
||||||
|
|
||||||
//记录明细
|
//记录明细
|
||||||
@ -98,6 +106,13 @@ public class CashRechargeServiceImpl implements CashRechargeService {
|
|||||||
add.setGiftAmount(giftNewMoney);
|
add.setGiftAmount(giftNewMoney);
|
||||||
addList.add(add);
|
addList.add(add);
|
||||||
|
|
||||||
|
//更新缓存
|
||||||
|
String redisKey = "USER_" + userId;
|
||||||
|
AppUserInfoCardVO appUserInfoCardVO = new AppUserInfoCardVO();
|
||||||
|
appUserInfoCardVO.setName(name);
|
||||||
|
appUserInfoCardVO.setMoney(newMoney);
|
||||||
|
cashRechargeRedisTemplate.opsForValue().set(redisKey, JSONUtil.toJsonStr(appUserInfoCardVO));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//处理订单
|
//处理订单
|
||||||
|
@ -3,21 +3,17 @@ package cn.iocoder.yudao.module.member.service.amount;
|
|||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserInfoCardVO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper;
|
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
|
|
||||||
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
||||||
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
||||||
import cn.iocoder.yudao.module.member.service.business.BusinessService;
|
import cn.iocoder.yudao.module.member.service.business.BusinessService;
|
||||||
import cn.iocoder.yudao.module.member.service.card.CardService;
|
import cn.iocoder.yudao.module.member.service.card.CardService;
|
||||||
import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService;
|
|
||||||
import cn.iocoder.yudao.module.member.service.order.OrderService;
|
|
||||||
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
||||||
import cn.iocoder.yudao.module.member.util.MemberConstants;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
||||||
import com.sun.istack.NotNull;
|
import com.sun.istack.NotNull;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
@ -27,7 +23,6 @@ import javax.annotation.Resource;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.CASH_AMOUNT_NOT_ENOUGH;
|
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.CASH_AMOUNT_NOT_ENOUGH;
|
||||||
@ -63,6 +58,8 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
BigDecimal giftNewMoney;
|
BigDecimal giftNewMoney;
|
||||||
BigDecimal cashNewMoney;
|
BigDecimal cashNewMoney;
|
||||||
|
|
||||||
|
String name;
|
||||||
|
|
||||||
synchronized (getUserLock(userId)) {
|
synchronized (getUserLock(userId)) {
|
||||||
MemberUserDO user = userService.getUser(userId);
|
MemberUserDO user = userService.getUser(userId);
|
||||||
|
|
||||||
@ -147,6 +144,7 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
giftNewMoney = user.getGiftAmount();
|
giftNewMoney = user.getGiftAmount();
|
||||||
cashNewMoney = user.getCashAmount();
|
cashNewMoney = user.getCashAmount();
|
||||||
changeMoney = total;
|
changeMoney = total;
|
||||||
|
name = user.getNickname();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -178,6 +176,9 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
statisticsVo.setOrderId(dishOrderDO.getId());
|
statisticsVo.setOrderId(dishOrderDO.getId());
|
||||||
businessService.updateStatistics(statisticsVo);
|
businessService.updateStatistics(statisticsVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//更新redis
|
||||||
|
updateRedis(userId,name,newMoney);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -188,6 +189,7 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
BigDecimal wxNewMoney;
|
BigDecimal wxNewMoney;
|
||||||
BigDecimal giftNewMoney;
|
BigDecimal giftNewMoney;
|
||||||
BigDecimal cashNewMoney;
|
BigDecimal cashNewMoney;
|
||||||
|
String name;
|
||||||
|
|
||||||
synchronized (getUserLock(userId)) {
|
synchronized (getUserLock(userId)) {
|
||||||
MemberUserDO user = userService.getUser(userId);
|
MemberUserDO user = userService.getUser(userId);
|
||||||
@ -202,6 +204,7 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
wxNewMoney = user.getWxAmount();
|
wxNewMoney = user.getWxAmount();
|
||||||
giftNewMoney = user.getGiftAmount();
|
giftNewMoney = user.getGiftAmount();
|
||||||
cashNewMoney = user.getCashAmount();
|
cashNewMoney = user.getCashAmount();
|
||||||
|
name = user.getNickname();
|
||||||
}
|
}
|
||||||
|
|
||||||
CardDO cardDO = new CardDO();
|
CardDO cardDO = new CardDO();
|
||||||
@ -214,6 +217,9 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
cardDO.setMoney(newMoney);
|
cardDO.setMoney(newMoney);
|
||||||
cardDO.setCashAmount(cashNewMoney);
|
cardDO.setCashAmount(cashNewMoney);
|
||||||
cardService.insertOne(cardDO);
|
cardService.insertOne(cardDO);
|
||||||
|
|
||||||
|
//更新redis
|
||||||
|
updateRedis(userId,name,newMoney);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -223,6 +229,7 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
BigDecimal wxNewMoney;
|
BigDecimal wxNewMoney;
|
||||||
BigDecimal giftNewMoney;
|
BigDecimal giftNewMoney;
|
||||||
BigDecimal cashNewMoney;
|
BigDecimal cashNewMoney;
|
||||||
|
String name;
|
||||||
BigDecimal changeMoney = new BigDecimal(amount).divide(new BigDecimal("100"));
|
BigDecimal changeMoney = new BigDecimal(amount).divide(new BigDecimal("100"));
|
||||||
|
|
||||||
synchronized (getUserLock(userId)) {
|
synchronized (getUserLock(userId)) {
|
||||||
@ -234,6 +241,7 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
wxNewMoney = user.getWxAmount();
|
wxNewMoney = user.getWxAmount();
|
||||||
giftNewMoney = user.getGiftAmount();
|
giftNewMoney = user.getGiftAmount();
|
||||||
cashNewMoney = user.getCashAmount();
|
cashNewMoney = user.getCashAmount();
|
||||||
|
name = user.getNickname();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -249,6 +257,10 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
cardDO.setMoney(newMoney);
|
cardDO.setMoney(newMoney);
|
||||||
cardDO.setCashAmount(cashNewMoney);
|
cardDO.setCashAmount(cashNewMoney);
|
||||||
cardService.insertOne(cardDO);
|
cardService.insertOne(cardDO);
|
||||||
|
|
||||||
|
|
||||||
|
//更新redis
|
||||||
|
updateRedis(userId,name,newMoney);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -258,6 +270,7 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
BigDecimal wxNewMoney;
|
BigDecimal wxNewMoney;
|
||||||
BigDecimal giftNewMoney;
|
BigDecimal giftNewMoney;
|
||||||
BigDecimal cashNewMoney;
|
BigDecimal cashNewMoney;
|
||||||
|
String name;
|
||||||
|
|
||||||
synchronized (getUserLock(userId)) {
|
synchronized (getUserLock(userId)) {
|
||||||
MemberUserDO user = userService.getUser(userId);
|
MemberUserDO user = userService.getUser(userId);
|
||||||
@ -309,7 +322,7 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
wxNewMoney = user.getWxAmount();
|
wxNewMoney = user.getWxAmount();
|
||||||
giftNewMoney = user.getGiftAmount();
|
giftNewMoney = user.getGiftAmount();
|
||||||
cashNewMoney = user.getCashAmount();
|
cashNewMoney = user.getCashAmount();
|
||||||
|
name = user.getNickname();
|
||||||
}
|
}
|
||||||
|
|
||||||
CardDO cardDO = new CardDO();
|
CardDO cardDO = new CardDO();
|
||||||
@ -323,6 +336,9 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
cardDO.setCashAmount(cashNewMoney);
|
cardDO.setCashAmount(cashNewMoney);
|
||||||
|
|
||||||
cardService.insertOne(cardDO);
|
cardService.insertOne(cardDO);
|
||||||
|
|
||||||
|
//更新redis
|
||||||
|
updateRedis(userId,name,newMoney2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -332,6 +348,7 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
BigDecimal giftNewAmount;
|
BigDecimal giftNewAmount;
|
||||||
BigDecimal cashNewAmount;
|
BigDecimal cashNewAmount;
|
||||||
BigDecimal wxNewAmount;
|
BigDecimal wxNewAmount;
|
||||||
|
String name;
|
||||||
|
|
||||||
synchronized (getUserLock(userId)) {
|
synchronized (getUserLock(userId)) {
|
||||||
MemberUserDO user = userService.getUser(userId);
|
MemberUserDO user = userService.getUser(userId);
|
||||||
@ -345,6 +362,7 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
wxNewAmount = user.getWxAmount();
|
wxNewAmount = user.getWxAmount();
|
||||||
giftNewAmount = user.getGiftAmount();
|
giftNewAmount = user.getGiftAmount();
|
||||||
cashNewAmount = user.getCashAmount();
|
cashNewAmount = user.getCashAmount();
|
||||||
|
name = user.getNickname();
|
||||||
}
|
}
|
||||||
CardDO cardDO = new CardDO();
|
CardDO cardDO = new CardDO();
|
||||||
cardDO.setUserId(userId);
|
cardDO.setUserId(userId);
|
||||||
@ -356,6 +374,9 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
cardDO.setCashAmount(cashNewAmount);
|
cardDO.setCashAmount(cashNewAmount);
|
||||||
cardDO.setGiftAmount(giftNewAmount);
|
cardDO.setGiftAmount(giftNewAmount);
|
||||||
cardService.insertOne(cardDO);
|
cardService.insertOne(cardDO);
|
||||||
|
|
||||||
|
//更新redis
|
||||||
|
updateRedis(userId,name,newMoney);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -365,6 +386,7 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
BigDecimal wxNewMoney;
|
BigDecimal wxNewMoney;
|
||||||
BigDecimal giftNewMoney;
|
BigDecimal giftNewMoney;
|
||||||
BigDecimal cashNewMoney;
|
BigDecimal cashNewMoney;
|
||||||
|
String name;
|
||||||
synchronized (getUserLock(userId)) {
|
synchronized (getUserLock(userId)) {
|
||||||
MemberUserDO user = userService.getUser(userId);
|
MemberUserDO user = userService.getUser(userId);
|
||||||
BigDecimal money = user.getMoney();
|
BigDecimal money = user.getMoney();
|
||||||
@ -395,18 +417,34 @@ public class DeductionServiceImpl implements DeductionService {
|
|||||||
wxNewMoney = user.getWxAmount();
|
wxNewMoney = user.getWxAmount();
|
||||||
giftNewMoney = user.getGiftAmount();
|
giftNewMoney = user.getGiftAmount();
|
||||||
cashNewMoney = user.getCashAmount();
|
cashNewMoney = user.getCashAmount();
|
||||||
|
name = user.getNickname();
|
||||||
}
|
}
|
||||||
|
|
||||||
CardDO cardDO = new CardDO();
|
CardDO cardDO = new CardDO();
|
||||||
cardDO.setUserId(userId);
|
cardDO.setUserId(userId);
|
||||||
cardDO.setChangeMoney(total);
|
cardDO.setChangeMoney(total);
|
||||||
cardDO.setFlag(CardDO.MINUS);
|
cardDO.setFlag(CardDO.MINUS);
|
||||||
cardService.insertOne(cardDO);
|
|
||||||
cardDO.setMoney(newMoney);
|
cardDO.setMoney(newMoney);
|
||||||
cardDO.setWxAmount(wxNewMoney);
|
cardDO.setWxAmount(wxNewMoney);
|
||||||
cardDO.setCashAmount(cashNewMoney);
|
cardDO.setCashAmount(cashNewMoney);
|
||||||
cardDO.setGiftAmount(giftNewMoney);
|
cardDO.setGiftAmount(giftNewMoney);
|
||||||
|
cardService.insertOne(cardDO);
|
||||||
|
|
||||||
|
|
||||||
|
//更新redis
|
||||||
|
updateRedis(userId,name,newMoney);
|
||||||
|
|
||||||
return cardDO.getMoney();
|
return cardDO.getMoney();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void updateRedis(Long userId,String name, BigDecimal newMoney) {
|
||||||
|
//更新缓存
|
||||||
|
String redisKey = "USER_" + userId;
|
||||||
|
AppUserInfoCardVO appUserInfoCardVO = new AppUserInfoCardVO();
|
||||||
|
appUserInfoCardVO.setName(name);
|
||||||
|
appUserInfoCardVO.setMoney(newMoney);
|
||||||
|
deductionRedisTemplate.opsForValue().set(redisKey, JSONUtil.toJsonStr(appUserInfoCardVO));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.member.service.amount;
|
|||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserInfoCardVO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.rechargelog.RechargeLogDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.rechargelog.RechargeLogDO;
|
||||||
@ -15,6 +17,7 @@ import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
|
|||||||
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -46,6 +49,8 @@ public class WxRechargeServiceImpl implements WxRechargeService {
|
|||||||
private IntegralRefundMapper refundMapper;
|
private IntegralRefundMapper refundMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private RechargeLogMapper rechargeLogMapper;
|
private RechargeLogMapper rechargeLogMapper;
|
||||||
|
@Resource
|
||||||
|
private StringRedisTemplate wxRechargeRedisTemplate;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -55,7 +60,7 @@ public class WxRechargeServiceImpl implements WxRechargeService {
|
|||||||
BigDecimal wxNewMoney;
|
BigDecimal wxNewMoney;
|
||||||
BigDecimal giftNewMoney;
|
BigDecimal giftNewMoney;
|
||||||
BigDecimal cashNewAmount;
|
BigDecimal cashNewAmount;
|
||||||
|
String name;
|
||||||
|
|
||||||
synchronized (getUserLock(userId)) {
|
synchronized (getUserLock(userId)) {
|
||||||
//获取最新余额
|
//获取最新余额
|
||||||
@ -95,7 +100,7 @@ public class WxRechargeServiceImpl implements WxRechargeService {
|
|||||||
wxNewMoney = memberUserDO.getWxAmount();
|
wxNewMoney = memberUserDO.getWxAmount();
|
||||||
giftNewMoney = memberUserDO.getGiftAmount();
|
giftNewMoney = memberUserDO.getGiftAmount();
|
||||||
cashNewAmount = memberUserDO.getCashAmount();
|
cashNewAmount = memberUserDO.getCashAmount();
|
||||||
|
name = memberUserDO.getNickname();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -113,7 +118,12 @@ public class WxRechargeServiceImpl implements WxRechargeService {
|
|||||||
handleOrderWx(cardDO.getUserId(), money, wxAmount, giftAmount);
|
handleOrderWx(cardDO.getUserId(), money, wxAmount, giftAmount);
|
||||||
|
|
||||||
cardMapper.insert(cardDO);
|
cardMapper.insert(cardDO);
|
||||||
|
//更新缓存
|
||||||
|
String redisKey = "USER_" + userId;
|
||||||
|
AppUserInfoCardVO appUserInfoCardVO = new AppUserInfoCardVO();
|
||||||
|
appUserInfoCardVO.setName(name);
|
||||||
|
appUserInfoCardVO.setMoney(newMoney);
|
||||||
|
wxRechargeRedisTemplate.opsForValue().set(redisKey, JSONUtil.toJsonStr(appUserInfoCardVO));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.member.service.diningplates;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
||||||
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
|
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
@ -308,10 +309,17 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
|
|||||||
}
|
}
|
||||||
AppUserInfoCardVO appUserInfoCardVO = new AppUserInfoCardVO();
|
AppUserInfoCardVO appUserInfoCardVO = new AppUserInfoCardVO();
|
||||||
|
|
||||||
MemberUserDO memberUserDO = memberUserMapper.selectById(diningPlatesDO.getUserId());
|
String redisKey = "USER_"+diningPlatesDO.getUserId();
|
||||||
appUserInfoCardVO.setName(memberUserDO.getNickname());
|
String s = stringRedisTemplate.opsForValue().get(redisKey);
|
||||||
appUserInfoCardVO.setMoney(memberUserDO.getMoney());
|
if(StrUtil.isNotBlank(s)){
|
||||||
|
appUserInfoCardVO = JSONUtil.toBean(s, AppUserInfoCardVO.class);
|
||||||
|
|
||||||
|
}else {
|
||||||
|
MemberUserDO memberUserDO = memberUserMapper.selectById(diningPlatesDO.getUserId());
|
||||||
|
appUserInfoCardVO.setName(memberUserDO.getNickname());
|
||||||
|
appUserInfoCardVO.setMoney(memberUserDO.getMoney());
|
||||||
|
stringRedisTemplate.opsForValue().set(redisKey, JSONUtil.toJsonStr(appUserInfoCardVO));
|
||||||
|
}
|
||||||
//刷新绑定时间
|
//刷新绑定时间
|
||||||
asyncService.flashTime(diningPlatesDO);
|
asyncService.flashTime(diningPlatesDO);
|
||||||
return appUserInfoCardVO;
|
return appUserInfoCardVO;
|
||||||
|
Reference in New Issue
Block a user