车载机签到,心跳接口提交
Conflicts:
src/main/java/com/supwisdom/dlpay/bus/service/impl/CitizenCardServiceImpl.java
src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java
diff --git a/src/main/java/com/supwisdom/dlpay/bus/dao/CitizenCardverDao.java b/src/main/java/com/supwisdom/dlpay/bus/dao/CitizenCardverDao.java
index bd65241..f512c0a 100644
--- a/src/main/java/com/supwisdom/dlpay/bus/dao/CitizenCardverDao.java
+++ b/src/main/java/com/supwisdom/dlpay/bus/dao/CitizenCardverDao.java
@@ -6,9 +6,14 @@
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
+import java.util.List;
+
@Repository
public interface CitizenCardverDao extends JpaRepository<TCitizenCardver, String> {
@Modifying
@Query(value = "update tb_citizen_cardver set status='closed' where status='normal' and cardvertype=?1 and cardno=?2 and cardverno<?3 ", nativeQuery = true)
void doClosedHistoryRecords(String cardvertype, String cardno, String cardverno);
+
+ @Query(value = "from TCitizenCardver where cardverno>?1 and adddelflag<>0")
+ List<TCitizenCardver> findAllBlacklist(String cardverno);
}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/service/BusConsumeService.java b/src/main/java/com/supwisdom/dlpay/bus/service/BusConsumeService.java
index 289ba99..5da2be4 100644
--- a/src/main/java/com/supwisdom/dlpay/bus/service/BusConsumeService.java
+++ b/src/main/java/com/supwisdom/dlpay/bus/service/BusConsumeService.java
@@ -1,4 +1,17 @@
package com.supwisdom.dlpay.bus.service;
+import com.supwisdom.dlpay.bus.bean.*;
+
public interface BusConsumeService {
+ BusDevLoginResp doLogin(BusDevLoginReq req);
+
+ BusSysparaResp doGetDevpara(BusSysparaReq req);
+
+ BusBlacklistResp doGetBlacklist(BusBlacklistReq req);
+
+ BusHeartBeatResp busHeartBeat(BusHeartBeatReq req);
+
+ BusDtlUploadResp saveOfflineDtl(BusdtlUploadReq req);
+
+
}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/service/impl/BusConsumeServiceImpl.java b/src/main/java/com/supwisdom/dlpay/bus/service/impl/BusConsumeServiceImpl.java
index a3541d2..f9104e9 100644
--- a/src/main/java/com/supwisdom/dlpay/bus/service/impl/BusConsumeServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/bus/service/impl/BusConsumeServiceImpl.java
@@ -1,9 +1,321 @@
package com.supwisdom.dlpay.bus.service.impl;
+import com.supwisdom.dlpay.api.bean.DevparaBean;
+import com.supwisdom.dlpay.api.service.impl.PosPayServiceImpl;
+import com.supwisdom.dlpay.api.util.ErrorCode;
+import com.supwisdom.dlpay.bus.bean.*;
+import com.supwisdom.dlpay.bus.dao.CitizenCardDao;
+import com.supwisdom.dlpay.bus.dao.CitizenCardverDao;
+import com.supwisdom.dlpay.bus.domain.TCitizenCard;
+import com.supwisdom.dlpay.bus.domain.TCitizenCardver;
import com.supwisdom.dlpay.bus.service.BusConsumeService;
+import com.supwisdom.dlpay.bus.service.CitizenCardService;
+import com.supwisdom.dlpay.bus.util.BusConstant;
+import com.supwisdom.dlpay.framework.dao.BusinessparaDao;
+import com.supwisdom.dlpay.framework.dao.SysparaDao;
+import com.supwisdom.dlpay.framework.domain.TShopSettlement;
+import com.supwisdom.dlpay.framework.domain.TSyspara;
+import com.supwisdom.dlpay.framework.service.SystemUtilService;
+import com.supwisdom.dlpay.framework.util.DateUtil;
+import com.supwisdom.dlpay.paysdk.proxy.CitizenCardPayProxy;
+import com.supwisdom.dlpay.paysdk.proxy.TransactionProxy;
+import com.supwisdom.dlpay.paysdk.proxy.UserProxy;
+import com.supwisdom.dlpay.restaurant.dao.*;
+import com.supwisdom.dlpay.restaurant.domain.*;
+import com.supwisdom.dlpay.restaurant.service.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import java.util.List;
+
@Service
public class BusConsumeServiceImpl implements BusConsumeService {
+ private static final Logger logger = LoggerFactory.getLogger(PosPayServiceImpl.class);
+
+
+ @Autowired
+ private DeviceService deviceService;
+ @Autowired
+ private SystemUtilService systemUtilService;
+ @Autowired
+ private TransDtlService transDtlService;
+ @Autowired
+ private OfflineTransDtlService offlineTransDtlService;
+ @Autowired
+ private SysparaDao sysparaDao;
+ @Autowired
+ private MealTypeDao mealTypeDao;
+ @Autowired
+ private DevparaBindDao devparaBindDao;
+ @Autowired
+ private DeviceParamService deviceParamService;
+ @Autowired
+ private ShopSettlementService shopSettlementService;
+ @Autowired
+ private BusinessparaDao businessparaDao;
+ @Autowired
+ private DeviceDiscountRuleService deviceDiscountRuleService;
+ @Autowired
+ private CitizenCardPayProxy citizenCardPayProxy;
+ @Autowired
+ private TransactionProxy transactionProxy;
+ @Autowired
+ private CitizenCardService cardService;
+ @Autowired
+ private UserProxy userProxy;
+ @Autowired
+ private CustomerDao customerDao;
+ @Autowired
+ private CitizenCardDao cardDao;
+ @Autowired
+ private CitizenCardverDao cardverDao;
+
+
+ @Override
+ public BusDevLoginResp doLogin(BusDevLoginReq req) {
+ BusDevLoginResp resp = new BusDevLoginResp();
+ String sysdt = DateUtil.getNow();
+
+ TDevice tDevice = deviceService.getDeviceByDevphyid(req.getDevphyid());
+ BusApiResp apiResp = checkDevice(resp, tDevice);
+ if (!ErrorCode.ERRIF_OK.equals(apiResp.getRetcode())) {
+ resp.setRetcode(apiResp.getRetcode());
+ resp.setRetmsg(apiResp.getRetmsg());
+ return resp;
+ }
+ List<TShopSettlement> shoplist = shopSettlementService.getShopByShopid(tDevice.getShopid());
+ if (shoplist.size() < 1) {
+ resp.setRetcode(ErrorCode.ERRIF_POS_NOSHOP);
+ resp.setRetmsg("设备未绑定商户");
+ return resp;
+ }
+
+ TDevparaGroup group = null;
+ TDevparaBind bind = deviceParamService.getDevparaBindByDeviceid(tDevice.getId());
+ if (null == bind) {
+ group = deviceParamService.getDefaultDevparaGroup();
+ } else {
+ group = deviceParamService.getDevparaGroupByGroupid(bind.getGroupid());
+ }
+
+ tDevice.setRunstatus(1);
+ tDevice.setLastlogintime(sysdt);
+ deviceService.saveDevice(tDevice);
+ if (group.getGlobalflag() == false) {
+ if (null == bind) {
+ bind = new TDevparaBind();
+ bind.setDeviceid(tDevice.getId());
+ }
+ bind.setGroupid(group.getGroupid());
+ bind.setLastsaved(sysdt);
+ devparaBindDao.save(bind);
+ }
+
+ Integer onlineseqno = transDtlService.getMaxSeqnoToday(tDevice.getId(), req.getTermdate());
+ resp.setCardverno(req.getCardverno());
+ resp.setTermseqno(onlineseqno + 1);
+ resp.setShopname(shoplist.get(0).getShopname());
+ resp.setParagroupid(group.getGroupid());
+ resp.setSystime(sysdt);
+ resp.setParaverno(group.getVerno().intValue());
+ resp.setRetcode(ErrorCode.ERRIF_OK);
+ return resp;
+ }
+
+ @Override
+ public BusSysparaResp doGetDevpara(BusSysparaReq req) {
+ BusSysparaResp resp = new BusSysparaResp();
+ TDevparaGroup group = deviceParamService.getDevparaGroupByGroupid(req.getParagroupid());
+ if (null == group) {
+ resp.setRetcode(ErrorCode.ERRIF_POS_NOFUNC);
+ resp.setRetmsg("未找到" + req.getDevphyid() + "参数组");
+ return resp;
+ }
+ List<TDevpara> tDevparas = deviceParamService.getDevparaInfo(req.getParagroupid());
+
+ ArrayList<DevparaBean> sysParas = new ArrayList<DevparaBean>();
+ for (TDevpara t : tDevparas) {
+ DevparaBean sysPara = new DevparaBean();
+ sysPara.setParaname(t.getParaname());
+ sysPara.setParaval(t.getParaval());
+ sysParas.add(sysPara);
+ }
+ resp.setRetcode(ErrorCode.ERRIF_OK);
+ resp.setRetmsg("下载成功");
+ resp.setParaverno(group.getVerno().intValue());
+ resp.setParagroupid(group.getGroupid());
+ resp.setSyspara(sysParas);
+ return resp;
+ }
+
+ @Override
+ public BusBlacklistResp doGetBlacklist(BusBlacklistReq req) {
+ BusBlacklistResp resp = new BusBlacklistResp();
+ TDevice device = deviceService.getDeviceByDevphyid(req.getDevphyid());
+ BusApiResp apiResp = checkDevice(resp, device);
+ if (!ErrorCode.ERRIF_OK.equals(apiResp.getRetcode())) {
+ resp.setRetcode(apiResp.getRetcode());
+ resp.setRetmsg(apiResp.getRetmsg());
+ return resp;
+ }
+ device.setCardverno(req.getCardverno());
+ deviceService.saveDevice(device);
+ List<BusCardverBean> cardverFlags = new ArrayList<>();
+ TSyspara maxcardver = sysparaDao.findByParaidWithLockNowait(BusConstant.SYSPARAID_MAXCARDVERNO); //非等待锁
+
+ String maxCardverno = maxcardver.getParaval();
+ Integer count = req.getMaxcount();
+ List<TCitizenCardver> blacklist;
+ blacklist = cardverDao.findAllBlacklist(req.getCardverno());
+
+ if (null == blacklist || blacklist.size() < 1) {
+ resp.setCardverno(maxCardverno);
+ resp.setRetcode(ErrorCode.ERRIF_OK);
+ resp.setRetmsg("下载成功");
+ resp.setCount(0);
+ resp.setBlkdata(cardverFlags);
+ return resp;
+ }
+
+ if (blacklist.size() < count) {
+ count = blacklist.size();
+ }
+ for (int i = 0; i < count; i++) {
+ TCitizenCardver cardver = blacklist.get(i);
+ BusCardverBean cardverFlag = new BusCardverBean();
+ cardverFlag.setCardno(cardver.getCardno());
+ cardverFlag.setFlag(cardver.getAdddelflag().toString());
+
+ cardverFlags.add(cardverFlag);
+ }
+
+
+ resp.setCardverno(maxCardverno);
+ resp.setRetcode(ErrorCode.ERRIF_OK);
+ resp.setRetmsg("下载成功");
+ resp.setCount(count);
+ resp.setBlkdata(cardverFlags);
+ return resp;
+ }
+
+ @Override
+ public BusHeartBeatResp busHeartBeat(BusHeartBeatReq req) {
+ BusHeartBeatResp resp = new BusHeartBeatResp();
+ TDevice device = deviceService.getDeviceByDevphyid(req.getDevphyid());
+ BusApiResp apiResp = checkDevice(resp, device);
+ if (!ErrorCode.ERRIF_OK.equals(apiResp.getRetcode())) {
+ resp.setRetcode(apiResp.getRetcode());
+ resp.setRetmsg(apiResp.getRetmsg());
+ return resp;
+ }
+
+ String datetime = DateUtil.getNow("yyyyMMddHHmmss");
+
+ device.setCardverno(req.getCardverno());
+ device.setLastbeattime(datetime);
+ device.setBeatstatus(1);
+ deviceService.saveDevice(device);
+
+ TDevparaGroup group = deviceParamService.getDefaultDevparaGroup();
+ if (group == null) {
+ resp.setRetcode(ErrorCode.ERRIF_OTHER);
+ resp.setRetmsg("未配置默认参数");
+ return resp;
+ }
+
+
+ resp.setRetcode(ErrorCode.ERRIF_OK);
+ resp.setRetmsg("心跳成功");
+ resp.setSystime(datetime);
+ resp.setParaverno(group.getVerno().intValue());
+ resp.setParagroupid(group.getGroupid());
+ resp.setCardverno(req.getCardverno());
+ return resp;
+
+ }
+
+ @Override
+ public BusDtlUploadResp saveOfflineDtl(BusdtlUploadReq req) {
+ BusDtlUploadResp resp = new BusDtlUploadResp();
+ TOfflineTransDtl transDtl = new TOfflineTransDtl();
+ transDtl.setTransdate(req.getTransdate());
+ transDtl.setTranstime(req.getTranstime());
+ transDtl.setBillno(systemUtilService.getRefno());
+ transDtl.setCardno(req.getCardno());
+ transDtl.setRevflag(0);
+ transDtl.setTermsqlno(req.getTermseqno());
+ String err = "";
+ TDevice device = deviceService.getDeviceByDevphyid(req.getDevphyid());
+ if (null == device) {
+ err += "设备物理ID不存在;";
+ }
+ if (1 != device.getState()) {
+ err += "设备状态错误;";
+ }
+ if (!BusConstant.STATUS_NORMAL.equals(device.getCheckstatus())) {
+ err += "设备审核未通过;";
+ }
+ if (!"".equals(err)) {
+ transDtl.setAttr1(err);
+ offlineTransDtlService.saveOfflineTransdtl(transDtl);
+ resp.setRetmsg("保存成功");
+ resp.setRetcode(ErrorCode.ERRIF_OK);
+ return resp;
+ }
+ Double amount = req.getAmount() / 100.0;
+
+ String cardno;
+
+ cardno = req.getCardno();
+
+ TCitizenCard tCard = cardDao.findByCardno(cardno);
+ if (null == tCard) {
+ err += "卡号[" + req.getCardno() + "]不存在;";
+ } else {
+ transDtl.setCustname(tCard.getUsername());
+ }
+ transDtl.setAmount(amount);
+
+ if (device.getState() != 1) {
+ err += "设备状态错误;";
+ } else {
+ transDtl.setTermid(device.getId());
+ transDtl.setShopid(device.getShopid());
+ }
+
+ transDtl.setStatus(BusConstant.STATUS_INIT);
+ transDtl.setAttr1(err);
+ transDtl.setTransmode(BusConstant.TRANSMODE_BUS);
+ offlineTransDtlService.saveOfflineTransdtl(transDtl);
+
+ resp.setRetcode(ErrorCode.ERRIF_OK);
+ resp.setRetmsg("保存成功");
+ resp.setTermseqno(req.getTermseqno());
+ return resp;
+ }
+
+
+ private BusApiResp checkDevice(BusApiResp resp, TDevice device) {
+ if (null == device) {
+ resp.setRetcode(ErrorCode.E_DB_QRY);
+ resp.setRetmsg("设备物理ID不存在");
+ return resp;
+ }
+ if (device.getState() != 1) {
+ resp.setRetcode(ErrorCode.ERRIF_OTHER);
+ resp.setRetmsg("设备状态错误");
+ return resp;
+ }
+ if (!BusConstant.STATUS_CARDVER_NORMAL.equals(device.getCheckstatus())) {
+ resp.setRetcode(ErrorCode.ERRIF_OTHER);
+ resp.setRetmsg("设备审核未通过");
+ return resp;
+ }
+ resp.setRetcode(ErrorCode.ERRIF_OK);
+ return resp;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java b/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java
index 504ad12..c826a47 100644
--- a/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java
+++ b/src/main/java/com/supwisdom/dlpay/bus/util/BusConstant.java
@@ -24,11 +24,18 @@
public final static String CARDVERTYPE_FREEZE = "frozen"; //状态挂失、冻结、未启用等都会冻结卡,下载黑名单
public final static String CARDVERTYPE_UNFREEZE = "unfrozen"; //卡状态正常时解冻
- public final static int ADDDELFLAG_DELETE = 2; //下发删除
- public final static int ADDDELFLAG_ADD = 1; //下发新增
+
+ public final static int ADDDELFLAG_DELETE = 2; //刪除
+ public final static int ADDDELFLAG_ADD = 1; //增加
public final static int ADDDELFLAG_NONE = 0; //不需要下发
public final static int SYSPARAID_MAXCARDVERNO = 10; //全局参数,最大版本号
public final static int SYSPARAID_MAXBLACKCARDVERNO = 11; //全局参数,最大黑名单版本号
public final static int SYSPARAID_CARDSYNCTIME = 21; //全局参数,卡同步时间
+
+ public final static String STATUS_NORMAL="normal";
+ public final static String STATUS_INIT="init";
+
+ public final static String TRANSMODE_BUS="bus";
+
}