java110 лет назад: 2
Родитель
Сommit
6d317e1cbf

+ 17 - 14
service-acct/src/main/java/com/java110/acct/payment/adapt/plutus/PlutusPaymentFactoryAdapt.java

@@ -232,15 +232,24 @@ public class PlutusPaymentFactoryAdapt implements IPaymentFactoryAdapt {
 
         String signature = json.getString("signature");
         String content = json.getString("content");
-        String appId = null;
-        if (json.containsKey("wId")) {
-            String wId = json.get("wId").toString();
-            wId = wId.replace(" ", "+");
-            appId = WechatFactory.getAppId(wId);
-        } else {
-            appId = json.get("appid").toString();
+
+        String publicKey = CommunitySettingFactory.getRemark(notifyPaymentOrderDto.getCommunityId(),"PLUTUS_PUBLIC_KEY");
+        //验签
+        Boolean verify = PlutusFactory.verify256(content, org.bouncycastle.util.encoders.Base64.decode(signature),publicKey);
+        //验签成功
+        if (!verify) {
+            throw new IllegalArgumentException("支付失败签名失败");
         }
 
+        String appId = null;
+//        if (json.containsKey("wId")) {
+//            String wId = json.get("wId").toString();
+//            wId = wId.replace(" ", "+");
+//            appId = WechatFactory.getAppId(wId);
+//        } else {
+//            appId = json.get("appid").toString();
+//        }
+
         JSONObject paramIn = new JSONObject();
         paramIn.put("appId", appId);
         paramIn.put("communityId",notifyPaymentOrderDto.getCommunityId());
@@ -248,13 +257,7 @@ public class PlutusPaymentFactoryAdapt implements IPaymentFactoryAdapt {
         if (smallWeChatDto == null) {
             throw new IllegalArgumentException("未配置公众号或者小程序信息");
         }
-        String publicKey = CommunitySettingFactory.getRemark(smallWeChatDto.getObjId(),"PLUTUS_PUBLIC_KEY");
-        //验签
-        Boolean verify = PlutusFactory.verify256(content, org.bouncycastle.util.encoders.Base64.decode(signature),publicKey);
-        //验签成功
-        if (!verify) {
-            throw new IllegalArgumentException("支付失败签名失败");
-        }
+
         //解密
         byte[] bb = PlutusFactory.decrypt(Base64.decode(content), smallWeChatDto.getPayPassword());
         //服务器返回内容

+ 15 - 2
service-acct/src/main/java/com/java110/acct/payment/business/meter/PreStoreMeterPaymentBusiness.java

@@ -30,6 +30,7 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
@@ -147,18 +148,30 @@ public class PreStoreMeterPaymentBusiness implements IPaymentBusiness {
         payFeePos.add(payFeePo);
         feeInnerServiceSMOImpl.saveFee(payFeePos);
 
-        //查询业主信息
+        //todo 计算用量
+        BigDecimal receivedAmountDec = new BigDecimal(reqJson.getString("receivedAmount"));
+        receivedAmountDec = receivedAmountDec.subtract(new BigDecimal(feeConfigDtos.get(0).getAdditionalAmount()));
+        receivedAmountDec = receivedAmountDec.divide(new BigDecimal(feeConfigDtos.get(0).getSquarePrice()), 0, BigDecimal.ROUND_HALF_UP);
+        List<FeeAttrPo> feeAttrsPos = new ArrayList<>();
+        feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_PROXY_CONSUMPTION, receivedAmountDec.doubleValue() + ""));
+
+
+        //todo 查询业主信息
         OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
         ownerRoomRelDto.setRoomId(reqJson.getString("roomId"));
         List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelV1InnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
         if (ownerRoomRelDtos != null && ownerRoomRelDtos.size() > 0) {
-            List<FeeAttrPo> feeAttrsPos = new ArrayList<>();
+
             feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME,
                     payFeePo.getEndTime()));
 
             feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_ID, ownerRoomRelDtos.get(0).getOwnerId()));
             feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_LINK, ownerRoomRelDtos.get(0).getLink()));
             feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_NAME, ownerRoomRelDtos.get(0).getOwnerName()));
+
+        }
+
+        if (feeAttrsPos.size() > 0) {
             feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrsPos);
         }
 

+ 19 - 0
service-common/src/main/java/com/java110/common/cmd/meterMachine/UpdateMeterMachineCmd.java

@@ -22,8 +22,10 @@ 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.dto.fee.FeeConfigDto;
 import com.java110.intf.common.IMeterMachineSpecV1InnerServiceSMO;
 import com.java110.intf.common.IMeterMachineV1InnerServiceSMO;
+import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
 import com.java110.po.meter.MeterMachinePo;
 import com.java110.po.meter.MeterMachineSpecPo;
 import com.java110.utils.exception.CmdException;
@@ -34,6 +36,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.List;
+
 
 /**
  * 类表述:更新
@@ -57,6 +61,9 @@ public class UpdateMeterMachineCmd extends Cmd {
     @Autowired
     private IMeterMachineSpecV1InnerServiceSMO meterMachineSpecV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
         Assert.hasKeyAndValue(reqJson, "machineId", "machineId不能为空");
@@ -87,7 +94,19 @@ public class UpdateMeterMachineCmd extends Cmd {
     @Java110Transactional
     public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
 
+
         MeterMachinePo meterMachinePo = BeanConvertUtil.covertBean(reqJson, MeterMachinePo.class);
+
+        if (reqJson.containsKey("feeConfigId")) {
+            FeeConfigDto feeConfigDto = new FeeConfigDto();
+            feeConfigDto.setConfigId(reqJson.getString("feeConfigId"));
+            feeConfigDto.setCommunityId(reqJson.getString("communityId"));
+            List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
+            Assert.listOnlyOne(feeConfigDtos, "费用项不存在");
+            meterMachinePo.setFeeConfigName(feeConfigDtos.get(0).getFeeName());
+        }
+
+
         int flag = meterMachineV1InnerServiceSMOImpl.updateMeterMachine(meterMachinePo);
 
         if (flag < 1) {

+ 2 - 0
service-common/src/main/java/com/java110/common/smartMeter/SmartMeterCoreReadImpl.java

@@ -114,6 +114,8 @@ public class SmartMeterCoreReadImpl implements ISmartMeterCoreRead {
         meterMachineV1InnerServiceSMOImpl.updateMeterMachine(meterMachinePo);
 
         if (!MeterMachineDto.MACHINE_MODEL_READ.equals(meterMachineDtos.get(0).getMachineModel())) {
+
+
             return;
         }
 

+ 1 - 1
service-common/src/main/java/com/java110/common/smartMeter/factory/tqdianbiao/TqDianBiaoRemoteDanFeiLvPreFactoryAdaptImpl.java

@@ -202,7 +202,7 @@ public class TqDianBiaoRemoteDanFeiLvPreFactoryAdaptImpl implements ISmartMeterF
             item.put("retry_times", 1);
             item.put("cid", meterMachineSpecDtos.get(0).getSpecValue());
             item.put("address", meterMachineDto.getAddress());
-            item.put("type", 3);
+            item.put("type", 22);
             req.add(item);
 
             MeterMachineDetailPo meterMachineDetailPo = new MeterMachineDetailPo();