From c547092e6b45ecfe57b573fbcfce2707d388ad30 Mon Sep 17 00:00:00 2001 From: Ziin Date: Mon, 23 Jun 2025 21:49:21 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=AE=BE=E7=BD=AE=E5=A4=9A=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=85=8D=E7=BD=AE=E4=B8=BA=20false=202.?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BB=E6=92=AD=E5=88=86=E9=A1=B5=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=B8=BAXML=E6=9F=A5=E8=AF=A2=203.=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=BD=93=E5=89=8D=E7=94=A8=E6=88=B7=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E4=B8=8B=E6=89=80=E6=9C=89=E7=94=A8=E6=88=B7=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=204.=E6=96=B0=E5=BB=BA=E5=9B=BD=E5=AE=B6=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=AE=9E=E4=BD=93=E7=B1=BB=205.=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=9B=B4=E6=96=B0=E4=B8=BB=E6=92=AD=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/newhosts/NewHostsController.java | 8 ++ .../admin/newhosts/vo/NewHostsPageReqVO.java | 73 ++++++++++- .../dataobject/countryinfo/CountryInfoDO.java | 54 ++++++++ .../dal/mysql/newhosts/NewHostsMapper.java | 42 ++++--- .../service/newhosts/NewHostsService.java | 1 + .../service/newhosts/NewHostsServiceImpl.java | 20 ++- .../mapper/newhosts/NewHostsMapper.xml | 117 ++++++++++++++++++ .../controller/admin/user/UserController.java | 20 ++- .../dal/mysql/user/AdminUserMapper.java | 5 + .../oauth2/OAuth2TokenServiceImpl.java | 2 +- .../system/service/user/AdminUserService.java | 1 + .../service/user/AdminUserServiceImpl.java | 5 + 12 files changed, 324 insertions(+), 24 deletions(-) create mode 100644 tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/dal/dataobject/countryinfo/CountryInfoDO.java diff --git a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/controller/admin/newhosts/NewHostsController.java b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/controller/admin/newhosts/NewHostsController.java index c7f1dca..b13b63e 100644 --- a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/controller/admin/newhosts/NewHostsController.java +++ b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/controller/admin/newhosts/NewHostsController.java @@ -57,6 +57,14 @@ public class NewHostsController { return success(true); } + @PutMapping("/batch-update") + @Operation(summary = "批量更新主播数据") + @PreAuthorize("@ss.hasPermission('server:new-hosts:update')") + public CommonResult updateNewHosts(@Valid @RequestBody List updateReqVO) { + newHostsService.batchUpdateNewHosts(updateReqVO); + return success(true); + } + @DeleteMapping("/delete") @Operation(summary = "删除主播数据") @Parameter(name = "id", description = "编号", required = true) diff --git a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/controller/admin/newhosts/vo/NewHostsPageReqVO.java b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/controller/admin/newhosts/vo/NewHostsPageReqVO.java index ac101bb..885341f 100644 --- a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/controller/admin/newhosts/vo/NewHostsPageReqVO.java +++ b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/controller/admin/newhosts/vo/NewHostsPageReqVO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.tkdata.controller.admin.newhosts.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.*; import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; @@ -48,9 +49,79 @@ public class NewHostsPageReqVO extends PageParam { @Schema(description = "数据插入时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; + private LocalDateTime createTime; @Schema(description = "用户 Id", example = "10967") private Long userId; + /** + * 昨日金币最大值 + */ + @Schema(description = "昨日金币查询最大值", example = "5000") + private Integer yesterdayCoinsMax; + + /** + * 昨日金币最小值 + */ + @Schema(description = "昨日金币查询最小值", example = "500") + private Integer yesterdayCoinsMin; + + /** + * 关注数量最大值 + */ + @Schema(description = "关注数量查询最大值", example = "1000") + private Integer fllowernumMax; + + /** + * 关注数量最小值 + */ + @Schema(description = "关注数量查询最小值", example = "100") + private Integer fllowernumMin; + + + /** + * 粉丝数量最大值 + */ + @Schema(description = "粉丝数量查询最大值", example = "50000") + private Integer fansMax; + + /** + * 粉丝数量最小值 + */ + @Schema(description = "粉丝数量查询最小值", example = "1000") + private Integer fansMin; + + + @Schema(description = "在线人数最大值", example = "5000") + private Integer onlineFansMax; + + @Schema(description = "在线人数最小值", example = " 10") + private Integer onlineFansMin; + + + /** + * 主播金币最大值 + */ + @Schema(description = "主播金币查询最大值", example = "10000") + private Integer hostsCoinsMax; + + /** + * 主播金币最小值 + */ + @Schema(description = "主播金币查询最小值", example = "1000") + private Integer hostsCoinsMin; + + /** + * 排序规则 + */ + @Schema(description = "排序方式(asc/desc)", example = "desc") + private String sort; + + /** + * 按照何种业务排序 + */ + @Schema(description = "排序字段(createTime/hostsCoins/fans等)", example = "hostsCoins") + private String sortName; + + private Long tenantId; } \ No newline at end of file diff --git a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/dal/dataobject/countryinfo/CountryInfoDO.java b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/dal/dataobject/countryinfo/CountryInfoDO.java new file mode 100644 index 0000000..1b1c860 --- /dev/null +++ b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/dal/dataobject/countryinfo/CountryInfoDO.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.tkdata.dal.dataobject.countryinfo; + +import lombok.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 国家与地区信息统计 DO + * + * @author 芋道源码 + */ +@TableName("server_country_info") +@KeySequence("server_country_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CountryInfoDO extends BaseDO { + + /** + * 主键id,无业务含义 + */ + @TableId + private Integer id; + /** + * 业务区与地区码 + */ + private String countryGroup; + /** + * 业务区与地区名称 + */ + private String countryGroupName; + /** + * 国家id + */ + @TableId(type = IdType.INPUT) + private String countryId; + /** + * 国家名称 + */ + private String countryName; + /** + * 语言 + */ + private String language; + /** + * 语言中文 + */ + private String languageName; + + +} \ No newline at end of file diff --git a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/dal/mysql/newhosts/NewHostsMapper.java b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/dal/mysql/newhosts/NewHostsMapper.java index f15d984..5f83950 100644 --- a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/dal/mysql/newhosts/NewHostsMapper.java +++ b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/dal/mysql/newhosts/NewHostsMapper.java @@ -1,13 +1,20 @@ package cn.iocoder.yudao.module.tkdata.dal.mysql.newhosts; +import cn.iocoder.yudao.module.tkdata.dal.dataobject.countryinfo.CountryInfoDO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.yulichang.interfaces.MPJBaseJoin; +import com.github.yulichang.wrapper.MPJLambdaWrapper; + import java.util.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.tkdata.dal.dataobject.newhosts.NewHostsDO; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; import cn.iocoder.yudao.module.tkdata.controller.admin.newhosts.vo.*; +import org.apache.ibatis.annotations.Param; /** * 主播数据 Mapper @@ -17,22 +24,23 @@ import cn.iocoder.yudao.module.tkdata.controller.admin.newhosts.vo.*; @Mapper public interface NewHostsMapper extends BaseMapperX { - default PageResult selectPage(NewHostsPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(NewHostsDO::getHostsId, reqVO.getHostsId()) - .eqIfPresent(NewHostsDO::getHostsLevel, reqVO.getHostsLevel()) - .eqIfPresent(NewHostsDO::getHostsCoins, reqVO.getHostsCoins()) - .eqIfPresent(NewHostsDO::getInvitationType, reqVO.getInvitationType()) - .eqIfPresent(NewHostsDO::getOnlineFans, reqVO.getOnlineFans()) - .eqIfPresent(NewHostsDO::getFans, reqVO.getFans()) - .eqIfPresent(NewHostsDO::getFllowernum, reqVO.getFllowernum()) - .eqIfPresent(NewHostsDO::getYesterdayCoins, reqVO.getYesterdayCoins()) - .eqIfPresent(NewHostsDO::getCountry, reqVO.getCountry()) - .eqIfPresent(NewHostsDO::getHostsKind, reqVO.getHostsKind()) - .eqIfPresent(NewHostsDO::getIsAssigned, reqVO.getIsAssigned()) - .betweenIfPresent(NewHostsDO::getCreateTime, reqVO.getCreateTime()) - .eqIfPresent(NewHostsDO::getUserId, reqVO.getUserId()) - .orderByDesc(NewHostsDO::getId)); - } +// default PageResult selectPage(NewHostsPageReqVO reqVO) { +// return selectPage(reqVO, new LambdaQueryWrapperX() +// .eqIfPresent(NewHostsDO::getHostsId, reqVO.getHostsId()) +// .eqIfPresent(NewHostsDO::getHostsLevel, reqVO.getHostsLevel()) +// .eqIfPresent(NewHostsDO::getHostsCoins, reqVO.getHostsCoins()) +// .eqIfPresent(NewHostsDO::getInvitationType, reqVO.getInvitationType()) +// .eqIfPresent(NewHostsDO::getOnlineFans, reqVO.getOnlineFans()) +// .eqIfPresent(NewHostsDO::getFans, reqVO.getFans()) +// .eqIfPresent(NewHostsDO::getFllowernum, reqVO.getFllowernum()) +// .eqIfPresent(NewHostsDO::getYesterdayCoins, reqVO.getYesterdayCoins()) +// .eqIfPresent(NewHostsDO::getCountry, reqVO.getCountry()) +// .eqIfPresent(NewHostsDO::getHostsKind, reqVO.getHostsKind()) +// .eqIfPresent(NewHostsDO::getIsAssigned, reqVO.getIsAssigned()) +// .betweenIfPresent(NewHostsDO::getCreateTime, reqVO.getCreateTime()) +// .eqIfPresent(NewHostsDO::getUserId, reqVO.getUserId()) +// .orderByDesc(NewHostsDO::getId)); +// } + IPage selectPageWithXML(IPage page,@Param("req") NewHostsPageReqVO reqVO); } \ No newline at end of file diff --git a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/newhosts/NewHostsService.java b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/newhosts/NewHostsService.java index 2c1907f..f48354b 100644 --- a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/newhosts/NewHostsService.java +++ b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/newhosts/NewHostsService.java @@ -61,4 +61,5 @@ public interface NewHostsService { */ PageResult getNewHostsPage(NewHostsPageReqVO pageReqVO); + void batchUpdateNewHosts(@Valid List updateReqVO); } \ No newline at end of file diff --git a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/newhosts/NewHostsServiceImpl.java b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/newhosts/NewHostsServiceImpl.java index 0f1eef0..e4c3134 100644 --- a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/newhosts/NewHostsServiceImpl.java +++ b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/newhosts/NewHostsServiceImpl.java @@ -1,12 +1,15 @@ package cn.iocoder.yudao.module.tkdata.service.newhosts; import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; import cn.iocoder.yudao.module.tkdata.controller.admin.newhosts.vo.AllocationHostsSaveReqVO; import cn.iocoder.yudao.module.tkdata.controller.admin.newhosts.vo.NewHostsPageReqVO; import cn.iocoder.yudao.module.tkdata.controller.admin.newhosts.vo.NewHostsSaveReqVO; import cn.iocoder.yudao.module.tkdata.dal.dataobject.newhosts.NewHostsDO; import cn.iocoder.yudao.module.tkdata.dal.mysql.newhosts.NewHostsMapper; import cn.iocoder.yudao.module.tkdata.enums.ErrorCodeConstants; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -88,8 +91,21 @@ public class NewHostsServiceImpl implements NewHostsService { @Override public PageResult getNewHostsPage(NewHostsPageReqVO pageReqVO) { - PageResult newHostsDOPageResult = newHostsMapper.selectPage(pageReqVO); - return newHostsDOPageResult; + pageReqVO.setTenantId(TenantContextHolder.getTenantId()); + IPage iPage = new Page<>(pageReqVO.getPageNo(),pageReqVO.getPageSize()); + IPage newHostsDOIPage = newHostsMapper.selectPageWithXML(iPage,pageReqVO); + return new PageResult<>(newHostsDOIPage.getRecords(),newHostsDOIPage.getTotal()); + } + + @Override + public void batchUpdateNewHosts(List updateReqVO) { + ArrayList newHostsDOS = new ArrayList<>(); + for (NewHostsSaveReqVO newHostsSaveReqVO : updateReqVO) { + NewHostsDO newHostsDO = new NewHostsDO(); + BeanUtils.copyProperties(newHostsSaveReqVO,newHostsDO); + newHostsDOS.add(newHostsDO); + } + newHostsMapper.updateBatch(newHostsDOS); } } \ No newline at end of file diff --git a/tkdata-model-server/src/main/resources/mapper/newhosts/NewHostsMapper.xml b/tkdata-model-server/src/main/resources/mapper/newhosts/NewHostsMapper.xml index c426410..00abb09 100644 --- a/tkdata-model-server/src/main/resources/mapper/newhosts/NewHostsMapper.xml +++ b/tkdata-model-server/src/main/resources/mapper/newhosts/NewHostsMapper.xml @@ -9,4 +9,121 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + \ No newline at end of file diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java index 3f7dc61..63c2e26 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java @@ -27,9 +27,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -169,4 +167,20 @@ public class UserController { return success(userService.importUserList(list, updateSupport)); } + @GetMapping({"/list-all-simple-dept"}) + @Operation(summary = "获取部门下所有用户", description = "只包含被开启的用户,主要用于前端的下拉选项") + public CommonResult> getSimpleUserListWithDept(@RequestParam Long deptId) { +// List list = userService.getUserListByStatus(CommonStatusEnum.ENABLE.getStatus()); + List list = userService.getUserListByStatusAndDept(CommonStatusEnum.ENABLE.getStatus(),deptId); + List userDOList = new ArrayList<>(); + for (AdminUserDO adminUserDO : list) { + if (Objects.equals(deptId, adminUserDO.getDeptId())) { + userDOList.add(adminUserDO); + } + } + // 拼接数据 + Map deptMap = deptService.getDeptMap( + convertList(userDOList, AdminUserDO::getDeptId)); + return success(UserConvert.INSTANCE.convertSimpleList(userDOList, deptMap)); + } } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java index c0c9be8..a112d87 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java @@ -48,4 +48,9 @@ public interface AdminUserMapper extends BaseMapperX { return selectList(AdminUserDO::getDeptId, deptIds); } + default List getUserListByStatusAndDept(Integer status, Long deptId){ + return selectList(new LambdaQueryWrapperX() + .eq(AdminUserDO::getStatus, status) + .eq(AdminUserDO::getDeptId, deptId)); + } } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java index 230e3d4..d5c1394 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java @@ -67,7 +67,7 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService { @Transactional(rollbackFor = Exception.class) public OAuth2AccessTokenDO createAccessToken(Long userId, Integer userType, String clientId, List scopes) { // 在 yaml multiple-device-login = True 时 删除用户上次登录令牌,实现单设备登录 - if (multipleDeviceLoginConfig){ + if (!multipleDeviceLoginConfig){ removeAccessTokenByUserId(userId); } OAuth2ClientDO clientDO = oauth2ClientService.validOAuthClientFromCache(clientId); diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java index e175818..7b9a724 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java @@ -207,4 +207,5 @@ public interface AdminUserService { */ boolean isPasswordMatch(String rawPassword, String encodedPassword); + List getUserListByStatusAndDept(Integer status, Long deptId); } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index 2f6f6bc..4331d87 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -515,6 +515,11 @@ public class AdminUserServiceImpl implements AdminUserService { // return passwordEncoder.matches(rawPassword, encodedPassword); } + @Override + public List getUserListByStatusAndDept(Integer status, Long deptId) { + return userMapper.getUserListByStatusAndDept(status,deptId); + } + /** * 对密码进行加密 *