jiangqs
2023-06-21 4780a3ac4a163ea0181d395488042ec443403f62
BUG修复和营销统计
2 文件已重命名
50个文件已修改
6个文件已添加
1640 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBasePlatformDto.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtShopIdByCodeDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtUserIdByDept.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/Member.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapTotalVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtShopTotalMemberVo.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteActivityService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteUserService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtTotalController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponRelUserMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMapTotalPlusVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtPlTotalShopTotalVo.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopSuggestMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/StaffSuggestMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/sys/SysUserMapper.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/sys/ISysUserService.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/RecommendCooperationMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/StaffSuggestMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/sys/SysUserMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBasePlatformDto.java
New file
@@ -0,0 +1,50 @@
package com.ruoyi.system.api.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @ClassName MgtBasePlatformDto
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/21 10:02
 * @Version 1.0
 */
@Data
public class MgtBasePlatformDto extends MgtBaseDateDto{
    @ApiModelProperty(value = "商户id")
    private Long shopId;
    @ApiModelProperty(value = "商户id集合",hidden = true)
    private List<Long> shopIdList;
    @ApiModelProperty("店铺地址省code")
    private String shopProvinceCode;
    @ApiModelProperty("店铺地址市code")
    private String shopCityCode;
    @ApiModelProperty("店铺地址区code")
    private String shopAreaCode;
    @ApiModelProperty("部门id")
    private Long deptId;
    @ApiModelProperty("员工id")
    private Long userId;
    @ApiModelProperty(value = "员工list",hidden = true)
    private List<Long> userIdList;
    @ApiModelProperty("活动来源1平台2商户")
    private Integer activityFrom;
    @ApiModelProperty("活动类型1秒杀")
    private Integer activityType;
    @ApiModelProperty("活动id")
    private Long activityId;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtShopIdByCodeDto.java
@@ -3,6 +3,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @ClassName MgtShopIdByCodeDto
 * @Description TODO
@@ -24,4 +26,6 @@
    @ApiModelProperty(value = "店铺名称")
    private String shopName;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtUserIdByDept.java
New file
@@ -0,0 +1,27 @@
package com.ruoyi.system.api.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @ClassName MgtUserIdByDept
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/21 16:00
 * @Version 1.0
 */
@Data
public class MgtUserIdByDept {
    @ApiModelProperty(value = "部门id")
    private Long deptId;
    @ApiModelProperty(value = "员工id")
    private Long userId;
    @ApiModelProperty(value = "员工list")
    private List<Long> userIdList;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/Member.java
@@ -1,17 +1,15 @@
package com.ruoyi.system.api.domain.poji.member;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
@@ -142,6 +140,12 @@
    private Integer bindingFlag;
    /**
     * 绑定时间
     */
    @TableField("binding_time")
    private Date bindingTime;
    /**
     * 商品类型
     */
    @TableField("goods_type")
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapTotalVo.java
File was renamed from ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMapTotalVo.java
@@ -1,4 +1,4 @@
package com.ruoyi.member.domain.vo;
package com.ruoyi.system.api.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java
New file
@@ -0,0 +1,80 @@
package com.ruoyi.system.api.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName MgtPlTotalMemberTotalVo
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/21 10:34
 * @Version 1.0
 */
@Data
public class MgtPlTotalMemberTotalVo {
    @ApiModelProperty(value = "总会员")
    private Integer memberTotal;
    @ApiModelProperty(value = "昨日新增")
    private Integer memberYesterday;
    @ApiModelProperty(value = "七日新增")
    private Integer memberSeven;
    @ApiModelProperty(value = "男人")
    private Integer manTotal;
    @ApiModelProperty(value = "女人")
    private Integer womenTotal;
    @ApiModelProperty(value = "会员年龄key")
    private String[] ageKey;
    @ApiModelProperty(value = "会员年龄value")
    private Integer[] ageValue;
    @ApiModelProperty(value = "会员调理key")
    private String[] nurseKey;
    @ApiModelProperty(value = "会员调理value")
    private Integer[] nurseValue;
    @ApiModelProperty(value = "商品类型key")
    private String[] goodsTypeKey;
    @ApiModelProperty(value = "商品类型value")
    private Integer[] goodsTypeValue;
    @ApiModelProperty(value = "活跃度key")
    private String[] activenessKey;
    @ApiModelProperty(value = "活跃度value")
    private Integer[] activenessValue;
    @ApiModelProperty(value = "来源渠道key")
    private String[] customerSourceKey;
    @ApiModelProperty(value = "来源渠道value")
    private Integer[] customerSourceValue;
    @ApiModelProperty(value = "消费排行key")
    private String[] orderRankKey;
    @ApiModelProperty(value = "消费排行value")
    private Integer[] orderRankValue;
    @ApiModelProperty(value = "商品排行key")
    private String[] goodsRankKey;
    @ApiModelProperty(value = "商品排行value")
    private Integer[] goodsRankValue;
    @ApiModelProperty(value = "店铺会员key")
    private String[] memberRankKey;
    @ApiModelProperty(value = "店铺会员value")
    private Integer[] memberRankValue;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtShopTotalMemberVo.java
New file
@@ -0,0 +1,28 @@
package com.ruoyi.system.api.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName MgtShopTotalMemberVO
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/21 17:16
 * @Version 1.0
 */
@Data
public class MgtShopTotalMemberVo {
    @ApiModelProperty(value = "男人")
    private Integer manTotal;
    @ApiModelProperty(value = "女人")
    private Integer womenTotal;
    @ApiModelProperty(value = "会员年龄key")
    private String[] ageKey;
    @ApiModelProperty(value = "会员年龄value")
    private Integer[] ageValue;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java
@@ -1,6 +1,7 @@
package com.ruoyi.system.api.factory;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.dto.MgtUserIdByDept;
import com.ruoyi.system.api.domain.poji.config.Activeness;
import com.ruoyi.system.api.domain.poji.config.SysClassification;
import com.ruoyi.system.api.service.RemoteConfigService;
@@ -35,6 +36,11 @@
            }
            @Override
            public R<MgtUserIdByDept> getUserIdByDept(MgtUserIdByDept userIdByDept) {
                return R.fail("获取部门用户失败:" + throwable.getMessage());
            }
            @Override
            public R<List<SysTag>> listSysTag(Integer tagType) {
                return R.fail("获取标签失败:" + throwable.getMessage());
            }
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java
@@ -101,6 +101,16 @@
            public R<List<Long>> listUserIdByAge(MgtActivityAgeDto mgtActivityAgeDto) {
                return R.fail("筛选userId年龄段失败:" + throwable.getMessage());
            }
            @Override
            public R<List<Long>> listUserIdByShopId(List<Long> shopIdlist) {
                return R.fail("通过shopId获取userId失败:" + throwable.getMessage());
            }
            @Override
            public R<MgtShopTotalMemberVo> getUserTotalByShopId(List<Long> shopIdlist) {
                return R.fail("通过shopId获取user统计失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java
@@ -1,7 +1,9 @@
package com.ruoyi.system.api.factory;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
import com.ruoyi.system.api.service.RemoteOrderService;
import com.ruoyi.system.api.domain.vo.AppOrderTotalVo;
import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
@@ -9,6 +11,8 @@
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * 订单服务
@@ -41,6 +45,11 @@
            public R<MgtBulletinBoardVo> boardOrderTotal() {
                return null;
            }
            @Override
            public R<List<MgtMapTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto) {
                return R.fail("获取商户端统计失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
@@ -1,15 +1,14 @@
package com.ruoyi.system.api.factory;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.dto.AppEditUserDto;
import com.ruoyi.system.api.domain.poji.config.SysTag;
import com.ruoyi.system.api.model.*;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.api.service.RemoteUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.service.RemoteUserService;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
/**
 * 用户服务
@@ -67,10 +66,6 @@
                return R.fail("更新用户信息失败:" + throwable.getMessage());
            }
            @Override
            public R<SysTag> getSysTag(Long sysTagId) {
                return R.fail("获取系统标签失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteActivityService.java
@@ -41,6 +41,6 @@
     * @author jqs34
     * @date 2023/6/18 17:30
     */
    @PostMapping("/boardActivityTotal")
    @PostMapping("/activity/boardActivityTotal")
    public R<MgtBulletinBoardVo> boardActivityTotal();
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java
@@ -2,6 +2,7 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.dto.MgtUserIdByDept;
import com.ruoyi.system.api.domain.poji.config.Activeness;
import com.ruoyi.system.api.domain.poji.config.SysClassification;
import com.ruoyi.system.api.domain.poji.config.SysTag;
@@ -23,8 +24,6 @@
@FeignClient(contextId = "remoteConfigService", value = ServiceNameConstants.SYSTEM_SERVICE,fallbackFactory = RemoteConfigFallbackFactory.class)
public interface RemoteConfigService {
    @PostMapping("/config/getSysTag")
    public R<SysTag> getSysTag(@RequestBody Long sysTagId);
    @PostMapping("/config/listSysTag")
    public R<List<SysTag>> listSysTag(@RequestBody Integer tagType);
@@ -46,4 +45,25 @@
     */
    @PostMapping("/config/getSysClassificationList")
    public R<Map<Long,SysClassification>> getSysClassificationList(@RequestBody List<Long> classIds);
    /**
     * @description  获取标签
     * @author  jqs
     * @date    2023/6/21 16:11
     * @param sysTagId
     * @return  R<SysTag>
     */
    @PostMapping("/config/getSysTag")
    public R<SysTag> getSysTag(@RequestBody Long sysTagId);
    /**
     * @description  获取部门用户
     * @author  jqs
     * @date    2023/6/21 16:00
     * @param userIdByDept
     * @return  R<MgtShopIdByCodeDto>
     */
    @PostMapping("/config/getUserIdByDept")
    public R<MgtUserIdByDept> getUserIdByDept(@RequestBody MgtUserIdByDept userIdByDept);
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
@@ -100,7 +100,7 @@
     * @description  通过ids获取用户简易返回
     * @author  jqs
     * @date    2023/6/16 11:05
     * @param userIds
     * @param mgtBaseBathDto
     * @return  R<List<MgtSimpleMemberVo>>
     */
    @PostMapping("/member/listSimpleVoByIds")
@@ -133,6 +133,27 @@
     * @param mgtActivityAgeDto
     * @return  R<List<Long>>
     */
    @PostMapping("/listUserIdByAge")
    @PostMapping("/member/listUserIdByAge")
    public R<List<Long>> listUserIdByAge(@RequestBody MgtActivityAgeDto mgtActivityAgeDto);
    /**
     * @description  通过shopId获取userId
     * @author  jqs
     * @date    2023/6/21 17:11
     * @param shopIdlist
     * @return  R<List<Long>>
     */
    @PostMapping("/listUserIdByShopId")
    public R<List<Long>> listUserIdByShopId(@RequestBody List<Long> shopIdlist);
    /**
     * @description  通过shopId获取user统计
     * @author  jqs
     * @date    2023/6/21 17:22
     * @param shopIdlist
     * @return  R<MgtShopTotalMemberVo>
     */
    @PostMapping("/getUserTotalByShopId")
    public R<MgtShopTotalMemberVo> getUserTotalByShopId(@RequestBody List<Long> shopIdlist);
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java
@@ -2,13 +2,17 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import com.ruoyi.system.api.domain.vo.AppOrderTotalVo;
import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
import com.ruoyi.system.api.factory.RemoteOrderFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@FeignClient(contextId = "remoteOrderService", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = RemoteOrderFallbackFactory.class)
public interface RemoteOrderService {
@@ -28,4 +32,14 @@
     */
    @PostMapping("/order/boardOrderTotal")
    public R<MgtBulletinBoardVo> boardOrderTotal();
    /**
     * @description
     * @author  jqs
     * @date    2023/6/21 15:27
     * @param mgtBasePlatformDto
     * @return  List<MgtMapTotalVo>
     */
    @PostMapping("/order/listMemberGoodsRank")
    public R<List<MgtMapTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto);
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteUserService.java
@@ -1,19 +1,14 @@
package com.ruoyi.system.api.service;
import com.ruoyi.system.api.domain.dto.AppEditUserDto;
import com.ruoyi.system.api.domain.poji.config.SysTag;
import com.ruoyi.system.api.model.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.dto.AppEditUserDto;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.factory.RemoteUserFallbackFactory;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
/**
 * 用户服务
@@ -93,6 +88,5 @@
    @PostMapping("/user/editUserInfo")
    public R editUserInfo(@RequestBody AppEditUserDto appEditUserDto);
    @PostMapping("/config/getSysTag")
    public R<SysTag> getSysTag(@RequestBody Long sysTagId);
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
@@ -219,4 +219,32 @@
        List<Long> userIdList = memberService.listUserIdByAge(mgtActivityAgeDto);
        return R.ok(userIdList);
    }
    /**
     * @description  通过shopId获取userId
     * @author  jqs
     * @date    2023/6/21 17:11
     * @param shopIdlist
     * @return  R<List<Long>>
     */
    @PostMapping("/listUserIdByShopId")
    public R<List<Long>> listUserIdByShopId(@RequestBody List<Long> shopIdlist)
    {
        List<Long> userIdList = memberService.listUserIdByShopId(shopIdlist);
        return R.ok(userIdList);
    }
    /**
     * @description  通过shopId获取user统计
     * @author  jqs
     * @date    2023/6/21 17:22
     * @param shopIdlist
     * @return  R<MgtShopTotalMemberVo>
     */
    @PostMapping("/getUserTotalByShopId")
    public R<MgtShopTotalMemberVo> getUserTotalByShopId(@RequestBody List<Long> shopIdlist)
    {
        MgtShopTotalMemberVo shopTotalMemberVo = memberService.getUserTotalByShopId(shopIdlist);
        return R.ok(shopTotalMemberVo);
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtTotalController.java
@@ -4,7 +4,9 @@
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.member.domain.vo.MgtTotalMemberTotalVo;
import com.ruoyi.member.service.member.MemberService;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import com.ruoyi.system.api.domain.dto.MgtBaseShopDto;
import com.ruoyi.system.api.domain.vo.MgtPlTotalMemberTotalVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestBody;
@@ -31,7 +33,7 @@
    @RequestMapping(value = "/getTotalMemberTotal", method = RequestMethod.POST)
    @ApiOperation(value = "获取会员人数统计")
    @ApiOperation(value = "获取商户会员人数统计")
    public R<MgtTotalMemberTotalVo> getTotalMemberTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) {
        Long userId = SecurityUtils.getUserId();
        mgtBaseShopDto.setUserId(userId);
@@ -39,4 +41,13 @@
        return R.ok(totalMemberTotalVo);
    }
    @RequestMapping(value = "/getPlTotalMemberTotal", method = RequestMethod.POST)
    @ApiOperation(value = "获取平台会员人数统计")
    public R<MgtPlTotalMemberTotalVo> getPlTotalMemberTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) {
        Long userId = SecurityUtils.getUserId();
        mgtBasePlatformDto.setUserId(userId);
        MgtPlTotalMemberTotalVo plTotalMemberTotal = memberService.getPlTotalMemberTotal(mgtBasePlatformDto);
        return R.ok(plTotalMemberTotal);
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java
@@ -33,7 +33,7 @@
    private String userMobile;
    @ApiModelProperty(value = "建议类型1.平台2.门店")
    private Integer suggestType;
    private String suggestType;
    @ApiModelProperty(value = "建议内容")
    private String suggestContent;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java
@@ -46,10 +46,10 @@
    @ApiModelProperty(value = "会员年龄value")
    private Integer[] ageValue;
    @ApiModelProperty(value = "会员年龄key")
    @ApiModelProperty(value = "会员调理key")
    private String[] nurseKey;
    @ApiModelProperty(value = "会员年龄value")
    @ApiModelProperty(value = "会员调理value")
    private Integer[] nurseValue;
    @ApiModelProperty(value = "商品类型key")
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java
@@ -7,9 +7,12 @@
import com.ruoyi.member.domain.dto.MgtMemberPageDto;
import com.ruoyi.member.domain.vo.*;
import com.ruoyi.system.api.domain.dto.MgtActivityAgeDto;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import com.ruoyi.system.api.domain.dto.MgtBaseShopDto;
import com.ruoyi.system.api.domain.dto.MgtUserIdByKeywordDto;
import com.ruoyi.system.api.domain.poji.member.Member;
import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
import com.ruoyi.system.api.domain.vo.MgtPlTotalMemberTotalVo;
import com.ruoyi.system.api.domain.vo.MgtSimpleMemberVo;
import org.apache.ibatis.annotations.Param;
@@ -209,7 +212,88 @@
    List<Long> listUserIdByAge(@Param("param")MgtActivityAgeDto mgtActivityAgeDto);
    /**
     * @description  会员人数统计
     * @author  jqs
     * @date    2023/6/21 10:59
     * @param mgtBasePlatformDto
     * @return  MgtPlTotalMemberTotalVo
     */
    MgtPlTotalMemberTotalVo getPlTotalMemberTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  会员人数统计
     * @author  jqs
     * @date    2023/6/19 15:26
     * @param
     * @return  MgtTotalMemberTotalVo
     */
    MgtAgeTotalVo getPlTotalMemberTotalAge(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  会员人数统计
     * @author  jqs
     * @date    2023/6/19 15:26
     * @param
     * @return  MgtTotalMemberTotalVo
     */
    List<MgtMapTotalVo> getPlTotalMemberTotalNurse(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  会员人数统计
     * @author  jqs
     * @date    2023/6/19 15:26
     * @param
     * @return  MgtTotalMemberTotalVo
     */
    List<MgtMapTotalVo> getPlTotalMemberTotalGoodsType(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description getTotalMemberTotalActiveness
     * @param shopIdList
     * @param actStartDate
     * @param actEndDate
     * @return Integer
     * @author jqs34
     * @date 2023/6/19 21:24
     */
    Integer getPlTotalMemberTotalActiveness(@Param("shopIdList") List<Long> shopIdList,@Param("actStartDate") String actStartDate,@Param("actEndDate") String actEndDate);
    /**
     * @description  会员人数统计
     * @author  jqs
     * @date    2023/6/19 15:26
     * @param
     * @return  MgtTotalMemberTotalVo
     */
    List<MgtMapTotalVo> getPlTotalMemberRankPay(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  会员人数统计
     * @author  jqs
     * @date    2023/6/19 15:26
     * @param
     * @return  MgtTotalMemberTotalVo
     */
    List<MgtMapTotalVo> getPlTotalMemberRankCustomerSource(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description
     * @author  jqs
     * @date    2023/6/21 14:35
     * @param mgtBasePlatformDto
     * @return  List<MgtMapTotalVo>
     */
    List<MgtMapTotalVo> getPlTotalMemberRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  通过shopId获取userId
     * @author  jqs
     * @date    2023/6/21 17:11
     * @param shopIdList
     * @return  List<Long>
     */
    List<Long> listUserIdByShopId(@Param("shopIdList")List<Long> shopIdList);
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -102,7 +102,11 @@
    @Resource
    private MemberArchiveService memberArchiveService;
    @Resource
    private RemoteShopService remoteShopService;
    @Resource
    private RemoteOrderService remoteOrderService;
    /**
     * @description: TODO
@@ -392,6 +396,9 @@
    @Override
    public void updateMemberBinding(AppMemberBindingDto appMemberBindingDto){
        Member member = this.getByUserId(appMemberBindingDto.getUserId());
        if(member.getBindingFlag()==0){
            member.setBindingTime(new Date());
        }
        member.setBindingFlag(appMemberBindingDto.getBindingFlag());
        member.setRelationShopId(appMemberBindingDto.getShopId());
        member.setRelationShopName(appMemberBindingDto.getShopName());
@@ -509,7 +516,9 @@
            member.setWxUnionid(null);
            member.setMiniOpenid(null);
            member.setBindingFlag(1);
            member.setRelationShopId(merMemberAddDto.getShopId());
            member.setBindingTime(new Date());
            Shop shop = remoteShopService.getShop(merMemberAddDto.getShopId()).getData();
            member.setRelationShopName(shop.getShopName());
            member.setCustomerSource("商户添加");
            member.setCreateTime(new Date());
            log.info("member-----------------"+member.toString());
@@ -723,6 +732,7 @@
                member.setRelationShopId(shop.getShopId());
                member.setRelationShopName(shop.getShopName());
                member.setBindingFlag(1);
                member.setBindingTime(new Date());
                member.setUpdateTime(new Date());
                member.setUpdateUserId(mgtMemberRelEditDto.getUserId());
                this.saveOrUpdate(member);
@@ -1059,5 +1069,178 @@
        return userIdList;
    }
    /**
     * @description  会员人数统计
     * @author  jqs
     * @date    2023/6/21 10:59
     * @param mgtBasePlatformDto
     * @return  MgtPlTotalMemberTotalVo
     */
    @Override
    public MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto){
        Date nowDay = DateUtils.getNowDate();
        //如果区域代码不为null获取对应的商户id
        if(StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode())||StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode())||StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())){
            MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto();
            mgtShopIdByCodeDto.setShopProvinceCode(mgtBasePlatformDto.getShopProvinceCode());
            mgtShopIdByCodeDto.setShopCityCode(mgtBasePlatformDto.getShopCityCode());
            mgtShopIdByCodeDto.setShopAreaCode(mgtBasePlatformDto.getShopAreaCode());
            MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData();
            if(StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())){
                List<Long> list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(","))
                        .map(Long::valueOf)
                        .collect(Collectors.toList());
                mgtBasePlatformDto.setShopIdList(list);
            }
        }
        //获取基础统计
        MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto);
        MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto);
        plTotalMemberTotalVo.setManTotal(mgtAgeTotalVo.getManTotal());
        plTotalMemberTotalVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal());
        // 年龄段数组
        String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
        // 不同年龄段的会员数数组
        Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
        // 设置年龄段数组和不同年龄段的会员数数组
        plTotalMemberTotalVo.setAgeKey(ageKey);
        plTotalMemberTotalVo.setAgeValue(ageValue);
        // 获取不同护理类型的会员数
        List<MgtMapTotalVo> nurseTotalVos = memberMapper.getPlTotalMemberTotalNurse(mgtBasePlatformDto);
        if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
            String[] nurseKey = new String[nurseTotalVos.size()];
            Integer[] nurseValue = new Integer[nurseTotalVos.size()];
            // 遍历不同护理类型的会员数列表,设置护理类型数组和对应的会员数数组
            for (int i = 0; i < nurseTotalVos.size(); i++) {
                nurseKey[i] = nurseTotalVos.get(i).getMapKey();
                nurseValue[i] = nurseTotalVos.get(i).getMapValue();
            }
            plTotalMemberTotalVo.setNurseKey(nurseKey);
            plTotalMemberTotalVo.setNurseValue(nurseValue);
        }
        // 获取不同商品类型的会员数
        List<MgtMapTotalVo> goodsTypeTotalVos = memberMapper.getPlTotalMemberTotalGoodsType(mgtBasePlatformDto);
        if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) {
            String[] goodsTypeKey = new String[goodsTypeTotalVos.size()];
            Integer[] goodsTypeValue = new Integer[goodsTypeTotalVos.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < goodsTypeTotalVos.size(); i++) {
                goodsTypeKey[i] = goodsTypeTotalVos.get(i).getMapKey();
                goodsTypeValue[i] = goodsTypeTotalVos.get(i).getMapValue();
            }
            plTotalMemberTotalVo.setGoodsTypeKey(goodsTypeKey);
            plTotalMemberTotalVo.setGoodsTypeValue(goodsTypeValue);
        }
        // 获取不同活跃度的会员数
        List<Long> shopIdList = mgtBasePlatformDto.getShopIdList();
        List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
        if (activenessList != null && !activenessList.isEmpty()) {
            String[] activenessKey = new String[activenessList.size()];
            Integer[] activenessValue = new Integer[activenessList.size()];
            Activeness activeness;
            String actStartDate;
            String actEndDate;
            Integer count;
            // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组
            for (int i = 0; i < activenessList.size(); i++) {
                activeness = activenessList.get(i);
                actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
                actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
                count = memberMapper.getPlTotalMemberTotalActiveness(shopIdList, actStartDate, actEndDate);
                activenessKey[i] = activeness.getActivenessName();
                activenessValue[i] = count;
            }
            plTotalMemberTotalVo.setActivenessKey(activenessKey);
            plTotalMemberTotalVo.setActivenessValue(activenessValue);
        }
        //获取会员消费排名
        List<MgtMapTotalVo> memberPayList = memberMapper.getPlTotalMemberRankPay(mgtBasePlatformDto);
        if (memberPayList != null && memberPayList.size() > 0) {
            String[] memberPayKey = new String[memberPayList.size()];
            Integer[] memberPayValue = new Integer[memberPayList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < memberPayList.size(); i++) {
                memberPayKey[i] = memberPayList.get(i).getMapKey();
                memberPayValue[i] = memberPayList.get(i).getMapValue();
            }
            plTotalMemberTotalVo.setOrderRankKey(memberPayKey);
            plTotalMemberTotalVo.setOrderRankValue(memberPayValue);
        }
        //获取来源渠道排名
        List<MgtMapTotalVo> customerSourceList = memberMapper.getPlTotalMemberRankCustomerSource(mgtBasePlatformDto);
        if (customerSourceList != null && customerSourceList.size() > 0) {
            String[] customerSourceKey = new String[customerSourceList.size()];
            Integer[] customerSourceValue = new Integer[customerSourceList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < customerSourceList.size(); i++) {
                customerSourceKey[i] = customerSourceList.get(i).getMapKey();
                customerSourceValue[i] = customerSourceList.get(i).getMapValue();
            }
            plTotalMemberTotalVo.setCustomerSourceKey(customerSourceKey);
            plTotalMemberTotalVo.setCustomerSourceValue(customerSourceValue);
        }
        //获取商铺会员排名
        List<MgtMapTotalVo> shopMemberRankList = memberMapper.getPlTotalMemberRank(mgtBasePlatformDto);
        if (shopMemberRankList != null && shopMemberRankList.size() > 0) {
            String[] shopMemberRankKey = new String[shopMemberRankList.size()];
            Integer[] shopMemberRankValue = new Integer[shopMemberRankList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopMemberRankList.size(); i++) {
                shopMemberRankKey[i] = shopMemberRankList.get(i).getMapKey();
                shopMemberRankValue[i] = shopMemberRankList.get(i).getMapValue();
            }
            plTotalMemberTotalVo.setMemberRankKey(shopMemberRankKey);
            plTotalMemberTotalVo.setMemberRankValue(shopMemberRankValue);
        }
        List<MgtMapTotalVo> memberGoodsRankList = remoteOrderService.listMemberGoodsRank(mgtBasePlatformDto).getData();
        if (memberGoodsRankList != null && memberGoodsRankList.size() > 0) {
            String[] shopMemberRankKey = new String[memberGoodsRankList.size()];
            Integer[] shopMemberRankValue = new Integer[memberGoodsRankList.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < memberGoodsRankList.size(); i++) {
                shopMemberRankKey[i] = memberGoodsRankList.get(i).getMapKey();
                shopMemberRankValue[i] = memberGoodsRankList.get(i).getMapValue();
            }
            plTotalMemberTotalVo.setGoodsRankKey(shopMemberRankKey);
            plTotalMemberTotalVo.setGoodsRankValue(shopMemberRankValue);
        }
        return plTotalMemberTotalVo;
    }
    /**
     * @description  通过shopId获取userId
     * @author  jqs
     * @date    2023/6/21 17:11
     * @param shopIdList
     * @return  List<Long>
     */
    @Override
    public List<Long> listUserIdByShopId(List<Long> shopIdList){
        return memberMapper.listUserIdByShopId(shopIdList);
    }
    /**
     * @description  通过shopId获取user统计
     * @author  jqs
     * @date    2023/6/21 17:19
     * @param shopIdList
     * @return  MgtShopTotalMemberVo
     */
    @Override
    public MgtShopTotalMemberVo getUserTotalByShopId(List<Long> shopIdList){
        MgtShopTotalMemberVo mgtShopTotalMemberVo = new MgtShopTotalMemberVo();
        MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto();
        mgtBasePlatformDto.setShopIdList(shopIdList);
        MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto);
        mgtShopTotalMemberVo.setManTotal(mgtAgeTotalVo.getManTotal());
        mgtShopTotalMemberVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal());
        // 年龄段数组
        String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"};
        // 不同年龄段的会员数数组
        Integer[] ageValue = {mgtAgeTotalVo.getTenAge(), mgtAgeTotalVo.getTwentyAge(), mgtAgeTotalVo.getThirtyAge(), mgtAgeTotalVo.getFortyAge(), mgtAgeTotalVo.getFiftyAge()};
        // 设置年龄段数组和不同年龄段的会员数数组
        mgtShopTotalMemberVo.setAgeKey(ageKey);
        mgtShopTotalMemberVo.setAgeValue(ageValue);
        return mgtShopTotalMemberVo;
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
@@ -6,10 +6,7 @@
import com.ruoyi.member.domain.vo.*;
import com.ruoyi.system.api.domain.dto.*;
import com.ruoyi.system.api.domain.poji.member.Member;
import com.ruoyi.system.api.domain.vo.AppMiniRegisterVo;
import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
import com.ruoyi.system.api.domain.vo.MgtSimpleMemberVo;
import com.ruoyi.system.api.domain.vo.MgtUserIdByKeywordVo;
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.model.AppMiniLoginDto;
import com.ruoyi.system.api.model.AppMiniLoginVo;
@@ -235,7 +232,7 @@
    MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto);
    /**
     * @description
     * @description  过滤会员年龄
     * @author  jqs
     * @date    2023/6/20 11:49
     * @param mgtActivityAgeDto
@@ -243,5 +240,30 @@
     */
    List<Long> listUserIdByAge(MgtActivityAgeDto mgtActivityAgeDto);
    /**
     * @description  会员人数统计
     * @author  jqs
     * @date    2023/6/21 10:59
     * @param mgtBasePlatformDto
     * @return  MgtPlTotalMemberTotalVo
     */
    MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  通过shopId获取userId
     * @author  jqs
     * @date    2023/6/21 17:11
     * @param shopIdList
     * @return  List<Long>
     */
    List<Long> listUserIdByShopId(List<Long> shopIdList);
    /**
     * @description  通过shopId获取user统计
     * @author  jqs
     * @date    2023/6/21 17:19
     * @param shopIdList
     * @return  MgtShopTotalMemberVo
     */
    MgtShopTotalMemberVo getUserTotalByShopId(List<Long> shopIdList);
}
ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
@@ -239,7 +239,7 @@
            ELSE '审核中'
            END auditStatus
        FROM t_coupon tc
        WHERE del_flag = 0
        WHERE tc.del_flag = 0
        <if test="param.auditStatus!=null and param.auditStatus!=''">
            AND tc.audit_status = #{param.auditStatus}
        </if>
ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponRelUserMapper.xml
@@ -72,6 +72,6 @@
        FROM
            t_coupon_rel_user tcru
                INNER JOIN t_member tm ON tm.user_id = tcru.user_id
        WHERE del_flag = 0 AND tcru.coupon_id = #{couponId}
        WHERE tm.del_flag = 0 AND tcru.coupon_id = #{couponId}
    </select>
</mapper>
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -286,9 +286,9 @@
    <select id="listIdBySendType" resultType="java.lang.Long">
        SELECT
            user_id
        FROM t_member
        WHERE del_flag = 0
        tm.user_id
        FROM t_member tm
        WHERE tm.del_flag = 0
        <if test="sendType != null and sendType == 3">
            AND tm.binding_flag = 1
        </if>
@@ -381,7 +381,7 @@
        </if>
    </select>
    <select id="getTotalMemberTotalNurse" resultType="com.ruoyi.member.domain.vo.MgtMapTotalVo">
    <select id="getTotalMemberTotalNurse" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT member_nurse mapKey, COUNT(*) mapValue
        FROM (
            SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(member_nurse, ',', numbers.n), ',', -1) member_nurse
@@ -399,10 +399,9 @@
            ) x
        WHERE member_nurse != ''
        GROUP BY member_nurse
        ORDER BY count DESC;
    </select>
    <select id="getTotalMemberTotalGoodsType" resultType="com.ruoyi.member.domain.vo.MgtMapTotalVo">
    <select id="getTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT goods_type mapKey, COUNT(*) mapValue
        FROM (
        SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(goods_type, ',', numbers.n), ',', -1) goods_type
@@ -420,7 +419,6 @@
        ) x
        WHERE goods_type != ''
        GROUP BY goods_type
        ORDER BY count DESC;
    </select>
    <select id="getTotalMemberTotalActiveness" resultType="java.lang.Integer">
@@ -428,9 +426,9 @@
            COUNT(tm.member_id)
        FROM t_member tm
        LEFT JOIN t_member_total tmt ON tm.member_id = tmt.member_id
        WHERE del_Flag = 0
        WHERE tm.del_Flag = 0
        <if test="shopId != null and shopId != ''">
            AND relation_shop_id = #{shopId}
            AND tm.relation_shop_id = #{shopId}
        </if>
        <if test="actStartDate != null and actStartDate != ''">
            AND tmt.last_pay_time &gt;= #{actStartDate}
@@ -440,11 +438,11 @@
        </if>
    </select>
    <select id="getTotalMemberRankPay" resultType="com.ruoyi.member.domain.vo.MgtMapTotalVo">
    <select id="getTotalMemberRankPay" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT
        tm.nick_name mapKey,
        tmt.total_pay_count mapValue
        FROM t_member tm WHERE del_flag = 0
        FROM t_member tm WHERE tm.del_flag = 0
        INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id
        <if test="param.shopId != null and param.shopId != ''">
            AND tm.relation_shop_id = #{param.shopId}
@@ -455,14 +453,14 @@
        <if test="param.endDate!=null and param.endDate!=''">
            AND tm.create_time &lt;= #{param.endDate}
        </if>
        ORDER BY tmt.total_pay_count DESC LIMIT 10
        ORDER BY tmt.total_pay_count DESC LIMIT 15
    </select>
    <select id="getTotalMemberRankCustomerSource" resultType="com.ruoyi.member.domain.vo.MgtMapTotalVo">
    <select id="getTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT
        tm.customer_source mapKey,
        SUM(tm.customer_source) mapValue
        FROM t_member tm WHERE del_flag = 0
        COUNT(tm.user_id) mapValue
        FROM t_member tm WHERE tm.del_flag = 0
        <if test="param.shopId != null and param.shopId != ''">
            AND tm.relation_shop_id = #{param.shopId}
        </if>
@@ -473,7 +471,7 @@
            AND tm.create_time &lt;= #{param.endDate}
        </if>
        GROUP BY tm.customer_source
        ORDER BY SUM(tm.customer_source) DESC LIMIT 10
        ORDER BY COUNT(tm.user_id) DESC LIMIT 15
    </select>
    <select id="listUserIdByAge" resultType="java.lang.Long">
@@ -497,11 +495,183 @@
        </if>
        <if test="param.userIds != null">
            AND user_id IN
            <foreach collection="list" item="item" open="(" separator="," close=")">
                #{param.userIds}
            <foreach collection="param.userIds" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
    </select>
    <select id="getPlTotalMemberTotal" resultType="com.ruoyi.system.api.domain.vo.MgtPlTotalMemberTotalVo">
        SELECT
        COUNT(*) AS memberTotal,
        COUNT(CASE WHEN DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) THEN 1 END) AS memberYesterday,
        COUNT(CASE WHEN create_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE() THEN 1 END) AS memberSeven
        FROM t_member WHERE del_flag = 0 AND binding_flag = 1
    </select>
    <select id="getPlTotalMemberTotalAge" resultType="com.ruoyi.member.domain.vo.MgtAgeTotalVo">
        SELECT
        SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END) manTotal,
        SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END) womenTotal,
        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END) AS tenAge,
        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END) AS twentyAge,
        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS ThirtyAge,
        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS fortyAge,
        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) &gt;= 51 THEN 1 ELSE 0 END) AS fiftyAge
        FROM t_member WHERE del_flag = 0 AND binding_flag = 1
        <if test="param.shopIdList != null and param.shopIdList != ''">
            AND relation_shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND create_time &lt;= #{param.endDate}
        </if>
    </select>
    <select id="getPlTotalMemberTotalNurse" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT member_nurse mapKey, COUNT(*) mapValue
        FROM (
        SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(member_nurse, ',', numbers.n), ',', -1) member_nurse
        FROM (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10) numbers
        INNER JOIN t_member ON CHAR_LENGTH(member_nurse) - CHAR_LENGTH(REPLACE(member_nurse, ',', '')) >= numbers.n - 1
        <if test="param.shopIdList != null and param.shopIdList != ''">
            AND relation_shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND create_time &lt;= #{param.endDate}
        </if>
        ) x
        WHERE member_nurse != ''
        GROUP BY member_nurse
    </select>
    <select id="getPlTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT goods_type mapKey, COUNT(*) mapValue
        FROM (
        SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(goods_type, ',', numbers.n), ',', -1) goods_type
        FROM (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) numbers
        INNER JOIN t_member ON CHAR_LENGTH(goods_type) - CHAR_LENGTH(REPLACE(goods_type, ',', '')) >= numbers.n - 1
        <if test="param.shopIdList != null and param.shopIdList != ''">
            AND relation_shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND create_time &lt;= #{param.endDate}
        </if>
        ) x
        WHERE goods_type != ''
        GROUP BY goods_type
    </select>
    <select id="getPlTotalMemberTotalActiveness" resultType="java.lang.Integer">
        SELECT
        COUNT(tm.member_id)
        FROM t_member tm
        INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id
        WHERE tm.del_Flag = 0
        <if test="shopIdList != null and shopIdList != ''">
            AND tm.relation_shop_id IN
            <foreach collection="shopIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="actStartDate != null and actStartDate != ''">
            AND tmt.last_pay_time &gt;= #{actStartDate}
        </if>
        <if test="actEndDate != null and actEndDate != ''">
            AND tmt.last_pay_time &lt;= #{actEndDate}
        </if>
    </select>
    <select id="getPlTotalMemberRankPay" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT
        tm.nick_name mapKey,
        tmt.total_pay_count mapValue
        FROM t_member tm WHERE del_flag = 0
        INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id
        <if test="param.shopIdList != null and shopIdList != ''">
            AND tm.relation_shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND tm.create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND tm.create_time &lt;= #{param.endDate}
        </if>
        ORDER BY tmt.total_pay_count DESC LIMIT 15
    </select>
    <select id="getTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT
        tm.customer_source mapKey,
        COUNT(tm.user_id) mapValue
        FROM t_member tm WHERE tm.del_flag = 0
        <if test="shopIdList != null and shopIdList != ''">
            AND tm.relation_shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND tm.create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND tm.create_time &lt;= #{param.endDate}
        </if>
        GROUP BY tm.customer_source
        ORDER BY COUNT(tm.user_id) DESC LIMIT 15
    </select>
    <select id="getPlTotalMemberRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT
        tm.relation_shop_name mapKey,
        COUNT(tm.user_id) mapValue
        FROM t_member tm WHERE tm.del_flag = 0
        <if test="shopIdList != null and shopIdList != ''">
            AND tm.relation_shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND tm.create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND tm.create_time &lt;= #{param.endDate}
        </if>
        GROUP BY tm.relation_shop_name
        ORDER BY COUNT(tm.user_id) DESC LIMIT 15
    </select>
    <select id="listUserIdByShopId" resultType="java.lang.Long">
        SELECT user_id
        FROM t_member
        WHERE del_flag = 0
        <if test="param.userIds != null">
            AND relation_shop_id IN
            <foreach collection="shopIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
    </select>
</mapper>
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml
@@ -42,7 +42,7 @@
        FROM
            t_member_suggest tms
        INNER JOIN t_member tm ON tms.create_user_id = tm.user_id
        WHERE del_flag = 0
        WHERE tms.del_flag = 0
        <if test="param.keyword!=null and param.keyword !=''">
            AND (tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.nick_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tms.replay_user_name LIKE CONCAT('%',#{param.keyword},'%') OR tms.shop_replay_user_name LIKE CONCAT('%',#{param.keyword},'%'))
        </if>
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java
@@ -2,15 +2,18 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.order.service.order.OrderService;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import com.ruoyi.system.api.domain.vo.AppOrderTotalVo;
import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * @author jqs34
@@ -58,4 +61,16 @@
        return R.ok(mgtBulletinBoardVo);
    }
    /**
     * @description
     * @author  jqs
     * @date    2023/6/21 15:27
     * @param mgtBasePlatformDto
     * @return  List<MgtMapTotalVo>
     */
    @PostMapping("/listMemberGoodsRank")
    public R<List<MgtMapTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto){
        List<MgtMapTotalVo> memberGoodsRankList = orderService.listMemberGoodsRank(mgtBasePlatformDto);
        return R.ok(memberGoodsRankList);
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
@@ -33,7 +33,7 @@
    private OrderService orderService;
    @RequestMapping(value = "/getTotalOrderTotal", method = RequestMethod.POST)
    @ApiOperation(value = "获取订单统计")
    @ApiOperation(value = "获取商户订单统计")
    public R<MgtTotalOrderTotalVo> getTotalOrderTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) {
        Long userId = SecurityUtils.getUserId();
        mgtBaseShopDto.setUserId(userId);
@@ -42,7 +42,7 @@
    }
    @RequestMapping(value = "/getTotalActivityTotal", method = RequestMethod.POST)
    @ApiOperation(value = "获取活动统计")
    @ApiOperation(value = "获取商户活动统计")
    public R<MgtTotalActivityTotalVo> getTotalActivityTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) {
        Long userId = SecurityUtils.getUserId();
        mgtBaseShopDto.setUserId(userId);
@@ -51,7 +51,7 @@
    }
    @RequestMapping(value = "/getTotalActivityAgeRank", method = RequestMethod.POST)
    @ApiOperation(value = "获取活动年龄分布")
    @ApiOperation(value = "获取商户活动年龄分布")
    public R<MgtTotalActivityTotalVo> getTotalActivityAgeRank(@RequestBody MgtActivityAgeDto mgtActivityAgeDto) {
        Long userId = SecurityUtils.getUserId();
        mgtActivityAgeDto.setUserId(userId);
@@ -60,7 +60,7 @@
    }
    @RequestMapping(value = "/getTotalDataTotal", method = RequestMethod.POST)
    @ApiOperation(value = "获取数据统计")
    @ApiOperation(value = "获取商户数据统计")
    public R<MgtTotalDataTotalVo> getTotalDataTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) {
        Long userId = SecurityUtils.getUserId();
        mgtBaseShopDto.setUserId(userId);
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMapTotalPlusVo.java
File was renamed from ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMapTotalVo.java
@@ -13,7 +13,7 @@
 * @Version 1.0
 */
@Data
public class MgtMapTotalVo {
public class MgtMapTotalPlusVo {
    @ApiModelProperty(value = "mapKey")
    private String mapKey;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -6,8 +6,10 @@
import com.ruoyi.order.domain.pojo.order.Order;
import com.ruoyi.order.domain.vo.*;
import com.ruoyi.system.api.domain.dto.MgtActivityAgeDto;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import com.ruoyi.system.api.domain.dto.MgtBaseShopDto;
import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -164,7 +166,7 @@
    * @author jqs34
    * @date 2023/6/19 22:48
    */
    List<MgtMapTotalVo> listTotalOrderTotal(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    List<MgtMapTotalPlusVo> listTotalOrderTotal(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    /**
     * @description listTotalOrderTotalGoodsType
@@ -173,7 +175,7 @@
     * @author jqs34
     * @date 2023/6/19 22:48
     */
    List<MgtMapTotalVo> listTotalOrderTotalGoodsType(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    List<MgtMapTotalPlusVo> listTotalOrderTotalGoodsType(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    /**
@@ -183,7 +185,7 @@
     * @author jqs34
     * @date 2023/6/19 22:48
     */
    List<MgtMapTotalVo> listTotalOrderTotalGoodsRank(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    List<MgtMapTotalPlusVo> listTotalOrderTotalGoodsRank(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    /**
     * @description listTotalOrderTotalOrderFrom
@@ -192,7 +194,7 @@
     * @author jqs34
     * @date 2023/6/19 22:48
     */
    List<MgtMapTotalVo> listTotalOrderTotalOrderFrom(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    List<MgtMapTotalPlusVo> listTotalOrderTotalOrderFrom(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    /**
@@ -212,7 +214,7 @@
     * @author jqs34
     * @date 2023/6/19 22:48
     */
    List<MgtMapTotalVo> listTotalActivityTotalGoodsType(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    List<MgtMapTotalPlusVo> listTotalActivityTotalGoodsType(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    /**
@@ -222,7 +224,7 @@
     * @author jqs34
     * @date 2023/6/19 22:48
     */
    List<MgtMapTotalVo> listTotalActivityTotal(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    List<MgtMapTotalPlusVo> listTotalActivityTotal(@Param("param") MgtBaseShopDto mgtBaseShopDto);
    /**
     * @description  
@@ -268,4 +270,13 @@
     * @return  Integer
     */
    Integer getReturnedPerson(@Param("param")MgtBaseShopDto mgtBaseShopDto);
    /**
     * @description
     * @author  jqs
     * @date    2023/6/21 15:27
     * @param mgtBasePlatformDto
     * @return  List<MgtMapTotalVo>
     */
    List<MgtMapTotalVo> listMemberGoodsRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -19,6 +19,7 @@
import com.ruoyi.common.security.utils.CodeFactoryUtil;
import com.ruoyi.system.api.domain.dto.*;
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
import com.ruoyi.system.api.service.*;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.poji.goods.Goods;
@@ -1299,7 +1300,7 @@
    public MgtTotalOrderTotalVo getTotalOrderTotal(MgtBaseShopDto mgtBaseShopDto){
        MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getTotalOrderTotalOrderFrom(mgtBaseShopDto);
        //MgtTotalOrderTotalVo mgtTotalOrderTotalVoGoodsType = orderMapper.getTotalOrderTotalGoodsType(mgtBaseShopDto);
        List<MgtMapTotalVo> mgtMapTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto);
        List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto);
        if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) {
            String[] orderTotalKey = new String[mgtMapTotalVos.size()];
            Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()];
@@ -1314,7 +1315,7 @@
            mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue);
        }
        //获取商品分类销售数据
        List<MgtMapTotalVo> mgtMapTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto);
        List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto);
        if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
            String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()];
            Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()];
@@ -1344,7 +1345,7 @@
            mgtTotalOrderTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue);
        }
        //获取商品销售排名
        List<MgtMapTotalVo> goodsRankList = orderMapper.listTotalOrderTotalGoodsRank(mgtBaseShopDto);
        List<MgtMapTotalPlusVo> goodsRankList = orderMapper.listTotalOrderTotalGoodsRank(mgtBaseShopDto);
        if (goodsRankList != null && goodsRankList.size() > 0) {
            String[] goodsRankKey = new String[goodsRankList.size()];
            BigDecimal[] goodsRankValue = new BigDecimal[goodsRankList.size()];
@@ -1357,7 +1358,7 @@
            mgtTotalOrderTotalVo.setGoodsRankValue(goodsRankValue);
        }
        //获取来源销售排名
        List<MgtMapTotalVo> orderFromList = orderMapper.listTotalOrderTotalOrderFrom(mgtBaseShopDto);
        List<MgtMapTotalPlusVo> orderFromList = orderMapper.listTotalOrderTotalOrderFrom(mgtBaseShopDto);
        if (orderFromList != null && orderFromList.size() > 0) {
            String[] orderFromKey = new String[orderFromList.size()];
            BigDecimal[] orderFromValue = new BigDecimal[orderFromList.size()];
@@ -1385,7 +1386,7 @@
        //获取基础统计
        MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto);
        //获取商品分类销售数据
        List<MgtMapTotalVo> mgtMapTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto);
        List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto);
        if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
            String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()];
            Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()];
@@ -1418,7 +1419,7 @@
            totalActivityTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue);
        }
        //获取订单分布
        List<MgtMapTotalVo> mgtMapTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto);
        List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto);
        if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) {
            String[] orderTotalKey = new String[mgtMapTotalVos.size()];
            Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()];
@@ -1469,4 +1470,16 @@
        mgtTotalDataTotalVo.setReturnedPerson(returnedPerson);
        return mgtTotalDataTotalVo;
    }
    /**
     * @description
     * @author  jqs
     * @date    2023/6/21 15:26
     * @param mgtBasePlatformDto
     * @return  List<MgtMapTotalVo>
     */
    @Override
    public List<MgtMapTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto){
        return listMemberGoodsRank(mgtBasePlatformDto);
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -7,10 +7,12 @@
import com.ruoyi.order.domain.vo.*;
import com.ruoyi.system.api.domain.dto.AppBaseGetDto;
import com.ruoyi.system.api.domain.dto.MgtActivityAgeDto;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import com.ruoyi.system.api.domain.dto.MgtBaseShopDto;
import com.ruoyi.system.api.domain.vo.AppOrderTotalVo;
import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
import java.util.List;
@@ -224,4 +226,16 @@
     * @return  MgtTotalDataTotalVo
     */
    MgtTotalDataTotalVo getTotalDataTotal(MgtBaseShopDto mgtBaseShopDto);
    /**
     * @description
     * @author  jqs
     * @date    2023/6/21 15:27
     * @param mgtBasePlatformDto
     * @return  List<MgtMapTotalVo>
     */
    List<MgtMapTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto);
}
ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -661,7 +661,7 @@
        </if>
    </select>
    <select id="listTotalOrderTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalVo">
    <select id="listTotalOrderTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
        SELECT
            DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
            COUNT(order_id) AS mapValueFirst,
@@ -680,7 +680,7 @@
            order_date ASC
    </select>
    <select id="listTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalVo">
    <select id="listTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
        SELECT
        tog.goods_type mapKey,
        COUNT(DISTINCT toc.order_id) AS mapValueFirst,
@@ -695,7 +695,7 @@
        GROUP BY tog.goods_type
    </select>
    <select id="listTotalOrderTotalGoodsRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalVo">
    <select id="listTotalOrderTotalGoodsRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
        SELECT
        tog.goods_name mapKey,
        IFNULL(SUM(tog.goods_total_money),0) mapValueSecond
@@ -715,7 +715,7 @@
        ORDER BY SUM(tog.goods_total_money) DESC LIMIT 10
    </select>
    <select id="listTotalOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MgtMapTotalVo">
    <select id="listTotalOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
        SELECT
        CASE toc.order_from
        WHEN 1 THEN "商城订单"
@@ -755,7 +755,7 @@
        </if>
    </select>
    <select id="listTotalActivityTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalVo">
    <select id="listTotalActivityTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
        SELECT
        tog.goods_type mapKey,
        COUNT(DISTINCT toc.order_id) AS mapValueFirst,
@@ -771,7 +771,7 @@
        GROUP BY tog.goods_type
    </select>
    <select id="listTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalVo">
    <select id="listTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
        SELECT
        DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
        COUNT(DISTINCT toc.user_id) AS mapValueFirst
@@ -785,8 +785,8 @@
        </if>
        <if test="param.userIds != null">
            AND user_id IN
            <foreach collection="list" item="item" open="(" separator="," close=")">
                #{param.userIds}
            <foreach collection="param.userIds" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        GROUP BY
@@ -873,4 +873,27 @@
        WHERE t1.del_flag = 0
        HAVING DATEDIFF(t2.pay_time, t1.pay_time) &gt; 30) AS temp
    </select>
    <select id="listMemberGoodsRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT
        tog.goods_name mapKey,
        COUNT(DISTINCT toc.userId) mapValue
        FROM t_order toc
        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
        WHERE toc.del_flag = 0
        <if test="shopIdList != null and shopIdList != ''">
            AND toc.shop_id IN
            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND toc.create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND toc.create_time &lt;= #{param.endDate}
        </if>
        GROUP BY tog.goods_name
        ORDER BY COUNT(DISTINCT toc.userId) DESC LIMIT 15
    </select>
</mapper>
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
@@ -127,6 +127,13 @@
        return R.ok();
    }
    /**
     * @description  通过区域代码获取shopId
     * @author  jqs
     * @date    2023/6/21 15:50
     * @param mgtShopIdByCodeDto
     * @return  R<MgtShopIdByCodeVo>
     */
    @PostMapping("/getShopIdByCode")
    public R<MgtShopIdByCodeVo> getShopIdByCode(@RequestBody MgtShopIdByCodeDto mgtShopIdByCodeDto)
    {
@@ -134,6 +141,13 @@
        return R.ok(mgtShopIdByCodeVo);
    }
    /**
     * @description  通过id获取商户简易信息list
     * @author  jqs
     * @date    2023/6/21 15:50
     * @param mgtBaseBathDto
     * @return  R<List<MgtSimpleShopVo>>
     */
    @PostMapping("/listShopSimpleVoByIds")
    public R<List<MgtSimpleShopVo>> listShopSimpleVoByIds(@RequestBody MgtBaseBathDto mgtBaseBathDto)
    {
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
@@ -141,7 +141,7 @@
    }
    @RequestMapping(value = "/mgtReplayShopSuggest", method = RequestMethod.POST)
    @ApiOperation(value = "平台回复会员建议")
    @ApiOperation(value = "平台回复建议")
    public R mgtReplayShopSuggest(@RequestBody MgtReplayShopSuggestDto mgtReplayShopSuggestDto) {
        Long userId = SecurityUtils.getUserId();
        mgtReplayShopSuggestDto.setUserId(userId);
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java
New file
@@ -0,0 +1,42 @@
package com.ruoyi.shop.controller.management;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.shop.domain.vo.MgtPlTotalShopTotalVo;
import com.ruoyi.shop.service.shop.ShopService;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
 * @ClassName MgtTotalController
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/21 15:48
 * @Version 1.0
 */
@Api(value = "管理台合作商统计相关接口", tags = "管理台合作商统计相关接口", description = "管理台合作商统计相关接口")
@RestController
@RequestMapping("/mgt/total")
public class MgtTotalController {
    @Resource
    private ShopService shopService;
    @RequestMapping(value = "/getPlTotalShopTotal", method = RequestMethod.POST)
    @ApiOperation(value = "获取平台商户统计")
    public R<MgtPlTotalShopTotalVo> getPlTotalShopTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) {
        Long userId = SecurityUtils.getUserId();
        mgtBasePlatformDto.setUserId(userId);
        MgtPlTotalShopTotalVo totalShopTotalVo = shopService.getPlTotalShopTotal(mgtBasePlatformDto);
        return R.ok(totalShopTotalVo);
    }
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtPlTotalShopTotalVo.java
New file
@@ -0,0 +1,72 @@
package com.ruoyi.shop.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName MgtTotalShopTotalVo
 * @Description TODO
 * @Author jqs
 * @Date 2023/6/21 16:12
 * @Version 1.0
 */
@Data
public class MgtPlTotalShopTotalVo {
    @ApiModelProperty(value = "合作商总数")
    private Integer shopTotal;
    @ApiModelProperty(value = "代理商数")
    private Integer agencyTotal;
    @ApiModelProperty(value = "经销商数")
    private Integer dealerTotal;
    @ApiModelProperty(value = "终止合作数")
    private Integer terminateTotal;
    @ApiModelProperty(value = "新增签约")
    private Integer signTotal;
    @ApiModelProperty(value = "男人")
    private Integer manTotal;
    @ApiModelProperty(value = "女人")
    private Integer womenTotal;
    @ApiModelProperty(value = "会员年龄key")
    private String[] ageKey;
    @ApiModelProperty(value = "会员年龄value")
    private Integer[] ageValue;
    @ApiModelProperty(value = "合作商类型key")
    private String[] shopTypeKey;
    @ApiModelProperty(value = "合作商类型value")
    private Integer[] shopTypeValue;
    @ApiModelProperty(value = "区域商户排行key")
    private String[] areaRankKey;
    @ApiModelProperty(value = "区域商户排行value")
    private Integer[] areaRankValue;
    @ApiModelProperty(value = "合作商状态key")
    private String[] shopStatusKey;
    @ApiModelProperty(value = "合作商状态value")
    private Integer[] shopStatusValue;
    @ApiModelProperty(value = "合作商营业额key")
    private String[] shopSalesRankKey;
    @ApiModelProperty(value = "合作商营业额value")
    private Integer[] shopSalesRankValue;
    @ApiModelProperty(value = "合作商推荐key")
    private String[] shopRecommendKey;
    @ApiModelProperty(value = "合作商推荐value")
    private Integer[] shopRecommendValue;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java
@@ -53,4 +53,7 @@
    @ApiModelProperty(value = "平台响应时间")
    private String responseTime;
    @ApiModelProperty(value = "建议标签")
    private String suggestTags;
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java
@@ -4,9 +4,11 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.shop.domain.dto.*;
import com.ruoyi.shop.domain.vo.*;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
import com.ruoyi.system.api.domain.poji.shop.Shop;
import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
import org.apache.ibatis.annotations.Param;
@@ -119,4 +121,49 @@
    * @date 2023/6/18 17:01
    */
    MgtBulletinBoardVo shopTotal();
    /**
     * @description  获取平台商户统计
     * @author  jqs
     * @date    2023/6/21 16:25
     * @return  MgtPlTotalShopTotalVo
     */
    MgtPlTotalShopTotalVo getPlTotalShopTotal();
    /**
     * @description  获取统计关联shopId
     * @author  jqs
     * @date    2023/6/21 16:45
     * @param mgtBasePlatformDto
     * @return  List<Long>
     */
    List<Long> listShopIdByTotal(MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  商户类型统计
     * @author  jqs
     * @date    2023/6/21 17:40
     * @param
     * @return  List<MgtMapTotalVo>
     */
    List<MgtMapTotalVo> listShopTypeTotal(MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  商户类型统计
     * @author  jqs
     * @date    2023/6/21 17:40
     * @param
     * @return  List<MgtMapTotalVo>
     */
    List<MgtMapTotalVo> listShopStatusTotal(MgtBasePlatformDto mgtBasePlatformDto);
    /**
     * @description  商户类型统计
     * @author  jqs
     * @date    2023/6/21 17:40
     * @param
     * @return  List<MgtMapTotalVo>
     */
    List<MgtMapTotalVo> listShopAreaRank(MgtBasePlatformDto mgtBasePlatformDto);
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -18,15 +18,14 @@
import com.ruoyi.shop.service.task.ShopFileService;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.dto.AppMemberBindingDto;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
import com.ruoyi.system.api.domain.dto.MgtUserIdByDept;
import com.ruoyi.system.api.domain.poji.config.SysTag;
import com.ruoyi.system.api.domain.poji.member.Member;
import com.ruoyi.system.api.domain.poji.shop.Shop;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo;
import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.service.RemoteConfigService;
import com.ruoyi.system.api.service.RemoteMemberService;
import com.ruoyi.system.api.service.RemoteOrderService;
@@ -37,10 +36,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -663,4 +659,86 @@
        shopAuthentication.setAuditStatus(3);
        shopAuthenticationService.saveOrUpdate(shopAuthentication);
    }
    /**
     * @description  获取平台商户统计
     * @author  jqs
     * @date    2023/6/21 16:25
     * @param mgtBasePlatformDto
     * @return  MgtPlTotalShopTotalVo
     */
    @Override
    public MgtPlTotalShopTotalVo getPlTotalShopTotal(MgtBasePlatformDto mgtBasePlatformDto){
        //获取需要关联的用户id集合
        if(mgtBasePlatformDto.getDeptId()!=null){
            List<Long> userIdList = new ArrayList<>();
            if(mgtBasePlatformDto.getUserId()!=null){
                userIdList.add(mgtBasePlatformDto.getUserId());
            }else{
                MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept();
                mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId());
                mgtUserIdByDept = configService.getUserIdByDept(mgtUserIdByDept).getData();
                userIdList = mgtUserIdByDept.getUserIdList();
            }
            if(!userIdList.isEmpty()){
                mgtBasePlatformDto.setUserIdList(userIdList);
            }
        }
        MgtPlTotalShopTotalVo plTotalShopTotalVo = shopMapper.getPlTotalShopTotal();
        plTotalShopTotalVo.setSignTotal(0);
        List<Long> shopIdList = shopMapper.listShopIdByTotal(mgtBasePlatformDto);
        if(!shopIdList.isEmpty()){
            MgtShopTotalMemberVo shopTotalMemberVo = remoteMemberService.getUserTotalByShopId(shopIdList).getData();
            plTotalShopTotalVo.setManTotal(shopTotalMemberVo.getManTotal());
            plTotalShopTotalVo.setWomenTotal(shopTotalMemberVo.getWomenTotal());
            plTotalShopTotalVo.setAgeKey(shopTotalMemberVo.getAgeKey());
            plTotalShopTotalVo.setAgeValue(shopTotalMemberVo.getAgeValue());
        }
        //获取商户类型
        List<MgtMapTotalVo> shopTypeTotal = shopMapper.listShopTypeTotal(mgtBasePlatformDto);
        if (shopTypeTotal != null && shopTypeTotal.size() > 0) {
            String[] shopTypeKey = new String[shopTypeTotal.size()];
            Integer[] shopTypeValue = new Integer[shopTypeTotal.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopTypeTotal.size(); i++) {
                if(shopTypeTotal.get(i).getMapKey().equals("1")){
                    shopTypeKey[i] = "经销商";
                }else if(shopTypeTotal.get(i).getMapKey().equals("2")){
                    shopTypeKey[i] = "代理商";
                }
                shopTypeValue[i] = shopTypeTotal.get(i).getMapValue();
            }
            plTotalShopTotalVo.setShopTypeKey(shopTypeKey);
            plTotalShopTotalVo.setShopTypeValue(shopTypeValue);
        }
        //获取商户状态
        List<MgtMapTotalVo> shopStatusTotal = shopMapper.listShopTypeTotal(mgtBasePlatformDto);
        if (shopStatusTotal != null && shopStatusTotal.size() > 0) {
            String[] shopStatusKey = new String[shopStatusTotal.size()];
            Integer[] shopStatusValue = new Integer[shopStatusTotal.size()];
            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
            for (int i = 0; i < shopStatusTotal.size(); i++) {
                if(shopStatusTotal.get(i).getMapKey().equals("1")){
                    shopStatusKey[i] = "经销商";
                }else if(shopStatusTotal.get(i).getMapKey().equals("2")){
                    shopStatusKey[i] = "代理商";
                }
                shopStatusValue[i] = shopStatusTotal.get(i).getMapValue();
            }
            plTotalShopTotalVo.setShopStatusKey(shopStatusKey);
            plTotalShopTotalVo.setShopStatusValue(shopStatusValue);
        }
        /*plTotalShopTotalVo.setAreaRankKey();
        plTotalShopTotalVo.setAreaRankValue();
        plTotalShopTotalVo.setShopSalesRankKey();
        plTotalShopTotalVo.setShopSalesRankValue();
        plTotalShopTotalVo.setShopRecommendKey();
        plTotalShopTotalVo.setShopRecommendValue();*/
        return plTotalShopTotalVo;
    }
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.shop.domain.dto.*;
import com.ruoyi.shop.domain.vo.*;
import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
import com.ruoyi.system.api.domain.poji.member.Member;
import com.ruoyi.system.api.domain.poji.shop.Shop;
@@ -187,4 +188,13 @@
     * @return  void
     */
    void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto);
    /**
     * @description  获取平台商户统计
     * @author  jqs
     * @date    2023/6/21 16:25
     * @param mgtBasePlatformDto
     * @return  MgtPlTotalShopTotalVo
     */
    MgtPlTotalShopTotalVo getPlTotalShopTotal(MgtBasePlatformDto mgtBasePlatformDto);
}
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -446,9 +446,9 @@
    <select id="getShopIdByCode" resultType="java.lang.Long">
        SELECT
        shop_id
        FROM t_shop
        WHERE del_flag = 0
        ts.shop_id
        FROM t_shop ts
        WHERE ts.del_flag = 0
        <if test="param.shopName!=null and param.shopName!=''">
            AND ts.shop_name LIKE CONCAT('%',#{param.shopName},'%')
        </if>
@@ -491,8 +491,8 @@
        shop_name
        FROM t_shop
        WHERE del_flag = 0 AND shop_city_code IN
        <foreach collection="list" item="item" open="(" separator="," close=")">
            #{param.cityCodeList}
        <foreach collection="param.cityCodeList" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>
@@ -547,4 +547,133 @@
        WHERE del_flag = 0
    </select>
    <select id="getPlTotalShopTotal" resultType="com.ruoyi.shop.domain.vo.MgtPlTotalShopTotalVo">
        SELECT
            COUNT(shop_id) AS shopTotal,
            SUM(CASE WHEN shopType = 1 THEN 1 ELSE 0 END) AS dealerTotal,
            SUM(CASE WHEN shopType = 2 THEN 1 ELSE 0 END) AS agencyTotal,
            SUM(CASE WHEN cooperative_flag = 0 THEN 1 ELSE 0 END) AS terminateTotal
        FROM t_shop
        WHERE del_flag = 0
    </select>
    <select id="listShopIdByTotal" resultType="java.lang.Long">
        SELECT
        ts.shop_id
        FROM t_shop ts
        WHERE ts.del_flag = 0
        <if test="param.userIdList!=null and param.userIdList!=''">
            AND ts.belong_user_id IN
            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="param.shopProvinceCode!=null and param.shopProvinceCode!=''">
            AND ts.shop_province_code = #{param.shopProvinceCode}
        </if>
        <if test="param.shopCityCode!=null and param.shopCityCode!=''">
            AND ts.shop_city_code = #{param.shopCityCode}
        </if>
        <if test="param.shopAreaCode!=null and param.shopAreaCode!=''">
            AND ts.shop_area_code = #{param.shopAreaCode}
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND ts.create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND ts.create_time &lt;= #{param.endDate}
        </if>
    </select>
    <select id="listShopTypeTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT
        ts.shop_type mapKey,
        COUNT(ts.shop_id) mapValue
        FROM t_shop ts
        WHERE ts.del_flag = 0
        <if test="param.userIdList!=null and param.userIdList!=''">
            AND ts.belong_user_id IN
            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="param.shopProvinceCode!=null and param.shopProvinceCode!=''">
            AND ts.shop_province_code = #{param.shopProvinceCode}
        </if>
        <if test="param.shopCityCode!=null and param.shopCityCode!=''">
            AND ts.shop_city_code = #{param.shopCityCode}
        </if>
        <if test="param.shopAreaCode!=null and param.shopAreaCode!=''">
            AND ts.shop_area_code = #{param.shopAreaCode}
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND ts.create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND ts.create_time &lt;= #{param.endDate}
        </if>
        GROUP BY ts.shop_type
    </select>
    <select id="listShopStatusTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT
        ts.shop_custom_status mapKey,
        COUNT(ts.shop_id) mapValue
        FROM t_shop ts
        WHERE ts.del_flag = 0
        <if test="param.userIdList!=null and param.userIdList!=''">
            AND ts.belong_user_id IN
            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="param.shopProvinceCode!=null and param.shopProvinceCode!=''">
            AND ts.shop_province_code = #{param.shopProvinceCode}
        </if>
        <if test="param.shopCityCode!=null and param.shopCityCode!=''">
            AND ts.shop_city_code = #{param.shopCityCode}
        </if>
        <if test="param.shopAreaCode!=null and param.shopAreaCode!=''">
            AND ts.shop_area_code = #{param.shopAreaCode}
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND ts.create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND ts.create_time &lt;= #{param.endDate}
        </if>
        GROUP BY ts.shop_custom_status
    </select>
    <select id="listShopAreaRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
        SELECT
        ts.shop_city_code mapKey,
        COUNT(ts.shop_id) mapValue
        FROM t_shop ts
        WHERE ts.del_flag = 0
        <if test="param.userIdList!=null and param.userIdList!=''">
            AND ts.belong_user_id IN
            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="param.shopProvinceCode!=null and param.shopProvinceCode!=''">
            AND ts.shop_province_code = #{param.shopProvinceCode}
        </if>
        <if test="param.shopCityCode!=null and param.shopCityCode!=''">
            AND ts.shop_city_code = #{param.shopCityCode}
        </if>
        <if test="param.shopAreaCode!=null and param.shopAreaCode!=''">
            AND ts.shop_area_code = #{param.shopAreaCode}
        </if>
        <if test="param.startDate!=null and param.startDate!=''">
            AND ts.create_time &gt;= #{param.startDate}
        </if>
        <if test="param.endDate!=null and param.endDate!=''">
            AND ts.create_time &lt;= #{param.endDate}
        </if>
        GROUP BY ts.shop_city_code
        ORDER BY COUNT(ts.shop_id) DESC LIMIT 15
    </select>
</mapper>
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopSuggestMapper.xml
@@ -34,8 +34,8 @@
        tss.suggest_tags suggestTags
        FROM
        t_shop_suggest tss
        INNER JOIN t_shop ts ON tss.shop_id = ts.shop_id
        WHERE del_flag = 0
        LEFT JOIN t_shop ts ON tss.shop_id = ts.shop_id
        WHERE tss.del_flag = 0
        <if test="param.keyword!=null and param.keyword !=''">
            AND (ts.shop_name LIKE CONCAT('%',#{param.keyword},'%') OR ts.shopowner_name LIKE CONCAT('%',#{param.keyword},'%') OR ts.shopowner_phone LIKE CONCAT('%',#{param.keyword},'%') OR tss.replay_user_name LIKE CONCAT('%',#{param.keyword},'%'))
        </if>
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java
@@ -1,13 +1,18 @@
package com.ruoyi.system.controller.conslole;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.dto.MgtUserIdByDept;
import com.ruoyi.system.api.domain.poji.config.Activeness;
import com.ruoyi.system.api.domain.poji.config.SysClassification;
import com.ruoyi.system.api.domain.poji.config.SysTag;
import com.ruoyi.system.api.domain.poji.config.Activeness;
import com.ruoyi.system.service.config.ActivenessService;
import com.ruoyi.system.service.config.SysClassificationService;
import com.ruoyi.system.service.config.SysTagService;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.system.service.sys.ISysUserService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@@ -32,6 +37,11 @@
    @Resource
    private SysClassificationService sysClassificationService;
    @Resource
    private ISysUserService sysUserService;
    /**
     * 获取系统标签
@@ -89,4 +99,19 @@
        Map<Long,SysClassification> sysClassificationMap = sysClassificationService.getSysClassificationList(classIds);
        return R.ok(sysClassificationMap);
    }
    /**
     * @description  获取部门用户
     * @author  jqs
     * @date    2023/6/21 16:00
     * @param userIdByDept
     * @return  R<MgtShopIdByCodeDto>
     */
    @PostMapping("/getUserIdByDept")
    public R<MgtUserIdByDept> getUserIdByDept(@RequestBody MgtUserIdByDept userIdByDept)
    {
        userIdByDept = sysUserService.getUserIdByDept(userIdByDept);
        return R.ok(userIdByDept);
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
@@ -410,7 +410,6 @@
    @RequestMapping(value = "/getBulletinBoard", method = RequestMethod.POST)
    @ApiOperation(value = "获取看板统计")
    public R<MgtBulletinBoardVo> getBulletinBoard() {
        Long userId = SecurityUtils.getUserId();
        MgtBulletinBoardVo bulletinBoard = customConfigService.getBulletinBoard();
        return R.ok(bulletinBoard);
    }
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java
@@ -50,6 +50,14 @@
        return R.ok(mgtDeptStaffListVoList);
    }
    @RequestMapping(value = "/listMgtDeptStaffByPermission", method = RequestMethod.POST)
    @ApiOperation(value = "通过权限获取部门员工列表")
    public R<List<MgtDeptStaffListVo>> listMgtDeptStaffByPermission() {
        Long userId = SecurityUtils.getUserId();
        List<MgtDeptStaffListVo> mgtDeptStaffListVoList= sysStaffService.listMgtDeptStaffByPermission(userId);
        return R.ok(mgtDeptStaffListVoList);
    }
    @RequestMapping(value = "/pageMgtStaffSuggest", method = RequestMethod.POST)
    @ApiOperation(value = "平台获取员工建议列表")
@@ -98,7 +106,7 @@
    }
    @RequestMapping(value = "/mgtDeleteStaff", method = RequestMethod.POST)
    @ApiOperation(value = "平台编辑员工")
    @ApiOperation(value = "平台删除员工")
    public R mgtStaffEdit(@RequestBody MgtBaseGetDto mgtBaseGetDto) {
        Long userId = SecurityUtils.getUserId();
        mgtBaseGetDto.setUserId(userId);
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/StaffSuggestMapper.java
@@ -1,10 +1,11 @@
package com.ruoyi.system.mapper.config;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.system.domain.dto.MgtStaffSuggestPageDto;
import com.ruoyi.system.domain.pojo.config.StaffSuggest;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.domain.vo.MgtStaffSuggestPageVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -25,7 +26,7 @@
     * @param suggestTag
     * @return  void
     */
    void deleteStaffSuggestTag(String suggestTag);
    void deleteStaffSuggestTag(@Param("suggestTag")String suggestTag);
    /**
     * @description 平台获取员工建议列表
@@ -35,5 +36,5 @@
     * @author jqs34
     * @date 2023/6/11 18:26
     */
    List<MgtStaffSuggestPageVo> pageMgtStaffSuggest(Page page, MgtStaffSuggestPageDto mgtStaffSuggestPageDto);
    List<MgtStaffSuggestPageVo> pageMgtStaffSuggest(Page page, @Param("param")MgtStaffSuggestPageDto mgtStaffSuggestPageDto);
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java
@@ -3,6 +3,7 @@
import com.ruoyi.system.domain.pojo.staff.SysStaff;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.domain.vo.MgtDeptStaffListVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -24,4 +25,14 @@
     * @return  List<MgtDeptStaffListVo>
     */
    List<MgtDeptStaffListVo> listMgtDeptStaff();
    /**
     * @description  获取部门员工列表
     * @author  jqs
     * @date    2023/6/13 10:14
     * @param
     * @return  List<MgtDeptStaffListVo>
     */
    List<MgtDeptStaffListVo> listMgtDeptStaffByDept(@Param("deptId") Long deptId,@Param("userId") Long userId);
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/sys/SysUserMapper.java
@@ -1,10 +1,11 @@
package com.ruoyi.system.mapper.sys;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.system.api.domain.dto.MgtUserIdByDept;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 用户表 数据层
@@ -125,4 +126,13 @@
     * @return 结果
     */
    public SysUser checkEmailUnique(String email);
    /**
     * @description  获取部门用户
     * @author  jqs
     * @date    2023/6/21 16:07
     * @param userIdByDept
     * @return  List<Long>
     */
    List<Long> getUserIdByDept(@Param("param")MgtUserIdByDept userIdByDept);
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java
@@ -47,6 +47,28 @@
    }
    /**
     * @description 通过权限获取部门员工列表
     * @author  jqs
     * @date    2023/6/21 10:24
     * @param userId
     * @return  List<MgtDeptStaffListVo>
     */
    @Override
    public List<MgtDeptStaffListVo>listMgtDeptStaffByPermission(Long userId){
        SysUser sysUser = sysUserService.getById(userId);
        String dataScope = sysUser.getDataScope();
        List<MgtDeptStaffListVo> deptStaffListVoList;
        if(dataScope.equals("4")){
            deptStaffListVoList = sysStaffMapper.listMgtDeptStaffByDept(sysUser.getDeptId(),null);
        }else if(dataScope.equals("5")){
            deptStaffListVoList = sysStaffMapper.listMgtDeptStaffByDept(sysUser.getDeptId(),sysUser.getUserId());
        }else{
            deptStaffListVoList = sysStaffMapper.listMgtDeptStaff();
        }
        return deptStaffListVoList;
    }
    /**
     * @description getBYUserId
     * @param userId
     * @return SysStaff
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java
@@ -1,39 +1,35 @@
package com.ruoyi.system.service.impl.sys;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.validation.Validator;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.system.api.domain.dto.AppEditUserDto;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.SpringUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.bean.BeanValidators;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.dto.AppEditUserDto;
import com.ruoyi.system.api.domain.dto.MgtUserIdByDept;
import com.ruoyi.system.api.domain.poji.sys.SysRole;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.domain.pojo.sys.SysPost;
import com.ruoyi.system.domain.pojo.sys.SysUserPost;
import com.ruoyi.system.domain.pojo.sys.SysUserRole;
import com.ruoyi.system.mapper.sys.SysPostMapper;
import com.ruoyi.system.mapper.sys.SysRoleMapper;
import com.ruoyi.system.mapper.sys.SysUserMapper;
import com.ruoyi.system.mapper.sys.SysUserPostMapper;
import com.ruoyi.system.mapper.sys.SysUserRoleMapper;
import com.ruoyi.system.mapper.sys.*;
import com.ruoyi.system.service.sys.ISysConfigService;
import com.ruoyi.system.service.sys.ISysUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.validation.Validator;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 用户 业务层处理
@@ -626,4 +622,19 @@
        }
    }
    /**
     * @description 获取部门用户
     * @author  jqs
     * @date    2023/6/21 16:00
     * @param userIdByDept
     * @return  MgtUserIdByDept
     */
    @Override
    public MgtUserIdByDept getUserIdByDept(MgtUserIdByDept userIdByDept){
        List<Long> userIdList = userMapper.getUserIdByDept(userIdByDept);
        userIdByDept.setUserIdList(userIdList);
        return userIdByDept;
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java
@@ -28,6 +28,15 @@
    List<MgtDeptStaffListVo> listMgtDeptStaff();
    /**
     * @description 通过权限获取部门员工列表
     * @author  jqs
     * @date    2023/6/21 10:25
     * @param userId
     * @return  List<MgtDeptStaffListVo>
     */
    List<MgtDeptStaffListVo>listMgtDeptStaffByPermission(Long userId);
    /**
    * @description mgtStaffEdit
    * @param mgtStaffEditDto
    * @return void
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/sys/ISysUserService.java
@@ -1,10 +1,11 @@
package com.ruoyi.system.service.sys;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.api.domain.dto.AppEditUserDto;
import com.ruoyi.system.api.domain.dto.MgtUserIdByDept;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import java.util.List;
/**
 * 用户 业务层
@@ -234,4 +235,13 @@
     * @param appEditUserDto
     */
    public void editUserInfo(AppEditUserDto appEditUserDto);
    /**
     * @description 获取部门用户
     * @author  jqs
     * @date    2023/6/21 16:00
     * @param userIdByDept
     * @return  MgtUserIdByDept
     */
    MgtUserIdByDept getUserIdByDept(MgtUserIdByDept userIdByDept);
}
ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/RecommendCooperationMapper.xml
@@ -27,7 +27,7 @@
            trc.create_time createTime
        FROM t_recommend_cooperation trc
        LEFT JOIN sys_user su ON su.user_id = trc.recommend_user_id
        WHERE del_flag = 0
        WHERE su.del_flag = '0'
        <if test="param.keyword != null and param.keyword != ''">
            AND (trc.recommended_name LIKE CONCAT('%',#{param.keyword},'%') OR trc.recommended_phone LIKE CONCAT('%',#{param.keyword},'%') OR su.nike_name LIKE CONCAT('%',#{param.keyword},'%'))
        </if>
ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/StaffSuggestMapper.xml
@@ -26,7 +26,7 @@
        t_staff_suggest tss
        INNER JOIN sys_user su ON su.user_id = tss.create_user_id
        LEFT JOIN sys_dept sd ON sd.dept_id = su.dept_id
        WHERE del_flag = 0
        WHERE tss.del_flag = 0
        <if test="param.keyword!=null and param.keyword !=''">
            AND (su.nick_name LIKE CONCAT('%',#{param.keyword},'%') OR su.phonenumber LIKE CONCAT('%',#{param.keyword},'%') OR tss.replay_user_name LIKE CONCAT('%',#{param.keyword},'%'))
        </if>
ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml
@@ -22,4 +22,18 @@
        WHERE sd.del_flag = 0 AND su.del_flag = 0
    </select>
    <select id="listMgtDeptStaffByDept" resultMap="deptStaffResultMap">
        SELECT
            sd.dept_id deptId,
            sd.dept_name deptName,
            su.user_id userId,
            su.nick_name nickName
        FROM sys_dept sd
                 LEFT JOIN sys_user su ON sd.dept_id = su.dept_id
        WHERE sd.del_flag = 0 AND su.del_flag = 0 AND sd.dept_id = #{deptId}
        <if test="userId != null and userId != ''">
            AND su.user_id = #{userId}
        </if>
    </select>
</mapper>
ruoyi-modules/ruoyi-system/src/main/resources/mapper/sys/SysUserMapper.xml
@@ -218,5 +218,14 @@
             #{userId}
        </foreach> 
     </delete>
    <select id="getUserIdByDept" resultType="java.lang.Long">
        SELECT user_id
        FROM sys_user
        WHERE del_flag = '0'
        <if test="param.deptId != null and param.deptId != ''">
            dept_id = #{param.deptId}
        </if>
    </select>
</mapper>