From f9bb41486c8c9b89c762d5ccff850e4c23a2caa8 Mon Sep 17 00:00:00 2001
From: jyy <935090232@qq.com>
Date: Tue, 06 Apr 2021 17:20:49 +0800
Subject: [PATCH] 修改bug2

---
 zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java |  139 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 99 insertions(+), 40 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java b/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java
index 1c36562..24c9221 100644
--- a/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java
+++ b/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java
@@ -6,9 +6,11 @@
 import com.matrix.core.constance.MatrixConstance;
 import com.matrix.core.exception.GlobleException;
 import com.matrix.core.tools.DateUtil;
+import com.matrix.core.tools.StringUtils;
 import com.matrix.system.common.bean.BusParameterSettings;
 import com.matrix.system.common.dao.BusParameterSettingsDao;
 import com.matrix.system.common.dao.SysUsersDao;
+import com.matrix.system.hive.bean.SysVipInfo;
 import com.matrix.system.hive.dao.SysVipInfoDao;
 import com.matrix.system.score.constant.ScoreSettingConstant;
 import com.matrix.system.score.dao.ScoreUseRecordDao;
@@ -53,12 +55,12 @@
      * 扣除用户积分
      */
     @Transactional(rollbackFor = Exception.class)
-    public void deductionScore(Long vipId,Long oprationUserId,Long shopId, Integer score, Long businessId, int type,String remark) {
-        Long companyId= vipInfoDao.selectById(vipId).getCompanyId();
+    public void deductionScore(Long vipId, Long oprationUserId, Long shopId, Integer score, Long businessId, int type, String remark) {
+        Long companyId = vipInfoDao.selectById(vipId).getCompanyId();
 
-        String createBy=MatrixConstance.SYSTEM_USER;
-        if(oprationUserId!=null){
-            createBy=sysUsersDao.selectById(oprationUserId).getSuName();
+        String createBy = MatrixConstance.SYSTEM_USER;
+        if (oprationUserId != null) {
+            createBy = sysUsersDao.selectById(oprationUserId).getSuName();
         }
 
         List<ScoreVipDetail> effectiveScoreList = scoreVipDetailDao.selectEffectiveScore(vipId);
@@ -74,20 +76,18 @@
                 //余额充足
                 currentDedution = score;
                 scoreVipDetail.setRemainScore(surplus);
-                if(surplus==0){
+                if (surplus == 0) {
                     scoreVipDetail.setState(ScoreVipDetail.SCORE_STATUS_WX);
                 }
                 scoreVipDetailDao.updateById(scoreVipDetail);
-                score=0;
+                score = 0;
             } else {
                 currentDedution = scoreVipDetail.getRemainScore();
                 scoreVipDetail.setState(ScoreVipDetail.SCORE_STATUS_WX);
                 scoreVipDetail.setRemainScore(0);
                 scoreVipDetailDao.updateById(scoreVipDetail);
-                score=Math.abs(surplus);
+                score = Math.abs(surplus);
             }
-
-
 
 
             //新增扣除记录
@@ -107,11 +107,11 @@
             scoreUseRecord.setOprationUserId(oprationUserId);
             scoreUseRecordDao.insert(scoreUseRecord);
 
-            if(surplus > 0 || surplus == 0){
+            if (surplus > 0 || surplus == 0) {
                 break;
             }
         }
-        if(score>0){
+        if (score > 0) {
             throw new GlobleException("积分不足");
         }
     }
@@ -120,26 +120,26 @@
      * 新增用户积分
      */
     @Transactional(rollbackFor = Exception.class)
-    public void addScore(Long vipId, Long oprationUserId,Long shopId, Integer score, Long businessId, int type,String remark) {
-        Long companyId= vipInfoDao.selectById(vipId).getCompanyId();
+    public void addScore(Long vipId, Long oprationUserId, Long shopId, Integer score, Long businessId, int type, String remark) {
+        Long companyId = vipInfoDao.selectById(vipId).getCompanyId();
 
-        if(score<0){
+        if (score < 0) {
             throw new IllegalArgumentException("score必须有为大于零的数");
         }
 
-        String createBy=MatrixConstance.SYSTEM_USER;
-        if(oprationUserId!=null){
-            createBy=sysUsersDao.selectById(oprationUserId).getSuName();
+        String createBy = MatrixConstance.SYSTEM_USER;
+        if (oprationUserId != null) {
+            createBy = sysUsersDao.selectById(oprationUserId).getSuName();
         }
 
         //计算过期时间
         BusParameterSettings yxqSetting = busParameterSettingsDao.selectCompanyParamByCode(ScoreSettingConstant.VALID_PERIOD_POINTS, companyId);
-        Calendar cal=Calendar.getInstance();
+        Calendar cal = Calendar.getInstance();
         int year = cal.get(Calendar.YEAR);
-        int sxYear=year+(Integer.parseInt(yxqSetting.getParamValue())-1);
-        Date sxys=DateUtil.stringToDate(sxYear+"-12-31 23:59",DateUtil.DATE_FORMAT_MM );
+        int sxYear = year + (Integer.parseInt(yxqSetting.getParamValue()) - 1);
+        Date sxys = DateUtil.stringToDate(sxYear + "-12-31 23:59", DateUtil.DATE_FORMAT_MM);
 
-        ScoreVipDetail scoreVipDetail=new ScoreVipDetail();
+        ScoreVipDetail scoreVipDetail = new ScoreVipDetail();
 
         scoreVipDetail.setCreateBy(createBy);
         scoreVipDetail.setUpdateBy(createBy);
@@ -158,7 +158,7 @@
         scoreVipDetailDao.insert(scoreVipDetail);
 
         //新增添加记录
-        ScoreUseRecord   scoreUseRecord = new ScoreUseRecord();
+        ScoreUseRecord scoreUseRecord = new ScoreUseRecord();
         scoreUseRecord.setPreScore(score);
         scoreUseRecord.setCreateBy(createBy);
         scoreUseRecord.setUpdateBy(createBy);
@@ -180,28 +180,87 @@
     }
 
     /**
+     * 根据固定等级规则新增用户积分
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void addScoreByParamSetting(Long vipId, Long oprationUserId, Long shopId, Integer firstScore, Long businessId, int type, String remark, BusParameterSettings parameterSetting) {
+
+
+        SysVipInfo vipInfo = sysVipInfoDao.selectById(vipId);
+
+
+        //添加自己的积分
+        if (firstScore > 0) {
+            addScore(
+                    vipInfo.getId(),
+                    oprationUserId,
+                    shopId,
+                    firstScore,
+                    businessId,
+                    type,
+                    remark
+            );
+        }
+
+        if (StringUtils.isNotBlank(parameterSetting.getParamValue())
+                && vipInfo.getRecommendId() != null) {
+            //推荐注册老带新积分奖励
+            SysVipInfo referrerVip = sysVipInfoDao.selectById(vipInfo.getRecommendId());
+            Integer secondScore = new Integer(parameterSetting.getParamValue());
+            if (secondScore > 0) {
+                addScore(
+                        referrerVip.getId(),
+                        oprationUserId,
+                        shopId,
+                        secondScore,
+                        businessId,
+                        type,
+                        remark
+                );
+            }
+            //推荐注册二级带新积分奖励
+            if (StringUtils.isNotBlank(parameterSetting.getParamValue1())
+                    && referrerVip.getRecommendId() != null) {
+                Integer threeScore = new Integer(parameterSetting.getParamValue());
+                if (threeScore > 0) {
+                    addScore(
+                            referrerVip.getRecommendId(),
+                            oprationUserId,
+                            shopId,
+                            threeScore,
+                            businessId,
+                            type,
+                            remark
+                    );
+                }
+            }
+        }
+    }
+
+
+    /**
      * 退积分
      */
-    public void refundScore(Long vipId, Integer score, Long oldBusinessId, int type){
+    public void refundScore(Long vipId, Integer score, Long oldBusinessId, int type) {
 
-        Long companyId= vipInfoDao.selectById(vipId).getCompanyId();
+        Long companyId = vipInfoDao.selectById(vipId).getCompanyId();
 
-        if(score<0){
+        if (score < 0) {
             throw new IllegalArgumentException("score必须有为大于零的数");
         }
         //查询原始使用记录
-        QueryWrapper queryWrapper=new QueryWrapper();
-        queryWrapper.eq("business_id",oldBusinessId);
-        queryWrapper.eq("company_id",companyId);
-        queryWrapper.eq("type",type);
+        QueryWrapper queryWrapper = new QueryWrapper();
+        queryWrapper.eq("business_id", oldBusinessId);
+        queryWrapper.eq("company_id", companyId);
+        queryWrapper.eq("type", type);
         List<ScoreUseRecord> scoreUseRecordList = scoreUseRecordDao.selectList(queryWrapper);
         scoreUseRecordList.forEach(scoreUseRecord -> {
             ScoreVipDetail scoreVipDetail = scoreVipDetailDao.selectById(scoreUseRecord.getScoreVipDetailId());
-            if(scoreVipDetail!=null){
-                if(DateTime.now().isAfter(scoreVipDetail.getValiditeTime())){
+            if (scoreVipDetail != null) {
+                if (DateTime.now().isAfter(scoreVipDetail.getValiditeTime())) {
                     //积分还有效
-                    scoreVipDetail.setRemainScore( scoreVipDetail.getRemainScore()+score);
-                    scoreVipDetail.setUsedScore(scoreVipDetail.getUsedScore()-score);
+                    scoreVipDetail.setRemainScore(scoreVipDetail.getRemainScore() + score);
+                    scoreVipDetail.setUsedScore(scoreVipDetail.getUsedScore() - score);
                     scoreVipDetail.setState(ScoreVipDetail.SCORE_STATUS_YX);
                     scoreVipDetailDao.updateById(scoreVipDetail);
                     scoreUseRecordDao.deleteById(scoreUseRecord.getId());
@@ -211,15 +270,15 @@
         });
     }
 
-    public void removeByBusinessId( Long vipId,  Long oldBusinessId){
-        Long companyId= vipInfoDao.selectById(vipId).getCompanyId();
+    public void removeByBusinessId(Long vipId, Long oldBusinessId) {
+        Long companyId = vipInfoDao.selectById(vipId).getCompanyId();
 
-        if(oldBusinessId==null){
+        if (oldBusinessId == null) {
             throw new IllegalArgumentException("oldBusinessId必须有");
         }
-        QueryWrapper queryWrapper=new QueryWrapper();
-        queryWrapper.eq("business_id",oldBusinessId);
-        queryWrapper.eq("company_id",companyId);
+        QueryWrapper queryWrapper = new QueryWrapper();
+        queryWrapper.eq("business_id", oldBusinessId);
+        queryWrapper.eq("company_id", companyId);
         scoreVipDetailDao.delete(queryWrapper);
         scoreUseRecordDao.delete(queryWrapper);
     }

--
Gitblit v1.9.1