package com.jilongda.manage.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.manage.authority.model.SecUser;
import com.jilongda.manage.authority.service.SecUserService;
import com.jilongda.manage.dto.TOrderDTO;
import com.jilongda.manage.model.*;
import com.jilongda.manage.query.TOptometryQuery;
import com.jilongda.manage.service.*;
import com.jilongda.manage.utils.LoginInfoUtil;
import com.jilongda.manage.vo.TOptometryVO;
import com.jilongda.manage.vo.TOrderVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.stream.Collectors;
/**
*
* 销售订单表 前端控制器
*
*
* @author 无关风月
* @since 2024-12-09
*/
@Api(tags = "销售订单")
@RestController
@RequestMapping("/t-order")
public class TOrderController {
@Autowired
private TAppUserService tAppUserService;
@Autowired
private SecUserService secUserService;
@Autowired
private TCouponReceiveService couponReceiveService;
@Autowired
private TCouponService couponService;
@Autowired
private TOrderService orderService;
@Autowired
private TOptometryDetailService optometryDetailService;
@Autowired
private TOrderGoodsService orderGoodsService;
@Autowired
private TFrameGoodsService frameGoodsService;
@Autowired
private TLensGoodsService lensGoodsService;
@ApiOperation(value = "查询用户信息")
@GetMapping(value = "/getUserById")
public ApiResult getUserById(@RequestParam Integer userId) {
return ApiResult.success(tAppUserService.getById(userId));
}
@ApiOperation(value = "查询员工信息")
@GetMapping(value = "/getStaffList")
public ApiResult getStaffList() {
List list = secUserService.list(Wrappers.lambdaQuery(SecUser.class)
.eq(SecUser::getUserType, 3)
.eq(SecUser::getIsDelete, 0));
return ApiResult.success(list);
}
@ApiOperation(value = "查询优惠券")
@GetMapping(value = "/getCouponListByUserId")
public ApiResult> getCouponListByUserId(@RequestParam Integer userId, @RequestParam Integer storeId) {
List list = couponReceiveService.list(Wrappers.lambdaQuery(TCouponReceive.class)
.eq(TCouponReceive::getUserId, userId)
.eq(TCouponReceive::getStatus, 1));
List tCouponReceives = new ArrayList<>();
for (TCouponReceive tCouponReceive : list) {
TCoupon byId = couponService.getById(tCouponReceive.getCouponId());
tCouponReceive.setCouponName(byId.getName());
if (StringUtils.hasLength(tCouponReceive.getStoreId())){
if (Arrays.asList(tCouponReceive.getStoreId().split(",")).contains(storeId+"")){
tCouponReceives.add(tCouponReceive);
}
}else{
// 通用
tCouponReceives.add(tCouponReceive);
}
}
return ApiResult.success(tCouponReceives);
}
@ApiOperation(value = "添加订单")
@PostMapping(value = "/addOrder")
public ApiResult addOrder(@RequestBody TOrderDTO dto) {
// 查询店员
SecUser user = secUserService.getById(dto.getSysId());
if(Objects.nonNull(user)){
dto.setStoreId(user.getStoreId());
}
orderService.save(dto);
List optometryDetails = dto.getOptometryDetails();
if (!CollectionUtils.isEmpty(optometryDetails)){
for (TOptometryDetail optometryDetail : optometryDetails) {
optometryDetail.setOrderId(dto.getId());
}
optometryDetailService.saveBatch(optometryDetails);
}
List orderGoods = dto.getOrderGoods();
for (TOrderGoods orderGood : orderGoods) {
orderGood.setOrderId(dto.getId());
}
// TODO 周哥 补库存
return ApiResult.success();
}
@ApiOperation(value = "销售订单详情")
@GetMapping(value = "/getOrderDetailById")
public ApiResult getOrderDetailById(@RequestParam Integer orderId) {
TOrderVO orderVO = orderService.getOrderDetailById(orderId);
// TODO 周哥 商品信息集合
// TODO 周哥 验光处方 判断是关联或者手动
return ApiResult.success(orderVO);
}
}