Commit 8a22a63e authored by unset's avatar unset

新增购物车接口

parent 2675daf6
package com.upyuns.platform.rs.website.dto;
import lombok.Data;
/**
* @ClassName : CartOrderDto
* @Description : 购物车订单参数
* @Author : jiaoruizhen
* @Date: 2020-12-04 11:02
*/
@Data
public class CartOrderDto {
String ids;
//收货地址信息
String address;
//收货人姓名
String name;
//收货电话
String phone;
//配送方式:1、线上配送,2、快递配送
Integer sendType;
}
package com.upyuns.platform.rs.website.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @ClassName : OrderInfoDto
* @Description : 添加订单信息
* @Author : jiaoruizhen
* @Date: 2020-12-12 17:09
*/
@Data
public class OrderInfoDto {
//详情ID
Integer detailId;
//1、标准数据,2、影像图库,3、行业应用信息
Integer type;
//数量
Integer number;
//单价
BigDecimal price;
//文件地址
String filePath;
}
......@@ -147,4 +147,18 @@ public class ShoppingCartInfo implements Serializable {
@ApiModelProperty(value = "")
private BigDecimal totalAmount;
public static OrderItem convertToOrderItem(ShoppingCartInfo shoppingCartInfo) {
OrderItem orderItem = new OrderItem();
orderItem.setDetailId(shoppingCartInfo.getDetailId());
orderItem.setDetailJson(shoppingCartInfo.getDetailJson());
orderItem.setFilePath(shoppingCartInfo.getFilePath());
orderItem.setItemPic(shoppingCartInfo.getItemPic());
orderItem.setName(shoppingCartInfo.getName());
orderItem.setNumber(shoppingCartInfo.getNumber());
orderItem.setPrice(shoppingCartInfo.getPrice());
orderItem.setTotalAmount(shoppingCartInfo.getTotalAmount());
orderItem.setType(shoppingCartInfo.getType());
return orderItem;
}
}
......@@ -24,7 +24,7 @@ public class UserAddress implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty("订单收获地址id")
private Long id;
private Integer id;
/**
* 收获人姓名
......@@ -98,4 +98,10 @@ public class UserAddress implements Serializable {
* 是否删除: 0、否,1、是
*/
private Integer isDel;
/**
* 是否是默认值: 0、否,1、是
*/
private Integer isDefault;
}
......@@ -113,4 +113,14 @@ public class UserInvoice implements Serializable {
private Integer isDel;
/**
* 发票类型: 1、普通发票,2、专票
*/
private Integer type;
/**
* 是否是默认值: 0、否,1、是
*/
private Integer isDefault;
}
package com.upyuns.platform.rs.website.type;
/**
* @ClassName : OrderTypeEnum
* @Description : 订单类型
* @Author : jiaoruizhen
* @Date: 2020-12-12 16:50
*/
public enum OrderTypeEnum {
STANDARD_DATA(1, "标准数据"),
INDUSTRY_INFO(3, "行业应用"),
IMAGE_STORAGE(2, "影像图库");
private Integer type;
private String msg;
OrderTypeEnum(Integer type, String msg) {
this.type = type;
this.msg = msg;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public static <T extends OrderTypeEnum> String getType(Integer code, Class<T> t) {
for (T item : t.getEnumConstants()) {
if (item.getType().equals(code)) {
return item.getMsg();
}
}
return "";
}
public static OrderTypeEnum getByCode(Integer code) {
for (OrderTypeEnum v : values()) {
if (v.getType() == code) {
return v;
}
}
return null;
}
public static String getProductStatusEnum(Integer code) {
return getType(code, OrderTypeEnum.class);
}
}
......@@ -79,7 +79,7 @@ public class OrderInfoBiz extends BaseBiz<OrderInfoMapper, OrderInfo> {
*/
public OrderInfo getOneByOrderNo(String orderNo) {
Example example = new Example(OrderInfo.class);
example.createCriteria().andEqualTo("orderNo", orderNo).andNotEqualTo("status", -1).andEqualTo("status", -2);
example.createCriteria().andEqualTo("orderNo", orderNo).andNotEqualTo("status", -1).andNotEqualTo("status", -2);
return mapper.selectOneByExample(example);
}
......@@ -105,14 +105,12 @@ public class OrderInfoBiz extends BaseBiz<OrderInfoMapper, OrderInfo> {
if (StringUtils.isNotBlank(userOrderDto.getName())) {
orderItemCriteria.andLike("name", "%"+ userOrderDto.getName() +"%");
}
orderInfoCriteria.andNotEqualTo("status", -1);
example.orderBy("updTime").desc();
List<OrderInfo> orderInfoList = mapper.selectByExample(example);
if (orderInfoList != null) {
}
return new ArrayList<>();
}
......
......@@ -2,20 +2,24 @@ package com.upyuns.platform.rs.website.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.upyuns.platform.rs.website.entity.OrderEInvoice;
import com.upyuns.platform.rs.website.entity.OrderInfo;
import com.upyuns.platform.rs.website.entity.OrderItem;
import com.upyuns.platform.rs.website.dto.CartOrderDto;
import com.upyuns.platform.rs.website.dto.OrderInfoDto;
import com.upyuns.platform.rs.website.entity.*;
import com.upyuns.platform.rs.website.type.OrderTypeEnum;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.upyuns.platform.rs.website.entity.ShoppingCartInfo;
import com.upyuns.platform.rs.website.mapper.ShoppingCartInfoMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import tk.mybatis.mapper.entity.Example;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -37,6 +41,18 @@ public class ShoppingCartInfoBiz extends BaseBiz<ShoppingCartInfoMapper,Shopping
@Autowired
OrderItemBiz orderItemBiz;
@Autowired
IndustryApplicationInfoBiz industryApplicationInfoBiz;
@Autowired
ImageImgStorageBiz imageImgStorageBiz;
@Autowired
UserFeign userFeign;
@Autowired
HttpServletRequest request;
/**
* 添加购物车
* @param shoppingCartInfo
......@@ -68,24 +84,103 @@ public class ShoppingCartInfoBiz extends BaseBiz<ShoppingCartInfoMapper,Shopping
return ObjectRestResponse.succ(mapper.selectByExample(example));
}
/**
* 前端用户添加购物车
* @param orderInfoDto 商品详情ID
* @return
*/
public ObjectRestResponse addShoppingCart(OrderInfoDto orderInfoDto) {
AppUserDTO appUserDTO = userFeign.userDetailByToken(request.getHeader("Authorization")).getData();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(ResultCode.RSTOKEN_EXPIRED_CODE, ResultCode.getMsg(ResultCode.RSTOKEN_EXPIRED_CODE));
}
if (orderInfoDto.getType() == null || orderInfoDto.getType() == null) {
return ObjectRestResponse.paramIsEmpty();
}
//标准数据
if (OrderTypeEnum.STANDARD_DATA.getType().equals(orderInfoDto.getType())) {
}
//影像图库
if (OrderTypeEnum.IMAGE_STORAGE.getType().equals(orderInfoDto.getType())) {
ImageImgStorage imageImgStorage = imageImgStorageBiz.selectById(orderInfoDto.getDetailId());
if (imageImgStorage != null) {
ShoppingCartInfo shoppingCartInfo = new ShoppingCartInfo();
shoppingCartInfo.setDetailId(imageImgStorage.getId());
shoppingCartInfo.setDetailJson(JSONObject.toJSONString(imageImgStorage));
shoppingCartInfo.setPrice(orderInfoDto.getPrice());
shoppingCartInfo.setFilePath(orderInfoDto.getFilePath());
shoppingCartInfo.setNumber(orderInfoDto.getNumber());
shoppingCartInfo.setItemPic(imageImgStorage.getCoverImg());
shoppingCartInfo.setName(imageImgStorage.getName());
shoppingCartInfo.setTotalAmount(orderInfoDto.getPrice().multiply(new BigDecimal(orderInfoDto.getNumber())));
shoppingCartInfo.setType(orderInfoDto.getType());
//添加用户信息
shoppingCartInfo.setRealName(appUserDTO.getRealname());
shoppingCartInfo.setNickname(appUserDTO.getNickname());
shoppingCartInfo.setHeadImg(appUserDTO.getHeadimgurl());
shoppingCartInfo.setPhone(appUserDTO.getUsername());
shoppingCartInfo.setUserId(appUserDTO.getUserid());
addUpdate(shoppingCartInfo);
} else {
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, ResultCode.getMsg(ResultCode.NOTEXIST_CODE));
}
}
//行业应用信息
if (OrderTypeEnum.INDUSTRY_INFO.getType().equals(orderInfoDto.getType())) {
IndustryApplicationInfo industryApplicationInfo = industryApplicationInfoBiz.selectById(orderInfoDto.getDetailId());
if (industryApplicationInfo != null) {
ShoppingCartInfo shoppingCartInfo = new ShoppingCartInfo();
shoppingCartInfo.setDetailId(industryApplicationInfo.getId());
shoppingCartInfo.setDetailJson(JSONObject.toJSONString(industryApplicationInfo));
shoppingCartInfo.setPrice(orderInfoDto.getPrice());
shoppingCartInfo.setFilePath(orderInfoDto.getFilePath());
shoppingCartInfo.setNumber(orderInfoDto.getNumber());
shoppingCartInfo.setItemPic(industryApplicationInfo.getCoverImg());
shoppingCartInfo.setName(industryApplicationInfo.getTitle());
shoppingCartInfo.setTotalAmount(orderInfoDto.getPrice().multiply(new BigDecimal(orderInfoDto.getNumber())));
shoppingCartInfo.setType(orderInfoDto.getType());
//添加用户信息
shoppingCartInfo.setRealName(appUserDTO.getRealname());
shoppingCartInfo.setNickname(appUserDTO.getNickname());
shoppingCartInfo.setHeadImg(appUserDTO.getHeadimgurl());
shoppingCartInfo.setPhone(appUserDTO.getUsername());
shoppingCartInfo.setUserId(appUserDTO.getUserid());
addUpdate(shoppingCartInfo);
} else {
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, ResultCode.getMsg(ResultCode.NOTEXIST_CODE));
}
}
return ObjectRestResponse.succ();
}
/**
* 购物车转为订单
* @param ids
* @param cartOrderDto
* @return
*/
public ObjectRestResponse convertShopCartToOrderInfo(String ids) {
if (StringUtils.isBlank(ids)) {
public ObjectRestResponse convertShopCartToOrderInfo(CartOrderDto cartOrderDto) {
AppUserDTO appUserDTO = userFeign.userDetailByToken(request.getHeader("Authorization")).getData();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(ResultCode.RSTOKEN_EXPIRED_CODE, ResultCode.getMsg(ResultCode.RSTOKEN_EXPIRED_CODE));
}
if (cartOrderDto == null || StringUtils.isBlank(cartOrderDto.getIds())) {
return ObjectRestResponse.paramIsEmpty();
}
String[] cartIds = ids.split(",");
if (cartIds == null || ids.length() <= 0) {
String[] cartIds = cartOrderDto.getIds().split(",");
if (cartIds == null || cartIds.length <= 0) {
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, ResultCode.getMsg(ResultCode.NOTEXIST_CODE));
}
Example example = new Example(ShoppingCartInfo.class);
example.createCriteria().andIn("cartId", Arrays.asList(cartIds)).andEqualTo("isDel", 0);
List<ShoppingCartInfo> cartInfoList = mapper.selectByExample(example);
if (cartInfoList != null && cartInfoList.size() > 0) {
convertToOrderInfo(cartInfoList);
convertToOrderInfo(cartInfoList, cartOrderDto, appUserDTO);
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, ResultCode.getMsg(ResultCode.NOTEXIST_CODE));
......@@ -95,16 +190,32 @@ public class ShoppingCartInfoBiz extends BaseBiz<ShoppingCartInfoMapper,Shopping
* 购物车转订单实现
* @param cartInfoList
*/
private void convertToOrderInfo(List<ShoppingCartInfo> cartInfoList) {
List<OrderItem> orderItemList = new ArrayList<>();
private void convertToOrderInfo(List<ShoppingCartInfo> cartInfoList, CartOrderDto cartOrderDto, AppUserDTO appUserDTO) {
//总金额
double amount = cartInfoList.parallelStream().mapToDouble(shoppingCartInfo ->shoppingCartInfo.getTotalAmount().doubleValue()).sum();
//总数量
Integer totalNumber = cartInfoList.parallelStream().mapToInt(ShoppingCartInfo::getNumber).sum();
OrderInfo orderInfo = new OrderInfo();
orderInfo.setAmount(new BigDecimal(amount).setScale(2, BigDecimal.ROUND_HALF_UP));
orderInfo.setNumber(totalNumber);
orderInfoBiz.generateOrder(orderInfo);
cartInfoList.parallelStream().forEach(shoppingCartInfo -> {
OrderItem orderItem = ShoppingCartInfo.convertToOrderItem(shoppingCartInfo);
orderItem.setOrderId(orderInfo.getOrderId());
orderItemBiz.insertSelectiveRe(orderItem);
});
//收货信息
orderInfo.setReceiveName(cartOrderDto.getName());
orderInfo.setReceivePhone(cartOrderDto.getPhone());
orderInfo.setReceiveAddress(cartOrderDto.getAddress());
//用户信息
orderInfo.setHeadImg(appUserDTO.getHeadimgurl());
orderInfo.setNickname(appUserDTO.getNickname());
orderInfo.setPhone(appUserDTO.getUsername());
orderInfo.setUserId(appUserDTO.getUserid());
orderInfo.setRealName(appUserDTO.getRealname());
orderInfoBiz.updateSelectiveByIdRe(orderInfo);
}
}
\ No newline at end of file
......@@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
......@@ -100,6 +99,45 @@ public class UserAddressBiz extends BaseBiz<UserAddressMapper, UserAddress> {
}
Example example = new Example(UserAddress.class);
example.createCriteria().andEqualTo("userId", appUserVo.getUserid()).andEqualTo("isDel", 0);
example.orderBy("isDefault").desc();
return mapper.selectByExample(example);
}
/**
* 设置地址为默认值
* @param id
* @return
*/
public ObjectRestResponse setDefault(Integer id) {
AppUserDTO appUserDTO = userFeign.userDetailByToken(request.getHeader("Authorization")).getData();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(ResultCode.RSTOKEN_EXPIRED_CODE, ResultCode.getMsg(ResultCode.RSTOKEN_EXPIRED_CODE));
}
if (id == null) {
return ObjectRestResponse.paramIsEmpty();
}
UserAddress userAddress = selectById(id);
if (userAddress == null || userAddress.getIsDel() == 1) {
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, ResultCode.getMsg(ResultCode.NOTEXIST_CODE));
}
generateDefault(appUserDTO.getUserid());
userAddress.setIsDefault(1);
updateSelectiveByIdRe(userAddress);
return ObjectRestResponse.succ();
}
private void generateDefault(Integer userId) {
Example example = new Example(UserAddress.class);
example.createCriteria().andEqualTo("userId", userId).andEqualTo("isDel", 0).andEqualTo("isDefault", 1);
List<UserAddress> list = mapper.selectByExample(example);
if (list != null && list.size() > 0) {
list.parallelStream().forEach(userAddress -> {
userAddress.setIsDefault(0);
updateSelectiveByIdRe(userAddress);
});
}
}
}
\ No newline at end of file
......@@ -2,12 +2,16 @@ package com.upyuns.platform.rs.website.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.upyuns.platform.rs.website.dto.UserInvoiceDto;
import com.upyuns.platform.rs.website.entity.OrderEInvoice;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.upyuns.platform.rs.website.entity.UserInvoice;
......@@ -15,6 +19,9 @@ import com.upyuns.platform.rs.website.mapper.UserInvoiceMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import tk.mybatis.mapper.entity.Example;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* 用户发票信息
*
......@@ -25,6 +32,10 @@ import tk.mybatis.mapper.entity.Example;
@Service
public class UserInvoiceBiz extends BaseBiz<UserInvoiceMapper,UserInvoice> {
@Autowired
UserFeign userFeign;
@Autowired
HttpServletRequest request;
/**
* 添加用户发票
* @param userInvoice
......@@ -48,6 +59,34 @@ public class UserInvoiceBiz extends BaseBiz<UserInvoiceMapper,UserInvoice> {
return ObjectRestResponse.succ();
}
/**
* 添加用户发票
* @param userInvoice
* @return
*/
public ObjectRestResponse userAddUpdate(UserInvoice userInvoice) {
AppUserDTO appUserDTO = userFeign.userDetailByToken(request.getHeader("Authorization")).getData();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(ResultCode.RSTOKEN_EXPIRED_CODE, ResultCode.getMsg(ResultCode.RSTOKEN_EXPIRED_CODE));
}
if (userInvoice == null) {
return ObjectRestResponse.paramIsEmpty();
}
userInvoice.setUserId(appUserDTO.getUserid());
if (userInvoice.getId() == null) {
UserInvoice old = getOneByTax(userInvoice.getTaxCode(), userInvoice.getUserId());
if (old != null) {
userInvoice.setId(old.getId());
updateData(userInvoice);
} else {
insertSelectiveRe(userInvoice);
}
} else {
updateData(userInvoice);
}
return ObjectRestResponse.succ();
}
/**
* 查询发票信息
* @param tax
......@@ -81,7 +120,7 @@ public class UserInvoiceBiz extends BaseBiz<UserInvoiceMapper,UserInvoice> {
criteria.andEqualTo("taxCode", "%" + userInvoiceDto.getTaxCode() + "%");
}
criteria.andEqualTo("isDel", 0);
example.orderBy("updTime").desc();
example.orderBy("isDefault").desc();
Query query = new Query(userInvoiceDto);
PageDataVO<UserInvoice> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.selectByExample(example));
return ObjectRestResponse.succ(pageDataVO);
......@@ -93,6 +132,11 @@ public class UserInvoiceBiz extends BaseBiz<UserInvoiceMapper,UserInvoice> {
* @return
*/
public ObjectRestResponse getUserInvoiceInfo(UserInvoiceDto userInvoiceDto) {
AppUserDTO appUserDTO = userFeign.userDetailByToken(request.getHeader("Authorization")).getData();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(ResultCode.RSTOKEN_EXPIRED_CODE, ResultCode.getMsg(ResultCode.RSTOKEN_EXPIRED_CODE));
}
userInvoiceDto.setUserId(appUserDTO.getUserid());
return getList(userInvoiceDto);
}
......@@ -108,4 +152,41 @@ public class UserInvoiceBiz extends BaseBiz<UserInvoiceMapper,UserInvoice> {
return ObjectRestResponse.succ();
}
/**
* 设置发票为默认值
* @param id
* @return
*/
public ObjectRestResponse setDefault(Integer id) {
AppUserDTO appUserDTO = userFeign.userDetailByToken(request.getHeader("Authorization")).getData();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(ResultCode.RSTOKEN_EXPIRED_CODE, ResultCode.getMsg(ResultCode.RSTOKEN_EXPIRED_CODE));
}
if (id == null) {
return ObjectRestResponse.paramIsEmpty();
}
UserInvoice userInvoice = selectById(id);
if (userInvoice == null || userInvoice.getIsDel() == 1) {
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, ResultCode.getMsg(ResultCode.NOTEXIST_CODE));
}
generateDefault(appUserDTO.getUserid());
userInvoice.setIsDefault(1);
updateSelectiveByIdRe(userInvoice);
return ObjectRestResponse.succ();
}
private void generateDefault(Integer userId) {
Example example = new Example(UserInvoice.class);
example.createCriteria().andEqualTo("userId", userId).andEqualTo("isDel", 0).andEqualTo("isDefault", 1);
List<UserInvoice> list = mapper.selectByExample(example);
if (list != null && list.size() > 0) {
list.parallelStream().forEach(userInvoice -> {
userInvoice.setIsDefault(0);
updateSelectiveByIdRe(userInvoice);
});
}
}
}
\ No newline at end of file
......@@ -5,6 +5,7 @@ import com.github.wxiaoqi.security.common.rest.BaseController;
import com.upyuns.platform.rs.website.biz.UserAddressBiz;
import com.upyuns.platform.rs.website.dto.UserAddressDto;
import com.upyuns.platform.rs.website.entity.UserAddress;
import com.upyuns.platform.rs.website.entity.UserInvoice;
import org.springframework.web.bind.annotation.*;
@RestController
......@@ -21,4 +22,8 @@ public class UserAddressWebController extends BaseController<UserAddressBiz,User
return ObjectRestResponse.succ(baseBiz.getUserAddress());
}
@PostMapping(value = "setDefault")
public ObjectRestResponse setDefault(@RequestBody UserAddress userAddress) {
return baseBiz.setDefault(userAddress.getId());
}
}
\ No newline at end of file
......@@ -20,4 +20,10 @@ public class UserInvoiceWebController extends BaseController<UserInvoiceBiz,User
public ObjectRestResponse getUserList(UserInvoiceDto userInvoiceDto) {
return baseBiz.getUserInvoiceInfo(userInvoiceDto);
}
@PostMapping(value = "setDefault")
public ObjectRestResponse setDefault(@RequestBody UserInvoice userInvoice) {
return baseBiz.setDefault(userInvoice.getId());
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment