jyy
2021-01-26 ab2879bbcb846256cc182198b9c04e50fbc276c1
1、新增消息推送提醒
2、修改业绩计算bug
4 files added
11 files modified
554 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java 19 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/ProjTypeController.java 5 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/bean/SysProjServices.java 13 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java 11 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/job/ServiceOvertimeNoticeJob.java 65 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/UniformMsgSentTask.java 8 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/messageBulderDemo/CzcgTemplateMessageBulder.java 110 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/messageBulderDemo/DdqxTemplateMessageBulder.java 110 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/messageBulderDemo/YycgTemplateMessageBulder.java 10 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/messageBulderDemo/YydsTemplateMessageBulder.java 116 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/application.properties 12 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml 41 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html 9 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html 5 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java
@@ -1,5 +1,6 @@
package com.matrix.system.hive.action;
import com.matrix.component.rabbitmq.RabiitMqTemplate;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.AjaxResult;
@@ -15,7 +16,10 @@
import com.matrix.core.tools.DateUtil;
import com.matrix.system.hive.pojo.CzXkVo;
import com.matrix.system.hive.service.*;
import com.matrix.system.shopXcx.mqTask.MQTaskRouting;
import com.matrix.system.wechart.templateMsg.UniformMsgParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
@@ -55,6 +59,15 @@
    private MoneyCardUseFlowDao moneyCardUseFlowDao;
    @Autowired
    private   MoneyCardUseDao moneyCardUseDao;
    @Value("${evn}")
    private  String evn;
    @Autowired
    private RabiitMqTemplate rabiitMqTemplate;
    /**
     * 跳转 充值页面
     *
@@ -91,6 +104,12 @@
    AjaxResult cz(@RequestBody CzXkVo czVo) {
        SysOrder order=  orderService.updateAddCardMoney(czVo);
        AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, "充值成功");
        //发送微信公众号提醒
        UniformMsgParam uniformMsgParam=new UniformMsgParam(order.getCompanyId(),UniformMsgParam.GZH_CZCG);
        uniformMsgParam.put("orderId",order.getId());
        rabiitMqTemplate.sendMsg(MQTaskRouting.SEND_UNIFORM_TEMPLATE_MSG+evn,uniformMsgParam.toJSONString());
        result.putInMap("orderId",order.getId());
        return result;
    }
zq-erp/src/main/java/com/matrix/system/hive/action/ProjTypeController.java
@@ -25,13 +25,8 @@
@RequestMapping(value = "/admin/projtype")
public class ProjTypeController extends BaseController {
 
   @Resource
   private SysProjTypeService currentService;
    
    public static final String fnCode = "projType";
    public static final String search = fnCode + ":search";
zq-erp/src/main/java/com/matrix/system/hive/bean/SysProjServices.java
@@ -251,6 +251,10 @@
    private Integer totalTime;
    /**
     * 到时提醒次数
     */
    private Integer overtimeNotice;
@@ -332,6 +336,15 @@
    @Extend
    private String pageFlae;
    public Integer getOvertimeNotice() {
        return overtimeNotice;
    }
    public void setOvertimeNotice(Integer overtimeNotice) {
        this.overtimeNotice = overtimeNotice;
    }
    public String getPageFlae() {
        return pageFlae;
    }
zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjServicesDao.java
@@ -59,5 +59,16 @@
     */
    ErpServiceOrderListVo findWxServiceOrderById(Long id);
    /**
     * 查询预约时间在1小时之内且没有通知过的服务单
     * @return
     */
    List<SysProjServices> selectNeedNoticeService();
    /**
     * 设置服务单为已通知
     * @param noticedIds
     * @return
     */
    int updateNoticeTimes(@Param("list")List<Long> noticedIds);
}
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -1,5 +1,6 @@
package com.matrix.system.hive.service.imp;
import com.matrix.component.rabbitmq.RabiitMqTemplate;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.PaginationVO;
@@ -27,8 +28,11 @@
import com.matrix.system.hive.pojo.ShoppingCarItem;
import com.matrix.system.hive.pojo.ShoppingCarItemsVo;
import com.matrix.system.hive.service.*;
import com.matrix.system.shopXcx.mqTask.MQTaskRouting;
import com.matrix.system.wechart.templateMsg.UniformMsgParam;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -106,6 +110,13 @@
    @Autowired
    private SysInstoreInfoService sysInstoreInfoService;
    @Value("${evn}")
    private  String evn;
    @Autowired
    private RabiitMqTemplate rabiitMqTemplate;
    @Override
@@ -256,6 +267,12 @@
            order.setStatu(Dictionary.ORDER_STATU_YQX);
            order.setArrears(0D);
            //发送微信公众号提醒
            UniformMsgParam uniformMsgParam=new UniformMsgParam(order.getCompanyId(),UniformMsgParam.GZH_DDQX);
            uniformMsgParam.put("orderId",order.getId());
            rabiitMqTemplate.sendMsg(MQTaskRouting.SEND_UNIFORM_TEMPLATE_MSG+evn,uniformMsgParam.toJSONString());
            return sysOrderDao.update(order);
        } else {
@@ -351,8 +368,11 @@
            achieveNewService.removeByModel(achieveNew);
            // 取消订单
            order.setStatu(Dictionary.ORDER_STATU_YQX);
            return sysOrderDao.update(order);
        }
    }
zq-erp/src/main/java/com/matrix/system/job/ServiceOvertimeNoticeJob.java
New file
@@ -0,0 +1,65 @@
package com.matrix.system.job;
import com.matrix.component.rabbitmq.RabiitMqTemplate;
import com.matrix.core.tools.LogUtil;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.MoneyCardUse;
import com.matrix.system.hive.bean.SysProjServices;
import com.matrix.system.hive.bean.SysProjUse;
import com.matrix.system.hive.dao.MoneyCardUseDao;
import com.matrix.system.hive.dao.SysProjServicesDao;
import com.matrix.system.hive.dao.SysProjUseDao;
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.shopXcx.mqTask.MQTaskRouting;
import com.matrix.system.wechart.templateMsg.UniformMsgParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 预约服务到时提醒
 * @author 姜友瑶
 */
@Component
public class ServiceOvertimeNoticeJob {
    @Autowired
    private SysProjServicesDao projServicesDao;
    @Value("${evn}")
    private  String evn;
    @Autowired
    private RabiitMqTemplate rabiitMqTemplate;
    /**
     * 每分钟执行一次
     */
    @Scheduled(cron = "0 0/1 * * * ?")
    public void serviceOvertimeNotice() {
        List<SysProjServices> needNoticeService=projServicesDao.selectNeedNoticeService();
        if(CollectionUtils.isNotEmpty(needNoticeService)){
            LogUtil.debug("执行服务单预约到时提醒任务,本次通知对象"+ needNoticeService.stream().map(SysProjServices::getVipName).collect(Collectors.joining(",")));
            for(SysProjServices projServices : needNoticeService){
                //发送微信公众号提醒
                UniformMsgParam uniformMsgParam=new UniformMsgParam(projServices.getCompanyId(),UniformMsgParam.GZH_YYDS);
                uniformMsgParam.put("serviceId",projServices.getId());
                rabiitMqTemplate.sendMsg(MQTaskRouting.SEND_UNIFORM_TEMPLATE_MSG+evn,uniformMsgParam.toJSONString());
            }
            List<Long> noticedIds = needNoticeService.stream().map(SysProjServices::getId).collect(Collectors.toList());
            projServicesDao.updateNoticeTimes(noticedIds);
        }else{
            LogUtil.debug("暂无需要提醒的服务单");
        }
    }
}
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/UniformMsgSentTask.java
@@ -57,8 +57,6 @@
    @Override
    public void handle(String consumerTag, Delivery message) throws IOException {
        try {
            String messages = new String(message.getBody(), "UTF-8");
            JSONObject messageJsonParam=JSONObject.parseObject(messages);
@@ -88,15 +86,11 @@
            bulderParam.put("gzhAppid", gzhAppid.getParamValue());
            bulderParam.put("template_id", template.getUuid());
            bulderParam.put("messageJsonParam", messageJsonParam);
            //调用模板计算出消息体
            Map msgResult = templateMessageBulder.buildMsg(bulderParam);
            if(msgResult.containsKey("error")){
                //错误消息处理
                LogUtil.error("模板消息发送内容:"+msgResult.get("error"));
                return;
            }else{
@@ -114,10 +108,8 @@
                    LogUtil.debug("微信小程序模板消息推送结果:" + result.toString());
                }
            }
        } catch (Exception e) {
            LogUtil.error("消费者执行异常", e);
        }
    }
}
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/messageBulderDemo/CzcgTemplateMessageBulder.java
New file
@@ -0,0 +1,110 @@
package com.matrix.system.wechart.templateMsg.Task.messageBulderDemo;
import com.alibaba.fastjson.JSONObject;
import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.system.hive.bean.SysOrder;
import com.matrix.system.hive.bean.SysOrderItem;
import com.matrix.system.hive.bean.SysShopInfo;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.*;
import com.matrix.system.wechart.templateMsg.GzhTemplateMessagePojo;
import com.matrix.system.wechart.templateMsg.Task.TemplateMessageBulder;
import com.matrix.system.wechart.templateMsg.UniformMsgPojo;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * 充值成功提醒
 */
@Component
public class CzcgTemplateMessageBulder implements TemplateMessageBulder {
    @Autowired
    SysOrderDao orderDao;
    @Autowired
    SysVipInfoDao vipInfoDao;
    @Autowired
    private SysBeauticianStateDao beauticianStateDao;
    @Autowired
    private SysShopInfoDao shopInfoDao;
    @Autowired
    private  SysOrderItemDao orderItemDao;
    @Override
    public Map buildMsg(Map param) {
        //返回参数
        Map builParam=new HashedMap();
        //获取基础公共参数
        String gzhAppid= (String) param.get("gzhAppid");
        String template_id= (String) param.get("template_id");
        String xcxAppId= (String) param.get("xcxAppId");
        //模板消息列表
        List msgList=new ArrayList();
        //触发点传送的json参数
        JSONObject messageJsonParam= (JSONObject) param.get("messageJsonParam");
        //构建消息主体
        Long orderId= (Long) messageJsonParam.get("orderId");
        SysOrder sysOrder = orderDao.selectById(orderId);
        List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(orderId);
        //校验客户openId (必须)
        SysVipInfo vipInfo=vipInfoDao.selectById(sysOrder.getVipId());
        String touser= vipInfo.getOpenId();
        if(StringUtils.isBlank(touser)){
            builParam.put("error","未获取到"+vipInfo.getVipName()+"用户小程序openid");
            return builParam;
        }
        //自定义信息区START=========================================================================================================
        SysShopInfo sysShopInfo = shopInfoDao.selectById(sysOrder.getShopId());
        String time= DateUtil.dateFormatStr(sysOrder.getPayTime(),DateUtil.DATE_FORMAT_MM);
        //如果一个项目存在多个护理项目则发送多次消息
        String first="您好!充值余额成功";
        for (SysOrderItem orderItem:sysOrderItems){
            first+=orderItem.getShoppingGoods().getName()+"x"+orderItem.getCount()+",";
        }
        first=first.substring(0,first.length());
        UniformMsgPojo uniformMsgPojo=new UniformMsgPojo();
        GzhTemplateMessagePojo messagePojo=new GzhTemplateMessagePojo();
        uniformMsgPojo.setTouser(touser);
        messagePojo.setTemplate_id(template_id);
        messagePojo.setAppid(gzhAppid);
        //个性参数设置
        messagePojo.setFirst(first,"#453454");
        messagePojo.setKeyWord(sysShopInfo.getShopName(),"#453454");
        messagePojo.setKeyWord(vipInfo.getVipNo(),"#453454");
        messagePojo.setKeyWord(time,"#453454");
        messagePojo.setKeyWord(sysOrder.getZkTotal()+"","#453454");
        messagePojo.setRemark("点击【详情】可查询订单明细,若非本人或授权操作,请及时与门店联系","#453454");
        //小程序配置
        GzhTemplateMessagePojo.Miniprogram miniprogram=new GzhTemplateMessagePojo.Miniprogram(xcxAppId,
                "pages/purchaseRecords/detail?id="+orderId);
        messagePojo.setMiniprogram(miniprogram);
        uniformMsgPojo.setMp_template_msg(messagePojo);
        //自定义信息区END=========================================================================================================
        //返回调用者使用的参数(必须)
        msgList.add(uniformMsgPojo);
        builParam.put("msgList",msgList);
        return builParam;
    }
}
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/messageBulderDemo/DdqxTemplateMessageBulder.java
New file
@@ -0,0 +1,110 @@
package com.matrix.system.wechart.templateMsg.Task.messageBulderDemo;
import com.alibaba.fastjson.JSONObject;
import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.system.hive.bean.SysOrder;
import com.matrix.system.hive.bean.SysOrderItem;
import com.matrix.system.hive.bean.SysShopInfo;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.*;
import com.matrix.system.wechart.templateMsg.GzhTemplateMessagePojo;
import com.matrix.system.wechart.templateMsg.Task.TemplateMessageBulder;
import com.matrix.system.wechart.templateMsg.UniformMsgPojo;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * 订单取消提醒
 */
@Component
public class DdqxTemplateMessageBulder implements TemplateMessageBulder {
    @Autowired
    SysOrderDao orderDao;
    @Autowired
    SysVipInfoDao vipInfoDao;
    @Autowired
    private SysBeauticianStateDao beauticianStateDao;
    @Autowired
    private SysShopInfoDao shopInfoDao;
    @Autowired
    private  SysOrderItemDao orderItemDao;
    @Override
    public Map buildMsg(Map param) {
        //返回参数
        Map builParam=new HashedMap();
        //获取基础公共参数
        String gzhAppid= (String) param.get("gzhAppid");
        String template_id= (String) param.get("template_id");
        String xcxAppId= (String) param.get("xcxAppId");
        //模板消息列表
        List msgList=new ArrayList();
        //触发点传送的json参数
        JSONObject messageJsonParam= (JSONObject) param.get("messageJsonParam");
        //构建消息主体
        Long orderId= (Long) messageJsonParam.get("orderId");
        SysOrder sysOrder = orderDao.selectById(orderId);
        List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(orderId);
        //校验客户openId (必须)
        SysVipInfo vipInfo=vipInfoDao.selectById(sysOrder.getVipId());
        String touser= vipInfo.getOpenId();
        if(StringUtils.isBlank(touser)){
            builParam.put("error","未获取到"+vipInfo.getVipName()+"用户小程序openid");
            return builParam;
        }
        //自定义信息区START=========================================================================================================
        SysShopInfo sysShopInfo = shopInfoDao.selectById(sysOrder.getShopId());
        String time= DateUtil.dateFormatStr(sysOrder.getPayTime(),DateUtil.DATE_FORMAT_MM);
        //如果一个项目存在多个护理项目则发送多次消息
        String first="您好!您的订单已取消!";
        String goodsName="";
        for (SysOrderItem orderItem:sysOrderItems){
            goodsName+=orderItem.getShoppingGoods().getName()+"x"+orderItem.getCount()+",";
        }
        goodsName=goodsName.substring(0,first.length());
        UniformMsgPojo uniformMsgPojo=new UniformMsgPojo();
        GzhTemplateMessagePojo messagePojo=new GzhTemplateMessagePojo();
        uniformMsgPojo.setTouser(touser);
        messagePojo.setTemplate_id(template_id);
        messagePojo.setAppid(gzhAppid);
        //个性参数设置
        messagePojo.setFirst(first,"#453454");
        messagePojo.setKeyWord(sysOrder.getOrderNo(),"#453454");
        messagePojo.setKeyWord(goodsName,"#453454");
        messagePojo.setKeyWord(time,"#453454");
        messagePojo.setRemark("如有需要,请重新下单 ,点击【详情】可查询订单明细,若非本人或授权操作,请及时与门店联系","#453454");
        //小程序配置
        GzhTemplateMessagePojo.Miniprogram miniprogram=new GzhTemplateMessagePojo.Miniprogram(xcxAppId,
                "pages/purchaseRecords/detail?id="+orderId);
        messagePojo.setMiniprogram(miniprogram);
        uniformMsgPojo.setMp_template_msg(messagePojo);
        //自定义信息区END=========================================================================================================
        //返回调用者使用的参数(必须)
        msgList.add(uniformMsgPojo);
        builParam.put("msgList",msgList);
        return builParam;
    }
}
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/messageBulderDemo/YycgTemplateMessageBulder.java
@@ -18,9 +18,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * 预约成功提醒
@@ -77,13 +75,13 @@
        //如果一个项目存在多个护理项目则发送多次消息
        String projectInfo="";
        String staffName="";
        Set<String> staffNames=new HashSet<>();
        for (SysBeauticianState beauticianState:beauticianStateList){
            projectInfo+=beauticianState.getProjInfo().getName()+beauticianState.getCount()+"次,";
            staffName+=beauticianState.getBeautiStaffInfo().getSuName()+",";
            staffNames.add(beauticianState.getBeautiStaffInfo().getSuName());
        }
        projectInfo=projectInfo.substring(0,projectInfo.length()-1);
        staffName=staffName.substring(0,staffName.length()-1);
        String staffName=StringUtils.collToStr(staffNames,",");
        UniformMsgPojo uniformMsgPojo=new UniformMsgPojo();
        GzhTemplateMessagePojo messagePojo=new GzhTemplateMessagePojo();
        uniformMsgPojo.setTouser(touser);
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/Task/messageBulderDemo/YydsTemplateMessageBulder.java
New file
@@ -0,0 +1,116 @@
package com.matrix.system.wechart.templateMsg.Task.messageBulderDemo;
import com.alibaba.fastjson.JSONObject;
import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.system.hive.bean.SysBeauticianState;
import com.matrix.system.hive.bean.SysProjServices;
import com.matrix.system.hive.bean.SysShopInfo;
import com.matrix.system.hive.bean.SysVipInfo;
import com.matrix.system.hive.dao.SysBeauticianStateDao;
import com.matrix.system.hive.dao.SysProjServicesDao;
import com.matrix.system.hive.dao.SysShopInfoDao;
import com.matrix.system.hive.dao.SysVipInfoDao;
import com.matrix.system.wechart.templateMsg.GzhTemplateMessagePojo;
import com.matrix.system.wechart.templateMsg.Task.TemplateMessageBulder;
import com.matrix.system.wechart.templateMsg.UniformMsgPojo;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
/**
 * 预约到时提醒
 */
@Component
public class YydsTemplateMessageBulder implements TemplateMessageBulder {
    @Autowired
    SysProjServicesDao projServicesDao;
    @Autowired
    SysVipInfoDao vipInfoDao;
    @Autowired
    private SysBeauticianStateDao beauticianStateDao;
    @Autowired
    private SysShopInfoDao shopInfoDao;
    @Override
    public Map buildMsg(Map param) {
        //返回参数
        Map builParam=new HashedMap();
        //获取基础公共参数
        String gzhAppid= (String) param.get("gzhAppid");
        String template_id= (String) param.get("template_id");
        String xcxAppId= (String) param.get("xcxAppId");
        //模板消息列表
        List msgList=new ArrayList();
        //触发点传送的json参数
        JSONObject messageJsonParam= (JSONObject) param.get("messageJsonParam");
        //构建消息主体
        Long serviceId= (Long) messageJsonParam.get("serviceId");
        SysProjServices sysProjServices = projServicesDao.selectById(serviceId);
        //校验客户openId (必须)
        SysVipInfo vipInfo=vipInfoDao.selectById(sysProjServices.getVipId());
        String touser= vipInfo.getOpenId();
        if(StringUtils.isBlank(touser)){
            builParam.put("error","未获取到"+vipInfo.getVipName()+"用户小程序openid");
            return builParam;
        }
        //自定义信息区START=========================================================================================================
        SysShopInfo sysShopInfo = shopInfoDao.selectById(sysProjServices.getShopId());
        List<SysBeauticianState> beauticianStateList = beauticianStateDao.selectBySerIds(sysProjServices.getId());
        String time= DateUtil.dateFormatStr(sysProjServices.getConsumeTime(),DateUtil.DATE_FORMAT_MM);
        //如果一个项目存在多个护理项目则发送多次消息
        String projectInfo="";
        Set<String> staffNames=new HashSet<>();
        for (SysBeauticianState beauticianState:beauticianStateList){
            projectInfo+=beauticianState.getProjInfo().getName()+beauticianState.getCount()+"次,";
            staffNames.add(beauticianState.getBeautiStaffInfo().getSuName());
        }
        projectInfo=projectInfo.substring(0,projectInfo.length()-1);
        String staffName=StringUtils.collToStr(staffNames,",");
        UniformMsgPojo uniformMsgPojo=new UniformMsgPojo();
        GzhTemplateMessagePojo messagePojo=new GzhTemplateMessagePojo();
        uniformMsgPojo.setTouser(touser);
        messagePojo.setTemplate_id(template_id);
        messagePojo.setAppid(gzhAppid);
        //个性参数设置
        messagePojo.setFirst("您好!您在"+sysShopInfo.getShopName()+"店的预约将在1小时后开始,请准时到店。","#453454");
        messagePojo.setKeyWord(time,"#453454");
        messagePojo.setKeyWord(sysShopInfo.getShopName(),"#453454");
        messagePojo.setKeyWord(sysShopInfo.getShopAddr(),"#453454");
        messagePojo.setKeyWord(projectInfo,"#453454");
        messagePojo.setKeyWord(staffName,"#453454");
        messagePojo.setRemark("请记得准时前往,点击【详情】可查询服务详情。","#453454");
        //小程序配置
        GzhTemplateMessagePojo.Miniprogram miniprogram=new GzhTemplateMessagePojo.Miniprogram(xcxAppId,
                "pages/yuyue/showYyInfo?id="+serviceId);
        messagePojo.setMiniprogram(miniprogram);
        uniformMsgPojo.setMp_template_msg(messagePojo);
        //自定义信息区END=========================================================================================================
        //返回调用者使用的参数(必须)
        msgList.add(uniformMsgPojo);
        builParam.put("msgList",msgList);
        return builParam;
    }
}
zq-erp/src/main/resources/config/application.properties
@@ -4,13 +4,13 @@
#线上测试环境
#spring.datasource.username=ct_test
#spring.datasource.password=123456
#spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
spring.datasource.username=ct_test
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
spring.datasource.username=chuhuan
spring.datasource.password=chuhuan
spring.datasource.url=jdbc:mysql://175.6.132.141:3306/hive_v2_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
#spring.datasource.username=chuhuan
#spring.datasource.password=chuhuan
#spring.datasource.url=jdbc:mysql://175.6.132.141:3306/hive_v2_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
zq-erp/src/main/resources/mybatis/mapper/hive/SysProjServicesDao.xml
@@ -40,6 +40,8 @@
            <result property="companyId" column="company_id"/>
            <result property="comment" column="comment"/>
            <result property="reply" column="reply"/>
            <result property="overtimeNotice" column="overtime_notice"/>
            
            <result property="beautiName" column="beautiName"/>
@@ -47,6 +49,7 @@
            <result property="shopName" column="shopName"/>
            <result property="createStaffName" column="createStaffName"/>
            <result property="bedName" column="bedName"/>
            <result property="vipName" column="VIP_Name"/>
            <association property="vipInfo"  resultMap="com.matrix.system.hive.dao.SysVipInfoDao.SysVipInfoMapSimple" ></association>
@@ -91,7 +94,8 @@
            consume_time,
            company_id,
            comment,
            reply
            reply,
            overtime_notice
        )
    VALUES (
            #{id},
@@ -128,7 +132,8 @@
            #{consumeTime},
            #{companyId},
            #{comment},
            #{reply}
            #{reply},
            #{overtimeNotice}
    )
        
    </insert>
@@ -137,6 +142,18 @@
    <update id="updateOrderTime">
        UPDATE sys_proj_services set CREATE_TIME=#{createTime} WHERE id=#{id} 
    </update>
    <!-- 设置服务单为已通知 -->
    <update id="updateNoticeTimes" >
        UPDATE sys_proj_services set overtime_notice=1
        where  ID in
        <foreach collection="list" index="index" item="item" open="("
                 separator="," close=")">
            #{item}
        </foreach>
    </update>
    
    <update id="update">
        UPDATE sys_proj_services
@@ -241,12 +258,13 @@
                <if test="comment != null  ">
                    comment = #{comment}
                </if>
                <if test="overtimeNotice != null  ">
                    overtime_notice = #{overtimeNotice}
                </if>
        </set>
        WHERE id=#{id} 
    </update>
    <update id="comment">
    </update>
    <!-- 批量删除 -->
    <delete id="deleteByIds" parameterType="java.util.List">
@@ -410,6 +428,20 @@
        left join sys_beautician_state c on a.id=c.SERVICES_ID
        where  a.ID=#{id}
    </select>
    <select id="selectNeedNoticeService" resultMap="SysProjServicesMap">
    select
        a.id,
        a.company_id,
        b.VIP_Name
        FROM sys_proj_services a
        LEFT JOIN sys_vip_info b on b.ID=a.VIP_ID
        where   a.YY_TIME > now()
        and DATE_ADD(now(),INTERVAL 1 HOUR) > a.YY_TIME
        and overtime_notice is null
    </select>
    
    <!-- 根据对象查询-->
    <select id="selectByModel" resultMap="SysProjServicesMap">
@@ -664,7 +696,6 @@
        left join shopping_goods m on g.proj_id=m.id
        where a.id=#{id}
    </select>
</mapper>
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html
@@ -382,7 +382,7 @@
            title="业绩设置"
            :visible.sync="drawer"
            :direction="direction"
            size="50%"
            size="90%"
    >
        <el-row>
            <el-col :span="24">
@@ -899,7 +899,14 @@
                                    item.payMoney = zkPrice * count;
                                }
                                _this.order.payMoney += parseFloat(item.payMoney);
                                _this.achieveList.forEach(achieve=>{
                                    if(achieve.orderItem==item){
                                        achieve.achieveMoney=item.payMoney;
                                    }
                                })
                            });
                            //计算欠款
                            // _this.order.arrears = _this.order.zkTotal - _this.order.payMoney;
                            // if (_this.order.arrears < 0) {
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html
@@ -177,10 +177,7 @@
                    <el-row style="padding: 10px 0;">
                        <h4>消费门店</h4>
                        <el-row style="text-align: center">
                            <el-col :span="10" v-for="item in vipInfo.shopNames">
                                <el-avatar size="small" :src="circleUrl"></el-avatar>
                                <span class="col-style">{{item}}</span>
                            </el-col>
                                <el-tag v-for="item in vipInfo.shopNames" >{{item}}</el-tag>
                        </el-row>
                    </el-row>
                </el-row>