From 0e2f3f937e4cb7f6d4c9eb2d5bd379fe7caae175 Mon Sep 17 00:00:00 2001 From: Administrator <zhubaomin> Date: 星期一, 05 二月 2024 16:24:24 +0800 Subject: [PATCH] 2024-02-05 朱宝民 注销、挂失、冲正、解锁共用一个通用查询接口 --- pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoCommonOperate.java | 39 ++++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoOperate.java | 55 +++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java | 37 +++++ pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java | 9 + pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml | 72 +++++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java | 53 +++++++- pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoCancel.java | 34 +++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java | 19 +++ 8 files changed, 301 insertions(+), 17 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java index 9dc5e25..00cb1f0 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java @@ -71,7 +71,7 @@ * @param params * @return */ - List<VoActiveCardNew> getActiveCards(Map<?, ?> params); + List<VoActiveCard> getActiveCards(Map<?, ?> params); /** @@ -89,6 +89,23 @@ List<VoReissueCard> getReissueCards(Map<?, ?> params); /** + * 鏍规嵁鎸囧畾鏉′欢鑾峰彇閫氱敤鎿嶄綔璁板綍鏁伴噺 + * 娉ㄩ攢銆佹寕澶便�佸啿姝c�佽В閿侀�氱敤 + * @param params + * @return + */ + Long getCommonOperationRecordCount(Map<?, ?> params); + + /** + * 鏍规嵁鎸囧畾鏉′欢鑾峰彇閫氱敤鎿嶄綔璁板綍 + * 娉ㄩ攢銆佹寕澶便�佸啿姝c�佽В閿侀�氱敤 + * @param params + * @return + */ + List<VoOperate> getCommonOperations(Map<?, ?> params); + + + /** * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鏀舵嵁鍒楄〃鏁� * @param params * @return diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoOperate.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoOperate.java new file mode 100644 index 0000000..8977940 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoOperate.java @@ -0,0 +1,55 @@ +package com.dy.pipIrrGlobal.voSe; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * @author ZhuBaoMin + * @date 2024-02-05 11:23 + * @LastEditTime 2024-02-05 11:23 + * @Description + */ + +@Data +@Schema(title = "閫氱敤鎿嶄綔璁板綍瑙嗗浘瀵硅薄") +public class VoOperate { + private static final long serialVersionUID = 202402051126001L; + + @Schema(title = "鍐滄埛濮撳悕") + private String clientName; + + @Schema(title = "鍐滄埛缂栧彿") + private String clientNum; + + @Schema(title = "姘村崱缂栧彿") + private String cardNum; + + @Schema(title = "鎿嶄綔浜�") + private String operator; + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @Schema(title = "鎿嶄綔鏃堕棿") + private Date operateDt; + + //娉ㄩ攢鏌ヨ2涓繑鍥炲�� + @Schema(title = "閫�鍥為噾棰�") + private Float refund; + + @Schema(title = "閫�娆炬柟寮忓悕绉�") + private String refundTypeName; + + //鎸傚け1涓繑鍥炲�� + @Schema(title = "鍗$墖浣欓鍙婂啿姝e悗浣欓") + private Double money; + + //鍐叉2涓繑鍥炲�硷紝鍐叉鍚庝綑棰濅笌鎸傚け鍏辩敤 + @Schema(title = "鍐叉鍓嶄綑棰�") + private Double systemBalance; + + //瑙i攣1涓繑鍥炲�硷紝涓庢寕澶卞叡鐢� +} diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml index ce7af1c..3114482 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml @@ -387,7 +387,7 @@ </select> <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇寮�鍗¤褰�--> - <select id="getActiveCards" resultType="com.dy.pipIrrGlobal.voSe.VoActiveCardNew"> + <select id="getActiveCards" resultType="com.dy.pipIrrGlobal.voSe.VoActiveCard"> SELECT CAST(ope.id AS char) AS id , cli.name AS clientName, @@ -491,6 +491,76 @@ </trim> </select> + <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇閫氱敤鎿嶄綔璁板綍鏁伴噺--> + <select id="getCommonOperationRecordCount" parameterType="java.util.Map" resultType="java.lang.Long"> + select + COUNT(*) AS recordCount + FROM se_card_operate ope + INNER JOIN se_client cli ON ope.client_id = cli.id + INNER JOIN se_client_card card ON ope.card_id = card.id + INNER JOIN ba_user us ON ope.operator = us.id + <where> + <if test = "operateType != null and operateType > 0"> + AND ope.operate_type = ${operateType} + </if> + + <if test = "clientName != null and clientName !=''"> + AND cli.name like CONCAT('%',#{clientName},'%') + </if> + + <if test = "cardNum != null and cardNum !=''"> + AND card.cardNum like CONCAT('%',#{cardNum},'%') + </if> + + <if test = "timeStart != null and timeStop != null"> + AND ope.operate_dt BETWEEN #{timeStart} AND #{timeStop} + </if> + </where> + </select> + + <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇閫氱敤鎿嶄綔璁板綍--> + <select id="getCommonOperations" resultType="com.dy.pipIrrGlobal.voSe.VoOperate"> + SELECT + cli.name AS clientName, + cli.clientNum, + CAST(card.cardNum AS char) AS cardNum, + us.name AS operator, + ope.operate_dt AS operateDt, + IFNULL(ope.trade_amount,0) AS refund, + (CASE + WHEN ope.payment_id = 1 THEN "鐜伴噾" + END) AS refundTypeName, + card.money, + IFNULL(ope.system_balance,0) AS systemBalance + FROM se_card_operate ope + INNER JOIN se_client cli ON ope.client_id = cli.id + INNER JOIN se_client_card card ON ope.card_id = card.id + INNER JOIN ba_user us ON ope.operator = us.id + <where> + <if test = "operateType != null and operateType > 0"> + AND ope.operate_type = ${operateType} + </if> + + <if test = "clientName != null and clientName !=''"> + AND cli.name like CONCAT('%',#{clientName},'%') + </if> + + <if test = "cardNum != null and cardNum !=''"> + AND card.cardNum like CONCAT('%',#{cardNum},'%') + </if> + + <if test = "timeStart != null and timeStop != null"> + AND ope.operate_dt BETWEEN #{timeStart} AND #{timeStop} + </if> + </where> + ORDER BY ope.operate_dt DESC + <trim prefix="limit " > + <if test="start != null and count != null"> + #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} + </if> + </trim> + </select> + <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鏀舵嵁鍒楄〃鏁�--> <select id="getReceiptsRecordCount" parameterType="java.util.Map" resultType="java.lang.Long"> SELECT diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java index 5a55ad5..5978104 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java @@ -10,10 +10,7 @@ import com.dy.pipIrrGlobal.pojoSe.SeClientCard; import com.dy.pipIrrGlobal.util.AmountToChinese; import com.dy.pipIrrGlobal.util.Constant; -import com.dy.pipIrrGlobal.voSe.VoActiveCard; -import com.dy.pipIrrGlobal.voSe.VoActiveCardNew; -import com.dy.pipIrrGlobal.voSe.VoRecharge; -import com.dy.pipIrrGlobal.voSe.VoReissueCard; +import com.dy.pipIrrGlobal.voSe.*; import com.dy.pipIrrSell.cardOperate.converter.RechargeDtoMapper; import com.dy.pipIrrSell.cardOperate.dto.*; import com.dy.pipIrrSell.cardOperate.enums.OperateTypeENUM; @@ -484,6 +481,7 @@ seCardOperate.setClientId(clientId); seCardOperate.setMoney(money); seCardOperate.setTradeAmount(-refund); + seCardOperate.setPaymentId(1L); seCardOperate.setOperateType(OperateTypeENUM.LOSS.getCode()); seCardOperate.setRemarks(remarks); seCardOperate.setOperator(operator); @@ -794,13 +792,15 @@ public BaseResponse<QueryResultVo<List<VoRecharge>>> get(QoRecharge vo){ try { QueryResultVo<List<VoRecharge>> res = cardOperateSv.getRecharges(vo); + if(res.itemTotal == 0) { + return BaseResponseUtils.buildFail(SellResultCode.No_RECHARGES.getMessage()); + } return BaseResponseUtils.buildSuccess(res); } catch (Exception e) { log.error("鑾峰彇鍏呭�艰褰曞紓甯�", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } - /** * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗鏄庣粏 @@ -845,9 +845,9 @@ }) @GetMapping(path = "/getActiveCards") @SsoAop() - public BaseResponse<QueryResultVo<List<VoActiveCardNew>>> getActiveCards(QoActiveCard vo){ + public BaseResponse<QueryResultVo<List<VoActiveCard>>> getActiveCards(QoActiveCard vo){ try { - QueryResultVo<List<VoActiveCardNew>> res = cardOperateSv.getActiveCards(vo); + QueryResultVo<List<VoActiveCard>> res = cardOperateSv.getActiveCards(vo); if(res.itemTotal == 0) { return BaseResponseUtils.buildFail(SellResultCode.No_ActiveCards.getMessage()); } @@ -857,8 +857,6 @@ return BaseResponseUtils.buildException(e.getMessage()) ; } } - - /** * 鏍规嵁鎸囧畾鏉′欢鑾峰彇琛ュ崱璁板綍 @@ -890,6 +888,43 @@ } /** + * 鏍规嵁鎸囧畾鏉′欢鑾峰彇閫氱敤鎿嶄綔璁板綍 + * 娉ㄩ攢銆佹寕澶便�佸啿姝c�佽В閿侀�氱敤 + * 娉ㄩ攢-3锛屾寕澶�-6锛屽啿姝�-7锛岃В閿�-8 + * @param vo + * @return + */ + @Operation(summary = "鑾峰彇閫氱敤鎿嶄綔璁板綍", description = "杩斿洖閫氱敤鎿嶄綔璁板綍") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "杩斿洖涓�椤靛紑鍗℃暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = VoActiveCard.class))} + ) + }) + @GetMapping(path = "/getOptions") + @SsoAop() + public BaseResponse<QueryResultVo<List<VoOperate>>> getCommonOperations(QoCommonOperate vo){ + // 楠岃瘉鎿嶄綔绫诲瀷鏄惁姝g‘ + Integer operateType = Optional.ofNullable(vo.getOperateType()).orElse(0); + if(operateType != 3 && operateType != 6 && operateType != 7 && operateType != 8) { + return BaseResponseUtils.buildFail(SellResultCode.PARAMS_ERROR.getMessage()); + } + + try { + QueryResultVo<List<VoOperate>> res = cardOperateSv.getCommonOperations(vo); + if(res.itemTotal == 0) { + return BaseResponseUtils.buildFail(SellResultCode.No_CANCELS.getMessage()); + } + return BaseResponseUtils.buildSuccess(res); + } catch (Exception e) { + log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e); + return BaseResponseUtils.buildException(e.getMessage()) ; + } + } + + /** * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鏀舵嵁鍒楄〃 * @param vo * @return diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java index 081c671..49ddfe9 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java @@ -231,7 +231,6 @@ return rsVo ; } - /** * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗璁板綍 * @param vo @@ -291,7 +290,7 @@ * @param queryVo * @return */ - public QueryResultVo<List<VoActiveCardNew>> getActiveCards(QoActiveCard queryVo) { + public QueryResultVo<List<VoActiveCard>> getActiveCards(QoActiveCard queryVo) { //瀹屽杽鏌ヨ鍏呭�艰褰曠殑璧锋鏃堕棿 String activeTimeStart = queryVo.activeTimeStart; String activeTimeStop = queryVo.activeTimeStop; @@ -308,7 +307,7 @@ Long itemTotal = seCardOperateMapper.getActiveCardRecordCount(params); - QueryResultVo<List<VoActiveCardNew>> rsVo = new QueryResultVo<>() ; + QueryResultVo<List<VoActiveCard>> rsVo = new QueryResultVo<>() ; rsVo.pageSize = queryVo.pageSize ; rsVo.pageCurr = queryVo.pageCurr ; @@ -351,6 +350,38 @@ } /** + * 鏍规嵁鎸囧畾鏉′欢鑾峰彇IC鍗℃敞閿�璁板綍 + * @param queryVo + * @return + */ + public QueryResultVo<List<VoOperate>> getCommonOperations(QoCommonOperate queryVo) { + //瀹屽杽鏌ヨ鍏呭�艰褰曠殑璧锋鏃堕棿 + String timeStart = queryVo.getTimeStart(); + String timeStop = queryVo.getTimeStop(); + if(timeStart != null) { + timeStart = timeStart + " 00:00:00"; + queryVo.setTimeStart(timeStart); + } + if(timeStop != null) { + timeStop = timeStop + " 23:59:59"; + queryVo.setTimeStop(timeStop); + } + + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); + + Long itemTotal = Optional.ofNullable(seCardOperateMapper.getCommonOperationRecordCount(params)).orElse(0L); + + QueryResultVo<List<VoOperate>> rsVo = new QueryResultVo<>() ; + + rsVo.pageSize = queryVo.pageSize ; + rsVo.pageCurr = queryVo.pageCurr ; + + rsVo.calculateAndSet(itemTotal, params); + rsVo.obj = seCardOperateMapper.getCommonOperations(params); + return rsVo ; + } + + /** * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鏀舵嵁鍒楄〃 * @param queryVo * @return diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoCancel.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoCancel.java new file mode 100644 index 0000000..a216fcc --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoCancel.java @@ -0,0 +1,34 @@ +package com.dy.pipIrrSell.cardOperate.qo; + +import com.dy.common.webUtil.QueryConditionVo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +/** + * @author ZhuBaoMin + * @date 2024-02-05 9:29 + * @LastEditTime 2024-02-05 9:29 + * @Description + */ + +@Data +@EqualsAndHashCode(callSuper = false) +@ToString(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Schema(name = "IC鍗℃敞閿�璁板綍鏌ヨ鏉′欢") +public class QoCancel extends QueryConditionVo { + @Schema(description = "鍐滄埛濮撳悕") + public String clientName; + + @Schema(description = "姘村崱缂栧彿") + public String cardNum; + + + @Schema(description = "娉ㄩ攢鏃堕棿_寮�濮�") + public String timeStart; + + @Schema(description = "娉ㄩ攢鏃堕棿_缁撴潫") + public String timeStop; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoCommonOperate.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoCommonOperate.java new file mode 100644 index 0000000..c47a840 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoCommonOperate.java @@ -0,0 +1,39 @@ +package com.dy.pipIrrSell.cardOperate.qo; + +import com.dy.common.webUtil.QueryConditionVo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +/** + * @author ZhuBaoMin + * @date 2024-02-05 11:00 + * @LastEditTime 2024-02-05 11:00 + * @Description + */ + +@Data +@EqualsAndHashCode(callSuper = false) +@ToString(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Schema(name = "IC鍗℃寕澶辫褰曟煡璇㈡潯浠�") +public class QoCommonOperate extends QueryConditionVo { + /** + * 娉ㄩ攢-3锛屾寕澶�-6锛屽啿姝�-7锛岃В閿�-8 + */ + @Schema(description = "鎿嶄綔绫诲瀷") + public Integer operateType; + + @Schema(description = "鍐滄埛濮撳悕") + public String clientName; + + @Schema(description = "姘村崱缂栧彿") + public Long cardNum; + + @Schema(description = "鎸傚け鏃堕棿_寮�濮�") + public String timeStart; + + @Schema(description = "鎸傚け鏃堕棿_缁撴潫") + public String timeStop; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java index 5820bee..a0b2d7c 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java @@ -25,10 +25,13 @@ REPLACE_FAIL_WRITE_CLIENT_CARD_ERROR(10007, "琛ュ崱澶辫触-鍐滄埛鍗′慨鏀瑰紓甯�"), REPLACE_FAIL_WRITE_RECHARGE_ERROR(10008, "琛ュ崱澶辫触-琛ュ崱璁板綍鍐欏叆寮傚父"), No_ActiveCards(10009, "娌℃湁绗﹀悎鏉′欢鐨勫紑鍗℃暟鎹�"), - No_ReissueCards(10010, "娌℃湁绗﹀悎鏉′欢鐨勮ˉ鍗℃暟鎹�"), + No_RECHARGES(10010, "娌℃湁绗﹀悎鏉′欢鐨勫厖鍊兼暟鎹�"), + No_ReissueCards(10011, "娌℃湁绗﹀悎鏉′欢鐨勮ˉ鍗℃暟鎹�"), + No_CANCELS(10010, "娌℃湁绗﹀悎鏉′欢鐨勬敞閿�鏁版嵁"), + PARAMS_ERROR(10010, "鎿嶄綔绫诲瀷鍙傛暟閿欒"), - THE_CARD_NOT_EXIST(10011, "娌℃湁绗﹀悎鏉′欢鐨勬按鍗�"), - THE_CARD_NOT_SUPPORT_THIS_OPERATION(10012, "姘村崱鐘舵�佷笉鏀寔褰撳墠鎿嶄綔"), + THE_CARD_NOT_EXIST(10012, "娌℃湁绗﹀悎鏉′欢鐨勬按鍗�"), + THE_CARD_NOT_SUPPORT_THIS_OPERATION(10013, "姘村崱鐘舵�佷笉鏀寔褰撳墠鎿嶄綔"), /** * 鍏呭�� -- Gitblit v1.8.0