From 5fefff8c747cbf5d526f6108a215bd813ac36034 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期三, 11 六月 2025 13:44:17 +0800 Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV --- pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml | 58 +++++- pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java | 137 ++++++++++++++ pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoUnlock.java | 43 ++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java | 48 ++-- pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml | 19 ++ pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientCtrl.java | 15 + pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java | 80 +++++++- pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java | 12 + pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientSv.java | 16 + pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java | 12 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermCard.java | 74 ++++++++ 11 files changed, 456 insertions(+), 58 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java index 15f798f..0773dfd 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dy.pipIrrGlobal.pojoSe.SeClientCard; -import com.dy.pipIrrGlobal.voSe.VoCardInfo; -import com.dy.pipIrrGlobal.voSe.VoCardInfo1; -import com.dy.pipIrrGlobal.voSe.VoCards; -import com.dy.pipIrrGlobal.voSe.VoCards2; +import com.dy.pipIrrGlobal.voSe.*; import com.dy.pipIrrGlobal.voSt.VoCardUsage; import com.dy.pipIrrGlobal.voWe.VoCards3; import org.apache.ibatis.annotations.Mapper; @@ -264,4 +261,11 @@ * @return */ Integer emptyCardBalance(@Param("orderNumber")String orderNumber); + + /** + * 鍏呭�兼満鐢ㄨ幏鍙栧啘鎴锋按鍗′俊鎭� + * @param cardAddr + * @return + */ + VoTermCard getTermCardInfo(@Param("cardAddr")String cardAddr); } \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java index 6df948a..f552a42 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeManagerCardMapper.java @@ -2,13 +2,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dy.pipIrrGlobal.pojoSe.SeManagerCard; +import com.dy.pipIrrGlobal.voSe.VoTermCard; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * @author ZhuBaoMin - * @date 2024-07-24 10:36 - * @LastEditTime 2024-07-24 10:36 + * @date 2025-06-11 10:34 + * @LastEditTime 2025-06-11 10:34 * @Description */ @@ -32,4 +33,11 @@ * @return */ String getManagerCardNumOfMax(@Param("areaCode") String areaCode); + + /** + * 鍏呭�兼満鐢ㄨ幏鍙栫鐞嗗崱淇℃伅 + * @param cardAddr + * @return + */ + VoTermCard getTermManagerCardInfo(@Param("cardAddr")String cardAddr); } \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java index 932ba30..e22b5e9 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeManagerCard.java @@ -10,18 +10,13 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.*; -import org.hibernate.validator.constraints.Length; - import java.util.Date; /** * @author ZhuBaoMin - * @date 2024-07-24 10:36 - * @LastEditTime 2024-07-24 10:36 - * @Description - */ -/** - * 绠$悊鍛樻按鍗¤〃 + * @date 2025-06-11 10:34 + * @LastEditTime 2025-06-11 10:34 + * @Description 绠$悊鍛樻按鍗¤〃 */ @TableName(value = "se_manager_card", autoResultMap = true) @@ -31,42 +26,51 @@ @NoArgsConstructor @AllArgsConstructor public class SeManagerCard implements BaseEntity { - public static final long serialVersionUID = 202407241040001L; + public static final long serialVersionUID = 202506111039001L; /** - * 涓婚敭 - */ + * 涓婚敭 + */ @JSONField(serializeUsing= ObjectWriterImplToString.class) @TableId(type = IdType.INPUT) private Long id; /** - * 鍗$墖鍦板潃 - */ + * 閫氳鍗忚 + */ + private String protocol; + + /** + * 鍗$墖鍦板潃 + */ @NotBlank(message = "鍗$墖鍦板潃涓嶈兘涓虹┖") private String cardAddr; /** - * 鍗$墖缂栧彿 - */ + * 鍗$墖缂栧彿 + */ @NotBlank(message = "鍗$墖缂栧彿涓嶈兘涓虹┖") private String cardNum; /** - * 鍗$墖绫诲瀷;2-绠$悊绉戯紝4-宸℃鍗★紝5娓呯┖鍗� - */ + * 鍗$墖绫诲瀷;2-绠$悊绉戯紝4-宸℃鍗★紝5娓呯┖鍗� + */ @NotNull(message = "鍗$墖绫诲瀷涓嶈兘涓虹┖") private Byte cardType; /** - * 寮�鍗℃椂闂� - */ + * 寮�鍗℃椂闂� + */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** - * 澶囨敞淇℃伅 - */ - @Length(max = 200) + * 澶囨敞淇℃伅 + */ private String remarks; + + /** + * 璁㈠崟鍙� + */ + private String orderNo; } \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermCard.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermCard.java new file mode 100644 index 0000000..4619578 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTermCard.java @@ -0,0 +1,74 @@ +package com.dy.pipIrrGlobal.voSe; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Data; + +import java.util.Date; + +/** + * @author ZhuBaoMin + * @date 2025-06-11 9:31 + * @LastEditTime 2025-06-11 9:31 + * @Description 鍏呭�兼満鐢ㄦ按鍗¤鍥惧璞� + */ + +@Data +@JsonPropertyOrder({"cardNum", "cardType", "money", "state", "userName", "clientNum", "phone", "address", "lastRechargeTime", "cardAgreement"}) +public class VoTermCard { + private static final long serialVersionUID = 202506110933001L; + + /** + * 姘村崱缂栧彿 + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + private Long cardNum; + + /** + * 姘村崱绫诲瀷锛�1-鍐滄埛鍗★紝锛� + */ + private Integer cardType; + + /** + * 姘村崱浣欓 + */ + private Double money; + + /* + 姘村崱鐘舵��:1-姝e父锛�2-宸叉敞閿�锛�3-宸叉寕澶憋紝4-鏃犳晥鍗$墖 + */ + private Integer state; + + /** + * 鐢ㄦ埛鍚嶇О + */ + private String userName; + + /** + * 鐢ㄦ埛缂栧彿 + */ + private String clientNum; + + /** + * 鎵嬫満鍙风爜 + */ + private String phone; + + /** + * 鍦板潃 + */ + private String address; + + /** + * 鏈�鍚庡厖鍊兼椂闂� + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date lastRechargeTime; + + /** + * 鍗″崗璁� + */ + private String cardAgreement; +} diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml index cd74144..4ec263b 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml @@ -788,4 +788,23 @@ SET money = 0 WHERE id = (SELECT original_card_id FROM se_client_card WHERE id = (SELECT card_id FROM se_card_operate WHERE order_no = #{orderNumber})) </update> + + <!--鍏呭�兼満鐢ㄨ幏鍙栧啘鎴锋按鍗′俊鎭�--> + <select id="getTermCardInfo" resultType="com.dy.pipIrrGlobal.voSe.VoTermCard"> + SELECT + card.cardNum, + 1 AS cardType, + card.money, + card.state, + cli.name AS userName, + cli.clientNum, + cli.phone, + cli.address, + card.rechargeDt AS lastRechargeTime, + card.protocol AS cardAgreement + FROM se_client_card card + INNER JOIN se_client cli ON cli.id = card.clientId + WHERE card.cardAddr = #{cardAddr} + LIMIT 1 + </select> </mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml index dc41740..01a62d3 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeManagerCardMapper.xml @@ -5,15 +5,17 @@ <!--@mbg.generated--> <!--@Table se_manager_card--> <id column="id" jdbcType="BIGINT" property="id" /> + <result column="protocol" jdbcType="VARCHAR" property="protocol" /> <result column="card_addr" jdbcType="VARCHAR" property="cardAddr" /> <result column="card_num" jdbcType="VARCHAR" property="cardNum" /> <result column="card_type" jdbcType="TINYINT" property="cardType" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="remarks" jdbcType="VARCHAR" property="remarks" /> + <result column="order_no" jdbcType="VARCHAR" property="orderNo" /> </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> - id, card_addr, card_num, card_type, create_time, remarks + id, protocol, card_addr, card_num, card_type, create_time, remarks, order_no </sql> <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> <!--@mbg.generated--> @@ -29,12 +31,12 @@ </delete> <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagerCard"> <!--@mbg.generated--> - insert into se_manager_card (id, card_addr, card_num, - card_type, create_time, remarks - ) - values (#{id,jdbcType=BIGINT}, #{cardAddr,jdbcType=VARCHAR}, #{cardNum,jdbcType=VARCHAR}, - #{cardType,jdbcType=TINYINT}, #{createTime,jdbcType=TIMESTAMP}, #{remarks,jdbcType=VARCHAR} - ) + insert into se_manager_card (id, protocol, card_addr, + card_num, card_type, create_time, + remarks, order_no) + values (#{id,jdbcType=BIGINT}, #{protocol,jdbcType=VARCHAR}, #{cardAddr,jdbcType=VARCHAR}, + #{cardNum,jdbcType=VARCHAR}, #{cardType,jdbcType=TINYINT}, #{createTime,jdbcType=TIMESTAMP}, + #{remarks,jdbcType=VARCHAR}, #{orderNo,jdbcType=VARCHAR}) </insert> <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagerCard"> <!--@mbg.generated--> @@ -42,6 +44,9 @@ <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, + </if> + <if test="protocol != null"> + protocol, </if> <if test="cardAddr != null"> card_addr, @@ -58,10 +63,16 @@ <if test="remarks != null"> remarks, </if> + <if test="orderNo != null"> + order_no, + </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=BIGINT}, + </if> + <if test="protocol != null"> + #{protocol,jdbcType=VARCHAR}, </if> <if test="cardAddr != null"> #{cardAddr,jdbcType=VARCHAR}, @@ -78,12 +89,18 @@ <if test="remarks != null"> #{remarks,jdbcType=VARCHAR}, </if> + <if test="orderNo != null"> + #{orderNo,jdbcType=VARCHAR}, + </if> </trim> </insert> <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagerCard"> <!--@mbg.generated--> update se_manager_card <set> + <if test="protocol != null"> + protocol = #{protocol,jdbcType=VARCHAR}, + </if> <if test="cardAddr != null"> card_addr = #{cardAddr,jdbcType=VARCHAR}, </if> @@ -99,17 +116,22 @@ <if test="remarks != null"> remarks = #{remarks,jdbcType=VARCHAR}, </if> + <if test="orderNo != null"> + order_no = #{orderNo,jdbcType=VARCHAR}, + </if> </set> where id = #{id,jdbcType=BIGINT} </update> <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeManagerCard"> <!--@mbg.generated--> update se_manager_card - set card_addr = #{cardAddr,jdbcType=VARCHAR}, + set protocol = #{protocol,jdbcType=VARCHAR}, + card_addr = #{cardAddr,jdbcType=VARCHAR}, card_num = #{cardNum,jdbcType=VARCHAR}, card_type = #{cardType,jdbcType=TINYINT}, create_time = #{createTime,jdbcType=TIMESTAMP}, - remarks = #{remarks,jdbcType=VARCHAR} + remarks = #{remarks,jdbcType=VARCHAR}, + order_no = #{orderNo,jdbcType=VARCHAR} where id = #{id,jdbcType=BIGINT} </update> @@ -121,4 +143,22 @@ ORDER BY card_num desc LIMIT 0,1 </select> + + <!--鍏呭�兼満鐢ㄨ幏鍙栫鐞嗗崱淇℃伅--> + <select id="getTermManagerCardInfo" resultType="com.dy.pipIrrGlobal.voSe.VoTermCard"> + SELECT + card_num AS cardNum, + card_type AS cardType, + NULL AS money, + NULL AS state, + NULL AS userName, + NULL AS clientNum, + NULL AS phone, + NULL AS address, + NULL AS lastRechargeTime, + card.protocol AS cardcardAgreement + FROM se_manager_card card + WHERE card.card_addr = #{cardAddr} + LIMIT 1 + </select> </mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java index 8e56ce4..defb115 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java @@ -3,7 +3,10 @@ import com.dy.common.aop.SsoAop; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.voSe.VoTermActiveCard; +import com.dy.pipIrrGlobal.voSe.VoTermCard; +import com.dy.pipIrrGlobal.voSe.VoTermClient; import com.dy.pipIrrGlobal.voSe.VoTermCommon; import com.dy.pipIrrTerminal.card.dto.*; import jakarta.validation.Valid; @@ -11,11 +14,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Map; import java.util.Objects; @@ -35,6 +36,7 @@ /** * 寮�鍗★紙鍚厖鍊硷級 + * * @param po * @param bindingResult * @return @@ -47,15 +49,16 @@ } Map map_result = cardSv.activeOrReissueTermCard(po); - if(map_result.get("success").equals(false)) { + if (map_result.get("success").equals(false)) { return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); } - return BaseResponseUtils.buildSuccess(map_result.get("content")) ; + return BaseResponseUtils.buildSuccess(map_result.get("content")); } /** * 鍏呭�� + * * @param po * @param bindingResult * @return @@ -68,15 +71,16 @@ } Map map_result = cardSv.addRecharge(po, null); - if(map_result.get("success").equals(false)) { + if (map_result.get("success").equals(false)) { return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); } - return BaseResponseUtils.buildSuccess(map_result.get("content")) ; + return BaseResponseUtils.buildSuccess(map_result.get("content")); } /** * 鎸傚け + * * @param po * @param bindingResult * @return @@ -89,15 +93,38 @@ } Map map_result = cardSv.reportLoss(po); - if(map_result.get("success").equals(false)) { + if (map_result.get("success").equals(false)) { return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); } - return BaseResponseUtils.buildSuccess(map_result.get("content")) ; + return BaseResponseUtils.buildSuccess(map_result.get("content")); + + } + + /** + * 瑙i攣 + * + * @param po + * @param bindingResult + * @return + */ + @PostMapping(path = "termUnlock", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Boolean> termUnlock(@RequestBody @Valid DtoUnlock po, BindingResult bindingResult) { + if (bindingResult != null && bindingResult.hasErrors()) { + return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + Map map_result = cardSv.unlock(po); + if (map_result.get("success").equals(false)) { + return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); + } + return BaseResponseUtils.buildSuccess(map_result.get("content")); } /** * 琛ュ崱 + * * @param po * @param bindingResult * @return @@ -110,15 +137,16 @@ } Map map_result = cardSv.reissue(po); - if(map_result.get("success").equals(false)) { + if (map_result.get("success").equals(false)) { return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); } - return BaseResponseUtils.buildSuccess(map_result.get("content")) ; + return BaseResponseUtils.buildSuccess(map_result.get("content")); } /** * 閿�鍗� + * * @param po * @param bindingResult * @return @@ -131,15 +159,16 @@ } Map map_result = cardSv.cancel(po); - if(map_result.get("success").equals(false)) { + if (map_result.get("success").equals(false)) { return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); } - return BaseResponseUtils.buildSuccess(map_result.get("content")) ; + return BaseResponseUtils.buildSuccess(map_result.get("content")); } /** * 鎿嶄綔鎵ц鍥炶皟 + * * @param po * @param bindingResult * @return @@ -152,9 +181,26 @@ } Map map_result = cardSv.callBack(po); - if(map_result.get("success").equals(false)) { + if (map_result.get("success").equals(false)) { return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); } - return BaseResponseUtils.buildSuccess(map_result.get("content")) ; + return BaseResponseUtils.buildSuccess(map_result.get("content")); } -} + + /** + * 璇诲彇鍗′俊鎭� + * @param cardAddr + * @return + */ + @GetMapping(path = "readCard") + @SsoAop() + public BaseResponse<VoTermCard> readCard(@RequestParam String cardAddr){ + try { + return BaseResponseUtils.buildSuccess(cardSv.readCard(cardAddr)); + } catch (Exception e) { + log.error("鏌ヨ鍐滄埛寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()) ; + } + } + +} \ 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 5c63db2..d915722 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 @@ -1,15 +1,14 @@ package com.dy.pipIrrTerminal.card; +import com.dy.common.webUtil.BaseResponseUtils; import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; -import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper; -import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper; -import com.dy.pipIrrGlobal.daoSe.SeClientMapper; -import com.dy.pipIrrGlobal.daoSe.SeRechargeHistoryMapper; +import com.dy.pipIrrGlobal.daoSe.*; import com.dy.pipIrrGlobal.pojoSe.SeCardOperate; import com.dy.pipIrrGlobal.pojoSe.SeClientCard; import com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory; import com.dy.pipIrrGlobal.voSe.VoAfterRecharge; import com.dy.pipIrrGlobal.voSe.VoTermActiveCard; +import com.dy.pipIrrGlobal.voSe.VoTermCard; import com.dy.pipIrrGlobal.voSe.VoTermCommon; import com.dy.pipIrrTerminal.card.dto.*; import com.dy.pipIrrTerminal.card.enums.CardStateENUM; @@ -50,6 +49,9 @@ @Autowired private SeRechargeHistoryMapper seRechargeHistoryMapper; + + @Autowired + private SeManagerCardMapper seManagerCardMapper; @Value("${project.projectNo}") private Integer projectNo; @@ -131,6 +133,39 @@ return map; } + /** + * 鏍规嵁姘村崱缂栧彿鍒ゆ柇璇ュ崱鏄惁鍙互瑙i攣 + * @param po + * @return + */ + public Map canUnlock(DtoUnlock po) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("content", null); + + Long cardNum = po.getCardNum(); + // 鍒ゆ柇褰撳墠姘村崱鏄惁涓烘寕澶辩姸鎬佷笖鏈ˉ鍗★紝浠呭凡缁忔寕澶卞叾鏈ˉ鍗$殑鍙互瑙i攣 + if (!isLostAndUnreplaced(cardNum)) { + map.put("msg", "姘村崱鐘舵�佷笉鏀寔褰撳墠鎿嶄綔"); + return map; + } + + /** + * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿 + */ + Map map_card = Optional.ofNullable(seClientCardMapper.getCardIdAndClientNum(cardNum)).orElse(new HashMap()); + if (map_card == null || map_card.size() <= 0) { + map.put("msg", "鍗″彿閿欒锛岃鍗′笉瀛樺湪"); + return map; + } + CardSimple card = new CardSimple(); + card.setCardId(Long.parseLong(map_card.get("cardId").toString())); + card.setClientId(Long.parseLong(map_card.get("clientId").toString())); + + map.put("success", true); + map.put("content", card); + return map; + } /** * 鏍规嵁姘村崱缂栧彿鍒ゆ柇璇ュ崱鏄惁鍙互琛ュ崱 * @param po @@ -612,6 +647,67 @@ } /** + * 瑙i攣 + * @param po + * @return + */ + @Transactional(rollbackFor = Exception.class) + public Map unlock(DtoUnlock po) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("content", null); + + Map map_canUnlock = canUnlock(po); + if(map_canUnlock.get("success").equals(false)) { + map.put("msg", map_canUnlock.get("msg").toString()); + return map; + } + CardSimple card = (CardSimple) map_canUnlock.get("content"); + Long cardId = card.getCardId(); + Long clientId = card.getClientId(); + + /** + * 淇敼鍐滄埛鍗′俊鎭細 + * 鎸傚け鏃堕棿 + * 鏈�鍚庢搷浣滅被鍨�-4 + */ + SeClientCard seClientCard = new SeClientCard(); + seClientCard.setId(cardId); + seClientCard.setUnlockdt(new Date()); + seClientCard.setMoney(po.getMoney()); + seClientCard.setState(CardStateENUM.NORMAL.getCode()); + seClientCard.setLastoper(LastOperateENUM.UNLOCK.getCode()); + Integer rec_updateClientCard = Optional.ofNullable(seClientCardMapper.updateByPrimaryKeySelective(seClientCard)).orElse(0); + if (rec_updateClientCard == 0) { + map.put("msg", "瑙i攣澶辫触-鍐滄埛鍗′慨鏀瑰紓甯�"); + return map; + } + + /** + * 娣诲姞瑙i攣璁板綍 + */ + SeCardOperate seCardOperate = new SeCardOperate(); + seCardOperate.setCardId(cardId); + seCardOperate.setClientId(clientId); + seCardOperate.setMoney(po.getMoney()); + seCardOperate.setOperateType(OperateTypeENUM.UNLOCK.getCode()); + seCardOperate.setRemarks(po.getRemarks()); + seCardOperate.setOperator(po.getOperator()); + seCardOperate.setOperateDt(new Date()); + seCardOperate.setOperateValid((byte) 2); + seCardOperateMapper.insert(seCardOperate); + Long rec = Optional.ofNullable(seCardOperate.getId()).orElse(0L); + if (rec == 0) { + map.put("msg", "瑙i攣澶辫触-瑙i攣璁板綍鍐欏叆寮傚父"); + return map; + } + + map.put("success", true); + map.put("msg", "鎿嶄綔鎴愬姛"); + return map; + } + + /** * 閿�鍗� * @param po * @return @@ -819,4 +915,37 @@ clientCard.setLastoper(LastOperateENUM.CANCEL.getCode()); return seClientCardMapper.updateByPrimaryKeySelective(clientCard); } + + /** + * 鍒ゆ柇鎸囧畾姘村崱鏄惁涓烘寕澶辩姸鎬佷笖鏃犺ˉ鍗¤褰� + * @param cardNum + * @return + */ + public Boolean isLostAndUnreplaced(Long cardNum) { + Integer lostCount = seClientCardMapper.getLostCount(cardNum); + Integer replacedCount = seClientCardMapper.getReplacedCount(cardNum); + if (lostCount > 0 && replacedCount == 0) { + return true; + } + return false; + } + + /** + * 璇诲彇姘村崱淇℃伅 + * @param cardAddr + * @return + */ + public VoTermCard readCard(String cardAddr) { + VoTermCard voTermCard = seClientCardMapper.getTermCardInfo(cardAddr); + if(voTermCard != null) { + return voTermCard; + } + + VoTermCard voTermManagerCard = seManagerCardMapper.getTermManagerCardInfo(cardAddr); + if(voTermManagerCard != null) { + return voTermManagerCard; + } + + return null; + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoUnlock.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoUnlock.java new file mode 100644 index 0000000..fdde30f --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoUnlock.java @@ -0,0 +1,43 @@ +package com.dy.pipIrrTerminal.card.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.*; + +/** + * @author ZhuBaoMin + * @date 2025-06-10 17:01 + * @LastEditTime 2025-06-10 17:01 + * @Description 瑙i攣浼犺緭瀵硅薄 + */ + +@Data +@Builder +@ToString +@NoArgsConstructor +@AllArgsConstructor +public class DtoUnlock { + public static final long serialVersionUID = 202506101702001L; + + /** + * 姘村崱缂栧彿 + */ + @NotNull(message = "姘村崱缂栧彿涓嶈兘涓虹┖") + private Long cardNum; + + /** + * 浣欓 + */ + @NotNull(message = "浣欓涓嶈兘涓虹┖") + private Float money; + + /** + * 澶囨敞淇℃伅 + */ + private String remarks; + + /** + * 鎿嶄綔浜虹紪鍙� + */ + @NotNull(message = "鎿嶄綔浜虹紪鍙蜂笉鑳戒负绌�") + private Long operator; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientCtrl.java index 59e84d5..4fff75c 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientCtrl.java @@ -64,4 +64,19 @@ return BaseResponseUtils.buildException(e.getMessage()) ; } } + + /** + * 鑾峰彇姘翠环 + * @return + */ + @GetMapping(path = "getWaterPrice") + @SsoAop() + public BaseResponse<Boolean> getWaterPrice(){ + try { + return BaseResponseUtils.buildSuccess(clientSv.getWaterPrice()); + } catch (Exception e) { + log.error("鏌ヨ鍐滄埛寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()) ; + } + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientSv.java index 2760b73..af3bc13 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/client/ClientSv.java @@ -1,6 +1,8 @@ package com.dy.pipIrrTerminal.client; +import com.alibaba.fastjson2.JSONObject; import com.dy.common.webUtil.QueryResultVo; +import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; import com.dy.pipIrrGlobal.daoSe.SeClientMapper; import com.dy.pipIrrGlobal.voSe.VoClient; import com.dy.pipIrrGlobal.voSe.VoTermClient; @@ -27,6 +29,8 @@ @Autowired private SeClientMapper seClientMapper; + @Autowired + private PrWaterPriceMapper prWaterPriceMapper; /** * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍐滄埛鏁版嵁_鍏呭�兼満 * @param queryVo @@ -54,4 +58,16 @@ public VoTermClient getTermOneClient(Long clientId) { return seClientMapper.getTermOneClient(clientId); } + + + /** + * 鑾峰彇姘翠环 + * @return + */ + public JSONObject getWaterPrice() { + Double price = prWaterPriceMapper.getPrice(); + JSONObject rs = new JSONObject(); + rs.put("price", price); + return rs; + } } -- Gitblit v1.8.0