package cn.lili.controller.store; import cn.lili.base.Result; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.goods.entity.dos.GoodsUnit; import cn.lili.modules.goods.entity.dto.GoodsOperationDTO; import cn.lili.modules.goods.entity.vos.StoreGoodsLabelVO; import cn.lili.modules.goods.service.GoodsService; import cn.lili.modules.goods.service.GoodsUnitService; import cn.lili.modules.goods.service.StoreGoodsLabelService; import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.dto.StoreBankDTO; import cn.lili.modules.store.entity.dto.StoreCompanyDTO; import cn.lili.modules.store.entity.dto.StoreOtherInfoDTO; import cn.lili.modules.store.entity.vos.*; import cn.lili.modules.store.service.FreightTemplateService; import cn.lili.modules.store.service.StoreDetailService; import cn.lili.modules.store.service.StoreService; import cn.lili.mybatis.util.PageUtil; import cn.lili.utils.COSUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; 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.web.bind.annotation.*; import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.util.List; import java.util.Objects; /** * 买家端,店铺接口 * * @author Bulbasaur * @since 2020/11/17 2:32 下午 */ @RestController @RequestMapping("/buyer/store/store") @Api(tags = "买家端,店铺接口") public class StoreBuyerController { /** * 店铺 */ @Autowired private StoreService storeService; /** * 店铺商品分类 */ @Autowired private StoreGoodsLabelService storeGoodsLabelService; /** * 店铺详情 */ @Autowired private StoreDetailService storeDetailService; @Autowired private COSUtil cosUtil; @Autowired private FreightTemplateService freightTemplateService; @Autowired private GoodsUnitService goodsUnitService; @Autowired private GoodsService goodsService; @ApiOperation(value = "获取店铺列表分页") @GetMapping public ResultMessage> getByPage(StoreSearchParams entity, PageVO page) { return ResultUtil.data(storeService.findByConditionPage(entity, page)); } @GetMapping("/store") @ApiOperation(value = "im-获取店铺信息") public ResultMessage getStoreUser() { AuthUser authUser = UserContext.getCurrentUser(); return ResultUtil.data(storeService.getById(authUser.getStoreId())); } @GetMapping("/store/{storeId}") @ApiImplicitParam(name = "storeId", value = "店铺Id", required = true, dataType = "String", paramType = "path") @ApiOperation(value = "im-店铺ID获取店铺信息") public ResultMessage getStoreUserDetail(@PathVariable String storeId) { return ResultUtil.data(storeService.getById(storeId)); } @ApiOperation(value = "通过id获取店铺信息") @ApiImplicitParam(name = "id", value = "店铺ID", required = true, paramType = "path") @GetMapping(value = "/get/detail/{id}") public ResultMessage detail(@NotNull @PathVariable String id) { StoreBasicInfoVO storeBasicInfoDTO = storeDetailService.getStoreBasicInfoDTO(id); if (StringUtils.isNotBlank(storeBasicInfoDTO.getStoreLogo())&&!storeBasicInfoDTO.getStoreLogo().contains("http")) { storeBasicInfoDTO.setStoreLogo(cosUtil.getPreviewUrl(storeBasicInfoDTO.getStoreLogo())); } return ResultUtil.data(storeBasicInfoDTO); } @ApiOperation(value = "通过id获取店铺详细信息-营业执照") @ApiImplicitParam(name = "id", value = "店铺ID", required = true, paramType = "path") @GetMapping(value = "/get/licencePhoto/{id}") public ResultMessage licencePhoto(@NotNull @PathVariable String id) { return ResultUtil.data(storeDetailService.getStoreOtherVO(id)); } @ApiOperation(value = "通过id获取店铺商品分类") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "店铺ID", required = true, paramType = "path") }) @GetMapping(value = "/label/get/{id}") public ResultMessage> storeGoodsLabel(@NotNull @PathVariable String id) { return ResultUtil.data(storeGoodsLabelService.listByStoreId(id)); } @ApiOperation(value = "申请店铺第一步-填写企业信息") @PutMapping(value = "/apply/first") public ResultMessage applyFirstStep(StoreCompanyDTO storeCompanyDTO) { storeService.applyFirstStep(storeCompanyDTO); return ResultUtil.success(); } @ApiOperation(value = "申请店铺第二步-填写银行信息") @PutMapping(value = "/apply/second") public ResultMessage applyFirstStep(StoreBankDTO storeBankDTO) { storeService.applySecondStep(storeBankDTO); return ResultUtil.success(); } @ApiOperation(value = "申请店铺第三步-填写其他信息") @PutMapping(value = "/apply/third") public ResultMessage applyFirstStep(StoreOtherInfoDTO storeOtherInfoDTO) { storeService.applyThirdStep(storeOtherInfoDTO); return ResultUtil.success(); } @ApiOperation(value = "获取当前登录会员的店铺信息-入驻店铺") @GetMapping(value = "/apply") public ResultMessage apply() { return ResultUtil.data(storeDetailService.getStoreDetailVOByMemberId(UserContext.getCurrentUser().getId())); } @ApiOperation(value = "获取店铺下的物流模板") @GetMapping(value = "/freightTemplate") public ResultMessage> freightTemplate() { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); return ResultUtil.data(freightTemplateService.getFreightTemplateList(storeId)); } @ApiOperation(value = "获取店铺下的计量单位") @GetMapping(value = "/goods/unit") public ResultMessage> goodsUnit(PageVO pageVO) { return ResultUtil.data(goodsUnitService.page(PageUtil.initPage(pageVO))); } @ApiOperation(value = "新增商品") @PostMapping(value = "/goods/create", consumes = "application/json", produces = "application/json") public ResultMessage save(@Valid @RequestBody GoodsOperationDTO goodsOperationDTO) { goodsService.addGoods(goodsOperationDTO); return ResultUtil.success(); } }