Преглед на файлове

Merge branch 'master' of http://git.iamberry.com/hexiugang/iamberry-common-parent

wangxiaoming преди 6 години
родител
ревизия
84aff0f78b

+ 182 - 0
watero-common-core/src/main/java/com/iamberry/wechat/tools/SendMessageUtil.java

@@ -0,0 +1,182 @@
+package com.iamberry.wechat.tools;
+
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+
+@Component
+public class SendMessageUtil {
+		
+		//快递公司列表
+		public static HashMap<String, String> hashmap = new HashMap<String, String>();
+		//正式环境
+		{
+			hashmap.put("sto", "申通快递");
+			hashmap.put("yto", "圆通快递");
+			hashmap.put("sf", "顺丰快递");
+			hashmap.put("longbanwuliu", "龙邦快递");
+			hashmap.put("ems", "邮政EMS");
+			hashmap.put("zto", "中通快递");
+			hashmap.put("zjs", "宅急送");
+			hashmap.put("yunda", "韵达快递");
+			hashmap.put("cces", "cces快递");
+			hashmap.put("pick", "上门提货");
+			hashmap.put("htky", "汇通快递");
+			hashmap.put("ttkdex", "天天快递");
+			hashmap.put("stars", "邮政EMS");
+			hashmap.put("jd", "星晨急便");
+			hashmap.put("01", "其他");
+			hashmap.put("02", "上门送货");
+		}
+		
+		/**
+		 * 发送模板通知给用户
+		 * @param date data 日期
+		 * @param openId 接受的用户id
+		 * @param url  点击打开的url
+		 * @param type 发送类型 1,订单审核结果通知 2,审核结果通知 3、商品入库通知,4、提货申请通知 5、申请单出库通知
+		 * @return
+		 */
+		public boolean sendTemplateMessageToOpenid(String date,String openId, String url,Integer type) {
+			boolean result = false;
+			switch (type) {
+			case 1:  //1,订单审核结果通知
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId,ResultInfo.ORDER_REVIEW_RESULTS, date, url);
+				break;
+			case 2:  // 2,审核结果通知
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.REVIEW_RESULTS, date, url);
+				break;
+			case 3:  //3、商品入库通知
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.GOODS_WAREHOUSING_NOTICE, date, url);
+				break;
+			case 4:  //4、提货申请通知
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.APPLICATION_DELIVERY_NOTIFICATION, date, url);
+				break;
+			case 5:  //5、申请单出库通知 (通过/驳回)
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.DELIVERY_APPLICATION_FORM, date, url);
+				break;
+			default: 
+				break;
+			}
+			result = true;
+			return  result;
+		}
+		
+		public static void main(String[] args) {
+			String date = "{'first':{'color':'#173177', 'value':'尊敬的客户您好~您的订单已发货~'}, 'order_id':{'color':'#173177','value':'1009145345B11792L'}, 'package_id':{'color':'#173177','value':'yuantong:34234234'}, 'remark':{'color':'#173177', 'value':'点击进入商城查看-->>'}}";
+			String openId = "o-icas0dRzE7WYAEAmcX4BQCUyFo";
+			String appId = "wxd995fb95b97ece1b";// 应用ID
+			String appSecret = "34922854462fba23cf54ce859349fcf4";// 应用密钥
+			
+			WeixinUtil.sendTemplateMessage(appId, appSecret, openId, "744KA1PdB1I5PzRcjtxqbEz5t2bp8vdsi4I2ytW1rbE", date, "xx");
+			System.out.println("发送成功");
+		}
+		
+		/**
+		 * 订单审核结果推送
+		 * @param first  标题
+		 * @param keyword1	订单号
+		 * @param keyword2	申请人姓名
+		 * @param keyword3	申请时间
+		 * @param keyword4	详细资料
+		 * @param remark	全部内容
+		 * @param openId	用户openid
+		 * @param url	地址
+		 */
+		public void orderReviewResultsPush(String first,String keyword1,String keyword2,String keyword3,String keyword4,String remark,String openId,String url){
+			String temp = ResultInfo.ORDERREVIEWRESULTS;
+			temp = temp.replaceFirst("firstValueIamberry", first)
+					.replaceFirst("keyword1Value",keyword1)
+					.replaceFirst("keyword2Value",keyword2)
+					.replaceFirst("keyword3Value",keyword3)
+					.replaceFirst("keyword4Value",keyword4)
+					.replaceFirst("remarkValue",remark);
+				sendTemplateMessageToOpenid(temp, openId, url,1);
+		}
+
+
+	/**
+	 * 审核结果通知推送
+	 * @param first  标题
+	 * @param keyword1	姓名
+	 * @param keyword2	审核结果
+	 * @param keyword3	审核时间
+	 * @param remark	全部内容
+	 * @param openId	用户openid
+	 * @param url	地址
+	 */
+	public void reviewResultsPush(String first,String keyword1,String keyword2,String keyword3,String remark,String openId,String url){
+		String temp = ResultInfo.REVIEWRESULTS;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("keyword1Value",keyword1)
+				.replaceFirst("keyword2Value",keyword2)
+				.replaceFirst("keyword3Value",keyword3)
+				.replaceFirst("remarkValue",remark);
+		sendTemplateMessageToOpenid(temp, openId, url,2);
+	}
+
+	/**
+	 * 商品入库通知推送
+	 * @param first
+	 * @param keyword1	商品信息
+	 * @param keyword2	入库数量
+	 * @param keyword3	操作人员
+	 * @param keyword4	入库仓库
+	 * @param remark	全部内容
+	 * @param openId	用户openid
+	 * @param url	地址
+	 */
+	public void putStoragePush(String first,String keyword1,String keyword2,String keyword3,String keyword4,String remark,String openId,String url){
+		String temp = ResultInfo.GOODSWAREHOUSINGNOTICE;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("keyword1Value",keyword1)
+				.replaceFirst("keyword2Value",keyword2)
+				.replaceFirst("keyword3Value",keyword3)
+				.replaceFirst("keyword4Value",keyword4)
+				.replaceFirst("remarkValue",remark);
+		sendTemplateMessageToOpenid(temp, openId, url,3);
+	}
+
+	/**
+	 * 提货申请通知推送
+	 * @param first
+	 * @param keyword1	报检单号
+	 * @param keyword2	提货方
+	 * @param keyword3	提货仓库
+	 * @param keyword4	申请时间
+	 * @param remark	全部内容
+	 * @param openId	用户openid
+	 * @param url	地址
+	 */
+	public void applicationDeliveryPush(String first,String keyword1,String keyword2,String keyword3,String keyword4,String remark,String openId,String url){
+		String temp = ResultInfo.APPLICATIONDELIVERYNOTIFICATION;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("keyword1Value",keyword1)
+				.replaceFirst("keyword2Value",keyword2)
+				.replaceFirst("keyword3Value",keyword3)
+				.replaceFirst("keyword4Value",keyword4)
+				.replaceFirst("remarkValue",remark);
+		sendTemplateMessageToOpenid(temp, openId, url,4);
+	}
+
+
+	/**
+	 * 申请单出库通知推送
+	 * @param first  标题
+	 * @param keyword1	申请时间
+	 * @param keyword2	申请单号
+	 * @param keyword3	物料名称
+	 * @param remark	全部内容
+	 * @param openId	用户openid
+	 * @param url	地址
+	 */
+	public void applicationFormPush(String first,String keyword1,String keyword2,String keyword3,String remark,String openId,String url){
+		String temp = ResultInfo.DELIVERYAPPLICATIONFORM;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("keyword1Value",keyword1)
+				.replaceFirst("keyword2Value",keyword2)
+				.replaceFirst("keyword3Value",keyword3)
+				.replaceFirst("remarkValue",remark);
+		sendTemplateMessageToOpenid(temp, openId, url,5);
+	}
+}

+ 43 - 1
watero-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java

@@ -164,6 +164,9 @@ public class ResultInfo {
 	 * 	付费代理商支付后推送推荐人通知  	模版id	
 	 */
 	public static String prize_receive_push="";
+
+
+
 	/**
 	 * 返现到账通知消息模版
 	 */
@@ -195,7 +198,46 @@ public class ResultInfo {
 	
 	/** 	奖品领取通知 	*/
 	public static String PRIZERECEIVEPUSH = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'keyword4':{'color':'#173177','value':'keyword4Value'},'keyword5':{'color':'#173177','value':'keyword5Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
-	
+
+
+
+
+
+	/** 	RST模板消息 statr 	*/
+	/**
+	 * 	订单审核结果通知  	模版id
+	 */
+	public static String ORDER_REVIEW_RESULTS="sXugZsD-FxwovAlpAMGCVrBT9-EK6drrp3KMhsj6FFQ";
+	/**
+	 * 	审核结果通知  	模版id
+	 */
+	public static String REVIEW_RESULTS="SNTCjd3pIZSZiR7PANfqqHq6-uZx4WsiM6y1jEs54l4";
+	/**
+	 * 	商品入库通知  	模版id
+	 */
+	public static String GOODS_WAREHOUSING_NOTICE="cR30pT2F2Zy6Z8xu7e8rPWixldDetLq26vJzhwKslNc";
+	/**
+	 * 	提货申请通知  	模版id
+	 */
+	public static String APPLICATION_DELIVERY_NOTIFICATION="t2oBudXx7wDm8r2h1N97Y6JNZCr1mkzs_EybGR6JXVQ";
+	/**
+	 * 	申请单出库通知  	模版id(驳回和通过都使用这个)
+	 */
+	public static String DELIVERY_APPLICATION_FORM="nxUfbukZ-h1kglyqpqo7CbSsA_DMeXSV9r-8d7jV4Mk";
+
+	/** 	订单审核结果通知 	*/
+	public static String ORDERREVIEWRESULTS = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'keyword4':{'color':'#173177','value':'keyword4Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+	/** 	审核结果通知 	*/
+	public static String REVIEWRESULTS = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+	/** 	商品入库通知 	*/
+	public static String GOODSWAREHOUSINGNOTICE = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'keyword4':{'color':'#173177','value':'keyword4Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+	/** 	提货申请通知	*/
+	public static String APPLICATIONDELIVERYNOTIFICATION = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'keyword4':{'color':'#173177','value':'keyword4Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+	/** 	申请单出库通知 	*/
+	public static String DELIVERYAPPLICATIONFORM = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+
+	/** 	RST模板消息 end 	*/
+
 	/**
 	 * 微信模板消息提示语
 	 */

+ 6 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/approval/ApprovalOrderService.java

@@ -103,4 +103,10 @@ public interface ApprovalOrderService {
      * @return
      */
     ApprovalProductionItem getProductionItem(Integer itemId);
+
+    /**
+     * 根据审批id查询生产审批信息
+     * @return
+     */
+    ApprovalProduction getApprovalProductionById(Integer approvalId);
 }

+ 8 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/sys/SysService.java

@@ -106,7 +106,7 @@ public interface SysService {
 
     /**
      * 根据用户openid获取登录信息
-     * @param admin
+     * @param openid
      * @return
      */
     Admin getByOpenid(String openid);
@@ -116,4 +116,11 @@ public interface SysService {
      * @return
      */
     Admin getByName(String adminName);
+
+    /**
+     * 获取管理员信息
+     * @param admin
+     * @return
+     */
+    Admin getAdminInfo(Admin admin);
 }

+ 21 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApprovalOrderServiceImpl.java

@@ -12,12 +12,14 @@ import com.iamberry.rst.service.sys.mapper.SysMapper;
 import com.iamberry.rst.util.PageUtil;
 import com.iamberry.wechat.core.entity.WechatUtils;
 import com.iamberry.wechat.tools.ResponseJson;
+import com.iamberry.wechat.tools.SendMessageUtil;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -33,6 +35,7 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
     private SysMapper sysMapper;
 
 
+
     @Override
     public Integer insertApprovalInfo(ApprovalInfo approvalInfo) {
         return approvalOrderMapper.insertApprovalInfo(approvalInfo);
@@ -67,7 +70,7 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
         //添加生产审批信息
         approvalProduction.setApprovalId(approvalInfo.getApprovalId());
         approvalProduction.setApplicantId(admin.getAdminId());
-        approvalProduction.setApplicantOrderNo("订单编号");
+        approvalProduction.setApplicantOrderNo("123456789");//订单编号未定
         approvalProduction.setApplicantName(admin.getAdminName());
         //申请人ID
         approvalProduction.setApplicantId(1);
@@ -128,6 +131,18 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
             if(approvalOrderMapper.updateApprovalInfo(info) < 1){
                 throw new RuntimeException("修改审批信息失败"+tasknfo);
             }
+            //推送微信模板消息通知
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            SendMessageUtil sendMessageUtil = new SendMessageUtil();
+            sendMessageUtil.orderReviewResultsPush("你好,你有个订单需要你的审核",
+                    approvalProduction.getApplicantOrderNo(),
+                    approvalInfo.getApprovalApplicant(),
+                    format.format(new Date()),
+                    approvalInfo.getApprovalName(),
+                    "点击查看详细信息",
+                    approvalAdmin.getAdminOpenId(),
+                    "url");
+
         }
         return true;
     }
@@ -209,4 +224,9 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
     public ApprovalProductionItem getProductionItem(Integer itemId) {
         return approvalOrderMapper.getProductionItem(itemId);
     }
+
+    @Override
+    public ApprovalProduction getApprovalProductionById(Integer approvalId) {
+        return approvalOrderMapper.getApprovalProductionById(approvalId);
+    }
 }

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/ApprovalOrderMapper.java

@@ -91,6 +91,11 @@ public interface ApprovalOrderMapper {
       * @return
       */
      ApprovalProductionItem getProductionItem(Integer itemId);
+     /**
+      * 根据审批id查询生产审批信息
+      * @return
+      */
+     ApprovalProduction getApprovalProductionById(Integer approvalId);
 
 
 

+ 26 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/approvalOrderMapper.xml

@@ -550,4 +550,30 @@
     where
     api.item_id = #{itemId}
   </select>
+
+  <!--根据审批id查询生产审批信息-->
+  <select id="getApprovalProductionById" parameterType="Integer" resultType="ApprovalProduction">
+    SELECT
+    ap.production_id,
+    ap.approval_id,
+    ap.applicant_order_no,
+    ap.applicant_name,
+    ap.applicant_id,
+    ap.order_name,
+    ap.company_name,
+    ap.contact_name,
+    ap.contact_tel,
+    ap.production_delivery_date,
+    ap.production_delivery_way,
+    ap.production_delivery_desc,
+    ap.production_state,
+    ap.production_packing_way,
+    ap.production_remark,
+    ap.production_create_time,
+    ap.production_update_time,
+    ap.contract_name
+    from tb_rst_approval_production ap
+    where
+    ap.approval_id = #{approvalId}
+  </select>
 </mapper>

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/SysServiceImpl.java

@@ -129,6 +129,11 @@ public class SysServiceImpl implements SysService {
     }
 
     @Override
+    public Admin getAdminInfo(Admin admin) {
+        return sysMapper.getAdminInfo(admin);
+    }
+
+    @Override
     public List<Admin> listGetAdmin(Admin admin) {
         return sysMapper.listAdmin(admin);
     }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/SysMapper.java

@@ -106,4 +106,11 @@ public interface SysMapper {
      * @return
      */
     Admin getByName(String adminName);
+
+    /**
+     * 获取管理员信息
+     * @param admin
+     * @return
+     */
+    Admin getAdminInfo(Admin admin);
 }

+ 16 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/sysMapper.xml

@@ -221,6 +221,21 @@
 	<select id="getByName" parameterType="String" resultType="Admin">
 		SELECT * FROM tb_rst_sys_admin
 		WHERE
-			admin_name = #{adminName}
+			admin_account = #{admin_account}
+	</select>
+	<!-- 获取管理员信息 -->
+	<select id="getAdminInfo" parameterType="Admin" resultType="Admin">
+		SELECT * FROM tb_rst_sys_admin
+		<where>
+			<if test="adminOpenId != null">
+				admin_open_id = #{adminOpenId}
+			</if>
+			<if test="adminAccount != null">
+				and admin_account = #{adminAccount}
+			</if>
+			<if test="adminId != null">
+				and admin_id = #{adminId}
+			</if>
+		</where>
 	</select>
 </mapper>

+ 194 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/ApprovalController.java

@@ -1,5 +1,6 @@
 package com.iamberry.rst.controllers.approval;
 
+import com.auth0.jwt.internal.org.apache.commons.io.FileUtils;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.iamberry.rst.core.approval.*;
@@ -10,8 +11,11 @@ import com.iamberry.rst.faces.approval.ApprovalOrderService;
 import com.iamberry.rst.faces.approval.ApprovalTaskService;
 import com.iamberry.rst.faces.sys.SysService;
 import com.iamberry.wechat.core.entity.WechatUtils;
+import com.iamberry.wechat.file.FileType;
 import com.iamberry.wechat.tools.ResponseJson;
 import com.iamberry.wechat.tools.ResultInfo;
+import com.iamberry.wechat.tools.SendMessageUtil;
+import com.iamberry.wechat.tools.StrUtils;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +26,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.context.ContextLoader;
 import org.springframework.web.context.WebApplicationContext;
 import org.springframework.web.multipart.commons.CommonsMultipartFile;
+import sun.misc.BASE64Decoder;
 
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
@@ -43,6 +48,8 @@ public class ApprovalController {
     private ApprovalTaskService approvalTaskService;
     @Autowired
     private SysService sysService;
+    @SuppressWarnings("restriction")
+    private BASE64Decoder decoder = new BASE64Decoder();
     /**
      * 新增审批信息
      * @param request
@@ -148,7 +155,162 @@ public class ApprovalController {
         return responseJson;
     }
 
-/**
+    /**
+     * base图片上传
+     * @throws IOException
+     */
+    @SuppressWarnings({ "deprecation", "restriction" })
+    @ResponseBody
+    @RequestMapping("/baseFileUpload")
+    public ResponseJson baseFileUpload(HttpServletRequest req) throws IOException{
+        ResponseJson responseJson = new ResponseJson();
+
+        //取到前台传过来的 base64图片 并创建要存放在项目中的路径
+        WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
+        ServletContext servletContext = webApplicationContext.getServletContext();
+        String imgFilePath = servletContext.getRealPath(ResultInfo.CONTRACT_IMAGE);
+        try {
+            isExitsPath(imgFilePath);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        //创建分享对象 并存入数据库
+        String postParams = StrUtils.getPostParamsStr(req);		//data:image/png;base64,iVBORw0
+        String[] shareImgUrlArr = org.apache.commons.lang3.StringUtils.split(postParams, ",");
+        String imgUrl = "";
+        HashMap<String, String> map = new HashMap<String, String>();
+        if(shareImgUrlArr != null && shareImgUrlArr.length > 0){
+            // 防止内存溢出
+            String suffixName = new String (shareImgUrlArr[0].split(";")[0].split("/")[1]);
+            String shareImgUrl = new String (shareImgUrlArr[1]);
+
+            // 通过文件头判断后缀
+            byte [] b = new byte[28];
+            shareImgUrl.getBytes(0, 27, b, 0);
+            String temp = new String(b);
+            b = decoder.decodeBuffer(temp);
+
+            // 二进制转换文件头
+            String type = null;
+            String fileHead = byte2hex(b);
+            fileHead = fileHead.toUpperCase();
+
+            // 获取系统支持的文件类型,如果不支持,返回默认的图片
+            FileType[] fileTypes = FileType.values();
+            for (FileType fileType : fileTypes) {
+                if (fileHead.startsWith(fileType.getValue())) {
+                    type = fileType.getSuffix();
+                    break;
+                }
+            }
+            if (type == null) {
+                System.err.println("上传图片异常..." + fileHead);
+
+            } else {
+                String fileName = getFileName(suffixName, type);
+                boolean flag = generateImage(shareImgUrl, imgFilePath + "/" + fileName);
+                if(flag){
+                    imgUrl = imgFilePath + fileName;
+                    responseJson.setReturnCode(200);
+                    responseJson.addResponseKeyValue("imgUrl",ResultInfo.CONTRACT_IMAGE+imgUrl);
+                }else{
+                    /*imgUrl = "/iamberry/default.png";*/
+                    responseJson.setReturnCode(500);
+                }
+            }
+        }
+
+        //返回值拼凑
+        /*String requurl = req.getContextPath();//获取web项目的路径*/
+
+        return responseJson;
+    }
+
+    /**
+     * 判断路径是否存在 不存在则创建
+     * create date 2016年6月1日
+     * @author 穆再兴
+     * @param path
+     * @return
+     * @throws InterruptedException
+     */
+    public boolean isExitsPath(String path)throws InterruptedException{
+        String [] paths=path.split("/");
+        StringBuilder fullPath=new StringBuilder();
+        for (int i = 0; i < paths.length; i++) {
+            fullPath.append(paths[i]).append("/");
+            File file=new File(fullPath.toString());
+            if(!file.exists()){
+                file.mkdir();
+            }
+        }
+        File file=new File(fullPath.toString());//目录全路径
+        if (!file.exists()) {
+            return true;
+        }else{
+            return false;
+        }
+    }
+    public static String byte2hex(byte[] b) { //一个字节的数,
+        // 转成16进制字符串
+        String hs = "";
+        String tmp = "";
+        for (int n = 0; n < b.length; n++) {
+            //整数转成十六进制表示
+            tmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
+            if (tmp.length() == 1) {
+                hs = hs + "0" + tmp;
+            } else {
+                hs = hs + tmp;
+            }
+        }
+        tmp = null;
+        return hs;
+    }
+
+    /**
+     * 获取 file 的文件名
+     * create date 2016年6月1日
+     * @author 穆再兴
+     * @param
+     * @param
+     * @return
+     */
+    private String getFileName(String suffixName, String type){
+        long time = new Date().getTime();
+        Long timeStr = new Long(time);
+        return  timeStr + "." + type;
+    }
+
+    /**
+     * 对字节数组字符串进行Base64解码生成图片 并存入对应的路径
+     * create date 2016年6月1日
+     * @author 穆再兴
+     * @param imgStr Base64字符串
+     * @param imgFilePath 存入的路径
+     * @return
+     */
+    private boolean generateImage(String imgStr, String imgFilePath) {
+        if (imgStr == null) {return false;}// 图像数据为空
+        try {
+            // Base64解码
+            @SuppressWarnings("restriction")
+            byte[] bytes = decoder.decodeBuffer(imgStr);
+            for (int i = 0; i < bytes.length; ++i) {
+                if (bytes[i] < 0) {// 调整异常数据
+                    bytes[i] += 256;
+                }
+            }
+            // 生成图片
+            File file = new File(imgFilePath);
+            FileUtils.writeByteArrayToFile(file, bytes);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+    /**
  *  查询我发起的/我审核的列表
  * @param approvalInfo
  * @param pageSize
@@ -249,6 +411,24 @@ public class ApprovalController {
                     if(approvalOrderService.updateApprovalInfo(info) < 1){
                         return  ResponseJson.getFAILURE();
                     }
+                    //推送微信模板消息通知
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
+                    ApprovalProduction production = approvalOrderService.getApprovalProductionById(approvalInfo.getApprovalId());
+                    Admin admininfo = new Admin();
+                    admininfo.setAdminId(production.getApplicantId());
+                    admininfo = sysService.getAdminInfo(admininfo);
+                    if(admininfo.getAdminOpenId() == null ){
+                        return  ResponseJson.getFAILURE();
+                    }
+                    SendMessageUtil sendMessageUtil = new SendMessageUtil();
+                    sendMessageUtil.reviewResultsPush("亲,您提交的申请 "+admin.getAdminName()+" 已处理。",
+                            production.getApplicantName(),
+                            "通过",
+                            format.format(new Date()),
+                            "审核通过后可通过公众号进入系统",
+                            admininfo.getAdminOpenId(),
+                            "url");
+
                 }else if((Integer) taskMap.get("status") == 0){//还有下一个审批人,需要增加审批历史任务
                     if(taskMap.get("users") == null){
                         return  ResponseJson.getFAILURE();
@@ -274,6 +454,19 @@ public class ApprovalController {
                         if(approvalOrderService.updateApprovalInfo(info) < 1){
                             return  ResponseJson.getFAILURE();
                         }
+                                //推送微信模板消息通知
+                                //查询审批订单信息
+                        ApprovalProduction production = approvalOrderService.getApprovalProductionById(approvalInfo.getApprovalId());
+                        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
+                        SendMessageUtil sendMessageUtil = new SendMessageUtil();
+                        sendMessageUtil.orderReviewResultsPush("你好,你有个订单需要你的审核",
+                                production.getApplicantOrderNo(),
+                                approvalInfo.getApprovalApplicant(),
+                                format.format(new Date()),
+                                approvalInfo.getApprovalName(),
+                                "点击查看详细信息",
+                                approvalAdmin.getAdminOpenId(),
+                                "url");
                     }
                 }
                 //添加流程信息记录

+ 0 - 215
watero-rst-web/src/main/java/com/iamberry/rst/utils/SendMessageUtil.java

@@ -1,215 +0,0 @@
-package com.iamberry.rst.utils;
-
-import com.iamberry.wechat.tools.NameUtils;
-import com.iamberry.wechat.tools.ResultInfo;
-import com.iamberry.wechat.tools.WeixinUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.HashMap;
-
-@Component
-public class SendMessageUtil {
-		
-		//快递公司列表
-		public static HashMap<String, String> hashmap = new HashMap<String, String>();
-		//正式环境
-		{
-			hashmap.put("sto", "申通快递");
-			hashmap.put("yto", "圆通快递");
-			hashmap.put("sf", "顺丰快递");
-			hashmap.put("longbanwuliu", "龙邦快递");
-			hashmap.put("ems", "邮政EMS");
-			hashmap.put("zto", "中通快递");
-			hashmap.put("zjs", "宅急送");
-			hashmap.put("yunda", "韵达快递");
-			hashmap.put("cces", "cces快递");
-			hashmap.put("pick", "上门提货");
-			hashmap.put("htky", "汇通快递");
-			hashmap.put("ttkdex", "天天快递");
-			hashmap.put("stars", "邮政EMS");
-			hashmap.put("jd", "星晨急便");
-			hashmap.put("01", "其他");
-			hashmap.put("02", "上门送货");
-		}
-		
-		/**
-		 * 发送模板通知给用户
-		 * @param date data 日期
-		 * @param openId 接受的用户id
-		 * @param url  点击打开的url
-		 * @param type 发送类型 1,收益成功通知 2,发货提醒通知 3、收入提醒通知,4、订单未支付通知 5、试用进度提醒
-		 * @return
-		 */
-		public boolean sendTemplateMessageToOpenid(String date,String openId, String url,Integer type) {
-			boolean result = false;
-			switch (type) {
-			case 1:  //1,收益成功通知
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId,ResultInfo.rewards_template_id, date, url);
-				break;
-			case 2:  // 2,发货提醒通知 
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.Shipment_template_id, date, url);
-				break;
-			case 3:  //3、收入提醒通知
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.Income_template_id, date, url);
-				break;
-			case 4:  //4、订单未支付通知
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.Order_template_id, date, url);
-				break;
-			case 5:  //5、试用进度提醒
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.trial_progress_remind, date, url);
-				break;
-			case 6:  //6、试用申请通知
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.probation_apply_notice, date, url);
-				break;
-			case 7:  //7、试用申请成功通知
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.probation_apply_success, date, url);
-				break;
-			case 8:  //8、订单支付成功
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.probation_pay_success, date, url);
-				break;
-			case 9:  //9、订单关闭成功
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.probation_shut_down, date, url);
-				break;
-			case 10:  //10、奖品领取通知 
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.prize_receive_push, date, url);
-				break;
-			default: 
-				break;
-			}
-			result = true;
-			return  result;
-		}
-		
-		public static void main(String[] args) {
-			String date = "{'first':{'color':'#173177', 'value':'尊敬的客户您好~您的订单已发货~'}, 'order_id':{'color':'#173177','value':'1009145345B11792L'}, 'package_id':{'color':'#173177','value':'yuantong:34234234'}, 'remark':{'color':'#173177', 'value':'点击进入商城查看-->>'}}";
-			String openId = "o-icas0dRzE7WYAEAmcX4BQCUyFo";
-			String appId = "wxd995fb95b97ece1b";// 应用ID
-			String appSecret = "34922854462fba23cf54ce859349fcf4";// 应用密钥
-			
-			WeixinUtil.sendTemplateMessage(appId, appSecret, openId, "744KA1PdB1I5PzRcjtxqbEz5t2bp8vdsi4I2ytW1rbE", date, "xx");
-			System.out.println("发送成功");
-		}
-		
-		/**
-		 * 试用进度提醒推送
-		 * @param first  标题
-		 * @param keyword1	商品名称
-		 * @param keyword2	订单编号
-		 * @param keyword3	申请时间
-		 * @param keyword4	截止时间
-		 * @param remark	全部内容
-		 * @param openId	用户openid
-		 * @param url	地址
-		 */
-		public void probationPush(String first,String keyword1,String keyword2,String keyword3,String keyword4,String remark,String openId,String url){
-			String temp = ResultInfo.PROBATIONPUSH;
-			temp = temp.replaceFirst("firstValueIamberry", first)
-					.replaceFirst("keyword1Value",keyword1)
-					.replaceFirst("keyword2Value",keyword2)
-					.replaceFirst("keyword3Value",keyword3)
-					.replaceFirst("keyword4Value",keyword4)
-					.replaceFirst("remarkValue",remark);
-				sendTemplateMessageToOpenid(temp, openId, url,5);
-				temp = ResultInfo.PROBATIONPUSH;
-		}
-		
-		/**
-		 * 试用开始通知
-		 * @param first 标题
-		 * @param keyword1	商品信息
-		 * @param keyword2	申请时间
-		 * @param remark	全部内容
-		 * @param openId	用户openid
-		 * @param url	地址
-		 */
-		public void probationApplyNotice(String first,String keyword1,String keyword2,String remark,String openId,String url){
-			String temp = ResultInfo.PROBATIONAPPLYNOTICE;
-			temp = temp.replaceFirst("firstValueIamberry", first)
-					.replaceFirst("keyword1Value",keyword1)
-					.replaceFirst("keyword2Value",keyword2)
-					.replaceFirst("remarkValue",remark);
-				sendTemplateMessageToOpenid(temp, openId, url,6);
-		}
-		/**
-		 * 派送成功通知
-		 * @param first  标题
-		 * @param keyword1	申请单号
-		 * @param keyword2	申请时间
-		 * @param keyword3	应付金额
-		 * @param keyword4	应付积分
-		 * @param keyword5	支付方式
-		 * @param remark	全部内容
-		 * @param openId	用户openid
-		 * @param url	地址
-		 */
-		public void probationApplySuccess(String first,String keyword1,String keyword2,String keyword3,String keyword4,String keyword5,String remark,String openId,String url){
-			String temp = ResultInfo.PROBATIONAPPLYSUCCESS;
-			temp = temp.replaceFirst("firstValueIamberry", first)
-					.replaceFirst("keyword1Value",keyword1)
-					.replaceFirst("keyword2Value",keyword2)
-					.replaceFirst("keyword3Value",keyword3)
-					.replaceFirst("keyword4Value",keyword4)
-					.replaceFirst("keyword5Value",keyword5)
-					.replaceFirst("remarkValue",remark);
-				sendTemplateMessageToOpenid(temp, openId, url,7);
-		}
-		/**
-		 * 试用订单支付成功
-		 * @param first  标题
-		 * @param keyword1	支付金额
-		 * @param keyword2	商品信息
-		 * @param remark	全部内容
-		 * @param openId	用户openid
-		 * @param url	地址
-		 */
-		public void probationPaySuccess(String first,String keyword1,String keyword2,String remark,String openId,String url){
-			String temp = ResultInfo.PROBATIONPAYSUCCESS;
-			temp = temp.replaceFirst("firstValueIamberry", first)
-					.replaceFirst("orderMoneySumValue",keyword1)
-					.replaceFirst("orderProductNameValue",keyword2)
-					.replaceFirst("remarkValue",remark);
-			sendTemplateMessageToOpenid(temp, openId, url,8);
-		}
-		/**
-		 * 试用订单关闭成功
-		 * @param first  标题
-		 * @param keyword1	支付金额
-		 * @param keyword2	商品信息
-		 * @param remark	全部内容
-		 * @param openId	用户openid
-		 * @param url	地址
-		 */
-		public void probationShutDown(String first,String transid,String fee,String pay_time,String remark,String openId,String url){
-			String temp = ResultInfo.PROBATIONSHUTDOWN;
-			temp = temp.replaceFirst("firstValueIamberry", first)
-					.replaceFirst("transidValue",transid)
-					.replaceFirst("feeValue",fee)
-					.replaceFirst("pay_timeValue",pay_time)
-					.replaceFirst("remarkValue",remark);
-			sendTemplateMessageToOpenid(temp, openId, url,9);
-		}
-		
-		/**
-		 * 推荐人领取通知
-		 * @param first  标题
-		 * @param keyword1	被推荐人
-		 * @param keyword2	消费商家
-		 * @param keyword3	消费金额
-		 * @param keyword4	消费时间
-		 * @param keyword4	推荐奖励
-		 * @param remark	全部内容
-		 * @param openId	用户openid
-		 * @param url	跳转地址
-		 */
-		public void prizeReceivePush(String first,String keyword1,String keyword2,String keyword3,String keyword4,String keyword5,String remark,String openId,String url){
-			String temp = ResultInfo.PRIZERECEIVEPUSH;
-			temp = temp.replaceFirst("firstValueIamberry", first)
-					.replaceFirst("keyword1Value",keyword1)
-					.replaceFirst("keyword2Value",keyword2)
-					.replaceFirst("keyword3Value",keyword3)
-					.replaceFirst("keyword4Value",keyword4)
-					.replaceFirst("keyword5Value",keyword5)
-					.replaceFirst("remarkValue",remark);
-				sendTemplateMessageToOpenid(temp, openId, url,10);
-		}
-}