ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUserShop.java
@@ -28,4 +28,9 @@ */ @TableField("shop_id") private Integer shopId; /** * 角色(1=店长,2=店员,3=技师) */ @TableField("role_type") private Integer roleType; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java
@@ -89,4 +89,7 @@ @ApiModelProperty(value = "预约单id") private String technicianSubscribeId; @ApiModelProperty("核销码BASE64") private String writeOffCode; } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java
@@ -144,6 +144,9 @@ @ApiModelProperty(value = "已提现金额") @TableField("withdraw_money") private BigDecimal withdrawMoney; @ApiModelProperty(value = "审核中金额") @TableField(exist = false) private BigDecimal withdrawAuditMoney; @ApiModelProperty(value = "余额") @TableField("balance") ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java
@@ -7,7 +7,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FallbackFactory; import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.Set; @Slf4j @@ -54,6 +56,11 @@ public R<List<Shop>> getAllShop() { return R.fail("获取所有门店失败:" + cause.getMessage()); } @Override public R<Map<String, BigDecimal>> getShopStatistics() { return R.fail(); } }; } } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java
@@ -12,7 +12,9 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.Set; /** @@ -65,4 +67,8 @@ */ @PostMapping("/shop/getAllShop") R<List<Shop>> getAllShop(); @GetMapping("/shop/getShopStatistics") public R<Map<String, BigDecimal>> getShopStatistics(); } ruoyi-common/pom.xml
@@ -31,6 +31,17 @@ <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.4.1</version> </dependency> </dependencies> </project> ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/QRCodeGenerator.java
New file @@ -0,0 +1,44 @@ package com.ruoyi.common.core.utils.uuid; import com.google.zxing.BarcodeFormat; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Base64; public class QRCodeGenerator { /** * 生成二维码图片的base64编码 * @param text * @param width * @param height * @return * @throws WriterException * @throws IOException */ public static String generateQRCodeBase64(String text, int width, int height) throws WriterException, IOException { QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height); ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream(); MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream); byte[] pngData = pngOutputStream.toByteArray(); return Base64.getEncoder().encodeToString(pngData); } public static void main(String[] args) { try { String text = "Hello, World!"; String base64QRCode = generateQRCodeBase64(text, 200, 200); System.out.println("Base64 QR Code: " + base64QRCode); } catch (WriterException | IOException e) { e.printStackTrace(); } } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -164,6 +164,7 @@ AppUserShop appUserShop = new AppUserShop(); appUserShop.setAppUserId(appUser.getId()); appUserShop.setShopId(sysUser1.getObjectId()); appUserShop.setRoleType(2); appUserShopClient.saveAppUserShop(appUserShop); appUser.setUserType(2); appUserClient.editAppUserById(appUser); ruoyi-modules/ruoyi-system/src/main/resources/mapping/system/SysUserMapper.xml
@@ -207,6 +207,7 @@ <if test="roleType != null and roleType != ''">role_type,</if> <if test="remark != null and remark != ''">remark,</if> <if test="objectId != null and objectId != ''">objectId,</if> <if test="appUserId != null and appUserId != ''">app_user_id,</if> create_time )values( <if test="userId != null and userId != ''">#{userId},</if> @@ -223,6 +224,7 @@ <if test="roleType != null and roleType != ''">#{roleType},</if> <if test="remark != null and remark != ''">#{remark},</if> <if test="objectId != null and objectId != ''">#{objectId},</if> <if test="appUserId != null and appUserId != ''">#{appUserId},</if> sysdate() ) </insert> ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -137,6 +137,8 @@ @PostMapping("/editAppUserById") public R<Void> editAppUserById(@RequestBody AppUser appUser) { appUserService.updateById(appUser); appUserService.update(new LambdaUpdateWrapper<AppUser>().eq(AppUser::getId, appUser.getId()) .set(AppUser::getLastShopTime, appUser.getLastShopTime())); return R.ok(); } @@ -319,13 +321,13 @@ user.setShopName(shop.getName()); } } Long count1 = appUserService.lambdaQuery().eq(AppUser::getVipId, 1).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count2 = appUserService.lambdaQuery().eq(AppUser::getVipId, 2).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count3 = appUserService.lambdaQuery().eq(AppUser::getVipId, 3).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count4 = appUserService.lambdaQuery().eq(AppUser::getVipId, 4).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count5 = appUserService.lambdaQuery().eq(AppUser::getVipId, 5).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count6 = appUserService.lambdaQuery().eq(AppUser::getVipId, 6).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count7 = appUserService.lambdaQuery().eq(AppUser::getVipId, 7).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count1 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 1).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count2 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 2).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count3 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 3).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count4 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 4).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count5 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 5).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count6 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 6).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); Long count7 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 7).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); user.setCount1(count1); user.setCount2(count2); user.setCount3(count3); @@ -744,108 +746,6 @@ @GetMapping("/commissionDetail") @ApiOperation(value = "分佣统计", tags = "管理后台-首页统计") public R<CommissionDetail> commissionDetail(CommissionDetail cd) { Long userid = tokenService.getLoginUser().getUserid(); SysUser sysUser = sysUserClient.getSysUser(userid).getData(); LambdaQueryWrapper<AppUser> queryWrapper = new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0); if(sysUser.getRoleType() == 2){ queryWrapper.eq(AppUser::getShopId, sysUser.getObjectId()); } LocalDateTime startTime = cd.getStartTime(); LocalDateTime endTime = cd.getEndTime(); queryWrapper.ge(null != startTime, AppUser::getCreateTime, startTime); queryWrapper.le(null != endTime, AppUser::getCreateTime, endTime); queryWrapper.orderByAsc(AppUser::getCreateTime); List<AppUser> appUserList = appUserService.list(queryWrapper); if (appUserList.isEmpty()) { return R.ok(new CommissionDetail()); } BigDecimal totalCommission = BigDecimal.ZERO; BigDecimal totalServiceFee = BigDecimal.ZERO; BigDecimal totalUserCommission = BigDecimal.ZERO; Map<Integer, BigDecimal> vipCommissions = new HashMap<>(); Map<String, Map<Integer, BigDecimal>> dailyVipCommissions = new TreeMap<>(); for (AppUser appUser : appUserList) { BigDecimal distributionAmount = Optional.ofNullable(appUser.getTotalDistributionAmount()).orElse(BigDecimal.ZERO); totalCommission = totalCommission.add(distributionAmount); Integer vipId = appUser.getVipId(); if (vipId != null && vipId >= 1 && vipId <= 7) { vipCommissions.merge(vipId, distributionAmount, BigDecimal::add); String dateKey = appUser.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>()) .merge(vipId, distributionAmount, BigDecimal::add); } } List<Shop> data = shopClient.getAllShop().getData(); if(sysUser.getRoleType() == 2){ data = Arrays.asList(shopClient.getShopById(sysUser.getObjectId()).getData()); } for (Shop shop : data) { totalServiceFee = totalServiceFee.add(shop.getServerGiveawayMoney()); totalUserCommission = totalUserCommission.add(shop.getGiveawayMoney()); } R<List<ShopBalanceStatement>> r = shopBalanceStatementClient.getShopBalanceStatementList(Arrays.asList(1, 2, 3), null); List<ShopBalanceStatement> data1 = r.getData(); if (!CollectionUtils.isEmpty(data1)){ for (ShopBalanceStatement shopBalanceStatement : data1) { String dateKey = shopBalanceStatement.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); Integer type = shopBalanceStatement.getType(); if (type == 1){ type = 8; }else if (type == 2){ type = 9; }else { type = 10; } dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>()) .merge(type, shopBalanceStatement.getVariableAmount(), BigDecimal::add); } } CommissionDetail commissionDetail = new CommissionDetail(); commissionDetail.setTotalCommission(totalCommission); commissionDetail.setTotalServiceFee(totalServiceFee); commissionDetail.setTotalUserCommission(totalUserCommission); commissionDetail.setTotalNormalCommission(vipCommissions.getOrDefault(1, BigDecimal.ZERO)); commissionDetail.setTotalGoldCommission(vipCommissions.getOrDefault(2, BigDecimal.ZERO)); commissionDetail.setTotalDiamondCommission(vipCommissions.getOrDefault(3, BigDecimal.ZERO)); commissionDetail.setTotalAgentCommission(vipCommissions.getOrDefault(4, BigDecimal.ZERO)); commissionDetail.setTotalSuperAgentCommission(vipCommissions.getOrDefault(5, BigDecimal.ZERO)); commissionDetail.setTotalTopAgentCommission(vipCommissions.getOrDefault(6, BigDecimal.ZERO)); commissionDetail.setTotalPartnerCommission(vipCommissions.getOrDefault(7, BigDecimal.ZERO)); List<CommissionDate> commissionDateList = dailyVipCommissions.entrySet().stream() .map(entry -> { CommissionDate commissionDate = new CommissionDate(); commissionDate.setDate(entry.getKey()); Map<Integer, BigDecimal> dailyCommissions = entry.getValue(); commissionDate.setNormalCommission(dailyCommissions.getOrDefault(1, BigDecimal.ZERO)); commissionDate.setGoldCommission(dailyCommissions.getOrDefault(2, BigDecimal.ZERO)); commissionDate.setDiamondCommission(dailyCommissions.getOrDefault(3, BigDecimal.ZERO)); commissionDate.setAgentCommission(dailyCommissions.getOrDefault(4, BigDecimal.ZERO)); commissionDate.setSuperAgentCommission(dailyCommissions.getOrDefault(5, BigDecimal.ZERO)); commissionDate.setTopAgentCommission(dailyCommissions.getOrDefault(6, BigDecimal.ZERO)); commissionDate.setPartnerCommission(dailyCommissions.getOrDefault(7, BigDecimal.ZERO)); BigDecimal add = commissionDate.getNormalCommission().add(commissionDate.getGoldCommission()).add(commissionDate.getDiamondCommission()).add(commissionDate.getAgentCommission()) .add(commissionDate.getSuperAgentCommission()).add(commissionDate.getTopAgentCommission()).add(commissionDate.getPartnerCommission()); commissionDate.setTotalCommission(add); commissionDate.setServiceChargeCommission(dailyCommissions.getOrDefault(10, BigDecimal.ZERO)); commissionDate.setAssociatedUserCommission(dailyCommissions.getOrDefault(8, BigDecimal.ZERO)); commissionDate.setBindLowerLevelStoresCommission(dailyCommissions.getOrDefault(9, BigDecimal.ZERO)); return commissionDate; }) .collect(Collectors.toList()); commissionDetail.setCommissionDateList(commissionDateList); return R.ok(commissionDetail); } public R<CommissionDetail> commissionDetail2(CommissionDetail cd) { if (cd.getStartTime() == null || cd.getEndTime() == null) { return R.fail("请选择时间"); } @@ -858,7 +758,7 @@ getDatesBetween(cd.getStartTime(), cd.getEndTime()).forEach(date -> { for (int i = 1; i < 8; i++){ List<BalanceChangeRecord> list = balanceChangeRecordService.list(new LambdaQueryWrapper<BalanceChangeRecord>() .eq(BalanceChangeRecord::getCreateTime, date) .between(BalanceChangeRecord::getCreateTime, date, date.plusDays(1)) .eq(BalanceChangeRecord::getChangeType,4) .eq(BalanceChangeRecord::getVipId, i)); BigDecimal reduce = list.stream().map(BalanceChangeRecord::getChangeAmount).reduce(BigDecimal.ZERO, BigDecimal::add); @@ -886,7 +786,99 @@ } } }); return null; BigDecimal totalCommission = BigDecimal.ZERO; BigDecimal totalNormalCommission = BigDecimal.ZERO; BigDecimal totalGoldCommission = BigDecimal.ZERO; BigDecimal totalDiamondCommission = BigDecimal.ZERO; BigDecimal totalAgentCommission = BigDecimal.ZERO; BigDecimal totalSuperAgentCommission = BigDecimal.ZERO; BigDecimal totalTopAgentCommission = BigDecimal.ZERO; BigDecimal totalPartnerCommission = BigDecimal.ZERO; List<AppUser> allAppUserList = appUserService.list(); for (AppUser appUser : allAppUserList) { BigDecimal totalDistributionAmount = appUser.getTotalDistributionAmount(); totalCommission = totalCommission.add(totalDistributionAmount); if (appUser.getVipId() == 1){ totalNormalCommission = totalNormalCommission.add(totalDistributionAmount); } if (appUser.getVipId() == 2){ totalGoldCommission = totalGoldCommission.add(totalDistributionAmount); } if (appUser.getVipId() == 3){ totalDiamondCommission = totalDiamondCommission.add(totalDistributionAmount); } if (appUser.getVipId() == 4){ totalAgentCommission = totalAgentCommission.add(totalDistributionAmount); } if (appUser.getVipId() == 5){ totalSuperAgentCommission = totalSuperAgentCommission.add(totalDistributionAmount); } if (appUser.getVipId() == 6){ totalTopAgentCommission = totalTopAgentCommission.add(totalDistributionAmount); } if (appUser.getVipId() == 7){ totalPartnerCommission = totalPartnerCommission.add(totalDistributionAmount); } } R<Map<String, BigDecimal>> shopStatistics = shopClient.getShopStatistics(); Map<String, BigDecimal> data = shopStatistics.getData(); BigDecimal totalServiceFee = BigDecimal.ZERO; BigDecimal totalUserCommission = BigDecimal.ZERO; if (data != null){ totalServiceFee = data.get("serverGiveawayMoney"); totalUserCommission = data.get("lowerLevelGiveawayMoney"); } CommissionDetail commissionDetail = new CommissionDetail(); commissionDetail.setTotalCommission(totalCommission); commissionDetail.setTotalServiceFee(totalServiceFee); commissionDetail.setTotalUserCommission(totalUserCommission); commissionDetail.setTotalNormalCommission(totalNormalCommission); commissionDetail.setTotalGoldCommission(totalGoldCommission); commissionDetail.setTotalDiamondCommission(totalDiamondCommission); commissionDetail.setTotalAgentCommission(totalAgentCommission); commissionDetail.setTotalSuperAgentCommission(totalSuperAgentCommission); commissionDetail.setTotalTopAgentCommission(totalTopAgentCommission); commissionDetail.setTotalPartnerCommission(totalPartnerCommission); List<CommissionDate> commissionDateList = dailyVipCommissions.entrySet().stream() .map(entry -> { CommissionDate commissionDate = new CommissionDate(); commissionDate.setDate(entry.getKey()); Map<Integer, BigDecimal> dailyCommissions = entry.getValue(); commissionDate.setNormalCommission(dailyCommissions.getOrDefault(1, BigDecimal.ZERO)); commissionDate.setGoldCommission(dailyCommissions.getOrDefault(2, BigDecimal.ZERO)); commissionDate.setDiamondCommission(dailyCommissions.getOrDefault(3, BigDecimal.ZERO)); commissionDate.setAgentCommission(dailyCommissions.getOrDefault(4, BigDecimal.ZERO)); commissionDate.setSuperAgentCommission(dailyCommissions.getOrDefault(5, BigDecimal.ZERO)); commissionDate.setTopAgentCommission(dailyCommissions.getOrDefault(6, BigDecimal.ZERO)); commissionDate.setPartnerCommission(dailyCommissions.getOrDefault(7, BigDecimal.ZERO)); BigDecimal add = commissionDate.getNormalCommission().add(commissionDate.getGoldCommission()).add(commissionDate.getDiamondCommission()).add(commissionDate.getAgentCommission()) .add(commissionDate.getSuperAgentCommission()).add(commissionDate.getTopAgentCommission()).add(commissionDate.getPartnerCommission()); commissionDate.setTotalCommission(add); commissionDate.setServiceChargeCommission(dailyCommissions.getOrDefault(10, BigDecimal.ZERO)); commissionDate.setAssociatedUserCommission(dailyCommissions.getOrDefault(8, BigDecimal.ZERO)); commissionDate.setBindLowerLevelStoresCommission(dailyCommissions.getOrDefault(9, BigDecimal.ZERO)); return commissionDate; }) .collect(Collectors.toList()); commissionDetail.setCommissionDateList(commissionDateList); return R.ok(commissionDetail); } @@ -906,7 +898,8 @@ .limit(daysBetween + 1) .collect(Collectors.toList()); } /** * 上传图片 @@ -951,7 +944,8 @@ */ @PostMapping("/clearBindShop") public R clearBindShop(@RequestParam("shopId") Integer shopId){ appUserService.update(new LambdaUpdateWrapper<AppUser>().eq(AppUser::getShopId, shopId).set(AppUser::getShopId, null)); appUserService.update(new LambdaUpdateWrapper<AppUser>().eq(AppUser::getShopId, shopId).set(AppUser::getShopId, null) .set(AppUser::getUserType,1)); return R.ok(); } } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserShopController.java
@@ -59,6 +59,9 @@ if(null != appUserShop.getShopId()){ wrapper.eq(AppUserShop::getShopId, appUserShop.getShopId()); } if(null != appUserShop.getRoleType()){ wrapper.eq(AppUserShop::getRoleType, appUserShop.getRoleType()); } appUserShopService.remove(wrapper); return R.ok(); } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
@@ -134,7 +134,11 @@ @GetMapping("/user/list") @ApiOperation(value = "积分管理-用户积分明细(必传用户id)", tags = "后台") public R<Page<UserPoint>> userlist(UserPoint userPoint) { Page<UserPoint> page = userPointService.lambdaQuery().eq(UserPoint::getAppUserId, userPoint.getAppUserId()).orderByDesc(UserPoint::getCreateTime).page(Page.of(userPoint.getPageNum(), userPoint.getPageSize())); Page<UserPoint> page = userPointService.lambdaQuery() .eq(UserPoint::getType, userPoint.getType()) .eq(UserPoint::getAppUserId, userPoint.getAppUserId()) .orderByDesc(UserPoint::getCreateTime) .page(Page.of(userPoint.getPageNum(), userPoint.getPageSize())); for (UserPoint record : page.getRecords()) { int i = record.getHistoricalPoint() - record.getBalance(); if (i>0){ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/dto/WithQuery.java
@@ -8,10 +8,10 @@ @Data public class WithQuery { @ApiModelProperty("用户名称") private String name; private String userName; @ApiModelProperty("电话") private String phone; private String userPhone; private Integer pageNum; private Integer pageSize; ruoyi-service/ruoyi-account/src/main/resources/mapper/account/AppUserMapper.xml
@@ -43,7 +43,7 @@ longitude, latitude, phone from t_app_user where city_code = #{cityCode} and del_flag = 0 and status = 1 and vip_id >= 4 from t_app_user where ((city_code = #{cityCode} and vip_id >= 4) or id = 1) and del_flag = 0 and status = 1 <if test="null != nearbyReferrer.name and '' != nearbyReferrer.name"> and `name` like CONCAT('%', #{nearbyReferrer.name}, '%') </if> @@ -86,7 +86,7 @@ SELECT ta.id, ta.phone, ta.`name`, ta.vip_id, ta.shop_id, ta.status FROM t_app_user ta <where> ta.del_flag = 0 ta.del_flag = 0 and ta.status != 3 <if test="null != appUser.name and '' != appUser.name"> and ta.`name` like CONCAT('%',#{appUser.name},'%') </if> ruoyi-service/ruoyi-account/src/main/resources/mapper/account/BalanceChangeRecordMapper.xml
@@ -34,8 +34,9 @@ tbcr.after_amount FROM t_balance_change_record tbcr LEFT JOIN t_app_user tau ON tbcr.app_user_id = tau.id LEFT JOIN t_app_user tau ON tbcr.app_user_id = tau.id <where> and tbcr.change_type = 4 <if test="changeRecord.userName != null and changeRecord.userName != ''"> and tau.name like concat('%',#{changeRecord.userName},'%') </if> ruoyi-service/ruoyi-account/src/main/resources/mapper/account/WithdrawalRequestsMapper.xml
@@ -23,11 +23,12 @@ select t1.*,t2.name as userName,t2.phone as userPhone from t_withdrawal_requests t1 left join t_app_user t2 on t1.app_user_id = t2.id <if test="withQuery.phone != null and withQuery.phone != ''"> AND t2.phone LIKE concat('%',#{withQuery.phone},'%') where 1 = 1 <if test="withQuery.userPhone != null and withQuery.userPhone != ''"> AND t2.phone LIKE concat('%',#{withQuery.userPhone},'%') </if> <if test="withQuery.name != null and withQuery.name != ''"> AND t2.phone LIKE concat('%',#{withQuery.name},'%') <if test="withQuery.userName != null and withQuery.userName != ''"> AND t2.name LIKE concat('%',#{withQuery.userName},'%') </if> order by t1.create_time desc </select> ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -14,6 +14,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.uuid.QRCodeGenerator; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.enums.OrderStatus; @@ -41,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; @@ -215,6 +217,14 @@ Long id = data.get(0).getId(); orderDetailVO.setTechnicianSubscribeId(id.toString()); } } // 生成核销码BASE64 try { String base64 = QRCodeGenerator.generateQRCodeBase64(order.getOrderNumber(), 124, 124); orderDetailVO.setWriteOffCode(base64); } catch (Exception e) { e.printStackTrace(); throw new ServiceException("生成核销码失败"); } return orderDetailVO; } @@ -439,11 +449,12 @@ appUser.setBalance(balance.add(paymentAmount).setScale(2, RoundingMode.HALF_EVEN)); appUser.setShopAmount(appUser.getShopAmount().subtract(paymentAmount).setScale(2, RoundingMode.HALF_EVEN)); //查询最后一次的消费订单 Order order1 = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getAppUserId, order.getAppUserId()).eq(Order::getPayStatus, 2).eq(Order::getDelFlag, 0).in(Order::getOrderStatus, Arrays.asList(2, 3, 4, 8)).ne(Order::getId, order.getId()).last(" order by create_time desc limit 0, 1")); Order order1 = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getAppUserId, order.getAppUserId()).eq(Order::getPayStatus, 2) .eq(Order::getDelFlag, 0).in(Order::getOrderStatus, Arrays.asList(1, 2, 3, 4, 8)).ne(Order::getId, order.getId()).last(" order by create_time desc limit 0, 1")); if(null != order1){ appUser.setLastShopTime(order1.getCreateTime()); }else{ appUser.setLastShopTime(LocalDateTime.MIN); appUser.setLastShopTime(null); } //构建账户余额流水明细 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -569,11 +569,11 @@ } }else{ //部分商品适用 BigDecimal goodsMoney = BigDecimal.ZERO; BigDecimal goodsMoney = BigDecimal.ZERO; for (MyShoppingCartVo myShoppingCartVo : goodsList) { Integer goodsId = myShoppingCartVo.getGoodsId(); BigDecimal cash = myShoppingCartVo.getCash(); if(forGoodIds.contains(goodsId)){ if(forGoodIds.contains(String.valueOf(goodsId))){ goodsMoney = goodsMoney.add(cash); } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java
@@ -71,5 +71,7 @@ private String afterSaleTime; @ApiModelProperty("活动名称") private String activityName; @ApiModelProperty("核销码BASE64") private String writeOffCode; } ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -93,7 +93,7 @@ SELECT count(*) as total, SUM( CASE WHEN tor.order_type = 1 THEN 1 ELSE 0 END ) as serviceTotal, SUM( CASE WHEN tor.order_type = 2 THEN 1 ELSE 0 END ) as singleTotal, SUM( CASE WHEN tor.order_type = 2 and distribution_mode = 1 THEN 1 ELSE 0 END ) as singleTotal, SUM( tor.total_amount ) as totalMoney, SUM( CASE WHEN tor.order_type = 1 THEN tor.total_amount ELSE 0 END ) as serviceTotalMoney, SUM( CASE WHEN tor.order_type = 2 THEN tor.total_amount ELSE 0 END ) as singleTotalMoney ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
@@ -170,18 +170,21 @@ private void count(Long userid, List<CouponInfo> list1, List<CouponInfo> returnList) { for (CouponInfo couponInfo : list1) { Long count = appUserClient.getCouponCount(-1L, couponInfo.getId()).getData(); if(couponInfo.getSendNum() <= count){ couponInfo.setMaxNum(count.intValue() - couponInfo.getSendNum()); for (int i = 0; i < couponInfo.getMaxNum(); i++) { returnList.add(couponInfo); } if(count >= couponInfo.getSendNum()){ continue; } count = appUserClient.getCouponCount(userid, couponInfo.getId()).getData(); couponInfo.setMaxNum(couponInfo.getMaxNum() - count.intValue()); for (int i = 0; i < couponInfo.getMaxNum(); i++) { returnList.add(couponInfo); if((couponInfo.getSendNum() - count) >= couponInfo.getMaxNum()){ for (int i = 0; i < couponInfo.getMaxNum(); i++) { returnList.add(couponInfo); } }else{ for (int i = 0; i < (couponInfo.getSendNum() - count); i++) { returnList.add(couponInfo); } } } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsCategoryController.java
@@ -64,6 +64,7 @@ public R<Page<GoodsCategory>> list(@ApiParam("页码") @RequestParam Integer pageNum,@ApiParam("每一页数据大小") Integer pageSize, GoodsCategory goodsCategory){ Page<GoodsCategory> page = goodsCategoryService.lambdaQuery() .like(StringUtils.isNotEmpty(goodsCategory.getName()),GoodsCategory::getName, goodsCategory.getName()) .eq(GoodsCategory::getDelFlag,0) .page(Page.of(pageNum, pageSize)); return R.ok(page); } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java
@@ -8,6 +8,7 @@ import com.ruoyi.account.api.model.AppUser; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.feignClient.OrderClient; import com.ruoyi.order.model.Order; @@ -56,10 +57,12 @@ @GetMapping("/goodsList") @ApiOperation(value = "获取商品评价", tags = {"小程序-获取商品评价"}) public R<List<GoodsEvaluate>> goodsList(@ApiParam("商品id") Integer goodsId){ List<GoodsEvaluate> list = goodsEvaluateService.lambdaQuery().eq(GoodsEvaluate::getGoodsId, goodsId).eq(GoodsEvaluate::getDelFlag, 0) .eq(GoodsEvaluate::getStatus, 2).isNotNull(GoodsEvaluate::getComment).ne(GoodsEvaluate::getComment, "").orderByDesc(GoodsEvaluate::getCreateTime).list(); for (GoodsEvaluate goodsEvaluate : list) { public R<PageInfo<GoodsEvaluate>> goodsList(@ApiParam("商品id") Integer goodsId, Integer pageNum, Integer pageSize){ PageInfo<GoodsEvaluate> pageInfo = new PageInfo<>(pageNum, pageSize); PageInfo<GoodsEvaluate> page = goodsEvaluateService.lambdaQuery().eq(GoodsEvaluate::getGoodsId, goodsId).eq(GoodsEvaluate::getDelFlag, 0) .eq(GoodsEvaluate::getStatus, 2).isNotNull(GoodsEvaluate::getComment).ne(GoodsEvaluate::getComment, "") .orderByDesc(GoodsEvaluate::getCreateTime).page(pageInfo); for (GoodsEvaluate goodsEvaluate : page.getRecords()) { AppUser appUserById = appUserClient.getAppUserById(goodsEvaluate.getAppUserId()); if(null != appUserById){ goodsEvaluate.setUserName(appUserById.getName()); @@ -67,7 +70,7 @@ goodsEvaluate.setIdStr(String.valueOf(goodsEvaluate.getId())); } } return R.ok(list); return R.ok(page); } /** ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java
@@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.Collection; import java.util.List; import java.util.List; @@ -89,42 +90,83 @@ @GetMapping("/commissionStatistics/info") @ApiOperation(value = "门店余额明细上方数据", notes = "门店余额明细", tags = {"门店后台"}) public R<ShopBalanceDto> shopCommissionStatisticsinfo(){ public R<ShopBalanceDto> shopCommissionStatisticsinfo(Integer type){ Integer objectId = tokenService.getLoginUser().getSysUser().getObjectId(); ShopBalanceDto dto = new ShopBalanceDto(); List<ShopBalanceStatement> list = shopBalanceStatementService.lambdaQuery().eq(ShopBalanceStatement::getShopId,objectId).eq(ShopBalanceStatement::getType, 3).list(); List<ShopBalanceStatement> list1 = shopBalanceStatementService.lambdaQuery().eq(ShopBalanceStatement::getShopId,objectId).eq(ShopBalanceStatement::getType, 1).list(); BigDecimal bigDecimal1 = new BigDecimal(0); for (ShopBalanceStatement shopBalanceStatement : list) { bigDecimal1 = bigDecimal1.add(shopBalanceStatement.getVariableAmount()); } for (ShopBalanceStatement shopBalanceStatement : list1) { bigDecimal1 = bigDecimal1.add(shopBalanceStatement.getVariableAmount()); } dto.setBigDecimal1(bigDecimal1); BigDecimal bigDecimal2= new BigDecimal(0); for (ShopBalanceStatement shopBalanceStatement : list) { bigDecimal2 = bigDecimal2.add(shopBalanceStatement.getVariableAmount()); } dto.setBigDecimal2(bigDecimal2); BigDecimal bigDecimal3= new BigDecimal(0); for (ShopBalanceStatement shopBalanceStatement : list1) { bigDecimal3 = bigDecimal3.add(shopBalanceStatement.getVariableAmount()); } dto.setBigDecimal3(bigDecimal3); List<ShopBalanceStatement> list2 = shopBalanceStatementService.lambdaQuery().eq(ShopBalanceStatement::getShopId,objectId).eq(ShopBalanceStatement::getType, 2).list(); BigDecimal bigDecimal4= new BigDecimal(0); for (ShopBalanceStatement shopBalanceStatement : list2) { bigDecimal4 = bigDecimal4.add(shopBalanceStatement.getVariableAmount()); } dto.setBigDecimal4(bigDecimal4); Shop byId = shopService.getById(objectId); dto.setBigDecimal5(byId.getCanWithdrawMoney()); dto.setBigDecimal6(byId.getWithdrawMoney()); if (type==null){ List<ShopBalanceStatement> list = shopBalanceStatementService.lambdaQuery().eq(ShopBalanceStatement::getShopId,objectId).eq(ShopBalanceStatement::getType, 3).list(); List<ShopBalanceStatement> list1 = shopBalanceStatementService.lambdaQuery().eq(ShopBalanceStatement::getShopId,objectId).eq(ShopBalanceStatement::getType, 1).list(); BigDecimal bigDecimal1 = new BigDecimal(0); for (ShopBalanceStatement shopBalanceStatement : list) { bigDecimal1 = bigDecimal1.add(shopBalanceStatement.getVariableAmount()); } for (ShopBalanceStatement shopBalanceStatement : list1) { bigDecimal1 = bigDecimal1.add(shopBalanceStatement.getVariableAmount()); } dto.setBigDecimal1(bigDecimal1); BigDecimal bigDecimal2= new BigDecimal(0); for (ShopBalanceStatement shopBalanceStatement : list) { bigDecimal2 = bigDecimal2.add(shopBalanceStatement.getVariableAmount()); } dto.setBigDecimal2(bigDecimal2); BigDecimal bigDecimal3= new BigDecimal(0); for (ShopBalanceStatement shopBalanceStatement : list1) { bigDecimal3 = bigDecimal3.add(shopBalanceStatement.getVariableAmount()); } dto.setBigDecimal3(bigDecimal3); List<ShopBalanceStatement> list2 = shopBalanceStatementService.lambdaQuery().eq(ShopBalanceStatement::getShopId,objectId).eq(ShopBalanceStatement::getType, 2).list(); BigDecimal bigDecimal4= new BigDecimal(0); for (ShopBalanceStatement shopBalanceStatement : list2) { bigDecimal4 = bigDecimal4.add(shopBalanceStatement.getVariableAmount()); } dto.setBigDecimal4(bigDecimal4); dto.setBigDecimal5(byId.getCanWithdrawMoney()); dto.setBigDecimal6(byId.getWithdrawMoney()); return R.ok(dto); }else{ switch (type){ case 1: // 关联用户分拥 BigDecimal bigDecimal = new BigDecimal("0"); List<ShopBalanceStatement> list1 = shopBalanceStatementService.lambdaQuery().eq(ShopBalanceStatement::getShopId,objectId).eq(ShopBalanceStatement::getType, 1).list(); for (ShopBalanceStatement shopBalanceStatement : list1) { bigDecimal = bigDecimal.add(shopBalanceStatement.getVariableAmount()); } dto.setBigDecimal3(bigDecimal); dto.setBigDecimal1(bigDecimal); break; case 2: // 下级门店分佣 BigDecimal bigDecimal2= new BigDecimal(0); List<ShopBalanceStatement> list2 = shopBalanceStatementService.lambdaQuery().eq(ShopBalanceStatement::getShopId,objectId).eq(ShopBalanceStatement::getType, 2).list(); for (ShopBalanceStatement shopBalanceStatement : list2) { bigDecimal2 = bigDecimal2.add(shopBalanceStatement.getVariableAmount()); } dto.setBigDecimal4(bigDecimal2); dto.setBigDecimal1(bigDecimal2); break; case 3: // 服务费分佣 List<ShopBalanceStatement> list = shopBalanceStatementService.lambdaQuery().eq(ShopBalanceStatement::getShopId,objectId).eq(ShopBalanceStatement::getType, 3).list(); BigDecimal bigDecimal3= new BigDecimal(0); for (ShopBalanceStatement shopBalanceStatement : list) { bigDecimal3 = bigDecimal3.add(shopBalanceStatement.getVariableAmount()); } dto.setBigDecimal2(bigDecimal3); dto.setBigDecimal1(bigDecimal3); break; case 4: // 余额提现 dto.setBigDecimal6(byId.getWithdrawMoney()); break; } } return R.ok(dto); } @@ -178,7 +220,7 @@ @RequestParam(value = "date") LocalDateTime date){ List<ShopBalanceStatement> list = shopBalanceStatementService.list(new LambdaQueryWrapper<ShopBalanceStatement>() .eq(ShopBalanceStatement::getType, type) .in(ShopBalanceStatement::getCreateTime, date)); .between(ShopBalanceStatement::getCreateTime, date.with(LocalTime.MIN), date.with(LocalTime.MAX))); return R.ok(list); } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -124,6 +124,7 @@ AppUserShop appUserShop = new AppUserShop(); appUserShop.setAppUserId(appUser.getId()); appUserShop.setShopId(shopId); appUserShop.setRoleType(1); R<Void> r = appUserClient.addAppUserShop(appUserShop); if (R.isError(r)){ throw new RuntimeException("添加失败"); @@ -176,7 +177,7 @@ userShop.setShopId(shopId); userShop.setRoleType(1); userShop.setRoleId(2L); userShop.setNickName(sysUser.getNickName()); userShop.setNickName(user.getNickName()); userShop.setCreateTime(LocalDateTime.now()); userShopClient.saveUserShop(userShop); } @@ -210,7 +211,14 @@ } Shop shop = shopService.getById(id); shop.setDelFlag(1); shopService.updateById(shop); // 查询有没有门店绑定这个被删除的门店 List<Shop> shops = shopService.lambdaQuery().eq(Shop::getPid, shop.getId()).list(); for (Shop shop1 : shops) { shop1.setPid(0); } shopService.updateBatchById(shops); appUserClient.clearBindShop(shop.getId()); UserShop userShop = new UserShop(); userShop.setShopId(shop.getId()); @@ -284,6 +292,7 @@ AppUserShop appUserShop = new AppUserShop(); appUserShop.setAppUserId(appUser.getId()); appUserShop.setShopId(shop.getId()); appUserShop.setRoleType(1); appUserShopClient.delAppUserShop(appUserShop); //添加新管理员 @@ -291,7 +300,11 @@ appUserShop = new AppUserShop(); appUserShop.setAppUserId(appUser.getId()); appUserShop.setShopId(shop.getId()); appUserShop.setRoleType(1); appUserClient.addAppUserShop(appUserShop); appUser.setUserType(2); appUserClient.editAppUserById(appUser); //修改管理员 shop.setAppUserId(appUser.getId()); @@ -706,5 +719,21 @@ return R.ok(list); } @GetMapping("/getShopStatistics") public R<Map<String, BigDecimal> > getShopStatistics(){ List<Shop> shopList = shopService.list(); BigDecimal serverGiveawayMoney = BigDecimal.ZERO; BigDecimal lowerLevelGiveawayMoney = BigDecimal.ZERO; for (Shop shop : shopList) { serverGiveawayMoney = serverGiveawayMoney.add(shop.getServerGiveawayMoney()); lowerLevelGiveawayMoney = lowerLevelGiveawayMoney.add(shop.getLowerLevelGiveawayMoney()); } Map<String, BigDecimal> map = new HashMap<>(); map.put("serverGiveawayMoney", serverGiveawayMoney); map.put("lowerLevelGiveawayMoney", lowerLevelGiveawayMoney); return R.ok(map); } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java
@@ -127,6 +127,14 @@ public R<Shop> shopCommissionStatisticsinfo(){ Integer objectId = tokenService.getLoginUser().getSysUser().getObjectId(); Shop byId = shopService.getById(objectId); List<ShopWithdraw> list = shopWithdrawService.lambdaQuery().eq(ShopWithdraw::getShopId, objectId) .eq(ShopWithdraw::getAuditStatus, 0).list(); if (!list.isEmpty()){ BigDecimal bigDecimal = list.stream().map(ShopWithdraw::getMoney).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); byId.setWithdrawAuditMoney(bigDecimal); }else { byId.setWithdrawAuditMoney(BigDecimal.ZERO); } return R.ok(byId); } @@ -137,6 +145,9 @@ SysUser sysUser = sysUserClient.getSysUser(userid).getData(); Integer objectId = sysUser.getObjectId(); Shop shop = shopService.getById(objectId); if (money.compareTo(BigDecimal.ZERO)==0){ return R.fail("提现金额必须大于零"); } if (money.compareTo(shop.getCanWithdrawMoney())>0){ return R.fail("提现金额不能大于可提现金额"); } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java
@@ -50,7 +50,8 @@ private SysUserClient sysUserClient; @Resource private AppUserShopClient appUserShopClient; @Resource private AppUserClient appUserClient; @@ -79,8 +80,7 @@ return R.ok(page); } @Resource private AppUserClient appUserClient; @PostMapping("/manage/addorupdate") @ApiOperation(value = "添加编辑", tags = {"门店-技师列表"}) public R<Page<Technician>> add(@RequestBody Technician technician) { @@ -105,6 +105,7 @@ AppUserShop appUserShop = new AppUserShop(); appUserShop.setShopId(sysUser.getObjectId()); appUserShop.setAppUserId(appUser.getId()); appUserShop.setRoleType(3); appUserShopClient.saveAppUserShop(appUserShop); }else { @@ -130,12 +131,21 @@ technicianService.saveOrUpdate(technician); return R.ok(); } @GetMapping("/manage/delete") @ApiOperation(value = "删除", tags = {"门店-技师列表"}) public R<Page<Technician>> delete(@RequestParam Integer id) { technicianService.removeById(id); return R.ok(); } @GetMapping("/manage/changeStatus") @ApiOperation(value = "上下架", tags = {"门店-技师列表"}) public R<Page<Technician>> changeStatus(@RequestParam Integer id,@RequestParam@ApiParam("状态(1=下架,2=上架)") Integer status) { @@ -144,6 +154,10 @@ technicianService.updateById(byId); return R.ok(); } @GetMapping("/manage/changesubscri") @ApiOperation(value = "修改预约状态", tags = {"门店-技师列表"}) public R<Page<Technician>> changesubscri(@RequestParam Integer id,@RequestParam@ApiParam("预约状态(1=可预约,2=不可预约)") Integer subscribeStatus) { ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TechnicianSubscribeMapper.java
@@ -27,7 +27,8 @@ */ List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop(PageInfo<TechnicianSubscribeVO> pageInfo, @Param("shopId") Long shopId, @Param("status") Integer status); @Param("status") Integer status, @Param("technicianId") Integer technicianId); List<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop1(PageInfo<TechnicianSubscribeVO> pageInfo, @Param("shopId") Long shopId, @Param("status") Integer status, @Param("phone")String phone, ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TechnicianSubscribeServiceImpl.java
@@ -5,14 +5,19 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.feignClient.AppUserShopClient; import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.api.model.AppUserShop; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.feignClient.RemoteOrderGoodsClient; import com.ruoyi.other.api.domain.Technician; import com.ruoyi.other.api.domain.TechnicianSubscribe; import com.ruoyi.other.enums.TechnicianStatus; import com.ruoyi.other.mapper.TechnicianSubscribeMapper; import com.ruoyi.other.service.TechnicianService; import com.ruoyi.other.service.TechnicianSubscribeService; import com.ruoyi.other.vo.TechnicianSubscribeVO; import org.springframework.data.redis.connection.RedisZSetCommands; @@ -24,6 +29,7 @@ import java.time.ZoneId; import java.time.ZoneOffset; import java.util.List; import java.util.Optional; import java.util.Set; /** @@ -45,6 +51,13 @@ @Resource private AppUserClient appUserClient; @Resource private TokenService tokenService; @Resource private AppUserShopClient appUserShopClient; @Resource private TechnicianService technicianService; @@ -52,7 +65,17 @@ @Override public PageInfo<TechnicianSubscribeVO> getTechnicianSubscribeByUserAndShop(Long shopId, Integer status, Integer pageCurr, Integer pageSize) { PageInfo<TechnicianSubscribeVO> pageInfo = new PageInfo(pageCurr, pageSize); List<TechnicianSubscribeVO> list = technicianSubscribeMapper.getTechnicianSubscribeByUserAndShop(pageInfo, shopId, status); Long userid = tokenService.getLoginUserApplet().getUserid(); List<AppUserShop> data = appUserShopClient.getAppUserShop(userid).getData(); Optional<AppUserShop> first = data.stream().filter(s -> s.getShopId() == shopId.intValue() && s.getRoleType() == 3).findFirst(); Integer technicianId = null; if(first.isPresent()){ AppUserShop appUserShop = first.get(); Technician technician = technicianService.getOne(new LambdaQueryWrapper<Technician>().eq(Technician::getAppUserId, appUserShop.getAppUserId()) .eq(Technician::getShopId, appUserShop.getShopId()).eq(Technician::getDelFlag, 0).eq(Technician::getStatus, 1)); technicianId = technician.getId(); } List<TechnicianSubscribeVO> list = technicianSubscribeMapper.getTechnicianSubscribeByUserAndShop(pageInfo, shopId, status, technicianId); for (TechnicianSubscribeVO technicianSubscribeVO : list) { String id = technicianSubscribeVO.getId(); TechnicianSubscribe technicianSubscribe = this.getById(id); ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TechnicianSubscribeMapper.xml
@@ -24,6 +24,9 @@ <if test="status != null"> AND tts.status = #{status} </if> <if test="technicianId != null"> AND tts.technician_id = #{technicianId} </if> ORDER BY tts.create_time DESC </select> <select id="getTechnicianSubscribeByUserAndShop1" resultType="com.ruoyi.other.vo.TechnicianSubscribeVO">