AccountController.java 2.83 KB
package cn.fw.dalaran.server.controller.web;

import cn.fw.common.page.AppPage;
import cn.fw.common.web.annotation.ControllerMethod;
import cn.fw.common.web.auth.LoginAuthBean;
import cn.fw.common.web.auth.annotation.CurrentUser;
import cn.fw.dalaran.domain.dto.AccountDTO;
import cn.fw.dalaran.domain.dto.AccountQueryDTO;
import cn.fw.dalaran.domain.dto.UpdateAccountParam;
import cn.fw.dalaran.domain.vo.AccountStatusVo;
import cn.fw.dalaran.domain.vo.AccountVO;
import cn.fw.dalaran.service.biz.AccountBizService;
import cn.fw.data.base.domain.common.Message;
import cn.fw.security.auth.client.annotation.Authorization;
import cn.fw.security.auth.client.annotation.IgnoreAuth;
import cn.fw.security.auth.client.enums.AuthType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.constraints.NotNull;
import java.util.List;

import static cn.fw.common.web.util.ResultBuilder.success;

/**
 * @author kurisu
 * @date 2021-11-17 15:02
 * @description 账号控制器
 */
@Slf4j
@Validated
@RestController
@RequiredArgsConstructor
@Authorization(AuthType.ERP)
@RequestMapping("/web/account")
@IgnoreAuth
public class AccountController {

    private final AccountBizService accountBizService;

    @PostMapping("/add")
    public Message<Boolean> add(@CurrentUser LoginAuthBean user, @RequestBody @Validated final AccountDTO accountDTO) {
        accountDTO.setGroupId(user.getGroupId());
        return success(accountBizService.saveAccount(accountDTO));
    }

    @PutMapping("/authorized/report")
    @ControllerMethod("上报账号状态")
    public Message<Boolean> report(@NotNull(message = "账号id不能为空") Long accountId, @NotNull(message = "账号状态不能为空") Boolean valid) {
        return success(accountBizService.reportAccount(accountId, valid));
    }

    @DeleteMapping("/delete")
    @ControllerMethod("删除账号")
    public Message<Boolean> delete(@NotNull(message = "id不能为空") Long id) {
        return success(accountBizService.deleteAccount(id));
    }

    @GetMapping("/list")
    @ControllerMethod("查询账号列表")
    public Message<AppPage<AccountVO>> list(@CurrentUser LoginAuthBean user, AccountQueryDTO query) {
        return success(accountBizService.page(user.getGroupId(), query));
    }

    @GetMapping("/status")
    @ControllerMethod("查询门店账号状态详情列表")
    public Message<List<AccountStatusVo.ShopDetails>> status(@CurrentUser LoginAuthBean user) {
        return success(accountBizService.status(user.getGroupId()));
    }

    @PostMapping("/alert")
    @ControllerMethod("批量修改账号")
    public Message<Boolean> alert(@RequestBody @Validated final UpdateAccountParam param) {
        return success(accountBizService.alert(param));
    }

}