Commit 03c4aa91bd842695468c05332057270cb0e00433
1 parent
40110feb70
Exists in
master
内容管理
Showing 17 changed files with 434 additions and 172 deletions
- parent/base.common/src/main/java/com/lyms/base/common/dao/content/ContentMessageTemplateMapper.xml
- parent/base.common/src/main/java/com/lyms/base/common/dao/content/ContentTagsMapper.java
- parent/base.common/src/main/java/com/lyms/base/common/dao/content/ContentTagsMapper.xml
- parent/base.common/src/main/java/com/lyms/base/common/entity/content/ContentMessageTemplate.java
- parent/base.common/src/main/java/com/lyms/base/common/entity/content/ContentTags.java
- parent/base.common/src/main/java/com/lyms/base/common/service/content/ContentMessageTemplateService.java
- parent/base.common/src/main/java/com/lyms/base/common/service/content/ContentTagsService.java
- parent/base.common/src/main/java/com/lyms/base/common/service/content/impl/ContentMessageTemplateServiceImpl.java
- parent/base.common/src/main/java/com/lyms/base/common/service/content/impl/ContentTagsServiceImpl.java
- parent/base.common/src/main/java/com/lyms/base/common/service/content/impl/ContentTemplateVersionServiceImpl.java
- parent/base.common/src/main/java/com/lyms/base/common/vo/content/ContentMessageTemplateDTO.java
- parent/base.common/src/main/java/com/lyms/base/common/vo/content/InContentMessageTemplateDTO.java
- parent/center.manager/src/main/java/com/lyms/cm/controller/content/ContentMessageTemplateController.java
- parent/center.manager/src/main/java/com/lyms/cm/controller/content/ContentTagsController.java
- parent/center.manager/src/main/java/com/lyms/cm/controller/content/ContentTemplateVersionController.java
- parent/center.manager/src/main/webapp/WEB-INF/views/content/template_edit.html
- parent/center.manager/src/main/webapp/WEB-INF/views/content/template_list.html
parent/base.common/src/main/java/com/lyms/base/common/dao/content/ContentMessageTemplateMapper.xml
View file @
03c4aa9
| ... | ... | @@ -27,7 +27,7 @@ |
| 27 | 27 | |
| 28 | 28 | |
| 29 | 29 | <select id="getContentMessageTemplate" resultType="com.lyms.base.common.vo.content.ContentMessageTemplateDTO" parameterType="com.lyms.base.common.vo.content.MsgTempSerachDTO"> |
| 30 | - select m.id as id,m.CONTENT as content,t.TAGS_IDS as contentTagIds from CONTENT_MESSAGE_TEMPLATE m left join CONTENT_TEMPLATE_MESSAGE_TAGS t on m.ID = t.MESSAGE_TEMPLATE | |
| 30 | + select m.KEY_CODE as keyCode,m.IFDEL as ifdel,m.ENABLE as enable, m.IS_RICH as isRich,m.RICH_TITLE as richTitle,m.RICH_TEXT as richText,m.id as id,m.CONTENT as content,group_concat(t.TAGS_IDS ) as contentTagIds from CONTENT_MESSAGE_TEMPLATE m left join CONTENT_TEMPLATE_MESSAGE_TAGS t on m.ID = t.MESSAGE_TEMPLATE | |
| 31 | 31 | <where> |
| 32 | 32 | <if test="verId!=null"> |
| 33 | 33 | and m.TEMPLATE_VERSION_ID =#{verId} |
| ... | ... | @@ -39,8 +39,7 @@ |
| 39 | 39 | and t.TAGS_IDS LIKE concat("%,",#{tagId},",%") |
| 40 | 40 | </if> |
| 41 | 41 | </where> |
| 42 | - | |
| 43 | - | |
| 42 | + GROUP BY m.ID | |
| 44 | 43 | </select> |
| 45 | 44 | |
| 46 | 45 | </mapper> |
parent/base.common/src/main/java/com/lyms/base/common/dao/content/ContentTagsMapper.java
View file @
03c4aa9
| ... | ... | @@ -19,9 +19,8 @@ |
| 19 | 19 | */ |
| 20 | 20 | @Repository |
| 21 | 21 | public interface ContentTagsMapper extends BaseMapper<ContentTags> { |
| 22 | - | |
| 23 | - public Integer deleteLogicById(Serializable id); | |
| 24 | - | |
| 22 | + public Integer deleteLogicById(Serializable id); | |
| 25 | 23 | public List<ContentTags> getTags(Page<ContentTags> page, @Param("name") String name); |
| 24 | + public List<ContentTags> getTags(); | |
| 26 | 25 | } |
parent/base.common/src/main/java/com/lyms/base/common/dao/content/ContentTagsMapper.xml
View file @
03c4aa9
| ... | ... | @@ -25,11 +25,12 @@ |
| 25 | 25 | </sql> |
| 26 | 26 | |
| 27 | 27 | <select id="getTags" resultMap="BaseResultMap" parameterType="java.lang.String"> |
| 28 | - select ID,TAG_NAME,TAG_DESC,`LEVEL`,PERENT_ID from CONTENT_TAGS | |
| 28 | + select ID,TAG_NAME,TAG_DESC,`LEVEL`,PERENT_ID,ENABLE from CONTENT_TAGS | |
| 29 | 29 | <where> |
| 30 | 30 | <if test="name !=null"> |
| 31 | - and `TAG_NAME` LIKE concat('%',#{name},"%"); | |
| 31 | + AND `TAG_NAME` LIKE concat('%',#{name},"%") | |
| 32 | 32 | </if> |
| 33 | + AND IFDEL = 0 | |
| 33 | 34 | </where> |
| 34 | 35 | </select> |
| 35 | 36 | </mapper> |
parent/base.common/src/main/java/com/lyms/base/common/entity/content/ContentMessageTemplate.java
View file @
03c4aa9
| ... | ... | @@ -38,7 +38,8 @@ |
| 38 | 38 | /** |
| 39 | 39 | * 是否图文 |
| 40 | 40 | */ |
| 41 | - private String isRich; | |
| 41 | + @TableField(value="IS_RICH") | |
| 42 | + private int isRich; | |
| 42 | 43 | /** |
| 43 | 44 | * 富文本标题 |
| 44 | 45 | */ |
| 45 | 46 | |
| ... | ... | @@ -143,11 +144,11 @@ |
| 143 | 144 | this.keyCode = keyCode; |
| 144 | 145 | } |
| 145 | 146 | |
| 146 | - public String getIsRich() { | |
| 147 | + public int getIsRich() { | |
| 147 | 148 | return isRich; |
| 148 | 149 | } |
| 149 | 150 | |
| 150 | - public void setIsRich(String isRich) { | |
| 151 | + public void setIsRich(int isRich) { | |
| 151 | 152 | this.isRich = isRich; |
| 152 | 153 | } |
| 153 | 154 |
parent/base.common/src/main/java/com/lyms/base/common/entity/content/ContentTags.java
View file @
03c4aa9
| ... | ... | @@ -86,6 +86,24 @@ |
| 86 | 86 | @TableField(value="ENABLE") |
| 87 | 87 | private Integer enable; |
| 88 | 88 | |
| 89 | + @Override | |
| 90 | + public String toString() { | |
| 91 | + return "ContentTags{" + | |
| 92 | + "id='" + id + '\'' + | |
| 93 | + ", tagName='" + tagName + '\'' + | |
| 94 | + ", tagDesc='" + tagDesc + '\'' + | |
| 95 | + ", level=" + level + | |
| 96 | + ", perentId='" + perentId + '\'' + | |
| 97 | + ", createTime=" + createTime + | |
| 98 | + ", createId='" + createId + '\'' + | |
| 99 | + ", createName='" + createName + '\'' + | |
| 100 | + ", modifyId='" + modifyId + '\'' + | |
| 101 | + ", modifyName='" + modifyName + '\'' + | |
| 102 | + ", modifyTime=" + modifyTime + | |
| 103 | + ", ifdel=" + ifdel + | |
| 104 | + ", enable=" + enable + | |
| 105 | + '}'; | |
| 106 | + } | |
| 89 | 107 | |
| 90 | 108 | public String getId() { |
| 91 | 109 | return id; |
parent/base.common/src/main/java/com/lyms/base/common/service/content/ContentMessageTemplateService.java
View file @
03c4aa9
| ... | ... | @@ -27,7 +27,7 @@ |
| 27 | 27 | */ |
| 28 | 28 | public Integer deleteLogicById(Serializable id); |
| 29 | 29 | |
| 30 | - public Page<ContentMessageTemplateDTO> getContentMessageTemplate(Page<ContentMessageTemplateDTO> page, MsgTempSerachDTO msgTemp); | |
| 30 | + public List<ContentMessageTemplateDTO> getContentMessageTemplate(Page<ContentMessageTemplateDTO> page, MsgTempSerachDTO msgTemp); | |
| 31 | 31 | |
| 32 | 32 | public List<ContentMessageTemplateDTO> getContentMessageTemplate(MsgTempSerachDTO msgTemp); |
| 33 | 33 |
parent/base.common/src/main/java/com/lyms/base/common/service/content/ContentTagsService.java
View file @
03c4aa9
| ... | ... | @@ -5,6 +5,7 @@ |
| 5 | 5 | import com.lyms.web.service.BaseService; |
| 6 | 6 | |
| 7 | 7 | import java.io.Serializable; |
| 8 | +import java.util.List; | |
| 8 | 9 | |
| 9 | 10 | /** |
| 10 | 11 | * <p> |
| ... | ... | @@ -24,5 +25,7 @@ |
| 24 | 25 | public Integer deleteLogicById(Serializable id); |
| 25 | 26 | |
| 26 | 27 | public Page<ContentTags> getTags(Page<ContentTags> page, String name); |
| 28 | + | |
| 29 | + public List<ContentTags> getTags(); | |
| 27 | 30 | } |
parent/base.common/src/main/java/com/lyms/base/common/service/content/impl/ContentMessageTemplateServiceImpl.java
View file @
03c4aa9
| ... | ... | @@ -28,10 +28,9 @@ |
| 28 | 28 | } |
| 29 | 29 | |
| 30 | 30 | @Override |
| 31 | - public Page<ContentMessageTemplateDTO> getContentMessageTemplate(Page<ContentMessageTemplateDTO> page, MsgTempSerachDTO msgTemp) { | |
| 31 | + public List<ContentMessageTemplateDTO> getContentMessageTemplate(Page<ContentMessageTemplateDTO> page, MsgTempSerachDTO msgTemp) { | |
| 32 | 32 | List<ContentMessageTemplateDTO> lists = baseMapper.getContentMessageTemplate(page, msgTemp); |
| 33 | - page.setRecords(lists); | |
| 34 | - return page; | |
| 33 | + return lists; | |
| 35 | 34 | } |
| 36 | 35 | |
| 37 | 36 | @Override |
parent/base.common/src/main/java/com/lyms/base/common/service/content/impl/ContentTagsServiceImpl.java
View file @
03c4aa9
| ... | ... | @@ -5,9 +5,12 @@ |
| 5 | 5 | import com.lyms.base.common.dao.content.ContentTagsMapper; |
| 6 | 6 | import com.lyms.base.common.entity.content.ContentTags; |
| 7 | 7 | import com.lyms.base.common.service.content.ContentTagsService; |
| 8 | +import com.lyms.util.StrUtils; | |
| 8 | 9 | import org.springframework.stereotype.Service; |
| 9 | 10 | |
| 11 | +import javax.annotation.PostConstruct; | |
| 10 | 12 | import java.io.Serializable; |
| 13 | +import java.util.HashMap; | |
| 11 | 14 | import java.util.List; |
| 12 | 15 | |
| 13 | 16 | /** |
| 14 | 17 | |
| ... | ... | @@ -25,11 +28,45 @@ |
| 25 | 28 | return baseMapper.deleteLogicById(id); |
| 26 | 29 | } |
| 27 | 30 | |
| 31 | + public static HashMap<String,String> tagsMap = new HashMap<>(); | |
| 32 | + | |
| 33 | + @PostConstruct | |
| 34 | + public void initData(){ | |
| 35 | + List<ContentTags> tagsList = baseMapper.getTags(); | |
| 36 | + for(ContentTags conTag:tagsList){ | |
| 37 | + tagsMap.put(conTag.getId(),conTag.getTagName()); | |
| 38 | + } | |
| 39 | + } | |
| 40 | + | |
| 41 | + public static String getValue(String key){ | |
| 42 | + if(StrUtils.isEmpty(key)){ | |
| 43 | + return ""; | |
| 44 | + }else{ | |
| 45 | + return tagsMap.get(key); | |
| 46 | + } | |
| 47 | + } | |
| 48 | + | |
| 49 | + public static void setValue(String key,String value){ | |
| 50 | + tagsMap.put(key,value); | |
| 51 | + } | |
| 52 | + | |
| 53 | + public static void updateValues(List<ContentTags> tagsList){ | |
| 54 | + for(ContentTags conTag:tagsList){ | |
| 55 | + tagsMap.put(conTag.getId(),conTag.getTagName()); | |
| 56 | + } | |
| 57 | + } | |
| 58 | + | |
| 28 | 59 | @Override |
| 29 | 60 | public Page<ContentTags> getTags(Page<ContentTags> page, String name) { |
| 30 | 61 | List<ContentTags> lists = baseMapper.getTags(page, name); |
| 31 | 62 | page.setRecords(lists); |
| 32 | 63 | return page; |
| 64 | + } | |
| 65 | + | |
| 66 | + @Override | |
| 67 | + public List<ContentTags> getTags() { | |
| 68 | + List<ContentTags> lists = baseMapper.getTags(); | |
| 69 | + return lists; | |
| 33 | 70 | } |
| 34 | 71 | } |
parent/base.common/src/main/java/com/lyms/base/common/service/content/impl/ContentTemplateVersionServiceImpl.java
View file @
03c4aa9
| 1 | 1 | package com.lyms.base.common.service.content.impl; |
| 2 | 2 | |
| 3 | -import java.io.Serializable; | |
| 4 | -import java.util.Date; | |
| 5 | - | |
| 6 | -import org.springframework.stereotype.Service; | |
| 7 | -import org.springframework.transaction.annotation.Transactional; | |
| 8 | - | |
| 9 | 3 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| 10 | 4 | import com.lyms.base.common.dao.content.ContentTemplateVersionMapper; |
| 11 | 5 | import com.lyms.base.common.entity.content.ContentTemplateVersion; |
| 12 | 6 | import com.lyms.base.common.service.content.ContentTemplateVersionService; |
| 13 | 7 | import com.lyms.exception.SystemException; |
| 14 | -import com.lyms.util.StrUtils; | |
| 8 | +import org.springframework.stereotype.Service; | |
| 9 | +import org.springframework.transaction.annotation.Transactional; | |
| 15 | 10 | |
| 11 | +import java.io.Serializable; | |
| 12 | +import java.util.Date; | |
| 13 | + | |
| 16 | 14 | /** |
| 17 | 15 | * <p> |
| 18 | 16 | * 消息模板版本 服务实现类 |
| ... | ... | @@ -33,7 +31,6 @@ |
| 33 | 31 | public boolean create(ContentTemplateVersion templateVersion) throws SystemException { |
| 34 | 32 | if (templateVersion == null) |
| 35 | 33 | return false; |
| 36 | - templateVersion.setId(StrUtils.uuid()); | |
| 37 | 34 | templateVersion.setCreateTime(new Date()); |
| 38 | 35 | Integer tag = baseMapper.insert(templateVersion); |
| 39 | 36 |
parent/base.common/src/main/java/com/lyms/base/common/vo/content/ContentMessageTemplateDTO.java
View file @
03c4aa9
| 1 | 1 | package com.lyms.base.common.vo.content; |
| 2 | 2 | |
| 3 | +import com.baomidou.mybatisplus.annotations.TableField; | |
| 4 | + | |
| 3 | 5 | public class ContentMessageTemplateDTO { |
| 4 | 6 | /** |
| 5 | 7 | * 主键ID |
| 6 | 8 | |
| 7 | 9 | |
| ... | ... | @@ -14,10 +16,18 @@ |
| 14 | 16 | */ |
| 15 | 17 | private String content; |
| 16 | 18 | /** |
| 17 | - * 图文信息ID | |
| 19 | + * 富文本标题 | |
| 18 | 20 | */ |
| 19 | - private String articlesId; | |
| 21 | + private String richTitle; | |
| 20 | 22 | /** |
| 23 | + * 富文本内容 | |
| 24 | + */ | |
| 25 | + private String richText; | |
| 26 | + /** | |
| 27 | + * 是否图文 | |
| 28 | + */ | |
| 29 | + private int isRich; | |
| 30 | + /** | |
| 21 | 31 | * 标志键 |
| 22 | 32 | */ |
| 23 | 33 | private String keyCode; |
| 24 | 34 | |
| ... | ... | @@ -25,7 +35,57 @@ |
| 25 | 35 | * 标签集合 |
| 26 | 36 | */ |
| 27 | 37 | private String contentTagIds; |
| 38 | + /** | |
| 39 | + * 是否删除 | |
| 40 | + */ | |
| 41 | + @TableField(value="IFDEL") | |
| 42 | + private Integer ifdel; | |
| 43 | + /** | |
| 44 | + * 是否启用 | |
| 45 | + */ | |
| 46 | + @TableField(value="ENABLE") | |
| 47 | + private Integer enable; | |
| 28 | 48 | |
| 49 | + public Integer getIfdel() { | |
| 50 | + return ifdel; | |
| 51 | + } | |
| 52 | + | |
| 53 | + public void setIfdel(Integer ifdel) { | |
| 54 | + this.ifdel = ifdel; | |
| 55 | + } | |
| 56 | + | |
| 57 | + public Integer getEnable() { | |
| 58 | + return enable; | |
| 59 | + } | |
| 60 | + | |
| 61 | + public void setEnable(Integer enable) { | |
| 62 | + this.enable = enable; | |
| 63 | + } | |
| 64 | + | |
| 65 | + public String getRichTitle() { | |
| 66 | + return richTitle; | |
| 67 | + } | |
| 68 | + | |
| 69 | + public void setRichTitle(String richTitle) { | |
| 70 | + this.richTitle = richTitle; | |
| 71 | + } | |
| 72 | + | |
| 73 | + public String getRichText() { | |
| 74 | + return richText; | |
| 75 | + } | |
| 76 | + | |
| 77 | + public void setRichText(String richText) { | |
| 78 | + this.richText = richText; | |
| 79 | + } | |
| 80 | + | |
| 81 | + public int getIsRich() { | |
| 82 | + return isRich; | |
| 83 | + } | |
| 84 | + | |
| 85 | + public void setIsRich(int isRich) { | |
| 86 | + this.isRich = isRich; | |
| 87 | + } | |
| 88 | + | |
| 29 | 89 | public String getId() { |
| 30 | 90 | return id; |
| 31 | 91 | } |
| ... | ... | @@ -48,14 +108,6 @@ |
| 48 | 108 | |
| 49 | 109 | public void setContent(String content) { |
| 50 | 110 | this.content = content; |
| 51 | - } | |
| 52 | - | |
| 53 | - public String getArticlesId() { | |
| 54 | - return articlesId; | |
| 55 | - } | |
| 56 | - | |
| 57 | - public void setArticlesId(String articlesId) { | |
| 58 | - this.articlesId = articlesId; | |
| 59 | 111 | } |
| 60 | 112 | |
| 61 | 113 | public String getKeyCode() { |
parent/base.common/src/main/java/com/lyms/base/common/vo/content/InContentMessageTemplateDTO.java
View file @
03c4aa9
| 1 | 1 | package com.lyms.base.common.vo.content; |
| 2 | 2 | |
| 3 | +import org.springframework.web.util.HtmlUtils; | |
| 4 | + | |
| 3 | 5 | import java.util.List; |
| 4 | 6 | |
| 5 | 7 | public class InContentMessageTemplateDTO { |
| ... | ... | @@ -24,6 +26,10 @@ |
| 24 | 26 | */ |
| 25 | 27 | private String richText; |
| 26 | 28 | /** |
| 29 | + * 是否图文 | |
| 30 | + */ | |
| 31 | + private int isRich; | |
| 32 | + /** | |
| 27 | 33 | * 标志键 |
| 28 | 34 | */ |
| 29 | 35 | private String keyCode; |
| ... | ... | @@ -40,6 +46,14 @@ |
| 40 | 46 | this.id = id; |
| 41 | 47 | } |
| 42 | 48 | |
| 49 | + public int getIsRich() { | |
| 50 | + return isRich; | |
| 51 | + } | |
| 52 | + | |
| 53 | + public void setIsRich(int isRich) { | |
| 54 | + this.isRich = isRich; | |
| 55 | + } | |
| 56 | + | |
| 43 | 57 | public String getTemplateVersionId() { |
| 44 | 58 | return templateVersionId; |
| 45 | 59 | } |
| ... | ... | @@ -65,7 +79,7 @@ |
| 65 | 79 | } |
| 66 | 80 | |
| 67 | 81 | public String getRichText() { |
| 68 | - return richText; | |
| 82 | + return HtmlUtils.htmlUnescape(richText); | |
| 69 | 83 | } |
| 70 | 84 | |
| 71 | 85 | public void setRichText(String richText) { |
parent/center.manager/src/main/java/com/lyms/cm/controller/content/ContentMessageTemplateController.java
View file @
03c4aa9
| ... | ... | @@ -2,8 +2,10 @@ |
| 2 | 2 | |
| 3 | 3 | import com.baomidou.mybatisplus.plugins.Page; |
| 4 | 4 | import com.lyms.base.common.entity.content.ContentMessageTemplate; |
| 5 | +import com.lyms.base.common.entity.content.ContentTemplateMessageTags; | |
| 5 | 6 | import com.lyms.base.common.service.content.ContentMessageTemplateService; |
| 6 | 7 | import com.lyms.base.common.service.content.ContentTemplateMessageTagsService; |
| 8 | +import com.lyms.base.common.service.content.impl.ContentTagsServiceImpl; | |
| 7 | 9 | import com.lyms.base.common.vo.content.ContentMessageTemplateDTO; |
| 8 | 10 | import com.lyms.base.common.vo.content.InContentMessageTemplateDTO; |
| 9 | 11 | import com.lyms.base.common.vo.content.MsgTempSerachDTO; |
| ... | ... | @@ -17,6 +19,7 @@ |
| 17 | 19 | import org.springframework.web.bind.annotation.*; |
| 18 | 20 | |
| 19 | 21 | import java.util.Date; |
| 22 | +import java.util.List; | |
| 20 | 23 | import java.util.Map; |
| 21 | 24 | |
| 22 | 25 | /** |
| 23 | 26 | |
| ... | ... | @@ -52,9 +55,15 @@ |
| 52 | 55 | * @return |
| 53 | 56 | */ |
| 54 | 57 | @RequestMapping(value = { "/{verId}/toEdit" }, method = RequestMethod.GET) |
| 55 | - public String toEdit(@PathVariable String verId, Model model) { | |
| 58 | + public String toEdit(@PathVariable String verId,String id,String vName, Model model) { | |
| 56 | 59 | model.addAttribute("verId", verId); |
| 57 | - return "/content/template_edit"; | |
| 60 | + model.addAttribute("vName", vName); | |
| 61 | + model.addAttribute("id", id); | |
| 62 | + if(StrUtils.isNotEmpty(id)){//查询 | |
| 63 | + ContentMessageTemplate tempInfo = messageTemplateService.selectById(id); | |
| 64 | + model.addAttribute("tempInfo",tempInfo); | |
| 65 | + } | |
| 66 | + return "/content/template_edit"; | |
| 58 | 67 | } |
| 59 | 68 | |
| 60 | 69 | /** |
| ... | ... | @@ -66,7 +75,21 @@ |
| 66 | 75 | @RequestMapping(value = "/list", method = { RequestMethod.GET, RequestMethod.POST }) |
| 67 | 76 | public Map<String, Object> list(MsgTempSerachDTO msgTemp) { |
| 68 | 77 | Page<ContentMessageTemplateDTO> page = getPage(); |
| 69 | - page = messageTemplateService.getContentMessageTemplate(page,msgTemp); | |
| 78 | + List<ContentMessageTemplateDTO> cmtdList = messageTemplateService.getContentMessageTemplate(page,msgTemp); | |
| 79 | + for(ContentMessageTemplateDTO ct : cmtdList){ | |
| 80 | + StringBuffer tagsBf = new StringBuffer(); | |
| 81 | + String[] contentTags = ct.getContentTagIds().split(","); | |
| 82 | + for(String s:contentTags){ | |
| 83 | + if(StrUtils.isEmpty(s)){ | |
| 84 | + continue; | |
| 85 | + } | |
| 86 | + tagsBf.append(ContentTagsServiceImpl.getValue(s)+","); | |
| 87 | + } | |
| 88 | + ct.setContentTagIds(tagsBf.substring(0,tagsBf.length()-1).toString()); | |
| 89 | + System.out.println("标签名:--------------->"+ct.getContentTagIds()); | |
| 90 | + } | |
| 91 | + | |
| 92 | + page.setRecords(cmtdList); | |
| 70 | 93 | return toGridData(page); |
| 71 | 94 | } |
| 72 | 95 | |
| 73 | 96 | |
| 74 | 97 | |
| 75 | 98 | |
| ... | ... | @@ -82,18 +105,25 @@ |
| 82 | 105 | public AjaxResult create(@ModelAttribute InContentMessageTemplateDTO contentMessage, AjaxResult ajaxResult) { |
| 83 | 106 | ContentMessageTemplate messTemp = new ContentMessageTemplate(); |
| 84 | 107 | messTemp.setId(StrUtils.uuid()); |
| 108 | + messTemp.setEnable(0); | |
| 109 | + messTemp.setIfdel(0); | |
| 85 | 110 | messTemp.setCreateTime(new Date()); |
| 86 | - messTemp.setEnable(0); | |
| 87 | - messTemp.setIfdel(0); | |
| 88 | 111 | messTemp.setKeyCode(messTemp.getId()); |
| 89 | 112 | messTemp.setContent(contentMessage.getContent()); |
| 90 | 113 | messTemp.setRichTitle(contentMessage.getRichTitle()); |
| 91 | 114 | messTemp.setRichText(contentMessage.getRichText()); |
| 92 | 115 | messTemp.setTemplateVersionId(contentMessage.getTemplateVersionId()); |
| 116 | + messTemp.setIsRich(contentMessage.getIsRich()); | |
| 117 | + for(String tags : contentMessage.getContentTagIds()){ | |
| 118 | + ContentTemplateMessageTags ctmt = new ContentTemplateMessageTags(); | |
| 119 | + ctmt.setId(StrUtils.uuid()); | |
| 120 | + ctmt.setMessageTemplate(messTemp.getId()); | |
| 121 | + ctmt.setTagsIds(tags); | |
| 122 | + messageTagsService.insert(ctmt); | |
| 123 | + } | |
| 93 | 124 | boolean tag = messageTemplateService.insert(messTemp); |
| 94 | 125 | return handleAjaxResult(ajaxResult, tag, OperationName.CREATE); |
| 95 | 126 | } |
| 96 | 127 | |
| 97 | 128 | } |
| 98 | - |
parent/center.manager/src/main/java/com/lyms/cm/controller/content/ContentTagsController.java
View file @
03c4aa9
| ... | ... | @@ -3,6 +3,7 @@ |
| 3 | 3 | import com.baomidou.mybatisplus.plugins.Page; |
| 4 | 4 | import com.lyms.base.common.entity.content.ContentTags; |
| 5 | 5 | import com.lyms.base.common.service.content.ContentTagsService; |
| 6 | +import com.lyms.base.common.service.content.impl.ContentTagsServiceImpl; | |
| 6 | 7 | import com.lyms.base.common.vo.content.ContentTagsDTO; |
| 7 | 8 | import com.lyms.constants.OperationName; |
| 8 | 9 | import com.lyms.util.StrUtils; |
| ... | ... | @@ -96,6 +97,9 @@ |
| 96 | 97 | cts.setTagDesc(ctd.getTagDesc()); |
| 97 | 98 | cts.setPerentId(ctd.getPerentId()); |
| 98 | 99 | boolean tag = contentTagsService.insert(cts); |
| 100 | + if(tag){ | |
| 101 | + ContentTagsServiceImpl.setValue(cts.getId(),cts.getTagName()); | |
| 102 | + } | |
| 99 | 103 | return handleAjaxResult(ajaxResult, tag, OperationName.CREATE); |
| 100 | 104 | } |
| 101 | 105 |
parent/center.manager/src/main/java/com/lyms/cm/controller/content/ContentTemplateVersionController.java
View file @
03c4aa9
| ... | ... | @@ -2,8 +2,11 @@ |
| 2 | 2 | |
| 3 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| 4 | 4 | import com.baomidou.mybatisplus.plugins.Page; |
| 5 | +import com.lyms.base.common.entity.content.ContentMessageTemplate; | |
| 6 | +import com.lyms.base.common.entity.content.ContentTemplateMessageTags; | |
| 5 | 7 | import com.lyms.base.common.entity.content.ContentTemplateVersion; |
| 6 | 8 | import com.lyms.base.common.service.content.ContentMessageTemplateService; |
| 9 | +import com.lyms.base.common.service.content.ContentTemplateMessageTagsService; | |
| 7 | 10 | import com.lyms.base.common.service.content.ContentTemplateVersionService; |
| 8 | 11 | import com.lyms.base.common.vo.content.ContentMessageTemplateDTO; |
| 9 | 12 | import com.lyms.base.common.vo.content.MsgTempSerachDTO; |
| ... | ... | @@ -18,6 +21,7 @@ |
| 18 | 21 | import org.springframework.web.bind.annotation.RequestMethod; |
| 19 | 22 | import org.springframework.web.bind.annotation.ResponseBody; |
| 20 | 23 | |
| 24 | +import java.util.Date; | |
| 21 | 25 | import java.util.List; |
| 22 | 26 | import java.util.Map; |
| 23 | 27 | |
| ... | ... | @@ -37,6 +41,9 @@ |
| 37 | 41 | //模板信息 |
| 38 | 42 | @Autowired |
| 39 | 43 | private ContentMessageTemplateService messageTemplateService; |
| 44 | + //模板信息标签 | |
| 45 | + @Autowired | |
| 46 | + private ContentTemplateMessageTagsService messageTagsService; | |
| 40 | 47 | /** |
| 41 | 48 | * 列表 |
| 42 | 49 | * @param model |
| 43 | 50 | |
| ... | ... | @@ -65,12 +72,42 @@ |
| 65 | 72 | @RequestMapping(value = "/create", method = { RequestMethod.POST }) |
| 66 | 73 | public AjaxResult create(ContentTemplateVersion templateVersion,String perId, AjaxResult ajaxResult) { |
| 67 | 74 | boolean tag = false; |
| 75 | + templateVersion.setId(StrUtils.uuid()); | |
| 76 | + | |
| 68 | 77 | if(StrUtils.isNotEmpty(perId)){//复制版本 |
| 69 | 78 | MsgTempSerachDTO msgTemp = new MsgTempSerachDTO(); |
| 70 | 79 | msgTemp.setVerId(perId); |
| 71 | 80 | List<ContentMessageTemplateDTO> messageList = messageTemplateService.getContentMessageTemplate(msgTemp); |
| 72 | 81 | for(ContentMessageTemplateDTO ctd : messageList){ |
| 73 | - System.out.println("tagsId:"+ctd.getContentTagIds()); | |
| 82 | + String[] tagIds = ctd.getContentTagIds().split(",,,"); | |
| 83 | + ContentMessageTemplate messTemp = new ContentMessageTemplate(); | |
| 84 | + messTemp.setId(StrUtils.uuid()); | |
| 85 | + messTemp.setCreateTime(new Date()); | |
| 86 | + messTemp.setKeyCode(ctd.getKeyCode()); | |
| 87 | + messTemp.setContent(ctd.getContent()); | |
| 88 | + messTemp.setRichTitle(ctd.getRichTitle()); | |
| 89 | + messTemp.setRichText(ctd.getRichText()); | |
| 90 | + messTemp.setIsRich(ctd.getIsRich()); | |
| 91 | + messTemp.setTemplateVersionId(templateVersion.getId()); | |
| 92 | + messTemp.setEnable(ctd.getEnable()); | |
| 93 | + messTemp.setIfdel(ctd.getIfdel()); | |
| 94 | + for(int i =0;i<tagIds.length;i++) { | |
| 95 | + String tagId = tagIds[i]; | |
| 96 | + System.out.println("tagsId前---------------->:" + tagId); | |
| 97 | + if(tagId.indexOf(",")!=0){ | |
| 98 | + tagId = ","+tagId; | |
| 99 | + } | |
| 100 | + if(tagId.lastIndexOf(",")!=tagId.length()-1){ | |
| 101 | + tagId = tagId+","; | |
| 102 | + } | |
| 103 | + ContentTemplateMessageTags ctmt = new ContentTemplateMessageTags(); | |
| 104 | + ctmt.setId(StrUtils.uuid()); | |
| 105 | + ctmt.setMessageTemplate(messTemp.getId()); | |
| 106 | + ctmt.setTagsIds(tagId); | |
| 107 | + messageTagsService.insert(ctmt); | |
| 108 | + System.out.println("tagsId后---------------->:" + tagId); | |
| 109 | + } | |
| 110 | + messageTemplateService.insert(messTemp); | |
| 74 | 111 | } |
| 75 | 112 | } |
| 76 | 113 | tag = templateVersionService.create(templateVersion); |
parent/center.manager/src/main/webapp/WEB-INF/views/content/template_edit.html
View file @
03c4aa9
| ... | ... | @@ -7,42 +7,50 @@ |
| 7 | 7 | <div class="ibox-content"> |
| 8 | 8 | <div class="col-sm-12"> |
| 9 | 9 | <form id="validForm" class="form-horizontal m-t" novalidate="novalidate"> |
| 10 | + <div class="form-group"> | |
| 11 | + <label class="col-sm-2 control-label">版本库名称:</label> | |
| 12 | + <div class="col-sm-9"> | |
| 13 | + <input type="text" name="vName" value="$!vName" disabled class="form-control"> | |
| 14 | + <input type="hidden" name="id" value="$!id" disabled class="form-control"> | |
| 15 | + </div> | |
| 16 | + </div> | |
| 17 | + | |
| 10 | 18 | <div class="form-group"> |
| 11 | 19 | <label class="col-sm-2 control-label">*短信内容:</label> |
| 12 | - <div class="col-sm-5"> | |
| 13 | - <textarea class="form-control" rows="4" cols="12" name="content" required placeholder="请输入短信内容"></textarea> | |
| 20 | + <div class="col-sm-9"> | |
| 21 | + <textarea class="form-control" rows="4" cols="12" name="content" id="content" required placeholder="请输入短信内容">$!tempInfo.content</textarea> | |
| 14 | 22 | </div> |
| 15 | 23 | </div> |
| 16 | 24 | <div class="form-group"> |
| 17 | 25 | <label class="col-sm-2 control-label">标签:</label><button type="button" onclick="addSeleTags()" class="glyphicon glyphicon-plus btn glyphicon btn-primary btn-sm"></button> |
| 18 | - <div class="col-sm-5" id="seleTagArrs"> | |
| 26 | + <div class="col-sm-9" id="seleTagArrs"> | |
| 19 | 27 | </div> |
| 20 | 28 | </div> |
| 21 | 29 | |
| 22 | 30 | <div class="form-group"> |
| 23 | 31 | <label class="col-sm-2 control-label">图文指导:</label> |
| 24 | - <div class="col-sm-5"> | |
| 32 | + <div class="col-sm-9"> | |
| 25 | 33 | <label class="checkbox-inline i-checks"> |
| 26 | 34 | <div class="icheckbox_square-green" style="position: relative;"> |
| 27 | - <input type="checkbox" class="i-checks" id="multChe" style="position: absolute; opacity: 0;" > | |
| 35 | + <input type="checkbox" #if($!tempInfo.isRich==1) checked="checked" #end class="i-checks" id="multChe" style="position: absolute; opacity: 0;" > | |
| 28 | 36 | </div> |
| 29 | 37 | </label> |
| 30 | 38 | </div> |
| 31 | 39 | <div class="form-group"> |
| 32 | 40 | <label class="col-sm-2 control-label"></label> |
| 33 | - <div class="col-sm-5"> | |
| 41 | + <div class="col-sm-10"> | |
| 34 | 42 | <input type="hidden" class="i-checks" value="$!verId" name="templateVersionId"> |
| 35 | 43 | </div> |
| 36 | 44 | </div> |
| 37 | 45 | <div class="form-group hidden" id="imageTitle"> |
| 38 | 46 | <label class="col-sm-2 control-label">标题:</label> |
| 39 | - <div class="col-sm-5"> | |
| 40 | - <input type="text" name="richTitle" class="form-control" placeholder="请输入图文指导标题"> | |
| 47 | + <div class="col-sm-9"> | |
| 48 | + <input type="text" name="richTitle" id="richTitle" value="$!tempInfo.richTitle" class="form-control" placeholder="请输入图文指导标题"> | |
| 41 | 49 | </div> |
| 42 | 50 | </div> |
| 43 | 51 | <div class="form-group hidden" id="imageContext"> |
| 44 | 52 | <label class="col-sm-2 control-label">正文:</label> |
| 45 | - <div class="col-sm-5"> | |
| 53 | + <div class="col-sm-9"> | |
| 46 | 54 | <script id="editor" name="richText" type="text/plain"></script> |
| 47 | 55 | </div> |
| 48 | 56 | </div> |
| ... | ... | @@ -53,6 +61,7 @@ |
| 53 | 61 | <button type="button" class="btn btn-white" onclick="parent.closeAll();"><i class="fa fa-close"></i> 取消</button> |
| 54 | 62 | </div> |
| 55 | 63 | </div> |
| 64 | + </div> | |
| 56 | 65 | </form> |
| 57 | 66 | </div> |
| 58 | 67 | </div> |
| ... | ... | @@ -96,8 +105,6 @@ |
| 96 | 105 | data.data.forEach(function(d, i) { |
| 97 | 106 | optionTagHtml += '<option value="'+d.id+'">' + d.tagName + '</option>'; |
| 98 | 107 | }); |
| 99 | - | |
| 100 | - | |
| 101 | 108 | //默认一个选择标签 |
| 102 | 109 | addSeleTags(); |
| 103 | 110 | } |
| 104 | 111 | |
| 105 | 112 | |
| 106 | 113 | |
| 107 | 114 | |
| 108 | 115 | |
| 109 | 116 | |
| 110 | 117 | |
| ... | ... | @@ -113,33 +120,49 @@ |
| 113 | 120 | var ue = UE.getEditor('editor',{initialFrameHeight:200,initialFrameWidth:"100%" }); |
| 114 | 121 | }); |
| 115 | 122 | |
| 116 | - $(function(){ | |
| 117 | - | |
| 118 | - setTimeout(function(){ | |
| 123 | + | |
| 124 | + $(function(){ | |
| 125 | + setTimeout(function(){ | |
| 119 | 126 | initTagsData(); |
| 120 | 127 | },500); |
| 121 | - | |
| 128 | + | |
| 129 | + if("$!id"!=""&&"$!tempInfo.isRich"==1){ | |
| 130 | + $("#imageTitle").toggleClass("hidden"); | |
| 131 | + $("#imageContext").toggleClass("hidden"); | |
| 132 | + $("#imageTitle").toggleClass("show"); | |
| 133 | + $("#imageContext").toggleClass("show"); | |
| 134 | + var ue = UE.getEditor('editor',{initialFrameHeight:200,initialFrameWidth:"100%" }); | |
| 135 | + ue.ready(function(){ | |
| 136 | + //设置编辑器的内容 | |
| 137 | + ue.setContent('$!tempInfo.richText'); | |
| 138 | + }); | |
| 139 | + | |
| 140 | + } | |
| 122 | 141 | }); |
| 123 | - | |
| 142 | + | |
| 124 | 143 | function save(){ |
| 125 | - var content = UE.getEditor('editor').getContent(); | |
| 126 | 144 | if($('#validForm').valid()){ |
| 127 | - var data = $('#validForm').serialize(); | |
| 128 | - for(var i=1;i<seleTagNum;i++){ | |
| 129 | - data+="&contentTagIds="+$("#select"+i).val(); | |
| 130 | - } | |
| 131 | - if($("#multChe:checked").val() == "on"){ | |
| 132 | - data+="&isRich=1"; | |
| 133 | - }else{ | |
| 134 | - data+="&isRich=0"; | |
| 135 | - } | |
| 136 | - ajaxPost(APP.PATH + "/contentMessageTemplate/create",data); | |
| 137 | - parent.reloadGrid('dataTable'); | |
| 138 | 145 | |
| 139 | -// $('#validForm')[0].reset(); | |
| 140 | -// UE.getEditor('editor').setContent(""); | |
| 146 | + var data = $('#validForm').serialize(); | |
| 147 | + if($("#multChe:checked").val() == "on"){//图文指导 | |
| 148 | + data+="&isRich=1"; | |
| 149 | + }else{ | |
| 150 | + data+="&isRich=0"; | |
| 151 | + } | |
| 141 | 152 | |
| 153 | + for(var i=1;i<seleTagNum;i++){ | |
| 154 | + data+="&contentTagIds["+(i-1)+"]=,"+$("#select"+i).val()+","; | |
| 155 | + } | |
| 156 | + if("$!id" == ""){ | |
| 157 | + data.id = $("#id").val(); | |
| 158 | + ajaxPost(APP.PATH + "/contentMessageTemplate/create",data); | |
| 159 | + }else{ | |
| 160 | + ajaxPost(APP.PATH + "/contentMessageTemplate/update",data); | |
| 161 | + } | |
| 162 | + parent.reloadGrid('dataTable'); | |
| 142 | 163 | |
| 164 | +// $('#validForm')[0].reset(); | |
| 165 | +// UE.getEditor('editor').setContent(""); | |
| 143 | 166 | } |
| 144 | 167 | } |
| 145 | 168 | </script> |
parent/center.manager/src/main/webapp/WEB-INF/views/content/template_list.html
View file @
03c4aa9
| ... | ... | @@ -80,6 +80,21 @@ |
| 80 | 80 | }); |
| 81 | 81 | } |
| 82 | 82 | |
| 83 | + function del(){ | |
| 84 | + | |
| 85 | + var seleions = $('#dataTable').bootstrapTable("getSelections",""); | |
| 86 | +// alert(JSON.stringify(seleions)); | |
| 87 | + layer.confirm('确定删除选中的短信吗?', { | |
| 88 | + btn: ['确定','取消'], //按钮 | |
| 89 | + shade: false //不显示遮罩 | |
| 90 | + }, function(){ | |
| 91 | + layer.msg('删除成功', {icon: 1}); | |
| 92 | + }, function(){ | |
| 93 | + layer.msg('取消删除', {shift: 6}); | |
| 94 | + }); | |
| 95 | + | |
| 96 | + } | |
| 97 | + | |
| 83 | 98 | function search(){ |
| 84 | 99 | var msgContent = $("#msgContent").val(); |
| 85 | 100 | var searchTags = $("#searchTags").val(); |
| ... | ... | @@ -119,7 +134,8 @@ |
| 119 | 134 | layer.msg('请先选择消息模板版本'); |
| 120 | 135 | return; |
| 121 | 136 | } |
| 122 | - fullWindow("新增信息模板", APP.PATH + controllerRequestMappint + verId+"/toEdit"); | |
| 137 | + var vName = version.versionName; | |
| 138 | + popWindow("新增信息模板", APP.PATH + controllerRequestMappint + verId+"/toEdit?vName="+vName,850,800); | |
| 123 | 139 | } |
| 124 | 140 | |
| 125 | 141 | var templateVer = []; |
| ... | ... | @@ -149,6 +165,12 @@ |
| 149 | 165 | pageSize: 50, //每页的记录行数(*) |
| 150 | 166 | pageList: [200], //可供选择的每页的行数(*) |
| 151 | 167 | strictSearch: true, |
| 168 | + onDblClickRow:function(row,ev){ | |
| 169 | + //alert(JSON.stringify(row)); | |
| 170 | +// var id = row.id; | |
| 171 | +// alert(id) | |
| 172 | + popWindow("修改信息模板", APP.PATH + controllerRequestMappint + version.id+"/toEdit?id="+row.id+"&vName="+version.versionName,850,800); | |
| 173 | + }, | |
| 152 | 174 | queryParams:{ |
| 153 | 175 | verId:0 |
| 154 | 176 | }, |
| 155 | 177 | |
| 156 | 178 | |
| 157 | 179 | |
| 158 | 180 | |
| ... | ... | @@ -163,24 +185,50 @@ |
| 163 | 185 | checkbox: true |
| 164 | 186 | },{ |
| 165 | 187 | field: 'id', |
| 166 | - title: '序号', | |
| 167 | - visible: false | |
| 168 | - }, { | |
| 188 | + title: '', | |
| 189 | + visible:false | |
| 190 | + },{ | |
| 169 | 191 | field: 'content', |
| 170 | 192 | title: '短信内容' |
| 193 | + },{ | |
| 194 | + field:'contentTagIds', | |
| 195 | + title:'标签', | |
| 196 | + formatter:function(value,row,index){ | |
| 197 | + var tagsNames = value.split(","); | |
| 198 | + var tagsHtml = ""; | |
| 199 | + for(var i =0;i<tagsNames.length;i++){ | |
| 200 | + if((i+1)%5==1){ | |
| 201 | + tagsHtml+='<span class="badge badge-primary" style="margin: 3px;">'+tagsNames[i]+'</span>'; | |
| 202 | + }else if((i+1)%5==2){ | |
| 203 | + tagsHtml+='<span class="badge label-info" style="margin: 3px;">'+tagsNames[i]+'</span>'; | |
| 204 | + }else if((i+1)%5==3){ | |
| 205 | + tagsHtml+='<span class="badge label-success" style="margin: 3px;">'+tagsNames[i]+'</span>'; | |
| 206 | + }else if((i+1)%5==4){ | |
| 207 | + tagsHtml+='<span class="badge label-warning" style="margin: 3px;">'+tagsNames[i]+'</span>'; | |
| 208 | + }else{ | |
| 209 | + tagsHtml+='<span class="badge label-danger" style="margin: 3px;">'+tagsNames[i]+'</span>'; | |
| 210 | + } | |
| 211 | + } | |
| 212 | + return tagsHtml; | |
| 213 | + } | |
| 171 | 214 | }]}); |
| 172 | 215 | } |
| 173 | 216 | |
| 174 | - function copyVer(ver){ | |
| 217 | + function copyVer(ver,name){ | |
| 175 | 218 | layer.open({ |
| 176 | 219 | type: 1 //Page层类型 |
| 177 | 220 | ,area: ['530px', '300px'] |
| 178 | - ,title: '新增消息模板版本' | |
| 221 | + ,title: '复制消息模板版本' | |
| 179 | 222 | ,shade: 0.6 //遮罩透明度 |
| 180 | 223 | ,maxmin: true //允许全屏最小化 |
| 181 | 224 | ,anim: 2 //0-6的动画形式,-1不开启 |
| 182 | - ,content: "<div class='col-sm-9 col-sm-offset-1'><form class='form-horizontal m-t navbar-form navbar-left' id='validForm'><div class='form-group'><label class='col-sm-4 control-label'>版本名称:</label><div class='col-sm-5'><input type='hidden' name='perId' value='"+ver+"'/>" + | |
| 183 | - "<input type='text' class='form-control w-lg' placeholder='版本名称' name='versionName' required></div></div><div class='col-sm-offset-12'><a onclick='saveVersion()' class='btn btn-primary navbar-btn'>提交</a></div></form></div>" | |
| 225 | + ,content: "<div class='col-sm-11 col-sm-offset-1'>" + | |
| 226 | + "<form class='form-horizontal m-t navbar-form navbar-left' id='validForm'>" + | |
| 227 | + "<div class='form-group'><label class='col-sm-5 control-label'>将要复制的版本名称:</label><div class='col-sm-5'><input type='hidden' name='perId' value='"+ver+"'/>" + | |
| 228 | + "<input type='text' class='form-control w-lg' value='"+name+"' disabled></div></div>" + | |
| 229 | + "<div class='form-group'><label class='col-sm-6 control-label'>版本名称:</label><div class='col-sm-5'>" + | |
| 230 | + "<input type='text' class='form-control w-lg' placeholder='版本名称' name='versionName' required></div></div>" + | |
| 231 | + "<div class='col-sm-offset-9'><a onclick='saveVersion()' class='btn btn-primary navbar-btn'>提交</a></div></form></div>" | |
| 184 | 232 | }); |
| 185 | 233 | } |
| 186 | 234 | |
| ... | ... | @@ -198,7 +246,7 @@ |
| 198 | 246 | if(data){ |
| 199 | 247 | templateVer = data; |
| 200 | 248 | data.forEach(function(i,d){ |
| 201 | - versionHtml+="<li onclick='showMessageList("+d+")' class='list-group-item col-sm-9'>"+i.versionName+"</li><button onclick=copyVer('"+i.id+"') class='col-sm-3 btn'>复制</button>"; | |
| 249 | + versionHtml+="<li onclick='showMessageList("+d+")' class='list-group-item col-sm-9'>"+i.versionName+"</li><button onclick=copyVer('"+i.id+"','"+i.versionName+"') class='col-sm-3 btn'>复制</button>"; | |
| 202 | 250 | }); |
| 203 | 251 | $("#temp_version").append(versionHtml); |
| 204 | 252 | } |