消费积分处理
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 6454ba7..ae5b677 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.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
+import java.util.List;
+
@Repository
public interface PointsActiveDao extends JpaRepository<TPointsActive, Integer>, JpaSpecificationExecutor<TPointsActive> {
+ List<TPointsActive> 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 0471725..909ee47 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 @@
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 d69548d..c787449 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 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 7d242d3..bf63628 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 @@
@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 @@
}
}
+ @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 7da281c..19c3bd5 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 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 @@
* */
//单次消费进行积分处理
@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 @@
@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 @@
*
* */
PageResult<LevelBean> 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 6204189..748c5bf 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.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 @@
}
@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 @@
rate = 2;
}
}
+ //1.1判断不循环
+ List<TPointsActive> 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<TPointsActive> 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<TPointsActive> 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<String> 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<TPointsMain> 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 @@
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 @@
//计算得到的积分
resultPoints = resultInt * personLevel.getSinglePoints();
//获得流水积分
- List<TPointsdtl> tPointsdtls = pointsDtlDao.findAllByUseridAndTypeAndFlagstatus(userid, "", "in");
+ List<TPointsdtl> tPointsdtls = pointsDtlDao.findAllByUseridAndTypeAndFlagstatus(userid, "consume", "in");
int allPoints = tPointsdtls.stream().mapToInt(o -> Integer.parseInt(o.getPoints())).sum();
- List<TDictionary> 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 @@
}
}
//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 @@
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> 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 @@
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> 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<TPointsMain> 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<TDictionary> 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 @@
return true;
}
+ public TPersonLevel getLevelByPoints(Integer points) {
+ Sort sort = new Sort(Sort.Direction.DESC, "id");
+ List<TPersonLevel> 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 PageResult getPointsReportList(LevelBean param) {
List<LevelBean> 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<TPointsTask> 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> 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<TPointsTask> 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 @@
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 @@
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 @@
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 Predicate toPredicate(Root<TPointsdtl> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
List<Predicate> 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<Object> 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 @@
levelBean.setPointsCount(tPointsdtls.size());
return levelBean;
}
+
+ @Override
+ public JsonResult getPointsReportParam() {
+ List<TDictionary> tDictionaries = dictionaryDao.findAllByDicttype("pointsNameDetail");
+ List<String> strings = new ArrayList<>();
+ strings.add("task");
+ strings.add("consume");
+ strings.add("consumeday");
+ strings.add("consumemonth");
+ List<TPointsdtl> tPointsdtls = pointsDtlDao.findAll(new Specification<TPointsdtl>() {
+ @Override
+ public Predicate toPredicate(Root<TPointsdtl> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
+ List<Predicate> predicates = new ArrayList<>();
+ if (!CollectionUtils.isEmpty(strings)) {
+ CriteriaBuilder.In<Object> 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 c326e0c..76a5ece 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 @@
</div>
<div class="layui-card-body">
<div class="layui-form toolbar">
- <div class="layui-inline">
+ <div class="layui-inline" style="margin-right: 20px">
<label class="layui-form-label">积分日期</label>
<div class="layui-input-inline" style="width: 120px;">
<input type="text" name="startDate" id="startDate"
@@ -22,17 +22,16 @@
class="layui-input"/>
</div>
</div>
- 积分名称:
- <select id="points-name">
- <option value=""> 全部</option>
- <option value="consume">消费获得</option>
- <option value="task">任务获得</option>
- </select>
-
+ <div class="layui-inline" style="margin-right: 20px">
+ 积分名称:
+ <select id="points-name">
+ <option selected='selected' value=""> 全部</option>
+ </select>
+ </div>
<button id="btn-chkstatus-search" class="layui-btn icon-btn" data-type="search"><i
class="layui-icon"></i>搜索
</button>
- <button id="btn-reset-sysparam" class="layui-btn layui-btn-primary" data-type="reset" ><i
+ <button id="btn-reset-sysparam" class="layui-btn layui-btn-primary" data-type="reset"><i
class="layui-icon"></i>清 空
</button>
</div>
@@ -42,8 +41,11 @@
<script type="text/html" id="subjectday-toolbar">
<div class="layui-btn-container">
- <button class="layui-btn layui-btn-sm" id="btn-fold-subjectday" lay-event="subjectdayShowFold" style="color: #020202;background-color: #f2f2f2;font-weight: 700">
- <div>累计获得积分:<span id="points" style="color: #0096f8">0</span> 累计失效积分:<span id="outPoints" style="color: #0096f8">0</span></div>
+ <button class="layui-btn layui-btn-sm" id="btn-fold-subjectday" lay-event="subjectdayShowFold"
+ style="color: #020202;background-color: #f2f2f2;font-weight: 700">
+ <div>累计发放积分:<span id="points" style="color: #0096f8">0</span> 累计回收积分:<span id="outPoints"
+ style="color: #0096f8">0</span>
+ </div>
</button>
</div>
</script>
@@ -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.length;i++){
+ if(dataSet[i].dictval!=="outpoints"){
+ $("#points-name").append('<option value="'+dataSet[i].dictval+'">'+dataSet[i].dicttypename+'</option>');
+ }
+ }
+ 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();
});
</script>