From 761d13616d43b147142d7d33da3a646f6ac15397 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 27 四月 2026 22:25:29 +0800
Subject: [PATCH] 代码生成
---
server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 157 insertions(+), 16 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 efd4e45..d87fa92 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
@@ -14,6 +14,7 @@
import com.doumee.core.utils.Utils;
import com.doumee.biz.system.AreasBiz;
import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.utils.aliyun.AliSmsService;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.MultifileMapper;
import com.doumee.dao.business.OrdersMapper;
@@ -26,6 +27,7 @@
import com.doumee.dao.business.model.PricingRule;
import com.doumee.dao.business.model.ShopInfo;
import com.doumee.dao.dto.*;
+import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.vo.ShopDetailVO;
@@ -36,6 +38,9 @@
import com.doumee.dao.vo.ShopWebDetailVO;
import com.doumee.service.business.AreasService;
import com.doumee.service.business.ShopInfoService;
+import com.doumee.dao.business.SmsrecordMapper;
+import com.doumee.dao.business.model.Smsrecord;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.RandomStringUtils;
@@ -52,6 +57,7 @@
* @author rk
* @date 2026/04/08
*/
+@Slf4j
@Service
public class ShopInfoServiceImpl implements ShopInfoService {
@@ -84,6 +90,9 @@
@Autowired
private AreasService areasService;
+
+ @Autowired
+ private SmsrecordMapper smsrecordMapper;
@Override
public Integer create(ShopInfo shopInfo) {
shopInfoMapper.insert(shopInfo);
@@ -198,6 +207,9 @@
if (pageWrap.getModel().getAreaId() != null) {
queryWrapper.lambda().eq(ShopInfo::getAreaId, pageWrap.getModel().getAreaId());
}
+ if (pageWrap.getModel().getAddress() != null) {
+ queryWrapper.lambda().like(ShopInfo::getAddress, pageWrap.getModel().getAddress());
+ }
if (pageWrap.getModel().getAuditStatus() != null) {
queryWrapper.lambda().eq(ShopInfo::getAuditStatus, pageWrap.getModel().getAuditStatus());
}
@@ -282,8 +294,7 @@
Integer shopId;
if (existing != null) {
// 鏍¢獙鐘舵�侊細鍙湁寰呭鎵�(0)鍜岃椹冲洖(2)鍙慨鏀�
- if (!Constants.equalsInteger(existing.getAuditStatus(), Constants.ZERO)
- && !Constants.equalsInteger(existing.getAuditStatus(), Constants.TWO)) {
+ if (!Constants.equalsInteger(existing.getAuditStatus(), Constants.TWO)) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠闂ㄥ簵鐘舵�佷笉鍏佽淇敼");
}
// 鏍¢獙openid鍖归厤锛氬綋鍓嶇櫥褰曚細鍛樼殑openid蹇呴』涓庨棬搴楃殑openid涓�鑷�
@@ -320,6 +331,8 @@
existing.setAuditTime(null);
existing.setAuditUserId(null);
existing.setAuditStatus(Constants.ZERO);
+ // 璇诲彇鎶奸噾閲戦
+ setDepositAmountFromPricingRule(existing);
shopInfoMapper.updateById(existing);
shopId = existing.getId();
} else {
@@ -347,11 +360,16 @@
shopInfo.setSalt(salt);
shopInfo.setAliAccount(request.getAliAccount());
shopInfo.setAliName(request.getAliName());
+ shopInfo.setAuditStatus(Constants.ZERO);
shopInfo.setStatus(Constants.ZERO);
shopInfo.setDeleted(Constants.ZERO);
shopInfo.setCreateTime(now);
shopInfo.setUpdateTime(now);
shopInfo.setRegionMemberId(member.getId());
+ // 璇诲彇鎶奸噾閲戦
+ setDepositAmountFromPricingRule(shopInfo);
+ // 璁剧疆榛樿閰嶉�佽寖鍥�
+ setDefaultDeliveryRange(shopInfo);
shopInfoMapper.insert(shopInfo);
shopId = shopInfo.getId();
}
@@ -445,17 +463,28 @@
}
}
- // 3. 浠嶱ricingRule璇诲彇鎶奸噾閲戦
- PricingRule pricingRule = pricingRuleMapper.selectOne(new QueryWrapper<PricingRule>().lambda()
- .eq(PricingRule::getDeleted, Constants.ZERO)
- .eq(PricingRule::getType, Constants.THREE)
- .eq(PricingRule::getFieldA, String.valueOf(shopInfo.getCompanyType()))
- .last("limit 1"));
- if (pricingRule != null && StringUtils.isNotBlank(pricingRule.getFieldB())) {
- shopInfo.setDepositAmount(Long.parseLong(pricingRule.getFieldB()));
- }
+ // 3. 浠嶱ricingRule璇诲彇鎶奸噾閲戦锛堝鎵规椂鏇存柊锛�
+ setDepositAmountFromPricingRule(shopInfo);
}
shopInfoMapper.updateById(shopInfo);
+
+ // 鐭俊閫氱煡
+ if (Constants.equalsInteger(newAuditStatus, Constants.ONE)) {
+ // 瀹℃牳閫氳繃 鈫� 閫氱煡缂寸撼鎶奸噾
+ String depositMoney = shopInfo.getDepositAmount() != null
+ ? new java.math.BigDecimal(shopInfo.getDepositAmount())
+ .divide(new java.math.BigDecimal(100), 2, java.math.RoundingMode.HALF_UP).toPlainString() : "0";
+ sendSmsNotify(shopInfo.getTelephone(),
+ Constants.SmsNotify.SHOP_AUTH_APPROVED_DEPOSIT,
+ "storeName", shopInfo.getName(),
+ "money", depositMoney);
+ } else if (Constants.equalsInteger(newAuditStatus, Constants.TWO)) {
+ // 瀹℃牳椹冲洖
+ sendSmsNotify(shopInfo.getTelephone(),
+ Constants.SmsNotify.SHOP_AUTH_REJECTED,
+ "storeName", shopInfo.getName(),
+ "reason", auditDTO.getAuditRemark() != null ? auditDTO.getAuditRemark() : "");
+ }
}
@Override
@@ -732,6 +761,13 @@
}
}
+ // 闂ㄥ簵澶村儚锛氫紭鍏堜娇鐢� coverImg锛屼负绌哄垯鍙栭棬澶寸収绗竴寮�
+ if (StringUtils.isNotBlank(shopInfo.getCoverImg())) {
+ vo.setShopAvatar(imgPrefix + shopInfo.getCoverImg());
+ } else if (!CollectionUtils.isEmpty(vo.getStoreFrontImgUrls())) {
+ vo.setShopAvatar(vo.getStoreFrontImgUrls().get(0));
+ }
+
return vo;
}
@@ -762,7 +798,8 @@
// 闂ㄥ簵鍚嶇О妯$硦鏌ヨ
if (StringUtils.isNotBlank(dto.getName())) {
- qw.lambda().like(ShopInfo::getName, dto.getName());
+ qw.lambda().and(q -> q.like(ShopInfo::getName, dto.getName()).or()
+ .like(ShopInfo::getAddress, dto.getName()));
}
// 鍩庡競绛涢�夛紙areaId鏄尯鍘匡紝闇�鍖归厤鍏秔arentId绛変簬鍩庡競ID锛�
@@ -881,8 +918,8 @@
}
@Override
- public ShopInfoMaintainDTO getShopMaintainInfo(Integer memberId) {
- ShopInfo shop = shopInfoMapper.selectById(memberId);
+ public ShopInfoMaintainDTO getShopMaintainInfo(Integer shopId) {
+ ShopInfo shop = shopInfoMapper.selectById(shopId);
if (Objects.isNull(shop) || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) {
return null;
}
@@ -894,6 +931,10 @@
dto.setDeliveryArea(shop.getDeliveryArea());
dto.setShopHours(shop.getShopHours());
dto.setBusinessType(shop.getBusinessType());
+ // 澶村儚鍏ㄨ矾寰�
+ if (StringUtils.isNotBlank(shop.getCoverImg())) {
+ dto.setCoverImgUrl(getShopPrefix() + shop.getCoverImg());
+ }
return dto;
}
@@ -1109,7 +1150,6 @@
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(),"鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶈兘涓虹┖");
}
@@ -1119,6 +1159,12 @@
);
if(shop==null){
throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+ }
+ if(!Constants.equalsInteger(shop.getAuditStatus(),Constants.THREE)){
+ if(Constants.equalsInteger(shop.getAuditStatus(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇峰畬鎴愬鎵规祦绋� - 鏀粯鎶奸噾");
+ }
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闂ㄥ簵瀹℃壒娴佺▼鏈畬鎴愶紝璇峰畬鎴愬鎵规祦绋�");
}
//鍔犲瘑瀵嗙爜
String pwd = Utils.Secure.encryptPassword( dto.getPassword(), shop.getSalt());
@@ -1143,7 +1189,6 @@
// 鍒涘缓token锛坓enerateTokenForRedis 宸茶嚜鍔ㄦ竻闄よ鐢ㄦ埛鏃oken锛屼繚璇佸敮涓�鏈夋晥锛�
String token = JwtTokenUtil.generateTokenForRedis(shop.getId(), Constants.TWO, JSONObject.toJSONString(shop), redisTemplate);
-
// 鏋勫缓鍝嶅簲
ShopLoginVO vo = new ShopLoginVO();
vo.setToken(token);
@@ -1275,4 +1320,100 @@
return errors;
}
+ /**
+ * 浠嶱ricingRule璇诲彇鎶奸噾閲戦骞惰祴鍊煎埌闂ㄥ簵璁板綍
+ */
+ private void setDepositAmountFromPricingRule(ShopInfo shopInfo) {
+ if (shopInfo.getCompanyType() == null) {
+ return;
+ }
+ PricingRule pricingRule = pricingRuleMapper.selectOne(new QueryWrapper<PricingRule>().lambda()
+ .eq(PricingRule::getDeleted, Constants.ZERO)
+ .eq(PricingRule::getType, Constants.THREE)
+ .eq(PricingRule::getFieldA, String.valueOf(shopInfo.getCompanyType()))
+ .last("limit 1"));
+ if (pricingRule != null && StringUtils.isNotBlank(pricingRule.getFieldB())) {
+ shopInfo.setDepositAmount(Long.parseLong(pricingRule.getFieldB()));
+ }
+ }
+
+ /**
+ * 浠庤繍钀ラ厤缃鍙栭粯璁ら厤閫佽寖鍥村苟璧嬪�煎埌闂ㄥ簵璁板綍
+ */
+ private void setDefaultDeliveryRange(ShopInfo shopInfo) {
+ SystemDictData data = systemDictDataBiz.queryByCode(Constants.OPERATION_CONFIG, Constants.OP_DEFAULT_DELIVERY_RANGE);
+ if (data != null && StringUtils.isNotBlank(data.getCode())) {
+ shopInfo.setDeliveryArea(new java.math.BigDecimal(data.getCode()));
+ }
+ }
+
+ /**
+ * 鍙戦�佺煭淇¢�氱煡锛堝け璐ヤ笉褰卞搷涓讳笟鍔★級
+ */
+ private void sendSmsNotify(String phone, Constants.SmsNotify smsNotify, String... paramPairs) {
+ if (StringUtils.isBlank(phone)) {
+ return;
+ }
+ String content = smsNotify.format(paramPairs);
+ try {
+ JSONObject templateParam = new JSONObject();
+ for (int i = 0; i < paramPairs.length - 1; i += 2) {
+ templateParam.put(paramPairs[i], paramPairs[i + 1]);
+ }
+ boolean result = AliSmsService.sendSms(phone, smsNotify.getTemplateCode(),
+ templateParam.toJSONString());
+ if (result) {
+ log.info("鐭俊鍙戦�佹垚鍔�: phone={}, template={}", phone, smsNotify.name());
+ } else {
+ log.warn("鐭俊鍙戦�佸け璐�: phone={}, template={}", phone, smsNotify.name());
+ }
+ // 瀛樺偍鐭俊璁板綍
+ Smsrecord smsRecord = new Smsrecord();
+ smsRecord.setPhone(phone);
+ smsRecord.setContent(content);
+ smsRecord.setType(Constants.ONE);
+ smsRecord.setStatus(result ? Constants.ONE : Constants.ZERO);
+ smsRecord.setCreateTime(new Date());
+ smsRecord.setDeleted(Constants.ZERO);
+ smsrecordMapper.insert(smsRecord);
+ } catch (Exception e) {
+ log.error("鐭俊鍙戦�佸紓甯�: phone={}, template={}, error={}", phone, smsNotify.name(), e.getMessage());
+ }
+ }
+
+ @Override
+ public void changePassword(Integer shopId, String oldPassword, String newPassword, String token) {
+ if (StringUtils.isBlank(oldPassword)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏃у瘑鐮佷笉鑳戒负绌�");
+ }
+ if (StringUtils.isBlank(newPassword)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏂板瘑鐮佷笉鑳戒负绌�");
+ }
+ // 鏍¢獙鏂板瘑鐮佸繀椤诲悓鏃跺寘鍚瓧姣嶅拰鏁板瓧
+ boolean hasLetter = newPassword.chars().anyMatch(Character::isLetter);
+ boolean hasDigit = newPassword.chars().anyMatch(Character::isDigit);
+ if (!hasLetter || !hasDigit) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵嗙爜蹇呴』鍚屾椂鍖呭惈瀛楁瘝鍜屾暟瀛�");
+ }
+ // 鏌ヨ闂ㄥ簵
+ ShopInfo shopInfo = shopInfoMapper.selectById(shopId);
+ if (shopInfo == null || Constants.equalsInteger(shopInfo.getDeleted(), Constants.ONE)) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ // 鏍¢獙鏃у瘑鐮�
+ String oldEncryptPwd = Utils.Secure.encryptPassword(oldPassword, shopInfo.getSalt());
+ if (!oldEncryptPwd.equals(shopInfo.getPassword())) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏃у瘑鐮侀敊璇�");
+ }
+ // 閲嶆柊鐢熸垚salt锛屽姞瀵嗘柊瀵嗙爜骞舵洿鏂�
+ String salt = RandomStringUtils.randomAlphabetic(6);
+ shopInfo.setPassword(Utils.Secure.encryptPassword(newPassword, salt));
+ shopInfo.setSalt(salt);
+ shopInfoMapper.updateById(shopInfo);
+ // 娓呴櫎token锛屽己鍒堕噸鏂扮櫥褰�
+ if (StringUtils.isNotBlank(token)) {
+ redisTemplate.delete(token);
+ }
+ }
+
}
--
Gitblit v1.9.3