From: yunpeng.ma Date: Fri, 7 Aug 2020 08:29:16 +0000 (+0800) Subject: 消费积分处理 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=cee3a424edce371646585d256c22eeacd78450a1;p=epayment%2Ffood_payapi.git 消费积分处理 --- diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsActiveDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsActiveDao.java index 6454ba78..ae5b6776 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsActiveDao.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsActiveDao.java @@ -7,7 +7,10 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface PointsActiveDao extends JpaRepository, JpaSpecificationExecutor { + List findAllByType(String type); } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/DateUtil.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/DateUtil.java index 04717256..909ee474 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/DateUtil.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/DateUtil.java @@ -408,4 +408,19 @@ public class DateUtil { DateFormat formatter = new SimpleDateFormat(pattern); return formatter.format(date); } + + + /* + * 判断当前日期是这个月的第几周 + * + * */ + public static int howWeeksByMonth(String datetemp) throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + Date date = sdf.parse(datetemp); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH); + System.out.println(weekOfMonth); + return weekOfMonth; + } } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java index d69548dd..c7874496 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/TradeDict.java @@ -117,7 +117,7 @@ public class TradeDict { * * * */ - public static final String CONSUME_FLAG_SINGLE = "single"; - public static final String CONSUME_FLAG_DAY = "day"; - public static final String CONSUME_FLAG_MONTH = "month"; + public static final String CONSUME_FLAG_SINGLE = "consume"; + public static final String CONSUME_FLAG_DAY = "consumeday"; + public static final String CONSUME_FLAG_MONTH = "consumemonth"; } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/controller/PointsController.java b/payapi/src/main/java/com/supwisdom/dlpay/system/controller/PointsController.java index 7d242d30..bf636288 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/system/controller/PointsController.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/system/controller/PointsController.java @@ -326,6 +326,12 @@ public class PointsController { @RequestParam(value = "enddate", required = false) String enddate, @RequestParam(value = "name", required = false) String name) { try { + if(StringUtils.isEmpty(startdate)){ + startdate = DateUtil.getNow("yyyyå¹´MM月dd日"); + } + if(StringUtils.isEmpty(enddate)){ + enddate = DateUtil.getNow("yyyyå¹´MM月dd日"); + } LevelBean levelBean = new LevelBean(name, startdate, enddate); return pointsService.getPointsReportList(levelBean); } catch (Exception e) { @@ -334,4 +340,16 @@ public class PointsController { } } + @GetMapping("/pointsReport/param") + @PreAuthorize("hasPermission('/user/card','')") + @ResponseBody + public JsonResult getPointsReportParam() { + try { + return pointsService.getPointsReportParam(); + } catch (Exception e) { + e.printStackTrace(); + return JsonResult.error("系统查询错误"); + } + } + } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/PointsService.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/PointsService.java index 7da281cb..19c3bd59 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/PointsService.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/PointsService.java @@ -14,6 +14,7 @@ import com.supwisdom.dlpay.system.bean.PersonParamBean; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import java.text.ParseException; import java.util.List; public interface PointsService { @@ -75,7 +76,7 @@ public interface PointsService { * */ //单次消费进行积分处理 @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) - Boolean singleHandlePoints(String userid,Double amount,String billno); + Boolean singleHandlePoints(String userid,Double amount,String billno) throws ParseException; //日消费进行积分处理 @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @@ -85,6 +86,11 @@ public interface PointsService { @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) Boolean monthHandlePoints(String userid,String billno); + /* *//* + * 退款积分处理 + * *//* + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + Boolean refundHandlePoints(String userid,String billno);*/ /* * @@ -115,4 +121,7 @@ public interface PointsService { * * */ PageResult getPointsReportList(LevelBean levelBean); + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + JsonResult getPointsReportParam(); } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/PointsServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/PointsServiceImpl.java index 6204189c..748c5bf5 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/PointsServiceImpl.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/PointsServiceImpl.java @@ -34,7 +34,9 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import java.math.BigDecimal; +import java.text.ParseException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -214,9 +216,10 @@ public class PointsServiceImpl implements PointsService { } @Override - public Boolean singleHandlePoints(String userid, Double amount, String billno) { + public Boolean singleHandlePoints(String userid, Double amount, String billno) throws ParseException { int rate = 1; // 1.根据当天日期判断当天是否该用户的特殊日期或者生日,得到实际倍率 + String nowDateTemp = DateUtil.getNow("yyyyMMdd"); TPerson person = personDao.findByUseridAndIdtype(userid, "idcard"); if (person != null && !StringUtil.isEmpty(person.getIdno())) { String nowDate = DateUtil.getNow("MMdd"); @@ -225,10 +228,51 @@ public class PointsServiceImpl implements PointsService { rate = 2; } } + //1.1判断不循环 + List noActives = pointsActiveDao.findAllByType("no"); + for (TPointsActive noActivetemp : noActives) { + if (rate < Integer.parseInt(noActivetemp.getRate())) { + String noStartdate = noActivetemp.getStartdate(); + String noEnddate = noActivetemp.getEnddate(); + if (DateUtil.compareDatetime(nowDateTemp, noStartdate) >= 0 && DateUtil.compareDatetime(noEnddate, nowDateTemp) >= 0) { + rate = Integer.parseInt(noActivetemp.getRate()); + } + } + } + //1.2判断年循环 + List yearActives = pointsActiveDao.findAllByType("year"); + for (TPointsActive yearActivetemp : yearActives) { + if (rate < Integer.parseInt(yearActivetemp.getRate())) { + String yearStartdate = yearActivetemp.getStartdate(); + String yearEnddate = yearActivetemp.getEnddate(); + String yearDateTemp = DateUtil.getNow("MMdd"); + if (DateUtil.compareDatetime(yearDateTemp, yearStartdate) >= 0 && DateUtil.compareDatetime(yearEnddate, yearDateTemp) >= 0) { + rate = Integer.parseInt(yearActivetemp.getRate()); + } + } + } + //1.3判断月循环 + List monthActives = pointsActiveDao.findAllByType("month"); + for (TPointsActive monthActivetemp : monthActives) { + if (rate < Integer.parseInt(monthActivetemp.getRate())) { + int weekNumber = DateUtil.howWeeksByMonth(nowDateTemp); + int weekday = DateUtil.getWeekday(nowDateTemp); + if ((weekday == 7 && weekNumber - 1 == monthActivetemp.getWeeknumber()) || weekNumber == monthActivetemp.getWeeknumber()) { + List sList = Arrays.asList(monthActivetemp.getWeekday().split("[,]")); + for (String emp : sList) { + if (weekday == Integer.parseInt(emp)) { + rate = Integer.parseInt(monthActivetemp.getRate()); + } + } + } + } + } //2. 查询用户的等级,获取单次消费获得积分的规则 TPersonLevel personLevel; + TPointsMain tPointsMainTemp; Optional pointsMain = pointsMainDao.findById(userid); if (pointsMain.orElse(null) != null) { + tPointsMainTemp = pointsMain.orElse(null); Integer levelid = pointsMain.orElse(null).getLevelid(); if (levelid != null) { personLevel = personLevelDao.getOne(levelid); @@ -236,10 +280,27 @@ public class PointsServiceImpl implements PointsService { if (pointsMain.orElse(null).getPoints() == null) { pointsMain.orElse(null).setPoints(0); } - personLevel = personLevelDao.findTPersonLevelByPoints(pointsMain.orElse(null).getPoints()); + personLevel = getLevelByPoints(pointsMain.orElse(null).getPoints()); + if (personLevel == null) { + logger.error("请设置积分等级"); + return false; + } } } else { - return false; + TPointsMain tPointsMain = new TPointsMain(); + tPointsMain.setUserid(userid); + tPointsMain.setPoints(0); + tPointsMain.setAccumPoints(0); + tPointsMain.setSumpayPoints(0); + tPointsMain.setOutPoints(0); + tPointsMain.setUpdatetime(DateUtil.getNow()); + personLevel = getLevelByPoints(tPointsMain.getPoints()); + if (personLevel == null) { + logger.error("请设置积分等级"); + return false; + } + tPointsMain.setLevelid(personLevel.getId()); + tPointsMainTemp = tPointsMain; } //3. 根据规则计算积分,得到的积分与当日积分上限进行比较,得到实际获得的积分 int resultPoints = 0; @@ -250,12 +311,12 @@ public class PointsServiceImpl implements PointsService { //计算得到的积分 resultPoints = resultInt * personLevel.getSinglePoints(); //获得流水积分 - List tPointsdtls = pointsDtlDao.findAllByUseridAndTypeAndFlagstatus(userid, "", "in"); + List tPointsdtls = pointsDtlDao.findAllByUseridAndTypeAndFlagstatus(userid, "consume", "in"); int allPoints = tPointsdtls.stream().mapToInt(o -> Integer.parseInt(o.getPoints())).sum(); - List tDictionaries = dictionaryDao.findAllByDicttype("pointslimit"); - int pointslimit = 0; - if (tDictionaries != null && tDictionaries.size() > 0) { - pointslimit = Integer.parseInt(tDictionaries.get(0).getDictval()); + TBusinesspara consumePointsLi = businessparaDao.findByParakey("consumePointsLi"); + int pointslimit = 10000; + if (consumePointsLi != null && !StringUtils.isEmpty(consumePointsLi.getParaval())) { + pointslimit = Integer.parseInt(consumePointsLi.getParaval()); } if (allPoints < pointslimit) { if (allPoints + resultPoints >= pointslimit) { @@ -264,8 +325,7 @@ public class PointsServiceImpl implements PointsService { } } //4. 对积分的主子表和流水表进行添加,查询用户的积分,得到的积分去查询等级表更新用户的等级 - insertDtl(userid, TradeDict.CONSUME_FLAG_SINGLE, resultPoints * rate, personLevel.getId(), billno); - return null; + return insertDtl(tPointsMainTemp, TradeDict.CONSUME_FLAG_SINGLE, resultPoints * rate, personLevel.getId(), billno); } @Override @@ -282,7 +342,26 @@ public class PointsServiceImpl implements PointsService { TPointsdtl tPointsdtltemp = pointsDtlDao.findAllByUseridAndTransdateAndRefno(userid, DateUtil.getNow("yyyyMMdd"), temp.getId()); if (tPointsdtltemp == null) { // 4.奖励的积分对积分主子表和流水表进行添加 - insertDtl(userid, TradeDict.CONSUME_FLAG_DAY, temp.getPoints(), temp.getId(), billno); + Optional tPointsMain = pointsMainDao.findById(userid); + TPointsMain tPointsMainTemp; + if(tPointsMain.orElse(null)==null){ + tPointsMainTemp = new TPointsMain(); + tPointsMainTemp.setUserid(userid); + tPointsMainTemp.setPoints(0); + tPointsMainTemp.setAccumPoints(0); + tPointsMainTemp.setSumpayPoints(0); + tPointsMainTemp.setOutPoints(0); + tPointsMainTemp.setUpdatetime(DateUtil.getNow()); + TPersonLevel personLevel = getLevelByPoints(tPointsMainTemp.getPoints()); + if (personLevel == null) { + logger.error("请设置积分等级"); + return false; + } + tPointsMainTemp.setLevelid(personLevel.getId()); + }else { + tPointsMainTemp = tPointsMain.orElse(null); + } + return insertDtl(tPointsMainTemp, TradeDict.CONSUME_FLAG_DAY, temp.getPoints(), temp.getId(), billno); } } } @@ -303,52 +382,59 @@ public class PointsServiceImpl implements PointsService { TPointsdtl tPointsdtltemp = pointsDtlDao.findAllByUseridAndTransdateAndRefno(userid, DateUtil.getNow("yyyyMMdd"), temp.getId()); if (tPointsdtltemp == null) { // 4.奖励的积分对积分主子表和流水表进行添加 - insertDtl(userid, TradeDict.CONSUME_FLAG_DAY, temp.getPoints(), temp.getId(), billno); + Optional tPointsMain = pointsMainDao.findById(userid); + TPointsMain tPointsMainTemp; + if(tPointsMain.orElse(null)==null){ + tPointsMainTemp = new TPointsMain(); + tPointsMainTemp.setUserid(userid); + tPointsMainTemp.setPoints(0); + tPointsMainTemp.setAccumPoints(0); + tPointsMainTemp.setSumpayPoints(0); + tPointsMainTemp.setOutPoints(0); + tPointsMainTemp.setUpdatetime(DateUtil.getNow()); + TPersonLevel personLevel = getLevelByPoints(tPointsMainTemp.getPoints()); + if (personLevel == null) { + logger.error("请设置积分等级"); + return false; + } + tPointsMainTemp.setLevelid(personLevel.getId()); + }else { + tPointsMainTemp = tPointsMain.orElse(null); + } + return insertDtl(tPointsMainTemp, TradeDict.CONSUME_FLAG_DAY, temp.getPoints(), temp.getId(), billno); } } } return null; } - public Boolean insertDtl(String userid, String type, int points, Integer refno, String billno) { + public Boolean insertDtl(TPointsMain tPointsMain, String type, int points, Integer refno, String billno) { //主表流水 - TPointsMain tPointsMain; - Optional pointsMain = pointsMainDao.findById(userid); - if (pointsMain.orElse(null) != null) { - tPointsMain = pointsMain.orElse(null); - tPointsMain.setPoints(tPointsMain.getPoints() + points); - tPointsMain.setAccumPoints(tPointsMain.getAccumPoints() + points); - TPersonLevel tPersonLevelByPoints = personLevelDao.findTPersonLevelByPoints(tPointsMain.getPoints()); - if (tPersonLevelByPoints.getId() > tPointsMain.getLevelid()) { - tPointsMain.setLevelid(tPersonLevelByPoints.getId()); - } - } else { - tPointsMain = new TPointsMain(); - tPointsMain.setUserid(userid); - tPointsMain.setPoints(points); - tPointsMain.setAccumPoints(points); - TPersonLevel tPersonLevelByPoints = personLevelDao.findTPersonLevelByPoints(points); + tPointsMain.setPoints(tPointsMain.getPoints() + points); + tPointsMain.setAccumPoints(tPointsMain.getAccumPoints() + points); + TPersonLevel tPersonLevelByPoints = getLevelByPoints(tPointsMain.getPoints()); + if (tPersonLevelByPoints.getId() > tPointsMain.getLevelid()) { tPointsMain.setLevelid(tPersonLevelByPoints.getId()); } tPointsMain.setUpdatetime(DateUtil.getNow()); TPointsMain tPointsMainResult = pointsMainDao.save(tPointsMain); //子表流水 TPointsDetail tPointsDetail = new TPointsDetail(); - tPointsDetail.setUserid(userid); + tPointsDetail.setUserid(tPointsMain.getUserid()); tPointsDetail.setPoints(points); - List tDictionaries = dictionaryDao.findAllByDicttype("pointsdate"); - if (tDictionaries != null && tDictionaries.size() > 0) { - String outdate = DateUtil.getNowInterDay(Integer.parseInt(tDictionaries.get(0).getDictval())); + TBusinesspara consumePointsLi = businessparaDao.findByParakey("dayPointsLi"); + if (consumePointsLi != null && !StringUtils.isEmpty(consumePointsLi.getParaval())) { + String outdate = DateUtil.getNowInterDay(Integer.parseInt(consumePointsLi.getParaval())); tPointsDetail.setOutDate(outdate); } else { - return false; + logger.error("请设置过期天数"); } TPointsDetail tPointsDetailresult = pointsDetailDao.save(tPointsDetail); //积分流水表信息 TPointsdtl tPointsdtl = new TPointsdtl(); tPointsdtl.setRefno(refno); tPointsdtl.setType(type); - tPointsdtl.setUserid(userid); + tPointsdtl.setUserid(tPointsMain.getUserid()); tPointsdtl.setPoints("+" + points); tPointsdtl.setStatus("init"); tPointsdtl.setAftpoints(tPointsMainResult.getPoints()); @@ -365,6 +451,17 @@ public class PointsServiceImpl implements PointsService { return true; } + public TPersonLevel getLevelByPoints(Integer points) { + Sort sort = new Sort(Sort.Direction.DESC, "id"); + List all = personLevelDao.findAll(sort); + for (TPersonLevel temp : all) { + if (points >= temp.getPointsLower()) { + return temp; + } + } + return null; + } + @Override public PageResult getActiveList(LevelBean param) { @@ -450,13 +547,55 @@ public class PointsServiceImpl implements PointsService { public PageResult getPointsReportList(LevelBean param) { List levelBeans = new ArrayList<>(); if (!StringUtil.isEmpty(param.getName())) { - LevelBean levelBean = getPointsDtlByType(param); - levelBeans.add(levelBean); + if ("consume".equals(param.getName())) { + param.setType("consume"); + LevelBean levelBean = getPointsDtlByType(param); + levelBean.setPointsName("消费积分"); + levelBeans.add(levelBean); + } else if ("task".equals(param.getName())) { + List all = pointsTaskDao.findAll(); + all.stream().forEach(e -> { + LevelBean levelBeanTask = new LevelBean(); + levelBeanTask.setStartDate(param.getStartDate()); + levelBeanTask.setEndDate(param.getEndDate()); + levelBeanTask.setRefno(e.getTaskid()); + levelBeanTask.setType("task"); + LevelBean levelBean1 = getPointsDtlByType(levelBeanTask); + levelBean1.setPointsName(e.getTaskname()); + levelBeans.add(levelBean1); + }); + Integer taskSum = levelBeans.stream().mapToInt(o -> o.getPointsSum()).sum(); + Integer taskCount = levelBeans.stream().mapToInt(o -> o.getPointsCount()).sum(); + LevelBean taskLevelBean = new LevelBean(); + taskLevelBean.setPointsSum(taskSum); + taskLevelBean.setPointsCount(taskCount); + taskLevelBean.setPointsName("日常任务积分合计"); + levelBeans.add(taskLevelBean); + } else if ("consumeday".equals(param.getName())) { + param.setType("consumeday"); + LevelBean dayTempResult = getPointsDtlByType(param); + dayTempResult.setPointsName("日累计奖励积分"); + levelBeans.add(dayTempResult); + } else if ("consumemonth".equals(param.getName())) { + param.setType("consumemonth"); + LevelBean monthTempResult = getPointsDtlByType(param); + monthTempResult.setPointsName("月累计奖励积分"); + levelBeans.add(monthTempResult); + } else { + param.setRefno(Integer.parseInt(param.getName())); + param.setType("task"); + LevelBean levelBean1 = getPointsDtlByType(param); + Optional tpointsTask = pointsTaskDao.findById(Integer.parseInt(param.getName())); + if (tpointsTask.orElse(null) != null) { + levelBean1.setPointsName(tpointsTask.orElse(null).getTaskname()); + } + levelBeans.add(levelBean1); + } return new PageResult<>(levelBeans); } else { //统计每个任务获取的积分 List all = pointsTaskDao.findAll(); - all.stream().forEach( e -> { + all.stream().forEach(e -> { LevelBean levelBeanTask = new LevelBean(); levelBeanTask.setStartDate(param.getStartDate()); levelBeanTask.setEndDate(param.getEndDate()); @@ -479,7 +618,7 @@ public class PointsServiceImpl implements PointsService { LevelBean personLevelBean = new LevelBean(); personLevelBean.setStartDate(param.getStartDate()); personLevelBean.setEndDate(param.getEndDate()); - // personLevelBean.setRefnoList(personLevelTemp); + // personLevelBean.setRefnoList(personLevelTemp); personLevelBean.setType("consume"); LevelBean personLevelResult = getPointsDtlByType(personLevelBean); personLevelResult.setPointsName("消费积分"); @@ -491,7 +630,7 @@ public class PointsServiceImpl implements PointsService { LevelBean dayTempBean = new LevelBean(); dayTempBean.setStartDate(param.getStartDate()); dayTempBean.setEndDate(param.getEndDate()); - // dayTempBean.setRefnoList(dayTemp); + // dayTempBean.setRefnoList(dayTemp); dayTempBean.setType("consumeday"); LevelBean dayTempResult = getPointsDtlByType(dayTempBean); dayTempResult.setPointsName("日累计奖励积分"); @@ -509,8 +648,8 @@ public class PointsServiceImpl implements PointsService { levelBeans.add(monthTempResult); //消费积分合计 LevelBean consume = new LevelBean(); - consume.setPointsSum(personLevelResult.getPointsSum()+dayTempResult.getPointsSum()+monthTempResult.getPointsSum()); - consume.setPointsCount(personLevelResult.getPointsCount()+dayTempResult.getPointsCount()+monthTempResult.getPointsCount()); + consume.setPointsSum(personLevelResult.getPointsSum() + dayTempResult.getPointsSum() + monthTempResult.getPointsSum()); + consume.setPointsCount(personLevelResult.getPointsCount() + dayTempResult.getPointsCount() + monthTempResult.getPointsCount()); consume.setPointsName("消费积分合计"); levelBeans.add(consume); //all.stream().map(TPointsTask::getTaskid).collect(Collectors.toList()); @@ -524,20 +663,20 @@ public class PointsServiceImpl implements PointsService { public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { List predicates = new ArrayList<>(); if (!StringUtil.isEmpty(param.getStartDate())) { - predicates.add(criteriaBuilder.ge(root.get("transdate").as(Long.class), Long.valueOf(DateUtil.unParseToDateFormat(param.getStartDate())))); + predicates.add(criteriaBuilder.ge(root.get("transdate").as(Long.class), Long.valueOf(DateUtil.formatDateStr(param.getStartDate(), "yyyyå¹´MM月dd日", "yyyyMMdd")))); } if (!StringUtil.isEmpty(param.getEndDate())) { - predicates.add(criteriaBuilder.le(root.get("transdate").as(Long.class), Long.valueOf(DateUtil.unParseToDateFormat(param.getEndDate())))); + predicates.add(criteriaBuilder.le(root.get("transdate").as(Long.class), Long.valueOf(DateUtil.formatDateStr(param.getEndDate(), "yyyyå¹´MM月dd日", "yyyyMMdd")))); } - if (param.getRefno()!=null) { + if (param.getRefno() != null) { predicates.add(criteriaBuilder.equal(root.get("refno").as(Integer.class), param.getRefno())); } - if (param.getType()!=null) { + if (param.getType() != null) { predicates.add(criteriaBuilder.equal(root.get("type").as(String.class), param.getType())); } if (!CollectionUtils.isEmpty(param.getRefnoList())) { CriteriaBuilder.In in = criteriaBuilder.in(root.get("refno")); - for (Integer refnoTemp:param.getRefnoList()){ + for (Integer refnoTemp : param.getRefnoList()) { in.value(refnoTemp); } predicates.add(criteriaBuilder.and(in)); @@ -551,4 +690,35 @@ public class PointsServiceImpl implements PointsService { levelBean.setPointsCount(tPointsdtls.size()); return levelBean; } + + @Override + public JsonResult getPointsReportParam() { + List tDictionaries = dictionaryDao.findAllByDicttype("pointsNameDetail"); + List strings = new ArrayList<>(); + strings.add("task"); + strings.add("consume"); + strings.add("consumeday"); + strings.add("consumemonth"); + List tPointsdtls = pointsDtlDao.findAll(new Specification() { + @Override + public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { + List predicates = new ArrayList<>(); + if (!CollectionUtils.isEmpty(strings)) { + CriteriaBuilder.In in = criteriaBuilder.in(root.get("type")); + for (String temp : strings) { + in.value(temp); + } + predicates.add(criteriaBuilder.and(in)); + } + return criteriaBuilder.and(predicates.toArray(new Predicate[0])); + } + }); + Integer allPoints = tPointsdtls.stream().mapToInt(o -> Integer.parseInt(o.getPoints())).sum(); + LevelBean levelBean = new LevelBean(); + levelBean.setType("outpoints"); + LevelBean outpoints = getPointsDtlByType(levelBean); + return JsonResult.ok().put("paramList", tDictionaries) + .put("allPoints", allPoints) + .put("outpoints", outpoints.getPointsSum()); + } } diff --git a/payapi/src/main/resources/templates/system/level/pointsreport.html b/payapi/src/main/resources/templates/system/level/pointsreport.html index c326e0cd..76a5ece7 100644 --- a/payapi/src/main/resources/templates/system/level/pointsreport.html +++ b/payapi/src/main/resources/templates/system/level/pointsreport.html @@ -8,7 +8,7 @@
-
+
- 积分名称: - - +
+ 积分名称: + +
-
@@ -42,8 +41,11 @@ @@ -53,22 +55,25 @@ var table = layui.table; var admin = layui.admin; var laydate = layui.laydate; - form.render("select"); + + let init_date = new Date(); laydate.render({ elem: '#startDate' - ,format: 'yyyy年MM月dd日' + , format: 'yyyy年MM月dd日' + , value: init_date }); laydate.render({ elem: '#endDate' - ,format: 'yyyy年MM月dd日' + , format: 'yyyy年MM月dd日' + , value: init_date }); // 渲染表格 table.render({ elem: '#pointsReportTable', url: '[[@{/pointsReport/list}]]', page: false, - toolbar:'#subjectday-toolbar', - defaultToolbar: [], + toolbar: '#subjectday-toolbar', + defaultToolbar: [ 'exports', 'print'], where: {startdate: null, enddate: null}, cols: [ [ @@ -100,18 +105,54 @@ // 搜索按钮点击事件 $('#btn-chkstatus-search').click(function () { - let name = $("#search-chkstatus-searchkey").val(); + let name = $("#points-name").val(); let startDate = $("#startDate").val(); let endDate = $("#endDate").val(); - table.reload('userPointsTable', {where: {name: name, startdate:startDate,enddate:endDate}}); + table.reload('pointsReportTable', {where: {name: name, startdate: startDate, enddate: endDate}}); }); $('#btn-reset-sysparam').click(function () { - $("#search-chkstatus-searchkey").val(""); $("#startDate").val(""); $("#endDate").val(""); }); - + let getPointsReportParam = function () { + $.ajax({ + type: "GET", + dataType: "json", + url: '[[@{/pointsReport/param}]]', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + success: function (result) { + if (result.code === 200) { + let dataSet = result.paramList; + let allPoints = result.allPoints; + let outpoints = result.outpoints; + $("#points").text(allPoints); + $("#outPoints").text(outpoints); + for(let i=0;i'+dataSet[i].dicttypename+''); + } + } + form.render("select"); + } else if (result.code === 401) { + layer.msg(result.msg, {icon: 2, time: 1500}, function () { + location.replace('[[@{/login}]]'); + }, 1000); + } else { + console.log('err:' + result.code); + layer.msg(result.msg, {icon: 2}); + } + }, + error: function () { + layer.closeAll('loading'); + layer.msg("请求服务器失败!", {icon: 2}); + } + }); + } + getPointsReportParam(); });