From 095210f9149c73e6e00d997b39fd6c44a65e4d38 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期二, 28 四月 2026 22:04:17 +0800
Subject: [PATCH] 代码生成

---
 server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java |  175 +++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 147 insertions(+), 28 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 14b7636..cf7f782 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
@@ -27,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;
@@ -228,13 +229,7 @@
         if (pageWrap.getModel().getOpenid() != null) {
             queryWrapper.lambda().like(ShopInfo::getOpenid, pageWrap.getModel().getOpenid());
         }
-        for (PageWrap.SortData sortData : pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
-            }
-        }
+        queryWrapper.lambda().orderByDesc(ShopInfo::getId);
         return PageData.from(shopInfoMapper.selectPage(page, queryWrapper));
     }
 
@@ -293,8 +288,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涓�鑷�
@@ -360,6 +354,7 @@
             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);
@@ -367,6 +362,8 @@
             shopInfo.setRegionMemberId(member.getId());
             // 璇诲彇鎶奸噾閲戦
             setDepositAmountFromPricingRule(shopInfo);
+            // 璁剧疆榛樿閰嶉�佽寖鍥�
+            setDefaultDeliveryRange(shopInfo);
             shopInfoMapper.insert(shopInfo);
             shopId = shopInfo.getId();
         }
@@ -469,7 +466,8 @@
         if (Constants.equalsInteger(newAuditStatus, Constants.ONE)) {
             // 瀹℃牳閫氳繃 鈫� 閫氱煡缂寸撼鎶奸噾
             String depositMoney = shopInfo.getDepositAmount() != null
-                    ? String.valueOf(shopInfo.getDepositAmount() / 100.0) : "0";
+                    ? 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(),
@@ -757,6 +755,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;
     }
 
@@ -787,7 +792,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锛�
@@ -906,8 +912,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;
         }
@@ -919,6 +925,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;
     }
 
@@ -1078,6 +1088,7 @@
         // 鍙栦欢闂ㄥ簵
         List<Orders> takeSalesOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
                 .eq(Orders::getDeleted, Constants.ZERO)
+                .eq(Orders::getType,Constants.ONE)
                 .ge(Orders::getCreateTime, startTime)
                 .lt(Orders::getCreateTime, endTime)
                 .eq(Orders::getTakeShopId, shopId));
@@ -1108,19 +1119,27 @@
         vo.setSettlementProfit(depositFee + takeFee);
 
         // 3. 鍦ㄥ簱璁㈠崟鏁�
-        // 3.1 瀛樹欢闂ㄥ簵=鏈棬搴楋紝status in (2宸插瘎瀛�, 5寰呭彇浠�)
-        Long depositStorageCount = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
+        // 3.1 灏卞湴璁㈠崟锛氬瓨浠堕棬搴�=鏈棬搴楋紝type=0锛宻tatus in (2宸插瘎瀛�, 5寰呭彇浠�)
+        Long localStorageCount = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
                 .eq(Orders::getDeleted, Constants.ZERO)
                 .eq(Orders::getDepositShopId, shopId)
+                .eq(Orders::getType, Constants.ZERO)
                 .in(Orders::getStatus,
                         Constants.OrderStatus.deposited.getStatus(),
                         Constants.OrderStatus.arrived.getStatus()));
-        // 3.2 鍙栦欢闂ㄥ簵=鏈棬搴楋紝status = 5寰呭彇浠�
+        // 3.2 寮傚湴璁㈠崟锛氬瓨浠堕棬搴�=鏈棬搴楋紝type=1锛宻tatus=2宸插瘎瀛�
+        Long remoteStorageCount = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
+                .eq(Orders::getDeleted, Constants.ZERO)
+                .eq(Orders::getDepositShopId, shopId)
+                .eq(Orders::getType, Constants.ONE)
+                .eq(Orders::getStatus, Constants.OrderStatus.deposited.getStatus()));
+        // 3.3 鍙栦欢闂ㄥ簵=鏈棬搴楋紝寮傚湴璁㈠崟锛宻tatus = 5寰呭彇浠�
         Long takeStorageCount = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
                 .eq(Orders::getDeleted, Constants.ZERO)
+                .eq(Orders::getType,Constants.ONE)
                 .eq(Orders::getTakeShopId, shopId)
                 .eq(Orders::getStatus, Constants.OrderStatus.arrived.getStatus()));
-        vo.setStorageCount(depositStorageCount.intValue() + takeStorageCount.intValue());
+        vo.setStorageCount(localStorageCount.intValue() + remoteStorageCount.intValue() + takeStorageCount.intValue());
 
         return vo;
     }
@@ -1134,7 +1153,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(),"鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶈兘涓虹┖");
         }
@@ -1144,6 +1162,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());
@@ -1168,7 +1192,6 @@
 
         // 鍒涘缓token锛坓enerateTokenForRedis 宸茶嚜鍔ㄦ竻闄よ鐢ㄦ埛鏃oken锛屼繚璇佸敮涓�鏈夋晥锛�
         String token = JwtTokenUtil.generateTokenForRedis(shop.getId(), Constants.TWO, JSONObject.toJSONString(shop), redisTemplate);
-
         // 鏋勫缓鍝嶅簲
         ShopLoginVO vo = new ShopLoginVO();
         vo.setToken(token);
@@ -1307,13 +1330,25 @@
         if (shopInfo.getCompanyType() == null) {
             return;
         }
+        Areas areas = areasService.findById(shopInfo.getAreaId());
         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()))
+                .eq(PricingRule::getFieldA, String.valueOf(Constants.equalsInteger(shopInfo.getCompanyType(),Constants.ZERO)?Constants.ONE:Constants.ZERO))
+                .eq(PricingRule::getCityId, areas.getParentId())
                 .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()));
         }
     }
 
@@ -1330,19 +1365,16 @@
             for (int i = 0; i < paramPairs.length - 1; i += 2) {
                 templateParam.put(paramPairs[i], paramPairs[i + 1]);
             }
-            boolean result = AliSmsService.sendSms(phone, smsNotify.getTemplateCode(),
+            String error = 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.setStatus(error == null ? Constants.ONE : Constants.ZERO);
+            if (error != null) {
+                smsRecord.setRemark(error);
+            }
             smsRecord.setCreateTime(new Date());
             smsRecord.setDeleted(Constants.ZERO);
             smsrecordMapper.insert(smsRecord);
@@ -1351,4 +1383,91 @@
         }
     }
 
+    @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);
+        }
+    }
+
+    @Autowired
+    private com.doumee.core.utils.xpyun.XpyunPrintService xpyunPrintService;
+
+    @Override
+    public void bindPrinter(com.doumee.dao.dto.PrinterBindDTO dto) {
+        ShopInfo shop = shopInfoMapper.selectById(dto.getShopId());
+        if (shop == null || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        // 璋冪敤鑺儴浜戞敞鍐屾墦鍗版満
+        com.doumee.core.utils.xpyun.XpyunResponse resp = xpyunPrintService.addPrinter(
+                dto.getPrinterSn(), shop.getName());
+        if (resp.getCode() != null && resp.getCode() == 0) {
+            log.info("鑺儴浜戞墦鍗版満娉ㄥ唽鎴愬姛: sn={}", dto.getPrinterSn());
+        } else {
+            log.warn("鑺儴浜戞墦鍗版満娉ㄥ唽杩斿洖闈�0: sn={}, code={}, msg={}",
+                    dto.getPrinterSn(), resp.getCode(), resp.getMsg());
+        }
+        // 鏃犺浜戠鏄惁鎴愬姛锛岄兘缁戝畾鍒伴棬搴楋紙鍙悗缁噸璇曚簯绔敞鍐岋級
+        ShopInfo update = new ShopInfo();
+        update.setId(dto.getShopId());
+        update.setPrinterSn(dto.getPrinterSn());
+        shopInfoMapper.updateById(update);
+    }
+
+    @Override
+    public void unbindPrinter(Integer shopId) {
+        ShopInfo shop = shopInfoMapper.selectById(shopId);
+        if (shop == null || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if (StringUtils.isNotBlank(shop.getPrinterSn())) {
+            xpyunPrintService.deletePrinter(shop.getPrinterSn());
+        }
+        ShopInfo update = new ShopInfo();
+        update.setId(shopId);
+        update.setPrinterSn(null);
+        shopInfoMapper.updateById(update);
+    }
+
+    @Override
+    public Object queryPrinterStatus(Integer shopId) {
+        ShopInfo shop = shopInfoMapper.selectById(shopId);
+        if (shop == null || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if (StringUtils.isBlank(shop.getPrinterSn())) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇ラ棬搴楁湭缁戝畾鎵撳嵃鏈�");
+        }
+        return xpyunPrintService.queryPrinterStatus(shop.getPrinterSn());
+    }
+
 }

--
Gitblit v1.9.3