package com.stylefeng.guns.modular.api; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; import com.stylefeng.guns.modular.system.model.UserRedPacketRecord; import com.stylefeng.guns.modular.system.service.IUserInfoService; import com.stylefeng.guns.modular.system.service.IUserRedPacketRecordService; import com.stylefeng.guns.modular.system.util.DateUtil; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.system.warpper.MyRedEnvelope; import com.stylefeng.guns.modular.system.warpper.TravelRecordListWarpper; import com.stylefeng.guns.modular.system.warpper.TravelRecordWarpper; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; 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.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Queue; import java.util.stream.Collectors; /** * 红包控制器 */ @Api @RestController @RequestMapping("/api/redEnvelope") public class RedEnvelopeController { @Autowired private IUserRedPacketRecordService userRedPacketRecordService; @Autowired private IUserInfoService userInfoService; @Autowired private IOrderTaxiService orderTaxiService; @Autowired private IOrderPrivateCarService orderPrivateCarService; @Autowired private IOrderCrossCityService orderCrossCityService; @Autowired private IOrderLogisticsService orderLogisticsService; /** * 获取红包列表 * @param pageNum * @param size * @param request * @return */ @ResponseBody @PostMapping("/queryMyRedEnvelope") @ApiOperation(value = "获取红包列表【2.0】", tags = {"用户端-个人中心"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "页码(首页1)", name = "pageNum", required = true, dataType = "int"), @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> queryMyRedEnvelope(Integer pageNum, Integer size, Integer language, HttpServletRequest request){ try { Integer uid = userInfoService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } List userRedPacketRecords = userRedPacketRecordService.selectList(new EntityWrapper() .eq("userId", uid).ne("state", 0)); List collect = userRedPacketRecords.stream().map(UserRedPacketRecord::getMoney).collect(Collectors.toList()); double sum = collect.stream().mapToDouble(Double::doubleValue).sum(); double sum1 = userRedPacketRecords.stream().filter(v -> v.getRemainingAmount().compareTo(0D) > 0) .map(UserRedPacketRecord::getRemainingAmount).mapToDouble(Double::doubleValue).sum(); List> list = userRedPacketRecordService.queryMyRedEnvelope(pageNum, size, uid); List baseWarppers = new ArrayList<>(); for(Map map : list){ MyRedEnvelope baseWarpper = new MyRedEnvelope(); baseWarpper.setId(null != map.get("id") ? Integer.valueOf(String.valueOf(map.get("id"))) : 0); baseWarpper.setAmount(null != map.get("money") ? Double.valueOf(String.valueOf(map.get("money"))) : 0); baseWarpper.setName(null != map.get("name") ? String.valueOf(map.get("name")) : (language == 1 ? "指定发放" : language == 2 ? "Designated distribution" : "Distribution désignée")); baseWarpper.setContent(null != map.get("insertTime") ? DateUtil.conversionFormat(language, String.valueOf(map.get("insertTime"))) : ""); baseWarpper.setTotalAmount(sum); baseWarpper.setRemainingAmount(sum1); baseWarppers.add(baseWarpper); } return ResultUtil.success(baseWarppers); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 获取红包使用记录 * @param pageNum * @param size * @param request * @return */ @ResponseBody @PostMapping("/queryRedEnvelope") @ApiOperation(value = "获取红包使用记录【2.0】", tags = {"用户端-个人中心"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "页码(首页1)", name = "pageNum", required = true, dataType = "int"), @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> queryRedEnvelope(Integer language, Integer pageNum, Integer size, HttpServletRequest request){ try { Integer uid = userInfoService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } pageNum = (pageNum - 1) * size; List> list = orderPrivateCarService.queryRedEnvelope(language, uid);//专车 List> list1 = orderLogisticsService.queryRedEnvelope(language, uid); list.addAll(list1); List orderWarpper = TravelRecordListWarpper.getTravelRecordWarpper(list); double sum = orderWarpper.stream().mapToDouble(TravelRecordListWarpper::getMoney).sum(); for (TravelRecordListWarpper travelRecordListWarpper : orderWarpper) { travelRecordListWarpper.setTotal(sum); } //分页 if(orderWarpper.size() >= (pageNum + 1) * size){ orderWarpper = orderWarpper.subList(pageNum, pageNum + size); }else if(pageNum < orderWarpper.size() && orderWarpper.size() < (pageNum + 1) * size){ orderWarpper = orderWarpper.subList(pageNum, orderWarpper.size()); }else{ orderWarpper = new ArrayList<>(); } return ResultUtil.success(orderWarpper); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } }