金额修改

This commit is contained in:
zt
2025-02-08 14:20:08 +08:00
parent 2dc8731571
commit 884971eaac
12 changed files with 227 additions and 192 deletions

View File

@ -69,22 +69,15 @@ public class AmountServiceImpl implements AmountService {
if (memberUserDO == null) { if (memberUserDO == null) {
throw exception(USER_NOT_EXISTS); throw exception(USER_NOT_EXISTS);
} }
MoneyDO moneyDO = moneyService.getMoney(userId, storeId); return memberUserDO.getMoney();
BigDecimal cashAmount = BigDecimal.ZERO;
if (moneyDO != null) {
cashAmount = moneyDO.getCashAmount();
}
return memberUserDO.getWxAmount().add(cashAmount);
} }
@Override @Override
public BigDecimal getCashAmount(Long userId,Long storeId) { public BigDecimal getCashAmount(Long userId,Long storeId) {
MoneyDO moneyDO = moneyService.getMoney(userId, storeId); MemberUserDO memberUserDO = userMapper.selectById(userId);
if (moneyDO == null) { if (memberUserDO == null) {
return BigDecimal.ZERO; return BigDecimal.ZERO;
} }
return moneyDO.getCashAmount(); return memberUserDO.getCashAmount();
} }
} }

View File

@ -73,43 +73,27 @@ public class CashRechargeServiceImpl implements CashRechargeService {
for (Long userId : memberList) { for (Long userId : memberList) {
BigDecimal wxNewMoney; BigDecimal wxNewMoney;
BigDecimal giftNewMoney; BigDecimal newMoney;
BigDecimal cashNewAmount; BigDecimal cashNewAmount;
String name; String name;
BigDecimal computeMoney = money;
synchronized (getUserLock(userId)) { synchronized (getUserLock(userId)) {
MemberUserDO memberUserDO = userMapper.selectById(userId); MemberUserDO memberUserDO = userMapper.selectById(userId);
MoneyDO moneyDO = moneyService.getMoney(userId, storeId); //金额变动
BigDecimal debtAmount = BigDecimal.ZERO; BigDecimal oldMoney = memberUserDO.getMoney();
if (ObjectUtil.isEmpty(moneyDO)) { newMoney = oldMoney.add(money);
MoneyDO add = new MoneyDO(); memberUserDO.setMoney(newMoney);
add.setCashAmount(computeMoney);
add.setDebtAmount(debtAmount);
add.setUserId(userId);
add.setCarteenId(storeId);
moneyService.insertOne(add);
cashNewAmount = add.getCashAmount();
} else {
debtAmount = moneyDO.getDebtAmount();
//金额变动
computeMoney = computeMoney.add(debtAmount);
if(computeMoney.compareTo(BigDecimal.ZERO) < 0){
moneyDO.setCashAmount(BigDecimal.ZERO);
moneyDO.setDebtAmount(computeMoney);
cashNewAmount = BigDecimal.ZERO;
}else {
moneyDO.setCashAmount(computeMoney.add(moneyDO.getCashAmount()));
moneyDO.setDebtAmount(BigDecimal.ZERO);
cashNewAmount = moneyDO.getCashAmount();
}
moneyService.updateById(moneyDO); if(newMoney.compareTo(BigDecimal.ZERO) >= 0){
if(oldMoney.compareTo(BigDecimal.ZERO) < 0){
memberUserDO.setCashAmount(newMoney);
}else {
memberUserDO.setCashAmount(memberUserDO.getCashAmount().add(money));
}
} }
wxNewMoney = memberUserDO.getWxAmount(); wxNewMoney = memberUserDO.getWxAmount();
giftNewMoney = memberUserDO.getGiftAmount(); cashNewAmount = memberUserDO.getCashAmount();
name = memberUserDO.getNickname(); name = memberUserDO.getNickname();
} }
@ -121,7 +105,6 @@ public class CashRechargeServiceImpl implements CashRechargeService {
add.setType(CostTypeEnum.ADMIN_PAY.getCode()); add.setType(CostTypeEnum.ADMIN_PAY.getCode());
add.setCashAmount(cashNewAmount); add.setCashAmount(cashNewAmount);
add.setWxAmount(wxNewMoney); add.setWxAmount(wxNewMoney);
add.setGiftAmount(giftNewMoney);
add.setCarteenId(storeId); add.setCarteenId(storeId);
add.setGroupId(groupId); add.setGroupId(groupId);
add.setGroupName(ObjectUtil.isNotEmpty(memberGroupDO)?memberGroupDO.getName():null); add.setGroupName(ObjectUtil.isNotEmpty(memberGroupDO)?memberGroupDO.getName():null);
@ -131,7 +114,7 @@ public class CashRechargeServiceImpl implements CashRechargeService {
String redisKey = "USER_" + userId; String redisKey = "USER_" + userId;
AppUserInfoCardVO appUserInfoCardVO = new AppUserInfoCardVO(); AppUserInfoCardVO appUserInfoCardVO = new AppUserInfoCardVO();
appUserInfoCardVO.setName(name); appUserInfoCardVO.setName(name);
appUserInfoCardVO.setMoney(wxNewMoney); appUserInfoCardVO.setMoney(newMoney);
cashRechargeRedisTemplate.opsForValue().set(redisKey, JSONUtil.toJsonStr(appUserInfoCardVO)); cashRechargeRedisTemplate.opsForValue().set(redisKey, JSONUtil.toJsonStr(appUserInfoCardVO));
} }
@ -153,7 +136,8 @@ public class CashRechargeServiceImpl implements CashRechargeService {
List<DishOrderDO> dishOrderDOS = dishOrderMapper.selectList(Wrappers.<DishOrderDO>lambdaQuery() List<DishOrderDO> dishOrderDOS = dishOrderMapper.selectList(Wrappers.<DishOrderDO>lambdaQuery()
.eq(DishOrderDO::getUserId, userId).eq(DishOrderDO::getOrderStatus, DishOrderDO.TOCOMPLETE) .eq(DishOrderDO::getUserId, userId).eq(DishOrderDO::getOrderStatus, DishOrderDO.TOCOMPLETE)
.eq(DishOrderDO::getStoreId, storeId)); // .eq(DishOrderDO::getStoreId, storeId)
);
if (CollectionUtil.isNotEmpty(dishOrderDOS)) { if (CollectionUtil.isNotEmpty(dishOrderDOS)) {
for (DishOrderDO dishOrderDO : dishOrderDOS) { for (DishOrderDO dishOrderDO : dishOrderDOS) {

View File

@ -39,7 +39,12 @@ public interface DeductionService {
/** /**
* 扣款 * 扣款
*/ */
void deduct(Long userId, BigDecimal money,String type,Long storeId); void deduct(Long userId, BigDecimal money,String type,Long storeId,String time);
/**
* 太空舱扣款
*/
void spaceDeduct(Long userId, BigDecimal money,String type,Long storeId);
/** /**
* 超市离线扣款 * 超市离线扣款

View File

@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.member.service.amount; package cn.iocoder.yudao.module.member.service.amount;
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.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;
@ -391,31 +390,37 @@ public class DeductionServiceImpl implements DeductionService {
BigDecimal cashAmount = user.getCashAmount(); BigDecimal cashAmount = user.getCashAmount();
BigDecimal money = user.getMoney(); BigDecimal money = user.getMoney();
BigDecimal judgeAmount;
if (total.compareTo(money) > 0) { boolean judge = judgeShopping(userId);
return money.subtract(total); if (judge) {
judgeAmount = wxAmount;
} else {
judgeAmount = money;
} }
//计算金额 if (total.compareTo(judgeAmount) > 0) {
if (total.compareTo(cashAmount) <= 0) { return judgeAmount.subtract(total);
user.setCashAmount(cashAmount.subtract(total)); }
//扣除金额
if (judge) {
user.setMoney(money.subtract(total));
user.setWxAmount(wxAmount.subtract(total));
} else { } else {
user.setCashAmount(BigDecimal.ZERO); if (total.compareTo(cashAmount) <= 0) {
BigDecimal total1 = total.subtract(cashAmount); user.setCashAmount(cashAmount.subtract(total));
if (total1.compareTo(giftAmount) <= 0) {
user.setGiftAmount(giftAmount.subtract(total1));
} else { } else {
user.setGiftAmount(BigDecimal.ZERO); user.setCashAmount(BigDecimal.ZERO);
BigDecimal total2 = total1.subtract(giftAmount); BigDecimal total1 = total.subtract(cashAmount);
user.setWxAmount(wxAmount.subtract(total2)); user.setWxAmount(wxAmount.subtract(total1));
} }
} }
userService.updateById(user); userService.updateById(user);
moneyService.updateById(moneyDO);
wxNewMoney = user.getWxAmount(); wxNewMoney = user.getWxAmount();
giftNewMoney = user.getGiftAmount(); newMoney = user.getMoney();
cashNewMoney = moneyDO.getCashAmount(); cashNewMoney = user.getCashAmount();
name = user.getNickname(); name = user.getNickname();
} }
@ -426,7 +431,6 @@ public class DeductionServiceImpl implements DeductionService {
cardDO.setType(CostTypeEnum.SHOPPING.getCode()); cardDO.setType(CostTypeEnum.SHOPPING.getCode());
cardDO.setWxAmount(wxNewMoney); cardDO.setWxAmount(wxNewMoney);
cardDO.setCashAmount(cashNewMoney); cardDO.setCashAmount(cashNewMoney);
cardDO.setGiftAmount(giftNewMoney);
cardDO.setCarteenId(storeId); cardDO.setCarteenId(storeId);
cardService.insertOne(cardDO); cardService.insertOne(cardDO);
@ -434,7 +438,7 @@ public class DeductionServiceImpl implements DeductionService {
//更新redis //更新redis
updateRedis(userId, name, wxNewMoney); updateRedis(userId, name, wxNewMoney);
return wxNewMoney.add(giftNewMoney).add(cashNewMoney); return newMoney;
} }
@ -448,50 +452,47 @@ public class DeductionServiceImpl implements DeductionService {
} }
@Override @Override
public void deduct(Long userId, BigDecimal money, String type, Long storeId) { public void deduct(Long userId, BigDecimal money, String type, Long storeId, String time) {
BigDecimal wxNewMoney; BigDecimal wxNewMoney;
BigDecimal giftNewMoney; BigDecimal newMoney;
BigDecimal cashNewMoney; BigDecimal cashNewMoney;
String name; String name;
synchronized (getUserLock(userId)) { synchronized (getUserLock(userId)) {
MemberUserDO user = userService.getUser(userId); MemberUserDO user = userService.getUser(userId);
MoneyDO moneyDO = moneyService.getMoney(userId, storeId); BigDecimal total = user.getMoney();
BigDecimal total = moneyDO.getCashAmount().add(user.getWxAmount()).add(user.getGiftAmount()); user.setMoney(total.subtract(money));
if (total.compareTo(money) < 0) { if (total.compareTo(money) < 0) {
if (CHECK_LIST.contains(type)) {
throw exception(CASH_AMOUNT_NOT_ENOUGH);
}
user.setWxAmount(BigDecimal.ZERO); user.setWxAmount(BigDecimal.ZERO);
moneyDO.setCashAmount(BigDecimal.ZERO); user.setCashAmount(BigDecimal.ZERO);
user.setGiftAmount(BigDecimal.ZERO);
moneyDO.setDebtAmount(total.subtract(money));
} else { } else {
BigDecimal wxAmount = user.getWxAmount(); BigDecimal wxAmount = user.getWxAmount();
BigDecimal giftAmount = user.getGiftAmount(); BigDecimal cashAmount = user.getCashAmount();
BigDecimal cashAmount = moneyDO.getCashAmount();
//计算金额 //计算金额
if (money.compareTo(cashAmount) <= 0) { if (judge(userId, time)) {
moneyDO.setCashAmount(cashAmount.subtract(money)); if (money.compareTo(wxAmount) <= 0) {
} else { user.setWxAmount(wxAmount.subtract(money));
moneyDO.setCashAmount(BigDecimal.ZERO);
BigDecimal total1 = money.subtract(cashAmount);
if (total1.compareTo(giftAmount) <= 0) {
user.setGiftAmount(giftAmount.subtract(total1));
} else { } else {
user.setGiftAmount(BigDecimal.ZERO); user.setWxAmount(BigDecimal.ZERO);
BigDecimal total2 = total1.subtract(giftAmount); BigDecimal total1 = money.subtract(wxAmount);
user.setWxAmount(wxAmount.subtract(total2)); user.setCashAmount(cashAmount.subtract(total1));
}
} else {
if (money.compareTo(cashAmount) <= 0) {
user.setCashAmount(cashAmount.subtract(money));
} else {
user.setCashAmount(BigDecimal.ZERO);
BigDecimal total1 = money.subtract(cashAmount);
user.setWxAmount(wxAmount.subtract(total1));
} }
} }
} }
userService.updateById(user); userService.updateById(user);
moneyService.updateById(moneyDO);
wxNewMoney = user.getWxAmount(); wxNewMoney = user.getWxAmount();
giftNewMoney = user.getGiftAmount(); newMoney = user.getMoney();
cashNewMoney = moneyDO.getCashAmount(); cashNewMoney = user.getCashAmount();
name = user.getNickname(); name = user.getNickname();
} }
@ -501,13 +502,72 @@ public class DeductionServiceImpl implements DeductionService {
cardDO.setChangeMoney(money); cardDO.setChangeMoney(money);
cardDO.setType(type); cardDO.setType(type);
cardDO.setWxAmount(wxNewMoney); cardDO.setWxAmount(wxNewMoney);
cardDO.setGiftAmount(giftNewMoney);
cardDO.setCashAmount(cashNewMoney); cardDO.setCashAmount(cashNewMoney);
cardDO.setCarteenId(storeId); cardDO.setCarteenId(storeId);
cardService.insertOne(cardDO); cardService.insertOne(cardDO);
//更新redis //更新redis
updateRedis(userId, name, wxNewMoney); updateRedis(userId, name, newMoney);
}
@Override
public void spaceDeduct(Long userId, BigDecimal money, String type, Long storeId) {
BigDecimal wxNewMoney;
BigDecimal newMoney;
BigDecimal cashNewMoney;
String name;
synchronized (getUserLock(userId)) {
MemberUserDO user = userService.getUser(userId);
BigDecimal total = user.getMoney();
if (total.compareTo(money) < 0) {
throw exception(CASH_AMOUNT_NOT_ENOUGH);
} else {
BigDecimal wxAmount = user.getWxAmount();
BigDecimal cashAmount = user.getCashAmount();
user.setMoney(total.subtract(money));
//计算金额
if (judgeSpace(userId)) {
if (money.compareTo(wxAmount) <= 0) {
user.setWxAmount(wxAmount.subtract(money));
} else {
user.setWxAmount(BigDecimal.ZERO);
BigDecimal total1 = money.subtract(wxAmount);
user.setCashAmount(cashAmount.subtract(total1));
}
} else {
if (money.compareTo(cashAmount) <= 0) {
user.setCashAmount(cashAmount.subtract(money));
} else {
user.setCashAmount(BigDecimal.ZERO);
BigDecimal total1 = money.subtract(cashAmount);
user.setWxAmount(wxAmount.subtract(total1));
}
}
}
userService.updateById(user);
wxNewMoney = user.getWxAmount();
newMoney = user.getGiftAmount();
cashNewMoney = user.getCashAmount();
name = user.getNickname();
}
CardDO cardDO = new CardDO();
cardDO.setUserId(userId);
cardDO.setFlag(CardDO.MINUS);
cardDO.setChangeMoney(money);
cardDO.setType(type);
cardDO.setWxAmount(wxNewMoney);
cardDO.setCashAmount(cashNewMoney);
cardDO.setCarteenId(storeId);
cardService.insertOne(cardDO);
//更新redis
updateRedis(userId, name, newMoney);
} }
@Override @Override
@ -570,38 +630,47 @@ public class DeductionServiceImpl implements DeductionService {
} }
//判断先扣那个金额 //判断食堂扣款顺序(true - 微信false - 现金)
public boolean checkWay(Long userId) {
//获取用户所在组分类
Integer type = memberGroupService.getGroupTypeByUserId(userId);
List<Integer> typeList = Arrays.asList(GroupTypeEnum.ADMINISTRATIVE.getCode(), GroupTypeEnum.DISTRICT.getCode());
//查询今天是否假期
Boolean isHoliday = holidayService.checkHoliday();
return isHoliday && typeList.contains(type);
}
//获取门店的金额数据
public MoneyDO getStoreMoney(List<MoneyDO> list, Long storeId, Long userId) {
Optional<MoneyDO> optionalDebt = list.stream()
.filter(debt -> storeId.equals(debt.getCarteenId()))
.findFirst();
// 如果找到了匹配的元素,则返回,否则新建一个返回
return optionalDebt.orElseGet(() -> {
MoneyDO add = new MoneyDO();
add.setUserId(userId);
add.setCarteenId(storeId);
moneyService.insertOne(add);
return add;
});
}
//判断扣款顺序
public boolean judge(Long userId) { public boolean judge(Long userId) {
Integer type = memberGroupService.getGroupTypeByUserId(userId); //获取用户所在组分类
List<Integer> typeList = Arrays.asList(GroupTypeEnum.ADMINISTRATIVE.getCode(), GroupTypeEnum.DISTRICT.getCode()); List<Integer> types = memberGroupService.getGroupTypeListByUserId(userId);
//查询今天是否假期 //查询今天是否假期
Boolean isHoliday = holidayService.checkHoliday(); Boolean isHoliday = holidayService.checkHoliday();
return isHoliday && typeList.contains(type); return isHoliday && (types.contains(GroupTypeEnum.ADMINISTRATIVE.getCode()) || types.contains(GroupTypeEnum.DISTRICT.getCode()));
}
//判断食堂扣款顺序(true - 微信false - 现金)
public boolean judge(Long userId, String time) {
//获取用户所在组分类
List<Integer> types = memberGroupService.getGroupTypeListByUserId(userId);
//查询今天是否假期
Boolean isHoliday = holidayService.checkHoliday(time);
return isHoliday && (types.contains(GroupTypeEnum.ADMINISTRATIVE.getCode()) || types.contains(GroupTypeEnum.DISTRICT.getCode()));
}
//判断购物付款顺序(true - 微信false - 现金)
public boolean judgeShopping(Long userId) {
//获取用户所在组分类
List<Integer> types = memberGroupService.getGroupTypeListByUserId(userId);
return (types.contains(GroupTypeEnum.YCLH.getCode()) || types.contains(GroupTypeEnum.DISTRICT.getCode()));
}
//判断太空舱付款顺序(true - 微信false - 现金)
public boolean judgeSpace(Long userId) {
//获取用户所在组分类
List<Integer> types = memberGroupService.getGroupTypeListByUserId(userId);
//查询今天是否假期
Boolean isHoliday = holidayService.checkHoliday();
//盈创力和不允许
if (types.contains(GroupTypeEnum.YCLH.getCode())) {
return true;
}
//行政服务中心只允许工作日
if (isHoliday && types.contains(GroupTypeEnum.ADMINISTRATIVE.getCode())) {
return true;
}
return false;
} }
} }

View File

@ -62,77 +62,31 @@ public class WxRechargeServiceImpl implements WxRechargeService {
BigDecimal wxNewMoney; BigDecimal wxNewMoney;
BigDecimal giftNewMoney; BigDecimal newMoney;
String name; String name;
synchronized (getUserLock(userId)) { synchronized (getUserLock(userId)) {
//获取最新余额 //获取最新余额
MemberUserDO memberUserDO = userMapper.selectById(userId); MemberUserDO memberUserDO = userMapper.selectById(userId);
List<MoneyDO> allDebt = moneyService.getAllDebt(userId);
List<Long> debtId = new ArrayList<>();
BigDecimal debtAmount = BigDecimal.ZERO;
if(CollectionUtil.isNotEmpty(allDebt)){
debtAmount = allDebt.stream().map(MoneyDO::getDebtAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
debtId= allDebt.stream().map(MoneyDO::getId).collect(Collectors.toList());
}
BigDecimal wxOldMoney = memberUserDO.getWxAmount(); BigDecimal wxOldMoney = memberUserDO.getWxAmount();
BigDecimal giftOldMoney = memberUserDO.getGiftAmount(); BigDecimal oldMoney = memberUserDO.getMoney();
newMoney = oldMoney.add(money);
BigDecimal computeMoney = money; BigDecimal computeMoney = money;
//处理负债 memberUserDO.setMoney(newMoney);
if( computeMoney.add(debtAmount).compareTo(BigDecimal.ZERO) < 0){ if( newMoney.compareTo(BigDecimal.ZERO) >= 0){
memberUserDO.setWxAmount(BigDecimal.ZERO); if(oldMoney.compareTo(BigDecimal.ZERO) < 0){
memberUserDO.setGiftAmount(BigDecimal.ZERO); memberUserDO.setWxAmount(newMoney);
//处理未完全支付订单
BigDecimal computeWxMoney = wxAmount; handleOrderWx(userId, money, wxAmount, giftAmount,null);
BigDecimal computeGiftMoney = giftAmount;
for (MoneyDO moneyDO : allDebt) {
if (computeMoney.add(moneyDO.getDebtAmount()).compareTo(BigDecimal.ZERO) >= 0) {
BigDecimal debtAmount1 = moneyDO.getDebtAmount();
computeMoney = computeMoney.add(debtAmount1);
moneyDO.setDebtAmount(BigDecimal.ZERO);
//处理未完全支付订单
BigDecimal paramWxMoney = BigDecimal.ZERO;
BigDecimal paramGiftMoney = BigDecimal.ZERO;
if(computeWxMoney.add(moneyDO.getDebtAmount()).compareTo(BigDecimal.ZERO)>=0){
computeWxMoney = computeWxMoney.add(moneyDO.getDebtAmount());
paramWxMoney = debtAmount1;
}else {
paramWxMoney = computeWxMoney;
paramGiftMoney = debtAmount1.abs().subtract(paramWxMoney);
computeWxMoney = BigDecimal.ZERO;
computeGiftMoney = computeGiftMoney.add(moneyDO.getDebtAmount());
}
handleOrderWx(userId, debtAmount1, paramWxMoney, paramGiftMoney,moneyDO.getCarteenId());
}else {
moneyDO.setDebtAmount(computeMoney.add(moneyDO.getDebtAmount()));
//处理未完全支付订单
handleOrderWx(userId, computeMoney, computeWxMoney, computeGiftMoney,moneyDO.getCarteenId());
break;
}
}
moneyService.updateList(allDebt);
}else {
moneyService.cleanDebt(debtId);
//处理未完全支付订单
handleOrderWx(userId, money, wxAmount, giftAmount,null);
if(wxAmount.add(debtAmount).compareTo(BigDecimal.ZERO) >= 0){
memberUserDO.setWxAmount(wxAmount.add(debtAmount).add(wxOldMoney));
memberUserDO.setGiftAmount(giftAmount.add(giftOldMoney));
}else { }else {
memberUserDO.setWxAmount(BigDecimal.ZERO); memberUserDO.setWxAmount(wxOldMoney.add(money));
memberUserDO.setGiftAmount(money.add(debtAmount));
} }
} }
userMapper.updateById(memberUserDO); userMapper.updateById(memberUserDO);
wxNewMoney = memberUserDO.getWxAmount(); wxNewMoney = memberUserDO.getWxAmount();
giftNewMoney = memberUserDO.getGiftAmount();
name = memberUserDO.getNickname(); name = memberUserDO.getNickname();
} }
@ -143,7 +97,6 @@ public class WxRechargeServiceImpl implements WxRechargeService {
cardDO.setFlag(CardDO.ADD); cardDO.setFlag(CardDO.ADD);
cardDO.setChangeMoney(money); cardDO.setChangeMoney(money);
cardDO.setType(CostTypeEnum.WX_PAY.getCode()); cardDO.setType(CostTypeEnum.WX_PAY.getCode());
cardDO.setGiftAmount(giftNewMoney);
cardDO.setWxAmount(wxNewMoney); cardDO.setWxAmount(wxNewMoney);
cardMapper.insert(cardDO); cardMapper.insert(cardDO);
@ -152,7 +105,7 @@ public class WxRechargeServiceImpl implements WxRechargeService {
String redisKey = "USER_" + userId; String redisKey = "USER_" + userId;
AppUserInfoCardVO appUserInfoCardVO = new AppUserInfoCardVO(); AppUserInfoCardVO appUserInfoCardVO = new AppUserInfoCardVO();
appUserInfoCardVO.setName(name); appUserInfoCardVO.setName(name);
appUserInfoCardVO.setMoney(wxNewMoney); appUserInfoCardVO.setMoney(newMoney);
wxRechargeRedisTemplate.opsForValue().set(redisKey, JSONUtil.toJsonStr(appUserInfoCardVO)); wxRechargeRedisTemplate.opsForValue().set(redisKey, JSONUtil.toJsonStr(appUserInfoCardVO));
} }

View File

@ -364,13 +364,12 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
public BigDecimal checkMoney(MemberUserDO memberUserDO,Long storeId) { public BigDecimal checkMoney(MemberUserDO memberUserDO,Long storeId) {
//获取所有现金 //获取所有现金
BigDecimal cashAmount = moneyService.getAllMoney(memberUserDO.getId()); BigDecimal cashAmount = memberUserDO.getCashAmount();
//获取用户所在组分类 //获取用户所在组分类
Integer type = memberGroupService.getGroupTypeByUserId(memberUserDO.getId()); List<Integer> types = memberGroupService.getGroupTypeListByUserId(memberUserDO.getId());
List<Integer> typeList = Arrays.asList(GroupTypeEnum.ADMINISTRATIVE.getCode(), GroupTypeEnum.DISTRICT.getCode());
//查询今天是否假期 //查询今天是否假期
Boolean isHoliday = holidayService.checkHoliday(); Boolean isHoliday = holidayService.checkHoliday();
boolean typeHoliday = isHoliday && typeList.contains(type); boolean typeHoliday = isHoliday && (types.contains(GroupTypeEnum.ADMINISTRATIVE.getCode()) || types.contains(GroupTypeEnum.DISTRICT.getCode()));
if(typeHoliday){ if(typeHoliday){
cashAmount = BigDecimal.ZERO; cashAmount = BigDecimal.ZERO;
} }
@ -491,12 +490,10 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
.last("limit 1")); .last("limit 1"));
MemberUserDO memberUserDO = memberUserMapper.selectById(diningPlatesDO.getUserId()); MemberUserDO memberUserDO = memberUserMapper.selectById(diningPlatesDO.getUserId());
BigDecimal cashAmount = moneyService.getAllMoney(memberUserDO.getId());
AppUserInfo appUserInfo = new AppUserInfo(); AppUserInfo appUserInfo = new AppUserInfo();
appUserInfo.setNickname(StrUtil.isNotBlank(memberUserDO.getName())?memberUserDO.getName():memberUserDO.getNickname()) appUserInfo.setNickname(StrUtil.isNotBlank(memberUserDO.getName())?memberUserDO.getName():memberUserDO.getNickname())
.setMoney(memberUserDO.getWxAmount().add(cashAmount)) .setMoney(memberUserDO.getMoney())
.setOrderMoney(new BigDecimal(stringRedisTemplate.opsForValue().get(diningPlatesNum+"-"+storeId))) .setOrderMoney(Optional.ofNullable(stringRedisTemplate.opsForValue().get(diningPlatesNum + "-" + storeId)).map(BigDecimal::new).orElse(BigDecimal.ZERO))
.setReception(memberUserDO.getReception()).setLimitAmount(memberUserDO.getLimitAmount()); .setReception(memberUserDO.getReception()).setLimitAmount(memberUserDO.getLimitAmount());
return appUserInfo; return appUserInfo;
} }

View File

@ -138,4 +138,6 @@ public interface MemberGroupService {
* 获取用户所在组类别 * 获取用户所在组类别
*/ */
Integer getGroupTypeByUserId(Long userId); Integer getGroupTypeByUserId(Long userId);
List<Integer> getGroupTypeListByUserId(Long userId);
} }

View File

@ -212,4 +212,14 @@ public class MemberGroupServiceImpl implements MemberGroupService {
List<Integer> collect = groupByUserId.stream().map(MemberGroupDO::getType).collect(Collectors.toList()); List<Integer> collect = groupByUserId.stream().map(MemberGroupDO::getType).collect(Collectors.toList());
return collect.get(0); return collect.get(0);
} }
@Override
public List<Integer> getGroupTypeListByUserId(Long userId) {
List<MemberGroupDO> groupByUserId = memberGroupMapper.getGroupByUserId(userId);
if (CollectionUtil.isEmpty(groupByUserId)) {
return Collections.singletonList(GroupTypeEnum.PERSON.getCode());
}
return groupByUserId.stream().map(MemberGroupDO::getType).collect(Collectors.toList());
}
} }

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.member.service.holiday; package cn.iocoder.yudao.module.member.service.holiday;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import javax.validation.*; import javax.validation.*;
import cn.iocoder.yudao.module.member.controller.admin.holiday.vo.*; import cn.iocoder.yudao.module.member.controller.admin.holiday.vo.*;
@ -57,4 +58,9 @@ public interface HolidayService {
* 判断今天是否是假期 * 判断今天是否是假期
*/ */
Boolean checkHoliday(); Boolean checkHoliday();
/**
* 判断指定日期是否是假期
*/
Boolean checkHoliday(String time);
} }

View File

@ -116,4 +116,20 @@ public class HolidayServiceImpl implements HolidayService {
} }
return isHoliday; return isHoliday;
} }
@Override
public Boolean checkHoliday(String time) {
// 创建 DateTimeFormatter 对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate currentDate = LocalDate.parse(time, formatter);
DayOfWeek dayOfWeek =currentDate.getDayOfWeek();
// 判断当天是否周末
boolean isHoliday = dayOfWeek== DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY;
//获取假期
HolidayDO holidayDO = holidayMapper.selectOne(new QueryWrapper<HolidayDO>().eq("date", time).last("LIMIT 1"));
if (holidayDO != null) {
isHoliday = holidayDO.getHoliday();
}
return isHoliday;
}
} }

View File

@ -500,16 +500,16 @@ public class OrderServiceImpl implements OrderService {
if (memberUserDO == null) { if (memberUserDO == null) {
throw exception(USER_NOT_EXISTS); throw exception(USER_NOT_EXISTS);
} }
String dateTime = date;
if(CostTypeEnum.MORNING.getCode().equals(type)){ if(CostTypeEnum.MORNING.getCode().equals(type)){
date = date+" 08:00:00"; dateTime = dateTime+" 08:00:00";
}else if (CostTypeEnum.NOON.getCode().equals(type)){ }else if (CostTypeEnum.NOON.getCode().equals(type)){
date = date+" 12:00:00"; dateTime = dateTime+" 12:00:00";
}else if (CostTypeEnum.NIGHT.getCode().equals(type)){ }else if (CostTypeEnum.NIGHT.getCode().equals(type)){
date = date+" 17:00:00"; dateTime = dateTime+" 17:00:00";
} }
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.parse(date, formatter); LocalDateTime now = LocalDateTime.parse(dateTime, formatter);
DishOrderDO dishOrderDO = new DishOrderDO(); DishOrderDO dishOrderDO = new DishOrderDO();
@ -532,7 +532,7 @@ public class OrderServiceImpl implements OrderService {
orderDetailDO.setDishesId(-1L); orderDetailDO.setDishesId(-1L);
orderDetailService.insertOne(orderDetailDO); orderDetailService.insertOne(orderDetailDO);
//扣费处理 //扣费处理
deductionService.deduct(memberUserDO.getId(), money, type,carteenId); deductionService.deduct(memberUserDO.getId(), money, type,carteenId,date);
//更新营业数据 //更新营业数据
StatisticsVo statisticsVo = new StatisticsVo(); StatisticsVo statisticsVo = new StatisticsVo();
statisticsVo.setCarteenId(dishOrderDO.getStoreId()); statisticsVo.setCarteenId(dishOrderDO.getStoreId());

View File

@ -84,7 +84,7 @@ public class OrderSpaceCapsuleServiceImpl implements OrderSpaceCapsuleService {
BigDecimal multiply = orderSpaceCapsule.getComboPrice().multiply(BigDecimal.valueOf(orderSpaceCapsule.getComboNum())); BigDecimal multiply = orderSpaceCapsule.getComboPrice().multiply(BigDecimal.valueOf(orderSpaceCapsule.getComboNum()));
orderSpaceCapsule.setMoney(multiply); orderSpaceCapsule.setMoney(multiply);
// 扣除余额 // 扣除余额
deductionService.deduct(orderSpaceCapsule.getUserId(), orderSpaceCapsule.getMoney(), CostTypeEnum.SHOPPING.getCode(),createReqVO.getCarteenId()); deductionService.spaceDeduct(orderSpaceCapsule.getUserId(), orderSpaceCapsule.getMoney(), CostTypeEnum.SHOPPING.getCode(),createReqVO.getCarteenId());
// 设置变动后的余额 // 设置变动后的余额
orderSpaceCapsule.setEndMoney(initialMoney.subtract(orderSpaceCapsule.getMoney())); orderSpaceCapsule.setEndMoney(initialMoney.subtract(orderSpaceCapsule.getMoney()));
// 设置支付方式 // 设置支付方式