From 608a9c4bb68e5adb924396dcc9061c5f72ff748a Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 14 May 2025 16:45:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=89=80=E5=B1=9E=E9=A3=9F=E5=A0=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bsd/pjcloud/admin/api/entity/SysUser.java | 3 + .../com/bsd/pjcloud/admin/api/vo/UserVO.java | 7 +++ .../admin/controller/SysUserController.java | 7 +++ .../pjcloud/admin/service/SysUserService.java | 5 ++ .../service/impl/SysUserServiceImpl.java | 58 +++++++++++++++++++ .../main/resources/mapper/SysUserMapper.xml | 1 + .../wallet/api/vo/WalletSettingVo.java | 16 +++++ .../wallet/api/vo/base/BaseMchInterface.java | 4 +- .../controller/mch/MchRuleJoinController.java | 20 +++---- ...erService.java => MchRuleJoinService.java} | 2 +- .../impl/WalletSettingServiceImpl.java | 13 +++-- .../mch/MchRuleJoinControllerServiceImpl.java | 4 +- 12 files changed, 120 insertions(+), 20 deletions(-) rename pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/{MchRuleJoinControllerService.java => MchRuleJoinService.java} (90%) diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/SysUser.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/SysUser.java index b23834d93..c5f74aec5 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/SysUser.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/entity/SysUser.java @@ -245,4 +245,7 @@ public class SysUser extends Model implements Serializable { @Schema(description = "是否为全局人脸") private String isGlobalFace; + + @Schema(description = "用户所属的商户id") + private Long canteenId; } diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/UserVO.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/UserVO.java index 7afd2238e..671a1acfb 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/UserVO.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/UserVO.java @@ -237,4 +237,11 @@ public class UserVO implements BaseFacesInterface, Serializable { */ private Boolean isCheckUser = false; + @Schema(description = "用户所属的商户id") + private Long canteenId; + + /** + * 商户相关 + */ + private String merchantName; } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java index 41d68b6e4..4375a38aa 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java @@ -86,6 +86,13 @@ public class SysUserController { /* ************************************* end 回调 end ************************************* */ + @Operation(summary = "同步用户食堂信息", description = "同步用户食堂信息") + @PostMapping("/sync-user-canteen") + public R syncUserCanteen() { + userService.syncUserCanteen(); + return R.ok(); + } + /** * 获取指定用户全部信息 * diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserService.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserService.java index 79890825c..7a0db9c73 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserService.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserService.java @@ -227,4 +227,9 @@ public interface SysUserService extends IService { * @return */ List listUserIdByDeptId(Long deptId, String name); + + /** + * 同步用户食堂信息 + */ + void syncUserCanteen(); } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java index f16b5250d..d8e49d154 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java @@ -67,7 +67,10 @@ import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; import com.bsd.pjcloud.flow.task.dto.TaskDto; import com.bsd.pjcloud.wallet.api.dto.recharge.excel.WalletRechargeExcelDto; +import com.bsd.pjcloud.wallet.api.feign.RemoteMchService; import com.bsd.pjcloud.wallet.api.feign.RemoteWalletService; +import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; +import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyVo; import cn.hutool.extra.spring.SpringUtil; @@ -129,6 +132,7 @@ public class SysUserServiceImpl extends ServiceImpl impl private final CacheManager cacheManager; private final RemoteWalletService remoteWalletService; + private final RemoteMchService remoteMchService; private final SysFileService sysFileService; @@ -258,6 +262,16 @@ public class SysUserServiceImpl extends ServiceImpl impl List faceList = sysUserFaceMapper.groupConcatFaces(faceDto); DataUtil.convertFacesList(list.getRecords(), CollectionUtils.convertMap(faceList, SysUserFaceVo::getUserId)); } + // 商户列表 + List mchIds = list.getRecords().stream().map(UserVO::getCanteenId).distinct().toList(); + if (ObjectUtil.isNotEmpty(mchIds)) { + List mchList = remoteMchService.getByIds(mchIds).getData(); + if (ObjectUtil.isNotEmpty(mchList)) { + for (UserVO v : list.getRecords()) { + mchList.stream().filter(m -> ObjectUtil.equals(m.getId(), v.getCanteenId())).findFirst().ifPresent(mch -> v.setMerchantName(mch.getName())); + } + } + } // 审批流程 if (userDTO.getIsFindCheckUser()) { List processInstanceIds = list.getRecords().stream().map(UserVO::getProcessId).filter(ObjectUtil::isNotEmpty).distinct().toList(); @@ -933,4 +947,48 @@ public class SysUserServiceImpl extends ServiceImpl impl return com.bsd.pjcloud.common.core.util.BeanUtils.toBean(sysUsers, SimpleUserListVO.class); } + /** + * 同步用户食堂信息 + */ + @Override + public void syncUserCanteen() { + SysUser userDto = new SysUser(); + Long current = 1L; + while (true) { + boolean result = syncUserCanteenGroup(current, userDto, true); + if (!result) break; + current++; + } + } + + public boolean syncUserCanteenGroup(Long current, SysUser userDto, boolean foure) { + Page page = new Page<>(); + page.setCurrent(current); + page.setSize(100); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .eq(ObjectUtil.isNotEmpty(userDto.getUserId()), SysUser::getUserId, userDto.getUserId()) + .eq(ObjectUtil.isNotEmpty(userDto.getDeptId()), SysUser::getDeptId, userDto.getDeptId()); + Page pageList = baseMapper.selectPageByScope(page, wrapper, null); + boolean result = pageList.getRecords().size() == page.getSize(); + if (ObjectUtil.isEmpty(pageList.getRecords())) return result; + + int noneMchUserSum = 0; + List updateUserList = new ArrayList<>(); + + for (SysUser v : pageList.getRecords()) { + if (!foure && ObjectUtil.isNotEmpty(v.getCanteenId())) continue; + MchManageVo mchDetail = remoteMchService.getFirstMchByDeptId(v.getDeptId()).getData(); + if (ObjectUtil.isEmpty(mchDetail)) { + noneMchUserSum++; + continue; + } + SysUser item = new SysUser(); + item.setUserId(v.getUserId()); + item.setCanteenId(mchDetail.getId()); + updateUserList.add(item); + } + baseMapper.updateById(updateUserList); + log.info("|{}|同步用户食堂信息,用户总数量:{},无食堂用户数:{}", TAG, pageList.getCurrent(), noneMchUserSum); + return result; + } } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserMapper.xml b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserMapper.xml index 41a60a494..85bfa6653 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserMapper.xml +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserMapper.xml @@ -170,6 +170,7 @@ u.name, u.email, u.is_global_face, + u.canteen_id, d.name dept_name FROM sys_user u diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletSettingVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletSettingVo.java index 08f12170a..890542a07 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletSettingVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletSettingVo.java @@ -1,8 +1,24 @@ package com.bsd.pjcloud.wallet.api.vo; import com.bsd.pjcloud.wallet.api.entity.WalletSettingEntity; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.math.BigDecimal; + @Data public class WalletSettingVo extends WalletSettingEntity { + + /** + * (跨单位)每一餐的上限(分) + */ + @Schema(description = "(跨单位)每一餐的上限(分)") + private Integer deptPayAmountMealLimit; + + /** + * (跨单位)每一餐的倍数 + */ + @Schema(description = "(跨单位)每一餐的倍数") + private BigDecimal deptPayAmountMealTimes; + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/base/BaseMchInterface.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/base/BaseMchInterface.java index 298938800..d8dbdc62a 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/base/BaseMchInterface.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/base/BaseMchInterface.java @@ -7,14 +7,14 @@ public interface BaseMchInterface { */ Long getMerchantId(); - void setMerchantId(Long dchId); + void setMerchantId(Long merchantId); /** * 商户名 */ String getMerchantName(); - void setMerchantName(String dchName); + void setMerchantName(String merchantName); /** * 商户logo diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchRuleJoinController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchRuleJoinController.java index 012f26466..465a85d30 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchRuleJoinController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchRuleJoinController.java @@ -10,7 +10,7 @@ import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.wallet.api.dto.mch.MchRuleJoinDto; import com.bsd.pjcloud.wallet.api.entity.mch.MchRuleJoinDtoEntity; -import com.bsd.pjcloud.wallet.service.MchRuleJoinControllerService; +import com.bsd.pjcloud.wallet.service.MchRuleJoinService; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -31,35 +31,35 @@ import java.util.List; @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class MchRuleJoinController { - private final MchRuleJoinControllerService mchRuleJoinControllerService; + private final MchRuleJoinService mchRuleJoinService; @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('dzc_walletRuleMchConfig_view')") public R getWalletRuleMchConfigPage(@ParameterObject Page page, @ParameterObject MchRuleJoinDtoEntity walletRuleMchConfig) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - return R.ok(mchRuleJoinControllerService.page(page, wrapper)); + return R.ok(mchRuleJoinService.page(page, wrapper)); } @Operation(summary = "分页复杂查询", description = "分页复杂查询") @GetMapping("/page-join") @PreAuthorize("@pms.hasPermission('dzc_walletRuleMchConfig_view')") public R pageJoin(@ParameterObject Page page, @ParameterObject MchRuleJoinDto dto) { - return R.ok(mchRuleJoinControllerService.pageScopeList(page, dto, DataScope.of())); + return R.ok(mchRuleJoinService.pageScopeList(page, dto, DataScope.of())); } @Operation(summary = "通过id查询", description = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('dzc_walletRuleMchConfig_view')") public R getById(@PathVariable("id") Long id) { - return R.ok(mchRuleJoinControllerService.getById(id)); + return R.ok(mchRuleJoinService.getById(id)); } @Operation(summary = "通过id查询", description = "通过id查询") @GetMapping("join-detail/{id}") @PreAuthorize("@pms.hasPermission('dzc_walletRuleMchConfig_view')") public R joinDetail(@PathVariable("id") Long id) { - return R.ok(mchRuleJoinControllerService.joinDetail(id)); + return R.ok(mchRuleJoinService.joinDetail(id)); } @Operation(summary = "新增商户规格配置表", description = "新增商户规格配置表") @@ -67,7 +67,7 @@ public class MchRuleJoinController { @PostMapping @PreAuthorize("@pms.hasPermission('dzc_walletRuleMchConfig_add')") public R save(@RequestBody MchRuleJoinDtoEntity dto) { - return R.ok(mchRuleJoinControllerService.create(dto)); + return R.ok(mchRuleJoinService.create(dto)); } @Operation(summary = "修改商户规格配置表", description = "修改商户规格配置表") @@ -75,7 +75,7 @@ public class MchRuleJoinController { @PutMapping @PreAuthorize("@pms.hasPermission('dzc_walletRuleMchConfig_edit')") public R updateById(@RequestBody MchRuleJoinDtoEntity dto) { - return R.ok(mchRuleJoinControllerService.edit(dto)); + return R.ok(mchRuleJoinService.edit(dto)); } @Operation(summary = "通过id删除商户规格配置表", description = "通过id删除商户规格配置表") @@ -83,7 +83,7 @@ public class MchRuleJoinController { @DeleteMapping @PreAuthorize("@pms.hasPermission('dzc_walletRuleMchConfig_del')") public R removeById(@RequestBody Long[] ids) { - mchRuleJoinControllerService.delByIds(CollUtil.toList(ids)); + mchRuleJoinService.delByIds(CollUtil.toList(ids)); return R.ok(); } @@ -91,6 +91,6 @@ public class MchRuleJoinController { @GetMapping("/export") @PreAuthorize("@pms.hasPermission('dzc_walletRuleMchConfig_export')") public List export(MchRuleJoinDtoEntity walletRuleMchConfig, Long[] ids) { - return mchRuleJoinControllerService.list(Wrappers.lambdaQuery(walletRuleMchConfig).in(ArrayUtil.isNotEmpty(ids), MchRuleJoinDtoEntity::getId, ids)); + return mchRuleJoinService.list(Wrappers.lambdaQuery(walletRuleMchConfig).in(ArrayUtil.isNotEmpty(ids), MchRuleJoinDtoEntity::getId, ids)); } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchRuleJoinControllerService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchRuleJoinService.java similarity index 90% rename from pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchRuleJoinControllerService.java rename to pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchRuleJoinService.java index de57848ad..79f89700f 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchRuleJoinControllerService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchRuleJoinService.java @@ -9,7 +9,7 @@ import com.bsd.pjcloud.wallet.api.vo.mch.MchRuleJoinDtoVo; import java.util.ArrayList; -public interface MchRuleJoinControllerService extends IService { +public interface MchRuleJoinService extends IService { /** * 权限分页查询 diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletSettingServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletSettingServiceImpl.java index 897b7d639..7347045ee 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletSettingServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletSettingServiceImpl.java @@ -3,22 +3,22 @@ package com.bsd.pjcloud.wallet.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.bsd.pjcloud.common.core.constant.CacheConstants; import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.wallet.api.dto.WalletSettingDto; import com.bsd.pjcloud.wallet.api.entity.WalletSettingEntity; import com.bsd.pjcloud.wallet.api.vo.WalletSettingVo; import com.bsd.pjcloud.wallet.mapper.WalletSettingMapper; +import com.bsd.pjcloud.wallet.service.MchRuleJoinService; +import com.bsd.pjcloud.wallet.service.WalletRuleJoinService; import com.bsd.pjcloud.wallet.service.WalletSettingService; import lombok.Data; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.CachePut; -import org.springframework.cache.annotation.Cacheable; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; import java.math.BigDecimal; -import java.util.List; /** * 支付设置 @@ -26,6 +26,9 @@ import java.util.List; * @author dzc * @date 2025-01-06 10:52:31 */ +@Validated +@Slf4j +@RequiredArgsConstructor @Service public class WalletSettingServiceImpl extends ServiceImpl implements WalletSettingService { diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchRuleJoinControllerServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchRuleJoinControllerServiceImpl.java index 1ecd6ae92..cc8e724c1 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchRuleJoinControllerServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchRuleJoinControllerServiceImpl.java @@ -13,7 +13,7 @@ import com.bsd.pjcloud.wallet.api.entity.mch.MchRulePriceConfigEntity; import com.bsd.pjcloud.wallet.api.vo.mch.MchRuleJoinDtoVo; import com.bsd.pjcloud.wallet.mapper.mch.WalletRuleMchConfigMapper; import com.bsd.pjcloud.wallet.service.MchManageService; -import com.bsd.pjcloud.wallet.service.MchRuleJoinControllerService; +import com.bsd.pjcloud.wallet.service.MchRuleJoinService; import com.bsd.pjcloud.wallet.service.WalletRulePriceConfigService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -27,7 +27,7 @@ import java.util.ArrayList; @Slf4j @RequiredArgsConstructor @Service -public class MchRuleJoinControllerServiceImpl extends ServiceImpl implements MchRuleJoinControllerService { +public class MchRuleJoinControllerServiceImpl extends ServiceImpl implements MchRuleJoinService { private final MchManageService mchManageService; private final WalletRulePriceConfigService rulePriceConfigService;