From da3b5c72fa45bc26a9868c2b26e3efda14845179 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期一, 17 四月 2023 01:01:36 +0800
Subject: [PATCH] 加入搜索
---
service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java | 205 +++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 188 insertions(+), 17 deletions(-)
diff --git a/service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java b/service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java
index 7bd8f42..19cd090 100644
--- a/service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java
+++ b/service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java
@@ -9,23 +9,30 @@
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.account.AccountDto;
-import com.java110.dto.accountDetail.AccountDetailDto;
import com.java110.dto.chargeMachine.ChargeMachineDto;
-import com.java110.dto.chargeMachineOrder.ChargeMachineOrderDto;
-import com.java110.dto.chargeMachinePort.ChargeMachinePortDto;
+import com.java110.dto.chargeMachine.ChargeMachineOrderDto;
+import com.java110.dto.chargeMachine.ChargeMachinePortDto;
+import com.java110.dto.chargeMachine.ChargeRuleFeeDto;
+import com.java110.dto.couponPool.CouponPropertyPoolConfigDto;
+import com.java110.dto.couponPool.CouponPropertyUserDto;
import com.java110.dto.user.UserDto;
import com.java110.intf.acct.IAccountInnerServiceSMO;
-import com.java110.intf.common.IChargeMachineOrderAcctV1InnerServiceSMO;
-import com.java110.intf.common.IChargeMachineOrderV1InnerServiceSMO;
-import com.java110.intf.common.IChargeMachinePortV1InnerServiceSMO;
-import com.java110.intf.common.IChargeMachineV1InnerServiceSMO;
+import com.java110.intf.acct.ICouponPropertyPoolConfigV1InnerServiceSMO;
+import com.java110.intf.acct.ICouponPropertyUserDetailV1InnerServiceSMO;
+import com.java110.intf.acct.ICouponPropertyUserV1InnerServiceSMO;
+import com.java110.intf.common.*;
import com.java110.intf.user.IUserV1InnerServiceSMO;
import com.java110.po.accountDetail.AccountDetailPo;
import com.java110.po.chargeMachineOrder.ChargeMachineOrderPo;
import com.java110.po.chargeMachineOrderAcct.ChargeMachineOrderAcctPo;
+import com.java110.po.chargeMachineOrderCoupon.ChargeMachineOrderCouponPo;
+import com.java110.po.chargeMachinePort.ChargeMachinePortPo;
+import com.java110.po.couponPropertyUser.CouponPropertyUserPo;
import com.java110.utils.exception.CmdException;
+import com.java110.utils.lock.DistributedLock;
import com.java110.utils.util.Assert;
import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
import com.java110.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
@@ -62,6 +69,20 @@
@Autowired
private IChargeMachineOrderAcctV1InnerServiceSMO chargeMachineOrderAcctV1InnerServiceSMOImpl;
+ @Autowired
+ private ICouponPropertyUserV1InnerServiceSMO couponPropertyUserV1InnerServiceSMOImpl;
+
+ @Autowired
+ private ICouponPropertyUserDetailV1InnerServiceSMO couponPropertyUserDetailV1InnerServiceSMOImpl;
+
+ @Autowired
+ private ICouponPropertyPoolConfigV1InnerServiceSMO couponPropertyPoolConfigV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IChargeRuleFeeV1InnerServiceSMO chargeRuleFeeV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IChargeMachineOrderCouponV1InnerServiceSMO chargeMachineOrderCouponV1InnerServiceSMOImpl;
@Override
public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
@@ -97,7 +118,17 @@
duration = 10;
}
- BigDecimal payMoneyDec = new BigDecimal(Double.parseDouble(chargeMachineDtos.get(0).getDurationPrice()));
+ ChargeRuleFeeDto chargeRuleFeeDto = new ChargeRuleFeeDto();
+ chargeRuleFeeDto.setRuleId(chargeMachineDtos.get(0).getRuleId());
+ chargeRuleFeeDto.setCommunityId(chargeMachineDtos.get(0).getCommunityId());
+ List<ChargeRuleFeeDto> chargeRuleFeeDtos = chargeRuleFeeV1InnerServiceSMOImpl.queryChargeRuleFees(chargeRuleFeeDto);
+
+ if (chargeRuleFeeDtos == null || chargeRuleFeeDtos.size() < 1) {
+ throw new CmdException("鏈缃厖鍊兼敹璐�");
+ }
+ reqJson.put("durationPrice", chargeRuleFeeDtos.get(chargeRuleFeeDtos.size() - 1).getDurationPrice());
+
+ BigDecimal payMoneyDec = new BigDecimal(Double.parseDouble(chargeRuleFeeDtos.get(chargeRuleFeeDtos.size() - 1).getDurationPrice()));
double payMoney = payMoneyDec.multiply(new BigDecimal(duration)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
@@ -111,6 +142,8 @@
AccountDto accountDto = new AccountDto();
accountDto.setLink(userDtos.get(0).getTel());
accountDto.setAcctType(AccountDto.ACCT_TYPE_CASH);
+ accountDto.setObjType(AccountDto.OBJ_TYPE_PERSON);
+ accountDto.setPartId(reqJson.getString("communityId"));
List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto);
if (accountDtos == null || accountDtos.size() < 1) {
@@ -123,6 +156,25 @@
reqJson.put("acctId", accountDtos.get(0).getAcctId());
+ if (!reqJson.containsKey("couponIds") || StringUtil.isEmpty(reqJson.getString("couponIds"))) {
+ return;
+ }
+
+ for (String couponId : reqJson.getString("couponIds").split(",")) {
+ CouponPropertyUserDto couponPropertyUserDto = new CouponPropertyUserDto();
+ couponPropertyUserDto.setCouponId(couponId);
+ couponPropertyUserDto.setToType(CouponPropertyUserDto.TO_TYPE_CHARGE);
+ couponPropertyUserDto.setState(CouponPropertyUserDto.STATE_WAIT);
+
+ List<CouponPropertyUserDto> couponPropertyUserDtos = couponPropertyUserV1InnerServiceSMOImpl.queryCouponPropertyUsers(couponPropertyUserDto);
+
+ if (couponPropertyUserDtos == null || couponPropertyUserDtos.size() < 1) {
+ throw new CmdException("浼樻儬鍒镐笉瀛樺湪");
+ }
+ if (!"Y".equals(couponPropertyUserDtos.get(0).getIsExpire())) {
+ throw new CmdException("浼樻儬鍒稿凡杩囨湡");
+ }
+ }
}
@@ -147,6 +199,7 @@
durationHours = 10;
}
+
ChargeMachinePortDto chargeMachinePortDto = new ChargeMachinePortDto();
chargeMachinePortDto.setMachineId(reqJson.getString("machineId"));
chargeMachinePortDto.setPortId(reqJson.getString("portId"));
@@ -162,6 +215,13 @@
return;
}
+ // todo 淇敼绔彛鐘舵��
+ ChargeMachinePortPo chargeMachinePortPo = new ChargeMachinePortPo();
+ chargeMachinePortPo.setPortId(chargeMachinePortDtos.get(0).getPortId());
+ chargeMachinePortPo.setCommunityId(chargeMachinePortDtos.get(0).getCommunityId());
+ chargeMachinePortPo.setState(ChargeMachinePortDto.STATE_WORKING);
+ chargeMachinePortV1InnerServiceSMOImpl.updateChargeMachinePort(chargeMachinePortPo);
+
// todo 鐢熸垚 鍏呯數璁㈠崟
ChargeMachineOrderPo chargeMachineOrderPo = new ChargeMachineOrderPo();
chargeMachineOrderPo.setAmount("0");
@@ -173,6 +233,7 @@
chargeMachineOrderPo.setPersonId(userId);
chargeMachineOrderPo.setChargeHours(reqJson.getString("duration"));
chargeMachineOrderPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+ chargeMachineOrderPo.setDurationPrice(reqJson.getString("durationPrice"));
Calendar calendar = Calendar.getInstance();
if (duration == 999) {
calendar.add(Calendar.HOUR, 10);
@@ -191,36 +252,146 @@
chargeCoreImpl.stopCharge(chargeMachineDtos.get(0), chargeMachinePortDtos.get(0));
throw new CmdException("鍏呯數澶辫触");
}
+ resultVo.setData(orderId);
- //鎵f
- // todo 3.0 璐︽埛鎵f
+ //todo 浼樻儬鍒告姷鎵�
+ withholdCoupon(reqJson, chargeMachineDtos, orderId);
+
+
+ // todo 3.0 璐︽埛棰勬墸娆�
+ withholdAccount(reqJson, chargeMachineDtos, orderId, durationHours);
+
+
+ context.setResponseEntity(ResultVo.createResponseEntity(resultVo));
+ }
+
+ /**
+ * 浼樻儬鍒告姷鎵�
+ *
+ * @param reqJson
+ * @param chargeMachineDtos
+ * @param orderId
+ */
+ private void withholdCoupon(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId) {
+ if (!reqJson.containsKey("couponIds") || StringUtil.isEmpty(reqJson.getString("couponIds"))) {
+ return;
+ }
+ int flag;
+// double hours = 0;
+// String couponNames = "";
+ ChargeMachineOrderCouponPo chargeMachineOrderCouponPo = null;
+ for (String couponId : reqJson.getString("couponIds").split(",")) {
+ String requestId = DistributedLock.getLockUUID();
+ String key = this.getClass().getSimpleName() + reqJson.getString("couponId");
+ try {
+ CouponPropertyUserDto couponPropertyUserDto = new CouponPropertyUserDto();
+ couponPropertyUserDto.setCouponId(couponId);
+ couponPropertyUserDto.setToType(CouponPropertyUserDto.TO_TYPE_CHARGE);
+ couponPropertyUserDto.setState(CouponPropertyUserDto.STATE_WAIT);
+
+ List<CouponPropertyUserDto> couponPropertyUserDtos = couponPropertyUserV1InnerServiceSMOImpl.queryCouponPropertyUsers(couponPropertyUserDto);
+ int stock = Integer.parseInt(couponPropertyUserDtos.get(0).getStock());
+ CouponPropertyUserPo couponPropertyUserPo = new CouponPropertyUserPo();
+ couponPropertyUserPo.setCouponId(couponPropertyUserDtos.get(0).getCouponId());
+ couponPropertyUserPo.setCommunityId(couponPropertyUserDtos.get(0).getCommunityId());
+ couponPropertyUserPo.setStock((stock - 1) + "");
+ if (stock == 1) {
+ couponPropertyUserPo.setState(CouponPropertyUserDto.STATE_FINISH);
+ }
+ flag = couponPropertyUserV1InnerServiceSMOImpl.updateCouponPropertyUser(couponPropertyUserPo);
+ if (flag < 1) {
+ throw new CmdException("鏍搁攢澶辫触");
+ }
+
+ CouponPropertyPoolConfigDto couponPropertyPoolConfigDto = new CouponPropertyPoolConfigDto();
+ couponPropertyPoolConfigDto.setCouponId(couponPropertyUserDtos.get(0).getCppId());
+ couponPropertyPoolConfigDto.setColumnKey("hours");
+ List<CouponPropertyPoolConfigDto> couponPropertyPoolConfigDtos = couponPropertyPoolConfigV1InnerServiceSMOImpl.queryCouponPropertyPoolConfigs(couponPropertyPoolConfigDto);
+
+ Assert.listOnlyOne(couponPropertyPoolConfigDtos, "鏈寘鍚紭鎯犲埜閰嶇疆淇℃伅");
+
+ double value = Double.parseDouble(couponPropertyPoolConfigDtos.get(0).getColumnValue());
+
+ chargeMachineOrderCouponPo = new ChargeMachineOrderCouponPo();
+ chargeMachineOrderCouponPo.setCouponId(couponId);
+ chargeMachineOrderCouponPo.setCouponName(couponPropertyUserDtos.get(0).getCouponName());
+ chargeMachineOrderCouponPo.setOrderId(orderId);
+ chargeMachineOrderCouponPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId());
+ chargeMachineOrderCouponPo.setState("W");
+ chargeMachineOrderCouponPo.setCmocId(GenerateCodeFactory.getGeneratorId("11"));
+ chargeMachineOrderCouponPo.setHours(value + "");
+ chargeMachineOrderCouponV1InnerServiceSMOImpl.saveChargeMachineOrderCoupon(chargeMachineOrderCouponPo);
+
+// couponNames += ("浼樻儬鍒稿悕绉帮細" + couponPropertyUserDtos.get(0).getCouponName() + "(" + couponId + "),灏忔椂锛�"+value+";");
+//
+// hours += value;
+ } finally {
+ DistributedLock.releaseDistributedLock(requestId, key);
+ }
+ }
+
+// hours = Math.ceil(hours);
+
+// ChargeMachineOrderAcctPo chargeMachineOrderAcctPo = new ChargeMachineOrderAcctPo();
+// chargeMachineOrderAcctPo.setAcctDetailId("-1");
+// chargeMachineOrderAcctPo.setAmount("0");
+// chargeMachineOrderAcctPo.setCmoaId(GenerateCodeFactory.getGeneratorId("11"));
+// chargeMachineOrderAcctPo.setOrderId(orderId);
+// chargeMachineOrderAcctPo.setAcctId(reqJson.getString("acctId"));
+// chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+// chargeMachineOrderAcctPo.setEndTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), new Double(hours).intValue()));
+// chargeMachineOrderAcctPo.setRemark("浼樻儬鍒告姷鎵�," + couponNames);
+// chargeMachineOrderAcctPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId());
+// chargeMachineOrderAcctPo.setEnergy("0");
+// chargeMachineOrderAcctPo.setDurationPrice(reqJson.getString("durationPrice"));
+//
+// chargeMachineOrderAcctV1InnerServiceSMOImpl.saveChargeMachineOrderAcct(chargeMachineOrderAcctPo);
+
+// return hours;
+ }
+
+ /**
+ * 璐︽埛鎶垫墸
+ *
+ * @param reqJson
+ * @param chargeMachineDtos
+ * @param orderId
+ */
+ private void withholdAccount(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId, double durationHours) {
AccountDto accountDto = new AccountDto();
accountDto.setAcctId(reqJson.getString("acctId"));
List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto);
+
+ double amount = 0.0;
+ BigDecimal durationPrice = new BigDecimal(Double.parseDouble(reqJson.getString("durationPrice")));
+
+ durationPrice = durationPrice.multiply(new BigDecimal(durationHours)).setScale(2, BigDecimal.ROUND_HALF_UP);
+ amount = durationPrice.doubleValue();
+
AccountDetailPo accountDetailPo = new AccountDetailPo();
accountDetailPo.setAcctId(accountDtos.get(0).getAcctId());
accountDetailPo.setObjId(accountDtos.get(0).getObjId());
accountDetailPo.setObjType(accountDtos.get(0).getObjType());
- accountDetailPo.setAmount(chargeMachineDtos.get(0).getDurationPrice());
+ accountDetailPo.setAmount(amount + "");
accountDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
accountInnerServiceSMOImpl.withholdAccount(accountDetailPo);
-
ChargeMachineOrderAcctPo chargeMachineOrderAcctPo = new ChargeMachineOrderAcctPo();
chargeMachineOrderAcctPo.setAcctDetailId(accountDetailPo.getDetailId());
- chargeMachineOrderAcctPo.setAmount(chargeMachineDtos.get(0).getDurationPrice());
+ chargeMachineOrderAcctPo.setAmount(amount + "");
+
chargeMachineOrderAcctPo.setCmoaId(GenerateCodeFactory.getGeneratorId("11"));
chargeMachineOrderAcctPo.setOrderId(orderId);
chargeMachineOrderAcctPo.setAcctId(accountDtos.get(0).getAcctId());
chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
- chargeMachineOrderAcctPo.setEndTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), 1));
- chargeMachineOrderAcctPo.setRemark("涓�灏忔椂瀹氭椂鎵f");
+ chargeMachineOrderAcctPo.setEndTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), new Double(Math.ceil(durationHours)).intValue()));
+ chargeMachineOrderAcctPo.setRemark("璐︽埛鎵f");
chargeMachineOrderAcctPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId());
chargeMachineOrderAcctPo.setEnergy("0");
+ chargeMachineOrderAcctPo.setDurationPrice(reqJson.getString("durationPrice"));
+
chargeMachineOrderAcctV1InnerServiceSMOImpl.saveChargeMachineOrderAcct(chargeMachineOrderAcctPo);
-
- context.setResponseEntity(ResultVo.createResponseEntity(resultVo));
}
}
--
Gitblit v1.8.0