| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- package com.java110.acct.cmd.parkingCoupon;
- 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.core.factory.GenerateCodeFactory;
- import com.java110.dto.parking.ParkingCouponCarDto;
- import com.java110.dto.parking.ParkingCouponShopDto;
- import com.java110.dto.shop.ShopDto;
- import com.java110.dto.shop.StoreShopDto;
- import com.java110.dto.store.StoreUserDto;
- import com.java110.intf.acct.IParkingCouponCarV1InnerServiceSMO;
- import com.java110.intf.acct.IParkingCouponShopV1InnerServiceSMO;
- import com.java110.intf.mall.IShopInnerServiceSMO;
- import com.java110.intf.shore.IShoreShopV1InnerServiceSMO;
- import com.java110.intf.store.IStoreShopCommunityV1InnerServiceSMO;
- import com.java110.intf.store.IStoreShopV1InnerServiceSMO;
- import com.java110.intf.store.IStoreUserV1InnerServiceSMO;
- import com.java110.po.parking.ParkingCouponCarPo;
- import com.java110.po.parking.ParkingCouponShopPo;
- import com.java110.utils.cache.MappingCache;
- import com.java110.utils.exception.CmdException;
- import com.java110.utils.lock.DistributedLock;
- import com.java110.utils.util.*;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.http.HttpStatus;
- import org.springframework.http.ResponseEntity;
- import java.text.ParseException;
- import java.util.List;
- /**
- * 特来电同步车牌号给物业系统
- *
- *
- * /app/ext/parkingCoupon.teldSendParkingCouponCar/992020051967020024
- * /app/ext/login.getTokenForTeld/992020051967020024
- */
- @Java110Cmd(serviceCode = "notification_charge_end_order_info")
- public class TeldSendParkingCouponCarCmd extends Cmd {
- @Autowired
- private IStoreUserV1InnerServiceSMO storeUserV1InnerServiceSMOImpl;
- @Autowired
- private IStoreShopV1InnerServiceSMO storeShopV1InnerServiceSMOImpl;
- @Autowired
- private IParkingCouponShopV1InnerServiceSMO parkingCouponShopV1InnerServiceSMOImpl;
- @Autowired
- private IParkingCouponCarV1InnerServiceSMO parkingCouponCarV1InnerServiceSMOImpl;
- public static final String CODE_PREFIX_ID = "10";
- @Override
- public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
- Assert.hasKeyAndValue(reqJson, "Data", "未包含加密报文");
- }
- @Override
- public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
- String signKey = MappingCache.getValue("TELD_DOMAIN", "SIGN_KEY");
- String aesKey = MappingCache.getValue("TELD_DOMAIN", "AES_KEY");
- String aesIv = MappingCache.getValue("TELD_DOMAIN", "AES_IV");
- String data = TeldUtil.Decrypt(reqJson.getString("Data"), aesKey, aesIv);
- if (StringUtil.isEmpty(data)) {
- throw new CmdException("未包含报文");
- }
- JSONObject dataObj = JSONObject.parseObject(data);
- String StartChargeSeq = dataObj.getString("StartChargeSeq");
- int ConfirmResult = 0;
- int PlateAutResult = 1;
- int PlateAutFailReason = 0;
- try {
- doSend(context, dataObj);
- } catch (Exception e) {
- e.printStackTrace();
- ConfirmResult = 1;
- PlateAutResult = 2;
- PlateAutFailReason = 6;
- }
- JSONObject paramOut = new JSONObject();
- paramOut.put("StartChargeSeq", StartChargeSeq);
- paramOut.put("ConfirmResult", ConfirmResult);
- paramOut.put("PlateAutResult", PlateAutResult);
- paramOut.put("PlateAutFailReason", PlateAutFailReason);
- String paramStr = "";
- try {
- paramStr = TeldUtil.generateReturnParam(paramOut.toJSONString(), aesKey, aesIv, signKey, reqJson.getString("OperatorID"));
- } catch (Exception e) {
- e.printStackTrace();
- }
- context.setResponseEntity(new ResponseEntity(paramStr, HttpStatus.OK));
- }
- private void doSend(ICmdDataFlowContext context, JSONObject dataObj) {
- String userId = context.getReqHeaders().get("user-id");
- StoreUserDto storeUserDto = new StoreUserDto();
- storeUserDto.setUserId(userId);
- List<StoreUserDto> storeUserDtos = storeUserV1InnerServiceSMOImpl.queryStoreUsers(storeUserDto);
- Assert.listOnlyOne(storeUserDtos, "商户不存在");
- StoreShopDto storeShopDto = new StoreShopDto();
- storeUserDto.setStoreId(storeUserDtos.get(0).getStoreId());
- List<ShopDto> storeShops = storeShopV1InnerServiceSMOImpl.queryStoreShops(storeShopDto);
- if (storeShops == null || storeShops.size() < 1) {
- Assert.listOnlyOne(storeUserDtos, "商户店铺不存在");
- }
- ParkingCouponShopDto parkingCouponShopDto = new ParkingCouponShopDto();
- parkingCouponShopDto.setHasQuantity("Y");
- parkingCouponShopDto.setShopId(storeShops.get(0).getShopId());
- List<ParkingCouponShopDto> parkingCouponShopDtos = parkingCouponShopV1InnerServiceSMOImpl.queryParkingCouponShops(parkingCouponShopDto);
- if (parkingCouponShopDtos == null || parkingCouponShopDtos.size() < 1) { //停车券已用完
- throw new CmdException("停车券已用完");
- }
- String carNum = dataObj.getString("PlateNum");
- int quantity = 0;
- int flag = 0;
- String requestId = DistributedLock.getLockUUID();
- String key = this.getClass().getSimpleName() + parkingCouponShopDtos.get(0).getCouponShopId();
- try {
- DistributedLock.waitGetDistributedLock(key, requestId);
- parkingCouponShopDto = new ParkingCouponShopDto();
- parkingCouponShopDto.setCouponShopId(parkingCouponShopDtos.get(0).getCouponShopId());
- parkingCouponShopDto.setShopId(storeShops.get(0).getShopId());
- parkingCouponShopDtos = parkingCouponShopV1InnerServiceSMOImpl.queryParkingCouponShops(parkingCouponShopDto);
- quantity = Integer.parseInt(parkingCouponShopDtos.get(0).getQuantity());
- if (quantity < 1) {
- throw new CmdException("停车劵不足,请购买");
- }
- ParkingCouponShopPo parkingCouponShopPo = new ParkingCouponShopPo();
- parkingCouponShopPo.setCouponShopId(parkingCouponShopDtos.get(0).getCouponShopId());
- parkingCouponShopPo.setQuantity((quantity - 1) + "");
- flag = parkingCouponShopV1InnerServiceSMOImpl.updateParkingCouponShop(parkingCouponShopPo);
- if (flag < 1) {
- throw new CmdException("优惠券递减失败");
- }
- } finally {
- DistributedLock.releaseDistributedLock(requestId, key);
- }
- String StartChargeSeq = dataObj.getString("StartChargeSeq");
- JSONObject remarkObj = new JSONObject();
- remarkObj.put("StartChargeSeq", StartChargeSeq);
- ParkingCouponCarPo parkingCouponCarPo = new ParkingCouponCarPo();
- parkingCouponCarPo.setCarNum(carNum);
- parkingCouponCarPo.setGiveWay("1001");
- parkingCouponCarPo.setCouponShopId(parkingCouponShopDtos.get(0).getCouponShopId());
- parkingCouponCarPo.setShopId(parkingCouponShopDtos.get(0).getShopId());
- parkingCouponCarPo.setPccId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
- parkingCouponCarPo.setCouponId(parkingCouponShopDtos.get(0).getCouponId());
- parkingCouponCarPo.setCommunityId(parkingCouponShopDtos.get(0).getCommunityId());
- parkingCouponCarPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
- parkingCouponCarPo.setEndTime(DateUtil.getAddDayString(DateUtil.getCurrentDate(), DateUtil.DATE_FORMATE_STRING_A, 1));
- parkingCouponCarPo.setPaId(parkingCouponShopDtos.get(0).getPaId());
- parkingCouponCarPo.setState(ParkingCouponCarDto.STATE_WAIT);
- parkingCouponCarPo.setTypeCd(parkingCouponShopDtos.get(0).getTypeCd());
- parkingCouponCarPo.setValue(parkingCouponShopDtos.get(0).getValue());
- parkingCouponCarPo.setRemark(remarkObj.toJSONString());
- flag = parkingCouponCarV1InnerServiceSMOImpl.saveParkingCouponCar(parkingCouponCarPo);
- if (flag < 1) {
- throw new CmdException("保存数据失败");
- }
- }
- }
|