| | |
| | | package com.ruoyi.account.controller; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.ruoyi.account.api.model.AppUser; |
| | | import com.ruoyi.account.api.model.BalanceChangeRecord; |
| | | import com.ruoyi.account.api.model.UserPoint; |
| | | import com.ruoyi.account.api.model.UserSignRecord; |
| | | import com.ruoyi.account.dto.SignBackRDto; |
| | | import com.ruoyi.account.service.AppUserService; |
| | | import com.ruoyi.account.service.BalanceChangeRecordService; |
| | | import com.ruoyi.account.service.UserPointService; |
| | | import com.ruoyi.account.service.UserSignRecordService; |
| | | import com.ruoyi.common.core.domain.R; |
| | |
| | | |
| | | @Resource |
| | | private UserPointService userPointService; |
| | | @Resource |
| | | private BalanceChangeRecordService balanceChangeRecordService; |
| | | |
| | | |
| | | |
| | |
| | | @ApiOperation(value = "签到", tags = {"小程序-签到"}) |
| | | public R<SignBackRDto> sign(){ |
| | | Long userId1 = tokenService.getLoginUserApplet().getUserid(); |
| | | UserSignRecord one = userSignRecordService.getOne(new LambdaQueryWrapper<UserSignRecord>().eq(UserSignRecord::getAppUserId, userId1) |
| | | .eq(UserSignRecord::getDelFlag, 0).last(" and DATE_FORMAT(NOW(), '%Y-%m-%d') = DATE_FORMAT(create_time, '%Y-%m-%d')")); |
| | | if(null != one){ |
| | | return R.fail("今天已经签过到了"); |
| | | } |
| | | AppUser appUser = appUserService.getById(userId1); |
| | | //获取当前用户的会员信息 |
| | | PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData(); |
| | |
| | | userSignRecord.setPoint(pointSetting.getSignPoint()); |
| | | int signPoint = pointSetting.getSignPoint(); |
| | | if(signPoint > 0){ |
| | | int signPoint1 = signPoint; |
| | | int signPoint1 = 0; |
| | | if(1 == pointSetting.getWorkPointOpen()){ |
| | | signPoint1 = new BigDecimal(signPoint1).multiply(pointSetting.getWorkPoint().divide(new BigDecimal(100))).intValue(); |
| | | signPoint1 = new BigDecimal(signPoint).multiply(pointSetting.getWorkPoint().divide(new BigDecimal(100))).intValue(); |
| | | } |
| | | Integer lavePoint = appUser.getLavePoint(); |
| | | appUser.setTotalPoint(appUser.getTotalPoint() + signPoint); |
| | | appUser.setLavePoint(appUser.getLavePoint() + signPoint); |
| | | appUser.setAvailablePoint(appUser.getAvailablePoint() + signPoint1); |
| | | appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + signPoint1); |
| | | if(null != pointSetting && 1 == pointSetting.getWorkPointGift()){ |
| | | appUser.setTransferablePoint(appUser.getTransferablePoint() + signPoint1); |
| | | } |
| | | appUser.setTotalSignPoint(appUser.getTotalSignPoint() + signPoint); |
| | | appUserService.updateById(appUser); |
| | | |
| | | //添加积分变动记录 |
| | | UserPoint userPoint = new UserPoint(); |
| | | userPoint.setType(5); |
| | | userPoint.setHistoricalPoint(lavePoint); |
| | | userPoint.setVariablePoint(signPoint); |
| | | userPoint.setBalance(appUser.getLavePoint()); |
| | | userPoint.setCreateTime(LocalDateTime.now()); |
| | | userPoint.setAppUserId(appUser.getId()); |
| | | userPoint.setChangeDirection(1); |
| | | userPointService.save(userPoint); |
| | | //变更等级 |
| | | appUserService.vipUpgrade(appUser.getId()); |
| | | |
| | | R<BigDecimal> bigDecimalR = systemConfigClient.redPackegeSet(); |
| | | BigDecimal data = bigDecimalR.getData(); |
| | | if(data.compareTo(BigDecimal.ZERO) > 0){ |
| | | userSignRecord.setRedAmount(data); |
| | | userSignRecord.setSignDay(LocalDate.now()); |
| | | BigDecimal sum = appUser.getTotalRedPacketAmount().add(bigDecimalR.getData()); |
| | | appUser.setTotalRedPacketAmount(sum); |
| | | BigDecimal sum2 = appUser.getBalance().add(bigDecimalR.getData()); |
| | | appUser.setBalance(sum2); |
| | | appUserService.updateById(appUser); |
| | | // 增加一条余额明细 |
| | | BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); |
| | | balanceChangeRecord.setAppUserId(appUser.getId()); |
| | | balanceChangeRecord.setVipId(appUser.getVipId()); |
| | | balanceChangeRecord.setChangeType(3); |
| | | balanceChangeRecord.setChangeAmount(bigDecimalR.getData()); |
| | | balanceChangeRecord.setDelFlag(0); |
| | | balanceChangeRecord.setCreateTime(LocalDateTime.now()); |
| | | balanceChangeRecord.setChangeDirection(1); |
| | | balanceChangeRecordService.save(balanceChangeRecord); |
| | | } |
| | | userSignRecordService.save(userSignRecord); |
| | | SignBackRDto signBackRDto = new SignBackRDto(); |
| | | signBackRDto.setPoint(userSignRecord.getPoint()); |
| | | signBackRDto.setRedAmount(userSignRecord.getRedAmount()); |
| | | return R.ok(signBackRDto); |
| | | } |
| | | }else { |
| | | userSignRecord.setPoint(0); |
| | | } |
| | | R<BigDecimal> bigDecimalR = systemConfigClient.redPackegeSet(); |
| | | userSignRecord.setRedAmount(bigDecimalR.getData()); |
| | | userSignRecord.setSignDay(LocalDate.now()); |
| | | |
| | | SignBackRDto signBackRDto = new SignBackRDto(); |
| | | signBackRDto.setPoint(userSignRecord.getPoint()); |
| | | signBackRDto.setRedAmount(userSignRecord.getRedAmount()); |
| | | userSignRecordService.save(userSignRecord); |
| | | return R.ok(signBackRDto); |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |