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;
|
import com.ruoyi.common.security.service.TokenService;
|
import com.ruoyi.other.api.domain.PointSetting;
|
import com.ruoyi.other.api.domain.VipSetting;
|
import com.ruoyi.other.api.feignClient.PointSettingClient;
|
import com.ruoyi.other.api.feignClient.SystemConfigClient;
|
import com.ruoyi.other.api.feignClient.VipGoodClient;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
|
/**
|
* <p>
|
* 前端控制器
|
* </p>
|
*
|
* @author luodangjia
|
* @since 2024-11-21
|
*/
|
@RestController
|
@RequestMapping("/user-sign-record")
|
public class UserSignRecordController {
|
@Resource
|
private UserSignRecordService userSignRecordService;
|
@Resource
|
private AppUserService appUserService;
|
@Resource
|
private TokenService tokenService;
|
@Resource
|
private PointSettingClient pointSettingClient;
|
@Resource
|
private SystemConfigClient systemConfigClient;
|
|
@Resource
|
private UserPointService userPointService;
|
@Resource
|
private BalanceChangeRecordService balanceChangeRecordService;
|
|
|
|
|
|
@ResponseBody
|
@GetMapping("/sign")
|
@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 userSignRecord = new UserSignRecord();
|
userSignRecord.setAppUserId(userId1);
|
userSignRecord.setCreateTime(LocalDateTime.now());
|
if (pointSetting != null) {
|
userSignRecord.setPoint(pointSetting.getSignPoint());
|
int signPoint = pointSetting.getSignPoint();
|
if(signPoint > 0){
|
int signPoint1 = 0;
|
if(1 == pointSetting.getWorkPointOpen()){
|
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.setVariablePoint(signPoint);
|
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);
|
}
|
}
|
return R.ok();
|
}
|
|
}
|