This commit is contained in:
dzc committed 2026-06-08 16:40:38 +08:00
1 parent 462a83af39
commit 4cb7103a18
7 files changed
+91 -42

No files matched your search

@@ -15,7 +15,6 @@ public class HandCancelCodeDto {
private Long hardwareId;
@Schema(description = "安卓订单code")
@NotNull(message = "安卓订单code不能为空")
private String androidOrderCode;
@Schema(description = "用户id")
@@ -41,8 +41,9 @@ public class HardApptController {
@Operation(summary = "app预约时间列表", description = "app预约时间列表")
@GetMapping("/app/list")
public R<List<HardApptEntity>> appList() {
public R<List<HardApptEntity>> appList(@ParameterObject HardApptDto dto) {
List<HardApptEntity> list = hardApptService.list(new LambdaQueryWrapper<HardApptEntity>()
.eq(ObjectUtil.isNotEmpty(dto.getMchId()), HardApptEntity::getMchId, dto.getMchId())
.eq(HardApptEntity::getStatus, YesNoEnum.YES.getCode())
.orderByDesc(HardApptEntity::getSort)
);
@@ -545,7 +545,7 @@ public class HardOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardOrder
String subject = hardCarService.computerCarSubject(hardType, dto.getOrderType(), carListDto);
// 添加硬件订单
HardOrderEntity orderObj = HardOrderEntity.builder()
.userId(dto.getUserId())
.userId(userDetail.getSysUser().getUserId())
.userDeptId(userDetail.getSysUser().getDeptId())
.parentCarId(dto.getCarParentId())
.sysType(dto.getHardType().getType())
@@ -973,6 +973,9 @@ public class HardOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardOrder
@Override
@Transactional(rollbackFor = Exception.class)
public Long xfjFastCreateOrder(HardXfjFastCreateOrderDto dto) {
if (ObjectUtil.isEmpty(dto.getPlatformType())) {
throw new RuntimeException("请选择终端支付类型");
}
// 查询设备
HardManagerVo hard = hardManagerService.getByHardId(dto.getHardId());
if (ObjectUtil.isEmpty(hard)) {
@@ -991,7 +994,7 @@ public class HardOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardOrder
}
// 查询用户
UserInfo userDetail = null;
if (ObjectUtil.equals(dto.getPlatformType(), AppPlusPlatformTypeEnum.ZAX_APP_WALLET)) {
if (ObjectUtil.equals(dto.getPlatformType(), AppPlusPlatformTypeEnum.ZAX_APP_WALLET) || ObjectUtil.isNotEmpty(dto.getUserId())) {
userDetail = userService.getInnerByUserId(dto.getUserId()).getData();
if (ObjectUtil.isEmpty(userDetail)) {
throw new RuntimeException("用户不存在不存在");
@@ -1039,6 +1042,7 @@ public class HardOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardOrder
orderObj.setWalletId(wallet.getId());
}
if (ObjectUtil.isNotEmpty(userDetail)) {
orderObj.setUserId(userDetail.getSysUser().getUserId());
orderObj.setUserDeptId(userDetail.getSysUser().getDeptId());
} else {
orderObj.setUserId(-1L);
@@ -1436,7 +1440,7 @@ public class HardOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardOrder
HardOrderEntity order = baseMapper.selectById(dto.getOrderId());
if (ObjectUtil.isEmpty(order)) throw new RuntimeException("订单不存在");
// 查询用户
UserInfo userInfo = userService.getByUserId(order.getUserId()).getData();
UserInfo userInfo = userService.getInnerByUserId(order.getUserId()).getData();
if (ObjectUtil.isEmpty(userInfo)) throw new RuntimeException("用户不存在");
// 判断是否被核销过
HardOrderTypeEnum orderType = HardOrderTypeEnum.valueOfByType(order.getOrderType());
@@ -1444,7 +1448,12 @@ public class HardOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardOrder
if (isCancel) throw new RuntimeException("该二维码已被核销");
// 核销二维码
getSelf().cancelCode(order, userInfo);
HardOrderEntity updateObj = HardOrderEntity.builder().id(order.getId()).androidOrderCode(dto.getAndroidOrderCode()).hardId(dto.getHardwareId()).orderStatus(HardOrderStatusEnum.CANCEL.getType()).build();
HardOrderEntity updateObj = HardOrderEntity.builder()
.id(order.getId())
.androidOrderCode(dto.getAndroidOrderCode())
.hardId(dto.getHardwareId())
.orderStatus(HardOrderStatusEnum.CANCEL.getType())
.build();
return baseMapper.updateById(updateObj) > 0;
}
@@ -12,6 +12,7 @@ import com.bsd.pjcloud.common.core.constant.CacheConstants;
import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
import com.bsd.pjcloud.hard.api.constant.HardTypeEnum;
import com.bsd.pjcloud.hard.api.constant.xfj.HardXfjTypeEnum;
import com.bsd.pjcloud.hard.api.dto.hard.HandCancelCodeDto;
import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto;
import com.bsd.pjcloud.hard.api.dto.order.xfj.HardXfjFastCreateOrderDto;
import com.bsd.pjcloud.hard.api.dto.xfj.*;
@@ -37,6 +38,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
@@ -210,6 +212,7 @@ public class HardXfjServiceImpl implements HardXfjService {
payDto.setOrderNo(dto.getOrder());
payDto.setWalletType(WalletTypeEnum.EAT);
payDto.setXfjPayType(HardXfjTypeEnum.CARD_PAY);
payDto.setPlatformType(AppPlusPlatformTypeEnum.ZAX_APP_WALLET);
Long orderId = hardOrderService.xfjFastCreateOrder(payDto);
result.setName(username);
@@ -542,6 +545,7 @@ public class HardXfjServiceImpl implements HardXfjService {
* 付款码(二维码)支付接口
*/
@Override
@Transactional
public XfjQRCodeTransactionVo qrCodeTransaction(String body, Map<String, String> headers) {
HardXfjLogEntity logger = initLogger(body, headers, "付款码(二维码)支付接口");
XfjQRCodeTransactionVo result = new XfjQRCodeTransactionVo();
@@ -555,16 +559,8 @@ public class HardXfjServiceImpl implements HardXfjService {
}
// 扣费
if (ObjectUtil.equals(dto.getMode(), "0")) {
// `QR`有三种可能性1、微信、支付宝、短码
AppPlusPlatformTypeEnum platformType = judgeQrCode(dto.getQR());
if (ObjectUtil.isEmpty(platformType)) {
throw new RuntimeException("二维码解析错误");
}
Long userId = null;
WalletTypeEnum walletType = null;
HardXfjTypeEnum xfjPayType = HardXfjTypeEnum.QRCODE_PAY;
if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.ZAX_APP_WALLET)) {
walletType = WalletTypeEnum.EAT;
// 取餐
if (ObjectUtil.equals(dto.getPayType(), 3)) {
// 传过来的是`短码`需要解析一下
WalletCodeUseEntity data = remoteCodeUseService.getInfoByShortCode(dto.getQR()).getData();
if (ObjectUtil.isEmpty(data)) {
@@ -572,27 +568,70 @@ public class HardXfjServiceImpl implements HardXfjService {
result.setMsg("二维码错误");
return result;
}
userId = data.getUserId();
} else if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.WECHAT)) {
xfjPayType = HardXfjTypeEnum.WECHAT_QRCODE_PAY;
} else if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.ALI_PAY)) {
xfjPayType = HardXfjTypeEnum.ALI_QRCODE_PAY;
if (ObjectUtil.isEmpty(data.getId())) {
result.setStatus(XfjBaseVo.STATUS_FAIL);
result.setMsg("不是定餐二维码");
return result;
}
// 查询订单
HardOrderEntity order = hardOrderService.getById(data.getBizId());
if (ObjectUtil.isEmpty(order)) {
result.setStatus(XfjBaseVo.STATUS_FAIL);
result.setMsg("定餐订单不存在");
return result;
}
HandCancelCodeDto cancelDto = new HandCancelCodeDto();
cancelDto.setOrderId(order.getId());
cancelDto.setHardwareId(entity.getId());
cancelDto.setUserId(order.getUserId());
Boolean isCancel = hardOrderService.handCancelCode(cancelDto);
if (!isCancel) {
result.setStatus(XfjBaseVo.STATUS_FAIL);
result.setMsg("核销订餐失败");
return result;
}
result.setQrorder(String.valueOf(order.getId()));
return result;
} else {
// `QR`有三种可能性1、微信、支付宝、短码
AppPlusPlatformTypeEnum platformType = judgeQrCode(dto.getQR());
if (ObjectUtil.isEmpty(platformType)) {
throw new RuntimeException("二维码解析错误");
}
Long userId = null;
WalletTypeEnum walletType = null;
HardXfjTypeEnum xfjPayType = HardXfjTypeEnum.QRCODE_PAY;
if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.ZAX_APP_WALLET)) {
walletType = WalletTypeEnum.EAT;
// 传过来的是`短码`需要解析一下
WalletCodeUseEntity data = remoteCodeUseService.getInfoByShortCode(dto.getQR()).getData();
if (ObjectUtil.isEmpty(data)) {
result.setStatus(XfjBaseVo.STATUS_FAIL);
result.setMsg("二维码错误");
return result;
}
userId = data.getUserId();
} else if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.WECHAT)) {
xfjPayType = HardXfjTypeEnum.WECHAT_QRCODE_PAY;
} else if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.ALI_PAY)) {
xfjPayType = HardXfjTypeEnum.ALI_QRCODE_PAY;
}
// 解析金额
int price = BigDecimal.valueOf(Double.valueOf(dto.getAmount())).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue();
HardXfjFastCreateOrderDto payDto = new HardXfjFastCreateOrderDto();
payDto.setUserId(userId);
payDto.setHardId(entity.getId());
payDto.setPrice(price);
payDto.setWalletType(walletType);
payDto.setXfjPayType(xfjPayType);
payDto.setPlatformType(platformType);
payDto.setDevicePayCode(dto.getQR());
Long orderId = hardOrderService.xfjFastCreateOrder(payDto);
result.setQrorder(String.valueOf(orderId));
return result;
}
// 解析金额
int price = BigDecimal.valueOf(Double.valueOf(dto.getAmount())).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue();
HardXfjFastCreateOrderDto payDto = new HardXfjFastCreateOrderDto();
payDto.setUserId(userId);
payDto.setHardId(entity.getId());
payDto.setPrice(price);
payDto.setWalletType(walletType);
payDto.setXfjPayType(xfjPayType);
payDto.setPlatformType(platformType);
payDto.setDevicePayCode(dto.getQR());
Long orderId = hardOrderService.xfjFastCreateOrder(payDto);
result.setQrorder(String.valueOf(orderId));
return result;
}
// 充值
else if (ObjectUtil.equals(dto.getMode(), "1")) {
@@ -785,8 +824,9 @@ public class HardXfjServiceImpl implements HardXfjService {
redisTemplate.opsForValue().set(lockKey, "1", Duration.ofMinutes(30));
log.info("|获取卡号白名单接口|设备 {} 查询完成,设置30分钟锁", entity.getUniqueCode());
}
for (WalletActiveEntity item : walletActiveRecords) {
String whiteCarNumber = generateWhiteCarNumber(String.valueOf(item.getCardSort()), item.getCardNumber(), ObjectUtil.equals(item.getDelFlag(), YesNoEnum.YES.getCode()) ? "0" : "1");
for (int i = 0; i < walletActiveRecords.size(); i++) {
WalletActiveEntity traget = walletActiveRecords.get(i);
String whiteCarNumber = generateWhiteCarNumber(String.valueOf(i + 1), traget.getCardNumber(), ObjectUtil.equals(traget.getDelFlag(), YesNoEnum.YES.getCode()) ? "0" : "1");
whiteCarList.add(whiteCarNumber);
}
result.setCommID(dto.getCommID());
@@ -142,10 +142,9 @@ public class MchManageController {
dto.setVisibleMobile(YesNoEnum.YES.getCode());
if (ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getDeptId())) {
UserInfo userInfo = remoteUserService.getInnerByUserId(user.getId()).getData();
List<SysDept> pageList = remoteDeptService.getDescendantList(userInfo.getSysUser().getDeptId()).getData();
if (ObjectUtil.isNotEmpty(pageList)) {
List<Long> deptList = pageList.stream().map(SysDept::getDeptId).distinct().toList();
dto.setDeptIds(deptList);
MchManageVo targetMch = mchManageService.getViewsCanteenMchByDeptId(userInfo.getSysUser().getDeptId());
if (ObjectUtil.isNotEmpty(targetMch)) {
dto.setIds(List.of(targetMch.getId()));
}
} else {
R.ok(new Page<>());
@@ -30,6 +30,7 @@ public interface MchManageMapper extends PjcloudBaseMapper<MchManageEntity> {
.eq(dto.getParentIsNull(), MchManageEntity::getParentId, -1L)
.likeIfExists(MchManageEntity::getName, dto.getName())
.in(ObjectUtil.isNotEmpty(dto.getDeptIds()), MchManageEntity::getDeptId, dto.getDeptIds())
.in(ObjectUtil.isNotEmpty(dto.getIds()), MchManageEntity::getId, dto.getIds())
.apply(ObjectUtil.isNotEmpty(dto.getType()), "FIND_IN_SET({0}, types)", dto.getType())
.orderByDesc(MchManageEntity::getSort)
.orderByDesc(MchManageEntity::getCreateTime)