ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -348,6 +349,9 @@ public Integer getUserTotalPoint(){ if (totalPoint == null){ totalPoint = 0; } if (lowerLevelSharePoint == null){ lowerLevelSharePoint = 0; } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -323,7 +323,11 @@ //获取绑定上级 if (user.getInviteUserId() != null) { AppUser byId = appUserService.getById(user.getInviteUserId()); user.setTopUser(byId); if(null != byId){ user.setTopUser(byId); }else{ user.setTopUser(new AppUser()); } }else { AppUser topUser = new AppUser(); user.setTopUser(topUser); @@ -371,7 +375,6 @@ .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); vip1Count1 += count1; Long count2 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 2) @@ -379,42 +382,36 @@ .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); vip1Count2 += count2; Long count3 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 3) .eq(AppUser::getInviteUserId, appUser.getId()) .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); vip1Count3 += count3; Long count4 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 4) .eq(AppUser::getInviteUserId, appUser.getId()) .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); vip1Count4 += count4; Long count5 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 5) .eq(AppUser::getInviteUserId, appUser.getId()) .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); vip1Count5 += count5; Long count6 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 6) .eq(AppUser::getInviteUserId, appUser.getId()) .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); vip1Count6 += count6; Long count7 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 7) .eq(AppUser::getInviteUserId, appUser.getId()) .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); vip1Count7 += count7; appUser.setCount1(count1); appUser.setCount2(count2); appUser.setCount3(count3); @@ -423,6 +420,7 @@ appUser.setCount6(count6); appUser.setCount7(count7); } user.setBottomUsers(list); user.setCount1(vip1Count1); user.setCount2(vip1Count2); @@ -512,42 +510,23 @@ ArrayList<Long> userIds = new ArrayList<>(); userIds.add(userId); // 获取当前用户的所有下级 List<AppUser> allSubordinates = getAllSubordinates(userId); // 统计下级中每种会员类型的人数 Map<Integer, Long> countMap = allSubordinates.stream() .collect(Collectors.groupingBy(AppUser::getVipId, Collectors.counting())); countMap.forEach((vipId, count) -> { switch (vipId) { case 1: Long count1 = user.getCount1() == null ? 0 : user.getCount1(); user.setCount1(count1 + count); break; case 2: Long count2 = user.getCount2() == null ? 0 : user.getCount2(); user.setCount2(count2 + count); break; case 3: Long count3 = user.getCount3() == null ? 0 : user.getCount3(); user.setCount3(count3 + count); break; case 4: Long count4 = user.getCount4() == null ? 0 : user.getCount4(); user.setCount4(count4 + count); break; case 5: Long count5 = user.getCount5() == null ? 0 : user.getCount5(); user.setCount5(count5 + count); break; case 6: Long count6 = user.getCount6() == null ? 0 : user.getCount6(); user.setCount6(count6 + count); break; case 7: Long count7 = user.getCount7() == null ? 0 : user.getCount7(); user.setCount7(count7 + count); break; } }); List<AppUser> allSubordinates = appUserService.list(new LambdaQueryWrapper<AppUser>() .eq(AppUser::getInviteUserId, user.getId()).eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3)); Long count1 = allSubordinates.stream().filter(s->s.getVipId() == 1).count(); user.setCount1(count1); Long count2 = allSubordinates.stream().filter(s->s.getVipId() == 2).count(); user.setCount2(count2); Long count3 = allSubordinates.stream().filter(s->s.getVipId() == 3).count(); user.setCount3(count3); Long count4 = allSubordinates.stream().filter(s->s.getVipId() == 4).count(); user.setCount4(count4); Long count5 = allSubordinates.stream().filter(s->s.getVipId() == 5).count(); user.setCount5(count5); Long count6 = allSubordinates.stream().filter(s->s.getVipId() == 6).count(); user.setCount6(count6); Long count7 = allSubordinates.stream().filter(s->s.getVipId() == 7).count(); user.setCount7(count7); List<UserSignRecord> list = userSignRecordService.lambdaQuery().eq(UserSignRecord::getSignDay, LocalDate.now()) .eq(UserSignRecord::getAppUserId,userId).list(); if (!list.isEmpty()) { @@ -742,11 +721,10 @@ record.setInviteUserName(byId1.getName()); } } if (record.getShopId()!=null){ R<Shop> shopById = shopClient.getShopById(record.getShopId()); if (shopById.getData()!=null){ record.setShopName(shopById.getData().getName()); } Shop shop1 = shopClient.getServiceProvider(record.getId()).getData(); if(null != shop1){ record.setShopName(shop1.getName()); record.setShopId(shop1.getId()); } record.setTotalPoint(record.getUserTotalPoint()); } @@ -975,9 +953,10 @@ Long userid = tokenService.getLoginUser().getUserid(); SysUser sysUser = sysUserClient.getSysUser(userid).getData(); AppUser byId = appUserService.getById(id); Shop shop1 = shopClient.getServiceProvider(id).getData(); Shop shop1 = shopClient.getServiceProvider(byId.getId()).getData(); if(null != shop1){ byId.setShopName(shop1.getName()); byId.setShopId(shop1.getId()); } R<List<Shop>> shopByUserId = shopClient.getShopByUserId(id); if (shopByUserId.getData() != null) { ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserCouponController.java
@@ -218,6 +218,9 @@ if (data==null){ return R.fail("当前优惠券不存在,请刷新后重试"); } if(data.getDelFlag() == 1 || data.getShelfStatus() == 0){ return R.fail("当前优惠券不存在,请刷新后重试"); } long count = userCouponService.count(new LambdaQueryWrapper<UserCoupon>().eq(UserCoupon::getCouponId, couponId).eq(UserCoupon::getDelFlag, 0)); if(data.getSendNum() <= count){ return R.fail("当前优惠券已全部领取完毕"); ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java
@@ -97,10 +97,12 @@ BigDecimal beforeAmount = changeRecord.getBeforeAmount(); BigDecimal afterAmount = changeRecord.getAfterAmount(); if (beforeAmount.compareTo(afterAmount) > 0){ if(changeRecord.getChangeType() == 2){ BigDecimal changeAmount = changeRecord.getChangeAmount(); totalWithdraw = totalWithdraw.add(changeAmount); } if (beforeAmount.compareTo(afterAmount) > 0){ walletStatisticsDetail.setFlag(2); }else { walletStatisticsDetail.setFlag(1); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -317,13 +317,17 @@ Long userid = tokenService.getLoginUser().getUserid(); SysUser sysUser = sysUserClient.getSysUser(userid).getData(); List<Order> orderList = orderService.list(new LambdaQueryWrapper<Order>() .ne(Order::getOrderStatus, 5) .eq(sysUser.getRoleType() == 2, Order::getShopId, sysUser.getObjectId()) LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<Order>() .in(Order::getOrderStatus, Arrays.asList(1, 2, 3, 4, 7, 8)) .eq(Order::getPayStatus, 2) .eq(Order::getDelFlag, 0) .between(Order::getCreateTime, LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))) .orderByAsc(Order::getCreateTime)); .orderByAsc(Order::getCreateTime); if(sysUser.getRoleType() == 2){ //门店只拥有服务订单和自提商品订单 wrapper.eq(Order::getShopId, sysUser.getObjectId()).eq(Order::getOrderType, 1).or().eq(Order::getOrderType, 2).eq(Order::getDistributionMode, 1); } List<Order> orderList = orderService.list(wrapper); Map<String, List<Order>> map = orderList.stream() .collect(Collectors.groupingBy( item -> item.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")), @@ -555,7 +559,6 @@ */ @GetMapping("/exportExpress") public void exportExpress(HttpServletResponse response, OrderPageList orderPage) { //搜索条件,用户姓名 if (StringUtils.isNotEmpty(orderPage.getUserName())) { List<AppUser> data = appUserClient.getAppUserByNameNoFilter(orderPage.getUserName()).getData(); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderExport.java
@@ -62,7 +62,7 @@ /** * 订单类型 */ @Excel(name = "订单类型", readConverterExp = "1=服务,2=单品") @Excel(name = "订单类型", readConverterExp = "1=服务,2=单品(自提),3=单品(快递)") private String orderType; ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderPageList.java
@@ -23,7 +23,7 @@ private String userName; @ApiModelProperty("联系电话") private String phone; @ApiModelProperty("商品类型(1=服务,2=单品)") @ApiModelProperty("商品类型(1=服务,2=单品-自提,3=单品-快递)") private Integer goodsType; @ApiModelProperty("支付方式(1=微信,2=余额,3=积分)") private Integer paymentType; ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -57,7 +57,7 @@ DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') as createTime, DATE_FORMAT(after_sale_time, '%Y-%m-%d %H:%i:%s') as afterSaleTime, app_user_id as appUserId, order_type as goodsType, CASE WHEN order_type = 1 THEN 1 WHEN order_type = 2 and distribution_mode = 1 THEN 2 ELSE 3 END as goodsType, pay_method as paymentType, total_amount as orderMoney, point, @@ -69,7 +69,7 @@ deliver_province_code, deliver_city, deliver_city_code from t_order where del_flag = 0 from t_order where del_flag = 0 and pay_status = 2 <if test="null != item.code and '' != item.code"> and order_number like CONCAT('%', #{item.code}, '%') </if> @@ -79,8 +79,14 @@ #{tem} </foreach> </if> <if test="null != item.goodsType"> <if test="null != item.goodsType and 1 == item.goodsType"> and order_type = #{item.goodsType} </if> <if test="null != item.goodsType and 2 == item.goodsType"> and order_type = 2 and distribution_mode = 1 </if> <if test="null != item.goodsType and 3 == item.goodsType"> and order_type = 2 and distribution_mode = 2 </if> <if test="null != item.paymentType"> and pay_method = #{item.paymentType} @@ -110,9 +116,9 @@ coalesce( SUM( CASE WHEN tor.order_type = 2 and tor.order_status!=5 THEN tor.total_amount ELSE 0 END ),0) as singleTotalMoney FROM t_order tor where 1 = 1 AND tor.del_flag = 0 t_order tor where tor.del_flag = 0 and tor.order_status in (1, 2, 3, 4, 7, 8) and tor.pay_status = 2 <if test="null != shopId"> and tor.shop_id = #{shopId} and tor.shop_id = #{shopId} and (if(tor.order_type = 2, tor.distribution_mode = 1, 1 = 1)) </if> </select> @@ -149,19 +155,24 @@ ifnull(count(1), 0) from t_order a where del_flag = 0 and pay_status = 2 and order_status in (1, 2, 3, 4, 7, 8) and shop_id in <foreach collection="shopIds" item="shopId" separator="," open="(" close=")" index="index"> #{shopId} </foreach> <if test="null != type"> and order_type = #{type} <if test="null != shopIds and shopIds.size() > 0"> and shop_id in <foreach collection="shopIds" item="shopId" separator="," open="(" close=")" index="index"> #{shopId} </foreach> </if> <if test="null != type and 1 == type"> and a.order_type = #{type} </if> <if test="null != type and 2 == type"> and a.order_type = #{type} and a.distribution_mode = 1 </if> </select> <select id="getOrderExportList" resultType="com.ruoyi.order.vo.OrderExport"> SELECT o.order_status, o.order_number, o.order_type, CASE WHEN o.order_type = 1 THEN 1 WHEN o.order_type = 2 and o.distribution_mode = 1 THEN 2 ELSE 3 END as orderType, case when o.order_type = 1 then 1 else o.distribution_mode end as distributionMode, o.address_Json, o.create_time, @@ -189,8 +200,14 @@ #{tem} </foreach> </if> <if test="null != item.goodsType"> and o.order_type = #{item.goodsType} <if test="null != item.goodsType and 1 == item.goodsType"> and order_type = #{item.goodsType} </if> <if test="null != item.goodsType and 2 == item.goodsType"> and order_type = 2 and distribution_mode = 1 </if> <if test="null != item.goodsType and 3 == item.goodsType"> and order_type = 2 and distribution_mode = 2 </if> <if test="null != item.paymentType"> and o.pay_method = #{item.paymentType} ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/CouponInfoController.java
@@ -161,19 +161,21 @@ Long userid = tokenService.getLoginUserApplet().getUserid(); AppUser appUserById = appUserClient.getAppUserById(userid); LocalDateTime now = LocalDateTime.now(); //查出全部可领取的优惠劵 List<CouponInfo> list = couponInfoService.lambdaQuery() .le(CouponInfo::getSendStartTime, now) .ge(CouponInfo::getSendEndTime, now) .eq(CouponInfo::getPersonType, 1) .eq(CouponInfo::getDelFlag, 0) .eq(CouponInfo::getShelfStatus, 1) .list(); //查出指定人员可领取优惠券 List<CouponInfo> list1 = couponInfoService.lambdaQuery() .le(CouponInfo::getSendStartTime, now) .ge(CouponInfo::getSendEndTime, now) .eq(CouponInfo::getPersonType, 2) .eq(CouponInfo::getDelFlag, 0) .eq(CouponInfo::getShelfStatus, 1) .apply("FIND_IN_SET('" + appUserById.getId() + "', person_ids)") .list(); //查出指定会员可领取优惠劵 @@ -181,6 +183,8 @@ .le(CouponInfo::getSendStartTime, now) .ge(CouponInfo::getSendEndTime, now) .eq(CouponInfo::getPersonType, 3) .eq(CouponInfo::getDelFlag, 0) .eq(CouponInfo::getShelfStatus, 1) .apply("FIND_IN_SET('" + appUserById.getVipId() + "', vip_ids)").list(); List<CouponInfo> returnList = new ArrayList<>(); returnList.addAll(list); ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -702,33 +702,20 @@ @ApiOperation(value = "门店统计", tags = {"管理后台-首页统计"}) public R<ShopStatistics> shopStatistics(@ApiParam("门店id") Integer shopId) { ShopStatistics shopStatistics = shopMapper.getShopStatistics(shopId); List<Integer> shopIds = shopService.list(new LambdaQueryWrapper<Shop>() .eq(Shop::getDelFlag, 0) .eq(shopId !=null,Shop::getId, shopId)) .stream() .map(Shop::getId) .collect(Collectors.toList()); if (CollectionUtils.isEmpty(shopIds)){ shopStatistics.setTotalOrder(0); shopStatistics.setServiceOrder(0); shopStatistics.setGoodsOrder(0); }else { OrderSaleNum serviceOrderSaleNum = new OrderSaleNum(); serviceOrderSaleNum.setShopIds(shopIds); serviceOrderSaleNum.setType(1); Integer serviceOrder = orderClient.getShopSaleNumByShopIds(serviceOrderSaleNum).getData(); OrderSaleNum goodsOrderSaleNum = new OrderSaleNum(); goodsOrderSaleNum.setShopIds(shopIds); goodsOrderSaleNum.setType(2); Integer goodsOrder = orderClient.getShopSaleNumByShopIds(goodsOrderSaleNum).getData(); shopStatistics.setTotalOrder(serviceOrder + goodsOrder); shopStatistics.setServiceOrder(serviceOrder); shopStatistics.setGoodsOrder(goodsOrder); } OrderSaleNum serviceOrderSaleNum = new OrderSaleNum(); serviceOrderSaleNum.setShopIds(null == shopId ? new ArrayList<>() : Arrays.asList(shopId)); serviceOrderSaleNum.setType(1); Integer serviceOrder = orderClient.getShopSaleNumByShopIds(serviceOrderSaleNum).getData(); OrderSaleNum goodsOrderSaleNum = new OrderSaleNum(); goodsOrderSaleNum.setShopIds(null == shopId ? new ArrayList<>() : Arrays.asList(shopId)); goodsOrderSaleNum.setType(2); Integer goodsOrder = orderClient.getShopSaleNumByShopIds(goodsOrderSaleNum).getData(); shopStatistics.setTotalOrder(serviceOrder + goodsOrder); shopStatistics.setServiceOrder(serviceOrder); shopStatistics.setGoodsOrder(goodsOrder); return R.ok(shopStatistics); }