From ce477aa3f4d34a65898c7e69162dde623182338b Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 23 四月 2026 20:06:11 +0800
Subject: [PATCH] 代码生成
---
server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java | 204 +++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 191 insertions(+), 13 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 cd636c8..14b7636 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;
@@ -32,9 +33,13 @@
import com.doumee.dao.vo.ShopCenterVO;
import com.doumee.dao.vo.ShopLoginVO;
import com.doumee.dao.vo.ShopNearbyVO;
+import com.doumee.dao.vo.ShopSalesStatsVO;
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;
@@ -51,6 +56,7 @@
* @author rk
* @date 2026/04/08
*/
+@Slf4j
@Service
public class ShopInfoServiceImpl implements ShopInfoService {
@@ -83,6 +89,9 @@
@Autowired
private AreasService areasService;
+
+ @Autowired
+ private SmsrecordMapper smsrecordMapper;
@Override
public Integer create(ShopInfo shopInfo) {
shopInfoMapper.insert(shopInfo);
@@ -196,6 +205,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());
@@ -319,6 +331,8 @@
existing.setAuditTime(null);
existing.setAuditUserId(null);
existing.setAuditStatus(Constants.ZERO);
+ // 璇诲彇鎶奸噾閲戦
+ setDepositAmountFromPricingRule(existing);
shopInfoMapper.updateById(existing);
shopId = existing.getId();
} else {
@@ -351,6 +365,8 @@
shopInfo.setCreateTime(now);
shopInfo.setUpdateTime(now);
shopInfo.setRegionMemberId(member.getId());
+ // 璇诲彇鎶奸噾閲戦
+ setDepositAmountFromPricingRule(shopInfo);
shopInfoMapper.insert(shopInfo);
shopId = shopInfo.getId();
}
@@ -444,17 +460,27 @@
}
}
- // 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
+ ? String.valueOf(shopInfo.getDepositAmount() / 100.0) : "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
@@ -996,6 +1022,106 @@
.eq(Orders::getDeleted, Constants.ZERO)
.in(Orders::getStatus, Constants.OrderStatus.delivering.getStatus(), Constants.OrderStatus.arrived.getStatus()));
vo.setWaitReceiveCount(waitReceiveCount.intValue());
+ // 鏀粯瀹濇彁鐜拌处鍙�
+ vo.setAliAccount(shop.getAliAccount());
+ vo.setAliName(shop.getAliName());
+ return vo;
+ }
+
+ @Override
+ public ShopSalesStatsVO getShopSalesStats(Integer shopId, Integer period) {
+ // 璁$畻鏃堕棿鑼冨洿 0=浠婃棩 1=鏈湀 2=涓婃湀
+ Calendar cal = Calendar.getInstance();
+ Date startTime;
+ Date endTime;
+
+ if (Constants.equalsInteger(period, 2)) {
+ // 涓婃湀锛氫笂鏈�1鍙�00:00:00 ~ 鏈湀1鍙�00:00:00
+ cal.set(Calendar.DAY_OF_MONTH, 1);
+ cal.set(Calendar.HOUR_OF_DAY, 0);
+ cal.set(Calendar.MINUTE, 0);
+ cal.set(Calendar.SECOND, 0);
+ cal.set(Calendar.MILLISECOND, 0);
+ endTime = cal.getTime();
+ cal.add(Calendar.MONTH, -1);
+ startTime = cal.getTime();
+ } else if (Constants.equalsInteger(period, 1)) {
+ // 鏈湀锛氭湰鏈�1鍙�00:00:00 ~ 涓嬫湀1鍙�00:00:00
+ cal.set(Calendar.DAY_OF_MONTH, 1);
+ cal.set(Calendar.HOUR_OF_DAY, 0);
+ cal.set(Calendar.MINUTE, 0);
+ cal.set(Calendar.SECOND, 0);
+ cal.set(Calendar.MILLISECOND, 0);
+ startTime = cal.getTime();
+ cal.add(Calendar.MONTH, 1);
+ endTime = cal.getTime();
+ } else {
+ // 浠婃棩锛氫粖澶�00:00:00 ~ 鏄庡ぉ00:00:00
+ cal.set(Calendar.HOUR_OF_DAY, 0);
+ cal.set(Calendar.MINUTE, 0);
+ cal.set(Calendar.SECOND, 0);
+ cal.set(Calendar.MILLISECOND, 0);
+ startTime = cal.getTime();
+ cal.add(Calendar.DAY_OF_MONTH, 1);
+ endTime = cal.getTime();
+ }
+
+ ShopSalesStatsVO vo = new ShopSalesStatsVO();
+
+ // 1. 閿�鍞 + 璁㈠崟鏁帮細鎸夎鍗曞垱寤烘椂闂达紝瀛樹欢闂ㄥ簵鎴栧彇浠堕棬搴楁槸鏈棬搴�
+ // 瀛樹欢闂ㄥ簵
+ List<Orders> depositSalesOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
+ .eq(Orders::getDeleted, Constants.ZERO)
+ .ge(Orders::getCreateTime, startTime)
+ .lt(Orders::getCreateTime, endTime)
+ .eq(Orders::getDepositShopId, shopId));
+ // 鍙栦欢闂ㄥ簵
+ List<Orders> takeSalesOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
+ .eq(Orders::getDeleted, Constants.ZERO)
+ .ge(Orders::getCreateTime, startTime)
+ .lt(Orders::getCreateTime, endTime)
+ .eq(Orders::getTakeShopId, shopId));
+ long salesAmount = depositSalesOrders.stream().mapToLong(o -> o.getTotalAmount() != null ? o.getTotalAmount() : 0L).sum()
+ + takeSalesOrders.stream().mapToLong(o -> o.getTotalAmount() != null ? o.getTotalAmount() : 0L).sum();
+ vo.setSalesAmount(salesAmount);
+ vo.setOrderCount(depositSalesOrders.size() + takeSalesOrders.size());
+
+ // 2. 缁撶畻鍒╂鼎锛氭寜缁撶畻鏃堕棿锛屾牴鎹棬搴楄鑹插彇depositShopFee鎴杢akeShopFee
+ // 瀛樹欢闂ㄥ簵 = 鏈棬搴� 鐨勮鍗曪紝鍙� depositShopFee
+ List<Orders> depositSettleOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
+ .eq(Orders::getDeleted, Constants.ZERO)
+ .eq(Orders::getSettlementStatus, Constants.ONE)
+ .ge(Orders::getSettlementTime, startTime)
+ .lt(Orders::getSettlementTime, endTime)
+ .eq(Orders::getDepositShopId, shopId));
+ // 鍙栦欢闂ㄥ簵 = 鏈棬搴� 鐨勮鍗曪紝鍙� takeShopFee
+ List<Orders> takeSettleOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
+ .eq(Orders::getDeleted, Constants.ZERO)
+ .eq(Orders::getSettlementStatus, Constants.ONE)
+ .ge(Orders::getSettlementTime, startTime)
+ .lt(Orders::getSettlementTime, endTime)
+ .eq(Orders::getTakeShopId, shopId));
+ long depositFee = depositSettleOrders.stream()
+ .mapToLong(o -> o.getDepositShopFee() != null ? o.getDepositShopFee() : 0L).sum();
+ long takeFee = takeSettleOrders.stream()
+ .mapToLong(o -> o.getTakeShopFee() != null ? o.getTakeShopFee() : 0L).sum();
+ vo.setSettlementProfit(depositFee + takeFee);
+
+ // 3. 鍦ㄥ簱璁㈠崟鏁�
+ // 3.1 瀛樹欢闂ㄥ簵=鏈棬搴楋紝status in (2宸插瘎瀛�, 5寰呭彇浠�)
+ Long depositStorageCount = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
+ .eq(Orders::getDeleted, Constants.ZERO)
+ .eq(Orders::getDepositShopId, shopId)
+ .in(Orders::getStatus,
+ Constants.OrderStatus.deposited.getStatus(),
+ Constants.OrderStatus.arrived.getStatus()));
+ // 3.2 鍙栦欢闂ㄥ簵=鏈棬搴楋紝status = 5寰呭彇浠�
+ Long takeStorageCount = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
+ .eq(Orders::getDeleted, Constants.ZERO)
+ .eq(Orders::getTakeShopId, shopId)
+ .eq(Orders::getStatus, Constants.OrderStatus.arrived.getStatus()));
+ vo.setStorageCount(depositStorageCount.intValue() + takeStorageCount.intValue());
+
return vo;
}
@@ -1059,12 +1185,13 @@
}
@Override
- public ShopLoginVO shopSilentLogin(String openid) {
- if (StringUtils.isBlank(openid)) {
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "openid涓嶈兘涓虹┖");
+ public ShopLoginVO shopSilentLogin(Integer memberId) {
+ Member member = memberMapper.selectById(memberId);
+ if(Objects.isNull(member)||StringUtils.isBlank(member.getOpenid())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "褰撳墠鐧诲綍浼氬憳韬唤寮傚父,璇疯仈绯荤鐞嗗憳!");
}
ShopInfo shop = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
- .eq(ShopInfo::getOpenid, openid)
+ .eq(ShopInfo::getOpenid, member.getOpenid())
.eq(ShopInfo::getDeleted, Constants.ZERO)
.last("limit 1"));
if (shop == null) {
@@ -1173,4 +1300,55 @@
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 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());
+ }
+ }
+
}
--
Gitblit v1.9.3