package com.doumee.api.web;
|
|
import com.doumee.core.annotation.LoginRequired;
|
import com.doumee.core.annotation.LoginShopRequired;
|
import com.doumee.core.annotation.trace.Trace;
|
import com.doumee.config.jwt.JwtTokenUtil;
|
import com.doumee.core.model.ApiResponse;
|
import com.doumee.core.model.PageData;
|
import com.doumee.core.model.PageWrap;
|
import com.doumee.dao.business.model.Member;
|
import com.doumee.dao.dto.ShopApplyDTO;
|
import com.doumee.dao.dto.ShopDetailQueryDTO;
|
import com.doumee.dao.dto.ShopInfoMaintainDTO;
|
import com.doumee.dao.dto.ShopNearbyDTO;
|
import com.doumee.dao.vo.ShopDetailVO;
|
import com.doumee.dao.vo.ShopCenterVO;
|
import com.doumee.dao.vo.ShopNearbyVO;
|
import com.doumee.dao.vo.ShopSalesStatsVO;
|
import com.doumee.dao.vo.ShopWebDetailVO;
|
import com.doumee.dao.vo.PayResponse;
|
import com.doumee.service.business.OrdersService;
|
import com.doumee.service.business.ShopInfoService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
|
/**
|
* 门店入驻(小程序端)
|
* @author rk
|
* @date 2026/04/10
|
*/
|
@Api(tags = "门店业务接口")
|
@RestController
|
@RequestMapping("/web/shopInfo")
|
public class ShopInfoApi extends ApiController {
|
|
@Autowired
|
private ShopInfoService shopInfoService;
|
|
@Autowired
|
private OrdersService ordersService;
|
|
@LoginRequired
|
@ApiOperation("门店入驻申请/修改")
|
@PostMapping("/apply")
|
public ApiResponse apply(@RequestBody @Validated ShopApplyDTO request) {
|
request.setMemberId(getMemberId());
|
shopInfoService.applyShop(request);
|
return ApiResponse.success("操作成功");
|
}
|
|
@LoginRequired
|
@ApiOperation("查询我的门店信息")
|
@GetMapping("/myShop")
|
public ApiResponse<ShopDetailVO> myShop() {
|
return ApiResponse.success(shopInfoService.getMyShop(this.getMemberId()));
|
}
|
|
|
@ApiOperation("附近门店分页列表")
|
@PostMapping("/nearby")
|
public ApiResponse<PageData<ShopNearbyVO>> nearby(@RequestBody @Validated PageWrap<ShopNearbyDTO> pageWrap) {
|
return ApiResponse.success(shopInfoService.findNearbyShops(pageWrap));
|
}
|
|
@ApiOperation("门店详情")
|
@PostMapping("/detail")
|
public ApiResponse<ShopWebDetailVO> detail(@RequestBody @Validated ShopDetailQueryDTO dto) {
|
return ApiResponse.success(shopInfoService.getShopWebDetail(dto));
|
}
|
|
@LoginShopRequired
|
@ApiOperation("获取门店登录后信息")
|
@GetMapping("/getShopInfo")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true)
|
})
|
public ApiResponse<ShopCenterVO> getShopInfo() {
|
return ApiResponse.success("查询成功", shopInfoService.getShopCenterInfo(getShopId()));
|
}
|
|
@LoginShopRequired
|
@ApiOperation("门店端查询门店详情")
|
@GetMapping("/shopDetail")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true)
|
})
|
public ApiResponse<ShopDetailVO> shopDetail() {
|
return ApiResponse.success("查询成功", shopInfoService.getShopDetail(getShopId()));
|
}
|
|
@LoginShopRequired
|
@ApiOperation("门店销售统计")
|
@GetMapping("/salesStats")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true),
|
@ApiImplicitParam(paramType = "query", dataType = "Integer", name = "period", value = "统计周期:0=今日, 1=本月, 2=上月", required = true)
|
})
|
public ApiResponse<ShopSalesStatsVO> salesStats(@RequestParam Integer period) {
|
return ApiResponse.success("查询成功", shopInfoService.getShopSalesStats(getShopId(), period));
|
}
|
|
@LoginShopRequired
|
@ApiOperation("维护门店信息(支付押金后)")
|
@PostMapping("/maintain")
|
public ApiResponse maintain(@RequestBody ShopInfoMaintainDTO dto) {
|
shopInfoService.maintainShopInfo(this.getShopId(), dto);
|
return ApiResponse.success("操作成功");
|
}
|
|
@LoginShopRequired
|
@ApiOperation("查询门店维护信息")
|
@PostMapping("/maintainInfo")
|
public ApiResponse<ShopInfoMaintainDTO> maintainInfo() {
|
return ApiResponse.success(shopInfoService.getShopMaintainInfo(this.getShopId()));
|
}
|
|
@LoginRequired
|
@ApiOperation("门店支付押金")
|
@PostMapping("/payDeposit")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true)
|
})
|
public ApiResponse<PayResponse> payDeposit() {
|
return ApiResponse.success("操作成功", ordersService.payShopDeposit(getMemberId()));
|
}
|
|
@LoginShopRequired
|
@Trace
|
@ApiOperation(value = "门店修改密码", notes = "新密码必须同时包含字母和数字,修改成功后需重新登录")
|
@PostMapping("/changePassword")
|
@ApiImplicitParams({
|
@ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true),
|
})
|
public ApiResponse changePassword(@RequestParam String newPassword) {
|
String token = this.getRequest().getHeader(JwtTokenUtil.HEADER_KEY);
|
shopInfoService.changePassword(this.getShopId(), newPassword, token);
|
return ApiResponse.success("密码修改成功,请重新登录");
|
}
|
|
}
|