顾绍勇 před 5 roky
rodič
revize
de79db2622

+ 43
- 0
src/main/java/com/huiju/estateagents/excel/redPacket/RedPacketRankingListExport.java Zobrazit soubor

@@ -0,0 +1,43 @@
1
+package com.huiju.estateagents.excel.redPacket;
2
+
3
+import com.alibaba.excel.annotation.ExcelProperty;
4
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
5
+import lombok.Data;
6
+
7
+/**
8
+ * 红包排行榜导出实体
9
+ *
10
+ * @author gusy
11
+ * @date 2020/6/7 15:46
12
+ */
13
+@Data
14
+public class RedPacketRankingListExport {
15
+
16
+
17
+    @ColumnWidth(15)
18
+    @ExcelProperty(value = "头像", index = 0)
19
+    private String avatarurl;
20
+
21
+
22
+    @ColumnWidth(15)
23
+    @ExcelProperty(value = "昵称", index = 1)
24
+    private String nickname;
25
+
26
+
27
+    @ColumnWidth(15)
28
+    @ExcelProperty(value = "姓名", index = 2)
29
+    private String name;
30
+
31
+
32
+    @ColumnWidth(15)
33
+    @ExcelProperty(value = "手机号", index = 3)
34
+    private String phone;
35
+
36
+    @ColumnWidth(15)
37
+    @ExcelProperty(value = "发起时间", index = 4)
38
+    private String createDate;
39
+
40
+    @ColumnWidth(15)
41
+    @ExcelProperty(value = "助力人数", index = 5)
42
+    private String votes;
43
+}

+ 101
- 0
src/main/java/com/huiju/estateagents/redpack/controller/TaRedPacketController.java Zobrazit soubor

@@ -1,17 +1,25 @@
1 1
 package com.huiju.estateagents.redpack.controller;
2 2
 
3
+import com.alibaba.fastjson.JSON;
3 4
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 5
 import com.baomidou.mybatisplus.core.metadata.IPage;
5 6
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 7
 import com.huiju.estateagents.base.BaseController;
7 8
 import com.huiju.estateagents.base.ResponseBean;
8 9
 import com.huiju.estateagents.redpack.entity.TaRedPacket;
10
+import com.huiju.estateagents.redpack.service.ITaOrgOrderService;
11
+import com.huiju.estateagents.redpack.service.ITaRedPacketPersonService;
9 12
 import com.huiju.estateagents.redpack.service.ITaRedPacketService;
10 13
 import org.slf4j.Logger;
11 14
 import org.slf4j.LoggerFactory;
12 15
 import org.springframework.beans.factory.annotation.Autowired;
13 16
 import org.springframework.web.bind.annotation.*;
14 17
 
18
+import javax.servlet.http.HttpServletRequest;
19
+import javax.servlet.http.HttpServletResponse;
20
+import java.util.HashMap;
21
+import java.util.Map;
22
+
15 23
 /**
16 24
  * <p>
17 25
  * 红包助力活动  前端控制器
@@ -29,6 +37,12 @@ public class TaRedPacketController extends BaseController {
29 37
     @Autowired
30 38
     public ITaRedPacketService iTaRedPacketService;
31 39
 
40
+    @Autowired
41
+    private ITaOrgOrderService iTaOrgOrderService;
42
+
43
+    @Autowired
44
+    private ITaRedPacketPersonService iTaRedPacketPersonService;
45
+
32 46
 
33 47
     /**
34 48
      * 分页查询列表
@@ -142,4 +156,91 @@ public class TaRedPacketController extends BaseController {
142 156
         }
143 157
         return responseBean;
144 158
     }
159
+
160
+    /**
161
+     * 条件查询红包发送记录
162
+     *
163
+     * @param pageNum
164
+     * @param pageSize
165
+     * @param orderId
166
+     * @param wxOrderId
167
+     * @param tradeNo
168
+     * @param phone
169
+     * @param status
170
+     * @param request
171
+     * @return
172
+     */
173
+    @RequestMapping(value = "/admin/redPacket/listSendRecord", method = RequestMethod.GET)
174
+    public ResponseBean listSendRecord(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
175
+                                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
176
+                                       String activityId,
177
+                                       String orderId,
178
+                                       String wxOrderId,
179
+                                       String tradeNo,
180
+                                       String phone,
181
+                                       Integer status,
182
+                                       HttpServletRequest request) {
183
+        ResponseBean responseBean = new ResponseBean();
184
+        try {
185
+            responseBean = iTaOrgOrderService.listRedPacketRecords(pageNum, pageSize, phone, activityId, orderId, wxOrderId, tradeNo, status, getOrgId(request));
186
+        } catch (Exception e) {
187
+            logger.error("listSendRecord -=- {}", e);
188
+            responseBean.addError(e.getMessage());
189
+        }
190
+        return responseBean;
191
+    }
192
+
193
+    /**
194
+     * 获取红包排行榜
195
+     *
196
+     * @param pageNum
197
+     * @param pageSize
198
+     * @param activityId
199
+     * @param phone
200
+     * @param request
201
+     * @return
202
+     */
203
+    @RequestMapping(value = "getRedPacketRankingList", method = RequestMethod.GET)
204
+    public ResponseBean getRedPacketRankingList(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
205
+                                                @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
206
+                                                String activityId,
207
+                                                String phone,
208
+                                                HttpServletRequest request) {
209
+        ResponseBean responseBean = new ResponseBean();
210
+        try {
211
+            responseBean = iTaRedPacketPersonService.getRedPacketRankingList(pageNum, pageSize, activityId, phone, getOrgId(request));
212
+        } catch (Exception e) {
213
+            logger.error("getRedPacketRankingList -=- {}", e);
214
+            responseBean.addError(e.getMessage());
215
+        }
216
+        return responseBean;
217
+    }
218
+
219
+    /**
220
+     * 导出红包排行榜
221
+     *
222
+     * @param activityId
223
+     * @param phone
224
+     * @param request
225
+     * @param response
226
+     */
227
+    @RequestMapping(value = "exportRedPacketRankingList", method = RequestMethod.GET)
228
+    public void exportRedPacketRankingList(String activityId,
229
+                                           String phone,
230
+                                           HttpServletRequest request,
231
+                                           HttpServletResponse response) throws Exception {
232
+        ResponseBean responseBean = new ResponseBean();
233
+        try {
234
+            iTaRedPacketPersonService.exportRedPacketRankingList(activityId, phone, getOrgId(request), response);
235
+        } catch (Exception e) {
236
+            logger.error("exportRefundOrderByCondition 异常:", e);
237
+            response.reset();
238
+            response.setContentType("application/json");
239
+            response.setCharacterEncoding("utf-8");
240
+            Map<String, Object> map = new HashMap();
241
+            map.put("code", ResponseBean.ERROR_UNAVAILABLE);
242
+            map.put("message", "下载文件失败" + e.getMessage());
243
+            response.getWriter().println(JSON.toJSONString(map));
244
+        }
245
+    }
145 246
 }

+ 20
- 0
src/main/java/com/huiju/estateagents/redpack/entity/TaOrgOrder.java Zobrazit soubor

@@ -112,4 +112,24 @@ public class TaOrgOrder implements Serializable {
112 112
 
113 113
     @TableField(exist = false)
114 114
     private String phone;
115
+
116
+    /**
117
+     * 接收红包人昵称
118
+     */
119
+    @TableField(exist = false)
120
+    private String nickname;
121
+
122
+    /**
123
+     * 子订单金额
124
+     */
125
+    @TableField(exist = false)
126
+    private String detailAmount;
127
+
128
+    /**
129
+     * 接受红包人头像
130
+     */
131
+    @TableField(exist = false)
132
+    private String avatarurl;
133
+
134
+
115 135
 }

+ 22
- 0
src/main/java/com/huiju/estateagents/redpack/entity/TaRedPacketPerson.java Zobrazit soubor

@@ -1,6 +1,7 @@
1 1
 package com.huiju.estateagents.redpack.entity;
2 2
 
3 3
 import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
4 5
 import com.baomidou.mybatisplus.annotation.TableId;
5 6
 import java.time.LocalDateTime;
6 7
 import java.io.Serializable;
@@ -89,5 +90,26 @@ public class TaRedPacketPerson implements Serializable {
89 90
      */
90 91
     private Integer packetStatus;
91 92
 
93
+    @TableField(exist = false)
94
+    private String phone;
95
+
96
+    /**
97
+     * 接收红包人昵称
98
+     */
99
+    @TableField(exist = false)
100
+    private String nickname;
101
+
102
+    /**
103
+     * 接受红包人名称
104
+     */
105
+    @TableField(exist = false)
106
+    private String name;
107
+
108
+    /**
109
+     * 接受红包人头像
110
+     */
111
+    @TableField(exist = false)
112
+    private String avatarurl;
113
+
92 114
 
93 115
 }

+ 21
- 1
src/main/java/com/huiju/estateagents/redpack/mapper/TaOrgOrderMapper.java Zobrazit soubor

@@ -138,11 +138,31 @@ public interface TaOrgOrderMapper extends BaseMapper<TaOrgOrder> {
138 138
                                                                  @Param("orgId") Integer orgId);
139 139
 
140 140
 
141
-
142 141
     /**
143 142
      * 总充值金额
143
+     *
144 144
      * @param orgId
145 145
      * @return
146 146
      */
147 147
     Integer countTotalRechargeAmount(@Param("orgId") Integer orgId);
148
+
149
+    /**
150
+     * 条件查询红包发送记录
151
+     *
152
+     * @param page
153
+     * @param orderId
154
+     * @param wxOrderId
155
+     * @param tradeNo
156
+     * @param status
157
+     * @param orgId
158
+     * @return
159
+     */
160
+    IPage<TaOrgOrder> listRedPacketRecords(IPage<TaOrgOrder> page,
161
+                                           @Param("phone") String phone,
162
+                                           @Param("activityId") String activityId,
163
+                                           @Param("orderId") String orderId,
164
+                                           @Param("wxOrderId") String wxOrderId,
165
+                                           @Param("tradeNo") String tradeNo,
166
+                                           @Param("status") Integer status,
167
+                                           @Param("orgId") Integer orgId);
148 168
 }

+ 33
- 1
src/main/java/com/huiju/estateagents/redpack/mapper/TaRedPacketPersonMapper.java Zobrazit soubor

@@ -1,10 +1,15 @@
1 1
 package com.huiju.estateagents.redpack.mapper;
2 2
 
3
-import com.huiju.estateagents.redpack.entity.TaRedPacketPerson;
4 3
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.baomidou.mybatisplus.core.metadata.IPage;
5
+import com.huiju.estateagents.excel.redPacket.RedPacketRankingListExport;
6
+import com.huiju.estateagents.redpack.entity.TaRedPacketPerson;
5 7
 import org.apache.ibatis.annotations.Mapper;
8
+import org.apache.ibatis.annotations.Param;
6 9
 import org.springframework.stereotype.Component;
7 10
 
11
+import java.util.List;
12
+
8 13
 /**
9 14
  * <p>
10 15
  * 红包助力报名表  Mapper 接口
@@ -17,4 +22,31 @@ import org.springframework.stereotype.Component;
17 22
 @Component
18 23
 public interface TaRedPacketPersonMapper extends BaseMapper<TaRedPacketPerson> {
19 24
 
25
+    /**
26
+     * 获取红包活动排行榜
27
+     *
28
+     * @param page
29
+     * @param activityId
30
+     * @param orgId
31
+     * @param phone
32
+     * @return
33
+     */
34
+    IPage<TaRedPacketPerson> getRedPacketRankingList(IPage<TaRedPacketPerson> page,
35
+                                                     @Param("activityId") String activityId,
36
+                                                     @Param("orgId") Integer orgId,
37
+                                                     @Param("phone") String phone);
38
+
39
+    /**
40
+     * 导出红包活动排行榜
41
+     *
42
+     * @param activityId
43
+     * @param orgId
44
+     * @param phone
45
+     * @return
46
+     */
47
+    List<RedPacketRankingListExport> exportRedPacketRankingList(@Param("activityId") String activityId,
48
+                                                                @Param("orgId") Integer orgId,
49
+                                                                @Param("phone") String phone);
50
+
51
+
20 52
 }

+ 14
- 0
src/main/java/com/huiju/estateagents/redpack/service/ITaOrgOrderService.java Zobrazit soubor

@@ -137,4 +137,18 @@ public interface ITaOrgOrderService extends IService<TaOrgOrder> {
137 137
      * @throws Exception
138 138
      */
139 139
     void exportRefundOrderByCondition(LocalDate refundStartTime, LocalDate refundEndTime, String orderId, String auditStatus, Integer orgId, HttpServletResponse response) throws Exception;
140
+
141
+    /**
142
+     * 条件查询红包发送记录
143
+     *
144
+     * @param pageNum
145
+     * @param pageSize
146
+     * @param orderId
147
+     * @param wxOrderId
148
+     * @param tradeNo
149
+     * @param status
150
+     * @param orgId
151
+     * @return
152
+     */
153
+    ResponseBean listRedPacketRecords(Integer pageNum, Integer pageSize, String phone,String activityId, String orderId, String wxOrderId, String tradeNo, Integer status, Integer orgId);
140 154
 }

+ 25
- 0
src/main/java/com/huiju/estateagents/redpack/service/ITaRedPacketPersonService.java Zobrazit soubor

@@ -1,8 +1,11 @@
1 1
 package com.huiju.estateagents.redpack.service;
2 2
 
3
+import com.huiju.estateagents.base.ResponseBean;
3 4
 import com.huiju.estateagents.redpack.entity.TaRedPacketPerson;
4 5
 import com.baomidou.mybatisplus.extension.service.IService;
5 6
 
7
+import javax.servlet.http.HttpServletResponse;
8
+
6 9
 /**
7 10
  * <p>
8 11
  * 红包助力报名表  服务类
@@ -13,4 +16,26 @@ import com.baomidou.mybatisplus.extension.service.IService;
13 16
  */
14 17
 public interface ITaRedPacketPersonService extends IService<TaRedPacketPerson> {
15 18
 
19
+    /**
20
+     * 查询红包活动排行榜
21
+     *
22
+     * @param pageNum
23
+     * @param pageSize
24
+     * @param activityId
25
+     * @param phone
26
+     * @param orgId
27
+     * @return
28
+     */
29
+    ResponseBean getRedPacketRankingList(Integer pageNum, Integer pageSize, String activityId, String phone, Integer orgId);
30
+
31
+    /**
32
+     * 导出红包活动排行榜
33
+     *
34
+     * @param activityId
35
+     * @param phone
36
+     * @param orgId
37
+     * @param response
38
+     */
39
+    void exportRedPacketRankingList(String activityId, String phone, Integer orgId, HttpServletResponse response) throws Exception;
40
+
16 41
 }

+ 8
- 0
src/main/java/com/huiju/estateagents/redpack/service/impl/TaOrgOrderServiceImpl.java Zobrazit soubor

@@ -309,6 +309,14 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
309 309
         EasyExcel.write(response.getOutputStream(), AccountRefundRecordExport.class).sheet("退款订单").doWrite(records);
310 310
     }
311 311
 
312
+    @Override
313
+    public ResponseBean listRedPacketRecords(Integer pageNum, Integer pageSize,String phone,String activityId, String orderId, String wxOrderId, String tradeNo, Integer status, Integer orgId) {
314
+        ResponseBean responseBean = new ResponseBean();
315
+        IPage<TaOrgOrder> pg = new Page<>(pageNum, pageSize);
316
+        responseBean.addSuccess(taOrgOrderMapper.listRedPacketRecords(pg,phone,activityId,orderId, wxOrderId, tradeNo, status, orgId));
317
+        return responseBean;
318
+    }
319
+
312 320
     /**
313 321
      * 获取每个小程序独立的微信账户
314 322
      *

+ 33
- 1
src/main/java/com/huiju/estateagents/redpack/service/impl/TaRedPacketPersonServiceImpl.java Zobrazit soubor

@@ -1,11 +1,21 @@
1 1
 package com.huiju.estateagents.redpack.service.impl;
2 2
 
3
+import com.alibaba.excel.EasyExcel;
4
+import com.baomidou.mybatisplus.core.metadata.IPage;
5
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7
+import com.huiju.estateagents.base.ResponseBean;
8
+import com.huiju.estateagents.excel.redPacket.RedPacketRankingListExport;
3 9
 import com.huiju.estateagents.redpack.entity.TaRedPacketPerson;
4 10
 import com.huiju.estateagents.redpack.mapper.TaRedPacketPersonMapper;
5 11
 import com.huiju.estateagents.redpack.service.ITaRedPacketPersonService;
6
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
12
+import org.springframework.beans.factory.annotation.Autowired;
7 13
 import org.springframework.stereotype.Service;
8 14
 
15
+import javax.servlet.http.HttpServletResponse;
16
+import java.net.URLEncoder;
17
+import java.util.List;
18
+
9 19
 /**
10 20
  * <p>
11 21
  * 红包助力报名表  服务实现类
@@ -17,4 +27,26 @@ import org.springframework.stereotype.Service;
17 27
 @Service
18 28
 public class TaRedPacketPersonServiceImpl extends ServiceImpl<TaRedPacketPersonMapper, TaRedPacketPerson> implements ITaRedPacketPersonService {
19 29
 
30
+    @Autowired
31
+    private TaRedPacketPersonMapper taRedPacketPersonMapper;
32
+
33
+    @Override
34
+    public ResponseBean getRedPacketRankingList(Integer pageNum, Integer pageSize, String activityId, String phone, Integer orgId) {
35
+        ResponseBean responseBean = new ResponseBean();
36
+        IPage<TaRedPacketPerson> pg = new Page<>(pageNum, pageSize);
37
+        responseBean.addSuccess(taRedPacketPersonMapper.getRedPacketRankingList(pg, activityId, orgId, phone));
38
+        return responseBean;
39
+    }
40
+
41
+    @Override
42
+    public void exportRedPacketRankingList(String activityId, String phone, Integer orgId, HttpServletResponse response) throws Exception{
43
+        response.setContentType("application/octet-stream");
44
+        response.setCharacterEncoding("utf-8");
45
+        List<RedPacketRankingListExport> records = taRedPacketPersonMapper.exportRedPacketRankingList(activityId,orgId,phone);
46
+        String fileName = URLEncoder.encode("排行榜", "UTF-8");
47
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
48
+        EasyExcel.write(response.getOutputStream(), RedPacketRankingListExport.class).sheet("排行榜").doWrite(records);
49
+    }
50
+
51
+
20 52
 }

+ 35
- 1
src/main/resources/mapper/redpack/TaOrgOrderMapper.xml Zobrazit soubor

@@ -224,5 +224,39 @@
224 224
         and a.item_type = 'recharge'
225 225
     </select>
226 226
 
227
-
227
+    <select id="listRedPacketRecords" resultType="com.huiju.estateagents.redpack.entity.TaOrgOrder">
228
+        SELECT
229
+            t.*,
230
+            t2.amount detailAmount,
231
+            t3.phone,
232
+            ifNull( t3.NAME, t3.nickname ) nickname,
233
+            t3.avatarurl
234
+        FROM
235
+            ta_org_order t
236
+            INNER JOIN ta_org_order_detail t2 ON t.order_id = t2.order_id
237
+            LEFT JOIN ta_person t3 ON t2.receiver_id = t3.person_id
238
+        WHERE
239
+            t.org_id = #{orgId}
240
+            AND t2.target_id = #{activityId}
241
+            AND t2.target_type = 'redPacket'
242
+            AND t2.item_type = 'redPacket'
243
+            AND t.`status` >- 1
244
+            <if test = " orderId != null and orderId != ''">
245
+                AND t.order_id like concat( '%',#{orderId},'%')
246
+            </if>
247
+            <if test = " tradeNo != null and tradeNo != ''">
248
+                AND t.trade_no like concat( '%',#{tradeNo},'%')
249
+            </if>
250
+            <if test = " wxOrderId != null and wxOrderId != ''">
251
+                AND t.wx_order_id like concat ('%',#{wxOrderId},'%')
252
+            </if>
253
+            <if test="status != null">
254
+                AND t.status = #{status}
255
+            </if>
256
+            <if test = "phone != null and phone != ''">
257
+                AND t3.phone like concat ('%',phone,'%')
258
+            </if>
259
+        ORDER BY
260
+            t.create_date DESC
261
+    </select>
228 262
 </mapper>

+ 0
- 2
src/main/resources/mapper/redpack/TaRedPacketHistoryMapper.xml Zobrazit soubor

@@ -2,8 +2,6 @@
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 3
 <mapper namespace="com.huiju.estateagents.redpack.mapper.TaRedPacketHistoryMapper">
4 4
 
5
-    <select id="listHistoryByCondition" resultType="com.huiju.estateagents.redpack.entity.TaRedPacketHistory">
6 5
 
7
-    </select>
8 6
 
9 7
 </mapper>

+ 45
- 0
src/main/resources/mapper/redpack/TaRedPacketPersonMapper.xml Zobrazit soubor

@@ -2,4 +2,49 @@
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 3
 <mapper namespace="com.huiju.estateagents.redpack.mapper.TaRedPacketPersonMapper">
4 4
 
5
+    <select id="getRedPacketRankingList" resultType="com.huiju.estateagents.redpack.entity.TaRedPacketPerson">
6
+        SELECT
7
+            t.*,
8
+            t2.phone,
9
+            t2.NAME,
10
+            t2.nickname nickname,
11
+            t2.avatarurl
12
+        FROM
13
+            ta_red_packet_person t
14
+            LEFT JOIN ta_person t2 ON t.miniapp_person_id = t2.person_id
15
+        WHERE
16
+            t.activity_id = #{activityId}
17
+            AND t.org_id = #{orgId}
18
+            AND t.is_signed_up = TRUE
19
+            <if test = "phone != null and phone != ''">
20
+                AND t2.phone like concat('%',#{phone},'%')
21
+            </if>
22
+        ORDER BY
23
+            t.votes DESC
24
+    </select>
25
+
26
+    <select id="exportRedPacketRankingList" resultType="com.huiju.estateagents.excel.redPacket.RedPacketRankingListExport">
27
+        SELECT
28
+            t.votes,
29
+            t.crate_date,
30
+            t2.phone,
31
+            t2.NAME,
32
+            t2.nickname nickname,
33
+            t2.avatarurl
34
+        FROM
35
+            ta_red_packet_person t
36
+            LEFT JOIN ta_person t2 ON t.miniapp_person_id = t2.person_id
37
+        WHERE
38
+            t.activity_id = #{activityId}
39
+            AND t.org_id = #{orgId}
40
+            AND t.is_signed_up = TRUE
41
+            <if test = "phone != null and phone != ''">
42
+                AND t2.phone like concat('%',#{phone},'%')
43
+            </if>
44
+        ORDER BY
45
+            t.votes DESC
46
+    </select>
47
+
48
+
49
+
5 50
 </mapper>