package com.doumee.api.common; import com.alibaba.fastjson.JSONObject; import com.doumee.api.BaseController; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageData; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; import com.doumee.dao.business.MemberHistoryMapper; import com.doumee.dao.business.MemberMapper; import com.doumee.dao.business.join.AftersaleJoinMapper; import com.doumee.dao.business.join.GoodsorderJoinMapper; import com.doumee.dao.business.join.MemberJoinMapper; import com.doumee.dao.business.model.*; import com.github.yulichang.wrapper.MPJLambdaWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; @Api(tags = "工作台") @Trace(exclude = true) @RestController @RequestMapping("/home") @Slf4j public class HomeContrller extends BaseController { @Autowired private MemberJoinMapper memberJoinMapper; @Autowired private MemberHistoryMapper memberHistoryMapper; @Autowired private GoodsorderJoinMapper goodsorderJoinMapper; @Autowired private AftersaleJoinMapper aftersaleJoinMapper; @ApiOperation(value = "工作台", notes = "工作台", httpMethod = "POST", position = 6) @ApiImplicitParams({ @ApiImplicitParam(name = "mark", value = "标识位:7:七天,30:30天", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class), }) @PostMapping(value = "/home") public ApiResponse uploadMobile(Integer mark,HttpServletRequest request, HttpServletResponse response) throws Exception { JSONObject json=new JSONObject(); SimpleDateFormat format1=new SimpleDateFormat("YYYY-MM-dd"); //用户总数 MPJLambdaWrapper memberWrapper = new MPJLambdaWrapper<>(); memberWrapper.eq(Member::getIsdeleted,Constants.ZERO); long memberCount=memberJoinMapper.selectCount(memberWrapper); json.put("memberCount",memberCount); //今日活动用户; MPJLambdaWrapper memberHistoryWrapper = new MPJLambdaWrapper<>(); memberHistoryWrapper.select("(select count(s.id) from (SELECT mh.id from member_history mh " + " where mh.ISDELETED=0 and DATE_FORMAT(mh.CREATE_DATE, '%Y-%m-%d')=DATE_FORMAT(CURDATE(), '%Y-%m-%d') " + " GROUP BY mh.MEMBER_ID) as s) as nowActivity"); memberHistoryWrapper.eq(MemberHistory::getIsdeleted,Constants.ZERO); memberHistoryWrapper.last("limit 1"); MemberHistory memberHistory= memberHistoryMapper.selectOne(memberHistoryWrapper); json.put("nowActivity",memberHistory.getNowActivity()); //获取订单总数 MPJLambdaWrapper goodsorderWrapper = new MPJLambdaWrapper<>(); goodsorderWrapper.select("( select count(id) from goodsorder where ISDELETED=0 and status!=4 ) as orderCount"); goodsorderWrapper.select("(select sum(IFNULL(PRICE,0))+sum(IFNULL(INTEGRAL,0))-" + "(select sum(a.ACT_MONEY) from aftersale a where a.ISDELETED=0 and a.status in (3,4,5)) " + " from goodsorder where ISDELETED=0 and PAY_STATUS=1 and status !=4 ) as orderMoneyCount"); goodsorderWrapper.select("( select count(id) from goodsorder where ISDELETED=0 and status!=4 and DATE_FORMAT(CREATE_DATE, '%Y-%m')=DATE_FORMAT(CURDATE(), '%Y-%m') ) as orderMonthCount"); goodsorderWrapper.select("(select sum(IFNULL(PRICE,0))+sum(IFNULL(INTEGRAL,0))-" + " (SELECT sum( IFNULL(a.ACT_MONEY ,0)) " + " FROM aftersale a " + " left join goodsorder g on g.id=a.ORDER_ID " + " WHERE a.ISDELETED = 0 AND a.STATUS IN ( 3, 4, 5 ) " + " and g.status!=4 and DATE_FORMAT(g.CREATE_DATE, '%Y-%m')=DATE_FORMAT(CURDATE(), '%Y-%m'))" + "from goodsorder where ISDELETED=0 and PAY_STATUS=1 and status!=4 " + " and DATE_FORMAT(CREATE_DATE, '%Y-%m')=DATE_FORMAT(CURDATE(), '%Y-%m') ) as orderMonthMoney "); goodsorderWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO); goodsorderWrapper.last("limit 1"); Goodsorder goodsorder=goodsorderJoinMapper.selectOne(goodsorderWrapper); json.put("orderCount",goodsorder.getOrderCount()); json.put("orderMoneyCount",goodsorder.getOrderMoneyCount()); json.put("orderMonthCount",goodsorder.getOrderMonthCount()); json.put("orderMonthMoney",goodsorder.getOrderMonthMoney()); //获取订单金额趋势 MPJLambdaWrapper listquery = new MPJLambdaWrapper<>(); listquery.selectAs(Goodsorder::getCreateDate,Goodsorder::getCreateDate); listquery.select("DATE_FORMAT(t.CREATE_DATE, '%m.%d') as everyDay"); listquery.eq(Goodsorder::getIsdeleted,Constants.ZERO); listquery.eq(Goodsorder::getPayStatus,Constants.ONE); listquery.ne(Goodsorder::getStatus,4); if(mark!=null){ Calendar c = Calendar.getInstance(); if(Constants.equalsInteger(mark,7)){ c.add(Calendar.DATE,-7); }else if(Constants.equalsInteger(mark,30)){ c.add(Calendar.DATE,-30); } Date date=c.getTime(); listquery.gt("DATE_FORMAT(t.CREATE_DATE, '%Y-%m-%d')", format1.format(date)); listquery.select(" sum(IFNULL(t.PRICE,0))+sum(IFNULL(t.INTEGRAL,0)) as orderMoneyCount"); /* listquery.select(" sum(IFNULL(t.PRICE,0))+sum(IFNULL(t.INTEGRAL,0))-" + " (SELECT sum( a.ACT_MONEY ) " + " FROM aftersale a " + " left join goodsorder g on g.id=a.ORDER_ID " + " WHERE a.ISDELETED = 0 AND a.STATUS IN ( 3, 4, 5 ) " + " and g.status!=4 and DATE_FORMAT(g.CREATE_DATE, '%Y-%m-%d')=DATE_FORMAT(t.CREATE_DATE, '%Y-%m-%d')) as orderMoneyCount");*/ } listquery.groupBy(" DATE_FORMAT(t.CREATE_DATE, '%Y-%m-%d')"); listquery.orderByAsc(Goodsorder::getCreateDate); List orderList=goodsorderJoinMapper.selectJoinList(Goodsorder.class,listquery); MPJLambdaWrapper after = new MPJLambdaWrapper<>(); after.last("limit 1"); orderList.stream().forEach(s ->{ String sd=format1.format(s.getCreateDate()); after.select(" (SELECT sum( a.ACT_MONEY ) " + " FROM aftersale a " + " left join goodsorder g on g.id=a.ORDER_ID " + " WHERE a.ISDELETED = 0 AND a.STATUS IN ( 3, 4, 5 ) " + " and g.status!=4 and DATE_FORMAT(g.CREATE_DATE, '%Y-%m-%d')=DATE_FORMAT('"+sd+"', '%Y-%m-%d')) as orderMoneyCount"); Aftersale af= aftersaleJoinMapper.selectJoinOne(Aftersale.class,after); BigDecimal sum=new BigDecimal(0); if(af!=null&&af.getActMoney()!=null){ sum=s.getOrderMoneyCount().subtract(af.getActMoney()); s.setOrderMoneyCount(sum); } }); List orderList2=new ArrayList<>(); SimpleDateFormat format=new SimpleDateFormat("MM.dd"); if(mark!=null){ if(Constants.equalsInteger(mark,7)){ for(int i=6;i>0;i--){ Calendar c = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); c.add(Calendar.DATE,-i); Boolean sign=true; for(Goodsorder model:orderList){ c2.setTime(model.getCreateDate()); if(Constants.equalsInteger(c.get(Calendar.DATE),c2.get(Calendar.DATE))){ sign=false; } } Goodsorder newDate=new Goodsorder(); String dd=format.format(c.getTime()); newDate.setEveryDay(format.format(c.getTime())); newDate.setOrderMoneyCount(new BigDecimal(0)); if(sign){ orderList2.add(newDate); } } }else if(Constants.equalsInteger(mark,30)){ for(int i=29;i>0;i--){ Calendar c = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); c.add(Calendar.DATE,-i); Boolean sign=true; for(Goodsorder model:orderList){ c2.setTime(model.getCreateDate()); if(Constants.equalsInteger(c.get(Calendar.DATE),c2.get(Calendar.DATE))){ sign=false; } } Goodsorder newDate=new Goodsorder(); newDate.setOrderMoneyCount(new BigDecimal(0)); newDate.setEveryDay(format.format(c.getTime())); if(sign){ orderList2.add(newDate); } } } } if(orderList2.size()>0){ orderList.addAll(orderList2); orderList.sort(Comparator.comparing(Goodsorder::getEveryDay)); } json.put("orderList",orderList); return ApiResponse.success(json); } }