suochencheng 6 anos atrás
pai
commit
47500d53c7
100 arquivos alterados com 4996 adições e 1665 exclusões
  1. 34 0
      src/main/java/com/izouma/awesomeadmin/dao/MemberCoinMapper.java
  2. 450 0
      src/main/java/com/izouma/awesomeadmin/dao/MemberCoinMapper.xml
  3. 34 0
      src/main/java/com/izouma/awesomeadmin/dao/MemberPointMapper.java
  4. 83 221
      src/main/java/com/izouma/awesomeadmin/dao/MemberPointMapper.xml
  5. 2 0
      src/main/java/com/izouma/awesomeadmin/dao/NavigationPackageMapper.java
  6. 257 214
      src/main/java/com/izouma/awesomeadmin/dao/NavigationPackageMapper.xml
  7. 290 269
      src/main/java/com/izouma/awesomeadmin/dao/UserOrderMapper.xml
  8. 147 0
      src/main/java/com/izouma/awesomeadmin/model/MemberCoin.java
  9. 167 0
      src/main/java/com/izouma/awesomeadmin/model/MemberPoint.java
  10. 86 63
      src/main/java/com/izouma/awesomeadmin/model/NavigationPackage.java
  11. 100 73
      src/main/java/com/izouma/awesomeadmin/model/UserOrder.java
  12. 32 0
      src/main/java/com/izouma/awesomeadmin/service/MemberCoinService.java
  13. 28 0
      src/main/java/com/izouma/awesomeadmin/service/MemberPointService.java
  14. 2 0
      src/main/java/com/izouma/awesomeadmin/service/NavigationPackageService.java
  15. 10 4
      src/main/java/com/izouma/awesomeadmin/service/UserOrderService.java
  16. 0 1
      src/main/java/com/izouma/awesomeadmin/service/impl/AimGroupInfoServiceImpl.java
  17. 0 3
      src/main/java/com/izouma/awesomeadmin/service/impl/DepartInfoServiceImpl.java
  18. 247 0
      src/main/java/com/izouma/awesomeadmin/service/impl/MemberCoinServiceImpl.java
  19. 140 0
      src/main/java/com/izouma/awesomeadmin/service/impl/MemberPointServiceImpl.java
  20. 14 0
      src/main/java/com/izouma/awesomeadmin/service/impl/NavigationPackageServiceImpl.java
  21. 0 2
      src/main/java/com/izouma/awesomeadmin/service/impl/SysMenuServiceImpl.java
  22. 15 7
      src/main/java/com/izouma/awesomeadmin/service/impl/UserInfoServiceImpl.java
  23. 201 23
      src/main/java/com/izouma/awesomeadmin/service/impl/UserOrderServiceImpl.java
  24. 0 130
      src/main/java/com/izouma/awesomeadmin/util/UnifiedorderService.java
  25. 0 144
      src/main/java/com/izouma/awesomeadmin/util/WXRefundService.java
  26. 0 289
      src/main/java/com/izouma/awesomeadmin/util/WeixinUtil.java
  27. 0 8
      src/main/java/com/izouma/awesomeadmin/vuforia/VuforiaUtil.java
  28. 0 1
      src/main/java/com/izouma/awesomeadmin/web/AimGroupInfoController.java
  29. 0 1
      src/main/java/com/izouma/awesomeadmin/web/AimPlaceContentChildController.java
  30. 0 2
      src/main/java/com/izouma/awesomeadmin/web/AimPlaceContentController.java
  31. 0 1
      src/main/java/com/izouma/awesomeadmin/web/AimPlaceInfoController.java
  32. 0 2
      src/main/java/com/izouma/awesomeadmin/web/AimPlacePositionController.java
  33. 0 1
      src/main/java/com/izouma/awesomeadmin/web/AimPlacePositionLevelController.java
  34. 0 1
      src/main/java/com/izouma/awesomeadmin/web/AimTemplateAimController.java
  35. 0 1
      src/main/java/com/izouma/awesomeadmin/web/AimTemplateArController.java
  36. 0 1
      src/main/java/com/izouma/awesomeadmin/web/AimTemplateController.java
  37. 0 1
      src/main/java/com/izouma/awesomeadmin/web/AlipayTempController.java
  38. 0 1
      src/main/java/com/izouma/awesomeadmin/web/ArContentChildController.java
  39. 0 2
      src/main/java/com/izouma/awesomeadmin/web/ArContentController.java
  40. 0 1
      src/main/java/com/izouma/awesomeadmin/web/ArContentTypeController.java
  41. 0 1
      src/main/java/com/izouma/awesomeadmin/web/AreaInfoController.java
  42. 0 1
      src/main/java/com/izouma/awesomeadmin/web/AreaShowPointController.java
  43. 0 1
      src/main/java/com/izouma/awesomeadmin/web/DataSourceInfoController.java
  44. 0 1
      src/main/java/com/izouma/awesomeadmin/web/DepartInfoController.java
  45. 0 1
      src/main/java/com/izouma/awesomeadmin/web/GenCodeController.java
  46. 0 1
      src/main/java/com/izouma/awesomeadmin/web/GuideTipImageController.java
  47. 26 20
      src/main/java/com/izouma/awesomeadmin/web/LandMarkController.java
  48. 0 1
      src/main/java/com/izouma/awesomeadmin/web/LandMarkLevelController.java
  49. 0 1
      src/main/java/com/izouma/awesomeadmin/web/LandMarkVersionController.java
  50. 0 2
      src/main/java/com/izouma/awesomeadmin/web/LandmarkTypeController.java
  51. 0 1
      src/main/java/com/izouma/awesomeadmin/web/MarketAimPlaceController.java
  52. 0 1
      src/main/java/com/izouma/awesomeadmin/web/MarketCodeLogController.java
  53. 0 1
      src/main/java/com/izouma/awesomeadmin/web/MarketMapBoxController.java
  54. 0 1
      src/main/java/com/izouma/awesomeadmin/web/MarketMapBoxDesController.java
  55. 0 1
      src/main/java/com/izouma/awesomeadmin/web/MarketMapController.java
  56. 181 0
      src/main/java/com/izouma/awesomeadmin/web/MemberCoinController.java
  57. 167 0
      src/main/java/com/izouma/awesomeadmin/web/MemberPointController.java
  58. 61 47
      src/main/java/com/izouma/awesomeadmin/web/NavigationPackageController.java
  59. 0 1
      src/main/java/com/izouma/awesomeadmin/web/RongCloudController.java
  60. 0 1
      src/main/java/com/izouma/awesomeadmin/web/SysMenuController.java
  61. 0 3
      src/main/java/com/izouma/awesomeadmin/web/SystemController.java
  62. 0 1
      src/main/java/com/izouma/awesomeadmin/web/ThingInfoController.java
  63. 0 1
      src/main/java/com/izouma/awesomeadmin/web/UserFileInfoController.java
  64. 0 1
      src/main/java/com/izouma/awesomeadmin/web/UserInfoController.java
  65. 62 56
      src/main/java/com/izouma/awesomeadmin/web/UserOrderController.java
  66. 0 1
      src/main/java/com/izouma/awesomeadmin/web/UserUpdateLogController.java
  67. 0 1
      src/main/java/com/izouma/awesomeadmin/web/VuforiaImageGroupController.java
  68. 0 1
      src/main/java/com/izouma/awesomeadmin/web/VuforiaImageInfoController.java
  69. 0 1
      src/main/java/com/izouma/awesomeadmin/web/VuforiaImageTypeController.java
  70. 3 3
      src/main/java/com/izouma/weixin/dao/AccessTokenMapper.java
  71. 2 2
      src/main/java/com/izouma/weixin/dao/AccessTokenMapper.xml
  72. 4 4
      src/main/java/com/izouma/weixin/dao/WxpayTempMapper.java
  73. 587 0
      src/main/java/com/izouma/weixin/dao/WxpayTempMapper.xml
  74. 1 1
      src/main/java/com/izouma/weixin/dto/WxPayRefundData.java
  75. 1 1
      src/main/java/com/izouma/weixin/dto/WxPaySendData.java
  76. 1 1
      src/main/java/com/izouma/weixin/dto/wx/AccessToken.java
  77. 1 1
      src/main/java/com/izouma/weixin/dto/wx/BaseMessage.java
  78. 1 1
      src/main/java/com/izouma/weixin/dto/wx/CustomServiceMessage.java
  79. 1 1
      src/main/java/com/izouma/weixin/dto/wx/Image.java
  80. 1 1
      src/main/java/com/izouma/weixin/dto/wx/ImageMessage.java
  81. 1 1
      src/main/java/com/izouma/weixin/dto/wx/Music.java
  82. 1 1
      src/main/java/com/izouma/weixin/dto/wx/MusicMessage.java
  83. 1 1
      src/main/java/com/izouma/weixin/dto/wx/News.java
  84. 1 1
      src/main/java/com/izouma/weixin/dto/wx/NewsMessage.java
  85. 1 1
      src/main/java/com/izouma/weixin/dto/wx/TemplateData.java
  86. 1 1
      src/main/java/com/izouma/weixin/dto/wx/TemplateMessage.java
  87. 1 1
      src/main/java/com/izouma/weixin/dto/wx/TextMessage.java
  88. 1 1
      src/main/java/com/izouma/weixin/model/AccessToken.java
  89. 1 1
      src/main/java/com/izouma/weixin/model/WxpayTemp.java
  90. 4 5
      src/main/java/com/izouma/weixin/service/WeiXinService.java
  91. 2 2
      src/main/java/com/izouma/weixin/service/WxpayTempService.java
  92. 4 4
      src/main/java/com/izouma/weixin/service/impl/WxpayTempServiceImpl.java
  93. 8 8
      src/main/java/com/izouma/weixin/util/MessageUtil.java
  94. 228 0
      src/main/java/com/izouma/weixin/util/WeixinUtil.java
  95. 399 0
      src/main/java/com/izouma/weixin/web/WeiXinController.java
  96. 3 4
      src/main/java/com/izouma/weixin/web/WxpayTempController.java
  97. 45 0
      src/main/java/com/izouma/weixin/wxpay/IWXPayDomain.java
  98. 65 0
      src/main/java/com/izouma/weixin/wxpay/MyConfig.java
  99. 687 0
      src/main/java/com/izouma/weixin/wxpay/WXPay.java
  100. 103 0
      src/main/java/com/izouma/weixin/wxpay/WXPayConfig.java

+ 34 - 0
src/main/java/com/izouma/awesomeadmin/dao/MemberCoinMapper.java

@@ -0,0 +1,34 @@
+package com.izouma.awesomeadmin.dao;
+
+import com.izouma.awesomeadmin.model.MemberCoin;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.izouma.awesomeadmin.dao.MemberCoinMapper")
+public interface MemberCoinMapper{
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(MemberCoin record);
+
+    MemberCoin selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(MemberCoin record);
+
+    List<MemberCoin> queryAllMemberCoin(MemberCoin record);
+
+    List<MemberCoin> queryMemberCoinByPage(Map<String, Object> parameter);
+
+    int delete(String id);
+
+    MemberCoin queryMemberCoin(MemberCoin record);
+
+    List<MemberCoin> query(MemberCoin record);
+}
+

+ 450 - 0
src/main/java/com/izouma/awesomeadmin/dao/MemberCoinMapper.xml

@@ -0,0 +1,450 @@
+<?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.izouma.awesomeadmin.dao.MemberCoinMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.MemberCoin">
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="user_id" property="userId" jdbcType="VARCHAR"/>
+        <result column="order_id" property="orderId" jdbcType="VARCHAR"/>
+        <result column="money" property="money" jdbcType="VARCHAR"/>
+        <result column="balance" property="balance" jdbcType="VARCHAR"/>
+        <result column="type_flag" property="typeFlag" jdbcType="INTEGER"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <trim suffixOverrides=",">
+            id,
+
+            del_flag,
+
+            update_time,
+
+            update_user,
+
+            create_time,
+
+            create_user,
+
+            user_id,
+
+            order_id,
+
+            money,
+
+            balance,
+
+            type_flag,
+
+            remark,
+
+        </trim>
+    </sql>
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        select
+        <include refid="Base_Column_List"/>
+        from member_coin
+        where id = #{id,jdbcType=INTEGER}
+    </select>
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        delete from member_coin
+        where id = #{id,jdbcType=INTEGER}
+    </delete>
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.MemberCoin" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into member_coin
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id!= null">
+                id,
+            </if>
+            <if test="delFlag!= null">
+                del_flag,
+            </if>
+            <if test="updateTime!= null">
+                update_time,
+            </if>
+            <if test="updateUser!= null">
+                update_user,
+            </if>
+            <if test="createTime!= null">
+                create_time,
+            </if>
+            <if test="createUser!= null">
+                create_user,
+            </if>
+            <if test="userId!= null">
+                user_id,
+            </if>
+            <if test="orderId!= null">
+                order_id,
+            </if>
+            <if test="money!= null">
+                money,
+            </if>
+            <if test="balance!= null">
+                balance,
+            </if>
+            <if test="typeFlag!= null">
+                type_flag,
+            </if>
+            <if test="remark!= null">
+                remark,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">
+                #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null">
+                #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="orderId != null">
+                #{orderId,jdbcType=VARCHAR},
+            </if>
+            <if test="money != null">
+                #{money,jdbcType=VARCHAR},
+            </if>
+            <if test="balance != null">
+                #{balance,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                #{typeFlag,jdbcType=INTEGER},
+            </if>
+            <if test="remark != null">
+                #{remark,jdbcType=VARCHAR},
+            </if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.MemberCoin">
+        update member_coin
+        <set>
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time= #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                update_user= #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                create_user= #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null">
+                user_id= #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="orderId != null">
+                order_id= #{orderId,jdbcType=VARCHAR},
+            </if>
+            <if test="money != null">
+                money= #{money,jdbcType=VARCHAR},
+            </if>
+            <if test="balance != null">
+                balance= #{balance,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                type_flag= #{typeFlag,jdbcType=INTEGER},
+            </if>
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
+            </if>
+        </set>
+        where id = #{id,jdbcType=INTEGER}
+    </update>
+    <select id="queryMemberCoinByPage" parameterType="java.util.Map"
+            resultType="com.izouma.awesomeadmin.model.MemberCoin">
+        select
+        <include refid="Base_Column_List"/>
+        from member_coin
+        <where>
+            and del_flag = 'N'
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                and id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                and del_flag = #{record.delFlag}
+            </if>
+            <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
+                and update_time = #{record.updateTime}
+            </if>
+            <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
+                and update_user = #{record.updateUser}
+            </if>
+            <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
+                and create_time = #{record.createTime}
+            </if>
+            <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
+                and create_user = #{record.createUser}
+            </if>
+            <if test="record.userId != null and !&quot;&quot;.equals(record.userId)">
+                and user_id = #{record.userId}
+            </if>
+            <if test="record.orderId != null and !&quot;&quot;.equals(record.orderId)">
+                and order_id = #{record.orderId}
+            </if>
+            <if test="record.money != null and !&quot;&quot;.equals(record.money)">
+                and money = #{record.money}
+            </if>
+            <if test="record.balance != null and !&quot;&quot;.equals(record.balance)">
+                and balance = #{record.balance}
+            </if>
+            <if test="record.typeFlag != null and !&quot;&quot;.equals(record.typeFlag)">
+                and type_flag = #{record.typeFlag}
+            </if>
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                and remark = #{record.remark}
+            </if>
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR user_id LIKE concat('%',#{record.searchKey},'%')
+                    OR order_id LIKE concat('%',#{record.searchKey},'%')
+                    OR money LIKE concat('%',#{record.searchKey},'%')
+                    OR balance LIKE concat('%',#{record.searchKey},'%')
+                    OR type_flag LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                </trim>
+            </if>
+
+            <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
+                <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+
+                            </foreach>
+                        </otherwise>
+                    </choose>
+
+
+                </foreach>
+
+
+            </if>
+
+        </where>
+        order by
+
+        <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
+
+
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id desc
+    </select>
+    <select id="queryAllMemberCoin" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.MemberCoin">
+        select
+        <include refid="Base_Column_List"/>
+        from member_coin
+        <where>
+            and del_flag = 'N'
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                and id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                and del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                and update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                and update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                and create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                and create_user = #{createUser}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                and user_id = #{userId}
+            </if>
+            <if test="orderId != null and !&quot;&quot;.equals(orderId)">
+                and order_id = #{orderId}
+            </if>
+            <if test="money != null and !&quot;&quot;.equals(money)">
+                and money = #{money}
+            </if>
+            <if test="balance != null and !&quot;&quot;.equals(balance)">
+                and balance = #{balance}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                and type_flag = #{typeFlag}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and remark = #{remark}
+            </if>
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR user_id LIKE concat('%',#{searchKey},'%')
+                    OR order_id LIKE concat('%',#{searchKey},'%')
+                    OR money LIKE concat('%',#{searchKey},'%')
+                    OR balance LIKE concat('%',#{searchKey},'%')
+                    OR type_flag LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                </trim>
+            </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+
+                            </foreach>
+                        </otherwise>
+                    </choose>
+
+
+                </foreach>
+
+
+            </if>
+        </where>
+        order by
+
+        <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
+
+
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+
+        id desc
+    </select>
+    <select id="queryMemberCoin" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.MemberCoin">
+        select
+        <include refid="Base_Column_List"/>
+        from member_coin
+        <where>
+            and del_flag = 'N'
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                and id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                and del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                and update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                and update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                and create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                and create_user = #{createUser}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                and user_id = #{userId}
+            </if>
+            <if test="orderId != null and !&quot;&quot;.equals(orderId)">
+                and order_id = #{orderId}
+            </if>
+            <if test="money != null and !&quot;&quot;.equals(money)">
+                and money = #{money}
+            </if>
+            <if test="balance != null and !&quot;&quot;.equals(balance)">
+                and balance = #{balance}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                and type_flag = #{typeFlag}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and remark = #{remark}
+            </if>
+
+        </where>
+        LIMIT 1
+    </select>
+    <update id="delete">
+        UPDATE member_coin SET del_flag = 'Y'
+        <where>
+            AND id = #{id}
+        </where>
+    </update>
+    <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.MemberCoin">
+        select
+        <include refid="Base_Column_List"/>
+        from member_coin
+        <where>
+            and del_flag = 'N'
+        </where>
+        order by id desc
+    </select>
+</mapper>
+

+ 34 - 0
src/main/java/com/izouma/awesomeadmin/dao/MemberPointMapper.java

@@ -0,0 +1,34 @@
+package com.izouma.awesomeadmin.dao;
+
+import com.izouma.awesomeadmin.model.MemberPoint;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.izouma.awesomeadmin.dao.MemberPointMapper")
+public interface MemberPointMapper{
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(MemberPoint record);
+
+    MemberPoint selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(MemberPoint record);
+
+    List<MemberPoint> queryAllMemberPoint(MemberPoint record);
+
+    List<MemberPoint> queryMemberPointByPage(Map<String, Object> parameter);
+
+    int delete(String id);
+
+    MemberPoint queryMemberPoint(MemberPoint record);
+
+    List<MemberPoint> query(MemberPoint record);
+}
+

Diferenças do arquivo suprimidas por serem muito extensas
+ 83 - 221
src/main/java/com/izouma/awesomeadmin/dao/MemberPointMapper.xml


+ 2 - 0
src/main/java/com/izouma/awesomeadmin/dao/NavigationPackageMapper.java

@@ -29,5 +29,7 @@ public interface NavigationPackageMapper{
     NavigationPackage queryNavigationPackage(NavigationPackage record);
 
     List<NavigationPackage> query(NavigationPackage record);
+
+    NavigationPackage queryBoughtNavigationPackage(NavigationPackage record);
 }
 

+ 257 - 214
src/main/java/com/izouma/awesomeadmin/dao/NavigationPackageMapper.xml

@@ -1,24 +1,24 @@
 <?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.izouma.awesomeadmin.dao.NavigationPackageMapper" >
-    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.NavigationPackage" >
-                <id column="id" property="id" jdbcType="INTEGER" />
-                                        <result column="del_flag" property="delFlag" jdbcType="CHAR" />
-                                <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
-                                <result column="update_user" property="updateUser" jdbcType="VARCHAR" />
-                                <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
-                                <result column="create_user" property="createUser" jdbcType="VARCHAR" />
-                                <result column="land_mark_id" property="landMarkId" jdbcType="INTEGER" />
-                                <result column="name" property="name" jdbcType="VARCHAR" />
-                                <result column="remark" property="remark" jdbcType="VARCHAR" />
-                                <result column="pay_flag" property="payFlag" jdbcType="CHAR" />
-                                <result column="price" property="price" jdbcType="DECIMAL" />
-                                <result column="aim_place" property="aimPlace" jdbcType="VARCHAR" />
-                                <result column="rank" property="rank" jdbcType="INTEGER" />
-                                <result column="shelf_flag" property="shelfFlag" jdbcType="CHAR" />
-            </resultMap>
-    <sql id="Base_Column_List" >
-        <trim  suffixOverrides="," >
+<mapper namespace="com.izouma.awesomeadmin.dao.NavigationPackageMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.NavigationPackage">
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="land_mark_id" property="landMarkId" jdbcType="INTEGER"/>
+        <result column="name" property="name" jdbcType="VARCHAR"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="pay_flag" property="payFlag" jdbcType="CHAR"/>
+        <result column="price" property="price" jdbcType="DECIMAL"/>
+        <result column="aim_place" property="aimPlace" jdbcType="VARCHAR"/>
+        <result column="rank" property="rank" jdbcType="INTEGER"/>
+        <result column="shelf_flag" property="shelfFlag" jdbcType="CHAR"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <trim suffixOverrides=",">
             id,
 
             del_flag,
@@ -47,155 +47,156 @@
 
             shelf_flag,
 
-            </trim>
+        </trim>
     </sql>
-    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
         select
-        <include refid="Base_Column_List" />
+        <include refid="Base_Column_List"/>
         from navigation_package
         where id = #{id,jdbcType=INTEGER}
     </select>
-    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
         delete from navigation_package
         where id = #{id,jdbcType=INTEGER}
     </delete>
-    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.NavigationPackage" useGeneratedKeys="true" keyProperty="id">
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.NavigationPackage" useGeneratedKeys="true"
+            keyProperty="id">
         insert into navigation_package
-        <trim prefix="(" suffix=")" suffixOverrides="," >
-                <if test="id!= null" >
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id!= null">
                 id,
             </if>
-                <if test="delFlag!= null" >
+            <if test="delFlag!= null">
                 del_flag,
             </if>
-                <if test="updateTime!= null" >
+            <if test="updateTime!= null">
                 update_time,
             </if>
-                <if test="updateUser!= null" >
+            <if test="updateUser!= null">
                 update_user,
             </if>
-                <if test="createTime!= null" >
+            <if test="createTime!= null">
                 create_time,
             </if>
-                <if test="createUser!= null" >
+            <if test="createUser!= null">
                 create_user,
             </if>
-                <if test="landMarkId!= null" >
+            <if test="landMarkId!= null">
                 land_mark_id,
             </if>
-                <if test="name!= null" >
+            <if test="name!= null">
                 name,
             </if>
-                <if test="remark!= null" >
+            <if test="remark!= null">
                 remark,
             </if>
-                <if test="payFlag!= null" >
+            <if test="payFlag!= null">
                 pay_flag,
             </if>
-                <if test="price!= null" >
+            <if test="price!= null">
                 price,
             </if>
-                <if test="aimPlace!= null" >
+            <if test="aimPlace!= null">
                 aim_place,
             </if>
-                <if test="rank!= null" >
+            <if test="rank!= null">
                 rank,
             </if>
-                <if test="shelfFlag!= null" >
+            <if test="shelfFlag!= null">
                 shelf_flag,
             </if>
-            </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides="," >
-                    <if test="id != null" >
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">
                 #{id,jdbcType=INTEGER},
             </if>
-                    <if test="delFlag != null" >
+            <if test="delFlag != null">
                 #{delFlag,jdbcType=CHAR},
             </if>
-                    <if test="updateTime != null" >
+            <if test="updateTime != null">
                 #{updateTime,jdbcType=TIMESTAMP},
             </if>
-                    <if test="updateUser != null" >
+            <if test="updateUser != null">
                 #{updateUser,jdbcType=VARCHAR},
             </if>
-                    <if test="createTime != null" >
+            <if test="createTime != null">
                 #{createTime,jdbcType=TIMESTAMP},
             </if>
-                    <if test="createUser != null" >
+            <if test="createUser != null">
                 #{createUser,jdbcType=VARCHAR},
             </if>
-                    <if test="landMarkId != null" >
+            <if test="landMarkId != null">
                 #{landMarkId,jdbcType=INTEGER},
             </if>
-                    <if test="name != null" >
+            <if test="name != null">
                 #{name,jdbcType=VARCHAR},
             </if>
-                    <if test="remark != null" >
+            <if test="remark != null">
                 #{remark,jdbcType=VARCHAR},
             </if>
-                    <if test="payFlag != null" >
+            <if test="payFlag != null">
                 #{payFlag,jdbcType=CHAR},
             </if>
-                    <if test="price != null" >
+            <if test="price != null">
                 #{price,jdbcType=DECIMAL},
             </if>
-                    <if test="aimPlace != null" >
+            <if test="aimPlace != null">
                 #{aimPlace,jdbcType=VARCHAR},
             </if>
-                    <if test="rank != null" >
+            <if test="rank != null">
                 #{rank,jdbcType=INTEGER},
             </if>
-                    <if test="shelfFlag != null" >
+            <if test="shelfFlag != null">
                 #{shelfFlag,jdbcType=CHAR},
             </if>
-                </trim>
+        </trim>
     </insert>
-    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.NavigationPackage" >
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.NavigationPackage">
         update navigation_package
-        <set >
-                    <if test="id != null" >
-               id= #{id,jdbcType=INTEGER},
+        <set>
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
             </if>
-                     <if test="delFlag != null" >
-               del_flag= #{delFlag,jdbcType=CHAR},
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
             </if>
-                     <if test="updateTime != null" >
-               update_time= #{updateTime,jdbcType=TIMESTAMP},
+            <if test="updateTime != null">
+                update_time= #{updateTime,jdbcType=TIMESTAMP},
             </if>
-                     <if test="updateUser != null" >
-               update_user= #{updateUser,jdbcType=VARCHAR},
+            <if test="updateUser != null">
+                update_user= #{updateUser,jdbcType=VARCHAR},
             </if>
-                     <if test="createTime != null" >
-               create_time= #{createTime,jdbcType=TIMESTAMP},
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
             </if>
-                     <if test="createUser != null" >
-               create_user= #{createUser,jdbcType=VARCHAR},
+            <if test="createUser != null">
+                create_user= #{createUser,jdbcType=VARCHAR},
             </if>
-                     <if test="landMarkId != null" >
-               land_mark_id= #{landMarkId,jdbcType=INTEGER},
+            <if test="landMarkId != null">
+                land_mark_id= #{landMarkId,jdbcType=INTEGER},
             </if>
-                     <if test="name != null" >
-               name= #{name,jdbcType=VARCHAR},
+            <if test="name != null">
+                name= #{name,jdbcType=VARCHAR},
             </if>
-                     <if test="remark != null" >
-               remark= #{remark,jdbcType=VARCHAR},
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
             </if>
-                     <if test="payFlag != null" >
-               pay_flag= #{payFlag,jdbcType=CHAR},
+            <if test="payFlag != null">
+                pay_flag= #{payFlag,jdbcType=CHAR},
             </if>
-                     <if test="price != null" >
-               price= #{price,jdbcType=DECIMAL},
+            <if test="price != null">
+                price= #{price,jdbcType=DECIMAL},
             </if>
-                     <if test="aimPlace != null" >
-               aim_place= #{aimPlace,jdbcType=VARCHAR},
+            <if test="aimPlace != null">
+                aim_place= #{aimPlace,jdbcType=VARCHAR},
             </if>
-                     <if test="rank != null" >
-               rank= #{rank,jdbcType=INTEGER},
+            <if test="rank != null">
+                rank= #{rank,jdbcType=INTEGER},
             </if>
-                     <if test="shelfFlag != null" >
-               shelf_flag= #{shelfFlag,jdbcType=CHAR},
+            <if test="shelfFlag != null">
+                shelf_flag= #{shelfFlag,jdbcType=CHAR},
             </if>
-                 </set>
+        </set>
         where
         <if test="id != null and !&quot;&quot;.equals(id)">
             id = #{id,jdbcType=INTEGER}
@@ -206,66 +207,69 @@
         </if>
 
     </update>
-    <select id="queryNavigationPackageByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.NavigationPackage">
-        select <include refid="Base_Column_List"/> from navigation_package
+    <select id="queryNavigationPackageByPage" parameterType="java.util.Map"
+            resultType="com.izouma.awesomeadmin.model.NavigationPackage">
+        select
+        <include refid="Base_Column_List"/>
+        from navigation_package
         <where>
             and del_flag = 'N'
             <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
                 and id in (${record.idStr})
             </if>
-                    <if test="record.id != null and !&quot;&quot;.equals(record.id)">
-                and  id = #{record.id}
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                and id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                and del_flag = #{record.delFlag}
             </if>
-                     <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
-                and  del_flag = #{record.delFlag}
+            <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
+                and update_time = #{record.updateTime}
             </if>
-                     <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
-                and  update_time = #{record.updateTime}
+            <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
+                and update_user = #{record.updateUser}
             </if>
-                     <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
-                and  update_user = #{record.updateUser}
+            <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
+                and create_time = #{record.createTime}
             </if>
-                     <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
-                and  create_time = #{record.createTime}
+            <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
+                and create_user = #{record.createUser}
             </if>
-                     <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
-                and  create_user = #{record.createUser}
+            <if test="record.landMarkId != null and !&quot;&quot;.equals(record.landMarkId)">
+                and land_mark_id = #{record.landMarkId}
             </if>
-                     <if test="record.landMarkId != null and !&quot;&quot;.equals(record.landMarkId)">
-                and  land_mark_id = #{record.landMarkId}
+            <if test="record.name != null and !&quot;&quot;.equals(record.name)">
+                and name = #{record.name}
             </if>
-                     <if test="record.name != null and !&quot;&quot;.equals(record.name)">
-                and  name = #{record.name}
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                and remark = #{record.remark}
             </if>
-                     <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
-                and  remark = #{record.remark}
+            <if test="record.payFlag != null and !&quot;&quot;.equals(record.payFlag)">
+                and pay_flag = #{record.payFlag}
             </if>
-                     <if test="record.payFlag != null and !&quot;&quot;.equals(record.payFlag)">
-                and  pay_flag = #{record.payFlag}
+            <if test="record.price != null and !&quot;&quot;.equals(record.price)">
+                and price = #{record.price}
             </if>
-                     <if test="record.price != null and !&quot;&quot;.equals(record.price)">
-                and  price = #{record.price}
+            <if test="record.aimPlace != null and !&quot;&quot;.equals(record.aimPlace)">
+                and aim_place = #{record.aimPlace}
             </if>
-                     <if test="record.aimPlace != null and !&quot;&quot;.equals(record.aimPlace)">
-                and  aim_place = #{record.aimPlace}
+            <if test="record.rank != null and !&quot;&quot;.equals(record.rank)">
+                and rank = #{record.rank}
             </if>
-                     <if test="record.rank != null and !&quot;&quot;.equals(record.rank)">
-                and  rank = #{record.rank}
+            <if test="record.shelfFlag != null and !&quot;&quot;.equals(record.shelfFlag)">
+                and shelf_flag = #{record.shelfFlag}
             </if>
-                     <if test="record.shelfFlag != null and !&quot;&quot;.equals(record.shelfFlag)">
-                and  shelf_flag = #{record.shelfFlag}
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR land_mark_id LIKE concat('%',#{record.searchKey},'%')
+                    OR name LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                    OR pay_flag LIKE concat('%',#{record.searchKey},'%')
+                    OR price LIKE concat('%',#{record.searchKey},'%')
+                    OR rank LIKE concat('%',#{record.searchKey},'%')
+                    OR shelf_flag LIKE concat('%',#{record.searchKey},'%')
+                </trim>
             </if>
-                  <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
-             <trim prefix="and (" suffix=")" prefixOverrides="OR" >
-                                                                                                                                                                                                                                                                                                                                                                                                                                    OR  land_mark_id LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  name LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  remark LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  pay_flag LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  price LIKE concat('%',#{record.searchKey},'%')
-                                                                                                                                                                     OR  rank LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  shelf_flag LIKE concat('%',#{record.searchKey},'%')
-                                                             </trim>
-         </if>
 
             <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
                 <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
@@ -319,100 +323,103 @@
         </if>
         id desc
     </select>
-    <select id="queryAllNavigationPackage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.NavigationPackage">
-        select <include refid="Base_Column_List"/> from navigation_package
+    <select id="queryAllNavigationPackage" parameterType="java.util.Map"
+            resultType="com.izouma.awesomeadmin.model.NavigationPackage">
+        select
+        <include refid="Base_Column_List"/>
+        from navigation_package
         <where>
             and del_flag = 'N'
             <if test="idStr != null and !&quot;&quot;.equals(idStr)">
                 and id in (${idStr})
             </if>
-                    <if test="id != null and !&quot;&quot;.equals(id)">
-                and  id = #{id}
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                and id = #{id}
             </if>
-                    <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
-                and  del_flag = #{delFlag}
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                and del_flag = #{delFlag}
             </if>
-                    <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
-                and  update_time = #{updateTime}
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                and update_time = #{updateTime}
             </if>
-                    <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
-                and  update_user = #{updateUser}
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                and update_user = #{updateUser}
             </if>
-                    <if test="createTime != null and !&quot;&quot;.equals(createTime)">
-                and  create_time = #{createTime}
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                and create_time = #{createTime}
             </if>
-                    <if test="createUser != null and !&quot;&quot;.equals(createUser)">
-                and  create_user = #{createUser}
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                and create_user = #{createUser}
             </if>
-                    <if test="landMarkId != null and !&quot;&quot;.equals(landMarkId)">
-                and  land_mark_id = #{landMarkId}
+            <if test="landMarkId != null and !&quot;&quot;.equals(landMarkId)">
+                and land_mark_id = #{landMarkId}
             </if>
-                    <if test="name != null and !&quot;&quot;.equals(name)">
-                and  name = #{name}
+            <if test="name != null and !&quot;&quot;.equals(name)">
+                and name = #{name}
             </if>
-                    <if test="remark != null and !&quot;&quot;.equals(remark)">
-                and  remark = #{remark}
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and remark = #{remark}
             </if>
-                    <if test="payFlag != null and !&quot;&quot;.equals(payFlag)">
-                and  pay_flag = #{payFlag}
+            <if test="payFlag != null and !&quot;&quot;.equals(payFlag)">
+                and pay_flag = #{payFlag}
             </if>
-                    <if test="price != null and !&quot;&quot;.equals(price)">
-                and  price = #{price}
+            <if test="price != null and !&quot;&quot;.equals(price)">
+                and price = #{price}
             </if>
-                    <if test="aimPlace != null and !&quot;&quot;.equals(aimPlace)">
-                and  aim_place = #{aimPlace}
+            <if test="aimPlace != null and !&quot;&quot;.equals(aimPlace)">
+                and aim_place = #{aimPlace}
             </if>
-                    <if test="rank != null and !&quot;&quot;.equals(rank)">
-                and  rank = #{rank}
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                and rank = #{rank}
             </if>
-                    <if test="shelfFlag != null and !&quot;&quot;.equals(shelfFlag)">
-                and  shelf_flag = #{shelfFlag}
+            <if test="shelfFlag != null and !&quot;&quot;.equals(shelfFlag)">
+                and shelf_flag = #{shelfFlag}
             </if>
-                    <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
-                <trim prefix="and (" suffix=")" prefixOverrides="OR" >
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                OR  land_mark_id LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  name LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  remark LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  pay_flag LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  price LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                                                                                                                        OR  rank LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  shelf_flag LIKE concat('%',#{searchKey},'%')
-                                                                                        </trim>
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR land_mark_id LIKE concat('%',#{searchKey},'%')
+                    OR name LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                    OR pay_flag LIKE concat('%',#{searchKey},'%')
+                    OR price LIKE concat('%',#{searchKey},'%')
+                    OR rank LIKE concat('%',#{searchKey},'%')
+                    OR shelf_flag LIKE concat('%',#{searchKey},'%')
+                </trim>
             </if>
-<if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
-    <foreach item="item" index="index" collection="advancedQuery.split('_;')">
-        <choose>
-            <when test="item.indexOf('like') != -1">
-                <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
-                    <if test="detailIndex == 3">
-                        concat('%',#{itemDetail},'%')
-                    </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
 
-                    <if test="detailIndex &lt; 3">
-                        ${itemDetail}
-                    </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
 
-                </foreach>
-            </when>
-            <otherwise>
-                <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
-                    <if test="detailIndex == 3">
-                        #{itemDetail}
-                    </if>
-
-                    <if test="detailIndex &lt; 3">
-                        ${itemDetail}
-                    </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
 
-                </foreach>
-            </otherwise>
-        </choose>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+
+                            </foreach>
+                        </otherwise>
+                    </choose>
 
 
-    </foreach>
+                </foreach>
 
 
-</if>
+            </if>
         </where>
         order by
 
@@ -431,56 +438,90 @@
 
         id desc
     </select>
-    <select id="queryNavigationPackage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.NavigationPackage">
-        select <include refid="Base_Column_List"/> from navigation_package
+    <select id="queryNavigationPackage" parameterType="java.util.Map"
+            resultType="com.izouma.awesomeadmin.model.NavigationPackage">
+        select
+        <include refid="Base_Column_List"/>
+        from navigation_package
         <where>
             and del_flag = 'N'
-                    <if test="id != null and !&quot;&quot;.equals(id)">
+            <if test="id != null and !&quot;&quot;.equals(id)">
                 and id = #{id}
             </if>
-                     <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
                 and del_flag = #{delFlag}
             </if>
-                     <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
                 and update_time = #{updateTime}
             </if>
-                     <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
                 and update_user = #{updateUser}
             </if>
-                     <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
                 and create_time = #{createTime}
             </if>
-                     <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
                 and create_user = #{createUser}
             </if>
-                     <if test="landMarkId != null and !&quot;&quot;.equals(landMarkId)">
+            <if test="landMarkId != null and !&quot;&quot;.equals(landMarkId)">
                 and land_mark_id = #{landMarkId}
             </if>
-                     <if test="name != null and !&quot;&quot;.equals(name)">
+            <if test="name != null and !&quot;&quot;.equals(name)">
                 and name = #{name}
             </if>
-                     <if test="remark != null and !&quot;&quot;.equals(remark)">
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
                 and remark = #{remark}
             </if>
-                     <if test="payFlag != null and !&quot;&quot;.equals(payFlag)">
+            <if test="payFlag != null and !&quot;&quot;.equals(payFlag)">
                 and pay_flag = #{payFlag}
             </if>
-                     <if test="price != null and !&quot;&quot;.equals(price)">
+            <if test="price != null and !&quot;&quot;.equals(price)">
                 and price = #{price}
             </if>
-                     <if test="aimPlace != null and !&quot;&quot;.equals(aimPlace)">
+            <if test="aimPlace != null and !&quot;&quot;.equals(aimPlace)">
                 and aim_place = #{aimPlace}
             </if>
-                     <if test="rank != null and !&quot;&quot;.equals(rank)">
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
                 and rank = #{rank}
             </if>
-                     <if test="shelfFlag != null and !&quot;&quot;.equals(shelfFlag)">
+            <if test="shelfFlag != null and !&quot;&quot;.equals(shelfFlag)">
                 and shelf_flag = #{shelfFlag}
             </if>
-         
+
         </where>
         LIMIT 1
     </select>
+    <select id="queryBoughtNavigationPackage" parameterType="java.util.Map"
+            resultType="com.izouma.awesomeadmin.model.NavigationPackage">
+        SELECT
+        GROUP_CONCAT(`name`) AS NAME,
+        GROUP_CONCAT(aim_place) AS aim_place
+        FROM
+        navigation_package
+        WHERE
+        del_flag = 'N'
+        AND id IN (
+        SELECT
+        package_id
+        FROM
+        user_order
+        WHERE
+        del_flag = 'N'
+        AND user_id = #{userId}
+        AND status_flag = 1
+        )
+
+        <if test="landMarkId != null and !&quot;&quot;.equals(landMarkId)">
+            and land_mark_id = #{landMarkId}
+        </if>
+        <if test="payFlag != null and !&quot;&quot;.equals(payFlag)">
+            and pay_flag = #{payFlag}
+        </if>
+        <if test="shelfFlag != null and !&quot;&quot;.equals(shelfFlag)">
+            and shelf_flag = #{shelfFlag}
+        </if>
+
+    </select>
     <update id="delete">
         UPDATE navigation_package SET del_flag = 'Y'
         where
@@ -493,10 +534,12 @@
         </if>
     </update>
     <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.NavigationPackage">
-        select <include refid="Base_Column_List"/> from navigation_package
+        select
+        <include refid="Base_Column_List"/>
+        from navigation_package
         <where>
             and del_flag = 'N'
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </where>
+        </where>
         order by id desc
     </select>
 </mapper>

Diferenças do arquivo suprimidas por serem muito extensas
+ 290 - 269
src/main/java/com/izouma/awesomeadmin/dao/UserOrderMapper.xml


+ 147 - 0
src/main/java/com/izouma/awesomeadmin/model/MemberCoin.java

@@ -0,0 +1,147 @@
+package com.izouma.awesomeadmin.model;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import java.util.Date;
+
+
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class MemberCoin{
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private String userId;
+    private String orderId;
+    private String money;
+    private String balance;
+    private Integer typeFlag;
+    private String remark;
+
+private String searchKey;
+
+/**
+* and,test_name,like,value;or,remark,=,123
+*/
+private String advancedQuery;
+
+/**
+* column_name_,desc_;column_name_,asc
+*/
+private String orderByStr;
+
+    public Integer getId(){
+        return this.id;
+    }
+
+    public void setId(Integer id){
+        this.id = id;
+    }
+    public String getDelFlag(){
+        return this.delFlag;
+    }
+
+    public void setDelFlag(String delFlag){
+        this.delFlag = delFlag;
+    }
+    public Date getUpdateTime(){
+        return this.updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime){
+        this.updateTime = updateTime;
+    }
+    public String getUpdateUser(){
+        return this.updateUser;
+    }
+
+    public void setUpdateUser(String updateUser){
+        this.updateUser = updateUser;
+    }
+    public Date getCreateTime(){
+        return this.createTime;
+    }
+
+    public void setCreateTime(Date createTime){
+        this.createTime = createTime;
+    }
+    public String getCreateUser(){
+        return this.createUser;
+    }
+
+    public void setCreateUser(String createUser){
+        this.createUser = createUser;
+    }
+    public String getUserId(){
+        return this.userId;
+    }
+
+    public void setUserId(String userId){
+        this.userId = userId;
+    }
+    public String getOrderId(){
+        return this.orderId;
+    }
+
+    public void setOrderId(String orderId){
+        this.orderId = orderId;
+    }
+    public String getMoney(){
+        return this.money;
+    }
+
+    public void setMoney(String money){
+        this.money = money;
+    }
+    public String getBalance(){
+        return this.balance;
+    }
+
+    public void setBalance(String balance){
+        this.balance = balance;
+    }
+    public Integer getTypeFlag(){
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(Integer typeFlag){
+        this.typeFlag = typeFlag;
+    }
+    public String getRemark(){
+        return this.remark;
+    }
+
+    public void setRemark(String remark){
+        this.remark = remark;
+    }
+
+public String getSearchKey() {
+    return searchKey;
+}
+
+public void setSearchKey(String searchKey) {
+    this.searchKey = searchKey;
+}
+
+public String getAdvancedQuery() {
+    return advancedQuery;
+}
+
+public void setAdvancedQuery(String advancedQuery) {
+    this.advancedQuery = advancedQuery;
+}
+
+public String getOrderByStr() {
+    return orderByStr;
+}
+
+public void setOrderByStr(String orderByStr) {
+    this.orderByStr = orderByStr;
+}
+
+}
+

+ 167 - 0
src/main/java/com/izouma/awesomeadmin/model/MemberPoint.java

@@ -0,0 +1,167 @@
+package com.izouma.awesomeadmin.model;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import java.util.Date;
+
+
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class MemberPoint {
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private String userId;
+    private String orderId;
+    private String money;
+    private String balance;
+    private Integer typeFlag;
+    private String remark;
+
+    private UserOrder userOrder;
+
+    private String searchKey;
+
+    /**
+     * and,test_name,like,value;or,remark,=,123
+     */
+    private String advancedQuery;
+
+    /**
+     * column_name_,desc_;column_name_,asc
+     */
+    private String orderByStr;
+
+    public Integer getId() {
+        return this.id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getDelFlag() {
+        return this.delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Date getUpdateTime() {
+        return this.updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getUpdateUser() {
+        return this.updateUser;
+    }
+
+    public void setUpdateUser(String updateUser) {
+        this.updateUser = updateUser;
+    }
+
+    public Date getCreateTime() {
+        return this.createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getCreateUser() {
+        return this.createUser;
+    }
+
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    public String getUserId() {
+        return this.userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getOrderId() {
+        return this.orderId;
+    }
+
+    public void setOrderId(String orderId) {
+        this.orderId = orderId;
+    }
+
+    public String getMoney() {
+        return this.money;
+    }
+
+    public void setMoney(String money) {
+        this.money = money;
+    }
+
+    public String getBalance() {
+        return this.balance;
+    }
+
+    public void setBalance(String balance) {
+        this.balance = balance;
+    }
+
+    public Integer getTypeFlag() {
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(Integer typeFlag) {
+        this.typeFlag = typeFlag;
+    }
+
+    public String getRemark() {
+        return this.remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getSearchKey() {
+        return searchKey;
+    }
+
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
+
+    public String getAdvancedQuery() {
+        return advancedQuery;
+    }
+
+    public void setAdvancedQuery(String advancedQuery) {
+        this.advancedQuery = advancedQuery;
+    }
+
+    public String getOrderByStr() {
+        return orderByStr;
+    }
+
+    public void setOrderByStr(String orderByStr) {
+        this.orderByStr = orderByStr;
+    }
+
+    public UserOrder getUserOrder() {
+        return userOrder;
+    }
+
+    public void setUserOrder(UserOrder userOrder) {
+        this.userOrder = userOrder;
+    }
+}
+

+ 86 - 63
src/main/java/com/izouma/awesomeadmin/model/NavigationPackage.java

@@ -2,13 +2,14 @@ package com.izouma.awesomeadmin.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 NavigationPackage{
+public class NavigationPackage {
     private Integer id;
     private String delFlag;
     private Date updateTime;
@@ -24,150 +25,172 @@ public class NavigationPackage{
     private Integer rank;
     private String shelfFlag;
 
-private String idStr;
+    private Integer userId;
+
+    private String idStr;
 
-private String searchKey;
+    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 Integer getLandMarkId(){
+
+    public Integer getLandMarkId() {
         return this.landMarkId;
     }
 
-    public void setLandMarkId(Integer landMarkId){
+    public void setLandMarkId(Integer landMarkId) {
         this.landMarkId = landMarkId;
     }
-    public String getName(){
+
+    public String getName() {
         return this.name;
     }
 
-    public void setName(String name){
+    public void setName(String name) {
         this.name = name;
     }
-    public String getRemark(){
+
+    public String getRemark() {
         return this.remark;
     }
 
-    public void setRemark(String remark){
+    public void setRemark(String remark) {
         this.remark = remark;
     }
-    public String getPayFlag(){
+
+    public String getPayFlag() {
         return this.payFlag;
     }
 
-    public void setPayFlag(String payFlag){
+    public void setPayFlag(String payFlag) {
         this.payFlag = payFlag;
     }
-    public BigDecimal getPrice(){
+
+    public BigDecimal getPrice() {
         return this.price;
     }
 
-    public void setPrice(BigDecimal price){
+    public void setPrice(BigDecimal price) {
         this.price = price;
     }
-    public String getAimPlace(){
+
+    public String getAimPlace() {
         return this.aimPlace;
     }
 
-    public void setAimPlace(String aimPlace){
+    public void setAimPlace(String aimPlace) {
         this.aimPlace = aimPlace;
     }
-    public Integer getRank(){
+
+    public Integer getRank() {
         return this.rank;
     }
 
-    public void setRank(Integer rank){
+    public void setRank(Integer rank) {
         this.rank = rank;
     }
-    public String getShelfFlag(){
+
+    public String getShelfFlag() {
         return this.shelfFlag;
     }
 
-    public void setShelfFlag(String shelfFlag){
+    public void setShelfFlag(String shelfFlag) {
         this.shelfFlag = shelfFlag;
     }
 
-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 getIdStr() {
-    return idStr;
-}
+    public String getIdStr() {
+        return idStr;
+    }
 
-public void setIdStr(String idStr) {
-    this.idStr = idStr;
-}
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
 
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
 }
 

+ 100 - 73
src/main/java/com/izouma/awesomeadmin/model/UserOrder.java

@@ -2,13 +2,14 @@ package com.izouma.awesomeadmin.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 UserOrder{
+public class UserOrder {
     private Integer id;
     private String delFlag;
     private Date updateTime;
@@ -28,186 +29,212 @@ public class UserOrder{
     private BigDecimal point;
     private BigDecimal dealPrice;
     private String marketCode;
+    private BigDecimal coin;
 
-private String idStr;
+    private String idStr;
 
-private String searchKey;
+    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 Integer getUserId(){
+
+    public Integer getUserId() {
         return this.userId;
     }
 
-    public void setUserId(Integer userId){
+    public void setUserId(Integer userId) {
         this.userId = userId;
     }
-    public Integer getLankMarkId(){
+
+    public Integer getLankMarkId() {
         return this.lankMarkId;
     }
 
-    public void setLankMarkId(Integer lankMarkId){
+    public void setLankMarkId(Integer lankMarkId) {
         this.lankMarkId = lankMarkId;
     }
-    public Integer getPackageId(){
+
+    public Integer getPackageId() {
         return this.packageId;
     }
 
-    public void setPackageId(Integer packageId){
+    public void setPackageId(Integer packageId) {
         this.packageId = packageId;
     }
-    public Integer getStatusFlag(){
+
+    public Integer getStatusFlag() {
         return this.statusFlag;
     }
 
-    public void setStatusFlag(Integer statusFlag){
+    public void setStatusFlag(Integer statusFlag) {
         this.statusFlag = statusFlag;
     }
-    public Date getPayTime(){
+
+    public Date getPayTime() {
         return this.payTime;
     }
 
-    public void setPayTime(Date payTime){
+    public void setPayTime(Date payTime) {
         this.payTime = payTime;
     }
-    public Integer getPayMode(){
+
+    public Integer getPayMode() {
         return this.payMode;
     }
 
-    public void setPayMode(Integer payMode){
+    public void setPayMode(Integer payMode) {
         this.payMode = payMode;
     }
-    public String getRemark(){
+
+    public String getRemark() {
         return this.remark;
     }
 
-    public void setRemark(String remark){
+    public void setRemark(String remark) {
         this.remark = remark;
     }
-    public String getShowFlag(){
+
+    public String getShowFlag() {
         return this.showFlag;
     }
 
-    public void setShowFlag(String showFlag){
+    public void setShowFlag(String showFlag) {
         this.showFlag = showFlag;
     }
-    public BigDecimal getTotlePrice(){
+
+    public BigDecimal getTotlePrice() {
         return this.totlePrice;
     }
 
-    public void setTotlePrice(BigDecimal totlePrice){
+    public void setTotlePrice(BigDecimal totlePrice) {
         this.totlePrice = totlePrice;
     }
-    public BigDecimal getCash(){
+
+    public BigDecimal getCash() {
         return this.cash;
     }
 
-    public void setCash(BigDecimal cash){
+    public void setCash(BigDecimal cash) {
         this.cash = cash;
     }
-    public BigDecimal getPoint(){
+
+    public BigDecimal getPoint() {
         return this.point;
     }
 
-    public void setPoint(BigDecimal point){
+    public void setPoint(BigDecimal point) {
         this.point = point;
     }
-    public BigDecimal getDealPrice(){
+
+    public BigDecimal getDealPrice() {
         return this.dealPrice;
     }
 
-    public void setDealPrice(BigDecimal dealPrice){
+    public void setDealPrice(BigDecimal dealPrice) {
         this.dealPrice = dealPrice;
     }
-    public String getMarketCode(){
+
+    public String getMarketCode() {
         return this.marketCode;
     }
 
-    public void setMarketCode(String marketCode){
+    public void setMarketCode(String marketCode) {
         this.marketCode = marketCode;
     }
 
-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 getIdStr() {
-    return idStr;
-}
+    public String getIdStr() {
+        return idStr;
+    }
 
-public void setIdStr(String idStr) {
-    this.idStr = idStr;
-}
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+
+    public BigDecimal getCoin() {
+        return coin;
+    }
 
+    public void setCoin(BigDecimal coin) {
+        this.coin = coin;
+    }
 }
 

+ 32 - 0
src/main/java/com/izouma/awesomeadmin/service/MemberCoinService.java

@@ -0,0 +1,32 @@
+package com.izouma.awesomeadmin.service;
+
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.MemberCoin;
+
+import java.util.List;
+
+
+/**
+ * service接口类
+ */
+public interface MemberCoinService {
+
+    List<MemberCoin> getMemberCoinList(MemberCoin record);
+
+    List<MemberCoin> getMemberCoinByPage(Page page, MemberCoin record);
+
+    MemberCoin getMemberCoinById(String id);
+
+    MemberCoin getMemberCoin(MemberCoin record);
+
+    boolean createMemberCoin(MemberCoin record);
+
+    boolean deleteMemberCoin(String id);
+
+    boolean updateMemberCoin(MemberCoin record);
+
+    void alipaySuccess(String tradeNo, String tradeStatus);
+
+    int song(MemberCoin memberCoin);
+}
+

+ 28 - 0
src/main/java/com/izouma/awesomeadmin/service/MemberPointService.java

@@ -0,0 +1,28 @@
+package com.izouma.awesomeadmin.service;
+
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.MemberPoint;
+
+import java.util.List;
+
+
+/**
+*  service接口类
+*/
+public interface MemberPointService{
+
+    List<MemberPoint> getMemberPointList(MemberPoint record);
+
+    List<MemberPoint> getMemberPointByPage(Page page, MemberPoint record);
+
+    MemberPoint getMemberPointById(String id);
+
+    MemberPoint getMemberPoint(MemberPoint record);
+
+    boolean createMemberPoint(MemberPoint record);
+
+    boolean deleteMemberPoint(String id);
+
+    boolean updateMemberPoint(MemberPoint record);
+}
+

+ 2 - 0
src/main/java/com/izouma/awesomeadmin/service/NavigationPackageService.java

@@ -23,5 +23,7 @@ public interface NavigationPackageService{
     boolean deleteNavigationPackage(NavigationPackage record);
 
     boolean updateNavigationPackage(NavigationPackage record);
+
+    NavigationPackage getBoughtNavigationPackage(NavigationPackage record);
 }
 

+ 10 - 4
src/main/java/com/izouma/awesomeadmin/service/UserOrderService.java

@@ -1,14 +1,16 @@
 package com.izouma.awesomeadmin.service;
 
 import java.util.*;
+
 import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
 import com.izouma.awesomeadmin.model.UserOrder;
 
 
 /**
-*  service接口类
-*/
-public interface UserOrderService{
+ * service接口类
+ */
+public interface UserOrderService {
 
     List<UserOrder> getUserOrderList(UserOrder record);
 
@@ -18,10 +20,14 @@ public interface UserOrderService{
 
     UserOrder getUserOrder(UserOrder record);
 
-    boolean createUserOrder(UserOrder record);
+    Result createUserOrder(UserOrder record);
 
     boolean deleteUserOrder(UserOrder record);
 
     boolean updateUserOrder(UserOrder record);
+
+    double calculatedPrice(String orderId, double coin, double point);
+
+    Result payOrder(String orderId, double coin, double point, double cash, int payMode);
 }
 

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/service/impl/AimGroupInfoServiceImpl.java

@@ -4,7 +4,6 @@ import java.util.*;
 
 import com.izouma.awesomeadmin.dao.*;
 import com.izouma.awesomeadmin.model.*;
-import javafx.scene.shape.Arc;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;

+ 0 - 3
src/main/java/com/izouma/awesomeadmin/service/impl/DepartInfoServiceImpl.java

@@ -3,12 +3,9 @@ package com.izouma.awesomeadmin.service.impl;
 import java.util.*;
 
 import com.izouma.awesomeadmin.dto.TreeNode;
-import com.izouma.awesomeadmin.model.SysRole;
 import com.izouma.awesomeadmin.model.UserInfo;
-import com.izouma.awesomeadmin.service.SysRoleService;
 import com.izouma.awesomeadmin.service.UserInfoService;
 import com.izouma.awesomeadmin.util.TreeUtils;
-import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;

+ 247 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/MemberCoinServiceImpl.java

@@ -0,0 +1,247 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dao.AlipayTempMapper;
+import com.izouma.awesomeadmin.dao.MemberCoinMapper;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.AlipayTemp;
+import com.izouma.awesomeadmin.model.MemberCoin;
+import com.izouma.awesomeadmin.model.UserInfo;
+import com.izouma.awesomeadmin.service.MemberCoinService;
+import com.izouma.awesomeadmin.service.UserInfoService;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * service接口实现类
+ */
+@Service
+public class MemberCoinServiceImpl implements MemberCoinService {
+
+    private static Logger logger = Logger.getLogger(MemberCoinServiceImpl.class);
+
+    @Autowired
+    private MemberCoinMapper memberCoinMapper;
+
+    @Autowired
+    private AlipayTempMapper alipayTempMapper;
+
+
+    @Autowired
+    private UserInfoService userInfoService;
+
+    @Override
+    public List<MemberCoin> getMemberCoinList(MemberCoin record) {
+
+        logger.info("getMemberCoinList");
+        try {
+
+            return memberCoinMapper.queryAllMemberCoin(record);
+        } catch (Exception e) {
+            logger.error("getMemberCoinList", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public List<MemberCoin> getMemberCoinByPage(Page page, MemberCoin record) {
+
+        logger.info("getMemberCoinByPage");
+        try {
+
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return memberCoinMapper.queryMemberCoinByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getMemberCoinByPage", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public MemberCoin getMemberCoinById(String id) {
+
+        logger.info("getMemberCoinyId");
+        try {
+
+            return memberCoinMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getMemberCoinById", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public MemberCoin getMemberCoin(MemberCoin record) {
+
+        logger.info("getMemberCoin");
+        try {
+
+            return memberCoinMapper.queryMemberCoin(record);
+        } catch (Exception e) {
+            logger.error("getMemberCoin", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public boolean createMemberCoin(MemberCoin record) {
+
+        logger.info("createMemberCoin");
+        try {
+
+            int updates = memberCoinMapper.insertSelective(record);
+
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("createMemberCoin", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean deleteMemberCoin(String id) {
+
+        logger.info("deleteMemberCoin");
+        try {
+
+            int updates = memberCoinMapper.delete(id);
+
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("deleteMemberCoin", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean updateMemberCoin(MemberCoin record) {
+
+        logger.info("updateMemberCoin");
+        try {
+
+            int updates = memberCoinMapper.updateByPrimaryKeySelective(record);
+
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("updateMemberCoin", e);
+        }
+
+        return false;
+    }
+
+    /**
+     * <p>支付宝支付成功回调接口。充值</p>
+     *
+     * @param tradeNo
+     * @param tradeStatus
+     */
+    @Override
+    public void alipaySuccess(String tradeNo, String tradeStatus) {
+
+        logger.info("alipaySuccess:支付宝支付成功回调接口 tradeNo:" + tradeNo + ", tradeStatus:" + tradeStatus);
+        try {
+            AlipayTemp alipayTemp = new AlipayTemp();
+            alipayTemp.setOutTradeNo(tradeNo);
+            alipayTemp = alipayTempMapper.queryAlipayTemp(alipayTemp);
+
+            if (alipayTemp != null) {
+
+                if (!AppConstant.Aliapi.TRADE_SUCCESS.equals(alipayTemp.getTradeStatus())) {
+
+                    UserInfo userInfo = userInfoService.getUserInfoById(alipayTemp.getOrderId());
+
+                    Double moneyCoin = userInfo.getMoneyCoin();
+
+                    MemberCoin memberCoin = new MemberCoin();
+
+                    memberCoin.setCreateUser("支付宝充值");
+                    memberCoin.setUserId(alipayTemp.getOrderId());
+                    memberCoin.setMoney(String.valueOf(alipayTemp.getTotalAmount()));
+                    memberCoin.setBalance(String.valueOf(moneyCoin + alipayTemp.getTotalAmount().doubleValue()));
+                    memberCoin.setTypeFlag(AppConstant.CoinType.RECHARGE);
+                    memberCoin.setRemark("线上充值:" + alipayTemp.getTotalAmount());
+                    memberCoinMapper.insertSelective(memberCoin);
+
+
+                    UserInfo updateUser = new UserInfo();
+                    updateUser.setId(userInfo.getId());
+                    updateUser.setMoneyCoin(moneyCoin + alipayTemp.getTotalAmount().doubleValue());
+                    userInfoService.updateUserInfo(updateUser);
+
+
+                    alipayTemp.setTradeStatus(tradeStatus);
+
+                    alipayTempMapper.updateByPrimaryKeySelective(alipayTemp);
+                }
+
+            }
+
+        } catch (Exception e) {
+            logger.error("alipaySuccess:支付宝支付成功回调接口异常 tradeNo:" + tradeNo + ", tradeStatus:" + tradeStatus, e);
+        }
+
+    }
+
+
+    @Override
+    public int song(MemberCoin memberCoin) {
+
+        logger.info("song:送电子币  ");
+        try {
+
+            int key = 0;
+
+            double money = Double.valueOf(memberCoin.getMoney());
+
+
+            int userId = Integer.valueOf(memberCoin.getUserId());
+            UserInfo userInfo = userInfoService.getUserInfoById(userId + "");
+
+            UserInfo updateUser = new UserInfo();
+            updateUser.setId(userId);
+
+
+            double balance = userInfo.getMoneyCoin();
+            double moneyCoin = balance + money;
+
+            memberCoin.setCreateUser("管理员");
+            memberCoin.setBalance(String.valueOf(moneyCoin));
+            memberCoin.setTypeFlag(AppConstant.CoinType.SONG);
+            memberCoin.setRemark("后台赠送:" + money + "余额");
+            key += memberCoinMapper.insertSelective(memberCoin);
+
+
+            updateUser.setMoneyCoin(moneyCoin);
+            userInfoService.updateUserInfo(updateUser);
+
+
+            return key;
+        } catch (Exception e) {
+            logger.error("song:送电子币异常  ", e);
+        }
+
+        return 0;
+    }
+
+}
+

+ 140 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/MemberPointServiceImpl.java

@@ -0,0 +1,140 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dao.MemberPointMapper;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.MemberPoint;
+import com.izouma.awesomeadmin.service.MemberPointService;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+*  service接口实现类
+*/
+@Service
+public class MemberPointServiceImpl implements MemberPointService {
+
+    private static Logger logger = Logger.getLogger(MemberPointServiceImpl.class);
+
+    @Autowired
+    private MemberPointMapper memberPointMapper;
+
+    @Override
+    public List<MemberPoint> getMemberPointList(MemberPoint record) {
+
+        logger.info("getMemberPointList");
+        try {
+
+        return memberPointMapper.queryAllMemberPoint(record);
+        } catch (Exception e) {
+        logger.error("getMemberPointList", e);
+        }
+
+        return null;
+    }
+    @Override
+    public List<MemberPoint> getMemberPointByPage(Page page, MemberPoint record) {
+
+        logger.info("getMemberPointByPage");
+        try {
+
+        Map<String, Object> parameter = new HashMap<String, Object>();
+        parameter.put("record", record);
+        parameter.put(AppConstant.PAGE, page);
+
+        return memberPointMapper.queryMemberPointByPage(parameter);
+        } catch (Exception e) {
+        logger.error("getMemberPointByPage", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public MemberPoint getMemberPointById(String id) {
+
+        logger.info("getMemberPointyId");
+        try {
+
+            return memberPointMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+        logger.error("getMemberPointById", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public MemberPoint getMemberPoint(MemberPoint record) {
+
+        logger.info("getMemberPoint");
+        try {
+
+            return memberPointMapper.queryMemberPoint(record);
+        } catch (Exception e) {
+        logger.error("getMemberPoint", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public boolean createMemberPoint(MemberPoint record) {
+
+        logger.info("createMemberPoint");
+        try {
+
+            int updates = memberPointMapper.insertSelective(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+            logger.error("createMemberPoint", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean deleteMemberPoint(String id) {
+
+        logger.info("deleteMemberPoint");
+        try {
+
+             int updates = memberPointMapper.delete(id);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("deleteMemberPoint", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean updateMemberPoint(MemberPoint record) {
+
+        logger.info("updateMemberPoint");
+        try {
+
+            int updates = memberPointMapper.updateByPrimaryKeySelective(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("updateMemberPoint", e);
+        }
+
+        return false;
+    }
+}
+

+ 14 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/NavigationPackageServiceImpl.java

@@ -80,6 +80,20 @@ public class NavigationPackageServiceImpl implements NavigationPackageService{
         return null;
     }
 
+    @Override
+    public NavigationPackage getBoughtNavigationPackage(NavigationPackage record) {
+
+        logger.info("getNavigationPackage");
+        try {
+
+            return navigationPackageMapper.queryBoughtNavigationPackage(record);
+        } catch (Exception e) {
+        logger.error("getNavigationPackage", e);
+        }
+
+        return null;
+    }
+
     @Override
     public boolean createNavigationPackage(NavigationPackage record) {
 

+ 0 - 2
src/main/java/com/izouma/awesomeadmin/service/impl/SysMenuServiceImpl.java

@@ -7,12 +7,10 @@ import com.izouma.awesomeadmin.dto.Page;
 import com.izouma.awesomeadmin.dto.TreeNode;
 import com.izouma.awesomeadmin.model.SysMenu;
 import com.izouma.awesomeadmin.model.SysRole;
-import com.izouma.awesomeadmin.model.UserInfo;
 import com.izouma.awesomeadmin.service.SysMenuService;
 import com.izouma.awesomeadmin.service.SysRoleService;
 import com.izouma.awesomeadmin.service.UserInfoService;
 import com.izouma.awesomeadmin.util.TreeUtils;
-import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;

+ 15 - 7
src/main/java/com/izouma/awesomeadmin/service/impl/UserInfoServiceImpl.java

@@ -9,7 +9,7 @@ import com.izouma.awesomeadmin.service.OSSFileService;
 import com.izouma.awesomeadmin.service.UserInfoService;
 import com.izouma.awesomeadmin.util.MD5Util;
 import com.izouma.awesomeadmin.util.PropertiesFileLoader;
-import com.izouma.awesomeadmin.util.WeixinUtil;
+import com.izouma.weixin.util.WeixinUtil;
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.Jwt;
 import io.jsonwebtoken.Jwts;
@@ -213,15 +213,23 @@ public class UserInfoServiceImpl implements UserInfoService {
 
         logger.info("updatePassword");
         try {
-            if (StringUtils.isNotEmpty(record.getPassword())) {
-                record.setPassword(MD5Util.getMD5(record.getPassword()));
-            }
 
-            int updates = userInfoMapper.updatePassword(record);
+            if (record.getId() != null ||
+                    StringUtils.isNotEmpty(record.getUsername()) ||
+                    StringUtils.isNotEmpty(record.getPhone()) ||
+                    StringUtils.isNotEmpty(record.getMail())) {
 
-            if (updates > 0) {
-                return true;
+                if (StringUtils.isNotEmpty(record.getPassword())) {
+                    record.setPassword(MD5Util.getMD5(record.getPassword()));
+                }
+
+                int updates = userInfoMapper.updatePassword(record);
+
+                if (updates > 0) {
+                    return true;
+                }
             }
+
         } catch (Exception e) {
             logger.error("updatePassword", e);
         }

+ 201 - 23
src/main/java/com/izouma/awesomeadmin/service/impl/UserOrderServiceImpl.java

@@ -1,52 +1,73 @@
 package com.izouma.awesomeadmin.service.impl;
 
+import java.math.BigDecimal;
 import java.util.*;
+
+import com.izouma.awesomeadmin.dao.NavigationPackageMapper;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.*;
+import com.izouma.awesomeadmin.service.MemberCoinService;
+import com.izouma.awesomeadmin.service.MemberPointService;
+import com.izouma.awesomeadmin.service.UserInfoService;
+import com.izouma.awesomeadmin.util.MsgUtil;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.izouma.awesomeadmin.constant.AppConstant;
 import com.izouma.awesomeadmin.dto.Page;
-import com.izouma.awesomeadmin.model.UserOrder;
 import com.izouma.awesomeadmin.service.UserOrderService;
 import com.izouma.awesomeadmin.dao.UserOrderMapper;
 
 /**
-*  service接口实现类
-*/
+ * service接口实现类
+ */
 @Service
-public class UserOrderServiceImpl implements UserOrderService{
+public class UserOrderServiceImpl implements UserOrderService {
 
     private static Logger logger = Logger.getLogger(UserOrderServiceImpl.class);
 
     @Autowired
     private UserOrderMapper userOrderMapper;
 
+    @Autowired
+    private NavigationPackageMapper navigationPackageMapper;
+
+    @Autowired
+    private UserInfoService userInfoService;
+
+    @Autowired
+    private MemberPointService memberPointService;
+
+    @Autowired
+    private MemberCoinService memberCoinService;
+
     @Override
     public List<UserOrder> getUserOrderList(UserOrder record) {
 
         logger.info("getUserOrderList");
         try {
 
-        return userOrderMapper.queryAllUserOrder(record);
+            return userOrderMapper.queryAllUserOrder(record);
         } catch (Exception e) {
-        logger.error("getUserOrderList", e);
+            logger.error("getUserOrderList", e);
         }
 
         return null;
     }
+
     @Override
     public List<UserOrder> getUserOrderByPage(Page page, UserOrder record) {
 
         logger.info("getUserOrderByPage");
         try {
 
-        Map<String, Object> parameter = new HashMap<String, Object>();
-        parameter.put("record", record);
-        parameter.put(AppConstant.PAGE, page);
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
 
-        return userOrderMapper.queryUserOrderByPage(parameter);
+            return userOrderMapper.queryUserOrderByPage(parameter);
         } catch (Exception e) {
-        logger.error("getUserOrderByPage", e);
+            logger.error("getUserOrderByPage", e);
         }
 
         return null;
@@ -60,7 +81,7 @@ public class UserOrderServiceImpl implements UserOrderService{
 
             return userOrderMapper.selectByPrimaryKey(Integer.valueOf(id));
         } catch (Exception e) {
-        logger.error("getUserOrderById", e);
+            logger.error("getUserOrderById", e);
         }
 
         return null;
@@ -74,28 +95,47 @@ public class UserOrderServiceImpl implements UserOrderService{
 
             return userOrderMapper.queryUserOrder(record);
         } catch (Exception e) {
-        logger.error("getUserOrder", e);
+            logger.error("getUserOrder", e);
         }
 
         return null;
     }
 
     @Override
-    public boolean createUserOrder(UserOrder record) {
+    public Result createUserOrder(UserOrder record) {
 
         logger.info("createUserOrder");
         try {
 
-            int updates = userOrderMapper.insertSelective(record);
+            if (record.getUserId() != null && record.getPackageId() != null) {//用户和导游包都必须存在
 
-            if (updates > 0) {
-                 return true;
+                NavigationPackage navigationPackage = navigationPackageMapper.selectByPrimaryKey(record.getPackageId());
+
+                if (navigationPackage == null || !"Y".equals(navigationPackage.getShelfFlag())) {
+                    return new Result(false, "导游包未上线或不存在");
+                }
+
+                record.setLankMarkId(navigationPackage.getLandMarkId());
+
+                BigDecimal totlePrice = navigationPackage.getPrice();
+                record.setTotlePrice(totlePrice);
+                BigDecimal dealPrice = totlePrice;
+                record.setDealPrice(dealPrice);
+
+
+                int updates = userOrderMapper.insertSelective(record);
+
+                if (updates > 0) {
+                    return new Result(true, record.getId());
+                }
             }
+
+
         } catch (Exception e) {
             logger.error("createUserOrder", e);
         }
 
-        return false;
+        return new Result(false, "下单失败");
     }
 
     @Override
@@ -104,13 +144,13 @@ public class UserOrderServiceImpl implements UserOrderService{
         logger.info("deleteUserOrder");
         try {
 
-             int updates = userOrderMapper.delete(record);
+            int updates = userOrderMapper.delete(record);
 
             if (updates > 0) {
-                 return true;
+                return true;
             }
         } catch (Exception e) {
-             logger.error("deleteUserOrder", e);
+            logger.error("deleteUserOrder", e);
         }
 
         return false;
@@ -125,13 +165,151 @@ public class UserOrderServiceImpl implements UserOrderService{
             int updates = userOrderMapper.updateByPrimaryKeySelective(record);
 
             if (updates > 0) {
-                 return true;
+                return true;
             }
         } catch (Exception e) {
-             logger.error("updateUserOrder", e);
+            logger.error("updateUserOrder", e);
         }
 
         return false;
     }
+
+
+    @Override
+    public double calculatedPrice(String orderId, double coin, double point) {
+
+        logger.info("calculatedPrice:计算价格");
+        try {
+
+            UserOrder userOrder = new UserOrder();
+
+            userOrder.setId(Integer.valueOf(orderId));
+
+            userOrder = userOrderMapper.queryUserOrder(userOrder);
+
+            double money = userOrder.getDealPrice().doubleValue();
+
+            double cash = money - coin - point;
+
+            return cash;
+
+        } catch (Exception e) {
+            logger.error("calculatedPrice:计算价格异常", e);
+        }
+        return 0;
+    }
+
+    @Override
+    public Result payOrder(String orderId, double coin, double point, double cash, int payMode) {
+
+        logger.info("payOrder:支付订单");
+        try {
+
+            UserOrder userOrder = new UserOrder();
+
+            userOrder.setId(Integer.valueOf(orderId));
+
+            userOrder = userOrderMapper.queryUserOrder(userOrder);
+
+            if (userOrder == null) {
+                return new Result(false, "支付失败,订单不存在");
+            }
+
+            double money = userOrder.getDealPrice().doubleValue();
+
+            if (AppConstant.PayMode.COIN == payMode) {
+                //如果支付总额不足则用余额补足;
+                if (money > (coin + point + cash)) {
+                    coin = money - point - cash;
+                }
+            }
+
+
+            UserInfo userInfo = userInfoService.getUserInfoById(userOrder.getUserId() + "");
+
+            if (userInfo == null) {
+                return new Result(false, "支付失败,用户不存在!");
+            }
+
+            /**
+             * 余额
+             */
+            double moneyCoin = userInfo.getMoneyCoin();
+            if (coin > moneyCoin) {
+                return new Result(false, "支付失败,余额不足");
+            }
+
+            /**
+             * 商城积分
+             */
+            double moneyPoint = userInfo.getMoneyPoint();
+            if (point > moneyPoint) {
+                return new Result(false, "支付失败,商城积分不足");
+            }
+
+
+            if (money > (coin + point + cash)) {
+                return new Result(false, "支付失败,金额不足");
+            }
+
+            if (point > 0) {
+                //积分兑换区 只能用商城积分
+                MemberPoint memberPoint = new MemberPoint();
+                memberPoint.setCreateUser("系统");
+                memberPoint.setOrderId(orderId);
+                memberPoint.setUserId(userOrder.getUserId() + "");
+                memberPoint.setMoney(String.valueOf(-point + 0.0));
+                memberPoint.setBalance(String.valueOf(moneyPoint - point));
+                memberPoint.setTypeFlag(AppConstant.CoinType.CONSUMPTION);
+                memberPoint.setRemark("购买商品消费,订单号:" + userOrder.getId());
+                memberPointService.createMemberPoint(memberPoint);
+
+
+            }
+
+
+            // 个人店铺,只能用余额支付
+            if (coin > 0) {
+
+                MemberCoin memberCoin = new MemberCoin();
+                memberCoin.setCreateUser("系统");
+                memberCoin.setOrderId(orderId);
+                memberCoin.setUserId(userOrder.getUserId() + "");
+                memberCoin.setMoney(String.valueOf(-coin + 0.0));
+                memberCoin.setBalance(String.valueOf(moneyCoin - coin));
+                memberCoin.setTypeFlag(AppConstant.CoinType.CONSUMPTION);
+                memberCoin.setRemark("购买积分商品消费,订单号:" + userOrder.getId());
+                memberCoinService.createMemberCoin(memberCoin);
+
+            }
+
+
+            UserInfo updateUser = new UserInfo();
+            updateUser.setId(userOrder.getUserId());
+            updateUser.setMoneyCoin(moneyCoin - coin);
+            updateUser.setMoneyPoint(moneyPoint - point);
+            userInfoService.updateUserInfo(updateUser);
+
+            //更新为已经支付
+            UserOrder userOrderPay = new UserOrder();
+
+            userOrderPay.setId(Integer.valueOf(orderId));
+            userOrderPay.setCoin(BigDecimal.valueOf(coin));
+            userOrderPay.setPoint(BigDecimal.valueOf(point));
+            userOrderPay.setCash(BigDecimal.valueOf(cash));
+            userOrderPay.setPayMode(payMode);
+            userOrderPay.setPayTime(new Date());
+            userOrderPay.setStatusFlag(AppConstant.OrderStatus.PAY_OVER);
+
+            userOrderMapper.updateByPrimaryKeySelective(userOrderPay);
+
+
+            return new Result(true, "支付成功");
+        } catch (Exception e) {
+            logger.error("payOrder:支付订单异常", e);
+        }
+        return new Result(false, "支付失败");
+    }
+
 }
 

+ 0 - 130
src/main/java/com/izouma/awesomeadmin/util/UnifiedorderService.java

@@ -1,130 +0,0 @@
-package com.izouma.awesomeadmin.util;
-
-import com.izouma.awesomeadmin.dto.WxPaySendData;
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
-import com.thoughtworks.xstream.io.xml.XmlFriendlyNameCoder;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.util.EntityUtils;
-import org.apache.log4j.Logger;
-import org.dom4j.Document;
-import org.dom4j.Element;
-import org.dom4j.io.SAXReader;
-
-import java.io.InputStream;
-import java.util.*;
-
-/**
- * <p>微信统一下单相关服务类。</p>
- *
- * @author 索晨成 <br />
- * 更新履历 <br />
- * 日期 : 姓名: 更新内容<br />
- * @version 1.0
- */
-public class UnifiedorderService {
-
-    /**
-     * 日志对象
-     */
-    private static Logger logger = Logger.getLogger(UnifiedorderService.class);
-
-
-    public static Map<String, String> unifiedOrder(WxPaySendData data, String key) {
-
-        //统一下单支付
-        // 将解析结果存储在HashMap中
-        Map<String, String> map = new HashMap<String, String>();
-        try {
-            //生成sign签名
-            SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
-            parameters.put("appid", data.getAppid());
-            parameters.put("mch_id", data.getMch_id());
-            parameters.put("device_info", data.getDevice_info());
-            parameters.put("nonce_str", data.getNonce_str());
-            parameters.put("body", data.getBody());
-            parameters.put("out_trade_no", data.getOut_trade_no());
-            parameters.put("notify_url", data.getNotify_url());
-            parameters.put("total_fee", data.getTotal_fee());
-            parameters.put("trade_type", data.getTrade_type());
-            parameters.put("spbill_create_ip", data.getSpbill_create_ip());
-            if (data.getOpenid() != null) {
-
-                parameters.put("openid", data.getOpenid());
-            }
-            parameters.put("attach", data.getAttach());
-
-            /*
-             * System.out.println("appid:" + data.getAppid() + ",mch_id:" + data.getMch_id() + ",device_info:" + data.getDevice_info() + ",nonce_str:"
-                     + data.getNonce_str() + ",body:" + data.getBody() + ",out_trade_no:" + data.getOut_trade_no() + ",notify_url:"
-                     + data.getNotify_url() + ",total_fee:" + data.getTotal_fee() + ",trade_type:" + data.getTrade_type() + ",spbill_create_ip:"
-                     + data.getSpbill_create_ip() + ",openid:" + data.getOpenid());
-            */
-            String mySign = MbappUtil.createSign(key, parameters);
-            logger.info("SIGN:" + mySign);
-            // System.out.println("SIGN:" + mySign);
-            data.setSign(mySign);
-            XStream xs = new XStream(new DomDriver("UTF-8", new XmlFriendlyNameCoder("__", "_")));
-            xs.alias("xml", WxPaySendData.class);
-            String xml = xs.toXML(data);
-            logger.info("统一下单xml为:\n" + xml);
-
-            CloseableHttpClient httpclient = HttpClients.createDefault();
-            HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/pay/unifiedorder");
-
-            StringEntity reqEntity = new StringEntity(xml, "utf-8");
-
-            // 设置类型 
-            reqEntity.setContentType("application/x-www-form-urlencoded");
-
-            httpPost.setEntity(reqEntity);
-
-            System.out.println("executing request" + httpPost.getRequestLine());
-
-            HttpResponse response = httpclient.execute(httpPost);
-
-            try {
-                HttpEntity entity = response.getEntity();
-                System.out.println(response.getStatusLine());
-                if (entity != null) {
-
-                    // 从request中取得输入流
-                    InputStream inputStream = entity.getContent();
-                    // 读取输入流
-                    SAXReader reader = new SAXReader();
-                    Document document = reader.read(inputStream);
-                    // 得到xml根元素
-                    Element root = document.getRootElement();
-                    // 得到根元素的所有子节点
-                    @SuppressWarnings("unchecked")
-                    List<Element> elementList = root.elements();
-
-                    // 遍历所有子节点
-                    for (Element e : elementList) {
-                        map.put(e.getName(), e.getText());
-
-                        System.out.println(e.getName() + ":" + e.getText());
-                    }
-                    // 释放资源
-                    inputStream.close();
-                    inputStream = null;
-
-                }
-                EntityUtils.consume(entity);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return map;
-    }
-
-}

+ 0 - 144
src/main/java/com/izouma/awesomeadmin/util/WXRefundService.java

@@ -1,144 +0,0 @@
-package com.izouma.awesomeadmin.util;
-
-import com.izouma.awesomeadmin.dto.WxPayRefundData;
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
-import com.thoughtworks.xstream.io.xml.XmlFriendlyNameCoder;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.ssl.SSLContexts;
-import org.apache.http.util.EntityUtils;
-import org.apache.log4j.Logger;
-import org.dom4j.Document;
-import org.dom4j.Element;
-import org.dom4j.io.SAXReader;
-
-import javax.net.ssl.SSLContext;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.security.KeyStore;
-import java.util.*;
-
-/**
- * <p>微信申请退款相关服务类。</p>
- *
- * @author 索晨成 <br />
- * 更新履历 <br />
- * 日期 : 姓名: 更新内容<br />
- * @version 1.0
- */
-public class WXRefundService {
-
-    /**
-     * 日志对象
-     */
-    private static Logger logger = Logger.getLogger(WXRefundService.class);
-
-
-    public static Map<String, String> refund(WxPayRefundData data, String key, String certificatePath, String password) {
-
-        //统一下单支付
-        // 将解析结果存储在HashMap中
-        Map<String, String> map = new HashMap<String, String>();
-        try {
-            //生成sign签名
-            SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
-            parameters.put("appid", data.getAppid());
-            parameters.put("mch_id", data.getMch_id());
-            parameters.put("device_info", data.getDevice_info());
-            parameters.put("nonce_str", data.getNonce_str());
-            parameters.put("transaction_id", data.getTransaction_id());
-            parameters.put("out_trade_no", data.getOut_trade_no());
-            parameters.put("out_refund_no", data.getOut_refund_no());
-            parameters.put("total_fee", data.getTotal_fee());
-            parameters.put("refund_fee", data.getRefund_fee());
-            parameters.put("refund_fee_type", data.getRefund_fee_type());
-            parameters.put("op_user_id", data.getOp_user_id());
-
-            String mySign = MbappUtil.createSign(key, parameters);
-            logger.info("SIGN:" + mySign);
-            // System.out.println("SIGN:" + mySign);
-            data.setSign(mySign);
-            XStream xs = new XStream(new DomDriver("UTF-8", new XmlFriendlyNameCoder("__", "_")));
-            xs.alias("xml", WxPayRefundData.class);
-            String xml = xs.toXML(data);
-            logger.error("申请退款xml为:\n" + xml);
-            //指定读取证书格式为PKCS12
-            KeyStore keyStore = KeyStore.getInstance("PKCS12");
-            //读取本机存放的PKCS12证书文件
-            FileInputStream instream = new FileInputStream(new File(certificatePath));
-            try {
-                //指定PKCS12的密码(商户ID)
-                keyStore.load(instream, password.toCharArray());
-            } finally {
-                instream.close();
-            }
-            SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, password.toCharArray()).build();
-            //指定TLS版本
-            SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[]{"TLSv1"}, null,
-                    SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
-            //设置httpclient的SSLSocketFactory
-            CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
-
-            HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/secapi/pay/refund");
-
-            StringEntity reqEntity = new StringEntity(xml, "utf-8");
-
-            // 设置类型 
-            reqEntity.setContentType("application/x-www-form-urlencoded");
-
-            httpPost.setEntity(reqEntity);
-
-            System.out.println("executing request" + httpPost.getRequestLine());
-
-            HttpResponse response = httpclient.execute(httpPost);
-
-            try {
-                HttpEntity entity = response.getEntity();
-                System.out.println(response.getStatusLine());
-                if (entity != null) {
-
-                    // 从request中取得输入流
-                    InputStream inputStream = entity.getContent();
-                    // 读取输入流
-                    SAXReader reader = new SAXReader();
-                    Document document = reader.read(inputStream);
-                    // 得到xml根元素
-                    Element root = document.getRootElement();
-                    // 得到根元素的所有子节点
-                    @SuppressWarnings("unchecked")
-                    List<Element> elementList = root.elements();
-                    logger.error("微信退款信息");
-                    // 遍历所有子节点
-                    for (Element e : elementList) {
-                        map.put(e.getName(), e.getText());
-
-                        System.out.println(e.getName() + ":" + e.getText());
-                        logger.error(e.getName() + ":" + e.getText());
-                    }
-                    // 释放资源
-                    inputStream.close();
-                    inputStream = null;
-
-                }
-                EntityUtils.consume(entity);
-            } catch (Exception e) {
-                e.printStackTrace();
-                logger.error("微信退款异常", e);
-            }
-
-        } catch (Exception e) {
-            e.printStackTrace();
-            logger.error("微信退款异常", e);
-        }
-
-        return map;
-    }
-
-}

+ 0 - 289
src/main/java/com/izouma/awesomeadmin/util/WeixinUtil.java

@@ -1,289 +0,0 @@
-package com.izouma.awesomeadmin.util;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
-import java.net.InetAddress;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.Arrays;
-import java.util.Formatter;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Random;
-import java.util.UUID;
-
-import org.apache.http.HttpResponse;
-import org.apache.http.ParseException;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.util.EntityUtils;
-import org.apache.log4j.Logger;
-import org.json.JSONObject;
-import org.springframework.stereotype.Service;
-
-import com.izouma.awesomeadmin.dto.wx.TemplateMessage;
-import com.google.gson.Gson;
-
-/**
- * 微信工具类
- * @author
- *
- */
-@Service
-public class WeixinUtil {
-
-    private final static String SEND_TEMPLAYE_MESSAGE_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
-
-    private static Logger       logger                    = Logger.getLogger(WeixinUtil.class);
-
-
-    public static Map <String, String> sign(String jsapi_ticket, String url) {
-
-        Map <String, String> ret = new HashMap <String, String>();
-        String nonce_str = create_nonce_str();
-        String timestamp = create_timestamp();
-        String string1;
-        String signature = "";
-
-        //注意这里参数名必须全部小写,且必须有序
-        string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonce_str + "&timestamp=" + timestamp + "&url=" + url;
-        System.out.println(string1);
-
-        try {
-            MessageDigest crypt = MessageDigest.getInstance("SHA-1");
-            crypt.reset();
-            crypt.update(string1.getBytes("UTF-8"));
-            signature = byteToHex(crypt.digest());
-        } catch (NoSuchAlgorithmException e) {
-            e.printStackTrace();
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        }
-
-        ret.put("url", url);
-        ret.put("jsapi_ticket", jsapi_ticket);
-        ret.put("nonceStr", nonce_str);
-        ret.put("timestamp", timestamp);
-        ret.put("signature", signature);
-
-        return ret;
-    }
-
-
-    public static JSONObject loadJSON(String url) {
-
-        StringBuilder json = new StringBuilder();
-        try {
-            URL oracle = new URL(url);
-            URLConnection yc = oracle.openConnection();
-            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream(), "UTF-8"));
-            String inputLine = null;
-            while ((inputLine = in.readLine()) != null) {
-                json.append(inputLine);
-            }
-            in.close();
-        } catch (MalformedURLException e) {
-        } catch (IOException e) {
-        }
-        return new JSONObject(json.toString());
-    }
-
-
-    /**
-     * 用SHA1算法生成安全签名
-     * @param token 票据
-     * @param timestamp 时间戳
-     * @param nonce 随机字符串
-     * @param encrypt 密文
-     * @return 安全签名
-     * @throws NoSuchAlgorithmException 
-     * @throws AesException 
-     */
-    public String getSHA1(String token, String timestamp, String nonce) throws NoSuchAlgorithmException {
-
-        String[] array = new String[] {token, timestamp, nonce};
-        StringBuffer sb = new StringBuffer();
-        // 字符串排序
-        Arrays.sort(array);
-        for (int i = 0; i < 3; i++) {
-            sb.append(array[i]);
-        }
-        String str = sb.toString();
-        // SHA1签名生成
-        MessageDigest md = MessageDigest.getInstance("SHA-1");
-        md.update(str.getBytes());
-        byte[] digest = md.digest();
-
-        StringBuffer hexstr = new StringBuffer();
-        String shaHex = "";
-        for (int i = 0; i < digest.length; i++) {
-            shaHex = Integer.toHexString(digest[i] & 0xFF);
-            if (shaHex.length() < 2) {
-                hexstr.append(0);
-            }
-            hexstr.append(shaHex);
-        }
-        return hexstr.toString();
-    }
-
-
-    public static String byteToHex(final byte[] hash) {
-
-        Formatter formatter = new Formatter();
-        for (byte b : hash) {
-            formatter.format("%02x", b);
-        }
-        String result = formatter.toString();
-        formatter.close();
-        return result;
-    }
-
-
-    public static String create_nonce_str() {
-
-        return UUID.randomUUID().toString().replace("-", "");
-    }
-
-
-    public static String create_timestamp() {
-
-        return Long.toString(System.currentTimeMillis() / 1000);
-    }
-
-
-    public static String create_out_trade_no() {
-
-        return Long.toString(System.currentTimeMillis() / 1000) + getRandomNum(10);
-
-    }
-
-
-    private static String byteArrayToHexString(byte b[]) {
-
-        StringBuffer resultSb = new StringBuffer();
-        for (int i = 0; i < b.length; i++)
-            resultSb.append(byteToHexString(b[i]));
-
-        return resultSb.toString();
-    }
-
-
-    private static String byteToHexString(byte b) {
-
-        int n = b;
-        if (n < 0)
-            n += 256;
-        int d1 = n / 16;
-        int d2 = n % 16;
-        return hexDigits[d1] + hexDigits[d2];
-    }
-
-
-    public static String MD5Encode(String origin, String charsetname) {
-
-        String resultString = null;
-        try {
-            resultString = new String(origin);
-            MessageDigest md = MessageDigest.getInstance("MD5");
-            if (charsetname == null || "".equals(charsetname))
-                resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
-            else
-                resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));
-        } catch (Exception exception) {
-        }
-        return resultString;
-    }
-
-    private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
-
-
-    /**
-     * 
-     * <p>获取ip地址。</p>
-     *
-     * @return
-     */
-    @SuppressWarnings("static-access")
-    public static String getHostAdderss() {
-
-        InetAddress ia = null;
-        try {
-            ia = ia.getLocalHost();
-
-            String localname = ia.getHostName();
-            String localip = ia.getHostAddress();
-            System.out.println("本机名称是:" + localname);
-            System.out.println("本机的ip是 :" + localip);
-            return localip;
-        } catch (Exception e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-
-    /** 
-     * 生成特定位数的随机数字 
-     * @param length 
-     * @return 
-     */
-    public static String getRandomNum(int length) {
-
-        String val = "";
-        Random random = new Random();
-        for (int i = 0; i < length; i++) {
-            val += String.valueOf(random.nextInt(10));
-        }
-        return val;
-    }
-
-
-    /**
-     * POST请求
-     * 
-     * @param url
-     * @param outStr
-     * @return
-     * @throws ParseException
-     * @throws IOException
-     */
-    public static JSONObject doPostStr(String url, String outStr) throws ParseException, IOException {
-
-        DefaultHttpClient client = new DefaultHttpClient();
-        HttpPost httpost = new HttpPost(url);
-        JSONObject jsonObject = null;
-        httpost.setEntity(new StringEntity(outStr, "UTF-8"));
-        HttpResponse response = client.execute(httpost);
-        String result = EntityUtils.toString(response.getEntity(), "UTF-8");
-        jsonObject = new JSONObject(result);
-        return jsonObject;
-    }
-
-
-    public static void sendTemplateMessage(String accessToken, TemplateMessage templateMessage) throws ParseException, IOException {
-
-        String jsonString = new Gson().toJson(templateMessage).toString();
-        String requestUrl = SEND_TEMPLAYE_MESSAGE_URL.replace("ACCESS_TOKEN", accessToken);
-
-        JSONObject result = WeixinUtil.doPostStr(requestUrl, jsonString);
-
-        logger.info("jsonObject=" + result);
-        if (null != result) {
-            int errorCode = result.getInt("errcode");
-            if (0 == errorCode) {
-                logger.info("模板消息发送成功");
-            } else {
-                String errorMsg = result.getString("errmsg");
-                logger.info("模板消息发送失败,错误是 " + errorCode + ",错误信息是" + errorMsg);
-            }
-        }
-    }
-
-}

+ 0 - 8
src/main/java/com/izouma/awesomeadmin/vuforia/VuforiaUtil.java

@@ -1,15 +1,11 @@
 package com.izouma.awesomeadmin.vuforia;
 
-import com.google.gson.Gson;
-import com.izouma.awesomeadmin.dto.wx.TemplateMessage;
 import com.izouma.awesomeadmin.model.VuforiaTarget;
 import com.izouma.awesomeadmin.util.MbappUtil;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.http.HttpResponse;
-import org.apache.http.ParseException;
-import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.methods.*;
 import org.apache.http.entity.StringEntity;
@@ -18,8 +14,6 @@ import org.apache.http.impl.cookie.DateUtils;
 import org.apache.http.message.BasicHeader;
 import org.apache.http.util.EntityUtils;
 import org.apache.log4j.Logger;
-import org.apache.xmlbeans.impl.xb.xsdschema.Public;
-import org.json.JSONException;
 import org.json.JSONObject;
 import org.springframework.stereotype.Service;
 
@@ -27,8 +21,6 @@ import javax.imageio.ImageIO;
 import java.awt.image.BufferedImage;
 import java.io.*;
 import java.net.*;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
 import java.util.*;
 
 /**

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/AimGroupInfoController.java

@@ -6,7 +6,6 @@ import com.alibaba.fastjson.JSON;
 import com.izouma.awesomeadmin.model.UserUpdateLog;
 import com.izouma.awesomeadmin.service.UserUpdateLogService;
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/AimPlaceContentChildController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 2
src/main/java/com/izouma/awesomeadmin/web/AimPlaceContentController.java

@@ -3,8 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
-import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/AimPlaceInfoController.java

@@ -6,7 +6,6 @@ import com.alibaba.fastjson.JSON;
 import com.izouma.awesomeadmin.model.UserUpdateLog;
 import com.izouma.awesomeadmin.service.UserUpdateLogService;
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 2
src/main/java/com/izouma/awesomeadmin/web/AimPlacePositionController.java

@@ -3,8 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
-import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/AimPlacePositionLevelController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/AimTemplateAimController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/AimTemplateArController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/AimTemplateController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/AlipayTempController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/ArContentChildController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 2
src/main/java/com/izouma/awesomeadmin/web/ArContentController.java

@@ -3,8 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
-import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/ArContentTypeController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/AreaInfoController.java

@@ -6,7 +6,6 @@ import com.alibaba.fastjson.JSON;
 import com.izouma.awesomeadmin.model.UserUpdateLog;
 import com.izouma.awesomeadmin.service.UserUpdateLogService;
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/AreaShowPointController.java

@@ -6,7 +6,6 @@ import com.alibaba.fastjson.JSON;
 import com.izouma.awesomeadmin.model.UserUpdateLog;
 import com.izouma.awesomeadmin.service.UserUpdateLogService;
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/DataSourceInfoController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/DepartInfoController.java

@@ -6,7 +6,6 @@ import java.util.Map;
 
 import com.izouma.awesomeadmin.dto.TreeNode;
 import com.izouma.awesomeadmin.model.UserInfo;
-import com.izouma.awesomeadmin.service.UserInfoService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/GenCodeController.java

@@ -2,7 +2,6 @@ package com.izouma.awesomeadmin.web;
 
 import java.io.File;
 import java.util.*;
-import java.util.regex.Pattern;
 
 import com.google.gson.Gson;
 import com.izouma.awesomeadmin.model.DataSourceInfo;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/GuideTipImageController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 26 - 20
src/main/java/com/izouma/awesomeadmin/web/LandMarkController.java

@@ -9,7 +9,6 @@ import com.izouma.awesomeadmin.model.UserUpdateLog;
 import com.izouma.awesomeadmin.service.LandMarkVersionService;
 import com.izouma.awesomeadmin.service.UserUpdateLogService;
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -84,39 +83,46 @@ public class LandMarkController {
     @ResponseBody
     public Result mapInfo(LandMark record) {
 
-        LandMark data;
-
-        Gson gson = new Gson();
 
         if (record.getId() != null) {
-            LandMarkVersion landMarkVersion = new LandMarkVersion();
-            landMarkVersion.setLandMarkId(record.getId());
+            LandMark data = getLandMark(record);
 
-            landMarkVersion = landMarkVersionService.getLandMarkVersion(landMarkVersion);//获取版本信息
+            return new Result(true, data);
 
-            if (landMarkVersion != null) {//如果存在
-                data = gson.fromJson(landMarkVersion.getJsonText(), LandMark.class);
-            } else {
+        }
 
-                data = landMarkService.getLandMarkMapInfo(record);
-                String jsonText = gson.toJson(data);
+        return new Result(false, "无查询结果");
 
-                LandMarkVersion newVersion = new LandMarkVersion();
+    }
 
-                newVersion.setLandMarkId(record.getId());
-                newVersion.setJsonText(jsonText);
 
-                landMarkVersionService.createLandMarkVersion(newVersion);
+    private LandMark getLandMark(LandMark record) {
 
+        Gson gson = new Gson();
 
-            }
+        LandMark data;
+        LandMarkVersion landMarkVersion = new LandMarkVersion();
+        landMarkVersion.setLandMarkId(record.getId());
 
-            return new Result(true, data);
+        landMarkVersion = landMarkVersionService.getLandMarkVersion(landMarkVersion);//获取版本信息
 
-        }
+        if (landMarkVersion != null) {//如果存在
+            data = gson.fromJson(landMarkVersion.getJsonText(), LandMark.class);
+        } else {
+
+            data = landMarkService.getLandMarkMapInfo(record);
+            String jsonText = gson.toJson(data);
+
+            LandMarkVersion newVersion = new LandMarkVersion();
+
+            newVersion.setLandMarkId(record.getId());
+            newVersion.setJsonText(jsonText);
+
+            landMarkVersionService.createLandMarkVersion(newVersion);
 
-        return new Result(false, "无查询结果");
 
+        }
+        return data;
     }
 
 

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/LandMarkLevelController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/LandMarkVersionController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 2
src/main/java/com/izouma/awesomeadmin/web/LandmarkTypeController.java

@@ -3,8 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
-import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/MarketAimPlaceController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/MarketCodeLogController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/MarketMapBoxController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/MarketMapBoxDesController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/MarketMapController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 181 - 0
src/main/java/com/izouma/awesomeadmin/web/MemberCoinController.java

@@ -0,0 +1,181 @@
+package com.izouma.awesomeadmin.web;
+
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.MemberCoin;
+import com.izouma.awesomeadmin.service.MemberCoinService;
+import com.izouma.awesomeadmin.util.ExportExcelUtil;
+import org.apache.shiro.authz.annotation.RequiresAuthentication;
+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.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * controller类
+ */
+@Controller
+@RequestMapping("/memberCoin")
+@RequiresAuthentication
+public class MemberCoinController {
+
+    @Autowired
+    private MemberCoinService memberCoinService;
+
+    /**
+     * <p>获取全部记录。</p>
+     */
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(MemberCoin record) {
+        List<MemberCoin> pp = memberCoinService.getMemberCoinList(record);
+        return new Result(true, pp);
+    }
+
+    /**
+     * <p>根据Id。</p>
+     */
+    @RequestMapping(value = "/getMemberCoin", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getMemberCoin(@RequestParam(required = false, value = "id") String id) {
+        MemberCoin data = memberCoinService.getMemberCoinById(id);
+        return new Result(true, data);
+    }
+
+    /**
+     * <p>根据条件获取。</p>
+     */
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(MemberCoin record) {
+        MemberCoin data = memberCoinService.getMemberCoin(record);
+        return new Result(true, data);
+    }
+
+
+    /**
+     * <p>分页查询。</p>
+     */
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, MemberCoin record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<MemberCoin> pp = memberCoinService.getMemberCoinByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+
+    /**
+     * <p>保存。</p>
+     */
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(MemberCoin record) {
+        boolean num = memberCoinService.createMemberCoin(record);
+        if (num) {
+            return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+     * <p>更新信息。</p>
+     */
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateMemberCoin(MemberCoin record) {
+        boolean num = memberCoinService.updateMemberCoin(record);
+        if (num) {
+            return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+     * <p>删除。</p>
+     */
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteMemberCoin(@RequestParam(required = true, value = "id") String id) {
+
+        boolean num = memberCoinService.deleteMemberCoin(id);
+        if (num) {
+            return new Result(true, "删除成功");
+        }
+        return new Result(false, "删除异常");
+    }
+
+    /**
+     * 导出Excel
+     *
+     * @param request
+     * @param response
+     * @param record
+     * @throws Exception
+     */
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
+    @ResponseBody
+    public void exportExcel(HttpServletRequest request, HttpServletResponse response, MemberCoin record) throws Exception {
+
+        List<MemberCoin> memberCoins = memberCoinService.getMemberCoinList(record);
+
+
+        String sheetName = "member_coin";
+        String titleName = "用户余额数据表";
+        String fileName = "用户余额表";
+        int columnNumber = 12;
+        int[] columnWidth = {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20};
+        String[] columnName = {"", "删除标识", "更新时间", "更新人", "创建时间", "创建人", "用户", "订单", "变动金额", "剩余金额", "类型", "备注"};
+        String[][] dataList = new String[memberCoins.size()][12];
+
+        for (int i = 0; i < memberCoins.size(); i++) {
+
+            dataList[i][0] = String.valueOf(memberCoins.get(i).getId());
+            dataList[i][1] = String.valueOf(memberCoins.get(i).getDelFlag());
+            dataList[i][2] = String.valueOf(memberCoins.get(i).getUpdateTime());
+            dataList[i][3] = String.valueOf(memberCoins.get(i).getUpdateUser());
+            dataList[i][4] = String.valueOf(memberCoins.get(i).getCreateTime());
+            dataList[i][5] = String.valueOf(memberCoins.get(i).getCreateUser());
+            dataList[i][6] = String.valueOf(memberCoins.get(i).getUserId());
+            dataList[i][7] = String.valueOf(memberCoins.get(i).getOrderId());
+            dataList[i][8] = String.valueOf(memberCoins.get(i).getMoney());
+            dataList[i][9] = String.valueOf(memberCoins.get(i).getBalance());
+            dataList[i][10] = String.valueOf(memberCoins.get(i).getTypeFlag());
+            dataList[i][11] = String.valueOf(memberCoins.get(i).getRemark());
+        }
+
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                columnNumber, columnWidth, columnName, dataList, response);
+
+
+    }
+
+    @RequestMapping(value = "/song", method = RequestMethod.POST)
+    @ResponseBody
+    public Result song(MemberCoin memberCoin) {
+
+        int num = memberCoinService.song(memberCoin);
+        if (num > 0) {
+            return new Result(true, "赠送成功");
+        }
+        return new Result(false, "赠送异常");
+
+    }
+
+}
+

+ 167 - 0
src/main/java/com/izouma/awesomeadmin/web/MemberPointController.java

@@ -0,0 +1,167 @@
+package com.izouma.awesomeadmin.web;
+
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.MemberPoint;
+import com.izouma.awesomeadmin.service.MemberPointService;
+import com.izouma.awesomeadmin.util.ExportExcelUtil;
+import org.apache.shiro.authz.annotation.RequiresAuthentication;
+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.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+*  controller类
+*/
+@Controller
+@RequestMapping("/memberPoint")
+@RequiresAuthentication
+public class MemberPointController {
+
+    @Autowired
+    private MemberPointService memberPointService;
+
+    /**
+    * <p>获取全部记录。</p>
+    */
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(MemberPoint record) {
+        List<MemberPoint> pp = memberPointService.getMemberPointList(record);
+        return new Result(true, pp);
+    }
+
+    /**
+    * <p>根据Id。</p>
+    */
+    @RequestMapping(value = "/getMemberPoint", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getMemberPoint(@RequestParam(required = false, value = "id") String id) {
+        MemberPoint data = memberPointService.getMemberPointById(id);
+        return new Result(true, data);
+    }
+
+    /**
+    * <p>根据条件获取。</p>
+    */
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(MemberPoint record) {
+        MemberPoint data = memberPointService.getMemberPoint(record);
+        return new Result(true, data);
+    }
+
+
+    /**
+    * <p>分页查询。</p>
+    */
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, MemberPoint record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<MemberPoint> pp =memberPointService.getMemberPointByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+
+    /**
+    * <p>保存。</p>
+    */
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(MemberPoint record) {
+        boolean num = memberPointService.createMemberPoint(record);
+        if (num) {
+        return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+    * <p>更新信息。</p>
+    */
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateMemberPoint(MemberPoint record) {
+        boolean num = memberPointService.updateMemberPoint(record);
+        if (num) {
+        return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+    * <p>删除。</p>
+    */
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteMemberPoint(@RequestParam(required = true, value = "id") String id) {
+
+        boolean num = memberPointService.deleteMemberPoint(id);
+        if (num) {
+        return new Result(true, "删除成功");
+        }
+        return new Result(false, "删除异常");
+    }
+
+    /**
+    * 导出Excel
+    * @param request
+    * @param response
+    * @param record
+    * @throws Exception
+    */
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
+    @ResponseBody
+    public void exportExcel(HttpServletRequest request, HttpServletResponse response, MemberPoint record) throws Exception {
+
+    List<MemberPoint> memberPoints = memberPointService.getMemberPointList(record);
+
+
+        String sheetName = "member_point";
+        String titleName = "用户积分数据表";
+        String fileName = "用户积分表";
+        int columnNumber = 12;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "用户" ,   "订单" ,   "变化数量" ,   "剩余金额" ,   "类型" ,   "备注"  };
+        String[][] dataList = new String[memberPoints.size()][12];
+
+        for (int i = 0; i < memberPoints.size(); i++) {
+
+                        dataList[i][0] = String.valueOf(memberPoints.get(i).getId());
+                        dataList[i][1] = String.valueOf(memberPoints.get(i).getDelFlag());
+                        dataList[i][2] = String.valueOf(memberPoints.get(i).getUpdateTime());
+                        dataList[i][3] = String.valueOf(memberPoints.get(i).getUpdateUser());
+                        dataList[i][4] = String.valueOf(memberPoints.get(i).getCreateTime());
+                        dataList[i][5] = String.valueOf(memberPoints.get(i).getCreateUser());
+                        dataList[i][6] = String.valueOf(memberPoints.get(i).getUserId());
+                        dataList[i][7] = String.valueOf(memberPoints.get(i).getOrderId());
+                        dataList[i][8] = String.valueOf(memberPoints.get(i).getMoney());
+                        dataList[i][9] = String.valueOf(memberPoints.get(i).getBalance());
+                        dataList[i][10] = String.valueOf(memberPoints.get(i).getTypeFlag());
+                        dataList[i][11] = String.valueOf(memberPoints.get(i).getRemark());
+                    }
+
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+        columnNumber, columnWidth, columnName, dataList, response);
+
+
+        }
+    }
+

+ 61 - 47
src/main/java/com/izouma/awesomeadmin/web/NavigationPackageController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -18,8 +17,8 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 /**
-*  controller类
-*/
+ * controller类
+ */
 @Controller
 @RequestMapping("/navigationPackage")
 public class NavigationPackageController {
@@ -28,8 +27,8 @@ public class NavigationPackageController {
     private NavigationPackageService navigationPackageService;
 
     /**
-    * <p>获取全部记录。</p>
-    */
+     * <p>获取全部记录。</p>
+     */
     @RequiresAuthentication
     @RequestMapping(value = "/all", method = RequestMethod.GET)
     @ResponseBody
@@ -39,8 +38,8 @@ public class NavigationPackageController {
     }
 
     /**
-    * <p>根据Id。</p>
-    */
+     * <p>根据Id。</p>
+     */
     @RequestMapping(value = "/getNavigationPackage", method = RequestMethod.GET)
     @ResponseBody
     public Result getNavigationPackage(@RequestParam(required = false, value = "id") String id) {
@@ -49,8 +48,8 @@ public class NavigationPackageController {
     }
 
     /**
-    * <p>根据条件获取。</p>
-    */
+     * <p>根据条件获取。</p>
+     */
     @RequestMapping(value = "/getOne", method = RequestMethod.GET)
     @ResponseBody
     public Result getOne(NavigationPackage record) {
@@ -60,14 +59,14 @@ public class NavigationPackageController {
 
 
     /**
-    * <p>分页查询。</p>
-    */
+     * <p>分页查询。</p>
+     */
     @RequestMapping(value = "/page", method = RequestMethod.GET)
     @ResponseBody
     public Result page(Page page, NavigationPackage record) {
         Map<String, Object> result = new HashMap<>();
 
-        List<NavigationPackage> pp =navigationPackageService.getNavigationPackageByPage(page, record);
+        List<NavigationPackage> pp = navigationPackageService.getNavigationPackageByPage(page, record);
 
         result.put(AppConstant.PAGE, page);
         result.put("pp", pp);
@@ -76,90 +75,105 @@ public class NavigationPackageController {
 
 
     /**
-    * <p>保存。</p>
-    */
+     * <p>保存。</p>
+     */
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     @ResponseBody
     public Result save(NavigationPackage record) {
         boolean num = navigationPackageService.createNavigationPackage(record);
         if (num) {
-        return new Result(true, record.getId());
+            return new Result(true, record.getId());
         }
         return new Result(false, "保存异常");
     }
 
     /**
-    * <p>更新信息。</p>
-    */
+     * <p>更新信息。</p>
+     */
     @RequestMapping(value = "/update", method = RequestMethod.POST)
     @ResponseBody
     public Result updateNavigationPackage(NavigationPackage record) {
         boolean num = navigationPackageService.updateNavigationPackage(record);
         if (num) {
-        return new Result(true, "保存成功");
+            return new Result(true, "保存成功");
         }
         return new Result(false, "保存异常");
     }
 
     /**
-    * <p>删除。</p>
-    */
+     * <p>删除。</p>
+     */
     @RequestMapping(value = "/del", method = RequestMethod.POST)
     @ResponseBody
     public Result deleteNavigationPackage(NavigationPackage record) {
 
         boolean num = navigationPackageService.deleteNavigationPackage(record);
         if (num) {
-        return new Result(true, "删除成功");
+            return new Result(true, "删除成功");
         }
         return new Result(false, "删除异常");
     }
 
     /**
-    * 导出Excel
-    * @param request
-    * @param response
-    * @param record
-    * @throws Exception
-    */
+     * 导出Excel
+     *
+     * @param request
+     * @param response
+     * @param record
+     * @throws Exception
+     */
     @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
     @ResponseBody
     public void exportExcel(HttpServletRequest request, HttpServletResponse response, NavigationPackage record) throws Exception {
 
-    List<NavigationPackage> navigationPackages = navigationPackageService.getNavigationPackageList(record);
+        List<NavigationPackage> navigationPackages = navigationPackageService.getNavigationPackageList(record);
 
 
         String sheetName = "navigation_package";
         String titleName = "导航包数据表";
         String fileName = "导航包表";
         int columnNumber = 14;
-        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
-        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "地标ID" ,   "标题" ,   "描述" ,   "是否付费" ,   "价格" ,   "点标" ,   "排序" ,   "是否上线"  };
+        int[] columnWidth = {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20};
+        String[] columnName = {"ID", "删除标识", "更新时间", "更新人", "创建时间", "创建人", "地标ID", "标题", "描述", "是否付费", "价格", "点标", "排序", "是否上线"};
         String[][] dataList = new String[navigationPackages.size()][14];
 
         for (int i = 0; i < navigationPackages.size(); i++) {
 
-                        dataList[i][0] = String.valueOf(navigationPackages.get(i).getId());
-                        dataList[i][1] = String.valueOf(navigationPackages.get(i).getDelFlag());
-                        dataList[i][2] = String.valueOf(navigationPackages.get(i).getUpdateTime());
-                        dataList[i][3] = String.valueOf(navigationPackages.get(i).getUpdateUser());
-                        dataList[i][4] = String.valueOf(navigationPackages.get(i).getCreateTime());
-                        dataList[i][5] = String.valueOf(navigationPackages.get(i).getCreateUser());
-                        dataList[i][6] = String.valueOf(navigationPackages.get(i).getLandMarkId());
-                        dataList[i][7] = String.valueOf(navigationPackages.get(i).getName());
-                        dataList[i][8] = String.valueOf(navigationPackages.get(i).getRemark());
-                        dataList[i][9] = String.valueOf(navigationPackages.get(i).getPayFlag());
-                        dataList[i][10] = String.valueOf(navigationPackages.get(i).getPrice());
-                        dataList[i][11] = String.valueOf(navigationPackages.get(i).getAimPlace());
-                        dataList[i][12] = String.valueOf(navigationPackages.get(i).getRank());
-                        dataList[i][13] = String.valueOf(navigationPackages.get(i).getShelfFlag());
-                    }
+            dataList[i][0] = String.valueOf(navigationPackages.get(i).getId());
+            dataList[i][1] = String.valueOf(navigationPackages.get(i).getDelFlag());
+            dataList[i][2] = String.valueOf(navigationPackages.get(i).getUpdateTime());
+            dataList[i][3] = String.valueOf(navigationPackages.get(i).getUpdateUser());
+            dataList[i][4] = String.valueOf(navigationPackages.get(i).getCreateTime());
+            dataList[i][5] = String.valueOf(navigationPackages.get(i).getCreateUser());
+            dataList[i][6] = String.valueOf(navigationPackages.get(i).getLandMarkId());
+            dataList[i][7] = String.valueOf(navigationPackages.get(i).getName());
+            dataList[i][8] = String.valueOf(navigationPackages.get(i).getRemark());
+            dataList[i][9] = String.valueOf(navigationPackages.get(i).getPayFlag());
+            dataList[i][10] = String.valueOf(navigationPackages.get(i).getPrice());
+            dataList[i][11] = String.valueOf(navigationPackages.get(i).getAimPlace());
+            dataList[i][12] = String.valueOf(navigationPackages.get(i).getRank());
+            dataList[i][13] = String.valueOf(navigationPackages.get(i).getShelfFlag());
+        }
 
 
         ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
-        columnNumber, columnWidth, columnName, dataList, response);
+                columnNumber, columnWidth, columnName, dataList, response);
 
 
-        }
     }
 
+
+    /**
+     * 获取已经购买的导游包
+     * @param record
+     * @return
+     */
+    @RequestMapping(value = "/bought", method = RequestMethod.GET)
+    @ResponseBody
+    public Result bought(NavigationPackage record) {
+        NavigationPackage data = navigationPackageService.getBoughtNavigationPackage(record);
+        return new Result(true, data);
+    }
+
+}
+

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/RongCloudController.java

@@ -12,7 +12,6 @@ import io.rong.models.CheckOnlineResult;
 import io.rong.models.SMSSendCodeResult;
 import io.rong.models.SMSVerifyCodeResult;
 import io.rong.models.TokenResult;
-import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/SysMenuController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import com.izouma.awesomeadmin.constant.AppConstant;
 import com.izouma.awesomeadmin.dto.Page;
 import com.izouma.awesomeadmin.dto.Result;
-import com.izouma.awesomeadmin.dto.TreeNode;
 import com.izouma.awesomeadmin.model.SysMenu;
 import com.izouma.awesomeadmin.service.SysMenuService;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;

+ 0 - 3
src/main/java/com/izouma/awesomeadmin/web/SystemController.java

@@ -6,7 +6,6 @@ import com.izouma.awesomeadmin.util.Base64;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.methods.HttpPost;
-import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.stereotype.Controller;
@@ -14,8 +13,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import java.net.URLEncoder;
-
 @Controller
 @RequestMapping("/system")
 @RequiresAuthentication

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/ThingInfoController.java

@@ -6,7 +6,6 @@ import com.alibaba.fastjson.JSON;
 import com.izouma.awesomeadmin.model.UserUpdateLog;
 import com.izouma.awesomeadmin.service.UserUpdateLogService;
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/UserFileInfoController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/UserInfoController.java

@@ -4,7 +4,6 @@ import com.izouma.awesomeadmin.constant.AppConstant;
 import com.izouma.awesomeadmin.dto.Page;
 import com.izouma.awesomeadmin.dto.Result;
 import com.izouma.awesomeadmin.model.UserInfo;
-import com.izouma.awesomeadmin.service.DepartInfoService;
 import com.izouma.awesomeadmin.service.UserInfoService;
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
 import org.apache.commons.lang.StringUtils;

+ 62 - 56
src/main/java/com/izouma/awesomeadmin/web/UserOrderController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -18,8 +17,8 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 /**
-*  controller类
-*/
+ * controller类
+ */
 @Controller
 @RequestMapping("/userOrder")
 public class UserOrderController {
@@ -28,8 +27,8 @@ public class UserOrderController {
     private UserOrderService userOrderService;
 
     /**
-    * <p>获取全部记录。</p>
-    */
+     * <p>获取全部记录。</p>
+     */
     @RequiresAuthentication
     @RequestMapping(value = "/all", method = RequestMethod.GET)
     @ResponseBody
@@ -39,8 +38,8 @@ public class UserOrderController {
     }
 
     /**
-    * <p>根据Id。</p>
-    */
+     * <p>根据Id。</p>
+     */
     @RequestMapping(value = "/getUserOrder", method = RequestMethod.GET)
     @ResponseBody
     public Result getUserOrder(@RequestParam(required = false, value = "id") String id) {
@@ -49,8 +48,8 @@ public class UserOrderController {
     }
 
     /**
-    * <p>根据条件获取。</p>
-    */
+     * <p>根据条件获取。</p>
+     */
     @RequestMapping(value = "/getOne", method = RequestMethod.GET)
     @ResponseBody
     public Result getOne(UserOrder record) {
@@ -60,14 +59,14 @@ public class UserOrderController {
 
 
     /**
-    * <p>分页查询。</p>
-    */
+     * <p>分页查询。</p>
+     */
     @RequestMapping(value = "/page", method = RequestMethod.GET)
     @ResponseBody
     public Result page(Page page, UserOrder record) {
         Map<String, Object> result = new HashMap<>();
 
-        List<UserOrder> pp =userOrderService.getUserOrderByPage(page, record);
+        List<UserOrder> pp = userOrderService.getUserOrderByPage(page, record);
 
         result.put(AppConstant.PAGE, page);
         result.put("pp", pp);
@@ -76,95 +75,102 @@ public class UserOrderController {
 
 
     /**
-    * <p>保存。</p>
-    */
+     * <p>保存。</p>
+     */
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     @ResponseBody
     public Result save(UserOrder record) {
-        boolean num = userOrderService.createUserOrder(record);
-        if (num) {
-        return new Result(true, record.getId());
-        }
-        return new Result(false, "保存异常");
+        return userOrderService.createUserOrder(record);
     }
 
     /**
-    * <p>更新信息。</p>
-    */
+     * <p>更新信息。</p>
+     */
     @RequestMapping(value = "/update", method = RequestMethod.POST)
     @ResponseBody
     public Result updateUserOrder(UserOrder record) {
         boolean num = userOrderService.updateUserOrder(record);
         if (num) {
-        return new Result(true, "保存成功");
+            return new Result(true, "保存成功");
         }
         return new Result(false, "保存异常");
     }
 
     /**
-    * <p>删除。</p>
-    */
+     * <p>删除。</p>
+     */
     @RequestMapping(value = "/del", method = RequestMethod.POST)
     @ResponseBody
     public Result deleteUserOrder(UserOrder record) {
 
         boolean num = userOrderService.deleteUserOrder(record);
         if (num) {
-        return new Result(true, "删除成功");
+            return new Result(true, "删除成功");
         }
         return new Result(false, "删除异常");
     }
 
     /**
-    * 导出Excel
-    * @param request
-    * @param response
-    * @param record
-    * @throws Exception
-    */
+     * 导出Excel
+     *
+     * @param request
+     * @param response
+     * @param record
+     * @throws Exception
+     */
     @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
     @ResponseBody
     public void exportExcel(HttpServletRequest request, HttpServletResponse response, UserOrder record) throws Exception {
 
-    List<UserOrder> userOrders = userOrderService.getUserOrderList(record);
+        List<UserOrder> userOrders = userOrderService.getUserOrderList(record);
 
 
         String sheetName = "user_order";
         String titleName = "用户订单数据表";
         String fileName = "用户订单表";
         int columnNumber = 19;
-        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
-        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "用户ID" ,   "地标ID" ,   "导游包ID" ,   "状态" ,   "支付时间" ,   "支付方式" ,   "备注" ,   "显示标识" ,   "金额" ,   "现金" ,   "积分" ,   "成交" ,   "推广码"  };
+        int[] columnWidth = {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20};
+        String[] columnName = {"ID", "删除标识", "更新时间", "更新人", "创建时间", "创建人", "用户ID", "地标ID", "导游包ID", "状态", "支付时间", "支付方式", "备注", "显示标识", "金额", "现金", "积分", "成交", "推广码"};
         String[][] dataList = new String[userOrders.size()][19];
 
         for (int i = 0; i < userOrders.size(); i++) {
 
-                        dataList[i][0] = String.valueOf(userOrders.get(i).getId());
-                        dataList[i][1] = String.valueOf(userOrders.get(i).getDelFlag());
-                        dataList[i][2] = String.valueOf(userOrders.get(i).getUpdateTime());
-                        dataList[i][3] = String.valueOf(userOrders.get(i).getUpdateUser());
-                        dataList[i][4] = String.valueOf(userOrders.get(i).getCreateTime());
-                        dataList[i][5] = String.valueOf(userOrders.get(i).getCreateUser());
-                        dataList[i][6] = String.valueOf(userOrders.get(i).getUserId());
-                        dataList[i][7] = String.valueOf(userOrders.get(i).getLankMarkId());
-                        dataList[i][8] = String.valueOf(userOrders.get(i).getPackageId());
-                        dataList[i][9] = String.valueOf(userOrders.get(i).getStatusFlag());
-                        dataList[i][10] = String.valueOf(userOrders.get(i).getPayTime());
-                        dataList[i][11] = String.valueOf(userOrders.get(i).getPayMode());
-                        dataList[i][12] = String.valueOf(userOrders.get(i).getRemark());
-                        dataList[i][13] = String.valueOf(userOrders.get(i).getShowFlag());
-                        dataList[i][14] = String.valueOf(userOrders.get(i).getTotlePrice());
-                        dataList[i][15] = String.valueOf(userOrders.get(i).getCash());
-                        dataList[i][16] = String.valueOf(userOrders.get(i).getPoint());
-                        dataList[i][17] = String.valueOf(userOrders.get(i).getDealPrice());
-                        dataList[i][18] = String.valueOf(userOrders.get(i).getMarketCode());
-                    }
+            dataList[i][0] = String.valueOf(userOrders.get(i).getId());
+            dataList[i][1] = String.valueOf(userOrders.get(i).getDelFlag());
+            dataList[i][2] = String.valueOf(userOrders.get(i).getUpdateTime());
+            dataList[i][3] = String.valueOf(userOrders.get(i).getUpdateUser());
+            dataList[i][4] = String.valueOf(userOrders.get(i).getCreateTime());
+            dataList[i][5] = String.valueOf(userOrders.get(i).getCreateUser());
+            dataList[i][6] = String.valueOf(userOrders.get(i).getUserId());
+            dataList[i][7] = String.valueOf(userOrders.get(i).getLankMarkId());
+            dataList[i][8] = String.valueOf(userOrders.get(i).getPackageId());
+            dataList[i][9] = String.valueOf(userOrders.get(i).getStatusFlag());
+            dataList[i][10] = String.valueOf(userOrders.get(i).getPayTime());
+            dataList[i][11] = String.valueOf(userOrders.get(i).getPayMode());
+            dataList[i][12] = String.valueOf(userOrders.get(i).getRemark());
+            dataList[i][13] = String.valueOf(userOrders.get(i).getShowFlag());
+            dataList[i][14] = String.valueOf(userOrders.get(i).getTotlePrice());
+            dataList[i][15] = String.valueOf(userOrders.get(i).getCash());
+            dataList[i][16] = String.valueOf(userOrders.get(i).getPoint());
+            dataList[i][17] = String.valueOf(userOrders.get(i).getDealPrice());
+            dataList[i][18] = String.valueOf(userOrders.get(i).getMarketCode());
+        }
 
 
         ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
-        columnNumber, columnWidth, columnName, dataList, response);
+                columnNumber, columnWidth, columnName, dataList, response);
 
 
-        }
     }
 
+
+    @RequestMapping(value = "/pay", method = RequestMethod.POST)
+    @ResponseBody
+    public Result pay(@RequestParam(required = true, value = "orderId") String orderId, @RequestParam(required = true, value = "coin") double coin) {
+
+        return userOrderService.payOrder(orderId, coin, 0, 0, AppConstant.PayMode.COIN);
+
+    }
+
+}
+

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/UserUpdateLogController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/VuforiaImageGroupController.java

@@ -6,7 +6,6 @@ import com.alibaba.fastjson.JSON;
 import com.izouma.awesomeadmin.model.UserUpdateLog;
 import com.izouma.awesomeadmin.service.UserUpdateLogService;
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/VuforiaImageInfoController.java

@@ -7,7 +7,6 @@ import com.izouma.awesomeadmin.model.UserUpdateLog;
 import com.izouma.awesomeadmin.model.VuforiaTarget;
 import com.izouma.awesomeadmin.service.UserUpdateLogService;
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 0 - 1
src/main/java/com/izouma/awesomeadmin/web/VuforiaImageTypeController.java

@@ -3,7 +3,6 @@ package com.izouma.awesomeadmin.web;
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

+ 3 - 3
src/main/java/com/izouma/awesomeadmin/dao/AccessTokenMapper.java → src/main/java/com/izouma/weixin/dao/AccessTokenMapper.java

@@ -1,12 +1,12 @@
-package com.izouma.awesomeadmin.dao;
+package com.izouma.weixin.dao;
 
 import java.util.Map;
 
 import org.springframework.stereotype.Repository;
 
-import com.izouma.awesomeadmin.model.AccessToken;
+import com.izouma.weixin.model.AccessToken;
 
-@Repository("com.izouma.awesomeadmin.dao.AccessTokenMapper")
+@Repository("com.izouma.weixin.dao.AccessTokenMapper")
 public interface AccessTokenMapper {
 
     /**

+ 2 - 2
src/main/java/com/izouma/awesomeadmin/dao/AccessTokenMapper.xml → src/main/java/com/izouma/weixin/dao/AccessTokenMapper.xml

@@ -1,9 +1,9 @@
 <?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.izouma.awesomeadmin.dao.AccessTokenMapper">
+<mapper namespace="com.izouma.weixin.dao.AccessTokenMapper">
 	<!-- 目的:为 Dao接口方法提供sql语句配置 -->
-	<select id="getAccessToken" resultType="com.izouma.awesomeadmin.model.AccessToken" >
+	<select id="getAccessToken" resultType="com.izouma.weixin.model.AccessToken" >
 		SELECT
 			*
 		FROM

+ 4 - 4
src/main/java/com/izouma/awesomeadmin/dao/WxpayTempMapper.java → src/main/java/com/izouma/weixin/dao/WxpayTempMapper.java

@@ -1,15 +1,15 @@
-package com.izouma.awesomeadmin.dao;
+package com.izouma.weixin.dao;
 
 import java.util.*;
-import com.izouma.awesomeadmin.datasource.DataSource;
+
 import org.springframework.stereotype.Repository;
-import com.izouma.awesomeadmin.model.WxpayTemp;
+import com.izouma.weixin.model.WxpayTemp;
 
 
 /**
 *  Dao接口
 */
-@Repository("com.zoumaframe.dao.WxpayTempMapper")
+@Repository("com.izouma.weixin.dao.WxpayTempMapper")
 public interface WxpayTempMapper{
 
     int deleteByPrimaryKey(Integer id);

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

@@ -0,0 +1,587 @@
+<?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.izouma.weixin.dao.WxpayTempMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.weixin.model.WxpayTemp">
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="order_id" property="orderId" jdbcType="VARCHAR"/>
+        <result column="user_id" property="userId" jdbcType="VARCHAR"/>
+        <result column="total_amount" property="totalAmount" jdbcType="DECIMAL"/>
+        <result column="out_trade_no" property="outTradeNo" jdbcType="VARCHAR"/>
+        <result column="transaction_id" property="transactionId" jdbcType="VARCHAR"/>
+        <result column="type_flag" property="typeFlag" jdbcType="INTEGER"/>
+        <result column="out_refund_no" property="outRefundNo" jdbcType="VARCHAR"/>
+        <result column="refund_amount" property="refundAmount" jdbcType="DECIMAL"/>
+        <result column="coin" property="coin" jdbcType="DECIMAL"/>
+        <result column="point" property="point" jdbcType="DECIMAL"/>
+        <result column="cash" property="cash" jdbcType="DECIMAL"/>
+        <result column="open_id" property="openId" jdbcType="VARCHAR"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <trim suffixOverrides=",">
+            id,
+
+            del_flag,
+
+            update_time,
+
+            update_user,
+
+            create_time,
+
+            create_user,
+
+            order_id,
+
+            user_id,
+
+            total_amount,
+
+            out_trade_no,
+
+            transaction_id,
+
+            type_flag,
+
+            out_refund_no,
+
+            refund_amount,
+
+            coin,
+
+            point,
+
+            cash,
+
+            open_id,
+
+        </trim>
+    </sql>
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        select
+        <include refid="Base_Column_List"/>
+        from wxpay_temp
+        where id = #{id,jdbcType=INTEGER}
+    </select>
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        delete from wxpay_temp
+        where id = #{id,jdbcType=INTEGER}
+    </delete>
+    <insert id="insertSelective" parameterType="com.izouma.weixin.model.WxpayTemp" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into wxpay_temp
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id!= null">
+                id,
+            </if>
+            <if test="delFlag!= null">
+                del_flag,
+            </if>
+            <if test="updateTime!= null">
+                update_time,
+            </if>
+            <if test="updateUser!= null">
+                update_user,
+            </if>
+            <if test="createTime!= null">
+                create_time,
+            </if>
+            <if test="createUser!= null">
+                create_user,
+            </if>
+            <if test="orderId!= null">
+                order_id,
+            </if>
+            <if test="userId!= null">
+                user_id,
+            </if>
+            <if test="totalAmount!= null">
+                total_amount,
+            </if>
+            <if test="outTradeNo!= null">
+                out_trade_no,
+            </if>
+            <if test="transactionId!= null">
+                transaction_id,
+            </if>
+            <if test="typeFlag!= null">
+                type_flag,
+            </if>
+            <if test="outRefundNo!= null">
+                out_refund_no,
+            </if>
+            <if test="refundAmount!= null">
+                refund_amount,
+            </if>
+            <if test="coin!= null">
+                coin,
+            </if>
+            <if test="point!= null">
+                point,
+            </if>
+            <if test="cash!= null">
+                cash,
+            </if>
+            <if test="openId!= null">
+                open_id,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">
+                #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="orderId != null">
+                #{orderId,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null">
+                #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="totalAmount != null">
+                #{totalAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="outTradeNo != null">
+                #{outTradeNo,jdbcType=VARCHAR},
+            </if>
+            <if test="transactionId != null">
+                #{transactionId,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                #{typeFlag,jdbcType=INTEGER},
+            </if>
+            <if test="outRefundNo != null">
+                #{outRefundNo,jdbcType=VARCHAR},
+            </if>
+            <if test="refundAmount != null">
+                #{refundAmount,jdbcType=DECIMAL},
+            </if>
+            <if test="coin != null">
+                #{coin,jdbcType=DECIMAL},
+            </if>
+            <if test="point != null">
+                #{point,jdbcType=DECIMAL},
+            </if>
+            <if test="cash != null">
+                #{cash,jdbcType=DECIMAL},
+            </if>
+            <if test="openId != null">
+                #{openId,jdbcType=VARCHAR},
+            </if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.weixin.model.WxpayTemp">
+        update wxpay_temp
+        <set>
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time= #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                update_user= #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                create_user= #{createUser,jdbcType=VARCHAR},
+            </if>
+            <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>
+        </set>
+        where id = #{id,jdbcType=INTEGER}
+    </update>
+    <select id="queryWxpayTempByPage" parameterType="java.util.Map" resultType="com.izouma.weixin.model.WxpayTemp">
+        select
+        <include refid="Base_Column_List"/>
+        from wxpay_temp
+        <where>
+            and del_flag = 'N'
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                and id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                and del_flag = #{record.delFlag}
+            </if>
+            <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
+                and update_time = #{record.updateTime}
+            </if>
+            <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
+                and update_user = #{record.updateUser}
+            </if>
+            <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
+                and create_time = #{record.createTime}
+            </if>
+            <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
+                and create_user = #{record.createUser}
+            </if>
+            <if test="record.orderId != null and !&quot;&quot;.equals(record.orderId)">
+                and order_id = #{record.orderId}
+            </if>
+            <if test="record.userId != null and !&quot;&quot;.equals(record.userId)">
+                and user_id = #{record.userId}
+            </if>
+            <if test="record.totalAmount != null and !&quot;&quot;.equals(record.totalAmount)">
+                and total_amount = #{record.totalAmount}
+            </if>
+            <if test="record.outTradeNo != null and !&quot;&quot;.equals(record.outTradeNo)">
+                and out_trade_no = #{record.outTradeNo}
+            </if>
+            <if test="record.transactionId != null and !&quot;&quot;.equals(record.transactionId)">
+                and transaction_id = #{record.transactionId}
+            </if>
+            <if test="record.typeFlag != null and !&quot;&quot;.equals(record.typeFlag)">
+                and type_flag = #{record.typeFlag}
+            </if>
+            <if test="record.outRefundNo != null and !&quot;&quot;.equals(record.outRefundNo)">
+                and out_refund_no = #{record.outRefundNo}
+            </if>
+            <if test="record.refundAmount != null and !&quot;&quot;.equals(record.refundAmount)">
+                and refund_amount = #{record.refundAmount}
+            </if>
+            <if test="record.coin != null and !&quot;&quot;.equals(record.coin)">
+                and coin = #{record.coin}
+            </if>
+            <if test="record.point != null and !&quot;&quot;.equals(record.point)">
+                and point = #{record.point}
+            </if>
+            <if test="record.cash != null and !&quot;&quot;.equals(record.cash)">
+                and cash = #{record.cash}
+            </if>
+            <if test="record.openId != null and !&quot;&quot;.equals(record.openId)">
+                and open_id = #{record.openId}
+            </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},'%')
+                    OR user_id LIKE concat('%',#{record.searchKey},'%')
+                    OR total_amount LIKE concat('%',#{record.searchKey},'%')
+                    OR out_trade_no LIKE concat('%',#{record.searchKey},'%')
+                    OR transaction_id LIKE concat('%',#{record.searchKey},'%')
+                    OR type_flag LIKE concat('%',#{record.searchKey},'%')
+                    OR out_refund_no LIKE concat('%',#{record.searchKey},'%')
+                    OR refund_amount LIKE concat('%',#{record.searchKey},'%')
+                    OR coin LIKE concat('%',#{record.searchKey},'%')
+                    OR point LIKE concat('%',#{record.searchKey},'%')
+                    OR cash LIKE concat('%',#{record.searchKey},'%')
+                    OR open_id LIKE concat('%',#{record.searchKey},'%')
+                </trim>
+            </if>
+
+            <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
+                <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+
+                            </foreach>
+                        </otherwise>
+                    </choose>
+
+
+                </foreach>
+
+
+            </if>
+
+        </where>
+        order by
+
+        <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
+
+
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id desc
+    </select>
+    <select id="queryAllWxpayTemp" parameterType="java.util.Map" resultType="com.izouma.weixin.model.WxpayTemp">
+        select
+        <include refid="Base_Column_List"/>
+        from wxpay_temp
+        <where>
+            and del_flag = 'N'
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                and id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                and del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                and update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                and update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                and create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                and create_user = #{createUser}
+            </if>
+            <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>
+            <if test="totalAmount != null and !&quot;&quot;.equals(totalAmount)">
+                and total_amount = #{totalAmount}
+            </if>
+            <if test="outTradeNo != null and !&quot;&quot;.equals(outTradeNo)">
+                and out_trade_no = #{outTradeNo}
+            </if>
+            <if test="transactionId != null and !&quot;&quot;.equals(transactionId)">
+                and transaction_id = #{transactionId}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                and type_flag = #{typeFlag}
+            </if>
+            <if test="outRefundNo != null and !&quot;&quot;.equals(outRefundNo)">
+                and out_refund_no = #{outRefundNo}
+            </if>
+            <if test="refundAmount != null and !&quot;&quot;.equals(refundAmount)">
+                and refund_amount = #{refundAmount}
+            </if>
+            <if test="coin != null and !&quot;&quot;.equals(coin)">
+                and coin = #{coin}
+            </if>
+            <if test="point != null and !&quot;&quot;.equals(point)">
+                and point = #{point}
+            </if>
+            <if test="cash != null and !&quot;&quot;.equals(cash)">
+                and cash = #{cash}
+            </if>
+            <if test="openId != null and !&quot;&quot;.equals(openId)">
+                and open_id = #{openId}
+            </if>
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR order_id LIKE concat('%',#{searchKey},'%')
+                    OR user_id LIKE concat('%',#{searchKey},'%')
+                    OR total_amount LIKE concat('%',#{searchKey},'%')
+                    OR out_trade_no LIKE concat('%',#{searchKey},'%')
+                    OR transaction_id LIKE concat('%',#{searchKey},'%')
+                    OR type_flag LIKE concat('%',#{searchKey},'%')
+                    OR out_refund_no LIKE concat('%',#{searchKey},'%')
+                    OR refund_amount LIKE concat('%',#{searchKey},'%')
+                    OR coin LIKE concat('%',#{searchKey},'%')
+                    OR point LIKE concat('%',#{searchKey},'%')
+                    OR cash LIKE concat('%',#{searchKey},'%')
+                    OR open_id LIKE concat('%',#{searchKey},'%')
+                </trim>
+            </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+
+                            </foreach>
+                        </otherwise>
+                    </choose>
+
+
+                </foreach>
+
+
+            </if>
+        </where>
+        order by
+
+        <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
+
+
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+
+        id desc
+    </select>
+    <select id="queryWxpayTemp" parameterType="java.util.Map" resultType="com.izouma.weixin.model.WxpayTemp">
+        select
+        <include refid="Base_Column_List"/>
+        from wxpay_temp
+        <where>
+            and del_flag = 'N'
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                and id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                and del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                and update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                and update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                and create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                and create_user = #{createUser}
+            </if>
+            <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>
+            <if test="totalAmount != null and !&quot;&quot;.equals(totalAmount)">
+                and total_amount = #{totalAmount}
+            </if>
+            <if test="outTradeNo != null and !&quot;&quot;.equals(outTradeNo)">
+                and out_trade_no = #{outTradeNo}
+            </if>
+            <if test="transactionId != null and !&quot;&quot;.equals(transactionId)">
+                and transaction_id = #{transactionId}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                and type_flag = #{typeFlag}
+            </if>
+            <if test="outRefundNo != null and !&quot;&quot;.equals(outRefundNo)">
+                and out_refund_no = #{outRefundNo}
+            </if>
+            <if test="refundAmount != null and !&quot;&quot;.equals(refundAmount)">
+                and refund_amount = #{refundAmount}
+            </if>
+            <if test="coin != null and !&quot;&quot;.equals(coin)">
+                and coin = #{coin}
+            </if>
+            <if test="point != null and !&quot;&quot;.equals(point)">
+                and point = #{point}
+            </if>
+            <if test="cash != null and !&quot;&quot;.equals(cash)">
+                and cash = #{cash}
+            </if>
+            <if test="openId != null and !&quot;&quot;.equals(openId)">
+                and open_id = #{openId}
+            </if>
+
+        </where>
+        LIMIT 1
+    </select>
+    <update id="delete">
+        UPDATE wxpay_temp SET del_flag = 'Y'
+        <where>
+            AND id = #{id}
+        </where>
+    </update>
+    <select id="query" parameterType="java.util.Map" resultType="com.izouma.weixin.model.WxpayTemp">
+        select
+        <include refid="Base_Column_List"/>
+        from wxpay_temp
+        <where>
+            and del_flag = 'N'
+        </where>
+        order by id desc
+    </select>
+</mapper>
+

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/WxPayRefundData.java → src/main/java/com/izouma/weixin/dto/WxPayRefundData.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto;
+package com.izouma.weixin.dto;
 
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/WxPaySendData.java → src/main/java/com/izouma/weixin/dto/WxPaySendData.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto;
+package com.izouma.weixin.dto;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/wx/AccessToken.java → src/main/java/com/izouma/weixin/dto/wx/AccessToken.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto.wx;
+package com.izouma.weixin.dto.wx;
 
 public class AccessToken {
 

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/wx/BaseMessage.java → src/main/java/com/izouma/weixin/dto/wx/BaseMessage.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto.wx;
+package com.izouma.weixin.dto.wx;
 
 /**
  * ��Ϣ����

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/wx/CustomServiceMessage.java → src/main/java/com/izouma/weixin/dto/wx/CustomServiceMessage.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto.wx;
+package com.izouma.weixin.dto.wx;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonInclude;

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/wx/Image.java → src/main/java/com/izouma/weixin/dto/wx/Image.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto.wx;
+package com.izouma.weixin.dto.wx;
 
 public class Image {
 

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/wx/ImageMessage.java → src/main/java/com/izouma/weixin/dto/wx/ImageMessage.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto.wx;
+package com.izouma.weixin.dto.wx;
 
 public class ImageMessage extends BaseMessage {
 

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/wx/Music.java → src/main/java/com/izouma/weixin/dto/wx/Music.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto.wx;
+package com.izouma.weixin.dto.wx;
 
 public class Music {
 

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/wx/MusicMessage.java → src/main/java/com/izouma/weixin/dto/wx/MusicMessage.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto.wx;
+package com.izouma.weixin.dto.wx;
 
 public class MusicMessage extends BaseMessage {
 

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/wx/News.java → src/main/java/com/izouma/weixin/dto/wx/News.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto.wx;
+package com.izouma.weixin.dto.wx;
 
 public class News {
 

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/wx/NewsMessage.java → src/main/java/com/izouma/weixin/dto/wx/NewsMessage.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto.wx;
+package com.izouma.weixin.dto.wx;
 
 import java.util.List;
 

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/wx/TemplateData.java → src/main/java/com/izouma/weixin/dto/wx/TemplateData.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto.wx;
+package com.izouma.weixin.dto.wx;
 
 public class TemplateData {
 

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/wx/TemplateMessage.java → src/main/java/com/izouma/weixin/dto/wx/TemplateMessage.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto.wx;
+package com.izouma.weixin.dto.wx;
 
 import java.util.Map;
 

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dto/wx/TextMessage.java → src/main/java/com/izouma/weixin/dto/wx/TextMessage.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.dto.wx;
+package com.izouma.weixin.dto.wx;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonInclude;

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/model/AccessToken.java → src/main/java/com/izouma/weixin/model/AccessToken.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.model;
+package com.izouma.weixin.model;
 
 import java.io.Serializable;
 

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/model/WxpayTemp.java → src/main/java/com/izouma/weixin/model/WxpayTemp.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.model;
+package com.izouma.weixin.model;
 
 import java.math.BigDecimal;
 import java.util.*;

+ 4 - 5
src/main/java/com/izouma/awesomeadmin/service/WeiXinService.java → src/main/java/com/izouma/weixin/service/WeiXinService.java

@@ -1,11 +1,10 @@
-package com.izouma.awesomeadmin.service;
+package com.izouma.weixin.service;
 
 
-import com.izouma.awesomeadmin.dao.AccessTokenMapper;
-import com.izouma.awesomeadmin.model.AccessToken;
+import com.izouma.weixin.dao.AccessTokenMapper;
+import com.izouma.weixin.model.AccessToken;
 import com.izouma.awesomeadmin.util.PropertiesFileLoader;
-import com.izouma.awesomeadmin.util.WeixinUtil;
-
+import com.izouma.weixin.util.WeixinUtil;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;

+ 2 - 2
src/main/java/com/izouma/awesomeadmin/service/WxpayTempService.java → src/main/java/com/izouma/weixin/service/WxpayTempService.java

@@ -1,8 +1,8 @@
-package com.izouma.awesomeadmin.service;
+package com.izouma.weixin.service;
 
 import java.util.*;
 import com.izouma.awesomeadmin.dto.Page;
-import com.izouma.awesomeadmin.model.WxpayTemp;
+import com.izouma.weixin.model.WxpayTemp;
 
 
 /**

+ 4 - 4
src/main/java/com/izouma/awesomeadmin/service/impl/WxpayTempServiceImpl.java → src/main/java/com/izouma/weixin/service/impl/WxpayTempServiceImpl.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.service.impl;
+package com.izouma.weixin.service.impl;
 
 import java.util.*;
 import org.apache.log4j.Logger;
@@ -6,9 +6,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.izouma.awesomeadmin.constant.AppConstant;
 import com.izouma.awesomeadmin.dto.Page;
-import com.izouma.awesomeadmin.model.WxpayTemp;
-import com.izouma.awesomeadmin.service.WxpayTempService;
-import com.izouma.awesomeadmin.dao.WxpayTempMapper;
+import com.izouma.weixin.model.WxpayTemp;
+import com.izouma.weixin.service.WxpayTempService;
+import com.izouma.weixin.dao.WxpayTempMapper;
 
 /**
 *  service接口实现类

+ 8 - 8
src/main/java/com/izouma/awesomeadmin/util/MessageUtil.java → src/main/java/com/izouma/weixin/util/MessageUtil.java

@@ -1,4 +1,4 @@
-package com.izouma.awesomeadmin.util;
+package com.izouma.weixin.util;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -14,13 +14,13 @@ import org.dom4j.DocumentException;
 import org.dom4j.Element;
 import org.dom4j.io.SAXReader;
 
-import com.izouma.awesomeadmin.dto.wx.Image;
-import com.izouma.awesomeadmin.dto.wx.ImageMessage;
-import com.izouma.awesomeadmin.dto.wx.Music;
-import com.izouma.awesomeadmin.dto.wx.MusicMessage;
-import com.izouma.awesomeadmin.dto.wx.News;
-import com.izouma.awesomeadmin.dto.wx.NewsMessage;
-import com.izouma.awesomeadmin.dto.wx.TextMessage;
+import com.izouma.weixin.dto.wx.Image;
+import com.izouma.weixin.dto.wx.ImageMessage;
+import com.izouma.weixin.dto.wx.Music;
+import com.izouma.weixin.dto.wx.MusicMessage;
+import com.izouma.weixin.dto.wx.News;
+import com.izouma.weixin.dto.wx.NewsMessage;
+import com.izouma.weixin.dto.wx.TextMessage;
 import com.thoughtworks.xstream.XStream;
 
 /**

+ 228 - 0
src/main/java/com/izouma/weixin/util/WeixinUtil.java

@@ -0,0 +1,228 @@
+package com.izouma.weixin.util;
+
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.weixin.dto.WxPaySendData;
+import com.izouma.weixin.model.WxpayTemp;
+import com.izouma.weixin.wxpay.MyConfig;
+import com.izouma.weixin.wxpay.WXPay;
+import com.izouma.weixin.wxpay.WXPayUtil;
+import org.apache.log4j.Logger;
+import org.json.JSONObject;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.*;
+import java.math.BigDecimal;
+import java.net.InetAddress;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.*;
+
+
+/**
+ * 微信工具类
+ *
+ * @author
+ */
+@Service
+public class WeixinUtil {
+
+
+    private static Logger logger = Logger.getLogger(WeixinUtil.class);
+
+
+    /**
+     * 统一下单
+     *
+     * @param data
+     * @return
+     */
+    public static Map<String, String> unifiedOrder(WxPaySendData data) {
+
+        Map<String, String> map = new HashMap<String, String>();
+        try {
+            Map<String, String> parameters = new HashMap<String, String>();
+            parameters.put("device_info", data.getDevice_info());
+            parameters.put("body", data.getBody());
+            parameters.put("out_trade_no", data.getOut_trade_no());
+            parameters.put("notify_url", data.getNotify_url());
+            parameters.put("total_fee", String.valueOf(data.getTotal_fee()));
+            parameters.put("trade_type", data.getTrade_type());
+            parameters.put("spbill_create_ip", data.getSpbill_create_ip());
+            if (data.getOpenid() != null) {
+
+                parameters.put("openid", data.getOpenid());
+            }
+            parameters.put("attach", data.getAttach());
+
+
+            MyConfig config = new MyConfig();
+            WXPay wxpay = new WXPay(config);
+
+            map = wxpay.unifiedOrder(parameters);
+            //System.out.println(map);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error("微信统一下单异常:", e);
+        }
+
+        return map;
+    }
+
+    public static Map<String, String> orderQuery(String outTradeNo) {
+
+        Map<String, String> map = new HashMap<String, String>();
+
+
+        Map<String, String> data = new HashMap<String, String>();
+        data.put("out_trade_no", outTradeNo);
+
+        try {
+            MyConfig config = new MyConfig();
+            WXPay wxpay = new WXPay(config);
+
+            map = wxpay.orderQuery(data);
+            //System.out.println(map);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error("微信查询订单异常:", e);
+        }
+
+        return map;
+    }
+
+
+
+    public static String create_timestamp() {
+
+        return Long.toString(System.currentTimeMillis() / 1000);
+    }
+
+    public static String create_nonce_str() {
+
+        return UUID.randomUUID().toString().replace("-", "");
+    }
+
+
+    public static JSONObject loadJSON(String url) {
+
+        StringBuilder json = new StringBuilder();
+        try {
+            URL oracle = new URL(url);
+            URLConnection yc = oracle.openConnection();
+            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream(), "UTF-8"));
+            String inputLine = null;
+            while ((inputLine = in.readLine()) != null) {
+                json.append(inputLine);
+            }
+            in.close();
+        } catch (MalformedURLException e) {
+        } catch (IOException e) {
+        }
+        return new JSONObject(json.toString());
+    }
+
+    public static Map<String, String> sign(String jsapi_ticket, String url) {
+
+        Map<String, String> ret = new HashMap<String, String>();
+        String nonce_str = create_nonce_str();
+        String timestamp = create_timestamp();
+        String string1;
+        String signature = "";
+
+        //注意这里参数名必须全部小写,且必须有序
+        string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonce_str + "&timestamp=" + timestamp + "&url=" + url;
+        System.out.println(string1);
+
+        try {
+            MessageDigest crypt = MessageDigest.getInstance("SHA-1");
+            crypt.reset();
+            crypt.update(string1.getBytes("UTF-8"));
+            signature = byteToHex(crypt.digest());
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        ret.put("url", url);
+        ret.put("jsapi_ticket", jsapi_ticket);
+        ret.put("nonceStr", nonce_str);
+        ret.put("timestamp", timestamp);
+        ret.put("signature", signature);
+
+        return ret;
+    }
+
+    /**
+     * 生成订单号
+     *
+     * @return
+     */
+    public static String create_out_trade_no() {
+
+        return Long.toString(System.currentTimeMillis() / 1000) + getRandomNum(10);
+
+    }
+
+    /**
+     * 生成特定位数的随机数字
+     *
+     * @param length
+     * @return
+     */
+    public static String getRandomNum(int length) {
+
+        String val = "";
+        Random random = new Random();
+        for (int i = 0; i < length; i++) {
+            val += String.valueOf(random.nextInt(10));
+        }
+        return val;
+    }
+
+
+    public static String byteToHex(final byte[] hash) {
+
+        Formatter formatter = new Formatter();
+        for (byte b : hash) {
+            formatter.format("%02x", b);
+        }
+        String result = formatter.toString();
+        formatter.close();
+        return result;
+    }
+
+
+    /**
+     * <p>获取ip地址。</p>
+     *
+     * @return
+     */
+    public static String getHostAdderss() {
+
+        InetAddress ia = null;
+        try {
+            ia = ia.getLocalHost();
+
+            String localname = ia.getHostName();
+            String localip = ia.getHostAddress();
+            System.out.println("本机名称是:" + localname);
+            System.out.println("本机的ip是 :" + localip);
+            return localip;
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+}

+ 399 - 0
src/main/java/com/izouma/weixin/web/WeiXinController.java

@@ -0,0 +1,399 @@
+package com.izouma.weixin.web;
+
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.model.MemberCoin;
+import com.izouma.awesomeadmin.model.UserInfo;
+import com.izouma.awesomeadmin.service.MemberCoinService;
+import com.izouma.awesomeadmin.service.UserInfoService;
+import com.izouma.awesomeadmin.service.UserOrderService;
+import com.izouma.awesomeadmin.shiro.WechatToken;
+import com.izouma.awesomeadmin.util.Base64;
+import com.izouma.awesomeadmin.util.MbappUtil;
+import com.izouma.awesomeadmin.util.PropertiesFileLoader;
+import com.izouma.weixin.dao.WxpayTempMapper;
+import com.izouma.weixin.dto.WxPaySendData;
+import com.izouma.weixin.model.WxpayTemp;
+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.WXPayUtil;
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.subject.Subject;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
+
+@Controller
+@RequestMapping("/wx")
+public class WeiXinController {
+
+    private static Logger logger = Logger.getLogger(WeiXinController.class);
+
+
+    @Autowired
+    private WeiXinService weiXinService;
+
+    @Autowired
+    private UserOrderService userOrderService;
+
+    @Autowired
+    private UserInfoService userInfoService;
+
+    @Autowired
+    private MemberCoinService memberCoinService;
+
+    @Autowired
+    private WxpayTempMapper wxpayTempMapper;
+
+    @RequestMapping(value = "/auth", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelAndView auth(@RequestParam("redirectUri") String redirectUri) {
+        if (StringUtils.isNotEmpty(redirectUri)) {
+            redirectUri = Base64.getBase64(redirectUri);
+        } else {
+            redirectUri = "";
+        }
+        String wxRedirectUri = PropertiesFileLoader.getProperties("host")
+                + "/wx/doAuth/" + redirectUri;
+        return new ModelAndView("redirect:https://open.weixin.qq.com/connect/oauth2/authorize?appid="
+                + PropertiesFileLoader.getProperties("weixinappid")
+                + "&redirect_uri=" + wxRedirectUri
+                + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect");
+    }
+
+    @RequestMapping("/doAuth/{redirectUri}")
+    public ModelAndView doAuth(@RequestParam("code") String code, @PathVariable("redirectUri") String redirectUri) {
+        ModelAndView modelAndView;
+        if (StringUtils.isNotEmpty(redirectUri)) {
+            redirectUri = Base64.getFromBase64(redirectUri);
+            modelAndView = new ModelAndView("redirect:" + redirectUri);
+        } else {
+            redirectUri = "";
+            modelAndView = new ModelAndView("redirect:/");
+        }
+        Subject subject = SecurityUtils.getSubject();
+        WechatToken wechatToken = new WechatToken(code);
+        try {
+            subject.login(wechatToken);
+        } catch (Exception e) {
+            logger.error("doAuth", e);
+            modelAndView = new ModelAndView("redirect:" + PropertiesFileLoader.getProperties("host")
+                    + "/wx/auth?redirectUri=" + redirectUri);
+        }
+        return modelAndView;
+    }
+
+    @RequestMapping(value = "/getSignature", method = RequestMethod.GET)
+    @ResponseBody
+    public Map<String, String> getSignature(HttpServletRequest request) {
+
+        String shareUrl = request.getParameter("shareUrl");
+        return weiXinService.getSignature(shareUrl);
+
+    }
+
+
+    @RequestMapping(value = "/notify", method = RequestMethod.POST)
+    @ResponseBody
+    public ModelAndView notify(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);
+
+                WxpayTemp wxpayTemp = new WxpayTemp();
+                wxpayTemp.setOrderId(attachJson.getString("orderId"));
+                wxpayTemp.setCoin(BigDecimal.valueOf(attachJson.getDouble("coin")));
+                wxpayTemp.setPoint(BigDecimal.valueOf(attachJson.getDouble("point")));
+                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);
+
+                userOrderService.payOrder(attachJson.getString("orderId"), attachJson.getDouble("coin"),
+                        attachJson.getDouble("point"), attachJson.getDouble("cash"), AppConstant.PayMode.WEI_XIN);
+            }
+        } catch (Exception e) {
+            logger.error("微信支付回调异常", e);
+        }
+
+
+        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 + "");
+
+
+                /**
+                 * 余额
+                 */
+                double moneyCoin = userInfo.getMoneyCoin();
+                UserInfo updateUser = new UserInfo();
+                updateUser.setId(userId);
+                updateUser.setMoneyCoin(moneyCoin + money);
+                userInfoService.updateUserInfo(updateUser);
+
+
+                MemberCoin memberCoin = new MemberCoin();
+                memberCoin.setCreateUser("微信充值");
+                memberCoin.setUserId(userId + "");
+                memberCoin.setMoney(String.valueOf(money));
+                memberCoin.setBalance(String.valueOf(moneyCoin + money));
+                memberCoin.setTypeFlag(AppConstant.CoinType.RECHARGE);
+                memberCoin.setRemark("微信充值," + money);
+                memberCoinService.createMemberCoin(memberCoin);
+
+
+                WxpayTemp wxpayTemp = new WxpayTemp();
+
+                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);
+        }
+
+        return null;
+    }
+
+
+    @RequestMapping(value = "/recharge", method = RequestMethod.POST)
+    @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>();
+
+        try {
+
+            MyConfig config = new MyConfig();
+
+            int total = money;
+
+            //测试为一分
+            //total = 1;
+
+            JSONObject attach = new JSONObject();
+            attach.put("userId", userId);
+            attach.put("money", money);
+
+            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 = userOrderService.calculatedPrice(orderId, coin, point);
+            int total = 0;
+
+
+            total = (int) (cash * 100);
+
+            //测试为一分
+            //total = 1;
+
+            JSONObject attach = new JSONObject();
+            attach.put("orderId", orderId);
+            attach.put("coin", coin);
+            attach.put("point", point);
+            attach.put("cash", cash);
+            attach.put("total", total);
+
+            WxPaySendData data = new WxPaySendData();
+            data.setDevice_info(AppConstant.DEVICE_INFO);
+            data.setBody("商品");
+            data.setOut_trade_no(MbappUtil.create_out_trade_no());
+            data.setNotify_url(PropertiesFileLoader.getProperties("weixin_notify_url"));
+            data.setTotal_fee(total);
+            data.setTrade_type(AppConstant.TRADE_TYPE_APP);
+            //data.setSpbill_create_ip("117.62.182.63");
+            data.setSpbill_create_ip(MbappUtil.getHostAdderss());
+            //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;
+
+    }
+
+
+    /**
+     * 解析微信支付回调结果
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    public Map<String, String> notifyMap(HttpServletRequest request, HttpServletResponse response) {
+
+        logger.info("payOrder:支付订单");
+        Map<String, String> notifyMap = new HashMap<>();
+        try {
+
+            System.out.print("微信支付回调数据开始");
+            String inputLine;
+            String notityXml = "";
+            String resXml = "";
+
+            try {
+                while ((inputLine = request.getReader().readLine()) != null) {
+                    notityXml += inputLine;
+                }
+                request.getReader().close();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+
+            System.out.println("接收到的报文:" + notityXml);
+
+            MyConfig config = new MyConfig();
+            WXPay wxpay = new WXPay(config);
+
+            notifyMap = WXPayUtil.xmlToMap(notityXml);
+
+            if (wxpay.isPayResultNotifySignatureValid(notifyMap)) {
+                // 签名正确
+                // 进行处理。
+                // 注意特殊情况:订单已经退款,但收到了支付结果成功的通知,不应把商户侧订单状态从退款改成支付成功
+                if ("SUCCESS".equals(notifyMap.get("result_code"))) {
+                    //支付成功
+                    resXml = "<xml>" + "<return_code><![CDATA[SUCCESS]]></return_code>" + "<return_msg><![CDATA[OK]]></return_msg>" + "</xml> ";
+                } else {
+                    resXml = "<xml>" + "<return_code><![CDATA[FAIL]]></return_code>" + "<return_msg><![CDATA[报文为空]]></return_msg>" + "</xml> ";
+                }
+                System.out.println("微信支付回调数据结束");
+
+                HttpSession seesion = request.getSession();
+                seesion.setAttribute("notify", "微信支付回调");
+                try {
+                    BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
+                    out.write(resXml.getBytes());
+                    out.flush();
+                    out.close();
+                } catch (IOException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+
+            } else {
+                // 签名错误,如果数据里没有sign字段,也认为是签名错误
+                return null;
+            }
+
+
+        } catch (Exception e) {
+            logger.error("payOrder:支付订单异常", e);
+        }
+        return notifyMap;
+
+    }
+
+
+}

+ 3 - 4
src/main/java/com/izouma/awesomeadmin/web/WxpayTempController.java → src/main/java/com/izouma/weixin/web/WxpayTempController.java

@@ -1,9 +1,8 @@
-package com.izouma.awesomeadmin.web;
+package com.izouma.weixin.web;
 
 import java.util.*;
 
 import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresAuthentication;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -11,8 +10,8 @@ import org.springframework.web.bind.annotation.*;
 import com.izouma.awesomeadmin.constant.AppConstant;
 import com.izouma.awesomeadmin.dto.Page;
 import com.izouma.awesomeadmin.dto.Result;
-import com.izouma.awesomeadmin.model.WxpayTemp;
-import com.izouma.awesomeadmin.service.WxpayTempService;
+import com.izouma.weixin.model.WxpayTemp;
+import com.izouma.weixin.service.WxpayTempService;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

+ 45 - 0
src/main/java/com/izouma/weixin/wxpay/IWXPayDomain.java

@@ -0,0 +1,45 @@
+package com.izouma.weixin.wxpay;
+
+/**
+ * 域名管理,实现主备域名自动切换
+ */
+public abstract interface IWXPayDomain {
+    /**
+     * 上报域名网络状况
+     *
+     * @param domain            域名。 比如:api.mch.weixin.qq.com
+     * @param elapsedTimeMillis 耗时
+     * @param ex                网络请求中出现的异常。
+     *                          null表示没有异常
+     *                          ConnectTimeoutException,表示建立网络连接异常
+     *                          UnknownHostException, 表示dns解析异常
+     */
+    abstract void report(final String domain, long elapsedTimeMillis, final Exception ex);
+
+    /**
+     * 获取域名
+     *
+     * @param config 配置
+     * @return 域名
+     */
+    abstract DomainInfo getDomain(final WXPayConfig config);
+
+    static class DomainInfo {
+        public String domain;       //域名
+        public boolean primaryDomain;     //该域名是否为主域名。例如:api.mch.weixin.qq.com为主域名
+
+        public DomainInfo(String domain, boolean primaryDomain) {
+            this.domain = domain;
+            this.primaryDomain = primaryDomain;
+        }
+
+        @Override
+        public String toString() {
+            return "DomainInfo{" +
+                    "domain='" + domain + '\'' +
+                    ", primaryDomain=" + primaryDomain +
+                    '}';
+        }
+    }
+
+}

+ 65 - 0
src/main/java/com/izouma/weixin/wxpay/MyConfig.java

@@ -0,0 +1,65 @@
+package com.izouma.weixin.wxpay;
+
+
+import com.izouma.awesomeadmin.util.PropertiesFileLoader;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+public class MyConfig extends WXPayConfig implements IWXPayDomain {
+
+    private byte[] certData;
+
+    public MyConfig() throws Exception {
+        //String certPath = "/path/to/apiclient_cert.p12";
+        String certPath = PropertiesFileLoader.getProperties("weixin_cert_path");
+        File file = new File(certPath);
+        InputStream certStream = new FileInputStream(file);
+        this.certData = new byte[(int) file.length()];
+        certStream.read(this.certData);
+        certStream.close();
+    }
+
+    public String getAppID() {
+        return PropertiesFileLoader.getProperties("weixinappid");
+    }
+
+    public String getMchID() {
+        return PropertiesFileLoader.getProperties("weixin_mch_id");
+    }
+
+    public String getKey() {
+        return PropertiesFileLoader.getProperties("weixin_mch_secret");
+    }
+
+    public InputStream getCertStream() {
+        ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData);
+        return certBis;
+    }
+
+    public int getHttpConnectTimeoutMs() {
+        return 8000;
+    }
+
+    public int getHttpReadTimeoutMs() {
+        return 10000;
+    }
+
+    @Override
+    IWXPayDomain getWXPayDomain() {
+        return this;
+    }
+
+    @Override
+    public void report(String domain, long elapsedTimeMillis, Exception ex) {
+
+    }
+
+    @Override
+    public DomainInfo getDomain(WXPayConfig config) {
+        return new DomainInfo(WXPayConstants.DOMAIN_API, true);
+    }
+}
+

+ 687 - 0
src/main/java/com/izouma/weixin/wxpay/WXPay.java

@@ -0,0 +1,687 @@
+package com.izouma.weixin.wxpay;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class WXPay {
+
+    private WXPayConfig config;
+    private WXPayConstants.SignType signType;
+    private boolean autoReport;
+    private boolean useSandbox;
+    private String notifyUrl;
+    private WXPayRequest wxPayRequest;
+
+    public WXPay(final WXPayConfig config) throws Exception {
+        this(config, null, true, false);
+    }
+
+    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{
+        this(config, null, autoReport, useSandbox);
+    }
+
+    public WXPay(final WXPayConfig config, final String notifyUrl) throws Exception {
+        this(config, notifyUrl, true, false);
+    }
+
+    public WXPay(final WXPayConfig config, final String notifyUrl, final boolean autoReport) throws Exception {
+        this(config, notifyUrl, autoReport, false);
+    }
+
+    public WXPay(final WXPayConfig config, final String notifyUrl, final boolean autoReport, final boolean useSandbox) throws Exception {
+        this.config = config;
+        this.notifyUrl = notifyUrl;
+        this.autoReport = autoReport;
+        this.useSandbox = useSandbox;
+        if (useSandbox) {
+            this.signType = WXPayConstants.SignType.MD5; // 沙箱环境
+        }
+        else {
+            this.signType = WXPayConstants.SignType.HMACSHA256;
+        }
+        this.wxPayRequest = new WXPayRequest(config);
+    }
+
+    private void checkWXPayConfig() throws Exception {
+        if (this.config == null) {
+            throw new Exception("config is null");
+        }
+        if (this.config.getAppID() == null || this.config.getAppID().trim().length() == 0) {
+            throw new Exception("appid in config is empty");
+        }
+        if (this.config.getMchID() == null || this.config.getMchID().trim().length() == 0) {
+            throw new Exception("appid in config is empty");
+        }
+        if (this.config.getCertStream() == null) {
+            throw new Exception("cert stream in config is empty");
+        }
+        if (this.config.getWXPayDomain() == null){
+            throw new Exception("config.getWXPayDomain() is null");
+        }
+
+        if (this.config.getHttpConnectTimeoutMs() < 10) {
+            throw new Exception("http connect timeout is too small");
+        }
+        if (this.config.getHttpReadTimeoutMs() < 10) {
+            throw new Exception("http read timeout is too small");
+        }
+
+    }
+
+    /**
+     * 向 Map 中添加 appid、mch_id、nonce_str、sign_type、sign <br>
+     * 该函数适用于商户适用于统一下单等接口,不适用于红包、代金券接口
+     *
+     * @param reqData
+     * @return
+     * @throws Exception
+     */
+    public Map<String, String> fillRequestData(Map<String, String> reqData) throws Exception {
+        reqData.put("appid", config.getAppID());
+        reqData.put("mch_id", config.getMchID());
+        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)) {
+            reqData.put("sign_type", WXPayConstants.HMACSHA256);
+        }
+        reqData.put("sign", WXPayUtil.generateSignature(reqData, config.getKey(), this.signType));
+        return reqData;
+    }
+
+    /**
+     * 判断xml数据的sign是否有效,必须包含sign字段,否则返回false。
+     *
+     * @param reqData 向wxpay post的请求数据
+     * @return 签名是否有效
+     * @throws Exception
+     */
+    public boolean isResponseSignatureValid(Map<String, String> reqData) throws Exception {
+        // 返回数据的签名方式和请求中给定的签名方式是一致的
+        return WXPayUtil.isSignatureValid(reqData, this.config.getKey(), this.signType);
+    }
+
+    /**
+     * 判断支付结果通知中的sign是否有效
+     *
+     * @param reqData 向wxpay post的请求数据
+     * @return 签名是否有效
+     * @throws Exception
+     */
+    public boolean isPayResultNotifySignatureValid(Map<String, String> reqData) throws Exception {
+        String signTypeInData = reqData.get(WXPayConstants.FIELD_SIGN_TYPE);
+        WXPayConstants.SignType signType;
+        if (signTypeInData == null) {
+            signType = WXPayConstants.SignType.MD5;
+        }
+        else {
+            signTypeInData = signTypeInData.trim();
+            if (signTypeInData.length() == 0) {
+                signType = WXPayConstants.SignType.MD5;
+            }
+            else if (WXPayConstants.MD5.equals(signTypeInData)) {
+                signType = WXPayConstants.SignType.MD5;
+            }
+            else if (WXPayConstants.HMACSHA256.equals(signTypeInData)) {
+                signType = WXPayConstants.SignType.HMACSHA256;
+            }
+            else {
+                throw new Exception(String.format("Unsupported sign_type: %s", signTypeInData));
+            }
+        }
+        return WXPayUtil.isSignatureValid(reqData, this.config.getKey(), signType);
+    }
+
+
+    /**
+     * 不需要证书的请求
+     * @param urlSuffix String
+     * @param reqData 向wxpay post的请求数据
+     * @param connectTimeoutMs 超时时间,单位是毫秒
+     * @param readTimeoutMs 超时时间,单位是毫秒
+     * @return API返回数据
+     * @throws Exception
+     */
+    public String requestWithoutCert(String urlSuffix, Map<String, String> reqData,
+                                     int connectTimeoutMs, int readTimeoutMs) throws Exception {
+        String msgUUID = reqData.get("nonce_str");
+        String reqBody = WXPayUtil.mapToXml(reqData);
+
+        String resp = this.wxPayRequest.requestWithoutCert(urlSuffix, msgUUID, reqBody, connectTimeoutMs, readTimeoutMs, autoReport);
+        return resp;
+    }
+
+
+    /**
+     * 需要证书的请求
+     * @param urlSuffix String
+     * @param reqData 向wxpay post的请求数据  Map
+     * @param connectTimeoutMs 超时时间,单位是毫秒
+     * @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 reqBody = WXPayUtil.mapToXml(reqData);
+
+        String resp = this.wxPayRequest.requestWithCert(urlSuffix, msgUUID, reqBody, connectTimeoutMs, readTimeoutMs, this.autoReport);
+        return resp;
+    }
+
+    /**
+     * 处理 HTTPS API返回数据,转换成Map对象。return_code为SUCCESS时,验证签名。
+     * @param xmlStr API返回的XML格式数据
+     * @return Map类型数据
+     * @throws Exception
+     */
+    public Map<String, String> processResponseXml(String xmlStr) throws Exception {
+        String RETURN_CODE = "return_code";
+        String return_code;
+        Map<String, String> respData = WXPayUtil.xmlToMap(xmlStr);
+        if (respData.containsKey(RETURN_CODE)) {
+            return_code = respData.get(RETURN_CODE);
+        }
+        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 {
+            throw new Exception(String.format("return_code value %s is invalid in XML: %s", return_code, xmlStr));
+        }
+    }
+
+    /**
+     * 作用:提交刷卡支付<br>
+     * 场景:刷卡支付
+     * @param reqData 向wxpay post的请求数据
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> microPay(Map<String, String> reqData) throws Exception {
+        return this.microPay(reqData, this.config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
+    }
+
+
+    /**
+     * 作用:提交刷卡支付<br>
+     * 场景:刷卡支付
+     * @param reqData 向wxpay post的请求数据
+     * @param connectTimeoutMs 连接超时时间,单位是毫秒
+     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> microPay(Map<String, String> reqData, int connectTimeoutMs, int readTimeoutMs) throws Exception {
+        String url;
+        if (this.useSandbox) {
+            url = WXPayConstants.SANDBOX_MICROPAY_URL_SUFFIX;
+        }
+        else {
+            url = WXPayConstants.MICROPAY_URL_SUFFIX;
+        }
+        String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
+        return this.processResponseXml(respXml);
+    }
+
+    /**
+     * 提交刷卡支付,针对软POS,尽可能做成功
+     * 内置重试机制,最多60s
+     * @param reqData
+     * @return
+     * @throws Exception
+     */
+    public Map<String, String> microPayWithPos(Map<String, String> reqData) throws Exception {
+        return this.microPayWithPos(reqData, this.config.getHttpConnectTimeoutMs());
+    }
+
+    /**
+     * 提交刷卡支付,针对软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;
+        long startTimestampMs = 0;
+        Map<String, String> lastResult = null;
+        Exception lastException = null;
+
+        while (true) {
+            startTimestampMs = WXPayUtil.getCurrentTimestampMs();
+            int readTimeoutMs = remainingTimeMs - connectTimeoutMs;
+            if (readTimeoutMs > 1000) {
+                try {
+                    lastResult = this.microPay(reqData, connectTimeoutMs, readTimeoutMs);
+                    String returnCode = lastResult.get("return_code");
+                    if (returnCode.equals("SUCCESS")) {
+                        String resultCode = lastResult.get("result_code");
+                        String errCode = lastResult.get("err_code");
+                        if (resultCode.equals("SUCCESS")) {
+                            break;
+                        }
+                        else {
+                            // 看错误码,若支付结果未知,则重试提交刷卡支付
+                            if (errCode.equals("SYSTEMERROR") || errCode.equals("BANKERROR") || errCode.equals("USERPAYING")) {
+                                remainingTimeMs = remainingTimeMs - (int)(WXPayUtil.getCurrentTimestampMs() - startTimestampMs);
+                                if (remainingTimeMs <= 100) {
+                                    break;
+                                }
+                                else {
+                                    WXPayUtil.getLogger().info("microPayWithPos: try micropay again");
+                                    if (remainingTimeMs > 5*1000) {
+                                        Thread.sleep(5*1000);
+                                    }
+                                    else {
+                                        Thread.sleep(1*1000);
+                                    }
+                                    continue;
+                                }
+                            }
+                            else {
+                                break;
+                            }
+                        }
+                    }
+                    else {
+                        break;
+                    }
+                }
+                catch (Exception ex) {
+                    lastResult = null;
+                    lastException = ex;
+                }
+            }
+            else {
+                break;
+            }
+        }
+
+        if (lastResult == null) {
+            throw lastException;
+        }
+        else {
+            return lastResult;
+        }
+    }
+
+
+
+    /**
+     * 作用:统一下单<br>
+     * 场景:公共号支付、扫码支付、APP支付
+     * @param reqData 向wxpay post的请求数据
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> unifiedOrder(Map<String, String> reqData) throws Exception {
+        return this.unifiedOrder(reqData, config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
+    }
+
+
+    /**
+     * 作用:统一下单<br>
+     * 场景:公共号支付、扫码支付、APP支付
+     * @param reqData 向wxpay post的请求数据
+     * @param connectTimeoutMs 连接超时时间,单位是毫秒
+     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @return API返回数据
+     * @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 {
+            url = WXPayConstants.UNIFIEDORDER_URL_SUFFIX;
+        }
+        if(this.notifyUrl != null) {
+            reqData.put("notify_url", this.notifyUrl);
+        }
+        String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
+        return this.processResponseXml(respXml);
+    }
+
+
+    /**
+     * 作用:查询订单<br>
+     * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     * @param reqData 向wxpay post的请求数据
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> orderQuery(Map<String, String> reqData) throws Exception {
+        return this.orderQuery(reqData, config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
+    }
+
+
+    /**
+     * 作用:查询订单<br>
+     * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     * @param reqData 向wxpay post的请求数据 int
+     * @param connectTimeoutMs 连接超时时间,单位是毫秒
+     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> orderQuery(Map<String, String> reqData, int connectTimeoutMs, int readTimeoutMs) throws Exception {
+        String url;
+        if (this.useSandbox) {
+            url = WXPayConstants.SANDBOX_ORDERQUERY_URL_SUFFIX;
+        }
+        else {
+            url = WXPayConstants.ORDERQUERY_URL_SUFFIX;
+        }
+        String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
+        return this.processResponseXml(respXml);
+    }
+
+
+    /**
+     * 作用:撤销订单<br>
+     * 场景:刷卡支付
+     * @param reqData 向wxpay post的请求数据
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> reverse(Map<String, String> reqData) throws Exception {
+        return this.reverse(reqData, config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
+    }
+
+
+    /**
+     * 作用:撤销订单<br>
+     * 场景:刷卡支付<br>
+     * 其他:需要证书
+     * @param reqData 向wxpay post的请求数据
+     * @param connectTimeoutMs 连接超时时间,单位是毫秒
+     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> reverse(Map<String, String> reqData, int connectTimeoutMs, int readTimeoutMs) throws Exception {
+        String url;
+        if (this.useSandbox) {
+            url = WXPayConstants.SANDBOX_REVERSE_URL_SUFFIX;
+        }
+        else {
+            url = WXPayConstants.REVERSE_URL_SUFFIX;
+        }
+        String respXml = this.requestWithCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
+        return this.processResponseXml(respXml);
+    }
+
+
+    /**
+     * 作用:关闭订单<br>
+     * 场景:公共号支付、扫码支付、APP支付
+     * @param reqData 向wxpay post的请求数据
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> closeOrder(Map<String, String> reqData) throws Exception {
+        return this.closeOrder(reqData, config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
+    }
+
+
+    /**
+     * 作用:关闭订单<br>
+     * 场景:公共号支付、扫码支付、APP支付
+     * @param reqData 向wxpay post的请求数据
+     * @param connectTimeoutMs 连接超时时间,单位是毫秒
+     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @return API返回数据
+     * @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 {
+            url = WXPayConstants.CLOSEORDER_URL_SUFFIX;
+        }
+        String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
+        return this.processResponseXml(respXml);
+    }
+
+
+    /**
+     * 作用:申请退款<br>
+     * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     * @param reqData 向wxpay post的请求数据
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> refund(Map<String, String> reqData) throws Exception {
+        return this.refund(reqData, this.config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
+    }
+
+
+    /**
+     * 作用:申请退款<br>
+     * 场景:刷卡支付、公共号支付、扫码支付、APP支付<br>
+     * 其他:需要证书
+     * @param reqData 向wxpay post的请求数据
+     * @param connectTimeoutMs 连接超时时间,单位是毫秒
+     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> refund(Map<String, String> reqData, int connectTimeoutMs, int readTimeoutMs) throws Exception {
+        String url;
+        if (this.useSandbox) {
+            url = WXPayConstants.SANDBOX_REFUND_URL_SUFFIX;
+        }
+        else {
+            url = WXPayConstants.REFUND_URL_SUFFIX;
+        }
+        String respXml = this.requestWithCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
+        return this.processResponseXml(respXml);
+    }
+
+
+    /**
+     * 作用:退款查询<br>
+     * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     * @param reqData 向wxpay post的请求数据
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> refundQuery(Map<String, String> reqData) throws Exception {
+        return this.refundQuery(reqData, this.config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
+    }
+
+
+    /**
+     * 作用:退款查询<br>
+     * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     * @param reqData 向wxpay post的请求数据
+     * @param connectTimeoutMs 连接超时时间,单位是毫秒
+     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> refundQuery(Map<String, String> reqData, int connectTimeoutMs, int readTimeoutMs) throws Exception {
+        String url;
+        if (this.useSandbox) {
+            url = WXPayConstants.SANDBOX_REFUNDQUERY_URL_SUFFIX;
+        }
+        else {
+            url = WXPayConstants.REFUNDQUERY_URL_SUFFIX;
+        }
+        String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
+        return this.processResponseXml(respXml);
+    }
+
+
+    /**
+     * 作用:对账单下载(成功时返回对账单数据,失败时返回XML格式数据)<br>
+     * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     * @param reqData 向wxpay post的请求数据
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> downloadBill(Map<String, String> reqData) throws Exception {
+        return this.downloadBill(reqData, this.config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
+    }
+
+
+    /**
+     * 作用:对账单下载<br>
+     * 场景:刷卡支付、公共号支付、扫码支付、APP支付<br>
+     * 其他:无论是否成功都返回Map。若成功,返回的Map中含有return_code、return_msg、data,
+     *      其中return_code为`SUCCESS`,data为对账单数据。
+     * @param reqData 向wxpay post的请求数据
+     * @param connectTimeoutMs 连接超时时间,单位是毫秒
+     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @return 经过封装的API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> downloadBill(Map<String, String> reqData, int connectTimeoutMs, int readTimeoutMs) throws Exception {
+        String url;
+        if (this.useSandbox) {
+            url = WXPayConstants.SANDBOX_DOWNLOADBILL_URL_SUFFIX;
+        }
+        else {
+            url = WXPayConstants.DOWNLOADBILL_URL_SUFFIX;
+        }
+        String respStr = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs).trim();
+        Map<String, String> ret;
+        // 出现错误,返回XML数据
+        if (respStr.indexOf("<") == 0) {
+            ret = WXPayUtil.xmlToMap(respStr);
+        }
+        else {
+            // 正常返回csv数据
+            ret = new HashMap<String, String>();
+            ret.put("return_code", WXPayConstants.SUCCESS);
+            ret.put("return_msg", "ok");
+            ret.put("data", respStr);
+        }
+        return ret;
+    }
+
+
+    /**
+     * 作用:交易保障<br>
+     * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     * @param reqData 向wxpay post的请求数据
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> report(Map<String, String> reqData) throws Exception {
+        return this.report(reqData, this.config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
+    }
+
+
+    /**
+     * 作用:交易保障<br>
+     * 场景:刷卡支付、公共号支付、扫码支付、APP支付
+     * @param reqData 向wxpay post的请求数据
+     * @param connectTimeoutMs 连接超时时间,单位是毫秒
+     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> report(Map<String, String> reqData, int connectTimeoutMs, int readTimeoutMs) throws Exception {
+        String url;
+        if (this.useSandbox) {
+            url = WXPayConstants.SANDBOX_REPORT_URL_SUFFIX;
+        }
+        else {
+            url = WXPayConstants.REPORT_URL_SUFFIX;
+        }
+        String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
+        return WXPayUtil.xmlToMap(respXml);
+    }
+
+
+    /**
+     * 作用:转换短链接<br>
+     * 场景:刷卡支付、扫码支付
+     * @param reqData 向wxpay post的请求数据
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> shortUrl(Map<String, String> reqData) throws Exception {
+        return this.shortUrl(reqData, this.config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
+    }
+
+
+    /**
+     * 作用:转换短链接<br>
+     * 场景:刷卡支付、扫码支付
+     * @param reqData 向wxpay post的请求数据
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> shortUrl(Map<String, String> reqData, int connectTimeoutMs, int readTimeoutMs) throws Exception {
+        String url;
+        if (this.useSandbox) {
+            url = WXPayConstants.SANDBOX_SHORTURL_URL_SUFFIX;
+        }
+        else {
+            url = WXPayConstants.SHORTURL_URL_SUFFIX;
+        }
+        String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
+        return this.processResponseXml(respXml);
+    }
+
+
+    /**
+     * 作用:授权码查询OPENID接口<br>
+     * 场景:刷卡支付
+     * @param reqData 向wxpay post的请求数据
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> authCodeToOpenid(Map<String, String> reqData) throws Exception {
+        return this.authCodeToOpenid(reqData, this.config.getHttpConnectTimeoutMs(), this.config.getHttpReadTimeoutMs());
+    }
+
+
+    /**
+     * 作用:授权码查询OPENID接口<br>
+     * 场景:刷卡支付
+     * @param reqData 向wxpay post的请求数据
+     * @param connectTimeoutMs 连接超时时间,单位是毫秒
+     * @param readTimeoutMs 读超时时间,单位是毫秒
+     * @return API返回数据
+     * @throws Exception
+     */
+    public Map<String, String> authCodeToOpenid(Map<String, String> reqData, int connectTimeoutMs, int readTimeoutMs) throws Exception {
+        String url;
+        if (this.useSandbox) {
+            url = WXPayConstants.SANDBOX_AUTHCODETOOPENID_URL_SUFFIX;
+        }
+        else {
+            url = WXPayConstants.AUTHCODETOOPENID_URL_SUFFIX;
+        }
+        String respXml = this.requestWithoutCert(url, this.fillRequestData(reqData), connectTimeoutMs, readTimeoutMs);
+        return this.processResponseXml(respXml);
+    }
+
+
+} // end class

+ 103 - 0
src/main/java/com/izouma/weixin/wxpay/WXPayConfig.java

@@ -0,0 +1,103 @@
+package com.izouma.weixin.wxpay;
+
+import java.io.InputStream;
+
+public abstract class WXPayConfig {
+
+
+
+    /**
+     * 获取 App ID
+     *
+     * @return App ID
+     */
+    abstract String getAppID();
+
+
+    /**
+     * 获取 Mch ID
+     *
+     * @return Mch ID
+     */
+    abstract String getMchID();
+
+
+    /**
+     * 获取 API 密钥
+     *
+     * @return API密钥
+     */
+    abstract String getKey();
+
+
+    /**
+     * 获取商户证书内容
+     *
+     * @return 商户证书内容
+     */
+    abstract InputStream getCertStream();
+
+    /**
+     * HTTP(S) 连接超时时间,单位毫秒
+     *
+     * @return
+     */
+    public int getHttpConnectTimeoutMs() {
+        return 6*1000;
+    }
+
+    /**
+     * HTTP(S) 读数据超时时间,单位毫秒
+     *
+     * @return
+     */
+    public int getHttpReadTimeoutMs() {
+        return 8*1000;
+    }
+
+    /**
+     * 获取WXPayDomain, 用于多域名容灾自动切换
+     * @return
+     */
+    abstract IWXPayDomain getWXPayDomain();
+
+    /**
+     * 是否自动上报。
+     * 若要关闭自动上报,子类中实现该函数返回 false 即可。
+     *
+     * @return
+     */
+    public boolean shouldAutoReport() {
+        return true;
+    }
+
+    /**
+     * 进行健康上报的线程的数量
+     *
+     * @return
+     */
+    public int getReportWorkerNum() {
+        return 6;
+    }
+
+
+    /**
+     * 健康上报缓存消息的最大数量。会有线程去独立上报
+     * 粗略计算:加入一条消息200B,10000消息占用空间 2000 KB,约为2MB,可以接受
+     *
+     * @return
+     */
+    public int getReportQueueMaxSize() {
+        return 10000;
+    }
+
+    /**
+     * 批量上报,一次最多上报多个数据
+     *
+     * @return
+     */
+    public int getReportBatchSize() {
+        return 10;
+    }
+
+}

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff