| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 |
- package cn.hobbystocks.auc.web;
- import cn.hobbystocks.auc.annotation.RequireRoles;
- import cn.hobbystocks.auc.app.AppClient;
- import cn.hobbystocks.auc.common.constant.Constants;
- import cn.hobbystocks.auc.common.core.domain.AjaxResult;
- import cn.hobbystocks.auc.common.user.UserUtils;
- import cn.hobbystocks.auc.common.utils.SensitiveDataUtils;
- import cn.hobbystocks.auc.common.utils.StringUtils;
- import cn.hobbystocks.auc.common.utils.UserType;
- import cn.hobbystocks.auc.domain.Bid;
- import cn.hobbystocks.auc.domain.Lot;
- import cn.hobbystocks.auc.domain.LotFans;
- import cn.hobbystocks.auc.domain.LotGroup;
- import cn.hobbystocks.auc.service.ILotFansService;
- import cn.hobbystocks.auc.service.IOrderStatusService;
- import cn.hobbystocks.auc.vo.LotGroupVO;
- import cn.hobbystocks.auc.vo.SkuDTO;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.util.CollectionUtils;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import javax.annotation.Resource;
- import javax.validation.Valid;
- import java.util.Date;
- import java.util.List;
- import java.util.Objects;
- /**
- * 拍品Controller
- */
- @RestController
- @RequestMapping("/auction/admin/shipping/lot")
- @Slf4j
- @Api(tags = "商家拍品组管理")
- public class LotGroupController extends AdminBaseController {
- @Autowired
- private AppClient appClient;
- @Autowired
- ILotFansService lotFansService;
- //根据businessCode查询拍品组信息
- @ApiOperation(value = "根据businessCode查询商品", notes = "根据商品名称,审核状态查询商品列表", response = LotGroup.class, responseContainer = "List<LotGroup>")
- @PostMapping("/list")
- @RequireRoles({UserType.USER_ROLE_SHIPPING})
- public AjaxResult list(@RequestBody LotGroupVO lotGroup) {
- if (StringUtils.isEmpty(lotGroup.getBusinessCode())){
- AjaxResult.error("业务系统编码不能为空");
- }
- startPage(lotGroup);
- lotGroup.setDelFlag(Constants.DEL_FLAG_NO_DELETE);
- if (Objects.nonNull(UserUtils.getSimpleUserInfo()) && Objects.nonNull(UserUtils.getSimpleUserInfo().getMerchantId())) {
- lotGroup.setMerchantId(UserUtils.getSimpleUserInfo().getMerchantId().longValue());
- }
- if (Objects.equals(0, lotGroup.getNewStatus())) {
- lotGroup.setPubStatus(Constants.PUB_STATUS_NO_PUBLISHED);
- }else if (Objects.equals(1, lotGroup.getNewStatus())) {
- lotGroup.setPubStatus(Constants.PUB_STATUS_PUBLISHED);
- }else if (Objects.equals(2, lotGroup.getNewStatus())) {
- lotGroup.setPubStatus(Constants.PUB_STATUS_PUBLISHED);
- lotGroup.setStatus(Constants.GROUP_STATUS_WAITING);
- }else if (Objects.equals(3, lotGroup.getNewStatus())) {
- lotGroup.setStatus(Constants.GROUP_STATUS_STARTING);
- }
- List<LotGroup> data = lotService.selectLotGroupList(lotGroup);
- data.forEach(group -> {
- SkuDTO sku = appClient.getSku(Integer.parseInt(group.getGoodsId()));
- if (Objects.nonNull(sku)) {
- group.setSkuStock(sku.getSkuStock());
- group.setSkuCode(sku.getCode());
- }
- });
- return AjaxResult.successPage(data);
- }
- @ApiOperation(value = "克隆商品", notes = "insertLotGroup with no id", response = AjaxResult.class, responseContainer = "AjaxResult")
- @PostMapping("/clone")
- @RequireRoles({UserType.USER_ROLE_SHIPPING})
- public AjaxResult clone(@RequestBody LotGroupVO lotGroupVO) {
- LotGroup lotGroup = lotService.selectLotGroupById(lotGroupVO.getId());
- String error = checkUser(lotGroup.getMerchantId());
- if (!StringUtils.isEmpty(error)) {
- return AjaxResult.error(error);
- }
- lotGroup.setId(null);
- lotGroup.setCreateTime(new Date());
- lotGroup.setCreateBy(getUsername());
- lotGroup.setUpdateTime(null);
- lotGroup.setUpdateBy(null);
- lotGroup.setStatus(Constants.GROUP_STATUS_WAITING);
- lotGroup.setDelFlag(Constants.DEL_FLAG_NO_DELETE);
- lotGroup.setGoodsType(lotGroup.getGoodsType());
- lotGroup.setPubStatus(Constants.PUB_STATUS_NO_PUBLISHED);
- lotGroup.setAuctionId(2L);
- lotGroup.setFinishNum(0L);
- lotGroup.setStartNum(0L);
- lotGroup.setSoldNum(0L);
- lotGroup.setPaid(0L);
- lotGroup.setOrderId(null);
- lotGroup.setPubTime(null);
- lotGroup.setLotId(null);
- lotGroup.setNextLotId(null);
- lotService.insertLotGroup(lotGroup);
- return AjaxResult.success();
- }
- @ApiOperation(value = "添加拍卖商品", notes = "insertLotGroup", response = AjaxResult.class, responseContainer = "AjaxResult")
- @PostMapping("/add")
- @RequireRoles({UserType.USER_ROLE_SHIPPING})
- public AjaxResult addSave(@RequestBody @Valid LotGroupVO lotGroup) {
- if (lotGroup.getNum() <= 0) {
- return AjaxResult.error("商品数量必须大于0");
- }
- String error = checkUser(lotGroup.getMerchantId());
- if (!StringUtils.isEmpty(error)) {
- return AjaxResult.error(error);
- }
- lotGroup.setId(null);
- lotGroup.setCreateTime(new Date());
- lotGroup.setCreateBy(getUsername());
- lotGroup.setStatus(Constants.GROUP_STATUS_WAITING);
- lotGroup.setDelFlag(Constants.DEL_FLAG_NO_DELETE);
- lotGroup.setPubStatus(Constants.PUB_STATUS_NO_PUBLISHED);
- lotGroup.setAuctionId(2L);
- lotGroup.setFinishNum(0L);
- lotGroup.setStartNum(0L);
- lotGroup.setSoldNum(0L);
- lotGroup.setPaid(0L);
- lotGroup.setOrderId(null);
- lotGroup.setPubTime(null);
- lotGroup.setLotId(null);
- SkuDTO sku = appClient.getSku(Integer.parseInt(lotGroup.getGoodsId()));
- if (Objects.isNull(sku)) {
- return AjaxResult.error("未找到商品!");
- }
- lotGroup.setImgs(sku.getCarouselImgUrl());
- lotService.insertLotGroup(lotGroup);
- return AjaxResult.success();
- }
- @ApiOperation(value = "修改商品基础信息", notes = "竞价已开启不能改只能改name rule detail sort", response = AjaxResult.class, responseContainer = "AjaxResult")
- @PostMapping("/editLot")
- @RequireRoles({UserType.USER_ROLE_SHIPPING})
- public AjaxResult editLot(@RequestBody LotGroupVO lotGroup) {
- Long lotId = lotGroup.getId();
- Lot lot = lotService.selectLotById(lotId);
- if (!Constants.LOT_STATUS_WAITING.equals(lot.getStatus())) {
- return AjaxResult.error("竞价已开启");
- }
- lotService.updateLot(Lot.builder()
- .id(lot.getId())
- .name(lotGroup.getName())
- .ruleContent(lotGroup.getRuleContent())
- .detail(lotGroup.getDetail())
- .sort(lotGroup.getSort()).build());
- return AjaxResult.success();
- }
- /**
- * 修改保存拍品
- */
- @ApiOperation(value = "修改保存拍品 ", notes = "竞价正在进行中的不能改", response = AjaxResult.class, responseContainer = "AjaxResult")
- @PostMapping("/edit")
- @RequireRoles({UserType.USER_ROLE_SHIPPING})
- public AjaxResult editSave(@RequestBody LotGroupVO lotGroup) {
- if (Objects.nonNull(lotGroup.getNum()) &&lotGroup.getNum() <= 0) {
- return AjaxResult.error("商品数量必须大于0");
- }
- String error = checkUser(lotGroup.getMerchantId());
- if (!StringUtils.isEmpty(error)) {
- return AjaxResult.error(error);
- }
- LotGroup dbLotGroup = lotService.selectLotGroupById(lotGroup.getId());
- if (Objects.nonNull(lotGroup.getGoodsId()) && Constants.GROUP_STATUS_STARTING.equals(dbLotGroup.getStatus())) {
- return AjaxResult.error("竞价正在进行中");
- }
- error = checkUser(dbLotGroup.getMerchantId());
- if (!StringUtils.isEmpty(error)) {
- return AjaxResult.error(error);
- }
- if (Objects.nonNull(lotGroup.getGoodsId())) {
- lotGroup.setAuctionId(2L);
- SkuDTO sku = appClient.getSku(Integer.parseInt(lotGroup.getGoodsId()));
- if (Objects.isNull(sku)) {
- return AjaxResult.error("未找到商品!");
- }
- if (Objects.equals(Constants.PUB_STATUS_PUBLISHED, dbLotGroup.getPubStatus())) {
- List<LotGroup> list =
- lotService.selectLotGroupList(LotGroup.builder().goodsId(dbLotGroup.getGoodsId()).pubStatus(Constants.PUB_STATUS_PUBLISHED).delFlag(Constants.DEL_FLAG_NO_DELETE).build());
- long num = 0;
- for (LotGroup group : list) {
- if (!Objects.equals(group.getId(), dbLotGroup.getId())) {
- List<Lot> lotList = lotService.selectLotList(Lot.builder().delFlag(Constants.DEL_FLAG_NO_DELETE).status(Constants.LOT_STATUS_PASS).groupId(group.getId()).build());
- num += (group.getNum() - lotList.size());
- }
- }
- List<Lot> lotList =
- lotService.selectLotList(Lot.builder().delFlag(Constants.DEL_FLAG_NO_DELETE).status(Constants.LOT_STATUS_PASS).groupId(dbLotGroup.getId()).build());
- num += (lotGroup.getNum() - lotList.size());
- long skuStock = Objects.nonNull(sku.getSkuStock()) ? sku.getSkuStock() : 0L;
- if (skuStock < num) {
- return AjaxResult.error("商品数量超过当前库存!");
- }
- }
- if (StringUtils.isNotEmpty(lotGroup.getGoodsId()) &&
- !Objects.equals(lotGroup.getGoodsId(), dbLotGroup.getGoodsId()) ) {
- lotGroup.setImgs(sku.getCarouselImgUrl());
- }
- }
- lotService.updateLotGroup(lotGroup);
- return AjaxResult.success();
- }
- /**
- * 发布拍品
- */
- @ApiOperation(value = "发布竞价商品", notes = "已审核不能再次审核 有sku库存校验", response = AjaxResult.class, responseContainer = "AjaxResult.success()")
- @PostMapping(value = "/pub")
- @RequireRoles({UserType.USER_ROLE_SHIPPING})
- public AjaxResult pub(@RequestBody LotGroupVO lotGroup) {
- LotGroup dbLotGroup = lotService.selectLotGroupById(lotGroup.getId());
- String error = checkUser(dbLotGroup.getMerchantId());
- if (!StringUtils.isEmpty(error)) {
- return AjaxResult.error(error);
- }
- if (Objects.equals(Constants.PUB_STATUS_PUBLISHED, dbLotGroup.getPubStatus()))
- return AjaxResult.error("已审核不能再次审核");
- //查询关联商品的id
- String goodsId = dbLotGroup.getGoodsId();
- //查询所有使用此商品的拍卖
- List<LotGroup> list =
- lotService.selectLotGroupList(LotGroup.builder().goodsId(dbLotGroup.getGoodsId()).pubStatus(Constants.PUB_STATUS_PUBLISHED).delFlag(Constants.DEL_FLAG_NO_DELETE).build());
- long num = 0;
- for (LotGroup group : list) {
- List<Lot> lotList = lotService.selectLotList(Lot.builder().delFlag(Constants.DEL_FLAG_NO_DELETE).status(Constants.LOT_STATUS_PASS).groupId(group.getId()).build());
- num += (group.getNum() - lotList.size());
- }
- //计算库存
- num += dbLotGroup.getNum();
- SkuDTO sku = appClient.getSku(Integer.parseInt(goodsId));
- long skuStock = Objects.nonNull(sku.getSkuStock()) ? sku.getSkuStock() : 0L;
- if (skuStock < num) {
- return AjaxResult.error("商品数量超过当前库存!");
- }
- dbLotGroup.setPubStatus(Constants.PUB_STATUS_PUBLISHED);
- lotService.updateLotGroup0(LotGroup.builder()
- .id(dbLotGroup.getId())
- .pubStatus(Constants.PUB_STATUS_PUBLISHED)
- .pubTime(new Date())
- .build());
- return AjaxResult.success();
- }
- //此处查询未指定方法,导致swagger会重复
- @ApiOperation(value = "商家拍品列表", notes = "selectLotList with lotGroupids", response = Lot.class, responseContainer = "List<Lot>")
- @RequestMapping("/liveLot")
- @RequireRoles({UserType.USER_ROLE_ADMIN,UserType.USER_ROLE_SHIPPING})
- public AjaxResult listLot(@RequestBody LotGroupVO lotGroup){
- startPage(lotGroup);
- Lot lot = new Lot();
- BeanUtils.copyProperties(lotGroup, lot, "id");
- lot.setGroupId(lotGroup.getId());
- List<Lot> lotList = lotService.selectLotList(lot);
- lotList.forEach(lot1 -> {
- lot1.setDealAccount(SensitiveDataUtils.maskString(lot1.getDealAccount(), 4));
- lot1.setAnonymous(0);
- List<Bid> bids = bidService.selectBidList(Bid.builder().lotId(lot1.getId()).build());
- if (!CollectionUtils.isEmpty(bids)) {
- lot1.setAnonymous(bids.get(0).getAnonymous());
- }
- /*LotFans lotFans = lotFansService.selectLotFansByLotIdAndType(lot1.getId(), "pay_expire");
- if(lotFans != null) {
- lot1.setLotFansId(lotFans.getId());
- }*/
- // List<Order> orderList = orderStatusService.selectOrderStatusList(Order.builder().lotId(lot1.getId()).flag(1).build());
- });
- return AjaxResult.successPage(lotList);
- }
- public String checkUser(Long merchantId) {
- Integer merchantIdReq = UserUtils.getSimpleUserInfo().getMerchantId();
- if (Objects.nonNull(merchantIdReq) && Objects.nonNull(merchantId)) {
- if (!Objects.equals(merchantIdReq.longValue(), merchantId)) {
- return "您无权新增或者修改此商品";
- }
- }
- return null;
- }
- /*@ApiOperation(value = "删除订单逾期未支付的用户记录", notes = "delFans with id", response = AjaxResult.class, responseContainer = "AjaxResult.success")
- @PostMapping("/delFans/{id}")
- public AjaxResult delExpire(@PathVariable("id") Long id){
- int rs = lotFansService.updateLotFansDel(id);
- if(rs == 0) {
- return AjaxResult.error();
- }
- return AjaxResult.success();
- }*/
- }
|