Browse Source

拜访调整

contract
Yen 2 years ago
parent
commit
0f2951a197
  1. 13
      src/main/java/com/qs/serve/common/framework/interceptor/ApiAuthInterceptor.java
  2. 20
      src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java
  3. 2
      src/main/java/com/qs/serve/common/model/consts/RedisCacheKeys.java
  4. 7
      src/main/java/com/qs/serve/controller/WxSvcLoginApi.java
  5. 1
      src/main/java/com/qs/serve/modules/baz/controller/BazVisitController.java
  6. 6
      src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceController.java
  7. 58
      src/main/java/com/qs/serve/modules/baz/controller/my/BazMyVisitInstanceController.java
  8. 5
      src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstance.java
  9. 10
      src/main/java/com/qs/serve/modules/baz/entity/so/BazVisitInstanceSo.java
  10. 7
      src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java
  11. 8
      src/main/java/com/qs/serve/modules/biz/controller/api/BizVisitApi.java
  12. 11
      src/main/java/com/qs/serve/modules/biz/entity/BizVisit.java
  13. 12
      src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java
  14. 8
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitFormController.java
  15. 1
      src/main/java/com/qs/serve/modules/bms/entity/vo/BmsUserPoint4VisitVo.java
  16. 8
      src/main/java/com/qs/serve/modules/qms/controller/QmsFormController.java
  17. 8
      src/main/java/com/qs/serve/modules/qms/controller/api/QmsSubmitApiController.java
  18. 26
      src/main/java/com/qs/serve/modules/qms/entity/so/QmsGroupSo.java
  19. 3
      src/main/java/com/qs/serve/modules/qms/mapper/QmsGroupScopeMapper.java
  20. 14
      src/main/java/com/qs/serve/modules/wx/controller/WxUserController.java
  21. 14
      src/main/resources/mapper/qms/QmsGroupScopeMapper.xml

13
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.GySysConst;
import com.qs.serve.common.model.consts.RedisCacheKeys; import com.qs.serve.common.model.consts.RedisCacheKeys;
import com.qs.serve.common.util.JsonUtil; import com.qs.serve.common.util.JsonUtil;
import com.qs.serve.common.util.StringUtils;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder; 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); String loginUserJson = redisService.getString(RedisCacheKeys.LOGIN_KEY_WX+token);
if(loginUserJson!=null){ if(loginUserJson!=null){
LoginUser loginUser = Objects.requireNonNull(JsonUtil.jsonToPojo(loginUserJson, LoginUserDTO.class)).loginUser(); LoginUser loginUser = Objects.requireNonNull(JsonUtil.jsonToPojo(loginUserJson, LoginUserDTO.class)).loginUser();
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities()); String wxLoginKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_WXUSER,loginUser.getUserId());
authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); String sysUserId = redisService.getString(wxLoginKey);
SecurityContextHolder.getContext().setAuthentication(authentication); if(sysUserId!=null){
return true; UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());
authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authentication);
return true;
}
} }
try { try {
response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Origin", "*");

20
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.DevEnvironmentConfig;
import com.qs.serve.common.config.properties.PermitProperties; import com.qs.serve.common.config.properties.PermitProperties;
import com.qs.serve.common.framework.redis.RedisService; 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.framework.security.model.LoginUserType;
import com.qs.serve.common.model.HttpResponsePrintUtil; import com.qs.serve.common.model.HttpResponsePrintUtil;
import com.qs.serve.common.model.consts.GySysConst; import com.qs.serve.common.model.consts.GySysConst;
import com.qs.serve.common.model.consts.RedisCacheKeys; 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.util.JwtUtils;
import com.qs.serve.common.framework.security.util.SecurityPermitUtil; import com.qs.serve.common.framework.security.util.SecurityPermitUtil;
import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.AuthContextUtils;
@ -27,6 +30,7 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.Objects;
/** /**
* 判断token情况 * 判断token情况
@ -52,6 +56,20 @@ public class SecurityRequestFilter extends OncePerRequestFilter {
@Override @Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { 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); String supplierId = request.getHeader(GySysConst.SUPPLIER_PROP);
AuthContextUtils.setSupplierId(supplierId); AuthContextUtils.setSupplierId(supplierId);
//移除前缀 //移除前缀
@ -105,11 +123,13 @@ public class SecurityRequestFilter extends OncePerRequestFilter {
* @throws ServletException * @throws ServletException
*/ */
private void tryDoSecurityAuthor(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { private void tryDoSecurityAuthor(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
String tenant = request.getHeader(GySysConst.TENANT_PROP); String tenant = request.getHeader(GySysConst.TENANT_PROP);
String token = request.getHeader(GySysConst.AUTHORIZATION_PROP); String token = request.getHeader(GySysConst.AUTHORIZATION_PROP);
if(tenant!=null&&token!=null&&JwtUtils.verify(token)){ if(tenant!=null&&token!=null&&JwtUtils.verify(token)){
String userId = JwtUtils.getUserId(token); String userId = JwtUtils.getUserId(token);
String userType = JwtUtils.getUserType(token); String userType = JwtUtils.getUserType(token);
AuthContextUtils.setTenant(tenant); AuthContextUtils.setTenant(tenant);
if(SecurityContextHolder.getContext().getAuthentication()==null){ if(SecurityContextHolder.getContext().getAuthentication()==null){
UserDetails userDetails = null; UserDetails userDetails = null;

2
src/main/java/com/qs/serve/common/model/consts/RedisCacheKeys.java

@ -18,6 +18,8 @@ public class RedisCacheKeys {
/** 家长登录key */ /** 家长登录key */
public final static String LOGIN_KEY_WX = "login_wx_:"; public final static String LOGIN_KEY_WX = "login_wx_:";
public final static String LOGIN_KEY_WXUSER= "login_wx_usr:{}";
/** 用户登录APP {}客户端 {}用户ID */ /** 用户登录APP {}客户端 {}用户ID */
public final static String LOGIN_KEY_APP = "login_app_{}:{}:"; public final static String LOGIN_KEY_APP = "login_app_{}:{}:";

7
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); redisService.set(key, JsonUtil.objectToJson(loginUser.loginUserDTO()),2, TimeUnit.DAYS);
objectMap.put("token",token); objectMap.put("token",token);
String wxLoginKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_WXUSER,wxUser.getId());
redisService.set(wxLoginKey,wxUser.getSysUserId(),2, TimeUnit.DAYS);
//后台管理员信息 //后台管理员信息
Map<String,Object> tokenMap = new HashMap<>(10); Map<String,Object> tokenMap = new HashMap<>(10);
String client = "wx_app"; String client = "wx_app";
@ -103,6 +106,10 @@ public class WxSvcLoginApi {
objectMap.put("token",token); objectMap.put("token",token);
String sysUserId = "1"; String sysUserId = "1";
String wxLoginKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_WXUSER,sysUserId);
redisService.set(wxLoginKey,sysUserId,2, TimeUnit.DAYS);
Map<String,Object> tokenMap = new HashMap<>(10); Map<String,Object> tokenMap = new HashMap<>(10);
String client = "wx_app"; String client = "wx_app";

1
src/main/java/com/qs/serve/modules/baz/controller/BazVisitController.java

@ -53,6 +53,7 @@ public class BazVisitController {
return R.ok(list); return R.ok(list);
} }
/** /**
* 获取第一个流程 * 获取第一个流程
* @param visitId * @param visitId

6
src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceController.java

@ -46,6 +46,12 @@ public class BazVisitInstanceController {
public R<PageVo<BazVisitInstance>> getPage(BazVisitInstanceSo param){ public R<PageVo<BazVisitInstance>> getPage(BazVisitInstanceSo param){
BazVisitInstance entity = CopierUtil.copy(param,new BazVisitInstance()); BazVisitInstance entity = CopierUtil.copy(param,new BazVisitInstance());
LambdaQueryWrapper<BazVisitInstance> lqw = new LambdaQueryWrapper<>(entity); LambdaQueryWrapper<BazVisitInstance> 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(); PageUtil.startPage();
lqw.orderByDesc(BazVisitInstance::getCreateTime); lqw.orderByDesc(BazVisitInstance::getCreateTime);
List<BazVisitInstance> list = bazVisitInstanceService.list(lqw); List<BazVisitInstance> list = bazVisitInstanceService.list(lqw);

58
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.CopierUtil;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.StringUtils; 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.BazVisitInstance;
import com.qs.serve.modules.baz.entity.bo.BazCreateVisitInstanceBo; 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.bo.BazVisitInstanceFlowBo;
import com.qs.serve.modules.baz.entity.so.BazVisitInstanceSo; import com.qs.serve.modules.baz.entity.so.BazVisitInstanceSo;
import com.qs.serve.modules.baz.service.BazVisitInstanceService; import com.qs.serve.modules.baz.service.BazVisitInstanceService;
import com.qs.serve.modules.sys.service.SysUserSalesService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 拜访模块 拜访实例(我的) * 拜访模块 拜访实例(我的)
@ -34,6 +38,8 @@ import java.util.List;
public class BazMyVisitInstanceController { public class BazMyVisitInstanceController {
private BazVisitInstanceService bazVisitInstanceService; private BazVisitInstanceService bazVisitInstanceService;
private SysUserSalesService sysUserSalesService;
/** /**
* 翻页 * 翻页
@ -44,6 +50,12 @@ public class BazMyVisitInstanceController {
public R<PageVo<BazVisitInstance>> getPage(BazVisitInstanceSo param){ public R<PageVo<BazVisitInstance>> getPage(BazVisitInstanceSo param){
BazVisitInstance entity = CopierUtil.copy(param,new BazVisitInstance()); BazVisitInstance entity = CopierUtil.copy(param,new BazVisitInstance());
LambdaQueryWrapper<BazVisitInstance> lqw = new LambdaQueryWrapper<>(entity); LambdaQueryWrapper<BazVisitInstance> 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(); PageUtil.startPage();
lqw.eq(BazVisitInstance::getVisitorId, AuthContextUtils.getSysUserId()); lqw.eq(BazVisitInstance::getVisitorId, AuthContextUtils.getSysUserId());
lqw.orderByDesc(BazVisitInstance::getCreateTime); lqw.orderByDesc(BazVisitInstance::getCreateTime);
@ -51,6 +63,52 @@ public class BazMyVisitInstanceController {
return R.byPageHelperList(list); return R.byPageHelperList(list);
} }
/**
* 翻页(我的部下)
* @param param
* @return
*/
@GetMapping("/page4Under")
public R<PageVo<BazVisitInstance>> page4Under(BazVisitInstanceSo param){
BazVisitInstance entity = CopierUtil.copy(param,new BazVisitInstance());
LambdaQueryWrapper<BazVisitInstance> 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<String> 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<BazVisitInstance> list = bazVisitInstanceService.list(lqw);
return R.byPageHelperList(list);
}
/**
* 获取用户未完成拜访数量
* @param visitId 拜访id
* @return
*/
@GetMapping("/getCounter")
public R<?> getPage(Long visitId){
LambdaQueryWrapper<BazVisitInstance> 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<String,Object> map = new HashMap<>();
map.put("unFinished",unFinished);
return R.ok(map,"ok");
}
/** /**
* 创建流程 * 创建流程
* @param param * @param param

5
src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstance.java

@ -60,11 +60,13 @@ public class BazVisitInstance implements Serializable {
/** 拜访人编码 */ /** 拜访人编码 */
@NotBlank(message = "拜访人编码不能为空") @NotBlank(message = "拜访人编码不能为空")
@Length(max = 255,message = "拜访人编码长度不能超过255字") @Length(max = 255,message = "拜访人编码长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
private String visitorCode; private String visitorCode;
/** 拜访人 */ /** 拜访人 */
@NotBlank(message = "拜访人不能为空") @NotBlank(message = "拜访人不能为空")
@Length(max = 255,message = "拜访人长度不能超过255字") @Length(max = 255,message = "拜访人长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
private String visitorName; private String visitorName;
/** 目标id */ /** 目标id */
@ -74,12 +76,15 @@ public class BazVisitInstance implements Serializable {
/** 目标i编码 */ /** 目标i编码 */
@Length(max = 255,message = "目标i编码长度不能超过255字") @Length(max = 255,message = "目标i编码长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
private String targetCode; private String targetCode;
/** 目标名称 */ /** 目标名称 */
@NotBlank(message = "目标名称不能为空") @NotBlank(message = "目标名称不能为空")
@Length(max = 255,message = "目标名称长度不能超过255字") @Length(max = 255,message = "目标名称长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
private String targetName; private String targetName;
private String targetLocalX; private String targetLocalX;
private String targetLocalY; private String targetLocalY;
private String targetAddress; private String targetAddress;

10
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.math.BigDecimal;
import java.time.LocalDateTime; 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.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
@ -58,5 +60,13 @@ public class BazVisitInstanceSo implements Serializable {
/** 备注 */ /** 备注 */
private String remark; 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;
} }

7
src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java

@ -103,8 +103,8 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl<BazVisitInstanceMap
if(instanceFlow.getFlowSort().equals(1)){ if(instanceFlow.getFlowSort().equals(1)){
instanceFlow.initInputValues(flowBo); instanceFlow.initInputValues(flowBo);
instanceFlow.setFlowState(1); instanceFlow.setFlowState(1);
instanceFlow.setSubmitTime(LocalDateTime.now());
instanceFlow.setRemark(flowBo.getRemark());
if(instanceFlow.getPositionState().equals(2) if(instanceFlow.getPositionState().equals(2)
&&(StringUtils.hasEmpty(flowBo.getValLocalX()) &&(StringUtils.hasEmpty(flowBo.getValLocalX())
||StringUtils.hasEmpty(flowBo.getMapAddress()) ||StringUtils.hasEmpty(flowBo.getMapAddress())
@ -134,7 +134,7 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl<BazVisitInstanceMap
visitInfo.setVisitId(visitInstance.getVisitId()); visitInfo.setVisitId(visitInstance.getVisitId());
visitInfo.setTargetId(targetDTO.getTargetId()); visitInfo.setTargetId(targetDTO.getTargetId());
visitInfo.setTargetType(targetType); visitInfo.setTargetType(targetType);
visitInfo.setUserId(sysUser.getSyUserId()); visitInfo.setUserId(sysUser.getId());
visitInfo.setVisitCount(1); visitInfo.setVisitCount(1);
}else { }else {
visitInfo.setVisitCount(visitInfo.getVisitCount()+1); visitInfo.setVisitCount(visitInfo.getVisitCount()+1);
@ -173,6 +173,7 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl<BazVisitInstanceMap
instanceFlow.initInputValues(param); instanceFlow.initInputValues(param);
instanceFlow.setFlowState(1); instanceFlow.setFlowState(1);
instanceFlow.setSubmitTime(LocalDateTime.now()); instanceFlow.setSubmitTime(LocalDateTime.now());
instanceFlow.setRemark(param.getRemark());
instanceFlowService.updateById(instanceFlow); instanceFlowService.updateById(instanceFlow);
//完成自动更新 //完成自动更新
LambdaQueryWrapper<BazVisitInstanceFlow> countLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BazVisitInstanceFlow> countLqw = new LambdaQueryWrapper<>();

8
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.model.enums.SystemModule;
import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.PageUtil; 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.BizCusVisit;
import com.qs.serve.modules.biz.entity.BizVisit; import com.qs.serve.modules.biz.entity.BizVisit;
import com.qs.serve.modules.biz.service.BizVisitService; import com.qs.serve.modules.biz.service.BizVisitService;
@ -55,6 +56,13 @@ public class BizVisitApi {
param.setVisitorId(userId); param.setVisitorId(userId);
PageUtil.startPage(); PageUtil.startPage();
LambdaQueryWrapper<BizVisit> visitWrapper = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<BizVisit> 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<BizVisit> list = bizVisitService.list(visitWrapper); List<BizVisit> list = bizVisitService.list(visitWrapper);
return R.byPageHelperList(list); return R.byPageHelperList(list);
} }

11
src/main/java/com/qs/serve/modules/biz/entity/BizVisit.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.biz.entity; package com.qs.serve.modules.biz.entity;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.io.Serializable; import java.io.Serializable;
@ -93,5 +94,15 @@ public class BizVisit implements Serializable {
@TableField(fill = FieldFill.UPDATE) @TableField(fill = FieldFill.UPDATE)
private String updateBy; 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;
} }

12
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.CopierUtil;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.StringUtils; 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.BmsChannel;
import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsRegion2; import com.qs.serve.modules.bms.entity.BmsRegion2;
@ -47,6 +50,7 @@ import java.util.stream.Collectors;
@RequestMapping("bms/channelPoint") @RequestMapping("bms/channelPoint")
public class BmsChannelPointController { public class BmsChannelPointController {
private BazVisitInfoService bazVisitInfoService;
private BmsChannelPointService bmsChannelPointService; private BmsChannelPointService bmsChannelPointService;
private BmsRegionService bmsRegionService; private BmsRegionService bmsRegionService;
private BmsRegion2Service bmsRegion2Service; private BmsRegion2Service bmsRegion2Service;
@ -66,6 +70,14 @@ public class BmsChannelPointController {
param.setTenantId(AuthContextUtils.getTenant()); param.setTenantId(AuthContextUtils.getTenant());
PageUtil.startPage(); PageUtil.startPage();
List<BmsUserPoint4VisitVo> list = channelPointMapper.selectUserPointList4Visit(param); List<BmsUserPoint4VisitVo> list = channelPointMapper.selectUserPointList4Visit(param);
for (BmsUserPoint4VisitVo visitVo : list) {
LambdaQueryWrapper<BazVisitInfo> 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); return R.byPageHelperList(list);
} }

8
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.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.StringUtils; 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.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -31,6 +33,7 @@ import java.util.List;
public class BmsSupplierVisitFormController { public class BmsSupplierVisitFormController {
private BmsSupplierVisitFormService bmsSupplierVisitFormService; private BmsSupplierVisitFormService bmsSupplierVisitFormService;
private BazVisitFlowService bazVisitFlowService;
/** /**
* 列表 * 列表
@ -112,6 +115,11 @@ public class BmsSupplierVisitFormController {
@PreAuthorize("hasRole('bms:supplierVisitForm:delete')") @PreAuthorize("hasRole('bms:supplierVisitForm:delete')")
public R<?> deleteById(@PathVariable("ids") String ids){ public R<?> deleteById(@PathVariable("ids") String ids){
List<Long> idsLong = StringUtils.splitIdLong(ids); List<Long> idsLong = StringUtils.splitIdLong(ids);
LambdaQueryWrapper<BazVisitFlow> visitLqw = new LambdaQueryWrapper<>();
visitLqw.in(BazVisitFlow::getFormId,idsLong);
if( 0< bazVisitFlowService.count(visitLqw)){
return R.error("拜访模块使用了表单,删除失败");
}
boolean result = bmsSupplierVisitFormService.removeByIds(idsLong); boolean result = bmsSupplierVisitFormService.removeByIds(idsLong);
return R.isTrue(result); return R.isTrue(result);
} }

1
src/main/java/com/qs/serve/modules/bms/entity/vo/BmsUserPoint4VisitVo.java

@ -34,5 +34,6 @@ public class BmsUserPoint4VisitVo {
String localX; String localX;
String localY; String localY;
Object visitInfo;
} }

8
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.model.enums.SystemModule;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.PageUtil; 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.entity.bo.QmsFormBo;
import com.qs.serve.modules.qms.service.QmsFormSubmitService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -32,6 +34,7 @@ import java.util.List;
public class QmsFormController { public class QmsFormController {
private QmsFormService qmsFormService; private QmsFormService qmsFormService;
private QmsFormSubmitService formSubmitService;
/** /**
* 翻页查询 * 翻页查询
@ -104,6 +107,11 @@ public class QmsFormController {
@SysLog(module = SystemModule.QUESTION, title = "问卷表单", biz = BizType.DELETE) @SysLog(module = SystemModule.QUESTION, title = "问卷表单", biz = BizType.DELETE)
@PreAuthorize("hasRole('qms:form:delete')") @PreAuthorize("hasRole('qms:form:delete')")
public R<?> deleteById(@PathVariable("id") Long id){ public R<?> deleteById(@PathVariable("id") Long id){
LambdaQueryWrapper<QmsFormSubmit> lqw = new LambdaQueryWrapper<>();
lqw.eq(QmsFormSubmit::getFromId,id);
if(formSubmitService.count(lqw)>0){
return R.error("问卷表单已被使用无法删除");
}
boolean result = qmsFormService.removeById(id); boolean result = qmsFormService.removeById(id);
return R.isTrue(result); return R.isTrue(result);
} }

8
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.QmsGroup;
import com.qs.serve.modules.qms.entity.QmsGroupScope; import com.qs.serve.modules.qms.entity.QmsGroupScope;
import com.qs.serve.modules.qms.entity.bo.QmsSubmitBo; 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.QmsGroupMapper;
import com.qs.serve.modules.qms.mapper.QmsGroupScopeMapper; import com.qs.serve.modules.qms.mapper.QmsGroupScopeMapper;
import com.qs.serve.modules.qms.service.QmsFormService; import com.qs.serve.modules.qms.service.QmsFormService;
@ -55,11 +56,12 @@ public class QmsSubmitApiController {
/** /**
* 我的代办已办列表 * 我的代办已办列表
* @param finished * @param param
* @return * @return
*/ */
@GetMapping("/myGroupList") @GetMapping("/myGroupList")
public R<?> todoPage(Integer finished){ public R<?> todoPage(QmsGroupSo param){
Integer finished = param.getFinished();
WxUser wxUser = wxUserService.getCurrentWxUser(); WxUser wxUser = wxUserService.getCurrentWxUser();
if(wxUser.getSysUserId()==null||wxUser.getSysUserId().equals("0")){ if(wxUser.getSysUserId()==null||wxUser.getSysUserId().equals("0")){
return R.byEmptyList(); return R.byEmptyList();
@ -79,7 +81,7 @@ public class QmsSubmitApiController {
// PageUtil.startPage(); // PageUtil.startPage();
// List<QmsGroupScope> groupScopes = qmsGroupScopeService.list(lqw); // List<QmsGroupScope> groupScopes = qmsGroupScopeService.list(lqw);
PageUtil.startPage(); PageUtil.startPage();
List<QmsGroupScope> groupScopes = qmsGroupScopeMapper.listScope(finished,userId); List<QmsGroupScope> groupScopes = qmsGroupScopeMapper.listScope(param,userId);
List<QmsGroup> result = new ArrayList<>(); List<QmsGroup> result = new ArrayList<>();
for (QmsGroupScope groupScope : groupScopes) { for (QmsGroupScope groupScope : groupScopes) {
QmsGroup qmsGroup = qmsGroupService.getById(groupScope.getGroupId()); QmsGroup qmsGroup = qmsGroupService.getById(groupScope.getGroupId());

26
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;
}

3
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.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.qms.entity.QmsGroupScope; import com.qs.serve.modules.qms.entity.QmsGroupScope;
import com.qs.serve.modules.qms.entity.so.QmsGroupSo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -19,7 +20,7 @@ public interface QmsGroupScopeMapper extends BaseMapper<QmsGroupScope> {
* @param userId * @param userId
* @return * @return
*/ */
List<QmsGroupScope> listScope(@Param("finished") Integer finished,@Param("userId") String userId); List<QmsGroupScope> listScope(@Param("query") QmsGroupSo finished, @Param("userId") String userId);
} }

14
src/main/java/com/qs/serve/modules/wx/controller/WxUserController.java

@ -46,7 +46,7 @@ public class WxUserController {
public R<PageVo<WxUser>> getList(WxUser param){ public R<PageVo<WxUser>> getList(WxUser param){
PageUtil.startPage(); PageUtil.startPage();
LambdaQueryWrapper<WxUser> lqw = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<WxUser> lqw = new LambdaQueryWrapper<>(param);
lqw.eq(WxUser::getFirstFlag,1); //lqw.eq(WxUser::getFirstFlag,1);
if(param.getNotBindFlag()!=null&&param.getNotBindFlag().equals(1)){ if(param.getNotBindFlag()!=null&&param.getNotBindFlag().equals(1)){
lqw.isNull(WxUser::getPhone).or().eq(WxUser::getPhone,""); lqw.isNull(WxUser::getPhone).or().eq(WxUser::getPhone,"");
}else if (param.getNotBindFlag()!=null&&param.getNotBindFlag().equals(0)){ }else if (param.getNotBindFlag()!=null&&param.getNotBindFlag().equals(0)){
@ -80,6 +80,9 @@ public class WxUserController {
return R.error("该微信用户已被绑定"); return R.error("该微信用户已被绑定");
} }
SysUser sysUser = sysUserService.getById(param.getSysUserId()); SysUser sysUser = sysUserService.getById(param.getSysUserId());
if(sysUser.getMobile()==null||sysUser.getMobile().length()<4){
return R.error("用户未绑定手机号");
}
if(!StringUtils.hasText(wxUser.getUnionId())){ if(!StringUtils.hasText(wxUser.getUnionId())){
WxUser updVo = new WxUser(); WxUser updVo = new WxUser();
updVo.setId(wxUser.getId()); updVo.setId(wxUser.getId());
@ -107,9 +110,11 @@ public class WxUserController {
@PostMapping("/rmBind") @PostMapping("/rmBind")
public R<?> rmBind(@RequestBody @Valid WxUserRmBindBo param){ public R<?> rmBind(@RequestBody @Valid WxUserRmBindBo param){
String sysUserId = null; String sysUserId = null;
String wxUserId = null;
if(StringUtils.hasText(param.getWxUserId())){ if(StringUtils.hasText(param.getWxUserId())){
WxUser wxUser = wxUserService.getById(param.getWxUserId()); WxUser wxUser = wxUserService.getById(param.getWxUserId());
sysUserId = wxUser.getSysUserId(); sysUserId = wxUser.getSysUserId();
wxUserId = wxUser.getId();
if(!StringUtils.hasText(wxUser.getUnionId())){ if(!StringUtils.hasText(wxUser.getUnionId())){
wxUser.setSysUserId("0"); wxUser.setSysUserId("0");
wxUser.setEmpName(wxUser.getNickName()); wxUser.setEmpName(wxUser.getNickName());
@ -135,11 +140,8 @@ public class WxUserController {
wxUserService.updateById(wxUser); wxUserService.updateById(wxUser);
} }
} }
if(sysUserId!=null){ String wxLoginKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_WXUSER,wxUserId);
String client = "wx_app"; redisService.remove(wxLoginKey);
String redisKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_APP,client,sysUserId);
redisService.remove(redisKey);
}
return R.ok(); return R.ok();
} }

14
src/main/resources/mapper/qms/QmsGroupScopeMapper.xml

@ -56,13 +56,21 @@
and `qms_group_scope`.`scope_value` = #{userId} and `qms_group_scope`.`scope_value` = #{userId}
and `qms_group_scope`.`del_flag` = '0' and `qms_group_scope`.`del_flag` = '0'
and `qms_group`.`del_flag` = '0' and `qms_group`.`del_flag` = '0'
<if test="finished == null"> and `qms_group_scope`.`finished` != -1 </if> <if test="query.finished == null"> and `qms_group_scope`.`finished` != -1 </if>
<if test="finished != null and finished == 0 "> <if test="query.finished != null and query.finished == 0 ">
and `qms_group_scope`.`finished` = '0' and `qms_group`.`group_finished` = '0' and `qms_group_scope`.`finished` = '0' and `qms_group`.`group_finished` = '0'
</if> </if>
<if test="finished != null and finished == 1 "> <if test="query.finished != null and query.finished == 1 ">
and (`qms_group_scope`.`finished` = '1' or `qms_group`.`group_finished` = '1') and (`qms_group_scope`.`finished` = '1' or `qms_group`.`group_finished` = '1')
</if> </if>
<if test="query.queryStartDate != null">
and qms_group_scope.`create_time` &gt;= #{query.queryStartDate}
</if>
<if test="query.queryEndDate != null">
and qms_group_scope.`create_time` &lt;= #{query.queryEndDate}
</if>
</where> </where>
order by `qms_group_scope`.`create_time` desc order by `qms_group_scope`.`create_time` desc
</select> </select>

Loading…
Cancel
Save