Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

xian 6 vuotta sitten
vanhempi
commit
083b95c0c5

+ 3 - 0
watero-common-tool/pom.xml

@@ -11,8 +11,11 @@
 	
 	<!-- 工具类本身并不依赖其他模块 -->
 	<artifactId>watero-common-tool</artifactId>
+
+
 	
 	<dependencies>
+
         <!-- JWT -->
         <dependency>
 		    <groupId>com.auth0</groupId>

+ 5 - 5
watero-rst-core/src/main/java/com.iamberry.rst.core/approval/ApprovalProduction.java

@@ -24,7 +24,7 @@ public class ApprovalProduction implements Serializable {
     private String productionPackingWay;//包装方式
     private String productionRemark;//备注信息
     private Date productionCreateTime;
-    private Date productionUpdateYime;
+    private Date productionUpdateTime;
 
     public Integer getApprovalId() {
         return approvalId;
@@ -146,11 +146,11 @@ public class ApprovalProduction implements Serializable {
         this.productionCreateTime = productionCreateTime;
     }
 
-    public Date getProductionUpdateYime() {
-        return productionUpdateYime;
+    public Date getProductionUpdateTime() {
+        return productionUpdateTime;
     }
 
-    public void setProductionUpdateYime(Date productionUpdateYime) {
-        this.productionUpdateYime = productionUpdateYime;
+    public void setProductionUpdateTime(Date productionUpdateTime) {
+        this.productionUpdateTime = productionUpdateTime;
     }
 }

+ 6 - 0
watero-rst-interface/pom.xml

@@ -17,5 +17,11 @@
             <artifactId>watero-rst-core</artifactId>
             <version>1.0.0</version>
         </dependency>
+
+        <dependency>
+            <groupId>com.iamberry</groupId>
+            <artifactId>watero-common-core</artifactId>
+            <version>1.0.0</version>
+        </dependency>
     </dependencies>
 </project>

+ 33 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/approval/ApprovalOrderService.java

@@ -1,6 +1,9 @@
 package com.iamberry.rst.faces.approval;
 
+import com.iamberry.rst.core.approval.*;
+
 import java.util.List;
+import java.util.Map;
 
 /**
  *  提货项信息接口
@@ -8,5 +11,34 @@ import java.util.List;
  * @Date 2018-09-19
  */
 public interface ApprovalOrderService {
-
+    /**
+     * 新增审批信息
+     * @return
+     */
+    Integer insertApprovalInfo(ApprovalInfo approvalInfo);
+    /**
+     * 新增生产审批信息
+     * @return
+     */
+    Boolean insertApprovalProduction(ApprovalProduction approvalProduction,String productionItems,Map<String, Object> tasknfo);
+    /**
+     * 新增生产审批信息产品
+     * @return
+     */
+    Integer insertItem(List<ApprovalProductionItem> listApprovalProductionItem);
+    /**
+     * 新增生产审批合同信息
+     * @return
+     */
+    Integer insertProductionContract(ApprovalProductionContract approvalProductionContract);
+    /**
+     * 新增流程信息
+     * @return
+     */
+    Integer insertProcessInfo(ProcessInfo processInfo);
+    /**
+     * 新增历史审批记录
+     * @return
+     */
+    Integer insertHistoricalRecord(HistoricalRecord historicalRecord);
 }

+ 55 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/member/MemberService.java

@@ -0,0 +1,55 @@
+package com.iamberry.rst.faces.member;
+
+import com.iamberry.wechat.core.entity.member.Member;
+
+import java.util.List;
+
+/**
+ * 会员信息 service
+ * 2016年4月21日
+ * @author Administrator
+ *
+ */
+public interface MemberService {
+
+	
+	/**
+	 * 根据 openid 查询一个member
+	 * 2016年4月28日
+	 * @author 穆再兴
+	 * @return
+	 */
+	public Member getMemberByUserOpenId(String openid);
+
+	/**
+	 * 获取集合
+	 * @param  member
+	 * @return List
+	 */
+	List<Member>  getMemberList(Member  member);
+	/**
+	 * 查询单条数据
+	 * @param  id
+	 * @return  member
+	 */
+	Member  getMemberById(Integer  id);
+	/**
+	 * 增加数据
+	 * @param  member
+	 * @return Integer
+	 */
+	Integer  save(Member  member);
+	/**
+	 * 修改数据
+	 * @param  member
+	 * @return Integer
+	 */
+	Integer  update(Member  member);
+	/**
+	 * 删除数据
+	 * @param  id
+	 * @return Integer
+	 */
+	Integer  delete(Integer  id);
+
+}

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

@@ -1,11 +1,17 @@
 package com.iamberry.rst.service.approval;
 
+import com.iamberry.rst.core.approval.*;
 import com.iamberry.rst.faces.approval.ApprovalOrderService;
+import com.iamberry.rst.faces.approval.ApprovalTaskService;
 import com.iamberry.rst.service.approval.mapper.ApprovalOrderMapper;
+import com.iamberry.wechat.tools.ResponseJson;
+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.util.List;
+import java.util.*;
 
 /**
  *  提货项信息接口
@@ -14,5 +20,106 @@ import java.util.List;
  */
 @Service
 public class ApprovalOrderServiceImpl implements ApprovalOrderService {
+    @Autowired
+    private ApprovalOrderMapper approvalOrderMapper;
 
+
+    @Override
+    public Integer insertApprovalInfo(ApprovalInfo approvalInfo) {
+        return approvalOrderMapper.insertApprovalInfo(approvalInfo);
+    }
+
+    @Override
+    @Transactional
+    public Boolean insertApprovalProduction(ApprovalProduction approvalProduction,String productionItems,Map<String, Object> tasknfo) {
+
+        //添加审批信息
+        ApprovalInfo approvalInfo = new ApprovalInfo();
+        approvalInfo.setApprovalName("XXX的审批订单");
+        approvalInfo.setApprovalType(1);
+        approvalInfo.setApprovalStatus(1);
+        approvalInfo.setApprovalStatusDetails("待 "+tasknfo.get("users").toString()+"审批");
+        approvalInfo.setAdminId(null);
+        approvalInfo.setApprovalApplicant(approvalProduction.getApplicantName());
+        approvalInfo.setActivitiId(tasknfo.get("pid").toString());
+        approvalInfo.setApprovalDetails("html内容");
+        approvalInfo.setApprovalRemark(approvalProduction.getProductionRemark());
+        int returnValue = approvalOrderMapper.insertApprovalInfo(approvalInfo);
+        if(returnValue < 1){
+            throw new RuntimeException("添加审批信息失败");
+        }
+        //添加生产审批信息
+        approvalProduction.setApprovalId(approvalInfo.getApprovalId());
+        approvalProduction.setApplicantOrderNo("订单编号");
+        approvalProduction.setApplicantName("申请人姓名");
+        approvalProduction.setApplicantId(1);//申请人ID
+        approvalProduction.setProductionState(1);
+        int returnValue2 = approvalOrderMapper.insertApprovalProduction(approvalProduction);
+        if(returnValue2 < 1){
+            throw new RuntimeException("添加生产审批信息失败");
+        }
+        //添加生产审批产品项
+        List<ApprovalProductionItem> listApprovalProductionItem = new ArrayList<ApprovalProductionItem>();
+        JSONArray jsonProductionItems = JSONArray.fromObject(productionItems);
+        for (int i = 0; i < jsonProductionItems.size(); i++) {
+            JSONObject orderItem = jsonProductionItems.getJSONObject(i);
+            //添加产品项内容
+            ApprovalProductionItem approvalProductionItem = new ApprovalProductionItem();
+            approvalProductionItem.setItemBrandName(orderItem.getString("itemBrandName"));
+            approvalProductionItem.setProductId(orderItem.getInt("productId"));
+            approvalProductionItem.setItemProductName(orderItem.getString("itemProductName"));
+            approvalProductionItem.setItemColorName(orderItem.getString("itemColorName"));
+            approvalProductionItem.setItemProductNum(orderItem.getInt("itemProductNum"));
+            approvalProductionItem.setItemProductModel(orderItem.getString("itemProductModel"));
+            approvalProductionItem.setItemProductUnit(orderItem.getString("itemProductUnit"));
+            approvalProductionItem.setItemProductBoxNumber(orderItem.getInt("itemProductBoxNumber"));
+            listApprovalProductionItem.add(approvalProductionItem);
+        }
+        int returnValue3 = approvalOrderMapper.insertItem(listApprovalProductionItem);
+        if(returnValue3 < 1){
+            throw new RuntimeException("添加生产审批产品项信息失败");
+        }
+        //添加流程信息
+        ProcessInfo processInfo = new ProcessInfo();
+        processInfo.setAdminId(1);
+        processInfo.setApprovalId(approvalInfo.getApprovalId());
+        processInfo.setProcessDesc(approvalInfo.getApprovalDetails());
+        processInfo.setProcessState(1);
+        int returnValue4 = approvalOrderMapper.insertProcessInfo(processInfo);
+        if(returnValue4 < 1){
+            throw new RuntimeException("添加生产审批流程信息失败");
+        }
+        //添加审批历史记录
+        HistoricalRecord historicalRecord = new HistoricalRecord();
+        historicalRecord.setApprovalId(approvalInfo.getApprovalId());
+        historicalRecord.setAdminId(1);
+        historicalRecord.setRecordState(1);
+        historicalRecord.setTaskId(tasknfo.get("taskId").toString());
+        historicalRecord.setApprovalTime(new Date());
+        int returnValue5 = approvalOrderMapper.insertHistoricalRecord(historicalRecord);
+        if(returnValue5 < 1){
+            throw new RuntimeException("添加生产审批历史记录失败");
+        }
+        return true;
+    }
+
+    @Override
+    public Integer insertItem(List<ApprovalProductionItem> listApprovalProductionItem) {
+        return approvalOrderMapper.insertItem(listApprovalProductionItem);
+    }
+
+    @Override
+    public Integer insertProductionContract(ApprovalProductionContract approvalProductionContract) {
+        return approvalOrderMapper.insertProductionContract(approvalProductionContract);
+    }
+
+    @Override
+    public Integer insertProcessInfo(ProcessInfo processInfo) {
+        return approvalOrderMapper.insertProcessInfo(processInfo);
+    }
+
+    @Override
+    public Integer insertHistoricalRecord(HistoricalRecord historicalRecord) {
+        return approvalOrderMapper.insertHistoricalRecord(historicalRecord);
+    }
 }

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

@@ -1,6 +1,8 @@
 package com.iamberry.rst.service.approval.mapper;
 
 
+import com.iamberry.rst.core.approval.*;
+
 import java.util.List;
 
 /**
@@ -8,5 +10,35 @@ import java.util.List;
  */
 public interface ApprovalOrderMapper {
 
+    /**
+     * 新增审批信息
+     * @return
+     */
+     Integer insertApprovalInfo(ApprovalInfo approvalInfo);
+     /**
+     * 新增生产审批信息
+     * @return
+     */
+     Integer insertApprovalProduction(ApprovalProduction approvalProduction);
+     /**
+     * 新增生产审批信息产品
+     * @return
+     */
+     Integer insertItem(List<ApprovalProductionItem> listApprovalProductionItem);
+     /**
+     * 新增生产审批合同信息
+     * @return
+     */
+     Integer insertProductionContract(ApprovalProductionContract approvalProductionContract);
+     /**
+     * 新增流程信息
+     * @return
+     */
+     Integer insertProcessInfo(ProcessInfo processInfo);
+     /**
+     * 新增历史审批记录
+     * @return
+     */
+     Integer insertHistoricalRecord(HistoricalRecord historicalRecord);
 
 }

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

@@ -36,6 +36,194 @@
   </resultMap>
 
 
+  <resultMap id="ApprovalProductionItemMap" type="ApprovalProductionItem" >
+    <id column="item_id" property="itemId" jdbcType="INTEGER" />
+    <result column="production_id" property="productionId" jdbcType="INTEGER" />
+    <result column="product_id" property="productId" jdbcType="INTEGER" />
+    <result column="item_product_name" property="itemProductName" jdbcType="VARCHAR" />
+    <result column="item_color_name" property="itemColorName" jdbcType="VARCHAR" />
+    <result column="item_product_num" property="itemProductNum" jdbcType="INTEGER" />
+    <result column="item_brand_name" property="itemBrandName" jdbcType="VARCHAR" />
+    <result column="item_product_model" property="itemProductModel" jdbcType="VARCHAR" />
+    <result column="item_product_unit" property="itemProductUnit" jdbcType="VARCHAR" />
+    <result column="item_product_box_number" property="itemProductBoxNumber" jdbcType="INTEGER" />
+    <result column="item_create_time" property="itemCreateTime" jdbcType="TIMESTAMP" />
+    <result column="item_update_time" property="itemUpdateTime" jdbcType="TIMESTAMP" />
+  </resultMap>
+
+
+  <resultMap id="ApprovalProductionContractMap" type="ApprovalProductionContract" >
+    <id column="contract_id" property="contractId" jdbcType="INTEGER" />
+    <result column="production_id" property="productionId" jdbcType="INTEGER" />
+    <result column="contract_url" property="contractUrl" jdbcType="VARCHAR" />
+    <result column="contract_create_time" property="contractCreateTime" jdbcType="TIMESTAMP" />
+  </resultMap>
+
+
+  <resultMap id="ProcessInfoMap" type="ProcessInfo" >
+    <id column="process_id" property="processId" jdbcType="INTEGER" />
+    <result column="approval_id" property="approvalId" jdbcType="INTEGER" />
+    <result column="admin_id" property="adminId" jdbcType="INTEGER" />
+    <result column="process_desc" property="processDesc" jdbcType="VARCHAR" />
+    <result column="process_state" property="processState" jdbcType="INTEGER" />
+    <result column="process_create_time" property="processCreateTime" jdbcType="TIMESTAMP" />
+  </resultMap>
+
+
+  <resultMap id="ProcessInfoMap" type="ProcessInfo" >
+    <id column="record_id" property="recordId" jdbcType="INTEGER" />
+    <result column="approval_id" property="approvalId" jdbcType="INTEGER" />
+    <result column="admin_id" property="adminId" jdbcType="INTEGER" />
+    <result column="record_state" property="recordState" jdbcType="INTEGER" />
+    <result column="task_id" property="taskId" jdbcType="VARCHAR" />
+    <result column="approval_time" property="approvalTime" jdbcType="TIMESTAMP" />
+    <result column="record_create_time" property="recordCreateTime" jdbcType="TIMESTAMP" />
+  </resultMap>
+
+
+
+  <insert id="insertApprovalInfo" parameterType="ApprovalInfo"  useGeneratedKeys="true" keyProperty="approvalId">
+    INSERT INTO tb_rst_approval_info(approval_id,approval_name,approval_type,approval_status,
+    approval_status_details,admin_id,approval_applicant,activiti_id,
+    approval_details,approval_remark,approval_create_time)
+    VALUES
+    (#{approvalId},#{approvalName},#{approvalType},#{approvalStatus},#{approvalStatusDetails}
+    ,#{adminId},#{approvalApplicant},#{activitiId},#{approvalDetails}
+    ,#{approvalRemark},NOW())
+  </insert>
+
+  <insert id="insertApprovalProduction" parameterType="ApprovalProduction"  useGeneratedKeys="true" keyProperty="productionId">
+    INSERT INTO tb_rst_approval_production(
+          production_id,
+          approval_id,
+          applicant_order_no,
+          applicant_name,
+          applicant_id,
+          order_name,
+          company_name,
+          contact_name,
+          contact_tel,
+          production_delivery_date,
+          production_delivery_way,
+          production_delivery_desc,
+          production_state,
+          production_packing_way,
+          production_remark,
+          production_create_time
+          )
+    VALUES
+    (#{approvalId},#{approvalId},#{applicantOrderNo},#{applicantName},#{applicantId}
+    ,#{orderName},#{companyName},#{contactName},#{contactTel,#{productionDeliveryDate
+    ,#{productionDeliveryWay},#{productionDeliveryDesc},#{productionState},#{productionPackingWay}
+    ,#{productionRemark},NOW())
+  </insert>
+
+  <!-- 批量添加订单项数据-->
+  <insert id="insertItem" parameterType="ArrayList">
+    INSERT INTO tb_rst_approval_production_item
+    (
+    production_id,
+    product_id,
+    item_product_name,
+    item_color_name,
+    item_product_num,
+    item_brand_name,
+    item_product_model,
+    item_product_unit,
+    item_product_box_number,
+    item_create_time,
+    )
+    VALUES
+    <foreach collection="list" item="item" separator=",">
+      (
+      #{item.productionId},#{item.productId},#{item.itemProductName},#{item.itemColorName},
+      #{item.itemProductNum},#{item.itemBrandName},#{item.itemProductModel},#{item.itemProductUnit}
+      ,#{item.itemProductBoxNumber},NOW()
+      )
+    </foreach>
+  </insert>
+
+
+  <insert id="insertProductionContract" parameterType="ApprovalProductionContract">
+    INSERT INTO tb_rst_approval_production_contract(
+    contract_id
+    production_id
+    contract_url
+    contract_create_time
+    )
+    VALUES
+    (#{contractId},#{productionId},#{contractUrl},NOW())
+  </insert>
+
+  <insert id="insertProcessInfo" parameterType="ProcessInfo">
+    INSERT INTO tb_rst_process_info(
+    approval_id
+    admin_id
+    process_desc
+    process_state
+    process_create_time
+    )
+    VALUES
+    (#{approvalId},#{adminId},#{processDesc},#{processState},NOW())
+  </insert>
+
+  <insert id="insertHistoricalRecord" parameterType="HistoricalRecord">
+    INSERT INTO tb_rst_historical_record(
+    approval_id
+    admin_id
+    record_state
+    task_id
+    approval_time
+    record_create_time
+    )
+    VALUES
+    (#{approvalId},#{adminId},#{processDesc},#{processState},NOW())
+  </insert>
+
+
+  <!-- 修改流程信息状态-->
+  <update id="updateProcessInfo" parameterType="ProcessInfo">
+    update tb_rst_process_info
+    <set >
+      <if test="processState != null" >
+        process_state = #{processState}
+      </if>
+    </set>
+    <where>
+      <if test="approvalId != null and approvalId != ''">
+        approval_id = #{approvalId}
+      </if>
+      <if test="processId != null and processId != ''">
+        AND  process_id = #{processId}
+      </if>
+      <if test="adminId != null and adminId != ''">
+        AND  admin_id = #{adminId}
+      </if>
+    </where>
+  </update>
+  <!-- 修改历史记录状态-->
+  <update id="updateHistoricalRecord" parameterType="HistoricalRecord">
+    update tb_rst_historical_record
+    <set >
+      <if test="recordState != null" >
+        record_state = #{recordState},
+      </if>
+      <if test="approvalTime != null" >
+        approval_time = #{approvalTime}
+      </if>
+    </set>
+    <where>
+      <if test="recordId != null and recordId != ''">
+        record_id = #{recordId}
+      </if>
+      <if test="approvalId != null and approvalId != ''">
+        AND  approval_id = #{approvalId}
+      </if>
+      <if test="taskId != null and taskId != ''">
+        AND  task_id = #{taskId}
+      </if>
+    </where>
+  </update>
 
  <!-- <resultMap id="BaseResultMap" type="ApprovalOrderInfo" >
     <id column="approval_id" property="approvalId" jdbcType="INTEGER" />
@@ -74,17 +262,6 @@
     record_id,approval_name,admin_id,approval_id,record_state,approval_time,approval_desc,record_create_time,record_update_time
   </sql>
 
-<insert id="insert" parameterType="ApprovalOrderInfo"  useGeneratedKeys="true" keyProperty="approvalId">
-    INSERT INTO tb_rst_approval_order(approval_id,applicant_name,applicant_id,order_name,
-    company_name,contact_name,contact_tel,delivery_time,
-    delivery_way,contract_name,contract_img,attachment_img,
-    approval_state,current_admin_id,approval_desc,approval_create_time)
-    VALUES
-    (#{approvalId},(#{applicantName},#{applicantId},#{orderName},#{companyName}
-    ,#{contactName},#{contactTel},#{deliveryTime},#{deliveryWay}
-    ,#{contractName},#{contractImg},#{attachmentImg},#{approvalState}
-    ,#{currentAdminId},#{approvalDesc},NOW())
-</insert>
   &lt;!&ndash; 批量添加订单项数据 &ndash;&gt;
   <insert id="insertItem" parameterType="ArrayList">
     INSERT INTO tb_rst_approval_order_item

+ 79 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/member/MemberServiceImpl.java

@@ -0,0 +1,79 @@
+package com.iamberry.rst.service.member;
+
+import com.iamberry.rst.faces.member.MemberService;
+import com.iamberry.rst.service.member.mapper.MemberMapper;
+import com.iamberry.wechat.core.entity.member.Member;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 会员信息 service 实现
+ * 2016年4月21日
+ * @author Administrator
+ *
+ */
+@Service
+public class MemberServiceImpl implements MemberService {
+
+	@Autowired
+	private MemberMapper memberMapper;
+
+	/**
+	 * 根据 openid 查询一个member
+	 * 2016年4月28日
+	 * @author 穆再兴
+	 * @return
+	 */
+	@Override
+	public Member getMemberByUserOpenId(String openid){
+		return memberMapper.getMemberByUserOpenId(openid);
+	}
+
+	/**
+	 * 获取集合
+	 * @param  member
+	 * @return List
+	 */
+	@Override
+	public  List<Member>  getMemberList(Member  member){
+		return  memberMapper.getMemberList(member);
+	}
+	/**
+	 * 查询单条数据
+	 * @param  id
+	 * @return  member
+	 */
+	@Override
+	public  Member  getMemberById(Integer  id){
+		return  memberMapper.getMemberById(id);
+	}
+	/**
+	 * 增加数据
+	 * @param  member
+	 * @return Integer
+	 */
+	@Override
+	public  Integer  save(Member  member){
+		return  memberMapper.save(member);
+	}
+	/**
+	 * 修改数据
+	 * @param  member
+	 * @return Integer
+	 */
+	@Override
+	public  Integer  update(Member  member){
+		return  memberMapper.update(member);
+	}
+	/**
+	 * 删除数据
+	 * @param  id
+	 * @return Integer
+	 */
+	@Override
+	public  Integer  delete(Integer  id){
+		return  memberMapper.delete(id);
+	}
+}

+ 54 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/member/mapper/MemberMapper.java

@@ -0,0 +1,54 @@
+package com.iamberry.rst.service.member.mapper;
+
+import com.iamberry.wechat.core.entity.member.Member;
+
+import java.util.List;
+
+/**
+ * 会员信息 mapper
+ * 2016年4月21日
+ * @author Administrator
+ *
+ */
+public interface MemberMapper {
+
+	/**
+	 * 根据 openid 查询一个member
+	 * 2016年4月28日
+	 * @author 穆再兴
+	 * @return
+	 */
+	Member getMemberByUserOpenId(String openid);
+
+	/**
+	 * 获取集合
+	 * @param  member
+	 * @return List
+	 */
+	List<Member>  getMemberList(Member  member);
+	/**
+	 * 查询单条数据
+	 * @param  id
+	 * @return  member
+	 */
+	Member  getMemberById(Integer  id);
+	/**
+	 * 增加数据
+	 * @param  member
+	 * @return Integer
+	 */
+	Integer  save(Member  member);
+	/**
+	 * 修改数据
+	 * @param  member
+	 * @return Integer
+	 */
+	Integer  update(Member  member);
+	/**
+	 * 删除数据
+	 * @param  id
+	 * @return Integer
+	 */
+	Integer  delete(Integer  id);
+
+}

+ 258 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/member/mapper/memberMapper.xml

@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.iamberry.wechat.service.mapper.MemberMapper">
+	<resultMap  id="BaseResultMap" type="Member" >
+		<result    column="user_id"    property="userId" />
+		<result    column="user_openid"    property="userOpenid" />
+		<result    column="user_head"    property="userHead" />
+		<result    column="user_nickname"    property="userNickname" />
+		<result    column="user_addr"    property="userAddr" />
+		<result    column="user_sex"    property="userSex" />
+		<result    column="user_integral"    property="userIntegral" />
+		<result    column="user_account_num"    property="userAccountNum" />
+		<result    column="user_pwd"    property="userPwd" />
+		<result    column="user_tel"    property="userTel" />
+		<result    column="user_name"    property="userName" />
+		<result    column="user_birth_date"    property="userBirthDate" />
+		<result    column="user_surplus_integral"    property="userSurplusIntegral" />
+		<result    column="user_use_integral"    property="userUseIntegral" />
+		<result    column="user_res_type"    property="userResType" />
+		<result    column="user_status"    property="userStatus" />
+		<result    column="user_sub_date"    property="userSubDate" />
+		<result    column="user_create_date"    property="userCreateDate" />
+		<result    column="user_identity"    property="userIdentity" />
+		<result    column="user_qrcode"    property="userQrcode" />
+		<result    column="user_is_flag"    property="userIsFlag" />
+		<result    column="user_income"    property="userIncome" />
+		<result    column="user_coupon"    property="userCoupon" />
+		<result    column="user_template_id"    property="userTemplateId" />
+		<result    column="user_dealers"    property="userDealers" />
+		<result    column="user_is_bought"    property="userIsBought" />
+	</resultMap>
+	<sql    id="Base_List" >
+		t.user_id,
+		t.user_openid,
+		t.user_head,
+		t.user_nickname,
+		t.user_addr,
+		t.user_sex,
+		t.user_integral,
+		t.user_account_num,
+		t.user_pwd,
+		t.user_tel,
+		t.user_name,
+		t.user_birth_date,
+		t.user_surplus_integral,
+		t.user_use_integral,
+		t.user_res_type,
+		t.user_status,
+		t.user_sub_date,
+		t.user_create_date,
+		t.user_identity,
+		t.user_qrcode,
+		t.user_is_flag,
+		t.user_income,
+		t.user_coupon,
+		t.user_template_id,
+		t.user_dealers,
+		t.user_is_bought
+	</sql>
+	<select id="getMemberList" resultMap="BaseResultMap" parameterType="Member" >
+		select
+		<include refid="Base_List" />
+		from tb_rst_member_user t
+		<where>
+			<if test="userId != null ">
+				AND t.user_id = #{userId}
+			</if >
+			<if test="userOpenid != null and userOpenid != ''">
+				AND t.user_openid = #{userOpenid}
+			</if >
+			<if test="userNickname != null and userNickname != ''">
+				AND t.user_nickname  like  CONCAT ('%',#{userNickname},'%')
+			</if >
+			<if test="userSex != null ">
+				AND t.user_sex = #{userSex}
+			</if >
+			<if test="userAccountNum != null and userAccountNum != ''">
+				AND t.user_account_num = #{userAccountNum}
+			</if >
+			<if test="userPwd != null and userPwd != ''">
+				AND t.user_pwd = #{userPwd}
+			</if >
+			<if test="userTel != null and userTel != ''">
+				AND t.user_tel  like  CONCAT ('%',#{userTel},'%')
+			</if >
+			<if test="userName != null and userName != ''">
+				AND t.user_name  like  CONCAT ('%',#{userName},'%')
+			</if >
+			<if test="userResType != null ">
+				AND t.user_res_type = #{userResType}
+			</if >
+			<if test="userStatus != null ">
+				AND t.user_status = #{userStatus}
+			</if >
+			<if test="userIdentity != null ">
+				AND t.user_identity = #{userIdentity}
+			</if >
+		</where>
+	</select>
+	<select id="getMemberById" resultMap="BaseResultMap" parameterType="Integer" >
+		select
+		<include refid="Base_List" />
+		from tb_rst_member_user t
+		where t.user_id= #{userId}
+	</select>
+
+	<!-- 	根据openid查询会员信息 -->
+	<select id="getMemberByUserOpenId" resultType="Member"
+			parameterType="String">
+		SELECT
+		<include refid="Base_List"/>
+		FROM TB_IAMBERRY_USER_USERINFO
+		WHERE user_openid = #{userOpenid}
+	</select>
+
+
+	<insert id="save" parameterType="Member" >
+		insert into
+		tb_rst_member_user
+		(
+		user_openid,
+		user_head,
+		user_nickname,
+		user_addr,
+		user_sex,
+		user_integral,
+		user_account_num,
+		user_pwd,
+		user_tel,
+		user_name,
+		user_birth_date,
+		user_surplus_integral,
+		user_use_integral,
+		user_res_type,
+		user_status,
+		user_sub_date,
+		user_identity,
+		user_qrcode,
+		user_is_flag,
+		user_income,
+		user_coupon,
+		user_template_id,
+		user_dealers,
+		user_is_bought
+		)
+		values
+		(
+		#{userOpenid},
+		#{userHead},
+		#{userNickname},
+		#{userAddr},
+		#{userSex},
+		#{userIntegral},
+		#{userAccountNum},
+		#{userPwd},
+		#{userTel},
+		#{userName},
+		#{userBirthDate},
+		#{userSurplusIntegral},
+		#{userUseIntegral},
+		#{userResType},
+		#{userStatus},
+		#{userSubDate},
+		#{userIdentity},
+		#{userQrcode},
+		#{userIsFlag},
+		#{userIncome},
+		#{userCoupon},
+		#{userTemplateId},
+		#{userDealers},
+		#{userIsBought}
+		)
+	</insert>
+	<update id="update" parameterType="Member" >
+		update
+		tb_rst_member_user
+		<set >
+			<if test="userOpenid != null and userOpenid != ''">
+				user_openid = #{userOpenid},
+			</if >
+			<if test="userHead != null and userHead != ''">
+				user_head = #{userHead},
+			</if >
+			<if test="userNickname != null and userNickname != ''">
+				user_nickname = #{userNickname},
+			</if >
+			<if test="userAddr != null and userAddr != ''">
+				user_addr = #{userAddr},
+			</if >
+			<if test="userSex != null ">
+				user_sex = #{userSex},
+			</if >
+			<if test="userIntegral != null ">
+				user_integral = #{userIntegral},
+			</if >
+			<if test="userAccountNum != null and userAccountNum != ''">
+				user_account_num = #{userAccountNum},
+			</if >
+			<if test="userPwd != null and userPwd != ''">
+				user_pwd = #{userPwd},
+			</if >
+			<if test="userTel != null and userTel != ''">
+				user_tel = #{userTel},
+			</if >
+			<if test="userName != null and userName != ''">
+				user_name = #{userName},
+			</if >
+			<if test="userBirthDate != null and userBirthDate != ''">
+				user_birth_date = #{userBirthDate},
+			</if >
+			<if test="userSurplusIntegral != null ">
+				user_surplus_integral = #{userSurplusIntegral},
+			</if >
+			<if test="userUseIntegral != null ">
+				user_use_integral = #{userUseIntegral},
+			</if >
+			<if test="userResType != null ">
+				user_res_type = #{userResType},
+			</if >
+			<if test="userStatus != null ">
+				user_status = #{userStatus},
+			</if >
+			<if test="userSubDate != null and userSubDate != ''">
+				user_sub_date = #{userSubDate},
+			</if >
+			<if test="userIdentity != null ">
+				user_identity = #{userIdentity},
+			</if >
+			<if test="userQrcode != null and userQrcode != ''">
+				user_qrcode = #{userQrcode},
+			</if >
+			<if test="userIsFlag != null ">
+				user_is_flag = #{userIsFlag},
+			</if >
+			<if test="userIncome != null ">
+				user_income = #{userIncome},
+			</if >
+			<if test="userCoupon != null ">
+				user_coupon = #{userCoupon},
+			</if >
+			<if test="userTemplateId != null ">
+				user_template_id = #{userTemplateId},
+			</if >
+			<if test="userDealers != null ">
+				user_dealers = #{userDealers},
+			</if >
+			<if test="userIsBought != null ">
+				user_is_bought = #{userIsBought}
+			</if >
+		</set >
+		where user_id= #{userId}
+	</update>
+	<delete id="delete" parameterType="Integer" >
+		delete FROM
+		tb_rst_member_user
+		where user_id=#{userId}
+	</delete>
+</mapper>

+ 6 - 0
watero-rst-web/pom.xml

@@ -12,6 +12,12 @@
 
     <dependencies>
 
+        <dependency>
+            <groupId>com.iamberry</groupId>
+            <artifactId>watero-common-core</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+
         <!-- WEB 项目基本依赖 -->
         <dependency>
             <groupId>com.iamberry</groupId>

+ 40 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/ApprovalController.java

@@ -0,0 +1,40 @@
+package com.iamberry.rst.controllers.approval;
+
+import com.iamberry.rst.core.approval.ApprovalInfo;
+import com.iamberry.rst.core.approval.ApprovalProduction;
+import com.iamberry.rst.faces.approval.ApprovalOrderService;
+import com.iamberry.rst.faces.approval.ApprovalTaskService;
+import com.iamberry.wechat.tools.ResponseJson;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * Created by Administrator on 2018/10/9.
+ */
+public class ApprovalController {
+    private ApprovalOrderService approvalOrderService;
+    @Autowired
+    private ApprovalTaskService approvalTaskService;
+    /**
+     * 新增审批信息
+     * @param request
+     * @param approvalProduction
+     * @param productionItems
+     * @return
+     */
+    public ResponseJson addApproval(HttpServletRequest request,ApprovalProduction approvalProduction,String productionItems){
+        ResponseJson rj =new ResponseJson(200, "添加成功", 200);
+        if (approvalProduction == null || productionItems == null) {
+            return  ResponseJson.getFAILURE();
+        }
+        //获取审批任务id
+        Map<String, Object> taskinfo = approvalTaskService.salesmanSubmitApply(1);
+        boolean returnValue = approvalOrderService.insertApprovalProduction(approvalProduction,productionItems,taskinfo);
+        if(!returnValue){
+            return  ResponseJson.getFAILURE();
+        }
+        return rj;
+    }
+}

+ 97 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/wx/WechatBackHandler.java

@@ -0,0 +1,97 @@
+package com.iamberry.rst.controllers.wx;
+
+import com.iamberry.rst.faces.member.MemberService;
+import com.iamberry.wechat.core.entity.WechatUtils;
+import com.iamberry.wechat.core.entity.member.Member;
+import com.iamberry.wechat.tools.NameUtils;
+import com.iamberry.wechat.tools.WeixinUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @author 何秀刚
+ * Class Description: 微信授权handler
+ * Create Date:2016年4月19日
+ * Update Date:2016年4月19日
+ */
+@Controller
+public class WechatBackHandler {
+
+	private static Logger logger = LoggerFactory.getLogger(WechatBackHandler.class);
+	
+	@Autowired
+	private MemberService memberService;
+
+	public MemberService getMemberService() {
+		return memberService;
+	}
+
+	public void setMemberService(MemberService memberService) {
+		this.memberService = memberService;
+	}
+
+	/**
+	 * 微信授权功能
+	 * @param request
+	 * @param response
+	 * @return
+	 * @throws Exception
+	 */
+	@RequestMapping("/wechatBack")
+	public ModelAndView getOpenId(
+			@RequestParam(value = "callback", required = false) String callback,
+			HttpServletRequest request,
+			HttpServletResponse response) throws Exception {
+
+		logger.info("微信回调");
+
+		String callbackURL = NameUtils.getConfig("redirectUrl_index");
+		if (callback != null) {
+			callbackURL = "redirect:" + WechatUtils.getCallback(callback);
+		}
+		
+		ModelAndView mv = new ModelAndView(callbackURL);
+		// 获取微信code
+		String code = request.getParameter("code");
+		if (StringUtils.isEmpty(code)) { 
+			// 判断code是否为空
+			mv.setViewName("redirect:" + WechatUtils.getOpenIdFunction(null));
+			return mv;
+		}
+		// 通过code get微信的openid
+		String[] str = WeixinUtil.getOpenId(code, NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"));
+		String openId = str[0];
+		if (StringUtils.isEmpty(openId)) {
+			mv.setViewName("redirect:" + WechatUtils.getOpenIdFunction(null));
+			return mv;
+		}
+		Member info = memberService.getMemberByUserOpenId(openId);
+		if (info == null) {
+			// 创建新的用户
+			info = new Member();
+			info.setUserOpenid(openId);
+			info.setUserSex(0);
+			info.setUserStatus(1);
+			int flag = memberService.save(info);
+			if (flag < 1) {
+				memberService.save(info);
+			}
+		}
+		info.setUserOpenid(openId);
+		// 提前获取session中的地址
+		WechatUtils.saveUserToSession(info, request, response);
+		// 获取成功后转向地址
+		mv.setViewName(callbackURL);
+		return mv;
+	}
+
+}

+ 109 - 0
watero-rst-web/src/main/java/com/iamberry/rst/filters/WechatFilter.java

@@ -0,0 +1,109 @@
+package com.iamberry.rst.filters;
+
+import com.iamberry.jwt.UserNotLoginException;
+import com.iamberry.wechat.core.entity.WechatUtils;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * 完成对微信请求中用户的登陆状态的处理,如果没有登陆,转发一次微信服务器
+ * @company	深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @author 	献
+ * @tel		18271840547
+ * @date	2016年12月2日
+ * @explain
+ */
+@WebFilter(value = { "/wechat/*","/pay/goOrderInfo" })
+public class WechatFilter implements Filter {
+
+	private static Logger logger = LoggerFactory.getLogger(WechatFilter.class);
+	
+	@Override
+	public void doFilter(ServletRequest request, ServletResponse response,
+						 FilterChain chain) throws IOException, ServletException {
+		// 权限拦截类
+		HttpServletRequest req = (HttpServletRequest) request;
+		HttpServletResponse resp = (HttpServletResponse) response;
+		try {
+			// 已经登录的用户处理逻辑
+			WechatUtils.getUserBySession(req);
+			chain.doFilter(req, resp);
+		} catch (UserNotLoginException e) {
+			// 未登录的用户处理逻辑
+			logger.info(e.getMessage() + " User Not Login!");
+			try {
+				forword(req, resp, chain);
+			} catch (Exception e1) {
+				logger.error("[致命错误 4003]" + e1.getMessage());
+			}
+		}catch (Exception e){
+			e.printStackTrace();
+			logger.info("获取信息失败");
+		}
+	}
+	
+	/**
+	 * 处理没有登录的用户流程
+	 * @param req
+	 * @param resp
+	 * @param chain
+	 * @author 献
+	 * @throws Exception 
+	 * @Time   2016年11月24日
+	 */
+	public void forword(HttpServletRequest req, HttpServletResponse resp, FilterChain chain) throws Exception {
+// 如果是扫描机器后面的二维码,那么转发到下层处理
+//		String ua = req.getHeader("user-agent").toLowerCase();
+//		if(ua.indexOf("micromessenger") < 0 && req.getRequestURL().indexOf("wechat/qrcode") > 0 ){
+//			chain.doFilter(req, resp);
+//			return;
+//		}
+		
+		// 如果不是扫描二维码,那么获取后转发微信服务器,完成授权。
+		String query = req.getQueryString();
+		String urlstr = new String(req.getRequestURI().toString().replace(req.getContextPath(), ""));
+		if (query != null) {
+			urlstr = urlstr + "?" + query;
+		}
+		String url = WechatUtils.getOpenIdFunction(urlstr);
+
+		// 判断请求,如果是来自Ajax,那么直接返回302跳转会导致前端报错,所以返回JSON格式数据,状态为200
+		String requestedWith = req.getHeader("x-requested-with");
+		String accept = req.getHeader("accept");
+		if ((requestedWith != null && StringUtils.isNotEmpty(requestedWith) && requestedWith.indexOf("XMLHttpRequest") != -1)
+				|| (accept != null && StringUtils.isNotEmpty(accept) && accept.indexOf("json") != -1)) {
+			// 客户端需要的是json数据
+			String redirectURL = req.getHeader("Referer");
+			resp.getWriter().write("{\"isRedirect\":true, \"redirectURL\":\"" + WechatUtils.getOpenIdFunction(redirectURL) + "\"}");
+			return;
+		}
+
+		// 客户端没有登录的请求不是来自于Ajax,可以执行跳转动作
+		resp.sendRedirect(url);
+	}
+
+	/**
+	 * 转发请求
+	 * @param req
+	 * @param resp
+	 * @param url
+	 * @throws ServletException
+	 * @throws IOException
+	 * @author 献
+	 * @Time   2016年12月2日
+	 */
+	public void setRequestDispatcherInfo(HttpServletRequest req, HttpServletResponse resp, String url) 
+			throws ServletException, IOException {resp.sendRedirect(url);}
+	@Override
+	public void init(FilterConfig fConfig) throws ServletException {}
+	@Override
+	public void destroy() {}
+}

+ 3 - 0
watero-rst-web/src/main/resources/platform.properties

@@ -106,3 +106,6 @@ scanningQrCode=https://w.iamberry.com/tooth/wechat/qr/
 #send from url
 #ReqURL=http://api.kdniao.cc/api/Eorderservice
 ReqURL=http://testapi.kdniao.cc:8081/api/EOrderService
+
+# wechat auth back url
+WECHAT_BACK_URL=http://test.iamberry.com/rst/wechatBack

+ 1 - 1
watero-rst-web/src/main/resources/watero-rst-ioc.xml

@@ -37,7 +37,7 @@
     <aop:aspectj-autoproxy proxy-target-class="true"/>
 
 	<!-- 开启注解启动定时器 -->
-    <task:annotation-driven/>
+    <!--<task:annotation-driven/>-->
 
 	<!-- DataSource -->
 	<import resource="classpath:watero-rst-db.xml"/>