package com.doumee.service.business.impl; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.CreationMapper; import com.doumee.dao.business.CreationPlatMapper; import com.doumee.dao.business.MemberMapper; import com.doumee.dao.business.join.CreationJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.system.model.SystemUser; import com.doumee.dao.system.model.SystemUserRole; import com.doumee.dao.web.dto.CreateSystemUserDTO; import com.doumee.service.business.CreationService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.service.system.SystemUserRoleService; import com.doumee.service.system.SystemUserService; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; import java.util.Objects; /** * 创作中心信息表Service实现 * * @author 江蹄蹄 * @date 2023/03/21 15:48 */ @Service public class CreationServiceImpl implements CreationService { @Autowired private CreationMapper creationMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private CreationJoinMapper creationJoinMapper; @Autowired private CreationPlatMapper creationPlatMapper; @Autowired private SystemUserService systemUserService; @Autowired private SystemUserRoleService systemUserRoleService; @Autowired private MemberMapper memberMapper; @Override @Transactional(rollbackFor = {BusinessException.class, Exception.class}) public Integer create(Creation creation) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); checkParam(creation); creation.setCreator(user.getId()); creation.setCreateDate(new Date()); creation.setIsdeleted(Constants.ZERO); creation.setStatus(Constants.ZERO); //新增创作者中心时,生成一条system_user数据 Integer userid = createSystemUser(creation, user); creation.setUserId(userid); creationMapper.insert(creation); return creation.getId(); } public void checkParam(Creation creation) { if (StringUtils.isBlank(creation.getLogin()) || StringUtils.isBlank(creation.getPhone()) || creation.getMemberId() == null ) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } Member member = memberMapper.selectById(creation.getMemberId()); if (Objects.isNull(member)) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "关联用户不存在"); } Creation query=new Creation(); query.setMemberId(member.getId()); query.setIsdeleted(Constants.ZERO); List list=creationMapper.selectList(new QueryWrapper<>(query)); if(org.apache.commons.collections.CollectionUtils.isNotEmpty(list)){ if(creation.getId()!=null){ if(!Constants.equalsInteger(list.get(0).getId(),creation.getId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "关联用户已存在,不允许操作"); } }else { if(list.size()>0){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "关联用户已存在,不允许操作"); } } } } public Integer createSystemUser(Creation result, LoginUserInfo user) { CreateSystemUserDTO systemUser = new CreateSystemUserDTO(); systemUser.setMemberId(result.getMemberId()); systemUser.setUsername(result.getLogin()); // 验证用户名 SystemUser queryUserDto = new SystemUser(); queryUserDto.setUsername(systemUser.getUsername()); queryUserDto.setDeleted(Boolean.FALSE); SystemUser queryuser = systemUserService.findOne(queryUserDto); if (queryuser != null) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "用户名已存在"); } /* SystemUser queryMemberID = new SystemUser(); queryMemberID.setMemberId(systemUser.getMemberId()); queryMemberID.setDeleted(Boolean.FALSE); SystemUser resultMember = systemUserService.findOne(queryMemberID); if (resultMember != null) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "系统用户关联用户已存在,不允许操作"); }*/ //初始密码 String initialPassword = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.INITIAL_PASSWORD).getCode(); // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 systemUser.setPassword(Utils.Secure.encryptPassword(initialPassword, salt)); systemUser.setSalt(salt); // 创建用户记录 systemUser.setRealname(result.getRealname()); systemUser.setBirthday(result.getBirthday()); systemUser.setSex(result.getSex()!=null? result.getSex()+"": ""); systemUser.setEmail(result.getEmail()); systemUser.setMobile(result.getPhone()); systemUser.setCreateUser(user.getId()); systemUser.setCreateTime(new Date()); systemUser.setType(Constants.UserType.CREATION.getKey()); Integer userId = systemUserService.create(systemUser); String initialRoles = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.INITIAL_ROLE).getCode(); // 新增新的角色 SystemUserRole newUserRole = new SystemUserRole(); newUserRole.setUserId(userId); newUserRole.setRoleId(Integer.valueOf(initialRoles)); systemUserRoleService.create(newUserRole); return userId; } @Override public void deleteById(Integer id) { Creation query= creationMapper.selectById(id); LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Creation creation = new Creation(); creation.setId(id); creation.setEditDate(new Date()); creation.setEditor(user.getId()); creation.setIsdeleted(Constants.ONE); creationMapper.updateById(creation); SystemUser systemUser=new SystemUser(); systemUser.setId(query.getUserId()); systemUser.setDeleted(Boolean.TRUE); systemUserService.updateById(systemUser); } @Override public void delete(Creation creation) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(creation); creationMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Creation creation = new Creation(); creation.setEditDate(new Date()); creation.setEditor(user.getId()); creation.setIsdeleted(Constants.ONE); ids.stream().forEach(s -> { creation.setId(s); creationMapper.updateById(creation); Creation query= creationMapper.selectById(s); SystemUser systemUser=new SystemUser(); systemUser.setId(query.getUserId()); systemUser.setDeleted(Boolean.TRUE); systemUserService.updateById(systemUser); }); } @Override public void updateById(Creation creation) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); checkParam(creation); creation.setEditor(user.getId()); creation.setEditDate(new Date()); //新增创作者中心时,生成一条system_user数据 Creation result= creationMapper.selectById(creation.getId()); updateSystemUser(creation, user,result); creationMapper.updateById(creation); } public void updateSystemUser(Creation param, LoginUserInfo user,Creation result) { CreateSystemUserDTO systemUser = new CreateSystemUserDTO(); systemUser.setMemberId(param.getMemberId()); systemUser.setUsername(param.getLogin()); /* SystemUser queryMemberID = new SystemUser(); queryMemberID.setMemberId(systemUser.getMemberId()); queryMemberID.setDeleted(Boolean.FALSE); SystemUser resultMember = systemUserService.findOne(queryMemberID); if (resultMember != null) { if(!Constants.equalsInteger(resultMember.getId(),result.getUserId())){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "系统用户关联用户已存在,不允许操作"); } }*/ systemUser.setRealname(param.getRealname()); systemUser.setBirthday(param.getBirthday()); systemUser.setSex(param.getSex() + ""); systemUser.setEmail(param.getEmail()); systemUser.setMobile(param.getPhone()); systemUser.setUpdateUser(user.getId()); systemUser.setUpdateTime(new Date()); systemUserService.updateById(systemUser); } @Override public void updateStatusById(Creation creation) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); creation.setEditor(user.getId()); creation.setEditDate(new Date()); creationMapper.updateById(creation); } @Override public void updateByIdInBatch(List creations) { if (CollectionUtils.isEmpty(creations)) { return; } for (Creation creation : creations) { this.updateById(creation); } } @Override public Creation findById(Integer id) { String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILE).getCode(); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.selectAll(Creation.class); queryWrapper.selectAs(Areas::getParentId,Creation::getProvince); queryWrapper.selectAs(Member::getImgurl,Creation::getImgurl); queryWrapper.leftJoin(Areas.class,Areas::getId,Creation::getAreaId); queryWrapper.leftJoin(Member.class,Member::getId,Creation::getMemberId); queryWrapper.eq(Creation::getId,id); Creation creation = creationJoinMapper.selectJoinOne(Creation.class,queryWrapper); if(StringUtils.isNotBlank(creation.getImgurl())){ creation.setImgFullUrl(path); } CreationPlat creationPlat = new CreationPlat(); creationPlat.setObjId(creation.getId()); creationPlat.setIsdeleted(Constants.ZERO); List list = creationPlatMapper.selectList(new QueryWrapper<>(creationPlat)); creation.setCreationPlatList(list); return creation; } @Override public Creation findOne(Creation creation) { QueryWrapper wrapper = new QueryWrapper<>(creation); return creationMapper.selectOne(wrapper); } @Override public List findList(Creation creation) { QueryWrapper wrapper = new QueryWrapper<>(creation); return creationMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.selectAll(Creation.class); queryWrapper.selectAs(Member::getImgurl, Creation::getImgurl); queryWrapper.selectAs(Member::getNickname, Creation::getNickname); queryWrapper.selectAs(SystemUser::getUsername, Creation::getLogin); queryWrapper.leftJoin(Member.class, Member::getId, Creation::getMemberId); queryWrapper.leftJoin(SystemUser.class, SystemUser::getId, Creation::getUserId); queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getNickname()), ms -> ms.eq(Member::getNickname, pageWrap.getModel().getNickname()) .or().like(Creation::getRealname, pageWrap.getModel().getNickname()) .or().like(Creation::getPhone, pageWrap.getModel().getNickname()) ); queryWrapper.eq(pageWrap.getModel().getStatus() != null, Creation::getStatus, pageWrap.getModel().getStatus()); queryWrapper.eq(Creation::getIsdeleted, Constants.ZERO); queryWrapper.orderByDesc(Creation::getCreateDate); IPage result = creationJoinMapper.selectJoinPage(page, Creation.class, queryWrapper); String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILE).getCode(); for (Creation model : result.getRecords()) { if (StringUtils.isNotBlank(model.getImgurl())) { model.setImgFullUrl(path); } } return PageData.from(result); } @Override public long count(Creation creation) { QueryWrapper wrapper = new QueryWrapper<>(creation); return creationMapper.selectCount(wrapper); } }