From 836ec39fdad422b1a148699a4c5fb8c5b4d395f0 Mon Sep 17 00:00:00 2001 From: zuoxiao <lf_zuo@163.com> Date: 星期三, 25 六月 2025 11:04:33 +0800 Subject: [PATCH] feat(card): 添加管理类型卡写卡功能并优化卡片相关逻辑- 在 OperateTypeENUM 中添加 SUPPLEMENT 和 MANAGEMENT_CARD_WRITE 枚举值 - 在 SeManagementCard 中添加 cancelTime 和 state 字段 - 更新相关 mapper 和 XML 文件以支持新增字段 - 修改 CardSv 中的回调处理逻辑,支持管理类型卡写卡 - 优化 CreateManagementCardDto 中识别码的示例值 --- pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagementCard.java | 4 + pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java | 63 ++++++++++++++++++-- pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagementCardMapper.xml | 30 ++++++++- pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/CreateManagementCardDto.java | 3 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoCallBack.java | 2 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/OperateTypeENUM.java | 25 ++++--- 6 files changed, 101 insertions(+), 26 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagementCard.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagementCard.java index 0c86dea..b6372c8 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagementCard.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagementCard.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.writer.ObjectWriterImplToString; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.dy.common.po.BaseEntity; @@ -106,7 +107,8 @@ * 娉ㄩ攢鏃堕棿 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date cancelDt; + @TableField("cancel_time") + private Date cancelTime; /** * 鍗$墖鐘舵��;1-姝e父锛�2-宸叉敞閿�锛�3-宸叉寕澶憋紝4-鏈啓鍗� diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagementCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagementCardMapper.xml index 0e28a72..e3e5445 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagementCardMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagementCardMapper.xml @@ -17,11 +17,13 @@ <result column="domain" jdbcType="VARCHAR" property="domain" /> <result column="open_clost_time" jdbcType="INTEGER" property="openClostTime" /> <result column="remarks" jdbcType="VARCHAR" property="remarks" /> + <result column="cancel_time" jdbcType="TIMESTAMP" property="cancelTime" /> + <result column="state" jdbcType="TINYINT" property="state" /> </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> id, protocol, card_addr, security_code, card_type, create_time, order_no, district_code, - project_no, ip, `domain`, open_clost_time, remarks + project_no, ip, `domain`, open_clost_time, remarks, cancel_time, state </sql> <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> <!--@mbg.generated--> @@ -41,12 +43,12 @@ security_code, card_type, create_time, order_no, district_code, project_no, ip, `domain`, open_clost_time, - remarks) + remarks, cancel_time, state) values (#{id,jdbcType=BIGINT}, #{protocol,jdbcType=VARCHAR}, #{cardAddr,jdbcType=VARCHAR}, #{securityCode,jdbcType=VARCHAR}, #{cardType,jdbcType=TINYINT}, #{createTime,jdbcType=TIMESTAMP}, #{orderNo,jdbcType=VARCHAR}, #{districtCode,jdbcType=VARCHAR}, #{projectNo,jdbcType=INTEGER}, #{ip,jdbcType=VARCHAR}, #{domain,jdbcType=VARCHAR}, #{openClostTime,jdbcType=INTEGER}, - #{remarks,jdbcType=VARCHAR}) + #{remarks,jdbcType=VARCHAR}, #{cancelTime,jdbcType=TIMESTAMP}, #{state,jdbcType=TINYINT}) </insert> <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagementCard"> <!--@mbg.generated--> @@ -91,6 +93,12 @@ <if test="remarks != null"> remarks, </if> + <if test="cancelTime != null"> + cancel_time, + </if> + <if test="state != null"> + state, + </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> @@ -131,6 +139,12 @@ </if> <if test="remarks != null"> #{remarks,jdbcType=VARCHAR}, + </if> + <if test="cancelTime != null"> + #{cancelTime,jdbcType=TIMESTAMP}, + </if> + <if test="state != null"> + #{state,jdbcType=TINYINT}, </if> </trim> </insert> @@ -174,6 +188,12 @@ <if test="remarks != null"> remarks = #{remarks,jdbcType=VARCHAR}, </if> + <if test="cancelTime != null"> + cancel_time = #{cancelTime,jdbcType=TIMESTAMP}, + </if> + <if test="state != null"> + state = #{state,jdbcType=TINYINT}, + </if> </set> where id = #{id,jdbcType=BIGINT} </update> @@ -191,7 +211,9 @@ ip = #{ip,jdbcType=VARCHAR}, `domain` = #{domain,jdbcType=VARCHAR}, open_clost_time = #{openClostTime,jdbcType=INTEGER}, - remarks = #{remarks,jdbcType=VARCHAR} + remarks = #{remarks,jdbcType=VARCHAR}, + cancel_time = #{cancelTime,jdbcType=TIMESTAMP}, + state = #{state,jdbcType=TINYINT} where id = #{id,jdbcType=BIGINT} </update> </mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java index f41c589..31520d5 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java @@ -936,7 +936,7 @@ seCardOperate.setClientId(clientId); seCardOperate.setMoney(po.getBalance()); seCardOperate.setRefundAmount(po.getSupplementMoney()); - seCardOperate.setOperateType(OperateTypeENUM.WRITE_BACK.getCode()); + seCardOperate.setOperateType(OperateTypeENUM.SUPPLEMENT.getCode()); seCardOperate.setRemarks(po.getRemarks()); seCardOperate.setOperator(po.getOperator()); seCardOperate.setOperateDt(operateTime); @@ -975,13 +975,20 @@ Integer operateType = po.getOperateType(); String orderNumber = po.getOrderNumber(); + // 鍏堟鏌ユ槸鍚︿负绠$悊鍗� + if (operateType.equals(OperateTypeENUM.MANAGEMENT_CARD_WRITE.getCode().intValue())) { + // 绠$悊绫诲瀷鍗″啓鍗¢�昏緫 + return handleManagementCardWrite(cardAddr, orderNumber); + } + + // 澶勭悊鍐滄埛鍗¢�昏緫 Long cardId = seClientCardMapper.getCardIdByAddr(cardAddr); if (cardId == null || cardId.equals(0)) { map.put("msg", "鎮ㄦ寚瀹氱殑姘村崱涓嶅瓨鍦�"); return map; } - if (operateType == 1) { + if (operateType.equals(OperateTypeENUM.ACTIVE.getCode().intValue())) { /** * 寮�鍗℃搷浣滄墽琛岄�氱煡 * 1.渚濇嵁璁㈠崟鍙峰皢鏃犳晥鐘舵�佺殑鎿嶄綔璁板綍鏀逛负鏈夋晥 @@ -1003,7 +1010,7 @@ turnRechargeHistoryValidByOrderNumber(orderNumber); updateCard(cardId, orderNumber + "p"); } - } else if (operateType == 2) { + } else if (operateType.equals(OperateTypeENUM.RECHARGE.getCode().intValue())) { /** * 鍏呭�兼搷浣滄墽琛岄�氱煡 * 1. 鎿嶄綔璁板綍鏀逛负鏈夋晥 @@ -1013,7 +1020,7 @@ turnOperateValidByOrderNumber(orderNumber + "p"); turnRechargeHistoryValidByOrderNumber(orderNumber); updateCard(cardId, orderNumber + "p"); - } else if (operateType == 3) { + } else if (operateType.equals(OperateTypeENUM.CANCEL.getCode().intValue())) { /** * 閿�鍗℃搷浣滄墽琛岄�氱煡 * 1. 鎿嶄綔璁板綍鏀逛负鏈夋晥 @@ -1027,7 +1034,7 @@ return map; } - } else if (operateType == 4) { + } else if (operateType.equals(OperateTypeENUM.REISSUE.getCode().intValue())) { /** * 琛ュ崱鎿嶄綔鎵ц閫氱煡 * 1. 鏂版按鍗¤褰曟敼涓烘湁鏁� @@ -1042,7 +1049,7 @@ map.put("msg", "琛ュ崱鍥炶皟澶辫触"); return map; } - } else if (operateType == 5) { + } else if (operateType.equals(OperateTypeENUM.REFUND.getCode().intValue())) { /** * 琛ユ墸鎿嶄綔鎵ц閫氱煡 * 1. 鎿嶄綔璁板綍鏀逛负鏈夋晥 @@ -1054,7 +1061,7 @@ map.put("msg", "琛ユ墸鍥炶皟澶辫触"); return map; } - } else if (operateType == 6) { + } else if (operateType.equals(OperateTypeENUM.SUPPLEMENT.getCode().intValue())) { /** * 杩旇繕鎿嶄綔鎵ц閫氱煡 * 1. 鎿嶄綔璁板綍鏀逛负鏈夋晥 @@ -1073,6 +1080,48 @@ return map; } + /** + * 澶勭悊绠$悊绫诲瀷鍗″啓鍗″洖璋� + * + * @param cardAddr 鍗″湴鍧� + * @param orderNumber 璁㈠崟鍙� + * @return 澶勭悊缁撴灉 + */ + private Map<String, Object> handleManagementCardWrite(String cardAddr, String orderNumber) { + Map<String, Object> map = new HashMap<>(); + map.put("success", false); + map.put("content", null); + + try { + // 鏍规嵁鍗″湴鍧�鍜岃鍗曞彿鏌ユ壘绠$悊鍗� + SeManagementCard managementCard = seManagementCardMapper.selectOne( + com.baomidou.mybatisplus.core.toolkit.Wrappers.<SeManagementCard>lambdaQuery() + .eq(SeManagementCard::getCardAddr, cardAddr) + .eq(SeManagementCard::getOrderNo, orderNumber)); + + if (managementCard == null) { + map.put("msg", "鏈壘鍒板搴旂殑绠$悊鍗¤褰�"); + return map; + } + + // 鏇存柊绠$悊鍗$姸鎬佷负姝e父 + managementCard.setState(ManagementCardStateENUM.NORMAL.getCode()); + + int updateResult = seManagementCardMapper.updateByPrimaryKeySelective(managementCard); + if (updateResult > 0) { + map.put("success", true); + map.put("msg", "绠$悊鍗″啓鍗″畬鎴愶紝鐘舵�佸凡鏇存柊涓烘甯�"); + } else { + map.put("msg", "绠$悊鍗$姸鎬佹洿鏂板け璐�"); + } + } catch (Exception e) { + log.error("澶勭悊绠$悊鍗″啓鍗″洖璋冨紓甯�", e); + map.put("msg", "澶勭悊绠$悊鍗″啓鍗″洖璋冩椂鍙戠敓寮傚父锛�" + e.getMessage()); + } + + return map; + } + // 鏍规嵁璁㈠崟鍙峰皢鎿嶄綔璁板綍鏀逛负鏈夋晥 public Integer turnOperateValidByOrderNumber(String orderNumber) { return seCardOperateMapper.turnOperateValidByOrderNumber(orderNumber); diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/CreateManagementCardDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/CreateManagementCardDto.java index 15a409f..11497e9 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/CreateManagementCardDto.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/CreateManagementCardDto.java @@ -32,7 +32,7 @@ * 璇嗗埆鐮� */ @NotBlank(message = "璇嗗埆鐮佷笉鑳戒负绌�") - @Schema(description = "璇嗗埆鐮�", example = "123456") + @Schema(description = "璇嗗埆鐮�", example = "A0B1C289") private String securityCode; /** @@ -42,7 +42,6 @@ @NotNull(message = "鍗$墖绫诲瀷涓嶈兘涓虹┖") @Schema(description = "鍗$墖绫诲瀷", example = "2", allowableValues = { "2", "3", "4", "5", "6", "7", "8", "9", "10" }) private Byte cardType; - /** * 5绾ц鏀垮尯鍒掔紪鐮� diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoCallBack.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoCallBack.java index 678657f..d11f154 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoCallBack.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoCallBack.java @@ -32,7 +32,7 @@ private String orderNumber; /** - * 鎿嶄綔绫诲瀷锛�1-寮�鍗★紝2-鍏呭�硷紝3-閿�鍗★紝4-琛ュ崱锛�5-琛ユ墸 + * 鎿嶄綔绫诲瀷锛�1-寮�鍗★紝2-鍏呭�硷紝3-閿�鍗★紝4-琛ュ崱锛�5-琛ユ墸锛�6-杩旇繕锛�7-绠$悊绫诲瀷鍗″啓鍗� */ @NotNull(message = "鎿嶄綔绫诲瀷涓嶈兘涓虹┖") private Integer operateType; diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/OperateTypeENUM.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/OperateTypeENUM.java index 059420e..bce3ba5 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/OperateTypeENUM.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/enums/OperateTypeENUM.java @@ -7,22 +7,25 @@ * @author ZhuBaoMin * @date 2025-05-08 11:45 * @LastEditTime 2025-05-08 11:45 - * @Description + * @Description 鎿嶄綔绫诲瀷鏋氫妇 */ @Getter @AllArgsConstructor public enum OperateTypeENUM { - ACTIVE((byte)1, "寮�鍗�"), - RECHARGE((byte)2, "鍏呭��"), - CANCEL((byte)3, "閿�鍗�"), - REISSUE((byte)4, "琛ュ崱"), - REFUND((byte)5, "琛ユ墸"), - LOSS((byte)6, "鎸傚け"), - REVERSAL((byte)7, "鍐叉"), - UNLOCK((byte)8, "瑙i攣"), - CONSUME((byte)9, "娑堣垂"), - WRITE_BACK((byte)10, "鍙嶅啓"); + ACTIVE((byte) 1, "寮�鍗�"), + RECHARGE((byte) 2, "鍏呭��"), + CANCEL((byte) 3, "閿�鍗�"), + REISSUE((byte) 4, "琛ュ崱"), + REFUND((byte) 5, "琛ユ墸"), + SUPPLEMENT((byte) 6, "杩旇繕"), + MANAGEMENT_CARD_WRITE((byte) 7, "绠$悊绫诲瀷鍗″啓鍗�"), + // 淇濈暀鍏朵粬绯荤粺浣跨敤鐨勬灇涓惧�� + LOSS((byte) 8, "鎸傚け"), + UNLOCK((byte) 9, "瑙i攣"), + REVERSAL((byte) 10, "鍐叉"), + CONSUME((byte) 11, "娑堣垂"), + WRITE_BACK((byte) 12, "鍙嶅啓"); private final Byte code; private final String message; -- Gitblit v1.8.0