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