From bc958e6f7341714e40da74722c4f2208f192fe61 Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期一, 21 十月 2024 16:21:50 +0800 Subject: [PATCH] 2024-10-21 朱宝民 虚拟卡销卡接口、获取虚拟卡充值记录接口 --- pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/dto/DtoCancel.java | 28 ++++ pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java | 2 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml | 8 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVirtualCardMapper.java | 15 ++ pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml | 93 +++++++++---- /dev/null | 15 -- pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/qo/QoVcRecharge.java | 20 ++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeVirtualCard.java | 7 + pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/result/WechatResultCode.java | 45 +++--- pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java | 53 +++++++ pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java | 26 +++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoVcRecharge.java | 66 +++++--- pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml | 10 13 files changed, 280 insertions(+), 108 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVirtualCardMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVirtualCardMapper.java index 6d453c3..002de4d 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVirtualCardMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVirtualCardMapper.java @@ -114,4 +114,19 @@ * @param money */ void updateMoney(@Param("id")Long id , @Param("money")Double money); + + /** + * 鏍规嵁鍐滄埛ID鍙婅櫄鎷熷崱ID鑾峰彇姝e父鐘舵�佺殑铏氭嫙鍗″璞★紝閿�鍗′娇鐢� + * @param clientId + * @param vcId + * @return + */ + SeVirtualCard getVcByClientIdAndVcId(@Param("clientId")Long clientId, @Param("vcId")Long vcId); + + /** + * 娉ㄩ攢铏氭嫙鍗� + * @param vcId + * @return + */ + Integer cancelVc(@Param("clientId")Long clientId, @Param("vcId")Long vcId); } \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeVirtualCard.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeVirtualCard.java index bb3b69b..8a895fb 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeVirtualCard.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeVirtualCard.java @@ -64,6 +64,13 @@ private Double money; /** + * 姘村崱鐘舵�侊紱1-姝e父锛�2-宸叉敞閿� + */ + @Min(value = 1, message = "姘村崱鐘舵�佷笉鑳藉皬浜�1") + @Max(value = 2, message = "姘村崱鐘舵�佷笉鑳藉ぇ浜�2") + private Byte state; + + /** * 鏈�鍚庢搷浣�;1-寮�鎴凤紝2-鍏呭�硷紝3-娑堣垂锛�4-鐢宠閫�娆撅紝5-閫�娆惧鏍� */ @Schema(description = "鎿嶄綔绫诲瀷", requiredMode = Schema.RequiredMode.NOT_REQUIRED) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoVcRecharge.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoVcRecharge.java index 0e9c043..9f955ca 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoVcRecharge.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoVcRecharge.java @@ -1,8 +1,12 @@ package com.dy.pipIrrGlobal.voSe; +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; import com.dy.common.po.BaseEntity; -import io.swagger.v3.oas.annotations.media.Schema; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @@ -13,39 +17,47 @@ * @Description */ @Data +@JsonPropertyOrder({"vcId", "clientId", "rechargeTime", "rechargeAmount", "afterRecharge", "rechargeType"}) public class VoVcRecharge implements BaseEntity { + private static final long serialVersionUID = 202410211420001L; - @Schema(title = "鍏呭�糏D") - private Long id; - - @Schema(description = "铏氭嫙鍗D") + /** + * 铏氭嫙鍗D + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long vcId; - @Schema(description = "鍐滄埛ID") + /** + * 鍐滄埛ID + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) private Long clientId; - - @Schema(description = "閽卞寘浣欓") - private Double money; - - @Schema(description = "鍏呭�煎悗浣欓") - private Double afterRecharge; - - @Schema(description = "璁㈠崟鍙�") - private String orderNumber; - - @Schema(description = "鍏呭�奸噾棰�") - private Integer rechargeAmount; - - @Schema(description = "涓嬪崟鏃堕棿") - private Date orderTime; - - @Schema(description = "鍏呭�煎畬鎴愭椂闂�") + /** + * 鍏呭�煎畬鎴愭椂闂� + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date rechargeTime; - @Schema(description = "璁㈠崟鐘舵��") - private Byte orderState; + /** + * 鍏呭�奸噾棰� + */ + private Integer rechargeAmount; - @Schema(description = "璁㈠崟鐘舵��") - private String orderStateName; + /** + * 鍏呭�煎悗浣欓 + */ + private Double afterRecharge; + + /** + * 鍏呭�肩被鍨� + */ + private String rechargeType; + + /** + * 铏氭嫙鍗$姸鎬侊紝鏆傛椂涓嶇敤锛岀洿鎺ヨ繃婊ゆ帀宸叉敞閿�铏氭嫙鍗� + */ + //private String cardState; + } diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml b/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml index 00d6993..eecab7f 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml @@ -69,9 +69,8 @@ <user name="瓒呯骇绠$悊鍛�" phone="admin" password="admin" supperAdmin="1" /> <payments> <item1 name="鐜伴噾"/> - <item2 name="寰俊鏀粯"/> - <item3 name="鏀粯瀹濇敮浠�"/> - <item4 name="閾惰杞处"/> + <item2 name="POS鏈�"/> + <item3 name="閾惰杞处"/> </payments> <settings> <item1 item_name="lng" item_value="101.87345" remarks="缁忓害"/> @@ -118,9 +117,8 @@ <user name="瓒呯骇绠$悊鍛�" phone="admin" password="admin" supperAdmin="1" /> <payments> <item1 name="鐜伴噾"/> - <item2 name="寰俊鏀粯"/> - <item3 name="鏀粯瀹濇敮浠�"/> - <item4 name="閾惰杞处"/> + <item2 name="POS鏈�"/> + <item3 name="閾惰杞处"/> </payments> <settings> <item1 item_name="lng" item_value="101.87345" remarks="缁忓害"/> diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml index fefa9d6..e1d1b20 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml @@ -411,7 +411,7 @@ <!--鏍规嵁鍐滄埛缂栧彿鑾峰彇5绾ц鏀垮尯鍒掍唬鐮�--> <select id="getAreaCodeByNum" resultType="java.lang.Long"> - SELECT districtNum FROM se_client WHERE clientNum = ${clientNum} LIMIT 0,1 + SELECT districtNum FROM se_client WHERE clientNum = #{clientNum} LIMIT 0,1 </select> <!--鏍规嵁鍐滄埛缂栧彿鑾峰彇5绾ц鏀垮尯鍒掍覆areaCode锛岃ˉ鍗¤繃绋嬩腑寮�鏂板崱浣跨敤--> @@ -421,7 +421,7 @@ <!--鏍规嵁鍐滄埛缂栧彿鑾峰彇鍐滄埛ID--> <select id="getClientIdByNum" resultType="java.lang.Long"> - SELECT id FROM se_client WHERE clientNum = ${clientNum} LIMIT 0,1 + SELECT id FROM se_client WHERE clientNum = #{clientNum} LIMIT 0,1 </select> <!--鏍规嵁鐢佃瘽鍙风爜鑾峰彇鍐滄埛ID--> @@ -434,14 +434,14 @@ update se_client set deleted = 1 <where> <if test = "id != null and id > 0"> - AND id = ${id} + AND id = #{id} </if> </where> </update> <!--鏍规嵁涓婚敭鑾峰彇鏉慖D--> <select id="getVillageIdById" parameterType="java.lang.Long" resultType="java.lang.Long"> - SELECT villageId FROM se_client WHERE id = ${id} + SELECT villageId FROM se_client WHERE id = #{id} </select> <!--鑾峰彇铏氭嫙鍗″彿鏈�澶у��--> diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml index cdc44c2..734119c 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml @@ -8,6 +8,7 @@ <result column="vc_num" jdbcType="BIGINT" property="vcNum" /> <result column="client_id" jdbcType="BIGINT" property="clientId" /> <result column="money" jdbcType="FLOAT" property="money" /> + <result column="state" jdbcType="TINYINT" property="state" /> <result column="last_operate" jdbcType="TINYINT" property="lastOperate" /> <result column="last_operate_time" jdbcType="TIMESTAMP" property="lastOperateTime" /> <result column="in_use" jdbcType="TINYINT" property="inUse" /> @@ -16,7 +17,7 @@ </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> - id, vc_num, client_id, money, last_operate, last_operate_time, in_use, intake_id, create_time + id, vc_num, client_id, money, state, last_operate, last_operate_time, in_use, intake_id, create_time </sql> <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> <!--@mbg.generated--> @@ -34,10 +35,10 @@ <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> <!--@mbg.generated--> insert into se_virtual_card (id, vc_num, client_id, - money, last_operate, last_operate_time, + money, state, last_operate, last_operate_time, in_use, intake_id, create_time) values (#{id,jdbcType=BIGINT}, #{vcNum,jdbcType=BIGINT}, #{clientId,jdbcType=BIGINT}, - #{money,jdbcType=FLOAT}, #{lastOperate,jdbcType=TINYINT}, #{lastOperateTime,jdbcType=TIMESTAMP}, + #{money,jdbcType=FLOAT}, #{state,jdbcType=TINYINT}, #{lastOperate,jdbcType=TINYINT}, #{lastOperateTime,jdbcType=TIMESTAMP}, #{inUse,jdbcType=TINYINT}, #{intakeId,jdbcType=BIGINT},#{createTime,jdbcType=TIMESTAMP}) </insert> <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> @@ -55,6 +56,9 @@ </if> <if test="money != null"> money, + </if> + <if test="state != null"> + state, </if> <if test="lastOperate != null"> last_operate, @@ -84,6 +88,9 @@ </if> <if test="money != null"> #{money,jdbcType=FLOAT}, + </if> + <if test="state != null"> + #{state,jdbcType=TINYINT}, </if> <if test="lastOperate != null"> #{lastOperate,jdbcType=TINYINT}, @@ -115,6 +122,9 @@ <if test="money != null"> money = #{money,jdbcType=FLOAT}, </if> + <if test="state != null"> + state = #{state,jdbcType=TINYINT}, + </if> <if test="lastOperate != null"> last_operate = #{lastOperate,jdbcType=TINYINT}, </if> @@ -139,6 +149,7 @@ set vc_num = #{vcNum,jdbcType=BIGINT}, client_id = #{clientId,jdbcType=BIGINT}, money = #{money,jdbcType=FLOAT}, + state = #{state,jdbcType=TINYINT}, last_operate = #{lastOperate,jdbcType=TINYINT}, last_operate_time = #{lastOperateTime,jdbcType=TIMESTAMP}, in_use = #{inUse,jdbcType=TINYINT}, @@ -162,6 +173,7 @@ SELECT COUNT(*) AS recordCount FROM se_virtual_card <where> + AND state = 1 <if test = "clientId != null and clientId > 0"> AND client_id = #{clientId} </if> @@ -185,6 +197,7 @@ END) AS isAlarmValue FROM se_virtual_card <where> + AND state = 1 <if test = "clientId != null"> AND client_id = #{clientId} </if> @@ -204,19 +217,19 @@ WHEN in_use = 1 THEN '浣跨敤涓�' END) AS inUseName FROM se_virtual_card - WHERE id = #{vcId} + WHERE state = 1 AND id = #{vcId} </select> <!--鏍规嵁铏氭嫙鍗$紪鍙疯幏鍙栬櫄鎷熷崱--> <select id="getVcCardByNum" resultType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> select <include refid="Base_Column_List" /> - FROM se_virtual_card WHERE vc_num = #{vcNum} + FROM se_virtual_card WHERE state = 1 AND vc_num = #{vcNum} </select> <!--鏍规嵁铏氭嫙鍗$紪鍙疯幏鍙栬櫄鎷熷崱ID--> <select id="getVcIdByNum" resultType="java.lang.Long"> - SELECT id FROM se_virtual_card WHERE vc_num = #{vcNum} + SELECT id FROM se_virtual_card WHERE state = 1 AND vc_num = #{vcNum} </select> <!--鏍规嵁铏氭嫙鍗$紪鍙疯幏鍙栬櫄鎷熷崱ID--> @@ -226,7 +239,7 @@ cli.name AS clientName FROM se_virtual_card card INNER JOIN se_client cli ON card.client_id = cli.id - WHERE card.vc_num = #{vcNum} + WHERE card.state = 1 AND card.vc_num = #{vcNum} </select> <!-- 鏍规嵁姘村崱缂栧彿鑾峰彇铏氭嫙姘村崱 --> @@ -235,38 +248,41 @@ id, money FROM se_virtual_card - WHERE vc_num = #{cardNum} + WHERE state = 1 AND vc_num = #{cardNum} </select> <!--鏍规嵁琛屾斂鍖哄垝涓叉ā绯婃煡璇㈣櫄鎷熷崱缂栧彿--> <select id="getVcCardNumOfMax" resultType="java.lang.String"> SELECT vc_num FROM se_virtual_card - WHERE vc_num LIKE CONCAT('%',#{areaCode},'%') + WHERE state = 1 AND vc_num LIKE CONCAT('%',#{areaCode},'%') ORDER BY vc_num desc LIMIT 0,1 </select> - <!--鑾峰彇铏氭嫙鍗″厖鍊艰褰�--> + <!--鑾峰彇铏氭嫙鍗″厖鍊艰褰曪紝涓嶅寘鎷凡宸叉敞閿�鍗$殑鍏呭�艰褰�--> <select id="getVcRechargeRecords" resultType="com.dy.pipIrrGlobal.voSe.VoVcRecharge" > SELECT - CAST(id AS char) AS id, - CAST(vc_id AS char) AS vcId, - CAST(client_id AS char) AS clientId, - money, - after_recharge AS afterRecharge, - order_number AS orderNumber, - recharge_amount AS rechargeAmount, - order_time AS orderTime, - recharge_time AS rechargeTime, - order_state AS orderState, - (CASE - WHEN order_state = 1 THEN '鏈敮浠�' - WHEN order_state = 2 THEN '宸叉敮浠�' - END) AS orderStateName - FROM se_vc_recharge - where order_state = 2 - order by recharge_time DESC + rec.vc_id AS vcId, + rec.client_id AS clientId, + rec.recharge_time AS rechargeTime, + rec.recharge_amount AS rechargeAmount, + rec.after_recharge AS afterRecharge, + '寰俊鏀粯' AS rechargeType + <!-- CASE--> + <!-- WHEN card.state = 1 THEN '姝e父閿�铏氭嫙鍗�'--> + <!-- WHEN card.state = 2 THEN '宸叉敞閿�铏氭嫙鍗�'--> + <!-- END AS cardState,--> + FROM se_vc_recharge rec + INNER JOIN se_virtual_card card ON card.id = rec.vc_id + <where> + AND card.state = 1 + AND rec.order_state = 2 + <if test = "vcId != null and vcId > 0"> + AND rec.vc_id = #{vcId} + </if> + </where> + order by rec.recharge_time DESC <if test="start != null and count != null"> LIMIT #{start}, #{count} </if> @@ -275,7 +291,26 @@ <select id="getRechargeRecordCount" resultType="java.lang.Long"> SELECT COUNT(*) - FROM se_vc_recharge - where order_state = 2 + FROM se_vc_recharge rec + INNER JOIN se_virtual_card card ON card.id = rec.vc_id + <where> + AND card.state = 1 + AND rec.order_state = 2 + <if test = "vcId != null and vcId > 0"> + AND rec.vc_id = #{vcId} + </if> + </where> </select> + + <!--鏍规嵁鍐滄埛ID鍙婅櫄鎷熷崱ID鑾峰彇姝e父鐘舵�佺殑铏氭嫙鍗″璞★紝閿�鍗′娇鐢�--> + <select id="getVcByClientIdAndVcId" resultType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> + SELECT * FROM se_virtual_card + WHERE state = 1 AND client_id = #{clientId} AND id = #{vcId} + </select> + + <!--娉ㄩ攢铏氭嫙鍗�--> + <update id="cancelVc"> + UPDATE se_virtual_card SET state = 2, last_operate = 4 , last_operate_time = NOW() + WHERE id = #{vcId} AND client_id = #{clientId} + </update> </mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java index 974622e..d098d1f 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java @@ -775,7 +775,7 @@ } /** - * 寮哄埗鍥犳鏈叧闃�璁板綍锛氫负鎸囧畾锛堥榾鎺у櫒鍦板潃銆佹按鍗$紪鍙枫�佹棤鍏抽榾璁板綍锛夊紑鍏抽榾鏈�鏂拌褰曟坊鍔犲叧闃�鏃堕棿锛屼娇涔嬩笉鍦ㄦ湭鍏抽榾璁板綍涓樉绀� + * 寮哄埗闅愯棌鏈叧闃�璁板綍锛氫负鎸囧畾锛堥榾鎺у櫒鍦板潃銆佹按鍗$紪鍙枫�佹棤鍏抽榾璁板綍锛夊紑鍏抽榾鏈�鏂拌褰曟坊鍔犲叧闃�鏃堕棿锛屼娇涔嬩笉鍦ㄦ湭鍏抽榾璁板綍涓樉绀� * @param po * @param bindingResult * @return diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/result/WechatResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/result/WechatResultCode.java index 4b8b279..935c64d 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/result/WechatResultCode.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/result/WechatResultCode.java @@ -37,32 +37,35 @@ /** * 寰俊鐢ㄦ埛 */ - PHONE_NUMBER_CANNOT_BE_NULL(20001, "鎵嬫満鍙蜂笉鑳戒负绌�"), - SECURITY_CODE_SEND_FAIL(20001, "楠岃瘉鐮佸彂閫佸け璐�"), - VERIFY_PARAMS_INCOMPLETE(20001, "楠岃瘉鍙傛暟涓嶅畬鏁�"), - CODE_VERIFY_FAIL(20001, "楠岃瘉鐮佹牎楠屽け璐�"), + PHONE_NUMBER_CANNOT_BE_NULL(30001, "鎵嬫満鍙蜂笉鑳戒负绌�"), + SECURITY_CODE_SEND_FAIL(30002, "楠岃瘉鐮佸彂閫佸け璐�"), + VERIFY_PARAMS_INCOMPLETE(30003, "楠岃瘉鍙傛暟涓嶅畬鏁�"), + CODE_VERIFY_FAIL(30004, "楠岃瘉鐮佹牎楠屽け璐�"), - NO_SECURITY_CODE_FOR_PHONE(20002, "璇ユ墜鏈哄彿鏈彂閫侀獙璇佺爜"), - SECURITY_CODE_ERROR(20003, "楠岃瘉鐮侀敊璇�"), - VALIDATION_TIMEOUT(20004, "楠岃瘉瓒呮椂"), - PHONE_NUMBER_IS_ERROR(20004, "鎵嬫満鍙烽敊璇紝闈炴敞鍐屽啘鎴�"), - INVALID_CODE(20004, "鏃犳晥鐨勪复鏃剁櫥褰曞嚟璇�"), - LOGIN_FAIL(20004, "鐧诲綍澶辫触"), + NO_SECURITY_CODE_FOR_PHONE(30005, "璇ユ墜鏈哄彿鏈彂閫侀獙璇佺爜"), + SECURITY_CODE_ERROR(30006, "楠岃瘉鐮侀敊璇�"), + VALIDATION_TIMEOUT(30007, "楠岃瘉瓒呮椂"), + PHONE_NUMBER_IS_ERROR(30008, "鎵嬫満鍙烽敊璇紝闈炴敞鍐屽啘鎴�"), + INVALID_CODE(30009, "鏃犳晥鐨勪复鏃剁櫥褰曞嚟璇�"), + LOGIN_FAIL(30010, "鐧诲綍澶辫触"), /** * 铏氭嫙鍗� */ - AREA_CODE_MISTAKE(10001, "璇ュ啘鎴疯鏀垮尯鍒掑紓甯�"), - ABNORMAL(10001, "閫�娆惧紓甯�"), - PROCESSING(10001, "閫�娆惧鐞嗕腑"), - VC_OPEN_ACCOUNT_FAIL(90002, "铏氭嫙鍗¤处鎴锋敞鍐屽け璐�"), - CARD_NUMBER_OVERRUN(10002, "姘村崱缂栧彿宸叉弧"), - VIRTUAL_CARD_NOT_EXIST(90006, "铏氭嫙鍗¤处鎴蜂笉瀛樺湪"), - RECHARGE_NOT_EXIST(90006, "鍏呭�艰褰曚笉瀛樺湪"), - RECHARGE_FAIL(90006, "鍏呭�煎け璐�"), - RECHARGE_ADD_FAIL(10001, "鍏呭�艰褰曟坊鍔犲け璐�"), - NO_ACCOUNT(40001, "鎮ㄦ寚瀹氱殑铏氭嫙鍗℃湭娉ㄥ唽"), - VIRTUAL_CARD_CLIENT_NOT_EXIST(40001, "铏氭嫙鍗℃墍灞炲啘鎴蜂笉瀛樺湪"), + AREA_CODE_MISTAKE(40001, "璇ュ啘鎴疯鏀垮尯鍒掑紓甯�"), + ABNORMAL(40002, "閫�娆惧紓甯�"), + PROCESSING(40003, "閫�娆惧鐞嗕腑"), + VC_OPEN_ACCOUNT_FAIL(40004, "铏氭嫙鍗¤处鎴锋敞鍐屽け璐�"), + NO_VC_FIT_THE_BILL(40004, "娌℃湁绗﹀悎鏉′欢鐨勮櫄鎷熷崱"), + VC_CANCEL_FAIL(40005, "铏氭嫙鍗℃敞閿�澶辫触"), + + CARD_NUMBER_OVERRUN(40006, "姘村崱缂栧彿宸叉弧"), + VIRTUAL_CARD_NOT_EXIST(40007, "铏氭嫙鍗¤处鎴蜂笉瀛樺湪"), + RECHARGE_NOT_EXIST(40008, "鍏呭�艰褰曚笉瀛樺湪"), + RECHARGE_FAIL(40009, "鍏呭�煎け璐�"), + RECHARGE_ADD_FAIL(40010, "鍏呭�艰褰曟坊鍔犲け璐�"), + NO_ACCOUNT(40011, "鎮ㄦ寚瀹氱殑铏氭嫙鍗℃湭娉ㄥ唽"), + VIRTUAL_CARD_CLIENT_NOT_EXIST(40012, "铏氭嫙鍗℃墍灞炲啘鎴蜂笉瀛樺湪"), /** * 浣嶇疆鏀粯 diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java index 3c8baf4..b8dd640 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java @@ -9,9 +9,10 @@ import com.dy.pipIrrGlobal.voSe.VoVirtualCard; import com.dy.pipIrrWechat.result.WechatResultCode; import com.dy.pipIrrWechat.util.PayHelper; +import com.dy.pipIrrWechat.virtualCard.dto.DtoCancel; import com.dy.pipIrrWechat.virtualCard.dto.DtoRegist; -import com.dy.pipIrrWechat.virtualCard.dto.DtoVcRecharge; import com.dy.pipIrrWechat.virtualCard.enums.LastOperateENUM; +import com.dy.pipIrrWechat.virtualCard.qo.QoVcRecharge; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -87,6 +88,7 @@ seVirtualCard.setVcNum(Long.parseLong(vcNum)); seVirtualCard.setClientId(clientId); seVirtualCard.setMoney(0d); + seVirtualCard.setState((byte)1); seVirtualCard.setLastOperate(LastOperateENUM.OPEN_ACCOUNT.getCode()); seVirtualCard.setLastOperateTime(new Date()); seVirtualCard.setInUse((byte) 0); @@ -101,6 +103,49 @@ seVcOperate.setVcId(vcId); seVcOperate.setClientId(clientId); seVcOperate.setOperateType(LastOperateENUM.OPEN_ACCOUNT.getCode()); + seVcOperate.setOperator(clientId); + seVcOperate.setOperateTime(new Date()); + Long vcOperateId = virtualCardSv.insertVcOperate(seVcOperate); + if(vcOperateId == null) { + return BaseResponseUtils.buildErrorMsg(WechatResultCode.VC_OPEN_ACCOUNT_FAIL.getMessage()); + } + + return BaseResponseUtils.buildSuccess(true) ; + } + + /** + * 鏍规嵁铏氭嫙鍗D娉ㄩ攢铏氭嫙鍗� + * @param po + * @param bindingResult + * @return + */ + @PostMapping(path = "cancel") + @Transactional(rollbackFor = Exception.class) + public BaseResponse<Boolean> cancelVC(@RequestBody @Valid DtoCancel po, BindingResult bindingResult) { + if(bindingResult != null && bindingResult.hasErrors()){ + return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + Long clientId = po.getClientId(); + Long vcId = po.getVcId(); + + // 鏍规嵁鍐滄埛ID鍙婅櫄鎷熷崱Id鍒ゆ柇鏄惁瀛樺湪姝e父鐘舵�侊紙鍙敞閿�锛夌殑铏氭嫙鍗� + SeVirtualCard seVirtualCard = virtualCardSv.getVcByClientIdAndVcId(clientId, vcId); + if(seVirtualCard == null) { + return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_VC_FIT_THE_BILL.getMessage()); + } + + // 娉ㄩ攢铏氭嫙鍗� + Integer rec = virtualCardSv.cancelVc(clientId, vcId); + if(rec == null || rec == 0) { + return BaseResponseUtils.buildErrorMsg(WechatResultCode.VC_CANCEL_FAIL.getMessage()); + } + + // 鐢熸垚铏氭嫙鍗℃搷浣滆褰曪紝娉ㄥ唽铏氭嫙鍗℃搷浣滀汉涓哄啘鎴� + SeVcOperate seVcOperate = new SeVcOperate(); + seVcOperate.setVcId(vcId); + seVcOperate.setClientId(clientId); + seVcOperate.setOperateType(LastOperateENUM.CLOSING_ACCOUNT.getCode()); seVcOperate.setOperator(clientId); seVcOperate.setOperateTime(new Date()); Long vcOperateId = virtualCardSv.insertVcOperate(seVcOperate); @@ -271,8 +316,12 @@ * @return */ @GetMapping(path = "/getVcRechargeRecords") - public BaseResponse<QueryResultVo<List<VoVcRecharge>>> getVcRechargeRecords(DtoVcRecharge dtoVcRecharge){ + public BaseResponse<QueryResultVo<List<VoVcRecharge>>> getVcRechargeRecords(QoVcRecharge dtoVcRecharge){ try { + if(dtoVcRecharge.getVcId() == null) { + return BaseResponseUtils.buildErrorMsg("铏氭嫙鍗′笉鑳戒负绌�"); + } + QueryResultVo<List<VoVcRecharge>> res = virtualCardSv.getVcRechargeRecords(dtoVcRecharge); return BaseResponseUtils.buildSuccess(res); } catch (Exception e) { diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java index 334aafa..903bf55 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java @@ -8,11 +8,11 @@ import com.dy.pipIrrGlobal.voSe.VoOrders; import com.dy.pipIrrGlobal.voSe.VoVcRecharge; import com.dy.pipIrrGlobal.voSe.VoVirtualCard; -import com.dy.pipIrrWechat.virtualCard.dto.DtoVcRecharge; +import com.dy.pipIrrWechat.result.WechatResultCode; import com.dy.pipIrrWechat.virtualCard.dto.DtoVirtualCard; import com.dy.pipIrrWechat.virtualCard.enums.LastOperateENUM; import com.dy.pipIrrWechat.virtualCard.enums.OrderStateENUM; -import com.dy.pipIrrWechat.result.WechatResultCode; +import com.dy.pipIrrWechat.virtualCard.qo.QoVcRecharge; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -89,6 +89,26 @@ public Long insertVirtualCard(SeVirtualCard po) { seVirtualCardMapper.insert(po); return po.getId(); + } + + /** + * 鏍规嵁鍐滄埛ID鍙婅櫄鎷熷崱ID鑾峰彇姝e父鐘舵�佺殑铏氭嫙鍗″璞� + * @param clientId + * @param vcId + * @return + */ + public SeVirtualCard getVcByClientIdAndVcId (Long clientId, Long vcId) { + return seVirtualCardMapper.getVcByClientIdAndVcId(clientId, vcId); + } + + /** + * 鏍规嵁铏氭嫙鍗D娉ㄩ攢铏氭嫙鍗� + * @param clientId + * @param vcId + * @return + */ + public Integer cancelVc(Long clientId, Long vcId) { + return seVirtualCardMapper.cancelVc(clientId, vcId); } /** @@ -343,7 +363,7 @@ * @param dtoVcRecharge * @return */ - public QueryResultVo<List<VoVcRecharge>> getVcRechargeRecords(DtoVcRecharge dtoVcRecharge){ + public QueryResultVo<List<VoVcRecharge>> getVcRechargeRecords(QoVcRecharge dtoVcRecharge){ Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(dtoVcRecharge); Long itemTotal = seVirtualCardMapper.getRechargeRecordCount(params); diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/dto/DtoCancel.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/dto/DtoCancel.java new file mode 100644 index 0000000..7be06bb --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/dto/DtoCancel.java @@ -0,0 +1,28 @@ +package com.dy.pipIrrWechat.virtualCard.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author ZhuBaoMin + * @date 2024-10-21 10:43 + * @LastEditTime 2024-10-21 10:43 + * @Description 娉ㄩ攢铏氭嫙鍗″弬鏁板璞� + */ + +@Data +public class DtoCancel { + public static final long serialVersionUID = 202410211044001L; + + /** + * 鍐滄埛ID + */ + @NotNull(message = "鍐滄埛ID涓嶈兘涓虹┖") + private Long clientId; + + /** + * 铏氭嫙鍗D + */ + @NotNull(message = "铏氭嫙鍗D涓嶈兘涓虹┖") + private Long vcId; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/dto/DtoVcRecharge.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/dto/DtoVcRecharge.java deleted file mode 100644 index 5956583..0000000 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/dto/DtoVcRecharge.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dy.pipIrrWechat.virtualCard.dto; - -import com.dy.common.webUtil.QueryConditionVo; -import lombok.Data; - -/** - * @author ZhuBaoMin - * @date 2024-07-11 15:41 - * @LastEditTime 2024-07-11 15:41 - * @Description - */ - -@Data -public class DtoVcRecharge extends QueryConditionVo { -} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/qo/QoVcRecharge.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/qo/QoVcRecharge.java new file mode 100644 index 0000000..755ccde --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/qo/QoVcRecharge.java @@ -0,0 +1,20 @@ +package com.dy.pipIrrWechat.virtualCard.qo; + +import com.dy.common.webUtil.QueryConditionVo; +import lombok.Data; + +/** + * @author ZhuBaoMin + * @date 2024-07-11 15:41 + * @LastEditTime 2024-07-11 15:41 + * @Description 鍏呭�艰褰曟煡璇㈠璞� + */ + +@Data +public class QoVcRecharge extends QueryConditionVo { + + /** + * 铏氭嫙鍗D + */ + private Long vcId; +} -- Gitblit v1.8.0