From 3aef471b170a703b501ddb4d9d2a12791d07ff28 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 15 四月 2026 20:06:56 +0800
Subject: [PATCH] 代码生成
---
server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java | 835 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 830 insertions(+), 5 deletions(-)
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java
index a69fee6..b46cb11 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java
@@ -1,24 +1,44 @@
package com.doumee.service.business.impl;
+import com.alibaba.fastjson.JSONObject;
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.config.jwt.JwtTokenUtil;
import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
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.*;
+import com.doumee.dao.system.SystemUserMapper;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.dao.vo.ShopDetailVO;
+import com.doumee.dao.vo.ShopLoginVO;
+import com.doumee.dao.vo.ShopNearbyVO;
+import com.doumee.dao.vo.ShopWebDetailVO;
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.data.redis.core.RedisTemplate;
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瀹炵幇
@@ -31,6 +51,23 @@
@Autowired
private ShopInfoMapper shopInfoMapper;
+ @Autowired
+ private MemberMapper memberMapper;
+
+ @Autowired
+ private MultifileMapper multifileMapper;
+
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
+
+ @Autowired
+ private SystemUserMapper systemUserMapper;
+
+ @Autowired
+ private AreasBiz areasBiz;
+
+ @Autowired
+ private RedisTemplate<String,Object> redisTemplate;
@Override
public Integer create(ShopInfo shopInfo) {
shopInfoMapper.insert(shopInfo);
@@ -50,7 +87,7 @@
@Override
public void deleteByIdInBatch(List<Integer> ids) {
- if (CollectionUtils.isEmpty(ids)) {
+ if (ids == null || ids.isEmpty()) {
return;
}
shopInfoMapper.deleteBatchIds(ids);
@@ -63,7 +100,7 @@
@Override
public void updateByIdInBatch(List<ShopInfo> shopInfos) {
- if (CollectionUtils.isEmpty(shopInfos)) {
+ if (shopInfos == null || shopInfos.isEmpty()) {
return;
}
for (ShopInfo shopInfo : shopInfos) {
@@ -111,6 +148,12 @@
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());
}
@@ -139,6 +182,12 @@
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().getAuditStatusList() != null && !pageWrap.getModel().getAuditStatusList().isEmpty()) {
+ queryWrapper.lambda().in(ShopInfo::getAuditStatus, pageWrap.getModel().getAuditStatusList());
+ }
if (pageWrap.getModel().getStatus() != null) {
queryWrapper.lambda().eq(ShopInfo::getStatus, pageWrap.getModel().getStatus());
}
@@ -168,4 +217,780 @@
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());
+ if(Objects.nonNull(shopInfo.getAuditUserId())){
+ SystemUser systemUser = systemUserMapper.selectById(shopInfo.getAuditUserId());
+ if (systemUser != null) vo.setAuditName(systemUser.getRealname());
+
+ }
+ 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.setIdcardImgUrl(StringUtils.isNotBlank(shopInfo.getIdcardImg()) ? imgPrefix + shopInfo.getIdcardImg() : null);
+ vo.setIdcardImgBack(shopInfo.getIdcardImgBack());
+ vo.setIdcardImgBackUrl(StringUtils.isNotBlank(shopInfo.getIdcardImgBack()) ? imgPrefix + shopInfo.getIdcardImgBack() : null);
+ vo.setBusinessImg(shopInfo.getBusinessImg());
+ vo.setBusinessImgUrl(StringUtils.isNotBlank(shopInfo.getBusinessImg()) ? imgPrefix + shopInfo.getBusinessImg() : null);
+
+ // 鏌ヨ闄勪欢
+ 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<>();
+ Map<Integer, List<String>> fileUrlMap = new HashMap<>();
+ for (Multifile f : files) {
+ fileMap.computeIfAbsent(f.getObjType(), k -> new ArrayList<>()).add(f.getFileurl());
+ String fullUrl = StringUtils.isNotBlank(f.getFileurl()) ? imgPrefix + f.getFileurl() : f.getFileurl();
+ fileUrlMap.computeIfAbsent(f.getObjType(), k -> new ArrayList<>()).add(fullUrl);
+ }
+
+ 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<>()));
+
+ vo.setStoreFrontImgUrls(fileUrlMap.getOrDefault(Constants.FileType.STORE_FRONT.getKey(), new ArrayList<>()));
+ vo.setStoreInteriorImgUrls(fileUrlMap.getOrDefault(Constants.FileType.STORE_INTERIOR.getKey(), new ArrayList<>()));
+ vo.setOtherMaterialImgUrls(fileUrlMap.getOrDefault(Constants.FileType.OTHER_MATERIAL.getKey(), new ArrayList<>()));
+ vo.setLaborContractImgUrls(fileUrlMap.getOrDefault(Constants.FileType.LABOR_CONTRACT.getKey(), new ArrayList<>()));
+ vo.setSocialSecurityImgUrls(fileUrlMap.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 && StringUtils.isNotBlank(payMember.getCoverImage())) {
+ String memberPrefix = "";
+ try {
+ memberPrefix = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.RESOURCE_PATH).getCode()
+ + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.MEMBER_FILES).getCode();
+ } catch (Exception e) {
+ // 鏈厤缃椂蹇界暐
+ }
+ vo.setPayMemberCoverImage(memberPrefix + payMember.getCoverImage());
+ }
+ }
+
+ return vo;
+ }
+
+ @Override
+ public PageData<ShopNearbyVO> findNearbyShops(PageWrap<ShopNearbyDTO> pageWrap) {
+ IPage<ShopInfo> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ ShopNearbyDTO dto = pageWrap.getModel();
+ Double longitude = dto.getLongitude();
+ Double latitude = dto.getLatitude();
+ Integer sortType = dto.getSortType();
+ Integer distanceMeter = dto.getDistance();
+
+ // Haversine璺濈鍏紡锛堝崟浣峩m锛�
+ String distanceFormula = "(6371 * acos(cos(radians(" + latitude + ")) * cos(radians(latitude)) " +
+ "* cos(radians(longitude) - radians(" + longitude + ")) " +
+ "+ sin(radians(" + latitude + ")) * sin(radians(latitude))))";
+
+ QueryWrapper<ShopInfo> qw = new QueryWrapper<>();
+ qw.lambda()
+ .eq(ShopInfo::getDeleted, Constants.ZERO)
+ .eq(ShopInfo::getStatus, Constants.ZERO)
+ .eq(ShopInfo::getAuditStatus, Constants.THREE);
+
+ // 闂ㄥ簵钀ヤ笟绫诲瀷绛涢��
+ if (dto.getBusinessType() != null) {
+ qw.lambda().eq(ShopInfo::getBusinessType, dto.getBusinessType());
+ }
+
+ // 闂ㄥ簵鍚嶇О妯$硦鏌ヨ
+ if (StringUtils.isNotBlank(dto.getName())) {
+ qw.lambda().like(ShopInfo::getName, dto.getName());
+ }
+
+ // 璺濈绛涢�夛紙鍗曚綅锛氱背 鈫� 杞崲涓簁m姣旇緝锛�
+ if (distanceMeter != null && distanceMeter > 0) {
+ double maxKm = distanceMeter / 1000.0;
+ qw.apply(distanceFormula + " <= {0}", maxKm);
+ }
+
+ // 鎺掑簭
+ if (longitude != null && latitude != null) {
+ if (sortType != null && sortType == 2) {
+ // 鎸夎瘎鍒嗛檷搴�
+ qw.last("ORDER BY score DESC");
+ } else {
+ // 榛樿锛氭寜璺濈鍗囧簭
+ qw.last("ORDER BY " + distanceFormula + " ASC");
+ }
+ } else {
+ qw.lambda().orderByDesc(ShopInfo::getCreateTime);
+ }
+
+ IPage<ShopInfo> result = shopInfoMapper.selectPage(page, qw);
+
+ // 鍥剧墖鍓嶇紑
+ String imgPrefix = getShopPrefix();
+
+ List<ShopNearbyVO> voList = new ArrayList<>();
+ for (ShopInfo shop : result.getRecords()) {
+ ShopNearbyVO vo = new ShopNearbyVO();
+ vo.setId(shop.getId());
+ vo.setName(shop.getName());
+ vo.setShopHours(shop.getShopHours());
+ vo.setAddress(shop.getAddress());
+ vo.setScore(shop.getScore());
+ // 闂ㄥご鐓х涓�寮�
+ vo.setCoverImg(getFirstImage(shop.getId(), Constants.FileType.STORE_FRONT.getKey(), imgPrefix));
+ // 璺濈
+ if (longitude != null && latitude != null && shop.getLongitude() != null && shop.getLatitude() != null) {
+ double distKm = haversine(latitude, longitude, shop.getLatitude(), shop.getLongitude());
+ vo.setDistanceText(formatDistance(distKm));
+ }
+ voList.add(vo);
+ }
+ IPage<ShopNearbyVO> vPage = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ PageData<ShopNearbyVO> pageData = PageData.from(vPage);
+ pageData.setRecords(voList);
+ pageData.setTotal(result.getTotal());
+ pageData.setPage(result.getCurrent());
+ pageData.setCapacity(result.getSize());
+ return pageData;
+ }
+
+ @Override
+ public ShopWebDetailVO getShopWebDetail(ShopDetailQueryDTO dto) {
+ ShopInfo shop = shopInfoMapper.selectById(dto.getId());
+ if (Objects.isNull(shop) || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+
+ ShopWebDetailVO vo = new ShopWebDetailVO();
+ vo.setId(shop.getId());
+ vo.setName(shop.getName());
+ vo.setAddress(shop.getAddress());
+ vo.setContent(shop.getContent());
+
+ // 闂ㄥご鐓� + 鍐呴儴鐓� 鍏ㄨ矾寰勯泦鍚�
+ String imgPrefix = getShopPrefix();
+ List<String> images = new ArrayList<>();
+ images.addAll(getImageList(dto.getId(), Constants.FileType.STORE_FRONT.getKey(), imgPrefix));
+ images.addAll(getImageList(dto.getId(), Constants.FileType.STORE_INTERIOR.getKey(), imgPrefix));
+ vo.setImages(images);
+
+ // 璺濈
+ if (dto.getLongitude() != null && dto.getLatitude() != null && shop.getLongitude() != null && shop.getLatitude() != null) {
+ double distKm = haversine(dto.getLatitude(), dto.getLongitude(), shop.getLatitude(), shop.getLongitude());
+ vo.setDistanceText(formatDistance(distKm));
+ }
+ return vo;
+ }
+
+ @Override
+ public void maintainShopInfo(Integer memberId, ShopInfoMaintainDTO dto) {
+ // 闂ㄥ簵涓婚敭涓庝細鍛樹富閿竴鑷�
+ ShopInfo shop = shopInfoMapper.selectById(memberId);
+ if (Objects.isNull(shop) || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ // 闇�瑕佹敮浠樺畬鎶奸噾鍚庢墠鍙淮鎶わ紙auditStatus >= 2锛�
+ if (shop.getAuditStatus() == null || shop.getAuditStatus() < Constants.TWO) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇峰厛瀹屾垚鎶奸噾鏀粯鍚庡啀缁存姢闂ㄥ簵淇℃伅");
+ }
+ UpdateWrapper<ShopInfo> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.lambda()
+ .eq(ShopInfo::getId, shop.getId())
+ .set(ShopInfo::getUpdateTime, new Date())
+ .set(dto.getCoverImg() != null, ShopInfo::getCoverImg, dto.getCoverImg())
+ .set(dto.getContent() != null, ShopInfo::getContent, dto.getContent())
+ .set(dto.getDepositTypes() != null, ShopInfo::getDepositTypes, dto.getDepositTypes())
+ .set(dto.getFeeStandard() != null, ShopInfo::getFeeStandard, dto.getFeeStandard())
+ .set(dto.getDeliveryArea() != null, ShopInfo::getDeliveryArea, dto.getDeliveryArea())
+ .set(dto.getShopHours() != null, ShopInfo::getShopHours, dto.getShopHours())
+ .set(dto.getBusinessType() != null, ShopInfo::getBusinessType, dto.getBusinessType());
+ shopInfoMapper.update(updateWrapper);
+ }
+
+ @Override
+ public ShopInfoMaintainDTO getShopMaintainInfo(Integer memberId) {
+ ShopInfo shop = shopInfoMapper.selectById(memberId);
+ if (Objects.isNull(shop) || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) {
+ return null;
+ }
+ ShopInfoMaintainDTO dto = new ShopInfoMaintainDTO();
+ dto.setCoverImg(shop.getCoverImg());
+ dto.setContent(shop.getContent());
+ dto.setDepositTypes(shop.getDepositTypes());
+ dto.setFeeStandard(shop.getFeeStandard());
+ dto.setDeliveryArea(shop.getDeliveryArea());
+ dto.setShopHours(shop.getShopHours());
+ dto.setBusinessType(shop.getBusinessType());
+ return dto;
+ }
+
+ /**
+ * Haversine鍏紡璁$畻涓ょ偣闂磋窛绂伙紙km锛�
+ */
+ private double haversine(double lat1, double lng1, double lat2, double lng2) {
+ double R = 6371;
+ double dLat = Math.toRadians(lat2 - lat1);
+ double dLng = Math.toRadians(lng2 - lng1);
+ double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
+ + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
+ * Math.sin(dLng / 2) * Math.sin(dLng / 2);
+ double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
+ return R * c;
+ }
+
+ /**
+ * 鏍煎紡鍖栬窛绂伙細灏忎簬1km鏄剧ず绫筹紝澶т簬绛変簬1km鏄剧ず鍗冪背锛堜繚鐣�1浣嶅皬鏁帮級
+ */
+ private String formatDistance(double km) {
+ if (km < 1) {
+ return Math.round(km * 1000) + "m";
+ }
+ return String.format("%.1fkm", km);
+ }
+
+ /**
+ * 鑾峰彇闂ㄥ簵鍥剧墖鍓嶇紑
+ */
+ private String getShopPrefix() {
+ try {
+ return systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.RESOURCE_PATH).getCode()
+ + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.SHOP_FILES).getCode();
+ } catch (Exception e) {
+ return "";
+ }
+ }
+
+ /**
+ * 鑾峰彇闂ㄥ簵鎸囧畾绫诲瀷鐨勭涓�寮犲浘鐗囧叏璺緞
+ */
+ private String getFirstImage(Integer shopId, int objType, String imgPrefix) {
+ QueryWrapper<Multifile> qw = new QueryWrapper<>();
+ qw.lambda()
+ .eq(Multifile::getObjId, shopId)
+ .eq(Multifile::getObjType, objType)
+ .eq(Multifile::getIsdeleted, Constants.ZERO)
+ .orderByAsc(Multifile::getSortnum)
+ .last("limit 1");
+ Multifile f = multifileMapper.selectOne(qw);
+ return f != null && StringUtils.isNotBlank(f.getFileurl()) ? imgPrefix + f.getFileurl() : null;
+ }
+
+ /**
+ * 鑾峰彇闂ㄥ簵鎸囧畾绫诲瀷鐨勬墍鏈夊浘鐗囧叏璺緞
+ */
+ private List<String> getImageList(Integer shopId, int objType, String imgPrefix) {
+ QueryWrapper<Multifile> qw = new QueryWrapper<>();
+ qw.lambda()
+ .eq(Multifile::getObjId, shopId)
+ .eq(Multifile::getObjType, objType)
+ .eq(Multifile::getIsdeleted, Constants.ZERO)
+ .orderByAsc(Multifile::getSortnum);
+ List<Multifile> files = multifileMapper.selectList(qw);
+ List<String> urls = new ArrayList<>();
+ for (Multifile f : files) {
+ if (StringUtils.isNotBlank(f.getFileurl())) {
+ urls.add(imgPrefix + f.getFileurl());
+ }
+ }
+ return urls;
+ }
+
+
+
+ /**
+ * 鍟嗘埛璐﹀彿瀵嗙爜鐧诲綍
+ * @param dto
+ * @return
+ */
+ @Override
+ public ShopLoginVO shopPasswordLogin(ShopLoginDTO dto){
+ if(StringUtils.isBlank(dto.getTelephone())
+ || StringUtils.isBlank(dto.getPassword())
+ || StringUtils.isBlank(dto.getOpenid())
+ ){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶈兘涓虹┖");
+ }
+ ShopInfo shop = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda().eq(ShopInfo::getTelephone, dto.getTelephone())
+ .eq(ShopInfo::getDeleted,Constants.ZERO)
+ .last("limit 1")
+ );
+ if(shop==null){
+ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+ }
+ //鍔犲瘑瀵嗙爜
+ String pwd = Utils.Secure.encryptPassword( dto.getPassword(), shop.getSalt());
+ if(!pwd.equals(shop.getPassword())){
+ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+ }
+
+ // 鏇存柊褰撳墠鐧诲綍浼氬憳鐨刼penid鍒伴棬搴�
+ if(StringUtils.isNotBlank(dto.getOpenid())){
+ shopInfoMapper.update(null,new UpdateWrapper<ShopInfo>().lambda()
+ .set(ShopInfo::getOpenid,dto.getOpenid())
+ .eq(ShopInfo::getId,shop.getId())
+ );
+ // 娓呯┖鍏朵粬闂ㄥ簵鐨勫悓涓�openid锛屼繚璇佸敮涓�
+ shopInfoMapper.update(null,new UpdateWrapper<ShopInfo>().lambda()
+ .set(ShopInfo::getOpenid,null)
+ .eq(ShopInfo::getOpenid,dto.getOpenid())
+ .ne(ShopInfo::getId,shop.getId())
+ );
+ shop.setOpenid(dto.getOpenid());
+ }
+
+ // 鍒涘缓token锛坓enerateTokenForRedis 宸茶嚜鍔ㄦ竻闄よ鐢ㄦ埛鏃oken锛屼繚璇佸敮涓�鏈夋晥锛�
+ String token = JwtTokenUtil.generateTokenForRedis(shop.getId(), Constants.TWO, JSONObject.toJSONString(shop), redisTemplate);
+
+ // 鏋勫缓鍝嶅簲
+ ShopLoginVO vo = new ShopLoginVO();
+ vo.setToken(token);
+ vo.setShopId(shop.getId());
+ vo.setShopName(shop.getName());
+ vo.setCompanyType(shop.getCompanyType());
+
+ // 鎵�灞炲煄甯傚悕绉�
+ Areas area = areasBiz.resolveArea(shop.getAreaId());
+ if (area != null) {
+ vo.setCityName(area.getCityName());
+ }
+ return vo;
+ }
+
+ @Override
+ public ShopLoginVO shopSilentLogin(String openid) {
+ if (StringUtils.isBlank(openid)) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "openid涓嶈兘涓虹┖");
+ }
+ ShopInfo shop = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
+ .eq(ShopInfo::getOpenid, openid)
+ .eq(ShopInfo::getDeleted, Constants.ZERO)
+ .last("limit 1"));
+ if (shop == null) {
+ return null;
+ }
+
+ // 鍒涘缓token锛坓enerateTokenForRedis 宸茶嚜鍔ㄦ竻闄よ鐢ㄦ埛鏃oken锛屼繚璇佸敮涓�鏈夋晥锛�
+ String token = JwtTokenUtil.generateTokenForRedis(shop.getId(), Constants.TWO, JSONObject.toJSONString(shop), redisTemplate);
+
+ ShopLoginVO vo = new ShopLoginVO();
+ vo.setToken(token);
+ vo.setShopId(shop.getId());
+ vo.setShopName(shop.getName());
+ vo.setCompanyType(shop.getCompanyType());
+
+ Areas area = areasBiz.resolveArea(shop.getAreaId());
+ if (area != null) {
+ vo.setCityName(area.getCityName());
+ }
+ return vo;
+ }
+
}
--
Gitblit v1.9.3