Commit 030e1f53 by fudahua

消息通知

parent 13992312
......@@ -4,13 +4,13 @@ package com.gic.haoban.manage.api.enums;
* Created by hua on 2021/12/17.
*/
public enum NoticeMessageTypeEnum {
ACTIVITY_START(1001, "活动开始通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType()),
ACTIVITY_NEW(1002, "活动上新通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType()),
ACTIVITY_DEL(1003, "活动删除通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType()),
ACTIVITY_OFFLINE(1004, "活动下线通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType()),
ACTIVITY_END(1005, "活动结束通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType()),
ACTIVITY_RANK(1006, "活动排名通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType()),
ACTIVITY_AWARD(1007, "活动奖励通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType());
ACTIVITY_START(1001, "活动开始通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType(), "activity_message", ""),
ACTIVITY_NEW(1002, "活动上新通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType(), "activity_message", ""),
ACTIVITY_DEL(1003, "活动删除通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType(), "activity_message", ""),
ACTIVITY_OFFLINE(1004, "活动下线通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType(), "activity_message", ""),
ACTIVITY_END(1005, "活动结束通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType(), "activity_message", ""),
ACTIVITY_RANK(1006, "活动排名通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType(), "activity_message", ""),
ACTIVITY_AWARD(1007, "活动奖励通知", NoticeMessageCategoryTypeEnum.ACTIVITY.getType(), "activity_message", "");
/**
* 消息类型
*/
......@@ -23,11 +23,30 @@ public enum NoticeMessageTypeEnum {
* 大类
*/
private int category;
/**
* 模板类型
*/
private String templateCode;
NoticeMessageTypeEnum(int type, String name, int category) {
/**
* 活动页面
*/
private String pageUrl;
NoticeMessageTypeEnum(int type, String name, int category, String templateCode, String pageUrl) {
this.type = type;
this.name = name;
this.category = category;
this.templateCode = templateCode;
this.pageUrl = pageUrl;
}
public String getTemplateCode() {
return templateCode;
}
public void setTemplateCode(String templateCode) {
this.templateCode = templateCode;
}
public int getType() {
......@@ -54,6 +73,14 @@ public enum NoticeMessageTypeEnum {
this.category = category;
}
public String getPageUrl() {
return pageUrl;
}
public void setPageUrl(String pageUrl) {
this.pageUrl = pageUrl;
}
public static NoticeMessageTypeEnum getByType(int type) {
for (NoticeMessageTypeEnum messageTypeEnum : values()) {
if (messageTypeEnum.getType() == type) {
......
......@@ -3,7 +3,9 @@ package com.gic.haoban.manage.api.util.notify;
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.haoban.manage.api.dto.notify.qdto.NoticeMessageQDTO;
import com.gic.haoban.manage.api.enums.NoticeMessageTypeEnum;
import com.gic.mq.sdk.GicMQClient;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import java.util.Map;
......@@ -27,16 +29,21 @@ public class NoticeMessageUtil {
* @param enterpriseId 企业id
* @param clerkId 执行人导购
* @param messageType 消息类型 NoticeMessageTypeEnum
* @param templateCode 模板code
* @param fieldMap 解析模板的字段
* @param extendField 拓展字段给前端使用 没有可以为null
*/
public static void sendNoticeMessage(String enterpriseId, String clerkId, int messageType, String templateCode, Map<String, String> fieldMap, Map<String, Object> extendField) {
public static void sendNoticeMessage(String enterpriseId, String clerkId, int messageType, Map<String, String> fieldMap, Map<String, Object> extendField) {
if (StringUtils.isAnyBlank(enterpriseId, clerkId)) {
throw new RuntimeException("必传参数没传");
}
NoticeMessageTypeEnum messageTypeEnum = NoticeMessageTypeEnum.getByType(messageType);
if (messageTypeEnum == null) {
throw new RuntimeException("消息类型不存在");
}
NoticeMessageQDTO noticeMessageQDTO = new NoticeMessageQDTO();
noticeMessageQDTO.setEnterpriseId(enterpriseId);
noticeMessageQDTO.setClerkId(clerkId);
noticeMessageQDTO.setMessageType(messageType);
noticeMessageQDTO.setTemplateCode(templateCode);
noticeMessageQDTO.setContentMap(fieldMap);
noticeMessageQDTO.setExtendContent(extendField);
String ret = JSONObject.toJSONString(noticeMessageQDTO);
......
package com.gic.haoban.manage.service.dao.mapper;
import com.gic.haoban.manage.service.entity.TabNoticeMessageTemplate;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface NoticeMessageTemplateMapper {
/**
*/
int deleteByPrimaryKey(Integer noticeMessageTemplateId);
/**
*/
int insert(TabNoticeMessageTemplate record);
/**
*/
int insertSelective(TabNoticeMessageTemplate record);
/**
*/
TabNoticeMessageTemplate selectByPrimaryKey(Integer noticeMessageTemplateId);
/**
*/
int updateByPrimaryKeySelective(TabNoticeMessageTemplate record);
/**
*/
int updateByPrimaryKey(TabNoticeMessageTemplate record);
/**
* 模板
*/
TabNoticeMessageTemplate getByCode(@Param("enterpriseId") String enterpriseId, @Param("templateCode") String templateCode);
}
\ No newline at end of file
package com.gic.haoban.manage.service.entity;
import java.io.Serializable;
import java.util.Date;
/**
* Created By MBG-GUI-EXTENSION https://github.com/spawpaw/mybatis-generator-gui-extension
* Description:
*
* @author fdh
*/
public class TabNoticeMessageTemplate implements Serializable {
/**
*
*/
private Integer noticeMessageTemplateId;
/**
* 企业id
*/
private String enterpriseId;
/**
* 模板编号
*/
private String templateCode;
/**
* 模板内容
*/
private String content;
private String noticeContent;
/**
* 是否删除
*/
private Integer deleteFlag;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
*/
private static final long serialVersionUID = 1L;
public String getNoticeContent() {
return noticeContent;
}
public void setNoticeContent(String noticeContent) {
this.noticeContent = noticeContent;
}
/**
* This method returns the value of the database column tab_haoban_notice_message_template.notice_message_template_id
*
* @return the value of tab_haoban_notice_message_template.notice_message_template_id
*/
public Integer getNoticeMessageTemplateId() {
return noticeMessageTemplateId;
}
/**
* This method sets the value of the database column tab_haoban_notice_message_template.notice_message_template_id
*
* @param noticeMessageTemplateId the value for tab_haoban_notice_message_template.notice_message_template_id
*/
public void setNoticeMessageTemplateId(Integer noticeMessageTemplateId) {
this.noticeMessageTemplateId = noticeMessageTemplateId;
}
/**
* This method returns the value of the database column tab_haoban_notice_message_template.enterprise_id
*
* @return the value of tab_haoban_notice_message_template.enterprise_id
*/
public String getEnterpriseId() {
return enterpriseId;
}
/**
* This method sets the value of the database column tab_haoban_notice_message_template.enterprise_id
*
* @param enterpriseId the value for tab_haoban_notice_message_template.enterprise_id
*/
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
/**
* This method returns the value of the database column tab_haoban_notice_message_template.template_code
*
* @return the value of tab_haoban_notice_message_template.template_code
*/
public String getTemplateCode() {
return templateCode;
}
/**
* This method sets the value of the database column tab_haoban_notice_message_template.template_code
*
* @param templateCode the value for tab_haoban_notice_message_template.template_code
*/
public void setTemplateCode(String templateCode) {
this.templateCode = templateCode;
}
/**
* This method returns the value of the database column tab_haoban_notice_message_template.content
*
* @return the value of tab_haoban_notice_message_template.content
*/
public String getContent() {
return content;
}
/**
* This method sets the value of the database column tab_haoban_notice_message_template.content
*
* @param content the value for tab_haoban_notice_message_template.content
*/
public void setContent(String content) {
this.content = content;
}
/**
* This method returns the value of the database column tab_haoban_notice_message_template.delete_flag
*
* @return the value of tab_haoban_notice_message_template.delete_flag
*/
public Integer getDeleteFlag() {
return deleteFlag;
}
/**
* This method sets the value of the database column tab_haoban_notice_message_template.delete_flag
*
* @param deleteFlag the value for tab_haoban_notice_message_template.delete_flag
*/
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
/**
* This method returns the value of the database column tab_haoban_notice_message_template.create_time
*
* @return the value of tab_haoban_notice_message_template.create_time
*/
public Date getCreateTime() {
return createTime;
}
/**
* This method sets the value of the database column tab_haoban_notice_message_template.create_time
*
* @param createTime the value for tab_haoban_notice_message_template.create_time
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* This method returns the value of the database column tab_haoban_notice_message_template.update_time
*
* @return the value of tab_haoban_notice_message_template.update_time
*/
public Date getUpdateTime() {
return updateTime;
}
/**
* This method sets the value of the database column tab_haoban_notice_message_template.update_time
*
* @param updateTime the value for tab_haoban_notice_message_template.update_time
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}
\ No newline at end of file
package com.gic.haoban.manage.service.pojo.bo;
import java.io.Serializable;
/**
* Created 2021/12/17.
*
* @author hua
*/
public class TemplateContentBO implements Serializable {
private String key;
private String val;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getVal() {
return val;
}
public void setVal(String val) {
this.val = val;
}
}
package com.gic.haoban.manage.service.service.notify;
import com.gic.haoban.manage.service.pojo.bo.TemplateContentBO;
import java.util.List;
/**
* Created 2021/12/17.
*
* @author hua
*/
public interface NoticeMessageTemplateService {
/**
* 获取模板消息 企业微信
*
* @param enterpriseId
* @param templateCode
* @return
*/
public List<TemplateContentBO> getQywxTemplateMessage(String enterpriseId, String templateCode);
/**
* 获取模板消息 好办内部
*
* @param enterpriseId
* @param templateCode
* @return
*/
public String getHaobanTemplateMessage(String enterpriseId, String templateCode);
}
package com.gic.haoban.manage.service.service.notify.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gic.haoban.manage.service.dao.mapper.NoticeMessageTemplateMapper;
import com.gic.haoban.manage.service.entity.TabNoticeMessageTemplate;
import com.gic.haoban.manage.service.pojo.bo.TemplateContentBO;
import com.gic.haoban.manage.service.service.notify.NoticeMessageTemplateService;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Created 2021/12/17.
*
* @author hua
*/
@Service
public class NoticeMessageTemplateServiceImpl implements NoticeMessageTemplateService {
private static final String QYWX_TEMPLATE_KEY = "qywx-notice-message-template:";
private static final String HAOBAN_TEMPLATE_KEY = "haoban-notice-message-template:";
private static final Long TIME_OUT = 24 * 60 * 60L;
@Autowired
private NoticeMessageTemplateMapper noticeMessageTemplateMapper;
@Override
public List<TemplateContentBO> getQywxTemplateMessage(String enterpriseId, String templateCode) {
String key = QYWX_TEMPLATE_KEY + templateCode + ":" + enterpriseId;
String content = (String) RedisUtil.getCache(key);
if (StringUtils.isNotBlank(content)) {
return JSONArray.parseArray(content, TemplateContentBO.class);
}
String lockKey = QYWX_TEMPLATE_KEY + templateCode + ":" + enterpriseId + ";lock";
RedisUtil.lock(lockKey, 2L);
TabNoticeMessageTemplate messageTemplate = noticeMessageTemplateMapper.getByCode(enterpriseId, templateCode);
if (messageTemplate == null) {
messageTemplate = noticeMessageTemplateMapper.getByCode("-1", templateCode);
}
if (messageTemplate == null) {
RedisUtil.unlock(lockKey);
return null;
}
content = messageTemplate.getContent();
RedisUtil.setCache(key, content, TIME_OUT);
RedisUtil.unlock(lockKey);
return JSONArray.parseArray(content, TemplateContentBO.class);
}
@Override
public String getHaobanTemplateMessage(String enterpriseId, String templateCode) {
String key = HAOBAN_TEMPLATE_KEY + templateCode + ":" + enterpriseId;
String content = (String) RedisUtil.getCache(key);
if (StringUtils.isNotBlank(content)) {
return content;
}
String lockKey = HAOBAN_TEMPLATE_KEY + templateCode + ":" + enterpriseId + ";lock";
RedisUtil.lock(lockKey, 2L);
TabNoticeMessageTemplate messageTemplate = noticeMessageTemplateMapper.getByCode(enterpriseId, templateCode);
if (messageTemplate == null) {
messageTemplate = noticeMessageTemplateMapper.getByCode("-1", templateCode);
}
if (messageTemplate == null) {
RedisUtil.unlock(lockKey);
return null;
}
content = messageTemplate.getNoticeContent();
RedisUtil.setCache(key, content, TIME_OUT);
RedisUtil.unlock(lockKey);
return content;
}
}
package com.gic.haoban.manage.service.service.notify.out;
import com.alibaba.fastjson.JSONObject;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.WxEnterpriseDTO;
import com.gic.haoban.manage.api.dto.notify.qdto.NoticeMessageQDTO;
import com.gic.haoban.manage.api.enums.NoticeMessageTypeEnum;
import com.gic.haoban.manage.api.service.notify.NoticeMessageApiService;
import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.pojo.bo.NoticeMessageBO;
import com.gic.haoban.manage.service.pojo.bo.TemplateContentBO;
import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.service.notify.NoticeMessageService;
import com.gic.haoban.manage.service.service.notify.NoticeMessageTemplateService;
import com.gic.wechat.api.dto.qywx.ItemDTO;
import com.gic.wechat.api.dto.qywx.QywxXcxSendMessageDTO;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static org.slf4j.LoggerFactory.getLogger;
/**
......@@ -26,15 +44,132 @@ public class NoticeMessageApiServiceImpl implements NoticeMessageApiService {
@Autowired
private ClerkService clerkService;
@Autowired
private NoticeMessageTemplateService noticeMessageTemplateService;
@Autowired
private Config config;
@Autowired
private StaffClerkRelationService staffClerkRelationService;
@Autowired
private NoticeMessageService noticeMessageService;
@Autowired
private QywxSuiteApiService qywxSuiteApiService;
@Autowired
private WxEnterpriseService wxEnterpriseService;
@Override
public void noticeMessageMq(String json) {
logger.info("通知消息:{}", json);
NoticeMessageQDTO messageQDTO = JSONObject.parseObject(json, NoticeMessageQDTO.class);
ClerkDTO clerkDTO = clerkService.getClerkByClerkId(messageQDTO.getClerkId());
NoticeMessageTypeEnum messageTypeEnum = NoticeMessageTypeEnum.getByType(messageQDTO.getMessageType());
messageQDTO.setTemplateCode(messageTypeEnum.getTemplateCode());
//企业微信模板
List<TemplateContentBO> contentList = getDescriotion(messageQDTO);
//好办模板
String haobanNotice = getHaobanNotice(messageQDTO);
//模板不存在
if (CollectionUtils.isEmpty(contentList) || StringUtils.isBlank(haobanNotice)) {
logger.info("没有模板,无法发送消息:{}", messageQDTO.getTemplateCode());
return;
}
StaffClerkRelationDTO clerkRelationDTO = staffClerkRelationService.getBindByClerkId(messageQDTO.getClerkId(), messageQDTO.getEnterpriseId());
if (clerkRelationDTO == null) {
logger.info("没有导购:{}", messageQDTO.getClerkId());
return;
}
//消息组装 新增消息
NoticeMessageBO noticeMessageBO = new NoticeMessageBO();
noticeMessageBO.setCategoryType(NoticeMessageTypeEnum.getByType(messageQDTO.getMessageType()).getType());
noticeMessageBO.setCategoryType(messageTypeEnum.getType());
noticeMessageBO.setMessageType(messageQDTO.getMessageType());
noticeMessageBO.setClerkId(messageQDTO.getClerkId());
noticeMessageBO.setStoreId(clerkRelationDTO.getStoreId());
noticeMessageBO.setTitle(messageTypeEnum.getName());
noticeMessageBO.setDescription(haobanNotice);
noticeMessageBO.setEnterpriseId(messageQDTO.getEnterpriseId());
noticeMessageBO.setRelationId(messageQDTO.getOptTargetId());
noticeMessageService.addOrCreateNoticeMessage(noticeMessageBO);
//发送企业微信
sendMessage(contentList, clerkRelationDTO.getWxEnterpriseId(), clerkRelationDTO.getWxUserId(), messageTypeEnum);
}
/**
* 获取详情
*
* @param messageQDTO
* @return
*/
private List<TemplateContentBO> getDescriotion(NoticeMessageQDTO messageQDTO) {
List<TemplateContentBO> templateMessage = noticeMessageTemplateService.getQywxTemplateMessage(messageQDTO.getEnterpriseId(), messageQDTO.getTemplateCode());
if (CollectionUtils.isEmpty(templateMessage)) {
//todo 需要告警
logger.info("不存在模板");
return null;
}
//需要替换的数据
Map<String, String> contentMap = messageQDTO.getContentMap();
//替换的内容
for (TemplateContentBO templateContentBO : templateMessage) {
contentMap.forEach((k, v) -> {
templateContentBO.getVal().replaceAll("#{" + k + "}", v);
});
}
return templateMessage;
}
/**
* 获取详情好办的通知
*
* @param messageQDTO
* @return
*/
private String getHaobanNotice(NoticeMessageQDTO messageQDTO) {
String haobanTemplateMessage = noticeMessageTemplateService.getHaobanTemplateMessage(messageQDTO.getEnterpriseId(), messageQDTO.getTemplateCode());
if (StringUtils.isBlank(haobanTemplateMessage)) {
//todo 需要告警
logger.info("不存在好办的通知模板模板");
return null;
}
//需要替换的数据
Map<String, String> contentMap = messageQDTO.getContentMap();
//替换的内容
contentMap.forEach((k, v) -> {
haobanTemplateMessage.replaceAll("#{" + k + "}", v);
});
return haobanTemplateMessage;
}
/**
* 发送消息
*
* @param contentList
* @param wxUserId
* @param messageTypeEnum
*/
private void sendMessage(List<TemplateContentBO> contentList, String wxEnterpriseId, String wxUserId, NoticeMessageTypeEnum messageTypeEnum) {
WxEnterpriseDTO wxEnterpriseDTO = wxEnterpriseService.selectById(wxEnterpriseId);
QywxXcxSendMessageDTO messageDTO = new QywxXcxSendMessageDTO();
//后续map加判断可加参数
Map<String, String> map = new HashMap<>();
List<ItemDTO> items = contentList.stream().map(bo -> {
ItemDTO item = new ItemDTO();
item.setKey(bo.getKey());
item.setValue(bo.getVal());
return item;
}).collect(Collectors.toList());
List<String> userList = new ArrayList<>();
userList.add(wxUserId);
messageDTO.setAppid(config.getAppid());
messageDTO.setUserIds(userList);
messageDTO.setPage(messageTypeEnum.getPageUrl());
messageDTO.setTitle(messageTypeEnum.getName());
messageDTO.setItems(items);
qywxSuiteApiService.sendMessage(wxEnterpriseDTO.getCorpid(), config.getWxSuiteid(), messageDTO);
}
}
<?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.gic.haoban.manage.service.dao.mapper.NoticeMessageTemplateMapper">
<resultMap id="BaseResultMap" type="com.gic.haoban.manage.service.entity.TabNoticeMessageTemplate">
<id column="notice_message_template_id" jdbcType="INTEGER" property="noticeMessageTemplateId"/>
<result column="enterprise_id" jdbcType="VARCHAR" property="enterpriseId"/>
<result column="template_code" jdbcType="VARCHAR" property="templateCode"/>
<result column="content" jdbcType="VARCHAR" property="content"/>
<result column="notice_content" jdbcType="VARCHAR" property="noticeContent"/>
<result column="delete_flag" jdbcType="INTEGER" property="deleteFlag"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
</resultMap>
<sql id="Base_Column_List">
notice_message_template_id, enterprise_id, template_code, content,notice_content, delete_flag, create_time,
update_time
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_notice_message_template
where notice_message_template_id = #{noticeMessageTemplateId,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from tab_haoban_notice_message_template
where notice_message_template_id = #{noticeMessageTemplateId,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.TabNoticeMessageTemplate">
insert into tab_haoban_notice_message_template (notice_message_template_id, enterprise_id,
template_code, content, delete_flag,
create_time, update_time)
values (#{noticeMessageTemplateId,jdbcType=INTEGER}, #{enterpriseId,jdbcType=VARCHAR},
#{templateCode,jdbcType=VARCHAR}, #{content,jdbcType=VARCHAR}, #{deleteFlag,jdbcType=INTEGER},
#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="com.gic.haoban.manage.service.entity.TabNoticeMessageTemplate">
insert into tab_haoban_notice_message_template
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="noticeMessageTemplateId != null">
notice_message_template_id,
</if>
<if test="enterpriseId != null">
enterprise_id,
</if>
<if test="templateCode != null">
template_code,
</if>
<if test="content != null">
content,
</if>
<if test="deleteFlag != null">
delete_flag,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="noticeMessageTemplateId != null">
#{noticeMessageTemplateId,jdbcType=INTEGER},
</if>
<if test="enterpriseId != null">
#{enterpriseId,jdbcType=VARCHAR},
</if>
<if test="templateCode != null">
#{templateCode,jdbcType=VARCHAR},
</if>
<if test="content != null">
#{content,jdbcType=VARCHAR},
</if>
<if test="deleteFlag != null">
#{deleteFlag,jdbcType=INTEGER},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective"
parameterType="com.gic.haoban.manage.service.entity.TabNoticeMessageTemplate">
update tab_haoban_notice_message_template
<set>
<if test="enterpriseId != null">
enterprise_id = #{enterpriseId,jdbcType=VARCHAR},
</if>
<if test="templateCode != null">
template_code = #{templateCode,jdbcType=VARCHAR},
</if>
<if test="content != null">
content = #{content,jdbcType=VARCHAR},
</if>
<if test="deleteFlag != null">
delete_flag = #{deleteFlag,jdbcType=INTEGER},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
</set>
where notice_message_template_id = #{noticeMessageTemplateId,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.gic.haoban.manage.service.entity.TabNoticeMessageTemplate">
update tab_haoban_notice_message_template
set enterprise_id = #{enterpriseId,jdbcType=VARCHAR},
template_code = #{templateCode,jdbcType=VARCHAR},
content = #{content,jdbcType=VARCHAR},
delete_flag = #{deleteFlag,jdbcType=INTEGER},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP}
where notice_message_template_id = #{noticeMessageTemplateId,jdbcType=INTEGER}
</update>
<select id="getByCode" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_notice_message_template
where template_code = #{templateCode} and enterprise_id=#{enterpriseId} and delete_flag=0
</select>
</mapper>
\ No newline at end of file
......@@ -3,6 +3,8 @@ import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
......@@ -15,10 +17,14 @@ import org.apache.commons.lang3.time.DateUtils;
public class test {
public static void main(String[] args) {
String content = "请完善完善202005门店指标月份指";
String pattern = ".*([0-1]{6}).*";
Pattern r = Pattern.compile(pattern);
Matcher matcher = r.matcher(content);
String s = matcher.find() ? matcher.group(1) : "";
System.out.println(s);
DateTime parse = DateUtil.parse("2021-10-11");
int i = DateUtil.weekOfYear(parse);
System.out.println(i);
// String key = "3.2.1";
// String[] split = key.split(".");
//
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment