package com.jilongda.manage.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.manage.model.TAppUser;
import com.jilongda.manage.model.TCouponReceive;
import com.jilongda.manage.model.TOptometry;
import com.jilongda.manage.model.TOrder;
import com.jilongda.manage.query.TAppUserCouponQuery;
import com.jilongda.manage.query.TAppUserQuery;
import com.jilongda.manage.query.TOptometristQuery;
import com.jilongda.manage.service.TAppUserService;
import com.jilongda.manage.service.TCouponReceiveService;
import com.jilongda.manage.service.TOptometryService;
import com.jilongda.manage.service.TOrderService;
import com.jilongda.manage.vo.TAppUserCouponVO;
import com.jilongda.manage.vo.TAppUserVO;
import com.jilongda.manage.vo.TOptometristVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
/**
*
* 用户表 前端控制器
*
*
* @author 无关风月
* @since 2024-12-09
*/
@RestController
@Api(tags = "小程序用户管理")
@RequestMapping("/t-app-user")
public class TAppUserController {
@Resource
private TAppUserService appUserService;
@Resource
private TOrderService orderService;
@Resource
private TOptometryService tOptometryService;
@Resource
private TCouponReceiveService couponReceiveService;
@ApiOperation(value = "用户列表")
@PostMapping(value = "/pageList")
public ApiResult> pageList(@RequestBody TAppUserQuery query) {
if (StringUtils.hasLength(query.getStartTime())){
query.setStartTime(query.getStartTime()+" 00:00:00");
query.setEndTime(query.getEndTime()+" 23:59:59");
}
PageInfo appUserVOPageInfo = appUserService.pageList(query);
return ApiResult.success(appUserVOPageInfo);
}
@ApiOperation(value = "启用/禁用")
@GetMapping(value = "/updateState")
public ApiResult updateState(Integer id) {
TAppUser byId = appUserService.getById(id);
if (byId.getStatus()==1){
byId.setStatus(2);
}else{
byId.setStatus(1);
}
appUserService.updateById(byId);
return ApiResult.success();
}
@ApiOperation(value = "用户详情")
@GetMapping(value = "/getDetailById")
public ApiResult getDetailById(Integer id) {
TAppUser byId = appUserService.getById(id);
TAppUserVO tAppUserVO = new TAppUserVO();
BeanUtils.copyProperties(byId, tAppUserVO);
// 查询消费次数
long l = orderService.count(new LambdaQueryWrapper()
.eq(TOrder::getUserId, tAppUserVO.getId()));
tAppUserVO.setSalesCount((int) l);
// 查询验光次数
int size = tOptometryService.lambdaQuery().eq(TOptometry::getUserId, tAppUserVO.getId())
.eq(TOptometry::getStatus, 3).list().size();
tAppUserVO.setOptometryCount(size);
// 查询最后消费时间
TOrder order = orderService.lambdaQuery().eq(TOrder::getUserId, tAppUserVO.getId())
.orderByDesc(TOrder::getCreateTime).last("limit 1").one();
if (order!=null){
tAppUserVO.setSalesTime(order.getCreateTime());
}
// 查询最后验光时间
TOptometry optometry = tOptometryService.lambdaQuery().eq(TOptometry::getUserId, tAppUserVO.getId())
.eq(TOptometry::getStatus, 3).orderByDesc(TOptometry::getCreateTime).last("limit 1").one();
if (optometry!=null){
tAppUserVO.setOptometryTime(optometry.getCreateTime());
}
// 查询订单总额
BigDecimal reduce = orderService.lambdaQuery().eq(TOrder::getUserId, byId.getId()).list().stream().map(TOrder::getPayMoney)
.reduce(BigDecimal.ZERO, BigDecimal::add);
tAppUserVO.setSalesAmount(reduce);
return ApiResult.success(tAppUserVO);
}
@ApiOperation(value = "用户详情-查看优惠券")
@PostMapping(value = "/getCouponDetailById")
public ApiResult> getCouponDetailById(@RequestBody TAppUserCouponQuery query) {
PageInfo appUserVOPageInfo = couponReceiveService.pageList(query);
return ApiResult.success(appUserVOPageInfo);
}
@ApiOperation(value = "用户信息修改")
@PostMapping(value = "/updateUser")
public ApiResult updateUser(@RequestBody TAppUser appUser) {
appUserService.updateById(appUser);
return ApiResult.success();
}
}