Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
| | |
| | | package com.dy.pipIrrGlobal.daoSe; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.dy.pipIrrGlobal.pojoSe.SeCardOperate; |
| | | import com.dy.pipIrrGlobal.voSe.*; |
| | | import com.dy.pipIrrGlobal.voSt.VoClientOpenCardCount; |
| | | import com.dy.pipIrrGlobal.voSt.VoClientRechargeTotal; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2024-02-02 16:00 |
| | | * @LastEditTime 2024-02-02 16:00 |
| | | * @date 2025-05-08 17:15 |
| | | * @LastEditTime 2025-05-08 17:15 |
| | | * @Description |
| | | */ |
| | | |
| | | @Mapper |
| | | public interface SeCardOperateMapper extends BaseMapper<SeCardOperate> { |
| | | public interface SeCardOperateMapper { |
| | | int deleteByPrimaryKey(Long id); |
| | | |
| | | int insert(SeCardOperate record); |
| | |
| | | import com.dy.pipIrrGlobal.pojoSe.SeClient; |
| | | import com.dy.pipIrrGlobal.voSe.VoClient; |
| | | import com.dy.pipIrrGlobal.voSe.VoClientWechat; |
| | | import com.dy.pipIrrGlobal.voSe.VoTermClient; |
| | | import com.dy.pipIrrGlobal.voSt.VoCardUsage; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | |
| | | * @return |
| | | */ |
| | | List<VoCardUsage> getClientUsages(Map<String, Object> params); |
| | | |
| | | /** |
| | | * æ ¹æ®æå®æ¡ä»¶è·ååæ·è®°å½æ°_å
弿º |
| | | * @param params |
| | | * @return |
| | | */ |
| | | Long getTermClientCount(Map<?, ?> params); |
| | | |
| | | /** |
| | | * æ ¹æ®æå®æ¡ä»¶è·ååæ·æ°æ®_å
弿º |
| | | * @param params |
| | | * @return |
| | | */ |
| | | List<VoTermClient> getTermClients(Map<?, ?> params); |
| | | |
| | | /** |
| | | * æ ¹æ®åæ·IDè·åä¸ä¸ªåæ·æ°æ®_å
弿º |
| | | * @param clientId |
| | | * @return |
| | | */ |
| | | VoTermClient getTermOneClient(@Param("clientId") Long clientId); |
| | | } |
| | |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2024-01-18 19:10 |
| | | * @LastEditTime 2024-02-02 16:00 |
| | | * @date 2025-05-08 17:15 |
| | | * @LastEditTime 2025-05-08 17:15 |
| | | * @Description |
| | | */ |
| | | |
| | |
| | | private Date operateDt; |
| | | |
| | | /** |
| | | * æä½è®¢åå· |
| | | */ |
| | | private String orderNo; |
| | | |
| | | /** |
| | | * æä½æ¯å¦ææ |
| | | */ |
| | | @Length(message = "æä½æææ§ä¸å¤§äº{max}ï¼ä¸å°äº{min}", min = 1, max = 2) |
New file |
| | |
| | | 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-05-07 16:57 |
| | | * @LastEditTime 2025-05-07 16:57 |
| | | * @Description å
弿ºåæ·è§å¾å¯¹è±¡ |
| | | */ |
| | | |
| | | @Data |
| | | @JsonPropertyOrder({"clientId", "clientNum", "name", "districtNum", "phone", "idCard", "villageName", "address", "cardCount", "operateDt"}) |
| | | public class VoTermClient { |
| | | public static final long serialVersionUID = 202505071705001L; |
| | | |
| | | @JSONField(serializeUsing= ObjectWriterImplToString.class) |
| | | private Long clientId; |
| | | |
| | | private String clientNum; |
| | | |
| | | private String name; |
| | | |
| | | @JSONField(serializeUsing= ObjectWriterImplToString.class) |
| | | private Long districtNum; |
| | | |
| | | private String phone; |
| | | |
| | | private String idCard; |
| | | |
| | | private String villageName;; |
| | | |
| | | private String address; |
| | | |
| | | private Integer cardCount; |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date operateDt; |
| | | } |
New file |
| | |
| | | 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-05-08 15:59 |
| | | * @LastEditTime 2025-05-08 15:59 |
| | | * @Description |
| | | */ |
| | | |
| | | @Data |
| | | @JsonPropertyOrder({"projectNo", "cardNum", "balance", "waterPrice", "time", "orderNo"}) |
| | | public class VoTermRecharge { |
| | | public static final long serialVersionUID = 202505081559001L; |
| | | |
| | | private Integer projectNo; |
| | | |
| | | @JSONField(serializeUsing= ObjectWriterImplToString.class) |
| | | private Long cardNum; |
| | | |
| | | private Float balance; |
| | | |
| | | private Double waterPrice; |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date time; |
| | | |
| | | private String orderNo; |
| | | } |
| | |
| | | webPort: 8089 |
| | | actutorPort: 9089 |
| | | idSuffix: 11 |
| | | terminal: |
| | | webPort: 8090 |
| | | actutorPort: 9090 |
| | | idSuffix: 12 |
| | | # 2023-10-24æ°å¢ï¼ç¨äºæ§è¡ä¸´æ¶ä»»å¡ï¼ä¾å¦å 餿°æ®åºä¸ä¸äºåºéçæ°æ® |
| | | temp: |
| | | webPort: 8099 |
| | |
| | | webPort: 8089 |
| | | actutorPort: 9089 |
| | | idSuffix: 11 |
| | | terminal: |
| | | webPort: 8090 |
| | | actutorPort: 9090 |
| | | idSuffix: 12 |
| | | # 2023-10-24æ°å¢ï¼ç¨äºæ§è¡ä¸´æ¶ä»»å¡ï¼ä¾å¦å 餿°æ®åºä¸ä¸äºåºéçæ°æ® |
| | | temp: |
| | | webPort: 8099 |
| | |
| | | <result column="remarks" jdbcType="VARCHAR" property="remarks" /> |
| | | <result column="operator" jdbcType="BIGINT" property="operator" /> |
| | | <result column="operate_dt" jdbcType="TIMESTAMP" property="operateDt" /> |
| | | <result column="order_no" jdbcType="VARCHAR" property="orderNo" /> |
| | | <result column="operate_valid" jdbcType="TINYINT" property="operateValid" /> |
| | | </resultMap> |
| | | <sql id="Base_Column_List"> |
| | | <!--@mbg.generated--> |
| | | id, card_id, client_id, money, system_balance, trade_amount, price, card_cost, gift, |
| | | refund_amount, no_trade_amount, operate_type, payment_id, remarks, `operator`, operate_dt, operate_valid |
| | | refund_amount, no_trade_amount, operate_type, payment_id, remarks, `operator`, operate_dt, |
| | | order_no, operate_valid |
| | | </sql> |
| | | <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> |
| | | <!--@mbg.generated--> |
| | |
| | | price, card_cost, gift, |
| | | refund_amount, no_trade_amount, operate_type, |
| | | payment_id, remarks, `operator`, |
| | | operate_dt, operate_valid) |
| | | operate_dt, order_no, operate_valid |
| | | ) |
| | | values (#{id,jdbcType=BIGINT}, #{cardId,jdbcType=BIGINT}, #{clientId,jdbcType=BIGINT}, |
| | | #{money,jdbcType=FLOAT}, #{systemBalance,jdbcType=FLOAT}, #{tradeAmount,jdbcType=FLOAT}, |
| | | #{price,jdbcType=FLOAT}, #{cardCost,jdbcType=INTEGER}, #{gift,jdbcType=FLOAT}, |
| | | #{refundAmount,jdbcType=FLOAT}, #{noTradeAmount,jdbcType=FLOAT}, #{operateType,jdbcType=TINYINT}, |
| | | #{paymentId,jdbcType=BIGINT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, |
| | | #{operateDt,jdbcType=TIMESTAMP}, #{operateValid,jdbcType=TINYINT}) |
| | | #{operateDt,jdbcType=TIMESTAMP}, #{orderNo,jdbcType=VARCHAR}, #{operateValid,jdbcType=TINYINT} |
| | | ) |
| | | </insert> |
| | | <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCardOperate"> |
| | | <!--@mbg.generated--> |
| | |
| | | <if test="operateDt != null"> |
| | | operate_dt, |
| | | </if> |
| | | <if test="orderNo != null"> |
| | | order_no, |
| | | </if> |
| | | <if test="operateValid != null"> |
| | | operate_valid, |
| | | </if> |
| | |
| | | </if> |
| | | <if test="operateDt != null"> |
| | | #{operateDt,jdbcType=TIMESTAMP}, |
| | | </if> |
| | | <if test="orderNo != null"> |
| | | #{orderNo,jdbcType=VARCHAR}, |
| | | </if> |
| | | <if test="operateValid != null"> |
| | | #{operateValid,jdbcType=TINYINT}, |
| | |
| | | <if test="operateDt != null"> |
| | | operate_dt = #{operateDt,jdbcType=TIMESTAMP}, |
| | | </if> |
| | | <if test="orderNo != null"> |
| | | order_no = #{orderNo,jdbcType=VARCHAR}, |
| | | </if> |
| | | <if test="operateValid != null"> |
| | | operate_valid = #{operateValid,jdbcType=TINYINT}, |
| | | </if> |
| | |
| | | remarks = #{remarks,jdbcType=VARCHAR}, |
| | | `operator` = #{operator,jdbcType=BIGINT}, |
| | | operate_dt = #{operateDt,jdbcType=TIMESTAMP}, |
| | | order_no = #{orderNo,jdbcType=VARCHAR}, |
| | | operate_valid = #{operateValid,jdbcType=TINYINT} |
| | | where id = #{id,jdbcType=BIGINT} |
| | | </update> |
| | |
| | | </if> |
| | | </trim> |
| | | </select> |
| | | |
| | | <!--æ ¹æ®æå®æ¡ä»¶è·ååæ·è®°å½æ°_å
弿º--> |
| | | <select id="getTermClientCount" resultType="java.lang.Long"> |
| | | SELECT |
| | | count(*) |
| | | FROM se_client cli |
| | | LEFT JOIN ba_district dis_village ON cli.villageId = dis_village.id |
| | | <where> |
| | | AND cli.disabled = 0 |
| | | AND cli.deleted = 0 |
| | | <if test = "name != null and name !=''"> |
| | | AND cli.name like CONCAT('%',#{name},'%') |
| | | </if> |
| | | |
| | | <if test = "clientNum != null and clientNum !=''"> |
| | | AND cli.clientNum like CONCAT('%',#{clientNum},'%') |
| | | </if> |
| | | |
| | | <if test = "phone != null and phone !=''"> |
| | | AND cli.phone like CONCAT('%',#{phone},'%') |
| | | </if> |
| | | </where> |
| | | </select> |
| | | |
| | | <!--æ ¹æ®æå®æ¡ä»¶è·ååæ·æ°æ®_å
弿º--> |
| | | <select id="getTermClients" resultType="com.dy.pipIrrGlobal.voSe.VoTermClient"> |
| | | SELECT |
| | | cli.id AS clientId, |
| | | cli.clientNum, |
| | | cli.name, |
| | | cli.phone, |
| | | cli.idCard, |
| | | dis_village.name AS villageName, |
| | | cli.address, |
| | | (SELECT COUNT(*) FROM se_client_card WHERE clientId = cli.id)+(SELECT COUNT(*) FROM se_virtual_card WHERE client_id = cli.id) AS cardCount, |
| | | cli.operateDt, |
| | | cli.districtNum |
| | | FROM se_client cli |
| | | LEFT JOIN ba_district dis_village ON cli.villageId = dis_village.id |
| | | <where> |
| | | AND cli.disabled = 0 |
| | | AND cli.deleted = 0 |
| | | <if test = "name != null and name !=''"> |
| | | AND cli.name like CONCAT('%',#{name},'%') |
| | | </if> |
| | | |
| | | <if test = "clientNum != null and clientNum !=''"> |
| | | AND cli.clientNum like CONCAT('%',#{clientNum},'%') |
| | | </if> |
| | | |
| | | <if test = "phone != null and phone !=''"> |
| | | AND cli.phone like CONCAT('%',#{phone},'%') |
| | | </if> |
| | | </where> |
| | | ORDER BY cli.operateDt DESC |
| | | <trim prefix="limit " > |
| | | <if test="start != null and count != null"> |
| | | #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} |
| | | </if> |
| | | </trim> |
| | | </select> |
| | | |
| | | <!--æ ¹æ®åæ·IDè·åä¸ä¸ªåæ·æ°æ®_å
弿º--> |
| | | <select id="getTermOneClient" resultType="com.dy.pipIrrGlobal.voSe.VoTermClient"> |
| | | SELECT |
| | | cli.id AS clientId, |
| | | cli.clientNum, |
| | | cli.name, |
| | | cli.phone, |
| | | cli.idCard, |
| | | dis_village.name AS villageName, |
| | | cli.address, |
| | | (SELECT COUNT(*) FROM se_client_card WHERE clientId = cli.id)+(SELECT COUNT(*) FROM se_virtual_card WHERE client_id = cli.id) AS cardCount, |
| | | cli.operateDt, |
| | | cli.districtNum |
| | | FROM se_client cli |
| | | LEFT JOIN ba_district dis_village ON cli.villageId = dis_village.id |
| | | WHERE cli.disabled = 0 AND cli.deleted = 0 AND cli.id = #{clientId} |
| | | </select> |
| | | </mapper> |
| | |
| | | package com.dy.pipIrrStatistics.card; |
| | | |
| | | import com.dy.common.webUtil.QueryResultVo; |
| | | import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper; |
| | | import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper; |
| | | import com.dy.pipIrrGlobal.voSt.VoCardUsage; |
| | | import com.dy.pipIrrGlobal.voSt.VoICCard; |
| | |
| | | import com.dy.common.webUtil.QueryResultVo; |
| | | import com.dy.pipIrrGlobal.daoRm.RmClientAmountDayLastMapper; |
| | | import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper; |
| | | import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper; |
| | | import com.dy.pipIrrGlobal.daoSe.SeClientMapper; |
| | | import com.dy.pipIrrGlobal.voSt.*; |
| | | import com.dy.pipIrrStatistics.card.IcCardqo.CommonQO; |
New file |
| | |
| | | /mvnw text eol=lf |
| | | *.cmd text eol=crlf |
New file |
| | |
| | | HELP.md |
| | | target/ |
| | | !.mvn/wrapper/maven-wrapper.jar |
| | | !**/src/main/**/target/ |
| | | !**/src/test/**/target/ |
| | | |
| | | ### STS ### |
| | | .apt_generated |
| | | .classpath |
| | | .factorypath |
| | | .project |
| | | .settings |
| | | .springBeans |
| | | .sts4-cache |
| | | |
| | | ### IntelliJ IDEA ### |
| | | .idea |
| | | *.iws |
| | | *.iml |
| | | *.ipr |
| | | |
| | | ### NetBeans ### |
| | | /nbproject/private/ |
| | | /nbbuild/ |
| | | /dist/ |
| | | /nbdist/ |
| | | /.nb-gradle/ |
| | | build/ |
| | | !**/src/main/**/build/ |
| | | !**/src/test/**/build/ |
| | | |
| | | ### VS Code ### |
| | | .vscode/ |
New file |
| | |
| | | # Licensed to the Apache Software Foundation (ASF) under one |
| | | # or more contributor license agreements. See the NOTICE file |
| | | # distributed with this work for additional information |
| | | # regarding copyright ownership. The ASF licenses this file |
| | | # to you under the Apache License, Version 2.0 (the |
| | | # "License"); you may not use this file except in compliance |
| | | # with the License. You may obtain a copy of the License at |
| | | # |
| | | # http://www.apache.org/licenses/LICENSE-2.0 |
| | | # |
| | | # Unless required by applicable law or agreed to in writing, |
| | | # software distributed under the License is distributed on an |
| | | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| | | # KIND, either express or implied. See the License for the |
| | | # specific language governing permissions and limitations |
| | | # under the License. |
| | | wrapperVersion=3.3.2 |
| | | distributionType=only-script |
| | | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip |
New file |
| | |
| | | #!/bin/sh |
| | | # ---------------------------------------------------------------------------- |
| | | # Licensed to the Apache Software Foundation (ASF) under one |
| | | # or more contributor license agreements. See the NOTICE file |
| | | # distributed with this work for additional information |
| | | # regarding copyright ownership. The ASF licenses this file |
| | | # to you under the Apache License, Version 2.0 (the |
| | | # "License"); you may not use this file except in compliance |
| | | # with the License. You may obtain a copy of the License at |
| | | # |
| | | # http://www.apache.org/licenses/LICENSE-2.0 |
| | | # |
| | | # Unless required by applicable law or agreed to in writing, |
| | | # software distributed under the License is distributed on an |
| | | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| | | # KIND, either express or implied. See the License for the |
| | | # specific language governing permissions and limitations |
| | | # under the License. |
| | | # ---------------------------------------------------------------------------- |
| | | |
| | | # ---------------------------------------------------------------------------- |
| | | # Apache Maven Wrapper startup batch script, version 3.3.2 |
| | | # |
| | | # Optional ENV vars |
| | | # ----------------- |
| | | # JAVA_HOME - location of a JDK home dir, required when download maven via java source |
| | | # MVNW_REPOURL - repo url base for downloading maven distribution |
| | | # MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven |
| | | # MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output |
| | | # ---------------------------------------------------------------------------- |
| | | |
| | | set -euf |
| | | [ "${MVNW_VERBOSE-}" != debug ] || set -x |
| | | |
| | | # OS specific support. |
| | | native_path() { printf %s\\n "$1"; } |
| | | case "$(uname)" in |
| | | CYGWIN* | MINGW*) |
| | | [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" |
| | | native_path() { cygpath --path --windows "$1"; } |
| | | ;; |
| | | esac |
| | | |
| | | # set JAVACMD and JAVACCMD |
| | | set_java_home() { |
| | | # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched |
| | | if [ -n "${JAVA_HOME-}" ]; then |
| | | if [ -x "$JAVA_HOME/jre/sh/java" ]; then |
| | | # IBM's JDK on AIX uses strange locations for the executables |
| | | JAVACMD="$JAVA_HOME/jre/sh/java" |
| | | JAVACCMD="$JAVA_HOME/jre/sh/javac" |
| | | else |
| | | JAVACMD="$JAVA_HOME/bin/java" |
| | | JAVACCMD="$JAVA_HOME/bin/javac" |
| | | |
| | | if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then |
| | | echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 |
| | | echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 |
| | | return 1 |
| | | fi |
| | | fi |
| | | else |
| | | JAVACMD="$( |
| | | 'set' +e |
| | | 'unset' -f command 2>/dev/null |
| | | 'command' -v java |
| | | )" || : |
| | | JAVACCMD="$( |
| | | 'set' +e |
| | | 'unset' -f command 2>/dev/null |
| | | 'command' -v javac |
| | | )" || : |
| | | |
| | | if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then |
| | | echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 |
| | | return 1 |
| | | fi |
| | | fi |
| | | } |
| | | |
| | | # hash string like Java String::hashCode |
| | | hash_string() { |
| | | str="${1:-}" h=0 |
| | | while [ -n "$str" ]; do |
| | | char="${str%"${str#?}"}" |
| | | h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) |
| | | str="${str#?}" |
| | | done |
| | | printf %x\\n $h |
| | | } |
| | | |
| | | verbose() { :; } |
| | | [ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } |
| | | |
| | | die() { |
| | | printf %s\\n "$1" >&2 |
| | | exit 1 |
| | | } |
| | | |
| | | trim() { |
| | | # MWRAPPER-139: |
| | | # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. |
| | | # Needed for removing poorly interpreted newline sequences when running in more |
| | | # exotic environments such as mingw bash on Windows. |
| | | printf "%s" "${1}" | tr -d '[:space:]' |
| | | } |
| | | |
| | | # parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties |
| | | while IFS="=" read -r key value; do |
| | | case "${key-}" in |
| | | distributionUrl) distributionUrl=$(trim "${value-}") ;; |
| | | distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; |
| | | esac |
| | | done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" |
| | | [ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" |
| | | |
| | | case "${distributionUrl##*/}" in |
| | | maven-mvnd-*bin.*) |
| | | MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ |
| | | case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in |
| | | *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; |
| | | :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; |
| | | :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; |
| | | :Linux*x86_64*) distributionPlatform=linux-amd64 ;; |
| | | *) |
| | | echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 |
| | | distributionPlatform=linux-amd64 |
| | | ;; |
| | | esac |
| | | distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" |
| | | ;; |
| | | maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; |
| | | *) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; |
| | | esac |
| | | |
| | | # apply MVNW_REPOURL and calculate MAVEN_HOME |
| | | # maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash> |
| | | [ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" |
| | | distributionUrlName="${distributionUrl##*/}" |
| | | distributionUrlNameMain="${distributionUrlName%.*}" |
| | | distributionUrlNameMain="${distributionUrlNameMain%-bin}" |
| | | MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" |
| | | MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" |
| | | |
| | | exec_maven() { |
| | | unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : |
| | | exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" |
| | | } |
| | | |
| | | if [ -d "$MAVEN_HOME" ]; then |
| | | verbose "found existing MAVEN_HOME at $MAVEN_HOME" |
| | | exec_maven "$@" |
| | | fi |
| | | |
| | | case "${distributionUrl-}" in |
| | | *?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; |
| | | *) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; |
| | | esac |
| | | |
| | | # prepare tmp dir |
| | | if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then |
| | | clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } |
| | | trap clean HUP INT TERM EXIT |
| | | else |
| | | die "cannot create temp dir" |
| | | fi |
| | | |
| | | mkdir -p -- "${MAVEN_HOME%/*}" |
| | | |
| | | # Download and Install Apache Maven |
| | | verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." |
| | | verbose "Downloading from: $distributionUrl" |
| | | verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" |
| | | |
| | | # select .zip or .tar.gz |
| | | if ! command -v unzip >/dev/null; then |
| | | distributionUrl="${distributionUrl%.zip}.tar.gz" |
| | | distributionUrlName="${distributionUrl##*/}" |
| | | fi |
| | | |
| | | # verbose opt |
| | | __MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' |
| | | [ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v |
| | | |
| | | # normalize http auth |
| | | case "${MVNW_PASSWORD:+has-password}" in |
| | | '') MVNW_USERNAME='' MVNW_PASSWORD='' ;; |
| | | has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; |
| | | esac |
| | | |
| | | if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then |
| | | verbose "Found wget ... using wget" |
| | | wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" |
| | | elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then |
| | | verbose "Found curl ... using curl" |
| | | curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" |
| | | elif set_java_home; then |
| | | verbose "Falling back to use Java to download" |
| | | javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" |
| | | targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" |
| | | cat >"$javaSource" <<-END |
| | | public class Downloader extends java.net.Authenticator |
| | | { |
| | | protected java.net.PasswordAuthentication getPasswordAuthentication() |
| | | { |
| | | return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); |
| | | } |
| | | public static void main( String[] args ) throws Exception |
| | | { |
| | | setDefault( new Downloader() ); |
| | | java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); |
| | | } |
| | | } |
| | | END |
| | | # For Cygwin/MinGW, switch paths to Windows format before running javac and java |
| | | verbose " - Compiling Downloader.java ..." |
| | | "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" |
| | | verbose " - Running Downloader.java ..." |
| | | "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" |
| | | fi |
| | | |
| | | # If specified, validate the SHA-256 sum of the Maven distribution zip file |
| | | if [ -n "${distributionSha256Sum-}" ]; then |
| | | distributionSha256Result=false |
| | | if [ "$MVN_CMD" = mvnd.sh ]; then |
| | | echo "Checksum validation is not supported for maven-mvnd." >&2 |
| | | echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 |
| | | exit 1 |
| | | elif command -v sha256sum >/dev/null; then |
| | | if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then |
| | | distributionSha256Result=true |
| | | fi |
| | | elif command -v shasum >/dev/null; then |
| | | if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then |
| | | distributionSha256Result=true |
| | | fi |
| | | else |
| | | echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 |
| | | echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 |
| | | exit 1 |
| | | fi |
| | | if [ $distributionSha256Result = false ]; then |
| | | echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 |
| | | echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 |
| | | exit 1 |
| | | fi |
| | | fi |
| | | |
| | | # unzip and move |
| | | if command -v unzip >/dev/null; then |
| | | unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" |
| | | else |
| | | tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" |
| | | fi |
| | | printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" |
| | | mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" |
| | | |
| | | clean || : |
| | | exec_maven "$@" |
New file |
| | |
| | | <# : batch portion |
| | | @REM ---------------------------------------------------------------------------- |
| | | @REM Licensed to the Apache Software Foundation (ASF) under one |
| | | @REM or more contributor license agreements. See the NOTICE file |
| | | @REM distributed with this work for additional information |
| | | @REM regarding copyright ownership. The ASF licenses this file |
| | | @REM to you under the Apache License, Version 2.0 (the |
| | | @REM "License"); you may not use this file except in compliance |
| | | @REM with the License. You may obtain a copy of the License at |
| | | @REM |
| | | @REM http://www.apache.org/licenses/LICENSE-2.0 |
| | | @REM |
| | | @REM Unless required by applicable law or agreed to in writing, |
| | | @REM software distributed under the License is distributed on an |
| | | @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| | | @REM KIND, either express or implied. See the License for the |
| | | @REM specific language governing permissions and limitations |
| | | @REM under the License. |
| | | @REM ---------------------------------------------------------------------------- |
| | | |
| | | @REM ---------------------------------------------------------------------------- |
| | | @REM Apache Maven Wrapper startup batch script, version 3.3.2 |
| | | @REM |
| | | @REM Optional ENV vars |
| | | @REM MVNW_REPOURL - repo url base for downloading maven distribution |
| | | @REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven |
| | | @REM MVNW_VERBOSE - true: enable verbose log; others: silence the output |
| | | @REM ---------------------------------------------------------------------------- |
| | | |
| | | @IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) |
| | | @SET __MVNW_CMD__= |
| | | @SET __MVNW_ERROR__= |
| | | @SET __MVNW_PSMODULEP_SAVE=%PSModulePath% |
| | | @SET PSModulePath= |
| | | @FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( |
| | | IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) |
| | | ) |
| | | @SET PSModulePath=%__MVNW_PSMODULEP_SAVE% |
| | | @SET __MVNW_PSMODULEP_SAVE= |
| | | @SET __MVNW_ARG0_NAME__= |
| | | @SET MVNW_USERNAME= |
| | | @SET MVNW_PASSWORD= |
| | | @IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) |
| | | @echo Cannot start maven from wrapper >&2 && exit /b 1 |
| | | @GOTO :EOF |
| | | : end batch / begin powershell #> |
| | | |
| | | $ErrorActionPreference = "Stop" |
| | | if ($env:MVNW_VERBOSE -eq "true") { |
| | | $VerbosePreference = "Continue" |
| | | } |
| | | |
| | | # calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties |
| | | $distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl |
| | | if (!$distributionUrl) { |
| | | Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" |
| | | } |
| | | |
| | | switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { |
| | | "maven-mvnd-*" { |
| | | $USE_MVND = $true |
| | | $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" |
| | | $MVN_CMD = "mvnd.cmd" |
| | | break |
| | | } |
| | | default { |
| | | $USE_MVND = $false |
| | | $MVN_CMD = $script -replace '^mvnw','mvn' |
| | | break |
| | | } |
| | | } |
| | | |
| | | # apply MVNW_REPOURL and calculate MAVEN_HOME |
| | | # maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash> |
| | | if ($env:MVNW_REPOURL) { |
| | | $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } |
| | | $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" |
| | | } |
| | | $distributionUrlName = $distributionUrl -replace '^.*/','' |
| | | $distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' |
| | | $MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" |
| | | if ($env:MAVEN_USER_HOME) { |
| | | $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" |
| | | } |
| | | $MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' |
| | | $MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" |
| | | |
| | | if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { |
| | | Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" |
| | | Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" |
| | | exit $? |
| | | } |
| | | |
| | | if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { |
| | | Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" |
| | | } |
| | | |
| | | # prepare tmp dir |
| | | $TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile |
| | | $TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" |
| | | $TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null |
| | | trap { |
| | | if ($TMP_DOWNLOAD_DIR.Exists) { |
| | | try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } |
| | | catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } |
| | | } |
| | | } |
| | | |
| | | New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null |
| | | |
| | | # Download and Install Apache Maven |
| | | Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." |
| | | Write-Verbose "Downloading from: $distributionUrl" |
| | | Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" |
| | | |
| | | $webclient = New-Object System.Net.WebClient |
| | | if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { |
| | | $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) |
| | | } |
| | | [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 |
| | | $webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null |
| | | |
| | | # If specified, validate the SHA-256 sum of the Maven distribution zip file |
| | | $distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum |
| | | if ($distributionSha256Sum) { |
| | | if ($USE_MVND) { |
| | | Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." |
| | | } |
| | | Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash |
| | | if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { |
| | | Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." |
| | | } |
| | | } |
| | | |
| | | # unzip and move |
| | | Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null |
| | | Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null |
| | | try { |
| | | Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null |
| | | } catch { |
| | | if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { |
| | | Write-Error "fail to move MAVEN_HOME" |
| | | } |
| | | } finally { |
| | | try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } |
| | | catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } |
| | | } |
| | | |
| | | Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | |
| | | <parent> |
| | | <artifactId>pipIrr-web</artifactId> |
| | | <groupId>com.dy</groupId> |
| | | <version>1.0.0</version> |
| | | <relativePath>../pom.xml</relativePath> |
| | | </parent> |
| | | |
| | | <packaging>jar</packaging> |
| | | <artifactId>pipIrr-web-terminal</artifactId> |
| | | <name>pipIrr-web-terminal</name> |
| | | <description>å
弿ºç³»ç»</description> |
| | | |
| | | <build> |
| | | <plugins> |
| | | <!-- çæä¸å
å«ä¾èµjarç坿§è¡jarå
|
| | | <plugin> |
| | | !- spring bootæä¾çmavenæå
æä»¶ - |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-maven-plugin</artifactId> |
| | | <executions> |
| | | <execution> |
| | | !- |
| | | <goals> |
| | | <goal>repackage</goal> |
| | | </goals> |
| | | - |
| | | <configuration> |
| | | !- ä¸å çè¯æç»å
å为: ${artifactId}-${version}.jar, å äºçè¯æç»å
å: ${artifactId}-${version}-${classifier}.jar - |
| | | <classifier>execute</classifier> |
| | | !- 䏿å®çæè·¯å¾çè¯, é»è®¤ä¿åå¨ ${build.directory} ä¸ - |
| | | <outputDirectory>${project.build.directory}/execute</outputDirectory> |
| | | <finalName>${artifactId}-${version}</finalName> |
| | | <layout>ZIP</layout> |
| | | <mainClass>com.dy.pipIrrBase.PipIrrBaseApplication</mainClass> |
| | | <includes> |
| | | <include> |
| | | <groupId>com.dy</groupId> |
| | | <artifactId>pipIrr-common</artifactId> |
| | | </include> |
| | | <include> |
| | | <groupId>com.dy</groupId> |
| | | <artifactId>pipIrr-global</artifactId> |
| | | </include> |
| | | </includes> |
| | | <excludes> |
| | | <exclude> |
| | | <groupId>org.projectlombok</groupId> |
| | | <artifactId>lombok</artifactId> |
| | | </exclude> |
| | | </excludes> |
| | | </configuration> |
| | | </execution> |
| | | </executions> |
| | | |
| | | </plugin> |
| | | --> |
| | | <!-- æ·è´ä¾èµçjarå
å°libç®å½--> |
| | | <plugin> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-maven-plugin</artifactId> |
| | | <executions> |
| | | <execution> |
| | | <configuration> |
| | | <!-- ä¸å çè¯æç»å
å为: ${artifactId}-${version}.jar, å äºçè¯æç»å
å: ${artifactId}-${version}-${classifier}.jar |
| | | <classifier>execute</classifier> |
| | | --> |
| | | <!-- ${project.build.directory}æ¯mavenåéï¼å
ç½®çï¼è¡¨ç¤ºtargetç®å½,妿ä¸åï¼å°å¨æ ¹ç®å½ä¸å建/lib --> |
| | | <outputDirectory>${project.build.directory}/lib</outputDirectory> |
| | | <!-- excludeTransitive:æ¯å¦ä¸å
å«é´æ¥ä¾èµå
ï¼æ¯å¦æä»¬ä¾èµAï¼ä½æ¯Aåä¾èµäºBï¼æä»¬æ¯å¦ä¹è¦æBæè¿å» é»è®¤ä¸æ--> |
| | | <excludeTransitive>false</excludeTransitive> |
| | | <!-- å¤å¶çjaræä»¶å»æçæ¬ä¿¡æ¯ --> |
| | | <stripVersion>false</stripVersion> |
| | | <finalName>${project.artifactId}-${project.version}</finalName> |
| | | <layout>ZIP</layout> |
| | | <mainClass>com.dy.pipIrrBase.PipIrrBaseApplication</mainClass> |
| | | <includes> |
| | | <include> |
| | | <groupId>com.dy</groupId> |
| | | <artifactId>pipIrr-common</artifactId> |
| | | </include> |
| | | <include> |
| | | <groupId>com.dy</groupId> |
| | | <artifactId>pipIrr-global</artifactId> |
| | | </include> |
| | | </includes> |
| | | <excludes> |
| | | <exclude> |
| | | <groupId>org.projectlombok</groupId> |
| | | <artifactId>lombok</artifactId> |
| | | </exclude> |
| | | </excludes> |
| | | </configuration> |
| | | </execution> |
| | | </executions> |
| | | </plugin> |
| | | |
| | | <plugin> |
| | | <!-- 设置javaç¼è¯çæ¬ï¼è¿è¡ç¯å¢çæ¬ --> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-compiler-plugin</artifactId> |
| | | <!-- sourceï¼ æºä»£ç ç¼è¯çæ¬ï¼targetï¼ ç®æ å¹³å°ç¼è¯çæ¬ï¼encodingï¼ å符éç¼ç ã --> |
| | | <configuration> |
| | | <source>${java.version}</source> |
| | | <target>${java.version}</target> |
| | | <encoding>${encoding}</encoding> |
| | | </configuration> |
| | | </plugin> |
| | | <plugin> |
| | | <!-- è§£å³èµæºæä»¶çç¼ç é®é¢ --> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-resources-plugin</artifactId> |
| | | <configuration> |
| | | <encoding>${encoding}</encoding> |
| | | </configuration> |
| | | </plugin> |
| | | <plugin> |
| | | <!-- mavenéæ§è¡æµè¯ç¨ä¾çæä»¶ --> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-surefire-plugin</artifactId> |
| | | <configuration> |
| | | <skipTests>true</skipTests> |
| | | </configuration> |
| | | </plugin> |
| | | <plugin> |
| | | <!-- ä¸é¢è§£å³ï¼å½è¿è¡Maven Lifecycle packageæ¶æ¥éï¼Could not find artifact org.apache.mina:mina-core:bundle:2.2.1 in maven (https://repo1.maven.org/maven2/)--> |
| | | <groupId>org.apache.felix</groupId> |
| | | <artifactId>maven-bundle-plugin</artifactId> |
| | | <extensions>true</extensions> |
| | | </plugin> |
| | | </plugins> |
| | | </build> |
| | | |
| | | </project> |
New file |
| | |
| | | package com.dy.pipIrrTerminal; |
| | | |
| | | import com.dy.common.multiDataSource.EnableMultiDataSource; |
| | | import org.mybatis.spring.annotation.MapperScan; |
| | | import org.springframework.boot.SpringApplication; |
| | | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| | | import org.springframework.context.annotation.ComponentScan; |
| | | import org.springframework.context.annotation.EnableAspectJAutoProxy; |
| | | import org.springframework.context.annotation.FilterType; |
| | | |
| | | @SpringBootApplication |
| | | @EnableAspectJAutoProxy |
| | | @EnableMultiDataSource |
| | | @ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrTerminal"}, |
| | | excludeFilters = { |
| | | @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = { |
| | | com.dy.common.singleDataSource.DruidDataSourceConfig.class //æé¤åæ°æ®æº |
| | | }) |
| | | } |
| | | ) |
| | | @MapperScan({"com.dy.pipIrrGlobal.daoPr", "com.dy.pipIrrGlobal.daoBa","com.dy.pipIrrGlobal.daoFi", "com.dy.pipIrrGlobal.daoSe"}) |
| | | public class PipIrrTerminalApplication { |
| | | |
| | | public static void main(String[] args) { |
| | | SpringApplication.run(PipIrrTerminalApplication.class, args); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrTerminal.card; |
| | | |
| | | import com.dy.common.aop.SsoAop; |
| | | import com.dy.common.webUtil.BaseResponse; |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | | import com.dy.pipIrrGlobal.voSe.VoTermRecharge; |
| | | import com.dy.pipIrrTerminal.card.dto.ActiveCard; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.validation.Valid; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | 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 java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-05-08 10:15 |
| | | * @LastEditTime 2025-05-08 10:15 |
| | | * @Description |
| | | */ |
| | | |
| | | @Slf4j |
| | | @RestController |
| | | @RequestMapping(path = "card") |
| | | @RequiredArgsConstructor |
| | | public class CardCtrl { |
| | | private final CardSv cardSv; |
| | | |
| | | @PostMapping(path = "activeTermCard", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @SsoAop() |
| | | public BaseResponse<VoTermRecharge> activeTermCard(@RequestBody @Valid ActiveCard po, BindingResult bindingResult) { |
| | | if (bindingResult != null && bindingResult.hasErrors()) { |
| | | return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | | } |
| | | |
| | | Map map_result = cardSv.activeOrReissueTermCard(po); |
| | | if(map_result.get("success").equals(false)) { |
| | | return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); |
| | | } |
| | | return BaseResponseUtils.buildSuccess(map_result.get("content")) ; |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrTerminal.card; |
| | | |
| | | import com.dy.common.webUtil.BaseResponse; |
| | | 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.pojoSe.SeCardOperate; |
| | | import com.dy.pipIrrGlobal.pojoSe.SeClientCard; |
| | | import com.dy.pipIrrGlobal.voSe.VoTermRecharge; |
| | | import com.dy.pipIrrTerminal.card.dto.ActiveCard; |
| | | import com.dy.pipIrrTerminal.card.dto.DtoRecharge; |
| | | import com.dy.pipIrrTerminal.card.enums.CardStateENUM; |
| | | import com.dy.pipIrrTerminal.card.enums.LastOperateENUM; |
| | | import com.dy.pipIrrTerminal.card.enums.OperateTypeENUM; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-05-08 10:15 |
| | | * @LastEditTime 2025-05-08 10:15 |
| | | * @Description |
| | | */ |
| | | |
| | | @Slf4j |
| | | @Service |
| | | public class CardSv { |
| | | @Autowired |
| | | private SeCardOperateMapper seCardOperateMapper; |
| | | |
| | | @Autowired |
| | | private SeClientCardMapper seClientCardMapper; |
| | | |
| | | @Autowired |
| | | private SeClientMapper seClientMapper; |
| | | |
| | | @Autowired |
| | | private PrWaterPriceMapper prWaterPriceMapper; |
| | | |
| | | @Value("${project.projectNo}") |
| | | private Integer projectNo; |
| | | |
| | | /** |
| | | * æ ¹æ®æ°´å¡å°åå¤æè¯¥å¡æ¯å¦å¯ä»¥å¼å¡ |
| | | * @param cardAddr |
| | | * @return true:å¯ä»¥å¼å¡ |
| | | */ |
| | | public Boolean canActiveCard(String cardAddr) { |
| | | // æå®æ°´å¡å°åçæ°´å¡æ°éï¼æ æå¡çæé¤å¨å¤ |
| | | Long cardCount = Optional.ofNullable(seClientCardMapper.getCountByCardAddr(cardAddr)).orElse(0L); |
| | | if (cardCount == 0) { |
| | | return true; |
| | | } |
| | | |
| | | // æå®æ°´å¡å°å䏿£å¸¸ç¶æææå¤±ç¶æçæ°´å¡æ°é |
| | | cardCount = Optional.ofNullable(seClientCardMapper.getCountByCardAddrAndState(cardAddr)).orElse(0L); |
| | | if (cardCount == 0) { |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®åæ·ç¼å·è·å5çº§è¡æ¿åºå串areaCodeï¼è¡¥å¡è¿ç¨ä¸å¼æ°å¡ä½¿ç¨ |
| | | * @param clientId |
| | | * @return |
| | | */ |
| | | public Long getAreaCodeById(Long clientId) { |
| | | return seClientMapper.getAreaCodeById(clientId); |
| | | } |
| | | |
| | | public String getCardNumOfMax(String areaCode) { |
| | | return seClientCardMapper.getCardNumOfMax(areaCode); |
| | | } |
| | | |
| | | public Map generateCardNum(Long clientId) { |
| | | Map map_cardNum = new HashMap<>(); |
| | | map_cardNum.put("success", false); |
| | | map_cardNum.put("content", null); |
| | | |
| | | // è·å5çº§è¡æ¿åºå串areaCode |
| | | Long areaCodeL = getAreaCodeById(clientId); |
| | | if (areaCodeL == null) { |
| | | map_cardNum.put("msg", "è¯¥åæ·è¡æ¿åºåå¼å¸¸"); |
| | | return map_cardNum; |
| | | } |
| | | |
| | | String areaCode = String.valueOf(areaCodeL); |
| | | String cardNum = Optional.ofNullable(getCardNumOfMax(areaCode)).orElse(""); |
| | | if (cardNum != null && cardNum.trim().length() > 0) { |
| | | Integer number = Integer.parseInt(cardNum.substring(12)); |
| | | number = number + 1; |
| | | if (number > 65535) { |
| | | map_cardNum.put("msg", "æ°´å¡ç¼å·å·²æ»¡"); |
| | | return map_cardNum; |
| | | } |
| | | cardNum = cardNum.substring(0, 12) + String.format("%05d", number); |
| | | } else { |
| | | cardNum = areaCode + "00001"; |
| | | } |
| | | |
| | | map_cardNum.put("success", true); |
| | | map_cardNum.put("content", cardNum); |
| | | return map_cardNum; |
| | | } |
| | | |
| | | public String generateOrderNo() { |
| | | DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyMMddHHmmss"); |
| | | LocalDateTime dateTime = LocalDateTime.now(); |
| | | Random random = new Random(); |
| | | String CHARACTERS = "0123456789"; |
| | | StringBuilder sb = new StringBuilder(4); |
| | | for (int i = 0; i < 4; i++) { |
| | | int index = random.nextInt(CHARACTERS.length()); |
| | | sb.append(CHARACTERS.charAt(index)); |
| | | } |
| | | return dtf.format(dateTime) + sb.toString(); |
| | | } |
| | | |
| | | |
| | | public Map addCardAndOperate(ActiveCard po, Long cardNum, String orderNo) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("content", null); |
| | | |
| | | // amountï¼å
弿¥å£ä¸ºè¾å
¥åæ°ï¼è¡¥å¡æ¥å£ä¸ºåå¡éè¿éé¢ |
| | | SeClientCard seClientCard = new SeClientCard(); |
| | | seClientCard.setProtocol(po.getProtocol()); |
| | | seClientCard.setCardaddr(po.getCardAddr()); |
| | | seClientCard.setCardnum(String.valueOf(cardNum)); |
| | | seClientCard.setClientid(po.getClientId()); |
| | | seClientCard.setMoney(po.getAmount()); |
| | | seClientCard.setState(CardStateENUM.INVALID.getCode()); |
| | | if (po.getOriginalCardId() != null) { |
| | | // è¡¥å¡ |
| | | seClientCard.setOriginalCardId(po.getOriginalCardId()); |
| | | seClientCard.setLastoper(LastOperateENUM.REPLACE.getCode()); |
| | | seClientCard.setReplacedt(new Date()); |
| | | } else { |
| | | // 弿°å¡ |
| | | seClientCard.setLastoper(LastOperateENUM.ACTIVE.getCode()); |
| | | seClientCard.setCreatedt(new Date()); |
| | | } |
| | | |
| | | seClientCardMapper.insert(seClientCard); |
| | | Long cardId = Optional.ofNullable(seClientCard.getId()).orElse(0L); |
| | | if (cardId == 0) { |
| | | map.put("msg", "å¼å¡å¤±è´¥-åæ·å¡åå
¥å¼å¸¸"); |
| | | return map; |
| | | } |
| | | |
| | | SeCardOperate seCardOperate = new SeCardOperate(); |
| | | seCardOperate.setCardId(cardId); |
| | | seCardOperate.setClientId(po.getClientId()); |
| | | seCardOperate.setMoney(0f); |
| | | seCardOperate.setCardCost(po.getCardCost()); |
| | | seCardOperate.setPaymentId(po.getPaymentId()); |
| | | if (po.getOriginalCardId() != null) { |
| | | // è¡¥å¡ |
| | | seCardOperate.setOperateType(OperateTypeENUM.REISSUE.getCode()); |
| | | seCardOperate.setNoTradeAmount(po.getAmount()); |
| | | } else { |
| | | // 弿°å¡ |
| | | seCardOperate.setOperateType(OperateTypeENUM.ACTIVE.getCode()); |
| | | } |
| | | seCardOperate.setRemarks(po.getRemarks()); |
| | | seCardOperate.setOperator(po.getOperator()); |
| | | seCardOperate.setOperateDt(new Date()); |
| | | seCardOperate.setOrderNo(orderNo); |
| | | seCardOperate.setOperateValid((byte) 1); |
| | | |
| | | seCardOperateMapper.insert(seCardOperate); |
| | | Long rec = Optional.ofNullable(seCardOperate.getId()).orElse(0L); |
| | | if (rec == 0) { |
| | | map.put("msg", "å¼å¡å¤±è´¥-å¼å¡è®°å½åå
¥å¼å¸¸"); |
| | | return map; |
| | | } |
| | | |
| | | map.put("success", true); |
| | | return map; |
| | | } |
| | | |
| | | public Map plusRecharge(ActiveCard po, Long cardNum) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("content", null); |
| | | |
| | | DtoRecharge dtoRecharge = new DtoRecharge(); |
| | | dtoRecharge.setCardNum(cardNum); |
| | | dtoRecharge.setAmount(po.getAmount()); |
| | | dtoRecharge.setPaymentId(po.getPaymentId()); |
| | | dtoRecharge.setRemarks(po.getRemarks()); |
| | | dtoRecharge.setOperator(po.getOperator()); |
| | | dtoRecharge.setMoney(0f); |
| | | dtoRecharge.setGift(0f); |
| | | dtoRecharge.setPrice(0f); |
| | | //BaseResponse<Boolean> job = cardOperateSv.addRecharge(dtoRecharge); |
| | | BaseResponse<Boolean> job = null; |
| | | if (!job.getCode().equals("0001")) { |
| | | map.put("msg", "å¼å¡å¤±è´¥-å
å¼å¼å¸¸"); |
| | | return map; |
| | | } |
| | | |
| | | map.put("success", true); |
| | | return map; |
| | | } |
| | | |
| | | public Map activeOrReissueTermCard(ActiveCard po) { |
| | | Map map = new HashMap<>(); |
| | | map.put("success", false); |
| | | map.put("content", null); |
| | | Float amount = po.getAmount(); |
| | | Long originalCardId = po.getOriginalCardId(); |
| | | |
| | | if (!canActiveCard(po.getCardAddr())) { |
| | | map.put("msg", "å¼å¡å¤±è´¥-æ¤å¡å·²åå¨"); |
| | | return map; |
| | | } |
| | | |
| | | Map map_cardNum = generateCardNum(po.getClientId()); |
| | | if(map_cardNum.get("success").equals(false)) { |
| | | map.put("msg", map_cardNum.get("msg").toString()); |
| | | return map; |
| | | } |
| | | Long cardNum = Long.parseLong(map_cardNum.get("content").toString()); |
| | | |
| | | String orderNo = generateOrderNo(); |
| | | Map map_addCardAndOperate = addCardAndOperate(po, cardNum, orderNo); |
| | | if(map_addCardAndOperate.get("success").equals(false)) { |
| | | map.put("msg", map_addCardAndOperate.get("msg").toString()); |
| | | return map; |
| | | } |
| | | |
| | | if (amount != null && amount > 0 && originalCardId == null) { |
| | | Map map_plusRecharge = plusRecharge(po, cardNum); |
| | | if(map_plusRecharge.get("success").equals(false)) { |
| | | map.put("msg", map_plusRecharge.get("msg").toString()); |
| | | return map; |
| | | } |
| | | } |
| | | |
| | | Float balance = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum)).orElse(0f); |
| | | Double waterPrice = prWaterPriceMapper.getPrice(); |
| | | |
| | | VoTermRecharge voTermRecharge = new VoTermRecharge(); |
| | | voTermRecharge.setProjectNo(projectNo); |
| | | voTermRecharge.setCardNum(cardNum); |
| | | voTermRecharge.setBalance(balance); |
| | | voTermRecharge.setWaterPrice(waterPrice); |
| | | voTermRecharge.setTime(new Date()); |
| | | voTermRecharge.setOrderNo(orderNo); |
| | | |
| | | map.put("success", true); |
| | | map.put("msg", "æä½æå"); |
| | | map.put("content", voTermRecharge); |
| | | return map; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrTerminal.card.dto; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-05-08 10:26 |
| | | * @LastEditTime 2025-05-08 10:26 |
| | | * @Description |
| | | */ |
| | | |
| | | @Data |
| | | public class ActiveCard { |
| | | public static final long serialVersionUID = 202505081027001L; |
| | | |
| | | /** |
| | | * åè®®åç§° |
| | | */ |
| | | @NotBlank(message = "åè®®ä¸è½ä¸ºç©º") |
| | | private String protocol; |
| | | |
| | | /** |
| | | * æ°´å¡å°åï¼ä»
ä¿åï¼æ ä¸å¡ |
| | | */ |
| | | @NotBlank(message = "æ°´å¡å°åä¸è½ä¸ºç©º") |
| | | private String cardAddr; |
| | | |
| | | /** |
| | | * åæ·IDï¼ä¸»é®ï¼ |
| | | */ |
| | | @NotNull(message = "åæ·ä¸è½ä¸ºç©º") |
| | | private Long clientId; |
| | | |
| | | /** |
| | | * åæå¤±å¡IDï¼è¡¥å¡è¿ç¨å¼å¡éè¦ |
| | | */ |
| | | private Long originalCardId; |
| | | |
| | | /** |
| | | * å¡çè´¹ç¨ |
| | | */ |
| | | @NotNull(message = "å¡çè´¹ç¨ä¸è½ä¸ºç©º") |
| | | private Integer cardCost; |
| | | |
| | | /** |
| | | * å
å¼éé¢ |
| | | */ |
| | | private Float amount; |
| | | |
| | | /** |
| | | * æ¯ä»æ¹å¼ç¼å· |
| | | */ |
| | | @NotNull(message = "仿¹å¼ä¸è½ä¸ºç©º") |
| | | private Long paymentId; |
| | | |
| | | /** |
| | | * 夿³¨ä¿¡æ¯ |
| | | */ |
| | | private String remarks; |
| | | |
| | | /** |
| | | * æä½äººç¼å· |
| | | */ |
| | | @NotNull(message = "æä½äººä¸è½ä¸ºç©º") |
| | | private Long operator; |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrTerminal.card.dto; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.Min; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import jakarta.validation.constraints.Positive; |
| | | import lombok.*; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-05-08 14:46 |
| | | * @LastEditTime 2025-05-08 14:46 |
| | | * @Description |
| | | */ |
| | | |
| | | @Data |
| | | @Builder |
| | | @ToString |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | public class DtoRecharge { |
| | | public static final long serialVersionUID = 202505081447001L; |
| | | |
| | | /** |
| | | * æ°´å¡ç¼å· |
| | | */ |
| | | @NotNull(message = "æ°´å¡ç¼å·ä¸è½ä¸ºç©º") |
| | | private Long cardNum; |
| | | |
| | | /** |
| | | * åæ·IDï¼ä¸æ¯å
弿¥å£ä¼ å
¥ï¼ç±å¼å¡å¯¹è±¡ä¼ å
¥ï¼ä¿åå
å¼è®°å½éè¦ |
| | | */ |
| | | private Long clientId; |
| | | |
| | | /** |
| | | * å¡çä½é¢ |
| | | */ |
| | | @Min(value = 0, message="å¡çä½é¢ä¸è½å°äº0") |
| | | private Float money; |
| | | |
| | | /** |
| | | * å
å¼éé¢ |
| | | */ |
| | | private Float amount; |
| | | |
| | | /** |
| | | * èµ ééé¢ |
| | | */ |
| | | @Min(value = 0, message="èµ ééé¢ä¸è½å°äº0") |
| | | private Float gift; |
| | | |
| | | /** |
| | | * 仿¬¾æ¹å¼ç¼å· |
| | | */ |
| | | private Long paymentId; |
| | | |
| | | /** |
| | | * æ°´ä»· |
| | | */ |
| | | @Min(value = 0, message="æ°´ä»·ä¸è½å°äº0") |
| | | private Float price; |
| | | |
| | | /** |
| | | * 夿³¨ä¿¡æ¯ |
| | | */ |
| | | private String remarks; |
| | | |
| | | /** |
| | | * æä½äººç¼å· |
| | | */ |
| | | @Positive(message = "æä½äººç¼å·å¿
须为大äº0çæ´æ°") |
| | | private Long operator; |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrTerminal.card.enums; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-05-08 11:36 |
| | | * @LastEditTime 2025-05-08 11:36 |
| | | * @Description |
| | | */ |
| | | |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum CardStateENUM { |
| | | NORMAL((byte)1, "æ£å¸¸"), |
| | | CANCELLED((byte)2, "已注é"), |
| | | LOSS((byte)3, "å·²æå¤±"), |
| | | INVALID((byte)4, "æ æç"); |
| | | |
| | | private final Byte code; |
| | | private final String message; |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrTerminal.card.enums; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-05-08 11:34 |
| | | * @LastEditTime 2025-05-08 11:34 |
| | | * @Description |
| | | */ |
| | | |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum LastOperateENUM { |
| | | ACTIVE((byte)1, "å¼å¡"), |
| | | RECHARGE((byte)2, "å
å¼"), |
| | | CANCEL((byte)3, "注é"), |
| | | REPLACE((byte)4, "è¡¥å¡"), |
| | | REFUND((byte)5, "è¡¥æ£"), |
| | | LOSS((byte)6, "æå¤±"), |
| | | REVERSAL((byte)7, "岿£"), |
| | | UNLOCK((byte)8, "è§£é"), |
| | | CONSUME((byte)9, "æ¶è´¹"), |
| | | WRITE_BACK((byte)10, "åå"); |
| | | |
| | | private final Byte code; |
| | | private final String message; |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrTerminal.card.enums; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-05-08 11:45 |
| | | * @LastEditTime 2025-05-08 11:45 |
| | | * @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, "è§£é"), |
| | | CONSUME((byte)9, "æ¶è´¹"), |
| | | WRITE_BACK((byte)10, "åå"); |
| | | |
| | | private final Byte code; |
| | | private final String message; |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrTerminal.client; |
| | | |
| | | 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.VoTermClient; |
| | | import com.dy.pipIrrTerminal.client.qo.QoClient; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.PathVariable; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-05-07 17:23 |
| | | * @LastEditTime 2025-05-07 17:23 |
| | | * @Description |
| | | */ |
| | | |
| | | @Slf4j |
| | | @RestController |
| | | @RequestMapping(path = "client") |
| | | @RequiredArgsConstructor |
| | | public class ClientCtrl { |
| | | private final ClientSv clientSv; |
| | | |
| | | /** |
| | | * æ ¹æ®æå®æ¡ä»¶è·ååæ·æ°æ®_å
弿º |
| | | * @param vo |
| | | * @return |
| | | */ |
| | | @GetMapping(path = "getTermClients") |
| | | @SsoAop() |
| | | public BaseResponse<QueryResultVo<List<VoTermClient>>> getTermClients(QoClient vo){ |
| | | try { |
| | | QueryResultVo<List<VoTermClient>> res = clientSv.getTermClients(vo); |
| | | return BaseResponseUtils.buildSuccess(res); |
| | | } catch (Exception e) { |
| | | log.error("æ¥è¯¢åæ·å¼å¸¸", e); |
| | | return BaseResponseUtils.buildException(e.getMessage()) ; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®åæ·IDè·åä¸ä¸ªåæ·æ°æ®_å
弿º |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @GetMapping(path = "/getTermOne/{id}") |
| | | @SsoAop() |
| | | public BaseResponse<VoTermClient> getTermOneClient(@PathVariable("id") Long id){ |
| | | if(id == null) { |
| | | return BaseResponseUtils.buildErrorMsg("åæ·IDä¸è½ä¸ºç©º"); |
| | | } |
| | | try { |
| | | return BaseResponseUtils.buildSuccess(clientSv.getTermOneClient(id)); |
| | | } catch (Exception e) { |
| | | log.error("æ¥è¯¢åæ·å¼å¸¸", e); |
| | | return BaseResponseUtils.buildException(e.getMessage()) ; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrTerminal.client; |
| | | |
| | | import com.dy.common.webUtil.QueryResultVo; |
| | | import com.dy.pipIrrGlobal.daoSe.SeClientMapper; |
| | | import com.dy.pipIrrGlobal.voSe.VoClient; |
| | | import com.dy.pipIrrGlobal.voSe.VoTermClient; |
| | | import com.dy.pipIrrTerminal.client.qo.QoClient; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.dubbo.common.utils.PojoUtils; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-05-07 17:25 |
| | | * @LastEditTime 2025-05-07 17:25 |
| | | * @Description |
| | | */ |
| | | |
| | | @Slf4j |
| | | @Service |
| | | public class ClientSv { |
| | | @Autowired |
| | | private SeClientMapper seClientMapper; |
| | | |
| | | /** |
| | | * æ ¹æ®æå®æ¡ä»¶è·ååæ·æ°æ®_å
弿º |
| | | * @param queryVo |
| | | * @return |
| | | */ |
| | | public QueryResultVo<List<VoTermClient>> getTermClients(QoClient queryVo){ |
| | | Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo) ; |
| | | |
| | | Long itemTotal = (long)seClientMapper.getTermClientCount(params); |
| | | QueryResultVo<List<VoTermClient>> rsVo = new QueryResultVo<>() ; |
| | | rsVo.pageSize = queryVo.pageSize ; |
| | | rsVo.pageCurr = queryVo.pageCurr ; |
| | | |
| | | rsVo.calculateAndSet(itemTotal, params); |
| | | rsVo.obj = seClientMapper.getTermClients(params); |
| | | |
| | | return rsVo ; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®åæ·IDè·åä¸ä¸ªåæ·æ°æ®_å
弿º |
| | | * @param clientId |
| | | * @return |
| | | */ |
| | | public VoTermClient getTermOneClient(Long clientId) { |
| | | return seClientMapper.getTermOneClient(clientId); |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrTerminal.client.qo; |
| | | |
| | | import com.dy.common.webUtil.QueryConditionVo; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025-05-07 17:16 |
| | | * @LastEditTime 2025-05-07 17:16 |
| | | * @Description å
弿ºåæ·æ¥è¯¢å¯¹è±¡ |
| | | */ |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | public class QoClient extends QueryConditionVo { |
| | | |
| | | public String name; |
| | | |
| | | public String clientNum; |
| | | |
| | | public String phone; |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrTerminal.config; |
| | | |
| | | import com.dy.common.webFilter.DevOfDataSourceNameSetFilter; |
| | | import com.dy.common.webFilter.UserTokenFilter; |
| | | import jakarta.servlet.Filter; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.boot.web.servlet.FilterRegistrationBean; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025/05/07 16:02 |
| | | * @LastEditTime 2025/05/07 16:02 |
| | | * @Description |
| | | */ |
| | | |
| | | @Configuration |
| | | public class WebFilterConfiguration { |
| | | |
| | | @Value("${pipIrr.global.dev}") |
| | | public String isDevStage ;//æ¯å¦ä¸ºå¼åé¶æ®µ |
| | | @Value("${pipIrr.global.dsName}") |
| | | public String dsName ;//å¼åé¶æ®µçæ°æ®æºåç§° |
| | | |
| | | /** |
| | | * DevOfDataSourceNameSetFilterä¸UserTokenFilteråªè½ä¸ä¸ªè¢«é
ç½®ä¸ï¼ |
| | | * æä»¥ä»ä»¬çorder齿¯1 |
| | | */ |
| | | private static final int order_UserTokenFilter = 1 ;//ä¸ä¸é¢ |
| | | private static final int order_DevOfDataSourceNameSetFilter = 1 ; |
| | | |
| | | |
| | | @Bean |
| | | public FilterRegistrationBean<? extends Filter> RegFilter() { |
| | | FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>(); |
| | | if(this.isDevStage != null && !this.isDevStage.trim().equals("") && this.isDevStage.trim().equalsIgnoreCase("true")){ |
| | | filterRegistrationBean.setFilter(new DevOfDataSourceNameSetFilter()); |
| | | filterRegistrationBean.addUrlPatterns("/*");//é
ç½®è¿æ»¤è§å |
| | | filterRegistrationBean.addInitParameter("dataSourceName",dsName);//设置initåæ° |
| | | filterRegistrationBean.setName("DevOfDataSourceNameSetFilter");//è®¾ç½®è¿æ»¤å¨åç§° |
| | | filterRegistrationBean.setOrder(order_DevOfDataSourceNameSetFilter);//æ§è¡æ¬¡åº |
| | | }else{ |
| | | filterRegistrationBean.setFilter(new UserTokenFilter()); |
| | | filterRegistrationBean.addUrlPatterns("/*");//é
ç½®è¿æ»¤è§å |
| | | filterRegistrationBean.setName("UserTokenFilter");//è®¾ç½®è¿æ»¤å¨åç§° |
| | | filterRegistrationBean.setOrder(order_UserTokenFilter);//æ§è¡æ¬¡åº |
| | | } |
| | | return filterRegistrationBean; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrTerminal.config; |
| | | |
| | | import com.dy.common.webListener.GenerateIdSetSuffixListener; |
| | | import jakarta.servlet.ServletContextListener; |
| | | import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2025/05/07 16:02 |
| | | * @LastEditTime 2025/05/07 16:02 |
| | | * @Description |
| | | */ |
| | | @Configuration |
| | | public class WebListenerConfiguration { |
| | | |
| | | /** |
| | | * å¯å¨é¡ºåº |
| | | */ |
| | | private static final int order_idSetSuffix = 1 ; |
| | | |
| | | |
| | | /** |
| | | * å
鍿ä¾listenerï¼è¯¥listenerå¨ç³»ç»å¯å¨æ¶ï¼æ ¹æ®é
ç½® 设置ID产çå¨çåç¼ |
| | | * @return 注åBean |
| | | */ |
| | | @Bean |
| | | public ServletListenerRegistrationBean<? extends ServletContextListener> regSsoListener() { |
| | | ServletListenerRegistrationBean<GenerateIdSetSuffixListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>(); |
| | | listenerRegistrationBean.setListener(new GenerateIdSetSuffixListener()); |
| | | listenerRegistrationBean.setOrder(order_idSetSuffix); |
| | | return listenerRegistrationBean; |
| | | } |
| | | } |
New file |
| | |
| | | spring: |
| | | profiles: |
| | | #121æå¡å¨ï¼common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
| | | include: common-web, global, database, database-mq, database-yq, database-hlj, database-gz, database-lz, database-jc, self |
New file |
| | |
| | | spring: |
| | | profiles: |
| | | #233æå¡å¨ï¼common-web, global, database, database-ym, database-sp, database-test,database-mj, self |
| | | include: common-web, global, database, database-ym, database-sp, database-test,database-mj, self |
New file |
| | |
| | | #actutorçwebç«¯å£ |
| | | management: |
| | | server: |
| | | port: ${pipIrr.terminal.actutorPort} |
| | | #webæå¡ç«¯å£ï¼tomcaté»è®¤æ¯8090 |
| | | server: |
| | | port: ${pipIrr.terminal.webPort} |
| | | servlet: |
| | | context-path: /terminal #web访é®ä¸ä¸æè·¯å¾ |
| | | context-parameters: |
| | | #GenerateIdSetSuffixListenerä¸åºç¨ï¼åå¼èå´æ¯0-99 |
| | | idSuffix: ${pipIrr.terminal.idSuffix} |
| | | |
| | | logging: |
| | | level: |
| | | com: |
| | | dy: |
| | | pipIrrGlobal: |
| | | daoSe: trace |
New file |
| | |
| | | spring: |
| | | profiles: |
| | | include: common-web, global, database, database-ym, database-sp, database-test,database-mj, self |
New file |
| | |
| | | Configuration: |
| | | #statusï¼è¿ä¸ªç¨äºè®¾ç½®log4j2èªèº«å
é¨çä¿¡æ¯è¾åºï¼å¯ä»¥ä¸è®¾ç½®ï¼å½è®¾ç½®ætraceæ¶ï¼ä½ ä¼çå°log4j2å
é¨åç§è¯¦ç»è¾åºï¼å¯ä»¥è®¾ç½®æOff(å
³é)æError(åªè¾åºé误信æ¯) |
| | | status: Error |
| | | |
| | | Properties: # å®ä¹å
¨å±åé |
| | | Property: |
| | | #æ¥å¿æä»¶åå¨çç®å½ |
| | | - name: log.path |
| | | value: ./logs |
| | | #æ¥å¿æä»¶åå¨åç§° |
| | | - name: project.name |
| | | value: pipIrrOperation |
| | | |
| | | #å®ä¹è¾åºå¨ï¼å¯ä»¥è¾åºå°æ§å¶å°åæä»¶. |
| | | Appenders: |
| | | #è¾åºå°æ§å¶å° |
| | | Console: |
| | | #Appenderå½å |
| | | name: CONSOLE |
| | | target: SYSTEM_OUT |
| | | ThresholdFilter: |
| | | level: debug #è¾åºæ¥å¿çº§å«ï¼è¾åºæ¥å¿æ¶ï¼é¦å
ç±Loggers.Root.levelæLoggers.Logger.level夿æ¯å¦è¾åºï¼ç¶ååç±æ¬level夿æ¯å¦è¾åº |
| | | onMatch: ACCEPT #onMatch=ACCEPT 大äºçäº "level" é
ç½®çççº§å°æ¥å¿è¾åº |
| | | onMismatch: DENY #onMismatch=DENY å°äº "level" é
ç½®çççº§å°æ¥å¿ä¸è¾åº |
| | | #æ¥å¿å
å®¹æ ·å¼ |
| | | PatternLayout: |
| | | #%n-æ¢è¡ |
| | | #%m-æ¥å¿å
容ï¼è¾åºä»£ç 䏿å®çæ¥å¿ä¿¡æ¯ |
| | | #%p-è¾åºä¼å
级ï¼å³DEBUG,INFO,WARN,ERROR,FATAL |
| | | #%r-ç¨åºå¯å¨å°ç°å¨çæ¯«ç§æ° |
| | | #%%- è¾åºä¸ä¸ª"%" å符 |
| | | #%t-å½å线ç¨å |
| | | #%d-æ¥æåæ¶é´, 常ç¨çæ ¼å¼æ%d{DATE},%d{ABSOLUTE},%d{HH:mm:ss,SSS},%d{ddMMyyyyHH:mm:ss,SSS} |
| | | #%l-å%F%L%C%M |
| | | #%F-javaæºæä»¶å |
| | | #%L-javaæºç è¡æ° |
| | | #%C-javaç±»å,%C{1}è¾åºæåä¸ä¸ªå
ç´ |
| | | #%M-javaæ¹æ³å |
| | | pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n" |
| | | # è¾åºå°æä»¶ï¼è¶
è¿10MB彿¡£ |
| | | RollingFile: |
| | | - name: ROLLING_FILE |
| | | ignoreExceptions: false |
| | | fileName: ${log.path}/${project.name}.log |
| | | filePattern: "${log.path}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz" |
| | | ThresholdFilter: |
| | | level: error #è¾åºæ¥å¿çº§å«ï¼è¾åºæ¥å¿æ¶ï¼é¦å
ç±Loggers.Root.levelæLoggers.Logger.level夿æ¯å¦è¾åºï¼ç¶ååç±æ¬level夿æ¯å¦è¾åº |
| | | onMatch: ACCEPT #onMatch=ACCEPT 大äºçäº "level" é
ç½®çççº§å°æ¥å¿è¾åº |
| | | onMismatch: DENY #onMismatch=DENY å°äº "level" é
ç½®çççº§å°æ¥å¿ä¸è¾åº |
| | | #æ¥å¿å
å®¹æ ·å¼ |
| | | PatternLayout: |
| | | pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n" |
| | | Policies: |
| | | # æ¯å¤©æ¥å¿æä»¶æå¤§å°ååæä»¶ |
| | | SizeBasedTriggeringPolicy: |
| | | size: "1 MB" |
| | | DefaultRolloverStrategy: |
| | | max: 10 #ä¸å¤©å
æ¥å¿æä»¶æå¤§ä¸ªæ° |
| | | Delete: |
| | | basePath: "${log.path}" |
| | | maxDepth: 2 #å 餿¥å¿æä»¶çæå¤§æ·±åº¦ |
| | | IfFileName: |
| | | glob: "${project.name}-%d{yyyy-MM-dd}-%i.log.gz" |
| | | IfLastModified: |
| | | age: "30d" #æ¥å¿æä»¶ä¿ççæå¤§å¤©æ° |
| | | Loggers: |
| | | Root: |
| | | level: info #æ¥å¿è¾åºçº§å«ï¼å
±æ8个级å«ï¼æç
§ä»ä½å°é«ä¸ºï¼all < trace < debug < info < warn < error < fatal < off |
| | | AppenderRef: #Rootçåèç¹ï¼ç¨æ¥æå®è¯¥æ¥å¿è¾åºå°åªä¸ªAppender. |
| | | - ref: CONSOLE #è¾åºæ¥å¿æ¶ï¼é¦å
ç±æ¬level夿æ¯å¦è¾åºï¼ç¶ååç±ä¸é¢çAppenders.Console.ThresholdFilter.level夿æ¯å¦è¾åº |
| | | - ref: ROLLING_FILE #è¾åºæ¥å¿æ¶ï¼é¦å
ç±æ¬level夿æ¯å¦è¾åºï¼ç¶ååç±ä¸é¢çAppenders.RollingFile.ThresholdFilter.level夿æ¯å¦è¾åº |
| | | # 为å
é
ç½®ç¹æ®çLog级å«ï¼æ¹ä¾¿è°è¯ï¼ |
| | | # ä¸åLoggers.Root.leveléå¶ |
| | | Logger: |
| | | - name: org.apache.dubbo |
| | | additivity: false #å»é¤éå¤çlog |
| | | level: error #è¾åºæ¥å¿çº§å« |
| | | AppenderRef: |
| | | - ref: CONSOLE #è¾åºæ¥å¿æ¶ï¼é¦å
ç±æ¬.level夿æ¯å¦è¾åºï¼ç¶ååç±ä¸é¢çAppenders.Console.ThresholdFilter.level夿æ¯å¦è¾åº |
| | | - ref: ROLLING_FILE #è¾åºæ¥å¿æ¶ï¼é¦å
ç±æ¬level夿æ¯å¦è¾åºï¼ç¶ååç±ä¸é¢çAppenders.RollingFile.ThresholdFilter.level夿æ¯å¦è¾åº |
New file |
| | |
| | | package com.dy.pipIrrTerminal; |
| | | |
| | | import org.junit.jupiter.api.Test; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | |
| | | @SpringBootTest |
| | | class PipIrrWebTerminalApplicationTests { |
| | | |
| | | @Test |
| | | void contextLoads() { |
| | | } |
| | | |
| | | } |
| | |
| | | <module>pipIrr-web-operation</module> |
| | | <module>pipIrr-web-file</module> |
| | | <module>pipIrr-web-temp</module> |
| | | <module>pipIrr-web-terminal</module> |
| | | </modules> |
| | | |
| | | <dependencies> |