package com.ichaoj.ams.controller; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ichaoj.ams.entity.AmsAddressAccount; import com.ichaoj.ams.request.address.BatchAddressRequest; import com.ichaoj.ams.request.address.BatchKeyStoreRequest; import com.ichaoj.ams.request.address.PageAddressRequest; import com.ichaoj.ams.request.address.PremiumAddressRequest; import com.ichaoj.ams.response.address.AddressResponse; import com.ichaoj.ams.service.IAmsAddressAccountService; import com.ichaoj.common.annotation.AuthResource; import com.ichaoj.common.exception.ErrorServiceException; import com.ichaoj.common.model.PublicPage; import com.ichaoj.common.model.PublicResult; import com.ichaoj.common.model.PublicUserInfo; import com.ichaoj.web.context.SuperWhaleContext; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author cjwen */ @RestController @RequestMapping("/address") @Tag(name = "地址模块") public class AddressController { @Resource IAmsAddressAccountService addressService; @Operation(summary = "批量创建钱包") @PostMapping("/generate/batch-address") @AuthResource public PublicResult> batchCreateAddress(@RequestBody @Validated BatchAddressRequest batchAddressRequest) { return PublicResult.success(addressService.batchCreateAddress(batchAddressRequest)); } @Operation(summary = "批量下载keystore文件") @PostMapping("/download/batch-keystore") @AuthResource @Validated public void batchKeystore(HttpServletResponse response, @RequestBody @Validated BatchKeyStoreRequest keyStoreRequest) { addressService.batchKeystore(keyStoreRequest.getGroupName(), response); } @Operation(summary = "批量添加精品号") @PostMapping("/add/premium-address") @AuthResource public PublicResult addPremiumAddress(@RequestBody List requestList) { if (CollectionUtil.isEmpty(requestList)) { throw new ErrorServiceException("至少需要一个精品号"); } addressService.addPremiumAddress(requestList); return PublicResult.success(); } @Operation(summary = "分页查询地址") @PostMapping("/page") @AuthResource public PublicResult> pageAddress(@RequestBody PageAddressRequest pageAddressRequest) { PublicPage result = addressService.pageAddress(pageAddressRequest); return PublicResult.success(result); } @Operation(summary = "查询地址组列表") @GetMapping("/group-list") @AuthResource public PublicResult> queryGroupList() { List result = addressService.queryGroupList(1); return PublicResult.success(result); } @Operation(summary = "统计当前用户的精品号和批量号数量") @GetMapping("/count-address") @AuthResource public PublicResult> countAddress() { String userId = SuperWhaleContext.getContext(PublicUserInfo.class).getUserId(); Map map = new HashMap<>(5); map.put("batchCount", addressService.count(new LambdaQueryWrapper() .eq(AmsAddressAccount::getUserId, userId) .eq(AmsAddressAccount::getAddressType, 1))); map.put("premiumCount", addressService.count(new LambdaQueryWrapper() .eq(AmsAddressAccount::getUserId, userId) .eq(AmsAddressAccount::getAddressType, 0))); return PublicResult.success(map); } }