diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 4a402006..051d3b4e 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -173,7 +173,7 @@ mybatis-plus: dbConfig: # 主键类型 # AUTO 自增 NONE 空 INPUT 用户输入 ASSIGN_ID 雪花 ASSIGN_UUID 唯一 UUID - idType: ASSIGN_ID + idType: AUTO # 逻辑已删除值 logicDeleteValue: 2 # 逻辑未删除值 diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java index 9620c3f0..f1965fb0 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java @@ -145,17 +145,17 @@ public class CaiLoginManager { try { UserInvite check = userInviteService.getByUserId(user.getId()); if(check == null){ - UserInfo userInfo = userInfoService.getByUserId(user.getId()); + UserInfo inviteUserInfo = userInfoService.getByUserId(inviteUser.getId()); UserInvite userInvite = new UserInvite(); userInvite.setUserId(user.getId()); userInvite.setInviteId(user.getInviteId()); - userInvite.setVideoIncomeRate(userInfo.getVideoIncomeRate()); - userInvite.setGuardIncomeRate(userInfo.getGuardIncomeRate()); - userInvite.setGiftIncomeRate(userInfo.getGiftIncomeRate()); - userInvite.setPayIncomeRate(userInfo.getPayIncomeRate()); + userInvite.setVideoIncomeRate(inviteUserInfo.getVideoIncomeRate()); + userInvite.setGuardIncomeRate(inviteUserInfo.getGuardIncomeRate()); + userInvite.setGiftIncomeRate(inviteUserInfo.getGiftIncomeRate()); + userInvite.setPayIncomeRate(inviteUserInfo.getPayIncomeRate()); if(inviteUser.getIsUnion() == 1){ BigDecimal unionOneRate = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_UNION_ONE_INCOME_RATE); - BigDecimal videoIncome = NumberUtil.add(userInfo.getVideoIncomeRate(), unionOneRate); + BigDecimal videoIncome = NumberUtil.add(inviteUserInfo.getVideoIncomeRate(), unionOneRate); userInvite.setVideoIncomeRate(videoIncome); } userInviteService.save(userInvite); @@ -178,6 +178,7 @@ public class CaiLoginManager { if(checkUnionUser != null){ UnionUser unionUser = new UnionUser(); unionUser.setUnionId(union.getId()); + unionUser.setUnionUserId(union.getUserId()); unionUser.setUserId(user.getId()); unionUser.setVideoDivide(systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_UNION_VIDEO_INCOME_RATE)); unionUser.setGiftDivide(systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_UNION_VIDEO_INCOME_RATE)); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/UnionController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/UnionController.java index 1c996ac9..d36ad1f4 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/UnionController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/UnionController.java @@ -3,6 +3,7 @@ package com.ruoyi.cai.controller.admin; import cn.dev33.satoken.annotation.SaCheckPermission; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.cai.domain.Union; +import com.ruoyi.cai.dto.admin.query.UsercodeReq; import com.ruoyi.cai.dto.admin.vo.UnionAdminVo; import com.ruoyi.cai.service.UnionService; import com.ruoyi.common.annotation.Log; @@ -66,13 +67,10 @@ public class UnionController extends BaseController { @Log(title = "工会列表", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody Union bo) { - return toAjax(unionService.save(bo)); + public R add(@Validated(AddGroup.class) @RequestBody UsercodeReq bo) { + return toAjax(unionService.saveUnion(bo.getUsercode())); } - /** - * 修改工会列表 - */ @SaCheckPermission("cai:userUnion:edit") @Log(title = "工会列表", businessType = BusinessType.UPDATE) @RepeatSubmit() @@ -82,15 +80,12 @@ public class UnionController extends BaseController { } /** - * 删除工会列表 - * - * @param ids 主键串 + * 解散工会 */ @SaCheckPermission("cai:userUnion:remove") @Log(title = "工会列表", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long[] ids) { - return toAjax(unionService.removeBatchByIds(Arrays.asList(ids))); + @DeleteMapping("/{id}") + public R dissolve(@NotNull(message = "主键不能为空") @PathVariable Long id) { + return toAjax(unionService.dissolve(id)); } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/UserController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/UserController.java index d2abd06c..96b13d2b 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/UserController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/UserController.java @@ -1,8 +1,10 @@ package com.ruoyi.cai.controller.admin; import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.cai.domain.User; +import com.ruoyi.cai.domain.UserCodeGen; import com.ruoyi.cai.dto.admin.query.ResetPasswordReq; import com.ruoyi.cai.dto.admin.query.UserUpdateAdminReq; import com.ruoyi.cai.dto.admin.vo.UserAdminVo; @@ -19,12 +21,15 @@ import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.enums.BusinessType; import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; /** * 用户 @@ -51,6 +56,24 @@ public class UserController extends BaseController { return TableDataInfo.build(result); } + @GetMapping("/getByUsercode") + public R getByUsercode(String usercode){ + return R.ok(userService.getByUserCode(usercode)); + } + + @GetMapping("/listByUserCode") + public R> listByUserCode(String usercode,int limit){ + if(limit == 0){ + limit = 40; + } + List users = userService.list(Wrappers.lambdaQuery(User.class) + .select(User::getUsercode) + .like(StringUtils.isNotEmpty(usercode), User::getUsercode, usercode) + .last("limit " + limit)); + return R.ok(users.stream().map(User::getUsercode).collect(Collectors.toList())); + } + + /** * 获取用户详细信息 * @@ -97,16 +120,10 @@ public class UserController extends BaseController { return R.ok(); } - /** - * 删除用户 - * - * @param ids 主键串 - */ @SaCheckPermission("cai:user:remove") @Log(title = "用户", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Integer[] ids) { - return toAjax(userService.removeBatchByIds(Arrays.asList(ids))); + @DeleteMapping("/{id}") + public R remove(@NotNull(message = "主键不能为空") @PathVariable Long id) { + return toAjax(userService.removeUser(id)); } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UnionUser.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UnionUser.java index 4c1df0e9..4e33dc41 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UnionUser.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UnionUser.java @@ -29,6 +29,7 @@ public class UnionUser implements Serializable { * 工会id */ private Long unionId; + private Long unionUserId; /** * 用户id */ diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserForbid.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserForbid.java index e0f020e1..e5e74319 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserForbid.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserForbid.java @@ -1,5 +1,6 @@ package com.ruoyi.cai.domain; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -22,7 +23,7 @@ public class UserForbid implements Serializable { /** * */ - @TableId(value = "id") + @TableId(value = "id",type = IdType.INPUT) private Long id; /** * 类型 :1 封用户uid 2.封设备uuid 3.imei 4.mac diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/query/UsercodeReq.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/query/UsercodeReq.java new file mode 100644 index 00000000..4647c74f --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/query/UsercodeReq.java @@ -0,0 +1,8 @@ +package com.ruoyi.cai.dto.admin.query; + +import lombok.Data; + +@Data +public class UsercodeReq { + private String usercode; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/AnchorAdminVo.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/AnchorAdminVo.java index 38a03896..dfb66708 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/AnchorAdminVo.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/AnchorAdminVo.java @@ -27,5 +27,6 @@ public class AnchorAdminVo extends Anchor { private Integer gender; private Integer age; - private Long city; + private Long cityId; + private String city; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UnionService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UnionService.java index 1768e2cc..f98269fa 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UnionService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UnionService.java @@ -17,4 +17,8 @@ public interface UnionService extends IService { Page pageAdmin(PageQuery pageQuery, UnionAdminVo bo); Union getByUserId(Long userId); + + boolean dissolve(Long id); + + boolean saveUnion(String usercode); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserService.java index d7a865d7..2eee0d01 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserService.java @@ -39,4 +39,5 @@ public interface UserService extends IService { void resetPassword(String mobile, String password); + boolean removeUser(Long id); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UnionServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UnionServiceImpl.java index f9b46dec..d08a48b4 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UnionServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UnionServiceImpl.java @@ -3,12 +3,15 @@ package com.ruoyi.cai.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.cai.domain.Union; +import com.ruoyi.cai.domain.*; import com.ruoyi.cai.dto.admin.vo.UnionAdminVo; import com.ruoyi.cai.mapper.UnionMapper; -import com.ruoyi.cai.service.UnionService; +import com.ruoyi.cai.service.*; import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.exception.ServiceException; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 工会列表Service业务层处理 @@ -19,6 +22,15 @@ import org.springframework.stereotype.Service; @Service public class UnionServiceImpl extends ServiceImpl implements UnionService { + @Autowired + private UnionUserService unionUserService; + @Autowired + private UserInviteService inviteService; + @Autowired + private UserInfoService userInfoService; + @Autowired + private UserService userService; + @Override public Page pageAdmin(PageQuery pageQuery, UnionAdminVo bo) { return baseMapper.pageAdmin(pageQuery.build(),bo); @@ -28,4 +40,47 @@ public class UnionServiceImpl extends ServiceImpl implements public Union getByUserId(Long userId) { return this.getOne(Wrappers.lambdaQuery(Union.class).eq(Union::getUserId,userId).last("limit 1")); } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean dissolve(Long id) { + Union union = this.getById(id); + if(union == null){ + throw new ServiceException("工会不存在"); + } + boolean b = this.removeById(id); + if(!b){ + throw new ServiceException("工会不存在"); + } + unionUserService.remove(Wrappers.lambdaQuery(UnionUser.class).eq(UnionUser::getUnionId,id)); + UserInfo userInfo = userInfoService.getByUserId(union.getUserId()); + inviteService.update(Wrappers.lambdaUpdate(UserInvite.class) + .eq(UserInvite::getInviteId,union.getUserId()) + .set(UserInvite::getVideoIncomeRate,userInfo.getVideoIncomeRate()) + .set(UserInvite::getGiftIncomeRate,userInfo.getGuardIncomeRate()) + .set(UserInvite::getGuardIncomeRate,userInfo.getGuardIncomeRate()) + .set(UserInvite::getPayIncomeRate,userInfo.getPayIncomeRate())); + return true; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean saveUnion(String usercode) { + User user = userService.getByUserCode(usercode); + if(user == null){ + throw new ServiceException("用户不存在"); + } + boolean update = userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId, user.getId()) + .eq(User::getIsUnion, 0) + .set(User::getIsUnion, 1)); + if(!update){ + throw new ServiceException("新建工会失败,工会已存在"); + } + Union union = new Union(); + union.setUserId(user.getId()); + union.setName("工会"+user.getUsercode()); + union.setEnableRate(true); + this.save(union); + return true; + } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserServiceImpl.java index e2ccd396..77e26ebb 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserServiceImpl.java @@ -4,8 +4,7 @@ import cn.dev33.satoken.secure.BCrypt; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.cai.domain.Anchor; -import com.ruoyi.cai.domain.User; +import com.ruoyi.cai.domain.*; import com.ruoyi.cai.dto.admin.vo.UserAdminVo; import com.ruoyi.cai.dto.app.query.index.GreetQuery; import com.ruoyi.cai.dto.app.query.index.UserQuery; @@ -20,6 +19,7 @@ import com.ruoyi.common.helper.LoginHelper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 用户Service业务层处理 @@ -43,6 +43,16 @@ public class UserServiceImpl extends ServiceImpl implements Us private UserGiftService userGiftService; @Autowired private UserOnlineService userOnlineService; + @Autowired + private UserInfoService userInfoService; + @Autowired + private UserInviteService userInviteService; + @Autowired + private AccountService accountService; + @Autowired + private UserCountService userCountService; + @Autowired + private DynamicImagesService dynamicImagesService; @Override public User getByUsername(String username) { @@ -152,4 +162,50 @@ public class UserServiceImpl extends ServiceImpl implements Us .eq(User::getMobile,mobile) .set(User::getPassword,BCrypt.hashpw(password))); } + + @Autowired + private UserGreetService userGreetService; + @Autowired + private UserMemberService userMemberService; + @Autowired + private UserForbidService userForbidService; + @Autowired + private AnchorApplyService anchorApplyService; + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean removeUser(Long id) { + User user = this.getById(id); + if(user == null){ + throw new ServiceException("用户不存在"); + } + if(user.getIsUnion() == 1){ + throw new ServiceException("该用户为会长,无法删除,请先前往工会列表解散工会"); + } + if(user.getType() == 1){ + throw new ServiceException("该员工为内部员工,禁止删除"); + } + boolean b = this.removeById(id); + if(!b){ + throw new ServiceException("用户不存在"); + } + userOnlineService.remove(Wrappers.lambdaQuery(UserOnline.class).eq(UserOnline::getUserId, id)); + userInfoService.remove(Wrappers.lambdaQuery(UserInfo.class).eq(UserInfo::getUserId, id)); + userInviteService.remove(Wrappers.lambdaQuery(UserInvite.class).eq(UserInvite::getUserId, id)); + userInviteService.remove(Wrappers.lambdaQuery(UserInvite.class).eq(UserInvite::getInviteId, id)); + accountService.remove(Wrappers.lambdaQuery(Account.class).eq(Account::getUserId, id)); + userCountService.remove(Wrappers.lambdaQuery(UserCount.class).eq(UserCount::getUserId, id)); + anchorService.remove(Wrappers.lambdaQuery(Anchor.class).eq(Anchor::getUserId, id)); + userAlbumService.remove(Wrappers.lambdaQuery(UserAlbum.class).eq(UserAlbum::getUserId, id)); + dynamicService.remove(Wrappers.lambdaQuery(Dynamic.class).eq(Dynamic::getUserId, id)); + dynamicImagesService.remove(Wrappers.lambdaQuery(DynamicImages.class).eq(DynamicImages::getUserId, id)); + userFollowService.remove(Wrappers.lambdaQuery(UserFollow.class).eq(UserFollow::getUserId, id)); + userFollowService.remove(Wrappers.lambdaQuery(UserFollow.class).eq(UserFollow::getFollowUser, id)); + userGreetService.remove(Wrappers.lambdaQuery(UserGreet.class).eq(UserGreet::getUserId,id)); + userMemberService.remove(Wrappers.lambdaQuery(UserMember.class).eq(UserMember::getUserId,id)); + userForbidService.remove(Wrappers.lambdaQuery(UserForbid.class).eq(UserForbid::getId,id)); + anchorApplyService.remove(Wrappers.lambdaQuery(AnchorApply.class).eq(AnchorApply::getId,id)); + return true; + } + } diff --git a/ruoyi-cai/src/main/resources/mapper/cai/AnchorMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/AnchorMapper.xml index cbd5a640..8d3b8525 100644 --- a/ruoyi-cai/src/main/resources/mapper/cai/AnchorMapper.xml +++ b/ruoyi-cai/src/main/resources/mapper/cai/AnchorMapper.xml @@ -25,6 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" t1.*,t2.age,t2.avatar,t2.usercode,t2.nickname,t2.mobile,t2.gender,t2.age,t2.city from cai_anchor t1 left join cai_user t2 on t1.user_id = t2.id + order by t1.create_time desc select t1.*, t2.usercode,t2.mobile, - t3.usercode as invite_usercode,t3.mobile as invite_mobile,t3.is_union as invite_is_union, - t5.name as union_name + t3.usercode as invite_usercode,t3.mobile as invite_mobile,t3.is_union as invite_is_union from cai_user_invite t1 left join cai_user t2 on t1.user_id = t2.id left join cai_user t3 on t1.invite_id = t3.id - left join cai_union_user t4 on t1.user_id = t4.user_id - left join cai_union t5 on t4.union_id = t5.id and t2.mobile = #{bo.mobile} @@ -45,9 +42,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and t3.usercode = #{bo.inviteUsercode} - - and t5.name like concat('%',#{bo.unionName},'%') - diff --git a/ruoyi-cai/src/main/resources/mapper/cai/UserMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/UserMapper.xml index a8083fdd..fc52045d 100644 --- a/ruoyi-cai/src/main/resources/mapper/cai/UserMapper.xml +++ b/ruoyi-cai/src/main/resources/mapper/cai/UserMapper.xml @@ -25,6 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and t1.city = #{query.city} + order by t2.last_login_time desc