| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 |
- package com.goafanti.message.controller;
- import java.text.ParseException;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.regex.Pattern;
- import javax.annotation.Resource;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RestController;
- import com.alibaba.fastjson.JSONObject;
- import com.goafanti.common.bo.Result;
- import com.goafanti.common.constant.AFTConstants;
- import com.goafanti.common.constant.ErrorConstants;
- import com.goafanti.common.controller.CertifyApiController;
- import com.goafanti.common.error.BusinessException;
- import com.goafanti.common.model.JtMessageProducer;
- import com.goafanti.common.model.MessageFromSystem;
- import com.goafanti.common.utils.DateUtils;
- import com.goafanti.core.shiro.token.TokenManager;
- import com.goafanti.message.bo.MessageListBo;
- import com.goafanti.message.enums.ConsumerType;
- import com.goafanti.message.enums.RecommendType;
- import com.goafanti.message.enums.SubjectType;
- import com.goafanti.message.service.JtMessageProducerService;
- import com.goafanti.message.service.MessageService;
- /**
- * 消息推送
- * @author Administrator
- *
- */
- @RestController
- @RequestMapping(value = "/api/admin/message")
- public class AdminMessageController extends CertifyApiController{
- @Resource
- private MessageService messageService;
- @Resource
- private JtMessageProducerService jtMessageProducerService;
-
- /**
- * 进入创建系统消息
- */
- @RequestMapping(value = "/toCreateSystemMessage", method = RequestMethod.GET)
- public Result toCreateSystemMessage(){
- Result res = new Result();
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("createTime", DateUtils.formatDate(new Date(), AFTConstants.YYYYMMDDHHMMSS));
- res.setData(jsonObject);
- return res;
- }
- /**
- *
- * @param companyIds 公司集
- * @param userIds 用户集
- * @param adminIds 运营人员
- * @param societyTags 社会属性集
- * @param provinceIds 省份集
- * @param cityIds 城市集
- * @param areas 区域集
- * @param roles 角色集
- * @param industryIds 行业
- * @param subject 0-运营消息 , 1-客户消息 , 2-技淘推荐
- * @param isDraft 是否草稿
- * @throws ParseException
- */
- @RequestMapping(value = "/createSystemMessage", method = RequestMethod.POST)
- public Result createSystemMessage(String personalUserIds,String organizationUserIds, String adminIds,String companyIds,String societyTags,String provinceIds,String cityIds,String areaIds,
- String roles,String industryIds,String title,String body,Integer subject,Integer targetType,String createTime,Integer isDraft) throws ParseException{
- Result res = new Result();
- if(null == targetType){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "必须指定人员类型"));
- return res;
- }
- if(null == subject){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "必须指定消息类型"));
- return res;
- }
- if(StringUtils.isBlank(title) || StringUtils.isBlank(body)){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息是的标题和内容不能为空"));
- return res;
- }
- if(null == isDraft){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "必须说明是否为草稿"));
- return res;
- }
- checkParam(personalUserIds,organizationUserIds,adminIds,companyIds,societyTags,provinceIds,cityIds,areaIds,roles,industryIds);
- Map<Integer,String> targetMap = new HashMap<Integer, String>();
- if(targetType == ConsumerType.PERSON_CUSTOMER_RETAIL.getTypeCode()) targetMap.put(targetType, personalUserIds);
- if(targetType == ConsumerType.ORGANIZATION_CUSTOMER_RETAIL.getTypeCode()) targetMap.put(targetType, organizationUserIds);
- if(targetType == ConsumerType.USER_RETAIL.getTypeCode()) targetMap.put(targetType, adminIds);
- if(targetType == ConsumerType.SOCIETY_TAG.getTypeCode()) targetMap.put(targetType, societyTags);
- if(targetType == ConsumerType.LOCATION.getTypeCode()){
- targetMap.put(targetType, ConsumerType.LOCATION.getTypeName());
- targetMap.put(ConsumerType.LOCATION_PROVINCE.getTypeCode(), provinceIds);
- targetMap.put(ConsumerType.LOCATION_CITY.getTypeCode(), cityIds);
- targetMap.put(ConsumerType.LOCATION_AREA.getTypeCode(), areaIds);
- }
- if(targetType == ConsumerType.COMPANY.getTypeCode()) targetMap.put(targetType, companyIds);
- if(targetType == ConsumerType.ROLE.getTypeCode()) targetMap.put(targetType, roles);
- if(targetType == ConsumerType.INDUSTRY.getTypeCode()) targetMap.put(targetType, industryIds);
- if(StringUtils.isBlank(targetMap.get(targetType))){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "必须选定目标群体"));
- return res;
- }
- messageService.insertSystemMessage(targetMap,targetType, title, body, subject,
- DateUtils.parseDate(createTime,AFTConstants.YYYYMMDDHHMMSS),isDraft);
- return res;
- }
-
- /**
- *
- * @param projectIds 项目
- * @param personalAchievementIds 个人成果
- * @param organizationAchievementIds 组织成果
- * @param personalDemandIds 个人需求
- * @param organizationDemandIds 组织需求
- * @param userIds 专家
- * @param newsIds 政策
- * @param sourceType 资源类型
- * @param userIds 用户类型
- * @param societyTags 社会属性
- * @param provinceIds 省
- * @param cityIds 市
- * @param areaIds 区
- * @param targetType 目标类型
- * @param isDraft 是否草稿
- * @return
- */
- @RequestMapping(value = "/createRecommendMessage", method = RequestMethod.POST)
- public Result createRecommendMessage(String projectIds,String personalAchievementIds,String organizationAchievementIds,
- String personalDemandIds,String organizationDemandIds, String expertIds, String newsIds,Integer sourceType,
- String personalUserIds,String organizationUserIds,String societyTags,String provinceIds,String cityIds,String areaIds,String industryIds,Integer targetType,Integer isDraft){
- Result res = new Result();
- if(null == sourceType){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "必须指定推荐类型"));
- return res;
- }
- if(null == targetType){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "必须指定目标群体"));
- return res;
- }
- if(null == isDraft){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "必须说明是否为草稿"));
- return res;
- }
- checkParam(projectIds,projectIds,personalAchievementIds,organizationAchievementIds,personalDemandIds,organizationDemandIds,
- expertIds,newsIds,personalUserIds,organizationUserIds,provinceIds,cityIds,areaIds,industryIds);
- Map<Integer,String> sourceMap = new HashMap<Integer, String>();
- if(sourceType == RecommendType.TECH_SERVICE.getTypeCode()) sourceMap.put(sourceType, projectIds);
- if(sourceType == RecommendType.PERSON_ACHIEVEMENT.getTypeCode()) sourceMap.put(sourceType, personalAchievementIds);
- if(sourceType == RecommendType.ORGANIZATION_ACHIEVEMENT.getTypeCode()) sourceMap.put(sourceType, organizationAchievementIds);
- if(sourceType == RecommendType.PERSONAL_DEMAND.getTypeCode()) sourceMap.put(sourceType, personalDemandIds);
- if(sourceType == RecommendType.ORGANIZATION_DEMAND.getTypeCode()) sourceMap.put(sourceType, organizationDemandIds);
- if(sourceType == RecommendType.EXPERT.getTypeCode()) sourceMap.put(sourceType, expertIds);
- if(sourceType == RecommendType.NEWS.getTypeCode()) sourceMap.put(sourceType, newsIds);
- if(StringUtils.isBlank(sourceMap.get(sourceType))){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "必须选定推荐内容"));
- return res;
- }
- Map<Integer,String> targetMap = new HashMap<Integer, String>();
- if(targetType == ConsumerType.PERSON_CUSTOMER_RETAIL.getTypeCode()) targetMap.put(targetType, personalUserIds);
- if(targetType == ConsumerType.ORGANIZATION_CUSTOMER_RETAIL.getTypeCode()) targetMap.put(targetType, organizationUserIds);
- if(targetType == ConsumerType.SOCIETY_TAG.getTypeCode()) targetMap.put(targetType, societyTags);
- if(targetType == ConsumerType.LOCATION.getTypeCode()){
- targetMap.put(targetType, ConsumerType.LOCATION.getTypeName());
- targetMap.put(ConsumerType.LOCATION_PROVINCE.getTypeCode(), provinceIds);
- targetMap.put(ConsumerType.LOCATION_CITY.getTypeCode(), cityIds);
- targetMap.put(ConsumerType.LOCATION_AREA.getTypeCode(), areaIds);
- }
- if(targetType == ConsumerType.INDUSTRY.getTypeCode()) targetMap.put(targetType, industryIds);
- if(StringUtils.isBlank(targetMap.get(targetType))){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "必须指定目标群体"));
- return res;
- }
- messageService.insertRecommendMessage(sourceMap,sourceType,targetMap,targetType,SubjectType.TUI_JIAN.getTypeCode(),isDraft);
- return res;
-
- }
-
- /**
- * 查看消息列表
- * @param isDraft 是否未草稿
- * @param subject 消息类型
- * @return
- */
- @RequestMapping(value = "/listSystemMessage", method = RequestMethod.GET)
- public Result listSystemMessage(Integer isDraft,Integer subject,Integer page,Integer pageNo,Integer pageSize){
- Result res = new Result();
- if(null == isDraft){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息发送状态不能为空"));
- return res;
- }
- /*if(null == subject){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "消息类型不能为空"));
- return res;
- }*/
- res.setData(messageService.listSystemMessage(isDraft, subject,pageNo,pageSize));
- return res;
- }
-
- /**
- * 更新消息
- * @param messageId 消息ID
- * @param title 消息标题
- * @param body 消息内容
- * @return
- */
- @RequestMapping(value = "/updateSystemMessage", method = RequestMethod.POST)
- public Result updateSystemMessage(String messageId,String title,String body,Integer isDraft){
- Result res = new Result();
- if(StringUtils.isBlank(messageId)){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息编号不能为空"));
- return res;
- }
- if(null == isDraft){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息发送状态不能为空"));
- return res;
- }
- if(StringUtils.isBlank(title) || StringUtils.isBlank(body)){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息标题和消息内容不能为空"));
- return res;
- }
- messageService.updateSystemMessage(messageId, title, body, isDraft);
- return res;
- }
-
- /**
- * 删除消息
- * @param messageId 消息ID
- * @return
- */
- @RequestMapping(value = "/deleteSystemMessage", method = RequestMethod.GET)
- public Result deleteSystemMessage(String messageId){
- Result res = new Result();
- if(StringUtils.isBlank(messageId)){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息编号为空"));
- return res;
- }
- messageService.deleteSystemMessage(messageId);
- return res;
- }
-
- /**
- * 读取消息详情
- * @param messageId 消息ID
- * @return
- */
- @RequestMapping(value = "/getSystemMessageDetail", method = RequestMethod.GET)
- public Result getSystemMessageDetail(String messageId){
- Result res = new Result();
- if(StringUtils.isBlank(messageId)){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息编号为空"));
- return res;
- }
- // 读取消息详情
- MessageFromSystem mfs = messageService.selectSystemMessageDetail(messageId);
- MessageListBo bo = new MessageListBo();
- bo.setCreateTime(mfs.getCreateTime() == null ? ""
- : DateUtils.formatDate(mfs.getCreateTime(), AFTConstants.YYYYMMDDHHMMSS));
- bo.setResourceType(String.valueOf(mfs.getResourceType()));
- bo.setSubject(String.valueOf(mfs.getSubject()));
- bo.setMessageId(mfs.getId());
- bo.setTitle(mfs.getTitle());
- bo.setBody(mfs.getBody());
- bo.setResourceId(mfs.getResourceId());
- bo.setConsumerType(""+mfs.getConsumerType());
- res.setData(bo);
- return res;
- }
-
- /**
- * 校验
- * @param ids
- */
- public void checkParam(String... ids){
- String regex = "^[0-9a-z-,]*$";
- for(String s:ids){
- if(StringUtils.isNotBlank(s) && !Pattern.matches(regex, s)){
- throw new BusinessException(buildError(ErrorConstants.PARAM_ERROR, "参数不合法", s));
- }
- }
- }
-
- //消息编号检查
- private Result checkMessageId(String messageId){
- Result res = new Result();
- if(StringUtils.isBlank(messageId)){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息编号不能为空"));
- }
- return res;
- }
-
- //消息数据检查
- private Result checkMessage(JtMessageProducer messageProducer){
- Result res = new Result();
- if(StringUtils.isBlank(messageProducer.getTitle())){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息标题不能为空"));
- }
- if(null == messageProducer.getSubject()){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息类别不能为空"));
- }
- if(null == messageProducer.getIsDraft()){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息是否为草稿没指定"));
- }
- if(null == messageProducer.getIsSend()){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息是否要发送没指定"));
- }
- if(null == messageProducer.getDeleteSign()){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "消息是否为删除没指定"));
- }
- return res;
- }
-
- /**
- * 发送消息接口
- * @param messageId
- * @return
- */
- @RequestMapping(value = "/sendMessage", method = RequestMethod.GET)
- public Result sendMessage(String messageId){
- Result res = checkMessageId(messageId);
- if (res.getError().isEmpty()) {
- //发送消息
- res.setData(jtMessageProducerService.addSendMessage(messageId));
- }
- return res;
- }
-
- /**
- * 获得单个消息数据接口
- * @param messageId
- * @return
- */
- @RequestMapping(value="/getMessageById", method = RequestMethod.GET)
- public Result getMessageById(String messageId){
- Result res = checkMessageId(messageId);
- if (res.getError().isEmpty()) {
- //查看消息
- res.setData(jtMessageProducerService.getMessageById(messageId));
- }
- return res;
- }
-
- /**
- * 修改消息接口
- * @param messageProducer
- * @return
- */
- @RequestMapping(value="/updMessageById", method = RequestMethod.POST)
- public Result updMessageById(JtMessageProducer messageProducer, String messageSendTime){
- Result res = checkMessageId(messageProducer.getId());
- try {
- messageProducer.setSendTime(DateUtils.parseDate(messageSendTime,AFTConstants.YYYYMMDDHHMMSS));
- } catch (Exception e) {
- messageProducer.setSendTime(null);
- }
- if (res.getError().isEmpty()) {
- //查看消息
- res.setData(jtMessageProducerService.updateMessageById(messageProducer));
- }
- return res;
- }
-
- /**
- * 获得消息列表
- * @param messageProducer
- * @param sendStartTime
- * @param sendEndTime
- * @param pageNo
- * @param pageSize
- * @return
- */
- @RequestMapping(value="/getMessageList", method = RequestMethod.GET)
- public Result getMessageList(JtMessageProducer messageProducer,String sendStartTime, String sendEndTime, Integer pageNo,Integer pageSize ){
- Result res = new Result();
- if(StringUtils.isBlank(TokenManager.getUserId())){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "登录数据失效"));
- }
- if (res.getError().isEmpty()) {
- //查看消息列表
- res.setData(jtMessageProducerService.getMessageList(messageProducer, sendStartTime, sendEndTime, pageNo, pageSize ));
- }
- return res;
- }
-
-
- /**
- * 新增消息接口
- * @param messageProducer
- * @return
- */
- @RequestMapping(value="/createMyMessage", method = RequestMethod.POST)
- public Result createMyMessage(JtMessageProducer messageProducer, String messageCreateTime){
- try {
- messageProducer.setCreateTime(DateUtils.parseDate(messageCreateTime,AFTConstants.YYYYMMDDHHMMSS));
- } catch (Exception e) {
- messageProducer.setCreateTime(null);
- }
- Result res = checkMessage(messageProducer);
-
- if(StringUtils.isBlank(TokenManager.getUserId()) && StringUtils.isBlank(TokenManager.getAdminId())){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "登录数据失效"));
- }
- if (res.getError().isEmpty()) {
- //新增消息
- int err = jtMessageProducerService.addMessage(messageProducer);
- if(err == -1){
- res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"", "没有找到您的用户信息,不能创建消息"));
- }
- res.setData(err);
- }
- return res;
- }
- }
|