|
@@ -10,6 +10,7 @@ import org.dromara.backstage.basics.domain.vo.PtWorkstationVo;
|
|
|
import org.dromara.backstage.basics.service.IPtParameterService;
|
|
import org.dromara.backstage.basics.service.IPtParameterService;
|
|
|
import org.dromara.backstage.basics.service.IPtWorkstationService;
|
|
import org.dromara.backstage.basics.service.IPtWorkstationService;
|
|
|
import org.dromara.backstage.cardCenter.domain.bo.PtCardBo;
|
|
import org.dromara.backstage.cardCenter.domain.bo.PtCardBo;
|
|
|
|
|
+import org.dromara.backstage.cardCenter.domain.vo.InitCardVo;
|
|
|
import org.dromara.backstage.cardCenter.domain.vo.PtCardVo;
|
|
import org.dromara.backstage.cardCenter.domain.vo.PtCardVo;
|
|
|
import org.dromara.backstage.cardCenter.service.IPtCardService;
|
|
import org.dromara.backstage.cardCenter.service.IPtCardService;
|
|
|
import org.dromara.backstage.payment.domain.bo.PtBagBo;
|
|
import org.dromara.backstage.payment.domain.bo.PtBagBo;
|
|
@@ -20,10 +21,7 @@ import org.dromara.backstage.payment.service.IPtUserAccountService;
|
|
|
import org.dromara.common.core.constant.DefaultConstants;
|
|
import org.dromara.common.core.constant.DefaultConstants;
|
|
|
import org.dromara.common.core.domain.R;
|
|
import org.dromara.common.core.domain.R;
|
|
|
import org.dromara.common.core.domain.model.ResultInfo;
|
|
import org.dromara.common.core.domain.model.ResultInfo;
|
|
|
-import org.dromara.common.core.enums.CardOpenEnum;
|
|
|
|
|
-import org.dromara.common.core.enums.CardStatusEnum;
|
|
|
|
|
-import org.dromara.common.core.enums.ResultCodeEnum;
|
|
|
|
|
-import org.dromara.common.core.enums.UserAccountStatusEnum;
|
|
|
|
|
|
|
+import org.dromara.common.core.enums.*;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import java.text.MessageFormat;
|
|
import java.text.MessageFormat;
|
|
@@ -112,7 +110,7 @@ public class CardBusiness {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public R<ResultInfo> initEntityCard(PtCardBo cardBo) {
|
|
|
|
|
|
|
+ public R<ResultInfo> initEntityCard(PtCardBo cardBo, InitCardVo initCardVo) {
|
|
|
PtUserAccountVo userAccountVo = new PtUserAccountVo();
|
|
PtUserAccountVo userAccountVo = new PtUserAccountVo();
|
|
|
PtWorkstationVo workstationVo = new PtWorkstationVo();
|
|
PtWorkstationVo workstationVo = new PtWorkstationVo();
|
|
|
// 基本的参数校验
|
|
// 基本的参数校验
|
|
@@ -141,9 +139,44 @@ public class CardBusiness {
|
|
|
};
|
|
};
|
|
|
// 所有逻辑校验通过,入库
|
|
// 所有逻辑校验通过,入库
|
|
|
cardBo.setCardNo(cardNoBusiness.getCardNo());
|
|
cardBo.setCardNo(cardNoBusiness.getCardNo());
|
|
|
|
|
+ cardBo.setStatus(CardStatusEnum.NORMAL.code().toString());
|
|
|
|
|
+ cardBo.setChangeTime(DateUtil.date());
|
|
|
|
|
+ PtCardVo cardVo = ptCardService.saveOrUpdate(cardBo);
|
|
|
|
|
+ // 入库成功后,组装返回前端的数据
|
|
|
|
|
+ InitCardVo initCard = new InitCardVo();
|
|
|
|
|
+ // 1.获取用户钱包信息
|
|
|
|
|
+ PtBagBo bagBo = new PtBagBo();
|
|
|
|
|
+ bagBo.setUserId(cardBo.getUserId());
|
|
|
|
|
+ List<PtBagVo> bagVos = ptBagService.queryList(bagBo);
|
|
|
|
|
+ initCard.setBags(bagVos);
|
|
|
|
|
+ // 2.设置账户信息
|
|
|
|
|
+ initCard.setUser(userAccountVo);
|
|
|
|
|
+ // 3.设置当前卡片信息
|
|
|
|
|
+ initCard.setCard(cardVo);
|
|
|
|
|
+
|
|
|
|
|
+ BeanUtil.copyProperties(initCard, initCardVo);
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public R<PtCardVo> writeCardSuccess(PtCardBo cardBo){
|
|
|
|
|
+ PtCardBo queryBo = new PtCardBo();
|
|
|
|
|
+ queryBo.setCardNo(cardBo.getCardNo());
|
|
|
|
|
+ queryBo.setFactoryId(cardBo.getFactoryId());
|
|
|
|
|
+ PtCardVo cardVo = ptCardService.selectOneByBo(queryBo);
|
|
|
|
|
+ // 补卡和换卡时需要注销旧卡
|
|
|
|
|
+ if (ObjectUtil.equals(cardBo.getOperateType(), CardOperateEnum.REISSUE.code()) || ObjectUtil.equals(cardBo.getOperateType(),
|
|
|
|
|
+ CardOperateEnum.CHANGE.code())) {
|
|
|
|
|
+ // 注销旧卡
|
|
|
|
|
+ queryBo.setCardNo(cardBo.getOldCardNo());
|
|
|
|
|
+ queryBo.setFactoryId(cardBo.getOldFactoryId());
|
|
|
|
|
+ queryBo.setStatus(CardStatusEnum.CLOSE.code().toString());
|
|
|
|
|
+ queryBo.setChangeTime(DateUtil.date());
|
|
|
|
|
+
|
|
|
|
|
+ ptCardService.updateByBo(queryBo);
|
|
|
|
|
+ }
|
|
|
|
|
+ return R.ok(cardVo);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private R<ResultInfo> checkParam(PtCardBo cardBo, PtUserAccountVo userAccountVo, PtWorkstationVo workstationVo) {
|
|
private R<ResultInfo> checkParam(PtCardBo cardBo, PtUserAccountVo userAccountVo, PtWorkstationVo workstationVo) {
|
|
|
Long factoryId = cardBo.getFactoryId();
|
|
Long factoryId = cardBo.getFactoryId();
|
|
|
Long userId = cardBo.getUserId();
|
|
Long userId = cardBo.getUserId();
|
|
@@ -203,8 +236,8 @@ public class CardBusiness {
|
|
|
String reuseCard = ptParameterService.selectParamByCode("REUSE_CARD");
|
|
String reuseCard = ptParameterService.selectParamByCode("REUSE_CARD");
|
|
|
if (ObjectUtil.equal(reuseCard, isReuse)) {
|
|
if (ObjectUtil.equal(reuseCard, isReuse)) {
|
|
|
// 可复用,检查当前卡片是否有状态为正常的对应卡片,如有则不能再使用
|
|
// 可复用,检查当前卡片是否有状态为正常的对应卡片,如有则不能再使用
|
|
|
- if (cardVos.stream().anyMatch(p -> ObjectUtil.equal(p.getStatus(), CardStatusEnum.NORMAL.code()))) {
|
|
|
|
|
- new ResultInfo(ResultCodeEnum.DATA_ALREADY_EXISTED, MessageFormat.format("此卡在正常使用,物理卡号[{0}],不能重新发卡", factoryId));
|
|
|
|
|
|
|
+ if (cardVos.stream().anyMatch(p -> ObjectUtil.equal(p.getStatus(), CardStatusEnum.NORMAL.code().toString()))) {
|
|
|
|
|
+ return R.fail(new ResultInfo(ResultCodeEnum.DATA_ALREADY_EXISTED, MessageFormat.format("此卡在正常使用,物理卡号[{0}],不能重新发卡", factoryId)));
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
// 不能复用
|
|
// 不能复用
|
|
@@ -226,18 +259,18 @@ public class CardBusiness {
|
|
|
* @return 检查结果
|
|
* @return 检查结果
|
|
|
*/
|
|
*/
|
|
|
private R<ResultInfo> checkUserNewCard(List<PtCardVo> userCardList, PtCardBo cardBo) {
|
|
private R<ResultInfo> checkUserNewCard(List<PtCardVo> userCardList, PtCardBo cardBo) {
|
|
|
- if (CollectionUtil.isEmpty(userCardList)) {
|
|
|
|
|
|
|
+ if (CollectionUtil.isNotEmpty(userCardList)) {
|
|
|
// 如人员已有正常的主卡,不能再发主卡
|
|
// 如人员已有正常的主卡,不能再发主卡
|
|
|
if (userCardList.stream().anyMatch(p -> ObjectUtil.equals(p.getMainCard(), "Y")
|
|
if (userCardList.stream().anyMatch(p -> ObjectUtil.equals(p.getMainCard(), "Y")
|
|
|
- && ObjectUtil.equals(p.getStatus(), CardStatusEnum.NORMAL.code())
|
|
|
|
|
|
|
+ && ObjectUtil.equals(p.getStatus(), CardStatusEnum.NORMAL.code().toString())
|
|
|
&& p.getFactoryId() > 0 && cardBo.getMainCard().equals("Y"))) {
|
|
&& p.getFactoryId() > 0 && cardBo.getMainCard().equals("Y"))) {
|
|
|
return R.fail(new ResultInfo(ResultCodeEnum.DATA_ALREADY_EXISTED, MessageFormat.format("Id为[{0}]的人员已有正常主卡,无法再发新卡",
|
|
return R.fail(new ResultInfo(ResultCodeEnum.DATA_ALREADY_EXISTED, MessageFormat.format("Id为[{0}]的人员已有正常主卡,无法再发新卡",
|
|
|
cardBo.getUserId())));
|
|
cardBo.getUserId())));
|
|
|
}
|
|
}
|
|
|
// 如果人员已发虚拟卡,此时将虚拟卡转为实体卡
|
|
// 如果人员已发虚拟卡,此时将虚拟卡转为实体卡
|
|
|
userCardList.stream().filter(p -> ObjectUtil.equals(p.getMainCard(), "Y")
|
|
userCardList.stream().filter(p -> ObjectUtil.equals(p.getMainCard(), "Y")
|
|
|
- && ObjectUtil.equals(p.getStatus(), CardStatusEnum.NORMAL.code())
|
|
|
|
|
- && p.getFactoryId() == 0).findFirst().ifPresent(k -> {
|
|
|
|
|
|
|
+ && ObjectUtil.equals(p.getStatus(), CardStatusEnum.NORMAL.code().toString())
|
|
|
|
|
+ && p.getFactoryId() == 0L).findFirst().ifPresent(k -> {
|
|
|
cardBo.setCardNo(k.getCardNo());
|
|
cardBo.setCardNo(k.getCardNo());
|
|
|
cardBo.setCardId(k.getCardId());
|
|
cardBo.setCardId(k.getCardId());
|
|
|
cardBo.setStatus(k.getStatus());
|
|
cardBo.setStatus(k.getStatus());
|
|
@@ -262,7 +295,7 @@ public class CardBusiness {
|
|
|
return R.fail(MessageFormat.format("无法换卡,{0}", result.getData()));
|
|
return R.fail(MessageFormat.format("无法换卡,{0}", result.getData()));
|
|
|
}
|
|
}
|
|
|
// 换卡时,原卡必须是正常状态
|
|
// 换卡时,原卡必须是正常状态
|
|
|
- if (ObjectUtil.notEqual(oldCardVo.getStatus(), CardStatusEnum.NORMAL.code())) {
|
|
|
|
|
|
|
+ if (ObjectUtil.notEqual(oldCardVo.getStatus(), CardStatusEnum.NORMAL.code().toString())) {
|
|
|
return R.fail(
|
|
return R.fail(
|
|
|
new ResultInfo(ResultCodeEnum.DATA_NOT_FOUND,
|
|
new ResultInfo(ResultCodeEnum.DATA_NOT_FOUND,
|
|
|
MessageFormat.format("物理卡号[{0}]和卡流水号[{1}]对应旧卡是正常卡片", oldFactoryId, oldCardNo)));
|
|
MessageFormat.format("物理卡号[{0}]和卡流水号[{1}]对应旧卡是正常卡片", oldFactoryId, oldCardNo)));
|
|
@@ -299,7 +332,7 @@ public class CardBusiness {
|
|
|
// 如果待补的旧卡是主卡,检查人员是否有正常主卡
|
|
// 如果待补的旧卡是主卡,检查人员是否有正常主卡
|
|
|
if (ObjectUtil.equals(oldCardVo.getMainCard(), "Y")) {
|
|
if (ObjectUtil.equals(oldCardVo.getMainCard(), "Y")) {
|
|
|
if (userCardList.stream().anyMatch(
|
|
if (userCardList.stream().anyMatch(
|
|
|
- p -> ObjectUtil.equals(p.getStatus(), CardStatusEnum.NORMAL.code()) && ObjectUtil.equals(p.getMainCard(), "Y"))) {
|
|
|
|
|
|
|
+ p -> ObjectUtil.equals(p.getStatus(), CardStatusEnum.NORMAL.code().toString()) && ObjectUtil.equals(p.getMainCard(), "Y"))) {
|
|
|
return R.fail(new ResultInfo(ResultCodeEnum.DATA_ALREADY_EXISTED,
|
|
return R.fail(new ResultInfo(ResultCodeEnum.DATA_ALREADY_EXISTED,
|
|
|
MessageFormat.format("物理卡号[{0}]和卡流水号[{1}]的挂失卡片为主卡,但人员已有正常的主卡", oldFactoryId,
|
|
MessageFormat.format("物理卡号[{0}]和卡流水号[{1}]的挂失卡片为主卡,但人员已有正常的主卡", oldFactoryId,
|
|
|
oldCardNo)));
|
|
oldCardNo)));
|