by su 4 роки тому
батько
коміт
552a1ea398

+ 4 - 4
house-auth/src/main/java/com/ljq/house/auth/utils/TokenUtils.java

@@ -17,8 +17,8 @@ public class TokenUtils {
         //新生成token返回给客户端
         String newToken = "";
         if (JedisUtil.exists(SsoUtil.SSO_USER + ":" + tokenRedisKey)) {
-            log.info("redis缓存存在token:{},重新续期2小时", SsoUtil.SSO_USER + ":" + tokenRedisKey);
-            JedisUtil.expire(SsoUtil.SSO_USER + ":" + tokenRedisKey, 7200);
+            log.info("redis缓存存在token:{},重新续期2", SsoUtil.SSO_USER + ":" + tokenRedisKey);
+            JedisUtil.expire(SsoUtil.SSO_USER + ":" + tokenRedisKey, 172800);
             newToken = JedisUtil.getStringValue(SsoUtil.SSO_USER + ":" + tokenRedisKey);
         } else {
             log.info("redis缓存没有token,重新生成");
@@ -29,8 +29,8 @@ public class TokenUtils {
                 throw new JwtAuthenticationException(ResultCodeEnum.D004);
             }
 
-            //缓存token一周
-            JedisUtil.setStringValue(SsoUtil.SSO_USER + ":" + tokenRedisKey, newToken);
+            //缓存token两天
+            JedisUtil.setStringValue(SsoUtil.SSO_USER + ":" + tokenRedisKey, newToken , 172800);
         }
         return newToken;
     }

+ 5 - 0
house-biz/src/main/java/com/ljq/house/biz/model/TmStore.java

@@ -5,6 +5,7 @@ import java.time.LocalDate;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -68,4 +69,8 @@ public class TmStore{
     @TableField("enable")
     private Integer enable;
 
+    @ApiModelProperty(value = "创建者部门ID", name = "create_user_dept_id", example = "1")
+    @JsonProperty("create_user_dept_id")
+    private Long createUserDeptId;
+
 }

+ 1 - 1
house-biz/src/main/resources/mapper/TmAgencyMapper.xml

@@ -30,7 +30,7 @@
     <select id="countAll" resultType="java.lang.Long">
         select count(1) from tm_agency where enable = 1
         <if test="deptId != null  ">
-            and CREATE_USER_DEPT_ID = #{deptId};
+            and agency_company_id = #{deptId};
         </if>
     </select>
 

+ 50 - 0
house-common/src/main/java/com/ljq/house/common/utils/OssCheckPointUploadUtil.java

@@ -81,6 +81,56 @@ public class OssCheckPointUploadUtil {
         }
     }
 
+    public void doUploadThenDeleteS3(String uploadFile , String objectName){
+        // 创建OSSClient实例。
+        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+
+        try {
+            File localFile = new File(uploadFile);
+            log.info("Object name = {}" ,objectName);
+            UploadFileRequest uploadFileRequest = new UploadFileRequest(bucketName, objectName);
+            // The local file to upload---it must exist.
+            // 指定上传的本地文件。
+            uploadFileRequest.setUploadFile(uploadFile);
+            log.info("本地文件为:{}" ,uploadFile);
+            // Sets the concurrent upload task number to 5.
+            uploadFileRequest.setTaskNum(5);
+            // Sets the part size to 1MB.
+            uploadFileRequest.setPartSize(1024 * 1024 * 1);
+            // 开启断点续传,默认关闭。
+            // Enables the checkpoint file. By default it's off.
+            uploadFileRequest.setEnableCheckpoint(true);
+            // 记录本地分片上传结果的文件。开启断点续传功能时需要设置此参数,上传过程中的进度信息会保存在该文件中,如果某一分片上传失败,再次上传时会根据文件中记录的点继续上传。上传完成后,该文件会被删除。默认与待上传的本地文件同目录,为uploadFile.ucp。
+            String localCheckFile = localFile.getName() + "_uploadFile.ucp";
+            uploadFileRequest.setCheckpointFile(localCheckFile);
+
+            UploadFileResult uploadResult = ossClient.uploadFile(uploadFileRequest);
+
+            CompleteMultipartUploadResult multipartUploadResult =
+                    uploadResult.getMultipartUploadResult();
+            log.info("断点续传结果:{}", multipartUploadResult.getETag());
+
+        } catch (OSSException oe) {
+            System.out.println("Caught an OSSException, which means your request made it to OSS, "
+                    + "but was rejected with an error response for some reason.");
+            System.out.println("Error Message: " + oe.getErrorMessage());
+            System.out.println("Error Code:       " + oe.getErrorCode());
+            System.out.println("Request ID:      " + oe.getRequestId());
+            System.out.println("Host ID:           " + oe.getHostId());
+        } catch (ClientException ce) {
+            System.out.println("Caught an ClientException, which means the client encountered "
+                    + "a serious internal problem while trying to communicate with OSS, "
+                    + "such as not being able to access the network.");
+            System.out.println("Error Message: " + ce.getMessage());
+        } catch (Throwable e) {
+            e.printStackTrace();
+        } finally {
+            ossClient.shutdown();
+            FileUtils.deleteFile(uploadFile);
+            log.info("关闭oss client,并且本地删除文件");
+        }
+    }
+
     public void upload2(String filePath, String key1) {
         OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
         try {

+ 21 - 0
house-common/src/main/java/com/ljq/house/common/utils/UploadToOssUtil.java

@@ -70,6 +70,27 @@ public class UploadToOssUtil {
         }
     }
 
+    public void uploadThenDeleteS3(String filePath, String key1) {
+        OSSClient ossClient = new OSSClient(ossEndPoint, ossAppkey, ossAppSecret);
+        try {
+            File file = new File(filePath);
+            if (!file.exists()) {
+                log.error("要上传的文件不存在:" + filePath);
+            }
+
+            ossClient.putObject(ossBucket, key1, new File(filePath));
+
+        } catch (Exception e) {
+            log.error(e.toString() + filePath);
+        }finally {
+            if(null != ossClient){
+                ossClient.shutdown();
+                FileUtils.deleteFile(filePath);
+                log.info("关闭oss 客户端,并且删除上传的本地文件");
+            }
+        }
+    }
+
     public void upload2(String filePath, String key1) {
         OSSClient ossClient = new OSSClient(ossEndPoint, ossAppkey, ossAppSecret);
         try {

+ 1 - 1
house-web/src/main/java/com/ljq/house/admin/controller/AdminTmAdminController.java

@@ -540,7 +540,7 @@ public class AdminTmAdminController {
         boolean needUpdate = false;
         QueryWrapper<TmAdmin> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("ADMIN_ID" , tmAdmin.getAdminId());
-        queryWrapper.eq("ENABLE" , 1);
+//        queryWrapper.eq("ENABLE" , 1);
         queryWrapper.last("limit 1");
         TmAdmin dbAdmin = tmAdminDao.selectOne(queryWrapper);
         if(null == dbAdmin){

+ 6 - 1
house-web/src/main/java/com/ljq/house/admin/controller/AdminTmAgencyController.java

@@ -90,6 +90,7 @@ public class AdminTmAgencyController {
         queryWrapper.eq("enable" , 1);
         queryWrapper.orderByDesc("create_time");
         queryWrapper.groupBy("agency_user_id");
+
         if(!ShiroUtils.getSubject().hasRole("super_admin")){
             //非超级管理员,则需要过滤数据
             TmAdmin user = ShiroUtils.getAdmin();
@@ -102,7 +103,11 @@ public class AdminTmAgencyController {
                 return Result.success();
             }
 //            queryWrapper.eq("CREATE_USER_DEPT_ID" , user.getDeptId());
-            queryWrapper.eq("agency_company_id", user.getDeptId());
+            if(user.getType().compareTo(1) == 0) {
+                queryWrapper.and(wrapper -> wrapper.eq("agency_company_id", user.getDeptId()).or().isNull("agency_company_id"));
+            }else {
+                queryWrapper.eq("agency_company_id", user.getDeptId());
+            }
         }
 
         Map<String, Object> constantReq = new HashMap<>();

+ 10 - 10
house-web/src/main/java/com/ljq/house/admin/controller/AdminTmHouseController.java

@@ -566,16 +566,16 @@ public class AdminTmHouseController {
                 throw new CommonBaseException(ResultCodeEnum.D024);
             }
             //管控一个场景只能绑定一个房源
-            if (StringUtils.isNoneBlank(tmHouse.getSceneNum())) {
-                QueryWrapper<TmHouse> queryWrapper = new QueryWrapper<>();
-                queryWrapper.eq("scene_num", tmHouse.getSceneNum());
-                queryWrapper.eq("enable", 1);
-                queryWrapper.last("limit 1");
-                TmHouse dbhouse = tmHouseDao.selectOne(queryWrapper);
-                if (null != dbhouse) {
-                    throw new CommonBaseException(ResultCodeEnum.D025);
-                }
-            }
+//            if (StringUtils.isNoneBlank(tmHouse.getSceneNum())) {
+//                QueryWrapper<TmHouse> queryWrapper = new QueryWrapper<>();
+//                queryWrapper.eq("scene_num", tmHouse.getSceneNum());
+//                queryWrapper.eq("enable", 1);
+//                queryWrapper.last("limit 1");
+//                TmHouse dbhouse = tmHouseDao.selectOne(queryWrapper);
+//                if (null != dbhouse) {
+//                    throw new CommonBaseException(ResultCodeEnum.D025);
+//                }
+//            }
             if (StringUtils.isNoneBlank(tmHouse.getVrLink())) {
                 String qrCodeUrl = "/pages/web/web?vr_link=" + tmHouse.getVrLink();
                 //生成带看页面的二维码

+ 40 - 4
house-web/src/main/java/com/ljq/house/admin/controller/AdminTmStoreController.java

@@ -4,6 +4,8 @@ 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.ljq.house.auth.utils.ShiroUtils;
+import com.ljq.house.biz.model.TmAdmin;
 import com.ljq.house.common.exception.CommonBaseException;
 import com.ljq.house.biz.dao.TmStoreDao;
 import com.ljq.house.biz.model.Result;
@@ -48,7 +50,7 @@ public class AdminTmStoreController {
     @ApiOperation(value = "新增门店")
     @PostMapping("/add")
     @ResponseBody
-    @RequiresRoles(value = {"super_admin","normal_admin"},logical = Logical.OR)
+    @RequiresRoles(value = {"super_admin","normal_admin","sub_normal_admin"},logical = Logical.OR)
     public Result add(@RequestBody @ApiParam(name = "门店对象", value = "传入json格式", required = true) TmStore tmStore) {
         if (null == tmStore || StringUtils.isBlank(tmStore.getName()) || null == tmStore.getAddress()) {
             throw new CommonBaseException(ResultCodeEnum.D017);
@@ -63,8 +65,10 @@ public class AdminTmStoreController {
                 throw new CommonBaseException(ResultCodeEnum.D040);
             }
         }
+        TmAdmin user = ShiroUtils.getAdmin();
 
         tmStore.setEnable(1);
+        tmStore.setCreateUserDeptId(user.getDeptId());
         tmStore.setCreateTime(LocalDate.now());
         tmStore.setLastModifyDatetime(LocalDateTime.now());
         boolean result = tmStoreService.save(tmStore);
@@ -74,7 +78,7 @@ public class AdminTmStoreController {
     @ApiOperation(value = "修改门店")
     @PostMapping("/update")
     @ResponseBody
-    @RequiresRoles(value = {"super_admin","normal_admin"},logical = Logical.OR)
+    @RequiresRoles(value = {"super_admin","normal_admin","sub_normal_admin"},logical = Logical.OR)
     public Result update(@RequestBody @ApiParam(name = "门店对象", value = "传入json格式", required = true) TmStore tmStore) {
         if (null == tmStore || null == tmStore.getId()) {
             throw new CommonBaseException(ResultCodeEnum.D017);
@@ -86,7 +90,7 @@ public class AdminTmStoreController {
     @ApiOperation(value = "根据条件获取门店列表")
     @GetMapping("/queryList")
     @ResponseBody
-    @RequiresRoles(value = {"super_admin","normal_admin"},logical = Logical.OR)
+    @RequiresRoles(value = {"super_admin","normal_admin","sub_normal_admin"},logical = Logical.OR)
     public Result update(@RequestParam(name = "keyword") String keyword,
                          @RequestParam(name = "page_num") Long pageNum,
                          @RequestParam(name = "page_size") Long pageSize) {
@@ -96,6 +100,22 @@ public class AdminTmStoreController {
         QueryWrapper<TmStore> queryWrapper = new QueryWrapper<>();
         queryWrapper.orderByDesc("id");
         queryWrapper.eq("enable" , 1);
+
+        if(!ShiroUtils.getSubject().hasRole("super_admin")){
+            //非超级管理员,则需要过滤数据
+            TmAdmin user = ShiroUtils.getAdmin();
+            if(user == null){
+                log.error("用户未登录,登录");
+                throw new CommonBaseException(ResultCodeEnum.D101 , "未登录,请登录");
+            }
+            if(null == user.getDeptId()){
+                log.error("用户未分配归属部门");
+                return Result.success();
+            }
+//            queryWrapper.eq("CREATE_USER_DEPT_ID" , user.getDeptId());
+            queryWrapper.eq("create_user_dept_id", user.getDeptId());
+        }
+
         DataUtils.assembleTimeQueryWrapper(null, keyword,
                 queryWrapper, "id", "name", "");
         //页面配置入参
@@ -121,6 +141,22 @@ public class AdminTmStoreController {
         //只获取有效的
         queryWrapper.eq("enable" , 1);
         queryWrapper.eq("status" , 1);
+
+        if(!ShiroUtils.getSubject().hasRole("super_admin")){
+            //非超级管理员,则需要过滤数据
+            TmAdmin user = ShiroUtils.getAdmin();
+            if(user == null){
+                log.error("用户未登录,登录");
+                throw new CommonBaseException(ResultCodeEnum.D101 , "未登录,请登录");
+            }
+            if(null == user.getDeptId()){
+                log.error("用户未分配归属部门");
+                return Result.success();
+            }
+//            queryWrapper.eq("CREATE_USER_DEPT_ID" , user.getDeptId());
+            queryWrapper.eq("create_user_dept_id", user.getDeptId());
+        }
+
         //页面配置入参
         Page<TmStore> page = new Page(pageNum, pageSize);
         IPage<Map<String, Object>> result = new Page<>();
@@ -132,7 +168,7 @@ public class AdminTmStoreController {
     @ApiOperation(value = "删除门店")
     @PostMapping("/delete")
     @ResponseBody
-    @RequiresRoles(value = {"super_admin","normal_admin"},logical = Logical.OR)
+    @RequiresRoles(value = {"super_admin","normal_admin","sub_normal_admin"},logical = Logical.OR)
     public Result delete(@RequestBody @ApiParam(name = "删除请求体", value = "传入json格式", required = true) DeleteRequestVo requestVo) {
 
         if(!CollectionUtils.isEmpty(requestVo.getIntIds())){

+ 4 - 4
house-web/src/main/java/com/ljq/house/admin/controller/SysDeptController.java

@@ -49,7 +49,7 @@ public class SysDeptController {
 
     @ApiOperation(value = "新增部门数据")
     @PostMapping(value = "/add")
-    @RequiresRoles(value = {"super_admin"},logical = Logical.OR)
+    @RequiresRoles(value = {"super_admin","normal_admin","sub_normal_admin"},logical = Logical.OR)
     @ResponseBody
     public Result addDept(@RequestBody @ApiParam(name = "部门信息对象", value = "传入json格式", required = true) SysDept sysDept) {
 
@@ -75,7 +75,7 @@ public class SysDeptController {
 
     @ApiOperation(value = "修改部门数据")
     @PostMapping(value = "/update")
-    @RequiresRoles(value = {"super_admin"},logical = Logical.OR)
+    @RequiresRoles(value = {"super_admin","normal_admin","sub_normal_admin"},logical = Logical.OR)
     @ResponseBody
     public Result updateDept(@RequestBody @ApiParam(name = "部门信息对象", value = "传入json格式", required = true) SysDept sysDept) {
 
@@ -116,7 +116,7 @@ public class SysDeptController {
     @ApiOperation(value = "获取部门列表")
     @GetMapping(value = "/list")
     @ResponseBody
-    @RequiresRoles(value = {"super_admin"},logical = Logical.OR)
+    @RequiresRoles(value = {"super_admin","normal_admin","sub_normal_admin"},logical = Logical.OR)
     public Result getAdminList(@RequestParam(name = "page_num") Long pageNum,
                                @RequestParam(name = "page_size") Long pageSize) {
 
@@ -137,7 +137,7 @@ public class SysDeptController {
     @ApiOperation(value = "通过鉴权获取部门列表")
     @GetMapping(value = "/listWithAuth")
     @ResponseBody
-    @RequiresRoles(value = {"super_admin"},logical = Logical.OR)
+    @RequiresRoles(value = {"super_admin","normal_admin","sub_normal_admin"},logical = Logical.OR)
     public Result getAdminListWithAuth(@RequestParam(name = "page_num") Long pageNum,
                                        @RequestParam(name = "page_size") Long pageSize) {
 

+ 1 - 1
house-web/src/main/java/com/ljq/house/admin/controller/SysRoleController.java

@@ -37,7 +37,7 @@ public class SysRoleController {
     @ApiOperation(value = "获取角色列表(默认排除超级管理员)")
     @GetMapping(value = "/list")
     @ResponseBody
-    @RequiresRoles(value = {"super_admin"})
+    @RequiresRoles(value = {"super_admin","normal_admin","sub_normal_admin"},logical = Logical.OR)
     public Result getRoleList(HttpServletRequest request) {
         QueryWrapper<SysRole> queryWrapper = new QueryWrapper<>();
         queryWrapper.ne("role_type" , AdminTypeEnum.SUPER_ADMIN.getType());

+ 1 - 1
house-web/src/main/java/com/ljq/house/app/controller/AppAgencyController.java

@@ -139,7 +139,7 @@ public class AppAgencyController {
         }
 
         //新生成token,并缓存到redis上后返回给客户端
-        String newToken = TokenUtils.genTokenAndCache(dbAgency.getAgencyId(), dbAgency.getName(), wxOpenId);
+        String newToken = TokenUtils.genTokenAndCache(dbAgency.getAgencyUserId(), dbAgency.getName(), wxOpenId);
 
         //返回用户信息和token给前端
         com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();

+ 22 - 18
house-web/src/main/resources/application-prod.properties

@@ -1,4 +1,4 @@
-server.port=8087
+server.port=8085
 
 #��ȫ��������ʹ�ò�ͬ�Ķ˿�
 management.server.port=8090
@@ -16,13 +16,12 @@ spring.jackson.time-zone=GMT+8
 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
 
 
-spring.datasource.url=jdbc:mysql://172.20.163.61:3306/vrhouseusa?serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
+spring.datasource.url=jdbc:mysql://127.0.0.1:3306/vrhouseusa?serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
 spring.datasource.username=root
 spring.datasource.password=4dkk2020test%
 spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
 
 
-#Im����ͼƬ����Ƶ���·��
 spring.pid.file= vr/house/app.pid
 file-backup-path: vr/house/im-files/
 video-file-path: vr/house/video-files/
@@ -58,9 +57,7 @@ spring.datasource.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.bmp,*.png,*.css,
 
 #mybatis����
 mybatis.config-location=classpath:/mybatis/mybatis-config.xml
-pagehelper.helper-dialect=mysql
-
-spring.thymeleaf.cache=false
+#pagehelper.helper-dialect=mysql
 
 
 #���ش�ŵ��ļ�·��,�����޸ij��Լ���ͼƬ���·��,��Ӧnginx.conf��alias��ӦĿ¼
@@ -87,7 +84,6 @@ info.author=abner
 info.email=houweiyu@cgaii.com
 info.version=1.0
 
-
 #redis
 spring.redis.database=0
 spring.redis.host=127.0.0.1
@@ -104,24 +100,22 @@ spring.redis.jedis.pool.max-active=8
 # �ȴ��������ӵ����ʱ�䣬��λ���룬Ĭ��ֵΪ-1����ʾ������ʱ����������ȴ�ʱ�䣬��ֱ���׳�JedisConnectionException
 spring.redis.jedis.pool.max-wait=-1ms
 
-user.wx.app.id=wxdfbbee52bcb3c32e
-user.wx.app.secret=c5ba2d29a0209ee7491a935f7818af54
-agency.wx.app.id=wxab6e619b45981024
-agency.wx.app.secret=653816f10b7a8ff44e4b436b12c151e2
-wx_miniprogram_state=formal
+user.wx.app.id=wxd4d20cf8be187961
+user.wx.app.secret=daa53579e3463ad79337e9f1bb769356
+agency.wx.app.id=wx168dd55e8bc0ba79
+agency.wx.app.secret=a607a3085b74e204c31373b3c3a588b4
+wx_miniprogram_state=trial
 wx_subscribe.template.id=zWTBJFpALA3KR3qx1keYJCzJdVtRjFbxrnOJc_Htn-g
-vr_redirect_link=https://vrhouse.4dkankan.com/
+vr_redirect_link=https://testeur.4dkankan.com/
 
 #��ά�����ĵ�¼����
-4dkankan.host=https://172.20.163.61/
-
+4dkankan.host=https://testeur.4dkankan.com/
 #��ά��������ҳ��·��:
 4dkankan.vr.house.path="/pages/web/web?vr_link="
-4dkankan.vr.house.host=http://127.0.0.1:8087/
-4dkankan.api.vr.house.host=https://open.4dkankan.com
+4dkankan.vr.house.host=http://127.0.0.1:8085/
+4dkankan.api.vr.house.host=http://127.0.0.1:8091
 4dkankan.api.app.id = 123
 4dkankan.api.app.secret = 123
-
 #oss����
 
 oss.point=http://oss-us-west-1.aliyuncs.com
@@ -131,5 +125,15 @@ oss.bucket=usa-4dkankan-project
 oss.video.file.path=domain/4dhouse/
 oss.image.file.path=domain/4dhouse/
 oss.query.url=https://testusaoss.4dkankan.com/
+
+#oss类型为oss(阿里云)或s3(亚马逊)
+oss.type=oss
+oss.s3key=AKIAWCV5QFZ3ZNELKYUY
+oss.s3secrey=epS5ghyR4LJ7rxk/qJO9ZYh6m9Oz6g5haKDu4yws
+oss.s3bucket=4dkankan
+
 #oss.query.url=https://4dkankan.oss-cn-shenzhen.aliyuncs.com/
 
+
+
+

+ 2 - 2
house-web/src/main/resources/application.properties

@@ -1,2 +1,2 @@
-spring.profiles.active=test
-  #spring.profiles.active=dev
+#spring.profiles.active=test
+spring.profiles.active=dev