diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardTypeEnum.java index 2b9bc77bd..d5a0684ff 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardTypeEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardTypeEnum.java @@ -19,12 +19,16 @@ public enum HardTypeEnum { CANTEEN("2", "食堂"), READ_CARD("3", "读卡器"), DOOR("4", "生鲜柜"), + MERCHANT_QR_CODE("5", "商户二维码扣款牌"), ; private final String type; private final String description; // 是否能预定 - private static final List isReserveList = List.of(SUPERMARKET, CANTEEN); + public static final List isReserveList = List.of(SUPERMARKET, CANTEEN); + + // 不需要创建购物车 + public static final List isNoneCar = List.of(MERCHANT_QR_CODE); public static Boolean isReserve(HardTypeEnum type) { return isReserveList.contains(type); diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java index d7ffcf9b0..92b859f08 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java @@ -15,6 +15,7 @@ import java.util.Arrays; public enum HardPayTypeEnum { WALLET_DEFAULT("1", "普通钱包支付"), WALLET_QR_CODE("2", "钱包二维码支付"), + WALLET_QR_CODE_SCAN("22", "钱包扫一扫支付"), WALLET_CARD("3", "钱包饭卡支付"), FACE("4", "人脸识别支付"), STRIDE_DEPT_QR_CODE("5", "跨单位二维码支付"), diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/app/HardAppCreateOrderScancode.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/app/HardAppCreateOrderScancode.java new file mode 100644 index 000000000..07065b793 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/app/HardAppCreateOrderScancode.java @@ -0,0 +1,18 @@ +package com.bsd.pjcloud.hard.api.dto.app; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class HardAppCreateOrderScancode { + + @Schema(description = "商户id") + @NotNull(message = "商户id不能为空") + private Long merchantId; + + @Schema(description = "用户输入的价格") + @NotNull(message = "自定义金额不能为空") + private Integer customPrice; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java index 0666aef21..4cdcd3a0f 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java @@ -4,6 +4,7 @@ import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; @@ -16,7 +17,6 @@ import lombok.NoArgsConstructor; @Data public class HardAppCreateOrderDto { - @NotNull(message = "父订单id不能为空") private Long carParentId; @NotNull(message = "用户id不能为空") @@ -36,4 +36,10 @@ public class HardAppCreateOrderDto { private Long orderSourceTypeId; + // 用户自定义的价格(分)不是通过计算购物车总价得来的 + private Integer customPrice; + + // 商户id + private Long merchantId; + } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java index 25590953e..c52fbf3ff 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java @@ -23,6 +23,7 @@ import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardHourTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; +import com.bsd.pjcloud.hard.api.dto.app.HardAppCreateOrderScancode; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; import com.bsd.pjcloud.hard.api.dto.order.HardOrderPreferencesDto; import com.bsd.pjcloud.hard.api.dto.order.app.HardAppCreateOrderDto; @@ -41,6 +42,7 @@ import org.springframework.http.HttpHeaders; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.io.IOException; @@ -102,6 +104,22 @@ public class HardOrderController { HardAppCreateOrderDto dto = HardAppCreateOrderDto.builder().carParentId(carParentId).walletType(WalletTypeEnum.EAT).hardType(hardType).userId(user.getId()).orderType(HardOrderTypeEnum.RESERVE).payType(HardPayTypeEnum.WALLET_DEFAULT).build(); return R.ok(hardwareOrderService.appCreateOrder(dto)); } + + @Operation(summary = "app创建订单扫一扫", description = "app创建订单扫一扫") + @PostMapping("/app/create-order-scan-qrcode") + @Idempotent(expireTime = 10, info = "正在创建订单中,请勿重复操作") + public R appCreateOrderScancode(@Validated @RequestBody HardAppCreateOrderScancode body) { + PjcloudUser user = SecurityUtils.getUser(); + HardAppCreateOrderDto dto = HardAppCreateOrderDto.builder() + .customPrice(body.getCustomPrice()) + .userId(user.getId()) + .hardType(HardTypeEnum.MERCHANT_QR_CODE) + .orderType(HardOrderTypeEnum.RESERVE) + .walletType(WalletTypeEnum.EAT) + .payType(HardPayTypeEnum.WALLET_QR_CODE_SCAN) + .build(); + return R.ok(hardwareOrderService.appCreateOrderScancode(dto)); + } /* ************************************* end app end ************************************* */ @Operation(summary = "分页查询", description = "分页查询") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java index 8483dc39d..f6968945d 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java @@ -30,6 +30,11 @@ public interface HardOrderService extends IService { */ Long appCreateOrder(@Valid HardAppCreateOrderDto dto); + /** + * 创建app订单 + */ + Long appCreateOrderScancode(@Valid HardAppCreateOrderDto dto); + /** * 快速扣款,离线订单使用 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index 73757e9af..9c3ba2cd9 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -337,6 +337,46 @@ public class HardOrderServiceImpl extends ServiceImpl list = walletTransactionService.scopeList(dto, DataScope.of()); + walletTransactionService.exportByTemplate(response, dto, "file/个人记账扣款明细.xlsx", list); + } + + @Operation(summary = "消费导出", description = "消费导出") @PostMapping("/export-xf") @PreAuthorize("@pms.hasPermission('wallet_walletTransaction_export')") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java index 556b59a35..6b9f0e23d 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java @@ -30,4 +30,9 @@ public interface MchManageService extends IService { MchManageVo getFirstMch(List deptIds); MchManageVo getFirstMchByDeptId(Long deptId); + + /** + * 刷新商户二维码 + */ + void refreshQrcode(Long mchId); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java index 1519f3f84..241450699 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/MchManageServiceImpl.java @@ -1,13 +1,13 @@ package com.bsd.pjcloud.wallet.service.impl; +import cn.hutool.core.codec.Base64; import cn.hutool.core.util.ObjectUtil; import cn.hutool.extra.spring.SpringUtil; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.bsd.pjcloud.admin.api.dto.UserInfo; import com.bsd.pjcloud.admin.api.entity.SysDept; import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; import com.bsd.pjcloud.admin.api.feign.RemoteFileService; @@ -24,16 +24,13 @@ import com.bsd.pjcloud.wallet.api.entity.MchManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; -import com.bsd.pjcloud.wallet.api.vo.WalletActiveVo; import com.bsd.pjcloud.wallet.api.vo.code.MchCollectionCodeVo; import com.bsd.pjcloud.wallet.mapper.MchManageMapper; import com.bsd.pjcloud.wallet.mapper.WalletTypeMapper; import com.bsd.pjcloud.wallet.service.MchManageService; import com.bsd.pjcloud.wallet.service.WalletThirdZyService; -import com.bsd.pjcloud.wallet.service.WalletTypeService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.cache.annotation.CacheEvict; import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.mock.web.MockMultipartFile; @@ -88,12 +85,13 @@ public class MchManageServiceImpl extends ServiceImpl() .eq(ObjectUtil.isNotEmpty(name), MchManageEntity::getName, name) diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/file/个人记账扣款明细.xlsx b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/file/个人记账扣款明细.xlsx new file mode 100644 index 000000000..5fd058e7b Binary files /dev/null and b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/file/个人记账扣款明细.xlsx differ