From 2555e23c828b603944f51883a580b401962b2209 Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期一, 12 八月 2024 17:32:51 +0800 Subject: [PATCH] 2024-08-12 朱宝民 4个查询统计接口 --- pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/StartStopDateQO.java | 30 +++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVcOperateMapper.java | 38 ++++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientStatistics.java | 4 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVcOperateMapper.xml | 55 +++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardSv.java | 111 ++++++++++++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java | 83 +++++++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/TotalRechargeQO.java | 22 +++ 7 files changed, 333 insertions(+), 10 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVcOperateMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVcOperateMapper.java index f58c98d..c8fca1a 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVcOperateMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVcOperateMapper.java @@ -2,7 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dy.pipIrrGlobal.pojoSe.SeVcOperate; -import com.dy.pipIrrGlobal.voSt.VoClientRegisterVC; +import com.dy.pipIrrGlobal.voSt.VoClientStatistics; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -41,5 +41,39 @@ * @param params * @return */ - List<VoClientRegisterVC> getRegisterVcClients(Map<?, ?> params); + List<VoClientStatistics> getRegisterVcClients(Map<?, ?> params); + + /** + * 鎸囧畾鏃堕棿娈靛唴娉ㄥ唽鎬绘暟閲� + * @param params + * @return + */ + Long getRegisterCount(Map<?, ?> params); + + /** + * 鎸囧畾鏃堕棿娈靛厖鍊兼�绘暟閲� + * @param params + * @return + */ + Long getRechargeCount(Map<?, ?> params); + + /** + * 褰撳墠浣欓鎬婚噺 + * @return + */ + Double getTotalBalance(); + + /** + * 鎸囧畾鏃堕棿娈靛唴铏氭嫙鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛璁板綍鏁伴噺 + * @param params + * @return + */ + Long getLargeRechargeClientsCount(Map<?, ?> params); + + /** + * 鎸囧畾鏃堕棿娈靛唴铏氭嫙鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛 + * @param params + * @return + */ + List<VoClientStatistics> getLargeRechargeClients(Map<?, ?> params); } \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientRegisterVC.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientStatistics.java similarity index 85% rename from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientRegisterVC.java rename to pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientStatistics.java index 38f4990..ecec7ab 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientRegisterVC.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientStatistics.java @@ -7,12 +7,12 @@ * @author ZhuBaoMin * @date 2024-08-12 14:37 * @LastEditTime 2024-08-12 14:37 - * @Description 鍐滄埛娉ㄥ唽铏氭嫙鍗¤鍥� + * @Description 缁熻妯″潡鍐滄埛瑙嗗浘 */ @Data @JsonPropertyOrder({"clientId","clientName"}) -public class VoClientRegisterVC { +public class VoClientStatistics { private static final long serialVersionUID = 202408121438001L; /** diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVcOperateMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVcOperateMapper.xml index 6093285..0bd1556 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVcOperateMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVcOperateMapper.xml @@ -143,7 +143,7 @@ </select> <!--鎸囧畾鏃堕棿娈靛唴娉ㄥ唽铏氭嫙鍗$殑鍐滄埛--> - <select id="getRegisterVcClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientRegisterVC"> + <select id="getRegisterVcClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientStatistics"> SELECT cli.id AS clientId, cli.name AS clientName FROM se_client cli @@ -159,4 +159,57 @@ </if> </trim> </select> + + <!--鎸囧畾鏃堕棿娈靛唴娉ㄥ唽鎬绘暟閲�--> + <select id="getRegisterCount" resultType="java.lang.Long"> + SELECT COUNT(*) AS recordCount + FROM se_vc_operate ope + WHERE ope.operate_type = 1 + AND ope.operate_time BETWEEN #{timeStart} AND #{timeStop} + </select> + + <!--鎸囧畾鏃堕棿娈靛厖鍊兼�绘暟閲�--> + <select id="getRechargeCount" resultType="java.lang.Long"> + SELECT COUNT(*) AS recordCount + FROM se_vc_operate ope + INNER JOIN se_vc_recharge rec ON rec.id = ope.recharge_id + WHERE ope.operate_type = 2 + AND rec.order_state = 2 + AND ope.operate_time BETWEEN #{timeStart} AND #{timeStop} + </select> + + <!--褰撳墠浣欓鎬婚噺--> + <select id="getTotalBalance" resultType="java.lang.Double"> + SELECT SUM(money) AS totalBalance + FROM se_virtual_card + </select> + + <!--鎸囧畾鏃堕棿娈靛唴铏氭嫙鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛璁板綍鏁伴噺--> + <select id="getLargeRechargeClientsCount" resultType="java.lang.Long"> + SELECT COUNT(*) AS recordCount + FROM se_client cli + WHERE (SELECT SUM(recharge_amount) + FROM se_vc_recharge rec + WHERE rec.client_id = cli.id + AND rec.order_state = 2 + AND rec.order_time BETWEEN #{timeStart} AND #{timeStop}) > #{totalRecharge} + </select> + + <!--鎸囧畾鏃堕棿娈靛唴铏氭嫙鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛--> + <select id="getLargeRechargeClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientStatistics"> + SELECT cli.id AS clientId, + cli.name AS clientName + FROM se_client cli + WHERE (SELECT SUM(recharge_amount) + FROM se_vc_recharge rec + WHERE rec.client_id = cli.id + AND rec.order_state = 2 + AND rec.order_time BETWEEN #{timeStart} AND #{timeStop}) > #{totalRecharge} + ORDER BY cli.id + <trim prefix="limit "> + <if test="start != null and count != null"> + #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} + </if> + </trim> + </select> </mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java index 2ecbfff..f544193 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java @@ -4,8 +4,10 @@ import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; -import com.dy.pipIrrGlobal.voSt.VoClientRegisterVC; +import com.dy.pipIrrGlobal.voSt.VoClientStatistics; import com.dy.pipIrrStatistics.card.qo.CommonQO; +import com.dy.pipIrrStatistics.card.qo.StartStopDateQO; +import com.dy.pipIrrStatistics.card.qo.TotalRechargeQO; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -39,7 +41,7 @@ */ @GetMapping(path = "/getRegisterVcClients") @SsoAop() - public BaseResponse<QueryResultVo<List<VoClientRegisterVC>>> getRegisterVcClients(@Valid CommonQO qo, BindingResult bindingResult) { + public BaseResponse<QueryResultVo<List<VoClientStatistics>>> getRegisterVcClients(@Valid CommonQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } @@ -52,4 +54,81 @@ } } + /** + * 鎸囧畾鏃堕棿娈靛唴娉ㄥ唽鎬绘暟閲� + * @param qo + * @param bindingResult + * @return + */ + @GetMapping(path = "/getRegisterCount") + @SsoAop() + public BaseResponse<Boolean> getRegisterCount(@Valid StartStopDateQO qo, BindingResult bindingResult) { + if(bindingResult != null && bindingResult.hasErrors()){ + return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + try { + return BaseResponseUtils.buildSuccess(virtualCardSv.getRegisterCount(qo)); + } catch (Exception e) { + log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e); + return BaseResponseUtils.buildException(e.getMessage()) ; + } + } + + /** + * 鎸囧畾鏃堕棿娈靛厖鍊兼�绘暟閲� + * @param qo + * @param bindingResult + * @return + */ + @GetMapping(path = "/getRechargeCount") + @SsoAop() + public BaseResponse<Boolean> getRechargeCount(@Valid StartStopDateQO qo, BindingResult bindingResult) { + if(bindingResult != null && bindingResult.hasErrors()){ + return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + try { + return BaseResponseUtils.buildSuccess(virtualCardSv.getRechargeCount(qo)); + } catch (Exception e) { + log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e); + return BaseResponseUtils.buildException(e.getMessage()) ; + } + } + + /** + * 褰撳墠浣欓鎬婚噺 + * @return + */ + @GetMapping(path = "/getTotalBalance") + @SsoAop() + public BaseResponse<Boolean> getTotalBalance() { + try { + return BaseResponseUtils.buildSuccess(virtualCardSv.getTotalBalance()); + } catch (Exception e) { + log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e); + return BaseResponseUtils.buildException(e.getMessage()) ; + } + } + + /** + * 鎸囧畾鏃堕棿娈靛唴铏氭嫙鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛 + * @param qo + * @param bindingResult + * @return + */ + @GetMapping(path = "/getLargeRechargeClients") + @SsoAop() + public BaseResponse<QueryResultVo<List<VoClientStatistics>>> getLargeRechargeClients(@Valid TotalRechargeQO qo, BindingResult bindingResult) { + if(bindingResult != null && bindingResult.hasErrors()){ + return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + try { + return BaseResponseUtils.buildSuccess(virtualCardSv.getLargeRechargeClients(qo)); + } catch (Exception e) { + log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e); + return BaseResponseUtils.buildException(e.getMessage()) ; + } + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardSv.java index 7718163..0c6f032 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardSv.java @@ -2,8 +2,10 @@ import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.daoSe.SeVcOperateMapper; -import com.dy.pipIrrGlobal.voSt.VoClientRegisterVC; +import com.dy.pipIrrGlobal.voSt.VoClientStatistics; import com.dy.pipIrrStatistics.card.qo.CommonQO; +import com.dy.pipIrrStatistics.card.qo.StartStopDateQO; +import com.dy.pipIrrStatistics.card.qo.TotalRechargeQO; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -32,7 +34,7 @@ * @param qo * @return */ - public QueryResultVo<List<VoClientRegisterVC>> getRegisterVcClients(CommonQO qo) { + public QueryResultVo<List<VoClientStatistics>> getRegisterVcClients(CommonQO qo) { /** * 琛ラ綈璧锋鏃堕棿锛屽鏋滃紑濮嬫椂闂翠负绌猴紝鍒欓粯璁や负褰撳墠鏃ユ湡 */ @@ -55,7 +57,7 @@ // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟 Long itemTotal = Optional.ofNullable(seVcOperateMapper.getRegisterVcClientsCount(params)).orElse(0L); - QueryResultVo<List<VoClientRegisterVC>> rsVo = new QueryResultVo<>() ; + QueryResultVo<List<VoClientStatistics>> rsVo = new QueryResultVo<>() ; rsVo.pageSize = qo.pageSize ; rsVo.pageCurr = qo.pageCurr ; @@ -64,4 +66,107 @@ rsVo.obj = seVcOperateMapper.getRegisterVcClients(params); return rsVo ; } + + /** + * 鎸囧畾鏃堕棿娈靛唴娉ㄥ唽鎬绘暟閲� + * @param qo + * @return + */ + public Long getRegisterCount(StartStopDateQO qo) { + /** + * 琛ラ綈璧锋鏃堕棿锛屽鏋滃紑濮嬫椂闂翠负绌猴紝鍒欓粯璁や负褰撳墠鏃ユ湡 + */ + String timeStart = qo.getTimeStart(); + String timeStop = qo.getTimeStop(); + if(timeStart != null) { + timeStart = timeStart + " 00:00:00"; + }else { + timeStart = LocalDate.now() + " 00:00:00"; + } + if(timeStop != null) { + timeStop = timeStop + " 23:59:59"; + } + qo.setTimeStart(timeStart); + qo.setTimeStop(timeStop); + + // 鐢熸垚鏌ヨ鍙傛暟 + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; + + // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟 + return Optional.ofNullable(seVcOperateMapper.getRegisterCount(params)).orElse(0L); + } + + /** + * 鎸囧畾鏃堕棿娈靛厖鍊兼�绘暟閲� + * @param qo + * @return + */ + public Long getRechargeCount(StartStopDateQO qo) { + /** + * 琛ラ綈璧锋鏃堕棿锛屽鏋滃紑濮嬫椂闂翠负绌猴紝鍒欓粯璁や负褰撳墠鏃ユ湡 + */ + String timeStart = qo.getTimeStart(); + String timeStop = qo.getTimeStop(); + if(timeStart != null) { + timeStart = timeStart + " 00:00:00"; + }else { + timeStart = LocalDate.now() + " 00:00:00"; + } + if(timeStop != null) { + timeStop = timeStop + " 23:59:59"; + } + qo.setTimeStart(timeStart); + qo.setTimeStop(timeStop); + + // 鐢熸垚鏌ヨ鍙傛暟 + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; + + return Optional.ofNullable(seVcOperateMapper.getRechargeCount(params)).orElse(0L); + } + + /** + * 褰撳墠浣欓鎬婚噺 + * @return + */ + public Double getTotalBalance() { + return Optional.ofNullable(seVcOperateMapper.getTotalBalance()).orElse(0.0); + } + + /** + * 鎸囧畾鏃堕棿娈靛唴铏氭嫙鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛 + * @param qo + * @return + */ + public QueryResultVo<List<VoClientStatistics>> getLargeRechargeClients(TotalRechargeQO qo) { + /** + * 琛ラ綈璧锋鏃堕棿锛屽鏋滃紑濮嬫椂闂翠负绌猴紝鍒欓粯璁や负褰撳墠鏃ユ湡 + */ + String timeStart = qo.getTimeStart(); + String timeStop = qo.getTimeStop(); + if(timeStart != null) { + timeStart = timeStart + " 00:00:00"; + }else { + timeStart = LocalDate.now() + " 00:00:00"; + } + if(timeStop != null) { + timeStop = timeStop + " 23:59:59"; + } + qo.setTimeStart(timeStart); + qo.setTimeStop(timeStop); + + // 鐢熸垚鏌ヨ鍙傛暟 + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; + + // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟 + Long itemTotal = Optional.ofNullable(seVcOperateMapper.getLargeRechargeClientsCount(params)).orElse(0L); + + QueryResultVo<List<VoClientStatistics>> rsVo = new QueryResultVo<>() ; + + rsVo.pageSize = qo.pageSize ; + rsVo.pageCurr = qo.pageCurr ; + + rsVo.calculateAndSet(itemTotal, params); + rsVo.obj = seVcOperateMapper.getLargeRechargeClients(params); + return rsVo ; + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/StartStopDateQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/StartStopDateQO.java new file mode 100644 index 0000000..0c4211c --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/StartStopDateQO.java @@ -0,0 +1,30 @@ +package com.dy.pipIrrStatistics.card.qo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author ZhuBaoMin + * @date 2024-08-12 15:52 + * @LastEditTime 2024-08-12 15:52 + * @Description + */ + +@Data +@EqualsAndHashCode(callSuper = false) +public class StartStopDateQO { + /** + * 寮�濮嬫椂闂� + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private String timeStart; + + /** + * 缁撴潫鏃堕棿 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @NotBlank(message = "缁撴潫鏃堕棿涓嶈兘涓虹┖") + private String timeStop; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/TotalRechargeQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/TotalRechargeQO.java new file mode 100644 index 0000000..6859e9e --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/TotalRechargeQO.java @@ -0,0 +1,22 @@ +package com.dy.pipIrrStatistics.card.qo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author ZhuBaoMin + * @date 2024-08-12 16:58 + * @LastEditTime 2024-08-12 16:58 + * @Description 鍏呭�奸噾棰濆悎璁℃煡璇㈠璞� + */ + +@Data +@EqualsAndHashCode(callSuper = false) +public class TotalRechargeQO extends CommonQO { + /** + * 鍏呭�奸噾棰濆悎璁� + */ + @NotNull(message = "鎸囧畾鍏呭�奸噾棰濅笉鑳戒负绌�") + private Double totalRecharge; +} -- Gitblit v1.8.0