Bläddra i källkod

Merge branch 'dev' of ssh://10.10.100.21/source/smartschool-platform into dev

zhaoy 6 år sedan
förälder
incheckning
551eab9ccd

+ 1 - 1
applications/device/device-server/src/main/java/com/usoftchina/smartschool/device/mapper/IcCardMapper.java

@@ -15,5 +15,5 @@ public interface IcCardMapper {
 
     SysSchoolDTO getSchoolIdByName(@Param("name") String name);
 
-    String selectTemplateId(@Param("schoolId") Long schoolId);
+    String selectTemplateId(@Param("schoolId") Long schoolId, @Param("code") String code);
 }

+ 40 - 28
applications/device/device-server/src/main/java/com/usoftchina/smartschool/device/service/impl/IcCardServiceImpl.java

@@ -7,10 +7,13 @@ import com.usoftchina.smartschool.device.mapper.IcCardMapper;
 import com.usoftchina.smartschool.device.po.Transaction;
 import com.usoftchina.smartschool.device.service.IcCardService;
 import com.usoftchina.smartschool.school.dto.SysSchoolDTO;
+import com.usoftchina.smartschool.school.enums.NoticeTemplate;
 import com.usoftchina.smartschool.utils.ObjectUtils;
 import com.usoftchina.smartschool.utils.http.HmacUtils;
 import com.usoftchina.smartschool.wechat.api.WechatApi;
 import com.usoftchina.smartschool.wechat.dto.MessageInfoDTO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -30,15 +33,14 @@ import java.util.List;
 @Service
 public class IcCardServiceImpl implements IcCardService {
 
-    @Autowired
-    private RestTemplate restTemplate;
-
     @Autowired
     private IcCardMapper icCardMapper;
 
     @Autowired
     private WechatApi wechatApi;
 
+    private static final Logger logger = LoggerFactory.getLogger(AccessControlServiceImpl.class);
+
     @Value("${smartschool.wechat.pushUrl}")
     private String targetURL;
 
@@ -49,38 +51,46 @@ public class IcCardServiceImpl implements IcCardService {
             String appId = sysSchoolDTO.getSchool_appid();
             String secret = sysSchoolDTO.getSchool_secret();
             Long schoolId = sysSchoolDTO.getSchool_id();
-            String templateId = icCardMapper.selectTemplateId(schoolId);
+            String templateId = icCardMapper.selectTemplateId(schoolId, NoticeTemplate.MONEY_NOTICE.getCode());
+            if(!StringUtils.hasText(templateId)){
+                logger.error("学校[{}] 模板[{}]未设置",schoolId,NoticeTemplate.MONEY_NOTICE.getCode());
+                return null;
+            }
             StringBuilder sb = new StringBuilder();
             accTransDetailList.forEach(accTransDetail -> {
-                sb.append(accTransDetail.getGuid() + ",");
                 String oldType = accTransDetail.getAccTransType();
                 accTransDetail.setAccTransType(Transaction.getName(accTransDetail.getAccTransType()));
                 //构造messageInfo对象
-                MessageInfoDTO messageInfo = new MessageInfoDTO();
-                messageInfo.setMsgId(accTransDetail.getGuid());
                 String openId = icCardMapper.SelectParentOpenId(accTransDetail.getEmpNo(), schoolId);
-                messageInfo.setTouser(openId);
-                messageInfo.setAppId(appId);
-                messageInfo.setSecret(secret);
-                //messageInfo.setUserType(2);
-                messageInfo.setTemplateId(templateId);
-                String accNo = accTransDetail.getAccNo();
-                String cardNo = StringUtils.isEmpty(accNo) ? null : accNo.substring(accTransDetail.getAccNo().length() - 4);
-                String header = "您好,您的小孩" + accTransDetail.getEmpName() + "在校的校园卡(卡号:*** " + cardNo + ")发生如下交易";
-                messageInfo.setTitle(header);
-                Date accTransDay = accTransDetail.getAccTransDay();
-                if (null != accTransDay) {
-                    messageInfo.setKeyword1(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(accTransDetail.getAccTransDay()));
+                if(!StringUtils.hasText(openId)){
+                    MessageInfoDTO messageInfo = new MessageInfoDTO();
+                    messageInfo.setMsgId(accTransDetail.getGuid());
+                    sb.append(accTransDetail.getGuid() + ",");
+                    messageInfo.setTouser(openId);
+                    messageInfo.setAppId(appId);
+                    messageInfo.setSecret(secret);
+                    messageInfo.setTemplateId(templateId);
+                    String accNo = accTransDetail.getAccNo();
+                    String cardNo = StringUtils.isEmpty(accNo) ? null : accNo.substring(accTransDetail.getAccNo().length() - 4);
+                    String header = "您好,您的小孩" + accTransDetail.getEmpName() + "在校的校园卡(卡号:*** " + cardNo + ")发生如下交易";
+                    messageInfo.setTitle(header);
+                    Date accTransDay = accTransDetail.getAccTransDay();
+                    if (null != accTransDay) {
+                        messageInfo.setKeyword1(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(accTransDetail.getAccTransDay()));
+                    }
+                    if (Integer.parseInt(oldType) > 15) {
+                        messageInfo.setKeyword2(String.format("%.2f", accTransDetail.getoMoneyValue()));
+                    } else {
+                        messageInfo.setKeyword2(String.format("%.2f", accTransDetail.getiMoneyValue()));
+                    }
+                    messageInfo.setKeyword3(accTransDetail.getAccTransType());
+                    messageInfo.setKeyword4(String.format("%.2f", accTransDetail.getCardMoneyValue()));
+                    messageInfo.setRemark("感谢您使用!");
+                    messageInfoList.add(messageInfo);
+                }else {
+                    logger.info("GUID={}未找到对应的推送人", accTransDetail.getGuid());
                 }
-                if (Integer.parseInt(oldType) > 15) {
-                    messageInfo.setKeyword2(String.format("%.2f", accTransDetail.getoMoneyValue()));
-                } else {
-                    messageInfo.setKeyword2(String.format("%.2f", accTransDetail.getiMoneyValue()));
-                }
-                messageInfo.setKeyword3(accTransDetail.getAccTransType());
-                messageInfo.setKeyword4(String.format("%.2f", accTransDetail.getCardMoneyValue()));
-                messageInfo.setRemark("感谢您使用");
-                messageInfoList.add(messageInfo);
+
             });
             //3.传输
             Result result = wechatApi.sendOutMessages(JSON.toJSONString(messageInfoList));
@@ -106,6 +116,8 @@ public class IcCardServiceImpl implements IcCardService {
                     return ids;
                 }
             }*/
+        }else {
+            logger.error("对应学校名{}或学校{}未找到",sysSchoolDTO.getSchool_name(),sysSchoolDTO.getSchool_id());
         }
         return null;
     }

+ 3 - 0
applications/device/device-server/src/main/resources/mapper/AccessControlRecordMapper.xml

@@ -2,6 +2,9 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.usoftchina.smartschool.device.mapper.AccessControlRecordMapper" >
     <insert id="insertRecordSelective" parameterType="com.usoftchina.smartschool.device.po.AccessControlRecord" >
+        <selectKey  resultType="java.lang.Long" keyProperty="record_id">
+          SELECT LAST_INSERT_ID() AS ID
+        </selectKey>
         insert into out_in_record
         <trim prefix="(" suffix=")" suffixOverrides="," >
             <if test="record_name != null" >

+ 1 - 1
applications/device/device-server/src/main/resources/mapper/IcCardMapper.xml

@@ -19,6 +19,6 @@
   </select>
 
   <select id="selectTemplateId" resultType="string">
-    SELECT st_templateid FROM school_template WHERE ST_SCHOOLID = #{schoolId} and st_code = 'iccard'
+    SELECT st_templateid FROM school_template WHERE ST_SCHOOLID = #{schoolId} and st_code = #{code}
   </select>
 </mapper>

+ 1 - 1
applications/school/school-dto/src/main/java/com/usoftchina/smartschool/school/enums/NoticeTemplate.java

@@ -10,7 +10,7 @@ public enum NoticeTemplate {
     SCORE_NOTICE("score", "成绩通知"),
     UNAUDIT_NOTICE("unAudit", "待审批通知"),
     MEETING_NOTICE("meeting", "会议提醒"),
-    MONEY_NOTICE("money", "资金异动提醒");
+    MONEY_NOTICE("iccard", "资金异动提醒");
 
     private String code;
 

+ 1 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/service/impl/HomeWorkServiceImpl.java

@@ -149,6 +149,7 @@ public class HomeWorkServiceImpl implements HomeWorkService{
             msg.setKeyword2(DateUtils.format());
             msg.setKeyword3(data.getTask_context());
             msg.setTouser(noticer.getOpenid());
+            msg.setRemark("谢谢使用!");
             msg.setAppId(school.getSchool_appid());
             msg.setSecret(school.getSchool_secret());
             msg.setTemplateId(template.getSt_templateid());

+ 1 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/business/service/impl/NoticeServiceImpl.java

@@ -154,7 +154,7 @@ public class NoticeServiceImpl implements NoticeService{
             msg.setKeyword2("校办公室");
             msg.setKeyword3(DateUtils.format());
             msg.setKeyword4(data.getNotify_details());
-            msg.setRemark(data.getNotify_remarks());
+            msg.setRemark("谢谢使用!");
             msg.setTemplateId(template.getSt_templateid());
             msg.setTouser(noticer.getOpenid());
             msg.setAppId(school.getSchool_appid());

+ 5 - 3
applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/service/impl/WxPushServiceImpl.java

@@ -3,6 +3,7 @@ package com.usoftchina.smartschool.wechat.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.github.kevinsawicki.http.HttpRequest;
 import com.usoftchina.smartschool.base.Result;
+import com.usoftchina.smartschool.utils.StringUtils;
 import com.usoftchina.smartschool.wechat.po.MessageInfo;
 import com.usoftchina.smartschool.wechat.service.WxPushService;
 import com.usoftchina.smartschool.wechat.wxUtils.ObjectUtils;
@@ -29,7 +30,7 @@ public class WxPushServiceImpl implements WxPushService{
         if (ObjectUtils.isNotEmpty(openid)){
                 String json="{\"touser\":\""+openid+"\","
                         + "\"template_id\":\""+templateId+"\","
-                        + "\"url\":\""+""+url+""+"\","
+                        + "\"url\":\""+""+ (StringUtils.isEmpty(url) ? "" : url) +""+"\","
                         + "\"data\":{"
                         + "\"first\":{\"value\":\""+title+"\",\"color\":\"#173177\"},"
                         + "\"keyword1\":{\"value\":\""+keyword1+"\",\"color\":\"#173177\"},"
@@ -37,6 +38,7 @@ public class WxPushServiceImpl implements WxPushService{
                         + "\"keyword3\":{\"value\":\""+keyword3+"\",\"color\":\"#173177\"},"
                         + "\"keyword4\":{\"value\":\""+keyword4+"\",\"color\":\"#173177\"},"
                         + "\"remark\":{\"value\":\""+remark+"\",\"color\":\"#173177\"}}}";
+                logger.info("send to wechat, data={}", json);
                 HashMap<String, Object> params=new HashMap<>();
                 params.put("appid", appId);
                 params.put("secret", secret);
@@ -77,7 +79,7 @@ public class WxPushServiceImpl implements WxPushService{
         if (ObjectUtils.isNotEmpty(info.getTouser())){
             String json="{\"touser\":\"" + info.getTouser() + "\","
                     + "\"template_id\":\"" + info.getTemplateId() + "\","
-                    + "\"url\":\"" + "" + info.getUrl() + "" + "\","
+                    + "\"url\":\"" + "" + (StringUtils.isEmpty(info.getUrl()) ? "" : info.getUrl()) + "" + "\","
                     + "\"data\":{"
                     + "\"first\":{\"value\":\"" + info.getTitle() + "\","
                     +"\"color\":\"#173177\"},"
@@ -87,7 +89,7 @@ public class WxPushServiceImpl implements WxPushService{
                     + "\"keyword4\":{\"value\":\"" + info.getKeyword4() + "\",\"color\":\"#173177\"},"
                     + "\"keyword5\":{\"value\":\"" + info.getKeyword5() + "\",\"color\":\"#173177\"},"
                     + "\"remark\":{\"value\":\"" + info.getRemark() + "\",\"color\":\"#173177\"}}}";
-
+            logger.info("send to wechat, data={}", json);
             HashMap<String, Object> params=new HashMap<>();
             params.put("appid", info.getAppId());
             params.put("secret", info.getSecret());