提交 6779575d 作者: zhenjie

购物车相关接口

上级 57d142fc
...@@ -4,6 +4,7 @@ import com.mmc.oms.common.result.ResultBody; ...@@ -4,6 +4,7 @@ import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.controller.BaseController; import com.mmc.oms.controller.BaseController;
import com.mmc.oms.model.dto.uav.UavCartDTO; import com.mmc.oms.model.dto.uav.UavCartDTO;
import com.mmc.oms.model.dto.uav.UavOrderDTO; import com.mmc.oms.model.dto.uav.UavOrderDTO;
import com.mmc.oms.model.qo.uav.UavCartQO;
import com.mmc.oms.model.vo.uav.UavCartVO; import com.mmc.oms.model.vo.uav.UavCartVO;
import com.mmc.oms.service.uav.UavCartService; import com.mmc.oms.service.uav.UavCartService;
import io.swagger.annotations.*; import io.swagger.annotations.*;
...@@ -11,8 +12,10 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -11,8 +12,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List;
/** /**
* @description: 商城购物车,正常订单可以多商家的商品一起下单;意向订单只能单个商家的商品一起下单。
* @author: zj * @author: zj
* @Date: 2023/9/16 14:37 * @Date: 2023/9/16 14:37
*/ */
...@@ -32,9 +35,9 @@ public class UavCartController extends BaseController { ...@@ -32,9 +35,9 @@ public class UavCartController extends BaseController {
@ApiOperation(value = "移除") @ApiOperation(value = "移除")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)}) @ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("remove") @PostMapping("batchRemove")
public ResultBody remove(@RequestParam Integer id) { public ResultBody batchRemove(@RequestBody List<Integer> carIds) {
return uavCartService.remove(id); return uavCartService.batchRemove(carIds);
} }
@ApiOperation(value = "修改数量") @ApiOperation(value = "修改数量")
...@@ -47,9 +50,9 @@ public class UavCartController extends BaseController { ...@@ -47,9 +50,9 @@ public class UavCartController extends BaseController {
@ApiOperation(value = "购物车列表") @ApiOperation(value = "购物车列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = UavCartDTO.class)}) @ApiResponses({@ApiResponse(code = 200, message = "OK", response = UavCartDTO.class)})
@GetMapping("list") @PostMapping("list")
public ResultBody list(@RequestParam Integer pageNo, @RequestParam Integer pageSize, public ResultBody list(@RequestBody UavCartQO uavCartQO,
HttpServletRequest request) { HttpServletRequest request) {
return uavCartService.list(pageNo, pageSize, this.getCurrentAccount(request)); return uavCartService.list(uavCartQO, this.getCurrentAccount(request));
} }
} }
...@@ -14,7 +14,7 @@ import java.util.List; ...@@ -14,7 +14,7 @@ import java.util.List;
public interface UavCartDao { public interface UavCartDao {
void addCart(UavCartDO uavCartDO); void addCart(UavCartDO uavCartDO);
void remove(Integer id); void batchRemove(List<Integer> carIds);
UavCartDO getUavCartDO(Integer id); UavCartDO getUavCartDO(Integer id);
......
...@@ -22,6 +22,7 @@ import java.util.Date; ...@@ -22,6 +22,7 @@ import java.util.Date;
public class UavCartDO implements Serializable { public class UavCartDO implements Serializable {
private static final long serialVersionUID = 3845763818022578395L; private static final long serialVersionUID = 3845763818022578395L;
private Integer id; private Integer id;
private Integer version;
private Integer userAccountId; private Integer userAccountId;
private Integer thirdBackUserAccountId; private Integer thirdBackUserAccountId;
private String companyName; private String companyName;
......
...@@ -2,9 +2,13 @@ package com.mmc.oms.feign; ...@@ -2,9 +2,13 @@ package com.mmc.oms.feign;
import com.mmc.oms.common.result.ResultBody; import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.feign.hystrix.PmsAppApiHystrix; import com.mmc.oms.feign.hystrix.PmsAppApiHystrix;
import com.mmc.oms.model.dto.uav.UavCartDTO;
import com.mmc.oms.model.qo.uav.PriceStockQO;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* @author: zj * @author: zj
* @Date: 2023/6/5 15:18 * @Date: 2023/6/5 15:18
...@@ -13,4 +17,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -13,4 +17,7 @@ import org.springframework.web.bind.annotation.*;
public interface PmsAppApi { public interface PmsAppApi {
@GetMapping("lease/goods/feignLeaseGoodsInfoByAddressId") @GetMapping("lease/goods/feignLeaseGoodsInfoByAddressId")
public ResultBody feignLeaseGoodsInfoByAddressId(@RequestParam Integer id); public ResultBody feignLeaseGoodsInfoByAddressId(@RequestParam Integer id);
@GetMapping("app/goods/listPriceStock")
List<UavCartDTO> listPriceStock(List<PriceStockQO> priceStockQOS);
} }
package com.mmc.oms.feign.hystrix; package com.mmc.oms.feign.hystrix;
import com.alibaba.fastjson2.JSONObject;
import com.mmc.oms.common.result.ResultBody; import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.feign.PmsAppApi; import com.mmc.oms.feign.PmsAppApi;
import com.mmc.oms.model.dto.uav.UavCartDTO;
import com.mmc.oms.model.qo.uav.PriceStockQO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -18,4 +21,10 @@ public class PmsAppApiHystrix implements PmsAppApi { ...@@ -18,4 +21,10 @@ public class PmsAppApiHystrix implements PmsAppApi {
log.info("熔断:PmsAppApiHystrix.feignLeaseGoodsInfoByAddressId==error==>param:{}",id); log.info("熔断:PmsAppApiHystrix.feignLeaseGoodsInfoByAddressId==error==>param:{}",id);
return null; return null;
} }
@Override
public List<UavCartDTO> listPriceStock(List<PriceStockQO> priceStockQOS) {
log.info("熔断:PmsAppApiHystrix.listPriceStock==error==>param:{}", JSONObject.toJSONString(priceStockQOS));
return null;
}
} }
...@@ -46,4 +46,6 @@ public class UavCartDTO implements Serializable { ...@@ -46,4 +46,6 @@ public class UavCartDTO implements Serializable {
private String skuNo; private String skuNo;
@ApiModelProperty(value = "生成时间") @ApiModelProperty(value = "生成时间")
private Date createTime; private Date createTime;
@ApiModelProperty(value = "是否展示价格,0 不显示 1显示")
private Integer priceShow;
} }
package com.mmc.oms.model.qo.uav;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/9/19 15:08
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PriceStockQO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "商品id")
private Integer mallGoodsId;
@ApiModelProperty(value = "商品规格名称")
private String productSpec;
}
package com.mmc.oms.model.qo.uav;
import com.mmc.oms.common.publicinterface.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/9/19 16:20
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UavCartQO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "订单类型,0正常订单,1意向订单", required = true)
private Integer orderType;
@ApiModelProperty(value = "页码", required = true)
@NotNull(message = "页码不能为空", groups = Page.class)
@Min(value = 1, groups = Page.class)
private Integer pageNo;
@ApiModelProperty(value = "每页显示数", required = true)
@NotNull(message = "每页显示数不能为空", groups = Page.class)
@Min(value = 1, groups = Page.class)
private Integer pageSize;
public void buildCurrentPage() {
this.pageNo = (pageNo - 1) * pageSize;
}
}
...@@ -2,8 +2,11 @@ package com.mmc.oms.service.uav; ...@@ -2,8 +2,11 @@ package com.mmc.oms.service.uav;
import com.mmc.oms.common.result.ResultBody; import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.user.BaseAccountDTO; import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.qo.uav.UavCartQO;
import com.mmc.oms.model.vo.uav.UavCartVO; import com.mmc.oms.model.vo.uav.UavCartVO;
import java.util.List;
/** /**
* @author: zj * @author: zj
* @Date: 2023/9/16 14:40 * @Date: 2023/9/16 14:40
...@@ -11,9 +14,9 @@ import com.mmc.oms.model.vo.uav.UavCartVO; ...@@ -11,9 +14,9 @@ import com.mmc.oms.model.vo.uav.UavCartVO;
public interface UavCartService { public interface UavCartService {
ResultBody addCart(UavCartVO uavCartVO); ResultBody addCart(UavCartVO uavCartVO);
ResultBody remove(Integer id); ResultBody batchRemove(List<Integer> carIds);
ResultBody updateNum(Integer id, Integer changeNum); ResultBody updateNum(Integer id, Integer changeNum);
ResultBody list(Integer pageNo, Integer pageSize, BaseAccountDTO currentAccount); ResultBody list(UavCartQO uavCartQO, BaseAccountDTO currentAccount);
} }
...@@ -6,13 +6,20 @@ import com.mmc.oms.common.result.ResultBody; ...@@ -6,13 +6,20 @@ import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.dao.uav.UavCartDao; import com.mmc.oms.dao.uav.UavCartDao;
import com.mmc.oms.entity.uav.UavCartCompanyDO; import com.mmc.oms.entity.uav.UavCartCompanyDO;
import com.mmc.oms.entity.uav.UavCartDO; import com.mmc.oms.entity.uav.UavCartDO;
import com.mmc.oms.enums.UavOrderType;
import com.mmc.oms.feign.PmsAppApi;
import com.mmc.oms.model.dto.uav.UavCartCompanyDTO; import com.mmc.oms.model.dto.uav.UavCartCompanyDTO;
import com.mmc.oms.model.dto.uav.UavCartDTO;
import com.mmc.oms.model.dto.user.BaseAccountDTO; import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.qo.uav.PriceStockQO;
import com.mmc.oms.model.qo.uav.UavCartQO;
import com.mmc.oms.model.vo.uav.UavCartVO; import com.mmc.oms.model.vo.uav.UavCartVO;
import com.mmc.oms.service.uav.UavCartService; import com.mmc.oms.service.uav.UavCartService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -25,6 +32,9 @@ public class UavCartServiceImpl implements UavCartService { ...@@ -25,6 +32,9 @@ public class UavCartServiceImpl implements UavCartService {
@Autowired @Autowired
private UavCartDao uavCartDao; private UavCartDao uavCartDao;
@Autowired
private PmsAppApi pmsAppApi;
@Override @Override
public ResultBody addCart(UavCartVO uavCartVO) { public ResultBody addCart(UavCartVO uavCartVO) {
UavCartDO uavCartDO = new UavCartDO(uavCartVO); UavCartDO uavCartDO = new UavCartDO(uavCartVO);
...@@ -33,8 +43,8 @@ public class UavCartServiceImpl implements UavCartService { ...@@ -33,8 +43,8 @@ public class UavCartServiceImpl implements UavCartService {
} }
@Override @Override
public ResultBody remove(Integer id) { public ResultBody batchRemove(List<Integer> carIds) {
uavCartDao.remove(id); uavCartDao.batchRemove(carIds);
return ResultBody.success(); return ResultBody.success();
} }
...@@ -55,16 +65,64 @@ public class UavCartServiceImpl implements UavCartService { ...@@ -55,16 +65,64 @@ public class UavCartServiceImpl implements UavCartService {
} }
@Override @Override
public ResultBody list(Integer pageNo, Integer pageSize, BaseAccountDTO currentAccount) { public ResultBody list(UavCartQO uavCartQO, BaseAccountDTO currentAccount) {
// 区别是正常还是意向
Integer orderType = UavOrderType.PAY.getCode();
// 按照第三方企业名称分组查询商品 // 按照第三方企业名称分组查询商品
List<Integer> list = uavCartDao.countList(currentAccount.getUserAccountId()); List<Integer> list = uavCartDao.countList(currentAccount.getUserAccountId());
if (list.size() == 0) { if (list.size() == 0) {
return ResultBody.success(PageResult.buildPage(pageNo, pageSize, list.size())); return ResultBody.success(PageResult.buildPage(uavCartQO.getPageNo(), uavCartQO.getPageSize(), list.size()));
} }
Integer begin = (pageNo - 1) * pageSize; Integer pageNo = uavCartQO.getPageNo();
List<UavCartCompanyDO> uavCartCompanyDOS = uavCartDao.list(begin, pageSize, currentAccount.getUserAccountId()); uavCartQO.buildCurrentPage();
List<UavCartCompanyDO> uavCartCompanyDOS = uavCartDao.list(pageNo, uavCartQO.getPageSize(), currentAccount.getUserAccountId());
List<UavCartCompanyDTO> uavCartCompanyDTOS = uavCartCompanyDOS.stream().map(UavCartCompanyDO::buildUavCartCompanyDTO).collect(Collectors.toList()); List<UavCartCompanyDTO> uavCartCompanyDTOS = uavCartCompanyDOS.stream().map(UavCartCompanyDO::buildUavCartCompanyDTO).collect(Collectors.toList());
// 同步商品信息,价格及是否展示
// 根据规格查询商品信息
buildUavCartCompany(orderType, uavCartCompanyDTOS);
return ResultBody.success(PageResult.buildPage(pageNo, uavCartQO.getPageSize(), list.size(), uavCartCompanyDTOS));
}
return ResultBody.success(PageResult.buildPage(pageNo, pageSize, list.size(), uavCartCompanyDTOS)); private void buildUavCartCompany(Integer orderType, List<UavCartCompanyDTO> uavCartCompanyDTOS){
List<PriceStockQO> priceStockQOS = new ArrayList<>();
for (UavCartCompanyDTO uavCartCompanyDTO : uavCartCompanyDTOS) {
for (UavCartDTO uavCartDO : uavCartCompanyDTO.getUavCartDOS()) {
PriceStockQO priceStockQO = new PriceStockQO(uavCartDO.getMallGoodsId(), uavCartDO.getProductSpec());
priceStockQOS.add(priceStockQO);
}
}
// 最新规格信息
List<UavCartDTO> uavCartDTOS = pmsAppApi.listPriceStock(priceStockQOS);
if (CollectionUtils.isEmpty(uavCartDTOS)) {
return;
}
// 更新最新的规格信息
for (UavCartCompanyDTO uavCartCompanyDTO : uavCartCompanyDTOS) {
uavCartCompanyDTO.setCompanyName(uavCartCompanyDTO.getUavCartDOS().get(0).getCompanyName());
for (UavCartDTO uavCartDTO : uavCartCompanyDTO.getUavCartDOS()) {
// 从最新规格中逐个更新
for (UavCartDTO newestUavCartDTO : uavCartDTOS) {
if (uavCartDTO.getMallGoodsId().equals(newestUavCartDTO.getMallGoodsId())
&& uavCartDTO.getProductSpec().equals(newestUavCartDTO.getProductSpec())) {
// 不符合的移除
if (UavOrderType.PAY.getCode().equals(orderType)) {
if (newestUavCartDTO.getPriceShow().equals(0)) {
uavCartCompanyDTO.getUavCartDOS().remove(uavCartDTO);
}
}else {
if (newestUavCartDTO.getPriceShow().equals(1)) {
uavCartCompanyDTO.getUavCartDOS().remove(uavCartDTO);
}
}
uavCartDTO.setPriceShow(newestUavCartDTO.getPriceShow());
uavCartDTO.setSalePrice(newestUavCartDTO.getSalePrice());
break;
}
}
}
if (CollectionUtils.isEmpty(uavCartCompanyDTO.getUavCartDOS())) {
uavCartCompanyDTOS.remove(uavCartCompanyDTO);
}
}
} }
} }
...@@ -20,12 +20,18 @@ ...@@ -20,12 +20,18 @@
</insert> </insert>
<sql id="cart_column"> <sql id="cart_column">
id, user_account_id, third_back_user_account_id, company_name, mall_goods_id, trade_name, price_stock_id, id, version, user_account_id, third_back_user_account_id, company_name, mall_goods_id, trade_name, price_stock_id,
product_spec, order_num, sale_price, sku_image, sku_no, create_time product_spec, order_num, sale_price, sku_image, sku_no, create_time
</sql> </sql>
<update id="remove"> <update id="batchRemove">
update uav_cart set is_deleted = 1 where id = #{id} update uav_cart set is_deleted = 1
<where>
<foreach collection="carIds" item="id" index="index"
open="id in (" close=")" separator=",">
#{id}
</foreach>
</where>
</update> </update>
<update id="updateUavCart" parameterType="com.mmc.oms.entity.uav.UavCartDO"> <update id="updateUavCart" parameterType="com.mmc.oms.entity.uav.UavCartDO">
...@@ -70,6 +76,7 @@ ...@@ -70,6 +76,7 @@
FROM uav_cart FROM uav_cart
where user_account_id = #{userAccountId} and is_deleted = 0 where user_account_id = #{userAccountId} and is_deleted = 0
ORDER BY id DESC limit 1000000000) a ORDER BY id DESC limit 1000000000) a
group by third_back_user_account_id
limit #{begin}, #{pageSize} limit #{begin}, #{pageSize}
</select> </select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论