From f7b2baec57a19039ca85880bbba4e17fe27f0511 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 10 三月 2021 18:21:13 +0800 Subject: [PATCH] 删除冗余代码,初步优化首页的推荐专题,3.8.7之后在我的里面添加VIP分类 --- src/main/java/com/yeshi/buwan/service/imp/vip/VIPServiceImpl.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 54 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/yeshi/buwan/service/imp/vip/VIPServiceImpl.java b/src/main/java/com/yeshi/buwan/service/imp/vip/VIPServiceImpl.java index 3aa946c..87eaf03 100644 --- a/src/main/java/com/yeshi/buwan/service/imp/vip/VIPServiceImpl.java +++ b/src/main/java/com/yeshi/buwan/service/imp/vip/VIPServiceImpl.java @@ -11,11 +11,13 @@ import com.yeshi.buwan.exception.vip.VIPException; import com.yeshi.buwan.pptv.PPTVVipManager; import com.yeshi.buwan.service.inter.vip.VIPService; +import com.yeshi.buwan.util.log.LoggerUtil; import com.yeshi.buwan.util.user.VipUtil; import com.yeshi.buwan.util.vip.VIPOrderUtil; -import org.hibernate.LockMode; import org.hibernate.Query; import org.hibernate.Session; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.alipay.AlipayH5PayUtil; @@ -26,12 +28,15 @@ import java.io.Serializable; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; @Service public class VIPServiceImpl implements VIPService { + + Logger logger = LoggerFactory.getLogger(VIPServiceImpl.class); @Resource private VIPOrderRecordDao vipOrderRecordDao; @@ -78,12 +83,12 @@ @Transactional(rollbackFor = Exception.class) @Override public VIPOrderRecord paySuccess(final String id, int payWay, BigDecimal payMoney, Date payTime) throws VIPException, PPTVException { + LoggerUtil.getTestLogger().info("鏀粯鎴愬姛:寮�濮嬫墽琛寋}", id); Session session = vipOrderRecordDao.getSession(); //淇敼璁板綍 - Query query = session.createQuery("from VIPOrderRecord as r where r.id=? ").setParameter(0, id); - query.setLockMode("r", LockMode.UPGRADE); + Query query = session.createSQLQuery("select * from wk_vip_order_record r where r.id=? for update").addEntity(VIPOrderRecord.class).setCacheable(false).setParameter(0, id); List<VIPOrderRecord> list = query.list(); if (list != null && list.size() > 0) { @@ -91,6 +96,7 @@ if (record.getState() == VIPOrderRecord.STATE_PAY) throw new VIPException(1, "璁㈠崟宸茬粡鏀粯"); + session.createSQLQuery("insert into wk_vip_order_pay_success(id,create_time) value(?,now())").setParameter(0, id).executeUpdate(); record.setPayWay(payWay); record.setPayMoney(payMoney); @@ -109,8 +115,12 @@ record.setVipEndTime(expireDate[1]); session.update(record); + + + LoggerUtil.getTestLogger().info("鏀粯鎴愬姛:淇敼璁板綍{}", id); //璐拱VIP pptvVipManager.buyVIP(record); + LoggerUtil.getTestLogger().info("鏀粯鎴愬姛:璐拱VIP鎴愬姛{}", id); return record; } else { throw new VIPException(10, "璁㈠崟涓嶅瓨鍦�"); @@ -131,7 +141,7 @@ private Date[] addExpireTime(Session session, String uid, Date payTime, VIPPriceType type) { if (type == null || uid == null) return null; - List list = session.createQuery("from UserVIPInfo i where i.uid=?").setParameter(0, uid).setLockMode("i", LockMode.UPGRADE).list(); + List list = session.createSQLQuery("select * from wk_user_vip i where i.uid=? for update").addEntity(UserVIPInfo.class).setParameter(0, uid).list(); if (list == null || list.size() == 0) { //鏂板 UserVIPInfo vip = new UserVIPInfo(); @@ -146,7 +156,7 @@ Date expireDate = getExpireTime(payTime, vipInfo.getExpireDate(), type); session.createQuery("update UserVIPInfo i set i.expireDate=? ,i.updateTime=? where i.uid=?").setParameter(0, expireDate).setParameter(1, new Date()).setParameter(2, uid).executeUpdate(); - return new Date[]{vipInfo.getExpireDate(), expireDate}; + return new Date[]{vipInfo.getExpireDate() == null ? new Date() : vipInfo.getExpireDate(), expireDate}; } } @@ -268,4 +278,43 @@ userVIPInfoDao.save(userVIPInfo); } } + + @Override + public List<UserVIPInfo> listVIPUser(Date minVIPExpireDate, Date maxVIPExpireDate, int page, int pageSize) { + List<Serializable> list = new ArrayList<>(); + String hql = "from UserVIPInfo vip where 1=1"; + if (minVIPExpireDate != null) { + hql += " and vip.expireDate>=?"; + list.add(minVIPExpireDate); + } + + if (maxVIPExpireDate != null) { + hql += " and vip.expireDate<?"; + list.add(maxVIPExpireDate); + } + hql += " order by vip.createTime desc"; + Serializable[] params = new Serializable[list.size()]; + list.toArray(params); + return userVIPInfoDao.list(hql, (page - 1) * pageSize, pageSize, params); + + } + + @Override + public long countVIPUser(Date minVIPExpireDate, Date maxVIPExpireDate) { + List<Serializable> list = new ArrayList<>(); + String hql = "from UserVIPInfo vip where 1=1"; + if (minVIPExpireDate != null) { + hql += " and vip.expireDate>=?"; + list.add(minVIPExpireDate); + } + + if (maxVIPExpireDate != null) { + hql += " and vip.expireDate<?"; + list.add(maxVIPExpireDate); + } + hql += " order by vip.createTime desc"; + Serializable[] params = new Serializable[list.size()]; + list.toArray(params); + return userVIPInfoDao.getCount(hql, params); + } } -- Gitblit v1.8.0