Kaynağa Gözat

开发完成运营配置微信支付功能

wuxw 1 yıl önce
ebeveyn
işleme
ce09c87367

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/payment/PaymentPoolDto.java

@@ -24,6 +24,8 @@ public class PaymentPoolDto extends PageDto implements Serializable {
     private String remark;
     private String state;
     private String communityId;
+
+    private String communityName;
     private String paymentName;
     private String ppId;
     private String paymentType;
@@ -183,4 +185,12 @@ public class PaymentPoolDto extends PageDto implements Serializable {
     public void setBeanRefund(String beanRefund) {
         this.beanRefund = beanRefund;
     }
+
+    public String getCommunityName() {
+        return communityName;
+    }
+
+    public void setCommunityName(String communityName) {
+        this.communityName = communityName;
+    }
 }

+ 71 - 0
service-acct/src/main/java/com/java110/acct/cmd/payment/DeleteAdminPaymentPoolCmd.java

@@ -0,0 +1,71 @@
+/*
+ * Copyright 2017-2020 吴学文 and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.acct.cmd.payment;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.intf.acct.IPaymentPoolV1InnerServiceSMO;
+import com.java110.po.payment.PaymentPoolPo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 类表述:删除
+ * 服务编码:paymentPool.deletePaymentPool
+ * 请求路劲:/app/paymentPool.DeletePaymentPool
+ * add by 吴学文 at 2023-10-25 11:52:42 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@Java110Cmd(serviceCode = "payment.deleteAdminPaymentPool")
+public class DeleteAdminPaymentPoolCmd extends Cmd {
+    private static Logger logger = LoggerFactory.getLogger(DeleteAdminPaymentPoolCmd.class);
+
+    @Autowired
+    private IPaymentPoolV1InnerServiceSMO paymentPoolV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        super.validateAdmin(cmdDataFlowContext);
+        Assert.hasKeyAndValue(reqJson, "ppId", "ppId不能为空");
+
+    }
+
+    @Override
+    @Java110Transactional
+    public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+        PaymentPoolPo paymentPoolPo = BeanConvertUtil.covertBean(reqJson, PaymentPoolPo.class);
+        int flag = paymentPoolV1InnerServiceSMOImpl.deletePaymentPool(paymentPoolPo);
+
+        if (flag < 1) {
+            throw new CmdException("删除数据失败");
+        }
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+}

+ 1 - 0
service-acct/src/main/java/com/java110/acct/cmd/payment/DeletePaymentPoolCmd.java

@@ -50,6 +50,7 @@ public class DeletePaymentPoolCmd extends Cmd {
 
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        super.validateProperty(cmdDataFlowContext);
         Assert.hasKeyAndValue(reqJson, "ppId", "ppId不能为空");
         Assert.hasKeyAndValue(reqJson, "communityId", "communityId不能为空");
 

+ 154 - 0
service-acct/src/main/java/com/java110/acct/cmd/payment/ListAdminPaymentCmd.java

@@ -0,0 +1,154 @@
+/*
+ * Copyright 2017-2020 吴学文 and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.acct.cmd.payment;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.dto.community.CommunityDto;
+import com.java110.dto.payment.PaymentPoolConfigDto;
+import com.java110.dto.payment.PaymentPoolDto;
+import com.java110.dto.payment.PaymentPoolValueDto;
+import com.java110.dto.repair.RepairDto;
+import com.java110.intf.acct.IPaymentPoolConfigV1InnerServiceSMO;
+import com.java110.intf.acct.IPaymentPoolV1InnerServiceSMO;
+import com.java110.intf.acct.IPaymentPoolValueV1InnerServiceSMO;
+import com.java110.intf.community.ICommunityV1InnerServiceSMO;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.ListUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 类表述:查询
+ * 服务编码:paymentPool.listPaymentPool
+ * 请求路劲:/app/paymentPool.ListPaymentPool
+ * add by 吴学文 at 2023-10-25 11:52:42 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@Java110Cmd(serviceCode = "payment.listAdminPayment")
+public class ListAdminPaymentCmd extends Cmd {
+
+    private static Logger logger = LoggerFactory.getLogger(ListAdminPaymentCmd.class);
+    @Autowired
+    private IPaymentPoolV1InnerServiceSMO paymentPoolV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPaymentPoolValueV1InnerServiceSMO paymentPoolValueV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPaymentPoolConfigV1InnerServiceSMO paymentPoolConfigV1InnerServiceSMOImpl;
+
+    @Autowired
+    private ICommunityV1InnerServiceSMO communityV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        super.validatePageInfo(reqJson);
+        super.validateAdmin(cmdDataFlowContext);
+
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+        PaymentPoolDto paymentPoolDto = BeanConvertUtil.covertBean(reqJson, PaymentPoolDto.class);
+
+        int count = paymentPoolV1InnerServiceSMOImpl.queryPaymentPoolsCount(paymentPoolDto);
+
+        List<PaymentPoolDto> paymentPoolDtos = null;
+
+        if (count > 0) {
+            paymentPoolDtos = paymentPoolV1InnerServiceSMOImpl.queryPaymentPools(paymentPoolDto);
+        } else {
+            paymentPoolDtos = new ArrayList<>();
+        }
+        refreshCommunityName(paymentPoolDtos);
+
+        //todo 补充config 和value
+        computeConfigAndValues(paymentPoolDtos);
+
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, paymentPoolDtos);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+        cmdDataFlowContext.setResponseEntity(responseEntity);
+    }
+
+    private void refreshCommunityName(List<PaymentPoolDto> paymentPoolDtos) {
+
+        if(ListUtil.isNull(paymentPoolDtos)){
+            return;
+        }
+
+        List<String> communityIds = new ArrayList<>();
+        for (PaymentPoolDto paymentPoolDto : paymentPoolDtos) {
+            communityIds.add(paymentPoolDto.getCommunityId());
+        }
+
+        if(ListUtil.isNull(communityIds)){
+            return ;
+        }
+        CommunityDto communityDto = new CommunityDto();
+        communityDto.setCommunityIds(communityIds.toArray(new String[communityIds.size()]));
+        List<CommunityDto> communityDtos = communityV1InnerServiceSMOImpl.queryCommunitys(communityDto);
+        if(ListUtil.isNull(communityDtos)){
+            return;
+        }
+        for (PaymentPoolDto paymentPoolDto : paymentPoolDtos) {
+            for (CommunityDto tCommunityDto : communityDtos) {
+                if (!paymentPoolDto.getCommunityId().equals(tCommunityDto.getCommunityId())) {
+                    continue;
+                }
+                paymentPoolDto.setCommunityName(tCommunityDto.getName());
+            }
+        }
+    }
+
+    private void computeConfigAndValues(List<PaymentPoolDto> paymentPoolDtos) {
+
+        if(ListUtil.isNull(paymentPoolDtos)){
+            return;
+        }
+
+        PaymentPoolValueDto paymentPoolValueDto = new PaymentPoolValueDto();
+        paymentPoolValueDto.setPpId(paymentPoolDtos.get(0).getPpId());
+        paymentPoolValueDto.setCommunityId(paymentPoolDtos.get(0).getCommunityId());
+       List<PaymentPoolValueDto> values =  paymentPoolValueV1InnerServiceSMOImpl.queryPaymentPoolValues(paymentPoolValueDto);
+       paymentPoolDtos.get(0).setValues(values);
+
+        PaymentPoolConfigDto paymentPoolConfigDto = new PaymentPoolConfigDto();
+        paymentPoolConfigDto.setPpId(paymentPoolDtos.get(0).getPpId());
+        paymentPoolConfigDto.setCommunityId(paymentPoolDtos.get(0).getCommunityId());
+        List<PaymentPoolConfigDto> configs =  paymentPoolConfigV1InnerServiceSMOImpl.queryPaymentPoolConfigs(paymentPoolConfigDto);
+        paymentPoolDtos.get(0).setConfigs(configs);
+    }
+}

+ 1 - 0
service-acct/src/main/java/com/java110/acct/cmd/payment/ListPaymentPoolCmd.java

@@ -67,6 +67,7 @@ public class ListPaymentPoolCmd extends Cmd {
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
         super.validatePageInfo(reqJson);
+        super.validateProperty(cmdDataFlowContext);
         Assert.hasKeyAndValue(reqJson, "communityId", "communityId不能为空");
 
 

+ 178 - 0
service-acct/src/main/java/com/java110/acct/cmd/payment/SaveAdminPaymentPoolCmd.java

@@ -0,0 +1,178 @@
+/*
+ * Copyright 2017-2020 吴学文 and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.acct.cmd.payment;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.payment.PaymentPoolDto;
+import com.java110.intf.acct.IPaymentPoolConfigV1InnerServiceSMO;
+import com.java110.intf.acct.IPaymentPoolV1InnerServiceSMO;
+import com.java110.intf.acct.IPaymentPoolValueV1InnerServiceSMO;
+import com.java110.intf.fee.IPayFeeConfigV1InnerServiceSMO;
+import com.java110.po.payment.PaymentPoolConfigPo;
+import com.java110.po.payment.PaymentPoolPo;
+import com.java110.po.payment.PaymentPoolValuePo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.ListUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+/**
+ * 类表述:保存
+ * 服务编码:paymentPool.savePaymentPool
+ * 请求路劲:/app/paymentPool.SavePaymentPool
+ * add by 吴学文 at 2023-10-25 11:52:42 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@Java110Cmd(serviceCode = "payment.saveAdminPaymentPool")
+public class SaveAdminPaymentPoolCmd extends Cmd {
+
+    private static Logger logger = LoggerFactory.getLogger(SaveAdminPaymentPoolCmd.class);
+
+    public static final String CODE_PREFIX_ID = "10";
+
+    @Autowired
+    private IPaymentPoolV1InnerServiceSMO paymentPoolV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPaymentPoolValueV1InnerServiceSMO paymentPoolValueV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPayFeeConfigV1InnerServiceSMO payFeeConfigV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPaymentPoolConfigV1InnerServiceSMO paymentPoolConfigV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        super.validateAdmin(cmdDataFlowContext);
+        Assert.hasKeyAndValue(reqJson, "paymentName", "请求报文中未包含paymentName");
+        Assert.hasKeyAndValue(reqJson, "paymentType", "请求报文中未包含paymentType");
+        Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId");
+        Assert.hasKeyAndValue(reqJson, "state", "请求报文中未包含state");
+        Assert.hasKeyAndValue(reqJson, "payType", "请求报文中未包含payType");
+
+        Assert.hasKey(reqJson, "paymentKeys", "未包含动态字段");
+
+        JSONArray paymentKeys = reqJson.getJSONArray("paymentKeys");
+
+        if (ListUtil.isNull(paymentKeys)) {
+            throw new CmdException("未包含字段");
+        }
+        JSONObject columns = null;
+        // {"columnKey":"WECHAT_KEY","keyId":"2","name":"支付密码","page":-1,"paymentType":"WECHAT",
+        // "records":0,"remark":"请输入微信v2支付秘钥","row":0,"statusCd":"0","total":0,"columnValue":"1"}
+        for (int keyIndex = 0; keyIndex < paymentKeys.size(); keyIndex++) {
+            columns = paymentKeys.getJSONObject(keyIndex);
+            Assert.hasKeyAndValue(columns, "columnKey", "未包含key");
+            Assert.hasKeyAndValue(columns, "columnValue", reqJson.getString("name") + "未填写值");
+        }
+
+        if (!PaymentPoolDto.PAY_TYPE_FEE_CONFIG.equals(reqJson.getString("payType"))) {
+
+            PaymentPoolDto paymentPoolDto = new PaymentPoolDto();
+            paymentPoolDto.setCommunityId(reqJson.getString("communityId"));
+            paymentPoolDto.setPayType(reqJson.getString("payType"));
+            int count = paymentPoolV1InnerServiceSMOImpl.queryPaymentPoolsCount(paymentPoolDto);
+            if (count > 0) {
+                throw new CmdException("已经存在,请勿重复添加,只有支付范围为费用项的可以添加多个支付");
+            }
+            return;
+        }
+
+        JSONArray configIds = reqJson.getJSONArray("configIds");
+        if (ListUtil.isNull(configIds)) {
+            throw new CmdException("未包含费用项");
+        }
+
+    }
+
+    @Override
+    @Java110Transactional
+    public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+        PaymentPoolPo paymentPoolPo = BeanConvertUtil.covertBean(reqJson, PaymentPoolPo.class);
+        paymentPoolPo.setPpId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+        int flag = paymentPoolV1InnerServiceSMOImpl.savePaymentPool(paymentPoolPo);
+
+        if (flag < 1) {
+            throw new CmdException("保存数据失败");
+        }
+
+        //todo 动态字段
+        JSONArray paymentKeys = reqJson.getJSONArray("paymentKeys");
+
+        JSONObject columns = null;
+        PaymentPoolValuePo paymentPoolValuePo = null;
+        for (int keyIndex = 0; keyIndex < paymentKeys.size(); keyIndex++) {
+            columns = paymentKeys.getJSONObject(keyIndex);
+            paymentPoolValuePo = new PaymentPoolValuePo();
+            paymentPoolValuePo.setColumnValue(columns.getString("columnValue"));
+            paymentPoolValuePo.setColumnKey(columns.getString("columnKey"));
+            paymentPoolValuePo.setCommunityId(paymentPoolPo.getCommunityId());
+            paymentPoolValuePo.setPpId(paymentPoolPo.getPpId());
+            paymentPoolValuePo.setValueId(GenerateCodeFactory.getGeneratorId("11"));
+            paymentPoolValueV1InnerServiceSMOImpl.savePaymentPoolValue(paymentPoolValuePo);
+        }
+
+        // todo 保存关联关系
+
+        if (!PaymentPoolDto.PAY_TYPE_FEE_CONFIG.equals(reqJson.getString("payType"))) {
+            return;
+        }
+        JSONArray configIds = reqJson.getJSONArray("configIds");
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setConfigIds(configIds.toArray(new String[configIds.size()]));
+        feeConfigDto.setCommunityId(reqJson.getString("communityId"));
+        List<FeeConfigDto> feeConfigDtos = payFeeConfigV1InnerServiceSMOImpl.queryPayFeeConfigs(feeConfigDto);
+
+        if (ListUtil.isNull(feeConfigDtos)) {
+            return;
+        }
+
+
+        PaymentPoolConfigPo paymentPoolConfigPo = null;
+        for (FeeConfigDto tmpFeeConfigDto : feeConfigDtos) {
+
+            paymentPoolConfigPo = new PaymentPoolConfigPo();
+            paymentPoolConfigPo.setConfigId(tmpFeeConfigDto.getConfigId());
+            paymentPoolConfigPo.setFeeName(tmpFeeConfigDto.getFeeName());
+            paymentPoolConfigPo.setCommunityId(paymentPoolPo.getCommunityId());
+            paymentPoolConfigPo.setPpId(paymentPoolPo.getPpId());
+            paymentPoolConfigPo.setPpcId(GenerateCodeFactory.getGeneratorId("11"));
+            paymentPoolConfigV1InnerServiceSMOImpl.savePaymentPoolConfig(paymentPoolConfigPo);
+        }
+
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+}

+ 1 - 0
service-acct/src/main/java/com/java110/acct/cmd/payment/SavePaymentPoolCmd.java

@@ -73,6 +73,7 @@ public class SavePaymentPoolCmd extends Cmd {
 
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        super.validateProperty(cmdDataFlowContext);
         Assert.hasKeyAndValue(reqJson, "paymentName", "请求报文中未包含paymentName");
         Assert.hasKeyAndValue(reqJson, "paymentType", "请求报文中未包含paymentType");
         Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId");

+ 171 - 0
service-acct/src/main/java/com/java110/acct/cmd/payment/UpdateAdminPaymentPoolCmd.java

@@ -0,0 +1,171 @@
+/*
+ * Copyright 2017-2020 吴学文 and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.acct.cmd.payment;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.payment.PaymentPoolDto;
+import com.java110.intf.acct.IPaymentPoolConfigV1InnerServiceSMO;
+import com.java110.intf.acct.IPaymentPoolV1InnerServiceSMO;
+import com.java110.intf.acct.IPaymentPoolValueV1InnerServiceSMO;
+import com.java110.intf.fee.IPayFeeConfigV1InnerServiceSMO;
+import com.java110.po.payment.PaymentPoolConfigPo;
+import com.java110.po.payment.PaymentPoolPo;
+import com.java110.po.payment.PaymentPoolValuePo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.ListUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+
+/**
+ * 类表述:更新
+ * 服务编码:paymentPool.updatePaymentPool
+ * 请求路劲:/app/paymentPool.UpdatePaymentPool
+ * add by 吴学文 at 2023-10-25 11:52:42 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@Java110Cmd(serviceCode = "payment.updateAdminPaymentPool")
+public class UpdateAdminPaymentPoolCmd extends Cmd {
+
+    private static Logger logger = LoggerFactory.getLogger(UpdateAdminPaymentPoolCmd.class);
+
+
+    @Autowired
+    private IPaymentPoolV1InnerServiceSMO paymentPoolV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPaymentPoolValueV1InnerServiceSMO paymentPoolValueV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPayFeeConfigV1InnerServiceSMO payFeeConfigV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPaymentPoolConfigV1InnerServiceSMO paymentPoolConfigV1InnerServiceSMOImpl;
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        super.validateAdmin(cmdDataFlowContext);
+        Assert.hasKeyAndValue(reqJson, "ppId", "ppId不能为空");
+        Assert.hasKeyAndValue(reqJson, "communityId", "communityId不能为空");
+
+        Assert.hasKey(reqJson, "paymentKeys", "未包含动态字段");
+
+        JSONArray paymentKeys = reqJson.getJSONArray("paymentKeys");
+
+        if (ListUtil.isNull(paymentKeys)) {
+            throw new CmdException("未包含字段");
+        }
+        JSONObject columns = null;
+        // {"columnKey":"WECHAT_KEY","keyId":"2","name":"支付密码","page":-1,"paymentType":"WECHAT",
+        // "records":0,"remark":"请输入微信v2支付秘钥","row":0,"statusCd":"0","total":0,"columnValue":"1"}
+        for (int keyIndex = 0; keyIndex < paymentKeys.size(); keyIndex++) {
+            columns = paymentKeys.getJSONObject(keyIndex);
+            Assert.hasKeyAndValue(columns, "columnKey", "未包含key");
+            Assert.hasKeyAndValue(columns, "columnValue", reqJson.getString("name") + "未填写值");
+        }
+
+        if (!PaymentPoolDto.PAY_TYPE_FEE_CONFIG.equals(reqJson.getString("payType"))) {
+            return;
+        }
+
+        JSONArray configIds = reqJson.getJSONArray("configIds");
+        if (configIds == null || configIds.isEmpty()) {
+            throw new CmdException("未包含费用项");
+        }
+    }
+
+    @Override
+    @Java110Transactional
+    public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+        PaymentPoolPo paymentPoolPo = BeanConvertUtil.covertBean(reqJson, PaymentPoolPo.class);
+        int flag = paymentPoolV1InnerServiceSMOImpl.updatePaymentPool(paymentPoolPo);
+
+        if (flag < 1) {
+            throw new CmdException("更新数据失败");
+        }
+        PaymentPoolValuePo paymentPoolValuePo = new PaymentPoolValuePo();
+        paymentPoolValuePo.setPpId(paymentPoolPo.getPpId());
+        paymentPoolValuePo.setCommunityId(paymentPoolPo.getCommunityId());
+        paymentPoolValueV1InnerServiceSMOImpl.deletePaymentPoolValue(paymentPoolValuePo);
+
+        //todo 动态字段
+        JSONArray paymentKeys = reqJson.getJSONArray("paymentKeys");
+
+        JSONObject columns = null;
+
+        for (int keyIndex = 0; keyIndex < paymentKeys.size(); keyIndex++) {
+            columns = paymentKeys.getJSONObject(keyIndex);
+            paymentPoolValuePo = new PaymentPoolValuePo();
+            paymentPoolValuePo.setColumnValue(columns.getString("columnValue"));
+            paymentPoolValuePo.setColumnKey(columns.getString("columnKey"));
+            paymentPoolValuePo.setCommunityId(paymentPoolPo.getCommunityId());
+            paymentPoolValuePo.setPpId(paymentPoolPo.getPpId());
+            paymentPoolValuePo.setValueId(GenerateCodeFactory.getGeneratorId("11"));
+            paymentPoolValueV1InnerServiceSMOImpl.savePaymentPoolValue(paymentPoolValuePo);
+        }
+
+        // todo 保存关联关系
+
+        if (!PaymentPoolDto.PAY_TYPE_FEE_CONFIG.equals(reqJson.getString("payType"))) {
+            return;
+        }
+        JSONArray configIds = reqJson.getJSONArray("configIds");
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setConfigIds(configIds.toArray(new String[configIds.size()]));
+        feeConfigDto.setCommunityId(reqJson.getString("communityId"));
+        List<FeeConfigDto> feeConfigDtos = payFeeConfigV1InnerServiceSMOImpl.queryPayFeeConfigs(feeConfigDto);
+
+        if (feeConfigDtos == null || feeConfigDtos.isEmpty()) {
+            return;
+        }
+
+
+        PaymentPoolConfigPo paymentPoolConfigPo = new PaymentPoolConfigPo();
+        paymentPoolConfigPo.setPpId(paymentPoolPo.getPpId());
+        paymentPoolConfigPo.setCommunityId(paymentPoolPo.getCommunityId());
+        paymentPoolConfigV1InnerServiceSMOImpl.deletePaymentPoolConfig(paymentPoolConfigPo);
+
+        for (FeeConfigDto tmpFeeConfigDto : feeConfigDtos) {
+
+            paymentPoolConfigPo = new PaymentPoolConfigPo();
+            paymentPoolConfigPo.setConfigId(tmpFeeConfigDto.getConfigId());
+            paymentPoolConfigPo.setFeeName(tmpFeeConfigDto.getFeeName());
+            paymentPoolConfigPo.setCommunityId(paymentPoolPo.getCommunityId());
+            paymentPoolConfigPo.setPpId(paymentPoolPo.getPpId());
+            paymentPoolConfigPo.setPpcId(GenerateCodeFactory.getGeneratorId("11"));
+            paymentPoolConfigV1InnerServiceSMOImpl.savePaymentPoolConfig(paymentPoolConfigPo);
+        }
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+}

+ 1 - 0
service-acct/src/main/java/com/java110/acct/cmd/payment/UpdatePaymentPoolCmd.java

@@ -72,6 +72,7 @@ public class UpdatePaymentPoolCmd extends Cmd {
     private IPaymentPoolConfigV1InnerServiceSMO paymentPoolConfigV1InnerServiceSMOImpl;
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        super.validateProperty(cmdDataFlowContext);
         Assert.hasKeyAndValue(reqJson, "ppId", "ppId不能为空");
         Assert.hasKeyAndValue(reqJson, "communityId", "communityId不能为空");
 

+ 2 - 0
service-store/src/main/java/com/java110/store/cmd/smallWechat/UpdateAdminSmallWechatCmd.java

@@ -18,6 +18,7 @@ package com.java110.store.cmd.smallWechat;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.Environment;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
@@ -54,6 +55,7 @@ public class UpdateAdminSmallWechatCmd extends Cmd {
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
         super.validateAdmin(cmdDataFlowContext);
+        Environment.isDevEnv();
         Assert.hasKeyAndValue(reqJson, "wechatId", "wechatId不能为空");
         Assert.hasKeyAndValue(reqJson, "name", "请求报文中未包含name");
         Assert.hasKeyAndValue(reqJson, "appId", "请求报文中未包含appId");