提交代码

dev_xds
姜玉琦 2024-04-03 01:46:39 +08:00
parent f974e753d1
commit 8b751cd807
26 changed files with 1598 additions and 181 deletions

View File

@ -1,33 +1,66 @@
package com.ruoyi.common.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* Created by tao.
* Date: 2023/3/21 15:02
* :
*/
@Data
@Component
//从配置文件里获取
@ConfigurationProperties(prefix = "wechat")
public class WechatAccountConfig {
/**
* id
*/
private String mpAppId;
private static String mpAppId;
/**
*
*/
private String mpAppSecret;
private static String mpAppSecret;
/**
* id
* Token
*/
private Map<String, String> templateId;
private static String myToken;
/**
* AccessToken
*/
private static String myAccessToken;
public static String getMpAppId() {
return mpAppId;
}
public void setMpAppId(String mpAppId) {
WechatAccountConfig.mpAppId = mpAppId;
}
public static String getMpAppSecret() {
return mpAppSecret;
}
public void setMpAppSecret(String mpAppSecret) {
WechatAccountConfig.mpAppSecret = mpAppSecret;
}
public static String getMyToken() {
return myToken;
}
public void setMyToken(String myToken) {
WechatAccountConfig.myToken = myToken;
}
public static String getMyAccessToken() {
return myAccessToken;
}
public void setMyAccessToken(String myAccessToken) {
WechatAccountConfig.myAccessToken = myAccessToken;
}
}

View File

@ -45,6 +45,8 @@ public class WechatMpConfig {
WxMpInMemoryConfigStorage wxMpConfigStorage = new WxMpInMemoryConfigStorage();
wxMpConfigStorage.setAppId(accountConfig.getMpAppId());
wxMpConfigStorage.setSecret(accountConfig.getMpAppSecret());
wxMpConfigStorage.setToken(accountConfig.getMyToken());
wxMpConfigStorage.setAccessToken(accountConfig.getMyAccessToken());
return wxMpConfigStorage;
}

View File

@ -46,4 +46,39 @@ public class CacheConstants
* yanzhu redis key
*/
public static final String YANZHU_SYSTEM_CONFIG = "yanzhu_system_config:";
/**
* redis key
*/
public static final String WX_MPMESSAGE_KEY = "wx.mpmessage.key::";
/**
* openId
*/
public static final String WX_MPMESSAGE_OPENID = "wx.mpmessage.openId::";
/**
*
*/
public static final String WX_MPMESSAGE_UNAME = "wx.mpmessage.uname::";
/**
*
*/
public static final String WX_MPMESSAGE_PNAME = "wx.mpmessage.pname::";
/**
*
*/
public static final String WX_MPMESSAGE_DNAME = "wx.mpmessage.dname::";
/**
*
*/
public static final String WX_MPMESSAGE_P_SUP = "wx.mpmessage.p.sup::";
/**
*
*/
public static final String WX_MPMESSAGE_P_MAG = "wx.mpmessage.p.mag::";
}

View File

@ -0,0 +1,43 @@
package com.ruoyi.common.enums;
/**
*
*
* @author JiangYuQi
*/
public enum MessageTypeEnum {
AQYHZG("10", "安全隐患整改"),
ZLYHZG("20", "质量隐患整改"),
CSCLSP("30", "实测实量审批"),
JPYSSP("40", "举牌验收审批"),
CLFYSP("50", "材料封样审批"),
QYFSSP("60", "取样复试审批");
private final String code;
private final String name;
MessageTypeEnum(String code, String name)
{
this.code = code;
this.name = name;
}
public String getCode()
{
return code;
}
public String getName()
{
return name;
}
public static String getYHPCLX(Long infoType){
if(infoType==0){
return MessageTypeEnum.AQYHZG.code;
}else{
return MessageTypeEnum.ZLYHZG.code;
}
}
}

View File

@ -0,0 +1,32 @@
package com.ruoyi.common.enums;
/**
*
*
* @author JiangYuQi
*/
public enum TemplateMessageEnum {
TROUBLE_DEFAULT("f3saBGJCnUAjXHw1KooxEUuRGv-a_8MG9dXfQvkRTBE", "隐患整改通知"),
APPLY_DEFAULT("KY7oAHgqFxUSaE3ByxFJfv_0U3LnSWfgUCwV-CZyEdo", "系统流程审批提醒");
private final String id;
private final String name;
TemplateMessageEnum(String id, String name)
{
this.id = id;
this.name = name;
}
public String getId()
{
return id;
}
public String getName()
{
return name;
}
}

View File

@ -0,0 +1,152 @@
package com.ruoyi.system.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* openId sys_user_openid
*
* @author ruoyi
* @date 2024-04-01
*/
public class SysUserOpenid extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 小程序openId */
@Excel(name = "小程序openId")
private String openId;
/** 公众号openId消息 */
@Excel(name = "公众号openId", readConverterExp = "消=息")
private String msgOpenId;
/** 用户Id */
@Excel(name = "用户Id")
private String userId;
/** 用户登录名 */
@Excel(name = "用户登录名")
private String loginName;
/** 小程序昵称 */
@Excel(name = "小程序昵称")
private String nickname;
/** 删除状态0未删除1删除 */
@Excel(name = "删除状态", readConverterExp = "0=未删除1删除")
private Long isDel;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date creatTime;
/** 唯一应用id */
@Excel(name = "唯一应用id")
private String unionid;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setOpenId(String openId)
{
this.openId = openId;
}
public String getOpenId()
{
return openId;
}
public void setMsgOpenId(String msgOpenId)
{
this.msgOpenId = msgOpenId;
}
public String getMsgOpenId()
{
return msgOpenId;
}
public void setUserId(String userId)
{
this.userId = userId;
}
public String getUserId()
{
return userId;
}
public void setLoginName(String loginName)
{
this.loginName = loginName;
}
public String getLoginName()
{
return loginName;
}
public void setNickname(String nickname)
{
this.nickname = nickname;
}
public String getNickname()
{
return nickname;
}
public void setIsDel(Long isDel)
{
this.isDel = isDel;
}
public Long getIsDel()
{
return isDel;
}
public void setCreatTime(Date creatTime)
{
this.creatTime = creatTime;
}
public Date getCreatTime()
{
return creatTime;
}
public void setUnionid(String unionid)
{
this.unionid = unionid;
}
public String getUnionid()
{
return unionid;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("openId", getOpenId())
.append("msgOpenId", getMsgOpenId())
.append("userId", getUserId())
.append("loginName", getLoginName())
.append("nickname", getNickname())
.append("isDel", getIsDel())
.append("creatTime", getCreatTime())
.append("unionid", getUnionid())
.toString();
}
}

View File

@ -0,0 +1,85 @@
package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.SysUserOpenid;
/**
* openIdMapper
*
* @author ruoyi
* @date 2024-04-01
*/
public interface SysUserOpenidMapper
{
/**
* openId
*
* @param id openId
* @return openId
*/
public SysUserOpenid selectSysUserOpenidById(Long id);
/**
* openId
*
* @param sysUserOpenid openId
* @return openId
*/
public List<SysUserOpenid> selectSysUserOpenidList(SysUserOpenid sysUserOpenid);
/**
* openId
*
* @param userName
* @return openId
*/
public List<SysUserOpenid> findSysUserOpenidsByUser(String userName);
/**
* openId[]
*
* @param proId
* @return openId
*/
public List<SysUserOpenid> findMsgProSupUsers(Long proId);
/**
* openId[]
*
* @param proId
* @return openId
*/
public List<SysUserOpenid> findMsgProMagUsers(Long proId);
/**
* openId
*
* @param sysUserOpenid openId
* @return
*/
public int insertSysUserOpenid(SysUserOpenid sysUserOpenid);
/**
* openId
*
* @param sysUserOpenid openId
* @return
*/
public int updateSysUserOpenid(SysUserOpenid sysUserOpenid);
/**
* openId
*
* @param id openId
* @return
*/
public int deleteSysUserOpenidById(Long id);
/**
* openId
*
* @param ids
* @return
*/
public int deleteSysUserOpenidByIds(Long[] ids);
}

View File

@ -0,0 +1,61 @@
package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.system.domain.SysUserOpenid;
/**
* openIdService
*
* @author ruoyi
* @date 2024-04-01
*/
public interface ISysUserOpenidService
{
/**
* openId
*
* @param id openId
* @return openId
*/
public SysUserOpenid selectSysUserOpenidById(Long id);
/**
* openId
*
* @param sysUserOpenid openId
* @return openId
*/
public List<SysUserOpenid> selectSysUserOpenidList(SysUserOpenid sysUserOpenid);
/**
* openId
*
* @param sysUserOpenid openId
* @return
*/
public int insertSysUserOpenid(SysUserOpenid sysUserOpenid);
/**
* openId
*
* @param sysUserOpenid openId
* @return
*/
public int updateSysUserOpenid(SysUserOpenid sysUserOpenid);
/**
* openId
*
* @param ids openId
* @return
*/
public int deleteSysUserOpenidByIds(Long[] ids);
/**
* openId
*
* @param id openId
* @return
*/
public int deleteSysUserOpenidById(Long id);
}

View File

@ -0,0 +1,93 @@
package com.ruoyi.system.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.SysUserOpenidMapper;
import com.ruoyi.system.domain.SysUserOpenid;
import com.ruoyi.system.service.ISysUserOpenidService;
import com.ruoyi.common.utils.SecurityUtils;
/**
* openIdService
*
* @author ruoyi
* @date 2024-04-01
*/
@Service
public class SysUserOpenidServiceImpl implements ISysUserOpenidService
{
@Autowired
private SysUserOpenidMapper sysUserOpenidMapper;
/**
* openId
*
* @param id openId
* @return openId
*/
@Override
public SysUserOpenid selectSysUserOpenidById(Long id)
{
return sysUserOpenidMapper.selectSysUserOpenidById(id);
}
/**
* openId
*
* @param sysUserOpenid openId
* @return openId
*/
@Override
public List<SysUserOpenid> selectSysUserOpenidList(SysUserOpenid sysUserOpenid)
{
return sysUserOpenidMapper.selectSysUserOpenidList(sysUserOpenid);
}
/**
* openId
*
* @param sysUserOpenid openId
* @return
*/
@Override
public int insertSysUserOpenid(SysUserOpenid sysUserOpenid)
{
return sysUserOpenidMapper.insertSysUserOpenid(sysUserOpenid);
}
/**
* openId
*
* @param sysUserOpenid openId
* @return
*/
@Override
public int updateSysUserOpenid(SysUserOpenid sysUserOpenid)
{
return sysUserOpenidMapper.updateSysUserOpenid(sysUserOpenid);
}
/**
* openId
*
* @param ids openId
* @return
*/
@Override
public int deleteSysUserOpenidByIds(Long[] ids)
{
return sysUserOpenidMapper.deleteSysUserOpenidByIds(ids);
}
/**
* openId
*
* @param id openId
* @return
*/
@Override
public int deleteSysUserOpenidById(Long id)
{
return sysUserOpenidMapper.deleteSysUserOpenidById(id);
}
}

View File

@ -130,7 +130,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectUserVo"/>
where u.user_name = #{userName} and u.del_flag = '0'
</select>
<select id="findProjectUser" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.user_name = #{userName} and u.del_flag = '0'
</select>
<select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.user_id = #{userId}

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.SysUserOpenidMapper">
<resultMap type="SysUserOpenid" id="SysUserOpenidResult">
<result property="id" column="id" />
<result property="openId" column="openId" />
<result property="msgOpenId" column="msgOpenId" />
<result property="userId" column="userId" />
<result property="loginName" column="loginName" />
<result property="nickname" column="nickname" />
<result property="isDel" column="isDel" />
<result property="creatTime" column="creatTime" />
<result property="unionid" column="unionid" />
</resultMap>
<sql id="selectSysUserOpenidVo">
select id, openId, msgOpenId, userId, loginName, nickname, isDel, creatTime, unionid from sys_user_openid
</sql>
<select id="selectSysUserOpenidList" parameterType="SysUserOpenid" resultMap="SysUserOpenidResult">
<include refid="selectSysUserOpenidVo"/>
<where>
<if test="openId != null and openId != ''"> and openId = #{openId}</if>
<if test="msgOpenId != null and msgOpenId != ''"> and msgOpenId = #{msgOpenId}</if>
<if test="userId != null and userId != ''"> and userId = #{userId}</if>
<if test="loginName != null and loginName != ''"> and loginName = #{loginName}</if>
<if test="isDel != null "> and isDel = #{isDel}</if>
<if test="unionid != null and unionid != ''"> and unionid = #{unionid}</if>
</where>
</select>
<select id="findSysUserOpenidsByUser" parameterType="String" resultMap="SysUserOpenidResult">
<include refid="selectSysUserOpenidVo"/>
where loginName = #{loginName} and isDel = 0
</select>
<select id="findMsgProSupUsers" parameterType="Long" resultMap="SysUserOpenidResult">
select suo.id, suo.openId, suo.msgOpenId, suo.userId, suo.loginName, suo.nickname, suo.isDel, suo.creatTime, suo.unionid
from sys_user_openid suo
left join sys_user su on su.phonenumber = suo.loginName
left join sur_project_userinfo spu on spu.user_id = su.user_id
where spu.project_id = #{proId} and spu.job_type=1 and spu.is_del = 0 and su.del_flag = '0' and suo.isDel=0
</select>
<select id="findMsgProMagUsers" parameterType="Long" resultMap="SysUserOpenidResult">
select suo.id, suo.openId, suo.msgOpenId, suo.userId, suo.loginName, suo.nickname, suo.isDel, suo.creatTime, suo.unionid
from sys_user_openid suo
left join sys_user su on su.phonenumber = suo.loginName
left join sur_project_userinfo spu on spu.user_id = su.user_id
where spu.project_id = #{proId} and spu.job_type=21 and spu.is_del = 0 and su.del_flag = '0' and suo.isDel=0
</select>
<select id="selectSysUserOpenidById" parameterType="Long" resultMap="SysUserOpenidResult">
<include refid="selectSysUserOpenidVo"/>
where id = #{id}
</select>
<insert id="insertSysUserOpenid" parameterType="SysUserOpenid" useGeneratedKeys="true" keyProperty="id">
insert into sys_user_openid
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="openId != null">openId,</if>
<if test="msgOpenId != null">msgOpenId,</if>
<if test="userId != null">userId,</if>
<if test="loginName != null">loginName,</if>
<if test="nickname != null">nickname,</if>
<if test="isDel != null">isDel,</if>
<if test="creatTime != null">creatTime,</if>
<if test="unionid != null">unionid,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="openId != null">#{openId},</if>
<if test="msgOpenId != null">#{msgOpenId},</if>
<if test="userId != null">#{userId},</if>
<if test="loginName != null">#{loginName},</if>
<if test="nickname != null">#{nickname},</if>
<if test="isDel != null">#{isDel},</if>
<if test="creatTime != null">#{creatTime},</if>
<if test="unionid != null">#{unionid},</if>
</trim>
</insert>
<update id="updateSysUserOpenid" parameterType="SysUserOpenid">
update sys_user_openid
<trim prefix="SET" suffixOverrides=",">
<if test="openId != null">openId = #{openId},</if>
<if test="msgOpenId != null">msgOpenId = #{msgOpenId},</if>
<if test="userId != null">userId = #{userId},</if>
<if test="loginName != null">loginName = #{loginName},</if>
<if test="nickname != null">nickname = #{nickname},</if>
<if test="isDel != null">isDel = #{isDel},</if>
<if test="creatTime != null">creatTime = #{creatTime},</if>
<if test="unionid != null">unionid = #{unionid},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteSysUserOpenidById" parameterType="Long">
delete from sys_user_openid where id = #{id}
</delete>
<delete id="deleteSysUserOpenidByIds" parameterType="String">
delete from sys_user_openid where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@ -8,7 +8,7 @@ export default {
name: "build",
data() {
return {
userOpenId:"",
uId:null,
show: true,
dialogVisible: false,
bindPhoneVo: {
@ -19,10 +19,7 @@ export default {
},
watch: {},
created() {
this.userOpenId = this.$route.query.userOpenId;
console.log("userOpenId====>",userOpenId);
let qs = this.getQueryString('userOpenId');
console.log("getQueryString====>",qs);
this.uId=this.getQueryString('userOpenId') || '';
this.wechatLogin();
},
methods: {
@ -32,14 +29,12 @@ export default {
// token === '' && openId != ''
if(openId != '') {
//
this.bindPhoneVo.openId = openId
this.dialogVisible = false
console.log("dialogVisible===>");
console.log("dialogVisible===>",openId,this.uId);
} else {
//
console.log("我要去登录了===>");
let _baseUrl = "https://szgc.jhncidg.com";
window.location = _baseUrl + '/jhapi/wxAuth/authorize?returnUrl=' + _baseUrl + "/#/wxAuth"
window.location = _baseUrl + '/jhapi/wxAuth/authorize?returnUrl=' + _baseUrl + "/#/wxAuth?uid="+this.uId
}
},
saveBind() {

View File

@ -10,6 +10,7 @@ import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.yanzhu.jh.project.domain.SurProjectAuditinfo;
import com.yanzhu.jh.project.mapper.SurProjectAuditinfoMapper;
import com.yanzhu.jh.wxsetting.service.impl.WxMessageImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.jh.project.mapper.SurProjectCheckDetectionMapper;
@ -25,7 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
* @date 2023-08-31
*/
@Service
public class SurProjectCheckDetectionServiceImpl implements ISurProjectCheckDetectionService
public class SurProjectCheckDetectionServiceImpl extends WxMessageImpl implements ISurProjectCheckDetectionService
{
@Autowired
private SurProjectAuditinfoMapper surProjectAuditinfoMapper;
@ -73,7 +74,12 @@ public class SurProjectCheckDetectionServiceImpl implements ISurProjectCheckDete
surProjectCheckDetection.setCreateBy(SecurityUtils.getUsername());
}
surProjectCheckDetection.setCreateTime(DateUtils.getNowDate());
return surProjectCheckDetectionMapper.insertSurProjectCheckDetection(surProjectCheckDetection);
int res = surProjectCheckDetectionMapper.insertSurProjectCheckDetection(surProjectCheckDetection);
if(res>0){
super.send(surProjectCheckDetection);
}
return res;
}
/**
@ -87,6 +93,17 @@ public class SurProjectCheckDetectionServiceImpl implements ISurProjectCheckDete
public int updateSurProjectCheckDetection(SurProjectCheckDetection surProjectCheckDetection)
{
//修改人和修改时间为登记检测结果信息,审批合格或不合格时不修改这个字段
if(PublicStateEnum.AUDITINFO_DSH.getCode().equals(surProjectCheckDetection.getApproveStatus())){
// 非提交时保存最后修改人
if(surProjectCheckDetection.getUpdateBy()==null){
surProjectCheckDetection.setUpdateBy(SecurityUtils.getUsername());
}
surProjectCheckDetection.setUpdateTime(new Date());
}
int res = surProjectCheckDetectionMapper.updateSurProjectCheckDetection(surProjectCheckDetection);
//操作日志
if(StringUtils.isNotBlank(surProjectCheckDetection.getApproveStatus())){
SurProjectAuditinfo surProjectAuditinfo = new SurProjectAuditinfo();
@ -99,18 +116,15 @@ public class SurProjectCheckDetectionServiceImpl implements ISurProjectCheckDete
surProjectAuditinfo.setCreateBy(surProjectCheckDetection.getUpdateBy());
surProjectAuditinfo.setCreateTime(new Date());
surProjectAuditinfoMapper.insertSurProjectAuditinfo(surProjectAuditinfo);
}
//修改人和修改时间为登记检测结果信息,审批合格或不合格时不修改这个字段
if(PublicStateEnum.AUDITINFO_DSH.getCode().equals(surProjectCheckDetection.getApproveStatus())){
// 非提交时保存最后修改人
if(surProjectCheckDetection.getUpdateBy()==null){
surProjectCheckDetection.setUpdateBy(SecurityUtils.getUsername());
//推送代办消息
if(res>0){
surProjectCheckDetection = surProjectCheckDetectionMapper.selectSurProjectCheckDetectionById(surProjectCheckDetection.getId());
super.send(surProjectCheckDetection);
}
surProjectCheckDetection.setUpdateTime(new Date());
}
return surProjectCheckDetectionMapper.updateSurProjectCheckDetection(surProjectCheckDetection);
return res;
}
/**

View File

@ -11,6 +11,7 @@ import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.yanzhu.jh.project.domain.SurProjectAuditinfo;
import com.yanzhu.jh.project.mapper.SurProjectAuditinfoMapper;
import com.yanzhu.jh.wxsetting.service.impl.WxMessageImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.jh.project.mapper.SurProjectCheckingMapper;
@ -26,7 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
* @date 2023-08-18
*/
@Service
public class SurProjectCheckingServiceImpl implements ISurProjectCheckingService
public class SurProjectCheckingServiceImpl extends WxMessageImpl implements ISurProjectCheckingService
{
@Autowired
private SurProjectAuditinfoMapper surProjectAuditinfoMapper;
@ -157,6 +158,9 @@ public class SurProjectCheckingServiceImpl implements ISurProjectCheckingService
surProjectAuditinfoMapper.insertSurProjectAuditinfo(surProjectAuditinfo);
}
if(res>0){
super.send(surProjectChecking);
}
return res;
}
@ -177,6 +181,7 @@ public class SurProjectCheckingServiceImpl implements ISurProjectCheckingService
surProjectChecking.setUpdateBy(SecurityUtils.getUsername());
}
surProjectChecking.setUpdateTime(DateUtils.getNowDate());
int res = surProjectCheckingMapper.updateSurProjectChecking(surProjectChecking);
//操作日志
if(StringUtils.isNotBlank(surProjectChecking.getApproveStatus())){
@ -190,9 +195,15 @@ public class SurProjectCheckingServiceImpl implements ISurProjectCheckingService
surProjectAuditinfo.setCreateBy(surProjectChecking.getUpdateBy());
surProjectAuditinfo.setCreateTime(new Date());
surProjectAuditinfoMapper.insertSurProjectAuditinfo(surProjectAuditinfo);
//推送代办消息
if(res>0){
surProjectChecking = surProjectCheckingMapper.selectSurProjectCheckingById(surProjectChecking.getId());
super.send(surProjectChecking);
}
}
return surProjectCheckingMapper.updateSurProjectChecking(surProjectChecking);
return res;
}
/**

View File

@ -10,6 +10,7 @@ import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.yanzhu.jh.project.domain.SurProjectAuditinfo;
import com.yanzhu.jh.project.mapper.SurProjectAuditinfoMapper;
import com.yanzhu.jh.wxsetting.service.impl.WxMessageImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.jh.project.mapper.SurProjectMaterialSealMapper;
@ -25,7 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
* @date 2023-08-22
*/
@Service
public class SurProjectMaterialSealServiceImpl implements ISurProjectMaterialSealService
public class SurProjectMaterialSealServiceImpl extends WxMessageImpl implements ISurProjectMaterialSealService
{
@Autowired
@ -116,6 +117,9 @@ public class SurProjectMaterialSealServiceImpl implements ISurProjectMaterialSea
surProjectAuditinfoMapper.insertSurProjectAuditinfo(surProjectAuditinfo);
}
if(res>0){
super.send(surProjectMaterialSeal);
}
return res;
}
@ -136,6 +140,7 @@ public class SurProjectMaterialSealServiceImpl implements ISurProjectMaterialSea
surProjectMaterialSeal.setMainImage(surProjectMaterialSeal.getImageUrls().split(",")[0]);
}
surProjectMaterialSeal.setUpdateTime(DateUtils.getNowDate());
int res = surProjectMaterialSealMapper.updateSurProjectMaterialSeal(surProjectMaterialSeal);
//操作日志
if(StringUtils.isNotBlank(surProjectMaterialSeal.getApproveStatus())){
@ -149,9 +154,14 @@ public class SurProjectMaterialSealServiceImpl implements ISurProjectMaterialSea
surProjectAuditinfo.setCreateBy(surProjectMaterialSeal.getUpdateBy());
surProjectAuditinfo.setCreateTime(new Date());
surProjectAuditinfoMapper.insertSurProjectAuditinfo(surProjectAuditinfo);
}
return surProjectMaterialSealMapper.updateSurProjectMaterialSeal(surProjectMaterialSeal);
//推送代办消息
if(res>0){
surProjectMaterialSeal = surProjectMaterialSealMapper.selectSurProjectMaterialSealById(surProjectMaterialSeal.getId());
super.send(surProjectMaterialSeal);
}
}
return res;
}
/**

View File

@ -10,6 +10,7 @@ import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.yanzhu.jh.project.domain.SurProjectAuditinfo;
import com.yanzhu.jh.project.mapper.SurProjectAuditinfoMapper;
import com.yanzhu.jh.wxsetting.service.impl.WxMessageImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.jh.project.mapper.SurProjectMeasureMapper;
@ -25,7 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
* @date 2023-08-22
*/
@Service
public class SurProjectMeasureServiceImpl implements ISurProjectMeasureService
public class SurProjectMeasureServiceImpl extends WxMessageImpl implements ISurProjectMeasureService
{
@Autowired
private SurProjectAuditinfoMapper surProjectAuditinfoMapper;
@ -115,6 +116,9 @@ public class SurProjectMeasureServiceImpl implements ISurProjectMeasureService
surProjectAuditinfoMapper.insertSurProjectAuditinfo(surProjectAuditinfo);
}
if(res>0){
super.send(surProjectMeasure);
}
return res;
}
@ -135,6 +139,7 @@ public class SurProjectMeasureServiceImpl implements ISurProjectMeasureService
surProjectMeasure.setMainImage(surProjectMeasure.getImageUrls().split(",")[0]);
}
surProjectMeasure.setUpdateTime(DateUtils.getNowDate());
int res = surProjectMeasureMapper.updateSurProjectMeasure(surProjectMeasure);
//操作日志
if(StringUtils.isNotBlank(surProjectMeasure.getApproveStatus())){
@ -148,9 +153,14 @@ public class SurProjectMeasureServiceImpl implements ISurProjectMeasureService
surProjectAuditinfo.setCreateBy(surProjectMeasure.getUpdateBy());
surProjectAuditinfo.setCreateTime(new Date());
surProjectAuditinfoMapper.insertSurProjectAuditinfo(surProjectAuditinfo);
}
return surProjectMeasureMapper.updateSurProjectMeasure(surProjectMeasure);
//推送代办消息
if(res>0){
surProjectMeasure = surProjectMeasureMapper.selectSurProjectMeasureById(surProjectMeasure.getId());
super.send(surProjectMeasure);
}
}
return res;
}
/**

View File

@ -21,6 +21,7 @@ import com.yanzhu.jh.trouble.domain.SmzSspFileinfo;
import com.yanzhu.jh.trouble.domain.SmzSspProblemmodify;
import com.yanzhu.jh.trouble.mapper.SmzSspAuditinfoMapper;
import com.yanzhu.jh.trouble.mapper.SmzSspProblemmodifyMapper;
import com.yanzhu.jh.wxsetting.service.impl.WxMessageImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.jh.trouble.mapper.SmzSspProblemmodifyDraftMapper;
@ -36,7 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
* @date 2023-10-15
*/
@Service
public class SmzSspProblemmodifyDraftServiceImpl implements ISmzSspProblemmodifyDraftService
public class SmzSspProblemmodifyDraftServiceImpl extends WxMessageImpl implements ISmzSspProblemmodifyDraftService
{
@Autowired
private SysDeptMapper deptMapper;
@ -113,7 +114,8 @@ public class SmzSspProblemmodifyDraftServiceImpl implements ISmzSspProblemmodify
insert.setMarksPicture(urls.get(0));
insert.setProblemType("1");
insert.setRoleType(Convert.toLong(roleType));
count.addAndGet(smzSspProblemmodifyDraftMapper.insertSmzSspProblemmodifyDraft(insert));
int res = smzSspProblemmodifyDraftMapper.insertSmzSspProblemmodifyDraft(insert);
count.addAndGet(res);
}
return count.intValue();
}
@ -127,7 +129,7 @@ public class SmzSspProblemmodifyDraftServiceImpl implements ISmzSspProblemmodify
@Override
@Transactional
public int batchUpdateSmzSspProblemmodifyDraft(List<SmzSspProblemmodify> smzSspProblemmodifyList) {
int res = 0;
AtomicInteger count = new AtomicInteger();
for(SmzSspProblemmodify smzSspProblemmodify:smzSspProblemmodifyList){
if(smzSspProblemmodify.getId()!=null){
//删除草稿
@ -143,17 +145,22 @@ public class SmzSspProblemmodifyDraftServiceImpl implements ISmzSspProblemmodify
SurProject surProject = surProjectMapper.selectSurProjectById(smzSspProblemmodify.getProjectId());
smzSspProblemmodify.setProblemArea(surProject.getProjectName());
}
smzSspProblemmodifyMapper.insertSmzSspProblemmodify(smzSspProblemmodify);
SmzSspAuditinfo smzSspAuditinfo = new SmzSspAuditinfo();
smzSspAuditinfo.setMainId(smzSspProblemmodify.getId());
smzSspAuditinfo.setProcessState("1");
smzSspAuditinfo.setCreateUser(smzSspProblemmodify.getCreateUser());
smzSspAuditinfo.setCreateTime(new Date());
res = smzSspAuditinfoMapper.insertSmzSspAuditinfo(smzSspAuditinfo);
smzSspAuditinfo.setFileUrls(smzSspProblemmodify.getSmarkUrl());
insertSmzSspFileinfo(smzSspAuditinfo);
int res = smzSspProblemmodifyMapper.insertSmzSspProblemmodify(smzSspProblemmodify);
if(res>0){
SmzSspAuditinfo smzSspAuditinfo = new SmzSspAuditinfo();
smzSspAuditinfo.setMainId(smzSspProblemmodify.getId());
smzSspAuditinfo.setProcessState("1");
smzSspAuditinfo.setCreateUser(smzSspProblemmodify.getCreateUser());
smzSspAuditinfo.setCreateTime(new Date());
smzSspAuditinfoMapper.insertSmzSspAuditinfo(smzSspAuditinfo);
smzSspAuditinfo.setFileUrls(smzSspProblemmodify.getSmarkUrl());
insertSmzSspFileinfo(smzSspAuditinfo);
super.send(smzSspProblemmodify);
}
count.addAndGet(res);
}
return res;
return count.intValue();
}
/**
@ -219,15 +226,19 @@ public class SmzSspProblemmodifyDraftServiceImpl implements ISmzSspProblemmodify
if(smzSspProblemmodify.getRoleType()==null || smzSspProblemmodify.getRoleType()<1){
smzSspProblemmodify.setRoleType(Convert.toInt(getRoleType(smzSspProblemmodify.getProjectId(),smzSspProblemmodify.getCreateUser())));
}
smzSspProblemmodifyMapper.insertSmzSspProblemmodify(smzSspProblemmodify);
SmzSspAuditinfo smzSspAuditinfo = new SmzSspAuditinfo();
smzSspAuditinfo.setMainId(smzSspProblemmodify.getId());
smzSspAuditinfo.setProcessState("1");
smzSspAuditinfo.setCreateUser(smzSspProblemmodify.getCreateUser());
smzSspAuditinfo.setCreateTime(new Date());
int res = smzSspAuditinfoMapper.insertSmzSspAuditinfo(smzSspAuditinfo);
smzSspAuditinfo.setFileUrls(smzSspProblemmodify.getSmarkUrl());
insertSmzSspFileinfo(smzSspAuditinfo);
int res = smzSspProblemmodifyMapper.insertSmzSspProblemmodify(smzSspProblemmodify);
if(res>0){
SmzSspAuditinfo smzSspAuditinfo = new SmzSspAuditinfo();
smzSspAuditinfo.setMainId(smzSspProblemmodify.getId());
smzSspAuditinfo.setProcessState("1");
smzSspAuditinfo.setCreateUser(smzSspProblemmodify.getCreateUser());
smzSspAuditinfo.setCreateTime(new Date());
smzSspAuditinfoMapper.insertSmzSspAuditinfo(smzSspAuditinfo);
smzSspAuditinfo.setFileUrls(smzSspProblemmodify.getSmarkUrl());
insertSmzSspFileinfo(smzSspAuditinfo);
super.send(smzSspProblemmodify);
}
return res;
}

View File

@ -17,6 +17,7 @@ import com.yanzhu.jh.trouble.domain.SmzSspAuditinfo;
import com.yanzhu.jh.trouble.domain.SmzSspFileinfo;
import com.yanzhu.jh.trouble.domain.where.SmzSspProblemmodifyWhere;
import com.yanzhu.jh.trouble.mapper.SmzSspAuditinfoMapper;
import com.yanzhu.jh.wxsetting.service.impl.WxMessageImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.jh.trouble.mapper.SmzSspProblemmodifyMapper;
@ -31,7 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
* @date 2023-07-28
*/
@Service
public class SmzSspProblemmodifyServiceImpl implements ISmzSspProblemmodifyService
public class SmzSspProblemmodifyServiceImpl extends WxMessageImpl implements ISmzSspProblemmodifyService
{
@Autowired
private SysDeptMapper deptMapper;
@ -162,15 +163,20 @@ public class SmzSspProblemmodifyServiceImpl implements ISmzSspProblemmodifyServi
}
smzSspProblemmodify.setRoleType(Convert.toInt(roleType));
smzSspProblemmodify.setCreateTime(DateUtils.getNowDate());
smzSspProblemmodifyMapper.insertSmzSspProblemmodify(smzSspProblemmodify);
SmzSspAuditinfo smzSspAuditinfo = new SmzSspAuditinfo();
smzSspAuditinfo.setMainId(smzSspProblemmodify.getId());
smzSspAuditinfo.setProcessState("1");
smzSspAuditinfo.setCreateUser(smzSspProblemmodify.getCreateUser());
smzSspAuditinfo.setCreateTime(new Date());
int res = smzSspAuditinfoMapper.insertSmzSspAuditinfo(smzSspAuditinfo);
smzSspAuditinfo.setFileUrls(smzSspProblemmodify.getSmarkUrl());
insertSmzSspFileinfo(smzSspAuditinfo);
int res = smzSspProblemmodifyMapper.insertSmzSspProblemmodify(smzSspProblemmodify);
if(res>0){
SmzSspAuditinfo smzSspAuditinfo = new SmzSspAuditinfo();
smzSspAuditinfo.setMainId(smzSspProblemmodify.getId());
smzSspAuditinfo.setProcessState("1");
smzSspAuditinfo.setCreateUser(smzSspProblemmodify.getCreateUser());
smzSspAuditinfo.setCreateTime(new Date());
smzSspAuditinfoMapper.insertSmzSspAuditinfo(smzSspAuditinfo);
smzSspAuditinfo.setFileUrls(smzSspProblemmodify.getSmarkUrl());
insertSmzSspFileinfo(smzSspAuditinfo);
super.send(smzSspProblemmodify);
}
return res;
}
@ -184,7 +190,12 @@ public class SmzSspProblemmodifyServiceImpl implements ISmzSspProblemmodifyServi
public int updateSmzSspProblemmodify(SmzSspProblemmodify smzSspProblemmodify)
{
smzSspProblemmodify.setUpdateTime(DateUtils.getNowDate());
return smzSspProblemmodifyMapper.updateSmzSspProblemmodify(smzSspProblemmodify);
int res = smzSspProblemmodifyMapper.updateSmzSspProblemmodify(smzSspProblemmodify);
if(res>0){
super.send(smzSspProblemmodify);
}
return res;
}
/**

View File

@ -1,7 +1,11 @@
package com.yanzhu.jh.wxsetting.controller;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.exception.WxErrorException;
@ -9,9 +13,10 @@ import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
/**
@ -21,27 +26,55 @@ import java.net.URLEncoder;
* @date 2023-08-24
*/
@Slf4j
@RestController
@Controller
@RequestMapping("/wxAuth")
public class WxAuthController extends BaseController {
@Autowired
private RedisCache redisCache;
@Autowired
private WxMpService wxMpService;
@Anonymous
@GetMapping("/auth")
@ResponseBody
public String auth(@RequestParam(value = "echostr", defaultValue = "没有获取到") String echostr) {
return echostr;
}
@Anonymous
@ResponseBody
@GetMapping("/getWxAccessToken")
public AjaxResult getWxAccessToken(){
try {
return success(wxMpService.getAccessToken());
}catch (Exception e){
return error(e.getMessage());
}
}
@Anonymous
@ResponseBody
@GetMapping("/deleteTestCache")
public AjaxResult deleteTestCache(){
redisCache.deleteObject(CacheConstants.WX_MPMESSAGE_UNAME+"*");
redisCache.deleteObject(CacheConstants.WX_MPMESSAGE_PNAME+"*");
redisCache.deleteObject(CacheConstants.WX_MPMESSAGE_DNAME+"*");
redisCache.deleteObject(CacheConstants.WX_MPMESSAGE_P_SUP+"*");
redisCache.deleteObject(CacheConstants.WX_MPMESSAGE_P_MAG+"*");
return success();
}
/**
* @author tao
* @param:
* @return
*
*/
@Anonymous
@GetMapping("/authorize")
public String authorize(@RequestParam(value = "returnUrl", defaultValue = "https://szgc.jhncidg.com/jhapi/") String returnUrl) throws UnsupportedEncodingException {
public void authorize(@RequestParam(value = "returnUrl", defaultValue = "https://szgc.jhncidg.com/jhapi/") String returnUrl, HttpServletResponse response) throws Exception {
log.info("【微信网页授权】进来了,参数={}", returnUrl);
//1. 配置
//2. 调用方法
@ -53,7 +86,7 @@ public class WxAuthController extends BaseController {
*/
String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAUTH2_SCOPE_USER_INFO, URLEncoder.encode(returnUrl, "utf-8"));
log.info("【微信网页授权】获取code,result={}", redirectUrl);
return "redirect:" + redirectUrl;
response.sendRedirect(redirectUrl);
}
/**
@ -62,9 +95,10 @@ public class WxAuthController extends BaseController {
* @return
* url
*/
@Anonymous
@GetMapping("/userInfo")
public String userInfo(@RequestParam("code") String code,
@RequestParam("state") String returnUrl) throws WxErrorException {
public void userInfo(@RequestParam("code") String code,
@RequestParam("state") String returnUrl,HttpServletResponse response) throws Exception {
/*urlauthorization code
codeaccess tokenopenid*/
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
@ -86,7 +120,7 @@ public class WxAuthController extends BaseController {
//注意拼接参数,第一个参数需要加问号,之后参数使用&拼接的问题
//return "redirect:" + returnUrl + "/#/?openid=" + openId;
return "redirect:" + returnUrl + "&openid=" + openId;
response.sendRedirect(returnUrl + "&openid=" + openId);
}
}

View File

@ -1,93 +0,0 @@
package com.yanzhu.jh.wxsetting.controller;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.controller.BaseController;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
/**
* openId
*
* @author JiangYuQi
* @date 2023-08-24
*/
@Slf4j
@Controller
@RequestMapping("/wxAuth")
public class WxBindingController extends BaseController {
@Autowired
private WxMpService wxMpService;
@GetMapping("/auth")
@ResponseBody
public String auth(@RequestParam(value = "echostr", defaultValue = "没有获取到") String echostr) {
return echostr;
}
/**
* @author tao
* @param:
* @return
*
*/
@GetMapping("/authorize")
public String authorize(@RequestParam(value = "returnUrl", defaultValue = "https://szgc.jhncidg.com/jhapi/") String returnUrl) throws UnsupportedEncodingException {
log.info("【微信网页授权】进来了,参数={}", returnUrl);
//1. 配置
//2. 调用方法
String url = RuoYiConfig.getProjectUrl() + "wxAuth/userInfo";
/*
*
* URLEncoder.decode(returnUrl,"UTF-8"
* https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
*/
String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAUTH2_SCOPE_USER_INFO, URLEncoder.encode(returnUrl, "utf-8"));
log.info("【微信网页授权】获取code,result={}", redirectUrl);
return "redirect:" + redirectUrl;
}
/**
* @author tao
* @param:
* @return
* url
*/
@GetMapping("/userInfo")
public String userInfo(@RequestParam("code") String code,
@RequestParam("state") String returnUrl) throws WxErrorException {
/*urlauthorization code
codeaccess tokenopenid*/
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
try {
//获取access token
wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
log.info("【AccessToken】{}", wxMpOAuth2AccessToken.getAccessToken());
} catch (WxErrorException e) {
log.error("【微信网页授权】{}", e);
}
// 拿到openid
String openId = wxMpOAuth2AccessToken.getOpenId();
log.info("【openid】{}", openId);
log.info("【我是前端要回调的地址:】{}", returnUrl + "&openid=" + openId);
// 顺便获取一下用户信息
WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, "zh_CN");
log.info("【用户信息:】{}", wxMpUser.toString());
//注意拼接参数,第一个参数需要加问号,之后参数使用&拼接的问题
//return "redirect:" + returnUrl + "/#/?openid=" + openId;
return "redirect:" + returnUrl + "&openid=" + openId;
}
}

View File

@ -0,0 +1,52 @@
package com.yanzhu.jh.wxsetting.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Accessors(chain = true)
@Builder
public class WxMpTemplate implements Serializable {
private static final long serialVersionUID = 337800069603349L;
private Long id;
/**
* key
*/
private String keyName;
/**
*
*/
private String description;
/**
* id
*/
private String templateId;
/**
* url
*/
private String url;
/**
*
*/
private String wxMpTemplateDataJson;
/**
*
*/
private Integer status;
}

View File

@ -0,0 +1,24 @@
package com.yanzhu.jh.wxsetting.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Accessors(chain = true)
@Builder
public class WxMpTemplateData implements Serializable {
private String name;
private String value;
private String color;
}

View File

@ -0,0 +1,45 @@
package com.yanzhu.jh.wxsetting.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Accessors(chain = true)
@Builder
public class WxMpTemplateMsgConfig implements Serializable {
private static final long serialVersionUID = 5063374783759519418L;
/**
* openid.
*/
private String toUser;
/**
* ID.
*/
private String templateId;
/**
* .
* <pre>
* urlminiprogram
* url
* </pre>
*/
private String url;
/**
* .
*
* @see #url
*/
private me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage.MiniProgram miniProgram;
}

View File

@ -0,0 +1,653 @@
package com.yanzhu.jh.wxsetting.service.impl;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.MessageTypeEnum;
import com.ruoyi.common.enums.PublicStateEnum;
import com.ruoyi.common.enums.TemplateMessageEnum;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysUserOpenid;
import com.ruoyi.system.mapper.SysDeptMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysUserOpenidMapper;
import com.yanzhu.jh.project.domain.*;
import com.yanzhu.jh.project.mapper.SurProjectMapper;
import com.yanzhu.jh.trouble.domain.SmzSspProblemmodify;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
*
* 使Async
* JiangYuQi
*/
@Slf4j
public class WxMessageImpl{
@Autowired
private WxMpService wxMpService;
@Autowired
private SysDeptMapper sysDeptMapper;
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
private SurProjectMapper surProjectMapper;
@Autowired
private SysUserOpenidMapper sysUserOpenidMapper;
@Async
public void send(SmzSspProblemmodify smzSspProblemmodify){
List<WxMpTemplateMessage> list = new ArrayList<>();
WxMpTemplateMessage mpTemplateMessage;
Long state = smzSspProblemmodify.getCheckState();
/**
*
*/
if(state==0){
//通知整改人
mpTemplateMessage = new WxMpTemplateMessage();
mpTemplateMessage.setToUser(this.getMsgId(smzSspProblemmodify.getLordSentUser()));
mpTemplateMessage.setTemplateId(TemplateMessageEnum.TROUBLE_DEFAULT.getId());
//模板数据
List<WxMpTemplateData> datas = new ArrayList<>();
WxMpTemplateData data = new WxMpTemplateData();
data.setValue(this.getMsgProName(smzSspProblemmodify.getProjectId()));
datas.add(data);
data.setValue(DateUtils.getTime());
datas.add(data);
data.setValue(this.getMsgName(smzSspProblemmodify.getCreateUser()));
datas.add(data);
data.setValue(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,smzSspProblemmodify.getNickedTime()));
datas.add(data);
String typeName = smzSspProblemmodify.getInfoType()==0?"安全隐患":"安全隐患";
data.setValue(typeName+"-"+ DictUtils.getDictLabel(smzSspProblemmodify.getInfoType()==0?"ssp_aqyhlx":"ssp_zlyhlx",smzSspProblemmodify.getDangerType()));
datas.add(data);
//TODO:这里缺少小程序跳转连接...
mpTemplateMessage.setData(datas);
list.add(mpTemplateMessage);
//通知抄送人
mpTemplateMessage = new WxMpTemplateMessage();
mpTemplateMessage.setToUser(this.getMsgId(smzSspProblemmodify.getCopySendUser()));
mpTemplateMessage.setTemplateId(TemplateMessageEnum.TROUBLE_DEFAULT.getId());
//模板数据
datas = new ArrayList<>();
data.setValue(this.getMsgProName(smzSspProblemmodify.getProjectId()));
datas.add(data);
data.setValue(DateUtils.getTime());
datas.add(data);
data.setValue(this.getMsgName(smzSspProblemmodify.getCreateUser()));
datas.add(data);
data.setValue(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,smzSspProblemmodify.getNickedTime()));
datas.add(data);
data.setValue(typeName+"-"+ DictUtils.getDictLabel(smzSspProblemmodify.getInfoType()==0?"ssp_aqyhlx":"ssp_zlyhlx",smzSspProblemmodify.getDangerType()));
datas.add(data);
mpTemplateMessage.setData(datas);
list.add(mpTemplateMessage);
} else if(state==1){
//通知复检人
mpTemplateMessage = new WxMpTemplateMessage();
mpTemplateMessage.setToUser(this.getMsgId(smzSspProblemmodify.getRecheckSendUser()));
mpTemplateMessage.setTemplateId(TemplateMessageEnum.TROUBLE_DEFAULT.getId());
//模板数据
List<WxMpTemplateData> datas = new ArrayList<>();
WxMpTemplateData data = new WxMpTemplateData();
data.setValue(this.getMsgProName(smzSspProblemmodify.getProjectId()));
datas.add(data);
data.setValue(DateUtils.getTime());
datas.add(data);
data.setValue(this.getMsgName(smzSspProblemmodify.getCreateUser()));
datas.add(data);
data.setValue(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,smzSspProblemmodify.getNickedTime()));
datas.add(data);
String typeName = smzSspProblemmodify.getInfoType()==0?"安全隐患":"安全隐患";
data.setValue(typeName+"-"+ DictUtils.getDictLabel(smzSspProblemmodify.getInfoType()==0?"ssp_aqyhlx":"ssp_zlyhlx",smzSspProblemmodify.getDangerType()));
datas.add(data);
//TODO:这里缺少小程序跳转连接...
mpTemplateMessage.setData(datas);
list.add(mpTemplateMessage);
} else if(state==3){
} else if(state==4){
//通知提交人
}
this.send(list, MessageTypeEnum.getYHPCLX(smzSspProblemmodify.getInfoType()));
}
/**
*
* @param surProjectChecking
*/
@Async
public void send(SurProjectChecking surProjectChecking){
List<WxMpTemplateMessage> list = new ArrayList<>();
String stateStr = surProjectChecking.getApproveStatus();
if(Objects.equals(PublicStateEnum.AUDITINFO_DSH.getCode(),stateStr)){
/**
*
*/
String supMsgId = this.getMsgId(surProjectChecking.getSuperviseUser());
//模板数据
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(supMsgId)
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectChecking.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", "待"+surProjectChecking.getSuperviseUserName()+"审批"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectChecking.getCreateBy())+"["+this.getMsgDepName(surProjectChecking.getDeptId())+"]"));
list.add(templateMessage);
/**
*
*/
templateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgProMagUsers(surProjectChecking.getProjectId()))
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectChecking.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", "待"+surProjectChecking.getSuperviseUserName()+"审批"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectChecking.getCreateBy())+"["+this.getMsgDepName(surProjectChecking.getDeptId())+"]"));
list.add(templateMessage);
/**
*
*
*/
String _supMsgId = this.getMsgProSupUsers(surProjectChecking.getProjectId());
if(StringUtils.isEmpty(_supMsgId)){
_supMsgId = "";
}
if(!Objects.equals(supMsgId,_supMsgId)){
templateMessage = WxMpTemplateMessage.builder()
.toUser(_supMsgId)
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectChecking.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", "待"+surProjectChecking.getSuperviseUserName()+"审批"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectChecking.getCreateBy())+"["+this.getMsgDepName(surProjectChecking.getDeptId())+"]"));
list.add(templateMessage);
}
}else if(Objects.equals(PublicStateEnum.AUDITINFO_SHTG.getCode(),stateStr)){
/**
*
*
*/
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(surProjectChecking.getCreateBy()))
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectChecking.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectChecking.getSuperviseUserName()+"审批通过"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectChecking.getCreateBy())+"["+this.getMsgDepName(surProjectChecking.getDeptId())+"]"));
list.add(templateMessage);
}else{
/**
*
*
*/
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(surProjectChecking.getCreateBy()))
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectChecking.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectChecking.getSuperviseUserName()+"审批驳回"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectChecking.getCreateBy())+"["+this.getMsgDepName(surProjectChecking.getDeptId())+"]"));
list.add(templateMessage);
}
this.send(list,MessageTypeEnum.JPYSSP.getCode());
}
/**
*
* @param surProjectMeasure
*/
@Async
public void send(SurProjectMeasure surProjectMeasure){
List<WxMpTemplateMessage> list = new ArrayList<>();
String stateStr = surProjectMeasure.getApproveStatus();
if(Objects.equals(PublicStateEnum.AUDITINFO_DSH.getCode(),stateStr)){
/**
*
*/
String supMsgId = this.getMsgId(surProjectMeasure.getSuperviseUser());
//模板数据
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(supMsgId)
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectMeasure.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", "待"+surProjectMeasure.getSuperviseUserName()+"审批"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectMeasure.getCreateBy())+"["+this.getMsgDepName(surProjectMeasure.getDeptId())+"]"));
list.add(templateMessage);
/**
*
*/
templateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgProMagUsers(surProjectMeasure.getProjectId()))
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectMeasure.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", "待"+surProjectMeasure.getSuperviseUserName()+"审批"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectMeasure.getCreateBy())+"["+this.getMsgDepName(surProjectMeasure.getDeptId())+"]"));
list.add(templateMessage);
/**
*
*
*/
String _supMsgId = this.getMsgProSupUsers(surProjectMeasure.getProjectId());
if(StringUtils.isEmpty(_supMsgId)){
_supMsgId = "";
}
if(!Objects.equals(supMsgId,_supMsgId)){
templateMessage = WxMpTemplateMessage.builder()
.toUser(_supMsgId)
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectMeasure.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", "待"+surProjectMeasure.getSuperviseUserName()+"审批"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectMeasure.getCreateBy())+"["+this.getMsgDepName(surProjectMeasure.getDeptId())+"]"));
list.add(templateMessage);
}
}else if(Objects.equals(PublicStateEnum.AUDITINFO_SHTG.getCode(),stateStr)){
/**
*
*
*/
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(surProjectMeasure.getCreateBy()))
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectMeasure.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectMeasure.getSuperviseUserName()+"审批通过"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectMeasure.getCreateBy())+"["+this.getMsgDepName(surProjectMeasure.getDeptId())+"]"));
list.add(templateMessage);
}else{
/**
*
*
*/
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(surProjectMeasure.getCreateBy()))
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectMeasure.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectMeasure.getSuperviseUserName()+"审批驳回"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectMeasure.getCreateBy())+"["+this.getMsgDepName(surProjectMeasure.getDeptId())+"]"));
list.add(templateMessage);
}
this.send(list,MessageTypeEnum.JPYSSP.getCode());
}
/**
*
* @param surProjectMaterialSeal
*/
@Async
public void send(SurProjectMaterialSeal surProjectMaterialSeal){
List<WxMpTemplateMessage> list = new ArrayList<>();
String stateStr = surProjectMaterialSeal.getApproveStatus();
if(Objects.equals(PublicStateEnum.AUDITINFO_DSH.getCode(),stateStr)){
/**
*
*/
String supMsgId = this.getMsgId(surProjectMaterialSeal.getWitnessUser());
//模板数据
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(supMsgId)
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectMaterialSeal.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectMaterialSeal.getWitnessUserName()+"审批"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectMaterialSeal.getCreateBy())+"["+this.getMsgDepName(surProjectMaterialSeal.getDeptId())+"]"));
list.add(templateMessage);
/**
*
*/
templateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgProMagUsers(surProjectMaterialSeal.getProjectId()))
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectMaterialSeal.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectMaterialSeal.getWitnessUserName()+"审批"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectMaterialSeal.getCreateBy())+"["+this.getMsgDepName(surProjectMaterialSeal.getDeptId())+"]"));
list.add(templateMessage);
/**
*
*
*/
String _supMsgId = this.getMsgProSupUsers(surProjectMaterialSeal.getProjectId());
if(StringUtils.isEmpty(_supMsgId)){
_supMsgId = "";
}
if(!Objects.equals(supMsgId,_supMsgId)){
templateMessage = WxMpTemplateMessage.builder()
.toUser(_supMsgId)
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectMaterialSeal.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectMaterialSeal.getWitnessUserName()+"审批"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectMaterialSeal.getCreateBy())+"["+this.getMsgDepName(surProjectMaterialSeal.getDeptId())+"]"));
list.add(templateMessage);
}
}else if(Objects.equals(PublicStateEnum.AUDITINFO_SHTG.getCode(),stateStr)){
/**
*
*
*/
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(surProjectMaterialSeal.getCreateBy()))
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectMaterialSeal.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectMaterialSeal.getWitnessUserName()+"审批通过"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectMaterialSeal.getCreateBy())+"["+this.getMsgDepName(surProjectMaterialSeal.getDeptId())+"]"));
list.add(templateMessage);
}else{
/**
*
*
*/
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(surProjectMaterialSeal.getCreateBy()))
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectMaterialSeal.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectMaterialSeal.getWitnessUserName()+"审批驳回"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectMaterialSeal.getCreateBy())+"["+this.getMsgDepName(surProjectMaterialSeal.getDeptId())+"]"));
list.add(templateMessage);
}
this.send(list,MessageTypeEnum.JPYSSP.getCode());
}
/**
*
* @param surProjectCheckDetection
*/
@Async
public void send(SurProjectCheckDetection surProjectCheckDetection){
List<WxMpTemplateMessage> list = new ArrayList<>();
String stateStr = surProjectCheckDetection.getApproveStatus();
if(Objects.equals(PublicStateEnum.AUDITINFO_DSH.getCode(),stateStr)){
/**
*
*/
String supMsgId = this.getMsgId(surProjectCheckDetection.getWitnessUser());
//模板数据
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(supMsgId)
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectCheckDetection.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectCheckDetection.getWitnessUserName()+"审批"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectCheckDetection.getCreateBy())+"["+this.getMsgDepName(surProjectCheckDetection.getDeptId())+"]"));
list.add(templateMessage);
/**
*
*/
templateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgProMagUsers(surProjectCheckDetection.getProjectId()))
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectCheckDetection.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectCheckDetection.getWitnessUserName()+"审批"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectCheckDetection.getCreateBy())+"["+this.getMsgDepName(surProjectCheckDetection.getDeptId())+"]"));
list.add(templateMessage);
/**
*
*
*/
String _supMsgId = this.getMsgProSupUsers(surProjectCheckDetection.getProjectId());
if(StringUtils.isEmpty(_supMsgId)){
_supMsgId = "";
}
if(!Objects.equals(supMsgId,_supMsgId)){
templateMessage = WxMpTemplateMessage.builder()
.toUser(_supMsgId)
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectCheckDetection.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectCheckDetection.getWitnessUserName()+"审批"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectCheckDetection.getCreateBy())+"["+this.getMsgDepName(surProjectCheckDetection.getDeptId())+"]"));
list.add(templateMessage);
}
}else if(Objects.equals(PublicStateEnum.AUDITINFO_SHTG.getCode(),stateStr)){
/**
*
*
*/
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(surProjectCheckDetection.getCreateBy()))
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectCheckDetection.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectCheckDetection.getWitnessUserName()+"审批通过"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectCheckDetection.getCreateBy())+"["+this.getMsgDepName(surProjectCheckDetection.getDeptId())+"]"));
list.add(templateMessage);
}else{
/**
*
*
*/
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(this.getMsgId(surProjectCheckDetection.getCreateBy()))
.templateId(TemplateMessageEnum.APPLY_DEFAULT.getId()).build();
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing14", this.getMsgProName(surProjectCheckDetection.getProjectId())));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing1", MessageTypeEnum.JPYSSP.getName()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing2", surProjectCheckDetection.getWitnessUserName()+"审批驳回"));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("time4", DateUtils.getTime()));
templateMessage.addWxMpTemplateData(new WxMpTemplateData("thing10", this.getMsgName(surProjectCheckDetection.getCreateBy())+"["+this.getMsgDepName(surProjectCheckDetection.getDeptId())+"]"));
list.add(templateMessage);
}
this.send(list,MessageTypeEnum.JPYSSP.getCode());
}
@Autowired
private RedisCache redisCache;
/**
*
* @param proId
* @return
*/
private String getMsgProSupUsers(Long proId){
List<SysUserOpenid> list = redisCache.getCacheObject(CacheConstants.WX_MPMESSAGE_P_SUP +proId);
if(list!=null){
List<String> strs = list.stream().map(SysUserOpenid :: getMsgOpenId).collect(Collectors.toList());
return String.join(",",strs);
}else{
list = sysUserOpenidMapper.findMsgProSupUsers(proId);
if(StringUtils.isNotEmpty(list)){
//设置30分钟有效期
redisCache.setCacheObject(CacheConstants.WX_MPMESSAGE_P_SUP +proId,list,1, TimeUnit.MINUTES);
List<String> strs = list.stream().map(SysUserOpenid :: getMsgOpenId).collect(Collectors.toList());
return String.join(",",strs);
}else{
return null;
}
}
}
/**
*
* @param proId
* @return
*/
private String getMsgProMagUsers(Long proId){
List<SysUserOpenid> list = redisCache.getCacheObject(CacheConstants.WX_MPMESSAGE_P_MAG +proId);
if(list!=null){
List<String> strs = list.stream().map(SysUserOpenid :: getMsgOpenId).collect(Collectors.toList());
return String.join(",",strs);
}else{
list = sysUserOpenidMapper.findMsgProMagUsers(proId);
if(StringUtils.isNotEmpty(list)){
//设置30分钟有效期
redisCache.setCacheObject(CacheConstants.WX_MPMESSAGE_P_MAG +proId,list,1, TimeUnit.MINUTES);
List<String> strs = list.stream().map(SysUserOpenid :: getMsgOpenId).collect(Collectors.toList());
return String.join(",",strs);
}else{
return null;
}
}
}
/**
*
* @param depId
* @return
*/
private String getMsgDepName(Long depId){
String name = Convert.toStr(redisCache.getCacheObject(CacheConstants.WX_MPMESSAGE_DNAME +depId));
if(StringUtils.isNotEmpty(name)){
return name;
}else{
SysDept sysDept = sysDeptMapper.selectDeptById(depId);
//项目名称截取&&超过20字符微信限制并抛出异常
String depName = sysDept.getDeptName();
if(depName.length()>13){
depName = sysDept.getDeptName().substring(0,13);
}
//设置30分钟有效期
redisCache.setCacheObject(CacheConstants.WX_MPMESSAGE_DNAME +depId,depName,1, TimeUnit.MINUTES);
return depName;
}
}
/**
*
* @param proId
* @return
*/
private String getMsgProName(Long proId){
String name = Convert.toStr(redisCache.getCacheObject(CacheConstants.WX_MPMESSAGE_PNAME +proId));
if(StringUtils.isNotEmpty(name)){
return name;
}else{
SurProject surProject = surProjectMapper.selectSurProjectById(proId);
//项目名称截取&&超过20字符微信限制并抛出异常
String proName = surProject.getProjectName();
if(proName.length()>20){
proName = surProject.getProjectName().substring(0,20);
}
//设置30分钟有效期
redisCache.setCacheObject(CacheConstants.WX_MPMESSAGE_PNAME +proId,proName,1, TimeUnit.MINUTES);
return proName;
}
}
/**
*
* @param userName
* @return
*/
private String getMsgName(String userName){
String name = Convert.toStr(redisCache.getCacheObject(CacheConstants.WX_MPMESSAGE_UNAME +userName));
if(StringUtils.isNotEmpty(name)){
return name;
}else{
SysUser sysUser = sysUserMapper.selectUserByUserName(userName);
name = sysUser!=null?sysUser.getNickName():"";
//设置30分钟有效期
redisCache.setCacheObject(CacheConstants.WX_MPMESSAGE_UNAME +userName,name,1, TimeUnit.MINUTES);
return name;
}
}
/**
*
* @param userName
* @return
*/
private String getMsgId(String userName){
String openIds = Convert.toStr(redisCache.getCacheObject(CacheConstants.WX_MPMESSAGE_OPENID +userName));
if(StringUtils.isNotEmpty(openIds)){
return openIds;
}else{
List<SysUserOpenid> list = sysUserOpenidMapper.findSysUserOpenidsByUser(userName);
List<String> strs = list.stream().map(SysUserOpenid :: getMsgOpenId).collect(Collectors.toList());
openIds = String.join(",",strs);
//设置30分钟有效期
redisCache.setCacheObject(CacheConstants.WX_MPMESSAGE_OPENID +userName,openIds,1, TimeUnit.MINUTES);
return openIds;
}
}
/**
*
*/
private boolean wxSwitch=false;
/**
*
* @param lsit
*/
private void send(List<WxMpTemplateMessage> lsit,String messageType){
try {
if(wxSwitch && StringUtils.isNotEmpty(lsit)){
for(WxMpTemplateMessage message:lsit){
if(StringUtils.isNotEmpty(message.getToUser())){
String[] toUsers = message.getToUser().split(",");
for(String toUser:toUsers){
//判断短时间内是否已发送相同类型的消息
String key = CacheConstants.WX_MPMESSAGE_KEY +toUser+"-"+messageType;
if(Convert.toBool(redisCache.getCacheObject(key),true)){
//多个登录账号时批量发送
message.setToUser(toUser);
wxMpService.getTemplateMsgService().sendTemplateMsg(message);
//5分钟内不推送相同类型的消息
redisCache.setCacheObject(key,false,30, TimeUnit.SECONDS);
}
}
}
}
}
}catch (Exception e){
log.info("出错了...{}",e.getMessage());
}
}
}

View File

@ -1,11 +0,0 @@
package com.yanzhu.jh.wxsetting.service;
/**
*
*
* @author JiangYuQi
* @date 2023-08-24
*/
public interface wxMessageService {
}

View File

@ -67,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!--普通用户查询项目人员-->
<if test='nowRole == "15" or nowRole == "16" or nowRole == "17" or nowRole == "99"'> left join sur_project_userinfo spu on spu.project_id = sp.id</if>
<where>
sp.isDel = 0
<if test="deptId != null "> and sp.deptId like concat('%', #{deptId}, '%')</if>
<if test="projectName != null and projectName != ''"> and sp.projectName like concat('%', #{projectName}, '%')</if>
<if test="projectCode != null and projectCode != ''"> and sp.projectCode = #{projectCode}</if>
@ -97,7 +98,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="onAccountAmount != null and onAccountAmount != ''"> and sp.onAccountAmount = #{onAccountAmount}</if>
<if test="projectSchedule != null and projectSchedule != ''"> and sp.projectSchedule = #{projectSchedule}</if>
<if test="projectSummarize != null and projectSummarize != ''"> and sp.projectSummarize = #{projectSummarize}</if>
<if test="isDel != null "> and sp.isDel = #{isDel}</if>
<if test="projectStatus != null and projectStatus != ''"> and sp.projectStatus = #{projectStatus}</if>
<if test="createBy != null and createBy != ''"> and sp.create_by = #{createBy}</if>
<if test="servicePersonnel != null "> and sp.servicePersonnel = #{servicePersonnel}</if>