Skip to content

Commit a90abd7

Browse files
committed
Merge pull request xiaowei1118#33 from xiaowei1118/simons
销售分析
2 parents dfbecc6 + 3b17283 commit a90abd7

11 files changed

Lines changed: 330 additions & 36 deletions

File tree

src/main/java/com/changyu/foryou/controller/OrderController.java

Lines changed: 100 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@
2727
import com.changyu.foryou.model.CartGood;
2828
import com.changyu.foryou.model.DeliverChildOrder;
2929
import com.changyu.foryou.model.DeliverOrder;
30-
import com.changyu.foryou.model.MiniOrder;
3130
import com.changyu.foryou.model.Order;
3231
import com.changyu.foryou.model.PCOrder;
3332
import com.changyu.foryou.model.Preferential;
3433
import com.changyu.foryou.model.Receiver;
3534
import com.changyu.foryou.model.SmallOrder;
3635
import com.changyu.foryou.model.SuperAdminOrder;
3736
import com.changyu.foryou.model.TogetherOrder;
37+
import com.changyu.foryou.model.TradeInfo;
3838
import com.changyu.foryou.payment.ChargeInterface;
3939
import com.changyu.foryou.service.CampusService;
4040
import com.changyu.foryou.service.FoodService;
@@ -43,6 +43,7 @@
4343
import com.changyu.foryou.service.PushService;
4444
import com.changyu.foryou.service.ReceiverService;
4545
import com.changyu.foryou.service.UserService;
46+
import com.changyu.foryou.tools.CalendarTool;
4647
import com.changyu.foryou.tools.Constants;
4748
import com.pingplusplus.model.Charge;
4849
import com.pingplusplus.model.Refund;
@@ -206,17 +207,41 @@ public void setOrderService(OrderService orderService) {
206207
togetherOrdersList.add(togetherOrder);
207208
}
208209

209-
List<MiniOrder> statusList = new ArrayList<MiniOrder>();
210-
211210
//根据phoneId获取各个状态订单数量
212211
for (int i = 1; i <= 5; i++) {
213-
MiniOrder order = new MiniOrder();
214-
order.setStatus(Short.parseShort(i+""));
215-
paramMap.put("status", i);
216-
order.setOrderCount(orderService.getMiniOrderByPhone(paramMap));
217-
statusList.add(order);
212+
int count = 0;
213+
if(i!=5&&i!=4){
214+
paramMap.put("status", i);
215+
count = orderService.getMiniOrderByPhone(paramMap);
216+
}
217+
switch (i) {
218+
case 1:
219+
//代付款
220+
map.put("waitPayOrder", count);
221+
break;
222+
case 2:
223+
//待确认
224+
map.put("waitMakeSureOrder", count);
225+
break;
226+
case 3:
227+
//配送中
228+
map.put("distribution", count);
229+
break;
230+
case 4:
231+
//待评价
232+
paramMap.put("status", 4);
233+
paramMap.put("isRemarked", 0);
234+
map.put("waitCommmentOrder", count);
235+
break;
236+
case 5:
237+
//已完成
238+
paramMap.put("status", 4);
239+
paramMap.put("isRemarked", 1);
240+
map.put("doneOrder", orderService.getMiniOrderByPhone(paramMap));
241+
break;
242+
}
218243
}
219-
map.put("statusList", statusList);
244+
220245
map.put(Constants.STATUS, Constants.SUCCESS);
221246
map.put(Constants.MESSAGE, "获取订单成功");
222247
map.put("orderList", JSON.parse(JSON
@@ -1478,4 +1503,70 @@ public String getIpAddr(HttpServletRequest request){
14781503
return resultMap;
14791504
}
14801505

1506+
/**
1507+
* 获取销量和销售额
1508+
* @param campusId
1509+
* @return
1510+
*/
1511+
@RequestMapping("getSalesInfoByCampusId")
1512+
@ResponseBody
1513+
public JSONArray getSalesByDate(Integer campusId){
1514+
Map<String,Object> paramMap=new HashMap<String,Object>();
1515+
1516+
Date dateStart;
1517+
Date dateEnd;
1518+
List<TradeInfo> tradeList = new ArrayList<TradeInfo>();
1519+
1520+
paramMap.put("campusId", campusId);
1521+
1522+
//当天订单数、销售额
1523+
dateStart = CalendarTool.getTodayStart();
1524+
dateEnd = CalendarTool.getTodayEnd();
1525+
paramMap.put("dateStart", dateStart);
1526+
paramMap.put("dateEnd", dateEnd);
1527+
TradeInfo todayInfo = new TradeInfo();
1528+
todayInfo.setInfoDateType("当天");
1529+
todayInfo.setOrderCount(orderService.getSalesInfoByCampusId(paramMap)); //获取指定时间段和指定校区的订单总数
1530+
todayInfo.setTradeVolume(orderService.getTradeVolumeByCampusId(paramMap)); //获取指定时间段和指定校区的订单交易额
1531+
paramMap.put("payWay", 1); //payWay:0,没有; 1,支付宝; 2,微信
1532+
todayInfo.setTradeVolumeAliPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区、指定支付方式的订单交易额
1533+
paramMap.put("payWay", 2);
1534+
todayInfo.setTradeVolumeWeChatPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区、指定支付方式的订单交易额
1535+
tradeList.add(todayInfo);
1536+
paramMap.remove("payWay");
1537+
1538+
//本周订单数、销售额
1539+
dateStart = CalendarTool.getMondayOfThisWeek();
1540+
dateEnd = CalendarTool.getSundayOfThisWeek();
1541+
paramMap.put("dateStart", dateStart);
1542+
paramMap.put("dateEnd", dateEnd);
1543+
TradeInfo weekInfo = new TradeInfo();
1544+
weekInfo.setInfoDateType("当周");
1545+
weekInfo.setOrderCount(orderService.getSalesInfoByCampusId(paramMap));//获取指定时间段和指定校区的订单总数
1546+
weekInfo.setTradeVolume(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段和指定校区的订单交易额
1547+
paramMap.put("payWay", 1); //payWay:0,没有; 1,支付宝; 2,微信
1548+
weekInfo.setTradeVolumeAliPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区和指定支付方式的订单交易额
1549+
paramMap.put("payWay", 2);
1550+
weekInfo.setTradeVolumeWeChatPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区、指定支付方式的订单交易额
1551+
tradeList.add(weekInfo);
1552+
paramMap.remove("payWay");
1553+
1554+
//本月订单数、销售额
1555+
dateStart = CalendarTool.getFirstDayOfThisMonth();
1556+
dateEnd = CalendarTool.getLastDayOfThisMonth();
1557+
paramMap.put("dateStart", dateStart);
1558+
paramMap.put("dateEnd", dateEnd);
1559+
TradeInfo monthInfo = new TradeInfo();
1560+
monthInfo.setInfoDateType("当月");
1561+
monthInfo.setOrderCount(orderService.getSalesInfoByCampusId(paramMap));//获取指定时间段和指定校区的订单总数
1562+
monthInfo.setTradeVolume(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段和指定校区的订单交易额
1563+
paramMap.put("payWay", 1); //payWay:0,没有; 1,支付宝; 2,微信
1564+
monthInfo.setTradeVolumeAliPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区和指定支付方式的订单交易额
1565+
paramMap.put("payWay", 2);
1566+
monthInfo.setTradeVolumeWeChatPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区、指定支付方式的订单交易额
1567+
tradeList.add(monthInfo);
1568+
1569+
return (JSONArray)JSON.toJSON(tradeList);
1570+
}
1571+
14811572
}

src/main/java/com/changyu/foryou/mapper/OrderMapper.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,4 +121,8 @@ public interface OrderMapper {
121121
Integer updateorderStatusRefundSuccess(Map<String, Object> paramMap); //将状态置为11
122122

123123
Integer getMiniOrderByPhone(Map<String, Object> paramMap); //获取订单状态对应的数量
124+
125+
Integer getSalesInfoByCampusId(Map<String, Object> paramMap); //根据校区和时间段获取销售量
126+
127+
Float getTradeVolumeByCampusId(Map<String, Object> paramMap); //获取指定时间段和指定校区的订单交易额
124128
}

src/main/java/com/changyu/foryou/mapping/CampusMapper.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<resultMap id="CampusWithCityMap" type="com.changyu.foryou.model.CityWithCampus">
2020
<id column="city_id" property="cityId" jdbcType="INTEGER" />
2121
<result column="city_name" property="cityName" jdbcType="VARCHAR" />
22-
<collection property="campuses" ofType="Campus">
22+
<collection property="campuses" ofType="com.changyu.foryou.model.Campus">
2323
<id column="campus_id" property="campusId" jdbcType="INTEGER" />
2424
<result column="campus_name" property="campusName" jdbcType="VARCHAR" />
2525
</collection>

src/main/java/com/changyu/foryou/mapping/OrderMapper.xml

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -967,7 +967,48 @@
967967
</update>
968968

969969
<select id="getMiniOrderByPhone" resultType="Integer">
970-
select COUNT(together_id) from orders WHERE together_id in
971-
(select DISTINCT together_id from orders where phone=#{phoneId,jdbcType=VARCHAR} and status=#{status,jdbcType=SMALLINT})
970+
SELECT
971+
count(DISTINCT together_id)
972+
FROM
973+
orders
974+
<where>
975+
phone=#{phoneId,jdbcType=VARCHAR}
976+
<if test="isRemarked!=null">
977+
and is_remarked=#{isRemarked,jdbcType=SMALLINT}
978+
</if>
979+
<if test="status!=null">
980+
and status=#{status,jdbcType=SMALLINT}
981+
</if>
982+
and tag=1
983+
</where>
972984
</select>
985+
986+
<!-- 获取指定时间段和指定校区的订单总数 -->
987+
<select id="getSalesInfoByCampusId" resultType="Integer">
988+
select COUNT(DISTINCT together_id) from orders
989+
where campus_id=#{campusId}
990+
and together_date BETWEEN #{dateStart,jdbcType=TIMESTAMP}
991+
and #{dateEnd,jdbcType=TIMESTAMP}
992+
and tag=1
993+
</select>
994+
995+
<!-- 获取指定时间段和指定校区的订单交易额 -->
996+
<select id="getTradeVolumeByCampusId" resultType="Float">
997+
SELECT sum(total_price)
998+
from together_order
999+
<where>
1000+
campus_id=#{campusId,jdbcType=INTEGER}
1001+
<if test="dateStart!=null and dateEnd!=null">
1002+
and together_date BETWEEN #{dateStart,jdbcType=TIMESTAMP}
1003+
AND #{dateEnd,jdbcType=TIMESTAMP}
1004+
</if>
1005+
<if test="dateToday!=null">
1006+
and together_date>=#{dateToday,jdbcType=TIMESTAMP}
1007+
</if>
1008+
<if test="payWay!=null">
1009+
AND pay_way=#{payWay,jdbcType=SMALLINT}
1010+
</if>
1011+
</where>
1012+
</select>
1013+
9731014
</mapper>

src/main/java/com/changyu/foryou/model/Campus.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.changyu.foryou.model;
22

3-
import java.sql.Time;
43
import java.sql.Timestamp;
54

65

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.changyu.foryou.model;
2+
3+
public class TradeInfo {
4+
private Integer orderCount;
5+
private Float tradeVolume;
6+
private Float tradeVolumeAliPay;
7+
private Float tradeVolumeWeChatPay;
8+
private String infoDateType;
9+
10+
public Integer getOrderCount() {
11+
return orderCount;
12+
}
13+
public void setOrderCount(Integer orderCount) {
14+
this.orderCount = orderCount;
15+
}
16+
public Float getTradeVolume() {
17+
return tradeVolume;
18+
}
19+
public void setTradeVolume(Float tradeVolume) {
20+
this.tradeVolume = tradeVolume;
21+
}
22+
public Float getTradeVolumeAliPay() {
23+
return tradeVolumeAliPay;
24+
}
25+
public void setTradeVolumeAliPay(Float tradeVolumeAliPay) {
26+
this.tradeVolumeAliPay = tradeVolumeAliPay;
27+
}
28+
public Float getTradeVolumeWeChatPay() {
29+
return tradeVolumeWeChatPay;
30+
}
31+
public void setTradeVolumeWeChatPay(Float tradeVolumeWeChatPay) {
32+
this.tradeVolumeWeChatPay = tradeVolumeWeChatPay;
33+
}
34+
public String getInfoDateType() {
35+
return infoDateType;
36+
}
37+
public void setInfoDateType(String infoDateType) {
38+
this.infoDateType = infoDateType;
39+
}
40+
}

src/main/java/com/changyu/foryou/service/OrderService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,8 @@ public interface OrderService {
122122
Integer updateOrderStatusRefundSuccess(Map<String, Object> paramMap);
123123

124124
Integer getMiniOrderByPhone(Map<String, Object> paramMap);
125+
126+
Integer getSalesInfoByCampusId(Map<String, Object> paramMap); //根据校区和时间段获取销售量
127+
128+
Float getTradeVolumeByCampusId(Map<String, Object> paramMap); //获取指定时间段和指定校区的订单交易额
125129
}

src/main/java/com/changyu/foryou/serviceImpl/OrderServiceImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,18 @@ public Integer getMiniOrderByPhone(Map<String, Object> paramMap) {
345345
// TODO Auto-generated method stub
346346
return orderMapper.getMiniOrderByPhone(paramMap);
347347
}
348+
349+
@Override
350+
public Integer getSalesInfoByCampusId(Map<String, Object> paramMap) {
351+
// TODO Auto-generated method stub
352+
return orderMapper.getSalesInfoByCampusId(paramMap);
353+
}
354+
355+
@Override
356+
public Float getTradeVolumeByCampusId(Map<String, Object> paramMap) {
357+
// TODO Auto-generated method stub
358+
return orderMapper.getTradeVolumeByCampusId(paramMap);
359+
}
348360

349361

350362
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.changyu.foryou.tools;
2+
3+
import java.text.SimpleDateFormat;
4+
import java.util.Calendar;
5+
import java.util.Date;
6+
7+
public class CalendarTool {
8+
public static Date getMondayOfThisWeek() {
9+
Calendar c = Calendar.getInstance();
10+
int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1;
11+
if (day_of_week == 0)
12+
day_of_week = 7;
13+
c.add(Calendar.DATE, -day_of_week + 1);
14+
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 00, 00, 00);
15+
//return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime());
16+
return c.getTime();
17+
}
18+
19+
public static Date getSundayOfThisWeek() {
20+
Calendar c = Calendar.getInstance();
21+
int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1;
22+
if (day_of_week == 0)
23+
day_of_week = 7;
24+
c.add(Calendar.DATE, -day_of_week + 7);
25+
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 23, 59, 59);
26+
//return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime());
27+
return c.getTime();
28+
}
29+
30+
public static Date getTodayStart(){
31+
Calendar c = Calendar.getInstance();
32+
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 00, 00, 00);
33+
return c.getTime();
34+
}
35+
36+
public static Date getTodayEnd(){
37+
Calendar c = Calendar.getInstance();
38+
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 23, 59, 59);
39+
return c.getTime();
40+
}
41+
42+
public static Date getFirstDayOfThisMonth(){
43+
Calendar c = Calendar.getInstance();
44+
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), 1, 00, 00, 00);
45+
return c.getTime();
46+
}
47+
48+
public static Date getLastDayOfThisMonth(){
49+
Calendar calendar = Calendar.getInstance();
50+
calendar.set(Calendar.DATE, calendar.getMaximum(Calendar.DATE));
51+
return calendar.getTime();
52+
}
53+
}

src/main/resources/config.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
<!-- <settings>
66
<setting name="cacheEnabled" value="true" />
77
</settings> -->
8-
<typeAliases>
8+
<!-- <typeAliases>
99
<package name="com.changyu.foryou.model" />
10-
</typeAliases>
10+
</typeAliases> -->
1111

1212
</configuration>

0 commit comments

Comments
 (0)