/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.property.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.common.cache.SysCache; import org.springblade.common.constant.CommonConstant; import org.springblade.common.utils.RoleUtil; import org.springblade.common.utils.SpringUtils; import org.springblade.core.mp.support.Condition; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.DigestUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.SpringUtil; import org.springblade.modules.pay.entity.AliPayInfo; import org.springblade.modules.pay.entity.WxPayInfo; import org.springblade.modules.pay.service.IAliPayService; import org.springblade.modules.pay.service.IWxPayService; import org.springblade.modules.property.entity.PropertyCompanyDistrictEntity; import org.springblade.modules.property.entity.PropertyCompanyEntity; import org.springblade.modules.property.mapper.PropertyCompanyMapper; import org.springblade.modules.property.service.IPropertyCompanyDistrictService; import org.springblade.modules.property.service.IPropertyCompanyService; import org.springblade.modules.property.service.IPropertyDistrictUserService; import org.springblade.modules.property.vo.PropertyCompanyDetailVO; import org.springblade.modules.property.vo.PropertyCompanyVO; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.modules.property.vo.PropertyDistrictInfo; import org.springblade.modules.system.entity.Dept; import org.springblade.modules.system.entity.User; import org.springblade.modules.system.entity.UserDept; import org.springblade.modules.system.service.IDeptService; import org.springblade.modules.system.service.IUserDeptService; import org.springblade.modules.system.service.IUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 物业公司 服务实现类 * * @author BladeX * @since 2023-11-23 */ @Service public class PropertyCompanyServiceImpl extends ServiceImpl implements IPropertyCompanyService { @Autowired private IDeptService deptService; @Autowired private IWxPayService wxPayService; @Autowired private IAliPayService aliPayService; /** * 自定义分页 * * @param page * @param propertyCompany * @return */ @Override public IPage selectPropertyCompanyPage(IPage page, PropertyCompanyVO propertyCompany) { return page.setRecords(baseMapper.selectPropertyCompanyPage(page, propertyCompany)); } /** * 物业公司列表查询(不分页) * * @param propertyCompany * @return */ @Override public List getPropertyCompanyList(PropertyCompanyVO propertyCompany) { String userRole = AuthUtil.getUserRole(); if (!AuthUtil.isAdministrator() && userRole.contains("wygly")) { Long deptId = Func.firstLong(AuthUtil.getDeptId()); Dept dept = SysCache.getDept(deptId); propertyCompany.setName(dept.getDeptName()); } return baseMapper.getPropertyCompanyList(propertyCompany); } /** * 物业公司查询对应的用户信息 * * @param propertyCompany * @return */ @Override public Object getUserByPropertyCompany(PropertyCompanyVO propertyCompany) { return baseMapper.getUserByPropertyCompany(propertyCompany); } /** * 物业公司 自定义新增或修改 */ @Override @Transactional(rollbackFor = Exception.class) public boolean saveOrUpdatePropertyCompany(PropertyCompanyEntity propertyCompany) { boolean flag = false; Dept dept = new Dept(); dept.setDeptName(propertyCompany.getName()); dept.setFullName(propertyCompany.getName()); // 判断新增还是修改 if (null != propertyCompany.getId()) { // 修改 updateById(propertyCompany); // 修改住址机构信息 dept.setId(propertyCompany.getDeptId()); flag = deptService.updateById(dept); } else { // 查询父级id QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("is_deleted", 0).eq("dept_name", "物业公司"); Dept parentDept = deptService.getOne(wrapper); dept.setParentId(parentDept.getId()); dept.setDeptCategory(1); dept.setSort(1); // 新增机构 flag = deptService.save(dept); // 新增物业公司 propertyCompany.setDeptId(dept.getId()); // 新增用户 User user = new User(); user.setAccount(propertyCompany.getName()); user.setUserType(1); user.setRealName(propertyCompany.getName()); user.setName(propertyCompany.getName()); user.setPassword(DigestUtil.encrypt(CommonConstant.DEFAULT_PASSWORD)); user.setRoleId("1727864473262817281"); user.setDeptId(dept.getId().toString()); IUserService bean = SpringUtils.getBean(IUserService.class); boolean save = bean.save(user); // 新增用户和机构关联关系 if (save) { UserDept userDept = new UserDept(); userDept.setUserId(user.getId()); userDept.setDeptId(dept.getId()); IUserDeptService bean1 = SpringUtils.getBean(IUserDeptService.class); bean1.save(userDept); } System.out.println("保存用户结果:" + save); flag = save(propertyCompany); } return flag; } /** * 物业公司 删除 */ @Transactional(rollbackFor = Exception.class) @Override public boolean deleteByIds(List toIntList) { // 先查询对应的机构id集合 List deptIds = baseMapper.getDeptListByCompanyId(toIntList); // 删除机构,删除物业公司 return removeByIds(toIntList) && deptService.removeByIds(deptIds); } @Override public PropertyCompanyVO getUserCompayDistrict(String houseCode) { return baseMapper.getUserCompayDistrict(houseCode); } /** * 物业公司 自定义详情查询 * * @param propertyCompany * @return */ @Override public PropertyCompanyDetailVO getDetail(PropertyCompanyVO propertyCompany) { return baseMapper.getDetail(propertyCompany); } @Override public Boolean payConfig(WxPayInfo wxPayInfo, AliPayInfo aliPayInfo) { boolean wx = wxPayService.saveOrUpdate(wxPayInfo); boolean ali = aliPayService.saveOrUpdate(aliPayInfo); return wx && ali; } @Override public PropertyCompanyDetailVO getPayConfig(PropertyCompanyVO propertyCompany) { // PropertyCompanyDetailVO detail = this.getDetail(propertyCompany); PropertyCompanyDetailVO detail = baseMapper.getDetailVO(propertyCompany); AliPayInfo pA = new AliPayInfo(); pA.setPropertyCompanyId(detail.getId().toString()); detail.setAliPayInfo(aliPayService.getOne(Condition.getQueryWrapper(pA))); WxPayInfo pW = new WxPayInfo(); pW.setPropertyCompanyId(detail.getId().toString()); detail.setWxPayInfo(wxPayService.getOne(Condition.getQueryWrapper(pW))); return detail; } /** * 通过用户机构查询 * * @return */ @Override public PropertyCompanyDetailVO getDetailByDeptId() { String userRole = AuthUtil.getUserRole(); if (RoleUtil.isProperty(userRole)) { // 通过用户机构查询用户的物业公司 IPropertyCompanyService bean = SpringUtil.getBean(IPropertyCompanyService.class); PropertyCompanyEntity propertyCompanyEntity = bean.getOne(Wrappers.lambdaQuery().eq(PropertyCompanyEntity::getDeptId, AuthUtil.getDeptId()).last("limit 1")); if (propertyCompanyEntity != null) { return baseMapper.getDetailVO(BeanUtil.copyProperties(propertyCompanyEntity, PropertyCompanyVO.class)); } } return null; } @Override public PropertyDistrictInfo getPropertyDistrictInfo(PropertyDistrictInfo propertyDistrictInfo) { return baseMapper.getPropertyDistrictInfo(propertyDistrictInfo); } }