yanghui
2022-10-21 ef676e6bff9e9fa9d95a8f621e9dbbbdf690e718
Merge remote-tracking branch 'origin/huacheng_test' into huacheng_test
11个文件已修改
2个文件已添加
281 ■■■■■ 已修改文件
flower_city/src/main/java/com/dg/core/api/GuideRepairOrderAppletsController.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/controller/GuideRepairOrderController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/db/gen/mapper/GuideRepairOrderMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/service/IGuideRepairOrderService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/service/impl/SlideshowServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/resources/application-sms.properties 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/resources/mapper/GuideRepairOrderMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/SanShuoMessageVO.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComEventTransferRecord.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSanShuoExpertServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/util/WXMessageUtil.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
flower_city/src/main/java/com/dg/core/api/GuideRepairOrderAppletsController.java
@@ -1,6 +1,7 @@
package com.dg.core.api;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dg.core.ResultData;
import com.dg.core.annotation.Authorization;
import com.dg.core.annotation.CurrentUser;
@@ -10,17 +11,21 @@
import com.dg.core.db.gen.entity.SysUser;
import com.dg.core.service.IGuideEvolveService;
import com.dg.core.service.IGuideRepairOrderService;
import com.dg.core.service.IOrganizationChartService;
import com.dg.core.util.PermissionUtil;
import com.dg.core.util.SmsUtil;
import com.dg.core.util.TableDataInfo;
import com.dg.core.util.WxUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
@@ -36,6 +41,9 @@
    @Autowired
    private IGuideEvolveService iGuideEvolveService;
    @Resource
    IOrganizationChartService iOrganizationChartService;
    private static String guideRepairOrderCompleteTemplateId = "7ZCHHii87rWPwVkdhZnvNiYbYi_Buq0NXO10cmUhAFk";
@@ -299,4 +307,32 @@
        return ResultData.success(iGuideRepairOrderService.selectBySubmitId(sysUser.getUserId().toString()));
    }
    /**
     * 小程序获取导办工单管理列表
     * @return
     */
    @ApiOperation(value = "小程序获取导办工单管理列表",response = GuideRepairOrder.class)
    @GetMapping("/getList")
    @Authorization
    public TableDataInfo selectConfigList(@RequestParam(value = "state",required = false) String status,
                                          @CurrentUser SysUser sysUser)
    {
        List<String> ids=null;
        String userId=null;
        if(StringUtils.equals("1",sysUser.getIsDivisionHead()))
        {
            userId=null;
            ids= PermissionUtil.getPermission(sysUser,iOrganizationChartService);
        }
        else
        {
            userId=sysUser.getUserId()+"";
        }
        List<GuideRepairOrder> list = iGuideRepairOrderService.selectConfigList(null,ids,status,userId);
        int num=iGuideRepairOrderService.countConfigList(null,ids,status,userId);
        return getDataTable(list,num);
    }
}
flower_city/src/main/java/com/dg/core/controller/GuideRepairOrderController.java
@@ -374,16 +374,19 @@
        Assert.notNull(pageSize, "pageSize 不能为空");
        Page<GuideRepairOrder> pageParam = new Page<>(pageNum,pageSize);
        List<String> ids=null;
        List<String> ids=PermissionUtil.getPermission(sysUser,iOrganizationChartService);
        String userId=null;
        if( StringUtils.equals("2",sysUser.getRoleIds()))
        {
        if(StringUtils.equals("1",sysUser.getIsDivisionHead()))
        {
            userId=null;
            ids= PermissionUtil.getPermission(sysUser,iOrganizationChartService);
        }
        else
        {
                ids=null;
            userId=sysUser.getUserId()+"";
            }
        }
        List<GuideRepairOrder> list = iGuideRepairOrderService.selectConfigList(pageParam,pageSize,
@@ -399,18 +402,21 @@
    public ResultData getWorkOrder(@CurrentUser SysUser sysUser)
    {
        WorkOrder workOrder=new WorkOrder();
        List<String> ids=null;
        List<String> ids=PermissionUtil.getPermission(sysUser,iOrganizationChartService);
        String userId=null;
        if( StringUtils.equals("2",sysUser.getRoleIds()))
        {
        if(StringUtils.equals("1",sysUser.getIsDivisionHead()))
        {
            userId=null;
            ids= PermissionUtil.getPermission(sysUser,iOrganizationChartService);
        }
        else
        {
            ids=null;
            userId=sysUser.getUserId()+"";
        }
        }
        //状态(1待分配  2 待办结 3 已办结 4 待评价 5 已取消  )
        workOrder.setAllNum(iGuideRepairOrderService.countStatisticsNum("",ids,null,null,null,null,null,userId));
        workOrder.setWaitDistribution(iGuideRepairOrderService.countStatisticsNum("1",ids,null,null,null,null,null,userId));
flower_city/src/main/java/com/dg/core/db/gen/mapper/GuideRepairOrderMapper.java
@@ -56,6 +56,17 @@
                                            @Param("status") String status,
                                            @Param("guideUserId") String guideUserId);
    /**
     * 获取工单列表(不分页用于小程序)
     * @param matterName
     * @return
     */
    List<GuideRepairOrder> selectConfigList(@Param("matterName") String matterName,
                                            @Param("ids") List<String> ids,
                                            @Param("status") String status,
                                            @Param("guideUserId") String guideUserId);
    /**
     * 获取工单列表(求和)
     * @param matterName
flower_city/src/main/java/com/dg/core/service/IGuideRepairOrderService.java
@@ -43,6 +43,14 @@
    List<GuideRepairOrder> selectConfigList(IPage<GuideRepairOrder> page, Integer state,
                                            String matterName,List<String> ids,String status,String guideUserId);
    /**
     * 获取工单列表(不分页用于小程序)
     * @param matterName
     * @return
     */
    List<GuideRepairOrder> selectConfigList(String matterName, List<String> ids,String status,
                                            String guideUserId);
    /**
     * 获取工单列表(求和)
flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java
@@ -208,6 +208,12 @@
    }
    @Override
    public List<GuideRepairOrder> selectConfigList(String matterName, List<String> ids,String status,
                                                   String guideUserId) {
        return baseMapper.selectConfigList(matterName, ids,status,guideUserId);
    }
    @Override
    public int countConfigList(String matterName, List<String> ids,String status,String guideUserId) {
        return baseMapper.countConfigList(matterName, ids,status,guideUserId);
    }
flower_city/src/main/java/com/dg/core/service/impl/SlideshowServiceImpl.java
@@ -40,11 +40,13 @@
           return   ResultData.error("图片地址不能为空");
        if (slideshow.getLinkType()==null)
           return    ResultData.error("跳转链接类型不能为空");
        if (slideshow.getLinkType().equals(2)) {
        if (slideshow.getTitle()==null||slideshow.getTitle()=="")
           return   ResultData.error("标题不能为空");
        if (slideshow.getLinkType().equals(2)&&(slideshow.getContent()==null||slideshow.getContent()==""))
                return ResultData.error("类型为富文本时,标题不能为空");
            if (slideshow.getContent() == null || slideshow.getContent() == "")
            return   ResultData.error("类型为富文本时,富文本内容不能为空");
        if (slideshow.getLinkType().equals(4)&&(slideshow.getLink()==null||slideshow.getLink()==""))
        }
        if (slideshow.getLinkType().equals(3) && (slideshow.getLink() == null || slideshow.getLink() == ""))
            return   ResultData.error("类型为微信文章时,文章链接容不能为空");
        slideshow.setCreateTime(LocalDateTime.now());
        return    ResultData.success(  baseMapper.insert(slideshow)) ;
@@ -56,11 +58,13 @@
            return   ResultData.error("图片地址不能为空");
        if (slideshow.getLinkType()==null)
            return    ResultData.error("跳转链接类型不能为空");
        if (slideshow.getLinkType().equals(2)) {
        if (slideshow.getTitle()==null||slideshow.getTitle()=="")
            return   ResultData.error("标题不能为空");
        if (slideshow.getLinkType().equals(2)&&(slideshow.getContent()==null||slideshow.getContent()==""))
                return ResultData.error("类型为富文本时,标题不能为空");
            if (slideshow.getContent() == null || slideshow.getContent() == "")
            return   ResultData.error("类型为富文本时,富文本内容不能为空");
        if (slideshow.getLinkType().equals(4)&&(slideshow.getLink()==null||slideshow.getLink()==""))
        }
        if (slideshow.getLinkType().equals(3) && (slideshow.getLink() == null || slideshow.getLink() == ""))
            return   ResultData.error("类型为微信文章时,文章链接容不能为空");
        return  ResultData.success(baseMapper.updateById(slideshow));
flower_city/src/main/resources/application-sms.properties
@@ -3,10 +3,22 @@
aliyun.screct=wkyvU72m6JmCFepCzGVuSpsJOsbRV0
aliyun.SignName=????
aliyun.TemplateCode=SMS_254326275
#??????????,???????????????????????????????????
#??????
#aliyun.TemplateCodeOvertime=SMS_254460011
#??????
aliyun.TemplateCodeOvertime=SMS_254460012
aliyun.TemplateCodeComplete=SMS_254875101
#??????
#aliyun.TemplateCodeComplete=SMS_254875101
#??????
aliyun.TemplateCodeComplete=SMS_254875102
#??????
#aliyun.TemplateCodeSubmit=SMS_254880764
#??????
aliyun.TemplateCodeSubmit=SMS_254880763
flower_city/src/main/resources/mapper/GuideRepairOrderMapper.xml
@@ -105,7 +105,7 @@
    </select>
    <select id="countConfigList"  resultType="integer">
        select count(id) from automessage_guide_repair_order a
        select count(id) from automessage_guide_repair_order
        <where>
            <if test="matterName != null and matterName != ''">
                AND (matter_name like concat('%', #{matterName}, '%')) or
@@ -123,7 +123,7 @@
                </foreach>
            </if>
            <if test="guideUserId != null and guideUserId != ''">
                AND a.guide_user_id=#{guideUserId}
                AND automessage_guide_repair_order.guide_user_id=#{guideUserId}
            </if>
        </where>
    </select>
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/SanShuoMessageVO.java
New file
@@ -0,0 +1,17 @@
package com.panzhihua.common.model.vos;
import lombok.Data;
import java.util.Date;
@Data
public class SanShuoMessageVO {
    private String touser;
    private String thing5;
    private String thing1;
    private String thing2;
    private String time3;
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComEventTransferRecord.java
@@ -106,4 +106,5 @@
    private List<ComEventRequestImageVO> images;
    @ApiModelProperty("上报等级,4专家上报到社区,3专家到行业分中心2社区上报到街道,1街道上报到三说会堂,5行业分中心上报到区三说会堂")
    private Integer reportLevel;
    private String content;
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java
@@ -18,6 +18,7 @@
import com.panzhihua.common.model.dtos.community.sanshuo.IndexDateDTO;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.SanShuoMessageVO;
import com.panzhihua.common.model.vos.community.switchs.CommunitySwitchAllAppletsVO;
import com.panzhihua.common.model.vos.sanshuo.*;
import com.panzhihua.common.service.user.UserService;
@@ -26,14 +27,12 @@
import com.panzhihua.common.utlis.Snowflake;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.service_community.api.ComSanShuoEventTransferRecordController;
import com.panzhihua.service_community.dao.ComActDAO;
import com.panzhihua.service_community.dao.ComEventMapper;
import com.panzhihua.service_community.dao.ComSanshuoExpertDao;
import com.panzhihua.service_community.dao.ComStreetDAO;
import com.panzhihua.service_community.dao.*;
import com.panzhihua.service_community.entity.*;
import com.panzhihua.service_community.model.dos.ComActDO;
import com.panzhihua.service_community.model.dos.ComStreetDO;
import com.panzhihua.service_community.service.*;
import com.panzhihua.service_community.util.WXMessageUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomUtils;
import org.checkerframework.checker.units.qual.A;
@@ -87,6 +86,9 @@
    @Resource
    private ComSanshuoExpertDao comSanshuoExpertDao;
    @Resource
    private SysUserDao sysUserDao;
    @Override
@@ -370,7 +372,8 @@
                    comEvent.setEventProcessStatus(2);
                    comEvent.setSolve(0);
                    comEvent.setDistribution(0);
                    comEvent.setChangeExpert(0);
                    //comEvent.setChangeExpert(0);
                    comEvent.setArchive(0);
                }
                else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){
                    //调解完成,可以归档,查看
@@ -378,12 +381,51 @@
                    comEvent.setDistribution(0);
                    comEvent.setChangeExpert(0);
                }
            }else{
            }else if (comEvent.getCurrentProcessType().equals(5)){
                //根据事件状态决定权限
                if (comEvent.getEventProcessStatus().equals(1) ){
                    //待受理和待验证状态,可以受理,分配专家
                    //关闭调解和归档
                    comEvent.setArchive(0);
                    comEvent.setConciliation(0);
                    comEvent.setChangeExpert(0);
                } else if(comEvent.getEventProcessStatus().equals(2)){
                    //待分配和待验证状态,可以受理,分配专家
                    //关闭调解和归档
                    comEvent.setArchive(0);
                    //comEvent.setConciliation(0);
                    comEvent.setChangeExpert(0);
                    if (comEvent.getSpecialistName().equals("待分配")){
                        comEvent.setSolve(0);
                    }
                }
                else if (comEvent.getEventProcessStatus().equals(5)){
                    //调解中,可以查看,调解,更换专家,删除
                    comEvent.setDistribution(0);
                    comEvent.setSolve(0);
                    comEvent.setArchive(0);
                }else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(2) && comEvent.getEventSucceed().equals(2)){
                    //调解完成并且成功,可以归档,查看
                    comEvent.setSolve(0);
                    comEvent.setDistribution(0);
                    comEvent.setChangeExpert(0);
                    comEvent.setConciliation(0);
                }
                else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){
                    //调解完成,可以归档,查看
                    comEvent.setSolve(0);
                    comEvent.setDistribution(0);
                    comEvent.setChangeExpert(0);
                    comEvent.setConciliation(0);
                }
            }
            else{
                //未上上报到行业分中心,或者已上报到区三说会堂,仅查看
                comEvent.setArchive(0);
                comEvent.setSolve(0);
                comEvent.setDistribution(0);
                comEvent.setChangeExpert(0);
                //comEvent.setConciliation(0);
            }
        }else if (userType.equals(5)  || isStreet){
            //街道权限,操作街道下属社区的所有事件
@@ -596,6 +638,8 @@
        comEvent.setUpdateBy(comEvent.getRequestUserId());
        comEvent.setUpdateAt(new Date());
        boolean flag = save(comEvent);
        //推送消息到专家微信
        sendMessage(comEvent.getSpecialistId(),comEvent);
        //添加一条对应记录
        comEventMapper.insertEventAndExpertRecord(comEvent.getId(),expert.getId(),0);
        if (!flag) {
@@ -604,6 +648,26 @@
        //提交不视为一次流转记录,不保存图片
        saveEventImageList(comEvent.getImages(), comEvent.getId(),null,1);
        return R.ok(ReturnMsgConstants.SAVE_SUCCESS);
    }
    public void sendMessage(Long expertId,ComEvent comEvent){
        //获取专家的openId
        ComSanshuoExpert expert = comSanShuoExpertService.getById(expertId);
        SysUser sysUser = sysUserDao.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getPhone, expert.getPhone()).eq(SysUser::getType, 1));
        SanShuoMessageVO vo=new SanShuoMessageVO();
        if (nonNull(sysUser)){
            if (isNull(sysUser.getOpenid())){
                log.info("专家未登陆APP,无法推送");
                return;
            }
        }
        vo.setTouser(sysUser.getOpenid());
        vo.setThing1(commediateTypeService.getById(comEvent.getEventCategory()).getName());
        vo.setThing5("您有一个新的调解事件需处理");
        vo.setThing2(comEvent.getRequestUserName());
        vo.setTime3(DateUtil.now());
        WXMessageUtil.sendStatusMessage(vo);
    }
    @Transactional(rollbackFor = Exception.class)
@@ -681,7 +745,7 @@
                    ComActDO comActDO = comActDAO.selectById(expert.getCommunityId());
                    comEvent.setCurrentOrgId(comActDO.getStreetId().toString());
                    //生成一次流转记录
                    comEvent.setCurrentEventProcessResult("专家上报到社区");
                    comEvent.setCurrentEventProcessResult("(专家上报到"+comActDO.getName()+")"+comEventConciliationVO.getCurrentEventProcessResult());
                    //更改当前处理部门
                    comEvent.setCurrentOrgName(comActDO.getName()+"调解站");
                    comEventTransferRecord.setFromId(comEvent.getSpecialistId());
@@ -696,7 +760,8 @@
                    comEvent.setSpecialistName("待分配");
                    comEvent.setSpecialistId(99999L);
                    //生成一次流转记录
                    comEvent.setCurrentEventProcessResult("专家上报到行业分中心");
                    ComSanshuoIndustryCenter center = comSanShuoIndustryCenterService.getById(comEvent.getCurrentOrgId());
                    comEvent.setCurrentEventProcessResult("(专家上报到"+center.getName()+")"+comEventConciliationVO.getCurrentEventProcessResult());
                    comEvent.setCurrentOrgName(expert.getUnit());
                    comEventTransferRecord.setFromId(comEvent.getSpecialistId());
                    comEventTransferRecord.setToId(expert.getIndustryCenterId());
@@ -709,7 +774,7 @@
                comEvent.setCurrentOrgId("99999");
                //生成一次流转记录
                comEvent.setReportHall(1);
                comEvent.setCurrentEventProcessResult("行业分中心上报到区三说会堂");
                comEvent.setCurrentEventProcessResult("(行业分中心上报到区三说会堂中心)"+comEventConciliationVO.getCurrentEventProcessResult());
                comEvent.setCurrentOrgName("区三说会堂");
                comEventTransferRecord.setFromId(comEvent.getSpecialistId());
                comEventTransferRecord.setToId(99999L);
@@ -723,7 +788,7 @@
                ComActDO comActDO = comActDAO.selectOne(new QueryWrapper<ComActDO>().lambda().eq(ComActDO::getCommunityId, comEvent.getRequestUserCommunity()).eq(ComActDO::getAppId, "wx0cef797390444b75"));
                comEvent.setCurrentOrgId(comActDO.getStreetId().toString());
                //生成一次流转记录
                comEvent.setCurrentEventProcessResult("社区报到街道");
                comEvent.setCurrentEventProcessResult("(社区上报到"+comStreetDAO.selectById(comActDO.getStreetId()).getName()+")"+comEventConciliationVO.getCurrentEventProcessResult());
                comEvent.setCurrentOrgName(comStreetDAO.selectById(comActDO.getStreetId()).getName()+"调解站");
                comEventTransferRecord.setFromId(comEvent.getRequestUserCommunity());
                comEventTransferRecord.setToId(comActDO.getStreetId());
@@ -736,7 +801,7 @@
                comEvent.setCurrentOrgId("99999");
                comEvent.setCurrentOrgName("区三说会堂");
                //生成一次流转记录
                comEvent.setCurrentEventProcessResult("街道上报到区三说会堂");
                comEvent.setCurrentEventProcessResult("(街道上报到区三说会堂中心)"+comEventConciliationVO.getCurrentEventProcessResult());
                comEventTransferRecord.setFromId(Long.parseLong(comEvent.getCurrentOrgId()));
                comEventTransferRecord.setReportLevel(1);
                comEvent.setReportLevel(1);
@@ -859,6 +924,8 @@
        comEvent.setSpecialistName(specter.getName());
        comEvent.setEventProcessStatus(SanShuoEventStatusEnum.VALID.getCode());
        int flag = baseMapper.updateById(comEvent);
        ComEvent comEvent1 = comEventMapper.selectById(id);
        sendMessage(specialistId,comEvent1 );
        //添加一条对应记录
        comEventMapper.insertEventAndExpertRecord(id, specialistId,1);
        return flag > 0 ? R.ok() : R.fail(ReturnMsgConstants.UPDATE_FALSE);
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSanShuoExpertServiceImpl.java
@@ -175,6 +175,13 @@
                    //街道后台
                    range=3;
                    id=loginUserInfo.getStreetId();
                }else if (loginUserInfo.getType().equals(12)){
                    range=2;
                    id=comSanshuoIndustryCenterDao.selectOne(new QueryWrapper<ComSanshuoIndustryCenter>().lambda().eq(ComSanshuoIndustryCenter::getAccount,loginUserInfo.getAccount() )).getId();
                }else if (loginUserInfo.getType().equals(3)){
                    //社区后台账号
                    range=4;
                    id=loginUserInfo.getCommunityId();
                }
            }
        }
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/util/WXMessageUtil.java
New file
@@ -0,0 +1,56 @@
package com.panzhihua.service_community.util;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.panzhihua.common.model.vos.SanShuoMessageVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class WXMessageUtil {
    private static final String APP_ID="wx0cef797390444b75";
    private static final String SEND_MESSAGE_URL="https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=";
    private static final String TOKEN_URL="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
    private static final String SECRET="c7ea9aaa7e391a487e8a5b9ba61045d1";
    private static final String TEMPLATE_ID="iy8r0YbGlvmysbjGcbEj0yx-kftKBjC-HrXlSeNBrE0";
    public static String queryToken(){
        String tokenUrl=TOKEN_URL+"&appid="+APP_ID+"&secret="+SECRET;
        String result= HttpUtil.get(tokenUrl);
        cn.hutool.json.JSONObject obj = JSONUtil.parseObj(result);
        String token = obj.get("access_token").toString();
        return token;
    }
    public static String sendStatusMessage(SanShuoMessageVO vo){
        String token = queryToken();
        if (StringUtils.isNotEmpty(token)){
            //发送消息
            String url=SEND_MESSAGE_URL+token;
            Map<String,Object> param=new HashMap<>();
            param.put("touser", vo.getTouser());
            param.put("template_id", TEMPLATE_ID);
            Map<String,Object> data=new HashMap<>();
            data.put("thing1", formData(vo.getThing1()));
            data.put("thing5", formData(vo.getThing5()));
            data.put("thing2", formData(vo.getThing2()));
            data.put("time3", formData(vo.getTime3()));
            param.put("data", data);
            String paramMap = JSONUtil.toJsonStr(param);
            log.info("===============推送参数:"+paramMap);
            String result = HttpUtil.post(url, paramMap);
            log.info("状态推送结果"+result);
            return result;
        }
        return null;
    }
    public static Map<String,Object> formData(String param){
        Map<String,Object> data=new HashMap<>();
        data.put("value",param );
        return data;
    }
}