package com.bigdata.wxappserver.service; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bigdata.wxappserver.dto.OrderDto; import com.bigdata.wxappserver.entity.Goods; import com.bigdata.wxappserver.entity.Order; import com.bigdata.wxappserver.entity.User; import com.bigdata.wxappserver.enums.OrderStatusEnum; import com.bigdata.wxappserver.mapper.OrderMapper; import com.bigdata.wxappserver.result.Result; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /** * Created with IntelliJ IDEA. * * @Author: Cool * @Date: 2024/08/28/20:28 * @Description: */ @Service public class OrderService extends ServiceImpl { @Autowired UserService userService; @Autowired GoodsService goodsService; @Transactional(rollbackFor = Exception.class) public Result addOrUpdate(JSONObject jsonObject) { Order order = jsonObject.toJavaObject(Order.class); if (order == null) { return Result.error("参数错误"); } List userList = userService.list(); User userTemp = userList.stream().filter(e -> Objects.equals(e.getOpenId(), jsonObject.get("openId"))).findFirst().orElse(null); order.setUserId(userTemp.getId()); if (!StringUtils.hasLength(order.getAddress())) { User user = userService.getById(order.getUserId()); order.setAddress(user.getAddress()); } if (order.getUserId() == null || order.getAddress() == null || order.getNum() == null || order.getGoodsId() == null) { return Result.error("请携带完整的参数"); } String orderCode = UUID.randomUUID().toString().replace("-", ""); order.setOrderCode(orderCode); boolean success = saveOrUpdate(order); if(success){ JSONObject data=new JSONObject(); jsonObject.fluentPut("orderCode",orderCode) .fluentPut("id",order.getId()); return Result.success(data); }else { return Result.error("未知错误,请联系管理员!"); } } public JSONObject list(JSONObject jsonObject) { String openId = jsonObject.getString("openId"); List userList = userService.list(); User user = userList.stream().filter(e -> Objects.equals(e.getOpenId(), openId)).findFirst().orElse(null); Integer status = jsonObject.getInteger("status"); // Integer currentPage = jsonObject.getInteger("currentPage"); // Integer pageSize = jsonObject.getInteger("pageSize"); // IPage page = new Page<>(currentPage, pageSize); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(user != null, Order::getUserId, user.getId()) .eq(status != null, Order::getStatus, status); // IPage orderIPage = page(page, wrapper); List list = list(wrapper); List orderDtoList = dealList(list); JSONObject returnData = new JSONObject(); returnData.fluentPut("data", orderDtoList); return returnData; } private List dealList(List records) { if (CollectionUtils.isEmpty(records)) { return new ArrayList<>(); } List goodsList = goodsService.listByIds(records.stream().map(Order::getGoodsId).collect(Collectors.toSet())); Set goodsSet = new HashSet<>(goodsList); List list = new ArrayList<>(); for (Order record : records) { OrderDto orderDto = new OrderDto(); record.setStatusDescription(OrderStatusEnum.describe(record.getStatus())); BeanUtils.copyProperties(record, orderDto); Goods goods = goodsSet.stream().filter(item -> Objects.equals(item.getId(), record.getGoodsId())) .findFirst().orElse(null); if (goods != null) { orderDto.setGoodDetail(goods.getGoodDetail()); orderDto.setGoodPrice(goods.getGoodPrice()); orderDto.setGoodImage(goods.getGoodImage()); orderDto.setGoodName(goods.getGoodName()); } list.add(orderDto); } return list; } public JSONObject queryById(Integer id) { if (id == null) { return new JSONObject().fluentPut("success", false).fluentPut("message", "缺少ID"); } Order order = getById(id); List orderDtoList = dealList(Collections.singletonList(order)); return new JSONObject().fluentPut("data", orderDtoList.get(0)); } @Transactional(rollbackFor = Exception.class) public JSONObject delete(Integer id) { if (id == null) { return new JSONObject().fluentPut("success", false).fluentPut("message", "缺少Id"); } boolean success = removeById(id); if (success) { return new JSONObject().fluentPut("success", true); } else { return new JSONObject().fluentPut("success", false).fluentPut("message", "出现未知错误,请联系管理员!"); } } public void paySuccess(String outTradeNo) { List list = list(); Order order = list.stream().filter(e -> Objects.equals(String.valueOf(e.getId()), outTradeNo)).findFirst().orElse(null); if (order != null) { order.setStatus(2); } saveOrUpdate(order); } }