Huanyi 3 هفته پیش
والد
کامیت
24da6700d6
18فایلهای تغییر یافته به همراه144 افزوده شده و 52 حذف شده
  1. 7 6
      ruoyi-auth/src/main/java/org/dromara/auth/service/impl/FulfillerPasswordAuthStrategy.java
  2. 8 7
      ruoyi-auth/src/main/java/org/dromara/auth/service/impl/FulfillerSmsAuthStrategy.java
  3. 12 0
      ruoyi-common/yingpaipay-common-external/src/main/java/org/dromara/common/external/amap/AmapClient.java
  4. 6 0
      ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/FulfillerLevelPointsTask.java
  5. 5 0
      ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/StoreExpireTask.java
  6. 4 4
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysAreaStationController.java
  7. 25 5
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysStoreServiceImpl.java
  8. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java
  9. 8 12
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
  10. 1 0
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/bo/UsrCustomerBo.java
  11. 11 6
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/impl/UsrCustomerServiceImpl.java
  12. 14 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfFulfillerController.java
  13. 21 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfFulfillerGpsVo.java
  14. 2 2
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/dubbo/RemoteFulfillerServiceImpl.java
  15. 3 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfAuditServiceImpl.java
  16. 9 3
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java
  17. 2 1
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/dubbo/RemoteSubOrderServiceImpl.java
  18. 5 5
      ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/service/impl/SysServiceServiceImpl.java

+ 7 - 6
ruoyi-auth/src/main/java/org/dromara/auth/service/impl/FulfillerPasswordAuthStrategy.java

@@ -30,6 +30,7 @@ import org.springframework.stereotype.Service;
  *
  *
  * @author steelwei
  * @author steelwei
  */
  */
+@Deprecated
 @Slf4j
 @Slf4j
 @Service("fulfiller_password" + IAuthStrategy.BASE_NAME)
 @Service("fulfiller_password" + IAuthStrategy.BASE_NAME)
 @RequiredArgsConstructor
 @RequiredArgsConstructor
@@ -59,9 +60,9 @@ public class FulfillerPasswordAuthStrategy implements IAuthStrategy {
         // 查询履约者信息并验证密码
         // 查询履约者信息并验证密码
         LoginUser loginUser = TenantHelper.dynamic(tenantId, () -> {
         LoginUser loginUser = TenantHelper.dynamic(tenantId, () -> {
             FulfillerLoginUser fulfiller = remoteFulfillerService.getFulfillerByPhone(username);
             FulfillerLoginUser fulfiller = remoteFulfillerService.getFulfillerByPhone(username);
-            loginService.checkLogin(LoginType.PASSWORD, fulfiller.getTenantId(), username, 
+            loginService.checkLogin(LoginType.PASSWORD, fulfiller.getTenantId(), username,
                 () -> !BCrypt.checkpw(password, fulfiller.getPassword()));
                 () -> !BCrypt.checkpw(password, fulfiller.getPassword()));
-            
+
             // 构建 LoginUser 对象
             // 构建 LoginUser 对象
             LoginUser user = new LoginUser();
             LoginUser user = new LoginUser();
             user.setTenantId(fulfiller.getTenantId());
             user.setTenantId(fulfiller.getTenantId());
@@ -75,13 +76,13 @@ public class FulfillerPasswordAuthStrategy implements IAuthStrategy {
 
 
         loginUser.setClientKey(client.getClientKey());
         loginUser.setClientKey(client.getClientKey());
         loginUser.setDeviceType(client.getDeviceType());
         loginUser.setDeviceType(client.getDeviceType());
-        
+
         SaLoginParameter model = new SaLoginParameter();
         SaLoginParameter model = new SaLoginParameter();
         model.setDeviceType(client.getDeviceType());
         model.setDeviceType(client.getDeviceType());
         model.setTimeout(client.getTimeout());
         model.setTimeout(client.getTimeout());
         model.setActiveTimeout(client.getActiveTimeout());
         model.setActiveTimeout(client.getActiveTimeout());
         model.setExtra(LoginHelper.CLIENT_KEY, client.getClientId());
         model.setExtra(LoginHelper.CLIENT_KEY, client.getClientId());
-        
+
         // 生成token
         // 生成token
         LoginHelper.login(loginUser, model);
         LoginHelper.login(loginUser, model);
 
 
@@ -89,10 +90,10 @@ public class FulfillerPasswordAuthStrategy implements IAuthStrategy {
         loginVo.setAccessToken(StpUtil.getTokenValue());
         loginVo.setAccessToken(StpUtil.getTokenValue());
         loginVo.setExpireIn(StpUtil.getTokenTimeout());
         loginVo.setExpireIn(StpUtil.getTokenTimeout());
         loginVo.setClientId(client.getClientId());
         loginVo.setClientId(client.getClientId());
-        
+
         // 记录登录成功日志
         // 记录登录成功日志
         loginService.recordLogininfor(tenantId, username, Constants.LOGIN_SUCCESS, "登录成功");
         loginService.recordLogininfor(tenantId, username, Constants.LOGIN_SUCCESS, "登录成功");
-        
+
         return loginVo;
         return loginVo;
     }
     }
 
 

+ 8 - 7
ruoyi-auth/src/main/java/org/dromara/auth/service/impl/FulfillerSmsAuthStrategy.java

@@ -31,6 +31,7 @@ import org.springframework.stereotype.Service;
  *
  *
  * @author steelwei
  * @author steelwei
  */
  */
+@Deprecated
 @Slf4j
 @Slf4j
 @Service("fulfiller_sms" + IAuthStrategy.BASE_NAME)
 @Service("fulfiller_sms" + IAuthStrategy.BASE_NAME)
 @RequiredArgsConstructor
 @RequiredArgsConstructor
@@ -55,7 +56,7 @@ public class FulfillerSmsAuthStrategy implements IAuthStrategy {
         // 查询履约者信息
         // 查询履约者信息
         LoginUser loginUser = TenantHelper.dynamic(tenantId, () -> {
         LoginUser loginUser = TenantHelper.dynamic(tenantId, () -> {
             FulfillerLoginUser fulfiller = remoteFulfillerService.getFulfillerByPhone(phonenumber);
             FulfillerLoginUser fulfiller = remoteFulfillerService.getFulfillerByPhone(phonenumber);
-            
+
             // 构建 LoginUser 对象
             // 构建 LoginUser 对象
             LoginUser user = new LoginUser();
             LoginUser user = new LoginUser();
             user.setTenantId(fulfiller.getTenantId());
             user.setTenantId(fulfiller.getTenantId());
@@ -69,13 +70,13 @@ public class FulfillerSmsAuthStrategy implements IAuthStrategy {
 
 
         loginUser.setClientKey(client.getClientKey());
         loginUser.setClientKey(client.getClientKey());
         loginUser.setDeviceType(client.getDeviceType());
         loginUser.setDeviceType(client.getDeviceType());
-        
+
         SaLoginParameter model = new SaLoginParameter();
         SaLoginParameter model = new SaLoginParameter();
         model.setDeviceType(client.getDeviceType());
         model.setDeviceType(client.getDeviceType());
         model.setTimeout(client.getTimeout());
         model.setTimeout(client.getTimeout());
         model.setActiveTimeout(client.getActiveTimeout());
         model.setActiveTimeout(client.getActiveTimeout());
         model.setExtra(LoginHelper.CLIENT_KEY, client.getClientId());
         model.setExtra(LoginHelper.CLIENT_KEY, client.getClientId());
-        
+
         // 生成token
         // 生成token
         LoginHelper.login(loginUser, model);
         LoginHelper.login(loginUser, model);
 
 
@@ -83,10 +84,10 @@ public class FulfillerSmsAuthStrategy implements IAuthStrategy {
         loginVo.setAccessToken(StpUtil.getTokenValue());
         loginVo.setAccessToken(StpUtil.getTokenValue());
         loginVo.setExpireIn(StpUtil.getTokenTimeout());
         loginVo.setExpireIn(StpUtil.getTokenTimeout());
         loginVo.setClientId(client.getClientId());
         loginVo.setClientId(client.getClientId());
-        
+
         // 记录登录成功日志
         // 记录登录成功日志
         loginService.recordLogininfor(tenantId, phonenumber, Constants.LOGIN_SUCCESS, "登录成功");
         loginService.recordLogininfor(tenantId, phonenumber, Constants.LOGIN_SUCCESS, "登录成功");
-        
+
         return loginVo;
         return loginVo;
     }
     }
 
 
@@ -96,13 +97,13 @@ public class FulfillerSmsAuthStrategy implements IAuthStrategy {
     private void validateSmsCode(String tenantId, String phonenumber, String smsCode) {
     private void validateSmsCode(String tenantId, String phonenumber, String smsCode) {
         String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + phonenumber);
         String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + phonenumber);
         if (StringUtils.isBlank(code)) {
         if (StringUtils.isBlank(code)) {
-            loginService.recordLogininfor(tenantId, phonenumber, Constants.LOGIN_FAIL, 
+            loginService.recordLogininfor(tenantId, phonenumber, Constants.LOGIN_FAIL,
                 MessageUtils.message("user.jcaptcha.expire"));
                 MessageUtils.message("user.jcaptcha.expire"));
             throw new CaptchaExpireException();
             throw new CaptchaExpireException();
         }
         }
         RedisUtils.deleteObject(GlobalConstants.CAPTCHA_CODE_KEY + phonenumber);
         RedisUtils.deleteObject(GlobalConstants.CAPTCHA_CODE_KEY + phonenumber);
         if (!code.equals(smsCode)) {
         if (!code.equals(smsCode)) {
-            loginService.recordLogininfor(tenantId, phonenumber, Constants.LOGIN_FAIL, 
+            loginService.recordLogininfor(tenantId, phonenumber, Constants.LOGIN_FAIL,
                 MessageUtils.message("user.jcaptcha.error"));
                 MessageUtils.message("user.jcaptcha.error"));
             throw new CaptchaExpireException();
             throw new CaptchaExpireException();
         }
         }

+ 12 - 0
ruoyi-common/yingpaipay-common-external/src/main/java/org/dromara/common/external/amap/AmapClient.java

@@ -0,0 +1,12 @@
+package org.dromara.common.external.amap;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class AmapClient {
+
+    private static final String BASE_URL = "https://webapi.amap.com/v3";
+    private static final String API_KEY = "a30e76f457c14b6570925522be37565d";
+
+}

+ 6 - 0
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/FulfillerLevelPointsTask.java

@@ -3,12 +3,14 @@ package org.dromara.job.snailjob;
 import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
 import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
 import com.aizuda.snailjob.client.job.core.dto.JobArgs;
 import com.aizuda.snailjob.client.job.core.dto.JobArgs;
 import com.aizuda.snailjob.model.dto.ExecuteResult;
 import com.aizuda.snailjob.model.dto.ExecuteResult;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.fulfiller.api.RemoteFulfillerService;
 import org.dromara.fulfiller.api.RemoteFulfillerService;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 @Component
 @Component
 @JobExecutor(name = "fulfillerLevelPointsTask")
 @JobExecutor(name = "fulfillerLevelPointsTask")
+@Slf4j
 public class FulfillerLevelPointsTask {
 public class FulfillerLevelPointsTask {
 
 
     @DubboReference
     @DubboReference
@@ -16,6 +18,8 @@ public class FulfillerLevelPointsTask {
 
 
     public ExecuteResult jobExecute(JobArgs jobArgs) {
     public ExecuteResult jobExecute(JobArgs jobArgs) {
 
 
+        log.info("开始进行履约者等级积分处理任务");
+
         try {
         try {
             boolean flag = remoteFulfillerService.taskLevelPoints();
             boolean flag = remoteFulfillerService.taskLevelPoints();
             if (!flag) {
             if (!flag) {
@@ -25,6 +29,8 @@ public class FulfillerLevelPointsTask {
             return ExecuteResult.failure("履约者等级积分处理任务执行失败 : " + e);
             return ExecuteResult.failure("履约者等级积分处理任务执行失败 : " + e);
         }
         }
 
 
+        log.info("结束履约者等级积分处理任务");
+
         return ExecuteResult.success("履约者等级积分处理任务执行成功");
         return ExecuteResult.success("履约者等级积分处理任务执行成功");
     }
     }
 
 

+ 5 - 0
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/StoreExpireTask.java

@@ -3,6 +3,7 @@ package org.dromara.job.snailjob;
 import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
 import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
 import com.aizuda.snailjob.client.job.core.dto.JobArgs;
 import com.aizuda.snailjob.client.job.core.dto.JobArgs;
 import com.aizuda.snailjob.model.dto.ExecuteResult;
 import com.aizuda.snailjob.model.dto.ExecuteResult;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.system.api.RemoteStoreService;
 import org.dromara.system.api.RemoteStoreService;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
@@ -13,6 +14,7 @@ import org.springframework.stereotype.Component;
 
 
 @Component
 @Component
 @JobExecutor(name = "storeExpireTask")
 @JobExecutor(name = "storeExpireTask")
+@Slf4j
 public class StoreExpireTask {
 public class StoreExpireTask {
 
 
     @DubboReference
     @DubboReference
@@ -20,6 +22,8 @@ public class StoreExpireTask {
 
 
     public ExecuteResult jobExecute(JobArgs jobArgs) {
     public ExecuteResult jobExecute(JobArgs jobArgs) {
 
 
+        log.info("开始进行门店到期状态任务");
+
         try {
         try {
             boolean flag = remoteStoreService.expire();
             boolean flag = remoteStoreService.expire();
             if (!flag) {
             if (!flag) {
@@ -29,6 +33,7 @@ public class StoreExpireTask {
             return ExecuteResult.failure("门店到期任务执行失败 : " + e);
             return ExecuteResult.failure("门店到期任务执行失败 : " + e);
         }
         }
 
 
+        log.info("结束门店到期状态任务");
 
 
         return ExecuteResult.success("门店到期任务执行成功");
         return ExecuteResult.success("门店到期任务执行成功");
     }
     }

+ 4 - 4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysAreaStationController.java

@@ -110,9 +110,9 @@ public class SysAreaStationController extends BaseController {
         return R.ok(sysAreaStationService.listStatus());
         return R.ok(sysAreaStationService.listStatus());
     }
     }
 
 
-    @GetMapping("/listOnStore")
-    public R<List<SysAreaStationOnStoreVo>> listOnStore() {
-        return R.ok(sysAreaStationService.listOnStore());
-    }
+//    @GetMapping("/listOnStore")
+//    public R<List<SysAreaStationOnStoreVo>> listOnStore() {
+//        return R.ok(sysAreaStationService.listOnStore());
+//    }
 
 
 }
 }

+ 25 - 5
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysStoreServiceImpl.java

@@ -118,10 +118,20 @@ public class SysStoreServiceImpl implements ISysStoreService {
             siteIds.add(bo.getStation());
             siteIds.add(bo.getStation());
         }
         }
 
 
+        List<Long> storeIds = new ArrayList<>();
+        if (Platform.isNotAdmin()) {
+            userStoreMapper.selectList(Wrappers.lambdaQuery(SysUserStore.class).eq(SysUserStore::getUserId, LoginHelper.getUserId()))
+                .forEach(e -> storeIds.add(e.getStoreId()));
+            if (storeIds.get(0).equals(StoreConstants.ALL_STORE)) {
+                storeIds.clear();
+            }
+        }
+
         return Wrappers.lambdaQuery(SysStore.class)
         return Wrappers.lambdaQuery(SysStore.class)
             .like(StringUtils.isNotBlank(bo.getStoreOrContact()), SysStore::getName, bo.getStoreOrContact())
             .like(StringUtils.isNotBlank(bo.getStoreOrContact()), SysStore::getName, bo.getStoreOrContact())
             .or()
             .or()
             .like(StringUtils.isNotBlank(bo.getStoreOrContact()), SysStore::getContact, bo.getStoreOrContact())
             .like(StringUtils.isNotBlank(bo.getStoreOrContact()), SysStore::getContact, bo.getStoreOrContact())
+            .in(!storeIds.isEmpty(), SysStore::getId, storeIds)
             .in(SysStore::getSite, WrapperUtils.convertIds(siteIds))
             .in(SysStore::getSite, WrapperUtils.convertIds(siteIds))
             .eq(bo.getStatus() != null, SysStore::getStatus, bo.getStatus())
             .eq(bo.getStatus() != null, SysStore::getStatus, bo.getStatus())
             .orderByDesc(SysStore::getId);
             .orderByDesc(SysStore::getId);
@@ -255,7 +265,7 @@ public class SysStoreServiceImpl implements ISysStoreService {
 
 
         LambdaQueryWrapper<SysStore> wrapper = Wrappers.lambdaQuery(SysStore.class).select(SysStore::getId, SysStore::getName);
         LambdaQueryWrapper<SysStore> wrapper = Wrappers.lambdaQuery(SysStore.class).select(SysStore::getId, SysStore::getName);
 
 
-        if (!Objects.equals(ids.get(0), StoreConstants.ALL_STORE)) {
+        if (!ids.isEmpty() && !Objects.equals(ids.get(0), StoreConstants.ALL_STORE)) {
             wrapper.in(SysStore::getId, WrapperUtils.convertIds(ids));
             wrapper.in(SysStore::getId, WrapperUtils.convertIds(ids));
         }
         }
 
 
@@ -291,10 +301,20 @@ public class SysStoreServiceImpl implements ISysStoreService {
     @Override
     @Override
     public TableDataInfo<SysStoreListOnOrderVo> listOnOrder(String name, Long site, PageQuery pageQuery) {
     public TableDataInfo<SysStoreListOnOrderVo> listOnOrder(String name, Long site, PageQuery pageQuery) {
 
 
-        Page<SysStore> page = baseMapper.selectPage(
-            pageQuery.build(),
-            Wrappers.lambdaQuery(SysStore.class).like(StringUtils.isNotBlank(name), SysStore::getName, name).eq(site != null, SysStore::getSite, site).eq(SysStore::getStatus, SysStoreStatusEnum.IN_OPERATION.getValue())
-        );
+        LambdaQueryWrapper<SysStore> wrapper = Wrappers.lambdaQuery(SysStore.class)
+            .like(StringUtils.isNotBlank(name), SysStore::getName, name)
+            .eq(site != null, SysStore::getSite, site)
+            .eq(SysStore::getStatus, SysStoreStatusEnum.IN_OPERATION.getValue());
+
+        List<Long> storeIds = userStoreMapper.selectList(
+            Wrappers.lambdaQuery(SysUserStore.class).select(SysUserStore::getStoreId).eq(SysUserStore::getUserId, LoginHelper.getUserId())
+        ).stream().map(SysUserStore::getStoreId).toList();
+
+        if (!storeIds.isEmpty() && !Objects.equals(storeIds.get(0), StoreConstants.ALL_STORE)) {
+            wrapper.in(SysStore::getId, WrapperUtils.convertIds(storeIds));
+        }
+
+        Page<SysStore> page = baseMapper.selectPage(pageQuery.build(), wrapper);
 
 
         List<Long> ids = new ArrayList<>();
         List<Long> ids = new ArrayList<>();
         page.getRecords().forEach(e -> ids.add(e.getId()));
         page.getRecords().forEach(e -> ids.add(e.getId()));

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java

@@ -179,7 +179,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
         user.setUserId(userId);
         user.setUserId(userId);
         user.setTenantId(tenantId);
         user.setTenantId(tenantId);
         user.setUserName(bo.getUsername());
         user.setUserName(bo.getUsername());
-        user.setNickName(bo.getUsername());
+        user.setNickName(bo.getContactUserName());
         user.setPhonenumber(bo.getContactPhone());
         user.setPhonenumber(bo.getContactPhone());
         user.setPassword(BCrypt.hashpw(bo.getPassword()));
         user.setPassword(BCrypt.hashpw(bo.getPassword()));
         user.setDeptId(deptId);
         user.setDeptId(deptId);

+ 8 - 12
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@@ -23,6 +23,7 @@ import org.dromara.common.platform.Platform;
 import org.dromara.common.platform.PlatformUtils;
 import org.dromara.common.platform.PlatformUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.common.tenant.helper.TenantHelper;
+import org.dromara.system.constants.StoreConstants;
 import org.dromara.system.domain.*;
 import org.dromara.system.domain.*;
 import org.dromara.system.domain.bo.SysUserBo;
 import org.dromara.system.domain.bo.SysUserBo;
 import org.dromara.system.domain.vo.SysPostVo;
 import org.dromara.system.domain.vo.SysPostVo;
@@ -679,26 +680,21 @@ public class SysUserServiceImpl implements ISysUserService {
             for (int i = 0; i < allStoreList.size(); i++) {
             for (int i = 0; i < allStoreList.size(); i++) {
                 allStores[i] = allStoreList.get(i);
                 allStores[i] = allStoreList.get(i);
             }
             }
-            Map<Long, SysRole> roleMap = new HashMap<>();
-            roleMapper.selectList().forEach(e -> roleMap.put(e.getRoleId(), e));
             page.getRecords().forEach(e -> {
             page.getRecords().forEach(e -> {
 
 
                 List<SysUserRole> roleIds = userRoleMap.get(e.getUserId());
                 List<SysUserRole> roleIds = userRoleMap.get(e.getUserId());
                 e.setRoleIds(roleIds.stream().map(SysUserRole::getRoleId).toArray(Long[]::new));
                 e.setRoleIds(roleIds.stream().map(SysUserRole::getRoleId).toArray(Long[]::new));
-                for (SysUserRole userRole : roleIds) {
-                    SysRole role = roleMap.get(userRole.getRoleId());
-                    if (role.getRoleKey().equals(TenantConstants.TENANT_ADMIN_ROLE_KEY)) {
-                        e.setStoreIds(allStores);
-                        return;
-                    }
-                }
 
 
                 List<SysUserStore> stores = storeMap.get(e.getUserId());
                 List<SysUserStore> stores = storeMap.get(e.getUserId());
                 Long[] storeIds = new Long[stores.size()];
                 Long[] storeIds = new Long[stores.size()];
                 if (!stores.isEmpty()) {
                 if (!stores.isEmpty()) {
-                    // 一个人能够分到的店面有限,贸然stream流性能反而更慢 @author: Huanyi
-                    for (int i = 0; i < stores.size(); i++) {
-                        storeIds[i] = stores.get(i).getStoreId();
+                    if (stores.get(0).getStoreId().equals(StoreConstants.ALL_STORE)) {
+                        storeIds = allStores;
+                    } else {
+                        // 一个人能够分到的店面有限,贸然stream流性能反而更慢 @author: Huanyi
+                        for (int i = 0; i < stores.size(); i++) {
+                            storeIds[i] = stores.get(i).getStoreId();
+                        }
                     }
                     }
                     e.setStoreIds(storeIds);
                     e.setStoreIds(storeIds);
                 }
                 }

+ 1 - 0
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/domain/bo/UsrCustomerBo.java

@@ -58,6 +58,7 @@ public class UsrCustomerBo extends BaseEntity {
     /**
     /**
      * 所属站点ID
      * 所属站点ID
      */
      */
+    @NotNull(message = "所属站点不能为空", groups = { AddGroup.class })
     private Long stationId;
     private Long stationId;
 
 
     /**
     /**

+ 11 - 6
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/impl/UsrCustomerServiceImpl.java

@@ -82,12 +82,17 @@ public class UsrCustomerServiceImpl implements IUsrCustomerService {
             vo.setTags(queryTagsByTargetId(vo.getId(), TagTargetConstants.CUSTOMER));
             vo.setTags(queryTagsByTargetId(vo.getId(), TagTargetConstants.CUSTOMER));
             customerIds.add(vo.getId());
             customerIds.add(vo.getId());
         });
         });
-        Map<Long, Integer> petMap = petMapper.selectList(Wrappers.lambdaQuery(UsrPet.class).in(UsrPet::getUserId, WrapperUtils.convertIds(customerIds)).select(UsrPet::getId, UsrPet::getUserId))
-            .stream()
-            .collect(Collectors.groupingBy(
-                UsrPet::getUserId,
-                Collectors.summingInt(e -> 1)
-            ));
+        Map<Long, Integer> petMap;
+        List<UsrPet> customers = petMapper.selectList(Wrappers.lambdaQuery(UsrPet.class).in(UsrPet::getUserId, WrapperUtils.convertIds(customerIds)).select(UsrPet::getId, UsrPet::getUserId));
+        if (!customers.isEmpty()) {
+            petMap = customers.stream()
+                .collect(Collectors.groupingBy(
+                    UsrPet::getUserId,
+                    Collectors.summingInt(e -> 1)
+                ));
+        } else {
+            petMap = new HashMap<>();
+        }
         List<RemoteSubOrderVo> vos = remoteSubOrderService.selectByCustomerIds(WrapperUtils.convertIds(customerIds));
         List<RemoteSubOrderVo> vos = remoteSubOrderService.selectByCustomerIds(WrapperUtils.convertIds(customerIds));
         Map<Long, Integer> orderMap;
         Map<Long, Integer> orderMap;
         if (!vos.isEmpty()) {
         if (!vos.isEmpty()) {

+ 14 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfFulfillerController.java

@@ -12,6 +12,7 @@ import org.dromara.common.core.constant.GlobalConstants;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.fulfiller.domain.FlfGps;
 import org.dromara.fulfiller.domain.FlfGps;
 import org.dromara.fulfiller.domain.bo.*;
 import org.dromara.fulfiller.domain.bo.*;
+import org.dromara.fulfiller.domain.vo.FlfFulfillerGpsVo;
 import org.dromara.fulfiller.domain.vo.FlfFulfillerOnOrderVo;
 import org.dromara.fulfiller.domain.vo.FlfFulfillerOnOrderVo;
 import org.dromara.fulfiller.domain.vo.FlfFulfilllerListByNameAndPhoneNumberVo;
 import org.dromara.fulfiller.domain.vo.FlfFulfilllerListByNameAndPhoneNumberVo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -301,4 +302,17 @@ public class FlfFulfillerController extends BaseController {
         return R.ok();
         return R.ok();
     }
     }
 
 
+    @GetMapping("/gps/{id}")
+    public R<FlfFulfillerGpsVo> get(@PathVariable Long id) {
+        FlfGps gps = RedisUtils.getCacheObject(GlobalConstants.FLF_FULFILLER_GPS + id);
+        if (gps == null) {
+            return R.ok();
+        }
+        FlfFulfillerGpsVo vo = new FlfFulfillerGpsVo();
+        vo.setId(id);
+        vo.setLongitude(gps.getLongitude());
+        vo.setLatitude(gps.getLatitude());
+        return R.ok(vo);
+    }
+
 }
 }

+ 21 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfFulfillerGpsVo.java

@@ -0,0 +1,21 @@
+package org.dromara.fulfiller.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class FlfFulfillerGpsVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private BigDecimal longitude;
+
+    private BigDecimal latitude;
+
+}

+ 2 - 2
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/dubbo/RemoteFulfillerServiceImpl.java

@@ -63,12 +63,12 @@ public class RemoteFulfillerServiceImpl implements RemoteFulfillerService {
 
 
         if (fulfiller == null) {
         if (fulfiller == null) {
             log.info("登录用户:{} 不存在.", phone);
             log.info("登录用户:{} 不存在.", phone);
-            throw new UserException("user.not.exists");
+            throw new UserException("user.not.exists", phone);
         }
         }
 
 
         if (FlfFulfillerStatusEnum.DISABLED.getValue().equals(fulfiller.getStatus())) {
         if (FlfFulfillerStatusEnum.DISABLED.getValue().equals(fulfiller.getStatus())) {
             log.info("登录用户:{} 已被禁用.", phone);
             log.info("登录用户:{} 已被禁用.", phone);
-            throw new UserException("user.blocked");
+            throw new UserException("user.blocked", phone);
         }
         }
 
 
         return toLoginUser(fulfiller);
         return toLoginUser(fulfiller);

+ 3 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfAuditServiceImpl.java

@@ -162,6 +162,9 @@ public class FlfAuditServiceImpl implements IFlfAuditService {
             }
             }
         } else if (AuditTypeEnum.REGISTER.getCode().equals(audit.getType())) {
         } else if (AuditTypeEnum.REGISTER.getCode().equals(audit.getType())) {
             // 首次入驻审核通过:创建履约者 @author steelwei
             // 首次入驻审核通过:创建履约者 @author steelwei
+            if (fulfillerMapper.exists(Wrappers.lambdaQuery(FlfFulfiller.class).eq(FlfFulfiller::getPhone, audit.getPhone()))) {
+                throw new ServiceException("手机号已存在");
+            }
             // 创建 flf_fulfiller 记录(不再创建 sys_user)
             // 创建 flf_fulfiller 记录(不再创建 sys_user)
             FlfFulfiller fulfiller = new FlfFulfiller();
             FlfFulfiller fulfiller = new FlfFulfiller();
             fulfiller.setName(audit.getName());
             fulfiller.setName(audit.getName());

+ 9 - 3
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java

@@ -23,6 +23,8 @@ import org.dromara.fulfiller.constants.FlfRewardTargetConstant;
 import org.dromara.common.core.constant.TagTargetConstants;
 import org.dromara.common.core.constant.TagTargetConstants;
 import org.dromara.fulfiller.domain.vo.FlfFulfillerOnOrderVo;
 import org.dromara.fulfiller.domain.vo.FlfFulfillerOnOrderVo;
 import org.dromara.fulfiller.domain.vo.FlfFulfilllerListByNameAndPhoneNumberVo;
 import org.dromara.fulfiller.domain.vo.FlfFulfilllerListByNameAndPhoneNumberVo;
+import org.dromara.fulfiller.enums.AuditStatusEnum;
+import org.dromara.fulfiller.enums.AuditTypeEnum;
 import org.dromara.fulfiller.enums.FlfBalanceBizTypeEnum;
 import org.dromara.fulfiller.enums.FlfBalanceBizTypeEnum;
 import org.dromara.fulfiller.enums.FlfPointsBizTypeEnum;
 import org.dromara.fulfiller.enums.FlfPointsBizTypeEnum;
 import org.dromara.order.api.RemoteSubOrderLogService;
 import org.dromara.order.api.RemoteSubOrderLogService;
@@ -563,7 +565,11 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
         );
         );
 
 
         if (audit == null) {
         if (audit == null) {
-            return false;
+            audit = new FlfAudit();
+            audit.setFulfillerId(userId);
+            audit.setType(AuditTypeEnum.QUALIFICATION.getCode());
+            audit.setName(fulfiller.getName());
+            audit.setRealName(fulfiller.getRealName());
         }
         }
 
 
         // 在原有审核记录上更新信息和状态
         // 在原有审核记录上更新信息和状态
@@ -581,12 +587,12 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
         }
         }
 
 
         // 重置为待审核状态
         // 重置为待审核状态
-        audit.setStatus(0);
+        audit.setStatus(AuditStatusEnum.UNDER_REVIEW.getValue());
         audit.setRejectReason(null);
         audit.setRejectReason(null);
         audit.setAuditBy(null);
         audit.setAuditBy(null);
         audit.setAuditTime(null);
         audit.setAuditTime(null);
 
 
-        return auditMapper.updateById(audit) > 0;
+        return audit.getId() == null ? auditMapper.insert(audit) > 0 : auditMapper.updateById(audit) > 0;
     }
     }
 
 
     @Override
     @Override

+ 2 - 1
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/dubbo/RemoteSubOrderServiceImpl.java

@@ -202,7 +202,8 @@ public class RemoteSubOrderServiceImpl implements RemoteSubOrderService {
         List<RemoteSubOrderVo> vos = new ArrayList<>();
         List<RemoteSubOrderVo> vos = new ArrayList<>();
 
 
         baseMapper.selectList(
         baseMapper.selectList(
-            Wrappers.lambdaQuery(SysSubOrder.class).select(SysSubOrder::getId, SysSubOrder::getPrice)
+            Wrappers.lambdaQuery(SysSubOrder.class)
+                .select(SysSubOrder::getId, SysSubOrder::getPrice, SysSubOrder::getUsrCustomer)
                 .in(SysSubOrder::getUsrCustomer, customerIds)
                 .in(SysSubOrder::getUsrCustomer, customerIds)
         ).forEach(e -> {
         ).forEach(e -> {
             RemoteSubOrderVo vo = new RemoteSubOrderVo();
             RemoteSubOrderVo vo = new RemoteSubOrderVo();

+ 5 - 5
ruoyi-modules/yingpaipay-service/src/main/java/org/dromara/service/service/impl/SysServiceServiceImpl.java

@@ -52,7 +52,7 @@ public class SysServiceServiceImpl implements ISysServiceService {
      * @param id 主键
      * @param id 主键
      * @return 服务列表
      * @return 服务列表
      */
      */
-    @Cacheable(cacheNames = CacheNames.SYS_SERVICE)
+    @Cacheable(cacheNames = CacheNames.SYS_SERVICE, key = "'all'")
     @Override
     @Override
     public SysServiceVo queryById(Long id){
     public SysServiceVo queryById(Long id){
         return baseMapper.selectVoById(id);
         return baseMapper.selectVoById(id);
@@ -97,7 +97,7 @@ public class SysServiceServiceImpl implements ISysServiceService {
      * @param bo 服务列表
      * @param bo 服务列表
      * @return 是否新增成功
      * @return 是否新增成功
      */
      */
-    @CacheEvict(cacheNames = CacheNames.SYS_SERVICE)
+    @CacheEvict(cacheNames = CacheNames.SYS_SERVICE, key = "'all'")
     @Override
     @Override
     public SysServiceVo insertByBo(SysServiceBo bo) {
     public SysServiceVo insertByBo(SysServiceBo bo) {
         SysService add = MapstructUtils.convert(bo, SysService.class);
         SysService add = MapstructUtils.convert(bo, SysService.class);
@@ -115,7 +115,7 @@ public class SysServiceServiceImpl implements ISysServiceService {
      * @param bo 服务列表
      * @param bo 服务列表
      * @return 是否修改成功
      * @return 是否修改成功
      */
      */
-    @CacheEvict(cacheNames = CacheNames.SYS_SERVICE)
+    @CacheEvict(cacheNames = CacheNames.SYS_SERVICE, key = "'all'")
     @Override
     @Override
     public SysServiceVo updateByBo(SysServiceBo bo) {
     public SysServiceVo updateByBo(SysServiceBo bo) {
         SysService update = MapstructUtils.convert(bo, SysService.class);
         SysService update = MapstructUtils.convert(bo, SysService.class);
@@ -139,7 +139,7 @@ public class SysServiceServiceImpl implements ISysServiceService {
      * @param isValid 是否进行有效性校验
      * @param isValid 是否进行有效性校验
      * @return 是否删除成功
      * @return 是否删除成功
      */
      */
-    @CacheEvict(cacheNames = CacheNames.SYS_SERVICE)
+    @CacheEvict(cacheNames = CacheNames.SYS_SERVICE, key = "'all'")
     @Override
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
         if(isValid){
         if(isValid){
@@ -148,7 +148,7 @@ public class SysServiceServiceImpl implements ISysServiceService {
         return baseMapper.deleteByIds(ids) > 0;
         return baseMapper.deleteByIds(ids) > 0;
     }
     }
 
 
-    @Cacheable(cacheNames = CacheNames.SYS_SERVICE)
+    @Cacheable(cacheNames = CacheNames.SYS_SERVICE, key = "'all'")
     @Override
     @Override
     public List<SysServiceVo> listAll() {
     public List<SysServiceVo> listAll() {
         return baseMapper.selectVoList();
         return baseMapper.selectVoList();