金额互用
This commit is contained in:
		| @ -82,7 +82,8 @@ public interface ErrorCodeConstants { | |||||||
|     ErrorCode ORDER_ALREADY_COMPLETE = new ErrorCode(1_004_099_004, "餐盘未绑定"); |     ErrorCode ORDER_ALREADY_COMPLETE = new ErrorCode(1_004_099_004, "餐盘未绑定"); | ||||||
|     ErrorCode FACE_NOT_BIND_USER = new ErrorCode(1_004_099_005, "人脸未绑定"); |     ErrorCode FACE_NOT_BIND_USER = new ErrorCode(1_004_099_005, "人脸未绑定"); | ||||||
|     ErrorCode CARD_NOT_BIND_USER = new ErrorCode(1_004_099_006, "该卡未绑定用户"); |     ErrorCode CARD_NOT_BIND_USER = new ErrorCode(1_004_099_006, "该卡未绑定用户"); | ||||||
|     ErrorCode INSUFFICIENT_BALANCE = new ErrorCode(1_004_099_007, "余额不足15元,请充值"); |     ErrorCode INSUFFICIENT_BALANCE = new ErrorCode(1_004_099_007, "余额不足10元,请充值"); | ||||||
|  |     ErrorCode INSUFFICIENT_BALANCE_NEW = new ErrorCode(1_004_099_007, "余额不足,非工作日只能使用微信余额"); | ||||||
|     ErrorCode EXIST_TO_COMPLETE_ORDER = new ErrorCode(1_004_099_008, "存在未支付完的订单"); |     ErrorCode EXIST_TO_COMPLETE_ORDER = new ErrorCode(1_004_099_008, "存在未支付完的订单"); | ||||||
|     ErrorCode CARD_ALREADY_BIND = new ErrorCode(1_004_099_008, "卡号已绑定"); |     ErrorCode CARD_ALREADY_BIND = new ErrorCode(1_004_099_008, "卡号已绑定"); | ||||||
|     ErrorCode ORDER_NOT_COMPLETE = new ErrorCode(1_004_099_009, "订单未完成"); |     ErrorCode ORDER_NOT_COMPLETE = new ErrorCode(1_004_099_009, "订单未完成"); | ||||||
|  | |||||||
| @ -64,4 +64,6 @@ public interface MemberGroupMapper extends BaseMapperX<MemberGroupDO> { | |||||||
|     void deleteAssociation(Long groupId); |     void deleteAssociation(Long groupId); | ||||||
|  |  | ||||||
|     List<Long> getCarteenId(Long userId); |     List<Long> getCarteenId(Long userId); | ||||||
|  |  | ||||||
|  |     List<MemberGroupDO> getGroupByUserId(Long userId); | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,24 @@ | |||||||
|  | package cn.iocoder.yudao.module.member.enums; | ||||||
|  |  | ||||||
|  | import lombok.AllArgsConstructor; | ||||||
|  | import lombok.Getter; | ||||||
|  |  | ||||||
|  | @AllArgsConstructor | ||||||
|  | @Getter | ||||||
|  | public enum GroupTypeEnum { | ||||||
|  |     ADMINISTRATIVE(1, "行政服务中心"), | ||||||
|  |     DISTRICT(2, "区管单位"), | ||||||
|  |     YCLH(3, "盈创力和"), | ||||||
|  |     PERSON(4, "私人"), | ||||||
|  |     OTHER(5, "其他单位"), | ||||||
|  |     ; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 编码 | ||||||
|  |      */ | ||||||
|  |     private final Integer code; | ||||||
|  |     /** | ||||||
|  |      * 类型 | ||||||
|  |      */ | ||||||
|  |     private final String name; | ||||||
|  | } | ||||||
| @ -11,10 +11,12 @@ import cn.iocoder.yudao.module.member.dal.dataobject.money.MoneyDO; | |||||||
| 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.enums.CostTypeEnum; | import cn.iocoder.yudao.module.member.enums.CostTypeEnum; | ||||||
|  | import cn.iocoder.yudao.module.member.enums.GroupTypeEnum; | ||||||
| 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.group.MemberGroupService; | import cn.iocoder.yudao.module.member.service.group.MemberGroupService; | ||||||
|  | import cn.iocoder.yudao.module.member.service.holiday.HolidayService; | ||||||
| import cn.iocoder.yudao.module.member.service.money.MoneyService; | import cn.iocoder.yudao.module.member.service.money.MoneyService; | ||||||
| import cn.iocoder.yudao.module.member.service.user.MemberUserService; | import cn.iocoder.yudao.module.member.service.user.MemberUserService; | ||||||
| import com.sun.istack.NotNull; | import com.sun.istack.NotNull; | ||||||
| @ -26,8 +28,7 @@ import javax.annotation.Resource; | |||||||
|  |  | ||||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
| import java.util.Arrays; | import java.util.*; | ||||||
| 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; | ||||||
| @ -54,6 +55,10 @@ public class DeductionServiceImpl implements DeductionService { | |||||||
|     private BusinessService businessService; |     private BusinessService businessService; | ||||||
|     @Resource |     @Resource | ||||||
|     private MoneyService moneyService; |     private MoneyService moneyService; | ||||||
|  |     @Resource | ||||||
|  |     private MemberGroupService memberGroupService; | ||||||
|  |     @Resource | ||||||
|  |     private HolidayService holidayService; | ||||||
|  |  | ||||||
|  |  | ||||||
|     private static final List<String> CHECK_LIST = Arrays.asList(CostTypeEnum.SHOPPING.getCode()); |     private static final List<String> CHECK_LIST = Arrays.asList(CostTypeEnum.SHOPPING.getCode()); | ||||||
| @ -71,12 +76,16 @@ public class DeductionServiceImpl implements DeductionService { | |||||||
|  |  | ||||||
|         synchronized (getUserLock(userId)) { |         synchronized (getUserLock(userId)) { | ||||||
|             MemberUserDO user = userService.getUser(userId); |             MemberUserDO user = userService.getUser(userId); | ||||||
|             MoneyDO moneyDO = moneyService.getMoney(dishOrderDO.getUserId(), dishOrderDO.getStoreId()); |             //获取所有现金 | ||||||
|  |             List<MoneyDO> allDebt = moneyService.getAllDebt(userId); | ||||||
|  |             BigDecimal cashAmount = allDebt.stream().map(MoneyDO::getCashAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); | ||||||
|  |             //获取当前门店的数据 | ||||||
|  |             MoneyDO moneyDO =getStoreMoney(allDebt,dishOrderDO.getStoreId(),user.getId()); | ||||||
|  |  | ||||||
|             //新的总价 |             //新的总价 | ||||||
|             String s = deductionRedisTemplate.opsForValue().get(dishOrderDO.getDiningPlatesNum() + "-" + dishOrderDO.getStoreId()); |             String s = deductionRedisTemplate.opsForValue().get(dishOrderDO.getDiningPlatesNum() + "-" + dishOrderDO.getStoreId()); | ||||||
|             BigDecimal total = new BigDecimal(StrUtil.isBlank(s) ? "0" : s); |             BigDecimal total = new BigDecimal(StrUtil.isBlank(s) ? "0" : s); | ||||||
|             //现有金额 |  | ||||||
|             //BigDecimal money = user.getMoney(); |  | ||||||
|             //计算减免价格 |             //计算减免价格 | ||||||
|             BigDecimal reductionAmount = BigDecimal.ZERO; |             BigDecimal reductionAmount = BigDecimal.ZERO; | ||||||
|             //补贴 |             //补贴 | ||||||
| @ -102,13 +111,9 @@ public class DeductionServiceImpl implements DeductionService { | |||||||
|             //当前金额 |             //当前金额 | ||||||
|             BigDecimal wxAmount = user.getWxAmount(); |             BigDecimal wxAmount = user.getWxAmount(); | ||||||
|             BigDecimal giftAmount = user.getGiftAmount(); |             BigDecimal giftAmount = user.getGiftAmount(); | ||||||
|             BigDecimal cashAmount = BigDecimal.ZERO; |  | ||||||
|             if(ObjectUtil.isNotEmpty(moneyDO)){ |  | ||||||
|                 cashAmount = moneyDO.getCashAmount(); |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             BigDecimal money = wxAmount.add(giftAmount).add(cashAmount); |             BigDecimal money = wxAmount.add(giftAmount).add(cashAmount); | ||||||
|             // user.setMoney(money.subtract(total)); |  | ||||||
|             //待支付金额 最大退款金额 |             //待支付金额 最大退款金额 | ||||||
|             dishOrderDO.setRefundAmount(total); |             dishOrderDO.setRefundAmount(total); | ||||||
|             if (money.compareTo(BigDecimal.ZERO) <= 0) { |             if (money.compareTo(BigDecimal.ZERO) <= 0) { | ||||||
| @ -133,7 +138,7 @@ public class DeductionServiceImpl implements DeductionService { | |||||||
|                 moneyDO.setDebtAmount(money.subtract(total).add(moneyDO.getDebtAmount())); |                 moneyDO.setDebtAmount(money.subtract(total).add(moneyDO.getDebtAmount())); | ||||||
|             } else { |             } else { | ||||||
|                 dishOrderDO.setOrderStatus(DishOrderDO.COMPLETE); |                 dishOrderDO.setOrderStatus(DishOrderDO.COMPLETE); | ||||||
|                 //计算金额 |                 //计算金额     现金->赠送->微信 | ||||||
|                 if (total.compareTo(cashAmount) <= 0) { |                 if (total.compareTo(cashAmount) <= 0) { | ||||||
|                     moneyDO.setCashAmount(cashAmount.subtract(total)); |                     moneyDO.setCashAmount(cashAmount.subtract(total)); | ||||||
|                     dishOrderDO.setCashAmount(total); |                     dishOrderDO.setCashAmount(total); | ||||||
| @ -585,5 +590,48 @@ public class DeductionServiceImpl implements DeductionService { | |||||||
|         updateRedis(userId, name, wxNewMoney); |         updateRedis(userId, name, wxNewMoney); | ||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     //判断先扣那个金额 | ||||||
|  |     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 void cleanCashAmount(List<MoneyDO> list,Long storeId,BigDecimal debtAmount,MoneyDO moneyDO){ | ||||||
|  |         boolean isNotContain = true; | ||||||
|  |         for (MoneyDO money : list) { | ||||||
|  |             if (storeId.equals(money.getCarteenId())) { | ||||||
|  |                 money.setDebtAmount(debtAmount.add(money.getDebtAmount())); | ||||||
|  |                 isNotContain = false; | ||||||
|  |             } | ||||||
|  |             money.setCashAmount(BigDecimal.ZERO); | ||||||
|  |         } | ||||||
|  |         if (isNotContain) { | ||||||
|  |             moneyDO.setDebtAmount(debtAmount.add(moneyDO.getDebtAmount())); | ||||||
|  |             moneyDO.setCashAmount(BigDecimal.ZERO); | ||||||
|  |             list.add(moneyDO); | ||||||
|  |         } | ||||||
|  |         moneyService.updateList(list); | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
| @ -22,10 +22,13 @@ import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; | |||||||
| import cn.iocoder.yudao.module.member.dal.mysql.diningplates.DiningPlatesMapper; | import cn.iocoder.yudao.module.member.dal.mysql.diningplates.DiningPlatesMapper; | ||||||
| import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper; | 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.dal.mysql.user.MemberUserMapper; | ||||||
|  | import cn.iocoder.yudao.module.member.enums.GroupTypeEnum; | ||||||
| import cn.iocoder.yudao.module.member.service.admincard.AdminCardService; | import cn.iocoder.yudao.module.member.service.admincard.AdminCardService; | ||||||
| import cn.iocoder.yudao.module.member.service.amount.DeductionService; | import cn.iocoder.yudao.module.member.service.amount.DeductionService; | ||||||
| import cn.iocoder.yudao.module.member.service.async.MemberAsyncService; | import cn.iocoder.yudao.module.member.service.async.MemberAsyncService; | ||||||
| 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.group.MemberGroupService; | ||||||
|  | import cn.iocoder.yudao.module.member.service.holiday.HolidayService; | ||||||
| import cn.iocoder.yudao.module.member.service.money.MoneyService; | import cn.iocoder.yudao.module.member.service.money.MoneyService; | ||||||
| import cn.iocoder.yudao.module.member.util.MemberConstants; | import cn.iocoder.yudao.module.member.util.MemberConstants; | ||||||
| import cn.iocoder.yudao.module.system.api.carteen.CarteenApi; | import cn.iocoder.yudao.module.system.api.carteen.CarteenApi; | ||||||
| @ -46,10 +49,7 @@ import java.time.Duration; | |||||||
| import java.time.LocalDate; | import java.time.LocalDate; | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
| import java.time.LocalTime; | import java.time.LocalTime; | ||||||
| import java.util.ArrayList; | import java.util.*; | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.List; |  | ||||||
| import java.util.Map; |  | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
| import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||||||
| @ -67,8 +67,6 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { | |||||||
|     @Resource |     @Resource | ||||||
|     private DiningPlatesMapper diningPlatesMapper; |     private DiningPlatesMapper diningPlatesMapper; | ||||||
|     @Resource |     @Resource | ||||||
|     private CardService cardService; |  | ||||||
|     @Resource |  | ||||||
|     private MemberUserMapper memberUserMapper; |     private MemberUserMapper memberUserMapper; | ||||||
|     @Resource |     @Resource | ||||||
|     private DishOrderMapper dishOrderMapper; |     private DishOrderMapper dishOrderMapper; | ||||||
| @ -79,8 +77,6 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { | |||||||
|     @Resource |     @Resource | ||||||
|     private CarteenApi carteenApi; |     private CarteenApi carteenApi; | ||||||
|     @Resource |     @Resource | ||||||
|     private DishesApi dishesApi; |  | ||||||
|     @Resource |  | ||||||
|     private AdminCardService adminCardService; |     private AdminCardService adminCardService; | ||||||
|     @Resource |     @Resource | ||||||
|     private MemberAsyncService asyncService; |     private MemberAsyncService asyncService; | ||||||
| @ -88,6 +84,10 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { | |||||||
|     private DeductionService deductionService; |     private DeductionService deductionService; | ||||||
|     @Resource |     @Resource | ||||||
|     private MoneyService moneyService; |     private MoneyService moneyService; | ||||||
|  |     @Resource | ||||||
|  |     private MemberGroupService memberGroupService; | ||||||
|  |     @Resource | ||||||
|  |     private HolidayService holidayService; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public Long createDiningPlates(DiningPlatesSaveReqVO createReqVO) { |     public Long createDiningPlates(DiningPlatesSaveReqVO createReqVO) { | ||||||
| @ -363,19 +363,22 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     public BigDecimal checkMoney(MemberUserDO memberUserDO,Long storeId) { |     public BigDecimal checkMoney(MemberUserDO memberUserDO,Long storeId) { | ||||||
|         BigDecimal cashAmount = BigDecimal.ZERO; |         //获取所有现金 | ||||||
|         MoneyDO moneyDO = moneyService.getMoney(memberUserDO.getId(), storeId); |         BigDecimal cashAmount = moneyService.getAllMoney(memberUserDO.getId()); | ||||||
|  |         //获取用户所在组分类 | ||||||
|         if (ObjectUtil.isNotEmpty(moneyDO)) { |         Integer type = memberGroupService.getGroupTypeByUserId(memberUserDO.getId()); | ||||||
|             cashAmount = moneyDO.getCashAmount(); |         List<Integer> typeList = Arrays.asList(GroupTypeEnum.ADMINISTRATIVE.getCode(), GroupTypeEnum.DISTRICT.getCode()); | ||||||
|         }else { |         //查询今天是否假期 | ||||||
|             MoneyDO add = new MoneyDO(); |         Boolean isHoliday = holidayService.checkHoliday(); | ||||||
|             add.setUserId(memberUserDO.getId()); |         boolean typeHoliday = isHoliday && typeList.contains(type); | ||||||
|             add.setCarteenId(storeId); |         if(typeHoliday){ | ||||||
|             moneyService.insertOne(add); |             cashAmount = BigDecimal.ZERO; | ||||||
|         } |         } | ||||||
|         BigDecimal money = memberUserDO.getWxAmount().add(cashAmount); |         BigDecimal money = memberUserDO.getWxAmount().add(cashAmount); | ||||||
|         if (money.compareTo(MemberConstants.ALARM_BALANCE) < 0) { |         if (money.compareTo(MemberConstants.ALARM_BALANCE) < 0) { | ||||||
|  |             if(typeHoliday){ | ||||||
|  |                 throw exception(INSUFFICIENT_BALANCE_NEW); | ||||||
|  |             } | ||||||
|             throw exception(INSUFFICIENT_BALANCE); |             throw exception(INSUFFICIENT_BALANCE); | ||||||
|         } |         } | ||||||
|         return money; |         return money; | ||||||
| @ -384,7 +387,6 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { | |||||||
|     public void checkOrder(Long userId,Long carteenId) { |     public void checkOrder(Long userId,Long carteenId) { | ||||||
|  |  | ||||||
|         LambdaQueryWrapper<DishOrderDO> wrapper = new LambdaQueryWrapper<>(); |         LambdaQueryWrapper<DishOrderDO> wrapper = new LambdaQueryWrapper<>(); | ||||||
|  |  | ||||||
|         wrapper.eq(DishOrderDO::getUserId,userId); |         wrapper.eq(DishOrderDO::getUserId,userId); | ||||||
|         wrapper.eq(DishOrderDO::getOrderStatus,DishOrderDO.TOCOMPLETE); |         wrapper.eq(DishOrderDO::getOrderStatus,DishOrderDO.TOCOMPLETE); | ||||||
|         wrapper.eq(DishOrderDO::getStoreId,carteenId); |         wrapper.eq(DishOrderDO::getStoreId,carteenId); | ||||||
| @ -487,21 +489,12 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { | |||||||
|                 .eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum) |                 .eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum) | ||||||
|                 .eq(DiningPlatesDO::getStoreId,storeId) |                 .eq(DiningPlatesDO::getStoreId,storeId) | ||||||
|                 .last("limit 1")); |                 .last("limit 1")); | ||||||
| //        BigDecimal moneyByUserId = cardService.getMoneyByUserId(diningPlatesDO.getUserId()); |  | ||||||
|         MemberUserDO memberUserDO = memberUserMapper.selectById(diningPlatesDO.getUserId()); |         MemberUserDO memberUserDO = memberUserMapper.selectById(diningPlatesDO.getUserId()); | ||||||
|  |  | ||||||
| //        DishesRespDto dish = dishesApi.getDish(dishId); |         BigDecimal cashAmount = moneyService.getAllMoney(memberUserDO.getId()); | ||||||
|  |  | ||||||
|         MoneyDO moneyDO = moneyService.getMoney(memberUserDO.getId(), storeId); |  | ||||||
|         BigDecimal cashAmount = BigDecimal.ZERO; |  | ||||||
|         if(ObjectUtil.isNotEmpty(moneyDO)){ |  | ||||||
|             cashAmount = moneyDO.getCashAmount(); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         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()) | ||||||
| //                .setDishesName(dish.getDishesName()) |  | ||||||
| //                .setDishesBasePrice(dish.getDishesBasePrice()).setDishesSumPrice(dish.getDishesSumPrice()) |  | ||||||
|                 .setMoney(memberUserDO.getWxAmount().add(cashAmount)) |                 .setMoney(memberUserDO.getWxAmount().add(cashAmount)) | ||||||
|                 .setOrderMoney(new BigDecimal(stringRedisTemplate.opsForValue().get(diningPlatesNum+"-"+storeId))) |                 .setOrderMoney(new BigDecimal(stringRedisTemplate.opsForValue().get(diningPlatesNum+"-"+storeId))) | ||||||
|                 .setReception(memberUserDO.getReception()).setLimitAmount(memberUserDO.getLimitAmount()); |                 .setReception(memberUserDO.getReception()).setLimitAmount(memberUserDO.getLimitAmount()); | ||||||
|  | |||||||
| @ -133,4 +133,9 @@ public interface MemberGroupService { | |||||||
|     void setAdmin(GroupAdminReqVO vo); |     void setAdmin(GroupAdminReqVO vo); | ||||||
|  |  | ||||||
|     List<Long> getCarteenId(Long userId); |     List<Long> getCarteenId(Long userId); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取用户所在组类别 | ||||||
|  |      */ | ||||||
|  |     Integer getGroupTypeByUserId(Long userId); | ||||||
| } | } | ||||||
|  | |||||||
| @ -12,6 +12,7 @@ import cn.iocoder.yudao.module.member.convert.group.MemberGroupConvert; | |||||||
| import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO; | import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO; | ||||||
| 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.group.MemberGroupMapper; | import cn.iocoder.yudao.module.member.dal.mysql.group.MemberGroupMapper; | ||||||
|  | import cn.iocoder.yudao.module.member.enums.GroupTypeEnum; | ||||||
| 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.user.MemberUserService; | import cn.iocoder.yudao.module.member.service.user.MemberUserService; | ||||||
| import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | ||||||
| @ -201,4 +202,14 @@ public class MemberGroupServiceImpl implements MemberGroupService { | |||||||
|     public List<Long> getCarteenId(Long userId) { |     public List<Long> getCarteenId(Long userId) { | ||||||
|         return memberGroupMapper.getCarteenId(userId); |         return memberGroupMapper.getCarteenId(userId); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Integer getGroupTypeByUserId(Long userId) { | ||||||
|  |         List<MemberGroupDO> groupByUserId = memberGroupMapper.getGroupByUserId(userId); | ||||||
|  |         if (CollectionUtil.isEmpty(groupByUserId)) { | ||||||
|  |             return GroupTypeEnum.PERSON.getCode(); | ||||||
|  |         } | ||||||
|  |         List<Integer> collect = groupByUserId.stream().map(MemberGroupDO::getType).collect(Collectors.toList()); | ||||||
|  |         return collect.get(0); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -60,6 +60,8 @@ public interface MoneyService { | |||||||
|      */ |      */ | ||||||
|     MoneyDO getMoney(Long userId, Long carteenId); |     MoneyDO getMoney(Long userId, Long carteenId); | ||||||
|  |  | ||||||
|  |     BigDecimal getAllMoney(Long userId); | ||||||
|  |  | ||||||
|     List<MoneyDO> getAllDebt(Long userId); |     List<MoneyDO> getAllDebt(Long userId); | ||||||
|  |  | ||||||
|     void updateById(MoneyDO moneyDO); |     void updateById(MoneyDO moneyDO); | ||||||
|  | |||||||
| @ -81,6 +81,15 @@ public class MoneyServiceImpl implements MoneyService { | |||||||
|         return moneyMapper.selectOne(new LambdaQueryWrapper<MoneyDO>().eq(MoneyDO::getUserId, userId).eq(MoneyDO::getCarteenId, carteenId)); |         return moneyMapper.selectOne(new LambdaQueryWrapper<MoneyDO>().eq(MoneyDO::getUserId, userId).eq(MoneyDO::getCarteenId, carteenId)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public BigDecimal getAllMoney(Long userId) { | ||||||
|  |         List<MoneyDO> moneyDOS = moneyMapper.selectList(new LambdaQueryWrapper<MoneyDO>().eq(MoneyDO::getUserId, userId)); | ||||||
|  |         if(CollectionUtil.isNotEmpty(moneyDOS)){ | ||||||
|  |             return moneyDOS.stream().map(MoneyDO::getCashAmount).reduce(BigDecimal.ZERO, BigDecimal::add); | ||||||
|  |         } | ||||||
|  |         return BigDecimal.ZERO; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<MoneyDO> getAllDebt(Long userId) { |     public List<MoneyDO> getAllDebt(Long userId) { | ||||||
|  |  | ||||||
|  | |||||||
| @ -90,4 +90,9 @@ | |||||||
|             id in (select group_id from member_group_member where member_id = #{userId}) |             id in (select group_id from member_group_member where member_id = #{userId}) | ||||||
|     </select> |     </select> | ||||||
|  |  | ||||||
|  |     <select id="getGroupByUserId" resultType="cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO"> | ||||||
|  |         SELECT * FROM member_group WHERE | ||||||
|  |             id in (select group_id from member_group_member where member_id = #{userId}) order by type | ||||||
|  |     </select> | ||||||
|  |  | ||||||
| </mapper> | </mapper> | ||||||
		Reference in New Issue
	
	Block a user
	 zt
					zt