suochencheng 6 years ago
parent
commit
4bc7b0617c
34 changed files with 7329 additions and 0 deletions
  1. 84 0
      setup/db/20190306/update.sql
  2. 19 0
      setup/db/20190516/update.sql
  3. 11 0
      src/main/java/com/izouma/awesomeadmin/constant/AppConstant.java
  4. 33 0
      src/main/java/com/izouma/awesomeadmin/dao/ClientNoticeMapper.java
  5. 482 0
      src/main/java/com/izouma/awesomeadmin/dao/ClientNoticeMapper.xml
  6. 33 0
      src/main/java/com/izouma/awesomeadmin/dao/ClientOrderImageMapper.java
  7. 661 0
      src/main/java/com/izouma/awesomeadmin/dao/ClientOrderImageMapper.xml
  8. 33 0
      src/main/java/com/izouma/awesomeadmin/dao/ClientOrderMapper.java
  9. 898 0
      src/main/java/com/izouma/awesomeadmin/dao/ClientOrderMapper.xml
  10. 75 0
      src/main/java/com/izouma/awesomeadmin/dao/OrderImageMapper.xml
  11. 50 0
      src/main/java/com/izouma/awesomeadmin/dao/StoreInfoMapper.xml
  12. 70 0
      src/main/java/com/izouma/awesomeadmin/dao/UserOrderMapper.xml
  13. 164 0
      src/main/java/com/izouma/awesomeadmin/model/ClientNotice.java
  14. 358 0
      src/main/java/com/izouma/awesomeadmin/model/ClientOrder.java
  15. 286 0
      src/main/java/com/izouma/awesomeadmin/model/ClientOrderImage.java
  16. 39 0
      src/main/java/com/izouma/awesomeadmin/model/OrderImage.java
  17. 39 0
      src/main/java/com/izouma/awesomeadmin/model/StoreInfo.java
  18. 52 0
      src/main/java/com/izouma/awesomeadmin/model/UserOrder.java
  19. 27 0
      src/main/java/com/izouma/awesomeadmin/service/ClientNoticeService.java
  20. 33 0
      src/main/java/com/izouma/awesomeadmin/service/ClientOrderImageService.java
  21. 33 0
      src/main/java/com/izouma/awesomeadmin/service/ClientOrderService.java
  22. 137 0
      src/main/java/com/izouma/awesomeadmin/service/impl/ClientNoticeServiceImpl.java
  23. 220 0
      src/main/java/com/izouma/awesomeadmin/service/impl/ClientOrderImageServiceImpl.java
  24. 476 0
      src/main/java/com/izouma/awesomeadmin/service/impl/ClientOrderServiceImpl.java
  25. 164 0
      src/main/java/com/izouma/awesomeadmin/web/ClientNoticeController.java
  26. 208 0
      src/main/java/com/izouma/awesomeadmin/web/ClientOrderController.java
  27. 204 0
      src/main/java/com/izouma/awesomeadmin/web/ClientOrderImageController.java
  28. 123 0
      src/main/vue/src/pages/ClientNotice.vue
  29. 503 0
      src/main/vue/src/pages/ClientNotices.vue
  30. 183 0
      src/main/vue/src/pages/ClientOrder.vue
  31. 147 0
      src/main/vue/src/pages/ClientOrderImage.vue
  32. 631 0
      src/main/vue/src/pages/ClientOrderImages.vue
  33. 823 0
      src/main/vue/src/pages/ClientOrders.vue
  34. 30 0
      src/main/vue/src/router/index.js

+ 84 - 0
setup/db/20190306/update.sql

@@ -0,0 +1,84 @@
+
+DROP TABLE if exists `merchant_order`;
+create table `merchant_order` (
+  `id` int(10) NOT NULL AUTO_INCREMENT,
+  `order_name` varchar(30) NOT NULL default '' COMMENT '订单名',
+  `del_flag` char(1) NOT NULL DEFAULT 'N' COMMENT '删除标识',
+  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `update_user` varchar(45) DEFAULT NULL COMMENT '更新人',
+  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `create_user` varchar(45) DEFAULT NULL COMMENT '创建人',
+  `user_id` int(10) DEFAULT NULL COMMENT '用户',
+  `order_code` varchar(45) DEFAULT NULL COMMENT '订单编码',
+  `specification` varchar(45) DEFAULT NULL COMMENT '规格',
+  `description` varchar(600) default null comment '订单描述',
+  `unit_price` decimal(10,2) DEFAULT NULL COMMENT '单价',
+  `quantity` int(10) DEFAULT NULL COMMENT '数量',
+  `user_coupon_id` int(10) DEFAULT NULL COMMENT '优惠券',
+  `off_price` decimal(10,2) DEFAULT NULL COMMENT '优惠金额',
+  `totle_price` decimal(10,2) DEFAULT NULL COMMENT '总价',
+  `deal_price` decimal(10,2) DEFAULT NULL COMMENT '成交价',
+  `pay_mode` int(4) DEFAULT '0' COMMENT '支付方式',
+  `pay_time` datetime DEFAULT NULL COMMENT '支付时间',
+  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
+  `show_flag` char(1) DEFAULT 'Y' COMMENT '显示标识',
+  `status_flag` int(4) DEFAULT '0' COMMENT '状态',
+  `fee` decimal(10,2) DEFAULT NULL COMMENT '手续费',
+  `coin` decimal(10,2) DEFAULT NULL COMMENT '余额',
+  `point` decimal(10,2) DEFAULT NULL COMMENT '积分',
+  `cash` decimal(10,2) DEFAULT NULL COMMENT '现金',
+  `cancel_reason` varchar(255) DEFAULT NULL COMMENT '取消原因',
+  `confirm_time` datetime DEFAULT NULL COMMENT '确认时间',
+  `old_status` int(4) DEFAULT NULL COMMENT '退款前状态',
+  `refund_status` int(4) DEFAULT NULL COMMENT '退款状态',
+  `album_count` int(10) DEFAULT 0 comment '相册数',
+  PRIMARY KEY (`id`)
+)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='签约商户订单';
+
+DROP TABLE if exists `merchant_order_img`;
+create table `merchant_order_img` (
+  `id` int(10) NOT NULL AUTO_INCREMENT,
+  `del_flag` char(1) NOT NULL DEFAULT 'N' COMMENT '删除标识',
+  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `update_user` varchar(45) DEFAULT NULL COMMENT '更新人',
+  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `create_user` varchar(45) DEFAULT NULL COMMENT '创建人',
+  `order_id` int(10) DEFAULT NULL COMMENT '订单',
+  `user_id` int(10) DEFAULT NULL COMMENT '创建人ID',
+  `local_path` varchar(300) DEFAULT NULL COMMENT '本地地址',
+  `size` decimal(10,0) DEFAULT '0' COMMENT '原片大小',
+  `full_name` varchar(300) DEFAULT NULL COMMENT '全名',
+  `op_user` int(10) DEFAULT NULL COMMENT '运营人员',
+  `status_flag` int(4) DEFAULT '0' COMMENT '状态',
+  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
+  `image_name` varchar(255) DEFAULT NULL COMMENT '图片名称',
+  `clean_flag` char(1) DEFAULT 'N' COMMENT '是否清理OSS',
+  `business_type` int(1) not null comment '业务类型',
+  PRIMARY KEY (`id`)
+)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='签约商户订单交易图片';
+
+DROP TABLE if exists `merchant_order_checklink`;
+create table `merchant_order_checklink` (
+  `id` int(10) NOT NULL AUTO_INCREMENT,
+  `del_flag` char(1) NOT NULL DEFAULT 'N' COMMENT '删除标识',
+  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `update_user` varchar(45) DEFAULT NULL COMMENT '更新人',
+  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `create_user` varchar(45) DEFAULT NULL COMMENT '创建人',
+  `title` varchar(45) DEFAULT NULL COMMENT '标题',
+  `order_id` int(10) DEFAULT NULL COMMENT '订单',
+  `user_id` int(10) DEFAULT NULL COMMENT '创建人ID',
+  `check_link` varchar(300) DEFAULT NULL COMMENT '审核地址',
+  `verify_code` varchar(6) DEFAULT NULL COMMENT '审核验证码',
+  `status_flag` int(4) DEFAULT '0' COMMENT '状态',
+  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
+  `check_times` int(2) DEFAULT '0' comment '审片次数',
+  PRIMARY KEY (`id`)
+)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='签约商户订单审核链接';
+
+alter table sys_user add user_type int(1) default '0' comment '用户类型';
+alter table sys_user add unit_price decimal(10, 2) default '0' comment '单价';
+alter table sys_user add contract_starttime timestamp DEFAULT '0000-00-00 00:00:00' comment '合约生效日期';
+alter table sys_user add contract_endtime timestamp DEFAULT '0000-00-00 00:00:00' comment '合约结束日期';
+alter table sys_user add relate_users varchar(1000) default null comment '关联人员';
+

+ 19 - 0
setup/db/20190516/update.sql

@@ -0,0 +1,19 @@
+
+-- web用户订单
+alter table user_order add client_order_id int(11) default null comment '客户端订单';
+alter table user_order add album_quantity int(11) default 0 comment '相册数量';
+alter table user_order add album_status int(4) DEFAULT 0 COMMENT '相册状态';
+alter table user_order add client_flag char(1) DEFAULT 'N' COMMENT '客户端标识';
+
+-- web订单图片
+alter table order_image add client_order_id int(11) default null comment '客户端订单';
+alter table order_image add client_flag char(1) DEFAULT 'N' COMMENT '客户端标识';
+alter table order_image add client_order_image_id int(11) DEFAULT null COMMENT '客户端订单图片ID';
+
+
+-- web 店铺信息
+ALTER TABLE store_info ADD album_price INT (11) DEFAULT 10 COMMENT '相册单价';
+
+ALTER TABLE store_info ADD rate_flag CHAR (1) DEFAULT 'N' COMMENT '比率标识';
+
+ALTER TABLE store_info ADD order_rate INT (11) DEFAULT 10 COMMENT '订单比率';

+ 11 - 0
src/main/java/com/izouma/awesomeadmin/constant/AppConstant.java

@@ -97,6 +97,12 @@ public interface AppConstant {
          * 电子币
          */
         Integer COIN = 2;
+
+        /**
+         * 客户端大订单支付
+         */
+        Integer CLIENT = 3;
+
     }
 
     public interface InergralUpdateType {
@@ -335,6 +341,11 @@ public interface AppConstant {
          */
         Integer SONG = 8;
 
+        /**
+         * 客户端消费
+         */
+        Integer CLIENT_CONSUMPTION = 9;
+
     }
 
     public interface Aliapi {

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

@@ -0,0 +1,33 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.ClientNotice;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.ClientNoticeMapper")
+public interface ClientNoticeMapper{
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(ClientNotice record);
+
+    ClientNotice selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(ClientNotice record);
+
+    List<ClientNotice> queryAllClientNotice(ClientNotice record);
+
+    List<ClientNotice> queryClientNoticeByPage(Map<String, Object> parameter);
+
+    int delete(ClientNotice record);
+
+    ClientNotice queryClientNotice(ClientNotice record);
+
+    List<ClientNotice> query(ClientNotice record);
+}
+

+ 482 - 0
src/main/java/com/izouma/awesomeadmin/dao/ClientNoticeMapper.xml

@@ -0,0 +1,482 @@
+<?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.ClientNoticeMapper" >
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.ClientNotice" >
+                <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="client_order_id" property="clientOrderId" jdbcType="INTEGER" />
+                                <result column="order_id" property="orderId" jdbcType="INTEGER" />
+                                <result column="user_id" property="userId" jdbcType="INTEGER" />
+                                <result column="product_id" property="productId" jdbcType="INTEGER" />
+                                <result column="store_id" property="storeId" jdbcType="INTEGER" />
+                                <result column="remark" property="remark" jdbcType="VARCHAR" />
+                                <result column="status_flag" property="statusFlag" jdbcType="INTEGER" />
+            </resultMap>
+    <sql id="Base_Column_List" >
+        <trim  suffixOverrides="," >
+            id,
+
+            del_flag,
+
+            update_time,
+
+            update_user,
+
+            create_time,
+
+            create_user,
+
+            client_order_id,
+
+            order_id,
+
+            user_id,
+
+            product_id,
+
+            store_id,
+
+            remark,
+
+            status_flag,
+
+            </trim>
+    </sql>
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+        select
+        <include refid="Base_Column_List" />
+        from client_notice
+        where id = #{id,jdbcType=INTEGER}
+    </select>
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+        delete from client_notice
+        where id = #{id,jdbcType=INTEGER}
+    </delete>
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.ClientNotice" useGeneratedKeys="true" keyProperty="id">
+        insert into client_notice
+        <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="clientOrderId!= null" >
+                client_order_id,
+            </if>
+                <if test="orderId!= null" >
+                order_id,
+            </if>
+                <if test="userId!= null" >
+                user_id,
+            </if>
+                <if test="productId!= null" >
+                product_id,
+            </if>
+                <if test="storeId!= null" >
+                store_id,
+            </if>
+                <if test="remark!= null" >
+                remark,
+            </if>
+                <if test="statusFlag!= null" >
+                status_flag,
+            </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="clientOrderId != null" >
+                #{clientOrderId,jdbcType=INTEGER},
+            </if>
+                    <if test="orderId != null" >
+                #{orderId,jdbcType=INTEGER},
+            </if>
+                    <if test="userId != null" >
+                #{userId,jdbcType=INTEGER},
+            </if>
+                    <if test="productId != null" >
+                #{productId,jdbcType=INTEGER},
+            </if>
+                    <if test="storeId != null" >
+                #{storeId,jdbcType=INTEGER},
+            </if>
+                    <if test="remark != null" >
+                #{remark,jdbcType=VARCHAR},
+            </if>
+                    <if test="statusFlag != null" >
+                #{statusFlag,jdbcType=INTEGER},
+            </if>
+                </trim>
+    </insert>
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.ClientNotice" >
+        update client_notice
+        <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="clientOrderId != null" >
+               client_order_id= #{clientOrderId,jdbcType=INTEGER},
+            </if>
+                     <if test="orderId != null" >
+               order_id= #{orderId,jdbcType=INTEGER},
+            </if>
+                     <if test="userId != null" >
+               user_id= #{userId,jdbcType=INTEGER},
+            </if>
+                     <if test="productId != null" >
+               product_id= #{productId,jdbcType=INTEGER},
+            </if>
+                     <if test="storeId != null" >
+               store_id= #{storeId,jdbcType=INTEGER},
+            </if>
+                     <if test="remark != null" >
+               remark= #{remark,jdbcType=VARCHAR},
+            </if>
+                     <if test="statusFlag != null" >
+               status_flag= #{statusFlag,jdbcType=INTEGER},
+            </if>
+                 </set>
+        where
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id in (${idStr})
+        </if>
+
+    </update>
+    <select id="queryClientNoticeByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.ClientNotice">
+        select <include refid="Base_Column_List"/> from client_notice
+        <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>
+                     <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.clientOrderId != null and !&quot;&quot;.equals(record.clientOrderId)">
+                and  client_order_id = #{record.clientOrderId}
+            </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.productId != null and !&quot;&quot;.equals(record.productId)">
+                and  product_id = #{record.productId}
+            </if>
+                     <if test="record.storeId != null and !&quot;&quot;.equals(record.storeId)">
+                and  store_id = #{record.storeId}
+            </if>
+                     <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                and  remark = #{record.remark}
+            </if>
+                     <if test="record.statusFlag != null and !&quot;&quot;.equals(record.statusFlag)">
+                and  status_flag = #{record.statusFlag}
+            </if>
+                  <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+             <trim prefix="and (" suffix=")" prefixOverrides="OR" >
+                                                                                                                                                                                                                                                                                                                                                                                                                                    OR  client_order_id LIKE concat('%',#{record.searchKey},'%')
+                                                                                                    OR  order_id LIKE concat('%',#{record.searchKey},'%')
+                                                                                                    OR  user_id LIKE concat('%',#{record.searchKey},'%')
+                                                                                                    OR  product_id LIKE concat('%',#{record.searchKey},'%')
+                                                                                                    OR  store_id LIKE concat('%',#{record.searchKey},'%')
+                                                                                                    OR  remark LIKE concat('%',#{record.searchKey},'%')
+                                                                                                    OR  status_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('_;')">
+                    <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="queryAllClientNotice" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.ClientNotice">
+        select <include refid="Base_Column_List"/> from client_notice
+        <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>
+                    <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="clientOrderId != null and !&quot;&quot;.equals(clientOrderId)">
+                and  client_order_id = #{clientOrderId}
+            </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="productId != null and !&quot;&quot;.equals(productId)">
+                and  product_id = #{productId}
+            </if>
+                    <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                and  store_id = #{storeId}
+            </if>
+                    <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and  remark = #{remark}
+            </if>
+                    <if test="statusFlag != null and !&quot;&quot;.equals(statusFlag)">
+                and  status_flag = #{statusFlag}
+            </if>
+                    <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR" >
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                OR  client_order_id LIKE concat('%',#{searchKey},'%')
+                                                                                                                                                        OR  order_id LIKE concat('%',#{searchKey},'%')
+                                                                                                                                                        OR  user_id LIKE concat('%',#{searchKey},'%')
+                                                                                                                                                        OR  product_id LIKE concat('%',#{searchKey},'%')
+                                                                                                                                                        OR  store_id LIKE concat('%',#{searchKey},'%')
+                                                                                                                                                        OR  remark LIKE concat('%',#{searchKey},'%')
+                                                                                                                                                        OR  status_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="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="queryClientNotice" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.ClientNotice">
+        select <include refid="Base_Column_List"/> from client_notice
+        <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="clientOrderId != null and !&quot;&quot;.equals(clientOrderId)">
+                and client_order_id = #{clientOrderId}
+            </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="productId != null and !&quot;&quot;.equals(productId)">
+                and product_id = #{productId}
+            </if>
+                     <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                and store_id = #{storeId}
+            </if>
+                     <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and remark = #{remark}
+            </if>
+                     <if test="statusFlag != null and !&quot;&quot;.equals(statusFlag)">
+                and status_flag = #{statusFlag}
+            </if>
+         
+        </where>
+        LIMIT 1
+    </select>
+    <update id="delete">
+        UPDATE client_notice SET del_flag = 'Y'
+        where
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id in (${idStr})
+        </if>
+    </update>
+    <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.ClientNotice">
+        select <include refid="Base_Column_List"/> from client_notice
+        <where>
+            and del_flag = 'N'
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </where>
+        order by id desc
+    </select>
+</mapper>
+

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

@@ -0,0 +1,33 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.ClientOrderImage;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.ClientOrderImageMapper")
+public interface ClientOrderImageMapper{
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(ClientOrderImage record);
+
+    ClientOrderImage selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(ClientOrderImage record);
+
+    List<ClientOrderImage> queryAllClientOrderImage(ClientOrderImage record);
+
+    List<ClientOrderImage> queryClientOrderImageByPage(Map<String, Object> parameter);
+
+    int delete(ClientOrderImage record);
+
+    ClientOrderImage queryClientOrderImage(ClientOrderImage record);
+
+    List<ClientOrderImage> query(ClientOrderImage record);
+}
+

File diff suppressed because it is too large
+ 661 - 0
src/main/java/com/izouma/awesomeadmin/dao/ClientOrderImageMapper.xml


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

@@ -0,0 +1,33 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.ClientOrder;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.ClientOrderMapper")
+public interface ClientOrderMapper{
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(ClientOrder record);
+
+    ClientOrder selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(ClientOrder record);
+
+    List<ClientOrder> queryAllClientOrder(ClientOrder record);
+
+    List<ClientOrder> queryClientOrderByPage(Map<String, Object> parameter);
+
+    int delete(ClientOrder record);
+
+    ClientOrder queryClientOrder(ClientOrder record);
+
+    List<ClientOrder> query(ClientOrder record);
+}
+

+ 898 - 0
src/main/java/com/izouma/awesomeadmin/dao/ClientOrderMapper.xml

@@ -0,0 +1,898 @@
+<?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.ClientOrderMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.ClientOrder">
+        <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="INTEGER"/>
+        <result column="order_code" property="orderCode" jdbcType="VARCHAR"/>
+        <result column="store_id" property="storeId" jdbcType="INTEGER"/>
+        <result column="product_type" property="productType" jdbcType="VARCHAR"/>
+        <result column="product_id" property="productId" jdbcType="INTEGER"/>
+        <result column="product_name" property="productName" jdbcType="VARCHAR"/>
+        <result column="specification" property="specification" jdbcType="VARCHAR"/>
+        <result column="unit_price" property="unitPrice" jdbcType="DECIMAL"/>
+        <result column="quantity" property="quantity" jdbcType="INTEGER"/>
+        <result column="user_coupon_id" property="userCouponId" jdbcType="INTEGER"/>
+        <result column="off_price" property="offPrice" jdbcType="DECIMAL"/>
+        <result column="totle_price" property="totlePrice" jdbcType="DECIMAL"/>
+        <result column="deal_price" property="dealPrice" jdbcType="DECIMAL"/>
+        <result column="pay_mode" property="payMode" jdbcType="INTEGER"/>
+        <result column="pay_time" property="payTime" jdbcType="TIMESTAMP"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="show_flag" property="showFlag" jdbcType="CHAR"/>
+        <result column="status_flag" property="statusFlag" jdbcType="INTEGER"/>
+        <result column="fee" property="fee" 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="cancel_reason" property="cancelReason" jdbcType="VARCHAR"/>
+        <result column="album_price" property="albumPrice" jdbcType="DECIMAL"/>
+        <result column="album_quantity" property="albumQuantity" jdbcType="INTEGER"/>
+        <result column="order_name" property="orderName" jdbcType="VARCHAR"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <trim suffixOverrides=",">
+            id,
+
+            del_flag,
+
+            update_time,
+
+            update_user,
+
+            create_time,
+
+            create_user,
+
+            user_id,
+
+            order_code,
+
+            store_id,
+
+            product_type,
+
+            product_id,
+
+            product_name,
+
+            specification,
+
+            unit_price,
+
+            quantity,
+
+            user_coupon_id,
+
+            off_price,
+
+            totle_price,
+
+            deal_price,
+
+            pay_mode,
+
+            pay_time,
+
+            remark,
+
+            show_flag,
+
+            status_flag,
+
+            fee,
+
+            coin,
+
+            point,
+
+            cash,
+
+            cancel_reason,
+
+            album_price,
+
+            album_quantity,
+
+            order_name,
+
+        </trim>
+    </sql>
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        select
+        <include refid="Base_Column_List"/>
+        from client_order
+        where id = #{id,jdbcType=INTEGER}
+    </select>
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        delete from client_order
+        where id = #{id,jdbcType=INTEGER}
+    </delete>
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.ClientOrder" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into client_order
+        <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="orderCode!= null">
+                order_code,
+            </if>
+            <if test="storeId!= null">
+                store_id,
+            </if>
+            <if test="productType!= null">
+                product_type,
+            </if>
+            <if test="productId!= null">
+                product_id,
+            </if>
+            <if test="productName!= null">
+                product_name,
+            </if>
+            <if test="specification!= null">
+                specification,
+            </if>
+            <if test="unitPrice!= null">
+                unit_price,
+            </if>
+            <if test="quantity!= null">
+                quantity,
+            </if>
+            <if test="userCouponId!= null">
+                user_coupon_id,
+            </if>
+            <if test="offPrice!= null">
+                off_price,
+            </if>
+            <if test="totlePrice!= null">
+                totle_price,
+            </if>
+            <if test="dealPrice!= null">
+                deal_price,
+            </if>
+            <if test="payMode!= null">
+                pay_mode,
+            </if>
+            <if test="payTime!= null">
+                pay_time,
+            </if>
+            <if test="remark!= null">
+                remark,
+            </if>
+            <if test="showFlag!= null">
+                show_flag,
+            </if>
+            <if test="statusFlag!= null">
+                status_flag,
+            </if>
+            <if test="fee!= null">
+                fee,
+            </if>
+            <if test="coin!= null">
+                coin,
+            </if>
+            <if test="point!= null">
+                point,
+            </if>
+            <if test="cash!= null">
+                cash,
+            </if>
+            <if test="cancelReason!= null">
+                cancel_reason,
+            </if>
+            <if test="albumPrice!= null">
+                album_price,
+            </if>
+            <if test="albumQuantity!= null">
+                album_quantity,
+            </if>
+            <if test="orderName!= null">
+                order_name,
+            </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=INTEGER},
+            </if>
+            <if test="orderCode != null">
+                #{orderCode,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                #{storeId,jdbcType=INTEGER},
+            </if>
+            <if test="productType != null">
+                #{productType,jdbcType=VARCHAR},
+            </if>
+            <if test="productId != null">
+                #{productId,jdbcType=INTEGER},
+            </if>
+            <if test="productName != null">
+                #{productName,jdbcType=VARCHAR},
+            </if>
+            <if test="specification != null">
+                #{specification,jdbcType=VARCHAR},
+            </if>
+            <if test="unitPrice != null">
+                #{unitPrice,jdbcType=DECIMAL},
+            </if>
+            <if test="quantity != null">
+                #{quantity,jdbcType=INTEGER},
+            </if>
+            <if test="userCouponId != null">
+                #{userCouponId,jdbcType=INTEGER},
+            </if>
+            <if test="offPrice != null">
+                #{offPrice,jdbcType=DECIMAL},
+            </if>
+            <if test="totlePrice != null">
+                #{totlePrice,jdbcType=DECIMAL},
+            </if>
+            <if test="dealPrice != null">
+                #{dealPrice,jdbcType=DECIMAL},
+            </if>
+            <if test="payMode != null">
+                #{payMode,jdbcType=INTEGER},
+            </if>
+            <if test="payTime != null">
+                #{payTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="remark != null">
+                #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="showFlag != null">
+                #{showFlag,jdbcType=CHAR},
+            </if>
+            <if test="statusFlag != null">
+                #{statusFlag,jdbcType=INTEGER},
+            </if>
+            <if test="fee != null">
+                #{fee,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="cancelReason != null">
+                #{cancelReason,jdbcType=VARCHAR},
+            </if>
+            <if test="albumPrice != null">
+                #{albumPrice,jdbcType=DECIMAL},
+            </if>
+            <if test="albumQuantity != null">
+                #{albumQuantity,jdbcType=INTEGER},
+            </if>
+            <if test="orderName != null">
+                #{orderName,jdbcType=VARCHAR},
+            </if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.ClientOrder">
+        update client_order
+        <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=INTEGER},
+            </if>
+            <if test="orderCode != null">
+                order_code= #{orderCode,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                store_id= #{storeId,jdbcType=INTEGER},
+            </if>
+            <if test="productType != null">
+                product_type= #{productType,jdbcType=VARCHAR},
+            </if>
+            <if test="productId != null">
+                product_id= #{productId,jdbcType=INTEGER},
+            </if>
+            <if test="productName != null">
+                product_name= #{productName,jdbcType=VARCHAR},
+            </if>
+            <if test="specification != null">
+                specification= #{specification,jdbcType=VARCHAR},
+            </if>
+            <if test="unitPrice != null">
+                unit_price= #{unitPrice,jdbcType=DECIMAL},
+            </if>
+            <if test="quantity != null">
+                quantity= #{quantity,jdbcType=INTEGER},
+            </if>
+            <if test="userCouponId != null">
+                user_coupon_id= #{userCouponId,jdbcType=INTEGER},
+            </if>
+            <if test="offPrice != null">
+                off_price= #{offPrice,jdbcType=DECIMAL},
+            </if>
+            <if test="totlePrice != null">
+                totle_price= #{totlePrice,jdbcType=DECIMAL},
+            </if>
+            <if test="dealPrice != null">
+                deal_price= #{dealPrice,jdbcType=DECIMAL},
+            </if>
+            <if test="payMode != null">
+                pay_mode= #{payMode,jdbcType=INTEGER},
+            </if>
+            <if test="payTime != null">
+                pay_time= #{payTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="showFlag != null">
+                show_flag= #{showFlag,jdbcType=CHAR},
+            </if>
+            <if test="statusFlag != null">
+                status_flag= #{statusFlag,jdbcType=INTEGER},
+            </if>
+            <if test="fee != null">
+                fee= #{fee,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="cancelReason != null">
+                cancel_reason= #{cancelReason,jdbcType=VARCHAR},
+            </if>
+            <if test="albumPrice != null">
+                album_price= #{albumPrice,jdbcType=DECIMAL},
+            </if>
+            <if test="albumQuantity != null">
+                album_quantity= #{albumQuantity,jdbcType=INTEGER},
+            </if>
+            <if test="orderName != null">
+                order_name= #{orderName,jdbcType=VARCHAR},
+            </if>
+        </set>
+        where
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id in (${idStr})
+        </if>
+
+    </update>
+    <select id="queryClientOrderByPage" parameterType="java.util.Map"
+            resultType="com.izouma.awesomeadmin.model.ClientOrder">
+        select
+        <include refid="Base_Column_List"/>
+        from client_order
+        <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>
+            <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.orderCode != null and !&quot;&quot;.equals(record.orderCode)">
+                and order_code = #{record.orderCode}
+            </if>
+            <if test="record.storeId != null and !&quot;&quot;.equals(record.storeId)">
+                and store_id = #{record.storeId}
+            </if>
+            <if test="record.productType != null and !&quot;&quot;.equals(record.productType)">
+                and product_type = #{record.productType}
+            </if>
+            <if test="record.productId != null and !&quot;&quot;.equals(record.productId)">
+                and product_id = #{record.productId}
+            </if>
+            <if test="record.productName != null and !&quot;&quot;.equals(record.productName)">
+                and product_name = #{record.productName}
+            </if>
+            <if test="record.specification != null and !&quot;&quot;.equals(record.specification)">
+                and specification = #{record.specification}
+            </if>
+            <if test="record.unitPrice != null and !&quot;&quot;.equals(record.unitPrice)">
+                and unit_price = #{record.unitPrice}
+            </if>
+            <if test="record.quantity != null and !&quot;&quot;.equals(record.quantity)">
+                and quantity = #{record.quantity}
+            </if>
+            <if test="record.userCouponId != null and !&quot;&quot;.equals(record.userCouponId)">
+                and user_coupon_id = #{record.userCouponId}
+            </if>
+            <if test="record.offPrice != null and !&quot;&quot;.equals(record.offPrice)">
+                and off_price = #{record.offPrice}
+            </if>
+            <if test="record.totlePrice != null and !&quot;&quot;.equals(record.totlePrice)">
+                and totle_price = #{record.totlePrice}
+            </if>
+            <if test="record.dealPrice != null and !&quot;&quot;.equals(record.dealPrice)">
+                and deal_price = #{record.dealPrice}
+            </if>
+            <if test="record.payMode != null and !&quot;&quot;.equals(record.payMode)">
+                and pay_mode = #{record.payMode}
+            </if>
+            <if test="record.payTime != null and !&quot;&quot;.equals(record.payTime)">
+                and pay_time = #{record.payTime}
+            </if>
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                and remark = #{record.remark}
+            </if>
+            <if test="record.showFlag != null and !&quot;&quot;.equals(record.showFlag)">
+                and show_flag = #{record.showFlag}
+            </if>
+            <if test="record.statusFlag != null and !&quot;&quot;.equals(record.statusFlag)">
+                and status_flag = #{record.statusFlag}
+            </if>
+            <if test="record.fee != null and !&quot;&quot;.equals(record.fee)">
+                and fee = #{record.fee}
+            </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.cancelReason != null and !&quot;&quot;.equals(record.cancelReason)">
+                and cancel_reason = #{record.cancelReason}
+            </if>
+            <if test="record.albumPrice != null and !&quot;&quot;.equals(record.albumPrice)">
+                and album_price = #{record.albumPrice}
+            </if>
+            <if test="record.albumQuantity != null and !&quot;&quot;.equals(record.albumQuantity)">
+                and album_quantity = #{record.albumQuantity}
+            </if>
+            <if test="record.orderName != null and !&quot;&quot;.equals(record.orderName)">
+                and order_name = #{record.orderName}
+            </if>
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR order_code LIKE concat('%',#{record.searchKey},'%')
+                    OR product_name LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                    OR order_name 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="queryAllClientOrder" parameterType="java.util.Map"
+            resultType="com.izouma.awesomeadmin.model.ClientOrder">
+        select
+        <include refid="Base_Column_List"/>
+        from client_order
+        <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>
+            <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="orderCode != null and !&quot;&quot;.equals(orderCode)">
+                and order_code = #{orderCode}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                and store_id = #{storeId}
+            </if>
+            <if test="productType != null and !&quot;&quot;.equals(productType)">
+                and product_type = #{productType}
+            </if>
+            <if test="productId != null and !&quot;&quot;.equals(productId)">
+                and product_id = #{productId}
+            </if>
+            <if test="productName != null and !&quot;&quot;.equals(productName)">
+                and product_name = #{productName}
+            </if>
+            <if test="specification != null and !&quot;&quot;.equals(specification)">
+                and specification = #{specification}
+            </if>
+            <if test="unitPrice != null and !&quot;&quot;.equals(unitPrice)">
+                and unit_price = #{unitPrice}
+            </if>
+            <if test="quantity != null and !&quot;&quot;.equals(quantity)">
+                and quantity = #{quantity}
+            </if>
+            <if test="userCouponId != null and !&quot;&quot;.equals(userCouponId)">
+                and user_coupon_id = #{userCouponId}
+            </if>
+            <if test="offPrice != null and !&quot;&quot;.equals(offPrice)">
+                and off_price = #{offPrice}
+            </if>
+            <if test="totlePrice != null and !&quot;&quot;.equals(totlePrice)">
+                and totle_price = #{totlePrice}
+            </if>
+            <if test="dealPrice != null and !&quot;&quot;.equals(dealPrice)">
+                and deal_price = #{dealPrice}
+            </if>
+            <if test="payMode != null and !&quot;&quot;.equals(payMode)">
+                and pay_mode = #{payMode}
+            </if>
+            <if test="payTime != null and !&quot;&quot;.equals(payTime)">
+                and pay_time = #{payTime}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and remark = #{remark}
+            </if>
+            <if test="showFlag != null and !&quot;&quot;.equals(showFlag)">
+                and show_flag = #{showFlag}
+            </if>
+            <if test="statusFlag != null and !&quot;&quot;.equals(statusFlag)">
+                and status_flag = #{statusFlag}
+            </if>
+            <if test="fee != null and !&quot;&quot;.equals(fee)">
+                and fee = #{fee}
+            </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="cancelReason != null and !&quot;&quot;.equals(cancelReason)">
+                and cancel_reason = #{cancelReason}
+            </if>
+            <if test="albumPrice != null and !&quot;&quot;.equals(albumPrice)">
+                and album_price = #{albumPrice}
+            </if>
+            <if test="albumQuantity != null and !&quot;&quot;.equals(albumQuantity)">
+                and album_quantity = #{albumQuantity}
+            </if>
+            <if test="orderName != null and !&quot;&quot;.equals(orderName)">
+                and order_name = #{orderName}
+            </if>
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR order_code LIKE concat('%',#{searchKey},'%')
+                    OR product_name LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                    OR order_name 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="queryClientOrder" parameterType="java.util.Map" resultMap="AllInfoForGetOne">
+        select
+        <include refid="Base_Column_List"/>
+        from client_order
+        <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="orderCode != null and !&quot;&quot;.equals(orderCode)">
+                and order_code = #{orderCode}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                and store_id = #{storeId}
+            </if>
+            <if test="productType != null and !&quot;&quot;.equals(productType)">
+                and product_type = #{productType}
+            </if>
+            <if test="productId != null and !&quot;&quot;.equals(productId)">
+                and product_id = #{productId}
+            </if>
+            <if test="productName != null and !&quot;&quot;.equals(productName)">
+                and product_name = #{productName}
+            </if>
+            <if test="specification != null and !&quot;&quot;.equals(specification)">
+                and specification = #{specification}
+            </if>
+            <if test="unitPrice != null and !&quot;&quot;.equals(unitPrice)">
+                and unit_price = #{unitPrice}
+            </if>
+            <if test="quantity != null and !&quot;&quot;.equals(quantity)">
+                and quantity = #{quantity}
+            </if>
+            <if test="userCouponId != null and !&quot;&quot;.equals(userCouponId)">
+                and user_coupon_id = #{userCouponId}
+            </if>
+            <if test="offPrice != null and !&quot;&quot;.equals(offPrice)">
+                and off_price = #{offPrice}
+            </if>
+            <if test="totlePrice != null and !&quot;&quot;.equals(totlePrice)">
+                and totle_price = #{totlePrice}
+            </if>
+            <if test="dealPrice != null and !&quot;&quot;.equals(dealPrice)">
+                and deal_price = #{dealPrice}
+            </if>
+            <if test="payMode != null and !&quot;&quot;.equals(payMode)">
+                and pay_mode = #{payMode}
+            </if>
+            <if test="payTime != null and !&quot;&quot;.equals(payTime)">
+                and pay_time = #{payTime}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and remark = #{remark}
+            </if>
+            <if test="showFlag != null and !&quot;&quot;.equals(showFlag)">
+                and show_flag = #{showFlag}
+            </if>
+            <if test="statusFlag != null and !&quot;&quot;.equals(statusFlag)">
+                and status_flag = #{statusFlag}
+            </if>
+            <if test="fee != null and !&quot;&quot;.equals(fee)">
+                and fee = #{fee}
+            </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="cancelReason != null and !&quot;&quot;.equals(cancelReason)">
+                and cancel_reason = #{cancelReason}
+            </if>
+            <if test="albumPrice != null and !&quot;&quot;.equals(albumPrice)">
+                and album_price = #{albumPrice}
+            </if>
+            <if test="albumQuantity != null and !&quot;&quot;.equals(albumQuantity)">
+                and album_quantity = #{albumQuantity}
+            </if>
+            <if test="orderName != null and !&quot;&quot;.equals(orderName)">
+                and order_name = #{orderName}
+            </if>
+
+        </where>
+        LIMIT 1
+    </select>
+    <update id="delete">
+        UPDATE client_order SET del_flag = 'Y'
+        where
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id in (${idStr})
+        </if>
+    </update>
+    <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.ClientOrder">
+        select
+        <include refid="Base_Column_List"/>
+        from client_order
+        <where>
+            and del_flag = 'N'
+        </where>
+        order by id desc
+    </select>
+
+
+    <resultMap id="AllInfoForGetOne" type="com.izouma.awesomeadmin.model.ClientOrder" extends="BaseResultMap">
+
+
+        <collection property="userOrderList"
+                    ofType="com.izouma.awesomeadmin.model.UserOrder"
+                    select="com.izouma.awesomeadmin.dao.UserOrderMapper.queryAllUserOrder"
+                    column="{ clientOrderId = id }"/>
+
+    </resultMap>
+
+</mapper>
+

+ 75 - 0
src/main/java/com/izouma/awesomeadmin/dao/OrderImageMapper.xml

@@ -23,6 +23,10 @@
         <result column="finished_artwork" property="finishedArtwork" jdbcType="VARCHAR"/>
         <result column="download_flag" property="downloadFlag" jdbcType="CHAR"/>
         <result column="clean_flag" property="cleanFlag" jdbcType="CHAR"/>
+        <result column="client_order_id" property="clientOrderId" jdbcType="INTEGER"/>
+        <result column="client_flag" property="clientFlag" jdbcType="CHAR"/>
+        <result column="client_order_image_id" property="clientOrderImageId" jdbcType="INTEGER"/>
+
     </resultMap>
     <sql id="Base_Column_List">
         <trim suffixOverrides=",">
@@ -67,6 +71,9 @@
             download_flag,
 
             clean_flag,
+            client_order_id,
+            client_flag,
+            client_order_image_id,
 
         </trim>
     </sql>
@@ -141,6 +148,15 @@
             <if test="finishedArtwork!= null">
                 finished_artwork,
             </if>
+            <if test="clientOrderId!= null">
+                client_order_id,
+            </if>
+            <if test="clientFlag!= null">
+                client_flag,
+            </if>
+            <if test="clientOrderImageId!= null">
+                client_order_image_id,
+            </if>
 
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -201,6 +217,15 @@
             <if test="finishedArtwork != null">
                 #{finishedArtwork,jdbcType=VARCHAR},
             </if>
+            <if test="clientOrderId != null">
+                #{clientOrderId},
+            </if>
+            <if test="clientFlag != null">
+                #{clientFlag},
+            </if>
+            <if test="clientOrderImageId != null">
+                #{clientOrderImageId},
+            </if>
         </trim>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.OrderImage">
@@ -277,6 +302,15 @@
             <if test="cleanFlag != null">
                 clean_flag= #{cleanFlag,jdbcType=CHAR},
             </if>
+            <if test="clientOrderId != null">
+                client_order_id= #{clientOrderId},
+            </if>
+            <if test="clientFlag != null">
+                client_flag= #{clientFlag},
+            </if>
+            <if test="clientOrderImageId != null">
+                client_order_image_id = #{clientOrderImageId},
+            </if>
         </set>
         where id = #{id,jdbcType=INTEGER}
     </update>
@@ -378,6 +412,15 @@
             <if test="record.cleanFlag != null and !&quot;&quot;.equals(record.cleanFlag)">
                 and clean_flag = #{record.cleanFlag}
             </if>
+            <if test="record.clientOrderId != null and !&quot;&quot;.equals(record.clientOrderId)">
+                and client_order_id = #{record.clientOrderId}
+            </if>
+            <if test="record.clientFlag != null and !&quot;&quot;.equals(record.clientFlag)">
+                and client_flag = #{record.clientFlag}
+            </if>
+            <if test="record.clientOrderImageId != null and !&quot;&quot;.equals(record.clientOrderImageId)">
+                and client_order_image_id = #{record.clientOrderIamgeId}
+            </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},'%')
@@ -516,6 +559,17 @@
             <if test="cleanFlag != null and !&quot;&quot;.equals(cleanFlag)">
                 and clean_flag = #{cleanFlag}
             </if>
+
+            <if test="clientOrderId != null and !&quot;&quot;.equals(clientOrderId)">
+                and client_order_id = #{clientOrderId}
+            </if>
+            <if test="clientFlag != null and !&quot;&quot;.equals(clientFlag)">
+                and client_flag = #{clientFlag}
+            </if>
+            <if test="clientOrderImageId != null and !&quot;&quot;.equals(clientOrderImageId)">
+                and client_order_image_id = #{clientOrderIamgeId}
+            </if>
+
             <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                     OR order_id LIKE concat('%',#{searchKey},'%')
@@ -660,6 +714,17 @@
                 and image_name = #{imageName}
             </if>
 
+            <if test="clientOrderId != null and !&quot;&quot;.equals(clientOrderId)">
+                and client_order_id = #{clientOrderId}
+            </if>
+            <if test="clientFlag != null and !&quot;&quot;.equals(clientFlag)">
+                and client_flag = #{clientFlag}
+            </if>
+            <if test="clientOrderImageId != null and !&quot;&quot;.equals(clientOrderImageId)">
+                and client_order_image_id = #{clientOrderIamgeId}
+            </if>
+
+
         </where>
         LIMIT 1
     </select>
@@ -736,6 +801,16 @@
                 and image_name = #{imageName}
             </if>
 
+            <if test="clientOrderId != null and !&quot;&quot;.equals(clientOrderId)">
+                and client_order_id = #{clientOrderId}
+            </if>
+            <if test="clientFlag != null and !&quot;&quot;.equals(clientFlag)">
+                and client_flag = #{clientFlag}
+            </if>
+            <if test="clientOrderImageId != null and !&quot;&quot;.equals(clientOrderImageId)">
+                and client_order_image_id = #{clientOrderIamgeId}
+            </if>
+
         </where>
     </select>
     <select id="getMemorySize" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.OrderImage">

+ 50 - 0
src/main/java/com/izouma/awesomeadmin/dao/StoreInfoMapper.xml

@@ -37,6 +37,9 @@
         <result column="alibaba_nick" property="alibabaNick" jdbcType="VARCHAR"/>
         <result column="qq_nick" property="qqNick" jdbcType="VARCHAR"/>
         <result column="signing" property="signing" jdbcType="CHAR"/>
+        <result column="album_price" property="albumPrice" jdbcType="INTEGER"/>
+        <result column="rate_flag" property="rateFlag" jdbcType="CHAR"/>
+        <result column="order_rate" property="orderRate" jdbcType="INTEGER"/>
     </resultMap>
     <sql id="Base_Column_List">
         <trim suffixOverrides=",">
@@ -108,6 +111,9 @@
 
             qq_nick,
             signing,
+            album_price,
+            rate_flag,
+            order_rate,
 
         </trim>
     </sql>
@@ -230,6 +236,15 @@
             <if test="signing!= null">
                 signing,
             </if>
+            <if test="albumPrice!= null">
+                album_price,
+            </if>
+            <if test="rateFlag!= null">
+                rate_flag,
+            </if>
+            <if test="orderRate!= null">
+                order_rate,
+            </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">
@@ -337,6 +352,15 @@
             <if test="signing != null">
                 #{signing,jdbcType=CHAR},
             </if>
+            <if test="albumPrice != null">
+                #{albumPrice},
+            </if>
+            <if test="rateFlag != null">
+                #{rateFlag},
+            </if>
+            <if test="orderRate != null">
+                #{orderRate},
+            </if>
         </trim>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.StoreInfo">
@@ -447,6 +471,15 @@
             <if test="signing != null">
                 signing = #{signing,jdbcType=CHAR},
             </if>
+            <if test="albumPrice != null">
+                album_price = #{albumPrice},
+            </if>
+            <if test="rateFlag != null">
+                rate_flag = #{rateFlag,jdbcType=CHAR},
+            </if>
+            <if test="orderRate != null">
+                order_rate = #{orderRate},
+            </if>
         </set>
         where id = #{id,jdbcType=INTEGER}
     </update>
@@ -602,6 +635,9 @@
             <if test="record.signing != null and !&quot;&quot;.equals(record.signing)">
                 and signing = #{record.signing}
             </if>
+            <if test="record.rateFlag != null and !&quot;&quot;.equals(record.rateFlag)">
+                and rate_flag = #{record.rateFlag}
+            </if>
             <if test="record.subclass != null and !&quot;&quot;.equals(record.subclass)">
                 and subclass = #{record.subclass}
             </if>
@@ -787,6 +823,11 @@
             <if test="signing != null and !&quot;&quot;.equals(signing)">
                 and signing = #{signing}
             </if>
+
+            <if test="rateFlag != null and !&quot;&quot;.equals(rateFlag)">
+                and rate_flag = #{rateFlag}
+            </if>
+
             <if test="subclass != null and !&quot;&quot;.equals(subclass)">
                 and subclass = #{subclass}
             </if>
@@ -966,6 +1007,9 @@
             <if test="signing != null and !&quot;&quot;.equals(signing)">
                 and signing = #{signing}
             </if>
+            <if test="rateFlag != null and !&quot;&quot;.equals(rateFlag)">
+                and rate_flag = #{rateFlag}
+            </if>
             <if test="subclass != null and !&quot;&quot;.equals(subclass)">
                 and subclass = #{subclass}
             </if>
@@ -1073,6 +1117,9 @@
             <if test="signing != null and !&quot;&quot;.equals(signing)">
                 and signing = #{signing}
             </if>
+            <if test="rateFlag != null and !&quot;&quot;.equals(rateFlag)">
+                and rate_flag = #{rateFlag}
+            </if>
             <if test="subclass != null and !&quot;&quot;.equals(subclass)">
                 and subclass = #{subclass}
             </if>
@@ -1180,6 +1227,9 @@
             <if test="signing != null and !&quot;&quot;.equals(signing)">
                 and signing = #{signing}
             </if>
+            <if test="rateFlag != null and !&quot;&quot;.equals(rateFlag)">
+                and rate_flag = #{rateFlag}
+            </if>
             <if test="subclass != null and !&quot;&quot;.equals(subclass)">
                 and subclass = #{subclass}
             </if>

+ 70 - 0
src/main/java/com/izouma/awesomeadmin/dao/UserOrderMapper.xml

@@ -39,6 +39,10 @@
         <result column="zip_name" property="zipName" jdbcType="VARCHAR"/>
         <result column="order_password" property="orderPassword" jdbcType="VARCHAR"/>
         <result column="remark_file" property="remarkFile" jdbcType="VARCHAR"/>
+        <result column="client_order_id" property="clientOrderId" jdbcType="INTEGER"/>
+        <result column="album_quantity" property="albumQuantity" jdbcType="INTEGER"/>
+        <result column="album_status" property="albumStatus" jdbcType="INTEGER"/>
+        <result column="client_flag" property="clientFlag" jdbcType="CHAR"/>
     </resultMap>
     <sql id="Base_Column_List">
         <trim suffixOverrides=",">
@@ -103,6 +107,10 @@
             zip_name,
             order_password,
             remark_file,
+            client_order_id,
+            album_quantity,
+            album_status,
+            client_flag,
 
         </trim>
     </sql>
@@ -213,6 +221,18 @@
             <if test="remarkFile!= null">
                 remark_file,
             </if>
+            <if test="clientOrderId!= null">
+                client_order_id,
+            </if>
+            <if test="albumQuantity!= null">
+                album_quantity,
+            </if>
+            <if test="albumStatus!= null">
+                album_status,
+            </if>
+            <if test="clientFlag!= null">
+                client_flag,
+            </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">
@@ -308,6 +328,18 @@
             <if test="remarkFile != null">
                 #{remarkFile,jdbcType=VARCHAR},
             </if>
+            <if test="clientOrderId != null">
+                #{clientOrderId},
+            </if>
+            <if test="albumQuantity != null">
+                #{albumQuantity},
+            </if>
+            <if test="albumStatus != null">
+                #{albumStatus},
+            </if>
+            <if test="clientFlag != null">
+                #{clientFlag},
+            </if>
         </trim>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.UserOrder">
@@ -424,6 +456,18 @@
             <if test="remarkFile != null">
                 remark_file = #{remarkFile,jdbcType=VARCHAR},
             </if>
+            <if test="clientOrderId != null">
+                client_order_id = #{clientOrderId},
+            </if>
+            <if test="albumQuantity != null">
+                album_quantity = #{albumQuantity},
+            </if>
+            <if test="albumStatus != null">
+                album_status = #{albumStatus},
+            </if>
+            <if test="clientFlag != null">
+                client_flag = #{clientFlag},
+            </if>
         </set>
         where id = #{id,jdbcType=INTEGER}
     </update>
@@ -518,6 +562,18 @@
             <if test="record.fee != null and !&quot;&quot;.equals(record.fee)">
                 and fee = #{record.fee}
             </if>
+            <if test="record.clientOrderId != null and !&quot;&quot;.equals(record.clientOrderId)">
+                and client_order_id = #{record.clientOrderId}
+            </if>
+            <if test="record.albumQuantity != null and !&quot;&quot;.equals(record.albumQuantity)">
+                and album_quantity = #{record.albumQuantity}
+            </if>
+            <if test="record.albumStatus != null and !&quot;&quot;.equals(record.albumStatus)">
+                and album_status = #{record.albumStatus}
+            </if>
+            <if test="record.clientFlag != null and !&quot;&quot;.equals(record.clientFlag)">
+                and client_flag = #{record.clientFlag}
+            </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},'%')
@@ -678,6 +734,20 @@
             <if test="fee != null and !&quot;&quot;.equals(fee)">
                 and fee = #{fee}
             </if>
+
+            <if test="clientOrderId != null and !&quot;&quot;.equals(clientOrderId)">
+                and client_order_id = #{clientOrderId}
+            </if>
+            <if test="albumQuantity != null and !&quot;&quot;.equals(albumQuantity)">
+                and album_quantity = #{albumQuantity}
+            </if>
+            <if test="albumStatus != null and !&quot;&quot;.equals(albumStatus)">
+                and album_status = #{albumStatus}
+            </if>
+            <if test="clientFlag != null and !&quot;&quot;.equals(clientFlag)">
+                and client_flag = #{clientFlag}
+            </if>
+
             <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                     OR user_id LIKE concat('%',#{searchKey},'%')

+ 164 - 0
src/main/java/com/izouma/awesomeadmin/model/ClientNotice.java

@@ -0,0 +1,164 @@
+package com.izouma.awesomeadmin.model;
+
+import java.util.*;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ClientNotice{
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private Integer clientOrderId;
+    private Integer orderId;
+    private Integer userId;
+    private Integer productId;
+    private Integer storeId;
+    private String remark;
+    private Integer statusFlag;
+
+private String idStr;
+
+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 Integer getClientOrderId(){
+        return this.clientOrderId;
+    }
+
+    public void setClientOrderId(Integer clientOrderId){
+        this.clientOrderId = clientOrderId;
+    }
+    public Integer getOrderId(){
+        return this.orderId;
+    }
+
+    public void setOrderId(Integer orderId){
+        this.orderId = orderId;
+    }
+    public Integer getUserId(){
+        return this.userId;
+    }
+
+    public void setUserId(Integer userId){
+        this.userId = userId;
+    }
+    public Integer getProductId(){
+        return this.productId;
+    }
+
+    public void setProductId(Integer productId){
+        this.productId = productId;
+    }
+    public Integer getStoreId(){
+        return this.storeId;
+    }
+
+    public void setStoreId(Integer storeId){
+        this.storeId = storeId;
+    }
+    public String getRemark(){
+        return this.remark;
+    }
+
+    public void setRemark(String remark){
+        this.remark = remark;
+    }
+    public Integer getStatusFlag(){
+        return this.statusFlag;
+    }
+
+    public void setStatusFlag(Integer statusFlag){
+        this.statusFlag = statusFlag;
+    }
+
+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 String getIdStr() {
+    return idStr;
+}
+
+public void setIdStr(String idStr) {
+    this.idStr = idStr;
+}
+
+}
+

+ 358 - 0
src/main/java/com/izouma/awesomeadmin/model/ClientOrder.java

@@ -0,0 +1,358 @@
+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 ClientOrder {
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private Integer userId;
+    private String orderCode;
+    private Integer storeId;
+    private String productType;
+    private Integer productId;
+    private String productName;
+    private String specification;
+    private BigDecimal unitPrice;
+    private Integer quantity;
+    private Integer userCouponId;
+    private BigDecimal offPrice;
+    private BigDecimal totlePrice;
+    private BigDecimal dealPrice;
+    private Integer payMode;
+    private Date payTime;
+    private String remark;
+    private String showFlag;
+    private Integer statusFlag;
+    private BigDecimal fee;
+    private BigDecimal coin;
+    private BigDecimal point;
+    private BigDecimal cash;
+    private String cancelReason;
+    private BigDecimal albumPrice;
+    private Integer albumQuantity;
+    private String orderName;
+
+    private List<UserOrder> userOrderList;
+
+    private String idStr;
+
+    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 Integer getUserId() {
+        return this.userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getOrderCode() {
+        return this.orderCode;
+    }
+
+    public void setOrderCode(String orderCode) {
+        this.orderCode = orderCode;
+    }
+
+    public Integer getStoreId() {
+        return this.storeId;
+    }
+
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
+    public String getProductType() {
+        return this.productType;
+    }
+
+    public void setProductType(String productType) {
+        this.productType = productType;
+    }
+
+    public Integer getProductId() {
+        return this.productId;
+    }
+
+    public void setProductId(Integer productId) {
+        this.productId = productId;
+    }
+
+    public String getProductName() {
+        return this.productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public String getSpecification() {
+        return this.specification;
+    }
+
+    public void setSpecification(String specification) {
+        this.specification = specification;
+    }
+
+    public BigDecimal getUnitPrice() {
+        return this.unitPrice;
+    }
+
+    public void setUnitPrice(BigDecimal unitPrice) {
+        this.unitPrice = unitPrice;
+    }
+
+    public Integer getQuantity() {
+        return this.quantity;
+    }
+
+    public void setQuantity(Integer quantity) {
+        this.quantity = quantity;
+    }
+
+    public Integer getUserCouponId() {
+        return this.userCouponId;
+    }
+
+    public void setUserCouponId(Integer userCouponId) {
+        this.userCouponId = userCouponId;
+    }
+
+    public BigDecimal getOffPrice() {
+        return this.offPrice;
+    }
+
+    public void setOffPrice(BigDecimal offPrice) {
+        this.offPrice = offPrice;
+    }
+
+    public BigDecimal getTotlePrice() {
+        return this.totlePrice;
+    }
+
+    public void setTotlePrice(BigDecimal totlePrice) {
+        this.totlePrice = totlePrice;
+    }
+
+    public BigDecimal getDealPrice() {
+        return this.dealPrice;
+    }
+
+    public void setDealPrice(BigDecimal dealPrice) {
+        this.dealPrice = dealPrice;
+    }
+
+    public Integer getPayMode() {
+        return this.payMode;
+    }
+
+    public void setPayMode(Integer payMode) {
+        this.payMode = payMode;
+    }
+
+    public Date getPayTime() {
+        return this.payTime;
+    }
+
+    public void setPayTime(Date payTime) {
+        this.payTime = payTime;
+    }
+
+    public String getRemark() {
+        return this.remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getShowFlag() {
+        return this.showFlag;
+    }
+
+    public void setShowFlag(String showFlag) {
+        this.showFlag = showFlag;
+    }
+
+    public Integer getStatusFlag() {
+        return this.statusFlag;
+    }
+
+    public void setStatusFlag(Integer statusFlag) {
+        this.statusFlag = statusFlag;
+    }
+
+    public BigDecimal getFee() {
+        return this.fee;
+    }
+
+    public void setFee(BigDecimal fee) {
+        this.fee = fee;
+    }
+
+    public BigDecimal getCoin() {
+        return this.coin;
+    }
+
+    public void setCoin(BigDecimal coin) {
+        this.coin = coin;
+    }
+
+    public BigDecimal getPoint() {
+        return this.point;
+    }
+
+    public void setPoint(BigDecimal point) {
+        this.point = point;
+    }
+
+    public BigDecimal getCash() {
+        return this.cash;
+    }
+
+    public void setCash(BigDecimal cash) {
+        this.cash = cash;
+    }
+
+    public String getCancelReason() {
+        return this.cancelReason;
+    }
+
+    public void setCancelReason(String cancelReason) {
+        this.cancelReason = cancelReason;
+    }
+
+    public BigDecimal getAlbumPrice() {
+        return this.albumPrice;
+    }
+
+    public void setAlbumPrice(BigDecimal albumPrice) {
+        this.albumPrice = albumPrice;
+    }
+
+    public Integer getAlbumQuantity() {
+        return this.albumQuantity;
+    }
+
+    public void setAlbumQuantity(Integer albumQuantity) {
+        this.albumQuantity = albumQuantity;
+    }
+
+    public String getOrderName() {
+        return this.orderName;
+    }
+
+    public void setOrderName(String orderName) {
+        this.orderName = orderName;
+    }
+
+    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 String getIdStr() {
+        return idStr;
+    }
+
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+
+    public List<UserOrder> getUserOrderList() {
+        return userOrderList;
+    }
+
+    public void setUserOrderList(List<UserOrder> userOrderList) {
+        this.userOrderList = userOrderList;
+    }
+}
+

+ 286 - 0
src/main/java/com/izouma/awesomeadmin/model/ClientOrderImage.java

@@ -0,0 +1,286 @@
+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 ClientOrderImage {
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private Integer clientOrderId;
+    private Integer orderId;
+    private Integer typeFlag;
+    private String name;
+    private Integer pid;
+    private Integer userId;
+    private String localPath;
+    private BigDecimal size;
+    private String fullName;
+    private Integer statusFlag;
+    private String remark;
+    private String ossArtwork;
+    private String ossThumbnail;
+    private String cleanFlag;
+    private Integer storeId;
+
+    private List<ClientOrderImage> children;
+
+    private String idStr;
+
+    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 Integer getClientOrderId() {
+        return this.clientOrderId;
+    }
+
+    public void setClientOrderId(Integer clientOrderId) {
+        this.clientOrderId = clientOrderId;
+    }
+
+    public Integer getOrderId() {
+        return this.orderId;
+    }
+
+    public void setOrderId(Integer orderId) {
+        this.orderId = orderId;
+    }
+
+    public Integer getTypeFlag() {
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(Integer typeFlag) {
+        this.typeFlag = typeFlag;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getPid() {
+        return this.pid;
+    }
+
+    public void setPid(Integer pid) {
+        this.pid = pid;
+    }
+
+    public Integer getUserId() {
+        return this.userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getLocalPath() {
+        return this.localPath;
+    }
+
+    public void setLocalPath(String localPath) {
+        this.localPath = localPath;
+    }
+
+    public BigDecimal getSize() {
+        return this.size;
+    }
+
+    public void setSize(BigDecimal size) {
+        this.size = size;
+    }
+
+    public String getFullName() {
+        return this.fullName;
+    }
+
+    public void setFullName(String fullName) {
+        this.fullName = fullName;
+    }
+
+    public Integer getStatusFlag() {
+        return this.statusFlag;
+    }
+
+    public void setStatusFlag(Integer statusFlag) {
+        this.statusFlag = statusFlag;
+    }
+
+    public String getRemark() {
+        return this.remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getOssArtwork() {
+        return this.ossArtwork;
+    }
+
+    public void setOssArtwork(String ossArtwork) {
+        this.ossArtwork = ossArtwork;
+    }
+
+    public String getOssThumbnail() {
+        return this.ossThumbnail;
+    }
+
+    public void setOssThumbnail(String ossThumbnail) {
+        this.ossThumbnail = ossThumbnail;
+    }
+
+    public String getCleanFlag() {
+        return this.cleanFlag;
+    }
+
+    public void setCleanFlag(String cleanFlag) {
+        this.cleanFlag = cleanFlag;
+    }
+
+    public Integer getStoreId() {
+        return this.storeId;
+    }
+
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
+    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 String getIdStr() {
+        return idStr;
+    }
+
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+
+    public List<ClientOrderImage> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<ClientOrderImage> children) {
+        this.children = children;
+    }
+
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof ClientOrderImage) {
+            return Objects.equals(this.id, ((ClientOrderImage) obj).getId());
+        }
+        return super.equals(obj);
+    }
+
+    @Override
+    public int hashCode() {
+        return this.id.hashCode();
+    }
+
+    @Override
+    public ClientOrderImage clone() {
+        ClientOrderImage image = null;
+        try {
+            image = (ClientOrderImage) super.clone();
+        } catch (CloneNotSupportedException e) {
+            e.printStackTrace();
+        }
+        return image;
+    }
+
+
+}
+

+ 39 - 0
src/main/java/com/izouma/awesomeadmin/model/OrderImage.java

@@ -119,6 +119,21 @@ public class OrderImage {
 
     private Integer limitNum;
 
+    /**
+     * 客户端订单
+     */
+    private Integer clientOrderId;
+
+    /**
+     * 客户端标识
+     */
+    private String clientFlag;
+
+    /**
+     * 客户端订单图片ID
+     */
+    private Integer clientOrderImageId;
+
     public Integer getId() {
         return this.id;
     }
@@ -423,5 +438,29 @@ public class OrderImage {
     public void setLimitNum(Integer limitNum) {
         this.limitNum = limitNum;
     }
+
+    public Integer getClientOrderId() {
+        return clientOrderId;
+    }
+
+    public void setClientOrderId(Integer clientOrderId) {
+        this.clientOrderId = clientOrderId;
+    }
+
+    public String getClientFlag() {
+        return clientFlag;
+    }
+
+    public void setClientFlag(String clientFlag) {
+        this.clientFlag = clientFlag;
+    }
+
+    public Integer getClientOrderImageId() {
+        return clientOrderImageId;
+    }
+
+    public void setClientOrderImageId(Integer clientOrderImageId) {
+        this.clientOrderImageId = clientOrderImageId;
+    }
 }
 

+ 39 - 0
src/main/java/com/izouma/awesomeadmin/model/StoreInfo.java

@@ -108,6 +108,21 @@ public class StoreInfo {
      */
     private String signing;
 
+    /**
+     * 相册价格
+     */
+    private Integer albumPrice;
+
+    /**
+     * 比率标识
+     */
+    private String rateFlag;
+
+    /**
+     * 订单比率
+     */
+    private Integer orderRate;
+
 
     private List<ProductInfo> productInfoList;
 
@@ -521,5 +536,29 @@ public class StoreInfo {
     public void setSigning(String signing) {
         this.signing = signing;
     }
+
+    public Integer getAlbumPrice() {
+        return albumPrice;
+    }
+
+    public void setAlbumPrice(Integer albumPrice) {
+        this.albumPrice = albumPrice;
+    }
+
+    public String getRateFlag() {
+        return rateFlag;
+    }
+
+    public void setRateFlag(String rateFlag) {
+        this.rateFlag = rateFlag;
+    }
+
+    public Integer getOrderRate() {
+        return orderRate;
+    }
+
+    public void setOrderRate(Integer orderRate) {
+        this.orderRate = orderRate;
+    }
 }
 

+ 52 - 0
src/main/java/com/izouma/awesomeadmin/model/UserOrder.java

@@ -122,6 +122,26 @@ public class UserOrder {
 
     private String remarkFile;
 
+    /**
+     * 客户端订单ID
+     */
+    private Integer clientOrderId;
+
+    /**
+     * 相册数量
+     */
+    private Integer albumQuantity;
+
+    /**
+     * 相册状态
+     */
+    private Integer albumStatus;
+
+    /**
+     * 客户端标识
+     */
+    private String clientFlag;
+
     public Integer getId() {
         return this.id;
     }
@@ -553,5 +573,37 @@ public class UserOrder {
     public void setRemarkFile(String remarkFile) {
         this.remarkFile = remarkFile;
     }
+
+    public Integer getClientOrderId() {
+        return clientOrderId;
+    }
+
+    public void setClientOrderId(Integer clientOrderId) {
+        this.clientOrderId = clientOrderId;
+    }
+
+    public Integer getAlbumQuantity() {
+        return albumQuantity;
+    }
+
+    public void setAlbumQuantity(Integer albumQuantity) {
+        this.albumQuantity = albumQuantity;
+    }
+
+    public Integer getAlbumStatus() {
+        return albumStatus;
+    }
+
+    public void setAlbumStatus(Integer albumStatus) {
+        this.albumStatus = albumStatus;
+    }
+
+    public String getClientFlag() {
+        return clientFlag;
+    }
+
+    public void setClientFlag(String clientFlag) {
+        this.clientFlag = clientFlag;
+    }
 }
 

+ 27 - 0
src/main/java/com/izouma/awesomeadmin/service/ClientNoticeService.java

@@ -0,0 +1,27 @@
+package com.izouma.awesomeadmin.service;
+
+import java.util.*;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.ClientNotice;
+
+
+/**
+*  service接口类
+*/
+public interface ClientNoticeService{
+
+    List<ClientNotice> getClientNoticeList(ClientNotice record);
+
+    List<ClientNotice> getClientNoticeByPage(Page page, ClientNotice record);
+
+    ClientNotice getClientNoticeById(String id);
+
+    ClientNotice getClientNotice(ClientNotice record);
+
+    boolean createClientNotice(ClientNotice record);
+
+    boolean deleteClientNotice(ClientNotice record);
+
+    boolean updateClientNotice(ClientNotice record);
+}
+

+ 33 - 0
src/main/java/com/izouma/awesomeadmin/service/ClientOrderImageService.java

@@ -0,0 +1,33 @@
+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.ClientOrderImage;
+
+
+/**
+ * service接口类
+ */
+public interface ClientOrderImageService {
+
+    List<ClientOrderImage> getClientOrderImageList(ClientOrderImage record);
+
+    List<ClientOrderImage> getClientOrderImageByPage(Page page, ClientOrderImage record);
+
+    ClientOrderImage getClientOrderImageById(String id);
+
+    ClientOrderImage getClientOrderImage(ClientOrderImage record);
+
+    boolean createClientOrderImage(ClientOrderImage record);
+
+    boolean deleteClientOrderImage(ClientOrderImage record);
+
+    boolean updateClientOrderImage(ClientOrderImage record);
+
+    List<ClientOrderImage> getImageTree(ClientOrderImage record);
+
+    Result saveTree(ClientOrderImage record);
+}
+

+ 33 - 0
src/main/java/com/izouma/awesomeadmin/service/ClientOrderService.java

@@ -0,0 +1,33 @@
+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.ClientOrder;
+
+
+/**
+ * service接口类
+ */
+public interface ClientOrderService {
+
+    List<ClientOrder> getClientOrderList(ClientOrder record);
+
+    List<ClientOrder> getClientOrderByPage(Page page, ClientOrder record);
+
+    ClientOrder getClientOrderById(String id);
+
+    ClientOrder getClientOrder(ClientOrder record);
+
+    boolean createClientOrder(ClientOrder record);
+
+    boolean deleteClientOrder(ClientOrder record);
+
+    boolean updateClientOrder(ClientOrder record);
+
+    Result submitClientOrder(ClientOrder record);
+
+    Result payOrder(String orderId, double coin, double point, double cash, int payMode);
+}
+

+ 137 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/ClientNoticeServiceImpl.java

@@ -0,0 +1,137 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import java.util.*;
+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.ClientNotice;
+import com.izouma.awesomeadmin.service.ClientNoticeService;
+import com.izouma.awesomeadmin.dao.ClientNoticeMapper;
+
+/**
+*  service接口实现类
+*/
+@Service
+public class ClientNoticeServiceImpl implements ClientNoticeService{
+
+    private static Logger logger = Logger.getLogger(ClientNoticeServiceImpl.class);
+
+    @Autowired
+    private ClientNoticeMapper clientNoticeMapper;
+
+    @Override
+    public List<ClientNotice> getClientNoticeList(ClientNotice record) {
+
+        logger.info("getClientNoticeList");
+        try {
+
+        return clientNoticeMapper.queryAllClientNotice(record);
+        } catch (Exception e) {
+        logger.error("getClientNoticeList", e);
+        }
+
+        return null;
+    }
+    @Override
+    public List<ClientNotice> getClientNoticeByPage(Page page, ClientNotice record) {
+
+        logger.info("getClientNoticeByPage");
+        try {
+
+        Map<String, Object> parameter = new HashMap<String, Object>();
+        parameter.put("record", record);
+        parameter.put(AppConstant.PAGE, page);
+
+        return clientNoticeMapper.queryClientNoticeByPage(parameter);
+        } catch (Exception e) {
+        logger.error("getClientNoticeByPage", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public ClientNotice getClientNoticeById(String id) {
+
+        logger.info("getClientNoticeyId");
+        try {
+
+            return clientNoticeMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+        logger.error("getClientNoticeById", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public ClientNotice getClientNotice(ClientNotice record) {
+
+        logger.info("getClientNotice");
+        try {
+
+            return clientNoticeMapper.queryClientNotice(record);
+        } catch (Exception e) {
+        logger.error("getClientNotice", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public boolean createClientNotice(ClientNotice record) {
+
+        logger.info("createClientNotice");
+        try {
+
+            int updates = clientNoticeMapper.insertSelective(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+            logger.error("createClientNotice", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean deleteClientNotice(ClientNotice record) {
+
+        logger.info("deleteClientNotice");
+        try {
+
+             int updates = clientNoticeMapper.delete(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("deleteClientNotice", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean updateClientNotice(ClientNotice record) {
+
+        logger.info("updateClientNotice");
+        try {
+
+            int updates = clientNoticeMapper.updateByPrimaryKeySelective(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("updateClientNotice", e);
+        }
+
+        return false;
+    }
+}
+

+ 220 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/ClientOrderImageServiceImpl.java

@@ -0,0 +1,220 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import java.util.*;
+
+import com.izouma.awesomeadmin.dto.Result;
+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.ClientOrderImage;
+import com.izouma.awesomeadmin.service.ClientOrderImageService;
+import com.izouma.awesomeadmin.dao.ClientOrderImageMapper;
+
+/**
+ * service接口实现类
+ */
+@Service
+public class ClientOrderImageServiceImpl implements ClientOrderImageService {
+
+    private static Logger logger = Logger.getLogger(ClientOrderImageServiceImpl.class);
+
+    @Autowired
+    private ClientOrderImageMapper clientOrderImageMapper;
+
+    @Override
+    public List<ClientOrderImage> getClientOrderImageList(ClientOrderImage record) {
+
+        logger.info("getClientOrderImageList");
+        try {
+
+            return clientOrderImageMapper.queryAllClientOrderImage(record);
+        } catch (Exception e) {
+            logger.error("getClientOrderImageList", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public List<ClientOrderImage> getClientOrderImageByPage(Page page, ClientOrderImage record) {
+
+        logger.info("getClientOrderImageByPage");
+        try {
+
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return clientOrderImageMapper.queryClientOrderImageByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getClientOrderImageByPage", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public ClientOrderImage getClientOrderImageById(String id) {
+
+        logger.info("getClientOrderImageyId");
+        try {
+
+            return clientOrderImageMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getClientOrderImageById", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public ClientOrderImage getClientOrderImage(ClientOrderImage record) {
+
+        logger.info("getClientOrderImage");
+        try {
+
+            return clientOrderImageMapper.queryClientOrderImage(record);
+        } catch (Exception e) {
+            logger.error("getClientOrderImage", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public boolean createClientOrderImage(ClientOrderImage record) {
+
+        logger.info("createClientOrderImage");
+        try {
+
+            int updates = clientOrderImageMapper.insertSelective(record);
+
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("createClientOrderImage", e);
+        }
+
+        return false;
+    }
+
+
+    private boolean saveClientOrderImage(ClientOrderImage record) {
+
+        logger.info("saveClientOrderImage");
+        try {
+
+            int updates = clientOrderImageMapper.insertSelective(record);
+
+            if (updates > 0) {
+                for (ClientOrderImage clientOrderImage : record.getChildren()) {
+
+                    clientOrderImage.setPid(record.getId());
+                    saveClientOrderImage(clientOrderImage);
+                }
+
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("saveClientOrderImage", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public Result saveTree(ClientOrderImage record) {
+
+        logger.info("saveTree");
+        try {
+
+
+            saveClientOrderImage(record);
+
+            return new Result(true, "保存成功");
+
+        } catch (Exception e) {
+            logger.error("saveTree", e);
+        }
+
+        return new Result(false, "保存失败");
+    }
+
+    @Override
+    public boolean deleteClientOrderImage(ClientOrderImage record) {
+
+        logger.info("deleteClientOrderImage");
+        try {
+
+            int updates = clientOrderImageMapper.delete(record);
+
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("deleteClientOrderImage", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean updateClientOrderImage(ClientOrderImage record) {
+
+        logger.info("updateClientOrderImage");
+        try {
+
+            int updates = clientOrderImageMapper.updateByPrimaryKeySelective(record);
+
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("updateClientOrderImage", e);
+        }
+
+        return false;
+    }
+
+
+    @Override
+    public List<ClientOrderImage> getImageTree(ClientOrderImage record) {
+        logger.info("getImageTree");
+        try {
+            List<ClientOrderImage> allImages = getClientOrderImageList(record);
+            List<ClientOrderImage> tree = new ArrayList<>();
+            makeTree(allImages, tree);
+            return tree;
+        } catch (Exception e) {
+            logger.error("getImageTree", e);
+        }
+        return null;
+    }
+
+
+    private void makeTree(List<ClientOrderImage> nodes, List<ClientOrderImage> tree) {
+        for (ClientOrderImage image : nodes) {
+            if (image.getPid() == 0) {
+                tree.add(image);
+            }
+            for (ClientOrderImage node : nodes) {
+                if (node.getPid().equals(image.getId())) {
+                    if (image.getChildren() == null) {
+                        image.setChildren(new ArrayList<>());
+                    }
+                    image.getChildren().add(node);
+                }
+            }
+            if (image.getChildren() != null) {
+                image.getChildren().sort(Comparator.comparingInt(o -> o.getId().intValue()));
+            }
+        }
+        tree.sort(Comparator.comparingInt(o -> o.getId().intValue()));
+    }
+
+
+}
+

+ 476 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/ClientOrderServiceImpl.java

@@ -0,0 +1,476 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+import com.izouma.awesomeadmin.dao.*;
+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.MbappUtil;
+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.service.ClientOrderService;
+
+/**
+ * service接口实现类
+ */
+@Service
+public class ClientOrderServiceImpl implements ClientOrderService {
+
+    private static Logger logger = Logger.getLogger(ClientOrderServiceImpl.class);
+
+    @Autowired
+    private ClientOrderMapper clientOrderMapper;
+
+    @Autowired
+    private ProductInfoMapper productInfoMapper;
+
+    @Autowired
+    private UserCouponMapper userCouponMapper;
+
+    @Autowired
+    private CouponDetailMapper couponDetailMapper;
+
+    @Autowired
+    private UserOrderMapper userOrderMapper;
+
+    @Autowired
+    private UserInfoService userInfoService;
+
+    @Autowired
+    private MemberPointService memberPointService;
+
+    @Autowired
+    private MemberCoinService memberCoinService;
+
+    @Override
+    public List<ClientOrder> getClientOrderList(ClientOrder record) {
+
+        logger.info("getClientOrderList");
+        try {
+
+            return clientOrderMapper.queryAllClientOrder(record);
+        } catch (Exception e) {
+            logger.error("getClientOrderList", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public List<ClientOrder> getClientOrderByPage(Page page, ClientOrder record) {
+
+        logger.info("getClientOrderByPage");
+        try {
+
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return clientOrderMapper.queryClientOrderByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getClientOrderByPage", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public ClientOrder getClientOrderById(String id) {
+
+        logger.info("getClientOrderyId");
+        try {
+
+            return clientOrderMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getClientOrderById", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public ClientOrder getClientOrder(ClientOrder record) {
+
+        logger.info("getClientOrder");
+        try {
+
+            return clientOrderMapper.queryClientOrder(record);
+        } catch (Exception e) {
+            logger.error("getClientOrder", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public boolean createClientOrder(ClientOrder record) {
+
+        logger.info("createClientOrder");
+        try {
+
+            int updates = clientOrderMapper.insertSelective(record);
+
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("createClientOrder", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public Result submitClientOrder(ClientOrder record) {
+
+        logger.info("submitClientOrder");
+        try {
+
+            record.setOrderCode(MbappUtil.getOrderIdByUUId());
+            if (record.getQuantity() != null && record.getUnitPrice() != null && record.getAlbumPrice() != null) {
+                BigDecimal unitPrice = record.getUnitPrice();
+                BigDecimal albumPrice = record.getAlbumPrice();
+
+                /**
+                 * 计算价格开始
+                 */
+                ProductInfo productInfo = new ProductInfo();
+                productInfo.setId(record.getProductId());
+
+                productInfo = productInfoMapper.queryProductInfo(productInfo);
+
+                if (productInfo != null) {
+                    unitPrice = productInfo.getPrice();
+
+                    if (productInfo.getProductPriceList() != null && productInfo.getProductPriceList().size() > 0) {
+                        for (ProductPrice productPrice : productInfo.getProductPriceList()) {
+                            if (productPrice.getMaxCounts() != null
+                                    && productPrice.getMinCounts() != null
+                                    && record.getQuantity() <= productPrice.getMaxCounts()
+                                    && record.getQuantity() >= productPrice.getMinCounts()) {
+                                unitPrice = productPrice.getPrice();
+                            } else if (productPrice.getMaxCounts() == null
+                                    && productPrice.getMinCounts() != null
+                                    && record.getQuantity() >= productPrice.getMinCounts()) {
+                                unitPrice = productPrice.getPrice();
+                            } else if (productPrice.getMinCounts() == null
+                                    && productPrice.getMaxCounts() != null
+                                    && record.getQuantity() <= productPrice.getMaxCounts()) {
+                                unitPrice = productPrice.getPrice();
+                            }
+                        }
+                    }
+
+                    StoreInfo storeInfo = productInfo.getStoreInfo();
+                    if (storeInfo != null) {
+                        albumPrice = BigDecimal.valueOf(storeInfo.getAlbumPrice());
+                    }
+                }
+                /**
+                 * 计算价格结束
+                 */
+
+                BigDecimal totlePrice = unitPrice.multiply(BigDecimal.valueOf(record.getQuantity()));
+
+                BigDecimal imagesPrice = totlePrice;
+                BigDecimal albumTotalPrice = BigDecimal.ZERO;
+
+                if (albumPrice.compareTo(BigDecimal.ZERO) > 0 && record.getAlbumQuantity() > 0) {//加上相册价格。
+                    albumTotalPrice = albumPrice.multiply(BigDecimal.valueOf(record.getAlbumQuantity()));
+                    totlePrice = totlePrice.add(albumTotalPrice);
+                }
+
+                record.setTotlePrice(totlePrice);
+                BigDecimal dealPrice = totlePrice;
+
+
+                /**
+                 * 优惠券
+                 */
+                if (record.getUserCouponId() != null) {
+                    UserCoupon userCoupon = userCouponMapper.selectByPrimaryKey(record.getUserCouponId());
+                    if (userCoupon != null) {
+                        if (record.getStoreId().equals(userCoupon.getStoreId())) {//订单ID和优惠券ID相等
+                            CouponInfo couponInfo = userCoupon.getCouponInfo();
+                            if (couponInfo != null) {
+                                if (new Date().after(couponInfo.getBeginTime()) && new Date().before(couponInfo.getEndTime())) {//在可用时间内
+                                    BigDecimal discountMoney = couponInfo.getDiscountMoney();
+                                    BigDecimal limitMoney = couponInfo.getLimitMoney();
+                                    if (totlePrice.compareTo(limitMoney) > 0) {
+                                        dealPrice = totlePrice.subtract(discountMoney);
+
+                                        userCoupon.setIsUsed("Y");
+                                        userCouponMapper.updateByPrimaryKeySelective(userCoupon);
+
+                                        CouponDetail couponDetail = new CouponDetail();
+                                        couponDetail.setId(userCoupon.getCouponDetailId());
+                                        couponDetail.setUseTime(new Date());
+                                        couponDetail.setUseFlag("Y");
+                                        couponDetailMapper.updateByPrimaryKeySelective(couponDetail);
+
+                                    }
+
+                                }
+                            }
+
+                        }
+                    }
+
+
+                }
+
+                record.setDealPrice(dealPrice);
+                record.setOffPrice(totlePrice.subtract(dealPrice));
+
+
+                int updates = clientOrderMapper.insertSelective(record);
+
+                if (updates > 0) {
+
+                    //创建Web订单。
+                    for (UserOrder userOrder : record.getUserOrderList()) {
+                        userOrder.setCreateUser("客户端");
+                        userOrder.setUserId(record.getUserId());
+                        userOrder.setOrderCode(MbappUtil.getOrderIdByUUId());
+                        userOrder.setStoreId(record.getStoreId());
+                        userOrder.setProductType(record.getProductType());
+                        userOrder.setProductId(record.getProductId());
+                        userOrder.setProductName(record.getProductName());
+                        userOrder.setSpecification(record.getSpecification());
+                        userOrder.setUnitPrice(record.getUnitPrice());
+
+                        BigDecimal userOrderImagesPrice = dealPrice.multiply(
+                                BigDecimal.valueOf(userOrder.getQuantity().doubleValue() / record.getQuantity()).multiply(
+                                        imagesPrice.divide(totlePrice).multiply(dealPrice)
+                                )
+                        );
+
+                        BigDecimal userOrderAlbumTotalPrice = dealPrice.multiply(
+                                BigDecimal.valueOf(userOrder.getAlbumQuantity().doubleValue() / record.getAlbumQuantity()).multiply(
+                                        albumTotalPrice.divide(totlePrice).multiply(dealPrice)
+                                )
+                        );
+
+                        BigDecimal userOrderPrice = userOrderImagesPrice.add(userOrderAlbumTotalPrice);
+
+                        userOrder.setTotlePrice(userOrderPrice);
+                        userOrder.setDealPrice(userOrderPrice);
+                        userOrder.setOffPrice(BigDecimal.ZERO);
+
+                        userOrder.setClientOrderId(record.getId());
+                        userOrder.setClientFlag("Y");
+
+                        userOrderMapper.insertSelective(userOrder);
+
+
+                    }
+
+
+                    //购买减库存。
+                    if (productInfo != null) {
+                        ProductInfo updateProduct = new ProductInfo();
+
+                        updateProduct.setId(productInfo.getId());
+                        updateProduct.setInventory(productInfo.getInventory() - record.getQuantity());
+                        updateProduct.setSalesVolume(productInfo.getSalesVolume() + record.getQuantity());
+                        productInfoMapper.updateByPrimaryKeySelective(updateProduct);
+                    }
+
+                    return new Result(true, record.getId());
+                }
+
+            }
+        } catch (Exception e) {
+            logger.error("submitClientOrder", e);
+        }
+
+        return new Result(false, "下单失败");
+    }
+
+    @Override
+    public boolean deleteClientOrder(ClientOrder record) {
+
+        logger.info("deleteClientOrder");
+        try {
+
+            int updates = clientOrderMapper.delete(record);
+
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("deleteClientOrder", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean updateClientOrder(ClientOrder record) {
+
+        logger.info("updateClientOrder");
+        try {
+
+            int updates = clientOrderMapper.updateByPrimaryKeySelective(record);
+
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("updateClientOrder", e);
+        }
+
+        return false;
+    }
+
+
+    @Override
+    public Result payOrder(String orderId, double coin, double point, double cash, int payMode) {
+
+        logger.info("payOrder:支付订单");
+        try {
+
+            ClientOrder clientOrder = new ClientOrder();
+
+            clientOrder.setId(Integer.valueOf(orderId));
+
+            clientOrder = clientOrderMapper.queryClientOrder(clientOrder);
+
+            if (clientOrder == null) {
+                return new Result(false, "支付失败,订单不存在");
+            }
+
+            double money = clientOrder.getDealPrice().doubleValue();
+
+            if (AppConstant.PayMode.COIN == payMode) {
+                //如果支付总额不足则用余额补足;
+                if (money > (coin + point + cash)) {
+                    coin = money - point - cash;
+                }
+            }
+
+
+            UserInfo userInfo = userInfoService.getUserInfoById(clientOrder.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(clientOrder.getUserId() + "");
+                memberPoint.setMoney(String.valueOf(-point + 0.0));
+                memberPoint.setBalance(String.valueOf(moneyPoint - point));
+                memberPoint.setTypeFlag(AppConstant.CoinType.CLIENT_CONSUMPTION);
+                memberPoint.setRemark("客户端消费,订单号:" + clientOrder.getOrderCode());
+                memberPointService.createMemberPoint(memberPoint);
+
+
+            }
+
+
+            // 个人店铺,只能用余额支付
+            if (coin > 0) {
+
+                MemberCoin memberCoin = new MemberCoin();
+                memberCoin.setCreateUser("客户端消费");
+                memberCoin.setOrderId(orderId);
+                memberCoin.setUserId(clientOrder.getUserId() + "");
+                memberCoin.setMoney(String.valueOf(-coin + 0.0));
+                memberCoin.setBalance(String.valueOf(moneyCoin - coin));
+                memberCoin.setTypeFlag(AppConstant.CoinType.CLIENT_CONSUMPTION);
+                memberCoin.setRemark("客户端消费,订单号:" + clientOrder.getOrderCode());
+                memberCoinService.createMemberCoin(memberCoin);
+
+            }
+
+
+            UserInfo updateUser = new UserInfo();
+            updateUser.setId(clientOrder.getUserId());
+            updateUser.setMoneyCoin(moneyCoin - coin);
+            updateUser.setMoneyPoint(moneyPoint - point);
+            userInfoService.updateUserInfo(updateUser);
+
+            //更新为已经支付
+            ClientOrder clientOrderPay = new ClientOrder();
+
+            clientOrderPay.setId(Integer.valueOf(orderId));
+            clientOrderPay.setCoin(BigDecimal.valueOf(coin));
+            clientOrderPay.setPoint(BigDecimal.valueOf(point));
+            clientOrderPay.setCash(BigDecimal.valueOf(cash));
+            clientOrderPay.setPayMode(payMode);
+            clientOrderPay.setPayTime(new Date());
+            clientOrderPay.setStatusFlag(AppConstant.OrderStatus.PAY_OVER);
+
+            clientOrderMapper.updateByPrimaryKeySelective(clientOrderPay);
+
+            for (UserOrder userOrder : clientOrder.getUserOrderList()) {//更改订单状态
+
+                userOrder.setCoin(userOrder.getDealPrice());
+                userOrder.setPayMode(AppConstant.PayMode.CLIENT);
+                userOrder.setPayTime(new Date());
+                userOrder.setStatusFlag(AppConstant.OrderStatus.PAY_OVER);
+                userOrderMapper.updateByPrimaryKeySelective(userOrder);
+
+
+            }
+
+
+            /**
+             * 发送短信通知商家 begin
+             */
+            ProductInfo productInfo = new ProductInfo();
+            productInfo.setId(clientOrder.getProductId());
+            productInfo = productInfoMapper.queryProductInfo(productInfo);
+            if (productInfo != null) {
+                UserInfo shangJiaUser = userInfoService.getUserInfoById(productInfo.getStoreInfo().getUserId() + "");
+
+                if (shangJiaUser != null) {
+                    MsgUtil.sendOrderSms(shangJiaUser.getPhone(), clientOrder.getOrderCode(), "客户端订单完成付款");
+                }
+            }
+            /**
+             * 发送短信通知商家 end
+             */
+
+
+            return new Result(true, "支付成功");
+        } catch (Exception e) {
+            logger.error("payOrder:支付订单异常", e);
+        }
+        return new Result(false, "支付失败");
+    }
+}
+

+ 164 - 0
src/main/java/com/izouma/awesomeadmin/web/ClientNoticeController.java

@@ -0,0 +1,164 @@
+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.*;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.ClientNotice;
+import com.izouma.awesomeadmin.service.ClientNoticeService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+*  controller类
+*/
+@Controller
+@RequestMapping("/clientNotice")
+public class ClientNoticeController {
+
+    @Autowired
+    private ClientNoticeService clientNoticeService;
+
+    /**
+    * <p>获取全部记录。</p>
+    */
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(ClientNotice record) {
+        List<ClientNotice> pp = clientNoticeService.getClientNoticeList(record);
+        return new Result(true, pp);
+    }
+
+    /**
+    * <p>根据Id。</p>
+    */
+    @RequestMapping(value = "/getClientNotice", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getClientNotice(@RequestParam(required = false, value = "id") String id) {
+        ClientNotice data = clientNoticeService.getClientNoticeById(id);
+        return new Result(true, data);
+    }
+
+    /**
+    * <p>根据条件获取。</p>
+    */
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(ClientNotice record) {
+        ClientNotice data = clientNoticeService.getClientNotice(record);
+        return new Result(true, data);
+    }
+
+
+    /**
+    * <p>分页查询。</p>
+    */
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, ClientNotice record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<ClientNotice> pp =clientNoticeService.getClientNoticeByPage(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(ClientNotice record) {
+        boolean num = clientNoticeService.createClientNotice(record);
+        if (num) {
+        return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+    * <p>更新信息。</p>
+    */
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateClientNotice(ClientNotice record) {
+        boolean num = clientNoticeService.updateClientNotice(record);
+        if (num) {
+        return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+    * <p>删除。</p>
+    */
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteClientNotice(ClientNotice record) {
+
+        boolean num = clientNoticeService.deleteClientNotice(record);
+        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, ClientNotice record) throws Exception {
+
+    List<ClientNotice> clientNotices = clientNoticeService.getClientNoticeList(record);
+
+
+        String sheetName = "client_notice";
+        String titleName = "客户端通知数据表";
+        String fileName = "客户端通知表";
+        int columnNumber = 13;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "客户端订单ID" ,   "web订单ID" ,   "用户" ,   "商品" ,   "店铺" ,   "内容" ,   "状态"  };
+        String[][] dataList = new String[clientNotices.size()][13];
+
+        for (int i = 0; i < clientNotices.size(); i++) {
+
+                        dataList[i][0] = String.valueOf(clientNotices.get(i).getId());
+                        dataList[i][1] = String.valueOf(clientNotices.get(i).getDelFlag());
+                        dataList[i][2] = String.valueOf(clientNotices.get(i).getUpdateTime());
+                        dataList[i][3] = String.valueOf(clientNotices.get(i).getUpdateUser());
+                        dataList[i][4] = String.valueOf(clientNotices.get(i).getCreateTime());
+                        dataList[i][5] = String.valueOf(clientNotices.get(i).getCreateUser());
+                        dataList[i][6] = String.valueOf(clientNotices.get(i).getClientOrderId());
+                        dataList[i][7] = String.valueOf(clientNotices.get(i).getOrderId());
+                        dataList[i][8] = String.valueOf(clientNotices.get(i).getUserId());
+                        dataList[i][9] = String.valueOf(clientNotices.get(i).getProductId());
+                        dataList[i][10] = String.valueOf(clientNotices.get(i).getStoreId());
+                        dataList[i][11] = String.valueOf(clientNotices.get(i).getRemark());
+                        dataList[i][12] = String.valueOf(clientNotices.get(i).getStatusFlag());
+                    }
+
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+        columnNumber, columnWidth, columnName, dataList, response);
+
+
+        }
+    }
+

+ 208 - 0
src/main/java/com/izouma/awesomeadmin/web/ClientOrderController.java

@@ -0,0 +1,208 @@
+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.*;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.ClientOrder;
+import com.izouma.awesomeadmin.service.ClientOrderService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * controller类
+ */
+@Controller
+@RequestMapping("/clientOrder")
+public class ClientOrderController {
+
+    @Autowired
+    private ClientOrderService clientOrderService;
+
+    /**
+     * <p>获取全部记录。</p>
+     */
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(ClientOrder record) {
+        List<ClientOrder> pp = clientOrderService.getClientOrderList(record);
+        return new Result(true, pp);
+    }
+
+    /**
+     * <p>根据Id。</p>
+     */
+    @RequestMapping(value = "/getClientOrder", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getClientOrder(@RequestParam(required = false, value = "id") String id) {
+        ClientOrder data = clientOrderService.getClientOrderById(id);
+        return new Result(true, data);
+    }
+
+    /**
+     * <p>根据条件获取。</p>
+     */
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(ClientOrder record) {
+        ClientOrder data = clientOrderService.getClientOrder(record);
+        return new Result(true, data);
+    }
+
+
+    /**
+     * <p>分页查询。</p>
+     */
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, ClientOrder record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<ClientOrder> pp = clientOrderService.getClientOrderByPage(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(ClientOrder record) {
+        boolean num = clientOrderService.createClientOrder(record);
+        if (num) {
+            return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+     * 提交订单, ClientOrder json
+     *
+     * @param record
+     * @return
+     */
+    @RequestMapping(value = "/submit", method = RequestMethod.POST)
+    @ResponseBody
+    public Result submit(@RequestBody ClientOrder record) {
+
+        return clientOrderService.submitClientOrder(record);
+    }
+
+    /**
+     * <p>更新信息。</p>
+     */
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateClientOrder(ClientOrder record) {
+        boolean num = clientOrderService.updateClientOrder(record);
+        if (num) {
+            return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+     * <p>删除。</p>
+     */
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteClientOrder(ClientOrder record) {
+
+        boolean num = clientOrderService.deleteClientOrder(record);
+        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, ClientOrder record) throws Exception {
+
+        List<ClientOrder> clientOrders = clientOrderService.getClientOrderList(record);
+
+
+        String sheetName = "client_order";
+        String titleName = "客户端订单数据表";
+        String fileName = "客户端订单表";
+        int columnNumber = 32;
+        int[] columnWidth = {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20};
+        String[] columnName = {"id", "删除标识", "更新时间", "更新人", "创建时间", "创建人", "用户", "订单编码", "店铺", "商品类型", "商品ID", "商品名称", "规格", "单价", "数量", "优惠券", "优惠金额", "总价", "成交价", "支付方式", "支付时间", "备注", "显示标识", "状态", "手续费", "余额", "积分", "现金", "取消原因", "相册价格", "相册数量", "订单名称"};
+        String[][] dataList = new String[clientOrders.size()][32];
+
+        for (int i = 0; i < clientOrders.size(); i++) {
+
+            dataList[i][0] = String.valueOf(clientOrders.get(i).getId());
+            dataList[i][1] = String.valueOf(clientOrders.get(i).getDelFlag());
+            dataList[i][2] = String.valueOf(clientOrders.get(i).getUpdateTime());
+            dataList[i][3] = String.valueOf(clientOrders.get(i).getUpdateUser());
+            dataList[i][4] = String.valueOf(clientOrders.get(i).getCreateTime());
+            dataList[i][5] = String.valueOf(clientOrders.get(i).getCreateUser());
+            dataList[i][6] = String.valueOf(clientOrders.get(i).getUserId());
+            dataList[i][7] = String.valueOf(clientOrders.get(i).getOrderCode());
+            dataList[i][8] = String.valueOf(clientOrders.get(i).getStoreId());
+            dataList[i][9] = String.valueOf(clientOrders.get(i).getProductType());
+            dataList[i][10] = String.valueOf(clientOrders.get(i).getProductId());
+            dataList[i][11] = String.valueOf(clientOrders.get(i).getProductName());
+            dataList[i][12] = String.valueOf(clientOrders.get(i).getSpecification());
+            dataList[i][13] = String.valueOf(clientOrders.get(i).getUnitPrice());
+            dataList[i][14] = String.valueOf(clientOrders.get(i).getQuantity());
+            dataList[i][15] = String.valueOf(clientOrders.get(i).getUserCouponId());
+            dataList[i][16] = String.valueOf(clientOrders.get(i).getOffPrice());
+            dataList[i][17] = String.valueOf(clientOrders.get(i).getTotlePrice());
+            dataList[i][18] = String.valueOf(clientOrders.get(i).getDealPrice());
+            dataList[i][19] = String.valueOf(clientOrders.get(i).getPayMode());
+            dataList[i][20] = String.valueOf(clientOrders.get(i).getPayTime());
+            dataList[i][21] = String.valueOf(clientOrders.get(i).getRemark());
+            dataList[i][22] = String.valueOf(clientOrders.get(i).getShowFlag());
+            dataList[i][23] = String.valueOf(clientOrders.get(i).getStatusFlag());
+            dataList[i][24] = String.valueOf(clientOrders.get(i).getFee());
+            dataList[i][25] = String.valueOf(clientOrders.get(i).getCoin());
+            dataList[i][26] = String.valueOf(clientOrders.get(i).getPoint());
+            dataList[i][27] = String.valueOf(clientOrders.get(i).getCash());
+            dataList[i][28] = String.valueOf(clientOrders.get(i).getCancelReason());
+            dataList[i][29] = String.valueOf(clientOrders.get(i).getAlbumPrice());
+            dataList[i][30] = String.valueOf(clientOrders.get(i).getAlbumQuantity());
+            dataList[i][31] = String.valueOf(clientOrders.get(i).getOrderName());
+        }
+
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                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,
+                      @RequestParam(required = true, value = "point") double point, @RequestParam(required = true, value = "cash") double cash) {
+
+        return clientOrderService.payOrder(orderId, coin, point, cash, AppConstant.PayMode.COIN);
+
+    }
+
+}
+

+ 204 - 0
src/main/java/com/izouma/awesomeadmin/web/ClientOrderImageController.java

@@ -0,0 +1,204 @@
+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.*;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.ClientOrderImage;
+import com.izouma.awesomeadmin.service.ClientOrderImageService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * controller类
+ */
+@Controller
+@RequestMapping("/clientOrderImage")
+public class ClientOrderImageController {
+
+    @Autowired
+    private ClientOrderImageService clientOrderImageService;
+
+    /**
+     * <p>获取全部记录。</p>
+     */
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(ClientOrderImage record) {
+        List<ClientOrderImage> pp = clientOrderImageService.getClientOrderImageList(record);
+        return new Result(true, pp);
+    }
+
+    /**
+     * <p>根据Id。</p>
+     */
+    @RequestMapping(value = "/getClientOrderImage", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getClientOrderImage(@RequestParam(required = false, value = "id") String id) {
+        ClientOrderImage data = clientOrderImageService.getClientOrderImageById(id);
+        return new Result(true, data);
+    }
+
+    /**
+     * <p>根据条件获取。</p>
+     */
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(ClientOrderImage record) {
+        ClientOrderImage data = clientOrderImageService.getClientOrderImage(record);
+        return new Result(true, data);
+    }
+
+
+    /**
+     * <p>分页查询。</p>
+     */
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, ClientOrderImage record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<ClientOrderImage> pp = clientOrderImageService.getClientOrderImageByPage(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(ClientOrderImage record) {
+        boolean num = clientOrderImageService.createClientOrderImage(record);
+        if (num) {
+            return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+     * <p>更新信息。</p>
+     */
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateClientOrderImage(ClientOrderImage record) {
+        boolean num = clientOrderImageService.updateClientOrderImage(record);
+        if (num) {
+            return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+     * <p>删除。</p>
+     */
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteClientOrderImage(ClientOrderImage record) {
+
+        boolean num = clientOrderImageService.deleteClientOrderImage(record);
+        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, ClientOrderImage record) throws Exception {
+
+        List<ClientOrderImage> clientOrderImages = clientOrderImageService.getClientOrderImageList(record);
+
+
+        String sheetName = "client_order_image";
+        String titleName = "客户端订单图片数据表";
+        String fileName = "客户端订单图片表";
+        int columnNumber = 21;
+        int[] columnWidth = {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20};
+        String[] columnName = {"ID", "删除标识", "更新时间", "更新人", "创建时间", "创建人", "客户端订单ID", "web订单ID", "类型", "名称", "父级ID", "用户ID", "本地地址", "大小", "全名", "状态", "备注", "原图", "缩略图", "清理", "商铺ID"};
+        String[][] dataList = new String[clientOrderImages.size()][21];
+
+        for (int i = 0; i < clientOrderImages.size(); i++) {
+
+            dataList[i][0] = String.valueOf(clientOrderImages.get(i).getId());
+            dataList[i][1] = String.valueOf(clientOrderImages.get(i).getDelFlag());
+            dataList[i][2] = String.valueOf(clientOrderImages.get(i).getUpdateTime());
+            dataList[i][3] = String.valueOf(clientOrderImages.get(i).getUpdateUser());
+            dataList[i][4] = String.valueOf(clientOrderImages.get(i).getCreateTime());
+            dataList[i][5] = String.valueOf(clientOrderImages.get(i).getCreateUser());
+            dataList[i][6] = String.valueOf(clientOrderImages.get(i).getClientOrderId());
+            dataList[i][7] = String.valueOf(clientOrderImages.get(i).getOrderId());
+            dataList[i][8] = String.valueOf(clientOrderImages.get(i).getTypeFlag());
+            dataList[i][9] = String.valueOf(clientOrderImages.get(i).getName());
+            dataList[i][10] = String.valueOf(clientOrderImages.get(i).getPid());
+            dataList[i][11] = String.valueOf(clientOrderImages.get(i).getUserId());
+            dataList[i][12] = String.valueOf(clientOrderImages.get(i).getLocalPath());
+            dataList[i][13] = String.valueOf(clientOrderImages.get(i).getSize());
+            dataList[i][14] = String.valueOf(clientOrderImages.get(i).getFullName());
+            dataList[i][15] = String.valueOf(clientOrderImages.get(i).getStatusFlag());
+            dataList[i][16] = String.valueOf(clientOrderImages.get(i).getRemark());
+            dataList[i][17] = String.valueOf(clientOrderImages.get(i).getOssArtwork());
+            dataList[i][18] = String.valueOf(clientOrderImages.get(i).getOssThumbnail());
+            dataList[i][19] = String.valueOf(clientOrderImages.get(i).getCleanFlag());
+            dataList[i][20] = String.valueOf(clientOrderImages.get(i).getStoreId());
+        }
+
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                columnNumber, columnWidth, columnName, dataList, response);
+
+
+    }
+
+
+    /**
+     * 获取图片树
+     *
+     * @param record
+     * @return
+     */
+    @RequestMapping(value = "/imageTree", method = RequestMethod.GET)
+    @ResponseBody
+    public Result imageTree(ClientOrderImage record) {
+        List<ClientOrderImage> trees = clientOrderImageService.getImageTree(record);
+        if (trees != null) {
+            return new Result(true, trees);
+        }
+        return new Result(false, "获取失败");
+    }
+
+
+    /**
+     * 保存图片树
+     * ClientOrderImage 树形结构
+     *
+     * @param record
+     * @return
+     */
+    @RequestMapping(value = "/saveTree", method = RequestMethod.POST)
+    @ResponseBody
+    public Result saveTree(@RequestBody ClientOrderImage record) {
+        return clientOrderImageService.saveTree(record);
+    }
+}
+

+ 123 - 0
src/main/vue/src/pages/ClientNotice.vue

@@ -0,0 +1,123 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small"
+                 style="max-width: 500px;">
+                                                                                                                                                                                                                                    <el-form-item prop="clientOrderId" label="客户端订单ID">
+                <el-input v-model="formData.clientOrderId" :disabled="'clientOrderId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="orderId" label="web订单ID">
+                <el-input v-model="formData.orderId" :disabled="'orderId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="userId" label="用户">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="productId" label="商品">
+                <el-input v-model="formData.productId" :disabled="'productId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="storeId" label="店铺">
+                <el-input v-model="formData.storeId" :disabled="'storeId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark" label="内容">
+                <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="statusFlag" label="状态">
+                <el-input v-model="formData.statusFlag" :disabled="'statusFlag'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                        <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+    import formValidator from '../formValidator'
+
+    export default {
+        created() {
+            if (this.$route.query.column) {
+                this.subColumn = this.$route.query.column.split(',')[1];
+                this.subValue = this.$route.query.column.split(',')[0];
+            }
+
+            if (this.$route.query.id) {
+                this.$http.get({
+                    url: '/clientNotice/getOne',
+                    data: {
+                        id: this.$route.query.id
+                    }
+                }).then(res => {
+                    if (res.success) {
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+                        this.formData = res.data;
+
+                    if (this.$route.query.column) {
+                        this.formData[this.subColumn] = this.subValue;
+                    }
+                    }
+                })
+            }else {
+                if (this.$route.query.column) {
+                    this.formData[this.subColumn] = this.subValue;
+                }
+            }
+
+                                                                                                                                                                                                                                                                                                                                                                                                },
+        data() {
+            return {
+                saving: false,
+                formData: {},
+                rules: {
+                                                                                                                                                                                                                                                                                                                                                                                                },
+                                                                                                                    subColumn: '',
+            subValue: '',
+        }
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.submit();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            submit() {
+                var data = JSON.parse(JSON.stringify(this.formData));
+                this.$http.post({
+                    url: this.formData.id ? '/clientNotice/update' : '/clientNotice/save',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.$message.success('成功');
+                        this.$router.go(-1);
+                    } else {
+                        this.$message.warning('失败')
+                    }
+                });
+            },
+            onDelete() {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                    return this.$http.post({
+                    url: '/clientNotice/del',
+                    data: { id: this.formData.id }
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.$router.go(-1);
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+</style>

+ 503 - 0
src/main/vue/src/pages/ClientNotices.vue

@@ -0,0 +1,503 @@
+<template>
+    <div>
+        <div class="filters-container">
+        
+            <el-input placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item"></el-input>
+            <el-button @click="searchData" type="primary" size="small" icon="el-icon-search" class="filter-item">搜索
+            </el-button>
+            <el-button @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small"
+                       icon="el-icon-search" class="filter-item">高级查询
+            </el-button>
+            <el-button @click="showTableSortDialog = !showTableSortDialog" type="primary" size="small"
+                       icon="el-icon-sort" class="filter-item">排序
+            </el-button>
+            <el-button @click="$router.push({path:'/clientNotice',query:{column:$route.query.column}})" type="primary"
+                       size="small" icon="el-icon-edit"
+                       class="filter-item">添加
+            </el-button>
+            <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
+            </el-button>
+            <el-dropdown trigger="click" size="medium" class="table-column-filter">
+                <span>
+                  筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
+                </span>
+                <el-dropdown-menu slot="dropdown" class="table-column-filter-wrapper">
+                    <el-checkbox v-for="item in tableColumns" :key="item.value" v-model="item.show">{{item.label}}
+                    </el-checkbox>
+                </el-dropdown-menu>
+            </el-dropdown>
+        </div>
+        <el-table
+                :data="tableData"
+                :height="tableHeight"
+                row-key="id"
+                ref="table">
+            <el-table-column
+                    v-if="multipleMode"
+                    align="center"
+                    type="selection"
+                    width="50">
+            </el-table-column>
+            <el-table-column
+                    type="index"
+                    min-width="50"
+                    align="center">
+            </el-table-column>
+                                                                                                                                                                                                    
+                                            <el-table-column
+                                v-if="isColumnShow('clientOrderId')"
+                                prop="clientOrderId"
+                                label="客户端订单ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('orderId')"
+                                prop="orderId"
+                                label="web订单ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('userId')"
+                                prop="userId"
+                                label="用户"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('productId')"
+                                prop="productId"
+                                label="商品"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeId')"
+                                prop="storeId"
+                                label="店铺"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark')"
+                                prop="remark"
+                                label="内容"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('statusFlag')"
+                                prop="statusFlag"
+                                label="状态"
+                                min-width="100">
+                        </el-table-column>
+                                                            <el-table-column
+                    label="操作"
+                    align="center"
+                    fixed="right"
+                    min-width="150"
+            >
+                <template slot-scope="scope">
+                            <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <div class="multiple-mode-wrapper" v-if="0">
+                <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button size="small" @click="operation1">批量操作1</el-button>
+                    <el-button size="small" @click="operation2">批量操作2</el-button>
+                    <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div>
+            <el-pagination
+                    background
+                    @size-change="pageSizeChange"
+                    @current-change="currentPageChange"
+                    :current-page="currentPage"
+                    :page-sizes="[10, 20, 30, 40, 50]"
+                    :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="totalNumber">
+            </el-pagination>
+        </div>
+        <el-dialog title="高级查询" :visible.sync="showAdvancedQueryDialog">
+            <el-button @click="addField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="advancedQueryFields">
+
+                <el-table-column prop="link" label="链接符" align="center">
+                    <template slot-scope="{row}">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                            <el-option label="AND" value="AND">
+                            </el-option>
+                            <el-option label="OR" value="OR">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.searchMethod">
+                            <el-option v-for="item in searchMethods" :label="item" :value="item"
+                                       :key="item"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="value" label="参数" align="center">
+                    <template slot-scope="{row}">
+                        <el-input v-model="row.value"></el-input>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="advancedQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="排序" :visible.sync="showTableSortDialog">
+            <el-button @click="addSortField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="tableSortFields">
+
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="order" label="排序" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.order">
+                            <el-option label="降序" value="desc">
+                            </el-option>
+                            <el-option label="升序" value="asc">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeSortField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="tableSortQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small">
+            <img width="100%" :src="imgSrc" alt="">
+        </el-dialog>
+
+    </div>
+</template>
+<script>
+    import {mapState} from 'vuex'
+    import {format} from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        created() {
+            this.getData();
+        },
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                                                                                                                                                                                                                                                                                                {
+                                label: '客户端订单ID',
+                                value: 'clientOrderId',
+                                show: true
+                            },
+                                                                                                {
+                                label: 'web订单ID',
+                                value: 'orderId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '商品',
+                                value: 'productId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'storeId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '内容',
+                                value: 'remark',
+                                show: true
+                            },
+                                                                                                {
+                                label: '状态',
+                                value: 'statusFlag',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                                                                                                                                                                                                                                                                                                {
+                                label: '客户端订单ID',
+                                value: 'client_order_id'
+                            },
+                                                                                                {
+                                label: 'web订单ID',
+                                value: 'order_id'
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '商品',
+                                value: 'product_id'
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'store_id'
+                            },
+                                                                                                {
+                                label: '内容',
+                                value: 'remark'
+                            },
+                                                                                                {
+                                label: '状态',
+                                value: 'status_flag'
+                            },
+                                                            ],
+                advancedQuerySearchKey: '',
+                orderByStr: '',
+                imgSrc: '',
+                imageDialogVisible: false,
+            }
+        },
+        computed: {
+            ...mapState(['tableHeight']),
+            selection() {
+                return this.$refs.table.selection.map(i => i.id);
+            }
+        },
+        methods: {
+            pageSizeChange(size) {
+                this.currentPage = 1;
+                this.pageSize = size;
+                this.getData();
+            },
+            currentPageChange(page) {
+                this.currentPage = page;
+                this.getData();
+            },
+            getData() {
+
+                var data = {
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    searchKey: this.filter1,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    orderByStr: this.orderByStr,
+                }
+
+                if (this.$route.query.column) {
+                    var tempColumn = this.$route.query.column;
+                    data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+                }
+
+                this.$http.get({
+                    url: '/clientNotice/page',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.totalNumber = res.data.page.totalNumber;
+                        this.tableData = res.data.pp;
+                    }
+                })
+            },
+            isColumnShow(column) {
+                var row = this.tableColumns.find(i => i.value === column);
+                return row ? row.show : false;
+            },
+            toggleMultipleMode(multipleMode) {
+                this.multipleMode = multipleMode;
+                if (!multipleMode) {
+                    this.$refs.table.clearSelection();
+                }
+            },
+            editRow(row) {
+                this.$router.push({
+                    path: '/clientNotice',
+                    query: {
+                        id: row.id,
+                        column: this.$route.query.column,
+                    }
+                })
+            },
+            operation1() {
+                this.$notify({
+                    title: '提示',
+                    message: this.selection
+                });
+            },
+            operation2() {
+                this.$message('操作2');
+            },
+            addField() {
+                this.advancedQueryFields.push({
+                    link: 'AND',
+                    name: '',
+                    searchMethod: '=',
+                    value: '',
+                });
+            },
+            removeField(i) {
+                if (this.advancedQueryFields.length > 0) {
+                    this.advancedQueryFields.splice(i, 1);
+                }
+            },
+            advancedQuery() {
+
+                this.advancedQuerySearchKey = '';
+
+                if (this.advancedQueryFields.length > 0) {
+
+                    var templist = [];
+
+                    this.advancedQueryFields.forEach(item => {
+                        if (item.link && item.name && item.searchMethod && item.value) {
+                            var tempItem = item.link + '_,' + item.name + '_,' + item.searchMethod + '_,' + item.value;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.advancedQuerySearchKey = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showAdvancedQueryDialog = false;
+            },
+            addSortField() {
+                this.tableSortFields.push({
+                    name: '',
+                    order: 'asc',
+                });
+            },
+            removeSortField(i) {
+                if (this.tableSortFields.length > 0) {
+                    this.tableSortFields.splice(i, 1);
+                }
+            },
+            tableSortQuery() {
+
+                this.orderByStr = '';
+
+                if (this.tableSortFields.length > 0) {
+
+                    var templist = [];
+
+                    this.tableSortFields.forEach(item => {
+                        if (item.name && item.order) {
+                            var tempItem = item.name + '_,' + item.order;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.orderByStr = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showTableSortDialog = false;
+            },
+            exportExcel() {
+                window.location.href = this.$baseUrl + "/clientNotice/exportExcel?searchKey="
+                        + this.filter1 + "&advancedQuery=" + this.advancedQuerySearchKey+"&orderByStr=" + this.orderByStr;
+            },
+            searchData() {
+                this.currentPage = 1;
+                this.getData();
+            },
+            deleteRow(row) {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                    return this.$http.post({
+                        url: '/clientNotice/del',
+                        data: {id: row.id}
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+            DateTimeFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD HH:mm', {locale: zh})
+                }
+
+            },
+            DateFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD', {locale: zh})
+                }
+
+            },
+            showImg(img) {
+                this.imgSrc = img;
+                this.imageDialogVisible = true;
+            },
+
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+</style>

+ 183 - 0
src/main/vue/src/pages/ClientOrder.vue

@@ -0,0 +1,183 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small"
+                 style="max-width: 500px;">
+                                                            <el-form-item prop="id" label="id">
+                <el-input v-model="formData.id" :disabled="'id'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <el-form-item prop="userId" label="用户">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="orderCode" label="订单编码">
+                <el-input v-model="formData.orderCode" :disabled="'orderCode'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="storeId" label="店铺">
+                <el-input v-model="formData.storeId" :disabled="'storeId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="productType" label="商品类型">
+                <el-input v-model="formData.productType" :disabled="'productType'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="productId" label="商品ID">
+                <el-input v-model="formData.productId" :disabled="'productId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="productName" label="商品名称">
+                <el-input v-model="formData.productName" :disabled="'productName'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="specification" label="规格">
+                <el-input v-model="formData.specification" :disabled="'specification'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="unitPrice" label="单价">
+                <el-input v-model="formData.unitPrice" :disabled="'unitPrice'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="quantity" label="数量">
+                <el-input v-model="formData.quantity" :disabled="'quantity'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="userCouponId" label="优惠券">
+                <el-input v-model="formData.userCouponId" :disabled="'userCouponId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="offPrice" label="优惠金额">
+                <el-input v-model="formData.offPrice" :disabled="'offPrice'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="totlePrice" label="总价">
+                <el-input v-model="formData.totlePrice" :disabled="'totlePrice'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="dealPrice" label="成交价">
+                <el-input v-model="formData.dealPrice" :disabled="'dealPrice'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="payMode" label="支付方式">
+                <el-input v-model="formData.payMode" :disabled="'payMode'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="payTime" label="支付时间">
+                <el-input v-model="formData.payTime" :disabled="'payTime'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark" label="备注">
+                <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="showFlag" label="显示标识">
+                <el-input v-model="formData.showFlag" :disabled="'showFlag'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="statusFlag" label="状态">
+                <el-input v-model="formData.statusFlag" :disabled="'statusFlag'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="fee" label="手续费">
+                <el-input v-model="formData.fee" :disabled="'fee'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="coin" label="余额">
+                <el-input v-model="formData.coin" :disabled="'coin'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="point" label="积分">
+                <el-input v-model="formData.point" :disabled="'point'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="cash" label="现金">
+                <el-input v-model="formData.cash" :disabled="'cash'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="cancelReason" label="取消原因">
+                <el-input v-model="formData.cancelReason" :disabled="'cancelReason'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="albumPrice" label="相册价格">
+                <el-input v-model="formData.albumPrice" :disabled="'albumPrice'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="albumQuantity" label="相册数量">
+                <el-input v-model="formData.albumQuantity" :disabled="'albumQuantity'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="orderName" label="订单名称">
+                <el-input v-model="formData.orderName" :disabled="'orderName'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                        <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+    import formValidator from '../formValidator'
+
+    export default {
+        created() {
+            if (this.$route.query.column) {
+                this.subColumn = this.$route.query.column.split(',')[1];
+                this.subValue = this.$route.query.column.split(',')[0];
+            }
+
+            if (this.$route.query.id) {
+                this.$http.get({
+                    url: '/clientOrder/getOne',
+                    data: {
+                        id: this.$route.query.id
+                    }
+                }).then(res => {
+                    if (res.success) {
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+                        this.formData = res.data;
+
+                    if (this.$route.query.column) {
+                        this.formData[this.subColumn] = this.subValue;
+                    }
+                    }
+                })
+            }else {
+                if (this.$route.query.column) {
+                    this.formData[this.subColumn] = this.subValue;
+                }
+            }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    },
+        data() {
+            return {
+                saving: false,
+                formData: {},
+                rules: {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    },
+                                                                                                                                                                                                                                                                            subColumn: '',
+            subValue: '',
+        }
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.submit();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            submit() {
+                var data = JSON.parse(JSON.stringify(this.formData));
+                this.$http.post({
+                    url: this.formData.id ? '/clientOrder/update' : '/clientOrder/save',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.$message.success('成功');
+                        this.$router.go(-1);
+                    } else {
+                        this.$message.warning('失败')
+                    }
+                });
+            },
+            onDelete() {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                    return this.$http.post({
+                    url: '/clientOrder/del',
+                    data: { id: this.formData.id }
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.$router.go(-1);
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+</style>

+ 147 - 0
src/main/vue/src/pages/ClientOrderImage.vue

@@ -0,0 +1,147 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small"
+                 style="max-width: 500px;">
+                                                                                                                                                                                                                                    <el-form-item prop="clientOrderId" label="客户端订单ID">
+                <el-input v-model="formData.clientOrderId" :disabled="'clientOrderId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="orderId" label="web订单ID">
+                <el-input v-model="formData.orderId" :disabled="'orderId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="typeFlag" label="类型">
+                <el-input v-model="formData.typeFlag" :disabled="'typeFlag'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="name" label="名称">
+                <el-input v-model="formData.name" :disabled="'name'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="pid" label="父级ID">
+                <el-input v-model="formData.pid" :disabled="'pid'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="userId" label="用户ID">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="localPath" label="本地地址">
+                <el-input v-model="formData.localPath" :disabled="'localPath'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="size" label="大小">
+                <el-input v-model="formData.size" :disabled="'size'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="fullName" label="全名">
+                <el-input v-model="formData.fullName" :disabled="'fullName'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="statusFlag" label="状态">
+                <el-input v-model="formData.statusFlag" :disabled="'statusFlag'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark" label="备注">
+                <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="ossArtwork" label="原图">
+                <el-input v-model="formData.ossArtwork" :disabled="'ossArtwork'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="ossThumbnail" label="缩略图">
+                <el-input v-model="formData.ossThumbnail" :disabled="'ossThumbnail'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="cleanFlag" label="清理">
+                <el-input v-model="formData.cleanFlag" :disabled="'cleanFlag'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="storeId" label="商铺ID">
+                <el-input v-model="formData.storeId" :disabled="'storeId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                        <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+    import formValidator from '../formValidator'
+
+    export default {
+        created() {
+            if (this.$route.query.column) {
+                this.subColumn = this.$route.query.column.split(',')[1];
+                this.subValue = this.$route.query.column.split(',')[0];
+            }
+
+            if (this.$route.query.id) {
+                this.$http.get({
+                    url: '/clientOrderImage/getOne',
+                    data: {
+                        id: this.$route.query.id
+                    }
+                }).then(res => {
+                    if (res.success) {
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+                        this.formData = res.data;
+
+                    if (this.$route.query.column) {
+                        this.formData[this.subColumn] = this.subValue;
+                    }
+                    }
+                })
+            }else {
+                if (this.$route.query.column) {
+                    this.formData[this.subColumn] = this.subValue;
+                }
+            }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                },
+        data() {
+            return {
+                saving: false,
+                formData: {},
+                rules: {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                },
+                                                                                                                                                                                    subColumn: '',
+            subValue: '',
+        }
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.submit();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            submit() {
+                var data = JSON.parse(JSON.stringify(this.formData));
+                this.$http.post({
+                    url: this.formData.id ? '/clientOrderImage/update' : '/clientOrderImage/save',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.$message.success('成功');
+                        this.$router.go(-1);
+                    } else {
+                        this.$message.warning('失败')
+                    }
+                });
+            },
+            onDelete() {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                    return this.$http.post({
+                    url: '/clientOrderImage/del',
+                    data: { id: this.formData.id }
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.$router.go(-1);
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+</style>

+ 631 - 0
src/main/vue/src/pages/ClientOrderImages.vue

@@ -0,0 +1,631 @@
+<template>
+    <div>
+        <div class="filters-container">
+        
+            <el-input placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item"></el-input>
+            <el-button @click="searchData" type="primary" size="small" icon="el-icon-search" class="filter-item">搜索
+            </el-button>
+            <el-button @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small"
+                       icon="el-icon-search" class="filter-item">高级查询
+            </el-button>
+            <el-button @click="showTableSortDialog = !showTableSortDialog" type="primary" size="small"
+                       icon="el-icon-sort" class="filter-item">排序
+            </el-button>
+            <el-button @click="$router.push({path:'/clientOrderImage',query:{column:$route.query.column}})" type="primary"
+                       size="small" icon="el-icon-edit"
+                       class="filter-item">添加
+            </el-button>
+            <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
+            </el-button>
+            <el-dropdown trigger="click" size="medium" class="table-column-filter">
+                <span>
+                  筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
+                </span>
+                <el-dropdown-menu slot="dropdown" class="table-column-filter-wrapper">
+                    <el-checkbox v-for="item in tableColumns" :key="item.value" v-model="item.show">{{item.label}}
+                    </el-checkbox>
+                </el-dropdown-menu>
+            </el-dropdown>
+        </div>
+        <el-table
+                :data="tableData"
+                :height="tableHeight"
+                row-key="id"
+                ref="table">
+            <el-table-column
+                    v-if="multipleMode"
+                    align="center"
+                    type="selection"
+                    width="50">
+            </el-table-column>
+            <el-table-column
+                    type="index"
+                    min-width="50"
+                    align="center">
+            </el-table-column>
+                                                                                                                                                                                                    
+                                            <el-table-column
+                                v-if="isColumnShow('clientOrderId')"
+                                prop="clientOrderId"
+                                label="客户端订单ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('orderId')"
+                                prop="orderId"
+                                label="web订单ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('typeFlag')"
+                                prop="typeFlag"
+                                label="类型"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('name')"
+                                prop="name"
+                                label="名称"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('pid')"
+                                prop="pid"
+                                label="父级ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('userId')"
+                                prop="userId"
+                                label="用户ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('localPath')"
+                                prop="localPath"
+                                label="本地地址"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('size')"
+                                prop="size"
+                                label="大小"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('fullName')"
+                                prop="fullName"
+                                label="全名"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('statusFlag')"
+                                prop="statusFlag"
+                                label="状态"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark')"
+                                prop="remark"
+                                label="备注"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('ossArtwork')"
+                                prop="ossArtwork"
+                                label="原图"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('ossThumbnail')"
+                                prop="ossThumbnail"
+                                label="缩略图"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('cleanFlag')"
+                                prop="cleanFlag"
+                                label="清理"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeId')"
+                                prop="storeId"
+                                label="商铺ID"
+                                min-width="100">
+                        </el-table-column>
+                                                            <el-table-column
+                    label="操作"
+                    align="center"
+                    fixed="right"
+                    min-width="150"
+            >
+                <template slot-scope="scope">
+                            <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <div class="multiple-mode-wrapper" v-if="0">
+                <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button size="small" @click="operation1">批量操作1</el-button>
+                    <el-button size="small" @click="operation2">批量操作2</el-button>
+                    <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div>
+            <el-pagination
+                    background
+                    @size-change="pageSizeChange"
+                    @current-change="currentPageChange"
+                    :current-page="currentPage"
+                    :page-sizes="[10, 20, 30, 40, 50]"
+                    :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="totalNumber">
+            </el-pagination>
+        </div>
+        <el-dialog title="高级查询" :visible.sync="showAdvancedQueryDialog">
+            <el-button @click="addField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="advancedQueryFields">
+
+                <el-table-column prop="link" label="链接符" align="center">
+                    <template slot-scope="{row}">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                            <el-option label="AND" value="AND">
+                            </el-option>
+                            <el-option label="OR" value="OR">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.searchMethod">
+                            <el-option v-for="item in searchMethods" :label="item" :value="item"
+                                       :key="item"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="value" label="参数" align="center">
+                    <template slot-scope="{row}">
+                        <el-input v-model="row.value"></el-input>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="advancedQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="排序" :visible.sync="showTableSortDialog">
+            <el-button @click="addSortField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="tableSortFields">
+
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="order" label="排序" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.order">
+                            <el-option label="降序" value="desc">
+                            </el-option>
+                            <el-option label="升序" value="asc">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeSortField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="tableSortQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small">
+            <img width="100%" :src="imgSrc" alt="">
+        </el-dialog>
+
+    </div>
+</template>
+<script>
+    import {mapState} from 'vuex'
+    import {format} from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        created() {
+            this.getData();
+        },
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                                                                                                                                                                                                                                                                                                {
+                                label: '客户端订单ID',
+                                value: 'clientOrderId',
+                                show: true
+                            },
+                                                                                                {
+                                label: 'web订单ID',
+                                value: 'orderId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'typeFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '名称',
+                                value: 'name',
+                                show: true
+                            },
+                                                                                                {
+                                label: '父级ID',
+                                value: 'pid',
+                                show: true
+                            },
+                                                                                                {
+                                label: '用户ID',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '本地地址',
+                                value: 'localPath',
+                                show: true
+                            },
+                                                                                                {
+                                label: '大小',
+                                value: 'size',
+                                show: true
+                            },
+                                                                                                {
+                                label: '全名',
+                                value: 'fullName',
+                                show: true
+                            },
+                                                                                                {
+                                label: '状态',
+                                value: 'statusFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark',
+                                show: true
+                            },
+                                                                                                {
+                                label: '原图',
+                                value: 'ossArtwork',
+                                show: true
+                            },
+                                                                                                {
+                                label: '缩略图',
+                                value: 'ossThumbnail',
+                                show: true
+                            },
+                                                                                                {
+                                label: '清理',
+                                value: 'cleanFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '商铺ID',
+                                value: 'storeId',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                                                                                                                                                                                                                                                                                                {
+                                label: '客户端订单ID',
+                                value: 'client_order_id'
+                            },
+                                                                                                {
+                                label: 'web订单ID',
+                                value: 'order_id'
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'type_flag'
+                            },
+                                                                                                {
+                                label: '名称',
+                                value: 'name'
+                            },
+                                                                                                {
+                                label: '父级ID',
+                                value: 'pid'
+                            },
+                                                                                                {
+                                label: '用户ID',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '本地地址',
+                                value: 'local_path'
+                            },
+                                                                                                {
+                                label: '大小',
+                                value: 'size'
+                            },
+                                                                                                {
+                                label: '全名',
+                                value: 'full_name'
+                            },
+                                                                                                {
+                                label: '状态',
+                                value: 'status_flag'
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark'
+                            },
+                                                                                                {
+                                label: '原图',
+                                value: 'oss_artwork'
+                            },
+                                                                                                {
+                                label: '缩略图',
+                                value: 'oss_thumbnail'
+                            },
+                                                                                                {
+                                label: '清理',
+                                value: 'clean_flag'
+                            },
+                                                                                                {
+                                label: '商铺ID',
+                                value: 'store_id'
+                            },
+                                                            ],
+                advancedQuerySearchKey: '',
+                orderByStr: '',
+                imgSrc: '',
+                imageDialogVisible: false,
+            }
+        },
+        computed: {
+            ...mapState(['tableHeight']),
+            selection() {
+                return this.$refs.table.selection.map(i => i.id);
+            }
+        },
+        methods: {
+            pageSizeChange(size) {
+                this.currentPage = 1;
+                this.pageSize = size;
+                this.getData();
+            },
+            currentPageChange(page) {
+                this.currentPage = page;
+                this.getData();
+            },
+            getData() {
+
+                var data = {
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    searchKey: this.filter1,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    orderByStr: this.orderByStr,
+                }
+
+                if (this.$route.query.column) {
+                    var tempColumn = this.$route.query.column;
+                    data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+                }
+
+                this.$http.get({
+                    url: '/clientOrderImage/page',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.totalNumber = res.data.page.totalNumber;
+                        this.tableData = res.data.pp;
+                    }
+                })
+            },
+            isColumnShow(column) {
+                var row = this.tableColumns.find(i => i.value === column);
+                return row ? row.show : false;
+            },
+            toggleMultipleMode(multipleMode) {
+                this.multipleMode = multipleMode;
+                if (!multipleMode) {
+                    this.$refs.table.clearSelection();
+                }
+            },
+            editRow(row) {
+                this.$router.push({
+                    path: '/clientOrderImage',
+                    query: {
+                        id: row.id,
+                        column: this.$route.query.column,
+                    }
+                })
+            },
+            operation1() {
+                this.$notify({
+                    title: '提示',
+                    message: this.selection
+                });
+            },
+            operation2() {
+                this.$message('操作2');
+            },
+            addField() {
+                this.advancedQueryFields.push({
+                    link: 'AND',
+                    name: '',
+                    searchMethod: '=',
+                    value: '',
+                });
+            },
+            removeField(i) {
+                if (this.advancedQueryFields.length > 0) {
+                    this.advancedQueryFields.splice(i, 1);
+                }
+            },
+            advancedQuery() {
+
+                this.advancedQuerySearchKey = '';
+
+                if (this.advancedQueryFields.length > 0) {
+
+                    var templist = [];
+
+                    this.advancedQueryFields.forEach(item => {
+                        if (item.link && item.name && item.searchMethod && item.value) {
+                            var tempItem = item.link + '_,' + item.name + '_,' + item.searchMethod + '_,' + item.value;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.advancedQuerySearchKey = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showAdvancedQueryDialog = false;
+            },
+            addSortField() {
+                this.tableSortFields.push({
+                    name: '',
+                    order: 'asc',
+                });
+            },
+            removeSortField(i) {
+                if (this.tableSortFields.length > 0) {
+                    this.tableSortFields.splice(i, 1);
+                }
+            },
+            tableSortQuery() {
+
+                this.orderByStr = '';
+
+                if (this.tableSortFields.length > 0) {
+
+                    var templist = [];
+
+                    this.tableSortFields.forEach(item => {
+                        if (item.name && item.order) {
+                            var tempItem = item.name + '_,' + item.order;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.orderByStr = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showTableSortDialog = false;
+            },
+            exportExcel() {
+                window.location.href = this.$baseUrl + "/clientOrderImage/exportExcel?searchKey="
+                        + this.filter1 + "&advancedQuery=" + this.advancedQuerySearchKey+"&orderByStr=" + this.orderByStr;
+            },
+            searchData() {
+                this.currentPage = 1;
+                this.getData();
+            },
+            deleteRow(row) {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                    return this.$http.post({
+                        url: '/clientOrderImage/del',
+                        data: {id: row.id}
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+            DateTimeFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD HH:mm', {locale: zh})
+                }
+
+            },
+            DateFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD', {locale: zh})
+                }
+
+            },
+            showImg(img) {
+                this.imgSrc = img;
+                this.imageDialogVisible = true;
+            },
+
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+</style>

+ 823 - 0
src/main/vue/src/pages/ClientOrders.vue

@@ -0,0 +1,823 @@
+<template>
+    <div>
+        <div class="filters-container">
+        
+            <el-input placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item"></el-input>
+            <el-button @click="searchData" type="primary" size="small" icon="el-icon-search" class="filter-item">搜索
+            </el-button>
+            <el-button @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small"
+                       icon="el-icon-search" class="filter-item">高级查询
+            </el-button>
+            <el-button @click="showTableSortDialog = !showTableSortDialog" type="primary" size="small"
+                       icon="el-icon-sort" class="filter-item">排序
+            </el-button>
+            <el-button @click="$router.push({path:'/clientOrder',query:{column:$route.query.column}})" type="primary"
+                       size="small" icon="el-icon-edit"
+                       class="filter-item">添加
+            </el-button>
+            <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
+            </el-button>
+            <el-dropdown trigger="click" size="medium" class="table-column-filter">
+                <span>
+                  筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
+                </span>
+                <el-dropdown-menu slot="dropdown" class="table-column-filter-wrapper">
+                    <el-checkbox v-for="item in tableColumns" :key="item.value" v-model="item.show">{{item.label}}
+                    </el-checkbox>
+                </el-dropdown-menu>
+            </el-dropdown>
+        </div>
+        <el-table
+                :data="tableData"
+                :height="tableHeight"
+                row-key="id"
+                ref="table">
+            <el-table-column
+                    v-if="multipleMode"
+                    align="center"
+                    type="selection"
+                    width="50">
+            </el-table-column>
+            <el-table-column
+                    type="index"
+                    min-width="50"
+                    align="center">
+            </el-table-column>
+                            
+                                            <el-table-column
+                                v-if="isColumnShow('id')"
+                                prop="id"
+                                label="id"
+                                min-width="100">
+                        </el-table-column>
+                                                                                                                                                                                                            
+                                            <el-table-column
+                                v-if="isColumnShow('userId')"
+                                prop="userId"
+                                label="用户"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('orderCode')"
+                                prop="orderCode"
+                                label="订单编码"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeId')"
+                                prop="storeId"
+                                label="店铺"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('productType')"
+                                prop="productType"
+                                label="商品类型"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('productId')"
+                                prop="productId"
+                                label="商品ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('productName')"
+                                prop="productName"
+                                label="商品名称"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('specification')"
+                                prop="specification"
+                                label="规格"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('unitPrice')"
+                                prop="unitPrice"
+                                label="单价"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('quantity')"
+                                prop="quantity"
+                                label="数量"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('userCouponId')"
+                                prop="userCouponId"
+                                label="优惠券"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('offPrice')"
+                                prop="offPrice"
+                                label="优惠金额"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('totlePrice')"
+                                prop="totlePrice"
+                                label="总价"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('dealPrice')"
+                                prop="dealPrice"
+                                label="成交价"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('payMode')"
+                                prop="payMode"
+                                label="支付方式"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('payTime')"
+                                prop="payTime"
+                                label="支付时间"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark')"
+                                prop="remark"
+                                label="备注"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('showFlag')"
+                                prop="showFlag"
+                                label="显示标识"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('statusFlag')"
+                                prop="statusFlag"
+                                label="状态"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('fee')"
+                                prop="fee"
+                                label="手续费"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('coin')"
+                                prop="coin"
+                                label="余额"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('point')"
+                                prop="point"
+                                label="积分"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('cash')"
+                                prop="cash"
+                                label="现金"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('cancelReason')"
+                                prop="cancelReason"
+                                label="取消原因"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('albumPrice')"
+                                prop="albumPrice"
+                                label="相册价格"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('albumQuantity')"
+                                prop="albumQuantity"
+                                label="相册数量"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('orderName')"
+                                prop="orderName"
+                                label="订单名称"
+                                min-width="100">
+                        </el-table-column>
+                                                            <el-table-column
+                    label="操作"
+                    align="center"
+                    fixed="right"
+                    min-width="150"
+            >
+                <template slot-scope="scope">
+                            <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <div class="multiple-mode-wrapper" v-if="0">
+                <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button size="small" @click="operation1">批量操作1</el-button>
+                    <el-button size="small" @click="operation2">批量操作2</el-button>
+                    <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div>
+            <el-pagination
+                    background
+                    @size-change="pageSizeChange"
+                    @current-change="currentPageChange"
+                    :current-page="currentPage"
+                    :page-sizes="[10, 20, 30, 40, 50]"
+                    :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="totalNumber">
+            </el-pagination>
+        </div>
+        <el-dialog title="高级查询" :visible.sync="showAdvancedQueryDialog">
+            <el-button @click="addField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="advancedQueryFields">
+
+                <el-table-column prop="link" label="链接符" align="center">
+                    <template slot-scope="{row}">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                            <el-option label="AND" value="AND">
+                            </el-option>
+                            <el-option label="OR" value="OR">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.searchMethod">
+                            <el-option v-for="item in searchMethods" :label="item" :value="item"
+                                       :key="item"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="value" label="参数" align="center">
+                    <template slot-scope="{row}">
+                        <el-input v-model="row.value"></el-input>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="advancedQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="排序" :visible.sync="showTableSortDialog">
+            <el-button @click="addSortField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="tableSortFields">
+
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="order" label="排序" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.order">
+                            <el-option label="降序" value="desc">
+                            </el-option>
+                            <el-option label="升序" value="asc">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeSortField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="tableSortQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small">
+            <img width="100%" :src="imgSrc" alt="">
+        </el-dialog>
+
+    </div>
+</template>
+<script>
+    import {mapState} from 'vuex'
+    import {format} from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        created() {
+            this.getData();
+        },
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                        {
+                                label: 'id',
+                                value: 'id',
+                                show: true
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '用户',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '订单编码',
+                                value: 'orderCode',
+                                show: true
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'storeId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '商品类型',
+                                value: 'productType',
+                                show: true
+                            },
+                                                                                                {
+                                label: '商品ID',
+                                value: 'productId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '商品名称',
+                                value: 'productName',
+                                show: true
+                            },
+                                                                                                {
+                                label: '规格',
+                                value: 'specification',
+                                show: true
+                            },
+                                                                                                {
+                                label: '单价',
+                                value: 'unitPrice',
+                                show: true
+                            },
+                                                                                                {
+                                label: '数量',
+                                value: 'quantity',
+                                show: true
+                            },
+                                                                                                {
+                                label: '优惠券',
+                                value: 'userCouponId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '优惠金额',
+                                value: 'offPrice',
+                                show: true
+                            },
+                                                                                                {
+                                label: '总价',
+                                value: 'totlePrice',
+                                show: true
+                            },
+                                                                                                {
+                                label: '成交价',
+                                value: 'dealPrice',
+                                show: true
+                            },
+                                                                                                {
+                                label: '支付方式',
+                                value: 'payMode',
+                                show: true
+                            },
+                                                                                                {
+                                label: '支付时间',
+                                value: 'payTime',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark',
+                                show: true
+                            },
+                                                                                                {
+                                label: '显示标识',
+                                value: 'showFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '状态',
+                                value: 'statusFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '手续费',
+                                value: 'fee',
+                                show: true
+                            },
+                                                                                                {
+                                label: '余额',
+                                value: 'coin',
+                                show: true
+                            },
+                                                                                                {
+                                label: '积分',
+                                value: 'point',
+                                show: true
+                            },
+                                                                                                {
+                                label: '现金',
+                                value: 'cash',
+                                show: true
+                            },
+                                                                                                {
+                                label: '取消原因',
+                                value: 'cancelReason',
+                                show: true
+                            },
+                                                                                                {
+                                label: '相册价格',
+                                value: 'albumPrice',
+                                show: true
+                            },
+                                                                                                {
+                                label: '相册数量',
+                                value: 'albumQuantity',
+                                show: true
+                            },
+                                                                                                {
+                                label: '订单名称',
+                                value: 'orderName',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                        {
+                                label: 'id',
+                                value: 'id'
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '用户',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '订单编码',
+                                value: 'order_code'
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'store_id'
+                            },
+                                                                                                {
+                                label: '商品类型',
+                                value: 'product_type'
+                            },
+                                                                                                {
+                                label: '商品ID',
+                                value: 'product_id'
+                            },
+                                                                                                {
+                                label: '商品名称',
+                                value: 'product_name'
+                            },
+                                                                                                {
+                                label: '规格',
+                                value: 'specification'
+                            },
+                                                                                                {
+                                label: '单价',
+                                value: 'unit_price'
+                            },
+                                                                                                {
+                                label: '数量',
+                                value: 'quantity'
+                            },
+                                                                                                {
+                                label: '优惠券',
+                                value: 'user_coupon_id'
+                            },
+                                                                                                {
+                                label: '优惠金额',
+                                value: 'off_price'
+                            },
+                                                                                                {
+                                label: '总价',
+                                value: 'totle_price'
+                            },
+                                                                                                {
+                                label: '成交价',
+                                value: 'deal_price'
+                            },
+                                                                                                {
+                                label: '支付方式',
+                                value: 'pay_mode'
+                            },
+                                                                                                {
+                                label: '支付时间',
+                                value: 'pay_time'
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark'
+                            },
+                                                                                                {
+                                label: '显示标识',
+                                value: 'show_flag'
+                            },
+                                                                                                {
+                                label: '状态',
+                                value: 'status_flag'
+                            },
+                                                                                                {
+                                label: '手续费',
+                                value: 'fee'
+                            },
+                                                                                                {
+                                label: '余额',
+                                value: 'coin'
+                            },
+                                                                                                {
+                                label: '积分',
+                                value: 'point'
+                            },
+                                                                                                {
+                                label: '现金',
+                                value: 'cash'
+                            },
+                                                                                                {
+                                label: '取消原因',
+                                value: 'cancel_reason'
+                            },
+                                                                                                {
+                                label: '相册价格',
+                                value: 'album_price'
+                            },
+                                                                                                {
+                                label: '相册数量',
+                                value: 'album_quantity'
+                            },
+                                                                                                {
+                                label: '订单名称',
+                                value: 'order_name'
+                            },
+                                                            ],
+                advancedQuerySearchKey: '',
+                orderByStr: '',
+                imgSrc: '',
+                imageDialogVisible: false,
+            }
+        },
+        computed: {
+            ...mapState(['tableHeight']),
+            selection() {
+                return this.$refs.table.selection.map(i => i.id);
+            }
+        },
+        methods: {
+            pageSizeChange(size) {
+                this.currentPage = 1;
+                this.pageSize = size;
+                this.getData();
+            },
+            currentPageChange(page) {
+                this.currentPage = page;
+                this.getData();
+            },
+            getData() {
+
+                var data = {
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    searchKey: this.filter1,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    orderByStr: this.orderByStr,
+                }
+
+                if (this.$route.query.column) {
+                    var tempColumn = this.$route.query.column;
+                    data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+                }
+
+                this.$http.get({
+                    url: '/clientOrder/page',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.totalNumber = res.data.page.totalNumber;
+                        this.tableData = res.data.pp;
+                    }
+                })
+            },
+            isColumnShow(column) {
+                var row = this.tableColumns.find(i => i.value === column);
+                return row ? row.show : false;
+            },
+            toggleMultipleMode(multipleMode) {
+                this.multipleMode = multipleMode;
+                if (!multipleMode) {
+                    this.$refs.table.clearSelection();
+                }
+            },
+            editRow(row) {
+                this.$router.push({
+                    path: '/clientOrder',
+                    query: {
+                        id: row.id,
+                        column: this.$route.query.column,
+                    }
+                })
+            },
+            operation1() {
+                this.$notify({
+                    title: '提示',
+                    message: this.selection
+                });
+            },
+            operation2() {
+                this.$message('操作2');
+            },
+            addField() {
+                this.advancedQueryFields.push({
+                    link: 'AND',
+                    name: '',
+                    searchMethod: '=',
+                    value: '',
+                });
+            },
+            removeField(i) {
+                if (this.advancedQueryFields.length > 0) {
+                    this.advancedQueryFields.splice(i, 1);
+                }
+            },
+            advancedQuery() {
+
+                this.advancedQuerySearchKey = '';
+
+                if (this.advancedQueryFields.length > 0) {
+
+                    var templist = [];
+
+                    this.advancedQueryFields.forEach(item => {
+                        if (item.link && item.name && item.searchMethod && item.value) {
+                            var tempItem = item.link + '_,' + item.name + '_,' + item.searchMethod + '_,' + item.value;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.advancedQuerySearchKey = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showAdvancedQueryDialog = false;
+            },
+            addSortField() {
+                this.tableSortFields.push({
+                    name: '',
+                    order: 'asc',
+                });
+            },
+            removeSortField(i) {
+                if (this.tableSortFields.length > 0) {
+                    this.tableSortFields.splice(i, 1);
+                }
+            },
+            tableSortQuery() {
+
+                this.orderByStr = '';
+
+                if (this.tableSortFields.length > 0) {
+
+                    var templist = [];
+
+                    this.tableSortFields.forEach(item => {
+                        if (item.name && item.order) {
+                            var tempItem = item.name + '_,' + item.order;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.orderByStr = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showTableSortDialog = false;
+            },
+            exportExcel() {
+                window.location.href = this.$baseUrl + "/clientOrder/exportExcel?searchKey="
+                        + this.filter1 + "&advancedQuery=" + this.advancedQuerySearchKey+"&orderByStr=" + this.orderByStr;
+            },
+            searchData() {
+                this.currentPage = 1;
+                this.getData();
+            },
+            deleteRow(row) {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                    return this.$http.post({
+                        url: '/clientOrder/del',
+                        data: {id: row.id}
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+            DateTimeFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD HH:mm', {locale: zh})
+                }
+
+            },
+            DateFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD', {locale: zh})
+                }
+
+            },
+            showImg(img) {
+                this.imgSrc = img;
+                this.imageDialogVisible = true;
+            },
+
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+</style>

+ 30 - 0
src/main/vue/src/router/index.js

@@ -704,6 +704,36 @@ const router = new Router({
                     path: '/userLoginLogs',
                     name: 'UserLoginLogs',
                     component: () => import('../pages/UserLoginLogs')
+                },
+                {
+                    path: '/clientOrderImage',
+                    name: 'ClientOrderImage',
+                    component: () => import('../pages/ClientOrderImage')
+                },
+                {
+                    path: '/clientOrderImages',
+                    name: 'ClientOrderImages',
+                    component: () => import('../pages/ClientOrderImages')
+                },
+                {
+                    path: '/clientNotice',
+                    name: 'ClientNotice',
+                    component: () => import('../pages/ClientNotice')
+                },
+                {
+                    path: '/clientNotices',
+                    name: 'ClientNotices',
+                    component: () => import('../pages/ClientNotices')
+                },
+                {
+                    path: '/clientOrder',
+                    name: 'ClientOrder',
+                    component: () => import('../pages/ClientOrder')
+                },
+                {
+                    path: '/clientOrders',
+                    name: 'ClientOrders',
+                    component: () => import('../pages/ClientOrders')
                 }
                 /**INSERT_LOCATION**/
             ]

Some files were not shown because too many files changed in this diff