From a2e2c9d1f359e9702d59a4d27a36af3f0bb6aceb Mon Sep 17 00:00:00 2001
From: Administrator <zhubaomin>
Date: 星期五, 19 一月 2024 17:27:33 +0800
Subject: [PATCH] 2024-01-19 朱宝民 获取用户列表新接口
---
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCardOperate.java | 138 ++++
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoReversal.java | 64 ++
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoRecharge.java | 84 ++
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java | 5
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java | 177 +++++
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml | 221 +++++++
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java | 550 ++++++++++++++++++
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoActiveCard.java | 89 ++
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java | 27
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/enums/OperateTypeENUM.java | 27
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java | 6
/dev/null | 21
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoLoss.java | 58 +
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/DtoActiveCard.java | 2
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java | 28
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/converter/RechargeDtoMapper.java | 26
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml | 78 ++
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoCancel.java | 64 ++
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java | 18
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeActiveCard.java | 2
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java | 74 +
21 files changed, 1,714 insertions(+), 45 deletions(-)
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java
index cd7bc13..ac420c3 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java
@@ -101,4 +101,32 @@
* @return
*/
Map getUserInfoById(@Param("userId") Long userId);
+
+ /**
+ * 鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栫敤鎴疯褰曟暟
+ * @param params
+ * @return
+ */
+ Long getRecordCount(Map<?, ?> params);
+
+ /**
+ * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鐢ㄦ埛鍒楄〃
+ * @param params
+ * @return
+ */
+ List<VoUserInfo> getUsers(Map<?, ?> params);
+
+ /**
+ * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇瑙掕壊ID鍒楄〃
+ * @param userId
+ * @return
+ */
+ List<Map<String, Object>> getRoleIdsByUserId(@Param("userId") Long userId);
+
+ /**
+ * getRoleNamesByUserId
+ * @param userId
+ * @return
+ */
+ List<Map<String, Object>> getRoleNamesByUserId(@Param("userId") Long userId);
}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java
new file mode 100644
index 0000000..798b5b4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java
@@ -0,0 +1,27 @@
+package com.dy.pipIrrGlobal.daoSe;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeCardOperate;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-18 19:28
+ * @LastEditTime 2024-01-18 19:28
+ * @Description
+ */
+
+@Mapper
+public interface SeCardOperateMapper extends BaseMapper {
+ int deleteByPrimaryKey(Long id);
+
+ int insert(SeCardOperate record);
+
+ int insertSelective(SeCardOperate record);
+
+ SeCardOperate selectByPrimaryKey(Long id);
+
+ int updateByPrimaryKeySelective(SeCardOperate record);
+
+ int updateByPrimaryKey(SeCardOperate record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeActiveCard.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeActiveCard.java
index ed80934..750461f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeActiveCard.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeActiveCard.java
@@ -89,7 +89,7 @@
*/
@Schema(description = "琛ュ崱閲戦", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
@Length(message = "琛ュ崱閲戦涓嶅皬浜巤min}", min = 0)
- private Double reissueamount;
+ private Float reissueamount;
/**
* 鎿嶄綔绫诲瀷;1-寮�鍗★紝2-琛ュ崱
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCardOperate.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCardOperate.java
new file mode 100644
index 0000000..21e51cb
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCardOperate.java
@@ -0,0 +1,138 @@
+package com.dy.pipIrrGlobal.pojoSe;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Positive;
+import lombok.*;
+import org.hibernate.validator.constraints.Length;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-18 19:10
+ * @LastEditTime 2024-01-18 19:10
+ * @Description
+ */
+
+@TableName(value="se_card_operate", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "姘村崱鎿嶄綔瀹炰綋")
+public class SeCardOperate implements BaseEntity {
+ public static final long serialVersionUID = 202401181914001L;
+
+ /**
+ * 涓婚敭
+ */
+ @JSONField(serializeUsing= ObjectWriterImplToString.class)
+ @TableId(type = IdType.INPUT)
+ @Schema(description = "瀹炰綋id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ private Long id;
+
+ /**
+ * 姘村崱ID
+ */
+ @Schema(description = "姘村崱ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @NotNull(message = "姘村崱ID涓嶈兘涓虹┖")
+ private Long cardId;
+
+ /**
+ * 鍐滄埛ID
+ */
+ @Schema(description = "鍐滄埛ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @NotNull(message = "鍐滄埛ID涓嶈兘涓虹┖")
+ private Long clientId;
+
+ /**
+ * 鍗$墖浣欓;鍏呭�笺�佹寕澶便�佸啿姝c�佽В閿�
+ */
+ @Schema(description = "鍗$墖浣欓", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Length(message = "鍗$墖浣欓涓嶅皬浜巤min}", min = 0)
+ private Float money;
+
+ /**
+ * 绯荤粺浣欓;鍐叉鏃朵娇鐢�
+ */
+ @Schema(description = "绯荤粺浣欓", requiredMode = Schema.RequiredMode.REQUIRED)
+ @Length(message = "绯荤粺浣欓涓嶅皬浜巤min}", min = 0)
+ private Float systemBalance;
+
+ /**
+ * 浜ゆ槗閲戦;璐按閲戦銆侀��娆鹃噾棰�
+ */
+ @Schema(description = "浜ゆ槗閲戦", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Length(message = "浜ゆ槗閲戦涓嶅皬浜巤min}", min = 0)
+ private Float tradeAmount;
+
+ /**
+ * 姘翠环;鍏呭�兼椂浣跨敤
+ */
+ @Schema(description = "姘翠环", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Length(message = "姘翠环涓嶅皬浜巤min}", min = 0)
+ private Float price;
+
+ /**
+ * 璐崱閲戦
+ */
+ @Schema(description = "璐崱閲戦", requiredMode = Schema.RequiredMode.REQUIRED)
+ @Length(message = "璐崱閲戦涓嶅皬浜巤min}瀛�", min = 0)
+ private Integer cardCost;
+
+ /**
+ * 璧犻�侀噾棰�
+ */
+ @Schema(description = "璧犻�侀噾棰�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Length(message = "璧犻�侀噾棰濅笉灏忎簬{min}", min = 0)
+ private Float gift;
+
+ /**
+ * 闈炰氦鏄撻噾棰�;琛ュ崱閲戦銆佽ˉ鎵i噾棰濄�佸墿浣欓噾棰濓紙瑙i攣锛�
+ */
+ @Schema(description = "闈炰氦鏄撻噾棰�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Length(message = "闈炰氦鏄撻噾棰濅笉灏忎簬{min}", min = 0)
+ private Float noTradeAmount;
+
+ /**
+ * 鎿嶄綔绫诲瀷
+ */
+ @Schema(description = "鎿嶄綔绫诲瀷", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Length(message = "浠樻鏂瑰紡涓嶅ぇ浜巤max}锛屼笉灏忎簬{min}", min = 1, max = 8)
+ private Byte operateType;
+
+ /**
+ * 浠樻鏂瑰紡缂栧彿
+ */
+ @Schema(description = "浠樻鏂瑰紡缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Length(message = "浠樻鏂瑰紡缂栧彿涓嶅ぇ浜巤max}锛屼笉灏忎簬{min}", min = 1, max = 4)
+ private Long paymentId;
+
+ /**
+ * 澶囨敞淇℃伅
+ */
+ @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Length(message = "澶囨敞闀垮害灏忎簬{max}瀛�", min = 1, max = 200)
+ private String remarks;
+
+ /**
+ * 鎿嶄綔浜虹紪鍙�
+ */
+ @Schema(description = "鎿嶄綔浜篒D", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Positive(message = "鎿嶄綔浜篒D蹇呴』涓哄ぇ浜�0鐨勬暣鏁�")
+ private Long operator;
+
+ /**
+ * 鎿嶄綔鏃堕棿
+ */
+ @Schema(description = "鎿嶄綔鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ private Date operateDt;
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java
index 437a9f8..0dd1eb3 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java
@@ -21,10 +21,25 @@
private static final long serialVersionUID = 1L;
@Schema(title = "鐢ㄦ埛ID")
- private String userId;
+ private Long userId;
@Schema(title = "鐢ㄦ埛濮撳悕")
private String userName;
+
+ @Schema(title = "鎵嬫満鍙�")
+ private String phone;
+
+ @Schema(title = "鐗囧尯ID")
+ private Long blockId;
+
+ @Schema(title = "鐗囧尯鍚嶇О")
+ private String blockName;
+
+ @Schema(title = "鐘舵�佺紪鍙�")
+ private Integer stateId;
+
+ @Schema(title = "鐘舵�佸悕绉�")
+ private String stateName;
@Schema(title = "瑙掕壊缂栧彿鍒楄〃")
private List<Map<String, Object>> roleIds;
@@ -33,7 +48,6 @@
private List<Map<String, Object>> roleNames;
@Schema(title = "鏉冮檺鍒楄〃")
- //private List<Map<String, Object>> permissions;
private JSONArray permissions;
}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
index 66fbe78..c49501a 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
@@ -256,4 +256,82 @@
</if>
</where>
</select>
+
+ <!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栫敤鎴疯褰曟暟-->
+ <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
+ SELECT
+ COUNT(*) AS recordCount
+ FROM ba_user user
+ INNER JOIN ba_user_role usro ON usro.userId = user.id
+ <where>
+ AND user.supperAdmin != 1
+ AND user.deleted = 0
+
+ <if test = "name != null and name !=''">
+ AND user.name like CONCAT('%',#{name},'%')
+ </if>
+
+ <if test = "phone != null and phone !=''">
+ AND user.phone like CONCAT('%',#{phone},'%')
+ </if>
+
+ <if test = "roleId != null and roleId > 0">
+ AND usro.roleId = ${roleId}
+ </if>
+ </where>
+ </select>
+
+ <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鐢ㄦ埛鍒楄〃-->
+ <select id="getUsers" resultType="com.dy.pipIrrGlobal.voBa.VoUserInfo">
+ SELECT
+ id AS userId,
+ phone,
+ name AS userName,
+ disabled AS stateId,
+ (CASE
+ WHEN disabled = 0 THEN "姝e父"
+ WHEN disabled = 1 THEN "宸茬鐢�"
+ END) AS stateName,
+ blockId,
+ (SELECT name FROM ba_block WHERE id = user.blockId) AS blockName
+ FROM ba_user user
+ INNER JOIN ba_user_role usro ON usro.userId = user.id
+ <where>
+ AND user.supperAdmin != 1
+ AND user.deleted = 0
+
+ <if test = "name != null and name !=''">
+ AND user.name like CONCAT('%',#{name},'%')
+ </if>
+
+ <if test = "phone != null and phone !=''">
+ AND user.phone like CONCAT('%',#{phone},'%')
+ </if>
+
+ <if test = "roleId != null and roleId > 0">
+ AND usro.roleId = ${roleId}
+ </if>
+ </where>
+ ORDER BY user.id DESC
+ <if test="pageCurr != null and pageSize != null">
+ LIMIT ${pageCurr}, ${pageSize}
+ </if>
+ </select>
+
+ <!--鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇瑙掕壊ID鍒楄〃-->
+ <select id="getRoleIdsByUserId" resultType="java.util.HashMap">
+ SELECT
+ roleId
+ FROM ba_user_role
+ WHERE userId = ${userId}
+ </select>
+
+ <select id="getRoleNamesByUserId" resultType="java.util.HashMap">
+ SELECT
+ ro.name AS roleName
+ FROM ba_user_role usro
+ INNER JOIN ba_role ro ON usro.roleId = ro.id
+ WHERE userId = ${userId}
+
+ </select>
</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
new file mode 100644
index 0000000..52dc477
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper">
+ <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeCardOperate">
+ <!--@mbg.generated-->
+ <!--@Table se_card_operate-->
+ <id column="id" jdbcType="BIGINT" property="id" />
+ <result column="card_id" jdbcType="BIGINT" property="cardId" />
+ <result column="client_id" jdbcType="BIGINT" property="clientId" />
+ <result column="money" jdbcType="FLOAT" property="money" />
+ <result column="system_balance" jdbcType="FLOAT" property="systemBalance" />
+ <result column="trade_amount" jdbcType="FLOAT" property="tradeAmount" />
+ <result column="price" jdbcType="FLOAT" property="price" />
+ <result column="card_cost" jdbcType="INTEGER" property="cardCost" />
+ <result column="gift" jdbcType="FLOAT" property="gift" />
+ <result column="no_trade_amount" jdbcType="FLOAT" property="noTradeAmount" />
+ <result column="operate_type_id" jdbcType="BIGINT" property="operateType" />
+ <result column="payment_id" jdbcType="BIGINT" property="paymentId" />
+ <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+ <result column="operator" jdbcType="BIGINT" property="operator" />
+ <result column="operate_dt" jdbcType="TIMESTAMP" property="operateDt" />
+ </resultMap>
+ <sql id="Base_Column_List">
+ <!--@mbg.generated-->
+ id, card_id, client_id, money, system_balance, trade_amount, price, card_cost, gift,
+ no_trade_amount, operate_type_id, payment_id, remarks, `operator`, operate_dt
+ </sql>
+ <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+ <!--@mbg.generated-->
+ select
+ <include refid="Base_Column_List" />
+ from se_card_operate
+ where id = #{id,jdbcType=BIGINT}
+ </select>
+ <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+ <!--@mbg.generated-->
+ delete from se_card_operate
+ where id = #{id,jdbcType=BIGINT}
+ </delete>
+ <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCardOperate">
+ <!--@mbg.generated-->
+ insert into se_card_operate (id, card_id, client_id,
+ money, system_balance, trade_amount,
+ price, card_cost, gift,
+ no_trade_amount, operate_type, payment_id,
+ remarks, `operator`, operate_dt
+ )
+ 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},
+ #{noTradeAmount,jdbcType=FLOAT}, #{operateType,jdbcType=BIGINT}, #{paymentId,jdbcType=BIGINT},
+ #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP}
+ )
+ </insert>
+ <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCardOperate">
+ <!--@mbg.generated-->
+ insert into se_card_operate
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ id,
+ </if>
+ <if test="cardId != null">
+ card_id,
+ </if>
+ <if test="clientId != null">
+ client_id,
+ </if>
+ <if test="money != null">
+ money,
+ </if>
+ <if test="systemBalance != null">
+ system_balance,
+ </if>
+ <if test="tradeAmount != null">
+ trade_amount,
+ </if>
+ <if test="price != null">
+ price,
+ </if>
+ <if test="cardCost != null">
+ card_cost,
+ </if>
+ <if test="gift != null">
+ gift,
+ </if>
+ <if test="noTradeAmount != null">
+ no_trade_amount,
+ </if>
+ <if test="operateType != null">
+ operate_type_id,
+ </if>
+ <if test="paymentId != null">
+ payment_id,
+ </if>
+ <if test="remarks != null">
+ remarks,
+ </if>
+ <if test="operator != null">
+ `operator`,
+ </if>
+ <if test="operateDt != null">
+ operate_dt,
+ </if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">
+ #{id,jdbcType=BIGINT},
+ </if>
+ <if test="cardId != null">
+ #{cardId,jdbcType=BIGINT},
+ </if>
+ <if test="clientId != null">
+ #{clientId,jdbcType=BIGINT},
+ </if>
+ <if test="money != null">
+ #{money,jdbcType=FLOAT},
+ </if>
+ <if test="systemBalance != null">
+ #{systemBalance,jdbcType=FLOAT},
+ </if>
+ <if test="tradeAmount != null">
+ #{tradeAmount,jdbcType=FLOAT},
+ </if>
+ <if test="price != null">
+ #{price,jdbcType=FLOAT},
+ </if>
+ <if test="cardCost != null">
+ #{cardCost,jdbcType=INTEGER},
+ </if>
+ <if test="gift != null">
+ #{gift,jdbcType=FLOAT},
+ </if>
+ <if test="noTradeAmount != null">
+ #{noTradeAmount,jdbcType=FLOAT},
+ </if>
+ <if test="operateType != null">
+ #{operateType,jdbcType=BIGINT},
+ </if>
+ <if test="paymentId != null">
+ #{paymentId,jdbcType=BIGINT},
+ </if>
+ <if test="remarks != null">
+ #{remarks,jdbcType=VARCHAR},
+ </if>
+ <if test="operator != null">
+ #{operator,jdbcType=BIGINT},
+ </if>
+ <if test="operateDt != null">
+ #{operateDt,jdbcType=TIMESTAMP},
+ </if>
+ </trim>
+ </insert>
+ <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCardOperate">
+ <!--@mbg.generated-->
+ update se_card_operate
+ <set>
+ <if test="cardId != null">
+ card_id = #{cardId,jdbcType=BIGINT},
+ </if>
+ <if test="clientId != null">
+ client_id = #{clientId,jdbcType=BIGINT},
+ </if>
+ <if test="money != null">
+ money = #{money,jdbcType=FLOAT},
+ </if>
+ <if test="systemBalance != null">
+ system_balance = #{systemBalance,jdbcType=FLOAT},
+ </if>
+ <if test="tradeAmount != null">
+ trade_amount = #{tradeAmount,jdbcType=FLOAT},
+ </if>
+ <if test="price != null">
+ price = #{price,jdbcType=FLOAT},
+ </if>
+ <if test="cardCost != null">
+ card_cost = #{cardCost,jdbcType=INTEGER},
+ </if>
+ <if test="gift != null">
+ gift = #{gift,jdbcType=FLOAT},
+ </if>
+ <if test="noTradeAmount != null">
+ no_trade_amount = #{noTradeAmount,jdbcType=FLOAT},
+ </if>
+ <if test="operateType != null">
+ operate_type_id = #{operateType,jdbcType=BIGINT},
+ </if>
+ <if test="paymentId != null">
+ payment_id = #{paymentId,jdbcType=BIGINT},
+ </if>
+ <if test="remarks != null">
+ remarks = #{remarks,jdbcType=VARCHAR},
+ </if>
+ <if test="operator != null">
+ `operator` = #{operator,jdbcType=BIGINT},
+ </if>
+ <if test="operateDt != null">
+ operate_dt = #{operateDt,jdbcType=TIMESTAMP},
+ </if>
+ </set>
+ where id = #{id,jdbcType=BIGINT}
+ </update>
+ <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCardOperate">
+ <!--@mbg.generated-->
+ update se_card_operate
+ set card_id = #{cardId,jdbcType=BIGINT},
+ client_id = #{clientId,jdbcType=BIGINT},
+ money = #{money,jdbcType=FLOAT},
+ system_balance = #{systemBalance,jdbcType=FLOAT},
+ trade_amount = #{tradeAmount,jdbcType=FLOAT},
+ price = #{price,jdbcType=FLOAT},
+ card_cost = #{cardCost,jdbcType=INTEGER},
+ gift = #{gift,jdbcType=FLOAT},
+ no_trade_amount = #{noTradeAmount,jdbcType=FLOAT},
+ operate_type_id = #{operateType,jdbcType=BIGINT},
+ payment_id = #{paymentId,jdbcType=BIGINT},
+ remarks = #{remarks,jdbcType=VARCHAR},
+ `operator` = #{operator,jdbcType=BIGINT},
+ operate_dt = #{operateDt,jdbcType=TIMESTAMP}
+ where id = #{id,jdbcType=BIGINT}
+ </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java
index 3aa4298..86e6440 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java
@@ -87,11 +87,11 @@
schema = @Schema(implementation = BaUser.class))}
)
})
- @PostMapping(path = "some", consumes = MediaType.APPLICATION_JSON_VALUE)
+ @GetMapping(path = "some")
@SsoAop()
- public BaseResponse<QueryResultVo<List<BaUser>>> some(@RequestBody @Valid QueryVo vo) {
+ public BaseResponse<QueryResultVo<List<VoUserInfo>>> some(QueryVo vo) {
try {
- QueryResultVo<List<BaUser>> res = this.sv.selectSome(vo);
+ QueryResultVo<List<VoUserInfo>> res = this.sv.selectSome(vo);
return BaseResponseUtils.buildSuccess(res);
} catch (Exception e) {
log.error("鏌ヨ鐢ㄦ埛寮傚父", e);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java
index 77591e9..4708b90 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java
@@ -54,23 +54,68 @@
}
/**
- * 寰楀埌涓�涓敤鎴�
- *
- * @param vo 鏌ヨ鏉′欢鍊煎璞�
- * @return 鐢ㄦ埛瀹炰綋
+ * 鑾峰彇鐢ㄦ埛鍒楄〃
*/
- @SuppressWarnings("unchecked")
- public QueryResultVo<List<BaUser>> selectSome(QueryVo vo) {
- Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo);
- Long itemTotal = this.dao.selectTotal(params);
+ public QueryResultVo<List<VoUserInfo>> selectSome(QueryVo queryVo) {
+ Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
- QueryResultVo<List<BaUser>> rsVo = new QueryResultVo<>();
- rsVo.pageSize = vo.pageSize;
- rsVo.pageCurr = vo.pageCurr;
+ Long itemTotal = this.dao.getRecordCount(params);
+
+ QueryResultVo<List<VoUserInfo>> rsVo = new QueryResultVo<>() ;
+
+ Integer pageCurr = 0;
+ Integer pageSize = 10000;
+ rsVo.pageCurr = 1;
+ rsVo.pageSize = 10000;
+ if(queryVo.pageSize != null && queryVo.pageCurr != null) {
+ rsVo.pageSize = queryVo.pageSize ;
+ rsVo.pageCurr = queryVo.pageCurr;
+ pageSize = queryVo.pageSize ;
+ pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+ }
+ params.put("pageCurr", pageCurr);
+ params.put("pageSize", pageSize);
+
rsVo.calculateAndSet(itemTotal, params);
- rsVo.obj = this.dao.selectSome(params);
- return rsVo;
+ /**
+ * 鑾峰彇鐢ㄦ埛鍒楄〃锛屽彇鐢ㄦ埛ID
+ * 鏍规嵁鐢ㄦ埛ID鑾峰彇roleId鍒楄〃锛屽苟娣诲姞鍒拌繑鍥炲璞′腑
+ * 鏍规嵁鐢ㄦ埛ID鑾峰彇roleName鍒楄〃锛屽苟娣诲姞鍒拌繑鍥炲璞′腑
+ */
+ List<VoUserInfo> list_users = Optional.ofNullable(this.dao.getUsers(params)).orElse(new ArrayList<>());
+ if(list_users.size() > 0) {
+ for(int i = 0; i < list_users.size(); i++) {
+ VoUserInfo voUserInfo = list_users.get(i);
+ Long userId = voUserInfo.getUserId();
+
+ JSONArray array_roleIds = new JSONArray();
+ List<Map<String, Object>> list_roleIds = Optional.ofNullable(this.dao.getRoleIdsByUserId(userId)).orElse(new ArrayList<>());
+ for (int j = 0; j < list_roleIds.size(); j++) {
+ Map map_roleId = list_roleIds.get(j);
+ if(map_roleId != null) {
+ array_roleIds.add(map_roleId.get("roleId").toString());
+ }
+
+ }
+ List<Map<String, Object>> list_roleId = (List<Map<String, Object>>) JSON.parse(array_roleIds.toJSONString());
+
+ JSONArray array_roleNames = new JSONArray();
+ List<Map<String, Object>> list_roleNames = Optional.ofNullable(this.dao.getRoleNamesByUserId(userId)).orElse(new ArrayList<>());
+ for (int j = 0; j < list_roleNames.size(); j++) {
+ Map map_roleName = list_roleNames.get(j);
+ if(map_roleName != null) {
+ array_roleNames.add(map_roleName.get("roleName").toString());
+ }
+ }
+ List<Map<String, Object>> list_roleName = (List<Map<String, Object>>) JSON.parse(array_roleNames.toJSONString());
+
+ voUserInfo.setRoleIds(list_roleId);
+ voUserInfo.setRoleNames(list_roleName);
+ }
+ }
+ rsVo.obj = list_users;
+ return rsVo ;
}
/**
@@ -182,7 +227,7 @@
JSONArray array_permission = new JSONArray();
Map map = Optional.ofNullable(dao.getUserInfoById(userId)).orElse(new HashMap());
if(map.size() > 0) {
- voUserInfo.setUserId(String.valueOf(userId));
+ voUserInfo.setUserId(userId);
voUserInfo.setUserName(map.get("userName").toString());
}
@@ -216,7 +261,6 @@
voUserInfo.setRoleIds(list_roleIds);
voUserInfo.setRoleNames(list_roleNames);
voUserInfo.setPermissions(array_permission);
-
return voUserInfo;
}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
index 745991c..e31783a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
@@ -9,6 +9,7 @@
import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
import com.dy.pipIrrGlobal.util.Constant;
import com.dy.pipIrrGlobal.voSe.VoActiveCard;
+import com.dy.pipIrrSell.cardOperate.enums.OperateTypeENUM;
import com.dy.pipIrrSell.clientCard.CardStateENUM;
import com.dy.pipIrrSell.clientCard.ClientCardSv;
import com.dy.pipIrrSell.clientCard.LastOperateENUM;
@@ -262,7 +263,7 @@
//String clientNum = "";
Long clientId = 0L;
Integer cardCost = po.getCardCost();
- Double reissueAmount = po.getReissueAmount();
+ Float reissueAmount = po.getReissueAmount();
Long paymentId = po.getPaymentId();
String remarks = po.getRemarks();
Long operator = po.getOperator();
@@ -304,7 +305,7 @@
activeCard.setCardcost(cardCost);
activeCard.setPaymentid(paymentId);
activeCard.setReissueamount(reissueAmount);
- activeCard.setOperatetype(OperateTypeENUM.REPLACE.getCode());
+ activeCard.setOperatetype(OperateTypeENUM.REISSUE.getCode());
activeCard.setRemarks(remarks);
activeCard.setOperator(operator);
activeCard.setOperatedt(replaceTime);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/DtoActiveCard.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/DtoActiveCard.java
index b8b4e05..ab3451b 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/DtoActiveCard.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/DtoActiveCard.java
@@ -65,7 +65,7 @@
*/
@Schema(description = "琛ュ崱閲戦", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
@Min(value = 0, message="琛ュ崱閲戦涓嶈兘灏忎簬0")
- private Double reissueAmount;
+ private Float reissueAmount;
/**
* 鏀粯鏂瑰紡缂栧彿
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/OperateTypeENUM.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/OperateTypeENUM.java
deleted file mode 100644
index a4012fb..0000000
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/OperateTypeENUM.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.dy.pipIrrSell.activeCard;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author ZhuBaoMin
- * @date 2023/12/8 10:56
- * @LastEditTime 2023/12/8 10:56
- * @Description 寮�鍗�/琛ュ崱绫诲瀷鏋氫妇
- */
-
-@Getter
-@AllArgsConstructor
-public enum OperateTypeENUM {
- ACTIVE((byte)1, "寮�鍗�"),
- REPLACE((byte)2, "琛ュ崱");
-
- private final Byte code;
- private final String message;
-}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
new file mode 100644
index 0000000..592df3a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
@@ -0,0 +1,550 @@
+package com.dy.pipIrrSell.cardOperate;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.pojoSe.SeCardOperate;
+import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
+import com.dy.pipIrrGlobal.util.Constant;
+import com.dy.pipIrrSell.cardOperate.converter.RechargeDtoMapper;
+import com.dy.pipIrrSell.cardOperate.dto.*;
+import com.dy.pipIrrSell.cardOperate.enums.OperateTypeENUM;
+import com.dy.pipIrrSell.clientCard.CardStateENUM;
+import com.dy.pipIrrSell.clientCard.ClientCardSv;
+import com.dy.pipIrrSell.clientCard.LastOperateENUM;
+import com.dy.pipIrrSell.result.SellResultCode;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+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.time.format.DateTimeFormatter;
+import java.util.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-18 19:36
+ * @LastEditTime 2024-01-18 19:36
+ * @Description
+ */
+
+@Slf4j
+@Tag(name = "姘村崱鎿嶄綔绠$悊", description = "姘村崱鍚勭鎿嶄綔")
+@RestController
+@RequestMapping(path="card")
+@RequiredArgsConstructor
+public class CardOperateCtrl {
+ private final CardOperateSv cardOperateSv;
+ private final ClientCardSv clientCardSv;
+
+ /**
+ * 寮�鍗�
+ * @param po 寮�鍗′紶鍏ュ璞�
+ * @param bindingResult
+ * @return 姘村崱缂栧彿
+ */
+ @Operation(summary = "寮�鍗�", description = "鏂板紑鍐滄埛鍗�")
+ @ApiResponses(value = {
+ @ApiResponse(
+ responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+ description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+ content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+ schema = @Schema(implementation = Boolean.class))}
+ )
+ })
+ @PostMapping(path = "active", consumes = MediaType.APPLICATION_JSON_VALUE)
+ @Transactional(rollbackFor = Exception.class)
+ @SsoAop()
+ public BaseResponse<Boolean> add_active(@RequestBody @Valid DtoActiveCard po, BindingResult bindingResult){
+ if(bindingResult != null && bindingResult.hasErrors()){
+ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+ }
+
+ // 鑾峰彇5绾ц鏀垮尯鍒掍覆areaCode
+ String areaCode = String.valueOf(cardOperateSv.getAreaCodeByNum(po.getClientNum()));
+
+ /**
+ * 鏍规嵁琛屾斂鍖哄垝涓诧紙areaCode锛夊湪姘村崱琛ㄤ腑閽堝姘村崱缂栧彿锛坈ardNum锛夎繘琛屾ā绯婃煡璇�
+ * 濡傛灉4浣嶉『搴忓彿宸茬粡杈惧埌鏈�澶у�硷紝鎻愮ず鐢ㄦ埛鑱旂郴绯荤粺绠$悊鍛�
+ * 濡傛灉4浣嶉『搴忓彿鏈揪鍒版渶澶у�硷紝鍒欏姞1
+ * cardNum涓烘柊鐨勫崱鍙�
+ */
+ String cardNum = Optional.ofNullable(cardOperateSv.getCardNumOfMax(areaCode)).orElse("");
+ if(cardNum != null && cardNum.trim().length() > 0) {
+ Integer number = Integer.parseInt(cardNum.substring(12));
+ number = number + 1;
+ if(number > 9999) {
+ return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_OVERRUN.getMessage());
+ }
+ cardNum = cardNum.substring(0, 12) + String.format("%04d", number);
+ } else {
+ cardNum = areaCode + "0001";
+ }
+
+ /**
+ * cardAddr 姘村崱鍦板潃锛堜粎浠呭啓鍏ワ紝鏃犱笟鍔★級
+ * clientNum 鍐滄埛缂栧彿
+ * cardCost 鍗$墖璐圭敤
+ * amount 鍏呭�奸噾棰�
+ * reissueAmount 琛ュ崱閲戦锛岃ˉ鍗℃椂浣跨敤
+ * paymentId 鏀粯鏂瑰紡缂栧彿
+ * remarks 澶囨敞
+ * operator 鎿嶄綔浜虹紪鍙�
+ * activeTime 寮�鍗℃椂闂�
+ */
+ String cardAddr = po.getCardAddr();
+ String clientNum = po.getClientNum();
+ Integer cardCost = po.getCardCost();
+ Float amount = po.getAmount();
+ Long paymentId = po.getPaymentId();
+ String remarks = po.getRemarks();
+ Long operator = po.getOperator();
+ Date activeTime = new Date();
+
+ /**
+ * 鏍规嵁鍐滄埛缂栧彿鑾峰彇鍐滄埛ID
+ */
+ Long clientId = cardOperateSv.getClientIdByNum(clientNum);
+
+ /**
+ * 娣诲姞鍐滄埛鍗¤褰�
+ */
+ SeClientCard seClientCard = new SeClientCard();
+ seClientCard.setCardaddr(cardAddr);
+ seClientCard.setCardnum(cardNum);
+ seClientCard.setClientid(clientId);
+ seClientCard.setMoney(0f);
+ seClientCard.setState(CardStateENUM.NORMAL.getCode());
+ seClientCard.setCreatedt(activeTime);
+ seClientCard.setLastoper(LastOperateENUM.ACTIVE.getCode());
+
+ Long cardId = Optional.ofNullable(clientCardSv.add(seClientCard)).orElse(0L) ;
+ if(cardId == 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.ACTIVE_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
+ }
+
+ /**
+ * 娣诲姞寮�鍗¤褰�
+ */
+ SeCardOperate seCardOperate = new SeCardOperate();
+ seCardOperate.setCardId(cardId);
+ seCardOperate.setClientId(clientId);
+ seCardOperate.setCardCost(cardCost);
+ seCardOperate.setPaymentId(paymentId);
+ seCardOperate.setOperateType(OperateTypeENUM.ACTIVE.getCode());
+ seCardOperate.setRemarks(remarks);
+ seCardOperate.setOperator(operator);
+ seCardOperate.setOperateDt(activeTime);
+ Long rec = Optional.ofNullable(cardOperateSv.add(seCardOperate)).orElse(0L);
+ if(rec == 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.ACTIVE_FAIL_WRITE_ACTIVE_CARD_ERROR.getMessage());
+ }
+
+ /**
+ * 濡傛灉鎿嶄綔浜哄憳寮�鍗℃椂杈撳叆浜嗗厖鍊奸噾棰濓紝鍒欏紑鍗″悗璋冪敤鍏呭�煎姛鑳�
+ */
+ po.setCardNum(cardNum);
+ if(amount != null && amount > 0) {
+ po.setClientId(clientId);
+ DtoRecharge dtoRecharge = RechargeDtoMapper.INSTANCT.po2vo(po);
+ dtoRecharge.setMoney(0f);
+ dtoRecharge.setGift(0f);
+ dtoRecharge.setPrice(0f);
+ BaseResponse<Boolean> job = cardOperateSv.addRecharge(dtoRecharge);
+ if(!job.getCode().equals("0001")) {
+ return BaseResponseUtils.buildFail(SellResultCode.ACTIVE_FAIL_RECHARGE_EXCEPTION.getMessage());
+ }
+ }
+
+ Map map = new HashMap();
+ map.put("projectCode", Constant.projectCode_ym);
+ map.put("cardNum", cardNum);
+ return BaseResponseUtils.buildSuccess(map) ;
+ }
+
+ /**
+ * 琛ュ崱
+ * @param po
+ * @param bindingResult
+ * @return
+ */
+ @Operation(summary = "琛ュ崱", description = "琛ュ崱")
+ @ApiResponses(value = {
+ @ApiResponse(
+ responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+ description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+ content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+ schema = @Schema(implementation = Boolean.class))}
+ )
+ })
+ @PostMapping(path = "reissue", consumes = MediaType.APPLICATION_JSON_VALUE)
+ @Transactional(rollbackFor = Exception.class)
+ @SsoAop()
+ public BaseResponse<Boolean> add_reissue(@RequestBody @Valid com.dy.pipIrrSell.activeCard.DtoActiveCard po, BindingResult bindingResult){
+ if(bindingResult != null && bindingResult.hasErrors()){
+ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+ }
+
+ /**
+ * cardId 姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾洿鏂版按鍗¤〃鐢級
+ * cardNum 姘村崱缂栧彿
+ * clientId 鍐滄埛ID锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾坊鍔犺ˉ鍗′娇鐢級
+ * cardCost 鍗$墖璐圭敤
+ * reissueAmount 琛ュ崱閲戦锛岃ˉ鍗℃椂浣跨敤
+ * paymentId 鏀粯鏂瑰紡缂栧彿
+ * remarks 澶囨敞
+ * operator 鎿嶄綔浜虹紪鍙�
+ * activeTime 琛ュ崱鏃堕棿
+ */
+ Long cardId = 0L;
+ Long clientId = 0L;
+ String cardNum = po.getCardNum();
+ Integer cardCost = po.getCardCost();
+ Float reissueAmount = po.getReissueAmount();
+ Long paymentId = po.getPaymentId();
+ String remarks = po.getRemarks();
+ Long operator = po.getOperator();
+ Date reissueTime = new Date();
+
+ /**
+ * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿
+ */
+ Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
+ if(map == null || map.size() <= 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_ERROR.getMessage());
+ }
+ cardId = Long.parseLong(map.get("cardId").toString());
+ clientId = Long.parseLong(map.get("clientId").toString());
+
+ /**
+ * 淇敼鍐滄埛鍗′俊鎭細
+ * 琛ュ崱鏃堕棿
+ * 鏈�鍚庢搷浣滅被鍨�-2
+ */
+ SeClientCard seClientCard = new SeClientCard();
+ seClientCard.setId(cardId);
+ seClientCard.setReplacedt(reissueTime);
+ seClientCard.setLastoper(LastOperateENUM.REPLACE.getCode());
+ Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
+ if(rec_updateClientCard == 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.REPLACE_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
+ }
+
+ /**
+ * 娣诲姞琛ュ崱璁板綍
+ */
+ SeCardOperate seCardOperate = new SeCardOperate();
+ seCardOperate.setCardId(cardId);
+ seCardOperate.setClientId(clientId);
+ seCardOperate.setCardCost(cardCost);
+ seCardOperate.setPaymentId(paymentId);
+ seCardOperate.setNoTradeAmount(reissueAmount);
+ seCardOperate.setOperateType(OperateTypeENUM.REISSUE.getCode());
+ seCardOperate.setRemarks(remarks);
+ seCardOperate.setOperator(operator);
+ seCardOperate.setOperateDt(reissueTime);
+ Long rec = Optional.ofNullable(cardOperateSv.add(seCardOperate)).orElse(0L);
+ if(rec == 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.REPLACE_FAIL_WRITE_RECHARGE_ERROR.getMessage());
+ }
+
+ return BaseResponseUtils.buildSuccess(true) ;
+ }
+
+ /**
+ * 鍏呭��
+ * @param po 鍏呭�间紶杈撳璞�
+ * @param bindingResult
+ * @return
+ */
+ @Operation(summary = "鍏呭��", description = "鍏呭��")
+ @ApiResponses(value = {
+ @ApiResponse(
+ responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+ description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+ content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+ schema = @Schema(implementation = Boolean.class))}
+ )
+ })
+ @PostMapping(path = "recharge", consumes = MediaType.APPLICATION_JSON_VALUE)
+ @Transactional(rollbackFor = Exception.class)
+ @SsoAop()
+ public BaseResponse<Boolean> add(@RequestBody @Valid DtoRecharge po, BindingResult bindingResult){
+ if(bindingResult != null && bindingResult.hasErrors()){
+ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+ }
+ return cardOperateSv.addRecharge(po);
+ }
+
+ /**
+ * 閿�鍗�
+ * @param po
+ * @param bindingResult
+ * @return
+ */
+ @Operation(summary = "娣诲姞娉ㄩ攢璁板綍", description = "娣诲姞娉ㄩ攢璁板綍")
+ @ApiResponses(value = {
+ @ApiResponse(
+ responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+ description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+ content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+ schema = @Schema(implementation = Boolean.class))}
+ )
+ })
+ @PostMapping(path = "cancel", consumes = MediaType.APPLICATION_JSON_VALUE)
+ @Transactional(rollbackFor = Exception.class)
+ @SsoAop()
+ public BaseResponse<Boolean> add(@RequestBody @Valid DtoCancel po, BindingResult bindingResult){
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ if(bindingResult != null && bindingResult.hasErrors()){
+ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+ }
+
+ /**
+ * cardId 姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屼慨鏀瑰啘鎴峰崱浣跨敤锛�
+ * clientId 鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛�
+ * cardNum 姘村崱缂栧彿
+ * refund 閫�娆鹃噾棰�
+ * refundType 閫�娆炬柟寮�
+ * remarks 澶囨敞
+ * operator 鎿嶄綔浜虹紪鍙�
+ * cancelTime 娉ㄩ攢鏃堕棿
+ */
+ Long cardId = 0L;
+ Long clientId = 0L;
+ String cardNum = po.getCardNum();
+ Float refund = po.getRefund();
+ Byte refundType = po.getRefundType();
+ String remarks = po.getRemarks();
+ Long operator = po.getOperator();
+ Date cancelTime = new Date();
+
+ /**
+ * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿
+ */
+ Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
+ if(map == null || map.size() <= 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
+ }
+ cardId = Long.parseLong(map.get("cardId").toString());
+ clientId = Long.parseLong(map.get("clientId").toString());
+
+ /**
+ * 淇敼鍐滄埛鍗′俊鎭細
+ * 娉ㄩ攢鏃堕棿
+ * 鏈�鍚庢搷浣滅被鍨�-4
+ */
+ SeClientCard seClientCard = new SeClientCard();
+ seClientCard.setId(cardId);
+ seClientCard.setCanceldt(cancelTime);
+ seClientCard.setMoney(0f);
+ seClientCard.setState(CardStateENUM.CANCELLED.getCode());
+ seClientCard.setLastoper(LastOperateENUM.CANCEL.getCode());
+ Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
+ if(rec_updateClientCard == 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.CANCEL_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
+ }
+
+ /**
+ * 娣诲姞娉ㄩ攢璁板綍
+ */
+ SeCardOperate seCardOperate = new SeCardOperate();
+ seCardOperate.setCardId(cardId);
+ seCardOperate.setClientId(clientId);
+ seCardOperate.setTradeAmount(-refund);
+ seCardOperate.setOperateType(OperateTypeENUM.CANCEL.getCode());
+ seCardOperate.setRemarks(remarks);
+ seCardOperate.setOperator(operator);
+ seCardOperate.setOperateDt(cancelTime);
+
+ Long rec = Optional.ofNullable(cardOperateSv.add(seCardOperate)).orElse(0L);
+ if(rec == 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.CANCEL_FAIL_WRITE_CANCELL_ERROR.getMessage());
+ }
+
+ return BaseResponseUtils.buildSuccess(true) ;
+ }
+
+ /**
+ * 鎸傚け
+ * @param po
+ * @param bindingResult
+ * @return
+ */
+ @Operation(summary = "娣诲姞鎸傚け璁板綍", description = "娣诲姞鎸傚け璁板綍")
+ @ApiResponses(value = {
+ @ApiResponse(
+ responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+ description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+ content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+ schema = @Schema(implementation = Boolean.class))}
+ )
+ })
+ @PostMapping(path = "loss", consumes = MediaType.APPLICATION_JSON_VALUE)
+ @Transactional(rollbackFor = Exception.class)
+ @SsoAop()
+ public BaseResponse<Boolean> add(@RequestBody @Valid DtoLoss po, BindingResult bindingResult){
+ if(bindingResult != null && bindingResult.hasErrors()){
+ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+ }
+
+ /**
+ * cardId 姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛�
+ * clientId 鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛�
+ * cardNum 姘村崱缂栧彿
+ * money 浣欓
+ * refund 閫�娆鹃噾棰�
+ * remarks 澶囨敞
+ * operator 鎿嶄綔浜虹紪鍙�
+ * lossTime 鎸傚け鏃堕棿
+ */
+ Long cardId = 0L;
+ Long clientId = 0L;
+ String cardNum = po.getCardNum();
+ Float money = po.getMoney();
+ Float refund = po.getRefund();
+ String remarks = po.getRemarks();
+ Long operator = po.getOperator();
+ Date lossTime = new Date();
+
+ /**
+ * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿
+ */
+ Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
+ if(map == null || map.size() <= 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
+ }
+ cardId = Long.parseLong(map.get("cardId").toString());
+ clientId = Long.parseLong(map.get("clientId").toString());
+
+ /**
+ * 淇敼鍐滄埛鍗′俊鎭細
+ * 鎸傚け鏃堕棿
+ * 鏈�鍚庢搷浣滅被鍨�-4
+ */
+ SeClientCard seClientCard = new SeClientCard();
+ seClientCard.setId(cardId);
+ seClientCard.setMoney(money);
+ seClientCard.setLossdtdt(lossTime);
+ seClientCard.setState(CardStateENUM.LOSS.getCode());
+ seClientCard.setLastoper(LastOperateENUM.LOSS.getCode());
+ Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
+ if(rec_updateClientCard == 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.LOSS_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
+ }
+
+ /**
+ * 娣诲姞鎸傚け璁板綍
+ */
+ SeCardOperate seCardOperate = new SeCardOperate();
+ seCardOperate.setCardId(cardId);
+ seCardOperate.setClientId(clientId);
+ seCardOperate.setMoney(money);
+ seCardOperate.setTradeAmount(-refund);
+ seCardOperate.setOperateType(OperateTypeENUM.LOSS.getCode());
+ seCardOperate.setRemarks(remarks);
+ seCardOperate.setOperator(operator);
+ seCardOperate.setOperateDt(lossTime);
+ Long rec = Optional.ofNullable(cardOperateSv.add(seCardOperate)).orElse(0L);
+ if(rec == 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.LOSS_FAIL_WRITE_LOSS_ERROR.getMessage());
+ }
+
+ return BaseResponseUtils.buildSuccess(true) ;
+ }
+
+ @Operation(summary = "娣诲姞鍐叉璁板綍", description = "娣诲姞鍐叉璁板綍")
+ @ApiResponses(value = {
+ @ApiResponse(
+ responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+ description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+ content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+ schema = @Schema(implementation = Boolean.class))}
+ )
+ })
+ @PostMapping(path = "reversal", consumes = MediaType.APPLICATION_JSON_VALUE)
+ @Transactional(rollbackFor = Exception.class)
+ @SsoAop()
+ public BaseResponse<Boolean> add(@RequestBody @Valid DtoReversal po, BindingResult bindingResult){
+ if(bindingResult != null && bindingResult.hasErrors()){
+ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+ }
+
+ /**
+ * cardId 姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屼慨鏀瑰啘鎴峰崱浣跨敤锛�
+ * clientId 鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛�
+ * cardNum 姘村崱缂栧彿
+ * cardBalance 鍗$墖浣欓
+ * systemBalance 绯荤粺浣欓
+ * remarks 澶囨敞
+ * operator 鎿嶄綔浜虹紪鍙�
+ * reversalTime 鍐叉鏃堕棿
+ */
+ Long cardId = 0L;
+ Long clientId = 0L;
+ String cardNum = po.getCardNum();
+ Float cardBalance = po.getCardBalance();
+ Float systemBalance = po.getSystemBalance();
+ String remarks = po.getRemarks();
+ Long operator = po.getOperator();
+ Date reversalTime = new Date();
+
+ /**
+ * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿
+ */
+ Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
+ if(map == null || map.size() <= 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
+ }
+ cardId = Long.parseLong(map.get("cardId").toString());
+ clientId = Long.parseLong(map.get("clientId").toString());
+
+ /**
+ * 淇敼鍐滄埛鍗′俊鎭細
+ * 鎸傚け鏃堕棿
+ * 鏈�鍚庢搷浣滅被鍨�-4
+ */
+ SeClientCard seClientCard = new SeClientCard();
+ seClientCard.setId(cardId);
+ seClientCard.setReversaldt(reversalTime);
+ seClientCard.setMoney(cardBalance);
+ seClientCard.setLastoper(LastOperateENUM.REVERSAL.getCode());
+ Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
+ if(rec_updateClientCard == 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.RECHARGE_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
+ }
+
+ /**
+ * 娣诲姞鍐叉璁板綍
+ */
+ SeCardOperate seCardOperate = new SeCardOperate();
+ seCardOperate.setCardId(cardId);
+ seCardOperate.setClientId(clientId);
+ seCardOperate.setMoney(cardBalance);
+ seCardOperate.setSystemBalance(systemBalance);
+ seCardOperate.setOperateType(OperateTypeENUM.REVERSAL.getCode());
+ seCardOperate.setRemarks(remarks);
+ seCardOperate.setOperator(operator);
+ seCardOperate.setOperateDt(reversalTime);
+ Long rec = Optional.ofNullable(cardOperateSv.add(seCardOperate)).orElse(0L);
+ if(rec == 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.REVERSAL_FAIL_WRITE_REVERSAL_ERROR.getMessage());
+ }
+
+ return BaseResponseUtils.buildSuccess(true) ;
+ }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
new file mode 100644
index 0000000..2ae05b5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
@@ -0,0 +1,177 @@
+package com.dy.pipIrrSell.cardOperate;
+
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+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.pipIrrSell.cardOperate.dto.DtoRecharge;
+import com.dy.pipIrrSell.cardOperate.enums.OperateTypeENUM;
+import com.dy.pipIrrSell.clientCard.ClientCardSv;
+import com.dy.pipIrrSell.clientCard.LastOperateENUM;
+import com.dy.pipIrrSell.result.SellResultCode;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-18 19:36
+ * @LastEditTime 2024-01-18 19:36
+ * @Description
+ */
+
+@Slf4j
+@Service
+public class CardOperateSv {
+ @Autowired
+ private SeCardOperateMapper seCardOperateMapper;
+
+ @Autowired
+ private SeClientCardMapper seClientCardMapper;
+
+ @Autowired
+ private SeClientMapper seClientMapper;
+
+ @Autowired
+ private ClientCardSv clientCardSv;
+
+
+ /**
+ * 娣诲姞寮�鍗¤褰�
+ * @param po 姘村崱鎿嶄綔瀵硅薄
+ * @return 寮�鍗¤褰曚富閿�
+ */
+ public Long activeCard(SeCardOperate po) {
+ seCardOperateMapper.insert(po);
+ return po.getId();
+ }
+
+ /**
+ * 鏍规嵁鍐滄埛缂栧彿鑾峰彇5绾ц鏀垮尯鍒掍唬鐮侊紝寮�鍗′娇鐢�
+ * @param clientNum 鍐滄埛缂栧彿
+ * @return 5绾ц鏀垮尯鍒掍唬鐮�
+ */
+ public Long getAreaCodeByNum(String clientNum) {
+ return seClientMapper.getAreaCodeByNum(clientNum);
+ }
+
+ /**
+ * 鏍规嵁琛屾斂鍖哄垝涓叉ā鍧楁煡璇㈡按鍗$紪鍙凤紝寮�鍗′娇鐢�
+ * @param areaCode
+ * @return
+ */
+ String getCardNumOfMax(String areaCode) {
+ return seClientCardMapper.getCardNumOfMax(areaCode);
+ }
+
+ /**
+ * 鏍规嵁鍐滄埛缂栧彿鑾峰彇鍐滄埛ID锛屽紑鍗′娇鐢�
+ * @param clientNum
+ * @return
+ */
+ public Long getClientIdByNum(String clientNum) {
+ return seClientMapper.getClientIdByNum(clientNum);
+ }
+
+ /**
+ * 娣诲姞姘村崱鎿嶄綔瀵硅薄锛屽悇鎿嶄綔閮戒娇鐢�
+ * @param po 姘村崱鎿嶄綔瀵硅薄
+ * @return 鎿嶄綔璁板綍涓婚敭
+ */
+ public Long add(SeCardOperate po) {
+ seCardOperateMapper.insert(po);
+ return po.getId();
+ }
+
+ /**
+ * 娣诲姞鍏呭�艰褰�
+ * 淇敼鍐滄埛淇℃伅銆佹坊鍔犲厖鍊艰褰�
+ * @param po
+ * @return
+ */
+ public BaseResponse<Boolean> addRecharge(DtoRecharge po){
+ /**
+ * cardId 姘村崱缂栧彿锛堜緷鎹按鍗$紪鍙疯幏鍙栵級
+ * clientId 鍐滄埛缂栧彿锛堜緷鎹按鍗$紪鍙疯幏鍙栵級
+ * cardNum 姘村崱缂栧彿
+ * money 鍗$墖浣欓
+ * amount 鍏呭�奸噾棰�
+ * gift 璧犻�侀噾棰�
+ * afterRecharge 鍏呭�煎悗浣欓
+ * paymentId 鏀粯鏂瑰紡缂栧彿
+ * price 姘翠环
+ * remarks 澶囨敞
+ * operator 鎿嶄綔浜虹紪鍙�
+ * rechargeTime 鍏呭�兼椂闂�
+ */
+ Long cardId = 0L;
+ Long clientId = 0L;
+ String cardNum = po.getCardNum();
+ Float money = po.getMoney();
+ Float amount = po.getAmount();
+ Float gift = po.getGift();
+ Float afterRecharge = money + amount + gift;
+ Long paymentId = po.getPaymentId();
+ Float price = po.getPrice();
+ String remarks = po.getRemarks();
+ Long operator = po.getOperator();
+ Date rechargeTime = new Date();
+
+ /**
+ * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿
+ */
+ Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
+ if(map == null || map.size() <= 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
+ }
+ cardId = Long.parseLong(map.get("cardId").toString());
+ clientId = Long.parseLong(map.get("clientId").toString());
+
+ /**
+ * 淇敼鍐滄埛鍗′俊鎭細
+ * 琛ュ崱鏃堕棿
+ * 鏈�鍚庢搷浣滅被鍨�-2
+ */
+ SeClientCard seClientCard = new SeClientCard();
+ seClientCard.setId(cardId);
+ seClientCard.setMoney(afterRecharge);
+ seClientCard.setRechargedt(rechargeTime);
+ seClientCard.setLastoper(LastOperateENUM.RECHARGE.getCode ());
+ Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
+ if(rec_updateClientCard == 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.RECHARGE_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
+ }
+
+ /**
+ * 娣诲姞鍏呭�艰褰�
+ */
+ SeCardOperate seCardOperate = new SeCardOperate();
+ seCardOperate.setCardId(cardId);
+ seCardOperate.setClientId(clientId);
+ seCardOperate.setMoney(money);
+ seCardOperate.setTradeAmount(amount);
+ seCardOperate.setGift(gift);
+ seCardOperate.setOperateType(OperateTypeENUM.RECHARGE.getCode());
+ seCardOperate.setPaymentId(paymentId);
+ seCardOperate.setPrice(price);
+ seCardOperate.setRemarks(remarks);
+ seCardOperate.setOperator(operator);
+ seCardOperate.setOperateDt(rechargeTime);
+
+ seCardOperateMapper.insert(seCardOperate);
+ Long rec = Optional.ofNullable(seCardOperate.getId()).orElse(0L);
+ if(rec == 0) {
+ return BaseResponseUtils.buildFail(SellResultCode.REPLACE_FAIL_WRITE_RECHARGE_ERROR.getMessage());
+ }
+
+ return BaseResponseUtils.buildSuccess(true) ;
+ }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/converter/RechargeDtoMapper.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/converter/RechargeDtoMapper.java
new file mode 100644
index 0000000..fb35ed1
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/converter/RechargeDtoMapper.java
@@ -0,0 +1,26 @@
+package com.dy.pipIrrSell.cardOperate.converter;
+
+import com.dy.pipIrrSell.cardOperate.dto.DtoActiveCard;
+import com.dy.pipIrrSell.cardOperate.dto.DtoRecharge;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-19 9:41
+ * @LastEditTime 2024-01-19 9:41
+ * @Description
+ */
+
+@Mapper
+public interface RechargeDtoMapper {
+ RechargeDtoMapper INSTANCT = Mappers.getMapper(RechargeDtoMapper.class);
+
+ @Mapping(target = "cardNum", source = "cardNum")
+ @Mapping(target = "amount", source = "amount")
+ @Mapping(target = "paymentId", source = "paymentId")
+ @Mapping(target = "remarks", source = "remarks")
+ @Mapping(target = "operator", source = "operator")
+ DtoRecharge po2vo(DtoActiveCard po);
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoActiveCard.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoActiveCard.java
new file mode 100644
index 0000000..4f8f7ad
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoActiveCard.java
@@ -0,0 +1,89 @@
+package com.dy.pipIrrSell.cardOperate.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Positive;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-18 19:44
+ * @LastEditTime 2024-01-18 19:44
+ * @Description
+ */
+
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "寮�鍗�/琛ュ崱浼犲叆瀵硅薄")
+public class DtoActiveCard {
+ public static final long serialVersionUID = 202401181945001L;
+ /**
+ * 姘村崱鍦板潃锛屼粎淇濆瓨锛屾棤涓氬姟
+ */
+ @Schema(description = "姘村崱鍦板潃", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @NotBlank(message = "姘村崱鍦板潃涓嶈兘涓虹┖")
+ private String cardAddr;
+
+ /**
+ * 鍐滄埛缂栧彿锛屽紑鍗′娇鐢�
+ */
+ @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ private String clientNum;
+
+ /**
+ * 鍐滄埛ID锛堜富閿級锛屼笉鏄紑鍗℃帴鍙d紶鍏ワ紝鐢卞啘鎴风紪鍙疯幏寰楋紝淇濆瓨寮�鍗¤褰曞拰鍏呭�艰褰曢兘闇�瑕�
+ */
+ @Schema(description = "鍐滄埛ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ private Long clientId;
+
+ /**
+ * 姘村崱缂栧彿锛屼笉鏄紑鍗℃帴鍙d紶鍏ワ紝鐢卞啘鎴风紪鍙疯幏寰楋紝鍏呭�奸渶瑕�
+ */
+ @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ private String cardNum;
+
+ /**
+ * 鍗$墖璐圭敤
+ */
+ @Schema(description = "鍗$墖璐圭敤", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Positive(message = "鍗$墖璐圭敤蹇呴』涓哄ぇ浜�0鐨勬暣鏁�")
+ private Integer cardCost;
+
+ /**
+ * 鍏呭�奸噾棰�
+ */
+ @Schema(description = "鍏呭�奸噾棰�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Min(value = 0, message="鍏呭�奸噾棰濅笉鑳藉皬浜�0")
+ private Float amount;
+
+ /**
+ * 琛ュ崱閲戦
+ */
+ @Schema(description = "琛ュ崱閲戦", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Min(value = 0, message="琛ュ崱閲戦涓嶈兘灏忎簬0")
+ private Double reissueAmount;
+
+ /**
+ * 鏀粯鏂瑰紡缂栧彿
+ */
+ @Schema(description = "鏀粯鏂瑰紡缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Positive(message = "鏀粯鏂瑰紡缂栧彿蹇呴』涓哄ぇ浜�0鐨勬暣鏁�")
+ private Long paymentId;
+
+ /**
+ * 澶囨敞淇℃伅
+ */
+ @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ private String remarks;
+
+ /**
+ * 鎿嶄綔浜虹紪鍙�
+ */
+ @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
+ private Long operator;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoCancel.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoCancel.java
new file mode 100644
index 0000000..250b1e1
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoCancel.java
@@ -0,0 +1,64 @@
+package com.dy.pipIrrSell.cardOperate.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Positive;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-19 10:08
+ * @LastEditTime 2024-01-19 10:08
+ * @Description
+ */
+
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "娉ㄩ攢浼犲叆瀵硅薄")
+public class DtoCancel {
+ public static final long serialVersionUID = 202401191009001L;
+
+ /**
+ * 姘村崱缂栧彿
+ */
+ @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @NotBlank
+ private String cardNum;
+
+ /**
+ * 鍐滄埛缂栧彿
+ */
+ //@Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ //private Long clientId;
+
+ /**
+ * 閫�娆鹃噾棰�
+ */
+ @Schema(description = "閫�娆鹃噾棰�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Min(value = 0, message="閫�娆鹃噾棰濅笉鑳藉皬浜�0")
+ private Float refund;
+
+ /**
+ * 閫�娆炬柟寮�;1-鐜伴噾
+ */
+ @Schema(description = "閫�娆炬柟寮�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Positive(message = "閫�娆炬柟寮忓繀椤讳负澶т簬0鐨勬暣鏁�")
+ private Byte refundType;
+
+ /**
+ * 澶囨敞淇℃伅
+ */
+ @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ private String remarks;
+
+ /**
+ * 鎿嶄綔浜虹紪鍙�
+ */
+ @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
+ private Long operator;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoLoss.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoLoss.java
new file mode 100644
index 0000000..60008b7
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoLoss.java
@@ -0,0 +1,58 @@
+package com.dy.pipIrrSell.cardOperate.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Positive;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-19 10:32
+ * @LastEditTime 2024-01-19 10:32
+ * @Description
+ */
+
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鎸傚け浼犲叆瀵硅薄")
+public class DtoLoss {
+ public static final long serialVersionUID = 202401191033001L;
+
+ /**
+ * 姘村崱缂栧彿
+ */
+ @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+ private String cardNum;
+
+ /**
+ * 浣欓
+ */
+ @Schema(description = "浣欓", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Min(value = 0, message="浣欓涓嶈兘灏忎簬0")
+ private Float money;
+
+ /**
+ * 閫�娆鹃噾棰�
+ */
+ @Schema(description = "閫�娆鹃噾棰�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Min(value = 0, message="閫�娆鹃噾棰濅笉鑳藉皬浜�0")
+ private Float refund;
+
+ /**
+ * 澶囨敞淇℃伅
+ */
+ @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ private String remarks;
+
+ /**
+ * 鎿嶄綔浜虹紪鍙�
+ */
+ @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
+ private Long operator;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoRecharge.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoRecharge.java
new file mode 100644
index 0000000..d1e4f28
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoRecharge.java
@@ -0,0 +1,84 @@
+package com.dy.pipIrrSell.cardOperate.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Positive;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-19 9:06
+ * @LastEditTime 2024-01-19 9:06
+ * @Description
+ */
+
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍏呭�间紶鍏ュ璞�")
+public class DtoRecharge {
+ public static final long serialVersionUID = 202401190907001L;
+
+ /**
+ * 姘村崱缂栧彿
+ */
+ @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+ private String cardNum;
+
+ /**
+ * 鍐滄埛ID锛屼笉鏄厖鍊兼帴鍙d紶鍏ワ紝鐢卞紑鍗″璞′紶鍏ワ紝淇濆瓨鍏呭�艰褰曢渶瑕�
+ */
+ @Schema(description = "鍐滄埛ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ private Long clientId;
+
+ /**
+ * 鍗$墖浣欓
+ */
+ @Schema(description = "鍗$墖浣欓", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Min(value = 0, message="鍗$墖浣欓涓嶈兘灏忎簬0")
+ private Float money;
+
+ /**
+ * 鍏呭�奸噾棰�
+ */
+ @Schema(description = "鍏呭�奸噾棰�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Min(value = 0, message="鍏呭�奸噾棰濅笉鑳藉皬浜�0")
+ private Float amount;
+
+ /**
+ * 璧犻�侀噾棰�
+ */
+ @Schema(description = "璧犻�侀噾棰�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Min(value = 0, message="璧犻�侀噾棰濅笉鑳藉皬浜�0")
+ private Float gift;
+
+ /**
+ * 浠樻鏂瑰紡缂栧彿
+ */
+ @Schema(description = "浠樻鏂瑰紡缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ private Long paymentId;
+
+ /**
+ * 姘翠环
+ */
+ @Schema(description = "姘翠环", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Min(value = 0, message="姘翠环涓嶈兘灏忎簬0")
+ private Float price;
+
+ /**
+ * 澶囨敞淇℃伅
+ */
+ @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ private String remarks;
+
+ /**
+ * 鎿嶄綔浜虹紪鍙�
+ */
+ @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
+ private Long operator;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoReversal.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoReversal.java
new file mode 100644
index 0000000..1fde2fc
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoReversal.java
@@ -0,0 +1,64 @@
+package com.dy.pipIrrSell.cardOperate.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Positive;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-19 13:36
+ * @LastEditTime 2024-01-19 13:36
+ * @Description
+ */
+
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍐叉浼犲叆瀵硅薄")
+public class DtoReversal {
+ public static final long serialVersionUID = 202401191337001L;
+
+ /**
+ * 姘村崱缂栧彿
+ */
+ @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+ private String cardNum;
+
+ /**
+ * 鍐滄埛缂栧彿
+ */
+ //@Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ //private String clientNum;
+
+ /**
+ * 鍗$墖浣欓
+ */
+ @Schema(description = "鍗$墖浣欓", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Min(value = 0, message="鍗$墖浣欓涓嶈兘灏忎簬0")
+ private Float cardBalance;
+
+ /**
+ * 绯荤粺浣欓
+ */
+ @Schema(description = "绯荤粺浣欓", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Min(value = 0, message="绯荤粺浣欓涓嶈兘灏忎簬0")
+ private Float systemBalance;
+
+ /**
+ * 澶囨敞淇℃伅
+ */
+ @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ private String remarks;
+
+ /**
+ * 鎿嶄綔浜虹紪鍙�
+ */
+ @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+ @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
+ private Long operator;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/enums/OperateTypeENUM.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/enums/OperateTypeENUM.java
new file mode 100644
index 0000000..595627b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/enums/OperateTypeENUM.java
@@ -0,0 +1,27 @@
+package com.dy.pipIrrSell.cardOperate.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/8 10:56
+ * @LastEditTime 2023/12/8 10:56
+ * @Description 寮�鍗�/琛ュ崱绫诲瀷鏋氫妇
+ */
+
+@Getter
+@AllArgsConstructor
+public enum OperateTypeENUM {
+ ACTIVE((byte)1, "寮�鍗�"),
+ RECHARGE((byte)2, "鍏呭��"),
+ CANCEL((byte)3, "閿�鍗�"),
+ REISSUE((byte)4, "琛ュ崱"),
+ REFUND((byte)5, "琛ユ墸"),
+ LOSS((byte)6, "鎸傚け"),
+ REVERSAL((byte)7, "鍐叉"),
+ UNLOCK((byte)8, "瑙i攣");
+
+ private final Byte code;
+ private final String message;
+}
--
Gitblit v1.8.0