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