From: yunpeng.ma Date: Thu, 6 Aug 2020 09:20:22 +0000 (+0800) Subject: 积分规则其他设置 X-Git-Tag: 1.0.25^2~2 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=988b0cac1d2f5a78a2d7310cb4aa478dae36c0d8;p=epayment%2Ffood_payapi.git 积分规则其他设置 --- diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPersonLevel.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPersonLevel.java index 33027d87..b6dd60bb 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPersonLevel.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPersonLevel.java @@ -22,7 +22,6 @@ public class TPersonLevel { private Integer pointsLower; @Column(name = "POINTSUPPER") - @NotNull private Integer pointsUpper; @Column(name = "UPDATETIME") diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/bean/LevelBean.java b/payapi/src/main/java/com/supwisdom/dlpay/system/bean/LevelBean.java index 964ef8c9..cbfbee5a 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/system/bean/LevelBean.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/system/bean/LevelBean.java @@ -26,6 +26,78 @@ public class LevelBean extends PageBean { private String startDate; private String endDate; private String pointsName; + private String consumePointsLi; + private String taskPointsLi; + private String dayPointsLi; + private Integer pointsSum; + private Integer pointsCount; + private Integer refno; + private List refnoList; + + public Integer getRefno() { + return refno; + } + + public void setRefno(Integer refno) { + this.refno = refno; + } + + public List getRefnoList() { + return refnoList; + } + + public void setRefnoList(List refnoList) { + this.refnoList = refnoList; + } + + public Integer getPointsSum() { + return pointsSum; + } + + public void setPointsSum(Integer pointsSum) { + this.pointsSum = pointsSum; + } + + public Integer getPointsCount() { + return pointsCount; + } + + public void setPointsCount(Integer pointsCount) { + this.pointsCount = pointsCount; + } + + public LevelBean() { + } + + public LevelBean(String name, String startDate, String endDate) { + this.name = name; + this.startDate = startDate; + this.endDate = endDate; + } + + public String getConsumePointsLi() { + return consumePointsLi; + } + + public void setConsumePointsLi(String consumePointsLi) { + this.consumePointsLi = consumePointsLi; + } + + public String getTaskPointsLi() { + return taskPointsLi; + } + + public void setTaskPointsLi(String taskPointsLi) { + this.taskPointsLi = taskPointsLi; + } + + public String getDayPointsLi() { + return dayPointsLi; + } + + public void setDayPointsLi(String dayPointsLi) { + this.dayPointsLi = dayPointsLi; + } public String getPointsName() { return pointsName; 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 e3f43e0b..7d242d30 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 @@ -2,16 +2,23 @@ package com.supwisdom.dlpay.system.controller; import com.supwisdom.dlpay.api.bean.JsonResult; import com.supwisdom.dlpay.framework.dao.DictionaryDao; +import com.supwisdom.dlpay.framework.dao.SysparaDao; import com.supwisdom.dlpay.framework.domain.*; import com.supwisdom.dlpay.framework.security.OperUtil; import com.supwisdom.dlpay.framework.util.*; +import com.supwisdom.dlpay.system.bean.CitizenCardSearchBean; +import com.supwisdom.dlpay.system.bean.CitizenCardShowBean; import com.supwisdom.dlpay.system.bean.LevelBean; import com.supwisdom.dlpay.system.service.OperatorService; +import com.supwisdom.dlpay.system.service.ParamService; import com.supwisdom.dlpay.system.service.PointsService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -37,8 +44,7 @@ public class PointsController { public JsonResult getDataList() { try { LevelBean levelBean = pointsService.getLevel(); - return JsonResult.ok().put("datalist",levelBean.gettPersonLevels()) - .put("pointsdate",levelBean.getPointsdate()); + return JsonResult.ok().put("datalist", levelBean.gettPersonLevels()); } catch (Exception e) { e.printStackTrace(); return JsonResult.error("系统查询错误"); @@ -55,13 +61,12 @@ public class PointsController { } for (TPersonLevel tPersonLevel : levelBean.gettPersonLevels()) { if (StringUtil.isEmpty(tPersonLevel.getName()) - || tPersonLevel.getPointsLower() == null - || tPersonLevel.getPointsUpper() == null) { + || tPersonLevel.getPointsLower() == null) { return JsonResult.error("参数错误"); } - if (tPersonLevel.getPointsLower() > tPersonLevel.getPointsUpper()) { + /* if (tPersonLevel.getPointsLower() > tPersonLevel.getPointsUpper()) { return JsonResult.error("积分下限必须小于积分上限"); - } + }*/ tPersonLevel.setUpdatetime(DateUtil.getNow()); tPersonLevel.setOperatorid(operator.getOpercode()); } @@ -123,9 +128,9 @@ public class PointsController { @ResponseBody public PageResult getTPointsByname(@RequestParam("name") String name, @RequestParam("idno") String idno, - @RequestParam(value = "startDate",required = false) String startDate, - @RequestParam(value = "endDate",required = false) String endDate, - @RequestParam(value = "pointsName",required = false) String pointsName, + @RequestParam(value = "startDate", required = false) String startDate, + @RequestParam(value = "endDate", required = false) String endDate, + @RequestParam(value = "pointsName", required = false) String pointsName, @RequestParam("page") Integer pageNo, @RequestParam("limit") Integer pageSize) { try { @@ -134,13 +139,13 @@ public class PointsController { searchBean.setIdno(idno); searchBean.setPageNo(pageNo); searchBean.setPageSize(pageSize); - if(!StringUtil.isEmpty(startDate)){ - searchBean.setStartDate(DateUtil.formatDateStr(startDate,"yyyyå¹´MM月dd日","yyyyMMdd")); + if (!StringUtil.isEmpty(startDate)) { + searchBean.setStartDate(DateUtil.formatDateStr(startDate, "yyyyå¹´MM月dd日", "yyyyMMdd")); } - if(!StringUtil.isEmpty(endDate)){ - searchBean.setEndDate(DateUtil.formatDateStr(endDate,"yyyyå¹´MM月dd日","yyyyMMdd")); + if (!StringUtil.isEmpty(endDate)) { + searchBean.setEndDate(DateUtil.formatDateStr(endDate, "yyyyå¹´MM月dd日", "yyyyMMdd")); } - if(!StringUtil.isEmpty(pointsName)){ + if (!StringUtil.isEmpty(pointsName)) { searchBean.setPointsName(pointsName); } return pointsService.getTPointsByname(searchBean); @@ -182,7 +187,6 @@ public class PointsController { try { LevelBean levelBean = pointsService.getConpoints(); return JsonResult.ok().put("monthConsumeList", levelBean.getMonthList()) - .put("pointslimit", levelBean.getPointslimit()) .put("dayConsumeList", levelBean.getDayList()); } catch (Exception e) { e.printStackTrace(); @@ -218,11 +222,10 @@ public class PointsController { } - /* - * 活动日管理 - * - * */ + * 活动日管理 + * + * */ @GetMapping("/pointsActive/index") public String pointsActiveIndex() { return "system/level/pointsactiveindex"; @@ -265,11 +268,11 @@ public class PointsController { if (operator != null) { operator = operatorService.getOperatorByCode(operator.getOpercode()); } - if( levelBean.getPointsActive()!=null){ + if (levelBean.getPointsActive() != null) { levelBean.getPointsActive().setUpdatetime(DateUtil.getNow()); levelBean.getPointsActive().setOperatorid(operator.getOpercode()); - return pointsService.saveActive( levelBean.getPointsActive()); - }else { + return pointsService.saveActive(levelBean.getPointsActive()); + } else { return JsonResult.error("参数不能为空"); } } @@ -279,4 +282,56 @@ public class PointsController { return "system/level/pointsactiveadd"; } + @PostMapping("/pointsSet/add") + @PreAuthorize("hasPermission('/user/add','')") + @ResponseBody + public JsonResult addPointsSet(@RequestBody LevelBean levelBean) { + + if (!StringUtils.isEmpty(levelBean.getDayPointsLi()) && + !StringUtils.isEmpty(levelBean.getTaskPointsLi()) && + !StringUtils.isEmpty(levelBean.getConsumePointsLi())) { + return pointsService.addPointsSet(levelBean); + } else { + return JsonResult.error("参数不能为空"); + } + } + + @GetMapping("/pointsSet/list") + @PreAuthorize("hasPermission('/user/add','')") + @ResponseBody + public JsonResult getPointsSet() { + try { + return JsonResult.ok().put("data", pointsService.getPointsSet()); + } catch (Exception e) { + e.printStackTrace(); + return JsonResult.error("系统查询错误"); + } + } + + + /* + * 发放积分统计 + * + * */ + @GetMapping("/pointsReport/index") + public String pointsReportIndex() { + return "system/level/pointsreport"; + } + + @GetMapping("/pointsReport/list") + @PreAuthorize("hasPermission('/user/card','')") + @ResponseBody + public PageResult getPointsReportList( + @RequestParam(value = "startdate", required = false) String startdate, + @RequestParam(value = "enddate", required = false) String enddate, + @RequestParam(value = "name", required = false) String name) { + try { + LevelBean levelBean = new LevelBean(name, startdate, enddate); + return pointsService.getPointsReportList(levelBean); + } catch (Exception e) { + e.printStackTrace(); + return new PageResult<>(99, "系统查询错误"); + } + } + } 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 c359f08c..7da281cb 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 @@ -97,4 +97,22 @@ public interface PointsService { @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) JsonResult saveActive(TPointsActive tPointsActive); + + + /* + * + * 其他设置 + * */ + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + JsonResult addPointsSet(LevelBean levelBean); + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + LevelBean getPointsSet(); + + + /* + *发放积分统计 + * + * */ + PageResult getPointsReportList(LevelBean levelBean); } 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 ab51abf1..6204189c 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 @@ -14,6 +14,7 @@ import com.supwisdom.dlpay.framework.util.PageResult; import com.supwisdom.dlpay.framework.util.StringUtil; import com.supwisdom.dlpay.framework.util.TradeDict; import com.supwisdom.dlpay.system.bean.LevelBean; +import com.supwisdom.dlpay.system.service.ParamService; import com.supwisdom.dlpay.system.service.PointsService; import com.supwisdom.dlpay.util.ConstantUtil; import org.slf4j.Logger; @@ -25,6 +26,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; @@ -34,6 +37,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; @Service public class PointsServiceImpl implements PointsService { @@ -61,7 +65,12 @@ public class PointsServiceImpl implements PointsService { private PersondtlDao persondtlDao; @Autowired private PointsActiveDao pointsActiveDao; - + @Autowired + private ParamService paramService; + @Autowired + private SysparaDao sysparaDao; + @Autowired + private BusinessparaDao businessparaDao; @Override public LevelBean getLevel() { @@ -69,28 +78,11 @@ public class PointsServiceImpl implements PointsService { Sort sort = new Sort(Sort.Direction.ASC, "id"); List list = personLevelDao.findAll(sort); if (!StringUtil.isEmpty(list)) levelBean.settPersonLevels(list); - List tDictionaries = dictionaryDao.findAllByDicttype("pointsdate"); - if(tDictionaries!=null&&tDictionaries.size()>0){ - levelBean.setPointsdate(Integer.parseInt(tDictionaries.get(0).getDictval())); - } return levelBean; } @Override public JsonResult saveLevel(LevelBean levelBean) { - List tDictionaries = dictionaryDao.findAllByDicttype("pointsdate"); - if(tDictionaries!=null&&tDictionaries.size()>0){ - tDictionaries.get(0).setDictval(levelBean.getPointsdate()+""); - dictionaryDao.save(tDictionaries.get(0)); - }else { - TDictionary tDictionary = new TDictionary(); - tDictionary.setDictcaption("积分中心的过期时间"); - tDictionary.setDicttype("pointsdate"); - tDictionary.setDicttypename("积分过期天数"); - tDictionary.setDictval(levelBean.getPointsdate()+""); - tDictionary.setTenantId("{tenantid}"); - dictionaryDao.save(tDictionary); - } List tPersonLevel = levelBean.gettPersonLevels(); personLevelDao.saveAll(tPersonLevel); return JsonResult.ok("成功"); @@ -126,25 +118,25 @@ public class PointsServiceImpl implements PointsService { @Override public PageResult getTPointsByname(LevelBean param) { TCard tCard = cardDao.findCardByCardnoAndCardtype(param.getIdno(), ConstantUtil.CARDTYPE_CITIZENCARD); - if(tCard==null||StringUtil.isEmpty(tCard.getUserid())){ + if (tCard == null || StringUtil.isEmpty(tCard.getUserid())) { return new PageResult<>(99, "未查询到该用户的信息"); } - TPerson tPerson = personDao.findByUseridAndAndName(tCard.getUserid(),param.getName()); - if(tPerson==null){ + TPerson tPerson = personDao.findByUseridAndAndName(tCard.getUserid(), param.getName()); + if (tPerson == null) { return new PageResult<>(99, "未查询到该用户的信息"); } Optional pointsMain = pointsMainDao.findById(tCard.getUserid()); TPointsMain tPointsMain; TPersonLevel tPersonLevel; - if(pointsMain.orElse(null)==null){ + if (pointsMain.orElse(null) == null) { tPointsMain = new TPointsMain(); tPointsMain.setPoints(0); tPointsMain.setUpdatetime(DateUtil.getNow("yyyy-MM-dd HH:mm:ss")); tPersonLevel = personLevelDao.findTPersonLevelByPoints(tPointsMain.getPoints()); - if(tPersonLevel==null){ + if (tPersonLevel == null) { return new PageResult<>(99, "请设置0积分等级"); } - }else{ + } else { tPointsMain = pointsMain.orElse(null); tPointsMain.setUpdatetime(DateUtil.parseToDateFormat(tPointsMain.getUpdatetime())); Optional tPersonLeveltemp = personLevelDao.findById(tPointsMain.getLevelid()); @@ -162,7 +154,7 @@ public class PointsServiceImpl implements PointsService { public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { List predicates = new ArrayList<>(); if (!StringUtil.isEmpty(tCard.getUserid())) { - predicates.add(criteriaBuilder.equal(root.get("userid").as(String.class), tCard.getUserid().trim())); + predicates.add(criteriaBuilder.equal(root.get("userid").as(String.class), tCard.getUserid().trim())); } if (!StringUtil.isEmpty(param.getStartDate())) { predicates.add(criteriaBuilder.ge(root.get("transdate").as(Long.class), Long.valueOf(DateUtil.unParseToDateFormat(param.getStartDate())))); @@ -177,7 +169,7 @@ public class PointsServiceImpl implements PointsService { } }, pageable); - if(page.getContent()!=null&&page.getContent().size()>0){ + if (page.getContent() != null && page.getContent().size() > 0) { page.getContent().get(0).settPointsMain(tPointsMain); } return new PageResult<>(page); @@ -186,21 +178,16 @@ public class PointsServiceImpl implements PointsService { @Override public PageResult getTPointsdetailByname(LevelBean param) { Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize()); - return new PageResult<>(pointsDtlDao.findAllByUserid(param.getUserid(),pageable)); + return new PageResult<>(pointsDtlDao.findAllByUserid(param.getUserid(), pageable)); } - @Override public LevelBean getConpoints() { Sort sort = new Sort(Sort.Direction.ASC, "id"); - List monthlist = consumePointsDao.findAllByAndRuletype("month",sort); - List daylist = consumePointsDao.findAllByAndRuletype("day",sort); - List tDictionaries = dictionaryDao.findAllByDicttype("pointslimit"); + List monthlist = consumePointsDao.findAllByAndRuletype("month", sort); + List daylist = consumePointsDao.findAllByAndRuletype("day", sort); LevelBean levelBean = new LevelBean(); - if(tDictionaries!=null&&tDictionaries.size()>0){ - levelBean.setPointslimit(Integer.parseInt(tDictionaries.get(0).getDictval())); - } if (!StringUtil.isEmpty(monthlist)) levelBean.setMonthList(monthlist); if (!StringUtil.isEmpty(daylist)) levelBean.setDayList(daylist); return levelBean; @@ -208,19 +195,6 @@ public class PointsServiceImpl implements PointsService { @Override public JsonResult saveConpoints(LevelBean levelBean) { - List tDictionaries = dictionaryDao.findAllByDicttype("pointslimit"); - if(tDictionaries!=null&&tDictionaries.size()>0){ - tDictionaries.get(0).setDictval(levelBean.getPointslimit()+""); - dictionaryDao.save(tDictionaries.get(0)); - }else { - TDictionary tDictionary = new TDictionary(); - tDictionary.setDictcaption("积分中心的单日积分上限"); - tDictionary.setDicttype("pointslimit"); - tDictionary.setDicttypename("单日积分上限"); - tDictionary.setDictval(levelBean.getPointslimit()+""); - tDictionary.setTenantId("{tenantid}"); - dictionaryDao.save(tDictionary); - } List consumePoints = levelBean.gettConsumePoints(); consumePointsDao.saveAll(consumePoints); return JsonResult.ok("成功"); @@ -240,75 +214,75 @@ public class PointsServiceImpl implements PointsService { } @Override - public Boolean singleHandlePoints(String userid, Double amount,String billno) { + public Boolean singleHandlePoints(String userid, Double amount, String billno) { int rate = 1; // 1.根据当天日期判断当天是否该用户的特殊日期或者生日,得到实际倍率 - TPerson person = personDao.findByUseridAndIdtype(userid,"idcard"); - if(person!=null&&!StringUtil.isEmpty(person.getIdno())){ + TPerson person = personDao.findByUseridAndIdtype(userid, "idcard"); + if (person != null && !StringUtil.isEmpty(person.getIdno())) { String nowDate = DateUtil.getNow("MMdd"); - String brithdate = person.getIdno().substring(10,4); - if(nowDate.equals(brithdate)){ + String brithdate = person.getIdno().substring(10, 4); + if (nowDate.equals(brithdate)) { rate = 2; } } //2. 查询用户的等级,获取单次消费获得积分的规则 TPersonLevel personLevel; Optional pointsMain = pointsMainDao.findById(userid); - if(pointsMain.orElse(null)!=null){ + if (pointsMain.orElse(null) != null) { Integer levelid = pointsMain.orElse(null).getLevelid(); - if(levelid!=null){ + if (levelid != null) { personLevel = personLevelDao.getOne(levelid); - }else { - if(pointsMain.orElse(null).getPoints()==null){ + } else { + if (pointsMain.orElse(null).getPoints() == null) { pointsMain.orElse(null).setPoints(0); } personLevel = personLevelDao.findTPersonLevelByPoints(pointsMain.orElse(null).getPoints()); } - }else { + } else { return false; } //3. 根据规则计算积分,得到的积分与当日积分上限进行比较,得到实际获得的积分 int resultPoints = 0; - if(amount >= personLevel.getSingleConsumeAmount()){ + if (amount >= personLevel.getSingleConsumeAmount()) { BigDecimal bigDecimal = new BigDecimal(amount); - BigDecimal result = bigDecimal.divide(new BigDecimal(personLevel.getSingleAmount()),0,BigDecimal.ROUND_DOWN); + BigDecimal result = bigDecimal.divide(new BigDecimal(personLevel.getSingleAmount()), 0, BigDecimal.ROUND_DOWN); int resultInt = result.intValue(); //计算得到的积分 resultPoints = resultInt * personLevel.getSinglePoints(); //获得流水积分 - List tPointsdtls = pointsDtlDao.findAllByUseridAndTypeAndFlagstatus(userid,"","in"); + List tPointsdtls = pointsDtlDao.findAllByUseridAndTypeAndFlagstatus(userid, "", "in"); int allPoints = tPointsdtls.stream().mapToInt(o -> Integer.parseInt(o.getPoints())).sum(); - List tDictionaries = dictionaryDao.findAllByDicttype("pointslimit"); + List tDictionaries = dictionaryDao.findAllByDicttype("pointslimit"); int pointslimit = 0; - if(tDictionaries!=null&&tDictionaries.size()>0){ + if (tDictionaries != null && tDictionaries.size() > 0) { pointslimit = Integer.parseInt(tDictionaries.get(0).getDictval()); } - if(allPoints=pointslimit){ + if (allPoints < pointslimit) { + if (allPoints + resultPoints >= pointslimit) { resultPoints = pointslimit - allPoints; } } } //4. 对积分的主子表和流水表进行添加,查询用户的积分,得到的积分去查询等级表更新用户的等级 - insertDtl(userid, TradeDict.CONSUME_FLAG_SINGLE,resultPoints*rate,personLevel.getId(),billno); + insertDtl(userid, TradeDict.CONSUME_FLAG_SINGLE, resultPoints * rate, personLevel.getId(), billno); return null; } @Override - public Boolean dayHandlePoints(String userid,String billno) { + public Boolean dayHandlePoints(String userid, String billno) { // 1.根据用户id查询积分流水表获得当日的消费金额 - List tPersondtl = persondtlDao.findAllByUseridAndTransdateAndReverseFlagAndStatus(userid, DateUtil.getNow("yyyyMMdd"),"none","success"); + List tPersondtl = persondtlDao.findAllByUseridAndTransdateAndReverseFlagAndStatus(userid, DateUtil.getNow("yyyyMMdd"), "none", "success"); Double allConsume = tPersondtl.stream().mapToDouble(o -> o.getAmount()).sum(); // 2.循环日消费奖励规则 Sort sort = new Sort(Sort.Direction.ASC, "id"); - List daylist = consumePointsDao.findAllByAndRuletype("day",sort); - for(TConsumePoints temp:daylist){ + List daylist = consumePointsDao.findAllByAndRuletype("day", sort); + for (TConsumePoints temp : daylist) { // 3.判断用户是否达到日消费奖励积分的额度,达到再次判断是否获得过该规则的奖励 - if(allConsume>Double.parseDouble(temp.getConsumeamount())){ + if (allConsume > Double.parseDouble(temp.getConsumeamount())) { TPointsdtl tPointsdtltemp = pointsDtlDao.findAllByUseridAndTransdateAndRefno(userid, DateUtil.getNow("yyyyMMdd"), temp.getId()); - if(tPointsdtltemp==null){ + if (tPointsdtltemp == null) { // 4.奖励的积分对积分主子表和流水表进行添加 - insertDtl(userid, TradeDict.CONSUME_FLAG_DAY,temp.getPoints(),temp.getId(),billno); + insertDtl(userid, TradeDict.CONSUME_FLAG_DAY, temp.getPoints(), temp.getId(), billno); } } } @@ -316,39 +290,39 @@ public class PointsServiceImpl implements PointsService { } @Override - public Boolean monthHandlePoints(String userid,String billno) { + public Boolean monthHandlePoints(String userid, String billno) { // 1.根据用户id查询积分流水表获得当月的消费金额 - List tPersondtl = persondtlDao.findAllByUseridAndTransdateStartingWithAndReverseFlagAndStatus(userid, DateUtil.getNow("yyyyMM"),"none","success"); + List tPersondtl = persondtlDao.findAllByUseridAndTransdateStartingWithAndReverseFlagAndStatus(userid, DateUtil.getNow("yyyyMM"), "none", "success"); Double allConsume = tPersondtl.stream().mapToDouble(o -> o.getAmount()).sum(); // 2.循环月消费奖励规则 Sort sort = new Sort(Sort.Direction.ASC, "id"); - List monthlist = consumePointsDao.findAllByAndRuletype("month",sort); - for(TConsumePoints temp:monthlist){ - // 3.判断用户是否达到月消费奖励积分的额度,达到再次判断是否获得过该规则的奖励 - if(allConsume>Double.parseDouble(temp.getConsumeamount())){ + List monthlist = consumePointsDao.findAllByAndRuletype("month", sort); + for (TConsumePoints temp : monthlist) { + // 3.判断用户是否达到月消费奖励积分的额度,达到再次判断是否获得过该规则的奖励 + if (allConsume > Double.parseDouble(temp.getConsumeamount())) { TPointsdtl tPointsdtltemp = pointsDtlDao.findAllByUseridAndTransdateAndRefno(userid, DateUtil.getNow("yyyyMMdd"), temp.getId()); - if(tPointsdtltemp==null){ + if (tPointsdtltemp == null) { // 4.奖励的积分对积分主子表和流水表进行添加 - insertDtl(userid, TradeDict.CONSUME_FLAG_DAY,temp.getPoints(),temp.getId(),billno); + insertDtl(userid, 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(String userid, String type, int points, Integer refno, String billno) { + //主表流水 TPointsMain tPointsMain; Optional pointsMain = pointsMainDao.findById(userid); - if(pointsMain.orElse(null)!=null){ + if (pointsMain.orElse(null) != null) { tPointsMain = pointsMain.orElse(null); - tPointsMain.setPoints(tPointsMain.getPoints()+points); - tPointsMain.setAccumPoints(tPointsMain.getAccumPoints()+points); + tPointsMain.setPoints(tPointsMain.getPoints() + points); + tPointsMain.setAccumPoints(tPointsMain.getAccumPoints() + points); TPersonLevel tPersonLevelByPoints = personLevelDao.findTPersonLevelByPoints(tPointsMain.getPoints()); - if(tPersonLevelByPoints.getId()>tPointsMain.getLevelid()){ + if (tPersonLevelByPoints.getId() > tPointsMain.getLevelid()) { tPointsMain.setLevelid(tPersonLevelByPoints.getId()); } - }else{ + } else { tPointsMain = new TPointsMain(); tPointsMain.setUserid(userid); tPointsMain.setPoints(points); @@ -362,11 +336,11 @@ public class PointsServiceImpl implements PointsService { TPointsDetail tPointsDetail = new TPointsDetail(); tPointsDetail.setUserid(userid); tPointsDetail.setPoints(points); - List tDictionaries = dictionaryDao.findAllByDicttype("pointsdate"); - if(tDictionaries!=null&&tDictionaries.size()>0){ + List tDictionaries = dictionaryDao.findAllByDicttype("pointsdate"); + if (tDictionaries != null && tDictionaries.size() > 0) { String outdate = DateUtil.getNowInterDay(Integer.parseInt(tDictionaries.get(0).getDictval())); tPointsDetail.setOutDate(outdate); - }else { + } else { return false; } TPointsDetail tPointsDetailresult = pointsDetailDao.save(tPointsDetail); @@ -375,7 +349,7 @@ public class PointsServiceImpl implements PointsService { tPointsdtl.setRefno(refno); tPointsdtl.setType(type); tPointsdtl.setUserid(userid); - tPointsdtl.setPoints("+"+points); + tPointsdtl.setPoints("+" + points); tPointsdtl.setStatus("init"); tPointsdtl.setAftpoints(tPointsMainResult.getPoints()); tPointsdtl.setBillno(billno); @@ -392,19 +366,18 @@ public class PointsServiceImpl implements PointsService { } - @Override public PageResult getActiveList(LevelBean param) { - Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize(),Sort.by("id")); + Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize(), Sort.by("id")); Page page = pointsActiveDao.findAll(new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { List predicates = new ArrayList<>(); if (!StringUtil.isEmpty(param.getName())) { - predicates.add(criteriaBuilder.like(root.get("name").as(String.class), "%" +param.getName().trim() + "%")); + predicates.add(criteriaBuilder.like(root.get("name").as(String.class), "%" + param.getName().trim() + "%")); } if (!StringUtil.isEmpty(param.getType())) { - predicates.add(criteriaBuilder.equal(root.get("type").as(String.class), param.getType().trim())); + predicates.add(criteriaBuilder.equal(root.get("type").as(String.class), param.getType().trim())); } return criteriaBuilder.and(predicates.toArray(new Predicate[0])); } @@ -423,17 +396,159 @@ public class PointsServiceImpl implements PointsService { @Override public JsonResult saveActive(TPointsActive tPointsActive) { - if("no".equals(tPointsActive.getType())){ + if ("no".equals(tPointsActive.getType())) { tPointsActive.setWeeknumber(null); - tPointsActive.setStartdate(DateUtil.formatDateStr(tPointsActive.getStartdate(),"yyyyå¹´MM月dd日","yyyyMMdd")); - tPointsActive.setEnddate(DateUtil.formatDateStr(tPointsActive.getEnddate(),"yyyyå¹´MM月dd日","yyyyMMdd")); + tPointsActive.setStartdate(DateUtil.formatDateStr(tPointsActive.getStartdate(), "yyyyå¹´MM月dd日", "yyyyMMdd")); + tPointsActive.setEnddate(DateUtil.formatDateStr(tPointsActive.getEnddate(), "yyyyå¹´MM月dd日", "yyyyMMdd")); } - if("year".equals(tPointsActive.getType())){ + if ("year".equals(tPointsActive.getType())) { tPointsActive.setWeeknumber(null); - tPointsActive.setStartdate(DateUtil.formatDateStr(tPointsActive.getYearStartDate(),"MM月dd日","MMdd")); - tPointsActive.setEnddate(DateUtil.formatDateStr(tPointsActive.getYearEndDate(),"MM月dd日","MMdd")); + tPointsActive.setStartdate(DateUtil.formatDateStr(tPointsActive.getYearStartDate(), "MM月dd日", "MMdd")); + tPointsActive.setEnddate(DateUtil.formatDateStr(tPointsActive.getYearEndDate(), "MM月dd日", "MMdd")); } pointsActiveDao.save(tPointsActive); return JsonResult.ok("成功"); } + + @Override + public JsonResult addPointsSet(LevelBean levelBean) { + + TBusinesspara tBusinesspara = new TBusinesspara(); + tBusinesspara.setTenantId("{tenantid}"); + tBusinesspara.setParakey("dayPointsLi"); + tBusinesspara.setParaval(levelBean.getDayPointsLi()); + businessparaDao.save(tBusinesspara); + tBusinesspara.setParakey("taskPointsLi"); + tBusinesspara.setParaval(levelBean.getTaskPointsLi()); + businessparaDao.save(tBusinesspara); + tBusinesspara.setParakey("consumePointsLi"); + tBusinesspara.setParaval(levelBean.getConsumePointsLi()); + businessparaDao.save(tBusinesspara); + return JsonResult.ok(); + } + + @Override + public LevelBean getPointsSet() { + TBusinesspara dayPointsLi = businessparaDao.findByParakey("dayPointsLi"); + TBusinesspara taskPointsLi = businessparaDao.findByParakey("taskPointsLi"); + TBusinesspara consumePointsLi = businessparaDao.findByParakey("consumePointsLi"); + LevelBean levelBean1 = new LevelBean(); + if (dayPointsLi != null && !StringUtils.isEmpty(dayPointsLi.getParaval())) { + levelBean1.setDayPointsLi(dayPointsLi.getParaval()); + } + if (taskPointsLi != null && !StringUtils.isEmpty(taskPointsLi.getParaval())) { + levelBean1.setTaskPointsLi(taskPointsLi.getParaval()); + } + if (consumePointsLi != null && !StringUtils.isEmpty(consumePointsLi.getParaval())) { + levelBean1.setConsumePointsLi(consumePointsLi.getParaval()); + } + return levelBean1; + } + + + @Override + public PageResult getPointsReportList(LevelBean param) { + List levelBeans = new ArrayList<>(); + if (!StringUtil.isEmpty(param.getName())) { + LevelBean levelBean = getPointsDtlByType(param); + levelBeans.add(levelBean); + return new PageResult<>(levelBeans); + } else { + //统计每个任务获取的积分 + 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); + //统计单次消费积分 + List personLevels = personLevelDao.findAll(); + List personLevelTemp = personLevels.stream().map(TPersonLevel::getId).collect(Collectors.toList()); + LevelBean personLevelBean = new LevelBean(); + personLevelBean.setStartDate(param.getStartDate()); + personLevelBean.setEndDate(param.getEndDate()); + // personLevelBean.setRefnoList(personLevelTemp); + personLevelBean.setType("consume"); + LevelBean personLevelResult = getPointsDtlByType(personLevelBean); + personLevelResult.setPointsName("消费积分"); + levelBeans.add(personLevelResult); + //统计日累计消费积分 + Sort sort = new Sort(Sort.Direction.ASC, "id"); + List daylist = consumePointsDao.findAllByAndRuletype("day", sort); + List dayTemp = daylist.stream().map(TConsumePoints::getId).collect(Collectors.toList()); + LevelBean dayTempBean = new LevelBean(); + dayTempBean.setStartDate(param.getStartDate()); + dayTempBean.setEndDate(param.getEndDate()); + // dayTempBean.setRefnoList(dayTemp); + dayTempBean.setType("consumeday"); + LevelBean dayTempResult = getPointsDtlByType(dayTempBean); + dayTempResult.setPointsName("日累计奖励积分"); + levelBeans.add(dayTempResult); + //统计月累计消费积分 + List monthlist = consumePointsDao.findAllByAndRuletype("month", sort); + List monthTemp = monthlist.stream().map(TConsumePoints::getId).collect(Collectors.toList()); + LevelBean monthTempBean = new LevelBean(); + monthTempBean.setStartDate(param.getStartDate()); + monthTempBean.setEndDate(param.getEndDate()); + //monthTempBean.setRefnoList(monthTemp); + monthTempBean.setType("consumemonth"); + LevelBean monthTempResult = getPointsDtlByType(monthTempBean); + monthTempResult.setPointsName("月累计奖励积分"); + levelBeans.add(monthTempResult); + //消费积分合计 + LevelBean consume = new LevelBean(); + 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()); + return new PageResult<>(levelBeans); + } + } + + LevelBean getPointsDtlByType(LevelBean param) { + List tPointsdtls = pointsDtlDao.findAll(new Specification() { + @Override + 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())))); + } + if (!StringUtil.isEmpty(param.getEndDate())) { + predicates.add(criteriaBuilder.le(root.get("transdate").as(Long.class), Long.valueOf(DateUtil.unParseToDateFormat(param.getEndDate())))); + } + if (param.getRefno()!=null) { + predicates.add(criteriaBuilder.equal(root.get("refno").as(Integer.class), param.getRefno())); + } + 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()){ + in.value(refnoTemp); + } + 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.setPointsSum(allPoints); + levelBean.setPointsCount(tPointsdtls.size()); + return levelBean; + } } diff --git a/payapi/src/main/resources/templates/system/level/index.html b/payapi/src/main/resources/templates/system/level/index.html index 1766c081..ced51a0c 100644 --- a/payapi/src/main/resources/templates/system/level/index.html +++ b/payapi/src/main/resources/templates/system/level/index.html @@ -3,6 +3,7 @@
  • 会员等级设置
  • 日常任务积分设置
  • 消费奖励积分设置
  • +
  • 其他设置
  • 积分中心 积分规则管理 @@ -10,42 +11,69 @@
    -
    +
    -
    +
    -
    1级会员设置:
    +
    +
    1级会员设置:
    - 会员名称为 - ,累计积分为 - --- - 分。 - -
    订单实付金额满 - 元时,每消费 - 元,可获得 - 积分; -
    +
    +
    会员名称
    + +
    +
    +
    累计积分
    +
    + +
    + +
    + +
    +
    + +
    +
    单笔消费
    +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    -
    -
    积分到期设置
    -
    每隔 - 日,清除积分。(不影响历史积分,从修改当日起生效。)
    -
    +
    @@ -77,13 +105,6 @@
    -
    单日消费积分上限 - 积分。 -
    @@ -113,10 +134,60 @@
    +
    +
    + +
    +
    积分上限设置
    +
    +
    +
    单日消费积分上限
    +
    +
    + +
    + +
    +
    +
    +
    单日任务积分上限
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    积分到期设置
    +
    +
    +
    每隔
    +
    +
    + +
    + +
    +
    + 清除积分。(不影响历史积分,从修改当日起生效。)
    +
    +
    +
    +
    +
    diff --git a/payapi/src/main/resources/templates/system/level/pointsdetail.html b/payapi/src/main/resources/templates/system/level/pointsdetail.html deleted file mode 100644 index 29d326f2..00000000 --- a/payapi/src/main/resources/templates/system/level/pointsdetail.html +++ /dev/null @@ -1,42 +0,0 @@ -
    - diff --git a/payapi/src/main/resources/templates/system/level/pointsreport.html b/payapi/src/main/resources/templates/system/level/pointsreport.html new file mode 100644 index 00000000..c326e0cd --- /dev/null +++ b/payapi/src/main/resources/templates/system/level/pointsreport.html @@ -0,0 +1,117 @@ +
    +
    +

    发放积分统计

    + + 积分中心 + 发放积分统计 + +
    +
    +
    +
    + +
    + +
    + - +
    + +
    +
    + 积分名称: + + + + +
    +
    +
    +
    + + +