huliguo
9 天以前 3348eda2c33469e9935ae6afcf83ea5c52cea906
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -1,6 +1,7 @@
package com.ruoyi.account.controller;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -19,7 +20,9 @@
import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.feignClient.OrderClient;
@@ -41,6 +44,7 @@
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -101,6 +105,12 @@
        return appUserService.mobileLogin(mobileLogin);
    }
    @ResponseBody
    @PostMapping("/registerAccount")
    @ApiOperation(value = "注册新账号")
    public R<LoginVo> registerAccount(@RequestBody RegisterAccount registerAccount) {
        return appUserService.registerAccount(registerAccount);
    }
    @GetMapping("/logout")
    @ApiOperation(value = "登出")
@@ -421,52 +431,24 @@
/*
    @GetMapping("/detail")
    @ApiOperation(value = "用户列表-详情", tags = {"管理后台"})
    public R<AppUser> detail(Long id, Integer shopId) {
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
    public R<AppUser> detail(Long id) {
        AppUser byId = appUserService.getById(id);
        Shop shop1 = shopClient.getServiceProvider(byId.getId()).getData();
        if(null != shop1){
            byId.setShopName(shop1.getName());
            byId.setShopId(shop1.getId());
        //获取店铺名称
        List<String> shopNames=shopClient.getServiceProvider(byId.getId()).getData();
        if(null != shopNames){
            byId.setShopNames(shopNames);
        }
        R<List<Shop>> shopByUserId = shopClient.getShopByUserId(id);
        if (shopByUserId.getData() != null) {
            List<String> shopName = new ArrayList<>();
            for (Shop datum : shopByUserId.getData()) {
                shopName.add(datum.getName());
            }
            byId.setShopNames(shopName);
        }
        //最后下单时间
        R<Order> lastOrder = remoteOrderGoodsClient.getLastOrder(id);
        if (lastOrder.getData() != null) {
            byId.setLastOrderTime(lastOrder.getData().getCreateTime());
        }
        //消费总金额
        if(null == shopId || 1 == sysUser.getRoleType()){
            shopId = -1;
        }
        if(null == shopId && 2 == sysUser.getRoleType()){
            shopId = sysUser.getObjectId();
        }
        R<List<Order>> orderR = remoteOrderGoodsClient.byUserId(id, shopId);
        List<Order> orderList = orderR.getData();
        if (!CollectionUtils.isEmpty(orderList)){
            BigDecimal paymentAmount = orderList.stream().map(Order::getPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
            byId.setShopAmount(paymentAmount);
        }else {
            byId.setShopAmount(BigDecimal.ZERO);
        }
        Integer customPoint =(byId.getExchangePoint()==null?0:byId.getExchangePoint())+
                (byId.getTransferableOutPoint()==null?0:byId.getTransferableOutPoint())-
                (byId.getCancelPoint()==null?0:byId.getCancelPoint());
        byId.setCustomPoint(customPoint);
        return R.ok(byId);
    }
*/
@@ -527,7 +509,7 @@
    /**
     * 工作台-顶部
     */
    @GetMapping("/homeStatistics/statistics")
    @GetMapping("/statistics")
    @ApiOperation(value = "统计", tags = {"后台-工作台-顶部"})
    public R<UserStatistics> statistics() {
        QueryWrapper<AppUser> queryWrapper = new QueryWrapper<>();
@@ -543,11 +525,10 @@
        userStatistics.setTotalUser(appUserList.size());//总用户数
        userStatistics.setConsumerUser((int) consumerUser);//消费过的用户
        //用户类型统计门店
        long shopUserCount = appUserList.stream()
                .filter(appUser -> appUser.getUserType() == 2)
                .count();
        userStatistics.setShopUser((int) shopUserCount);
        //拥有店铺用户数
        Integer shopUserCount = appUserShopService.getHaveShopUserNum();
        userStatistics.setShopUser(shopUserCount);
        //门店总数
        long shopNum = shopClient.getAllShop().getData().size();
@@ -569,7 +550,7 @@
        queryWrapper.eq("del_flag", 0);//未删除的
        queryWrapper.ne("status", 3);//未注销的
        if (userId != null) {
            queryWrapper.eq("user_id", userId);
            queryWrapper.eq("id", userId);
        }
        //统计充值积分
        Map<String, Object> result = appUserService.getMap(queryWrapper);
@@ -578,10 +559,17 @@
        }else {
            userStatistics.setTotalScore((Long) result.get("total_points"));
        }
        //统计消费积分和现金支付数
        Map<String, Object> data = orderClient.getConsumeScoreAndPayAmount(userId).getData();
        //条件构造  消费积分现金支付金额
        queryWrapper.clear();
        QueryWrapper<AppUser> queryWrapper1 = new QueryWrapper<>();
        queryWrapper1.select("sum(exchange_point + transferable_out_point - cancel_point) as total_points");
        queryWrapper1.select("sum(shop_amount) as payment_amounts ");
        queryWrapper1.eq("del_flag", 0);//未删除的
        queryWrapper1.ne("status", 3);//未注销的
        if (userId != null) {
            queryWrapper1.eq("id", userId);
        }
        Map<String, Object> data  = appUserShopService.getPointAndPayAmount(userId);
        if (data == null || data.get("total_points") == null) {
            userStatistics.setConsumeScore(0L);
        }else {
@@ -593,7 +581,6 @@
        }else {
            userStatistics.setShopAmount(new BigDecimal(data.get("payment_amounts").toString()));
        }
        return R.ok(userStatistics);
    }
@@ -660,5 +647,57 @@
        return R.ok();
    }
    /**
     * 获取所有用户积分列表
     */
    @ResponseBody
    @GetMapping("/getUserPointPageList")
    @ApiOperation(value = "所有用户积分列表", tags = "后台-财务统计-用户积分统计")
    public R<PageInfo<UserPointStatisticsVO>> getUserPointPageList(@RequestParam(value = "name",required = false) String name,
                                                                   @ApiParam("当前页")@RequestParam("pageCurr") Integer pageCurr,
                                                                   @ApiParam("分页大小")@RequestParam("pageSize") Integer pageSize) {
        PageInfo<UserPointStatisticsVO> pageInfo=appUserService.getUserPointPageList(name,pageCurr,pageSize);
        return R.ok(pageInfo);
    }
    /**
     * 导出用户积分列表
     */
    @ResponseBody
    @GetMapping("/exportUserPoint")
    @ApiOperation(value = "导出用户积分列表", tags = "后台-财务统计-用户积分统计")
    public void exportUserPoint(HttpServletResponse response, @RequestParam(value = "name",required = false) String name) {
        List<UserPointStatisticsVO> exportList=appUserMapper.exportUserPoint(name);
        ExcelUtil<UserPointStatisticsVO> util = new ExcelUtil<UserPointStatisticsVO>(UserPointStatisticsVO.class);
        util.exportExcel(response, exportList, "用户积分汇总");
    }
    @PostMapping("/saveOrUpdateAppUser")
    Long saveOrUpdateAppUser(@RequestBody AppUser appuser){
        if (appuser.getId() == null) {
            //保存用户
            appUserService.save(appuser);
        }else {
            appUserService.updateById(appuser);
        }
        return appuser.getId();
    }
    @GetMapping("/getAllUser")
    @ApiOperation(value = "获取所有用户")
    public R<List<AppUser>> getAllUser() {
        LambdaQueryWrapper<AppUser> queryWrapper=new LambdaQueryWrapper<>();
        queryWrapper.select(AppUser::getId,AppUser::getName);
        queryWrapper.eq(AppUser::getDelFlag,0);//未删除的
        queryWrapper.ne(AppUser::getStatus, 3);//未注销的
        List<AppUser> list = appUserService.list(queryWrapper);
        return R.ok(list);
    }
}