Browse Source

调整

master
Yen 3 years ago
parent
commit
5b4107e212
  1. 2
      src/main/java/com/qs/serve/controller/WxSvcLoginApi.java
  2. 74
      src/main/java/com/qs/serve/modules/base/TencentYunSmsService.java
  3. 15
      src/main/java/com/qs/serve/modules/qms/controller/QmsFormSubmitController.java
  4. 43
      src/main/java/com/qs/serve/modules/qms/controller/QmsGroupController.java
  5. 3
      src/main/java/com/qs/serve/modules/qms/controller/api/QmsDraftApiController.java
  6. 11
      src/main/java/com/qs/serve/modules/qms/controller/api/QmsSubmitApiController.java
  7. 3
      src/main/java/com/qs/serve/modules/qms/entity/QmsGroup.java
  8. 2
      src/main/java/com/qs/serve/modules/qms/entity/QmsGroupScope.java
  9. 4
      src/main/java/com/qs/serve/modules/qms/service/impl/QmsFormSubmitServiceImpl.java
  10. 51
      src/main/java/com/qs/serve/modules/qms/service/impl/QmsGroupScopeServiceImpl.java
  11. 4
      src/main/java/com/qs/serve/modules/wx/api/WxSvcUserApi.java
  12. 4
      src/main/java/com/qs/serve/modules/wx/common/conf/WxMpConfig.java
  13. 42
      src/main/java/com/qs/serve/modules/wx/controller/WxUserController.java
  14. 3
      src/main/java/com/qs/serve/modules/wx/entity/dto/SmsBaseDto.java
  15. 28
      src/main/java/com/qs/serve/modules/wx/entity/dto/sms/WxSmsNewForm.java
  16. 8
      src/main/java/com/qs/serve/modules/wx/service/WxPushService.java
  17. 5
      src/main/java/com/qs/serve/modules/wx/service/WxUserService.java
  18. 21
      src/main/java/com/qs/serve/modules/wx/service/impl/WxPushServiceImpl.java
  19. 36
      src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java

2
src/main/java/com/qs/serve/controller/WxSvcLoginApi.java

@ -65,7 +65,7 @@ public class WxSvcLoginApi {
String token = IdUtil.fastSimpleUUID(); String token = IdUtil.fastSimpleUUID();
String key = RedisCacheKeys.LOGIN_KEY_WX + token; String key = RedisCacheKeys.LOGIN_KEY_WX + token;
LoginUser loginUser = new LoginUser(wxUser.getId(),wxUser.getEmpName(),"", LoginUser loginUser = new LoginUser(wxUser.getId(),wxUser.getEmpName(),"",
ServletUtils.getIp(request), LoginUserType.SYS_USER,new ArrayList<>(),null,AuthContextUtils.getTenant()); ServletUtils.getIp(request), LoginUserType.APP_USER,new ArrayList<>(),null,AuthContextUtils.getTenant());
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);
return R.ok(objectMap); return R.ok(objectMap);

74
src/main/java/com/qs/serve/modules/base/TencentYunSmsService.java

@ -0,0 +1,74 @@
package com.qs.serve.modules.base;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.sms.v20210111.SmsClient;
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
/**
* @author YenHex
* @since 2022/9/20
*/
//@Service
public class TencentYunSmsService {
@Value("${tencent.sms.secret-id}")
private String secretId;
@Value("${tencent.sms.secret-key}")
private String secretKey;
@Value("${tencent.sms.sdkAppId}")
private String sdkAppId;
@Value("${tencent.sms.signName}")
private String signName;
@Value("${tencent.sms.templateId}")
private String templateId;
public void send(String phone,String code) {
Credential cred = new Credential(secretId, secretKey);
HttpProfile httpProfile = new HttpProfile();
httpProfile.setReqMethod("POST");
httpProfile.setConnTimeout(60);
/* 指定接入地域域名,默认就近地域接入域名为 sms.tencentcloudapi.com ,也支持指定地域域名访问,例如广州地域的域名为 sms.ap-guangzhou.tencentcloudapi.com */
httpProfile.setEndpoint("sms.ap-guangzhou.tencentcloudapi.com");
ClientProfile clientProfile = new ClientProfile();
clientProfile.setSignMethod("HmacSHA256");
clientProfile.setHttpProfile(httpProfile);
SmsClient client = new SmsClient(cred, "ap-guangzhou",clientProfile);
SendSmsRequest req = new SendSmsRequest();
req.setSmsSdkAppId(sdkAppId);
req.setSignName(signName);
req.setTemplateId(templateId);
//todo 调整短信模板
String[] templateParamSet = {code,code,code};
req.setTemplateParamSet(templateParamSet);
String[] phoneNumberSet = {"+86"+phone};
req.setPhoneNumberSet(phoneNumberSet);
SendSmsResponse res = null;
try {
res = client.SendSms(req);
// 输出json格式的字符串回包
System.out.println(SendSmsResponse.toJsonString(res));
} catch (TencentCloudSDKException e) {
e.printStackTrace();
}
}
}

15
src/main/java/com/qs/serve/modules/qms/controller/QmsFormSubmitController.java

@ -60,6 +60,21 @@ public class QmsFormSubmitController {
return R.ok(qmsFormSubmit); return R.ok(qmsFormSubmit);
} }
/**
* 获取用户提交记录
* @param userId
* @param groupId
* @return
*/
@GetMapping("/getOne")
@SysLog(module = SystemModule.QUESTION, title = "问卷提交记录", biz = BizType.QUERY)
public R<QmsFormSubmit> getById(String userId,String groupId){
LambdaQueryWrapper<QmsFormSubmit> lqw = new LambdaQueryWrapper<>();
lqw.eq(QmsFormSubmit::getGroupId,groupId);
lqw.eq(QmsFormSubmit::getUserId,userId);
QmsFormSubmit qmsFormSubmit = qmsFormSubmitService.getOne(lqw,false);
return R.ok(qmsFormSubmit);
}
/** /**

43
src/main/java/com/qs/serve/modules/qms/controller/QmsGroupController.java

@ -23,6 +23,10 @@ import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.entity.dto.SysUserSimpleVo; import com.qs.serve.modules.sys.entity.dto.SysUserSimpleVo;
import com.qs.serve.modules.sys.service.SysDeptService; import com.qs.serve.modules.sys.service.SysDeptService;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.wx.entity.WxUser;
import com.qs.serve.modules.wx.entity.dto.sms.WxSmsNewForm;
import com.qs.serve.modules.wx.service.WxPushService;
import com.qs.serve.modules.wx.service.WxUserService;
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;
@ -33,10 +37,7 @@ import com.qs.serve.modules.qms.service.QmsGroupService;
import javax.validation.Valid; import javax.validation.Valid;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -55,6 +56,8 @@ public class QmsGroupController {
private QmsGroupScopeService qmsGroupScopeService; private QmsGroupScopeService qmsGroupScopeService;
private SysUserService sysUserService; private SysUserService sysUserService;
private SysDeptService sysDeptService; private SysDeptService sysDeptService;
private WxUserService wxUserService;
private WxPushService wxPushService;
/** /**
@ -87,17 +90,16 @@ public class QmsGroupController {
for (Integer scopeType : scopeValuesMap.keySet()) { for (Integer scopeType : scopeValuesMap.keySet()) {
List<QmsGroupScope> scopeValues = scopeValuesMap.get(scopeType); List<QmsGroupScope> scopeValues = scopeValuesMap.get(scopeType);
List<String> ids = scopeValues.stream().map(QmsGroupScope::getScopeValue).distinct().collect(Collectors.toList()); List<String> ids = scopeValues.stream().map(QmsGroupScope::getScopeValue).distinct().collect(Collectors.toList());
if(scopeType.equals(1)||scopeType.equals(3)){ if(scopeType.equals(0)||scopeType.equals(1)||scopeType.equals(2)){
if(scopeType.equals(1)){ qmsGroup.setScopeType(scopeType);
qmsGroup.setScopeType(scopeType); }
} if(scopeType.equals(1)||scopeType.equals(3)||scopeType.equals(4)){
List<SysUser> userList = sysUserService.listByIds(ids); List<SysUser> userList = sysUserService.listByIds(ids);
List<SysUserSimpleVo> userSimpleVos = userList.stream().map(a->a.toSimpleVo(true)).collect(Collectors.toList()); List<SysUserSimpleVo> userSimpleVos = userList.stream().map(a->a.toSimpleVo(true)).collect(Collectors.toList());
qmsGroup.setUserList(userSimpleVos); qmsGroup.setUserList(userSimpleVos);
}else if(scopeType.equals(2)){ }else if(scopeType.equals(2)){
List<SysDept> deptList = sysDeptService.listByIds(ids); List<SysDept> deptList = sysDeptService.listByIds(ids);
List<SimpleKeyValue> simpleKeyValues = deptList.stream().map(a->new SimpleKeyValue(a.getName(),a.getId(),null)).collect(Collectors.toList()); qmsGroup.setDeptList(deptList);
qmsGroup.setDeptList(simpleKeyValues);
} }
} }
return R.ok(qmsGroup); return R.ok(qmsGroup);
@ -144,7 +146,6 @@ public class QmsGroupController {
qmsGroup.setPublishTime(LocalDateTime.now()); qmsGroup.setPublishTime(LocalDateTime.now());
qmsGroupService.updateById(qmsGroup); qmsGroupService.updateById(qmsGroup);
this.qmsGroupScopeService.publish(groupId); this.qmsGroupScopeService.publish(groupId);
//todo 发送推送
return R.ok(); return R.ok();
} }
@ -166,11 +167,22 @@ public class QmsGroupController {
lqw.eq(QmsGroupScope::getFinished,0); lqw.eq(QmsGroupScope::getFinished,0);
lqw.ne(QmsGroupScope::getScopeType,0); lqw.ne(QmsGroupScope::getScopeType,0);
lqw.ne(QmsGroupScope::getScopeType,2); lqw.ne(QmsGroupScope::getScopeType,2);
if(hastenBo.getUserIds()!=null && hastenBo.getUserIds().length>0){
lqw.in(QmsGroupScope::getScopeValue, Arrays.asList(hastenBo.getUserIds()));
}
List<QmsGroupScope> groupScopes = qmsGroupScopeService.list(lqw); List<QmsGroupScope> groupScopes = qmsGroupScopeService.list(lqw);
List<String> userIds = groupScopes.stream() List<String> userIds = groupScopes.stream()
.map(QmsGroupScope::getScopeValue) .map(QmsGroupScope::getScopeValue)
.distinct().collect(Collectors.toList()); .distinct().collect(Collectors.toList());
//todo 根据userId加载微信用户进行推送 List<WxUser> wxUserList = wxUserService.getBySysUserIds(userIds);
//发送推送
for (WxUser wxUser : wxUserList) {
WxSmsNewForm wxSmsNewForm = new WxSmsNewForm();
wxSmsNewForm.setTitle(qmsGroup.getName());
wxSmsNewForm.setParam5(qmsGroup.getPublishTime().toString());
wxSmsNewForm.setRemark(qmsGroup.getRemark());
wxPushService.sendWxMsg(wxUser,"填写问卷通知",wxSmsNewForm,true,hastenBo.getGroupId()+"");
}
return R.ok(); return R.ok();
} }
@ -235,9 +247,10 @@ public class QmsGroupController {
@DeleteMapping("/deleteById/{id}") @DeleteMapping("/deleteById/{id}")
@SysLog(module = SystemModule.QUESTION, title = "发布组", biz = BizType.DELETE) @SysLog(module = SystemModule.QUESTION, title = "发布组", biz = BizType.DELETE)
@PreAuthorize("hasRole('qms:group:delete')") @PreAuthorize("hasRole('qms:group:delete')")
public R<?> deleteById(@PathVariable("id") String id){ public R<?> deleteById(@PathVariable("id") Long id){
boolean result = qmsGroupService.removeById(id); qmsGroupService.removeById(id);
return R.isTrue(result); qmsGroupScopeService.removeByGroupId(id);
return R.ok();
} }
} }

3
src/main/java/com/qs/serve/modules/qms/controller/api/QmsDraftApiController.java

@ -37,6 +37,9 @@ public class QmsDraftApiController {
@GetMapping("/{groupId}") @GetMapping("/{groupId}")
public R<QmsDraftVo> getDraft(@PathVariable("groupId") Long formId){ public R<QmsDraftVo> getDraft(@PathVariable("groupId") Long formId){
QmsDraft qmsDraft = qmsDraftService.getUserFormDraft(formId); QmsDraft qmsDraft = qmsDraftService.getUserFormDraft(formId);
if(qmsDraft==null){
return R.ok();
}
return R.ok(CopierUtil.copy(qmsDraft,new QmsDraftVo())); return R.ok(CopierUtil.copy(qmsDraft,new QmsDraftVo()));
} }

11
src/main/java/com/qs/serve/modules/qms/controller/api/QmsSubmitApiController.java

@ -60,10 +60,14 @@ public class QmsSubmitApiController {
*/ */
@GetMapping("/myGroupList") @GetMapping("/myGroupList")
public R<?> todoPage(String finished){ public R<?> todoPage(String finished){
String userId = wxUserService.getCurrentWxUser().getSysUserId(); WxUser wxUser = wxUserService.getCurrentWxUser();
if(wxUser.getSysUserId()==null){
return R.byEmptyList();
}
String userId = wxUser.getSysUserId();
PageUtil.startPage(); PageUtil.startPage();
LambdaQueryWrapper<QmsGroupScope> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<QmsGroupScope> lqw = new LambdaQueryWrapper<>();
lqw.in(QmsGroupScope::getScopeType,1,3); lqw.in(QmsGroupScope::getScopeType,1,3,4);
lqw.eq(QmsGroupScope::getScopeValue,userId); lqw.eq(QmsGroupScope::getScopeValue,userId);
lqw.orderByDesc(QmsGroupScope::getCreateTime); lqw.orderByDesc(QmsGroupScope::getCreateTime);
if(StringUtils.hasText(finished)){ if(StringUtils.hasText(finished)){
@ -76,6 +80,9 @@ public class QmsSubmitApiController {
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());
if(qmsGroup==null){
continue;
}
qmsGroup.setFinished(groupScope.getFinished()); qmsGroup.setFinished(groupScope.getFinished());
result.add(qmsGroup); result.add(qmsGroup);
} }

3
src/main/java/com/qs/serve/modules/qms/entity/QmsGroup.java

@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler; import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler;
import com.qs.serve.common.model.dto.SimpleKeyValue; import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.modules.sys.entity.SysDept;
import com.qs.serve.modules.sys.entity.dto.SysUserSimpleVo; import com.qs.serve.modules.sys.entity.dto.SysUserSimpleVo;
import lombok.Data; import lombok.Data;
import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.JdbcType;
@ -112,7 +113,7 @@ public class QmsGroup implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private List<SimpleKeyValue> deptList; private List<SysDept> deptList;
@TableField(exist = false) @TableField(exist = false)
private QmsForm formInfo; private QmsForm formInfo;

2
src/main/java/com/qs/serve/modules/qms/entity/QmsGroupScope.java

@ -32,7 +32,7 @@ public class QmsGroupScope implements Serializable {
/** */ /** */
private Long groupId; private Long groupId;
/** 适用范围 0-所有人可见;1-人员可见;2-部门可见;3-部门人员 */ /** 适用范围 0-所有人可见;1-人员可见;2-部门可见;3-部门人员ID;4-所有的人员ID */
private Integer scopeType; private Integer scopeType;
private Integer finished; private Integer finished;

4
src/main/java/com/qs/serve/modules/qms/service/impl/QmsFormSubmitServiceImpl.java

@ -3,6 +3,7 @@ package com.qs.serve.modules.qms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.framework.security.model.LoginUser; import com.qs.serve.common.framework.security.model.LoginUser;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils; 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.modules.qms.entity.QmsForm; import com.qs.serve.modules.qms.entity.QmsForm;
@ -44,6 +45,9 @@ public class QmsFormSubmitServiceImpl extends ServiceImpl<QmsFormSubmitMapper,Qm
public void submit(QmsSubmitBo param) { public void submit(QmsSubmitBo param) {
WxUser wxUser = wxUserService.getCurrentWxUser(); WxUser wxUser = wxUserService.getCurrentWxUser();
QmsGroup qmsGroup = qmsGroupService.getById(param.getGroupId()); QmsGroup qmsGroup = qmsGroupService.getById(param.getGroupId());
if(qmsGroup.getPublishState().equals(0)){
Assert.throwEx("问卷未发布,无法提交");
}
QmsForm form = qmsFormService.getById(qmsGroup.getFormId()); QmsForm form = qmsFormService.getById(qmsGroup.getFormId());
LambdaQueryWrapper<QmsFormSubmit> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<QmsFormSubmit> lqw = new LambdaQueryWrapper<>();
lqw.eq(QmsFormSubmit::getGroupId,param.getGroupId()); lqw.eq(QmsFormSubmit::getGroupId,param.getGroupId());

51
src/main/java/com/qs/serve/modules/qms/service/impl/QmsGroupScopeServiceImpl.java

@ -4,9 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.modules.qms.entity.QmsGroup;
import com.qs.serve.modules.qms.entity.bo.QmsGroupBo; import com.qs.serve.modules.qms.entity.bo.QmsGroupBo;
import com.qs.serve.modules.qms.service.QmsGroupService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.mapper.SysUserMapper; import com.qs.serve.modules.sys.mapper.SysUserMapper;
import com.qs.serve.modules.wx.entity.WxUser;
import com.qs.serve.modules.wx.entity.dto.sms.WxSmsNewForm;
import com.qs.serve.modules.wx.service.WxPushService;
import com.qs.serve.modules.wx.service.WxUserService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -29,6 +35,9 @@ import java.util.List;
public class QmsGroupScopeServiceImpl extends ServiceImpl<QmsGroupScopeMapper,QmsGroupScope> implements QmsGroupScopeService { public class QmsGroupScopeServiceImpl extends ServiceImpl<QmsGroupScopeMapper,QmsGroupScope> implements QmsGroupScopeService {
SysUserMapper sysUserMapper; SysUserMapper sysUserMapper;
QmsGroupService qmsGroupService;
WxUserService wxUserService;
WxPushService wxPushService;
@Override @Override
public List<QmsGroupScope> listByGroupId(Long groupId) { public List<QmsGroupScope> listByGroupId(Long groupId) {
@ -60,27 +69,37 @@ public class QmsGroupScopeServiceImpl extends ServiceImpl<QmsGroupScopeMapper,Qm
Assert.throwEx("参数异常"); Assert.throwEx("参数异常");
} }
List<QmsGroupScope> list = new ArrayList<>(); List<QmsGroupScope> list = new ArrayList<>();
for (String scopeValue : groupBo.getScopeValue()) { if(groupBo.getScopeType().equals(0)){
boolean isPersonType = groupBo.getScopeType().equals(1);
QmsGroupScope groupScope = new QmsGroupScope(); QmsGroupScope groupScope = new QmsGroupScope();
groupScope.setGroupId(groupId); groupScope.setGroupId(groupId);
groupScope.setScopeType(groupBo.getScopeType()); groupScope.setScopeType(groupBo.getScopeType());
//人员类型,临时修改为-1 表示未发布 groupScope.setFinished(0);
groupScope.setFinished(isPersonType?-1:0); groupScope.setScopeValue("0");
groupScope.setScopeValue(scopeValue);
list.add(groupScope); list.add(groupScope);
}else {
for (String scopeValue : groupBo.getScopeValue()) {
boolean isPersonType = groupBo.getScopeType().equals(1);
QmsGroupScope groupScope = new QmsGroupScope();
groupScope.setGroupId(groupId);
groupScope.setScopeType(groupBo.getScopeType());
//人员类型,临时修改为-1 表示未发布
groupScope.setFinished(isPersonType?-1:0);
groupScope.setScopeValue(scopeValue);
list.add(groupScope);
}
} }
this.saveBatch(list); this.saveBatch(list);
} }
@Override @Override
public void publish(Long groupId) { public void publish(Long groupId) {
QmsGroup qmsGroup = qmsGroupService.getById(groupId);
List<QmsGroupScope> qmsGroupScopeList = this.listByGroupId(groupId); List<QmsGroupScope> qmsGroupScopeList = this.listByGroupId(groupId);
List<QmsGroupScope> list = new ArrayList<>(); List<QmsGroupScope> list = new ArrayList<>();
for (QmsGroupScope groupScope : qmsGroupScopeList) { for (QmsGroupScope groupScope : qmsGroupScopeList) {
boolean isDeptType = groupScope.getScopeType().equals(2); boolean isDeptType = groupScope.getScopeType().equals(2);
boolean isPersonType = groupScope.getScopeType().equals(1); boolean isPersonType = groupScope.getScopeType().equals(1);
boolean isAllType = groupScope.getScopeType().equals(1); boolean isAllType = groupScope.getScopeType().equals(0);
if(isDeptType || isAllType){ if(isDeptType || isAllType){
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
if(isDeptType){ if(isDeptType){
@ -96,10 +115,30 @@ public class QmsGroupScopeServiceImpl extends ServiceImpl<QmsGroupScopeMapper,Qm
groupScope2.setFinished(0); groupScope2.setFinished(0);
groupScope2.setScopeValue(sysUser.getId()); groupScope2.setScopeValue(sysUser.getId());
list.add(groupScope2); list.add(groupScope2);
//查询用的的微信用户
List<WxUser> wxUserList = wxUserService.getBySysUserId(sysUser.getId());
//发送推送
for (WxUser wxUser : wxUserList) {
WxSmsNewForm wxSmsNewForm = new WxSmsNewForm();
wxSmsNewForm.setTitle(qmsGroup.getName());
wxSmsNewForm.setParam5(qmsGroup.getPublishTime().toString());
wxSmsNewForm.setRemark(qmsGroup.getRemark());
wxPushService.sendWxMsg(wxUser,"填写问卷通知",wxSmsNewForm,true,groupId+"");
}
} }
}else if (isPersonType){ }else if (isPersonType){
//修改状态
groupScope.setFinished(0); groupScope.setFinished(0);
this.updateById(groupScope); this.updateById(groupScope);
List<WxUser> wxUserList = wxUserService.getBySysUserId(groupScope.getScopeValue());
//发送推送
for (WxUser wxUser : wxUserList) {
WxSmsNewForm wxSmsNewForm = new WxSmsNewForm();
wxSmsNewForm.setTitle(qmsGroup.getName());
wxSmsNewForm.setParam5(qmsGroup.getPublishTime().toString());
wxSmsNewForm.setRemark(qmsGroup.getRemark());
wxPushService.sendWxMsg(wxUser,"填写问卷通知",wxSmsNewForm,true,groupId+"");
}
} }
} }
this.saveBatch(list); this.saveBatch(list);

4
src/main/java/com/qs/serve/modules/wx/api/WxSvcUserApi.java

@ -10,6 +10,7 @@ import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.InterType; import com.qs.serve.common.model.enums.InterType;
import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.IdUtil; import com.qs.serve.common.util.IdUtil;
import com.qs.serve.modules.base.TencentYunSmsService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.wx.entity.WxUser; import com.qs.serve.modules.wx.entity.WxUser;
@ -36,6 +37,7 @@ public class WxSvcUserApi {
private WxUserService wxUserService; private WxUserService wxUserService;
private RedisService redisService; private RedisService redisService;
private SysUserService sysUserService; private SysUserService sysUserService;
private TencentYunSmsService tencentYunSmsService;
/** /**
* 用户信息 * 用户信息
*/ */
@ -64,9 +66,9 @@ public class WxSvcUserApi {
if(code==null){ if(code==null){
code = IdUtil.genCode(6); code = IdUtil.genCode(6);
} }
//tencentYunSmsService.send(phone,code);
log.debug("手机'{}'验证码:{}",phone,code); log.debug("手机'{}'验证码:{}",phone,code);
redisService.set(key,code,10, TimeUnit.MINUTES); redisService.set(key,code,10, TimeUnit.MINUTES);
//TODO send msg
return R.ok(); return R.ok();
} }

4
src/main/java/com/qs/serve/modules/wx/common/conf/WxMpConfig.java

@ -9,6 +9,7 @@ import com.qs.serve.modules.wx.entity.WxApp;
import com.qs.serve.modules.wx.service.WxAppService; import com.qs.serve.modules.wx.service.WxAppService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps;
import me.chanjar.weixin.mp.api.WxMpMessageRouter; import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
@ -33,7 +34,7 @@ import static me.chanjar.weixin.mp.constant.WxMpEventConstants.POI_CHECK_NOTIFY;
*/ */
@Slf4j @Slf4j
@AllArgsConstructor @AllArgsConstructor
//@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
public class WxMpConfig { public class WxMpConfig {
private final LogHandler logHandler; private final LogHandler logHandler;
@ -71,6 +72,7 @@ public class WxMpConfig {
// redisProperties.getPassword(), // redisProperties.getPassword(),
// redisProperties.getDatabase()); // redisProperties.getDatabase());
// configStorage = new WxMpRedisConfigImpl(new JedisWxRedisOps(jedisPool), app.getId()); // configStorage = new WxMpRedisConfigImpl(new JedisWxRedisOps(jedisPool), app.getId());
log.warn("进行公众号配置:{}",app.getId());
configStorage = new WxMpDefaultConfigImpl(); configStorage = new WxMpDefaultConfigImpl();
configStorage.setAppId(app.getId()); configStorage.setAppId(app.getId());
configStorage.setSecret(app.getSecret()); configStorage.setSecret(app.getSecret());

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

@ -6,6 +6,7 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.wx.entity.WxUser; import com.qs.serve.modules.wx.entity.WxUser;
import com.qs.serve.modules.wx.service.WxUserService; import com.qs.serve.modules.wx.service.WxUserService;
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;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -19,9 +20,9 @@ import java.util.List;
* @since 2022-03-07 * @since 2022-03-07
*/ */
@Slf4j @Slf4j
//@AllArgsConstructor @AllArgsConstructor
//@RestController @RestController
//@RequestMapping("wx/user") @RequestMapping("wx/user")
public class WxUserController { public class WxUserController {
private WxUserService wxUserService; private WxUserService wxUserService;
@ -32,7 +33,6 @@ public class WxUserController {
* @return * @return
*/ */
@GetMapping("/page") @GetMapping("/page")
@PreAuthorize("hasRole('wx:user:query')")
public R<PageVo<WxUser>> getList(WxUser param){ public R<PageVo<WxUser>> getList(WxUser param){
PageUtil.startPage(); PageUtil.startPage();
List<WxUser> list = wxUserService.list(new QueryWrapper<>(param)); List<WxUser> list = wxUserService.list(new QueryWrapper<>(param));
@ -45,7 +45,6 @@ public class WxUserController {
* @return * @return
*/ */
@GetMapping("/getById/{id}") @GetMapping("/getById/{id}")
@PreAuthorize("hasRole('wx:user:query')")
public R<WxUser> getById(@PathVariable("id") String id){ public R<WxUser> getById(@PathVariable("id") String id){
WxUser wxUser = wxUserService.getById(id); WxUser wxUser = wxUserService.getById(id);
return R.ok(wxUser); return R.ok(wxUser);
@ -56,36 +55,33 @@ public class WxUserController {
* @param param * @param param
* @return * @return
*/ */
@PostMapping("/updateById") // @PostMapping("/updateById")
@PreAuthorize("hasRole('wx:user:update')") // public R<?> updateById(@RequestBody @Valid WxUser param){
public R<?> updateById(@RequestBody @Valid WxUser param){ // boolean result = wxUserService.updateById(param);
boolean result = wxUserService.updateById(param); // return R.isTrue(result);
return R.isTrue(result); // }
}
/** /**
* 新增微信用户 * 新增微信用户
* @param param * @param param
* @return * @return
*/ */
@PostMapping("/save") // @PostMapping("/save")
@PreAuthorize("hasRole('wx:user:insert')") // public R<?> save(@RequestBody @Valid WxUser param){
public R<?> save(@RequestBody @Valid WxUser param){ // boolean result = wxUserService.save(param);
boolean result = wxUserService.save(param); // return R.isTrue(result);
return R.isTrue(result); // }
}
/** /**
* 删除微信用户 * 删除微信用户
* @param id * @param id
* @return * @return
*/ */
@DeleteMapping("/deleteById/{id}") // @DeleteMapping("/deleteById/{id}")
@PreAuthorize("hasRole('wx:user:delete')") // public R<?> deleteById(@PathVariable("id") String id){
public R<?> deleteById(@PathVariable("id") String id){ // boolean result = wxUserService.removeById(id);
boolean result = wxUserService.removeById(id); // return R.isTrue(result);
return R.isTrue(result); // }
}
} }

3
src/main/java/com/qs/serve/modules/wx/entity/dto/SmsBaseDto.java

@ -5,4 +5,7 @@ package com.qs.serve.modules.wx.entity.dto;
* @since 2022/7/25 * @since 2022/7/25
*/ */
public abstract class SmsBaseDto { public abstract class SmsBaseDto {
} }

28
src/main/java/com/qs/serve/modules/wx/entity/dto/sms/WxSmsNewForm.java

@ -0,0 +1,28 @@
package com.qs.serve.modules.wx.entity.dto.sms;
import com.qs.serve.modules.wx.common.model.WxSmsProp;
import com.qs.serve.modules.wx.entity.dto.SmsBaseDto;
import lombok.Data;
/**
* @author YenHex
* @since 2022/9/21
*/
@Data
public class WxSmsNewForm extends SmsBaseDto {
@WxSmsProp(keyword = "first")
private String title;
@WxSmsProp(keyword = "keyword1")
private String param1;
@WxSmsProp(keyword = "keyword2")
private String param2;
@WxSmsProp(keyword = "keyword3")
private String param3;
@WxSmsProp(keyword = "keyword4")
private String param4;
@WxSmsProp(keyword = "keyword5")
private String param5;
@WxSmsProp(keyword = "remark")
private String remark;
}

8
src/main/java/com/qs/serve/modules/wx/service/WxPushService.java

@ -16,11 +16,11 @@ public interface WxPushService {
* @param message * @param message
* @return 是否推送成功 * @return 是否推送成功
*/ */
boolean sendWxMsg(String appId,WxMpTemplateMessage message); void sendWxMsg(String appId,WxMpTemplateMessage message);
boolean sendWxMsg(WxUser wxUser, String title, SmsBaseDto body); void sendWxMsg(WxUser wxUser, String title, SmsBaseDto body);
boolean sendWxMsg(WxUser wxUser,String title,SmsBaseDto body,Boolean jumpUrl); void sendWxMsg(WxUser wxUser,String title,SmsBaseDto body,Boolean jumpUrl);
/** /**
* 通用方法 * 通用方法
@ -31,6 +31,6 @@ public interface WxPushService {
* @param key * @param key
* @return * @return
*/ */
boolean sendWxMsg(WxUser wxUser,String title,SmsBaseDto body,Boolean jumpUrl,String key); void sendWxMsg(WxUser wxUser,String title,SmsBaseDto body,Boolean jumpUrl,String key);
} }

5
src/main/java/com/qs/serve/modules/wx/service/WxUserService.java

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.wx.entity.WxUser; import com.qs.serve.modules.wx.entity.WxUser;
import com.qs.serve.modules.wx.entity.dto.WxLoginUser; import com.qs.serve.modules.wx.entity.dto.WxLoginUser;
import java.util.List;
/** /**
* 微信用户 服务接口 * 微信用户 服务接口
* @author YenHex * @author YenHex
@ -18,6 +20,9 @@ public interface WxUserService extends IService<WxUser> {
WxUser getCurrentWxUser(); WxUser getCurrentWxUser();
List<WxUser> getBySysUserId(String userId);
List<WxUser> getBySysUserIds(List<String> userIds);
/** /**
* 用户登录 * 用户登录
* @param wxLoginUser * @param wxLoginUser

21
src/main/java/com/qs/serve/modules/wx/service/impl/WxPushServiceImpl.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.wx.service.impl; package com.qs.serve.modules.wx.service.impl;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.JsonUtil; import com.qs.serve.common.util.JsonUtil;
import com.qs.serve.common.util.SmsReflectUtil; import com.qs.serve.common.util.SmsReflectUtil;
import com.qs.serve.modules.wx.entity.WxTemplateMsg; import com.qs.serve.modules.wx.entity.WxTemplateMsg;
@ -12,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
@ -20,7 +22,7 @@ import org.springframework.stereotype.Service;
* @since 2022/3/16 * @since 2022/3/16
*/ */
@Slf4j @Slf4j
//@Service @Service
@AllArgsConstructor @AllArgsConstructor
public class WxPushServiceImpl implements WxPushService { public class WxPushServiceImpl implements WxPushService {
@ -28,8 +30,9 @@ public class WxPushServiceImpl implements WxPushService {
private final WxTemplateMsgService wxTemplateMsgService; private final WxTemplateMsgService wxTemplateMsgService;
@Async
@Override @Override
public boolean sendWxMsg(String appId,WxMpTemplateMessage message) { public void sendWxMsg(String appId,WxMpTemplateMessage message) {
String msgId = null; String msgId = null;
try { try {
// 发送模板消息 // 发送模板消息
@ -38,21 +41,22 @@ public class WxPushServiceImpl implements WxPushService {
e.printStackTrace(); e.printStackTrace();
} }
log.warn("推送微信模板信息:{}\n{}", msgId != null ? "成功" : "失败", JsonUtil.objectToJson(message)); log.warn("推送微信模板信息:{}\n{}", msgId != null ? "成功" : "失败", JsonUtil.objectToJson(message));
return msgId != null;
} }
@Override @Override
public boolean sendWxMsg(WxUser wxUser, String title, SmsBaseDto body) { public void sendWxMsg(WxUser wxUser, String title, SmsBaseDto body) {
return sendWxMsg(wxUser, title, body,false); sendWxMsg(wxUser, title, body,false);
} }
@Override @Override
public boolean sendWxMsg(WxUser wxUser, String title, SmsBaseDto body, Boolean jumpUrl) { public void sendWxMsg(WxUser wxUser, String title, SmsBaseDto body, Boolean jumpUrl) {
return sendWxMsg(wxUser, title, body, jumpUrl,null); sendWxMsg(wxUser, title, body, jumpUrl,null);
} }
@Async
@Override @Override
public boolean sendWxMsg(WxUser wxUser, String title, SmsBaseDto body, Boolean jumpUrl, String key) { public void sendWxMsg(WxUser wxUser, String title, SmsBaseDto body, Boolean jumpUrl, String key) {
AuthContextUtils.setTenant("001");
try { try {
WxTemplateMsg wxTemplateMsg = wxTemplateMsgService.getByTitle(wxUser.getAppId(),title); WxTemplateMsg wxTemplateMsg = wxTemplateMsgService.getByTitle(wxUser.getAppId(),title);
if(wxTemplateMsg!=null){ if(wxTemplateMsg!=null){
@ -70,6 +74,5 @@ public class WxPushServiceImpl implements WxPushService {
} catch (Exception e) { } catch (Exception e) {
log.warn(e.getMessage()); log.warn(e.getMessage());
} }
return false;
} }
} }

36
src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java

@ -28,6 +28,8 @@ import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* 微信用户 服务实现类 * 微信用户 服务实现类
* @author YenHex * @author YenHex
@ -51,21 +53,35 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme
if(wxUser==null){ if(wxUser==null){
Assert.throwEx(HttpCode.LOGIN_ERR); Assert.throwEx(HttpCode.LOGIN_ERR);
} }
// String appId = AuthContextUtils.getAppId(); String appId = AuthContextUtils.getAppId();
// try { try {
// WxMpService wxMpService = wxMpConfig.wxMpService().switchoverTo(appId); WxMpService wxMpService = wxMpConfig.wxMpService().switchoverTo(appId);
// WxMpUser wxMpUser = wxMpService.getUserService().userInfo(wxUser.getOpenId(), GySysConst.LANG_ZH_CN); WxMpUser wxMpUser = wxMpService.getUserService().userInfo(wxUser.getOpenId(), GySysConst.LANG_ZH_CN);
// wxUser.setSubscribe(wxMpUser.getSubscribe()?1:0); wxUser.setSubscribe(wxMpUser.getSubscribe()?1:0);
// wxUser.setSubscribeScene(wxMpUser.getSubscribeScene()); wxUser.setSubscribeScene(wxMpUser.getSubscribeScene());
// wxUser.setTagidList(JsonUtil.objectToJson(wxMpUser.getTagIds())); wxUser.setTagidList(JsonUtil.objectToJson(wxMpUser.getTagIds()));
// } catch (WxErrorException e) { } catch (WxErrorException e) {
// e.printStackTrace(); e.printStackTrace();
// } }
return wxUser; return wxUser;
} }
return null; return null;
} }
@Override
public List<WxUser> getBySysUserId(String userId) {
LambdaQueryWrapper<WxUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(WxUser::getSysUserId,userId);
return this.list(lqw);
}
@Override
public List<WxUser> getBySysUserIds(List<String> userIds) {
LambdaQueryWrapper<WxUser> lqw = new LambdaQueryWrapper<>();
lqw.in(WxUser::getSysUserId,userIds);
return this.list(lqw);
}
@Override @Override
public WxUser login(WxLoginUser wxLoginUser){ public WxUser login(WxLoginUser wxLoginUser){
String code = wxLoginUser.getCode(); String code = wxLoginUser.getCode();

Loading…
Cancel
Save