From 0f2951a197a7a27d87787f1f6e93c08403e973fc Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 14 Apr 2023 15:59:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=9C=E8=AE=BF=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interceptor/ApiAuthInterceptor.java | 13 +++-- .../filter/SecurityRequestFilter.java | 20 +++++++ .../common/model/consts/RedisCacheKeys.java | 2 + .../qs/serve/controller/WxSvcLoginApi.java | 7 +++ .../baz/controller/BazVisitController.java | 1 + .../BazVisitInstanceController.java | 6 ++ .../my/BazMyVisitInstanceController.java | 58 +++++++++++++++++++ .../modules/baz/entity/BazVisitInstance.java | 5 ++ .../baz/entity/so/BazVisitInstanceSo.java | 10 ++++ .../impl/BazVisitInstanceServiceImpl.java | 7 ++- .../biz/controller/api/BizVisitApi.java | 8 +++ .../qs/serve/modules/biz/entity/BizVisit.java | 11 ++++ .../controller/BmsChannelPointController.java | 12 ++++ .../BmsSupplierVisitFormController.java | 8 +++ .../bms/entity/vo/BmsUserPoint4VisitVo.java | 1 + .../qms/controller/QmsFormController.java | 8 +++ .../api/QmsSubmitApiController.java | 8 ++- .../modules/qms/entity/so/QmsGroupSo.java | 26 +++++++++ .../qms/mapper/QmsGroupScopeMapper.java | 3 +- .../wx/controller/WxUserController.java | 14 +++-- .../mapper/qms/QmsGroupScopeMapper.xml | 14 ++++- 21 files changed, 222 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/qms/entity/so/QmsGroupSo.java diff --git a/src/main/java/com/qs/serve/common/framework/interceptor/ApiAuthInterceptor.java b/src/main/java/com/qs/serve/common/framework/interceptor/ApiAuthInterceptor.java index c993c684..da03d8ea 100644 --- a/src/main/java/com/qs/serve/common/framework/interceptor/ApiAuthInterceptor.java +++ b/src/main/java/com/qs/serve/common/framework/interceptor/ApiAuthInterceptor.java @@ -6,6 +6,7 @@ import com.qs.serve.common.framework.security.model.LoginUserDTO; import com.qs.serve.common.model.consts.GySysConst; import com.qs.serve.common.model.consts.RedisCacheKeys; import com.qs.serve.common.util.JsonUtil; +import com.qs.serve.common.util.StringUtils; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; @@ -34,10 +35,14 @@ public class ApiAuthInterceptor implements HandlerInterceptor { String loginUserJson = redisService.getString(RedisCacheKeys.LOGIN_KEY_WX+token); if(loginUserJson!=null){ LoginUser loginUser = Objects.requireNonNull(JsonUtil.jsonToPojo(loginUserJson, LoginUserDTO.class)).loginUser(); - UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities()); - authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); - SecurityContextHolder.getContext().setAuthentication(authentication); - return true; + String wxLoginKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_WXUSER,loginUser.getUserId()); + String sysUserId = redisService.getString(wxLoginKey); + if(sysUserId!=null){ + UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities()); + authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + SecurityContextHolder.getContext().setAuthentication(authentication); + return true; + } } try { response.setHeader("Access-Control-Allow-Origin", "*"); diff --git a/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java b/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java index 84204c44..63ab9c0f 100644 --- a/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java +++ b/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java @@ -3,10 +3,13 @@ package com.qs.serve.common.framework.security.filter; import com.qs.serve.common.config.DevEnvironmentConfig; import com.qs.serve.common.config.properties.PermitProperties; import com.qs.serve.common.framework.redis.RedisService; +import com.qs.serve.common.framework.security.model.LoginUser; +import com.qs.serve.common.framework.security.model.LoginUserDTO; import com.qs.serve.common.framework.security.model.LoginUserType; import com.qs.serve.common.model.HttpResponsePrintUtil; import com.qs.serve.common.model.consts.GySysConst; import com.qs.serve.common.model.consts.RedisCacheKeys; +import com.qs.serve.common.util.JsonUtil; import com.qs.serve.common.util.JwtUtils; import com.qs.serve.common.framework.security.util.SecurityPermitUtil; import com.qs.serve.common.util.AuthContextUtils; @@ -27,6 +30,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.Objects; /** * 判断token情况 @@ -52,6 +56,20 @@ public class SecurityRequestFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { + + String appToken = request.getHeader(GySysConst.APP_TOKEN_PROP); + String loginUserJson = redisService.getString(RedisCacheKeys.LOGIN_KEY_WX+appToken); + if(loginUserJson!=null){ + LoginUser loginUser = Objects.requireNonNull(JsonUtil.jsonToPojo(loginUserJson, LoginUserDTO.class)).loginUser(); + String wxLoginKey = com.qs.serve.common.util.StringUtils.format(RedisCacheKeys.LOGIN_KEY_WXUSER,loginUser.getUserId()); + String sysUserId = redisService.getString(wxLoginKey); + if(sysUserId==null){ + HttpResponsePrintUtil.print2(response,401,"账号绑定更新,已被系统登出"); + return; + } + } + + String supplierId = request.getHeader(GySysConst.SUPPLIER_PROP); AuthContextUtils.setSupplierId(supplierId); //移除前缀 @@ -105,11 +123,13 @@ public class SecurityRequestFilter extends OncePerRequestFilter { * @throws ServletException */ private void tryDoSecurityAuthor(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { + String tenant = request.getHeader(GySysConst.TENANT_PROP); String token = request.getHeader(GySysConst.AUTHORIZATION_PROP); if(tenant!=null&&token!=null&&JwtUtils.verify(token)){ String userId = JwtUtils.getUserId(token); String userType = JwtUtils.getUserType(token); + AuthContextUtils.setTenant(tenant); if(SecurityContextHolder.getContext().getAuthentication()==null){ UserDetails userDetails = null; diff --git a/src/main/java/com/qs/serve/common/model/consts/RedisCacheKeys.java b/src/main/java/com/qs/serve/common/model/consts/RedisCacheKeys.java index 85507a68..e99b9dd0 100644 --- a/src/main/java/com/qs/serve/common/model/consts/RedisCacheKeys.java +++ b/src/main/java/com/qs/serve/common/model/consts/RedisCacheKeys.java @@ -18,6 +18,8 @@ public class RedisCacheKeys { /** 家长登录key */ public final static String LOGIN_KEY_WX = "login_wx_:"; + public final static String LOGIN_KEY_WXUSER= "login_wx_usr:{}"; + /** 用户登录APP {}客户端 {}用户ID */ public final static String LOGIN_KEY_APP = "login_app_{}:{}:"; diff --git a/src/main/java/com/qs/serve/controller/WxSvcLoginApi.java b/src/main/java/com/qs/serve/controller/WxSvcLoginApi.java index 588796b9..099176d6 100644 --- a/src/main/java/com/qs/serve/controller/WxSvcLoginApi.java +++ b/src/main/java/com/qs/serve/controller/WxSvcLoginApi.java @@ -72,6 +72,9 @@ public class WxSvcLoginApi { redisService.set(key, JsonUtil.objectToJson(loginUser.loginUserDTO()),2, TimeUnit.DAYS); objectMap.put("token",token); + String wxLoginKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_WXUSER,wxUser.getId()); + redisService.set(wxLoginKey,wxUser.getSysUserId(),2, TimeUnit.DAYS); + //后台管理员信息 Map tokenMap = new HashMap<>(10); String client = "wx_app"; @@ -103,6 +106,10 @@ public class WxSvcLoginApi { objectMap.put("token",token); String sysUserId = "1"; + String wxLoginKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_WXUSER,sysUserId); + redisService.set(wxLoginKey,sysUserId,2, TimeUnit.DAYS); + + Map tokenMap = new HashMap<>(10); String client = "wx_app"; diff --git a/src/main/java/com/qs/serve/modules/baz/controller/BazVisitController.java b/src/main/java/com/qs/serve/modules/baz/controller/BazVisitController.java index 85761093..c41769b5 100644 --- a/src/main/java/com/qs/serve/modules/baz/controller/BazVisitController.java +++ b/src/main/java/com/qs/serve/modules/baz/controller/BazVisitController.java @@ -53,6 +53,7 @@ public class BazVisitController { return R.ok(list); } + /** * 获取第一个流程 * @param visitId diff --git a/src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceController.java b/src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceController.java index ec80a73c..ead4a90c 100644 --- a/src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceController.java +++ b/src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceController.java @@ -46,6 +46,12 @@ public class BazVisitInstanceController { public R> getPage(BazVisitInstanceSo param){ BazVisitInstance entity = CopierUtil.copy(param,new BazVisitInstance()); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + if(param.getQueryStartDate()!=null){ + lqw.ge(BazVisitInstance::getCreateTime,param.getQueryStartDate()); + } + if(param.getQueryEndDate()!=null){ + lqw.le(BazVisitInstance::getCreateTime,param.getQueryEndDate()); + } PageUtil.startPage(); lqw.orderByDesc(BazVisitInstance::getCreateTime); List list = bazVisitInstanceService.list(lqw); diff --git a/src/main/java/com/qs/serve/modules/baz/controller/my/BazMyVisitInstanceController.java b/src/main/java/com/qs/serve/modules/baz/controller/my/BazMyVisitInstanceController.java index 1796f1a5..d5e13a5e 100644 --- a/src/main/java/com/qs/serve/modules/baz/controller/my/BazMyVisitInstanceController.java +++ b/src/main/java/com/qs/serve/modules/baz/controller/my/BazMyVisitInstanceController.java @@ -10,17 +10,21 @@ import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.baz.entity.BazVisit; import com.qs.serve.modules.baz.entity.BazVisitInstance; import com.qs.serve.modules.baz.entity.bo.BazCreateVisitInstanceBo; import com.qs.serve.modules.baz.entity.bo.BazVisitInstanceFlowBo; import com.qs.serve.modules.baz.entity.so.BazVisitInstanceSo; import com.qs.serve.modules.baz.service.BazVisitInstanceService; +import com.qs.serve.modules.sys.service.SysUserSalesService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 拜访模块 拜访实例(我的) @@ -34,6 +38,8 @@ import java.util.List; public class BazMyVisitInstanceController { private BazVisitInstanceService bazVisitInstanceService; + private SysUserSalesService sysUserSalesService; + /** * 翻页 @@ -44,6 +50,12 @@ public class BazMyVisitInstanceController { public R> getPage(BazVisitInstanceSo param){ BazVisitInstance entity = CopierUtil.copy(param,new BazVisitInstance()); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + if(param.getQueryStartDate()!=null){ + lqw.ge(BazVisitInstance::getCreateTime,param.getQueryStartDate()); + } + if(param.getQueryEndDate()!=null){ + lqw.le(BazVisitInstance::getCreateTime,param.getQueryEndDate()); + } PageUtil.startPage(); lqw.eq(BazVisitInstance::getVisitorId, AuthContextUtils.getSysUserId()); lqw.orderByDesc(BazVisitInstance::getCreateTime); @@ -51,6 +63,52 @@ public class BazMyVisitInstanceController { return R.byPageHelperList(list); } + /** + * 翻页(我的部下) + * @param param + * @return + */ + @GetMapping("/page4Under") + public R> page4Under(BazVisitInstanceSo param){ + BazVisitInstance entity = CopierUtil.copy(param,new BazVisitInstance()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + if(param.getQueryStartDate()!=null){ + lqw.ge(BazVisitInstance::getCreateTime,param.getQueryStartDate()); + } + if(param.getQueryEndDate()!=null){ + lqw.le(BazVisitInstance::getCreateTime,param.getQueryEndDate()); + } + List userIds = sysUserSalesService.listByChildIds(AuthContextUtils.getSysUserId()); + if(userIds.size()<1){ + return R.byEmptyList(); + } + String userId = AuthContextUtils.getSysUserId(); + PageUtil.startPage(); + lqw.in(BazVisitInstance::getVisitorId, userIds); + lqw.ne(BazVisitInstance::getVisitorId,userId); + lqw.orderByDesc(BazVisitInstance::getCreateTime); + List list = bazVisitInstanceService.list(lqw); + return R.byPageHelperList(list); + } + + + /** + * 获取用户未完成拜访数量 + * @param visitId 拜访id + * @return + */ + @GetMapping("/getCounter") + public R getPage(Long visitId){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BazVisitInstance::getVisitId,visitId); + lqw.eq(BazVisitInstance::getVisitorId,AuthContextUtils.getSysUserId()); + lqw.eq(BazVisitInstance::getVisitState,0); + long unFinished = bazVisitInstanceService.count(lqw); + Map map = new HashMap<>(); + map.put("unFinished",unFinished); + return R.ok(map,"ok"); + } + /** * 创建流程 * @param param diff --git a/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstance.java b/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstance.java index ea0a0ad1..d30ecba8 100644 --- a/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstance.java +++ b/src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstance.java @@ -60,11 +60,13 @@ public class BazVisitInstance implements Serializable { /** 拜访人编码 */ @NotBlank(message = "拜访人编码不能为空") @Length(max = 255,message = "拜访人编码长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) private String visitorCode; /** 拜访人 */ @NotBlank(message = "拜访人不能为空") @Length(max = 255,message = "拜访人长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) private String visitorName; /** 目标id */ @@ -74,12 +76,15 @@ public class BazVisitInstance implements Serializable { /** 目标i编码 */ @Length(max = 255,message = "目标i编码长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) private String targetCode; /** 目标名称 */ @NotBlank(message = "目标名称不能为空") @Length(max = 255,message = "目标名称长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) private String targetName; + private String targetLocalX; private String targetLocalY; private String targetAddress; diff --git a/src/main/java/com/qs/serve/modules/baz/entity/so/BazVisitInstanceSo.java b/src/main/java/com/qs/serve/modules/baz/entity/so/BazVisitInstanceSo.java index 12e674c9..e58b961e 100644 --- a/src/main/java/com/qs/serve/modules/baz/entity/so/BazVisitInstanceSo.java +++ b/src/main/java/com/qs/serve/modules/baz/entity/so/BazVisitInstanceSo.java @@ -5,6 +5,8 @@ import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; @@ -58,5 +60,13 @@ public class BazVisitInstanceSo implements Serializable { /** 备注 */ private String remark; + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate queryStartDate; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate queryEndDate; + } diff --git a/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java b/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java index 106a69a5..78c8400f 100644 --- a/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java @@ -103,8 +103,8 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl countLqw = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/qs/serve/modules/biz/controller/api/BizVisitApi.java b/src/main/java/com/qs/serve/modules/biz/controller/api/BizVisitApi.java index d9392c61..f4095506 100644 --- a/src/main/java/com/qs/serve/modules/biz/controller/api/BizVisitApi.java +++ b/src/main/java/com/qs/serve/modules/biz/controller/api/BizVisitApi.java @@ -8,6 +8,7 @@ import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.PageUtil; +import com.qs.serve.modules.baz.entity.BazVisitInstance; import com.qs.serve.modules.biz.entity.BizCusVisit; import com.qs.serve.modules.biz.entity.BizVisit; import com.qs.serve.modules.biz.service.BizVisitService; @@ -55,6 +56,13 @@ public class BizVisitApi { param.setVisitorId(userId); PageUtil.startPage(); LambdaQueryWrapper visitWrapper = new LambdaQueryWrapper<>(param); + if(param.getQueryStartTime()!=null){ + visitWrapper.ge(BizVisit::getCreateTime,param.getQueryStartTime()); + } + if(param.getQueryEndTime()!=null){ + visitWrapper.le(BizVisit::getCreateTime,param.getQueryEndTime()); + } + visitWrapper.orderByDesc(BizVisit::getCreateTime); List list = bizVisitService.list(visitWrapper); return R.byPageHelperList(list); } diff --git a/src/main/java/com/qs/serve/modules/biz/entity/BizVisit.java b/src/main/java/com/qs/serve/modules/biz/entity/BizVisit.java index 5c585e9d..83e425b4 100644 --- a/src/main/java/com/qs/serve/modules/biz/entity/BizVisit.java +++ b/src/main/java/com/qs/serve/modules/biz/entity/BizVisit.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.biz.entity; +import java.time.LocalDate; import java.time.LocalDateTime; import java.io.Serializable; @@ -93,5 +94,15 @@ public class BizVisit implements Serializable { @TableField(fill = FieldFill.UPDATE) private String updateBy; + @TableField(exist = false) + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate queryStartTime; + + @TableField(exist = false) + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate queryEndTime; + } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java index 775aa9b6..7bb4a41b 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java @@ -10,6 +10,9 @@ import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.baz.common.BazTargetTypeConsts; +import com.qs.serve.modules.baz.entity.BazVisitInfo; +import com.qs.serve.modules.baz.service.BazVisitInfoService; import com.qs.serve.modules.bms.entity.BmsChannel; import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion2; @@ -47,6 +50,7 @@ import java.util.stream.Collectors; @RequestMapping("bms/channelPoint") public class BmsChannelPointController { + private BazVisitInfoService bazVisitInfoService; private BmsChannelPointService bmsChannelPointService; private BmsRegionService bmsRegionService; private BmsRegion2Service bmsRegion2Service; @@ -66,6 +70,14 @@ public class BmsChannelPointController { param.setTenantId(AuthContextUtils.getTenant()); PageUtil.startPage(); List list = channelPointMapper.selectUserPointList4Visit(param); + for (BmsUserPoint4VisitVo visitVo : list) { + LambdaQueryWrapper visitInfoLqw = new LambdaQueryWrapper<>(); + visitInfoLqw.eq(BazVisitInfo::getTargetType, BazTargetTypeConsts.POINT); + visitInfoLqw.eq(BazVisitInfo::getTargetId,visitVo.getPointId()); + visitInfoLqw.eq(BazVisitInfo::getUserId,sysUserId); + BazVisitInfo visitInfo = bazVisitInfoService.getOne(visitInfoLqw,false); + visitVo.setVisitInfo(visitInfo); + } return R.byPageHelperList(list); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitFormController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitFormController.java index 6e3d021e..d010866e 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitFormController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitFormController.java @@ -8,6 +8,8 @@ import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.baz.entity.BazVisitFlow; +import com.qs.serve.modules.baz.service.BazVisitFlowService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -31,6 +33,7 @@ import java.util.List; public class BmsSupplierVisitFormController { private BmsSupplierVisitFormService bmsSupplierVisitFormService; + private BazVisitFlowService bazVisitFlowService; /** * 列表 @@ -112,6 +115,11 @@ public class BmsSupplierVisitFormController { @PreAuthorize("hasRole('bms:supplierVisitForm:delete')") public R deleteById(@PathVariable("ids") String ids){ List idsLong = StringUtils.splitIdLong(ids); + LambdaQueryWrapper visitLqw = new LambdaQueryWrapper<>(); + visitLqw.in(BazVisitFlow::getFormId,idsLong); + if( 0< bazVisitFlowService.count(visitLqw)){ + return R.error("拜访模块使用了表单,删除失败"); + } boolean result = bmsSupplierVisitFormService.removeByIds(idsLong); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsUserPoint4VisitVo.java b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsUserPoint4VisitVo.java index 71f38a1a..6d7a1139 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsUserPoint4VisitVo.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsUserPoint4VisitVo.java @@ -34,5 +34,6 @@ public class BmsUserPoint4VisitVo { String localX; String localY; + Object visitInfo; } diff --git a/src/main/java/com/qs/serve/modules/qms/controller/QmsFormController.java b/src/main/java/com/qs/serve/modules/qms/controller/QmsFormController.java index 4e90cf3b..d1336df3 100644 --- a/src/main/java/com/qs/serve/modules/qms/controller/QmsFormController.java +++ b/src/main/java/com/qs/serve/modules/qms/controller/QmsFormController.java @@ -8,7 +8,9 @@ import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.PageUtil; +import com.qs.serve.modules.qms.entity.QmsFormSubmit; import com.qs.serve.modules.qms.entity.bo.QmsFormBo; +import com.qs.serve.modules.qms.service.QmsFormSubmitService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -32,6 +34,7 @@ import java.util.List; public class QmsFormController { private QmsFormService qmsFormService; + private QmsFormSubmitService formSubmitService; /** * 翻页查询 @@ -104,6 +107,11 @@ public class QmsFormController { @SysLog(module = SystemModule.QUESTION, title = "问卷表单", biz = BizType.DELETE) @PreAuthorize("hasRole('qms:form:delete')") public R deleteById(@PathVariable("id") Long id){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(QmsFormSubmit::getFromId,id); + if(formSubmitService.count(lqw)>0){ + return R.error("问卷表单已被使用无法删除"); + } boolean result = qmsFormService.removeById(id); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/qms/controller/api/QmsSubmitApiController.java b/src/main/java/com/qs/serve/modules/qms/controller/api/QmsSubmitApiController.java index dac07f4a..17741c9f 100644 --- a/src/main/java/com/qs/serve/modules/qms/controller/api/QmsSubmitApiController.java +++ b/src/main/java/com/qs/serve/modules/qms/controller/api/QmsSubmitApiController.java @@ -16,6 +16,7 @@ import com.qs.serve.modules.qms.entity.QmsFormSubmit; import com.qs.serve.modules.qms.entity.QmsGroup; import com.qs.serve.modules.qms.entity.QmsGroupScope; import com.qs.serve.modules.qms.entity.bo.QmsSubmitBo; +import com.qs.serve.modules.qms.entity.so.QmsGroupSo; import com.qs.serve.modules.qms.mapper.QmsGroupMapper; import com.qs.serve.modules.qms.mapper.QmsGroupScopeMapper; import com.qs.serve.modules.qms.service.QmsFormService; @@ -55,11 +56,12 @@ public class QmsSubmitApiController { /** * 我的代办、已办列表 - * @param finished + * @param param * @return */ @GetMapping("/myGroupList") - public R todoPage(Integer finished){ + public R todoPage(QmsGroupSo param){ + Integer finished = param.getFinished(); WxUser wxUser = wxUserService.getCurrentWxUser(); if(wxUser.getSysUserId()==null||wxUser.getSysUserId().equals("0")){ return R.byEmptyList(); @@ -79,7 +81,7 @@ public class QmsSubmitApiController { // PageUtil.startPage(); // List groupScopes = qmsGroupScopeService.list(lqw); PageUtil.startPage(); - List groupScopes = qmsGroupScopeMapper.listScope(finished,userId); + List groupScopes = qmsGroupScopeMapper.listScope(param,userId); List result = new ArrayList<>(); for (QmsGroupScope groupScope : groupScopes) { QmsGroup qmsGroup = qmsGroupService.getById(groupScope.getGroupId()); diff --git a/src/main/java/com/qs/serve/modules/qms/entity/so/QmsGroupSo.java b/src/main/java/com/qs/serve/modules/qms/entity/so/QmsGroupSo.java new file mode 100644 index 00000000..af570599 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/qms/entity/so/QmsGroupSo.java @@ -0,0 +1,26 @@ +package com.qs.serve.modules.qms.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +/** + * @author YenHex + * @since 2023/4/14 + */ +@Data +public class QmsGroupSo { + + Integer finished; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate queryStartDate; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate queryEndDate; + +} diff --git a/src/main/java/com/qs/serve/modules/qms/mapper/QmsGroupScopeMapper.java b/src/main/java/com/qs/serve/modules/qms/mapper/QmsGroupScopeMapper.java index 0d8a1824..96245448 100644 --- a/src/main/java/com/qs/serve/modules/qms/mapper/QmsGroupScopeMapper.java +++ b/src/main/java/com/qs/serve/modules/qms/mapper/QmsGroupScopeMapper.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.qms.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.qms.entity.QmsGroupScope; +import com.qs.serve.modules.qms.entity.so.QmsGroupSo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,7 +20,7 @@ public interface QmsGroupScopeMapper extends BaseMapper { * @param userId * @return */ - List listScope(@Param("finished") Integer finished,@Param("userId") String userId); + List listScope(@Param("query") QmsGroupSo finished, @Param("userId") String userId); } diff --git a/src/main/java/com/qs/serve/modules/wx/controller/WxUserController.java b/src/main/java/com/qs/serve/modules/wx/controller/WxUserController.java index 1facb8ca..a296e2ee 100644 --- a/src/main/java/com/qs/serve/modules/wx/controller/WxUserController.java +++ b/src/main/java/com/qs/serve/modules/wx/controller/WxUserController.java @@ -46,7 +46,7 @@ public class WxUserController { public R> getList(WxUser param){ PageUtil.startPage(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); - lqw.eq(WxUser::getFirstFlag,1); + //lqw.eq(WxUser::getFirstFlag,1); if(param.getNotBindFlag()!=null&¶m.getNotBindFlag().equals(1)){ lqw.isNull(WxUser::getPhone).or().eq(WxUser::getPhone,""); }else if (param.getNotBindFlag()!=null&¶m.getNotBindFlag().equals(0)){ @@ -80,6 +80,9 @@ public class WxUserController { return R.error("该微信用户已被绑定"); } SysUser sysUser = sysUserService.getById(param.getSysUserId()); + if(sysUser.getMobile()==null||sysUser.getMobile().length()<4){ + return R.error("用户未绑定手机号"); + } if(!StringUtils.hasText(wxUser.getUnionId())){ WxUser updVo = new WxUser(); updVo.setId(wxUser.getId()); @@ -107,9 +110,11 @@ public class WxUserController { @PostMapping("/rmBind") public R rmBind(@RequestBody @Valid WxUserRmBindBo param){ String sysUserId = null; + String wxUserId = null; if(StringUtils.hasText(param.getWxUserId())){ WxUser wxUser = wxUserService.getById(param.getWxUserId()); sysUserId = wxUser.getSysUserId(); + wxUserId = wxUser.getId(); if(!StringUtils.hasText(wxUser.getUnionId())){ wxUser.setSysUserId("0"); wxUser.setEmpName(wxUser.getNickName()); @@ -135,11 +140,8 @@ public class WxUserController { wxUserService.updateById(wxUser); } } - if(sysUserId!=null){ - String client = "wx_app"; - String redisKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_APP,client,sysUserId); - redisService.remove(redisKey); - } + String wxLoginKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_WXUSER,wxUserId); + redisService.remove(wxLoginKey); return R.ok(); } diff --git a/src/main/resources/mapper/qms/QmsGroupScopeMapper.xml b/src/main/resources/mapper/qms/QmsGroupScopeMapper.xml index 17dc76ca..ce11f801 100644 --- a/src/main/resources/mapper/qms/QmsGroupScopeMapper.xml +++ b/src/main/resources/mapper/qms/QmsGroupScopeMapper.xml @@ -56,13 +56,21 @@ and `qms_group_scope`.`scope_value` = #{userId} and `qms_group_scope`.`del_flag` = '0' and `qms_group`.`del_flag` = '0' - and `qms_group_scope`.`finished` != -1 - + and `qms_group_scope`.`finished` != -1 + and `qms_group_scope`.`finished` = '0' and `qms_group`.`group_finished` = '0' - + and (`qms_group_scope`.`finished` = '1' or `qms_group`.`group_finished` = '1') + + + and qms_group_scope.`create_time` >= #{query.queryStartDate} + + + and qms_group_scope.`create_time` <= #{query.queryEndDate} + + order by `qms_group_scope`.`create_time` desc