From d70492031e33077dab2232c97e76f853b1e2fc6b Mon Sep 17 00:00:00 2001 From: wyn <1074145239@qq.com> Date: Tue, 12 May 2026 14:50:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A6=87=E5=B9=BC=E7=94=9F?= =?UTF-8?q?=E6=AE=96VIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/controller/UserVipController.java | 23 ++++++++++++++++--- .../modules/common/dao/UserVipLogDao.java | 2 ++ .../common/service/UserVipLogService.java | 2 ++ .../service/impl/ClassEntityServiceImpl.java | 2 +- .../service/impl/UserVipLogServiceImpl.java | 5 ++++ .../service/impl/UserVipServiceImpl.java | 19 +++++++++------ .../controller/StatisticsController.java | 22 +++++++++++++++++- .../mapper/master/UserCourseBuyDao.xml | 2 +- .../resources/mapper/master/UserVipLogDao.xml | 23 ++++++++++++++++++- 9 files changed, 86 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/peanut/modules/common/controller/UserVipController.java b/src/main/java/com/peanut/modules/common/controller/UserVipController.java index 923c014..aecd046 100644 --- a/src/main/java/com/peanut/modules/common/controller/UserVipController.java +++ b/src/main/java/com/peanut/modules/common/controller/UserVipController.java @@ -70,12 +70,14 @@ public class UserVipController { List l9 = userVipService.list(new LambdaQueryWrapper().eq(UserVip::getUserId,ShiroUtils.getUId()).eq(UserVip::getType,9).orderByDesc(UserVip::getEndTime)); List l5 = userVipService.list(new LambdaQueryWrapper().eq(UserVip::getUserId,ShiroUtils.getUId()).eq(UserVip::getType,5).orderByDesc(UserVip::getEndTime)); List l6 = userVipService.list(new LambdaQueryWrapper().eq(UserVip::getUserId,ShiroUtils.getUId()).eq(UserVip::getType,6).orderByDesc(UserVip::getEndTime)); - if (l4.size()>0&&l9.size()>0&&l5.size()>0&&l6.size()>0){ + List l10 = userVipService.list(new LambdaQueryWrapper().eq(UserVip::getUserId,ShiroUtils.getUId()).eq(UserVip::getType,10).orderByDesc(UserVip::getEndTime)); + if (l4.size()>0&&l9.size()>0&&l5.size()>0&&l6.size()>0&&l10.size()>0){ Date t4 = l4.get(0).getEndTime(); Date t9 = l9.get(0).getEndTime(); Date t5 = l5.get(0).getEndTime(); Date t6 = l6.get(0).getEndTime(); - if (t4.getTime()==t9.getTime()&&t9.getTime()==t5.getTime()&&t5.getTime()==t6.getTime()){ + Date t10 = l10.get(0).getEndTime(); + if (t4.getTime()==t9.getTime()&&t9.getTime()==t5.getTime()&&t5.getTime()==t6.getTime()&&t6.getTime()==t10.getTime()){ Map map = new HashMap(); map.put("type",1); map.put("endTime",t4); @@ -98,6 +100,10 @@ public class UserVipController { map6.put("type",6); map6.put("endTime",t6); tempList.add(map6); + Map map10 = new HashMap(); + map10.put("type",10); + map10.put("endTime",t10); + tempList.add(map10); tempList = tempList.stream().sorted((map1,map2)->{ return Long.compare(((Date)map1.get("endTime")).getTime(),((Date)map2.get("endTime")).getTime()); }).collect(Collectors.toList()); @@ -133,6 +139,13 @@ public class UserVipController { resList.add(map); } + if (l10.size()>0){ + Map map = new HashMap(); + map.put("type",10); + map.put("endTime",l10.get(0).getEndTime()); + resList.add(map); + + } } } List l7 = userVipService.list(new LambdaQueryWrapper().eq(UserVip::getUserId,ShiroUtils.getUId()).eq(UserVip::getType,7).orderByDesc(UserVip::getEndTime)); @@ -203,6 +216,7 @@ public class UserVipController { ll.add(Arrays.asList(6)); ll.add(Arrays.asList(2)); ll.add(Arrays.asList(7,8)); + ll.add(Arrays.asList(10)); } List> resList = new ArrayList<>(); for (List l : ll) { @@ -369,6 +383,7 @@ public class UserVipController { public R placeVipOrder(@RequestBody BuyOrder buyOrder){ int uid = ShiroUtils.getUId(); buyOrder.setOrderStatus("0"); + buyOrder.setPaymentDate(new Date()); buyOrder.setOrderType("vip"); String timeId = IdWorker.getTimeId().substring(0, 32); buyOrder.setOrderSn(timeId); @@ -469,7 +484,7 @@ public class UserVipController { Map map = new HashMap(); map.put("courseCount",0); map.put("originalPrice",0); - if ("4".equals(type)||"9".equals(type)||"5".equals(type)||"6".equals(type)){ + if ("4".equals(type)||"9".equals(type)||"5".equals(type)||"6".equals(type)||"10".equals(type)){ List list = new ArrayList<>(); if ("4".equals(type)){ userVipService.bottomLabel(1,list); @@ -479,6 +494,8 @@ public class UserVipController { userVipService.bottomLabel(2,list); }else if ("6".equals(type)){ userVipService.bottomLabel(5,list); + }else if ("10".equals(type)){ + userVipService.bottomLabel(109,list); } if (list.size()>0){ MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); diff --git a/src/main/java/com/peanut/modules/common/dao/UserVipLogDao.java b/src/main/java/com/peanut/modules/common/dao/UserVipLogDao.java index 0e87376..58e5bd1 100644 --- a/src/main/java/com/peanut/modules/common/dao/UserVipLogDao.java +++ b/src/main/java/com/peanut/modules/common/dao/UserVipLogDao.java @@ -14,4 +14,6 @@ public interface UserVipLogDao extends MPJBaseMapper { List> getUserVipLogInfo(@Param("date") String date); Map getUserVipLogInfoTotal(@Param("date") String date); + + List> getUserVipRefundInfo(@Param("date") String last_l_date,@Param("date") String last_date); } diff --git a/src/main/java/com/peanut/modules/common/service/UserVipLogService.java b/src/main/java/com/peanut/modules/common/service/UserVipLogService.java index bf2ef32..381e41a 100644 --- a/src/main/java/com/peanut/modules/common/service/UserVipLogService.java +++ b/src/main/java/com/peanut/modules/common/service/UserVipLogService.java @@ -22,6 +22,8 @@ public interface UserVipLogService extends IService { List> getUserVipLogInfo(String date); + List> getUserVipRefundInfo(String last_l_date, String last_date); + Map getUserVipLogInfoTotal(String date); } diff --git a/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java index 363e123..1664a45 100644 --- a/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java +++ b/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java @@ -1396,7 +1396,7 @@ public class ClassEntityServiceImpl extends ServiceImpl> getUserVipRefundInfo(String last_l_date, String last_date) { + return this.baseMapper.getUserVipRefundInfo(last_l_date,last_date); + } + @Override public Map getUserVipLogInfoTotal(String date) { return this.baseMapper.getUserVipLogInfoTotal(date); diff --git a/src/main/java/com/peanut/modules/common/service/impl/UserVipServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/UserVipServiceImpl.java index 9ff111d..cc40cd5 100644 --- a/src/main/java/com/peanut/modules/common/service/impl/UserVipServiceImpl.java +++ b/src/main/java/com/peanut/modules/common/service/impl/UserVipServiceImpl.java @@ -140,7 +140,7 @@ public class UserVipServiceImpl extends ServiceImpl impleme .eq(UserVip::getUserId, u==null?ShiroUtils.getUId():u.getId()) .eq(UserVip::getState,0)); for (UserVip userVip : userVipList) { - if (userVip.getType()==4||userVip.getType()==9||userVip.getType()==5||userVip.getType()==6) { + if (userVip.getType()==4||userVip.getType()==9||userVip.getType()==5||userVip.getType()==6||userVip.getType()==10) { List list = courseToMedicalDao.selectList(new LambdaQueryWrapper() .eq(CourseToMedicine::getCourseId,courseId)); for (CourseToMedicine ctm:list) { @@ -149,6 +149,7 @@ public class UserVipServiceImpl extends ServiceImpl impleme if ((cm.getId()==1&&userVip.getType()==4)||//中医学 (cm.getId()==74&&userVip.getType()==9)||//中西汇通 (cm.getId()==2&&userVip.getType()==5)||//针灸学 + (cm.getId()==109&&userVip.getType()==10)||//妇幼生殖 (cm.getId()==5&&userVip.getType()==6)){//肿瘤学 return userVip; } @@ -205,6 +206,8 @@ public class UserVipServiceImpl extends ServiceImpl impleme set.add(6); }else if (cm.getId() == 4) {//心身医学 set.add(8); + }else if (cm.getId() == 109){//妇幼生殖 + set.add(10); } } } @@ -221,7 +224,8 @@ public class UserVipServiceImpl extends ServiceImpl impleme return set; } - public CourseMedicine topLabel(int labelId) { + public CourseMedicine + topLabel(int labelId) { CourseMedicine cm = courseMedicineDao.selectById(labelId); if (cm != null) { CourseMedicine pcm = courseMedicineDao.selectById(cm.getPid()); @@ -258,8 +262,9 @@ public class UserVipServiceImpl extends ServiceImpl impleme List resList = new ArrayList(); if(vipBuyConfigEntity.getType()==1){//医学超级 List userVipList = userVipDao.selectList(new LambdaQueryWrapper() - .eq(UserVip::getUserId,buyOrder.getUserId()).eq(UserVip::getState,0).in(UserVip::getType,4,9,5,6)); - for (int i=4;i<=7;i++){ + .eq(UserVip::getUserId,buyOrder.getUserId()).eq(UserVip::getState,0).in(UserVip::getType,4,9,5,6,10)); + for (int i=4;i<=10;i++){ + log.info("openVipForUser====i:"+i); if (i==7){ i=9; } @@ -289,7 +294,7 @@ public class UserVipServiceImpl extends ServiceImpl impleme } } }else if(vipBuyConfigEntity.getType()==11){//延期医学超级 - for (int i=4;i<=7;i++){ + for (int i=4;i<=10;i++){ if (i==7){ i=9; } @@ -367,7 +372,7 @@ public class UserVipServiceImpl extends ServiceImpl impleme } } }else if (vipBuyConfigEntity.getType()==4||vipBuyConfigEntity.getType()==9||vipBuyConfigEntity.getType()==5||vipBuyConfigEntity.getType()==6|| - vipBuyConfigEntity.getType()==7||vipBuyConfigEntity.getType()==8){ + vipBuyConfigEntity.getType()==7||vipBuyConfigEntity.getType()==8 || vipBuyConfigEntity.getType()==10){ UserVip userVip = new UserVip(); userVip.setUserId(buyOrder.getUserId()); userVip.setType(vipBuyConfigEntity.getType()); @@ -376,7 +381,7 @@ public class UserVipServiceImpl extends ServiceImpl impleme userVipDao.insert(userVip); resList.add(userVip); }else if (vipBuyConfigEntity.getType()==41||vipBuyConfigEntity.getType()==91||vipBuyConfigEntity.getType()==51||vipBuyConfigEntity.getType()==61|| - vipBuyConfigEntity.getType()==71||vipBuyConfigEntity.getType()==81){ + vipBuyConfigEntity.getType()==71||vipBuyConfigEntity.getType()==81 ||vipBuyConfigEntity.getType()==101){ List userVipList = userVipDao.selectList(new LambdaQueryWrapper() .eq(UserVip::getUserId,buyOrder.getUserId()) .eq(UserVip::getType,vipBuyConfigEntity.getType().toString().substring(0,1)) diff --git a/src/main/java/com/peanut/modules/master/controller/StatisticsController.java b/src/main/java/com/peanut/modules/master/controller/StatisticsController.java index 8403d2e..7072f78 100644 --- a/src/main/java/com/peanut/modules/master/controller/StatisticsController.java +++ b/src/main/java/com/peanut/modules/master/controller/StatisticsController.java @@ -19,6 +19,8 @@ import java.io.IOException; import java.io.OutputStream; import java.math.BigDecimal; import java.net.URLEncoder; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; /** @@ -600,7 +602,17 @@ public class StatisticsController { //导出vip记录明细 @RequestMapping("/exportUserVipLogInfo") public void exportUserVipLogInfo(HttpServletResponse response, @RequestBody Map params){ - List> maps = userVipLogService.getUserVipLogInfo(params.get("date").toString()); + String dateStr = params.get("date").toString(); + List> maps = userVipLogService.getUserVipLogInfo(dateStr); + + /* DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate date = LocalDate.parse(params.get("date").toString(), fmt); + String date_last_date = date.minusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM")); + + List> refundMaps = userVipLogService.getUserVipRefundInfo(date_last_date,dateStr);*/ + + + XSSFWorkbook wb = new XSSFWorkbook(); //创建一张表 Sheet sheet = wb.createSheet("vip记录明细"); @@ -626,6 +638,14 @@ public class StatisticsController { titleRow.createCell(17).setCellValue("已摊销金额"); titleRow.createCell(18).setCellValue("当月摊销金额"); titleRow.createCell(19).setCellValue("剩余摊销金额"); +// for (Map map:refundMaps){ +// Map newMap = new HashMap<>(); +// newMap.put("name",map.get("name").toString()); +// newMap.put("tel",map.get("tel").toString()); +// newMap.put("type",map.get("type").toString()); +// +// } + //序号,默认为1 int cell = 1; //遍历 diff --git a/src/main/resources/mapper/master/UserCourseBuyDao.xml b/src/main/resources/mapper/master/UserCourseBuyDao.xml index 095fcd2..6035dce 100644 --- a/src/main/resources/mapper/master/UserCourseBuyDao.xml +++ b/src/main/resources/mapper/master/UserCourseBuyDao.xml @@ -35,7 +35,7 @@ left join course_catalogue cc on cc.id = ucb.catalogue_id left join pay_zfb_order pzo on pzo.relevanceOid = ucbl.order_sn and pzo.trade_no is not null where ucbl.del_flag = 0 and ucbl.fee > 0 and DATE_FORMAT(ucbl.pay_time,'%Y-%m-%d') <= #{date} - and u.id not in (select id from user where tester_flag = 1) + and (u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1 and ( ucbl.pay_type in ('微信','支付宝') and ucbl.create_time>='2026-05-06 00:00:00')))) order by ucb.id ) t) s) q) w) e) r diff --git a/src/main/resources/mapper/master/UserVipLogDao.xml b/src/main/resources/mapper/master/UserVipLogDao.xml index 18d843d..933bfbe 100644 --- a/src/main/resources/mapper/master/UserVipLogDao.xml +++ b/src/main/resources/mapper/master/UserVipLogDao.xml @@ -20,7 +20,8 @@ left join pay_zfb_order pzo on pzo.relevanceOid = uvl.order_sn and pzo.trade_no is not null where u.del_flag = 0 and uvl.del_flag = 0 and uv.del_flag = 0 and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') <= SUBSTR(#{date},1,7) - and u.id not in (select id from user where tester_flag = 1) + and + (u.id not in (select id from user where tester_flag = 1) or (u.id in (select id from user where tester_flag = 1 and (uvl.pay_type in('微信','支付宝') and uvl.create_time>='2026-05-06 00:00:00')))) order by uvl.end_time asc ) t order by currentDays desc @@ -49,5 +50,25 @@ ) s + \ No newline at end of file