| | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.ruoyi.account.api.feignClient.AppUserClient; |
| | | import com.ruoyi.account.api.model.AppUser; |
| | |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.common.core.web.page.TableDataInfo; |
| | | import com.ruoyi.common.security.service.TokenService; |
| | | import com.ruoyi.order.dto.ConfirmOrderDTO; |
| | | |
| | | import com.ruoyi.order.enums.OrderStatus; |
| | | import com.ruoyi.order.mapper.OrderMapper; |
| | | import com.ruoyi.order.model.Order; |
| | |
| | | import com.ruoyi.order.util.payment.model.RefundCallbackResult; |
| | | import com.ruoyi.order.util.payment.model.UniPayCallbackResult; |
| | | import com.ruoyi.order.util.vo.MapTrackKD100Vo; |
| | | import com.ruoyi.order.util.vo.ShopAnalysisVO; |
| | | import com.ruoyi.order.vo.*; |
| | | import com.ruoyi.other.api.domain.BaseSetting; |
| | | import com.ruoyi.other.api.domain.Goods; |
| | | import com.ruoyi.other.api.dto.ShopAnalysisDTO; |
| | | import com.ruoyi.other.api.feignClient.BaseSettingClient; |
| | | import com.ruoyi.other.api.feignClient.ShopClient; |
| | | import com.ruoyi.system.api.domain.SysUser; |
| | | import com.ruoyi.system.api.feignClient.SysUserClient; |
| | | import com.ruoyi.system.api.model.LoginUser; |
| | |
| | | import java.math.BigDecimal; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.Duration; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | |
| | | @Resource |
| | | private AppUserClient appUserClient; |
| | | |
| | | @Resource |
| | | private ShopClient shopClient; |
| | | |
| | | |
| | | |
| | | @ResponseBody |
| | | @GetMapping("/confirmOrder") |
| | | @PostMapping("/confirmOrder") |
| | | @ApiOperation(value = "确定订单", tags = {"商城-订单-小程序"}) |
| | | public R<ConfirmOrderVo> confirmOrder(@ApiParam("商品id") Integer goodId,@ApiParam("支付类型(1-现金,2-积分)")Integer type) { |
| | | ConfirmOrderVo confirmOrderVo = orderService.confirmOrder(goodId,type); |
| | | public R<ConfirmOrderVo> confirmOrder(@RequestBody ConfirmOrderDTO confirmOrderDTO) { |
| | | ConfirmOrderVo confirmOrderVo = orderService.confirmOrder(confirmOrderDTO.getGoodId(),confirmOrderDTO.getType()); |
| | | return R.ok(confirmOrderVo); |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | @PutMapping("/cancelOrder/{orderId}") |
| | | @ApiOperation(value = "取消订单操作", tags = {"管理后台-订单管理"}) |
| | | @ApiOperation(value = "取消订单操作", tags = {"后台-订单管理"}) |
| | | public R cancelOrder(@PathVariable("orderId") Long orderId) { |
| | | return orderService.cancelOrder(orderId); |
| | | } |
| | |
| | | |
| | | |
| | | @GetMapping("/getOrderPageList") |
| | | @ApiOperation(value = "获取订单列表", tags = {"管理后台-订单管理", }) |
| | | public R<PageInfo<OrderPageListVo>> getOrderPageList(OrderPageList orderPageList) { |
| | | @ApiOperation(value = "获取订单列表", tags = {"后台-订单管理", }) |
| | | public R<PageInfo<OrderManagePageListVO>> getOrderPageList(OrderPageList orderPageList) { |
| | | return R.ok(orderService.getOrderPageList(orderPageList)); |
| | | } |
| | | |
| | |
| | | */ |
| | | @GetMapping("/exportExpress") |
| | | public void exportExpress(HttpServletResponse response, OrderPageList orderPage) { |
| | | //搜索条件,用户姓名 |
| | | /* //搜索条件,用户姓名 |
| | | if (StringUtils.isNotEmpty(orderPage.getUserName())) { |
| | | List<AppUser> data = appUserClient.getAppUserByNameNoFilter(orderPage.getUserName()).getData(); |
| | | List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList()); |
| | |
| | | } else { |
| | | orderPage.setAppUserIds(collect); |
| | | } |
| | | } |
| | | }*/ |
| | | //搜索条件,用户电话 |
| | | if (StringUtils.isNotEmpty(orderPage.getPhone())) { |
| | | List<AppUser> data = appUserClient.getAppUserByPhoneNoFilter(orderPage.getPhone()).getData(); |
| | |
| | | orderPage.setAppUserIds(orderPage.getAppUserIds().stream().distinct().collect(Collectors.toList())); |
| | | } |
| | | |
| | | // UserAddress userAddress = JSON.parseObject(order.getAddressJson(), UserAddress.class); |
| | | // orderInfo.setRecipient(userAddress.getRecieveName() + "-" + userAddress.getRecievePhone()); |
| | | // userAddress.setRecieveAddress(userAddress.getProvince() + userAddress.getCity() + userAddress.getDistrict() + userAddress.getRecieveAddress()); |
| | | // orderInfo.setAddress(userAddress.getRecieveAddress()); |
| | | |
| | | |
| | | List<OrderExport> orderExportList = orderMapper.getOrderExportList(orderPage); |
| | |
| | | orderExport.setGoodsName(goods.getName()); |
| | | /* orderExport.setCompanyCostPrice(goods.getOperatingCost()); |
| | | orderExport.setSupplierCostPrice(goods.getShopCost());*/ |
| | | } |
| | | |
| | | String expressJson = orderExport.getExpressJson(); |
| | | if (StringUtils.isNotEmpty(expressJson) && !expressJson.equals("NULL")) { |
| | | JSONObject jsonObject = JSONObject.parseObject(expressJson); |
| | | orderExport.setExpressNum(jsonObject.getString("num")); |
| | | orderExport.setExpressName(ExpressCompanyMap.getCompanyNameByCode(jsonObject.getString("com"))); |
| | | } |
| | | }); |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 工作台统计 |
| | | */ |
| | | @PostMapping("/homeStatistics/getShopAnalysis") |
| | | @ApiOperation(value = "店铺分析", tags = {"后台-工作台-店铺统计"}) |
| | | public R<ShopAnalysisVO> getShopAnalysis(@RequestBody ShopAnalysisDTO shopAnalysisDTO) { |
| | | ShopAnalysisVO shopAnalysisVO = new ShopAnalysisVO(); |
| | | if (shopAnalysisDTO.getStartTime() == null || shopAnalysisDTO.getEndTime() == null) { |
| | | LocalDate now = LocalDate.now(); |
| | | shopAnalysisDTO.setStartTime(now.minusDays(6)); // 7天前 |
| | | shopAnalysisDTO.setEndTime(now); |
| | | } |
| | | else if (shopAnalysisDTO.getStartTime().isAfter(shopAnalysisDTO.getEndTime())) { |
| | | return R.fail("开始时间不能大于结束时间"); |
| | | } |
| | | /* // 限制最大查询范围不超过3个月(可选) |
| | | else if (Duration.between(shopAnalysisDTO.getStartTime(), shopAnalysisDTO.getEndTime()).toDays() > 90) { |
| | | return R.fail("查询时间范围不能超过90天"); |
| | | }*/ |
| | | //订单统计 |
| | | QueryWrapper<Order> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.select("count(*) as total","SUM(total_amount) as total_money"); |
| | | queryWrapper.eq("del_flag", 0); |
| | | queryWrapper.in("order_status", Arrays.asList(3,4,8));//待核销 已完成 已评价 |
| | | queryWrapper.eq("pay_status",2); |
| | | queryWrapper.ge("create_time", shopAnalysisDTO.getStartTime().atStartOfDay()); |
| | | queryWrapper.le("create_time", shopAnalysisDTO.getEndTime().atTime(LocalTime.MAX)); |
| | | |
| | | if (null!=shopAnalysisDTO.getShopId()){ |
| | | queryWrapper.eq("shop_id", shopAnalysisDTO.getShopId()); |
| | | } |
| | | Map<String, Object> result = orderService.getMap(queryWrapper); |
| | | if (result == null || result.get("total") == null) { |
| | | shopAnalysisVO.setTotal(0); |
| | | }else { |
| | | shopAnalysisVO.setTotal(Integer.valueOf(result.get("total").toString())); |
| | | } |
| | | |
| | | if (result == null || result.get("total_money") == null) { |
| | | shopAnalysisVO.setTotalMoney(BigDecimal.ZERO); |
| | | }else { |
| | | shopAnalysisVO.setTotalMoney(new BigDecimal(result.get("total_money").toString())); |
| | | } |
| | | |
| | | |
| | | //收益分析 |
| | | Map<String, Object> shopResult =shopClient.getIncomeAnalysis(shopAnalysisDTO).getData(); |
| | | if (shopResult!=null){ |
| | | if (shopResult.get("balance")==null||shopResult.get("canWithdrawMoney")==null){ |
| | | shopAnalysisVO.setCanWithdrawMoney(BigDecimal.ZERO); |
| | | shopAnalysisVO.setFreezeMoney(BigDecimal.ZERO); |
| | | }else { |
| | | shopAnalysisVO.setCanWithdrawMoney(new BigDecimal(shopResult.get("canWithdrawMoney").toString())); |
| | | shopAnalysisVO.setFreezeMoney(new BigDecimal(shopResult.get("balance").toString()).subtract(shopAnalysisVO.getCanWithdrawMoney())); |
| | | } |
| | | if (shopResult.get("withdrawMoney")==null){ |
| | | shopAnalysisVO.setWithdrawMoney(BigDecimal.ZERO); |
| | | }else { |
| | | shopAnalysisVO.setWithdrawMoney(new BigDecimal(shopResult.get("withdrawMoney").toString())); |
| | | } |
| | | if (shopResult.get("withdrawAuditMoney")==null){ |
| | | shopAnalysisVO.setWithdrawAuditMoney(BigDecimal.ZERO); |
| | | }else { |
| | | shopAnalysisVO.setWithdrawAuditMoney(new BigDecimal(shopResult.get("withdrawAuditMoney").toString())); |
| | | } |
| | | }else { |
| | | shopAnalysisVO.setCanWithdrawMoney(BigDecimal.ZERO); |
| | | shopAnalysisVO.setFreezeMoney(BigDecimal.ZERO); |
| | | shopAnalysisVO.setWithdrawMoney(BigDecimal.ZERO); |
| | | shopAnalysisVO.setWithdrawAuditMoney(BigDecimal.ZERO); |
| | | } |
| | | |
| | | |
| | | //折线图 |
| | | List<OrderStatisticsDetail> orderStatisticsDetailList=orderService.getOrderListGroupByDate(shopAnalysisDTO.getStartTime(), shopAnalysisDTO.getEndTime()); |
| | | shopAnalysisVO.setOrderStatisticsDetailList(orderStatisticsDetailList); |
| | | return R.ok(shopAnalysisVO); |
| | | } |
| | | |
| | | /** |
| | | * 统计用户总消费积分数和现金支付金额 |
| | | */ |
| | | @GetMapping("/getOrderCountByAppUserId/") |
| | | R<Map<String ,Object>> getConsumeScoreAndPayAmount(@RequestParam(value = "userId",required = false) Long userId){ |
| | | QueryWrapper<Order> queryWrapper = new QueryWrapper<>(); |
| | | // 条件构造 统计充值积分 |
| | | queryWrapper.select("SUM(point) as total_points","SUM(payment_amount) as payment_amounts"); |
| | | queryWrapper.eq("del_flag", 0); |
| | | queryWrapper.in("order_status", Arrays.asList(3,4,8));//待核销 已完成 已评价 |
| | | queryWrapper.eq("pay_status",2); |
| | | if (userId != null) { |
| | | queryWrapper.eq("user_id", userId); |
| | | } |
| | | return R.ok(orderService.getMap(queryWrapper)); |
| | | } |
| | | |
| | | } |
| | | |