| | |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.biz.system.AreasBiz; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.MultifileMapper; |
| | | import com.doumee.dao.business.ShopInfoMapper; |
| | | import com.doumee.dao.business.model.Areas; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.Multifile; |
| | | import com.doumee.dao.business.model.ShopInfo; |
| | | import com.doumee.dao.dto.AuditDTO; |
| | | import com.doumee.dao.dto.ChangeStatusDTO; |
| | | import com.doumee.dao.dto.ResetPasswordDTO; |
| | | import com.doumee.dao.dto.ShopApplyDTO; |
| | | import com.doumee.dao.dto.ShopUpdateDTO; |
| | | import com.doumee.dao.vo.ShopDetailVO; |
| | | import com.doumee.service.business.ShopInfoService; |
| | | import org.apache.commons.collections.CollectionUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.commons.lang3.RandomStringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 门店信息Service实现 |
| | |
| | | |
| | | @Autowired |
| | | private ShopInfoMapper shopInfoMapper; |
| | | |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | |
| | | @Autowired |
| | | private MultifileMapper multifileMapper; |
| | | |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | |
| | | @Autowired |
| | | private AreasBiz areasBiz; |
| | | |
| | | @Override |
| | | public Integer create(ShopInfo shopInfo) { |
| | |
| | | |
| | | @Override |
| | | public void deleteByIdInBatch(List<Integer> ids) { |
| | | if (CollectionUtils.isEmpty(ids)) { |
| | | if (ids == null || ids.isEmpty()) { |
| | | return; |
| | | } |
| | | shopInfoMapper.deleteBatchIds(ids); |
| | |
| | | |
| | | @Override |
| | | public void updateByIdInBatch(List<ShopInfo> shopInfos) { |
| | | if (CollectionUtils.isEmpty(shopInfos)) { |
| | | if (shopInfos == null || shopInfos.isEmpty()) { |
| | | return; |
| | | } |
| | | for (ShopInfo shopInfo : shopInfos) { |
| | |
| | | queryWrapper.lambda().ge(ShopInfo::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())); |
| | | queryWrapper.lambda().le(ShopInfo::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())); |
| | | } |
| | | if (pageWrap.getModel().getCreateStartTime() != null) { |
| | | queryWrapper.lambda().ge(ShopInfo::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateStartTime())); |
| | | } |
| | | if (pageWrap.getModel().getCreateEndTime() != null) { |
| | | queryWrapper.lambda().le(ShopInfo::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateEndTime())); |
| | | } |
| | | if (pageWrap.getModel().getUpdateUser() != null) { |
| | | queryWrapper.lambda().eq(ShopInfo::getUpdateUser, pageWrap.getModel().getUpdateUser()); |
| | | } |
| | |
| | | if (pageWrap.getModel().getAreaId() != null) { |
| | | queryWrapper.lambda().eq(ShopInfo::getAreaId, pageWrap.getModel().getAreaId()); |
| | | } |
| | | if (pageWrap.getModel().getAuditStatus() != null) { |
| | | queryWrapper.lambda().eq(ShopInfo::getAuditStatus, pageWrap.getModel().getAuditStatus()); |
| | | } |
| | | if (pageWrap.getModel().getStatus() != null) { |
| | | queryWrapper.lambda().eq(ShopInfo::getStatus, pageWrap.getModel().getStatus()); |
| | | } |
| | |
| | | return shopInfoMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | // ========== 门店入驻业务 ========== |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void applyShop(ShopApplyDTO request, Member member) { |
| | | Integer memberId = member.getId(); |
| | | |
| | | // 1. 校验门店手机号唯一性(shop_info.telephone) |
| | | checkTelephoneUnique(request.getTelephone(), null); |
| | | |
| | | // 2. 根据类型校验附件 |
| | | if (Constants.equalsInteger(request.getCompanyType(), Constants.ZERO)) { |
| | | // 个人类型:必须上传劳动合同和社保证明 |
| | | if (CollectionUtils.isEmpty(request.getLaborContractImgs())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "个人类型必须上传有效劳动合同"); |
| | | } |
| | | if (CollectionUtils.isEmpty(request.getSocialSecurityImgs())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "个人类型必须上传社保缴纳证明"); |
| | | } |
| | | } else if (Constants.equalsInteger(request.getCompanyType(), Constants.ONE)) { |
| | | // 企业类型:必须填写法人信息和营业执照 |
| | | if (StringUtils.isBlank(request.getBusinessImg())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "企业类型必须上传营业执照"); |
| | | } |
| | | if (StringUtils.isBlank(request.getLegalPersonName())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "企业类型必须填写法人姓名"); |
| | | } |
| | | if (StringUtils.isBlank(request.getLegalPersonPhone())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "企业类型必须填写法人电话"); |
| | | } |
| | | if (StringUtils.isBlank(request.getLegalPersonCard())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "企业类型必须填写法人身份证号码"); |
| | | } |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | String rawPassword = generateDefaultPassword(request.getTelephone()); |
| | | String salt = RandomStringUtils.randomAlphabetic(6); |
| | | String encryptedPassword = Utils.Secure.encryptPassword(rawPassword, salt); |
| | | |
| | | // 3. 查询该会员是否已有门店记录 |
| | | QueryWrapper<ShopInfo> existQw = new QueryWrapper<>(); |
| | | existQw.lambda() |
| | | .eq(ShopInfo::getRegionMemberId, memberId) |
| | | .eq(ShopInfo::getDeleted, Constants.ZERO) |
| | | .last("limit 1"); |
| | | ShopInfo existing = shopInfoMapper.selectOne(existQw); |
| | | |
| | | Integer shopId; |
| | | if (existing != null) { |
| | | // 校验状态:只有待审批(0)和被驳回(2)可修改 |
| | | if (!Constants.equalsInteger(existing.getAuditStatus(), Constants.ZERO) |
| | | && !Constants.equalsInteger(existing.getAuditStatus(), Constants.TWO)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "当前门店状态不允许修改"); |
| | | } |
| | | // 校验openid匹配:当前登录会员的openid必须与门店的openid一致 |
| | | if (existing.getOpenid() != null && !existing.getOpenid().equals(member.getOpenid())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "无权限操作当前门店信息"); |
| | | } |
| | | // 校验手机号唯一性(排除自身) |
| | | if (!request.getTelephone().equals(existing.getTelephone())) { |
| | | checkTelephoneUnique(request.getTelephone(), existing.getId()); |
| | | } |
| | | // 更新 |
| | | existing.setCompanyType(request.getCompanyType()); |
| | | existing.setName(request.getName()); |
| | | existing.setTelephone(request.getTelephone()); |
| | | existing.setLinkName(request.getLinkName()); |
| | | existing.setLinkPhone(request.getLinkPhone()); |
| | | existing.setIdcard(request.getIdcard()); |
| | | existing.setAreaId(request.getAreaId()); |
| | | existing.setLongitude(request.getLongitude()); |
| | | existing.setLatitude(request.getLatitude()); |
| | | existing.setAddress(request.getAddress()); |
| | | existing.setIdcardImg(request.getIdcardImg()); |
| | | existing.setIdcardImgBack(request.getIdcardImgBack()); |
| | | existing.setBusinessImg(request.getBusinessImg()); |
| | | existing.setLegalPersonName(request.getLegalPersonName()); |
| | | existing.setLegalPersonPhone(request.getLegalPersonPhone()); |
| | | existing.setLegalPersonCard(request.getLegalPersonCard()); |
| | | existing.setPassword(encryptedPassword); |
| | | existing.setSalt(salt); |
| | | existing.setAuditStatus(Constants.ZERO); |
| | | existing.setUpdateTime(now); |
| | | existing.setUpdateUser(memberId); |
| | | existing.setAuditRemark(null); |
| | | existing.setAuditTime(null); |
| | | existing.setAuditUserId(null); |
| | | shopInfoMapper.updateById(existing); |
| | | shopId = existing.getId(); |
| | | } else { |
| | | // 新建 |
| | | ShopInfo shopInfo = new ShopInfo(); |
| | | shopInfo.setCompanyType(request.getCompanyType()); |
| | | shopInfo.setName(request.getName()); |
| | | shopInfo.setTelephone(request.getTelephone()); |
| | | shopInfo.setLinkName(request.getLinkName()); |
| | | shopInfo.setLinkPhone(request.getLinkPhone()); |
| | | shopInfo.setIdcard(request.getIdcard()); |
| | | shopInfo.setAreaId(request.getAreaId()); |
| | | shopInfo.setLongitude(request.getLongitude()); |
| | | shopInfo.setLatitude(request.getLatitude()); |
| | | shopInfo.setAddress(request.getAddress()); |
| | | shopInfo.setIdcardImg(request.getIdcardImg()); |
| | | shopInfo.setIdcardImgBack(request.getIdcardImgBack()); |
| | | shopInfo.setBusinessImg(request.getBusinessImg()); |
| | | shopInfo.setLegalPersonName(request.getLegalPersonName()); |
| | | shopInfo.setLegalPersonPhone(request.getLegalPersonPhone()); |
| | | shopInfo.setLegalPersonCard(request.getLegalPersonCard()); |
| | | shopInfo.setPassword(encryptedPassword); |
| | | shopInfo.setSalt(salt); |
| | | shopInfo.setOpenid(member.getOpenid()); |
| | | shopInfo.setAuditStatus(Constants.ZERO); |
| | | shopInfo.setStatus(Constants.ZERO); |
| | | shopInfo.setDeleted(Constants.ZERO); |
| | | shopInfo.setCreateTime(now); |
| | | shopInfo.setUpdateTime(now); |
| | | shopInfo.setCreateUser(memberId); |
| | | shopInfo.setRegionMemberId(memberId); |
| | | shopInfoMapper.insert(shopInfo); |
| | | shopId = shopInfo.getId(); |
| | | } |
| | | |
| | | // 4. 删除旧附件记录 |
| | | multifileMapper.delete(new QueryWrapper<Multifile>().lambda() |
| | | .eq(Multifile::getObjId, shopId) |
| | | .in(Multifile::getObjType, |
| | | Constants.FileType.STORE_FRONT.getKey(), |
| | | Constants.FileType.STORE_INTERIOR.getKey(), |
| | | Constants.FileType.OTHER_MATERIAL.getKey(), |
| | | Constants.FileType.LABOR_CONTRACT.getKey(), |
| | | Constants.FileType.SOCIAL_SECURITY.getKey())); |
| | | |
| | | // 5. 保存新附件记录 |
| | | saveMultifileList(shopId, Constants.FileType.STORE_FRONT.getKey(), request.getStoreFrontImgs(), now); |
| | | saveMultifileList(shopId, Constants.FileType.STORE_INTERIOR.getKey(), request.getStoreInteriorImgs(), now); |
| | | saveMultifileList(shopId, Constants.FileType.OTHER_MATERIAL.getKey(), request.getOtherMaterialImgs(), now); |
| | | saveMultifileList(shopId, Constants.FileType.LABOR_CONTRACT.getKey(), request.getLaborContractImgs(), now); |
| | | saveMultifileList(shopId, Constants.FileType.SOCIAL_SECURITY.getKey(), request.getSocialSecurityImgs(), now); |
| | | } |
| | | |
| | | @Override |
| | | public ShopDetailVO getShopDetail(Integer shopId) { |
| | | ShopInfo shopInfo = shopInfoMapper.selectById(shopId); |
| | | if (shopInfo == null || Constants.equalsInteger(shopInfo.getDeleted(), Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | return buildShopDetailVO(shopInfo); |
| | | } |
| | | |
| | | @Override |
| | | public ShopDetailVO getMyShop(Integer memberId) { |
| | | QueryWrapper<ShopInfo> qw = new QueryWrapper<>(); |
| | | qw.lambda() |
| | | .eq(ShopInfo::getRegionMemberId, memberId) |
| | | .eq(ShopInfo::getDeleted, Constants.ZERO) |
| | | .last("limit 1"); |
| | | ShopInfo shopInfo = shopInfoMapper.selectOne(qw); |
| | | if (shopInfo == null) { |
| | | return null; |
| | | } |
| | | return buildShopDetailVO(shopInfo); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void auditShop(AuditDTO auditDTO) { |
| | | if (auditDTO.getId() == null) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "主键不能为空"); |
| | | } |
| | | if (auditDTO.getAuditStatus() == null |
| | | || (auditDTO.getAuditStatus() != 0 && auditDTO.getAuditStatus() != 1)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "审批状态参数错误"); |
| | | } |
| | | ShopInfo shopInfo = shopInfoMapper.selectById(auditDTO.getId()); |
| | | if (shopInfo == null || Constants.equalsInteger(shopInfo.getDeleted(), Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | if (!Constants.equalsInteger(shopInfo.getAuditStatus(), Constants.ZERO)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "当前状态不允许审批"); |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | // auditDTO.auditStatus: 0=通过 → auditStatus=1, 1=驳回 → auditStatus=2 |
| | | Integer newAuditStatus = Constants.equalsInteger(auditDTO.getAuditStatus(), Constants.ZERO) ? Constants.ONE : Constants.TWO; |
| | | shopInfo.setAuditStatus(newAuditStatus); |
| | | shopInfo.setAuditTime(now); |
| | | shopInfo.setAuditRemark(auditDTO.getAuditRemark()); |
| | | shopInfo.setAuditUserId(auditDTO.getAuditUser()); |
| | | shopInfo.setUpdateTime(now); |
| | | shopInfoMapper.updateById(shopInfo); |
| | | } |
| | | |
| | | @Override |
| | | public void changeStatus(ChangeStatusDTO dto) { |
| | | if (dto.getId() == null) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "主键不能为空"); |
| | | } |
| | | if (dto.getStatus() == null || (dto.getStatus() != 0 && dto.getStatus() != 1)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "状态参数错误,0=启用;1=禁用"); |
| | | } |
| | | ShopInfo shopInfo = shopInfoMapper.selectById(dto.getId()); |
| | | if (shopInfo == null || Constants.equalsInteger(shopInfo.getDeleted(), Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | shopInfo.setStatus(dto.getStatus()); |
| | | shopInfo.setUpdateTime(new Date()); |
| | | shopInfoMapper.updateById(shopInfo); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void resetPassword(ResetPasswordDTO dto) { |
| | | if (dto.getId() == null) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "门店主键不能为空"); |
| | | } |
| | | ShopInfo shopInfo = shopInfoMapper.selectById(dto.getId()); |
| | | if (shopInfo == null || Constants.equalsInteger(shopInfo.getDeleted(), Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | String rawPassword = generateDefaultPassword(shopInfo.getTelephone()); |
| | | String salt = RandomStringUtils.randomAlphabetic(6); |
| | | shopInfo.setPassword(Utils.Secure.encryptPassword(rawPassword, salt)); |
| | | shopInfo.setSalt(salt); |
| | | shopInfo.setUpdateTime(new Date()); |
| | | shopInfoMapper.updateById(shopInfo); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void updateShop(ShopUpdateDTO request) { |
| | | if (request.getId() == null) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "门店主键不能为空"); |
| | | } |
| | | ShopInfo shopInfo = shopInfoMapper.selectById(request.getId()); |
| | | if (shopInfo == null || Constants.equalsInteger(shopInfo.getDeleted(), Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | |
| | | // 校验手机号唯一性(排除自身) |
| | | if (!request.getTelephone().equals(shopInfo.getTelephone())) { |
| | | checkTelephoneUnique(request.getTelephone(), shopInfo.getId()); |
| | | } |
| | | |
| | | // 根据类型校验必填 |
| | | if (Constants.equalsInteger(request.getCompanyType(), Constants.ZERO)) { |
| | | // 个人类型:必须上传劳动合同和社保证明 |
| | | if (CollectionUtils.isEmpty(request.getLaborContractImgs())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "个人类型必须上传有效劳动合同"); |
| | | } |
| | | if (CollectionUtils.isEmpty(request.getSocialSecurityImgs())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "个人类型必须上传社保缴纳证明"); |
| | | } |
| | | } else if (Constants.equalsInteger(request.getCompanyType(), Constants.ONE)) { |
| | | // 企业类型:必须填写法人信息和营业执照 |
| | | if (StringUtils.isBlank(request.getBusinessImg())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "企业类型必须上传营业执照"); |
| | | } |
| | | if (StringUtils.isBlank(request.getLegalPersonName())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "企业类型必须填写法人姓名"); |
| | | } |
| | | if (StringUtils.isBlank(request.getLegalPersonPhone())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "企业类型必须填写法人电话"); |
| | | } |
| | | if (StringUtils.isBlank(request.getLegalPersonCard())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "企业类型必须填写法人身份证号码"); |
| | | } |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | // 更新基础信息 |
| | | shopInfo.setCompanyType(request.getCompanyType()); |
| | | shopInfo.setName(request.getName()); |
| | | shopInfo.setTelephone(request.getTelephone()); |
| | | shopInfo.setLinkName(request.getLinkName()); |
| | | shopInfo.setLinkPhone(request.getLinkPhone()); |
| | | shopInfo.setIdcard(request.getIdcard()); |
| | | shopInfo.setAreaId(request.getAreaId()); |
| | | shopInfo.setLongitude(request.getLongitude()); |
| | | shopInfo.setLatitude(request.getLatitude()); |
| | | shopInfo.setAddress(request.getAddress()); |
| | | // 企业类信息 |
| | | shopInfo.setIdcardImg(request.getIdcardImg()); |
| | | shopInfo.setIdcardImgBack(request.getIdcardImgBack()); |
| | | shopInfo.setBusinessImg(request.getBusinessImg()); |
| | | shopInfo.setLegalPersonName(request.getLegalPersonName()); |
| | | shopInfo.setLegalPersonPhone(request.getLegalPersonPhone()); |
| | | shopInfo.setLegalPersonCard(request.getLegalPersonCard()); |
| | | shopInfo.setUpdateTime(now); |
| | | shopInfoMapper.updateById(shopInfo); |
| | | |
| | | // 删除旧附件记录 |
| | | multifileMapper.delete(new QueryWrapper<Multifile>().lambda() |
| | | .eq(Multifile::getObjId, shopInfo.getId()) |
| | | .in(Multifile::getObjType, |
| | | Constants.FileType.STORE_FRONT.getKey(), |
| | | Constants.FileType.STORE_INTERIOR.getKey(), |
| | | Constants.FileType.OTHER_MATERIAL.getKey(), |
| | | Constants.FileType.LABOR_CONTRACT.getKey(), |
| | | Constants.FileType.SOCIAL_SECURITY.getKey())); |
| | | |
| | | // 保存新附件记录 |
| | | saveMultifileList(shopInfo.getId(), Constants.FileType.STORE_FRONT.getKey(), request.getStoreFrontImgs(), now); |
| | | saveMultifileList(shopInfo.getId(), Constants.FileType.STORE_INTERIOR.getKey(), request.getStoreInteriorImgs(), now); |
| | | saveMultifileList(shopInfo.getId(), Constants.FileType.OTHER_MATERIAL.getKey(), request.getOtherMaterialImgs(), now); |
| | | saveMultifileList(shopInfo.getId(), Constants.FileType.LABOR_CONTRACT.getKey(), request.getLaborContractImgs(), now); |
| | | saveMultifileList(shopInfo.getId(), Constants.FileType.SOCIAL_SECURITY.getKey(), request.getSocialSecurityImgs(), now); |
| | | } |
| | | |
| | | // ========== 私有方法 ========== |
| | | |
| | | /** |
| | | * 生成默认密码:手机号后6位 + @123456 |
| | | */ |
| | | private String generateDefaultPassword(String telephone) { |
| | | if (StringUtils.isBlank(telephone) || telephone.length() < 6) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "手机号格式异常,无法生成默认密码"); |
| | | } |
| | | return telephone.substring(telephone.length() - 6) + "@123456"; |
| | | } |
| | | |
| | | private void checkTelephoneUnique(String telephone, Integer excludeId) { |
| | | QueryWrapper<ShopInfo> qw = new QueryWrapper<>(); |
| | | qw.lambda() |
| | | .eq(ShopInfo::getTelephone, telephone) |
| | | .eq(ShopInfo::getDeleted, Constants.ZERO); |
| | | if (excludeId != null) { |
| | | qw.lambda().ne(ShopInfo::getId, excludeId); |
| | | } |
| | | long count = shopInfoMapper.selectCount(qw); |
| | | if (count > 0) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "该手机号已注册门店"); |
| | | } |
| | | } |
| | | |
| | | private void saveMultifileList(Integer objId, Integer objType, List<String> urls, Date now) { |
| | | if (CollectionUtils.isEmpty(urls)) { |
| | | return; |
| | | } |
| | | int sortNum = 0; |
| | | for (String url : urls) { |
| | | Multifile multifile = new Multifile(); |
| | | multifile.setObjId(objId); |
| | | multifile.setObjType(objType); |
| | | multifile.setType(Constants.ZERO); |
| | | multifile.setFileurl(url); |
| | | multifile.setIsdeleted(Constants.ZERO); |
| | | multifile.setCreateDate(now); |
| | | multifile.setSortnum(sortNum++); |
| | | multifileMapper.insert(multifile); |
| | | } |
| | | } |
| | | |
| | | private ShopDetailVO buildShopDetailVO(ShopInfo shopInfo) { |
| | | ShopDetailVO vo = new ShopDetailVO(); |
| | | vo.setId(shopInfo.getId()); |
| | | vo.setCompanyType(shopInfo.getCompanyType()); |
| | | vo.setName(shopInfo.getName()); |
| | | vo.setTelephone(shopInfo.getTelephone()); |
| | | vo.setLinkName(shopInfo.getLinkName()); |
| | | vo.setLinkPhone(shopInfo.getLinkPhone()); |
| | | vo.setIdcard(shopInfo.getIdcard()); |
| | | vo.setAreaId(shopInfo.getAreaId()); |
| | | // 填充省市区名称及主键 |
| | | Areas area = areasBiz.resolveArea(shopInfo.getAreaId()); |
| | | if (area != null) { |
| | | vo.setProvinceId(area.getProvinceId()); |
| | | vo.setCityId(area.getCityId()); |
| | | vo.setProvinceName(area.getProvinceName()); |
| | | vo.setCityName(area.getCityName()); |
| | | vo.setAreaName(area.getName()); |
| | | } |
| | | vo.setLongitude(shopInfo.getLongitude()); |
| | | vo.setLatitude(shopInfo.getLatitude()); |
| | | vo.setAddress(shopInfo.getAddress()); |
| | | vo.setLegalPersonName(shopInfo.getLegalPersonName()); |
| | | vo.setLegalPersonPhone(shopInfo.getLegalPersonPhone()); |
| | | vo.setLegalPersonCard(shopInfo.getLegalPersonCard()); |
| | | vo.setAuditStatus(shopInfo.getAuditStatus()); |
| | | vo.setStatus(shopInfo.getStatus()); |
| | | vo.setAuditTime(shopInfo.getAuditTime()); |
| | | vo.setAuditRemark(shopInfo.getAuditRemark()); |
| | | vo.setOpenid(shopInfo.getOpenid()); |
| | | vo.setPayStatus(shopInfo.getPayStatus()); |
| | | vo.setScore(shopInfo.getScore()); |
| | | vo.setCreateTime(shopInfo.getCreateTime()); |
| | | |
| | | // 拼接图片前缀 |
| | | String imgPrefix = ""; |
| | | try { |
| | | imgPrefix = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.RESOURCE_PATH).getCode() |
| | | + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.SHOP_FILES).getCode(); |
| | | } catch (Exception e) { |
| | | // 未配置时忽略 |
| | | } |
| | | vo.setImgPrefix(imgPrefix); |
| | | |
| | | // 单图字段返回半路径 |
| | | vo.setIdcardImg(shopInfo.getIdcardImg()); |
| | | vo.setIdcardImgBack(shopInfo.getIdcardImgBack()); |
| | | vo.setBusinessImg(shopInfo.getBusinessImg()); |
| | | |
| | | // 查询附件 |
| | | QueryWrapper<Multifile> fileQw = new QueryWrapper<>(); |
| | | fileQw.lambda() |
| | | .eq(Multifile::getObjId, shopInfo.getId()) |
| | | .eq(Multifile::getIsdeleted, Constants.ZERO) |
| | | .in(Multifile::getObjType, |
| | | Constants.FileType.STORE_FRONT.getKey(), |
| | | Constants.FileType.STORE_INTERIOR.getKey(), |
| | | Constants.FileType.OTHER_MATERIAL.getKey(), |
| | | Constants.FileType.LABOR_CONTRACT.getKey(), |
| | | Constants.FileType.SOCIAL_SECURITY.getKey()) |
| | | .orderByAsc(Multifile::getObjType, Multifile::getSortnum); |
| | | List<Multifile> files = multifileMapper.selectList(fileQw); |
| | | |
| | | // 按 objType 分组,返回半路径 |
| | | Map<Integer, List<String>> fileMap = new HashMap<>(); |
| | | for (Multifile f : files) { |
| | | fileMap.computeIfAbsent(f.getObjType(), k -> new ArrayList<>()).add(f.getFileurl()); |
| | | } |
| | | |
| | | vo.setStoreFrontImgs(fileMap.getOrDefault(Constants.FileType.STORE_FRONT.getKey(), new ArrayList<>())); |
| | | vo.setStoreInteriorImgs(fileMap.getOrDefault(Constants.FileType.STORE_INTERIOR.getKey(), new ArrayList<>())); |
| | | vo.setOtherMaterialImgs(fileMap.getOrDefault(Constants.FileType.OTHER_MATERIAL.getKey(), new ArrayList<>())); |
| | | vo.setLaborContractImgs(fileMap.getOrDefault(Constants.FileType.LABOR_CONTRACT.getKey(), new ArrayList<>())); |
| | | vo.setSocialSecurityImgs(fileMap.getOrDefault(Constants.FileType.SOCIAL_SECURITY.getKey(), new ArrayList<>())); |
| | | |
| | | // 查询绑定开户会员头像(payMemberOpenId 关联 member.openid) |
| | | if (StringUtils.isNotBlank(shopInfo.getPayMemberOpenId())) { |
| | | QueryWrapper<Member> memberQw = new QueryWrapper<>(); |
| | | memberQw.lambda().eq(Member::getOpenid, shopInfo.getPayMemberOpenId()).last("limit 1"); |
| | | Member payMember = memberMapper.selectOne(memberQw); |
| | | if (payMember != null) { |
| | | vo.setPayMemberCoverImage(payMember.getCoverImage()); |
| | | } |
| | | } |
| | | |
| | | return vo; |
| | | } |
| | | |
| | | } |