| | |
| | | import com.tcm.training.admin.member.vo.ClinicDetailVO; |
| | | import com.tcm.training.admin.member.vo.ClinicListItemVO; |
| | | import com.tcm.training.admin.member.vo.ClinicRegionOptionVO; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.jdbc.datasource.DataSourceTransactionManager; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.TransactionDefinition; |
| | | import org.springframework.transaction.TransactionStatus; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.support.DefaultTransactionDefinition; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | |
| | | import java.util.*; |
| | | |
| | | @Service |
| | | @Slf4j |
| | | public class ClinicAppService { |
| | | |
| | | private final ClinicQueryMapper clinicQueryMapper; |
| | |
| | | private final ProvincialAgentMapper provincialAgentMapper; |
| | | private final UserMapper userMapper; |
| | | private final SysRegionMapper sysRegionMapper; |
| | | private final DataSourceTransactionManager transactionManager; |
| | | |
| | | public ClinicAppService(ClinicQueryMapper clinicQueryMapper, ClinicMapper clinicMapper, ProvincialAgentMapper provincialAgentMapper, UserMapper userMapper, SysRegionMapper sysRegionMapper) { |
| | | public ClinicAppService(ClinicQueryMapper clinicQueryMapper, |
| | | ClinicMapper clinicMapper, |
| | | ProvincialAgentMapper provincialAgentMapper, |
| | | UserMapper userMapper, |
| | | SysRegionMapper sysRegionMapper, |
| | | DataSourceTransactionManager transactionManager) { |
| | | this.clinicQueryMapper = clinicQueryMapper; |
| | | this.clinicMapper = clinicMapper; |
| | | this.provincialAgentMapper = provincialAgentMapper; |
| | | this.userMapper = userMapper; |
| | | this.sysRegionMapper = sysRegionMapper; |
| | | this.transactionManager = transactionManager; |
| | | } |
| | | |
| | | public PageResponse<ClinicListItemVO> page(int page, |
| | |
| | | String regionCode, |
| | | String name, |
| | | String phone, |
| | | String agentName, |
| | | LocalDateTime createdFrom, |
| | | LocalDateTime createdTo, |
| | | Integer status) { |
| | |
| | | trimToNull(regionCode), |
| | | trimToNull(name), |
| | | trimToNull(phone), |
| | | trimToNull(agentName), |
| | | createdFrom, |
| | | createdTo, |
| | | status |
| | |
| | | public void export(String regionCode, |
| | | String name, |
| | | String phone, |
| | | String agentName, |
| | | LocalDateTime createdFrom, |
| | | LocalDateTime createdTo, |
| | | Integer status, |
| | |
| | | trimToNull(regionCode), |
| | | trimToNull(name), |
| | | trimToNull(phone), |
| | | trimToNull(agentName), |
| | | createdFrom, |
| | | createdTo, |
| | | status |
| | |
| | | return vo; |
| | | } |
| | | |
| | | @Transactional |
| | | public ClinicDetailVO updateBankAccount(Long id, ClinicBankAccountUpdateRequest request) { |
| | | Clinic clinic = clinicMapper.selectById(id); |
| | | if (clinic == null || (clinic.getDeleted() != null && clinic.getDeleted() == 1)) { |
| | | throw new IllegalArgumentException("诊所不存在"); |
| | | } |
| | | String loginAccount = trimToNull(request.getLoginAccount()); |
| | | AppUser user = userMapper.selectOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, loginAccount).eq(AppUser::getDeleted, 0).last("limit 1")); |
| | | if (user == null) { |
| | | throw new IllegalArgumentException("登录账号不存在"); |
| | | } |
| | | user.setAvatar(trimToNull(request.getAvatar())); |
| | | user.setPhone(loginAccount); |
| | | userMapper.updateById(user); |
| | | Set<String> codes = new LinkedHashSet<String>(); |
| | | addCode(codes, request.getProvinceCode()); |
| | | addCode(codes, request.getCityCode()); |
| | | addCode(codes, request.getDistrictCode()); |
| | | Map<String, SysRegion> regions = new HashMap<String, SysRegion>(); |
| | | List<SysRegion> regionList = sysRegionMapper.selectList(new LambdaQueryWrapper<SysRegion>().in(SysRegion::getCode, codes)); |
| | | if (!regionList.isEmpty()) { |
| | | for (SysRegion region : regionList) { |
| | | regions.put(region.getCode(), region); |
| | | // 手动开启事务 |
| | | DefaultTransactionDefinition def = new DefaultTransactionDefinition(); |
| | | def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); |
| | | TransactionStatus status = transactionManager.getTransaction(def); |
| | | |
| | | try { |
| | | Clinic clinic = clinicMapper.selectById(id); |
| | | if (clinic == null || (clinic.getDeleted() != null && clinic.getDeleted() == 1)) { |
| | | throw new IllegalArgumentException("诊所不存在"); |
| | | } |
| | | String loginAccount = trimToNull(request.getLoginAccount()); |
| | | AppUser user = userMapper.selectOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, loginAccount).eq(AppUser::getDeleted, 0).last("limit 1")); |
| | | if (user == null) { |
| | | throw new IllegalArgumentException("登录账号不存在"); |
| | | } |
| | | user.setAvatar(trimToNull(request.getAvatar())); |
| | | user.setPhone(loginAccount); |
| | | userMapper.updateById(user); |
| | | Set<String> codes = new LinkedHashSet<String>(); |
| | | addCode(codes, request.getProvinceCode()); |
| | | addCode(codes, request.getCityCode()); |
| | | addCode(codes, request.getDistrictCode()); |
| | | Map<String, SysRegion> regions = new HashMap<String, SysRegion>(); |
| | | List<SysRegion> regionList = sysRegionMapper.selectList(new LambdaQueryWrapper<SysRegion>().in(SysRegion::getCode, codes)); |
| | | if (!regionList.isEmpty()) { |
| | | for (SysRegion region : regionList) { |
| | | regions.put(region.getCode(), region); |
| | | } |
| | | } |
| | | |
| | | clinic.setName(trimToNull(request.getName())); |
| | | clinic.setContactPhone(loginAccount); |
| | | clinic.setProvinceCode(trimToNull(request.getProvinceCode())); |
| | | clinic.setProvinceName(regionName(request.getProvinceCode(), request.getProvinceName(), regions)); |
| | | clinic.setCityCode(trimToNull(request.getCityCode())); |
| | | clinic.setCityName(regionName(request.getCityCode(), request.getCityName(), regions)); |
| | | clinic.setDistrictCode(trimToNull(request.getDistrictCode())); |
| | | clinic.setDistrictName(regionName(request.getDistrictCode(), request.getDistrictName(), regions)); |
| | | clinic.setAddress(trimToNull(request.getAddress())); |
| | | clinic.setBusinessLicenseUrl(trimToNull(request.getBusinessLicenseUrl())); |
| | | clinic.setStatus(request.getStatus()); |
| | | clinic.setAgentId(request.getAgentId()); |
| | | clinic.setBankName(trimToNull(request.getBankName())); |
| | | clinic.setAccountHolder(trimToNull(request.getAccountHolder())); |
| | | clinic.setAccountNumber(trimToNull(request.getAccountNumber())); |
| | | clinic.setBranchName(trimToNull(request.getBranchName())); |
| | | clinicMapper.updateById(clinic); |
| | | |
| | | // 提交事务 |
| | | transactionManager.commit(status); |
| | | log.info("诊所本地数据更新成功,clinicId={}", id); |
| | | |
| | | } catch (Exception e) { |
| | | // 发生异常,回滚事务 |
| | | transactionManager.rollback(status); |
| | | log.error("诊所本地数据更新失败,clinicId={}", id, e); |
| | | throw e; |
| | | } |
| | | |
| | | clinic.setName(trimToNull(request.getName())); |
| | | clinic.setContactPhone(loginAccount); |
| | | clinic.setProvinceCode(trimToNull(request.getProvinceCode())); |
| | | clinic.setProvinceName(regionName(request.getProvinceCode(), request.getProvinceName(), regions)); |
| | | clinic.setCityCode(trimToNull(request.getCityCode())); |
| | | clinic.setCityName(regionName(request.getCityCode(), request.getCityName(), regions)); |
| | | clinic.setDistrictCode(trimToNull(request.getDistrictCode())); |
| | | clinic.setDistrictName(regionName(request.getDistrictCode(), request.getDistrictName(), regions)); |
| | | clinic.setAddress(trimToNull(request.getAddress())); |
| | | clinic.setBusinessLicenseUrl(trimToNull(request.getBusinessLicenseUrl())); |
| | | clinic.setStatus(request.getStatus()); |
| | | clinic.setAgentId(request.getAgentId()); |
| | | clinic.setBankName(trimToNull(request.getBankName())); |
| | | clinic.setAccountHolder(trimToNull(request.getAccountHolder())); |
| | | clinic.setAccountNumber(trimToNull(request.getAccountNumber())); |
| | | clinic.setBranchName(trimToNull(request.getBranchName())); |
| | | clinicMapper.updateById(clinic); |
| | | return detail(id); |
| | | } |
| | | |
| | |
| | | item.setPhone(row.getPhone() == null ? "-" : PhoneMasker.mask(row.getPhone())); |
| | | item.setRegionName(defaultText(row.getRegionName())); |
| | | item.setStatus(row.getStatus()); |
| | | item.setAgentName(defaultText(row.getAgentName())); |
| | | item.setUserCount(row.getUserCount() == null ? 0 : row.getUserCount()); |
| | | item.setCreatedAt(row.getCreatedAt()); |
| | | item.setBusinessLicenseUrl(trimToNull(row.getBusinessLicenseUrl())); |