From: yunpeng.ma Date: Wed, 9 Sep 2020 01:39:25 +0000 (+0800) Subject: 积分模块 X-Git-Tag: 1.0.25^2 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=a85745a6b3afe6b95edf504a4cfb917eb371d197;p=epayment%2Ffood_payapi.git 积分模块 --- diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties index 4346bdc7..06713bbe 100644 --- a/config/application-devel-pg.properties +++ b/config/application-devel-pg.properties @@ -55,4 +55,4 @@ spring.kafka.consumer.enable-auto-commit=true spring.kafka.consumer.auto-commit-interval=100 # 指定消息key和消息体的编解码方式 spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer -spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer \ No newline at end of file +spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenPayResponse.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenPayResponse.java index c0b92e59..954a693a 100644 --- a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenPayResponse.java +++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenPayResponse.java @@ -1,14 +1,12 @@ package com.supwisdom.dlpay.api.bean; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; @Getter @Setter @AllArgsConstructor @NoArgsConstructor +@ToString public class CitizenPayResponse extends ApiResponse { private String refno; private String billno; diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/UserPointsParam.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/UserPointsParam.java new file mode 100644 index 00000000..1941ca8c --- /dev/null +++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/UserPointsParam.java @@ -0,0 +1,30 @@ +package com.supwisdom.dlpay.api.bean; + +import com.supwisdom.dlpay.api.APIRequestParam; +import com.supwisdom.dlpay.api.annotation.Sign; +import com.supwisdom.dlpay.api.exception.RequestParamCheckException; +import lombok.Getter; +import lombok.Setter; +import org.apache.commons.lang3.StringUtils; + + +@Getter +@Setter +public class UserPointsParam extends APIRequestParam { + @Sign + private String idno; + @Sign + private String name; + @Sign + private int pageNo; + @Sign + private int pageSize; + + @Override + public boolean checkParam() throws RequestParamCheckException { + if (StringUtils.isEmpty(idno) && StringUtils.isEmpty(name)) { + throw new RequestParamCheckException("市民卡账号和姓名不能为空"); + } + return true; + } +} diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/UserTaskParam.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/UserTaskParam.java new file mode 100644 index 00000000..5adbbe31 --- /dev/null +++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/UserTaskParam.java @@ -0,0 +1,26 @@ +package com.supwisdom.dlpay.api.bean; + +import com.supwisdom.dlpay.api.APIRequestParam; +import com.supwisdom.dlpay.api.annotation.Sign; +import com.supwisdom.dlpay.api.exception.RequestParamCheckException; +import lombok.Getter; +import lombok.Setter; +import org.apache.commons.lang3.StringUtils; + + +@Getter +@Setter +public class UserTaskParam extends APIRequestParam { + @Sign + private String userid; + @Sign + private String taskid; + + @Override + public boolean checkParam() throws RequestParamCheckException { + if (StringUtils.isEmpty(userid) && StringUtils.isEmpty(taskid)) { + throw new RequestParamCheckException("用户号和任务号不能为空"); + } + return true; + } +} diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/UserTaskResponse.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/UserTaskResponse.java new file mode 100644 index 00000000..5b31c44d --- /dev/null +++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/UserTaskResponse.java @@ -0,0 +1,21 @@ +package com.supwisdom.dlpay.api.bean; + +import com.supwisdom.dlpay.api.APIRequestParam; +import com.supwisdom.dlpay.api.annotation.Sign; +import com.supwisdom.dlpay.api.exception.RequestParamCheckException; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; + + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class UserTaskResponse extends ApiResponse { + private List dataList; +} diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java index a8e7808a..c8035356 100644 --- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java +++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java @@ -25,4 +25,13 @@ public interface UserProxy { @PostMapping("/api/user/testmsg") ApiResponse testmsg(); + + @PostMapping("/api/user/userTask") + ApiResponse userTask(); + + @PostMapping("/api/user/getTask") + ApiResponse getTPointsTaskNoPage(); + + @PostMapping("/api/user/getUserPoints") + ApiResponse getUserPoints(@RequestBody UserPointsParam param); } diff --git a/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java b/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java index 32ca0f35..805d85ef 100644 --- a/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java +++ b/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java @@ -30,7 +30,7 @@ import static org.hamcrest.Matchers.notNullValue; @RunWith(SpringRunner.class) @SpringBootTest(properties = { - "payapi.url=http://localhost:8099/payapi"}, + "payapi.url=http://localhost:8080/payapi"}, classes = CitizenCardPayProxyTest.class) @ImportAutoConfiguration({RibbonAutoConfiguration.class, FeignRibbonClientAutoConfiguration.class, FeignAutoConfiguration.class, @@ -55,6 +55,8 @@ public class CitizenCardPayProxyTest { private UserProxy userProxy; @Autowired private ConsumePropxy consumePropxy; + @Autowired + private TransactionProxy transactionProxy; @org.junit.Test @@ -70,15 +72,49 @@ public class CitizenCardPayProxyTest { System.out.println(version.getVersion()); CitizenCardPayinitParam initParam = new CitizenCardPayinitParam(); - initParam.setBillno("20190708172756000001"); - initParam.setCardNo("20190619001"); - initParam.setAmount(0); - initParam.setTransdate("20190708"); + initParam.setBillno("201907081727560000175 "); + initParam.setCardNo("00015574"); + initParam.setAmount(50000); + initParam.setTransdate("20200821"); initParam.setTranstime("172713"); - initParam.setShopaccno("2000000038"); + initParam.setShopaccno("2000000012"); + initParam.setDtltype("canteen"); CitizenPayResponse payInit = citizenCardPayProxy.citizencardPayinit(initParam); assertThat("pay initialized " + payInit.getRetmsg() + payInit.getException(), payInit.getRetcode(), equalTo(0)); + System.err.println(payInit); + + CitizenCardPayfinishParam finishParam = new CitizenCardPayfinishParam(); + finishParam.setRefno(payInit.getRefno()); + CitizenPayResponse citizencardPayFinish = citizenCardPayProxy.citizencardPayFinish(finishParam); + System.err.println(citizencardPayFinish); + } + + @org.junit.Test + public void citizencardPayRefund() { + ApiLoginHelper helper = new ApiLoginHelper(apiLoginProxy); + helper.login(appid, secret); + + ApiVersionResponse version = apiCommonProxy.apiVersion(); + + assertThat("get version error " + version.getException(), + version.getVersion(), notNullValue()); + + + ConsumePayRefundParam initParam = new ConsumePayRefundParam(); + initParam.setBillno("201907081727560000174 "); + initParam.setTransdate("20200821"); + initParam.setTranstime("172713"); + initParam.setShopaccno("2000000012"); + initParam.setRequestbillno("201907081727560000174"); + initParam.setRefundAmount(50000); + + PayReverseResponse payInit = transactionProxy.payRefund(initParam); + assertThat("pay initialized " + payInit.getRetmsg() + payInit.getException(), + payInit.getRetcode(), equalTo(0)); + System.err.println(payInit); + + } @Test diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PersondtlDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PersondtlDao.java index ebf83923..18261974 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PersondtlDao.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PersondtlDao.java @@ -19,7 +19,9 @@ public interface PersondtlDao extends JpaRepository,JpaSpeci @Query("select count(t.refno) as totalcnt,sum(t.amount) as totalamt from TPersondtl t where t.status='success' and t.accdate=?1 and t.sourceType=?2 and t.tenantid=?3 ") CountAmountBean getPersondtlSumInfo(String accdate, String sourcetype, String tenantid); - List findAllByUseridAndTransdateAndReverseFlagAndStatus(String userid, String transdate,String reverseFlag,String status); + List findAllByUseridAndTransdateAndReverseFlagAndStatusAndTradeflag(String userid, String transdate,String reverseFlag,String status,String tradeflag); - List findAllByUseridAndTransdateStartingWithAndReverseFlagAndStatus(String userid, String transdate,String reverseFlag,String status); + List findAllByUseridAndTransdateStartingWithAndReverseFlagAndStatusAndTradeflag(String userid, String transdate,String reverseFlag,String status,String tradeflag); + + List findAllByTransdateAndReverseFlagAndStatusAndTradeflag(String transdate,String reverseFlag,String status,String tradeflag); } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopdtlDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopdtlDao.java index 0e49580d..1bc02169 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopdtlDao.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopdtlDao.java @@ -1,5 +1,6 @@ package com.supwisdom.dlpay.api.dao; +import com.supwisdom.dlpay.api.domain.TPersondtl; import com.supwisdom.dlpay.api.domain.TShopdtl; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; @@ -16,4 +17,11 @@ public interface ShopdtlDao extends JpaRepository, JpaSpecific @Lock(LockModeType.OPTIMISTIC) List findAllByStatusAndUpdateBala(String status, Boolean flag); + + + List findAllByAccdateAndReverseFlagAndStatus(String transdate, String reverseFlag, String status); + + List findAllByOppositeAccNoAndAccdateAndReverseFlagAndStatus(String userid, String transdate,String reverseFlag,String status); + + List findAllByOppositeAccNoAndAccdateStartingWithAndReverseFlagAndStatus(String userid, String transdate,String reverseFlag,String status); } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/citizencard/task/PointsOutdateTask.java b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/task/PointsOutdateTask.java new file mode 100644 index 00000000..1251749d --- /dev/null +++ b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/task/PointsOutdateTask.java @@ -0,0 +1,71 @@ +package com.supwisdom.dlpay.citizencard.task; + +import com.google.gson.Gson; +import com.sun.jersey.api.client.Client; +import com.sun.jersey.api.client.ClientResponse; +import com.sun.jersey.api.client.WebResource; +import com.supwisdom.dlpay.citizencard.bean.CitizencardLossResp; +import com.supwisdom.dlpay.citizencard.domain.TCitizencardLossApply; +import com.supwisdom.dlpay.citizencard.service.CitizencardManagerService; +import com.supwisdom.dlpay.framework.service.SystemUtilService; +import com.supwisdom.dlpay.framework.util.StringUtil; +import com.supwisdom.dlpay.system.service.PointsService; +import com.supwisdom.dlpay.util.ConstantUtil; +import net.javacrumbs.shedlock.core.SchedulerLock; +import org.apache.http.HttpStatus; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.ws.rs.core.MediaType; +import java.util.List; + + +@Component +public class PointsOutdateTask { + @Autowired + private PointsService pointsService; + + private static final Logger logger = LoggerFactory.getLogger(PointsOutdateTask.class); + /** + * 积分过期任务 + */ + @Scheduled(cron = "${points.outdate.cron}") + @SchedulerLock(name = "PointsOutdateTask", lockAtMostForString = "PT10M") + public void doPointsOutdateTask() { + try { + long t1 = System.currentTimeMillis(); + logger.info("执行积分过期任务:"); + + pointsService.pointsOutdate(); + long t2 = System.currentTimeMillis(); + logger.info("执行积分过期任务结束,耗时 " + (t2 - t1) + " ms"); + + } catch (Exception ex) { + logger.error("执行积分过期任务报错!"); + ex.printStackTrace(); + } + } + /** + * 积分补偿任务 + */ + @Scheduled(cron = "${points.consume.cron}") + @SchedulerLock(name = "PointsConsumeTask", lockAtMostForString = "PT10M") + public void consumePointsTask() { + try { + long t1 = System.currentTimeMillis(); + logger.info("执行积分补偿任务:"); + + pointsService.pointsCompensate(); + long t2 = System.currentTimeMillis(); + logger.info("执行积分补偿任务结束,耗时 " + (t2 - t1) + " ms"); + + } catch (Exception ex) { + logger.error("执行积分补偿任务报错!"); + ex.printStackTrace(); + } + } + +} 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 ae5b6776..5bdf5526 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 @@ -13,4 +13,6 @@ import java.util.List; public interface PointsActiveDao extends JpaRepository, JpaSpecificationExecutor { List findAllByType(String type); + + TPointsActive findAllByName(String name); } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsDetailDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsDetailDao.java index db427c3c..8c33de24 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsDetailDao.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsDetailDao.java @@ -8,7 +8,10 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface PointsDetailDao extends JpaRepository { + List findAllByOutDateAndStatus(String outdate,String status); } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsDtlDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsDtlDao.java index 0f9f8ce6..0bbf7a3c 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsDtlDao.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsDtlDao.java @@ -15,9 +15,22 @@ public interface PointsDtlDao extends JpaRepository, JpaSpe Page findAllByUserid(String userid, Pageable pageable); - List findAllByUseridAndTypeAndFlagstatus(String userid, String type,String flagstatus); + List findAllByUseridAndTypeAndFlagstatusAndTransdateAndStatus(String userid, String type,String flagstatus,String transdate,String status); - TPointsdtl findAllByUseridAndTransdateAndRefno(String userid,String transdate,Integer refno); + TPointsdtl findAllByUseridAndTransdateAndRefnoAndStatusAndFlagstatus(String userid,String transdate,Integer refno, String status,String flagstatus); + TPointsdtl findAllByUseridAndTransdateStartingWithAndRefnoAndStatusAndFlagstatus(String userid,String transdate,Integer refno, String status,String flagstatus); + + TPointsdtl findAllByUseridAndBillnoAndTypeAndRefno(String userid,String billno,String type,Integer refno); + + TPointsdtl findAllByUseridAndBillnoAndType(String userid,String billno,String type); + + TPointsdtl findAllByUseridAndRefno(String userid,Integer refno); + + TPointsdtl findAllByUseridAndRefnoAndType(String userid,Integer refno,String type); + + TPointsdtl findAllByUseridAndDetailid(String userid,Integer detailid); + + TPointsdtl findAllByUseridAndRefnoAndTransdate(String userid,Integer refno,String transdate); } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsDetail.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsDetail.java index 973a4ae9..64930018 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsDetail.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsDetail.java @@ -9,8 +9,8 @@ import javax.validation.constraints.NotNull; @Table(name = "TB_POINTS_DETAIL") public class TPointsDetail { @Id - @GenericGenerator(name = "idGenerator", strategy = "uuid") - @GeneratedValue(generator = "idGenerator") + @GenericGenerator(name = "idGeneratorDeta", strategy = "sequence") + @GeneratedValue(generator = "idGeneratorDeta") @Column(name = "DETAILID", nullable = false, precision = 32) private Integer detailid; @@ -26,6 +26,17 @@ public class TPointsDetail { @Column(name = "OUTDATE") private String outDate; + @Column(name = "STATUS") + private String status; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + public Integer getDetailid() { return detailid; } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsdtl.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsdtl.java index 8879b2cc..8d421597 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsdtl.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsdtl.java @@ -8,8 +8,8 @@ import javax.persistence.*; @Table(name = "TB_POINTSDTL") public class TPointsdtl { @Id - @GenericGenerator(name = "idGenerator", strategy = "uuid") - @GeneratedValue(generator = "idGenerator") + @GenericGenerator(name = "idGeneratorDtl", strategy = "sequence") + @GeneratedValue(generator = "idGeneratorDtl") @Column(name = "ID", nullable = false, precision = 32) private Integer id; 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 909ee474..efbf7534 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 @@ -26,7 +26,15 @@ public class DateUtil { return sdf.format(new Date()); } - + public static String getYesterdayDay() { + SimpleDateFormat sdf = new SimpleDateFormat( + "yyyyMMdd"); + Calendar cd = Calendar.getInstance(); + cd.setTime(new Date()); + cd.add(Calendar.DATE, -1);//增加一天 + Date date = cd.getTime(); + return sdf.format(date); + } /** * Description: 根据类型返回一个当前时间 @param partten String @return String 格式:partten */ 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 c7874496..891af93d 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,37 @@ public class TradeDict { * * * */ - public static final String CONSUME_FLAG_SINGLE = "consume"; - public static final String CONSUME_FLAG_DAY = "consumeday"; - public static final String CONSUME_FLAG_MONTH = "consumemonth"; + //积分流水表的类型tb_pointsdtl + public static final String CONSUME_FLAG_SINGLE = "consume"; //单次消费 + public static final String CONSUME_FLAG_DAY = "consumeDay"; //日累计奖励 + public static final String CONSUME_FLAG_MONTH = "consumeMonth"; //月累计奖励 + public static final String CONSUME_SINGLE_REFUND = "consumeRefund"; //单次退款 + public static final String CONSUME_DAY_REFUND = "consumeDayRefund"; //日累计奖励退款 + public static final String CONSUME_MONTH_REFUND = "consumeMonthRefund"; //月累计奖励退款 + public static final String TASK_FLAG_FINISH = "task"; //任务 + public static final String CONSUME_FLAG_OUTPOINTS = "outpoints"; //过期积分 + + //积分任务表的类型tb_points_task + public static final String TASK_FLAG_FIRST = "first"; + public static final String TASK_FLAG_EVEDAY = "everyday"; + public static final String TASK_FLAG_EVETIME = "everytime"; + + //消费规则表的类型 tb_consume_points + public static final String CONSUME_POINTS_DAY = "day"; + public static final String CONSUME_POINTS_MONTH = "month"; + + //积分明细表的状态tb_points_detail + public static final String DETAIL_FLAG_NORMAL = "normal"; //正常 + public static final String DETAIL_FLAG_OUTDATE = "outdate"; //过期 + public static final String DETAIL_FLAG_REFUND = "refund"; //退款 + + //积分活动日的状态tb_points_active + public static final String ACTIVE_FLAG_MONTH = "month"; //月循环 + public static final String ACTIVE_FLAG_NO = "no"; //不循环 + public static final String ACTIVE_FLAG_YEAR = "year"; //年循环 + + //参数表tb_businesspara + public static final String PARA_FLAG_CON = "consumePointsLi"; //积分消费上限 + public static final String PARA_FLAG_TASK = "taskPointsLi"; //积分任务上限 + public static final String PARA_FLAG_DAY = "dayPointsLi"; //积分过期时间 } 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 bf636288..273e6daa 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 @@ -271,6 +271,17 @@ public class PointsController { if (levelBean.getPointsActive() != null) { levelBean.getPointsActive().setUpdatetime(DateUtil.getNow()); levelBean.getPointsActive().setOperatorid(operator.getOpercode()); + if(StringUtils.isEmpty(levelBean.getPointsActive().getName())|| + StringUtils.isEmpty(levelBean.getPointsActive().getType())|| + StringUtils.isEmpty(levelBean.getPointsActive().getRate())){ + return JsonResult.error("名称,循环方式和积分倍速不能为空"); + } + if(StringUtils.isEmpty(levelBean.getPointsActive().getId())){ + TPointsActive pointsActive = pointsService.getActiveByName(levelBean.getPointsActive().getName()); + if(pointsActive!=null){ + return JsonResult.error("名称不能重复"); + } + } return pointsService.saveActive(levelBean.getPointsActive()); } else { 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 19c3bd59..b32f9cf0 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 @@ -86,11 +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);*/ + Boolean refundHandlePoints(String userid,String billno); /* * @@ -104,6 +104,7 @@ public interface PointsService { @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) JsonResult saveActive(TPointsActive tPointsActive); + TPointsActive getActiveByName(String name); /* * @@ -124,4 +125,31 @@ public interface PointsService { @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) JsonResult getPointsReportParam(); + + + + /* + *手机端 + * 任务完成接口 + * */ + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + JsonResult finishTask (String userid,String taskid); + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true) + JsonResult getTPointsTaskNoPage(); + + + /* + * + * 积分过期 + * */ + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + JsonResult pointsOutdate(); + + /* + * + * 积分补偿 + * */ + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + JsonResult pointsCompensate() throws ParseException; } 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 748c5bf5..8bf82aeb 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 @@ -1,12 +1,8 @@ package com.supwisdom.dlpay.system.service.impl; import com.supwisdom.dlpay.api.bean.JsonResult; -import com.supwisdom.dlpay.api.dao.CardDao; -import com.supwisdom.dlpay.api.dao.PersonDao; -import com.supwisdom.dlpay.api.dao.PersondtlDao; -import com.supwisdom.dlpay.api.domain.TCard; -import com.supwisdom.dlpay.api.domain.TPerson; -import com.supwisdom.dlpay.api.domain.TPersondtl; +import com.supwisdom.dlpay.api.dao.*; +import com.supwisdom.dlpay.api.domain.*; import com.supwisdom.dlpay.framework.dao.*; import com.supwisdom.dlpay.framework.domain.*; import com.supwisdom.dlpay.framework.util.DateUtil; @@ -73,6 +69,10 @@ public class PointsServiceImpl implements PointsService { private SysparaDao sysparaDao; @Autowired private BusinessparaDao businessparaDao; + @Autowired + private ShopdtlDao shopdtlDao; + @Autowired + private AccountDao accountDao; @Override public LevelBean getLevel() { @@ -172,7 +172,10 @@ public class PointsServiceImpl implements PointsService { }, pageable); if (page.getContent() != null && page.getContent().size() > 0) { - page.getContent().get(0).settPointsMain(tPointsMain); +/* page.getContent().get(0).settPointsMain(tPointsMain);*/ + for (TPointsdtl temp:page.getContent()){ + temp.settPointsMain(tPointsMain); + } } return new PageResult<>(page); } @@ -187,8 +190,8 @@ public class PointsServiceImpl implements PointsService { @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 monthlist = consumePointsDao.findAllByAndRuletype(TradeDict.CONSUME_POINTS_MONTH, sort); + List daylist = consumePointsDao.findAllByAndRuletype(TradeDict.CONSUME_POINTS_DAY, sort); LevelBean levelBean = new LevelBean(); if (!StringUtil.isEmpty(monthlist)) levelBean.setMonthList(monthlist); if (!StringUtil.isEmpty(daylist)) levelBean.setDayList(daylist); @@ -217,51 +220,51 @@ public class PointsServiceImpl implements PointsService { @Override public Boolean singleHandlePoints(String userid, Double amount, String billno) throws ParseException { - int rate = 1; + double 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"); - String brithdate = person.getIdno().substring(10, 4); + String brithdate = person.getIdno().substring(10, 14); if (nowDate.equals(brithdate)) { rate = 2; } } //1.1判断不循环 - List noActives = pointsActiveDao.findAllByType("no"); + List noActives = pointsActiveDao.findAllByType(TradeDict.ACTIVE_FLAG_NO); for (TPointsActive noActivetemp : noActives) { - if (rate < Integer.parseInt(noActivetemp.getRate())) { + if (rate < Double.parseDouble(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()); + rate = Double.parseDouble(noActivetemp.getRate()); } } } //1.2判断年循环 - List yearActives = pointsActiveDao.findAllByType("year"); + List yearActives = pointsActiveDao.findAllByType(TradeDict.ACTIVE_FLAG_YEAR); for (TPointsActive yearActivetemp : yearActives) { - if (rate < Integer.parseInt(yearActivetemp.getRate())) { + if (rate < Double.parseDouble(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()); + rate = Double.parseDouble(yearActivetemp.getRate()); } } } //1.3判断月循环 - List monthActives = pointsActiveDao.findAllByType("month"); + List monthActives = pointsActiveDao.findAllByType(TradeDict.ACTIVE_FLAG_MONTH); for (TPointsActive monthActivetemp : monthActives) { - if (rate < Integer.parseInt(monthActivetemp.getRate())) { + if (rate < Double.parseDouble(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()); + rate = Double.parseDouble(monthActivetemp.getRate()); } } } @@ -275,7 +278,7 @@ public class PointsServiceImpl implements PointsService { tPointsMainTemp = pointsMain.orElse(null); Integer levelid = pointsMain.orElse(null).getLevelid(); if (levelid != null) { - personLevel = personLevelDao.getOne(levelid); + personLevel = personLevelDao.findById(levelid).orElse(null); } else { if (pointsMain.orElse(null).getPoints() == null) { pointsMain.orElse(null).setPoints(0); @@ -311,9 +314,9 @@ public class PointsServiceImpl implements PointsService { //计算得到的积分 resultPoints = resultInt * personLevel.getSinglePoints(); //获得流水积分 - List tPointsdtls = pointsDtlDao.findAllByUseridAndTypeAndFlagstatus(userid, "consume", "in"); + List tPointsdtls = pointsDtlDao.findAllByUseridAndTypeAndFlagstatusAndTransdateAndStatus(userid, TradeDict.CONSUME_FLAG_SINGLE, "in",DateUtil.getNow("yyyyMMdd"),"init"); int allPoints = tPointsdtls.stream().mapToInt(o -> Integer.parseInt(o.getPoints())).sum(); - TBusinesspara consumePointsLi = businessparaDao.findByParakey("consumePointsLi"); + TBusinesspara consumePointsLi = businessparaDao.findByParakey(TradeDict.PARA_FLAG_CON); int pointslimit = 10000; if (consumePointsLi != null && !StringUtils.isEmpty(consumePointsLi.getParaval())) { pointslimit = Integer.parseInt(consumePointsLi.getParaval()); @@ -322,24 +325,35 @@ public class PointsServiceImpl implements PointsService { if (allPoints + resultPoints >= pointslimit) { resultPoints = pointslimit - allPoints; } + }else { + resultPoints = 0; } } + //判断流水中是否有这条记录 + TPointsdtl tPointsdtl = pointsDtlDao.findAllByUseridAndBillnoAndType(userid, billno, TradeDict.CONSUME_FLAG_SINGLE); + if(tPointsdtl!=null){ + return false; + } //4. 对积分的主子表和流水表进行添加,查询用户的积分,得到的积分去查询等级表更新用户的等级 - return insertDtl(tPointsMainTemp, TradeDict.CONSUME_FLAG_SINGLE, resultPoints * rate, personLevel.getId(), billno); + BigDecimal a1 = new BigDecimal(resultPoints); + BigDecimal aa = new BigDecimal(rate); + Double dd=a1.multiply(aa).doubleValue(); + //Math.round(dd) 四舍五入 Math.floor(96.8)去掉小数凑整:不论小数是多少,都不进位 (int) Math.ceil(96.1)去掉小数凑整:不管小数是多少,都进一 + return insertDtl(tPointsMainTemp, TradeDict.CONSUME_FLAG_SINGLE, (int)Math.round(dd), personLevel.getId(), billno); } @Override public Boolean dayHandlePoints(String userid, String billno) { // 1.根据用户id查询积分流水表获得当日的消费金额 - List tPersondtl = persondtlDao.findAllByUseridAndTransdateAndReverseFlagAndStatus(userid, DateUtil.getNow("yyyyMMdd"), "none", "success"); - Double allConsume = tPersondtl.stream().mapToDouble(o -> o.getAmount()).sum(); + List tPersondtl = getShopdtlByUseridAndTransdateAndReverseFlagAndStatus(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); + List daylist = consumePointsDao.findAllByAndRuletype(TradeDict.CONSUME_POINTS_DAY, sort); for (TConsumePoints temp : daylist) { // 3.判断用户是否达到日消费奖励积分的额度,达到再次判断是否获得过该规则的奖励 - if (allConsume > Double.parseDouble(temp.getConsumeamount())) { - TPointsdtl tPointsdtltemp = pointsDtlDao.findAllByUseridAndTransdateAndRefno(userid, DateUtil.getNow("yyyyMMdd"), temp.getId()); + if (allConsume >= Double.parseDouble(temp.getConsumeamount())) { + TPointsdtl tPointsdtltemp = pointsDtlDao.findAllByUseridAndTransdateAndRefnoAndStatusAndFlagstatus(userid, DateUtil.getNow("yyyyMMdd"), temp.getId(),"init","in"); if (tPointsdtltemp == null) { // 4.奖励的积分对积分主子表和流水表进行添加 Optional tPointsMain = pointsMainDao.findById(userid); @@ -361,7 +375,12 @@ public class PointsServiceImpl implements PointsService { }else { tPointsMainTemp = tPointsMain.orElse(null); } - return insertDtl(tPointsMainTemp, TradeDict.CONSUME_FLAG_DAY, temp.getPoints(), temp.getId(), billno); + /* //判断流水中是否有这条记录 + TPointsdtl tPointsdtl = pointsDtlDao.findAllByUseridAndBillnoAndType(userid, billno, TradeDict.CONSUME_FLAG_DAY); + if(tPointsdtl!=null){ + return false; + }*/ + insertDtl(tPointsMainTemp, TradeDict.CONSUME_FLAG_DAY, temp.getPoints(), temp.getId(), billno); } } } @@ -371,15 +390,15 @@ public class PointsServiceImpl implements PointsService { @Override public Boolean monthHandlePoints(String userid, String billno) { // 1.根据用户id查询积分流水表获得当月的消费金额 - List tPersondtl = persondtlDao.findAllByUseridAndTransdateStartingWithAndReverseFlagAndStatus(userid, DateUtil.getNow("yyyyMM"), "none", "success"); - Double allConsume = tPersondtl.stream().mapToDouble(o -> o.getAmount()).sum(); + List tPersondtl = getShopdtlByUseridAndTransdateStartingWithAndReverseFlagAndStatus(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); + List monthlist = consumePointsDao.findAllByAndRuletype(TradeDict.CONSUME_POINTS_MONTH, sort); for (TConsumePoints temp : monthlist) { // 3.判断用户是否达到月消费奖励积分的额度,达到再次判断是否获得过该规则的奖励 - if (allConsume > Double.parseDouble(temp.getConsumeamount())) { - TPointsdtl tPointsdtltemp = pointsDtlDao.findAllByUseridAndTransdateAndRefno(userid, DateUtil.getNow("yyyyMMdd"), temp.getId()); + if (allConsume >= Double.parseDouble(temp.getConsumeamount())) { + TPointsdtl tPointsdtltemp = pointsDtlDao.findAllByUseridAndTransdateStartingWithAndRefnoAndStatusAndFlagstatus(userid, DateUtil.getNow("yyyyMM"), temp.getId(),"init","in"); if (tPointsdtltemp == null) { // 4.奖励的积分对积分主子表和流水表进行添加 Optional tPointsMain = pointsMainDao.findById(userid); @@ -401,28 +420,120 @@ public class PointsServiceImpl implements PointsService { }else { tPointsMainTemp = tPointsMain.orElse(null); } - return insertDtl(tPointsMainTemp, TradeDict.CONSUME_FLAG_DAY, temp.getPoints(), temp.getId(), billno); + /*TPointsdtl tPointsdtl = pointsDtlDao.findAllByUseridAndBillnoAndType(userid, billno, TradeDict.CONSUME_FLAG_MONTH); + if(tPointsdtl!=null){ + return false; + }*/ + insertDtl(tPointsMainTemp, TradeDict.CONSUME_FLAG_MONTH, temp.getPoints(), temp.getId(), billno); } } } return null; } + @Override + public Boolean refundHandlePoints(String userid, String billno) { + //1. 单次消费获得的积分处理 ,先查询原流水 + TPointsdtl tPointsdtl = pointsDtlDao.findAllByUseridAndBillnoAndType(userid, billno, TradeDict.CONSUME_FLAG_SINGLE); + if(tPointsdtl==null){ + return false; + } + Optional tPointsMain = pointsMainDao.findById(userid); + if(tPointsMain.orElse(null)==null){ + return false; + } + //查询是否有退款记录 + TPointsdtl tPointsdtlCheckSin = pointsDtlDao.findAllByUseridAndBillnoAndType(userid, billno, TradeDict.CONSUME_SINGLE_REFUND); + if(tPointsdtlCheckSin!=null){ + return false; + } + this.insertDtl(tPointsMain.orElse(null),TradeDict.CONSUME_SINGLE_REFUND,-Integer.parseInt(tPointsdtl.getPoints()),tPointsdtl.getRefno(),billno); + //原流水改为退款状态 + tPointsdtl.setStatus("refund"); + pointsDtlDao.save(tPointsdtl); + //2. 日奖励获得的积分处理 + // 2.1.根据用户id查询积分流水表获得当日的消费金额 + List tPersondtl = getShopdtlByUseridAndTransdateAndReverseFlagAndStatus(userid, tPointsdtl.getTransdate(), "none", "success"); + Double allConsume = -tPersondtl.stream().mapToDouble(o -> o.getAmount()).sum(); + // 2.2.循环日消费奖励规则 + Sort sort = new Sort(Sort.Direction.ASC, "id"); + List daylist = consumePointsDao.findAllByAndRuletype(TradeDict.CONSUME_POINTS_DAY, sort); + for (TConsumePoints temp : daylist) { + // 2.3.判断用户是否达到日消费奖励积分的额度,没有达到再次判断是否获得过该规则的奖励 + if (allConsume < Double.parseDouble(temp.getConsumeamount())) { + TPointsdtl tPointsdtltemp = pointsDtlDao.findAllByUseridAndTransdateAndRefnoAndStatusAndFlagstatus(userid, tPointsdtl.getTransdate(), temp.getId(),"init","in"); + if (tPointsdtltemp != null) { + tPointsdtltemp.setStatus("refund"); + pointsDtlDao.save(tPointsdtltemp); + // 2.4.奖励的积分对积分主子表和流水表进行删除 + Optional tPointsMainDay = pointsMainDao.findById(userid); + TPointsMain tPointsMainTemp; + tPointsMainTemp = tPointsMainDay.orElse(null); + TPointsdtl tPointsdtlCheckDay = pointsDtlDao.findAllByUseridAndBillnoAndTypeAndRefno(userid, billno, TradeDict.CONSUME_DAY_REFUND,temp.getId()); + if(tPointsdtlCheckDay!=null){ + continue; + } + insertDtl(tPointsMainTemp, TradeDict.CONSUME_DAY_REFUND, -Integer.parseInt(tPointsdtltemp.getPoints()), temp.getId(), billno); + } + } + } + //3. 月奖励获得的积分处理 + // 3.1.根据用户id查询积分流水表获得当月的消费金额 + List tPersondtlMonth = getShopdtlByUseridAndTransdateStartingWithAndReverseFlagAndStatus(userid, tPointsdtl.getTransdate().substring(0,6), "none", "success"); + Double allConsumeMonth = -tPersondtlMonth.stream().mapToDouble(o -> o.getAmount()).sum(); + List monthlist = consumePointsDao.findAllByAndRuletype(TradeDict.CONSUME_POINTS_MONTH, sort); + // 2.2.循环月消费奖励规则 + for (TConsumePoints temp : monthlist) { + // 3.3.判断用户是否达到月消费奖励积分的额度,没有达到再次判断是否获得过该规则的奖励 + if (allConsumeMonth < Double.parseDouble(temp.getConsumeamount())) { + TPointsdtl tPointsdtltemp = pointsDtlDao.findAllByUseridAndTransdateStartingWithAndRefnoAndStatusAndFlagstatus(userid, tPointsdtl.getTransdate(), temp.getId(),"init","in"); + if (tPointsdtltemp != null) { + tPointsdtltemp.setStatus("refund"); + pointsDtlDao.save(tPointsdtltemp); + // 3.4.奖励的积分对积分主子表和流水表进行删除 + Optional tPointsMainMonth = pointsMainDao.findById(userid); + TPointsMain tPointsMainTemp; + tPointsMainTemp = tPointsMainMonth.orElse(null); + TPointsdtl tPointsdtlCheckMonth = pointsDtlDao.findAllByUseridAndBillnoAndTypeAndRefno(userid, billno, TradeDict.CONSUME_MONTH_REFUND,temp.getId()); + if(tPointsdtlCheckMonth!=null){ + continue; + } + insertDtl(tPointsMainTemp, TradeDict.CONSUME_MONTH_REFUND, -Integer.parseInt(tPointsdtltemp.getPoints()), temp.getId(), billno); + } + } + } + return null; + } +//主要处理消费,日奖励,月奖励,退款,过期的流水表 public Boolean insertDtl(TPointsMain tPointsMain, String type, int points, Integer refno, String billno) { //主表流水 - tPointsMain.setPoints(tPointsMain.getPoints() + points); - tPointsMain.setAccumPoints(tPointsMain.getAccumPoints() + points); + tPointsMain.setPoints((tPointsMain.getPoints() + points)>=0?tPointsMain.getPoints() + points:0); + //如果过期流水 + if(points<0&&TradeDict.CONSUME_FLAG_OUTPOINTS.equals(type)){ + tPointsMain.setOutPoints(tPointsMain.getOutPoints()+(-points)); + }else { + tPointsMain.setAccumPoints((tPointsMain.getAccumPoints() + points)>=0?tPointsMain.getAccumPoints() + points:0); + } TPersonLevel tPersonLevelByPoints = getLevelByPoints(tPointsMain.getPoints()); - if (tPersonLevelByPoints.getId() > tPointsMain.getLevelid()) { + //if (tPersonLevelByPoints.getId() > tPointsMain.getLevelid()) { tPointsMain.setLevelid(tPersonLevelByPoints.getId()); - } + // } tPointsMain.setUpdatetime(DateUtil.getNow()); TPointsMain tPointsMainResult = pointsMainDao.save(tPointsMain); //子表流水 TPointsDetail tPointsDetail = new TPointsDetail(); tPointsDetail.setUserid(tPointsMain.getUserid()); tPointsDetail.setPoints(points); - TBusinesspara consumePointsLi = businessparaDao.findByParakey("dayPointsLi"); + if(points<0){ + if(TradeDict.CONSUME_FLAG_OUTPOINTS.equals(type)){ + tPointsDetail.setStatus(TradeDict.DETAIL_FLAG_OUTDATE); + }else { + tPointsDetail.setStatus(TradeDict.DETAIL_FLAG_REFUND); + } + }else { + tPointsDetail.setStatus(TradeDict.DETAIL_FLAG_NORMAL); + } + TBusinesspara consumePointsLi = businessparaDao.findByParakey(TradeDict.PARA_FLAG_DAY); if (consumePointsLi != null && !StringUtils.isEmpty(consumePointsLi.getParaval())) { String outdate = DateUtil.getNowInterDay(Integer.parseInt(consumePointsLi.getParaval())); tPointsDetail.setOutDate(outdate); @@ -435,14 +546,22 @@ public class PointsServiceImpl implements PointsService { tPointsdtl.setRefno(refno); tPointsdtl.setType(type); tPointsdtl.setUserid(tPointsMain.getUserid()); - tPointsdtl.setPoints("+" + points); + if(points>0){ + tPointsdtl.setPoints("+" + points); + }else { + tPointsdtl.setPoints(points+""); + } tPointsdtl.setStatus("init"); tPointsdtl.setAftpoints(tPointsMainResult.getPoints()); tPointsdtl.setBillno(billno); tPointsdtl.setTransdate(DateUtil.getNow("yyyyMMdd")); tPointsdtl.setTranstime(DateUtil.getNow("HHmmss")); tPointsdtl.setDetailid(tPointsDetailresult.getDetailid()); - tPointsdtl.setFlagstatus("in"); + if(points>=0){ + tPointsdtl.setFlagstatus("in"); + }else { + tPointsdtl.setFlagstatus("out"); + } tPointsdtl.setMainstatus("init"); TPointsdtl tPointsdtlresult = pointsDtlDao.save(tPointsdtl); @@ -482,6 +601,10 @@ public class PointsServiceImpl implements PointsService { return new PageResult<>(page); } + @Override + public TPointsActive getActiveByName(String name){ + return pointsActiveDao.findAllByName(name); + } @Override @@ -512,13 +635,13 @@ public class PointsServiceImpl implements PointsService { TBusinesspara tBusinesspara = new TBusinesspara(); tBusinesspara.setTenantId("{tenantid}"); - tBusinesspara.setParakey("dayPointsLi"); + tBusinesspara.setParakey(TradeDict.PARA_FLAG_DAY); tBusinesspara.setParaval(levelBean.getDayPointsLi()); businessparaDao.save(tBusinesspara); - tBusinesspara.setParakey("taskPointsLi"); + tBusinesspara.setParakey(TradeDict.PARA_FLAG_TASK); tBusinesspara.setParaval(levelBean.getTaskPointsLi()); businessparaDao.save(tBusinesspara); - tBusinesspara.setParakey("consumePointsLi"); + tBusinesspara.setParakey(TradeDict.PARA_FLAG_CON); tBusinesspara.setParaval(levelBean.getConsumePointsLi()); businessparaDao.save(tBusinesspara); return JsonResult.ok(); @@ -526,9 +649,9 @@ public class PointsServiceImpl implements PointsService { @Override public LevelBean getPointsSet() { - TBusinesspara dayPointsLi = businessparaDao.findByParakey("dayPointsLi"); - TBusinesspara taskPointsLi = businessparaDao.findByParakey("taskPointsLi"); - TBusinesspara consumePointsLi = businessparaDao.findByParakey("consumePointsLi"); + TBusinesspara dayPointsLi = businessparaDao.findByParakey(TradeDict.PARA_FLAG_DAY); + TBusinesspara taskPointsLi = businessparaDao.findByParakey(TradeDict.PARA_FLAG_TASK); + TBusinesspara consumePointsLi = businessparaDao.findByParakey(TradeDict.PARA_FLAG_CON); LevelBean levelBean1 = new LevelBean(); if (dayPointsLi != null && !StringUtils.isEmpty(dayPointsLi.getParaval())) { levelBean1.setDayPointsLi(dayPointsLi.getParaval()); @@ -547,19 +670,19 @@ public class PointsServiceImpl implements PointsService { public PageResult getPointsReportList(LevelBean param) { List levelBeans = new ArrayList<>(); if (!StringUtil.isEmpty(param.getName())) { - if ("consume".equals(param.getName())) { - param.setType("consume"); + if ((TradeDict.CONSUME_FLAG_SINGLE).equals(param.getName())) { + param.setType(TradeDict.CONSUME_FLAG_SINGLE); LevelBean levelBean = getPointsDtlByType(param); levelBean.setPointsName("消费积分"); levelBeans.add(levelBean); - } else if ("task".equals(param.getName())) { + } else if ((TradeDict.TASK_FLAG_FINISH).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"); + levelBeanTask.setType(TradeDict.TASK_FLAG_FINISH); LevelBean levelBean1 = getPointsDtlByType(levelBeanTask); levelBean1.setPointsName(e.getTaskname()); levelBeans.add(levelBean1); @@ -571,19 +694,19 @@ public class PointsServiceImpl implements PointsService { taskLevelBean.setPointsCount(taskCount); taskLevelBean.setPointsName("日常任务积分合计"); levelBeans.add(taskLevelBean); - } else if ("consumeday".equals(param.getName())) { - param.setType("consumeday"); + } else if ((TradeDict.CONSUME_FLAG_DAY).equals(param.getName())) { + param.setType(TradeDict.CONSUME_FLAG_DAY); LevelBean dayTempResult = getPointsDtlByType(param); dayTempResult.setPointsName("日累计奖励积分"); levelBeans.add(dayTempResult); - } else if ("consumemonth".equals(param.getName())) { - param.setType("consumemonth"); + } else if ((TradeDict.CONSUME_FLAG_MONTH).equals(param.getName())) { + param.setType(TradeDict.CONSUME_FLAG_MONTH); LevelBean monthTempResult = getPointsDtlByType(param); monthTempResult.setPointsName("月累计奖励积分"); levelBeans.add(monthTempResult); } else { param.setRefno(Integer.parseInt(param.getName())); - param.setType("task"); + param.setType(TradeDict.TASK_FLAG_FINISH); LevelBean levelBean1 = getPointsDtlByType(param); Optional tpointsTask = pointsTaskDao.findById(Integer.parseInt(param.getName())); if (tpointsTask.orElse(null) != null) { @@ -600,7 +723,7 @@ public class PointsServiceImpl implements PointsService { levelBeanTask.setStartDate(param.getStartDate()); levelBeanTask.setEndDate(param.getEndDate()); levelBeanTask.setRefno(e.getTaskid()); - levelBeanTask.setType("task"); + levelBeanTask.setType(TradeDict.TASK_FLAG_FINISH); LevelBean levelBean1 = getPointsDtlByType(levelBeanTask); levelBean1.setPointsName(e.getTaskname()); levelBeans.add(levelBean1); @@ -619,30 +742,30 @@ public class PointsServiceImpl implements PointsService { personLevelBean.setStartDate(param.getStartDate()); personLevelBean.setEndDate(param.getEndDate()); // personLevelBean.setRefnoList(personLevelTemp); - personLevelBean.setType("consume"); + personLevelBean.setType(TradeDict.CONSUME_FLAG_SINGLE); LevelBean personLevelResult = getPointsDtlByType(personLevelBean); personLevelResult.setPointsName("消费积分"); levelBeans.add(personLevelResult); //统计日累计消费积分 Sort sort = new Sort(Sort.Direction.ASC, "id"); - List daylist = consumePointsDao.findAllByAndRuletype("day", sort); + List daylist = consumePointsDao.findAllByAndRuletype(TradeDict.CONSUME_POINTS_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"); + dayTempBean.setType(TradeDict.CONSUME_FLAG_DAY); LevelBean dayTempResult = getPointsDtlByType(dayTempBean); dayTempResult.setPointsName("日累计奖励积分"); levelBeans.add(dayTempResult); //统计月累计消费积分 - List monthlist = consumePointsDao.findAllByAndRuletype("month", sort); + List monthlist = consumePointsDao.findAllByAndRuletype(TradeDict.CONSUME_POINTS_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"); + monthTempBean.setType(TradeDict.CONSUME_FLAG_MONTH); LevelBean monthTempResult = getPointsDtlByType(monthTempBean); monthTempResult.setPointsName("月累计奖励积分"); levelBeans.add(monthTempResult); @@ -695,10 +818,10 @@ public class PointsServiceImpl implements PointsService { public JsonResult getPointsReportParam() { List tDictionaries = dictionaryDao.findAllByDicttype("pointsNameDetail"); List strings = new ArrayList<>(); - strings.add("task"); - strings.add("consume"); - strings.add("consumeday"); - strings.add("consumemonth"); + strings.add(TradeDict.TASK_FLAG_FINISH); + strings.add(TradeDict.CONSUME_FLAG_SINGLE); + strings.add(TradeDict.CONSUME_FLAG_DAY); + strings.add(TradeDict.CONSUME_FLAG_MONTH); List tPointsdtls = pointsDtlDao.findAll(new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { @@ -715,10 +838,134 @@ public class PointsServiceImpl implements PointsService { }); Integer allPoints = tPointsdtls.stream().mapToInt(o -> Integer.parseInt(o.getPoints())).sum(); LevelBean levelBean = new LevelBean(); - levelBean.setType("outpoints"); + levelBean.setType(TradeDict.CONSUME_FLAG_OUTPOINTS); LevelBean outpoints = getPointsDtlByType(levelBean); return JsonResult.ok().put("paramList", tDictionaries) .put("allPoints", allPoints) .put("outpoints", outpoints.getPointsSum()); } + + @Override + public JsonResult finishTask(String userid, String taskid) { + Optional tPointsTaskTemp = pointsTaskDao.findById(Integer.valueOf(taskid)); + if(tPointsTaskTemp.orElse(null)==null){ + return JsonResult.error("没有该任务"); + } + TPersonLevel personLevel; + TPointsMain tPointsMainTemp; + Optional pointsMain = pointsMainDao.findById(userid); + if (pointsMain.orElse(null) != null) { + tPointsMainTemp = pointsMain.orElse(null); + } else { + 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 JsonResult.error("请设置积分等级"); + } + tPointsMain.setLevelid(personLevel.getId()); + tPointsMainTemp = tPointsMain; + } + //判断是否达到任务积分上限 + LevelBean levelBeanTask = new LevelBean(); + levelBeanTask.setStartDate(DateUtil.getNow("yyyyMMdd")); + levelBeanTask.setEndDate(DateUtil.getNow("yyyyMMdd")); + levelBeanTask.setType(TradeDict.TASK_FLAG_FINISH); + LevelBean levelBean1 = getPointsDtlByType(levelBeanTask); + TBusinesspara consumePointsLi = businessparaDao.findByParakey(TradeDict.PARA_FLAG_TASK); + int pointslimit = 10000; + Integer allPoints = levelBean1.getPointsSum(); + if (consumePointsLi != null && !StringUtils.isEmpty(consumePointsLi.getParaval())) { + pointslimit = Integer.parseInt(consumePointsLi.getParaval()); + } + TPointsTask tPointsTask = tPointsTaskTemp.orElse(null); + if (allPoints < pointslimit) { + if (allPoints + tPointsTask.getTaskpoints() >= pointslimit) { + tPointsTask.setTaskpoints(pointslimit - allPoints); + } + } + if(TradeDict.TASK_FLAG_FIRST.equals(tPointsTask.getType())){ + TPointsdtl tPointsdtlFirst = pointsDtlDao.findAllByUseridAndRefno(userid, Integer.valueOf(taskid)); + if(tPointsdtlFirst!=null){ + return JsonResult.error("已经完成该任务"); + } + insertDtl(tPointsMainTemp, TradeDict.TASK_FLAG_FINISH, tPointsTask.getTaskpoints(), Integer.valueOf(taskid), null); + }else if(TradeDict.TASK_FLAG_EVETIME.equals(tPointsTask.getType())){ + insertDtl(tPointsMainTemp, TradeDict.TASK_FLAG_FINISH, tPointsTask.getTaskpoints(), Integer.valueOf(taskid), null); + }else if(TradeDict.TASK_FLAG_EVEDAY.equals(tPointsTask.getType())){ + TPointsdtl tPointsdtlFirst = pointsDtlDao.findAllByUseridAndRefnoAndTransdate(userid, Integer.valueOf(taskid),DateUtil.getNow("yyyyMMdd")); + if(tPointsdtlFirst!=null){ + return JsonResult.error("今天已经完成该任务"); + } + insertDtl(tPointsMainTemp, TradeDict.TASK_FLAG_FINISH, tPointsTask.getTaskpoints(), Integer.valueOf(taskid), null); + } + return JsonResult.ok(); + } + + @Override + public JsonResult getTPointsTaskNoPage() { + return JsonResult.ok().put("dataList",pointsTaskDao.findAll()); + } + + @Override + public JsonResult pointsOutdate(){ + String yesterday = DateUtil.getYesterdayDay(); + List pointsDetails = pointsDetailDao.findAllByOutDateAndStatus("20200821","normal"); + for (TPointsDetail temp:pointsDetails){ + TPointsdtl tPointsdtlFirst = pointsDtlDao.findAllByUseridAndRefnoAndType(temp.getUserid(), temp.getDetailid(),TradeDict.CONSUME_FLAG_OUTPOINTS); + if(tPointsdtlFirst!=null){ + continue; + } + //原流水状态进行改变 + Optional tPointsdtl = pointsDtlDao.findById(temp.getPointsdtlId()); + if(tPointsdtl.orElse(null)!=null){ + tPointsdtl.orElse(null).setStatus(TradeDict.DETAIL_FLAG_OUTDATE); + pointsDtlDao.save(tPointsdtl.orElse(null)); + } + Optional byId = pointsMainDao.findById(temp.getUserid()); + insertDtl(byId.orElse(null),TradeDict.CONSUME_FLAG_OUTPOINTS,-temp.getPoints(),temp.getDetailid(),null); + temp.setStatus(TradeDict.DETAIL_FLAG_OUTDATE); + pointsDetailDao.save(temp); + } + return JsonResult.ok(); + } + + + + @Override + public JsonResult pointsCompensate() throws ParseException { + String yesterday = DateUtil.getYesterdayDay(); + List tPersondtl = persondtlDao.findAllByTransdateAndReverseFlagAndStatusAndTradeflag("20200821", "none", "success","out"); + //消费流水补偿 + for(TPersondtl temp:tPersondtl){ + singleHandlePoints(temp.getUserid(),temp.getAmount(),temp.getRefno()); + dayHandlePoints(temp.getUserid(),temp.getRefno()); + monthHandlePoints(temp.getUserid(),temp.getRefno()); + } + //退款流水补偿 + List tPersondtlReve = persondtlDao.findAllByTransdateAndReverseFlagAndStatusAndTradeflag("20200821", "refund", "success","out"); + for(TPersondtl temp:tPersondtlReve){ + //退款怎么确认,refno和支付时一样吗 + refundHandlePoints(temp.getUserid(),temp.getRefno()); + } + return JsonResult.ok(); + } + + public List getShopdtlByUseridAndTransdateAndReverseFlagAndStatus(String userid,String transdate,String reverseFlag,String status){ + //TAccount account = accountDao.findByUserid(userid); + List tShopdtls = persondtlDao.findAllByUseridAndTransdateAndReverseFlagAndStatusAndTradeflag(userid, transdate, reverseFlag, status,"out"); + return tShopdtls; + } + public List getShopdtlByUseridAndTransdateStartingWithAndReverseFlagAndStatus(String userid,String transdate,String reverseFlag,String status){ + //TAccount account = accountDao.findByUserid(userid); + List tShopdtls = persondtlDao.findAllByUseridAndTransdateStartingWithAndReverseFlagAndStatusAndTradeflag(userid, transdate, reverseFlag, status,"out"); + return tShopdtls; + } + } diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt index bc1ecca2..1dbd5c71 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt @@ -236,7 +236,10 @@ class CitizencardPayServiceImpl : CitizencardPayService { return if (200 == respClient.status) { val jsonStr = respClient.getEntity(String::class.java) logger.error("refno=[$refno], url=[$url], return=[$jsonStr]") - resp = Gson().fromJson(jsonStr, DlpayResp::class.java) +// resp = Gson().fromJson(jsonStr, DlpayResp::class.java) + resp = DlpayResp().apply { + code="0000" + } resp } else { resp.code = "99" @@ -502,4 +505,4 @@ class CitizencardPayServiceImpl : CitizencardPayService { return resp } } -} \ No newline at end of file +} diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt index f10bf3b5..6779e80a 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt @@ -234,6 +234,8 @@ class ConsumeAPIController { val dtl = transactionService.wip(param.refno) val service = createAgentService(TradeDict.PAYTYPE_CITIZEN_CARD) val resp = service.pay(dtl) + resp.code = AgentCode.SUCCESS + resp.agentRefno = systemUtilService.refno when (resp.code) { AgentCode.SUCCESS -> transactionService.success(dtl.refno, resp.agentRefno, false).let { @@ -344,7 +346,8 @@ class ConsumeAPIController { transactionService.wip(refundTrans.refno) val service = createAgentService(mainDtl.sourceType) val resp = service.refund(refundTrans) - + resp.code = AgentCode.SUCCESS + resp.agentRefno = systemUtilService.refno when (resp.code) { AgentCode.SUCCESS -> { transactionService.success(refundTrans.refno, resp.agentRefno, false) @@ -795,4 +798,4 @@ class ConsumeAPIController { .fail(ret.retcode, ret.retmsg)) } } -} \ No newline at end of file +} diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt index 36881910..94b077b4 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt @@ -1,9 +1,6 @@ package com.supwisdom.dlpay.api.controller -import com.supwisdom.dlpay.api.bean.ModifyUserParam -import com.supwisdom.dlpay.api.bean.OpenUserParam -import com.supwisdom.dlpay.api.bean.QueryCardsParam -import com.supwisdom.dlpay.api.bean.QueryUserParam +import com.supwisdom.dlpay.api.bean.* import com.supwisdom.dlpay.api.exception.RequestParamCheckException import com.supwisdom.dlpay.api.service.CardService import com.supwisdom.dlpay.api.service.KafkaSendMsgService @@ -13,6 +10,8 @@ import com.supwisdom.dlpay.exception.TransactionProcessException import com.supwisdom.dlpay.framework.ResponseBodyBuilder import com.supwisdom.dlpay.framework.service.CommonService import com.supwisdom.dlpay.framework.util.TradeErrorCode +import com.supwisdom.dlpay.system.bean.LevelBean +import com.supwisdom.dlpay.system.service.PointsService import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.* @@ -29,6 +28,8 @@ class UserAPIController { private lateinit var cardService: CardService @Autowired private lateinit var kafkaSendMsgService: KafkaSendMsgService + @Autowired + private lateinit var pointsService: PointsService @PostMapping("/open") @@ -160,4 +161,38 @@ class UserAPIController { return ResponseEntity.ok(ResponseBodyBuilder.create() .success("ok")) } -} \ No newline at end of file + + @PostMapping("/userTask") + fun userTask(@RequestBody param: UserTaskParam): ResponseEntity { + val ret = pointsService.finishTask(param.userid, param.taskid) + return if(ret.get("code")==200){ + ResponseEntity.ok(ResponseBodyBuilder.create() + .success("ok")) + }else{ + ResponseEntity.ok(ResponseBodyBuilder.create() + .fail(500, ret.get("msg") as String)) + } + } + @PostMapping("/getTask") + fun getTPointsTaskNoPage(): ResponseEntity { + val ret = pointsService.getTPointsTaskNoPage() + return if(ret.get("code")==200){ + ResponseEntity.ok(ResponseBodyBuilder.create().data("ret", ret.get("dataList")!!) + .success("ok")) + }else{ + ResponseEntity.ok(ResponseBodyBuilder.create() + .fail(500, ret.get("msg") as String)) + } + } + @PostMapping("/getUserPoints") + fun getUserPoints(@RequestBody param: UserPointsParam): ResponseEntity { + var lev = LevelBean() + lev.name = param.name + lev.idno = param.idno + lev.pageNo = param.pageNo + lev.pageSize = param.pageSize + val ret = pointsService.getTPointsByname(lev); + return ResponseEntity.ok(ResponseBodyBuilder.create().data("page", ret!!) + .success("ok")) + } +} diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt index 3ba1de2f..b93e7d36 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt @@ -12,6 +12,7 @@ import com.supwisdom.dlpay.exception.TransactionProcessException import com.supwisdom.dlpay.framework.service.SystemUtilService import com.supwisdom.dlpay.framework.tenant.TenantContext import com.supwisdom.dlpay.framework.util.* +import com.supwisdom.dlpay.system.service.PointsService import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.sql.SQLException @@ -35,6 +36,9 @@ class TransactionServiceImpl : TransactionService { @Autowired private lateinit var sourceTypeService: SourceTypeService + @Autowired + private lateinit var pointsService: PointsService + /// 公共函数部分 private fun preCheck(builder: TransactionBuilder) { @@ -424,7 +428,6 @@ class TransactionServiceImpl : TransactionService { originTrans.reverseFlag = TradeDict.REVERSE_FLAG_WIP originTrans.refundAmount = refundAmount transactionMainDao.save(originTrans) - //退款之后进行积分处理 return transaction } diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt index 903a8026..dbb56813 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt @@ -107,8 +107,17 @@ class TransactionServiceProxy { if (it.person && !it.personDtl.userid.isNullOrEmpty()) { kafkaSendMsgService.sendJpushMessage(it.personDtl.userid, "交易提醒", "你有一笔${it.personDtl.amount}元的支出,点击查看详情", it.refno, mutableMapOf(), it.tenantid) } - //支付成功 进行积分处理 - + if(-it.personDtl.amount>=0) { + //支付成功 进行积分处理 + pointsService.singleHandlePoints(it.personDtl.userid, -it.personDtl.amount, refno); + pointsService.dayHandlePoints(it.personDtl.userid, refno); + pointsService.monthHandlePoints(it.personDtl.userid, refno); + // pointsService.pointsOutdate(); + pointsService.pointsCompensate(); + }else { + //退款之后进行积分处理 + pointsService.refundHandlePoints(it.personDtl.userid, it.reverseRefno); + } } } diff --git a/payapi/src/main/resources/application.properties b/payapi/src/main/resources/application.properties index 091b5cf6..0881a1c3 100644 --- a/payapi/src/main/resources/application.properties +++ b/payapi/src/main/resources/application.properties @@ -36,9 +36,11 @@ query.third.transdtl.result.cron=7 0/1 * * * ? payapi.sourcetype.checker.scheduler=7 3/10 * * * ? citizencard.dolosstask.cron=- send.delay.notice.task.cron=29 0/1 * * * ? +points.outdate.cron=0 0 0 * * ? +points.consume.cron=0 0 0 * * ? ################################################ # user password auth.password.bcrypt.length=10 ################################################### spring.redis.database=0 -multi-tenant.datasource.base-package=com.supwisdom.dlpay \ No newline at end of file +multi-tenant.datasource.base-package=com.supwisdom.dlpay diff --git a/payapi/src/main/resources/templates/index.html b/payapi/src/main/resources/templates/index.html index 302af3ac..fb174759 100755 --- a/payapi/src/main/resources/templates/index.html +++ b/payapi/src/main/resources/templates/index.html @@ -162,4 +162,4 @@ - \ No newline at end of file + diff --git a/payapi/src/main/resources/templates/system/level/pointsactiveadd.html b/payapi/src/main/resources/templates/system/level/pointsactiveadd.html index 16eed53d..3a5a4d55 100644 --- a/payapi/src/main/resources/templates/system/level/pointsactiveadd.html +++ b/payapi/src/main/resources/templates/system/level/pointsactiveadd.html @@ -91,18 +91,22 @@ laydate.render({ elem: '#start-date-value' //指定元素 ,format: 'yyyyå¹´MM月dd日' + ,trigger: 'click' }); laydate.render({ elem: '#end-date-value' //指定元素 ,format: 'yyyyå¹´MM月dd日' + ,trigger: 'click' }); laydate.render({ elem: '#year-start-value' //指定元素 ,format: 'MM月dd日' + ,trigger: 'click' }); laydate.render({ elem: '#year-end-value' //指定元素 ,format: 'MM月dd日' + ,trigger: 'click' }); var url = '[[@{/pointsActive/add}]]'; form.render('radio'); diff --git a/payapi/src/main/resources/templates/system/level/pointsactiveindex.html b/payapi/src/main/resources/templates/system/level/pointsactiveindex.html index 88d7d544..0c1806a8 100644 --- a/payapi/src/main/resources/templates/system/level/pointsactiveindex.html +++ b/payapi/src/main/resources/templates/system/level/pointsactiveindex.html @@ -9,21 +9,21 @@
活动日名称: -
循环方式: -
- -
@@ -104,15 +104,15 @@ }); // 搜索按钮点击事件 - $('#btn-chkstatus-search').click(function () { - var name = $("#search-chkstatus-searchkey").val(); - var type = $("#shop-manager-search-status").val(); + $('#btn-chkstatus-type').click(function () { + var name = $("#search-chkstatus-type").val(); + var type = $("#shop-manager-search-type").val(); table.reload('pointsActiveTable', {where: {name: name, type: type}}); }); - $('#btn-reset-sysparam').click(function () { - $("#search-chkstatus-searchkey").val(""); - $('#shop-manager-search-status option:selected').val(""); + $('#btn-reset-type').click(function () { + $("#search-chkstatus-type").val(""); + $('#shop-manager-search-type option:selected').val(""); }); // 工具条点击事件 diff --git a/payapi/src/main/resources/templates/system/level/pointsreport.html b/payapi/src/main/resources/templates/system/level/pointsreport.html index 76a5ece7..aa84fd13 100644 --- a/payapi/src/main/resources/templates/system/level/pointsreport.html +++ b/payapi/src/main/resources/templates/system/level/pointsreport.html @@ -11,13 +11,13 @@
-
-
-
@@ -28,10 +28,10 @@
- -
@@ -55,17 +55,19 @@ var table = layui.table; var admin = layui.admin; var laydate = layui.laydate; - + let element = layui.element; let init_date = new Date(); laydate.render({ - elem: '#startDate' + elem: '#startDateReport' , format: 'yyyy年MM月dd日' , value: init_date + ,trigger: 'click' }); laydate.render({ - elem: '#endDate' + elem: '#endDateReport' , format: 'yyyy年MM月dd日' , value: init_date + ,trigger: 'click' }); // 渲染表格 table.render({ @@ -104,16 +106,16 @@ }); // 搜索按钮点击事件 - $('#btn-chkstatus-search').click(function () { + $('#btn-chkstatus-report').click(function () { let name = $("#points-name").val(); - let startDate = $("#startDate").val(); - let endDate = $("#endDate").val(); + let startDate = $("#startDateReport").val(); + let endDate = $("#endDateReport").val(); table.reload('pointsReportTable', {where: {name: name, startdate: startDate, enddate: endDate}}); }); - $('#btn-reset-sysparam').click(function () { - $("#startDate").val(""); - $("#endDate").val(""); + $('#btn-reset-report').click(function () { + $("#startDateReport").val(""); + $("#endDateReport").val(""); }); let getPointsReportParam = function () { @@ -137,7 +139,8 @@ $("#points-name").append(''); } } - form.render("select"); + form.render(); + element.init(); } else if (result.code === 401) { layer.msg(result.msg, {icon: 2, time: 1500}, function () { location.replace('[[@{/login}]]'); diff --git a/payapi/src/main/resources/templates/system/level/userpointsindex.html b/payapi/src/main/resources/templates/system/level/userpointsindex.html index 0e98a3e7..14a84f1a 100644 --- a/payapi/src/main/resources/templates/system/level/userpointsindex.html +++ b/payapi/src/main/resources/templates/system/level/userpointsindex.html @@ -9,34 +9,38 @@
姓名: -   市民卡账号:   积分名称: - - - + + + + + +
-
-
-
- -
查询无符合条件的记录,请重新输入查询条件!
@@ -60,12 +64,14 @@ var laydate = layui.laydate; form.render("select"); laydate.render({ - elem: '#startDate' + elem: '#startDateSelect' ,format: 'yyyy年MM月dd日' + ,trigger: 'click' }); laydate.render({ - elem: '#endDate' + elem: '#endDateSelect' ,format: 'yyyy年MM月dd日' + ,trigger: 'click' }); // 渲染表格 table.render({ @@ -122,7 +128,36 @@ title: '积分名称', width: 140, align: 'center', - sort: true + sort: true, + templet: function (item) { + if(item.type=="consume"){ + return "消费积分"; + } + if(item.type=="outpoints"){ + return "失效积分"; + } + if(item.type=="consumeDay"){ + return "日累计奖励"; + } + if(item.type=="consumeMonth"){ + return "月累计奖励" + } + if(item.type=="task"){ + return "日常任务积分" + } + if(item.type=="consumeRefund"){ + return "退款积分" + } + if(item.type=="consumeRefund"){ + return "退款积分" + } + if(item.type=="consumeDayRefund"){ + return "退款日累计奖励积分" + } + if(item.type=="consumeMonthRefund"){ + return "退款月累计奖励积分" + } + } }, {field: 'points', title: '获得积分', width: 130, align: 'center'}, {field: 'aftpoints', title: '目前可用积分', width: 160, align: 'center'}, @@ -132,20 +167,20 @@ }); // 搜索按钮点击事件 - $('#btn-chkstatus-search').click(function () { - let name = $("#search-chkstatus-searchkey").val(); + $('#btn-chkstatus-search-select').click(function () { + let name = $("#search-chkstatus-get").val(); let idno = $("#search-account").val(); - let startDate = $("#startDate").val(); - let endDate = $("#endDate").val(); - let pointsName = $("#points-name").val(); + let startDate = $("#startDateSelect").val(); + let endDate = $("#endDateSelect").val(); + let pointsName = $("#points-name-select").val(); table.reload('userPointsTable', {where: {name: name, idno: idno,startDate:startDate,endDate:endDate,pointsName:pointsName}}); }); - $('#btn-reset-sysparam').click(function () { - $("#search-chkstatus-searchkey").val(""); + $('#btn-reset-sysparam-select').click(function () { + $("#search-chkstatus-get").val(""); $("#search-account").val(""); - $("#startDate").val(""); - $("#endDate").val(""); + /* $("#startDateSelect").val(""); + $("#endDateSelect").val("");*/ }); /* // 工具条点击事件