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<Member> memberWrapper = new MPJLambdaWrapper<>();
|
memberWrapper.eq(Member::getIsdeleted,Constants.ZERO);
|
long memberCount=memberJoinMapper.selectCount(memberWrapper);
|
json.put("memberCount",memberCount);
|
|
//今日活动用户;
|
MPJLambdaWrapper<MemberHistory> 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<Goodsorder> 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<Goodsorder> 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<Goodsorder> orderList=goodsorderJoinMapper.selectJoinList(Goodsorder.class,listquery);
|
|
MPJLambdaWrapper<Aftersale> 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<Goodsorder> 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);
|
}
|
|
}
|