Explorar el Código

Merge branch 'c_yuanren' of http://git.izouma.com/suochencheng/shouyoudianjing into c_yuanren

x1ongzhu hace 7 años
padre
commit
1dcf58a4b1
Se han modificado 97 ficheros con 641 adiciones y 316 borrados
  1. 4 4
      build.sh
  2. 33 0
      src/main/java/com/izouma/awesomeadmin/dao/HouseInfoMapper.xml
  3. 5 0
      src/main/java/com/izouma/awesomeadmin/datasource/DynamicDataSource.java
  4. 20 0
      src/main/java/com/izouma/awesomeadmin/model/HouseInfo.java
  5. 5 0
      src/main/java/com/izouma/awesomeadmin/web/MainController.java
  6. 2 0
      src/main/java/com/izouma/weixin/dao/WxpayTempMapper.java
  7. 76 0
      src/main/java/com/izouma/weixin/dao/WxpayTempMapper.xml
  8. 94 64
      src/main/java/com/izouma/weixin/model/WxpayTemp.java
  9. 65 133
      src/main/java/com/izouma/weixin/web/WeiXinController.java
  10. 119 104
      src/main/java/com/izouma/weixin/wxpay/WXPay.java
  11. 4 4
      src/main/resources/properties/outsidews.properties
  12. 3 3
      src/main/resources/spring/appDataSource.xml
  13. 1 0
      src/main/resources/spring/appWebService.xml
  14. 1 0
      src/main/resources/spring/spring-mvc.xml
  15. 1 1
      src/main/vue/src/pages/HouseInfos.vue
  16. 1 1
      src/main/webapp/WEB-INF/html/admin.html
  17. 131 0
      src/main/webapp/WEB-INF/html/share.html
  18. BIN
      src/main/webapp/share/images/img_0000000.png
  19. BIN
      src/main/webapp/share/images/text_yonghuduan.png
  20. 69 0
      src/main/webapp/share/share.css
  21. 5 0
      src/main/webapp/share/vue.js
  22. 0 0
      src/main/webapp/static/js/12.6f4e4ba7be0337c60b7b.js
  23. 0 0
      src/main/webapp/static/js/13.8e1ffaa0593596a251ef.js
  24. 0 0
      src/main/webapp/static/js/14.4a1120a55a5f5e4c8bf7.js
  25. 0 0
      src/main/webapp/static/js/15.dbc363386920ef0079e0.js
  26. 0 0
      src/main/webapp/static/js/16.a7d6b399865067e18872.js
  27. 0 0
      src/main/webapp/static/js/17.6e4ddf4f446652a10d9b.js
  28. 0 0
      src/main/webapp/static/js/18.a026a66ac0c4b7e1934f.js
  29. 0 0
      src/main/webapp/static/js/18.a975091c4bfa4bee8391.js
  30. 0 0
      src/main/webapp/static/js/19.9df416c6a29ae8970fcb.js
  31. 0 0
      src/main/webapp/static/js/19.f40ecf28088363e49bf2.js
  32. 0 0
      src/main/webapp/static/js/20.50cfa76f6ad5c9f5b376.js
  33. 0 0
      src/main/webapp/static/js/21.86574d72b749a5823302.js
  34. 0 0
      src/main/webapp/static/js/22.b15fe6c1047e5181d419.js
  35. 0 0
      src/main/webapp/static/js/23.74855519e124a9f4abd2.js
  36. 0 0
      src/main/webapp/static/js/24.c901531b71efa6e57165.js
  37. 0 0
      src/main/webapp/static/js/25.aebf149057a3494f02ff.js
  38. 0 0
      src/main/webapp/static/js/26.3d129a0077e32a60ae1f.js
  39. 0 0
      src/main/webapp/static/js/27.6e1cbac72969951418f8.js
  40. 0 0
      src/main/webapp/static/js/28.0c69183328ccd1e8f65f.js
  41. 0 0
      src/main/webapp/static/js/29.252437eb74f165792a46.js
  42. 0 0
      src/main/webapp/static/js/30.6689ea257729cb040d11.js
  43. 0 0
      src/main/webapp/static/js/31.aada8fad45060a615504.js
  44. 0 0
      src/main/webapp/static/js/32.85b0db7fc00473ef3e11.js
  45. 0 0
      src/main/webapp/static/js/33.4c898aba778c0c296907.js
  46. 0 0
      src/main/webapp/static/js/34.73807b7410f3c9d8fac6.js
  47. 0 0
      src/main/webapp/static/js/35.12523c6ca945dc0817d0.js
  48. 0 0
      src/main/webapp/static/js/36.263d5e882cb35fef151e.js
  49. 0 0
      src/main/webapp/static/js/37.1dda706e8a0a514ceb7f.js
  50. 0 0
      src/main/webapp/static/js/38.0a5d1afa217292e61986.js
  51. 0 0
      src/main/webapp/static/js/38.f331c44d0159027bb488.js
  52. 0 0
      src/main/webapp/static/js/39.8d114a461576debfcfe9.js
  53. 0 0
      src/main/webapp/static/js/40.db3efb0f099b45103889.js
  54. 0 0
      src/main/webapp/static/js/41.1c533658cdc3176f6430.js
  55. 0 0
      src/main/webapp/static/js/42.54e4831243fe6af63c2c.js
  56. 0 0
      src/main/webapp/static/js/43.d5989ba8619a2f1e35f9.js
  57. 0 0
      src/main/webapp/static/js/44.14a5eabe3eed0739443e.js
  58. 0 0
      src/main/webapp/static/js/45.c32eebcb6191d95a1bba.js
  59. 0 0
      src/main/webapp/static/js/46.4990bc37dc5c384e86bd.js
  60. 0 0
      src/main/webapp/static/js/47.c7fd8a8007f1815553c3.js
  61. 1 1
      src/main/webapp/static/js/48.33e69f34e4aacd6c29a8.js
  62. 0 0
      src/main/webapp/static/js/49.44364c72a5c1da67377d.js
  63. 0 0
      src/main/webapp/static/js/49.63421d0ad376a288f24e.js
  64. 0 0
      src/main/webapp/static/js/50.580f70d06bc24ef33818.js
  65. 0 0
      src/main/webapp/static/js/51.a0eaa3a333472f0196fc.js
  66. 0 0
      src/main/webapp/static/js/52.0f1c61b9410cc84a4f65.js
  67. 0 0
      src/main/webapp/static/js/53.1e6b8c27570eba0f64d2.js
  68. 0 0
      src/main/webapp/static/js/54.c783294083df8fe9109b.js
  69. 0 0
      src/main/webapp/static/js/55.bb7eb75865c3fe1437ac.js
  70. 0 0
      src/main/webapp/static/js/56.1b63058450334977a550.js
  71. 0 0
      src/main/webapp/static/js/57.9c364f0d6e1e46ec51fa.js
  72. 0 0
      src/main/webapp/static/js/58.93473ba15bd8ede14b32.js
  73. 0 0
      src/main/webapp/static/js/59.3ce519bf9b34c4c038dd.js
  74. 0 0
      src/main/webapp/static/js/60.5d55817722fcd2c6d970.js
  75. 0 0
      src/main/webapp/static/js/61.289e2736fdf391fedd5b.js
  76. 0 0
      src/main/webapp/static/js/61.9bf061df4f3e604cc955.js
  77. 1 1
      src/main/webapp/static/js/62.82db8d520c0607c1535c.js
  78. 0 0
      src/main/webapp/static/js/63.65a5cb6badfad206d98e.js
  79. 0 0
      src/main/webapp/static/js/64.a19e97e9e36a0d891d54.js
  80. 0 0
      src/main/webapp/static/js/65.ad5ec3d2592294d83d8e.js
  81. 0 0
      src/main/webapp/static/js/66.47a855866882e712c103.js
  82. 0 0
      src/main/webapp/static/js/67.5dd67720ee299250c204.js
  83. 0 0
      src/main/webapp/static/js/68.275ff58448231baba82f.js
  84. 0 0
      src/main/webapp/static/js/69.21740b53758cb089709b.js
  85. 0 0
      src/main/webapp/static/js/7.5db9b9377571155b89fe.js
  86. 0 0
      src/main/webapp/static/js/70.8a8a9cf412e2a0a158a9.js
  87. 0 0
      src/main/webapp/static/js/71.bfb98bd370b90a89585d.js
  88. 0 0
      src/main/webapp/static/js/72.a0cdf29fd642107c158d.js
  89. 0 0
      src/main/webapp/static/js/73.af1fd3385ea968c4938c.js
  90. 0 0
      src/main/webapp/static/js/74.e17b4e9a4100bb83e4f2.js
  91. 0 0
      src/main/webapp/static/js/75.5fc8be79252e9e559b41.js
  92. 0 0
      src/main/webapp/static/js/76.1231b95dff6d1a089fa8.js
  93. 0 0
      src/main/webapp/static/js/admin.33c54d16a8dd34d688dc.js
  94. 0 0
      src/main/webapp/static/js/admin.8757871e78c45fc80043.js
  95. 0 0
      src/main/webapp/static/js/manifest.09c9b554ad123d451b10.js
  96. 0 0
      src/main/webapp/static/js/manifest.b705e5c33c974a563663.js
  97. 0 0
      src/main/webapp/static/js/vendor.67205d896bd19668151b.js

+ 4 - 4
build.sh

@@ -21,8 +21,8 @@ fi
 
 mvn package
 
-/usr/local/tomcat/shouyoudianjing/bin/shutdown.sh -force
-rm -rf /var/www/shouyoudianjing
-mv target/awesome-admin /var/www/shouyoudianjing
-/usr/local/tomcat/shouyoudianjing/bin/startup.sh
+/usr/local/tomcat/yuanrendianjing/bin/shutdown.sh -force
+rm -rf /var/www/yuanrendianjing
+mv target/awesome-admin /var/www/yuanrendianjing
+/usr/local/tomcat/yuanrendianjing/bin/startup.sh
 

+ 33 - 0
src/main/java/com/izouma/awesomeadmin/dao/HouseInfoMapper.xml

@@ -403,10 +403,38 @@
         where
         id = #{id,jdbcType=INTEGER}
     </update>
+
+    <sql id="Recommender_rank">
+    , (
+            CASE
+            WHEN user_id IN (
+                SELECT
+                    id
+                FROM
+                    sys_user
+                WHERE
+                    del_flag = 'N'
+                AND recommender = #{record.myUserId}
+            ) THEN
+                1
+            WHEN user_id = #{record.myUserId} THEN
+                1
+            WHEN user_id = #{record.recommender} THEN
+                1
+            ELSE
+                0
+            END
+        ) AS recommender_rank
+    </sql>
+
     <select id="queryHouseInfoByPage" parameterType="java.util.Map"
             resultMap="PageHouseInfoResult">
         select
         <include refid="Base_Column_List"/>
+        <if test="record.myUserId != null and !&quot;&quot;.equals(record.myUserId)">
+            <include refid="Recommender_rank"/>
+        </if>
+
         from house_info
         <where>
             and del_flag = 'N'
@@ -551,6 +579,11 @@
         </where>
         order by
 
+        <if test="record.myUserId != null and !&quot;&quot;.equals(record.myUserId)">
+            recommender_rank desc ,
+        </if>
+
+
         <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
 
 

+ 5 - 0
src/main/java/com/izouma/awesomeadmin/datasource/DynamicDataSource.java

@@ -3,6 +3,7 @@ package com.izouma.awesomeadmin.datasource;
 import com.izouma.awesomeadmin.model.DataSourceInfo;
 import com.izouma.awesomeadmin.util.Const;
 import org.apache.commons.dbcp.BasicDataSource;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
 
 import javax.sql.DataSource;
@@ -18,6 +19,10 @@ public class DynamicDataSource extends AbstractRoutingDataSource {
     protected DataSource determineTargetDataSource() {
         // 根据数据库选择方案,拿到要访问的数据库
         String dataSourceName = determineCurrentLookupKey();
+
+        if (StringUtils.isEmpty(dataSourceName)) {
+            dataSourceName = "dataSource";
+        }
         if (!dataSourceName.equals("dataSource")) {
             DataSource datasource = (DataSource) targetDataSource.get(DynamicDataSourceHolder.getDataSource());
             if (datasource == null) {

+ 20 - 0
src/main/java/com/izouma/awesomeadmin/model/HouseInfo.java

@@ -65,6 +65,10 @@ public class HouseInfo {
 
     private GameInfo gameInfo;
 
+    private Integer myUserId;
+
+    private Integer recommender;
+
     public Integer getId() {
         return this.id;
     }
@@ -352,5 +356,21 @@ public class HouseInfo {
     public void setScoreType(Integer scoreType) {
         this.scoreType = scoreType;
     }
+
+    public Integer getMyUserId() {
+        return myUserId;
+    }
+
+    public void setMyUserId(Integer myUserId) {
+        this.myUserId = myUserId;
+    }
+
+    public Integer getRecommender() {
+        return recommender;
+    }
+
+    public void setRecommender(Integer recommender) {
+        this.recommender = recommender;
+    }
 }
 

+ 5 - 0
src/main/java/com/izouma/awesomeadmin/web/MainController.java

@@ -23,4 +23,9 @@ public class MainController {
     public ModelAndView admin(HttpServletRequest request) {
         return new ModelAndView("html/admin.html");
     }
+
+    @RequestMapping("/share")
+    public ModelAndView share(HttpServletRequest request) {
+        return new ModelAndView("html/share.html");
+    }
 }

+ 2 - 0
src/main/java/com/izouma/weixin/dao/WxpayTempMapper.java

@@ -20,6 +20,8 @@ public interface WxpayTempMapper{
 
     int updateByPrimaryKeySelective(WxpayTemp record);
 
+    int updateByOutTradeNo(WxpayTemp record);
+
     List<WxpayTemp> queryAllWxpayTemp(WxpayTemp record);
 
     List<WxpayTemp> queryWxpayTempByPage(Map<String, Object> parameter);

+ 76 - 0
src/main/java/com/izouma/weixin/dao/WxpayTempMapper.xml

@@ -20,6 +20,7 @@
         <result column="point" property="point" jdbcType="DECIMAL"/>
         <result column="cash" property="cash" jdbcType="DECIMAL"/>
         <result column="open_id" property="openId" jdbcType="VARCHAR"/>
+        <result column="result_code" property="resultCode" jdbcType="VARCHAR"/>
     </resultMap>
     <sql id="Base_Column_List">
         <trim suffixOverrides=",">
@@ -59,6 +60,8 @@
 
             open_id,
 
+            result_code,
+
         </trim>
     </sql>
     <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
@@ -129,6 +132,9 @@
             <if test="openId!= null">
                 open_id,
             </if>
+            <if test="resultCode!= null">
+                result_code,
+            </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">
@@ -185,6 +191,9 @@
             <if test="openId != null">
                 #{openId,jdbcType=VARCHAR},
             </if>
+            <if test="resultCode != null">
+                #{resultCode,jdbcType=VARCHAR},
+            </if>
         </trim>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.izouma.weixin.model.WxpayTemp">
@@ -244,9 +253,65 @@
             <if test="openId != null">
                 open_id= #{openId,jdbcType=VARCHAR},
             </if>
+            <if test="resultCode != null">
+                result_code= #{resultCode,jdbcType=VARCHAR},
+            </if>
         </set>
         where id = #{id,jdbcType=INTEGER}
     </update>
+    <update id="updateByOutTradeNo" parameterType="com.izouma.weixin.model.WxpayTemp">
+        update wxpay_temp
+        <set>
+            <if test="orderId != null">
+                order_id= #{orderId,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null">
+                user_id= #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="totalAmount != null">
+                total_amount= #{totalAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="outTradeNo != null">
+                out_trade_no= #{outTradeNo,jdbcType=VARCHAR},
+            </if>
+            <if test="transactionId != null">
+                transaction_id= #{transactionId,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                type_flag= #{typeFlag,jdbcType=INTEGER},
+            </if>
+            <if test="outRefundNo != null">
+                out_refund_no= #{outRefundNo,jdbcType=VARCHAR},
+            </if>
+            <if test="refundAmount != null">
+                refund_amount= #{refundAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="coin != null">
+                coin= #{coin,jdbcType=DECIMAL},
+            </if>
+            <if test="point != null">
+                point= #{point,jdbcType=DECIMAL},
+            </if>
+            <if test="cash != null">
+                cash= #{cash,jdbcType=DECIMAL},
+            </if>
+            <if test="openId != null">
+                open_id= #{openId,jdbcType=VARCHAR},
+            </if>
+            <if test="resultCode != null">
+                result_code= #{resultCode,jdbcType=VARCHAR},
+            </if>
+        </set>
+        where
+        out_trade_no = #{outTradeNo}
+        <if test="orderId != null and !&quot;&quot;.equals(orderId)">
+            and order_id = #{orderId}
+        </if>
+        <if test="userId != null and !&quot;&quot;.equals(userId)">
+            and user_id = #{userId}
+        </if>
+
+    </update>
     <select id="queryWxpayTempByPage" parameterType="java.util.Map" resultType="com.izouma.weixin.model.WxpayTemp">
         select
         <include refid="Base_Column_List"/>
@@ -307,6 +372,9 @@
             <if test="record.openId != null and !&quot;&quot;.equals(record.openId)">
                 and open_id = #{record.openId}
             </if>
+            <if test="record.resultCode != null and !&quot;&quot;.equals(record.resultCode)">
+                and result_code = #{record.resultCode}
+            </if>
             <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                     OR order_id LIKE concat('%',#{record.searchKey},'%')
@@ -436,6 +504,9 @@
             <if test="openId != null and !&quot;&quot;.equals(openId)">
                 and open_id = #{openId}
             </if>
+            <if test="resultCode != null and !&quot;&quot;.equals(resultCode)">
+                and result_code = #{resultCode}
+            </if>
             <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                     OR order_id LIKE concat('%',#{searchKey},'%')
@@ -565,6 +636,11 @@
                 and open_id = #{openId}
             </if>
 
+            <if test="resultCode != null and !&quot;&quot;.equals(resultCode)">
+                and result_code = #{resultCode}
+            </if>
+
+
         </where>
         LIMIT 1
     </select>

+ 94 - 64
src/main/java/com/izouma/weixin/model/WxpayTemp.java

@@ -2,13 +2,14 @@ package com.izouma.weixin.model;
 
 import java.math.BigDecimal;
 import java.util.*;
+
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonInclude;
 
 
 @JsonAutoDetect
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public class WxpayTemp{
+public class WxpayTemp {
     private Integer id;
     private String delFlag;
     private Date updateTime;
@@ -28,168 +29,197 @@ public class WxpayTemp{
     private BigDecimal cash;
     private String openId;
 
-private String searchKey;
+    /**
+     * SUCCESS/FAIL/WAIT_BUYER_PAY
+     */
+    private String resultCode;
+
+    private String searchKey;
 
-/**
-* and,test_name,like,value;or,remark,=,123
-*/
-private String advancedQuery;
+    /**
+     * and,test_name,like,value;or,remark,=,123
+     */
+    private String advancedQuery;
 
-/**
-* column_name_,desc_;column_name_,asc
-*/
-private String orderByStr;
+    /**
+     * column_name_,desc_;column_name_,asc
+     */
+    private String orderByStr;
 
-    public Integer getId(){
+    public Integer getId() {
         return this.id;
     }
 
-    public void setId(Integer id){
+    public void setId(Integer id) {
         this.id = id;
     }
-    public String getDelFlag(){
+
+    public String getDelFlag() {
         return this.delFlag;
     }
 
-    public void setDelFlag(String delFlag){
+    public void setDelFlag(String delFlag) {
         this.delFlag = delFlag;
     }
-    public Date getUpdateTime(){
+
+    public Date getUpdateTime() {
         return this.updateTime;
     }
 
-    public void setUpdateTime(Date updateTime){
+    public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
-    public String getUpdateUser(){
+
+    public String getUpdateUser() {
         return this.updateUser;
     }
 
-    public void setUpdateUser(String updateUser){
+    public void setUpdateUser(String updateUser) {
         this.updateUser = updateUser;
     }
-    public Date getCreateTime(){
+
+    public Date getCreateTime() {
         return this.createTime;
     }
 
-    public void setCreateTime(Date createTime){
+    public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
-    public String getCreateUser(){
+
+    public String getCreateUser() {
         return this.createUser;
     }
 
-    public void setCreateUser(String createUser){
+    public void setCreateUser(String createUser) {
         this.createUser = createUser;
     }
-    public String getOrderId(){
+
+    public String getOrderId() {
         return this.orderId;
     }
 
-    public void setOrderId(String orderId){
+    public void setOrderId(String orderId) {
         this.orderId = orderId;
     }
-    public String getUserId(){
+
+    public String getUserId() {
         return this.userId;
     }
 
-    public void setUserId(String userId){
+    public void setUserId(String userId) {
         this.userId = userId;
     }
-    public BigDecimal getTotalAmount(){
+
+    public BigDecimal getTotalAmount() {
         return this.totalAmount;
     }
 
-    public void setTotalAmount(BigDecimal totalAmount){
+    public void setTotalAmount(BigDecimal totalAmount) {
         this.totalAmount = totalAmount;
     }
-    public String getOutTradeNo(){
+
+    public String getOutTradeNo() {
         return this.outTradeNo;
     }
 
-    public void setOutTradeNo(String outTradeNo){
+    public void setOutTradeNo(String outTradeNo) {
         this.outTradeNo = outTradeNo;
     }
-    public String getTransactionId(){
+
+    public String getTransactionId() {
         return this.transactionId;
     }
 
-    public void setTransactionId(String transactionId){
+    public void setTransactionId(String transactionId) {
         this.transactionId = transactionId;
     }
-    public Integer getTypeFlag(){
+
+    public Integer getTypeFlag() {
         return this.typeFlag;
     }
 
-    public void setTypeFlag(Integer typeFlag){
+    public void setTypeFlag(Integer typeFlag) {
         this.typeFlag = typeFlag;
     }
-    public String getOutRefundNo(){
+
+    public String getOutRefundNo() {
         return this.outRefundNo;
     }
 
-    public void setOutRefundNo(String outRefundNo){
+    public void setOutRefundNo(String outRefundNo) {
         this.outRefundNo = outRefundNo;
     }
-    public BigDecimal getRefundAmount(){
+
+    public BigDecimal getRefundAmount() {
         return this.refundAmount;
     }
 
-    public void setRefundAmount(BigDecimal refundAmount){
+    public void setRefundAmount(BigDecimal refundAmount) {
         this.refundAmount = refundAmount;
     }
-    public BigDecimal getCoin(){
+
+    public BigDecimal getCoin() {
         return this.coin;
     }
 
-    public void setCoin(BigDecimal coin){
+    public void setCoin(BigDecimal coin) {
         this.coin = coin;
     }
-    public BigDecimal getPoint(){
+
+    public BigDecimal getPoint() {
         return this.point;
     }
 
-    public void setPoint(BigDecimal point){
+    public void setPoint(BigDecimal point) {
         this.point = point;
     }
-    public BigDecimal getCash(){
+
+    public BigDecimal getCash() {
         return this.cash;
     }
 
-    public void setCash(BigDecimal cash){
+    public void setCash(BigDecimal cash) {
         this.cash = cash;
     }
-    public String getOpenId(){
+
+    public String getOpenId() {
         return this.openId;
     }
 
-    public void setOpenId(String openId){
+    public void setOpenId(String openId) {
         this.openId = openId;
     }
 
-public String getSearchKey() {
-    return searchKey;
-}
+    public String getSearchKey() {
+        return searchKey;
+    }
 
-public void setSearchKey(String searchKey) {
-    this.searchKey = searchKey;
-}
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
 
-public String getAdvancedQuery() {
-    return advancedQuery;
-}
+    public String getAdvancedQuery() {
+        return advancedQuery;
+    }
 
-public void setAdvancedQuery(String advancedQuery) {
-    this.advancedQuery = advancedQuery;
-}
+    public void setAdvancedQuery(String advancedQuery) {
+        this.advancedQuery = advancedQuery;
+    }
 
-public String getOrderByStr() {
-    return orderByStr;
-}
+    public String getOrderByStr() {
+        return orderByStr;
+    }
 
-public void setOrderByStr(String orderByStr) {
-    this.orderByStr = orderByStr;
-}
+    public void setOrderByStr(String orderByStr) {
+        this.orderByStr = orderByStr;
+    }
+
+    public String getResultCode() {
+        return resultCode;
+    }
 
+    public void setResultCode(String resultCode) {
+        this.resultCode = resultCode;
+    }
 }
 

+ 65 - 133
src/main/java/com/izouma/weixin/web/WeiXinController.java

@@ -2,8 +2,10 @@ package com.izouma.weixin.web;
 
 import com.izouma.awesomeadmin.constant.AppConstant;
 import com.izouma.awesomeadmin.model.MemberCoin;
+import com.izouma.awesomeadmin.model.ProductInfo;
 import com.izouma.awesomeadmin.model.UserInfo;
 import com.izouma.awesomeadmin.service.MemberCoinService;
+import com.izouma.awesomeadmin.service.ProductInfoService;
 import com.izouma.awesomeadmin.service.UserInfoService;
 import com.izouma.awesomeadmin.shiro.WechatToken;
 import com.izouma.awesomeadmin.util.Base64;
@@ -16,6 +18,7 @@ import com.izouma.weixin.service.WeiXinService;
 import com.izouma.weixin.util.WeixinUtil;
 import com.izouma.weixin.wxpay.MyConfig;
 import com.izouma.weixin.wxpay.WXPay;
+import com.izouma.weixin.wxpay.WXPayConstants;
 import com.izouma.weixin.wxpay.WXPayUtil;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
@@ -56,6 +59,9 @@ public class WeiXinController {
     @Autowired
     private WxpayTempMapper wxpayTempMapper;
 
+    @Autowired
+    private ProductInfoService productInfoService;
+
     @RequestMapping(value = "/auth", method = RequestMethod.GET)
     @ResponseBody
     public ModelAndView auth(@RequestParam("redirectUri") String redirectUri) {
@@ -115,171 +121,84 @@ public class WeiXinController {
                 JSONObject attachJson = new JSONObject(attach);
 
                 WxpayTemp wxpayTemp = new WxpayTemp();
-                wxpayTemp.setOrderId(attachJson.getString("orderId"));
-                wxpayTemp.setCoin(BigDecimal.valueOf(attachJson.getDouble("coin")));
-                wxpayTemp.setPoint(BigDecimal.valueOf(attachJson.getDouble("point")));
+                wxpayTemp.setUserId(attachJson.getString("userId"));
+                wxpayTemp.setOrderId(attachJson.getString("productId"));
                 wxpayTemp.setCash(BigDecimal.valueOf(attachJson.getDouble("cash")));
                 wxpayTemp.setTotalAmount(BigDecimal.valueOf(attachJson.getInt("total") / 100.0));
                 wxpayTemp.setOutTradeNo(m.get("out_trade_no"));
                 wxpayTemp.setTransactionId(m.get("transaction_id"));
-                wxpayTemp.setTypeFlag(AppConstant.Aliapi.BUY);
-
-                wxpayTempMapper.insertSelective(wxpayTemp);
-
-                //TODO 订单回调
-            }
-        } catch (Exception e) {
-            logger.error("微信支付回调异常", e);
-        }
 
+                wxpayTempMapper.updateByOutTradeNo(wxpayTemp);
 
-        return null;
-    }
-
-
-    @RequestMapping(value = "/notifyRecharge", method = RequestMethod.POST)
-    @ResponseBody
-    public ModelAndView notifyRecharge(HttpServletRequest request, HttpServletResponse response) {
-
-        try {
-
-            Map<String, String> m = notifyMap(request, response);
-            if (m != null && "SUCCESS".equals(m.get("result_code"))) {
-                String attach = m.get("attach");
-                JSONObject attachJson = new JSONObject(attach);
-
-                Integer userId = attachJson.getInt("userId");
-                Integer money = attachJson.getInt("money") / 100;
-
-                UserInfo userInfo = userInfoService.getUserInfoById(userId + "");
+                logger.info("buyProductInfo");
+                try {
+                    ProductInfo productInfo = productInfoService.getProductInfoById(attachJson.getString("productId"));
+                    if (productInfo != null) {
+                        if (AppConstant.ProductType.RECHARGE == productInfo.getTypeFlag()) {//如果是充值类型
 
+                            MemberCoin memberCoin = new MemberCoin();
+                            memberCoin.setMoney(productInfo.getCoin());
+                            memberCoin.setUserId(Integer.valueOf(attachJson.getString("userId")));
+                            memberCoin.setRemark("购买" + productInfo.getProductName() + "套餐,充值");
+                            memberCoin.setRechargeType(AppConstant.RechargeType.WEI_XIN);
 
-                /**
-                 * 余额
-                 */
-                double moneyCoin = userInfo.getMoneyCoin();
-                UserInfo updateUser = new UserInfo();
-                updateUser.setId(userId);
-                updateUser.setMoneyCoin(moneyCoin + money);
-                userInfoService.updateUserInfo(updateUser);
+                            memberCoinService.recharge(memberCoin);
 
 
-                MemberCoin memberCoin = new MemberCoin();
-                memberCoin.setCreateUser("微信充值");
-                memberCoin.setUserId(userId);
-                memberCoin.setMoney(BigDecimal.valueOf(money));
-                memberCoin.setBalance(BigDecimal.valueOf(moneyCoin + money));
-                memberCoin.setTypeFlag(AppConstant.CoinType.RECHARGE);
-                memberCoin.setRemark("微信充值," + money);
-                memberCoinService.createMemberCoin(memberCoin);
+                        } else {
+                            //TODO 购买VIP
+                        }
 
+                    }
 
-                WxpayTemp wxpayTemp = new WxpayTemp();
+                } catch (Exception e) {
+                    logger.error("buyProductInfo", e);
+                }
 
-                wxpayTemp.setUserId(String.valueOf(userId));
-                wxpayTemp.setOutTradeNo(m.get("out_trade_no"));
-                wxpayTemp.setTransactionId(m.get("transaction_id"));
-                wxpayTemp.setTotalAmount(BigDecimal.valueOf(money));
-                wxpayTemp.setTypeFlag(AppConstant.Aliapi.RECHARGE);
 
-                wxpayTempMapper.insertSelective(wxpayTemp);
             }
-
         } catch (Exception e) {
-            logger.error("微信充值回调异常", e);
+            logger.error("微信支付回调异常", e);
         }
 
+
         return null;
     }
 
 
-    @RequestMapping(value = "/recharge", method = RequestMethod.POST)
+    @RequestMapping(value = "/unifiedOrder", method = RequestMethod.GET)
     @ResponseBody
-    public Map recharge(@RequestParam(required = true, value = "userId") Integer userId, @RequestParam(required = true, value = "money") Integer money) {
-        Map<String, String> result = new HashMap<String, String>();
-
+    public Map<String, String> unifiedOrder(@RequestParam(required = true, value = "userId") String userId,
+                                            @RequestParam(required = true, value = "productId") String productId
+    ) {
+        Map<String, String> result = new HashMap<>();
         try {
 
             MyConfig config = new MyConfig();
 
-            int total = money;
+            double cash = 1;
 
-            //测试为一分
-            //total = 1;
+            ProductInfo productInfo = productInfoService.getProductInfoById(productId);
 
-            JSONObject attach = new JSONObject();
-            attach.put("userId", userId);
-            attach.put("money", money);
+            cash = productInfo.getMoney().doubleValue();
 
-            WxPaySendData data = new WxPaySendData();
-            data.setDevice_info(AppConstant.DEVICE_INFO);
-            data.setBody("充值");
-            data.setOut_trade_no(WeixinUtil.create_out_trade_no());
-            data.setNotify_url(PropertiesFileLoader.getProperties("weixin_notify_url_recharge"));
-            data.setTotal_fee(total);
-            data.setTrade_type(AppConstant.TRADE_TYPE_APP);
-            //data.setSpbill_create_ip("117.62.182.63");
-            data.setSpbill_create_ip(WeixinUtil.getHostAdderss());
-            //扫码支付不需要openId
-            //data.setOpenid(openId);
-
-            data.setAttach(attach.toString());
-
-            Map<String, String> unified = WeixinUtil.unifiedOrder(data);
-
-            String timeStamp = MbappUtil.create_timestamp();
-            String nonceStr = MbappUtil.create_nonce_str();
-            String packageStr = "prepay_id=" + unified.get("prepay_id");
-            //生成sign签名
-            Map<String, String> params = new HashMap<>();
-
-            params.put("appId", config.getAppID());
-            params.put("timeStamp", timeStamp);
-            params.put("nonceStr", nonceStr);
-            params.put("package", packageStr);
-
-            result.put("appId", config.getAppID());
-            result.put("timeStamp", timeStamp);
-            result.put("nonceStr", nonceStr);
-            result.put("myPackage", packageStr);
-            result.put("paySign", WXPayUtil.generateSignature(params, config.getKey()));
-
-            result.put("prepay_id", unified.get("prepay_id"));
-            result.put("code_url", unified.get("code_url"));
-        } catch (Exception e) {
-            logger.error("", e);
-        }
-        return result;
-    }
-
-    @RequestMapping(value = "/unifiedOrder", method = RequestMethod.GET)
-    @ResponseBody
-    public Map<String, String> unifiedOrder(@RequestParam(required = true, value = "orderId") String orderId, @RequestParam(required = true, value = "coin") double coin,
-                                            @RequestParam(required = true, value = "point") double point) {
-        Map<String, String> result = new HashMap<>();
-        try {
-
-            MyConfig config = new MyConfig();
-
-            double cash = 1;//userOrderService.calculatedPrice(orderId, coin, point);
             int total = 0;
 
 
             total = (int) (cash * 100);
 
             //测试为一分
-            //total = 1;
+            total = 1;
 
             JSONObject attach = new JSONObject();
-            attach.put("orderId", orderId);
-            attach.put("coin", coin);
-            attach.put("point", point);
+            attach.put("productId", productId);
+            attach.put("userId", userId);
             attach.put("cash", cash);
             attach.put("total", total);
 
             WxPaySendData data = new WxPaySendData();
             data.setDevice_info(AppConstant.DEVICE_INFO);
-            data.setBody("商品");
+            data.setBody(productInfo.getProductName());
             data.setOut_trade_no(MbappUtil.create_out_trade_no());
             data.setNotify_url(PropertiesFileLoader.getProperties("weixin_notify_url"));
             data.setTotal_fee(total);
@@ -293,23 +212,36 @@ public class WeiXinController {
 
             String timeStamp = MbappUtil.create_timestamp();
             String nonceStr = MbappUtil.create_nonce_str();
-            String packageStr = "prepay_id=" + unified.get("prepay_id");
+
             //生成sign签名
             Map<String, String> params = new HashMap<>();
 
-            params.put("appId", config.getAppID());
-            params.put("timeStamp", timeStamp);
-            params.put("nonceStr", nonceStr);
-            params.put("package", packageStr);
+            params.put("appid", config.getAppID());
+            params.put("partnerid", config.getMchID());
+            params.put("prepayid", unified.get("prepay_id"));
+            params.put("timestamp", timeStamp);
+            params.put("noncestr", nonceStr);
+            params.put("package", "Sign=WXPay");
 
             result.put("appId", config.getAppID());
-            result.put("timeStamp", timeStamp);
-            result.put("nonceStr", nonceStr);
-            result.put("myPackage", packageStr);
-            result.put("paySign", WXPayUtil.generateSignature(params, config.getKey()));
+            result.put("partnerid", config.getMchID());
+            result.put("prepayid", unified.get("prepay_id"));
+            result.put("timestamp", timeStamp);
+            result.put("noncestr", nonceStr);
+            result.put("package", "Sign=WXPay");
+            result.put("sign", WXPayUtil.generateSignature(params, config.getKey(), WXPayConstants.SignType.HMACSHA256));
+
+
+
+            WxpayTemp wxpayTemp = new WxpayTemp();
+            wxpayTemp.setOrderId(productId);
+            wxpayTemp.setCash(BigDecimal.valueOf(cash));
+            wxpayTemp.setTotalAmount(BigDecimal.valueOf(total / 100.0));
+            wxpayTemp.setOutTradeNo(data.getOut_trade_no());
+            wxpayTemp.setTypeFlag(AppConstant.Aliapi.BUY);
+            wxpayTemp.setResultCode("WAIT_BUYER_PAY");
+            wxpayTempMapper.insertSelective(wxpayTemp);
 
-            result.put("prepay_id", unified.get("prepay_id"));
-            result.put("code_url", unified.get("code_url"));
         } catch (Exception e) {
             logger.error("", e);
         }

+ 119 - 104
src/main/java/com/izouma/weixin/wxpay/WXPay.java

@@ -16,12 +16,30 @@ public class WXPay {
         this(config, null, true, false);
     }
 
+    // 新增的构造方法
+    public WXPay(final WXPayConfig config, WXPayConstants.SignType signType) throws Exception {
+        this(config, null, true, false, signType);
+    }
+
+    // 新增的构造方法
+    public WXPay(final WXPayConfig config, final String notifyUrl,
+                 final boolean autoReport, final boolean useSandbox,
+                 WXPayConstants.SignType signType) throws Exception {
+        this.config = config;
+        this.notifyUrl = notifyUrl;
+        this.autoReport = autoReport;
+        this.useSandbox = useSandbox;
+        this.signType = signType;
+        this.wxPayRequest = new WXPayRequest(config);
+    }
+
+
     public WXPay(final WXPayConfig config, final boolean autoReport) throws Exception {
         this(config, null, autoReport, false);
     }
 
 
-    public WXPay(final WXPayConfig config, final boolean autoReport, final boolean useSandbox) throws Exception{
+    public WXPay(final WXPayConfig config, final boolean autoReport, final boolean useSandbox) throws Exception {
         this(config, null, autoReport, useSandbox);
     }
 
@@ -40,8 +58,7 @@ public class WXPay {
         this.useSandbox = useSandbox;
         if (useSandbox) {
             this.signType = WXPayConstants.SignType.MD5; // 沙箱环境
-        }
-        else {
+        } else {
             this.signType = WXPayConstants.SignType.HMACSHA256;
         }
         this.wxPayRequest = new WXPayRequest(config);
@@ -60,7 +77,7 @@ public class WXPay {
         if (this.config.getCertStream() == null) {
             throw new Exception("cert stream in config is empty");
         }
-        if (this.config.getWXPayDomain() == null){
+        if (this.config.getWXPayDomain() == null) {
             throw new Exception("config.getWXPayDomain() is null");
         }
 
@@ -87,8 +104,7 @@ public class WXPay {
         reqData.put("nonce_str", WXPayUtil.generateNonceStr());
         if (WXPayConstants.SignType.MD5.equals(this.signType)) {
             reqData.put("sign_type", WXPayConstants.MD5);
-        }
-        else if (WXPayConstants.SignType.HMACSHA256.equals(this.signType)) {
+        } else if (WXPayConstants.SignType.HMACSHA256.equals(this.signType)) {
             reqData.put("sign_type", WXPayConstants.HMACSHA256);
         }
         reqData.put("sign", WXPayUtil.generateSignature(reqData, config.getKey(), this.signType));
@@ -118,20 +134,17 @@ public class WXPay {
         String signTypeInData = reqData.get(WXPayConstants.FIELD_SIGN_TYPE);
         WXPayConstants.SignType signType;
         if (signTypeInData == null) {
-            signType = WXPayConstants.SignType.MD5;
-        }
-        else {
+            //signType = WXPayConstants.SignType.MD5;
+            signType = this.signType;//修改为默认类型
+        } else {
             signTypeInData = signTypeInData.trim();
             if (signTypeInData.length() == 0) {
                 signType = WXPayConstants.SignType.MD5;
-            }
-            else if (WXPayConstants.MD5.equals(signTypeInData)) {
+            } else if (WXPayConstants.MD5.equals(signTypeInData)) {
                 signType = WXPayConstants.SignType.MD5;
-            }
-            else if (WXPayConstants.HMACSHA256.equals(signTypeInData)) {
+            } else if (WXPayConstants.HMACSHA256.equals(signTypeInData)) {
                 signType = WXPayConstants.SignType.HMACSHA256;
-            }
-            else {
+            } else {
                 throw new Exception(String.format("Unsupported sign_type: %s", signTypeInData));
             }
         }
@@ -141,10 +154,11 @@ public class WXPay {
 
     /**
      * 不需要证书的请求
-     * @param urlSuffix String
-     * @param reqData 向wxpay post的请求数据
+     *
+     * @param urlSuffix        String
+     * @param reqData          向wxpay post的请求数据
      * @param connectTimeoutMs 超时时间,单位是毫秒
-     * @param readTimeoutMs 超时时间,单位是毫秒
+     * @param readTimeoutMs    超时时间,单位是毫秒
      * @return API返回数据
      * @throws Exception
      */
@@ -160,16 +174,17 @@ public class WXPay {
 
     /**
      * 需要证书的请求
-     * @param urlSuffix String
-     * @param reqData 向wxpay post的请求数据  Map
+     *
+     * @param urlSuffix        String
+     * @param reqData          向wxpay post的请求数据  Map
      * @param connectTimeoutMs 超时时间,单位是毫秒
-     * @param readTimeoutMs 超时时间,单位是毫秒
+     * @param readTimeoutMs    超时时间,单位是毫秒
      * @return API返回数据
      * @throws Exception
      */
     public String requestWithCert(String urlSuffix, Map<String, String> reqData,
                                   int connectTimeoutMs, int readTimeoutMs) throws Exception {
-        String msgUUID= reqData.get("nonce_str");
+        String msgUUID = reqData.get("nonce_str");
         String reqBody = WXPayUtil.mapToXml(reqData);
 
         String resp = this.wxPayRequest.requestWithCert(urlSuffix, msgUUID, reqBody, connectTimeoutMs, readTimeoutMs, this.autoReport);
@@ -178,6 +193,7 @@ public class WXPay {
 
     /**
      * 处理 HTTPS API返回数据,转换成Map对象。return_code为SUCCESS时,验证签名。
+     *
      * @param xmlStr API返回的XML格式数据
      * @return Map类型数据
      * @throws Exception
@@ -188,23 +204,19 @@ public class WXPay {
         Map<String, String> respData = WXPayUtil.xmlToMap(xmlStr);
         if (respData.containsKey(RETURN_CODE)) {
             return_code = respData.get(RETURN_CODE);
-        }
-        else {
+        } else {
             throw new Exception(String.format("No `return_code` in XML: %s", xmlStr));
         }
 
         if (return_code.equals(WXPayConstants.FAIL)) {
             return respData;
-        }
-        else if (return_code.equals(WXPayConstants.SUCCESS)) {
-           if (this.isResponseSignatureValid(respData)) {
-               return respData;
-           }
-           else {
-               throw new Exception(String.format("Invalid sign value in XML: %s", xmlStr));
-           }
-        }
-        else {
+        } else if (return_code.equals(WXPayConstants.SUCCESS)) {
+            if (this.isResponseSignatureValid(respData)) {
+                return respData;
+            } else {
+                throw new Exception(String.format("Invalid sign value in XML: %s", xmlStr));
+            }
+        } else {
             throw new Exception(String.format("return_code value %s is invalid in XML: %s", return_code, xmlStr));
         }
     }
@@ -212,6 +224,7 @@ public class WXPay {
     /**
      * 作用:提交刷卡支付<br>
      * 场景:刷卡支付
+     *
      * @param reqData 向wxpay post的请求数据
      * @return API返回数据
      * @throws Exception
@@ -224,9 +237,10 @@ public class WXPay {
     /**
      * 作用:提交刷卡支付<br>
      * 场景:刷卡支付
-     * @param reqData 向wxpay post的请求数据
+     *
+     * @param reqData          向wxpay post的请求数据
      * @param connectTimeoutMs 连接超时时间,单位是毫秒
-     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @param readTimeoutMs    读超时时间,单位是毫秒
      * @return API返回数据
      * @throws Exception
      */
@@ -234,8 +248,7 @@ public class WXPay {
         String url;
         if (this.useSandbox) {
             url = WXPayConstants.SANDBOX_MICROPAY_URL_SUFFIX;
-        }
-        else {
+        } else {
             url = WXPayConstants.MICROPAY_URL_SUFFIX;
         }
         String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
@@ -245,6 +258,7 @@ public class WXPay {
     /**
      * 提交刷卡支付,针对软POS,尽可能做成功
      * 内置重试机制,最多60s
+     *
      * @param reqData
      * @return
      * @throws Exception
@@ -256,13 +270,14 @@ public class WXPay {
     /**
      * 提交刷卡支付,针对软POS,尽可能做成功
      * 内置重试机制,最多60s
+     *
      * @param reqData
      * @param connectTimeoutMs
      * @return
      * @throws Exception
      */
     public Map<String, String> microPayWithPos(Map<String, String> reqData, int connectTimeoutMs) throws Exception {
-        int remainingTimeMs = 60*1000;
+        int remainingTimeMs = 60 * 1000;
         long startTimestampMs = 0;
         Map<String, String> lastResult = null;
         Exception lastException = null;
@@ -279,57 +294,49 @@ public class WXPay {
                         String errCode = lastResult.get("err_code");
                         if (resultCode.equals("SUCCESS")) {
                             break;
-                        }
-                        else {
+                        } else {
                             // 看错误码,若支付结果未知,则重试提交刷卡支付
                             if (errCode.equals("SYSTEMERROR") || errCode.equals("BANKERROR") || errCode.equals("USERPAYING")) {
-                                remainingTimeMs = remainingTimeMs - (int)(WXPayUtil.getCurrentTimestampMs() - startTimestampMs);
+                                remainingTimeMs = remainingTimeMs - (int) (WXPayUtil.getCurrentTimestampMs() - startTimestampMs);
                                 if (remainingTimeMs <= 100) {
                                     break;
-                                }
-                                else {
+                                } else {
                                     WXPayUtil.getLogger().info("microPayWithPos: try micropay again");
-                                    if (remainingTimeMs > 5*1000) {
-                                        Thread.sleep(5*1000);
-                                    }
-                                    else {
-                                        Thread.sleep(1*1000);
+                                    if (remainingTimeMs > 5 * 1000) {
+                                        Thread.sleep(5 * 1000);
+                                    } else {
+                                        Thread.sleep(1 * 1000);
                                     }
                                     continue;
                                 }
-                            }
-                            else {
+                            } else {
                                 break;
                             }
                         }
-                    }
-                    else {
+                    } else {
                         break;
                     }
-                }
-                catch (Exception ex) {
+                } catch (Exception ex) {
                     lastResult = null;
                     lastException = ex;
                 }
-            }
-            else {
+            } else {
                 break;
             }
         }
 
         if (lastResult == null) {
             throw lastException;
-        }
-        else {
+        } else {
             return lastResult;
         }
     }
 
 
-
     /**
      * 作用:统一下单<br>
      * 场景:公共号支付、扫码支付、APP支付
+     *
      * @param reqData 向wxpay post的请求数据
      * @return API返回数据
      * @throws Exception
@@ -342,21 +349,21 @@ public class WXPay {
     /**
      * 作用:统一下单<br>
      * 场景:公共号支付、扫码支付、APP支付
-     * @param reqData 向wxpay post的请求数据
+     *
+     * @param reqData          向wxpay post的请求数据
      * @param connectTimeoutMs 连接超时时间,单位是毫秒
-     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @param readTimeoutMs    读超时时间,单位是毫秒
      * @return API返回数据
      * @throws Exception
      */
-    public Map<String, String> unifiedOrder(Map<String, String> reqData,  int connectTimeoutMs, int readTimeoutMs) throws Exception {
+    public Map<String, String> unifiedOrder(Map<String, String> reqData, int connectTimeoutMs, int readTimeoutMs) throws Exception {
         String url;
         if (this.useSandbox) {
             url = WXPayConstants.SANDBOX_UNIFIEDORDER_URL_SUFFIX;
-        }
-        else {
+        } else {
             url = WXPayConstants.UNIFIEDORDER_URL_SUFFIX;
         }
-        if(this.notifyUrl != null) {
+        if (this.notifyUrl != null) {
             reqData.put("notify_url", this.notifyUrl);
         }
         String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
@@ -367,6 +374,7 @@ public class WXPay {
     /**
      * 作用:查询订单<br>
      * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     *
      * @param reqData 向wxpay post的请求数据
      * @return API返回数据
      * @throws Exception
@@ -379,9 +387,10 @@ public class WXPay {
     /**
      * 作用:查询订单<br>
      * 场景:刷卡支付、公共号支付、扫码支付、APP支付
-     * @param reqData 向wxpay post的请求数据 int
+     *
+     * @param reqData          向wxpay post的请求数据 int
      * @param connectTimeoutMs 连接超时时间,单位是毫秒
-     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @param readTimeoutMs    读超时时间,单位是毫秒
      * @return API返回数据
      * @throws Exception
      */
@@ -389,8 +398,7 @@ public class WXPay {
         String url;
         if (this.useSandbox) {
             url = WXPayConstants.SANDBOX_ORDERQUERY_URL_SUFFIX;
-        }
-        else {
+        } else {
             url = WXPayConstants.ORDERQUERY_URL_SUFFIX;
         }
         String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
@@ -401,6 +409,7 @@ public class WXPay {
     /**
      * 作用:撤销订单<br>
      * 场景:刷卡支付
+     *
      * @param reqData 向wxpay post的请求数据
      * @return API返回数据
      * @throws Exception
@@ -414,9 +423,10 @@ public class WXPay {
      * 作用:撤销订单<br>
      * 场景:刷卡支付<br>
      * 其他:需要证书
-     * @param reqData 向wxpay post的请求数据
+     *
+     * @param reqData          向wxpay post的请求数据
      * @param connectTimeoutMs 连接超时时间,单位是毫秒
-     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @param readTimeoutMs    读超时时间,单位是毫秒
      * @return API返回数据
      * @throws Exception
      */
@@ -424,8 +434,7 @@ public class WXPay {
         String url;
         if (this.useSandbox) {
             url = WXPayConstants.SANDBOX_REVERSE_URL_SUFFIX;
-        }
-        else {
+        } else {
             url = WXPayConstants.REVERSE_URL_SUFFIX;
         }
         String respXml = this.requestWithCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
@@ -436,6 +445,7 @@ public class WXPay {
     /**
      * 作用:关闭订单<br>
      * 场景:公共号支付、扫码支付、APP支付
+     *
      * @param reqData 向wxpay post的请求数据
      * @return API返回数据
      * @throws Exception
@@ -448,18 +458,18 @@ public class WXPay {
     /**
      * 作用:关闭订单<br>
      * 场景:公共号支付、扫码支付、APP支付
-     * @param reqData 向wxpay post的请求数据
+     *
+     * @param reqData          向wxpay post的请求数据
      * @param connectTimeoutMs 连接超时时间,单位是毫秒
-     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @param readTimeoutMs    读超时时间,单位是毫秒
      * @return API返回数据
      * @throws Exception
      */
-    public Map<String, String> closeOrder(Map<String, String> reqData,  int connectTimeoutMs, int readTimeoutMs) throws Exception {
+    public Map<String, String> closeOrder(Map<String, String> reqData, int connectTimeoutMs, int readTimeoutMs) throws Exception {
         String url;
         if (this.useSandbox) {
             url = WXPayConstants.SANDBOX_CLOSEORDER_URL_SUFFIX;
-        }
-        else {
+        } else {
             url = WXPayConstants.CLOSEORDER_URL_SUFFIX;
         }
         String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
@@ -470,6 +480,7 @@ public class WXPay {
     /**
      * 作用:申请退款<br>
      * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     *
      * @param reqData 向wxpay post的请求数据
      * @return API返回数据
      * @throws Exception
@@ -483,9 +494,10 @@ public class WXPay {
      * 作用:申请退款<br>
      * 场景:刷卡支付、公共号支付、扫码支付、APP支付<br>
      * 其他:需要证书
-     * @param reqData 向wxpay post的请求数据
+     *
+     * @param reqData          向wxpay post的请求数据
      * @param connectTimeoutMs 连接超时时间,单位是毫秒
-     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @param readTimeoutMs    读超时时间,单位是毫秒
      * @return API返回数据
      * @throws Exception
      */
@@ -493,8 +505,7 @@ public class WXPay {
         String url;
         if (this.useSandbox) {
             url = WXPayConstants.SANDBOX_REFUND_URL_SUFFIX;
-        }
-        else {
+        } else {
             url = WXPayConstants.REFUND_URL_SUFFIX;
         }
         String respXml = this.requestWithCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
@@ -505,6 +516,7 @@ public class WXPay {
     /**
      * 作用:退款查询<br>
      * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     *
      * @param reqData 向wxpay post的请求数据
      * @return API返回数据
      * @throws Exception
@@ -517,9 +529,10 @@ public class WXPay {
     /**
      * 作用:退款查询<br>
      * 场景:刷卡支付、公共号支付、扫码支付、APP支付
-     * @param reqData 向wxpay post的请求数据
+     *
+     * @param reqData          向wxpay post的请求数据
      * @param connectTimeoutMs 连接超时时间,单位是毫秒
-     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @param readTimeoutMs    读超时时间,单位是毫秒
      * @return API返回数据
      * @throws Exception
      */
@@ -527,8 +540,7 @@ public class WXPay {
         String url;
         if (this.useSandbox) {
             url = WXPayConstants.SANDBOX_REFUNDQUERY_URL_SUFFIX;
-        }
-        else {
+        } else {
             url = WXPayConstants.REFUNDQUERY_URL_SUFFIX;
         }
         String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
@@ -539,6 +551,7 @@ public class WXPay {
     /**
      * 作用:对账单下载(成功时返回对账单数据,失败时返回XML格式数据)<br>
      * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     *
      * @param reqData 向wxpay post的请求数据
      * @return API返回数据
      * @throws Exception
@@ -552,10 +565,11 @@ public class WXPay {
      * 作用:对账单下载<br>
      * 场景:刷卡支付、公共号支付、扫码支付、APP支付<br>
      * 其他:无论是否成功都返回Map。若成功,返回的Map中含有return_code、return_msg、data,
-     *      其中return_code为`SUCCESS`,data为对账单数据。
-     * @param reqData 向wxpay post的请求数据
+     * 其中return_code为`SUCCESS`,data为对账单数据。
+     *
+     * @param reqData          向wxpay post的请求数据
      * @param connectTimeoutMs 连接超时时间,单位是毫秒
-     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @param readTimeoutMs    读超时时间,单位是毫秒
      * @return 经过封装的API返回数据
      * @throws Exception
      */
@@ -563,8 +577,7 @@ public class WXPay {
         String url;
         if (this.useSandbox) {
             url = WXPayConstants.SANDBOX_DOWNLOADBILL_URL_SUFFIX;
-        }
-        else {
+        } else {
             url = WXPayConstants.DOWNLOADBILL_URL_SUFFIX;
         }
         String respStr = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs).trim();
@@ -572,8 +585,7 @@ public class WXPay {
         // 出现错误,返回XML数据
         if (respStr.indexOf("<") == 0) {
             ret = WXPayUtil.xmlToMap(respStr);
-        }
-        else {
+        } else {
             // 正常返回csv数据
             ret = new HashMap<String, String>();
             ret.put("return_code", WXPayConstants.SUCCESS);
@@ -587,6 +599,7 @@ public class WXPay {
     /**
      * 作用:交易保障<br>
      * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     *
      * @param reqData 向wxpay post的请求数据
      * @return API返回数据
      * @throws Exception
@@ -599,9 +612,10 @@ public class WXPay {
     /**
      * 作用:交易保障<br>
      * 场景:刷卡支付、公共号支付、扫码支付、APP支付
-     * @param reqData 向wxpay post的请求数据
+     *
+     * @param reqData          向wxpay post的请求数据
      * @param connectTimeoutMs 连接超时时间,单位是毫秒
-     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @param readTimeoutMs    读超时时间,单位是毫秒
      * @return API返回数据
      * @throws Exception
      */
@@ -609,8 +623,7 @@ public class WXPay {
         String url;
         if (this.useSandbox) {
             url = WXPayConstants.SANDBOX_REPORT_URL_SUFFIX;
-        }
-        else {
+        } else {
             url = WXPayConstants.REPORT_URL_SUFFIX;
         }
         String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
@@ -621,6 +634,7 @@ public class WXPay {
     /**
      * 作用:转换短链接<br>
      * 场景:刷卡支付、扫码支付
+     *
      * @param reqData 向wxpay post的请求数据
      * @return API返回数据
      * @throws Exception
@@ -633,6 +647,7 @@ public class WXPay {
     /**
      * 作用:转换短链接<br>
      * 场景:刷卡支付、扫码支付
+     *
      * @param reqData 向wxpay post的请求数据
      * @return API返回数据
      * @throws Exception
@@ -641,8 +656,7 @@ public class WXPay {
         String url;
         if (this.useSandbox) {
             url = WXPayConstants.SANDBOX_SHORTURL_URL_SUFFIX;
-        }
-        else {
+        } else {
             url = WXPayConstants.SHORTURL_URL_SUFFIX;
         }
         String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
@@ -653,6 +667,7 @@ public class WXPay {
     /**
      * 作用:授权码查询OPENID接口<br>
      * 场景:刷卡支付
+     *
      * @param reqData 向wxpay post的请求数据
      * @return API返回数据
      * @throws Exception
@@ -665,9 +680,10 @@ public class WXPay {
     /**
      * 作用:授权码查询OPENID接口<br>
      * 场景:刷卡支付
-     * @param reqData 向wxpay post的请求数据
+     *
+     * @param reqData          向wxpay post的请求数据
      * @param connectTimeoutMs 连接超时时间,单位是毫秒
-     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @param readTimeoutMs    读超时时间,单位是毫秒
      * @return API返回数据
      * @throws Exception
      */
@@ -675,8 +691,7 @@ public class WXPay {
         String url;
         if (this.useSandbox) {
             url = WXPayConstants.SANDBOX_AUTHCODETOOPENID_URL_SUFFIX;
-        }
-        else {
+        } else {
             url = WXPayConstants.AUTHCODETOOPENID_URL_SUFFIX;
         }
         String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);

+ 4 - 4
src/main/resources/properties/outsidews.properties

@@ -1,7 +1,7 @@
 projectname=shouyoudianjing
 weixinapi=https://api.weixin.qq.com/sns/oauth2/
-weixinappid=wx8d16412d33eaf19c
-weixinsecret=4c16604a837d8c2929c33a03a5080e60
+weixinappid=wx62f8a9c1d3d70245
+weixinsecret=93f7a97a3e0da3795d3ef53ce6b27099
 aliossid=PXzJyah5rZfWHIIH
 aliosskey=e1MS6j0wypXJrw8CM0hObZu8qKbfah
 aliossendpoit=http://oss-cn-hangzhou.aliyuncs.com
@@ -18,8 +18,8 @@ ALIPAY_CHARSET=utf-8
 ALIPAY_ALIPAY_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzW3LltIo9Jjns7PpkQGKMl5TeY2c6/FmjuKtZF08u17vfgt/r7q2IK6m/Y/iHlbKYeK4chfT/fB9HBUAAZ7poleo2mN/8JHv/Wo/LgVec7xwtxq5Eg1EKLTwJhPm5cKhXaH0LGqDrhzkdRX7LS4NvYzmlYqaDb5EhpjianyIwBmjBEMu6dktoyyKsihjI+9U76CEwDApJMG4ptJJmzeK3oeVzyk3k9rqTmvuuBTZ2Ct5ideNXtizVjcdhwCIWsPPPilIhzV1EtywPmhsNIp2T91HUjwHrbBGoDXg/jVzbVn+w3gAZ/9CvEhoFJEnDg3gvE3rDqUuZXJlY+VucPYSuwIDAQAB
 ALIPAY_SELLER=2088102179082444
 ALIPAY_GATEWAY=https://openapi.alipaydev.com/gateway.do
-weixin_mch_id=1480639272
-weixin_mch_secret=
+weixin_mch_id=1531015301
+weixin_mch_secret=bef1ed5569cd41a822308257f388ad19
 weixin_notify_url=
 weixin_cert_path=/home/cert/apiclient_cert.p12
 weixin_notify_url_recharge=

+ 3 - 3
src/main/resources/spring/appDataSource.xml

@@ -79,9 +79,9 @@
         <!-- 配置MyBatis全局配置文件:mybatis-config.xml -->
         <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
         <!-- 扫描entity包 使用别名 -->
-        <property name="typeAliasesPackage" value="com.izouma.awesomeadmin.model"/>
+        <property name="typeAliasesPackage" value="com.izouma.awesomeadmin.model,com.izouma.weixin.model"/>
         <!-- 扫描sql配置文件:mapper需要的xml文件 -->
-        <property name="mapperLocations" value="classpath:com/izouma/awesomeadmin/dao/*Mapper.xml"/>
+        <property name="mapperLocations" value="classpath:com/izouma/awesomeadmin/dao/*Mapper.xml,com/izouma/weixin/dao/*Mapper.xml"/>
     </bean>
 
 
@@ -90,7 +90,7 @@
         <!-- 注入sqlSessionFactory -->
         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
         <!-- 给出需要扫描dao接口包 -->
-        <property name="basePackage" value="com.izouma.awesomeadmin.dao"/>
+        <property name="basePackage" value="com.izouma.awesomeadmin.dao,com.izouma.weixin.dao"/>
 
     </bean>
 

+ 1 - 0
src/main/resources/spring/appWebService.xml

@@ -13,6 +13,7 @@
 
 	<!-- 扫描service包下所有使用注解的类型 -->
 	<context:component-scan base-package="com.izouma.awesomeadmin.service" />
+	<context:component-scan base-package="com.izouma.weixin.service" />
 
 	<!-- 配置事务管理器 -->
 	<bean id="transactionManager"

+ 1 - 0
src/main/resources/spring/spring-mvc.xml

@@ -42,6 +42,7 @@
 
     <!-- 4:扫描web相关的bean -->
     <context:component-scan base-package="com.izouma.awesomeadmin.web"/>
+    <context:component-scan base-package="com.izouma.weixin.web"/>
 
 
     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

+ 1 - 1
src/main/vue/src/pages/HouseInfos.vue

@@ -267,7 +267,7 @@ export default {
                 {
                     label: 'CODE',
                     value: 'houseCode',
-                    show: false
+                    show: true
                 },
                 {
                     label: '用户',

+ 1 - 1
src/main/webapp/WEB-INF/html/admin.html

@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=origin><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/polyfill.min.js></script><script src=/static/fontawesome-v5.2.0.js></script><link href=/static/css/admin.253da05c71e6d9f8e0f461ce4b495a60.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.b705e5c33c974a563663.js></script><script type=text/javascript src=/static/js/vendor.e2a2b7cadd72ba896b4a.js></script><script type=text/javascript src=/static/js/admin.33c54d16a8dd34d688dc.js></script></body></html>
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=origin><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/polyfill.min.js></script><script src=/static/fontawesome-v5.2.0.js></script><link href=/static/css/admin.253da05c71e6d9f8e0f461ce4b495a60.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.09c9b554ad123d451b10.js></script><script type=text/javascript src=/static/js/vendor.67205d896bd19668151b.js></script><script type=text/javascript src=/static/js/admin.8757871e78c45fc80043.js></script></body></html>

+ 131 - 0
src/main/webapp/WEB-INF/html/share.html

@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>猿人电竞</title>
+    <link rel="stylesheet" href="share/share.css">
+</head>
+
+<body>
+
+<div id="app">
+    <div class="content">
+        <img src="share/images/text_yonghuduan.png" alt="" class="top">
+
+        <input class="input" type="number" v-model="inputVal" placeholder="输入你的手机号">
+
+        <div class="btn" @click="submit">确定</div>
+
+        <div style="flex-grow:1"></div>
+        <img src="share/images/img_0000000.png" alt="" class="bottomImg">
+    </div>
+
+
+</div>
+
+
+<script src="share/vue.js"></script>
+
+<script>
+    var Ajax = {
+        get: function (url, fn) {
+            // XMLHttpRequest对象用于在后台与服务器交换数据
+            var xhr = new XMLHttpRequest();
+            xhr.open('GET', url, true);
+            xhr.onreadystatechange = function () {
+                // readyState == 4说明请求已完成
+                if (xhr.readyState == 4 && xhr.status == 200 || xhr.status == 304) {
+                    // 从服务器获得数据
+                    fn.call(this, xhr.responseText);
+                }
+            };
+            xhr.send();
+        },
+        // datat应为'a=a1&b=b1'这种字符串格式,在jq里如果data为对象会自动将对象转成这种字符串格式
+        post: function (url, data, fn) {
+            var xhr = new XMLHttpRequest();
+            xhr.open("POST", url, true);
+            // 添加http头,发送信息至服务器时内容编码类型
+            // xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+            xhr.onreadystatechange = function () {
+                if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
+                    fn.call(this, JSON.parse(xhr.responseText));
+                }
+            };
+            xhr.send(data);
+        }
+    }
+
+    function GetUrlParam(paraName) {
+        var url = document.location.toString();
+        var arrObj = url.split("?");
+
+        if (arrObj.length > 1) {
+            var arrPara = arrObj[1].split("&");
+            var arr;
+
+            for (var i = 0; i < arrPara.length; i++) {
+                arr = arrPara[i].split("=");
+
+                if (arr != null && arr[0] == paraName) {
+                    return arr[1];
+                }
+            }
+            return "";
+        }
+        else {
+            return "";
+        }
+    }
+
+
+    var app = new Vue({
+        el: '#app',
+        data: {
+            inputVal: ''
+        },
+        watch: {
+            inputVal: function (val) {
+                this.inputVal = val.substr(0, 11);
+            }
+        },
+        methods: {
+            submit: function () {
+                if (!this.checkPhone(this.inputVal)) {
+                    alert('手机号格式错误!');
+                    return;
+                }
+
+                var data=new FormData()
+                data.append("userId",GetUrlParam('userId'));
+                data.append("telephone",this.inputVal);
+
+                Ajax.post('/recommenderLog/save',data,function (res) {
+                    if(res.success){
+                        alert('提交成功,快去下载猿人电竞吧!');
+                        if(navigator.userAgent.indexOf('iPhone')>-1||navigator.userAgent.indexOf('iPad')>-1){
+                            window.location.href='https://www.pgyer.com/MhUx'
+                        }
+                        else{
+                            window.location.href='https://www.pgyer.com/MhUx'
+                        }
+                    }
+                }.bind(this))
+            },
+            checkPhone: function (phone) {
+                var result = false
+                if ((/^1[3|4|5|8|7|6|9][0-9]\d{8}$/.test(phone))) {
+                    result = true
+                }
+                return result
+            }
+        }
+    })
+
+</script>
+</body>
+
+</html>

BIN
src/main/webapp/share/images/img_0000000.png


BIN
src/main/webapp/share/images/text_yonghuduan.png


+ 69 - 0
src/main/webapp/share/share.css

@@ -0,0 +1,69 @@
+  * {
+      margin: 0;
+      padding: 0;
+  }
+  
+  #app {
+      background-color: #2B2B42;
+      width: 100vw;
+      height: 100vh;
+      overflow: auto;
+      display: flex;
+      flex-direction: column;
+  }
+  
+  .content {
+      flex-grow: 1;
+      margin: 30px;
+      background-color: #363759;
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      min-height: 527px;
+  }
+
+  .top{
+      width: 187px;
+      margin-top: 53px;
+  }
+
+  .input{
+      align-self: stretch;
+      margin: 39px 43px 0;
+      display: block;
+
+      outline: none;
+      border: none;
+      height:44px;
+      background:rgba(255,255,255,1);
+      text-align: center;
+      font-size: 16px;
+      font-weight: bold;
+
+  }
+  .input::-webkit-input-placeholder{
+      font-size:12px;
+      font-weight:normal;
+      color:rgba(114,119,133,1);
+  }
+
+  .btn{
+      align-self: stretch;
+      margin: 20px 43px 0;
+      height:44px;
+      background:linear-gradient(180deg,rgba(255,195,15,1) 0%,rgba(255,165,76,1) 100%);
+      text-align: center;
+      color: #fff;
+      font-size:16px;
+      line-height: 44px;
+      font-weight: bold;
+  }
+
+  .btn:active{
+      background: #F29E3C;
+  }
+
+  .bottomImg{
+     width: 75vw;
+      margin: 20px auto;
+  }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 5 - 0
src/main/webapp/share/vue.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/12.6f4e4ba7be0337c60b7b.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/13.8e1ffaa0593596a251ef.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/14.4a1120a55a5f5e4c8bf7.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/15.dbc363386920ef0079e0.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/16.a7d6b399865067e18872.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/17.6e4ddf4f446652a10d9b.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/18.a026a66ac0c4b7e1934f.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/18.a975091c4bfa4bee8391.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/19.9df416c6a29ae8970fcb.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/19.f40ecf28088363e49bf2.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/20.50cfa76f6ad5c9f5b376.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/21.86574d72b749a5823302.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/22.b15fe6c1047e5181d419.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/23.74855519e124a9f4abd2.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/24.c901531b71efa6e57165.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/25.aebf149057a3494f02ff.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/26.3d129a0077e32a60ae1f.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/27.6e1cbac72969951418f8.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/28.0c69183328ccd1e8f65f.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/29.252437eb74f165792a46.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/30.6689ea257729cb040d11.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/31.aada8fad45060a615504.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/32.85b0db7fc00473ef3e11.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/33.4c898aba778c0c296907.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/34.73807b7410f3c9d8fac6.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/35.12523c6ca945dc0817d0.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/36.263d5e882cb35fef151e.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/37.1dda706e8a0a514ceb7f.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/38.0a5d1afa217292e61986.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/38.f331c44d0159027bb488.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/39.8d114a461576debfcfe9.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/40.db3efb0f099b45103889.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/41.1c533658cdc3176f6430.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/42.54e4831243fe6af63c2c.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/43.d5989ba8619a2f1e35f9.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/44.14a5eabe3eed0739443e.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/45.c32eebcb6191d95a1bba.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/46.4990bc37dc5c384e86bd.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/47.c7fd8a8007f1815553c3.js


+ 1 - 1
src/main/webapp/static/js/40.40edd8adc98817d108d5.js → src/main/webapp/static/js/48.33e69f34e4aacd6c29a8.js

@@ -1 +1 @@
-webpackJsonp([40],{"du+0":function(t,e){},izdZ:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});r("NYxO");var i={created:function(){this.getIframeSrc()},data:function(){return{iframeSrc:"/404"}},computed:{height:function(){return window.innerHeight-104+"px"}},methods:{getIframeSrc:function(){this.iframeSrc=this.$route.query.code}},watch:{$route:function(){this.getIframeSrc()}}},n={render:function(){var t=this.$createElement;return(this._self._c||t)("iframe",{staticClass:"iframe",attrs:{src:this.iframeSrc,height:this.height,width:"100%"}})},staticRenderFns:[]};var c=r("VU/8")(i,n,!1,function(t){r("du+0")},"data-v-7fa6d168",null);e.default=c.exports}});
+webpackJsonp([48],{"du+0":function(t,e){},izdZ:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});r("NYxO");var i={created:function(){this.getIframeSrc()},data:function(){return{iframeSrc:"/404"}},computed:{height:function(){return window.innerHeight-104+"px"}},methods:{getIframeSrc:function(){this.iframeSrc=this.$route.query.code}},watch:{$route:function(){this.getIframeSrc()}}},n={render:function(){var t=this.$createElement;return(this._self._c||t)("iframe",{staticClass:"iframe",attrs:{src:this.iframeSrc,height:this.height,width:"100%"}})},staticRenderFns:[]};var c=r("VU/8")(i,n,!1,function(t){r("du+0")},"data-v-7fa6d168",null);e.default=c.exports}});

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/49.44364c72a5c1da67377d.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/49.63421d0ad376a288f24e.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/50.580f70d06bc24ef33818.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/51.a0eaa3a333472f0196fc.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/52.0f1c61b9410cc84a4f65.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/53.1e6b8c27570eba0f64d2.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/54.c783294083df8fe9109b.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/55.bb7eb75865c3fe1437ac.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/56.1b63058450334977a550.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/57.9c364f0d6e1e46ec51fa.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/58.93473ba15bd8ede14b32.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/59.3ce519bf9b34c4c038dd.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/60.5d55817722fcd2c6d970.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/61.289e2736fdf391fedd5b.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/61.9bf061df4f3e604cc955.js


+ 1 - 1
src/main/webapp/static/js/51.5465cdff098abda116a3.js → src/main/webapp/static/js/62.82db8d520c0607c1535c.js

@@ -1 +1 @@
-webpackJsonp([51],{NRkp:function(e,t){},Wh3M:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"form",staticStyle:{"max-width":"500px"},attrs:{model:e.formData,rules:e.rules,"label-width":"80px","label-position":"right",size:"small"}},[a("el-form-item",{attrs:{prop:"dataruleName",label:"权限名称"}},[a("el-input",{model:{value:e.formData.dataruleName,callback:function(t){e.$set(e.formData,"dataruleName",t)},expression:"formData.dataruleName"}})],1),e._v(" "),a("el-form-item",{attrs:{prop:"permission",label:"权限标识"}},[a("el-input",{model:{value:e.formData.permission,callback:function(t){e.$set(e.formData,"permission",t)},expression:"formData.permission"}})],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{loading:e.$store.state.fetchingData,type:"primary"},on:{click:e.onSave}},[e._v("保存")]),e._v(" "),a("el-button",{on:{click:function(t){e.$router.go(-1)}}},[e._v("取消")])],1)],1)],1)},staticRenderFns:[]};var s=a("VU/8")({created:function(){var e=this;this.$route.query.id&&this.$http.get({url:"/sysDatarule/getOne",data:{id:this.$route.query.id}}).then(function(t){t.success&&(e.formData=t.data)})},data:function(){return{saving:!1,formData:{},rules:{dataruleName:[{required:!0,message:"请填写权限名称",trigger:"blur"}],permission:[{required:!0,message:"请填写权限标识",trigger:"blur"}]},menus:[]}},methods:{onSave:function(){var e=this;this.$refs.form.validate(function(t){if(!t)return!1;e.submit()})},submit:function(){var e=this;this.$http.post({url:this.formData.id?"/sysDatarule/update":"/sysDatarule/save",data:this.formData}).then(function(t){t.success?(e.$message.success("成功"),e.$router.go(-1)):e.$message.warning("失败")})}}},r,!1,function(e){a("NRkp")},"data-v-3d1f3150",null);t.default=s.exports}});
+webpackJsonp([62],{NRkp:function(e,t){},Wh3M:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"form",staticStyle:{"max-width":"500px"},attrs:{model:e.formData,rules:e.rules,"label-width":"80px","label-position":"right",size:"small"}},[a("el-form-item",{attrs:{prop:"dataruleName",label:"权限名称"}},[a("el-input",{model:{value:e.formData.dataruleName,callback:function(t){e.$set(e.formData,"dataruleName",t)},expression:"formData.dataruleName"}})],1),e._v(" "),a("el-form-item",{attrs:{prop:"permission",label:"权限标识"}},[a("el-input",{model:{value:e.formData.permission,callback:function(t){e.$set(e.formData,"permission",t)},expression:"formData.permission"}})],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{loading:e.$store.state.fetchingData,type:"primary"},on:{click:e.onSave}},[e._v("保存")]),e._v(" "),a("el-button",{on:{click:function(t){e.$router.go(-1)}}},[e._v("取消")])],1)],1)],1)},staticRenderFns:[]};var s=a("VU/8")({created:function(){var e=this;this.$route.query.id&&this.$http.get({url:"/sysDatarule/getOne",data:{id:this.$route.query.id}}).then(function(t){t.success&&(e.formData=t.data)})},data:function(){return{saving:!1,formData:{},rules:{dataruleName:[{required:!0,message:"请填写权限名称",trigger:"blur"}],permission:[{required:!0,message:"请填写权限标识",trigger:"blur"}]},menus:[]}},methods:{onSave:function(){var e=this;this.$refs.form.validate(function(t){if(!t)return!1;e.submit()})},submit:function(){var e=this;this.$http.post({url:this.formData.id?"/sysDatarule/update":"/sysDatarule/save",data:this.formData}).then(function(t){t.success?(e.$message.success("成功"),e.$router.go(-1)):e.$message.warning("失败")})}}},r,!1,function(e){a("NRkp")},"data-v-3d1f3150",null);t.default=s.exports}});

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/63.65a5cb6badfad206d98e.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/64.a19e97e9e36a0d891d54.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/65.ad5ec3d2592294d83d8e.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/66.47a855866882e712c103.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/67.5dd67720ee299250c204.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/68.275ff58448231baba82f.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/69.21740b53758cb089709b.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/7.5db9b9377571155b89fe.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/70.8a8a9cf412e2a0a158a9.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/71.bfb98bd370b90a89585d.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/72.a0cdf29fd642107c158d.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/73.af1fd3385ea968c4938c.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/74.e17b4e9a4100bb83e4f2.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/75.5fc8be79252e9e559b41.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/76.1231b95dff6d1a089fa8.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/admin.33c54d16a8dd34d688dc.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/admin.8757871e78c45fc80043.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/manifest.09c9b554ad123d451b10.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/manifest.b705e5c33c974a563663.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/main/webapp/static/js/vendor.67205d896bd19668151b.js


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio