vip购买相关
This commit is contained in:
@@ -9,6 +9,7 @@ import com.peanut.config.DelayQueueConfig;
|
|||||||
import com.peanut.modules.book.service.TransactionDetailsService;
|
import com.peanut.modules.book.service.TransactionDetailsService;
|
||||||
import com.peanut.modules.common.dao.JfTransactionDetailsDao;
|
import com.peanut.modules.common.dao.JfTransactionDetailsDao;
|
||||||
import com.peanut.modules.common.dao.MyUserDao;
|
import com.peanut.modules.common.dao.MyUserDao;
|
||||||
|
import com.peanut.modules.common.dao.UserVipDao;
|
||||||
import com.peanut.modules.common.dao.VipBuyConfigDao;
|
import com.peanut.modules.common.dao.VipBuyConfigDao;
|
||||||
import com.peanut.modules.common.entity.*;
|
import com.peanut.modules.common.entity.*;
|
||||||
import com.peanut.modules.common.service.BuyOrderService;
|
import com.peanut.modules.common.service.BuyOrderService;
|
||||||
@@ -24,7 +25,12 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.transaction.Transactional;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.Period;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -51,6 +57,8 @@ public class UserVipController {
|
|||||||
private TransactionDetailsService transactionDetailsService;
|
private TransactionDetailsService transactionDetailsService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private JfTransactionDetailsDao jfTransactionDetailsDao;
|
private JfTransactionDetailsDao jfTransactionDetailsDao;
|
||||||
|
@Autowired
|
||||||
|
private UserVipDao userVipDao;
|
||||||
|
|
||||||
@RequestMapping("/getMyVipHistory")
|
@RequestMapping("/getMyVipHistory")
|
||||||
public R getMyVipHistory(String userId) {
|
public R getMyVipHistory(String userId) {
|
||||||
@@ -62,8 +70,8 @@ public class UserVipController {
|
|||||||
return R.ok().put("result", userVips);
|
return R.ok().put("result", userVips);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
public R placeVipOrder(@RequestBody BuyOrder buyOrder){
|
public R placeVipOrder(@RequestBody BuyOrder buyOrder) throws Exception {
|
||||||
int uid = ShiroUtils.getUId();
|
int uid = ShiroUtils.getUId();
|
||||||
|
|
||||||
buyOrder.setOrderStatus("0");
|
buyOrder.setOrderStatus("0");
|
||||||
@@ -92,7 +100,7 @@ public class UserVipController {
|
|||||||
}
|
}
|
||||||
openVipForUser(buyOrder);
|
openVipForUser(buyOrder);
|
||||||
} else {
|
} else {
|
||||||
return R.error(500, "花生币余额不足!");
|
return R.error(500, "余额不足!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//下单微信支付预付款订单
|
//下单微信支付预付款订单
|
||||||
@@ -126,12 +134,93 @@ public class UserVipController {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openVipForUser(BuyOrder buyOrder){
|
private void openVipForUser(BuyOrder buyOrder) throws Exception {
|
||||||
VipBuyConfigEntity vipBuyConfigEntity = vipBuyConfigDao.selectById(buyOrder.getVipBuyConfigId());
|
VipBuyConfigEntity vipBuyConfigEntity = vipBuyConfigDao.selectById(buyOrder.getVipBuyConfigId());
|
||||||
|
MyUserEntity userEntity = myUserDao.selectById(buyOrder.getUserId());
|
||||||
|
if(vipBuyConfigEntity.getType()==1){//超v
|
||||||
|
if(userEntity.getVip().equals("0")){//初次办理
|
||||||
|
UserVip userVip = new UserVip();
|
||||||
|
userVip.setUserId(userEntity.getId());
|
||||||
|
userVip.setType(1);
|
||||||
|
userVip.setStartTime(new Date());
|
||||||
|
LocalDate today = LocalDate.now();
|
||||||
|
LocalDate threeYearsLater = today.plus(Period.ofYears(vipBuyConfigEntity.getYear()));
|
||||||
|
Date threeYearsDate = Date.from(threeYearsLater.atStartOfDay(java.time.ZoneId.systemDefault()).toInstant());
|
||||||
|
userVip.setEndTime(threeYearsDate);
|
||||||
|
userVipDao.insert(userVip);
|
||||||
|
userEntity.setVip("1");
|
||||||
|
myUserDao.updateById(userEntity);
|
||||||
|
}
|
||||||
|
if(userEntity.getVip().equals("1")){//vip延期
|
||||||
|
List<UserVip> userVips = userVipDao.selectList(new LambdaQueryWrapper<UserVip>().eq(UserVip::getUserId, userEntity.getId()).gt(UserVip::getEndTime, new Date()).eq(UserVip::getState, 0));
|
||||||
|
if(userVips.size()!=1){
|
||||||
|
throwExceptionMethod();
|
||||||
|
}
|
||||||
|
UserVip userVip = userVips.get(0);
|
||||||
|
Date endTime = userVip.getEndTime();
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTime(endTime);
|
||||||
|
calendar.add(Calendar.YEAR,vipBuyConfigEntity.getYear());
|
||||||
|
userVip.setEndTime(calendar.getTime());
|
||||||
|
userVipDao.updateById(userVip);
|
||||||
|
}
|
||||||
|
if (userEntity.getVip().equals("2")||userEntity.getVip().equals("3")){//医学vip或国学vip升级
|
||||||
|
List<UserVip> userVips = userVipDao.selectList(new LambdaQueryWrapper<UserVip>().eq(UserVip::getUserId, userEntity.getId()).gt(UserVip::getEndTime, new Date()).eq(UserVip::getState, 0));
|
||||||
|
if(userVips.size()!=1){
|
||||||
|
throwExceptionMethod();
|
||||||
|
}
|
||||||
|
UserVip userVip1 = userVips.get(0);
|
||||||
|
userVip1.setEndTime(new Date());
|
||||||
|
userVip1.setState(1);
|
||||||
|
userVipDao.updateById(userVip1);
|
||||||
|
UserVip userVip = new UserVip();
|
||||||
|
userVip.setUserId(userEntity.getId());
|
||||||
|
userVip.setType(1);
|
||||||
|
userVip.setStartTime(new Date());
|
||||||
|
LocalDate today = LocalDate.now();
|
||||||
|
LocalDate threeYearsLater = today.plus(Period.ofYears(vipBuyConfigEntity.getYear()));
|
||||||
|
Date threeYearsDate = Date.from(threeYearsLater.atStartOfDay(java.time.ZoneId.systemDefault()).toInstant());
|
||||||
|
userVip.setEndTime(threeYearsDate);
|
||||||
|
userVipDao.insert(userVip);
|
||||||
|
userEntity.setVip("1");
|
||||||
|
myUserDao.updateById(userEntity);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(vipBuyConfigEntity.getType()==2||vipBuyConfigEntity.getType()==3){//医学vip或国学vip
|
||||||
|
if(userEntity.getVip().equals("2")||userEntity.getVip().equals("3")){//续费
|
||||||
|
List<UserVip> userVips = userVipDao.selectList(new LambdaQueryWrapper<UserVip>().eq(UserVip::getUserId, userEntity.getId()).gt(UserVip::getEndTime, new Date()).eq(UserVip::getState, 0));
|
||||||
|
if(userVips.size()!=1){
|
||||||
|
throwExceptionMethod();
|
||||||
|
}
|
||||||
|
UserVip userVip = userVips.get(0);
|
||||||
|
Date endTime = userVip.getEndTime();
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTime(endTime);
|
||||||
|
calendar.add(Calendar.YEAR,vipBuyConfigEntity.getYear());
|
||||||
|
userVip.setEndTime(calendar.getTime());
|
||||||
|
userVipDao.updateById(userVip);
|
||||||
|
}else{//新办理
|
||||||
|
UserVip userVip = new UserVip();
|
||||||
|
userVip.setUserId(userEntity.getId());
|
||||||
|
userVip.setType(vipBuyConfigEntity.getType());
|
||||||
|
userVip.setStartTime(new Date());
|
||||||
|
LocalDate today = LocalDate.now();
|
||||||
|
LocalDate threeYearsLater = today.plus(Period.ofYears(vipBuyConfigEntity.getYear()));
|
||||||
|
Date threeYearsDate = Date.from(threeYearsLater.atStartOfDay(java.time.ZoneId.systemDefault()).toInstant());
|
||||||
|
userVip.setEndTime(threeYearsDate);
|
||||||
|
userVipDao.insert(userVip);
|
||||||
|
userEntity.setVip(vipBuyConfigEntity.getType().toString());
|
||||||
|
myUserDao.updateById(userEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void throwExceptionMethod() throws Exception {
|
||||||
|
throw new Exception("开通vip异常");
|
||||||
|
}
|
||||||
|
|
||||||
private void recordJfTransaction(BuyOrder buyOrder, MyUserEntity user, BigDecimal jf){
|
private void recordJfTransaction(BuyOrder buyOrder, MyUserEntity user, BigDecimal jf){
|
||||||
JfTransactionDetails jfTransactionDetails = new JfTransactionDetails();
|
JfTransactionDetails jfTransactionDetails = new JfTransactionDetails();
|
||||||
jfTransactionDetails.setUserId(user.getId());
|
jfTransactionDetails.setUserId(user.getId());
|
||||||
|
|||||||
@@ -40,8 +40,8 @@ public class VipServiceImpl extends ServiceImpl<VipBuyConfigDao, VipBuyConfigEnt
|
|||||||
public R getVipProductForUser() throws ParseException {
|
public R getVipProductForUser() throws ParseException {
|
||||||
int uid = ShiroUtils.getUId();
|
int uid = ShiroUtils.getUId();
|
||||||
MyUserEntity userEntity = myUserDao.selectById(uid);
|
MyUserEntity userEntity = myUserDao.selectById(uid);
|
||||||
Integer chaoCount = userVipDao.selectCount(new LambdaQueryWrapper<UserVip>().eq(UserVip::getUserId, uid).eq(UserVip::getType, 1).lt(UserVip::getEndTime,new Date()).eq(UserVip::getState,0));
|
Integer chaoCount = userVipDao.selectCount(new LambdaQueryWrapper<UserVip>().eq(UserVip::getUserId, uid).eq(UserVip::getType, 1).gt(UserVip::getEndTime,new Date()).eq(UserVip::getState,0));
|
||||||
Integer sociologyCount = userVipDao.selectCount(new LambdaQueryWrapper<UserVip>().eq(UserVip::getUserId, uid).eq(UserVip::getType, 3).lt(UserVip::getEndTime, new Date()).eq(UserVip::getState, 0));
|
Integer sociologyCount = userVipDao.selectCount(new LambdaQueryWrapper<UserVip>().eq(UserVip::getUserId, uid).eq(UserVip::getType, 3).gt(UserVip::getEndTime, new Date()).eq(UserVip::getState, 0));
|
||||||
//获取超v列表
|
//获取超v列表
|
||||||
LambdaQueryWrapper<VipBuyConfigEntity> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<VipBuyConfigEntity> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.in(VipBuyConfigEntity::getType,userEntity.getVip().equals("1")||userEntity.getVip().equals("2")? Collections.singletonList(1):Arrays.asList(1,3));
|
wrapper.in(VipBuyConfigEntity::getType,userEntity.getVip().equals("1")||userEntity.getVip().equals("2")? Collections.singletonList(1):Arrays.asList(1,3));
|
||||||
|
|||||||
Reference in New Issue
Block a user