From 9f3c4a33279f10ed420d604765487558ab0744f0 Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期五, 11 四月 2025 11:42:21 +0800 Subject: [PATCH] 获取已完成灌溉计划接口增加分页功能 --- pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java | 21 + pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java | 137 +++++++++------ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java | 9 pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml | 14 + pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java | 15 + pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java | 7 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/dto/Client.java | 22 ++ pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java | 208 +++++++++++++++++++++-- pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java | 16 + pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoIntakeSimple.java | 30 +++ pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java | 18 + pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml | 26 ++ 12 files changed, 431 insertions(+), 92 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java index c6f6114..896603a 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIrrigatePlanMapper.java @@ -10,6 +10,7 @@ import java.util.Date; import java.util.List; +import java.util.Map; /** * @author ZhuBaoMin @@ -74,11 +75,17 @@ List<VoPlans> getNotCompletePlans(); /** + * 鑾峰彇宸插畬鎴愮殑璁″垝鏁伴噺 + * @return + */ + Long getCompletedPlansCount(Map<String, Object> params); + + /** * 鑾峰彇宸插畬鎴愮殑璁″垝鍒楄〃锛屽皬绋嬪簭璁″垝鍒楄〃椤典娇鐢� * 璁″垝鐘舵�侊細1-鑽夌锛�2-鏈墽琛岋紝3-鎵ц涓紝4-宸插畬鎴� * @return */ - List<VoPlans> getCompletedPlans(); + List<VoPlans> getCompletedPlans(Map<String, Object> params); /** * 鏍规嵁璁″垝ID鑾峰彇寰呯粓姝㈣鍒掔殑缁撴潫鏃堕棿锛氭湭鍒犻櫎銆佹湭缁堟銆佸凡鍙戝竷銆佸綋鍓嶆椂闂村皬浜庤鍒掔粨鏉熸椂闂� diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java index 1a44d5e..3ae6c73 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java @@ -2,10 +2,7 @@ import com.dy.pipIrrGlobal.pojoPr.PrIntake; -import com.dy.pipIrrGlobal.voPr.IntakeUpdateLngLat; -import com.dy.pipIrrGlobal.voPr.VoAllIntake; -import com.dy.pipIrrGlobal.voPr.VoIntake; -import com.dy.pipIrrGlobal.voPr.VoOnLineIntake; +import com.dy.pipIrrGlobal.voPr.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -197,4 +194,15 @@ */ int updateByPrimaryKeySelective1(IntakeUpdateLngLat record); + /** + * 鑾峰彇鏈粦瀹氬埌杞亴缁勭殑鍙栨按鍙e垪琛� + * @return + */ + List<VoIntakeSimple> getFreeIntakes(); + + /** + * 鑾峰彇鏈粦瀹氳櫄鎷熷崱鐨勫彇姘村彛鍒楄〃锛岀粰鍙栨按鍙g粦铏氭嫙鍗′娇鐢� + * @return + */ + List<VoIntakeSimple> getNotLinkVcIntakes(); } diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoIntakeSimple.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoIntakeSimple.java new file mode 100644 index 0000000..883a151 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoIntakeSimple.java @@ -0,0 +1,30 @@ +package com.dy.pipIrrGlobal.voPr; + +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +/** + * @author ZhuBaoMin + * @date 2025-04-09 17:12 + * @LastEditTime 2025-04-09 17:12 + * @Description 鍙栨按鍙g畝鍗曡鍥惧璞★紝杞亴缁勭粦瀹氬彇姘村彛浣跨敤 + */ + +@Data +@JsonPropertyOrder({"intakeId", "intakeName"}) +public class VoIntakeSimple { + public static final long serialVersionUID = 202504091713001L; + + /** + * 鍙栨按鍙D + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long intakeId; + + /** + * 鍙栨按鍙e悕绉� + */ + private String intakeName; +} diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml index 63e9a5e..449f82d 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml @@ -303,6 +303,15 @@ ORDER BY plan.plan_state DESC </select> + <!--鑾峰彇宸插畬鎴愮殑璁″垝鏁伴噺--> + <select id="getCompletedPlansCount" resultType="java.lang.Long"> + SELECT + COUNT(*) AS recordCount + FROM ir_irrigate_plan plan + INNER JOIN ir_project pro ON pro.id = plan.project_id + WHERE plan.deleted = 0 AND ((plan.plan_state = 2 AND NOW() >= plan.plan_stop_time) OR (plan.executing_state = 3)) + </select> + <!--鑾峰彇宸插畬鎴愮殑璁″垝鍒楄〃锛屽皬绋嬪簭璁″垝鍒楄〃椤典娇鐢�--> <select id="getCompletedPlans" resultType="com.dy.pipIrrGlobal.voIr.VoPlans"> SELECT @@ -318,6 +327,11 @@ INNER JOIN ir_project pro ON pro.id = plan.project_id WHERE plan.deleted = 0 AND ((plan.plan_state = 2 AND NOW() >= plan.plan_stop_time) OR (plan.executing_state = 3)) ORDER BY plan.plan_state 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鑾峰彇寰呯粓姝㈣鍒掔殑缁撴潫鏃堕棿锛氭湭鍒犻櫎銆佹湭缁堟銆佸凡鍙戝竷銆佸綋鍓嶆椂闂村皬浜庤鍒掔粨鏉熸椂闂�--> diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml index af44947..46397ea 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml @@ -737,4 +737,30 @@ </set> where id = #{id,jdbcType=BIGINT} </update> + + <!--鑾峰彇鏈粦瀹氬埌杞亴缁勭殑鍙栨按鍙e垪琛�--> + <select id="getFreeIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoIntakeSimple"> + SELECT + id AS intakeId, + name AS intakeName + FROM pr_intake inta + WHERE NOT EXISTS ( + SELECT 1 + FROM ir_group_intake gi + WHERE gi.intake_id = inta.id + ) AND inta.deleted = 0 + </select> + + <!--鑾峰彇鏈粦瀹氳櫄鎷熷崱鐨勫彇姘村彛鍒楄〃锛岀粰鍙栨按鍙g粦铏氭嫙鍗′娇鐢�--> + <select id="getNotLinkVcIntakes" resultType="com.dy.pipIrrGlobal.voPr.VoIntakeSimple"> + SELECT + id AS intakeId, + name AS intakeName + FROM pr_intake inta + WHERE NOT EXISTS ( + SELECT 1 + FROM pr_intake_vc iv + WHERE iv.intake_id = inta.id + ) AND inta.deleted = 0 + </select> </mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java index a1cf5ef..6591aad 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java @@ -9,11 +9,8 @@ import com.dy.pipIrrGlobal.excel.CellWriteHandler; import com.dy.pipIrrGlobal.excel.ExcelUtil; import com.dy.pipIrrGlobal.pojoPr.PrIntake; -import com.dy.pipIrrGlobal.voPr.VoAllIntake; -import com.dy.pipIrrGlobal.voPr.VoIntake; -import com.dy.pipIrrGlobal.voPr.VoOnLineIntake; +import com.dy.pipIrrGlobal.voPr.*; import com.dy.pipIrrGlobal.voSe.VoActiveCard; -import com.dy.pipIrrGlobal.voPr.IntakeUpdateLngLat; import com.dy.pipIrrProject.result.ProjectResultCode; import com.taobao.api.ApiException; import io.swagger.v3.oas.annotations.Operation; @@ -347,4 +344,20 @@ return BaseResponseUtils.buildException(e.getMessage()); } } + + /** + * 鑾峰彇鏈粦瀹氬埌杞亴缁勭殑鍙栨按鍙e垪琛� + * @return + */ + @GetMapping(path = "getFreeIntakes") + @SsoAop() + public BaseResponse<QueryResultVo<List<VoIntakeSimple>>> getFreeIntakes() { + try { + QueryResultVo<List<VoIntakeSimple>> res = intakeSv.getFreeIntakes(); + return BaseResponseUtils.buildSuccess(res); + } catch (Exception e) { + log.error("鏌ヨ鍙栨按鍙e紓甯�", e); + return BaseResponseUtils.buildException(e.getMessage()); + } + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java index caa9e6d..1a7137f 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java @@ -12,10 +12,7 @@ import com.dy.pipIrrGlobal.daoPr.PrDivideMapper; import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper; import com.dy.pipIrrGlobal.pojoPr.PrIntake; -import com.dy.pipIrrGlobal.voPr.IntakeUpdateLngLat; -import com.dy.pipIrrGlobal.voPr.VoAllIntake; -import com.dy.pipIrrGlobal.voPr.VoIntake; -import com.dy.pipIrrGlobal.voPr.VoOnLineIntake; +import com.dy.pipIrrGlobal.voPr.*; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -351,4 +348,14 @@ public int updateIntakeLngLat(IntakeUpdateLngLat po) { return prIntakeMapper.updateByPrimaryKeySelective1(po); } + + /** + * 鑾峰彇鏈粦瀹氬埌杞亴缁勭殑鍙栨按鍙e垪琛� + * @return + */ + public QueryResultVo<List<VoIntakeSimple>> getFreeIntakes() { + QueryResultVo<List<VoIntakeSimple>> rsVo = new QueryResultVo<>(); + rsVo.obj = prIntakeMapper.getFreeIntakes(); + return rsVo; + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java index 0fc14c5..ffd55e9 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java @@ -2,6 +2,8 @@ import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.common.webUtil.QueryConditionVo; +import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan; import com.dy.pipIrrGlobal.pojoIr.IrIrrigateSchedule; import com.dy.pipIrrGlobal.pojoIr.IrPlanOperate; @@ -388,10 +390,9 @@ * @return */ @GetMapping(path = "/getCompletedPlans") - public BaseResponse<List<VoPlans>> getCompletedPlans() { + public BaseResponse<QueryResultVo<List<VoPlans>>> getCompletedPlans(QueryConditionVo qo) { try { - List<VoPlans> res = irrigatePlanSv.getCompletedPlans(); - return BaseResponseUtils.buildSuccess(res); + return BaseResponseUtils.buildSuccess(irrigatePlanSv.getCompletedPlans(qo)); } catch (Exception e) { log.error("鑾峰彇椤圭洰璁板綍寮傚父", e); return BaseResponseUtils.buildException(e.getMessage()); diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java index b29d8cc..abb4064 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java @@ -4,6 +4,8 @@ import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.common.webUtil.QueryConditionVo; +import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.daoIr.*; import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper; import com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan; @@ -12,9 +14,11 @@ import com.dy.pipIrrGlobal.pojoIr.IrPlanSchedule; import com.dy.pipIrrGlobal.voIr.*; import com.dy.pipIrrGlobal.voRm.VoIntakeVc; +import com.dy.pipIrrGlobal.voSe.VoClient; import com.dy.pipIrrWechat.irrigatePlan.dto.PlanSimple; import com.dy.pipIrrWechat.irrigatePlan.enums.OperateTypeENUM; 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; @@ -186,8 +190,18 @@ * 鑾峰彇宸插畬鎴愮殑璁″垝鍒楄〃锛屽皬绋嬪簭璁″垝鍒楄〃椤典娇鐢� * @return */ - public List<VoPlans> getCompletedPlans() { - return irrigatePlanMapper.getCompletedPlans(); + public QueryResultVo<List<VoPlans>> getCompletedPlans(QueryConditionVo queryVo) { + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo) ; + + Long itemTotal = (long)irrigatePlanMapper.getCompletedPlansCount(params); + QueryResultVo<List<VoPlans>> rsVo = new QueryResultVo<>() ; + rsVo.pageSize = queryVo.pageSize ; + rsVo.pageCurr = queryVo.pageCurr ; + + rsVo.calculateAndSet(itemTotal, params); + rsVo.obj = irrigatePlanMapper.getCompletedPlans(params); + + return rsVo ; } /** diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java index 3e6b1fd..0005593 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardCtrl.java @@ -5,11 +5,13 @@ import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.pojoSe.SeVcOperate; import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard; +import com.dy.pipIrrGlobal.voIr.VoPlanDetails; import com.dy.pipIrrGlobal.voSe.VoRechargeProfile; import com.dy.pipIrrGlobal.voSe.VoVcRecharge; import com.dy.pipIrrGlobal.voSe.VoVirtualCard; import com.dy.pipIrrWechat.result.WechatResultCode; import com.dy.pipIrrWechat.util.PayHelper; +import com.dy.pipIrrWechat.virtualCard.dto.Client; import com.dy.pipIrrWechat.virtualCard.dto.DtoCancel; import com.dy.pipIrrWechat.virtualCard.dto.DtoRegist; import com.dy.pipIrrWechat.virtualCard.enums.LastOperateENUM; @@ -23,10 +25,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; /** * @author ZhuBaoMin @@ -57,61 +56,68 @@ if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } - Long clientId = po.getClientId(); - // 鑾峰彇5绾ц鏀垮尯鍒掍覆areaCode - Long areaCodeL = virtualCardSv.getAreaCodeById(clientId); - if(areaCodeL == null) { - return BaseResponseUtils.buildErrorMsg(WechatResultCode.AREA_CODE_MISTAKE.getMessage()); + Map map_result = virtualCardSv.addVC(po.getClientId(), 0D); + if(map_result.get("success").equals(false)) { + return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); } - String areaCode = String.valueOf(areaCodeL); + return BaseResponseUtils.buildSuccess() ; - /** - * 鏍规嵁琛屾斂鍖哄垝涓诧紙areaCode锛夊湪铏氭嫙鍗¤〃涓拡瀵硅櫄鎷熷崱缂栧彿锛坴cNum锛夎繘琛屾ā绯婃煡璇� - * 濡傛灉5浣嶉『搴忓彿宸茬粡杈惧埌鏈�澶у�硷紝鎻愮ず鐢ㄦ埛鑱旂郴绯荤粺绠$悊鍛� - * 濡傛灉5浣嶉『搴忓彿鏈揪鍒版渶澶у�硷紝鍒欏姞1 - * cardNum涓烘柊鐨勫崱鍙� - */ - String vcNum = Optional.ofNullable(virtualCardSv.getVcCardNumOfMax(areaCode)).orElse(""); - if(vcNum != null && vcNum.trim().length() > 0) { - Integer number = Integer.parseInt(vcNum.substring(12)); - number = number + 1; - if(number > 65535) { - return BaseResponseUtils.buildErrorMsg(WechatResultCode.CARD_NUMBER_OVERRUN.getMessage()); - } - vcNum = vcNum.substring(0, 12) + String.format("%05d", number); - } else { - vcNum = areaCode + "00001"; - } - - // 鐢熸垚铏氭嫙鍗¤褰� - SeVirtualCard seVirtualCard = new SeVirtualCard(); - seVirtualCard.setVcNum(Long.parseLong(vcNum)); - seVirtualCard.setClientId(clientId); - seVirtualCard.setMoney(0d); - seVirtualCard.setState((byte)1); - seVirtualCard.setLastOperate(LastOperateENUM.OPEN_ACCOUNT.getCode()); - seVirtualCard.setLastOperateTime(new Date()); - seVirtualCard.setInUse((byte) 0); - seVirtualCard.setCreateTime(new Date()); - Long vcId = virtualCardSv.insertVirtualCard(seVirtualCard); - if(vcId == null) { - return BaseResponseUtils.buildErrorMsg(WechatResultCode.VC_OPEN_ACCOUNT_FAIL.getMessage()); - } - - // 鐢熸垚铏氭嫙鍗℃搷浣滆褰曪紝娉ㄥ唽铏氭嫙鍗℃搷浣滀汉涓哄啘鎴� - SeVcOperate seVcOperate = new SeVcOperate(); - seVcOperate.setVcId(vcId); - seVcOperate.setClientId(clientId); - seVcOperate.setOperateType(LastOperateENUM.OPEN_ACCOUNT.getCode()); - seVcOperate.setOperator(clientId); - seVcOperate.setOperateTime(new Date()); - Long vcOperateId = virtualCardSv.insertVcOperate(seVcOperate); - if(vcOperateId == null) { - return BaseResponseUtils.buildErrorMsg(WechatResultCode.VC_OPEN_ACCOUNT_FAIL.getMessage()); - } - - return BaseResponseUtils.buildSuccess(true) ; + //Long clientId = po.getClientId(); + // + //// 鑾峰彇5绾ц鏀垮尯鍒掍覆areaCode + //Long areaCodeL = virtualCardSv.getAreaCodeById(clientId); + //if(areaCodeL == null) { + // return BaseResponseUtils.buildErrorMsg(WechatResultCode.AREA_CODE_MISTAKE.getMessage()); + //} + //String areaCode = String.valueOf(areaCodeL); + // + ///** + // * 鏍规嵁琛屾斂鍖哄垝涓诧紙areaCode锛夊湪铏氭嫙鍗¤〃涓拡瀵硅櫄鎷熷崱缂栧彿锛坴cNum锛夎繘琛屾ā绯婃煡璇� + // * 濡傛灉5浣嶉『搴忓彿宸茬粡杈惧埌鏈�澶у�硷紝鎻愮ず鐢ㄦ埛鑱旂郴绯荤粺绠$悊鍛� + // * 濡傛灉5浣嶉『搴忓彿鏈揪鍒版渶澶у�硷紝鍒欏姞1 + // * cardNum涓烘柊鐨勫崱鍙� + // */ + //String vcNum = Optional.ofNullable(virtualCardSv.getVcCardNumOfMax(areaCode)).orElse(""); + //if(vcNum != null && vcNum.trim().length() > 0) { + // Integer number = Integer.parseInt(vcNum.substring(12)); + // number = number + 1; + // if(number > 65535) { + // return BaseResponseUtils.buildErrorMsg(WechatResultCode.CARD_NUMBER_OVERRUN.getMessage()); + // } + // vcNum = vcNum.substring(0, 12) + String.format("%05d", number); + //} else { + // vcNum = areaCode + "00001"; + //} + // + //// 鐢熸垚铏氭嫙鍗¤褰� + //SeVirtualCard seVirtualCard = new SeVirtualCard(); + //seVirtualCard.setVcNum(Long.parseLong(vcNum)); + //seVirtualCard.setClientId(clientId); + //seVirtualCard.setMoney(0d); + //seVirtualCard.setState((byte)1); + //seVirtualCard.setLastOperate(LastOperateENUM.OPEN_ACCOUNT.getCode()); + //seVirtualCard.setLastOperateTime(new Date()); + //seVirtualCard.setInUse((byte) 0); + //seVirtualCard.setCreateTime(new Date()); + //Long vcId = virtualCardSv.insertVirtualCard(seVirtualCard); + //if(vcId == null) { + // return BaseResponseUtils.buildErrorMsg(WechatResultCode.VC_OPEN_ACCOUNT_FAIL.getMessage()); + //} + // + //// 鐢熸垚铏氭嫙鍗℃搷浣滆褰曪紝娉ㄥ唽铏氭嫙鍗℃搷浣滀汉涓哄啘鎴� + //SeVcOperate seVcOperate = new SeVcOperate(); + //seVcOperate.setVcId(vcId); + //seVcOperate.setClientId(clientId); + //seVcOperate.setOperateType(LastOperateENUM.OPEN_ACCOUNT.getCode()); + //seVcOperate.setOperator(clientId); + //seVcOperate.setOperateTime(new Date()); + //Long vcOperateId = virtualCardSv.insertVcOperate(seVcOperate); + //if(vcOperateId == null) { + // return BaseResponseUtils.buildErrorMsg(WechatResultCode.VC_OPEN_ACCOUNT_FAIL.getMessage()); + //} + // + //return BaseResponseUtils.buildSuccess(true) ; } /** @@ -344,4 +350,23 @@ return BaseResponseUtils.buildException(e.getMessage()) ; } } + + /** + * 缁戝畾铏氭嫙鍗″埌鍙栨按鍙� + * @return + */ + @PostMapping(path = "linkVcToIntake") + @Transactional(rollbackFor = Exception.class) + public BaseResponse<Boolean> linkVcToIntake(@RequestBody @Valid Client client, BindingResult bindingResult) { + if(bindingResult != null && bindingResult.hasErrors()){ + return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + Long clientId = client.getClientId(); + Map map_result = virtualCardSv.linkVcToIntake(clientId); + if(map_result.get("success").equals(false)) { + return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); + } + return BaseResponseUtils.buildSuccess() ; + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java index 7cd6de0..a0912b9 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/VirtualCardSv.java @@ -3,13 +3,20 @@ import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; +import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper; +import com.dy.pipIrrGlobal.daoPr.PrIntakeVcMapper; import com.dy.pipIrrGlobal.daoSe.*; +import com.dy.pipIrrGlobal.pojoIr.IrPlanOperate; +import com.dy.pipIrrGlobal.pojoPr.PrIntakeVc; import com.dy.pipIrrGlobal.pojoSe.*; +import com.dy.pipIrrGlobal.voPr.VoIntakeSimple; import com.dy.pipIrrGlobal.voSe.VoOrders; import com.dy.pipIrrGlobal.voSe.VoRechargeProfile; import com.dy.pipIrrGlobal.voSe.VoVcRecharge; import com.dy.pipIrrGlobal.voSe.VoVirtualCard; +import com.dy.pipIrrWechat.irrigatePlan.enums.OperateTypeENUM; import com.dy.pipIrrWechat.result.WechatResultCode; +import com.dy.pipIrrWechat.virtualCard.dto.DtoRegist; import com.dy.pipIrrWechat.virtualCard.dto.DtoVirtualCard; import com.dy.pipIrrWechat.virtualCard.enums.LastOperateENUM; import com.dy.pipIrrWechat.virtualCard.enums.OrderStateENUM; @@ -21,9 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author ZhuBaoMin @@ -56,11 +61,18 @@ @Autowired private SeRechargeProfileMapper seRechargeProfileMapper; + @Autowired + private PrIntakeMapper prIntakeMapper; + + @Autowired + private PrIntakeVcMapper prIntakeVcMapper; + @Value("${vc.alarmValue}") private Integer alarmValue; /** * 鏍规嵁鍐滄埛ID鑾峰彇5绾ц鏀垮尯鍒掍唬鐮侊紝娉ㄥ唽铏氭嫙鍗′娇鐢� + * * @param clientId 鍐滄埛ID * @return 5绾ц鏀垮尯鍒掍唬鐮� */ @@ -70,6 +82,7 @@ /** * 鑾峰彇鍐滄埛鍏ㄩ儴铏氭嫙鍗� + * * @return */ public List<VoVirtualCard> getVCs(Long clientId) { @@ -78,6 +91,7 @@ /** * 鏍规嵁铏氭嫙鍗D鑾峰彇铏氭嫙鍗″璞� + * * @param vcId * @return */ @@ -87,6 +101,7 @@ /** * 娉ㄥ唽铏氭嫙鍗� + * * @param po * @return */ @@ -97,16 +112,18 @@ /** * 鏍规嵁鍐滄埛ID鍙婅櫄鎷熷崱ID鑾峰彇姝e父鐘舵�佺殑铏氭嫙鍗″璞� + * * @param clientId * @param vcId * @return */ - public SeVirtualCard getVcByClientIdAndVcId (Long clientId, Long vcId) { + public SeVirtualCard getVcByClientIdAndVcId(Long clientId, Long vcId) { return seVirtualCardMapper.getVcByClientIdAndVcId(clientId, vcId); } /** * 鏍规嵁铏氭嫙鍗D娉ㄩ攢铏氭嫙鍗� + * * @param clientId * @param vcId * @return @@ -117,6 +134,7 @@ /** * 鏍规嵁琛屾斂鍖哄垝涓叉ā绯婃煡璇㈣櫄鎷熷崱缂栧彿锛屾敞鍐岃櫄鎷熷崱浣跨敤 + * * @param areaCode * @return */ @@ -136,6 +154,7 @@ /** * 淇敼铏氭嫙鍗� * 鍏呭�笺�佹秷璐广�佺敵璇烽��娆俱�佸鏍搁��娆炬椂闇�瑕佷慨鏀硅櫄鎷熷崱鐨勶細浣欓銆佹渶鍚庢搷浣溿�佹渶鍚庢搷浣滄椂闂� + * * @param po * @return */ @@ -145,6 +164,7 @@ /** * 鏍规嵁铏氭嫙鍗$紪鍙疯幏鍙栬櫄鎷熷崱瀵硅薄 + * * @param virtualId * @return */ @@ -155,6 +175,7 @@ /** * 娣诲姞铏氭嫙鍗″厖鍊艰褰� * JSAPI涓嬪崟鍚庣敓鎴愰儴鍒嗗厖鍊艰褰� + * * @param po * @return -1锛氳櫄鎷熷崱涓嶅瓨鍦紝0锛氭坊鍔犲厖鍊艰褰曞け璐� */ @@ -168,7 +189,7 @@ // 楠岃瘉璇ヨ櫄鎷熷崱璐︽埛鏄惁瀛樺湪骞跺彇鍑哄綋鍓嶈处鎴蜂綑棰� SeVirtualCard seVirtualCard = seVirtualCardMapper.selectByPrimaryKey(virtualId); - if(seVirtualCard == null) { + if (seVirtualCard == null) { return -1L; } Double money = seVirtualCard.getMoney(); @@ -184,7 +205,7 @@ seVcRecharge.setOrderState(OrderStateENUM.NON_PAYMENT.getCode()); seVcRechargeMapper.insert(seVcRecharge); Long rechargeId = seVcRecharge.getId(); - if(rechargeId == null) { + if (rechargeId == null) { return 0L; } return rechargeId; @@ -192,6 +213,7 @@ /** * 鏍规嵁璁㈠崟鍙疯幏鍙栬櫄鎷熷崱鍏呭�煎璞� + * * @param orderNumber * @return */ @@ -202,15 +224,16 @@ /** * 淇敼铏氭嫙鍗″厖鍊艰褰� * 寰俊鏀粯閫氱煡鍚庯細 - * 1. 鏇存柊鍏呭�艰〃锛氬厖鍊煎悗浣欓銆佹敮浠樺畬鎴愭椂闂淬�佽鍗曠姸鎬� - * 2. 鏇存柊铏氭嫙鍗¤〃锛氳处鎴蜂綑棰濄�佹渶鍚庢搷浣溿�佹渶鍚庢搷浣滄椂闂� + * 1. 鏇存柊鍏呭�艰〃锛氬厖鍊煎悗浣欓銆佹敮浠樺畬鎴愭椂闂淬�佽鍗曠姸鎬� + * 2. 鏇存柊铏氭嫙鍗¤〃锛氳处鎴蜂綑棰濄�佹渶鍚庢搷浣溿�佹渶鍚庢搷浣滄椂闂� + * * @param orderNumber 璁㈠崟缂栧彿 * @return */ @Transactional(rollbackFor = Exception.class) public BaseResponse<Boolean> updateVCRecharge(String orderNumber, Date rechargeTime) { SeVcRecharge seVcRecharge = seVcRechargeMapper.getVCRechargeByorderNumber(orderNumber); - if(seVcRecharge == null) { + if (seVcRecharge == null) { return BaseResponseUtils.buildFail(WechatResultCode.RECHARGE_NOT_EXIST.getMessage()); } @@ -223,27 +246,28 @@ seVcRecharge.setRechargeTime(rechargeTime); seVcRecharge.setOrderState(OrderStateENUM.PAID.getCode()); Integer rec = seVcRechargeMapper.updateByPrimaryKeySelective(seVcRecharge); - if(rec == null) { + if (rec == null) { return BaseResponseUtils.buildFail(WechatResultCode.RECHARGE_FAIL.getMessage()); } SeVirtualCard seVirtualCard = seVirtualCardMapper.selectByPrimaryKey(virtualId); - if(seVirtualCard == null) { + if (seVirtualCard == null) { return BaseResponseUtils.buildFail(WechatResultCode.VIRTUAL_CARD_NOT_EXIST.getMessage()); } seVirtualCard.setMoney(afterRrecharge); seVirtualCard.setLastOperate(LastOperateENUM.RECHARGE.getCode()); seVirtualCard.setLastOperateTime(new Date()); Integer rec2 = seVirtualCardMapper.updateByPrimaryKeySelective(seVirtualCard); - if(rec2 == null) { + if (rec2 == null) { return BaseResponseUtils.buildFail(WechatResultCode.RECHARGE_FAIL.getMessage()); } - return BaseResponseUtils.buildSuccess(true) ; + return BaseResponseUtils.buildSuccess(true); } /** * 淇敼铏氭嫙鍗″厖鍊艰褰曪紙搴熷純锛� * 寰俊灏忕▼搴忔敮浠橀�氱煡鍚庝慨鏀癸細浣欓銆佸厖鍊煎悗浣欓銆佸厖鍊煎畬鎴愭椂闂� + * * @param po * @return */ @@ -253,16 +277,18 @@ /** * 鏍规嵁铏氭嫙鍗″彿鑾峰彇璁㈠崟鍒楄〃 + * * @param virtualId * @return */ public List<VoOrders> selectOrders(Long virtualId) { List<VoOrders> rsVo = seVcRechargeMapper.getOrders(virtualId); - return rsVo ; + return rsVo; } /** * 鏍规嵁閫�娆綢D鑾峰彇閫�娆惧璞� + * * @param refundId * @return */ @@ -272,6 +298,7 @@ /** * 娣诲姞閫�娆剧敵璇� + * * @param po * @return */ @@ -282,6 +309,7 @@ /** * 淇敼閫�娆捐褰� + * * @param po * @return */ @@ -291,6 +319,7 @@ /** * 鏍规嵁璁㈠崟鍙疯幏鍙栧叾鍚勭瑪閫�娆鹃噾棰� + * * @param orderNumber * @return */ @@ -301,6 +330,7 @@ /** * 娣诲姞閫�娆惧垎椤� + * * @param po * @return */ @@ -311,6 +341,7 @@ /** * 缂栬緫閫�娆惧垎椤� + * * @param po * @return */ @@ -320,22 +351,24 @@ /** * 鏍规嵁璁㈠崟鍙风敓鎴愰��娆惧崟鍙� + * * @param orderNumber * @return */ public String generateRefundNumber(String orderNumber) { String refundNumber = seVcRefundItemMapper.getLastRefundNumber(orderNumber); - if(refundNumber == null) { + if (refundNumber == null) { refundNumber = orderNumber + "01"; return refundNumber; } - String a = String.format("%02d", (Integer.parseInt(refundNumber.substring(29,30).trim()) + 1)); - return a; + String a = String.format("%02d", (Integer.parseInt(refundNumber.substring(29, 30).trim()) + 1)); + return a; } /** * 鏍规嵁璁㈠崟鍙疯幏鍙栧厖鍊奸噾棰濓紝璋冪敤閫�娆剧敵璇锋帴鍙d娇鐢� + * * @param orderNumber * @return */ @@ -346,6 +379,7 @@ /** * 鏍规嵁閫�娆鹃�氱煡鎺ュ彛杩斿洖鐨勯��娆惧崟鍙峰弽鏌ラ��娆綢D锛屾煡璇㈣閫�娆綢D涓嬫湭閫�娆捐褰曟暟閲� + * * @param refundNumber * @return */ @@ -355,6 +389,7 @@ /** * 鏍规嵁閫�娆惧崟鍙疯幏鍙栭��娆綢D锛岄��娆鹃�氱煡鍚庢洿鏂伴��娆捐〃鎵�闇� + * * @param refundNumber * @return */ @@ -364,10 +399,11 @@ /** * 鑾峰彇铏氭嫙鍗″厖鍊艰褰� + * * @param dtoVcRecharge * @return */ - public QueryResultVo<List<VoVcRecharge>> getVcRechargeRecords(QoVcRecharge dtoVcRecharge){ + public QueryResultVo<List<VoVcRecharge>> getVcRechargeRecords(QoVcRecharge dtoVcRecharge) { Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(dtoVcRecharge); Long itemTotal = seVirtualCardMapper.getRechargeRecordCount(params); @@ -383,6 +419,7 @@ /** * 娣诲姞铏氭嫙鍗℃搷浣滆褰� + * * @param po * @return */ @@ -393,9 +430,144 @@ /** * 鑾峰彇铏氭嫙鍗″父鐢ㄥ厖鍊奸噾棰濋厤缃� + * * @return */ public List<VoRechargeProfile> gerRechargeProfiles() { return seRechargeProfileMapper.gerRechargeProfiles(); } + + /** + * 娉ㄥ唽铏氭嫙鍗� + * + * @param clientId + * @return + */ + public Map addVC(Long clientId, Double money) { + // 鑾峰彇5绾ц鏀垮尯鍒掍覆areaCode + Long areaCodeL = getAreaCodeById(clientId); + if (areaCodeL == null) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("msg", WechatResultCode.AREA_CODE_MISTAKE.getMessage()); + map.put("content", null); + return map; + } + String areaCode = String.valueOf(areaCodeL); + + /** + * 鏍规嵁琛屾斂鍖哄垝涓诧紙areaCode锛夊湪铏氭嫙鍗¤〃涓拡瀵硅櫄鎷熷崱缂栧彿锛坴cNum锛夎繘琛屾ā绯婃煡璇� + * 濡傛灉5浣嶉『搴忓彿宸茬粡杈惧埌鏈�澶у�硷紝鎻愮ず鐢ㄦ埛鑱旂郴绯荤粺绠$悊鍛� + * 濡傛灉5浣嶉『搴忓彿鏈揪鍒版渶澶у�硷紝鍒欏姞1 + * cardNum涓烘柊鐨勫崱鍙� + */ + String vcNum = Optional.ofNullable(getVcCardNumOfMax(areaCode)).orElse(""); + if (vcNum != null && vcNum.trim().length() > 0) { + Integer number = Integer.parseInt(vcNum.substring(12)); + number = number + 1; + if (number > 65535) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("msg", WechatResultCode.CARD_NUMBER_OVERRUN.getMessage()); + map.put("content", null); + return map; + } + vcNum = vcNum.substring(0, 12) + String.format("%05d", number); + } else { + vcNum = areaCode + "00001"; + } + + // 鐢熸垚铏氭嫙鍗¤褰� + SeVirtualCard seVirtualCard = new SeVirtualCard(); + seVirtualCard.setVcNum(Long.parseLong(vcNum)); + seVirtualCard.setClientId(clientId); + seVirtualCard.setMoney(money); + seVirtualCard.setState((byte) 1); + seVirtualCard.setLastOperate(LastOperateENUM.OPEN_ACCOUNT.getCode()); + seVirtualCard.setLastOperateTime(new Date()); + seVirtualCard.setInUse((byte) 0); + seVirtualCard.setCreateTime(new Date()); + Long vcId = insertVirtualCard(seVirtualCard); + if (vcId == null) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("msg", WechatResultCode.VC_OPEN_ACCOUNT_FAIL.getMessage()); + map.put("content", null); + return map; + } + + // 鐢熸垚铏氭嫙鍗℃搷浣滆褰曪紝娉ㄥ唽铏氭嫙鍗℃搷浣滀汉涓哄啘鎴� + SeVcOperate seVcOperate = new SeVcOperate(); + seVcOperate.setVcId(vcId); + seVcOperate.setClientId(clientId); + seVcOperate.setOperateType(LastOperateENUM.OPEN_ACCOUNT.getCode()); + seVcOperate.setOperator(clientId); + seVcOperate.setOperateTime(new Date()); + Long vcOperateId = insertVcOperate(seVcOperate); + if (vcOperateId == null) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("msg", WechatResultCode.VC_OPEN_ACCOUNT_FAIL.getMessage()); + map.put("content", null); + return map; + } + + Map map = new HashMap<>(); + map.put("success", true); + map.put("msg", "铏氭嫙鍗℃敞鍐屾垚鍔�"); + map.put("content", vcId); + return map; + } + + /** + * 鑾峰彇鏈粦瀹氳櫄鎷熷崱鐨勫彇姘村彛鍒楄〃锛岀粰鍙栨按鍙g粦铏氭嫙鍗′娇鐢� + * + * @return + */ + public Map linkVcToIntake(Long clientId) { + // 楠岃瘉鏄惁瀛樺湪鍙栨按鍙f湭缁戣櫄鎷熷崱 + List<VoIntakeSimple> list = prIntakeMapper.getNotLinkVcIntakes(); + if (list == null || list.size() == 0) { + Map map = new HashMap<>(); + map.put("success", true); + map.put("msg", "鎵�鏈夊彇姘村彛閮藉尮閰嶄簡铏氭嫙鍗�"); + map.put("content", null); + return map; + } + + // 閬嶅巻鎵�鏈夋湭缁戣櫄鎷熷崱鐨勫彇姘村彛 + for (VoIntakeSimple voIntakeSimple : list) { + Long intakeId = voIntakeSimple.getIntakeId(); + + // 鍒涘缓铏氭嫙鍗� + Map map_result = addVC(clientId, 100000D); + if (map_result.get("success").equals(false)) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("msg", "鐏岃櫄鎷熷崱娉ㄥ唽澶辫触"); + map.put("content", null); + return map; + } + Long vcId = (Long) map_result.get("content"); + + // 鍙栨按鍙g粦铏氭嫙鍗� + PrIntakeVc intakeVc = new PrIntakeVc(); + intakeVc.setIntakeId(intakeId); + intakeVc.setVcId(vcId); + Integer result = prIntakeVcMapper.insert(intakeVc); + + if (result == null) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("msg", "鍙栨按鍙g粦铏氭嫙鍗″け璐�"); + map.put("content", null); + return map; + } + } + Map map = new HashMap<>(); + map.put("success", true); + map.put("msg", "鍙栨按鍙g粦铏氭嫙鍗℃垚鍔�"); + map.put("content", null); + return map; + } } \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/dto/Client.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/dto/Client.java new file mode 100644 index 0000000..45d137a --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/virtualCard/dto/Client.java @@ -0,0 +1,22 @@ +package com.dy.pipIrrWechat.virtualCard.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author ZhuBaoMin + * @date 2025-04-10 16:09 + * @LastEditTime 2025-04-10 16:09 + * @Description 鍐滄埛瀵硅薄锛岀粰鍙栨按鍙g粦铏氭嫙鍗℃椂浣跨敤 + */ + +@Data +public class Client { + public static final long serialVersionUID = 202504101610001L; + + /** + * 鍐滄埛ID + */ + @NotNull(message = "鍐滄埛ID涓嶈兘涓虹┖") + private Long clientId; +} -- Gitblit v1.8.0