package com.xy.service; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yitter.idgen.YitIdHelper; import com.xy.annotation.Lock; import com.xy.dto.SysWorkUser.AddDto; import com.xy.dto.SysWorkUser.DelDto; import com.xy.dto.SysWorkUser.UpdateDto; import com.xy.dto.UserInfoDto; import com.xy.entity.UserInfo; import com.xy.mapper.UserInfoMapper; import com.xy.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import static com.xy.utils.Beans.copy; import static com.xy.utils.PlusBeans.toIPage; import static com.xy.utils.PlusBeans.toPageBean; /** *

* 用户表 服务实现类 *

* * @author lijin * @since 2023-01-12 */ @Service @AllArgsConstructor @Api(tags = "用户表") public class UserInfoServiceImpl extends ServiceImpl implements UserInfoService { private SysWorkUserService sysWorkUserService; @Override @ApiOperation("集合查询") public R> list(UserInfoDto.SelectListDto selectList) { List userIds = selectList.getUserIds(); UserInfoDto.Vo userVo = selectList.getUserVo(); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); if (userVo != null) { lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(selectList.getUserVo(), UserInfo.class).build(); } lambdaQueryWrapper.in(CollUtil.isNotEmpty(userIds), UserInfo::getUserId, userIds); List list = list(lambdaQueryWrapper); return R.ok(copy(UserInfoDto.Vo.class, list)); } @Override @ApiOperation("对象查询") public R obj(UserInfoDto.Vo vo) { LambdaQueryWrapper lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(vo, UserInfo.class).build(); List list = list(lambdaQueryWrapper); if (Emptys.check(list)) { return R.ok(copy(UserInfoDto.Vo.class, list.get(0))); } return R.ok(); } @PostMapping("page") @ApiOperation("分页查询") public R> page(@RequestBody UserInfoDto.Page page) { PageBean pageBean = page.getPage(); LambdaQueryWrapper lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, UserInfo.class) .like(UserInfo::getTel, page.getTel()) .like(UserInfo::getMail, page.getMail()) .like(UserInfo::getUnionid, page.getUnionid()) .ge(UserInfo::getCreateTime, page.getBeginCreateTime()) .le(UserInfo::getCreateTime, page.getEndCreateTime()) .build() .orderByDesc(!Emptys.check(pageBean.getOrders()), UserInfo::getCreateTime); IPage iPage = page(toIPage(pageBean), lambdaQueryWrapper); return R.ok(toPageBean(UserInfoDto.Vo.class, iPage)); } @Override @ApiOperation("添加") @Lock(value = "save.tel", prefix = "user_save_") public R save(UserInfoDto.Save save) { //校验 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() .eq(UserInfo::getMail, save.getMail()); if (Emptys.check(save.getUnionid())) { lambdaQueryWrapper .or() .eq(UserInfo::getUnionid, save.getUnionid()); } if (Emptys.check(save.getSysId())) { lambdaQueryWrapper .or(userInfoLambdaQueryWrapper -> userInfoLambdaQueryWrapper .eq(UserInfo::getTel, save.getTel()) .eq(UserInfo::getSysId, save.getSysId())); } UserInfo userInfo = getOne(lambdaQueryWrapper); if (userInfo != null) { return R.fail("账号已存在"); } //添加权限用户 AddDto addDto = copy(AddDto.class, save) .setEmail(save.getMail()) .setPhone(save.getTel()) .setAccount(save.getAccount()); R register = sysWorkUserService.register(addDto); if (register.getCode() != R.Enum.SUCCESS.getCode()) { return R.fail(register.getMsg()); } Long authorizeUserId = register.getData(); //添加用户 Long loginId = AuthorizeUtils.getLoginId(Long.class); UserInfo saveInfo = copy(UserInfo.class, save) .createUserTime(loginId) .setUserId(YitIdHelper.nextId()) .setAuthorizeUserId(authorizeUserId) .createUserTime(loginId); save(saveInfo); return R.ok(copy(UserInfoDto.Vo.class, saveInfo)); } @Override @ApiOperation("修改") @Lock(value = "update.userId", prefix = "user_update_") public R update(UserInfoDto.Update update) { UserInfo byId = getById(update.getUserId()); if (!StringUtils.isEmpty(update.getTel())) { if (!byId.getTel().equals(update.getTel())) { long count = count(new LambdaQueryWrapper().eq(UserInfo::getTel, update.getTel())); if (count > 0) { return R.fail("手机已存在"); } } } if (!StringUtils.isEmpty(update.getMail())) { if (!byId.getMail().equals(update.getMail())) { long count = count(new LambdaQueryWrapper().eq(UserInfo::getMail, update.getMail())); if (count > 0) { return R.fail("邮箱已存在"); } } } UserInfo updateInfo = copy(UserInfo.class, update) .updateUserTime(AuthorizeUtils.getLoginId(Long.class)); //修改权限用户 if (Emptys.check(update.getTel()) || Emptys.check(update.getMail()) || Emptys.check(update.getStatus()) || Emptys.check(update.getPassword())) { UpdateDto updateDto = new UpdateDto() .setId(byId.getAuthorizeUserId()) .setPhone(update.getTel()) .setEmail(update.getMail()) .setAccount(update.getTel()) .setPassword(update.getPassword()) .setStatus(update.getStatus()) .setRoleIds(update.getRoleIds()); sysWorkUserService.update(updateDto); } //修改用户 updateById(updateInfo); return R.ok(); } @ApiOperation("删除用户") @Override public R del(@RequestBody @Validated UserInfoDto.DelDto dto) { //sys_work_user 权限用户表 R r = sysWorkUserService.del(copy(DelDto.class, dto)); if (R.Enum.SUCCESS.getCode() != r.getCode()) { return R.fail(r.getMsg()); } //user_info 用户表 return R.ok(removeBatchByIds(dto.getId())); } }