消息模板管理

master
3y 3 years ago
parent 15220b5cee
commit 984dd9cb4f

@ -0,0 +1,28 @@
package com.java3y.austin.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString;
/**
* @author 3y
* @date 2022/1/22
*/
@Getter
@ToString
@AllArgsConstructor
public enum AuditStatus {
/**
* 10. 20. 30.'
*/
WAIT_AUDIT(10, "待审核"),
AUDIT_SUCCESS(20, "审核成功"),
AUDIT_REJECT(30, "被拒绝");
private Integer code;
private String description;
}

@ -0,0 +1,31 @@
package com.java3y.austin.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString;
/**
* @author 3y
* @date 2022/1/22
*/
@Getter
@ToString
@AllArgsConstructor
public enum MessageStatus {
/**
* 10. 20. 30. 40. 50. 60. 70.
*/
INIT(10, "初始化状态"),
STOP(20, "停用"),
RUN(30, "启用"),
PENDING(40, "等待发送"),
SENDING(50, "发送中"),
SEND_SUCCESS(60, "发送成功"),
SEND_FAIL(70, "发送失败");
private Integer code;
private String description;
}

@ -13,8 +13,8 @@ import lombok.ToString;
@AllArgsConstructor @AllArgsConstructor
public enum TemplateType { public enum TemplateType {
OPERATION(10, "运营类的模板"), CLOCKING(10, "定时类的模板(后台定时调用)"),
TECHNOLOGY(20, "技术类的模板"), REALTIME(20, "实时类的模板(接口实时调用)"),
; ;
private Integer code; private Integer code;

@ -1,12 +1,32 @@
package com.java3y.austin.dao; package com.java3y.austin.dao;
import com.java3y.austin.domain.MessageTemplate; import com.java3y.austin.domain.MessageTemplate;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/** /**
* Dao * Dao
* @author 3y * @author 3y
*/ */
public interface MessageTemplateDao extends CrudRepository<MessageTemplate, Long> { public interface MessageTemplateDao extends JpaRepository<MessageTemplate, Long> {
/**
* )
* @param deleted 0 1
* @param pageable
* @return
*/
List<MessageTemplate> findAllByIsDeletedEquals(Integer deleted, Pageable pageable);
/**
*
* @param deleted
* @return
*/
Long countByIsDeletedEquals(Integer deleted);
} }

@ -5,23 +5,26 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType; import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
import java.io.Serializable;
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Entity @Entity
@Accessors(chain = true)
/** /**
* *
* DO * DO
* @author 3y * @author 3y
*/ */
public class MessageTemplate { public class MessageTemplate implements Serializable {
@Id @Id
@GeneratedValue(strategy= GenerationType.IDENTITY) @GeneratedValue(strategy= GenerationType.IDENTITY)

@ -1,27 +1,40 @@
package com.java3y.austin.controller; package com.java3y.austin.controller;
import com.java3y.austin.dao.MessageTemplateDao; import cn.hutool.core.util.StrUtil;
import com.java3y.austin.domain.MessageTemplate; import com.java3y.austin.domain.MessageTemplate;
import com.java3y.austin.service.MessageTemplateService;
import com.java3y.austin.utils.ConvertMap;
import com.java3y.austin.vo.BasicResultVO; import com.java3y.austin.vo.BasicResultVO;
import com.java3y.austin.vo.MessageTemplateParam;
import com.java3y.austin.vo.MessageTemplateVo; import com.java3y.austin.vo.MessageTemplateVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* Controller * Controller
*
* @author 3y * @author 3y
*/ */
@RestController @RestController
@RequestMapping("/messageTemplate") @RequestMapping("/messageTemplate")
@Api("发送消息") @Api("发送消息")
@CrossOrigin(origins = "http://localhost:3000", allowCredentials = "true") @CrossOrigin(origins = "http://localhost:3000", allowCredentials = "true", allowedHeaders = "*")
public class MessageTemplateController { public class MessageTemplateController {
private static final List<String> flatFieldName = Arrays.asList("msgContent");
@Autowired @Autowired
private MessageTemplateDao messageTemplateDao; private MessageTemplateService messageTemplateService;
/** /**
* Id * Id
@ -30,19 +43,59 @@ public class MessageTemplateController {
@PostMapping("/save") @PostMapping("/save")
@ApiOperation("/插入数据") @ApiOperation("/插入数据")
public BasicResultVO saveOrUpdate(@RequestBody MessageTemplate messageTemplate) { public BasicResultVO saveOrUpdate(@RequestBody MessageTemplate messageTemplate) {
MessageTemplate info = messageTemplateDao.save(messageTemplate); MessageTemplate info = messageTemplateService.saveOrUpdate(messageTemplate);
return BasicResultVO.success(info); return BasicResultVO.success(info);
} }
/** /**
* *
*/ */
@GetMapping("/query") @GetMapping("/list")
@ApiOperation("/查找数据") @ApiOperation("/列表页")
public BasicResultVO queryList() { public BasicResultVO queryList(MessageTemplateParam messageTemplateParam) {
Iterable<MessageTemplate> all = messageTemplateDao.findAll(); List<Map<String, Object>> result = ConvertMap.flatList(messageTemplateService.queryList(messageTemplateParam), flatFieldName);
long count = messageTemplateDao.count();
MessageTemplateVo messageTemplateVo = MessageTemplateVo.builder().count(count).rows(all).build(); long count = messageTemplateService.count();
MessageTemplateVo messageTemplateVo = MessageTemplateVo.builder().count(count).rows(result).build();
return BasicResultVO.success(messageTemplateVo); return BasicResultVO.success(messageTemplateVo);
} }
/**
* Id
*/
@GetMapping("query/{id}")
@ApiOperation("/根据Id查找")
public BasicResultVO queryById(@PathVariable("id") Long id) {
Map<String, Object> result = ConvertMap.flatSingle(messageTemplateService.queryById(id), flatFieldName);
return BasicResultVO.success(result);
}
/**
* Id
*/
@PostMapping("copy/{id}")
@ApiOperation("/根据Id复制")
public BasicResultVO copyById(@PathVariable("id") Long id) {
messageTemplateService.copy(id);
return BasicResultVO.success();
}
/**
* Id
* id
*/
@DeleteMapping("delete/{id}")
@ApiOperation("/根据Ids删除")
public BasicResultVO deleteByIds(@PathVariable("id") String id) {
if (StrUtil.isNotBlank(id)) {
List<Long> idList = Arrays.stream(id.split(StrUtil.COMMA)).map(s -> Long.valueOf(s)).collect(Collectors.toList());
messageTemplateService.deleteByIds(idList);
return BasicResultVO.success();
}
return BasicResultVO.fail();
}
} }

@ -0,0 +1,63 @@
package com.java3y.austin.service;
import com.java3y.austin.domain.MessageTemplate;
import com.java3y.austin.vo.MessageTemplateParam;
import java.util.List;
/**
*
*
* @author 3y
*/
public interface MessageTemplateService {
/**
* )
*
* @param messageTemplateParam
* @return
*/
List<MessageTemplate> queryList(MessageTemplateParam messageTemplateParam);
/**
*
*
* @return
*/
Long count();
/**
*
* ID
* ID
*
* @param messageTemplate
* @return
*/
MessageTemplate saveOrUpdate(MessageTemplate messageTemplate);
/**
* (deleted=1)
*
* @param ids
*/
void deleteByIds(List<Long> ids);
/**
* ID
*
* @param id
* @return
*/
MessageTemplate queryById(Long id);
/**
*
*
* @param id
*/
void copy(Long id);
}

@ -0,0 +1,87 @@
package com.java3y.austin.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.java3y.austin.constant.AustinConstant;
import com.java3y.austin.dao.MessageTemplateDao;
import com.java3y.austin.domain.MessageTemplate;
import com.java3y.austin.enums.AuditStatus;
import com.java3y.austin.enums.MessageStatus;
import com.java3y.austin.service.MessageTemplateService;
import com.java3y.austin.vo.MessageTemplateParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Service
*
* @author 3y
* @date 2022/1/22
*/
@Service
public class MessageTemplateServiceImpl implements MessageTemplateService {
@Autowired
private MessageTemplateDao messageTemplateDao;
@Override
public List<MessageTemplate> queryList(MessageTemplateParam param) {
PageRequest pageRequest = PageRequest.of(param.getPage() - 1, param.getPerPage());
return messageTemplateDao.findAllByIsDeletedEquals(AustinConstant.FALSE, pageRequest);
}
@Override
public Long count() {
return messageTemplateDao.countByIsDeletedEquals(AustinConstant.FALSE);
}
@Override
public MessageTemplate saveOrUpdate(MessageTemplate messageTemplate) {
if (messageTemplate.getId() == null) {
initStatus(messageTemplate);
}
return messageTemplateDao.save(messageTemplate);
}
@Override
public void deleteByIds(List<Long> ids) {
Iterable<MessageTemplate> messageTemplates = messageTemplateDao.findAllById(ids);
messageTemplates.forEach(messageTemplate -> messageTemplate.setIsDeleted(AustinConstant.TRUE));
messageTemplateDao.saveAll(messageTemplates);
}
@Override
public MessageTemplate queryById(Long id) {
return messageTemplateDao.findById(id).get();
}
@Override
public void copy(Long id) {
MessageTemplate messageTemplate = messageTemplateDao.findById(id).get();
MessageTemplate clone = ObjectUtil.clone(messageTemplate);
clone.setId(null);
messageTemplateDao.save(clone);
}
/**
*
* TODO
*
* @param messageTemplate
*/
private void initStatus(MessageTemplate messageTemplate) {
messageTemplate.setFlowId(StrUtil.EMPTY)
.setMsgStatus(MessageStatus.INIT.getCode()).setAuditStatus(AuditStatus.WAIT_AUDIT.getCode())
.setCreator("Java3y").setUpdator("Java3y").setTeam("公众号Java3y").setAuditor("3y")
.setDeduplicationTime(AustinConstant.FALSE).setIsNightShield(AustinConstant.FALSE)
.setCreated(Math.toIntExact(DateUtil.currentSeconds())).setUpdated(Math.toIntExact(DateUtil.currentSeconds()))
.setIsDeleted(AustinConstant.FALSE);
}
}

@ -0,0 +1,67 @@
package com.java3y.austin.utils;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ReflectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* for Amis!!! amis!!
* List/Object Map
* https://baidu.gitee.io/amis/zh-CN/components/form/index#%E8%A1%A8%E5%8D%95%E9%A1%B9%E6%95%B0%E6%8D%AE%E5%88%9D%E5%A7%8B%E5%8C%96
* @author 3y
* @date 2022/1/23
*/
public class ConvertMap {
/**
* ListMap()
*
* @param param
* @param fieldName reduce
* @return
*/
public static <T> List<Map<String, Object>> flatList(List<T> param, List<String> fieldName) {
List<Map<String, Object>> result = new ArrayList<>();
for (T t : param) {
Map<String, Object> map = flatSingle(t, fieldName);
result.add(map);
}
return result;
}
/**
* Map()
*
* @param obj
* @param fieldName reduce
* @return
*/
public static Map<String, Object> flatSingle(Object obj, List<String> fieldName) {
Map<String, Object> result = MapUtil.newHashMap(32);
Field[] fields = ReflectUtil.getFields(obj.getClass());
for (Field field : fields) {
if (fieldName.contains(field.getName())) {
JSONObject jsonObject;
Object value = ReflectUtil.getFieldValue(obj, field);
if (value instanceof String) {
jsonObject = JSON.parseObject((String) value);
} else {
jsonObject = JSONObject.parseObject(JSON.toJSONString(value));
}
for (String key : jsonObject.keySet()) {
result.put(key, jsonObject.getString(key));
}
}
result.put(field.getName(), ReflectUtil.getFieldValue(obj, field));
}
return result;
}
}

@ -0,0 +1,30 @@
package com.java3y.austin.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
* @author 3y
* @date 2022/1/22
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MessageTemplateParam {
/**
*
*/
private Integer page ;
/**
*
*/
private Integer perPage;
}

@ -1,11 +1,13 @@
package com.java3y.austin.vo; package com.java3y.austin.vo;
import com.java3y.austin.domain.MessageTemplate;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
/** /**
* Vo * Vo
@ -17,11 +19,10 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class MessageTemplateVo { public class MessageTemplateVo {
/** /**
* * List
*/ */
private Iterable<MessageTemplate> rows; private List<Map<String,Object>> rows;
/** /**
* *

Loading…
Cancel
Save