提交 a78ca2eb 作者: zhenjie

订单相关代码

上级 e983a855
package com.mmc.oms.client;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mmc.oms.model.dto.mall.*;
import com.mmc.oms.model.qo.mall.MallOrderGoodsInfoQO;
import com.mmc.oms.model.qo.mall.ProductSpecPriceQO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.web.client.RestTemplate;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: zj
* @Date: 2023/6/8 11:18
*/
@Component
public class PmsClient {
@Value("${pms.url}")
private String pmsAppUri;
@Autowired
private RestTemplate restTemplate;
public List<MallGoodsShopCarDTO> fillGoodsInfo(List<MallGoodsShopCarDTO> param, String token){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(param), headers);
ResponseEntity<List> responseEntity = restTemplate.exchange(pmsAppUri + "goods/fillGoodsInfo", HttpMethod.POST, entity, List.class);
if (CollectionUtils.isEmpty(responseEntity.getBody())) {
return null;
}
List<MallGoodsShopCarDTO> orderGoodsProdDTO = (List<MallGoodsShopCarDTO>) responseEntity.getBody().stream().map(it->new ObjectMapper().convertValue(it,MallGoodsShopCarDTO.class)).collect(Collectors.toList());
return orderGoodsProdDTO;
}
public List<OrderGoodsProdDTO> feignListProdGoodsSkuInfo(MallOrderGoodsInfoQO mallOrderGoodsInfoQO, String token){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(mallOrderGoodsInfoQO), headers);
ResponseEntity<List> responseEntity = restTemplate.exchange(pmsAppUri + "goods/feignListProdGoodsSkuInfo", HttpMethod.POST, entity, List.class);
if (CollectionUtils.isEmpty(responseEntity.getBody())) {
return null;
}
List<OrderGoodsProdDTO> orderGoodsProdDTO = (List<OrderGoodsProdDTO>) responseEntity.getBody().stream().map(it->new ObjectMapper().convertValue(it,OrderGoodsProdDTO.class)).collect(Collectors.toList());
//JSONArray.parseArray(responseEntity.getBody(),OrderGoodsProdDTO.class);
return orderGoodsProdDTO;
}
public List<OrderGoodsIndstDTO> feignListIndstGoodsSkuInfo(MallOrderGoodsInfoQO mallOrderGoodsInfoQO, String token){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(mallOrderGoodsInfoQO), headers);
ResponseEntity<List> responseEntity = restTemplate.exchange(pmsAppUri + "goods/feignListIndstGoodsSkuInfo", HttpMethod.POST, entity, List.class);
if (CollectionUtils.isEmpty(responseEntity.getBody())) {
return null;
}
List<OrderGoodsIndstDTO> indstDTOS = (List<OrderGoodsIndstDTO>) responseEntity.getBody().stream().map(it->new ObjectMapper().convertValue(it,OrderGoodsIndstDTO.class)).collect(Collectors.toList());
return indstDTOS;
}
public List<MallProductSpecPriceDTO> feignListProductSpecPrice(ProductSpecPriceQO productSpecPriceQO, String token){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(productSpecPriceQO), headers);
ResponseEntity<List> responseEntity = restTemplate.exchange(pmsAppUri + "goods/feignListProductSpecPrice", HttpMethod.POST, entity, List.class);
if (CollectionUtils.isEmpty(responseEntity.getBody())) {
return null;
}
List<MallProductSpecPriceDTO> mallProductSpecPriceDTO = (List<MallProductSpecPriceDTO>) responseEntity.getBody().stream().map(it->new ObjectMapper().convertValue(it,MallProductSpecPriceDTO.class)).collect(Collectors.toList());
return mallProductSpecPriceDTO;
}
public ProductSpecPriceDTO feignGetUnitPriceByTag(Integer specId, Integer tagId, String token){
HttpHeaders headers = new HttpHeaders();
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(null, headers);
ResponseEntity<ProductSpecPriceDTO> responseEntity = restTemplate.exchange(pmsAppUri + "goods/feignGetUnitPriceByTag" + "?specId=" + specId + "&tagId=" + tagId, HttpMethod.GET, entity, ProductSpecPriceDTO.class);
return responseEntity.getBody();
}
}
package com.mmc.oms.client;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mmc.oms.model.dto.mall.CooperationTagDTO;
import com.mmc.oms.model.dto.mall.MallProductSpecPriceDTO;
import com.mmc.oms.model.dto.user.UserAccountSimpleDTO;
import com.mmc.oms.model.qo.mall.BUserAccountQO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.web.client.RestTemplate;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: zj
* @Date: 2023/6/8 10:16
*/
@Component
public class UserClient {
@Value("${userapp.url}")
private String userAppUri;
@Autowired
private RestTemplate restTemplate;
/**
* 根据用户id获取基本信息
* @param userAccountId
* @return
*/
public UserAccountSimpleDTO feignGetUserSimpleInfo(Integer userAccountId, String token){
HttpHeaders headers = new HttpHeaders();
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(null, headers);
ResponseEntity<UserAccountSimpleDTO> responseEntity = restTemplate.exchange(userAppUri + "user-account/feignGetUserSimpleInfo" + "?userAccountId=" + userAccountId, HttpMethod.GET, entity, UserAccountSimpleDTO.class);
return responseEntity.getBody();
}
/**
* 根据地区信息查询用户id
* @param provinceCode
* @param cityCode
* @param districtCode
* @return
*/
public List<Integer> feignListUserAccountIds(Integer provinceCode, Integer cityCode,
Integer districtCode, String token){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(null, headers);
String param = "";
if (provinceCode != null){
param = "provinceCode=" + provinceCode;
}
if (cityCode != null){
param += "&cityCode=" + cityCode;
}
if (districtCode != null){
param += "&districtCode=" + districtCode;
}
ResponseEntity<List> exchange = restTemplate.exchange(userAppUri + "user-account/feignListUserAccountIds?" + param, HttpMethod.GET, entity, List.class);
List<Integer> ids = exchange.getBody();
return ids;
}
/**
* 获取用户集合列表页面
*
* @param bUserAccountQO 问:b用户帐户
* @return {@link List}<{@link UserAccountSimpleDTO}>
*/
public List<UserAccountSimpleDTO> feignListBAccountPage(BUserAccountQO bUserAccountQO, String token){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(bUserAccountQO), headers);
ResponseEntity<List> responseEntity = restTemplate.exchange(userAppUri + "back-user/feignListBAccountPage", HttpMethod.POST, entity, List.class);
if (CollectionUtils.isEmpty(responseEntity.getBody())) {
return null;
}
List<UserAccountSimpleDTO> users = (List<UserAccountSimpleDTO>) responseEntity.getBody().stream().map(it->new ObjectMapper().convertValue(it,UserAccountSimpleDTO.class)).collect(Collectors.toList());
return users;
}
/**
* 根据用户id查询用户信息
* @param ids
* @param token
* @return
*/
public List<UserAccountSimpleDTO> feignListUserAccountByIds(List<Integer> ids, String token){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(ids), headers);
ResponseEntity<List> responseEntity = restTemplate.exchange(userAppUri + "user-account/feignListUserAccountByIds", HttpMethod.POST, entity, List.class);
if (CollectionUtils.isEmpty(responseEntity.getBody())) {
return null;
}
List<UserAccountSimpleDTO> users = (List<UserAccountSimpleDTO>) responseEntity.getBody().stream().map(it->new ObjectMapper().convertValue(it,UserAccountSimpleDTO.class)).collect(Collectors.toList());
return users;
}
/**
* 查询推荐人信息
* @param userIds
* @return
*/
public List<UserAccountSimpleDTO> feignListRcdUserInfo(List<Integer> userIds, String token){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(userIds), headers);
ResponseEntity<List> responseEntity = restTemplate.exchange(userAppUri + "user-account/feignListRcdUserInfo", HttpMethod.POST, entity, List.class);
if (CollectionUtils.isEmpty(responseEntity.getBody())) {
return null;
}
List<UserAccountSimpleDTO> users = (List<UserAccountSimpleDTO>) responseEntity.getBody().stream().map(it->new ObjectMapper().convertValue(it,UserAccountSimpleDTO.class)).collect(Collectors.toList());
return users;
}
/**
* 查询上级id
* @param userAccountId
* @return
*/
public Integer feignGetSuperiorRef(Integer userAccountId, String token){
HttpHeaders headers = new HttpHeaders();
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(null, headers);
ResponseEntity<Integer> responseEntity = restTemplate.exchange(userAppUri + "user-account/feignGetSuperiorRef" + "?userAccountId=" + userAccountId, HttpMethod.GET, entity, Integer.class);
return responseEntity.getBody();
}
/**
* 查询上级推荐人信息
* @param userAccountId
* @return
*/
public UserAccountSimpleDTO feignGetUserRcdInfo(Integer userAccountId, String token){
HttpHeaders headers = new HttpHeaders();
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(null, headers);
ResponseEntity<UserAccountSimpleDTO> responseEntity = restTemplate.exchange(userAppUri + "user-account/feignGetUserRcdInfo" + "?userAccountId=" + userAccountId, HttpMethod.GET, entity, UserAccountSimpleDTO.class);
return responseEntity.getBody();
}
/**
* 用户合作标签
* @return
*/
public List<CooperationTagDTO> feignListCooperationTag(){
ResponseEntity<List> responseEntity = restTemplate.getForEntity(userAppUri + "cooperation/feignListCooperationTag", List.class);
if (CollectionUtils.isEmpty(responseEntity.getBody())) {
return null;
}
List<CooperationTagDTO> cooperationTagDTO = (List<CooperationTagDTO>) responseEntity.getBody().stream().map(it->new ObjectMapper().convertValue(it,CooperationTagDTO.class)).collect(Collectors.toList());
return cooperationTagDTO;
}
}
package com.mmc.oms.common;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* author:zhenjie
* Date:2023/2/6
* time:15:44
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class KDNCallBackResponse implements Serializable {
private static final long serialVersionUID = 7993641230087715933L;
private String EBusinessID;
private String UpdateTime;
private Boolean Success;
private String Reason;
}
......@@ -4,6 +4,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;
/**
......@@ -24,4 +25,9 @@ public class RestTemplateConfig {
factory.setReadTimeout(5000);
return factory;
}
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
return new MappingJackson2HttpMessageConverter();
}
}
package com.mmc.oms.controller;
import com.mmc.oms.common.publicinterface.Insert;
import com.mmc.oms.common.publicinterface.Update;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.mall.UserAddressDTO;
import com.mmc.oms.model.qo.mall.UserAddressQO;
import com.mmc.oms.model.vo.mall.UserAddressVO;
import com.mmc.oms.service.UserAddressService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @author: zj
* @Date: 2023/6/7 10:11
*/
@RestController
@RequestMapping("/user-address/")
@Api(tags = {"地址管理"})
public class UserAddressController extends BaseController{
@Autowired
private UserAddressService userAddressService;
/**
* 添加地址
* @param request
* @param param
* @return
*/
@ApiOperation(value = "新增用户地址")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("insert")
public ResultBody insert(HttpServletRequest request, @RequestBody @Validated(Insert.class) UserAddressVO param) {
return userAddressService.insert(param,this.getCurrentAccount(request));
}
@ApiOperation(value = "编辑用户地址")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("update")
public ResultBody update(@RequestBody @Validated(Update.class) UserAddressVO param, HttpServletRequest request) {
return userAddressService.update(param,this.getCurrentAccount(request));
}
@ApiOperation(value = "删除用户地址-根据id")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@GetMapping("deleteById")
public ResultBody deleteById(Integer id){
return userAddressService.deleteById(id);
}
@ApiOperation(value = "根据id查询地址")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = UserAddressDTO.class) })
@ApiIgnore
@GetMapping("getUserAddressInfo")
public UserAddressDTO getUserAddressInfo(@RequestParam Integer userAddressId){
return userAddressService.getUserAddressInfo(userAddressId);
}
@ApiOperation(value = "查询用户地址列表-条件查询")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = UserAddressDTO.class) })
@PostMapping("selectList")
public ResultBody<List<UserAddressDTO>> selectList(@RequestBody UserAddressQO param, HttpServletRequest request) {
return userAddressService.selectList(param, this.getCurrentAccount(request));
}
}
package com.mmc.oms.controller.mall;
import com.mmc.oms.common.publicinterface.Auto;
import com.mmc.oms.common.publicinterface.Confirm;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.controller.BaseController;
import com.mmc.oms.model.vo.mall.OrderPayVO;
import com.mmc.oms.service.mall.MallOrderService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月18日 下午8:09:54
* @explain 类说明
*/
//@Api(tags = { "小程序-订单管理-接口" })
@RestController
@RequestMapping("/amorder/")
public class AMOrderController extends BaseController {
@Autowired
private MallOrderService mallOrderService;
// @ApiOperation(value = "订单列表-查询")
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = MallOrderDTO.class) })
// @GetMapping("listPage")
// public ResultBody listPage(@RequestParam Integer pageNo, @RequestParam Integer pageSize,
// @RequestParam(required = false) String keyword, @RequestParam(required = false) Integer showType,
// @ApiParam(value = "all全部-doing进行中") @RequestParam(required = false) String orderType,
// HttpServletRequest request) {
// return ResultBody.success(mallOrderService.listPage(pageNo, pageSize, keyword, orderType, this.getCurrentAccount(request)));
// }
@ApiOperation(value = "首次付款-上传支付凭证/重新上传支付凭证", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("orderPay")
public ResultBody orderPay(@Validated(value = { Confirm.class }) @RequestBody OrderPayVO param, HttpServletRequest request) {
return mallOrderService.orderPay(param, this.getCurrentAccount(request));
}
@ApiOperation(value = "重新上传尾款与验收凭证(新)", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("afterPayAndCheck")
public ResultBody afterPayAndCheck(@Validated(value = { Confirm.class }) @RequestBody List<OrderPayVO> param, HttpServletRequest request) {
return mallOrderService.afterPayAndCheck(param, this.getCurrentAccount(request));
}
@ApiOperation(value = "继续上传全款、预付款、尾款、验收凭证", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("continuePayAndCheck")
public ResultBody continuePayAndCheck(@Validated(value = { Confirm.class }) @RequestBody List<OrderPayVO> param, HttpServletRequest request) {
return mallOrderService.continuePayAndCheck(param, this.getCurrentAccount(request));
}
@ApiOperation(value = "确认收货", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("confirmReceipt")
public ResultBody confirmReceipt(@Validated(value = { Auto.class }) @RequestBody OrderPayVO param,
HttpServletRequest request) {
return mallOrderService.confirmReceipt(param, this.getCurrentAccount(request));
}
@ApiOperation(value = "取消订单", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@GetMapping("closeOrder")
public ResultBody closeOrder(@RequestParam Long orderId, @RequestParam(required = false) String shutReason,
HttpServletRequest request) {
return mallOrderService.closeOrder(orderId, shutReason, this.getCurrentAccount(request));
}
// @ApiOperation(value = "订单详情")
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = MallOrderDTO.class) })
// @GetMapping("orderDetail")
// public ResultBody orderDetail(@RequestParam Long orderId, HttpServletRequest request) {
// return ResultBody.success(mallOrderService.appOrderDetail(orderId,this.getCurrentAccount(request)));
// }
@ApiOperation(value = "发送服务消息通知", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@GetMapping("sendOrderStatusChangeMsg")
public void sendOrderStatusChangeMsg(@RequestParam Long orderId) {
mallOrderService.sendOrderStatusChangeMsg(orderId);
}
}
package com.mmc.oms.controller.mall;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.controller.BaseController;
import com.mmc.oms.model.dto.mall.CountShowTypeDTO;
import com.mmc.oms.model.dto.mall.MallOrderDTO;
import com.mmc.oms.model.dto.mall.MallOrderPageDTO;
import com.mmc.oms.model.vo.mall.ConfirmMallOrderVO;
import com.mmc.oms.model.vo.mall.MallConfirmOrderVO;
import com.mmc.oms.service.mall.AppMallOrderService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
/**
* @author
*/
@Api(tags = {"小程序-订单管理-接口(改版后)"})
@RestController
@RequestMapping("/app-order/")
public class AppMallOrderController extends BaseController {
@Autowired
private AppMallOrderService appMallOrderService;
@ApiOperation(value = "提交订单(意向)-改版后", hidden = true)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = MallOrderDTO.class)})
@PostMapping("addMallOrder")
public ResultBody addMallOrder(@RequestBody ConfirmMallOrderVO param, HttpServletRequest request) throws Exception {
return appMallOrderService.addMallOrder(param, this.getCurrentAccount(request));
}
@ApiOperation(value = "订单列表-查询", hidden = true)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = MallOrderPageDTO.class)})
@GetMapping("listPage")
public ResultBody listPage(@RequestParam Integer pageNo, @RequestParam Integer pageSize,
@RequestParam(required = false) String keyword, @RequestParam(required = false) Integer showType,
@ApiParam(value = "all全部-doing进行中") @RequestParam(required = false) String orderType,
HttpServletRequest request) {
return ResultBody.success(appMallOrderService.listAPPPage(pageNo, pageSize, keyword, showType, orderType, this.getCurrentAccount(request)));
}
@ApiOperation(value = "订单列表-数量查询", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = CountShowTypeDTO.class) })
@GetMapping("countListPage")
public ResultBody countListPage(HttpServletRequest request) {
return ResultBody.success(appMallOrderService.countListPage(this.getCurrentAccount(request)));
}
@ApiOperation(value = "订单信息--查询订单的分享状态", hidden = true)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@ApiIgnore
@GetMapping("getShareOrderStatus")
public ResultBody getShareOrderStatus(@RequestParam @ApiParam(value = "订单id") Long orderId) {
return appMallOrderService.getShareOrderStatus(orderId);
}
@ApiOperation(value = "订单信息--接受共享", hidden = true)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("acceptShare")
public ResultBody acceptShare(@RequestParam @ApiParam(value = "订单id") Long orderId, @RequestParam @ApiParam(value = "分享人id") Integer shareId) {
return appMallOrderService.acceptShare(orderId,shareId);
}
@ApiOperation(value = "退回合同", hidden = true)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("returnContractById")
public ResultBody returnContractById(@RequestParam @ApiParam(value = "订单id") Long orderId) {
return appMallOrderService.returnContractById(orderId);
}
@ApiOperation(value = "确认订单V1.0.0")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = MallOrderDTO.class)})
@PostMapping("confirmMallOrder")
public ResultBody confirmMallOrder(@RequestBody MallConfirmOrderVO param, HttpServletRequest request) throws Exception {
return appMallOrderService.confirmMallOrder(param, this.getCurrentAccount(request), request.getHeader("token"));
}
@ApiOperation(value = "提交订单V1.0.0")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = MallOrderDTO.class)})
@PostMapping("commitMallOrder")
public ResultBody commitMallOrder(@RequestBody MallConfirmOrderVO param, HttpServletRequest request) throws Exception {
return appMallOrderService.commitMallOrder(param, this.getCurrentAccount(request), request.getHeader("token"));
}
@ApiOperation(value = "订单详情V1.0.0", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = MallOrderDTO.class) })
@GetMapping("getMallOrderDetailById")
public ResultBody getMallOrderDetailById(@RequestParam Long orderId, HttpServletRequest request) {
return ResultBody.success(appMallOrderService.getMallOrderDetailById(orderId,this.getCurrentAccount(request)));
}
}
package com.mmc.oms.controller.mall;
import com.mmc.oms.common.KDNCallBackResponse;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.controller.BaseController;
import com.mmc.oms.model.dto.mall.MallStatusDTO;
import com.mmc.oms.model.dto.mall.OrderPayDTO;
import com.mmc.oms.model.dto.kdn.KdnDicDTO;
import com.mmc.oms.model.dto.order.ExpressInfoDTO;
import com.mmc.oms.service.mall.KdnExpService;
import com.mmc.oms.service.mall.MallOrderService;
import com.mmc.oms.service.mall.OrderExpressService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.Map;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月22日 下午9:02:03
* @explain 类说明
*/
@Api(tags = { "订单信息-接口" })
@RestController
@RequestMapping("/mallorder/")
public class MallOrderController extends BaseController {
@Autowired
private MallOrderService mallOrderService;
@Autowired
private OrderExpressService orderExpressService;
@Autowired
private KdnExpService kdnExpService;
@ApiOperation(value = "订单状态-字典")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = MallStatusDTO.class) })
@GetMapping("")
public ResultBody listOrderStatus() {
return ResultBody.success(mallOrderService.listOrderStatus());
}
@ApiOperation(value = "物流-状态码-字典")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = KdnDicDTO.class) })
@GetMapping("listKdnDic")
public ResultBody listKdnDic() {
return ResultBody.success(kdnExpService.listKdnDic());
}
@ApiOperation(value = "物流公司-字典")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ExpressInfoDTO.class) })
@GetMapping("listExpressInfo")
public ResultBody listExpressInfo() {
return ResultBody.success(orderExpressService.listExpressInfo());
}
@ApiOperation(value = "订单-查看支付凭证", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = OrderPayDTO.class) })
@GetMapping("getOrderPay")
public ResultBody getOrderPay(@RequestParam Long orderId, @ApiParam("凭证类型(留空则全部):0全款 1预付款 2尾款 3验收单") @RequestParam(required = false) Integer payType, HttpServletRequest request) {
return ResultBody.success(mallOrderService.listOrderPayInfo(orderId, payType, this.getCurrentAccount(request)));
}
@ApiOperation(value = "修改订单的付款期限", hidden = true)
@GetMapping("updateMallOrder")
@ApiIgnore
public ResultBody updateMallOrder(@RequestParam Long orderId, @RequestParam Date singerTime){
return mallOrderService.updateMallOrder(orderId,singerTime);
}
@ApiOperation(value = "修改订单的合同状态", hidden = true)
@GetMapping("updateStatusMallOrder")
public ResultBody updateStatusMallOrder(@RequestParam Long orderId, @RequestParam Integer signStatus){
return mallOrderService.updateStatusMallOrder(orderId,signStatus);
}
@ApiOperation(value = "物流信息回调接收", hidden = true)
@PostMapping("callbackExpressInfo")
public KDNCallBackResponse callbackExpressInfo(@RequestParam Map<String, Object> map){
return kdnExpService.callbackExpressInfo(map);
}
@ApiOperation(value = "测试物流订阅", hidden = true)
@GetMapping("testCallbackExpressInfo")
public ResultBody testCallbackExpressInfo(@RequestParam String port, @RequestParam Long orderId, @RequestParam String shipperCode,
@RequestParam String logisticCode, @RequestParam String phone) throws Exception {
return kdnExpService.testCallbackExpressInfo(port, orderId, shipperCode, logisticCode, phone);
}
}
package com.mmc.oms.controller.mall;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.controller.BaseController;
import com.mmc.oms.service.mall.MallOrderService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月18日 下午8:08:01
* @explain 类说明
*/
@Api(tags = { "平台-订单管理-接口" }, hidden = true)
@RestController
@RequestMapping("/pmorder/")
public class PMOrderController extends BaseController {
@Autowired
private MallOrderService mallOrderService;
// @ApiOperation(value = "(新)确认订单")
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
// @PostMapping("confirmOrderVerOne")
// public ResultBody confirmOrderVerOne(@RequestBody ConfirmOrderVO confirmOrderVO, HttpServletRequest request) {
// return mallOrderService.confirmOrderVerOne(confirmOrderVO, this.getCurrentAccount(request));
// }
// @ApiOperation(value = "审批-首次收款(通过或不通过)")
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
// @GetMapping("confirmCost")
// public ResultBody confirmCost(@ApiParam(value = "订单id") @RequestParam Long orderId,
// @ApiParam(value = "审核状态:0拒绝/1通过") @RequestParam Integer checkStatus,
// @ApiParam(value = "驳回原因") @RequestParam(required = false) String refuseReason,
// @ApiParam(value = "支付凭证-图片") @RequestParam(required = false) List<String> vouchr,
// HttpServletRequest request) {
// return mallOrderService.confirmCost(orderId, checkStatus, refuseReason,vouchr,null,this.getCurrentAccount(request));
// }
// @ApiOperation(value = "审批-尾款(通过或不通过)")
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
// @GetMapping("confirmAfPay")
// public ResultBody confirmAfPay(@ApiParam(value = "订单id") @RequestParam Long orderId,
// @ApiParam(value = "审核状态:0拒绝/1通过") @RequestParam Integer checkStatus,
// @ApiParam(value = "驳回原因") @RequestParam(required = false) String refuseReason,
// @ApiParam(value = "支付凭证-图片") @RequestParam(required = false) List<String> vouchr,
// HttpServletRequest request) {
// return mallOrderService.confirmAfPay(orderId, checkStatus, refuseReason,vouchr,2, this.getCurrentAccount(request));
// }
// @ApiOperation(value = "审批-首次收款(通过或不通过)[新]")
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
// @PostMapping("confirmCostVerOne")
// public ResultBody confirmCostVerOne(@RequestBody @Validated ConfirmAfPayVO confirmPay, HttpServletRequest request) {
// return mallOrderService.confirmCostVerOne(confirmPay,this.getCurrentAccount(request));
// }
//
// @ApiOperation(value = "审批-尾款(通过或不通过)[新]")
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
// @PostMapping("confirmAfPayVerOne")
// public ResultBody confirmAfPayVerOne(@RequestBody @Validated List<ConfirmAfPayVO> confirmPay, HttpServletRequest request) {
// if(CollectionUtils.isEmpty(confirmPay)){
// return ResultBody.error("参数不能为空");
// }
// for (ConfirmAfPayVO confirmAfPay : confirmPay) {
// mallOrderService.confirmAfPayVerOne(confirmAfPay, this.getCurrentAccount(request));
// }
// return ResultBody.success();
// }
@ApiOperation(value = "确认库存", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@GetMapping("confirmInventory")
public ResultBody confirmInventory(@RequestParam Long orderId, HttpServletRequest request) {
return mallOrderService.confirmInventory(orderId, this.getCurrentAccount(request));
}
// @ApiOperation(value = "代工-上传尾款凭证")
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
// @PostMapping("orderPayFinish")
// public ResultBody orderPayFinish(@Validated(value = { Confirm.class }) @RequestBody OrderPayVO param,
// HttpServletRequest request) {
// return mallOrderService.orderPayFinish(param, this.getCurrentAccount(request));
// }
// @ApiOperation(value = "菜单红点-待处理的订单数量")
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
// @GetMapping("countMenuRedPoint")
// public ResultBody countMenuRedPoint(HttpServletRequest request) {
// return ResultBody.success(mallOrderService.countMenuRedPoint(this.getCurrentAccount(request)));
// }
// @ApiOperation(value = "订单关闭-根据id")
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
// @GetMapping("deleteById")
// public ResultBody closeMallOrder(@RequestParam Long id, HttpServletRequest request) {
// return mallOrderService.closeMallOrder(id,this.getCurrentAccount(request));
// }
// @ApiOperation(value = "分配运营")
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
// @GetMapping("allocateOperation")
// public ResultBody allocateOperation(@ApiParam(value = "订单id")@RequestParam(value = "orderId") Long orderId,
// @ApiParam(value = "运营id") @RequestParam(value = "operationId") Integer operationId) {
// return mallOrderService.allocateOperation(orderId,operationId);
// }
}
package com.mmc.oms.controller.mall;
import com.mmc.oms.common.publicinterface.Confirm;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.controller.BaseController;
import com.mmc.oms.model.dto.mall.MallOrderDTO;
import com.mmc.oms.model.dto.mall.MallOrderPageDTO;
import com.mmc.oms.model.qo.mall.MallOrderQO;
import com.mmc.oms.model.vo.mall.ConfirmAfPayVO;
import com.mmc.oms.model.vo.mall.ConfirmOrderNewVO;
import com.mmc.oms.model.vo.mall.MallOrderExpressVO;
import com.mmc.oms.model.vo.mall.OrderPayVO;
import com.mmc.oms.service.mall.MallOrderService;
import com.mmc.oms.service.mall.MallOrderServiceSub;
import com.mmc.oms.service.mall.OrderExpressService;
import io.swagger.annotations.*;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.ibatis.annotations.Update;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@Api(tags = { "平台-订单管理-接口(改版后)" })
@RestController
@RequestMapping("/pmorderVerOne/")
public class PMOrderControllerVerOne extends BaseController {
@Autowired
private MallOrderService mallOrderService;
@Autowired
private OrderExpressService orderExpressService;
@Autowired
private MallOrderServiceSub mallOrderServiceSub;
@ApiOperation(value = "订单管理-分页查询(改版后)")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = MallOrderPageDTO.class) })
@PostMapping("listPageManagerVerOne")
public ResultBody listPageManagerVerOne(@RequestBody MallOrderQO param, HttpServletRequest request) {
return ResultBody.success(mallOrderService.listPageManagerVerOne(param, this.getCurrentAccount(request)));
}
@ApiOperation(value = "订单管理-导出(改版后)", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("listPageManagerExportVerOne")
public void listPageManagerExportVerOne(@RequestBody MallOrderQO param, HttpServletResponse response, HttpServletRequest request) {
mallOrderService.listPageManagerExportVerOne(param,response,this.getCurrentAccount(request));
}
@ApiOperation(value = "v1.0.0订单管理-详情(改版后)")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = MallOrderDTO.class) })
@GetMapping("getMallOrderDetailById")
public ResultBody getMallOrderDetailById(@RequestParam Long orderId, HttpServletRequest request) {
return ResultBody.success(mallOrderService.getMallOrderDetailById(orderId,this.getCurrentAccount(request), request.getHeader("token")));
}
// @ApiOperation(value = "订单管理-确认订单的详情", hidden = true)
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = MallOrderDTO.class) })
// @GetMapping("getAffirmMallOrderDetailById")
// public ResultBody getAffirmMallOrderDetailById(@RequestParam Long orderId, HttpServletRequest request) {
// MallOrderDTO mallOrderDTO = mallOrderService.getMallOrderDetailById(orderId, this.getCurrentAccount(request));
// //mallOrderDTO = mallOrderService.moneyCalculate(mallOrderDTO);
// return ResultBody.success(mallOrderDTO);
// }
@ApiOperation(value = "订单管理-修改订单备注(管理员专属)", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@GetMapping("updateMallOrderRemark")
public ResultBody updateMallOrderRemark(@RequestParam Long orderId, @RequestParam(required = false) String remark, HttpServletRequest request) {
return mallOrderService.updateMallOrderRemark(orderId, remark);
}
@ApiOperation(value = "确认订单(改版后)", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("confirmOrderNew")
public ResultBody confirmOrderNew(@Validated(Update.class) @RequestBody ConfirmOrderNewVO confirmOrderNewVO, HttpServletRequest request) {
return mallOrderService.confirmOrderNew(confirmOrderNewVO, this.getCurrentAccount(request));
}
@ApiOperation(value = "订单发货(改版后)", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("sendOrderGoodsNew")
public ResultBody sendOrderGoodsNew(@RequestBody MallOrderExpressVO param, HttpServletRequest request) throws Exception {
return mallOrderService.sendOrderGoodsNew(param, this.getCurrentAccount(request));
}
@ApiOperation(value = "批量生产导出数据", hidden = true)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("/exportMultiSheet")
public void exportMultiSheet(HttpServletResponse response, @ApiParam("订单id") @RequestBody List<Long> orderIds) throws IOException {
mallOrderService.exportMultiSheet(response,orderIds);
}
@ApiOperation(value = "订单管理-运营数据导出", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("listOperationalDataExport")
public void listOperationalDataExport(@RequestBody MallOrderQO param, HttpServletResponse response, HttpServletRequest request) throws IOException {
mallOrderService.listOperationalDataExport(param,response,this.getCurrentAccount(request));
}
@ApiOperation(value = "订单管理-运营数据导出(改版后)", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("operationalDataExport")
public void operationalDataExport(@ApiParam("订单id") @RequestBody List<Long> orderIds, HttpServletResponse response, HttpServletRequest request) throws IOException {
mallOrderService.operationalDataExport(orderIds,response,this.getCurrentAccount(request));
}
@ApiOperation(value = "修改订单物流信息", hidden = true)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("updateOrderExpress")
public ResultBody updateOrderExpress(@ApiParam("物流信息") @RequestBody MallOrderExpressVO orderExpressVO){
return orderExpressService.updateOrderExpress(orderExpressVO);
}
@ApiOperation(value = "逾期未打款合同作废", hidden = true)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("mallOrderCreditPeriodTask")
@ApiIgnore
public void mallOrderCreditPeriodTask(){
mallOrderService.mallOrderCreditPeriodTask();
}
@ApiOperation(value = "轮询检测签收但没有确认收货的订单(自动完成)", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@GetMapping("feignAutoCompleteMOrder")
@ApiIgnore
public ResultBody feignAutoCompleteMOrder() {
return mallOrderServiceSub.feignAutoCompleteMOrder();
}
@ApiOperation(value = "根据订单id查询 已经支付和未支付的订单", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@GetMapping("feignOrderUseCoupon")
@ApiIgnore
public ResultBody feignOrderUseCoupon(@RequestParam List<Long> orderId){
return mallOrderService.feignOrderUseCoupon(orderId);
}
@ApiOperation(value = "根据订单编号查询订单", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = MallOrderPageDTO.class) })
@GetMapping("getOrderInfoByOrderNo")
public ResultBody getOrderInfoByOrderNo(@RequestParam String orderNo){
return mallOrderService.getOrderInfoByOrderNo(orderNo);
}
@ApiOperation(value = "分配运营", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@GetMapping("allocateOperation")
public ResultBody allocateOperation(@ApiParam(value = "订单id")@RequestParam(value = "orderId") Long orderId,
@ApiParam(value = "运营id") @RequestParam(value = "operationId") Integer operationId) {
return mallOrderService.allocateOperation(orderId,operationId);
}
@ApiOperation(value = "订单关闭-根据id", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@GetMapping("deleteById")
public ResultBody closeMallOrder(@RequestParam Long id, HttpServletRequest request) {
return mallOrderService.closeMallOrder(id,this.getCurrentAccount(request));
}
@ApiOperation(value = "菜单红点-待处理的订单数量", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@GetMapping("countMenuRedPoint")
public ResultBody countMenuRedPoint(HttpServletRequest request) {
return ResultBody.success(mallOrderService.countMenuRedPoint(this.getCurrentAccount(request)));
}
@ApiOperation(value = "代工-上传尾款凭证", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("orderPayFinish")
public ResultBody orderPayFinish(@Validated(value = { Confirm.class }) @RequestBody OrderPayVO param,
HttpServletRequest request) {
return mallOrderService.orderPayFinish(param, this.getCurrentAccount(request));
}
@ApiOperation(value = "审批-首次收款(通过或不通过)[新]", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("confirmCostVerOne")
public ResultBody confirmCostVerOne(@RequestBody @Validated ConfirmAfPayVO confirmPay, HttpServletRequest request) {
return mallOrderService.confirmCostVerOne(confirmPay,this.getCurrentAccount(request));
}
@ApiOperation(value = "审批-尾款(通过或不通过)[新]", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("confirmAfPayVerOne")
public ResultBody confirmAfPayVerOne(@RequestBody @Validated List<ConfirmAfPayVO> confirmPay, HttpServletRequest request) {
if(CollectionUtils.isEmpty(confirmPay)){
return ResultBody.error("参数不能为空");
}
for (ConfirmAfPayVO confirmAfPay : confirmPay) {
mallOrderService.confirmAfPayVerOne(confirmAfPay, this.getCurrentAccount(request));
}
return ResultBody.success();
}
}
package com.mmc.oms.controller.mall;
import com.mmc.oms.common.publicinterface.Query;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.controller.BaseController;
import com.mmc.oms.model.dto.mall.MallGoodsShopCarDTO;
import com.mmc.oms.model.vo.mall.ConfirmMallOrderVO;
import com.mmc.oms.model.vo.mall.MallShopCarVO;
import com.mmc.oms.service.mall.ShoppingTrolleyService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* author:zhenjie
* Date:2022/10/11
* time:10:21
*/
//@Api(tags = { "小程序-购物车-接口(改版后)" })
@RestController
@RequestMapping("/shopping-trolley/")
public class ShoppingTrolleyController extends BaseController {
@Autowired
private ShoppingTrolleyService shoppingTrolleyService;
@ApiOperation(value = "加入购物车", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("addGoods")
public ResultBody addGoods(@RequestBody MallShopCarVO mallShopCarVO, HttpServletRequest request){
return shoppingTrolleyService.addGoods(mallShopCarVO, this.getCurrentAccount(request));
}
@ApiOperation(value = "移除购物车", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("batchRemove/{type}")
public ResultBody batchRemove(@RequestBody List<Integer> carIds, @PathVariable Integer type, HttpServletRequest request) {
return shoppingTrolleyService.batchRemove(type, carIds, this.getCurrentAccount(request));
}
@ApiOperation(value = "购物车列表", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = MallGoodsShopCarDTO.class) })
@GetMapping("listPage")
public ResultBody listPage(@RequestParam Integer pageNo, @RequestParam Integer pageSize,
HttpServletRequest request) {
return shoppingTrolleyService.listPage(pageNo, pageSize, this.getCurrentAccount(request));
}
@ApiOperation(value = "修改数量", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@GetMapping("updateBuyNum")
public ResultBody updateBuyNum(@RequestParam(required = true) Integer directoryId, @RequestParam(required = true) Integer mallShopCarId,
@ApiParam("改变的数量(正加负减)") @RequestParam(required = true) Integer buyNum, HttpServletRequest request) {
return shoppingTrolleyService.updateBuyNum(directoryId, mallShopCarId, buyNum, this.getCurrentAccount(request));
}
@ApiOperation(value = "购物车-提交订单-批量获取商品信息", hidden = true)
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("confirmOrder")
public ResultBody confirmOrder(@Validated(Query.class) @RequestBody ConfirmMallOrderVO param, HttpServletRequest request) {
return shoppingTrolleyService.confirmShop(param, this.getCurrentAccount(request));
}
// @ApiOperation(value = "购物车导出")
// @ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
// @PostMapping("listShoppingTrolleyExport")
// public ResultBody listShoppingTrolleyExport(@Validated(Query.class) @RequestBody List<ConfirmShopVO> shopCarList, HttpServletRequest request, HttpServletResponse response) throws IOException {
// return shoppingTrolleyService.listShoppingTrolleyExport(shopCarList, this.getCurrentAccount(request), response);
// }
}
package com.mmc.oms.dao;
import com.mmc.oms.entity.mall.UserAddressDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @author: zj
* @Date: 2023/6/7 10:14
*/
@Mapper
public interface UserAddressDao {
void insert(UserAddressDO userAddressDO);
void update(UserAddressDO userAddressDO);
void removeById(Integer id);
UserAddressDO selectById(Integer userAddressId);
List<UserAddressDO> selectList(UserAddressDO userAddressDO);
}
package com.mmc.oms.dao.mall;
import com.mmc.oms.entity.mall.*;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* author:zhenjie
* Date:2022/10/18
* time:16:06
*/
@Mapper
public interface AppMallOrderDao {
void batchInsertOrderGoodsProdDO(List<OrderGoodsProdDO> orderGoodsProdDOS);
void batchInsertOrderGoodsProdDetailDO(List<OrderGoodsProdDetailDO> orderGoodsProdDetailDOList);
void batchInsertOrderGoodsIndstDO(List<OrderGoodsIndstDO> orderGoodsIndstDOS);
void batchInsertOrderGoodsIndstDetailDO(List<OrderGoodsIndstDetailDO> orderGoodsIndstDetailDOS);
void batchInsertOrderGoodsIndstProdListDO(List<OrderGoodsIndstProdListDO> orderGoodsIndstProdListDOS);
List<MallOrderSimpleDO> listMallOrderSkuSpec(List<Long> orderIds);
void updateOrderShareInfo(Long orderId, Integer shareId);
void batchInsertOrderCoupon(List<OrderCouponDO> orderCouponDOS);
List<OrderCouponDO> listOrderCoupon(Long orderId);
}
package com.mmc.oms.dao.mall;
import com.mmc.oms.entity.mall.*;
import com.mmc.oms.model.qo.mall.MallOrderQO;
import com.mmc.oms.model.qo.mall.OrderBonusQO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月20日 上午12:10:00
* @explain 类说明
*/
@Mapper
public interface MallOrderDao {
int insertMallOrder(MallOrderDO order);
// int batchInsertOrderGoods(List<OrderGoodsDO> list);
int countPageAmOrder(String keyword, String orderType, Integer userAccountId);
List<MallOrderDO> listPageAmOrder(Integer pageNo, Integer pageSize, String keyword, String orderType,
Integer userAccountId);
int countAppPageOrder(String keyword, String orderType, List<Integer> statusCodes, Integer userAccountId);
List<MallOrderDO> listAppPageAmOrder(Integer pageNo, Integer pageSize, String keyword, String orderType,
List<Integer> statusCodes, Integer userAccountId);
// List<OrderGoodsDO> listOrderGoods(List<Long> orderIds);
//
// List<OrderGoodsDO> listOrderGoodsInfo(Long orderId);
MallOrderDO getMallOrderInfo(Long orderId);
/**
* 获取订单付款期限,和状态(未付款)
* @param orderId
*/
List<MallOrderDO> getMallOrderCreditPeriod(List<Long> orderId);
Integer updateMallOrder(MallOrderDO order);
int insertOrderPay(OrderPayDO pay);
int updateOrderPay(OrderPayDO pay);
OrderPayDO getOrderPayInfo(Long orderId, Integer payType);
List<MallOrderStatusDO> listOrderStatus();
int insertOrderExpress(MallOrderExpressDO express);
MallOrderExpressDO getOrderExpress(Long orderId);
int countPagePmOrder(MallOrderQO param);
List<MallOrderDO> listPagePmOrder(MallOrderQO param);
int batchInsertOrderService(List<OrderServiceDO> list);
List<OrderServiceDO> listOrderService(Long orderId);
List<OrderPayDO> listOrderPay(Long orderId, Integer payType);
int countPMOrderConfirm(Integer statusCode);
String getSysOrderParam(String paramType);
List<MallOrderDO> listExportOrder(MallOrderQO param);
Integer deleteById(Integer id);
List<MallOrderDO> listPagePmOrderVerOne(MallOrderQO param);
int countPagePmOrderVerOne(MallOrderQO param);
List<MallOrderDO> listExportOrderVerOne(MallOrderQO param);
Integer updateMallOrderAddreId(@Param("mallOrderId") Long mallOrderId, @Param("userAddressId") Integer userAddressId);
void updateMallOrderRemark(Long mallOrderId, String remark);
/**
* 商城订单列表
*
* @param orderIds 订单id
* @return {@link List}<{@link MallOrderDO}>
*/
List<MallOrderDO> listMallOrder(List<Long> orderIds);
List<MallOrderDO> getMallOrderByStatus(@Param("code") Integer code);
void saveOrderPay(OrderPayDO upPay);
Integer countOrderForCouponUse(@Param("orderIds") List<Long> orderIds, Integer orderStatus);
MallOrderDO getOrderInfoByOrderNo(String orderNo);
int rollbackMallOrder(MallOrderDO order);
List<MallOrderDO> listFinishMallOrder(OrderBonusQO orderBonusQO);
int countListFinishMallOrder(OrderBonusQO orderBonusQO);
int countPageOrderInfo(List<Long> orderIds);
List<MallOrderDO> listOperationalExportOrder(List<Long> orderIds);
}
package com.mmc.oms.dao.mall;
import com.mmc.oms.entity.mall.MallOrderExpressDO;
import com.mmc.oms.entity.order.ExpressInfoDO;
import com.mmc.oms.entity.order.KdnDicDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月23日 下午5:48:40
* @explain 类说明
*/
@Mapper
public interface OrderExpressDao {
List<KdnDicDO> listKdnDic();
List<ExpressInfoDO> listExpressInfo();
void updateOrderExpress(MallOrderExpressDO orderExpressDO);
List<Long> listReceivedOrderIds();
}
package com.mmc.oms.dao.mall;
import com.mmc.oms.entity.mall.MallOrderSimpleDO;
import com.mmc.oms.entity.mall.OrderGoodsIndstProdListBO;
import com.mmc.oms.entity.mall.OrderGoodsIndstProdListDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author dahang
* @since 2022-10-29
*/
@Mapper
public interface OrderGoodsIndstDao {
List<OrderGoodsIndstProdListBO> getProductInfoByMallId(@Param("orderId") Long orderId);
List<MallOrderSimpleDO> listOrderGoodsIndstBaseInfo(List<Long> mallOrderIds);
List<OrderGoodsIndstProdListDO> listIMallOrderProdList(Long orderId);
}
package com.mmc.oms.dao.mall;
import com.mmc.oms.entity.mall.MallOrderSimpleDO;
import com.mmc.oms.entity.mall.OrderGoodsProdDetailBO;
import com.mmc.oms.entity.mall.OrderGoodsProdDetailDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author dahang
* @since 2022-10-29
*/
@Mapper
public interface OrderGoodsProdDao {
List<OrderGoodsProdDetailBO> getProductInfoByMallId(@Param("orderId") Long orderId);
List<MallOrderSimpleDO> listOrderGoodsProdBaseInfo(List<Long> mallOrderIds);
List<OrderGoodsProdDetailDO> listPMallOrderProdList(Long orderId);
}
package com.mmc.oms.dao.mall;
import com.mmc.oms.entity.mall.MallIndstShopCarDO;
import com.mmc.oms.entity.mall.MallProdShopCarDO;
import com.mmc.oms.model.qo.mall.MallShopCarQO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Set;
/**
* author:zhenjie
* Date:2022/10/11
* time:10:30
*/
@Mapper
public interface ShoppingTrolleyDao {
List<MallProdShopCarDO> listMallProdShopCar(MallShopCarQO mallShopCarQO);
void insertMallProdShopCar(MallProdShopCarDO mallProdShopCarDO);
void batchInsertMallProdShopCarDetail(Integer mallProdShopCarId, Set<Integer> mallSkuSpecIds);
void batchRemoveProd(Integer userAccountId, List<Integer> carIds);
MallProdShopCarDO getMallProdShopCar(MallProdShopCarDO prodShopCarDO);
void updateMallProdShopCar(MallProdShopCarDO mallProdShopCarDO1);
List<MallIndstShopCarDO> listMallIndstShopCar(MallShopCarQO mallShopCarQO);
void insertMallIndstShopCar(MallIndstShopCarDO mallIndstShopCarDO);
void batchInsertMallIndstShopCarDetail(Integer mallIndstShopCarId, Set<Integer> mallSkuSpecIds);
void batchRemoveIndst(Integer userAccountId, List<Integer> carIds);
MallIndstShopCarDO getMallIndstShopCar(MallIndstShopCarDO mallIndstShopCarDO);
void updateMallIndstShopCar(MallIndstShopCarDO mallIndstShopCarDO1);
int countProdListPage(Integer userAccountId);
List<MallProdShopCarDO> prodListPage(Integer pageNo, Integer pageSize, Integer userAccountId);
int countIndstListPage(Integer userAccountId);
List<MallIndstShopCarDO> indstListPage(Integer pageNo, Integer pageSize, Integer userAccountId);
void updateProductShopCarStatus(List<MallProdShopCarDO> mallProdShopCarDOS);
void updateIndustryShopCarStatus(List<MallIndstShopCarDO> mallIndstShopCarDOS);
void addProdShopCarBuyNum(Integer id, Integer buyNum);
void addIndstShopCarBuyNum(Integer id, Integer buyNum);
}
......@@ -63,7 +63,7 @@ public class GoodsInfoDO implements Serializable {
// private GoodsTypeDO goodsMasterType;
// private GoodsTypeDO goodsSlaveType;
private String remark;// 底部备注
private Integer sortTypeId;
private Integer directoryId;
private List<CategoryParamAndValueVO> paramAndValue;
// private GoodsConfigExportDO goodsConfigExport;// 功能清单
private Integer buyNum;// 购买数量
......@@ -91,7 +91,7 @@ public class GoodsInfoDO implements Serializable {
this.shelfStatus = goodsAddVO.getShelfStatus();
this.masterTypeId = goodsAddVO.getMasterTypeId();
this.slaveTypeId = goodsAddVO.getSlaveTypeId();
this.sortTypeId = goodsAddVO.getSortTypeId();
this.directoryId = goodsAddVO.getDirectoryId();
this.repoId = goodsAddVO.getRepoId();
this.shareFlyServiceId = goodsAddVO.getShareFlyServiceId();
this.tag = goodsAddVO.getTag();
......@@ -103,7 +103,7 @@ public class GoodsInfoDO implements Serializable {
.status(this.shelfStatus)
.createTime(this.createTime)
.imgUrl(this.mainImg)
.directoryId(this.sortTypeId)
.directoryId(this.directoryId)
.directoryName(this.directoryName)
.build();
}
......
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.MallGoodsShopCarDTO;
import com.mmc.oms.model.vo.mall.MallShopCarVO;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: zj
* @Date: 2023/6/3 20:14
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("购物车-行业商品")
public class MallIndstShopCarDO implements Serializable {
private static final long serialVersionUID = -6119563034611575618L;
private Integer id;
private Integer userAccountId;
private Integer goodsInfoId;
private Integer buyNum;
private Integer saleStatus;
private Integer recMallUserId;
private String remark;
private Integer deleted;
private Date createTime;
private Date updateTime;
private List<MallIndstShopCarDetailDO> shopCarDetailDOS;
public MallIndstShopCarDO(MallShopCarVO param) {
this.userAccountId = param.getUserAccountId();
this.goodsInfoId = param.getGoodsInfoId();
this.buyNum = param.getBuyNum();
this.recMallUserId = param.getRecMallUserId();
this.remark = param.getRemark();
}
public MallGoodsShopCarDTO buildMallGoodsShopCarDTO(){
return MallGoodsShopCarDTO.builder().id(this.id).userAccountId(this.userAccountId).goodsInfoId(this.goodsInfoId).buyNum(this.buyNum).directoryId(2)
.saleStatus(this.saleStatus).recMallUserId(this.recMallUserId).remark(this.remark).deleted(this.deleted).createTime(this.createTime)
.skuList(this.shopCarDetailDOS.stream().map(d->{ return d.buildMallSkuInfoSpecDTO();}).collect(Collectors.toList()))
.build();
}
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.MallSkuInfoSpecDTO;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/6/3 20:14
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("购物车商品-行业商品规格")
public class MallIndstShopCarDetailDO implements Serializable {
private static final long serialVersionUID = -5146125854076395759L;
private Integer id;
private Integer mallIndstShopCarId;
private Integer mallIndstSkuInfoSpecId;
public MallSkuInfoSpecDTO buildMallSkuInfoSpecDTO(){
return MallSkuInfoSpecDTO.builder().id(this.id).mallSkuInfoSpecId(this.mallIndstSkuInfoSpecId).build();
}
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.order.OrderCouponDTO;
import com.mmc.oms.model.vo.coupon.CouponUserVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/6/2 20:50
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MallOrderCouponDO implements Serializable {
private static final long serialVersionUID = 6061360771588791673L;
private Integer id;
private Long orderId;
private Integer couponUserId;
private Integer couponType;
private Integer useType;
private BigDecimal useAmount;
private Date createTime;
public OrderCouponDTO buildOrderCouponDTO(){
return OrderCouponDTO.builder().id(this.id).orderId(this.orderId).couponUserId(this.couponUserId).couponType(this.couponType).useType(this.useType).useAmount(this.useAmount)
.createTime(this.createTime).couponName(buildCouponName(this.useType, this.couponType)).build();
}
private String buildCouponName(Integer useType, Integer couponType){
if (useType == 1){
return "VIP";
}else if (useType == 2){
if (couponType == 1){
return "打折";
} else if (couponType == 2) {
return "减免";
} else if (couponType == 3) {
return "无门槛";
}
}
return "";
}
public MallOrderCouponDO(CouponUserVO couponUserVO){
this.orderId = couponUserVO.getCid();
this.couponUserId = couponUserVO.getId();
this.couponType = couponUserVO.getCouponType();
this.useType = couponUserVO.getUseType();
this.useAmount = couponUserVO.getUseAmount();
}
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.MallOrderDTO;
import com.mmc.oms.model.dto.mall.MallOrderFinishDTO;
import com.mmc.oms.model.dto.mall.MallOrderPageDTO;
import com.mmc.oms.model.dto.mall.UserAddressDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/6/2 20:50
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("商城订单")
public class MallOrderDO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("pid")
private Integer pid;
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("状态码")
private Integer statusCode;
@ApiModelProperty("user_account_id")
private Integer userAccountId;
@ApiModelProperty("买家uid")
private String uid;
@ApiModelProperty("买家姓名")
private String userName;
@ApiModelProperty("买家手机号")
private String phoneNum;
@ApiModelProperty("0全款购买 1分期付款")
private Integer payMethod;
@ApiModelProperty("订单关闭原因")
private String shutReason;
@ApiModelProperty("update_time")
private Date updateTime;
@ApiModelProperty("create_time")
private Date createTime;
@ApiModelProperty("推荐人id")
private Integer recMallUserId;
@ApiModelProperty("推荐人")
private String recMallUserName;
@ApiModelProperty("推荐人订单金额")
private BigDecimal rcdOrderAmount;
@ApiModelProperty("用户收货地址id")
private Integer userAddressId;
@ApiModelProperty("订单交期")
private Date deliveryTime;
@ApiModelProperty("订单期限")
private Date creditPeriod;
@ApiModelProperty("订单金额")
private BigDecimal orderAmount;
@ApiModelProperty("运营id")
private Integer operationId;
@ApiModelProperty("合同编号")
private String contractNo;
@ApiModelProperty(value = "收货信息")
private UserAddressDTO userAddress;
@ApiModelProperty("合同状态状态:状态:(0:等待用户签署、1:用户签署失败、2:等待甲方签署(用户签署成功) 3:用户签署失败、4:甲方签署成功、5:已完成")
private Integer signStatus;
@ApiModelProperty(value = "合同签署方式,1:线上,0:线下")
private Integer contractSignedWay;
@ApiModelProperty(value = "付款期限-天数")
private Integer creditPeriodDays;
@ApiModelProperty(value = "运营人员")
private String operationName;
@ApiModelProperty(value = "标品的备注,字符不超过600")
private String remark;
@ApiModelProperty(value = "管理员专用备注")
private String mRemark;
@ApiModelProperty(value = "销售名称")
private String saleName;
@ApiModelProperty(value = "销售id")
private Integer saleId;
@ApiModelProperty("减免金额")
private BigDecimal deductAmount;
@ApiModelProperty("优惠金额")
private BigDecimal discountAmount;
@ApiModelProperty("实付金额")
private BigDecimal realityAmount;
@ApiModelProperty("优惠券折扣金额")
private BigDecimal couponDiscountAmount;
@ApiModelProperty("手填折扣金额")
private BigDecimal manualDiscountAmount;
@ApiModelProperty(value = "共享人id")
private Integer shareId;
@ApiModelProperty(value = "共享状态 0是起始状态 100接受共享中 200已共享 300其他状态")
private Integer shareStatus;
@ApiModelProperty(value = "订单分成状态,0未分成,1已分成")
private Integer divide;
public MallOrderDTO buildMallOrderDTO() {
return MallOrderDTO.builder().id(id).orderNo(orderNo).statusCode(statusCode).createTime(createTime).uid(uid).userAccountId(userAccountId)
.userName(userName).phoneNum(phoneNum).shutReason(shutReason).payMethod(payMethod).recMallUserName(recMallUserName).
deliveryTime(deliveryTime).creditPeriod(creditPeriod).orderAmount(orderAmount).userAddress(userAddress).contractNo(contractNo)
.operationId(operationId).signStatus(signStatus).deliveryTime(deliveryTime).userAddressId(userAddressId).
contractSignedWay(contractSignedWay).operationName(operationName).remark(remark).mRemark(mRemark)
.deductAmount(deductAmount).discountAmount(discountAmount).realityAmount(realityAmount).shareStatus(shareStatus).shareId(shareId).couponDiscountAmount(this.couponDiscountAmount)
.manualDiscountAmount(this.manualDiscountAmount).build();
}
public MallOrderPageDTO buildMallOrderPageDTO() {
return MallOrderPageDTO.builder().id(id).orderNo(orderNo).statusCode(statusCode).createTime(createTime).userAccountId(this.userAccountId).uid(uid).userName(userName)
.phoneNum(phoneNum).payMethod(payMethod).recMallUserName(recMallUserName).deliveryTime(deliveryTime).orderAmount(orderAmount).contractNo(contractNo)
.contractSignedWay(contractSignedWay).operationId(this.operationId).signStatus(signStatus).deliveryTime(deliveryTime).operationName(operationName)
.remark(this.remark).creditPeriod(creditPeriod).mRemark(mRemark).saleId(saleId).saleName(saleName).shareId(shareId).shareStatus(shareStatus)
.deductAmount(deductAmount).discountAmount(discountAmount).realityAmount(realityAmount).shutReason(this.shutReason).build();
}
public MallOrderFinishDTO buildMallOrderFinishDTO(){
return MallOrderFinishDTO.builder().orderId(this.id).orderNo(this.orderNo).realityAmount(this.getRealityAmount()).divide(this.divide).userAccountId(this.userAccountId).uid(this.uid)
.userName(this.userName).build();
}
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.MallOrderExpressDTO;
import com.mmc.oms.model.dto.mall.UserAddressDTO;
import com.mmc.oms.model.vo.mall.MallOrderExpressVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/6/2 20:29
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MallOrderExpressDO implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Long orderId;
private String sendExpNo;
private String sendExpCode;
private String takeName;
private String takePhone;
private String takeRegion;
private String takeAddress;
private Date receiveTime;
private Integer receive;
private Date updateTime;
private Date createTime;
public MallOrderExpressDO(MallOrderExpressVO param) {
this.orderId=param.getOrderId();
this.sendExpCode=param.getSendExpCode();
this.sendExpNo=param.getSendExpNo();
this.takeName = param.getTakeName();
this.takePhone = param.getTakePhone();
this.takeRegion = param.getTakeRegion();
this.takeAddress = param.getTakeAddress();
this.receiveTime = param.getReceiveTime();
this.receive = param.getReceive();
}
public MallOrderExpressDO(UserAddressDTO param) {
this.takeName = param.getTakeName();
this.takePhone = param.getTakePhone();
this.takeRegion = param.getTakeRegion();
this.takeAddress = param.getTakeAddress();
}
public MallOrderExpressDTO buildOrderExpressDTO() {
return MallOrderExpressDTO.builder().orderId(orderId).sendExpNo(sendExpNo).sendExpCode(sendExpCode)
.takeName(takeName).takePhone(takePhone).takeRegion(takeRegion).takeAddress(takeAddress).build();
}
}
package com.mmc.oms.entity.mall;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* author:zhenjie
* Date:2022/11/25
* time:11:11
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("商城订单simple信息")
public class MallOrderSimpleDO implements Serializable {
private static final long serialVersionUID = 7783643628653457384L;
private Long id;
private Integer userAccountId;
private BigDecimal orderAmount;
private List<OrderGoodsCommonDO> orderGoodsCommonDOS;
private List<OGSkuSpecDO> ogSkuSpecDOList;
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.MallStatusDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/6/3 21:01
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MallOrderStatusDO implements Serializable {
private static final long serialVersionUID = -2929491793889096032L;
private Integer id;
private String status;
private Integer code;
private Integer nextCode;
public MallStatusDTO buildMallOrderStatusDTO() {
return MallStatusDTO.builder().status(status).code(code).nextCode(nextCode).build();
}
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.MallGoodsShopCarDTO;
import com.mmc.oms.model.vo.mall.MallShopCarVO;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: zj
* @Date: 2023/6/3 20:11
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("购物车-产品商品")
public class MallProdShopCarDO implements Serializable {
private static final long serialVersionUID = -5568801124097141578L;
private Integer id;
private Integer userAccountId;
private Integer goodsInfoId;
private Integer buyNum;
private Integer saleStatus;
private Integer recMallUserId;
private String remark;
private Integer deleted;
private Date createTime;
private Date updateTime;
private List<MallProdShopCarDetailDO> shopCarDetailDOS;
public MallProdShopCarDO(MallShopCarVO param){
this.userAccountId = param.getUserAccountId();
this.goodsInfoId = param.getGoodsInfoId();
this.buyNum = param.getBuyNum();
this.recMallUserId = param.getRecMallUserId();
this.remark = param.getRemark();
}
public MallProdShopCarDO(Integer mallShopCarId, Integer buyNum) {
this.id = mallShopCarId;
this.buyNum = buyNum;
}
public MallGoodsShopCarDTO buildMallGoodsShopCarDTO(){
return MallGoodsShopCarDTO.builder().id(this.id).userAccountId(this.userAccountId).goodsInfoId(this.goodsInfoId).buyNum(this.buyNum)
.saleStatus(this.saleStatus).recMallUserId(this.recMallUserId).remark(this.remark).deleted(this.deleted).createTime(this.createTime)
.directoryId(1).skuList(this.shopCarDetailDOS.stream().map(d->{ return d.buildMallSkuInfoSpecDTO();}).collect(Collectors.toList()))
.build();
}
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.MallSkuInfoSpecDTO;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/6/3 20:11
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("购物车商品-产品商品规格")
public class MallProdShopCarDetailDO implements Serializable {
private static final long serialVersionUID = -5696013841678019344L;
private Integer id;
private Integer mallProdShopCarId;
private Integer mallProdSkuInfoSpecId;
public MallSkuInfoSpecDTO buildMallSkuInfoSpecDTO(){
return MallSkuInfoSpecDTO.builder().id(this.id).mallSkuInfoSpecId(this.mallProdSkuInfoSpecId).build();
}
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.OGSkuSpecDTO;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* author:zhenjie
* Date:2022/11/28
* time:14:31
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("下单时所选规格")
public class OGSkuSpecDO implements Serializable {
private static final long serialVersionUID = 7582475134715887443L;
private Integer id;
private Integer directoryId;
private Integer shopCarId;
private String skuSpecName;
public OGSkuSpecDTO buildOGSkuSpecDTO(){
return OGSkuSpecDTO.builder().id(this.id).directoryId(this.directoryId).shopCarId(this.shopCarId).skuSpecName(this.skuSpecName).build();
}
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.order.OrderCouponDTO;
import com.mmc.oms.model.vo.coupon.CouponUserVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* author:zhenjie
* Date:2023/4/4
* time:11:14
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class OrderCouponDO implements Serializable {
private static final long serialVersionUID = 4085601241082643413L;
private Integer id;
private Long orderId;
private Integer couponUserId;
private Integer couponType;
private Integer useType;
private BigDecimal useAmount;
private Date createTime;
public OrderCouponDTO buildOrderCouponDTO(){
return OrderCouponDTO.builder().id(this.id).orderId(this.orderId).couponUserId(this.couponUserId).couponType(this.couponType).useType(this.useType).useAmount(this.useAmount)
.createTime(this.createTime).couponName(buildCouponName(this.useType, this.couponType)).build();
}
private String buildCouponName(Integer useType, Integer couponType){
if (useType == 1){
return "VIP";
}else if (useType == 2){
if (couponType == 1){
return "打折";
} else if (couponType == 2) {
return "减免";
} else if (couponType == 3) {
return "无门槛";
}
}
return "";
}
public OrderCouponDO(CouponUserVO couponUserVO){
this.orderId = couponUserVO.getCid();
this.couponUserId = couponUserVO.getId();
this.couponType = couponUserVO.getCouponType();
this.useType = couponUserVO.getUseType();
this.useAmount = couponUserVO.getUseAmount();
}
}
package com.mmc.oms.entity.mall;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* author:zhenjie
* Date:2022/11/25
* time:11:24
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("公用的产品和行业基本订单信息")
public class OrderGoodsCommonDO implements Serializable {
private static final long serialVersionUID = -1984274780148138222L;
private Integer id;
private Long orderId;
private String orderNo;
private Integer directoryId;
private Integer buyNum;
private String goodsName;
private String mainImg;
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.OrderGoodsIndstDTO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* author:zhenjie
* Date:2022/10/21
* time:16:32
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class OrderGoodsIndstDO implements Serializable {
private static final long serialVersionUID = -3279631619974911234L;
private Integer id;
private Long orderId;
private Integer mallIndstShopCarId;
private Integer goodsInfoId;
private Integer directoryId;
private BigDecimal goodsAmount;
private String goodsNo;
private String goodsName;
private String mainImg;
private Integer buyNum;
private Date createTime;
private Date updateTime;
private List<OrderGoodsIndstDetailDO> orderGoodsIndstDetailDOS;
public OrderGoodsIndstDTO buildOrderGoodsIndstDTO(){
return OrderGoodsIndstDTO.builder().id(this.id).orderId(this.orderId).mallIndstShopCarId(this.mallIndstShopCarId).goodsInfoId(this.goodsInfoId).directoryId(this.directoryId)
.goodsAmount(this.goodsAmount).goodsNo(this.goodsNo).goodsName(this.goodsName).mainImg(this.mainImg).buyNum(this.buyNum).build();
}
public OrderGoodsIndstDO(OrderGoodsIndstDTO orderGoodsIndstDTO){
this.id = orderGoodsIndstDTO.getId();
this.orderId = orderGoodsIndstDTO.getOrderId();
this.mallIndstShopCarId = orderGoodsIndstDTO.getMallIndstShopCarId();
this.goodsInfoId = orderGoodsIndstDTO.getGoodsInfoId();
this.directoryId = orderGoodsIndstDTO.getDirectoryId();
this.goodsAmount = orderGoodsIndstDTO.getGoodsAmount();
this.goodsNo = orderGoodsIndstDTO.getGoodsNo();
this.goodsName = orderGoodsIndstDTO.getGoodsName();
this.mainImg = orderGoodsIndstDTO.getMainImg();
this.buyNum = orderGoodsIndstDTO.getBuyNum();
}
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.OrderGoodsIndstDetailDTO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* author:zhenjie
* Date:2022/10/21
* time:16:32
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class OrderGoodsIndstDetailDO implements Serializable {
private static final long serialVersionUID = 138856551730423056L;
private Integer id;
private Integer orderGoodsIndstId;
private Integer mallIndstShopCarDetailId;
private Integer mallIndstSkuInfoSpecId;
private Integer industrySpecId;
private String industrySkuSpecName;
private String industrySkuSpecImage;
private Integer buyNum;
private BigDecimal unitPrice;
private BigDecimal skuSpecAmount;
private Date createTime;
private Date updateTime;
private String unitName;
private List<OrderGoodsIndstProdListDO> orderGoodsIndstProdListDOS;
public OrderGoodsIndstDetailDO(OrderGoodsIndstDetailDTO orderGoodsIndstDetailDTO){
this.id = orderGoodsIndstDetailDTO.getId();
this.orderGoodsIndstId = orderGoodsIndstDetailDTO.getOrderGoodsIndstId();
this.mallIndstShopCarDetailId = orderGoodsIndstDetailDTO.getMallIndstShopCarDetailId();
this.mallIndstSkuInfoSpecId = orderGoodsIndstDetailDTO.getMallIndstSkuInfoSpecId();
this.industrySpecId = orderGoodsIndstDetailDTO.getIndustrySpecId();
this.industrySkuSpecName = orderGoodsIndstDetailDTO.getIndustrySkuSpecName();
this.industrySkuSpecImage = orderGoodsIndstDetailDTO.getIndustrySkuSpecImage();
this.buyNum = orderGoodsIndstDetailDTO.getBuyNum();
this.unitPrice = orderGoodsIndstDetailDTO.getUnitPrice();
this.skuSpecAmount = orderGoodsIndstDetailDTO.getSkuSpecAmount();
this.unitName = orderGoodsIndstDetailDTO.getUnitName();
}
}
package com.mmc.oms.entity.mall;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class OrderGoodsIndstProdListBO implements Serializable {
private static final long serialVersionUID = 8484209497772442916L;
private Integer id;
private Integer orderGoodsIndstDetailId;
private String goodsTypeName;
private String productName;
private String model;
private String productBrand;
private Integer productSpecId;
private String prodSkuSpecName;
private String prodSkuSpecImage;
private String partNo;
private String versionDesc;
private Integer buyNum;
private Date createTime;
private Date updateTime;
// 关联字段
private BigDecimal goodsAmount;
private String goodsNo;
private Integer mallIndstShopCarId;
private Integer goodsInfoId;
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.MallGoodsInfoDTO;
import com.mmc.oms.model.dto.mall.MallOrderProdListDTO;
import com.mmc.oms.model.dto.mall.OrderGoodsIndstProdListDTO;
import com.mmc.oms.model.excel.OrderItem;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* author:zhenjie
* Date:2022/10/21
* time:16:33
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class OrderGoodsIndstProdListDO implements Serializable {
private static final long serialVersionUID = 8484209497772442916L;
private Integer id;
private Integer goodsInfoId;
private Integer orderGoodsIndstDetailId;
private String goodsTypeName;
private String productName;
private String model;
private String productBrand;
private Integer productSpecId;
private String prodSkuSpecName;
private String prodSkuSpecImage;
private String partNo;
private String versionDesc;
private Integer buyNum;
private Date createTime;
private Date updateTime;
private String unitName;
private BigDecimal unitPrice;
public OrderGoodsIndstProdListDTO buildOrderGoodsIndstProdListDTO(){
return OrderGoodsIndstProdListDTO.builder().id(this.id).orderGoodsIndstDetailId(this.orderGoodsIndstDetailId).goodsTypeName(this.goodsTypeName).productName(this.productName)
.model(this.model).productBrand(this.productBrand).productSpecId(this.productSpecId).prodSkuSpecName(this.prodSkuSpecName).prodSkuSpecImage(this.prodSkuSpecImage).partNo(this.partNo)
.versionDesc(this.versionDesc).buyNum(this.buyNum).createTime(this.createTime).updateTime(this.updateTime).unitName(this.unitName).build();
}
public MallOrderProdListDTO buildMallOrderProdListDTO(){
return MallOrderProdListDTO.builder().id(this.id).goodsInfoId(this.goodsInfoId).prodSkuSpecName(this.prodSkuSpecName).prodSkuSpecImage(this.prodSkuSpecImage).partNo(this.partNo)
.versionDesc(this.versionDesc).buyNum(this.buyNum).model(this.model).build();
}
public OrderItem buildMallOrderItemLis(){
return OrderItem.builder().productName(this.prodSkuSpecName).liaoNo(this.partNo).versionDesc(this.versionDesc).quantity(this.buyNum).model(this.model).build();
}
public MallGoodsInfoDTO buildMallGoodsInfoDTO(){
return MallGoodsInfoDTO.builder().productName(this.prodSkuSpecName).count(this.buyNum).unitPrice(this.unitPrice).build();
}
public OrderGoodsIndstProdListDO(OrderGoodsIndstProdListDTO orderGoodsIndstProdListDTO){
this.id = orderGoodsIndstProdListDTO.getId();
this.orderGoodsIndstDetailId = orderGoodsIndstProdListDTO.getOrderGoodsIndstDetailId();
this.goodsTypeName = orderGoodsIndstProdListDTO.getGoodsTypeName();
this.productName = orderGoodsIndstProdListDTO.getProductName();
this.model = orderGoodsIndstProdListDTO.getModel();
this.productBrand = orderGoodsIndstProdListDTO.getProductBrand();
this.productSpecId = orderGoodsIndstProdListDTO.getProductSpecId();
this.prodSkuSpecName = orderGoodsIndstProdListDTO.getProdSkuSpecName();
this.prodSkuSpecImage = orderGoodsIndstProdListDTO.getProdSkuSpecImage();
this.partNo = orderGoodsIndstProdListDTO.getPartNo();
this.versionDesc = orderGoodsIndstProdListDTO.getVersionDesc();
this.buyNum = orderGoodsIndstProdListDTO.getBuyNum();
this.unitName = orderGoodsIndstProdListDTO.getUnitName();
}
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.OrderGoodsProdDTO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: zj
* @Date: 2023/6/2 20:29
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class OrderGoodsProdDO implements Serializable {
private static final long serialVersionUID = 698431955075119489L;
private Integer id;
private Long orderId;
private Integer mallProdShopCarId;
private Integer goodsInfoId;
private Integer directoryId;
private BigDecimal goodsAmount;
private BigDecimal prodActualPrice;
private String goodsNo;
private String goodsName;
private String mainImg;
private Integer buyNum;
private Date createTime;
private Date updateTime;
private List<OrderGoodsProdDetailDO> orderGoodsProdDetailDOList;
public OrderGoodsProdDTO buildOrderGoodsProdDTO(){
return OrderGoodsProdDTO.builder().id(this.id).orderId(this.orderId).mallProdShopCarId(this.mallProdShopCarId).goodsInfoId(this.goodsInfoId).directoryId(this.directoryId).goodsAmount(this.goodsAmount).goodsNo(this.goodsNo)
.goodsName(this.goodsName).mainImg(this.mainImg).createTime(this.createTime).updateTime(this.updateTime).buyNum(this.buyNum)
.orderGoodsProdDetailDTOS(this.orderGoodsProdDetailDOList.stream().map(OrderGoodsProdDetailDO::buildOrderGoodsProdDetailDTO).collect(Collectors.toList()))
.build();
}
public OrderGoodsProdDO(OrderGoodsProdDTO orderGoodsProdDTO){
this.id = orderGoodsProdDTO.getId();
this.orderId = orderGoodsProdDTO.getOrderId();
this.goodsInfoId = orderGoodsProdDTO.getGoodsInfoId();
this.directoryId = orderGoodsProdDTO.getDirectoryId();
this.goodsAmount = orderGoodsProdDTO.getGoodsAmount();
this.goodsNo = orderGoodsProdDTO.getGoodsNo();
this.goodsName = orderGoodsProdDTO.getGoodsName();
this.mainImg = orderGoodsProdDTO.getMainImg();
this.buyNum = orderGoodsProdDTO.getBuyNum();
}
}
\ No newline at end of file
package com.mmc.oms.entity.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/6/2 20:29
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="com.mmc.csf.morder.entity.OrderGoodsProdDetailBO", description="")
@NoArgsConstructor
@AllArgsConstructor
public class OrderGoodsProdDetailBO implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Integer orderGoodsProdId;
private Integer mallProdShopCarDetailId;
private Integer mallProdSkuInfoSpecId;
@ApiModelProperty(value = "商品sku的id")
private Integer mallProdSkuInfoId;
@ApiModelProperty(value = "产品类型名称")
private String goodsTypeName;
@ApiModelProperty(value = "产品名称")
private String productName;
@ApiModelProperty(value = "型号")
private String model;
@ApiModelProperty(value = "产品品牌")
private String productBrand;
@ApiModelProperty(value = "产品规格id")
private Integer productSpecId;
@ApiModelProperty(value = "规格名称-快照")
private String prodSkuSpecName;
@ApiModelProperty(value = "规格图片-快照")
private String prodSkuSpecImage;
@ApiModelProperty(value = "料号-快照")
private String partNo;
@ApiModelProperty(value = "版本描述-快照")
private String versionDesc;
@ApiModelProperty(value = "购买数量")
private Integer buyNum;
@ApiModelProperty(value = "单价")
private BigDecimal unitPrice;
@ApiModelProperty(value = "总价")
private BigDecimal skuSpecAmount;
private Date createTime;
private Date updateTime;
// 关联字段
private BigDecimal goodsAmount;
private String goodsNo;
private Integer goodsInfoId;
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.MallGoodsInfoDTO;
import com.mmc.oms.model.dto.mall.MallOrderProdListDTO;
import com.mmc.oms.model.dto.mall.OrderGoodsProdDetailDTO;
import com.mmc.oms.model.excel.OrderItem;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/6/2 20:29
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class OrderGoodsProdDetailDO implements Serializable {
private static final long serialVersionUID = -4284152753668273560L;
private Integer id;
private Integer goodsInfoId;
private Integer orderGoodsProdId;
private Integer mallProdShopCarDetailId;
private Integer mallProdSkuInfoSpecId;
private Integer mallProdSkuInfoId;
private String goodsTypeName;
private String productName;
private String model;
private String productBrand;
private Integer brandInfoId;
private Integer productSpecId;
private String specName;
private String prodSkuSpecImage;
private String partNo;
private String versionDesc;
private Integer buyNum;
private BigDecimal unitPrice;
private BigDecimal skuSpecAmount;
private BigDecimal detailDiscountPrice;
private BigDecimal afterDiscountPrice;
private String unitName;
private Date createTime;
private Date updateTime;
public OrderGoodsProdDetailDTO buildOrderGoodsProdDetailDTO(){
return OrderGoodsProdDetailDTO.builder().id(this.id).orderGoodsProdId(this.orderGoodsProdId).mallProdShopCarDetailId(this.mallProdShopCarDetailId).mallProdSkuInfoSpecId(this.mallProdSkuInfoSpecId).mallProdSkuInfoId(this.mallProdSkuInfoId)
.specName(this.specName).prodSkuSpecImage(this.prodSkuSpecImage).partNo(this.partNo).versionDesc(this.versionDesc).buyNum(this.buyNum).unitPrice(this.unitPrice)
.skuSpecAmount(this.unitPrice.multiply(BigDecimal.valueOf(this.buyNum))).goodsTypeName(this.goodsTypeName).productName(this.productName).model(this.model).productBrand(this.productBrand).brandInfoId(this.brandInfoId)
.productSpecId(this.productSpecId).createTime(this.createTime).updateTime(this.updateTime).unitName(this.unitName).build();
}
public MallOrderProdListDTO buildMallOrderProdListDTO(){
return MallOrderProdListDTO.builder().id(this.id).goodsInfoId(this.goodsInfoId).prodSkuSpecName(this.specName).prodSkuSpecImage(this.prodSkuSpecImage).partNo(this.partNo)
.versionDesc(this.versionDesc).buyNum(this.buyNum).unitPrice(this.unitPrice).skuSpecAmount(this.skuSpecAmount).productName(this.productName).model(this.model).build();
}
public OrderItem buildMallOrderItemLis(){
return OrderItem.builder().productName(this.specName).liaoNo(this.partNo).quantity(this.buyNum).versionDesc(this.versionDesc).model(this.model).build();
}
public MallGoodsInfoDTO buildMallGoodsInfoDTO(){
return MallGoodsInfoDTO.builder().productName(this.specName).count(this.buyNum).unitPrice(this.unitPrice).build();
}
// public OGSkuSpecDTO buildOGSkuSpecDTO(){
// return OGSkuSpecDTO.builder().id(this.id).skuSpecName(this.specName).build();
// }
public OrderGoodsProdDetailDO(OrderGoodsProdDetailDTO orderGoodsProdDetailDTO){
this.id = orderGoodsProdDetailDTO.getId();
this.orderGoodsProdId = orderGoodsProdDetailDTO.getOrderGoodsProdId();
this.mallProdSkuInfoSpecId = orderGoodsProdDetailDTO.getMallProdSkuInfoSpecId();
this.mallProdSkuInfoId = orderGoodsProdDetailDTO.getMallProdSkuInfoId();
this.goodsTypeName = orderGoodsProdDetailDTO.getGoodsTypeName();
this.productName = orderGoodsProdDetailDTO.getProductName();
this.model = orderGoodsProdDetailDTO.getModel();
this.productBrand = orderGoodsProdDetailDTO.getProductBrand();
this.brandInfoId = orderGoodsProdDetailDTO.getBrandInfoId();
this.productSpecId = orderGoodsProdDetailDTO.getProductSpecId();
this.specName = orderGoodsProdDetailDTO.getSpecName();
this.prodSkuSpecImage = orderGoodsProdDetailDTO.getProdSkuSpecImage();
this.partNo = orderGoodsProdDetailDTO.getPartNo();
this.versionDesc = orderGoodsProdDetailDTO.getVersionDesc();
this.buyNum = orderGoodsProdDetailDTO.getBuyNum();
this.unitPrice = orderGoodsProdDetailDTO.getUnitPrice();
this.skuSpecAmount = orderGoodsProdDetailDTO.getSkuSpecAmount();
this.unitName = orderGoodsProdDetailDTO.getUnitName();
}
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.OrderPayDTO;
import com.mmc.oms.model.vo.mall.OrderPayVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Date;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月22日 下午1:33:55
* @explain 类说明
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class OrderPayDO implements Serializable {
private static final long serialVersionUID = -2577204623479240233L;
private Integer id;
private Long orderId;
private Integer userAccountId;
private Integer payType;
private Integer payStatus;
private String vouchr;
private String payRemark;
private String refuseReason;
private Date updateTime;
private Date createTime;
public OrderPayDO(OrderPayVO param, Integer userAccountId) {
this.orderId = param.getOrderId();
this.vouchr = String.join(",", param.getVouchr());
this.payRemark = param.getPayRemark();
this.userAccountId = userAccountId;
}
public OrderPayDTO buildOrderPayDTO() {
return OrderPayDTO.builder().orderId(orderId).vouchr(Arrays.asList(this.vouchr.split(","))).payRemark(payRemark)
.payType(payType).refuseReason(refuseReason).build();
}
}
package com.mmc.oms.entity.mall;
import com.mmc.oms.model.dto.mall.GoodsServiceDTO;
import com.mmc.oms.model.dto.mall.OrderServiceDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月24日 下午2:01:24
* @explain 类说明
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class OrderServiceDO implements Serializable {
private static final long serialVersionUID = -2938941346648852627L;
private Integer id;
private Long orderId;
private Integer goodsInfoId;
private String serviceName;
private String remark;
private Date createTime;
public OrderServiceDO(GoodsServiceDTO d, Long orderId) {
this.orderId = orderId;
this.goodsInfoId = d.getGoodsInfoId();
this.serviceName = d.getServiceName();
this.remark = d.getRemark();
}
public OrderServiceDTO buildOrderServiceDTO() {
return OrderServiceDTO.builder().goodsInfoId(goodsInfoId).orderId(orderId).serviceName(serviceName)
.remark(remark).build();
}
}
package com.mmc.oms.entity.mall;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @author 作者 geDuo
* @version 创建时间:2021年10月22日 下午4:03:14
* @explain 类说明
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ScheduleLogDO implements Serializable {
private static final long serialVersionUID = -955231247576951750L;
private Integer id;
private String scheduleName;
private String code;
private String resultDesc;
private Date createTime;
@ApiModelProperty(value = "参数")
private String param;
}
package com.mmc.oms.entity.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* <p>
* 用户地址表
* </p>
*
* @author dahang
* @since 2022-08-31
*/
@Data
@ApiModel(value="UserAddressDO", description="用户地址表")
@AllArgsConstructor
@NoArgsConstructor
public class UserAddressDO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "唯一标识")
private Integer id;
@ApiModelProperty(value = "用户id")
private Integer userAccountId;
@ApiModelProperty(value = "收货人姓名")
private String takeName;
@ApiModelProperty(value = "收货人电话")
private String takePhone;
@ApiModelProperty(value = "收货地址")
private String takeRegion;
@ApiModelProperty(value = "收货详细地址")
private String takeAddress;
@ApiModelProperty(value = "使用类型;0默认,1普通")
private Integer type;
@ApiModelProperty(value = "创建时间")
private Date createdTime;
@ApiModelProperty(value = "更新时间")
private Date updatedTime;
@ApiModelProperty(value = "逻辑删除;1代表删除,0代表未删除")
private Integer isDeleted;
@ApiModelProperty(value = "逻辑删除")
private List<Integer> isDeleteds;
public UserAddressDO(Integer userAccountId, Integer type) {
this.userAccountId = userAccountId;
this.type = type;
}
}
package com.mmc.oms.enums;
/**
* author:zhenjie
* Date:2023/4/27
* time:17:06
*/
public enum BonusObjCodeEnum {
OPERATOR(100, "相关运营"),
SALE(200, "相关销售"),
CHANNEL(300, "相关渠道用户"),
RCD(400, "上级推荐人");
private Integer code;
private String objName;
BonusObjCodeEnum(Integer code, String objName) {
this.code = code;
this.objName = objName;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getObjName() {
return objName;
}
public void setObjName(String objName) {
this.objName = objName;
}
}
package com.mmc.oms.enums;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月21日 上午12:37:59
* @explain 类说明
*/
public enum OrderStatus {
PENDING_ASSIGNMENT(50,"待分配运营"), PLACE_ORDER(100, "待确认订单"),
CONFIRM_ORDER(200, "待上传凭证"),
SIGN_STATUS_ZERO(0,"待用户签署合同"),SIGN_STATUS_ONE(1,"用户签署失败"),
SIGN_STATUS_TWO(2,"待平台签署合同"),SIGN_STATUS_THREE(3,"平台签署失败"),
SIGN_STATUS_FOUR(4,"平台签署成功"),
ORDER_PAY(300, "已上传付款凭证"), ERROR_PAY(350, "审核不通过"),
//CONFIRM_INVENTORY(500, "待配送"), SEND_ORDER_GOODS(600, "配送中"),
WAITING_FOR_AFTER_PAY(650, "待上传尾款凭证"),
AFTER_PAY(660, "已上传尾款凭证"), REFUSE_AFTER_PAY(670, "尾款凭证不通过"),
CONFIRM_INVENTORY(710, "待配送"), SEND_ORDER_GOODS(720, "配送中"),
FINISH(800, "订单完成"), CLOSE(999, "订单关闭");
private Integer code;
private String name;
OrderStatus(Integer code, String name) {
this.code = code;
this.name = name;
}
public void setCode(Integer code) {
this.code = code;
}
public Integer getCode() {
return this.code;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
package com.mmc.oms.enums;
/**
* @author 作者 geDuo
* @version 创建时间:2022年4月1日 下午5:41:41
* @explain 类说明
*/
public enum PayMethod {
ALL(0, "全款"), DIVIDE(1, "分期付款");
private Integer code;
private String name;
PayMethod(Integer code, String name) {
this.code = code;
this.name = name;
}
public void setCode(Integer code) {
this.code = code;
}
public Integer getCode() {
return this.code;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
package com.mmc.oms.enums;
/**
* @author 作者 geDuo
* @version 创建时间:2022年4月1日 下午6:02:49
* @explain 类说明
*/
public enum PayStatus {
INIT(0, "待审核"), ACCESS(1, "通过"), REFUSE(2, "不通过");
private Integer code;
private String name;
PayStatus(Integer code, String name) {
this.code = code;
this.name = name;
}
public void setCode(Integer code) {
this.code = code;
}
public Integer getCode() {
return this.code;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
package com.mmc.oms.enums;
/**
* @author 作者 geDuo
* @version 创建时间:2022年4月1日 下午5:53:50
* @explain 类说明
*/
public enum PayType {
ALL_PAY(0, "全款凭证"), AD_PAY(1, "预付款凭证"), AF_PAY(2, "尾款凭证"),CA_PAY(3,"验收单");
private Integer code;
private String name;
PayType(Integer code, String name) {
this.code = code;
this.name = name;
}
public void setCode(Integer code) {
this.code = code;
}
public Integer getCode() {
return this.code;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
package com.mmc.oms.enums;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月19日 上午9:41:54
* @explain 类说明
*/
public enum SaleStatus {
PENDING(0, "待下单"), DOING(1, "已下单");
private Integer code;
private String name;
SaleStatus(Integer code, String name) {
this.code = code;
this.name = name;
}
public void setCode(Integer code) {
this.code = code;
}
public Integer getCode() {
return this.code;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
package com.mmc.oms.feign;
import com.mmc.oms.feign.hystrix.PayAppApiHystrix;
/**
* @author: zj
* @Date: 2023/6/5 15:26
*/
//@FeignClient(url = "${payment.url}", name = "payment-svc", fallback = PayAppApiHystrix.class)
public interface PayAppApi {
}
package com.mmc.oms.feign;
import com.mmc.oms.model.dto.mall.*;
import com.mmc.oms.model.qo.mall.MallOrderGoodsInfoQO;
import com.mmc.oms.model.qo.mall.ProductSpecPriceQO;
//import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author: zj
* @Date: 2023/6/5 15:18
*/
//@FeignClient(url = "${pms.url}", name = "pms-svc", fallback = PmsAppApiHystrix.class)
public interface PmsAppApi {
@PostMapping("/pms/goods/fillGoodsInfo")
List<MallGoodsShopCarDTO> fillGoodsInfo(@RequestBody List<MallGoodsShopCarDTO> param, @RequestHeader("token") String token);
@PostMapping("/pms/goods/feignListProdGoodsSkuInfo")
List<OrderGoodsProdDTO> feignListProdGoodsSkuInfo(@RequestBody MallOrderGoodsInfoQO mallOrderGoodsInfoQO, @RequestHeader("token") String token);
@PostMapping("/pms/goods/feignListIndstGoodsSkuInfo")
List<OrderGoodsIndstDTO> feignListIndstGoodsSkuInfo(@RequestBody MallOrderGoodsInfoQO mallOrderGoodsInfoQO, @RequestHeader("token") String token);
@PostMapping("/pms/goods/feignListProductSpecPrice")
List<MallProductSpecPriceDTO> feignListProductSpecPrice(@RequestBody ProductSpecPriceQO productSpecPriceQO, @RequestHeader("token") String token);
@GetMapping("/pms/goods/feignGetUnitPriceByTag")
public ProductSpecPriceDTO feignGetUnitPriceByTag(@RequestParam(value = "specId")Integer specId,
@RequestParam(value = "tagId")Integer tagId, @RequestHeader("token") String token);
}
package com.mmc.oms.feign;
import com.mmc.oms.model.dto.mall.CooperationTagDTO;
import com.mmc.oms.model.dto.user.UserAccountSimpleDTO;
import com.mmc.oms.model.qo.mall.BUserAccountQO;
//import io.swagger.annotations.ApiParam;
//import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author: zj
* @Date: 2023/5/18 17:06
*/
//@FeignClient(url = "${userapp.url}", name = "cms-svc", fallback = UserAppApiHystrix.class)
public interface UserAppApi {
/**
* 根据用户id获取基本信息
* @param userAccountId
* @return
*/
@RequestMapping(value = "user-account/feignGetUserSimpleInfo", method = RequestMethod.GET)
public UserAccountSimpleDTO feignGetUserSimpleInfo(@RequestParam Integer userAccountId, @RequestHeader("token") String token);
/**
* 根据地区信息查询用户id
* @param provinceCode
* @param cityCode
* @param districtCode
* @return
*/
@GetMapping("user-account/feignListUserAccountIds")
List<Integer> feignListUserAccountIds(@RequestParam Integer provinceCode, @RequestParam(required = false) Integer cityCode,
@RequestParam(required = false) Integer districtCode, @RequestHeader(value = "token", required = false) String token);
/**
* 获取用户集合列表页面
*
* @param bUserAccountQO 问:b用户帐户
* @return {@link List}<{@link UserAccountSimpleDTO}>
*/
@PostMapping("back-user/feignListBAccountPage")
List<UserAccountSimpleDTO> feignListBAccountPage( @RequestBody BUserAccountQO bUserAccountQO, @RequestHeader("token") String token);
/**
* 根据用户id查询用户信息
* @param ids
* @param token
* @return
*/
@PostMapping("user-account/feignListUserAccountByIds")
List<UserAccountSimpleDTO> feignListUserAccountByIds(@RequestBody List<Integer> ids, @RequestHeader("token") String token);
/**
* 查询推荐人信息
* @param userIds
* @return
*/
@PostMapping("user-account/feignListRcdUserInfo")
List<UserAccountSimpleDTO> feignListRcdUserInfo(@RequestBody List<Integer> userIds);
/**
* 查询上级id
* @param userAccountId
* @return
*/
@GetMapping("user-account/feignGetSuperiorRef")
Integer feignGetSuperiorRef(@RequestParam Integer userAccountId);
/**
* 查询上级推荐人信息
* @param userAccountId
* @return
*/
@GetMapping("user-account/feignGetUserRcdInfo")
UserAccountSimpleDTO feignGetUserRcdInfo(@RequestParam Integer userAccountId);
/**
* 用户合作标签
* @return
*/
@GetMapping("cooperation/feignListCooperationTag")
List<CooperationTagDTO> feignListCooperationTag();
}
package com.mmc.oms.feign.config;
//import com.mmc.oms.feign.hystrix.UserAppApiHystrix;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.ComponentScan;
//import org.springframework.context.annotation.Configuration;
//
///**
// * @author: zj
// * @Date: 2023/5/18 18:21
// */
//@ComponentScan(basePackages = "com.mmc.oms.feign")
//@Configuration
//public class FeignConfiguration {
//
// @Bean(name = "userAppApiHystrix")
// public UserAppApiHystrix userAppApi(){
// return new UserAppApiHystrix();
// }
//}
package com.mmc.oms.feign.hystrix;
import com.mmc.oms.feign.PayAppApi;
import lombok.extern.slf4j.Slf4j;
/**
* @author: zj
* @Date: 2023/6/5 15:27
*/
@Slf4j
public class PayAppApiHystrix implements PayAppApi {
}
package com.mmc.oms.feign.hystrix;
import com.alibaba.fastjson.JSONObject;
import com.mmc.oms.feign.PmsAppApi;
import com.mmc.oms.model.dto.mall.*;
import com.mmc.oms.model.qo.mall.MallOrderGoodsInfoQO;
import com.mmc.oms.model.qo.mall.ProductSpecPriceQO;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
/**
* @author: zj
* @Date: 2023/6/5 15:19
*/
@Slf4j
public class PmsAppApiHystrix implements PmsAppApi {
@Override
public List<MallGoodsShopCarDTO> fillGoodsInfo(List<MallGoodsShopCarDTO> param, String token) {
log.info("熔断:MallGoodsClientHystrix.fillGoodsInfo==error==>param:{}", JSONObject.toJSONString(param));
return null;
}
@Override
public List<OrderGoodsProdDTO> feignListProdGoodsSkuInfo(MallOrderGoodsInfoQO mallOrderGoodsInfoQO, String token) {
log.info("熔断:MallGoodsClientHystrix.feignListProdGoodsSkuInfo==error==>param:{}", JSONObject.toJSONString(mallOrderGoodsInfoQO));
return null;
}
@Override
public List<OrderGoodsIndstDTO> feignListIndstGoodsSkuInfo(MallOrderGoodsInfoQO mallOrderGoodsInfoQO, String token) {
log.info("熔断:MallGoodsClientHystrix.feignListIndstGoodsSkuInfo==error==>param:{}", JSONObject.toJSONString(mallOrderGoodsInfoQO));
return null;
}
@Override
public List<MallProductSpecPriceDTO> feignListProductSpecPrice(ProductSpecPriceQO productSpecPriceQO, String token) {
log.info("熔断:MallGoodsClientHystrix.feignListProductSpecPrice==error==>param:{}", JSONObject.toJSONString(productSpecPriceQO));
return null;
}
@Override
public ProductSpecPriceDTO feignGetUnitPriceByTag(Integer specId, Integer tagId, String token) {
log.info("熔断:MallGoodsClientHystrix.feignGetUnitPriceByTag==error==>param:{}",specId,tagId);
return null;
}
}
package com.mmc.oms.feign.hystrix;
import com.mmc.oms.feign.UserAppApi;
import com.mmc.oms.model.dto.mall.CooperationTagDTO;
import com.mmc.oms.model.dto.user.UserAccountSimpleDTO;
import com.mmc.oms.model.qo.mall.BUserAccountQO;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
/**
* @author: zj
* @Date: 2023/5/18 17:08
*/
@Slf4j
public class UserAppApiHystrix implements UserAppApi {
@Override
public UserAccountSimpleDTO feignGetUserSimpleInfo(Integer userAccountId, String token) {
log.error("熔断:feignGetUserSimpleInfo:{}", userAccountId);
return null;
}
@Override
public List<Integer> feignListUserAccountIds(Integer provinceCode, Integer cityCode, Integer districtCode, String token) {
log.error("熔断:feignListUserAccountIds:{}, {}, {}", provinceCode, cityCode, districtCode);
return null;
}
@Override
public List<UserAccountSimpleDTO> feignListBAccountPage(BUserAccountQO bUserAccountQO, String token) {
log.error("熔断:feignListBAccountPage:{}", bUserAccountQO);
return null;
}
@Override
public List<UserAccountSimpleDTO> feignListUserAccountByIds(List<Integer> ids, String token) {
log.error("熔断:feignListUserAccountByIds:{}", ids);
return null;
}
@Override
public List<UserAccountSimpleDTO> feignListRcdUserInfo(List<Integer> userIds) {
log.error("熔断:feignListRcdUserInfo:{}", userIds);
return null;
}
@Override
public Integer feignGetSuperiorRef(Integer userAccountId) {
log.error("熔断:feignGetSuperiorRef:{}", userAccountId);
return null;
}
@Override
public UserAccountSimpleDTO feignGetUserRcdInfo(Integer userAccountId) {
log.error("熔断:feignGetUserRcdInfo:{}", userAccountId);
return null;
}
@Override
public List<CooperationTagDTO> feignListCooperationTag() {
log.error("熔断:feignListCooperationTag:{}");
return null;
}
}
package com.mmc.oms.model.dto.mall;
import com.mmc.oms.model.dto.coupon.CouponUserOrderDTO;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* author:zhenjie
* Date:2022/11/4
* time:14:39
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.vo.ConfirmGoodsInfoDTO",description = "确认意向产品清单DTO")
public class ConfirmGoodsInfoDTO implements Serializable {
private static final long serialVersionUID = -4972310061064207010L;
private Integer directoryId;
private List<OrderGoodsProdDetailDTO> orderGoodsProdDetailDTOS;
private List<OrderGoodsIndstProdListDTO> orderGoodsIndstProdListDTOS;
private BigDecimal orderAmount;
private List<CouponUserOrderDTO> usableCoupon;
private List<CouponUserOrderDTO> disableCoupon;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/5/17 21:27
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CooperationTagDTO implements Serializable {
private static final long serialVersionUID = 8884567706797525506L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "合作标签名称")
private String tagName;
@ApiModelProperty(value = "合作标签img")
private String tagImg;
@ApiModelProperty(value = "合作标签描述")
private String tagDescription;
@ApiModelProperty(value = "创建时间")
private Date createTime;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/6/3 15:53
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CountShowTypeDTO implements Serializable {
private static final long serialVersionUID = -5226139246318294813L;
private Integer showType0;
private Integer showType1;
private Integer showType2;
private Integer showType3;
private Integer showType4;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月24日 下午2:38:44
* @explain 类说明
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.GoodsServiceDTO", description = "商品服务DTO")
public class GoodsServiceDTO implements Serializable {
private static final long serialVersionUID = -3178549723714411915L;
private Integer id;
private Integer saleServiceId;
private Integer goodsInfoId;
private String serviceName;
private String remark;
}
package com.mmc.oms.model.dto.mall;
import com.mmc.oms.model.vo.coupon.CouponUserVO;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* author:zhenjie
* Date:2023/4/4
* time:10:51
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.MallDiscountInfoDTO", description = "小程序DTO")
public class MallDiscountInfoDTO implements Serializable {
private static final long serialVersionUID = -2030828665864337497L;
private BigDecimal allDiscount;
private List<CouponUserVO> couponUserVOS;
}
package com.mmc.oms.model.dto.mall;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author LW
* @date 2022/12/21 17:32
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ExcelTarget("mallGoodsInfo")
public class MallGoodsInfoDTO implements Serializable {
private static final long serialVersionUID = -3066818201671524986L;
@Excel(name = "产品名称",width = 25)
private String productName;
@Excel(name = "数量",width = 25)
private Integer count;
@Excel(name = "单价(元/件)",width = 25)
private BigDecimal unitPrice;
@Excel(name = "推荐人采购优惠单价(元/件)",width = 25)
private BigDecimal recPrice;
}
package com.mmc.oms.model.dto.mall;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author: zj
* @Date: 2023/6/3 16:19
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MallGoodsShopCarDTO implements Serializable {
private static final long serialVersionUID = 766856809957374985L;
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("用户id")
private Integer userAccountId;
@ApiModelProperty("商品id")
private Integer goodsInfoId;
@ApiModelProperty("购买数量")
private Integer buyNum;
@ApiModelProperty("0:待下单 1:已下单")
private Integer saleStatus;
@ApiModelProperty("推荐人id")
private Integer recMallUserId;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("是否删除")
private Integer deleted;
@ApiModelProperty("生成时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
//区分产品或者行业
@ApiModelProperty("区分产品或者行业")
private Integer directoryId;
@ApiModelProperty("商品名称")
private String goodsName;
@ApiModelProperty("商品主图")
private String mainImg;
@ApiModelProperty("状态:0:下架 1:上架")
private Integer shelfStatus;
@ApiModelProperty("商品产品规格信息")
private List<MallSkuInfoSpecDTO> skuList;
}
package com.mmc.oms.model.dto.mall;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mmc.oms.model.dto.kdn.KdnExpDTO;
import com.mmc.oms.model.dto.order.OrderCouponDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月21日 下午11:35:47
* @explain 类说明
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.MallOrderDTO", description = "小程序DTO")
public class MallOrderDTO implements Serializable {
private static final long serialVersionUID = -5495994390870097181L;
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("状态码")
private Integer statusCode;
@ApiModelProperty("user_account_id")
private Integer userAccountId;
@ApiModelProperty("买家uid")
private String uid;
@ApiModelProperty(value = "渠道等级id")
private Integer cooperationTagId;
@ApiModelProperty(value = "认证企业")
private String companyName;
@ApiModelProperty(value = "渠道合作标签")
private String tagName;
@ApiModelProperty("买家姓名")
private String userName;
@ApiModelProperty("买家昵称")
private String nickName;
@ApiModelProperty("买家手机号")
private String phoneNum;
@ApiModelProperty("0全款购买 1分期付款")
private Integer payMethod;
@ApiModelProperty("订单关闭原因")
private String shutReason;
@ApiModelProperty("下单时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
private Date createTime;
@ApiModelProperty(value = "收发货信息")
private MallOrderExpressDTO exp;
@ApiModelProperty(value = "物流动态信息")
private KdnExpDTO kdn;
@ApiModelProperty(value = "凭证审核不通过的原因")
private String payErrInfo;
@ApiModelProperty(value = "推荐人")
private String recMallUserName;
@ApiModelProperty(value = "收货信息")
private UserAddressDTO userAddress;
@ApiModelProperty("用户收货地址id")
private Integer userAddressId;
@ApiModelProperty("订单交期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
private Date deliveryTime;
@ApiModelProperty("订单期限")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
private Date creditPeriod;
@ApiModelProperty("订单金额")
private BigDecimal orderAmount;
@ApiModelProperty("购物车的商品总金额")
private BigDecimal shopCarAmount;
@ApiModelProperty(value = "订单商品的服务列表集合")
private List<String> serviceNames;
@ApiModelProperty(value = "运营人员")
private String operationName;
@ApiModelProperty("运营id")
private Integer operationId;
@ApiModelProperty("合同编号")
private String contractNo;
@ApiModelProperty("合同状态状态:状态:(0:等待用户签署、1:用户签署失败、2:等待甲方签署(用户签署成功) 3:用户签署失败、4:甲方签署成功、5:已完成")
private Integer signStatus;
@ApiModelProperty("合同归档日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
private Date archiveDate;
@ApiModelProperty(value = "合同签署方式,1:线上,0:线下")
private Integer contractSignedWay;
@ApiModelProperty(value = "标品的备注,字符不超过600")
private String remark;
@ApiModelProperty(value = "订单清单")
private List<MallOrderProdListDTO> mallOrderProdListDTOList;
@ApiModelProperty(value = "订单名称")
private String orderName;
@ApiModelProperty(value = "订单商品的数量")
private Integer goodsNum;
@ApiModelProperty(value = "所选规格")
private List<OGSkuSpecDTO> ogSkuSpecDTOList;
@ApiModelProperty(value = "管理员专用备注")
private String mRemark;
@ApiModelProperty("减免金额")
private BigDecimal deductAmount;
@ApiModelProperty("优惠金额")
private BigDecimal discountAmount;
@ApiModelProperty("实付金额(订单价格-优惠券金额-手动折扣)0406")
private BigDecimal realityAmount;
@ApiModelProperty("分享状态")
private Integer shareStatus;
@ApiModelProperty("分享人id")
private Integer shareId;
@ApiModelProperty("订单使用的优惠券")
private List<OrderCouponDTO> orderCouponDTOS;
@ApiModelProperty("优惠券折扣金额")
private BigDecimal couponDiscountAmount;
@ApiModelProperty("手填折扣金额")
private BigDecimal manualDiscountAmount;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/6/2 20:57
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MallOrderExpressDTO implements Serializable {
private static final long serialVersionUID = 6804508364845777867L;
@ApiModelProperty(value = "orderId")
private Long orderId;
@ApiModelProperty(value = "发货-快递公司编码")
private String sendExpNo;
@ApiModelProperty(value = "发货-快递单号")
private String sendExpCode;
@ApiModelProperty(value = "发货-收货人名字")
private String takeName;
@ApiModelProperty(value = "发货-收货人手机号")
private String takePhone;
@ApiModelProperty(value = "发货-收货地区")
private String takeRegion;
@ApiModelProperty(value = "发货-收货详细地址")
private String takeAddress;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* author:zhenjie
* Date:2023/4/26
* time:14:32
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.MallOrderFinishDTO", description = "无人机城完成状态的订单")
public class MallOrderFinishDTO implements Serializable {
private static final long serialVersionUID = 4577011678089794859L;
@ApiModelProperty("订单id")
private Long orderId;
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("订单名称")
private String orderName;
@ApiModelProperty("实付金额(订单价格-优惠券金额-手动折扣)0406")
private BigDecimal realityAmount;
@ApiModelProperty("是否已分成")
private Integer divide;
@ApiModelProperty("用户id")
private Integer userAccountId;
@ApiModelProperty("买家uid")
private String uid;
@ApiModelProperty("买家姓名")
private String userName;
@ApiModelProperty("买家昵称")
private String nickName;
@ApiModelProperty(value = "认证企业")
private String entName;
}
package com.mmc.oms.model.dto.mall;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* author:zhenjie
* Date:2022/11/23
* time:16:10
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.MallOrderPageDTO", description = "无人机城PC订单列表DTO")
public class MallOrderPageDTO implements Serializable {
private static final long serialVersionUID = 56353980620113181L;
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("订单图片-第一个商品的主图")
private String orderMainImg;
@ApiModelProperty("订单名称-第一个商品的名称")
private String orderName;
@ApiModelProperty("商品总数量")
private Integer totalBuyNum;
@ApiModelProperty("订单金额")
private BigDecimal orderAmount;
@ApiModelProperty("订单状态码")
private Integer statusCode;
@ApiModelProperty("合同状态状态:状态:(0:等待用户签署、1:用户签署失败、2:等待甲方签署(用户签署成功) 3:用户签署失败、4:甲方签署成功、5:已完成")
private Integer signStatus;
@ApiModelProperty(value = "运营人员")
private String operationName;
@ApiModelProperty("运营id")
private Integer operationId;
@ApiModelProperty("订单交期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
private Date deliveryTime;
@ApiModelProperty("合同编号")
private String contractNo;
@ApiModelProperty("userAccountId")
private Integer userAccountId;
@ApiModelProperty("买家uid")
private String uid;
@ApiModelProperty("买家姓名")
private String userName;
@ApiModelProperty("买家手机号")
private String phoneNum;
@ApiModelProperty("0全款购买 1分期付款")
private Integer payMethod;
@ApiModelProperty(value = "合同签署方式,1:线上,0:线下")
private Integer contractSignedWay;
@ApiModelProperty("下单时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
private Date createTime;
@ApiModelProperty(value = "推荐人")
private String recMallUserName;
@ApiModelProperty(value = "所选规格")
private List<OGSkuSpecDTO> ogSkuSpecDTOList;
@ApiModelProperty(value = "订单备注,字符不超过600")
private String remark;
@ApiModelProperty(value = "管理员专用备注")
private String mRemark;
@ApiModelProperty(value = "付款期限")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
private Date creditPeriod;
@ApiModelProperty(value = "买家认证企业")
private String entName;
@ApiModelProperty(value = "销售id")
private Integer saleId;
@ApiModelProperty(value = "销售名称")
private String saleName;
@ApiModelProperty(value = "分销商等级")
private String tagName;
@ApiModelProperty(value = "是否完成实名认证和法人认证")
private Integer realNameAuth;
@ApiModelProperty(value = "实际付款")
private BigDecimal realPayAmount;
@ApiModelProperty(value = "补贴金额")
private BigDecimal subAmount;
@ApiModelProperty(value = "共享人id")
private Integer shareId;
@ApiModelProperty(value = "共享状态 0是起始状态 100接受共享中 200已共享 300其他状态")
private Integer shareStatus;
@ApiModelProperty("减免金额")
private BigDecimal deductAmount;
@ApiModelProperty("优惠金额")
private BigDecimal discountAmount;
@ApiModelProperty("实付金额")
private BigDecimal realityAmount;
@ApiModelProperty("订单关闭原因")
private String shutReason;
@ApiModelProperty("产品清单")
private List<MallOrderProdListDTO> mallOrderProdListDTOList;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* author:zhenjie
* Date:2022/11/25
* time:20:59
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.MallOrderProdListDTO", description = "无人机城PC订单产品列表")
public class MallOrderProdListDTO implements Serializable {
private static final long serialVersionUID = 2825582287124124679L;
private Integer id;
private Integer goodsInfoId;
@ApiModelProperty("产品名称")
private String productName;
@ApiModelProperty("产品型号")
private String model;
@ApiModelProperty("产品sku规格名称")
private String prodSkuSpecName;
private String prodSkuSpecImage;
@ApiModelProperty("料号")
private String partNo;
@ApiModelProperty("版本号")
private String versionDesc;
@ApiModelProperty("购买数量")
private Integer buyNum;
@ApiModelProperty("规格单价")
private BigDecimal unitPrice;
@ApiModelProperty("规格总价格")
private BigDecimal skuSpecAmount;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* author:zhenjie
* Date:2022/11/9
* time:17:17
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.MallProductSpecPriceDTO", description = "产品对应价格")
public class MallProductSpecPriceDTO implements Serializable {
private static final long serialVersionUID = 4717398210156973205L;
@ApiModelProperty(value = "产品规格id")
private Integer productSpecId;
@ApiModelProperty(value = "合作价格")
private BigDecimal opPrice;
@ApiModelProperty(value = "市场价格")
private BigDecimal mkPrice;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @Author LW
* @date 2022/3/24 18:27
* 概要:
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.MallSkuDTO", description = "商品规格DTO")
public class MallSkuDTO implements Serializable {
private static final long serialVersionUID = 7691622398702487199L;
@ApiModelProperty(value = "id")
private Long id;
@ApiModelProperty(value = "pid")
private Integer pid;
@ApiModelProperty(value = "sku名称")
private String specName;
@ApiModelProperty(value = "sku描述")
private String specDesc;
@ApiModelProperty(value = "模板id")
private Integer skuTemplateId;
@ApiModelProperty(value = "类型id")
private Integer skuTypeId;
@ApiModelProperty(value = "图片")
private String specPicture;
@ApiModelProperty(value = "spu")
private String spu;
@ApiModelProperty(value = "产品id")
private List<Integer> productId;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/6/3 16:20
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MallSkuInfoSpecDTO implements Serializable {
private static final long serialVersionUID = 4214771967767248990L;
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("商品最小规格id")
private Integer mallSkuInfoSpecId;
private Integer deleted;
private Boolean valid;
private Date createTime;
@ApiModelProperty("产品或者行业规格名称")
private String specName;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月22日 下午9:05:38
* @explain 类说明
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.MallStatusDTO", description = "订单状态字典DTO")
public class MallStatusDTO implements Serializable {
private static final long serialVersionUID = 267324213944203674L;
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("状态码")
private Integer code;
@ApiModelProperty("正常流程的下一个状态码")
private Integer nextCode;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* author:zhenjie
* Date:2022/11/28
* time:14:54
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.OGSkuSpecDTO", description = "下单时所选规格")
public class OGSkuSpecDTO implements Serializable {
private static final long serialVersionUID = -6135270464499137225L;
private Integer id;
private Integer directoryId;
private Integer shopCarId;
private String skuSpecName;
}
package com.mmc.oms.model.dto.mall;
import cn.afterturn.easypoi.excel.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Author LW
* @date 2023/5/4 10:17
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Accessors(chain = true)
public class OrderBaseDTO implements Serializable {
private static final long serialVersionUID = -6909778331393779181L;
private Long id;
private String orderNo;
private Date orderDate;
private BigDecimal orderAmount;
@ApiModelProperty(value = "实际付款")
private BigDecimal actualPayment;
@ApiModelProperty(value = "抵扣优惠券金额")
private BigDecimal deductionAmount;
@ApiModelProperty(value = "折扣金额")
private BigDecimal discountAmount;
@ApiModelProperty(value = "合同签署方式,1:线上,0:线下")
private Integer contractSignedWay;
private String remark;
@ApiModelProperty("下单用户id")
private Integer userAccountId;
@ApiModelProperty("买家uid")
private String uid;
@ApiModelProperty("买家姓名")
private String userName;
@ApiModelProperty("买家昵称")
private String userNickname;
@ApiModelProperty(value = "买家认证企业")
private String entName;
@ApiModelProperty(value = "是否完成实名认证和法人认证")
private Integer realNameAuth;
@ApiModelProperty(value = "分销商等级")
private String tagName;
@ApiModelProperty(value = "推荐人")
private String recMallUserName;
@ApiModelProperty(value = "推荐人uid")
private String recMallUid;
@ApiModelProperty(value = "销售名称")
private String saleName;
@ApiModelProperty(value = "销售uid")
private String saleUid;
@ApiModelProperty(value = "运营人员名称")
private String operationName;
@ApiModelProperty(value = "运营人员uid")
private String operationUid;
@ApiModelProperty(value = "商品清单")
List<MallGoodsInfoDTO> mallGoodsInfoDTOS;
@Excel(name = "推荐人采购优惠总价(元)", orderNum = "14", width = 25, needMerge = true)
private BigDecimal recDiscountTotalPrice;
@Excel(name = "推荐人利润(元)", orderNum = "15", width = 25, needMerge = true)
private BigDecimal recProfit;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author: zj
* @Date: 2023/6/3 20:21
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.OrderGoodsIndstDTO", description = "行业订单DTO")
public class OrderGoodsIndstDTO implements Serializable {
private static final long serialVersionUID = -1809741999941834440L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "订单id")
private Long orderId;
@ApiModelProperty(value = "购物车id")
private Integer mallIndstShopCarId;
@ApiModelProperty(value = "商品id")
private Integer goodsInfoId;
@ApiModelProperty(value = "商品所属类型id")
private Integer directoryId;
@ApiModelProperty(value = "商品所有规格金额")
private BigDecimal goodsAmount;
@ApiModelProperty(value = "商品编号")
private String goodsNo;
@ApiModelProperty(value = "商品名称")
private String goodsName;
@ApiModelProperty(value = "商品主图")
private String mainImg;
@ApiModelProperty(value = "购买数量")
private Integer buyNum;
@ApiModelProperty(value = "生成时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "是否有效")
private Boolean valid;
@ApiModelProperty(value = "行业订单规格")
private List<OrderGoodsIndstDetailDTO> orderGoodsIndstDetailDTOS;
@ApiModelProperty("商品服务列表")
private List<GoodsServiceDTO> services;
}
\ No newline at end of file
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author: zj
* @Date: 2023/6/3 20:21
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class OrderGoodsIndstDetailDTO {
private static final long serialVersionUID = 3716298704318911013L;
@ApiModelProperty(value = "行业订单规格id")
private Integer id;
@ApiModelProperty(value = "行业订单id")
private Integer orderGoodsIndstId;
@ApiModelProperty(value = "购物车详情id")
private Integer mallIndstShopCarDetailId;
@ApiModelProperty(value = "商品行业规格id")
private Integer mallIndstSkuInfoSpecId;
@ApiModelProperty(value = "行业规格id")
private Integer industrySpecId;
@ApiModelProperty(value = "行业规格名称")
private String industrySkuSpecName;
@ApiModelProperty(value = "行业规格图片")
private String industrySkuSpecImage;
@ApiModelProperty(value = "购买数量")
private Integer buyNum;
@ApiModelProperty(value = "行业规格单价")
private BigDecimal unitPrice;
@ApiModelProperty(value = "行业所有规格总额")
private BigDecimal skuSpecAmount;
@ApiModelProperty(value = "生成时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "是否有效")
private Boolean valid;
@ApiModelProperty(value = "产品单位名称")
private String unitName;
private List<OrderGoodsIndstProdListDTO> orderGoodsIndstProdListDTOS;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/6/3 20:22
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.OrderGoodsIndstProdListDTO", description = "行业规格对应产品清单DTO")
public class OrderGoodsIndstProdListDTO implements Serializable {
private static final long serialVersionUID = -1838976151472371521L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "行业订单规格id")
private Integer orderGoodsIndstDetailId;
@ApiModelProperty(value = "产品类型名称")
private String goodsTypeName;
@ApiModelProperty(value = "产品名称")
private String productName;
@ApiModelProperty(value = "型号")
private String model;
@ApiModelProperty(value = "品牌")
private String productBrand;
@ApiModelProperty(value = "产品规格id")
private Integer productSpecId;
@ApiModelProperty(value = "产品规格名称")
private String prodSkuSpecName;
@ApiModelProperty(value = "产品规格图片")
private String prodSkuSpecImage;
@ApiModelProperty(value = "料号")
private String partNo;
@ApiModelProperty(value = "版本描述")
private String versionDesc;
@ApiModelProperty(value = "购买数量")
private Integer buyNum;
@ApiModelProperty(value = "生成时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "单位名称-产品规格")
private String unitName;
}
\ No newline at end of file
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author: zj
* @Date: 2023/6/2 20:57
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.iuav.mall.dto.OrderGoodsProdDTO", description = "订单商品sku信息DTO")
public class OrderGoodsProdDTO implements Serializable {
private static final long serialVersionUID = 2066849435828937057L;
@ApiModelProperty(value = "orderGoodsProdId")
private Integer id;
@ApiModelProperty(value = "订单id")
private Long orderId;
@ApiModelProperty(value = "产品购物车id")
private Integer mallProdShopCarId;
@ApiModelProperty(value = "商品id")
private Integer goodsInfoId;
@ApiModelProperty(value = "商品所属类型")
private Integer directoryId;
@ApiModelProperty(value = "全部sku金额")
private BigDecimal goodsAmount;
@ApiModelProperty(value = "商品编号")
private String goodsNo;
@ApiModelProperty(value = "商品名称")
private String goodsName;
@ApiModelProperty(value = "商品主图")
private String mainImg;
@ApiModelProperty(value = "购买数量")
private Integer buyNum;
@ApiModelProperty(value = "生成时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "是否有效")
private Boolean valid;
@ApiModelProperty(value = "是否上架")
private Integer shelfStatus;
@ApiModelProperty(value = "是否删除")
private Integer deleted;
@ApiModelProperty("商品服务列表")
private List<GoodsServiceDTO> services;
@ApiModelProperty(value = "订单详情")
private List<OrderGoodsProdDetailDTO> orderGoodsProdDetailDTOS;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* author:zhenjie
* Date:2022/10/19
* time:15:27
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.OrderGoodsProdDetailDTO", description = "订单最小sku信息")
public class OrderGoodsProdDetailDTO implements Serializable {
private static final long serialVersionUID = 2079521148328016486L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "二级订单的id")
private Integer orderGoodsProdId;
@ApiModelProperty(value = "购物车详情id")
private Integer mallProdShopCarDetailId;
@ApiModelProperty(value = "商品skuId")
private Integer mallProdSkuInfoId;
@ApiModelProperty(value = "商品sku详情id")
private Integer mallProdSkuInfoSpecId;
@ApiModelProperty(value = "产品规格id")
private Integer productSpecId;
@ApiModelProperty(value = "产品规格名称")
private String specName;
@ApiModelProperty(value = "产品规格图片")
private String prodSkuSpecImage;
@ApiModelProperty(value = "料号")
private String partNo;
@ApiModelProperty(value = "版本描述")
private String versionDesc;
@ApiModelProperty(value = "购买数量")
private Integer buyNum;
@ApiModelProperty(value = "单价")
private BigDecimal unitPrice;
@ApiModelProperty(value = "总价格")
private BigDecimal skuSpecAmount;
@ApiModelProperty(value = "商品产品类型名称")
private String goodsTypeName;
@ApiModelProperty(value = "产品名称")
private String productName;
@ApiModelProperty(value = "型号")
private String model;
@ApiModelProperty(value = "品牌")
private String productBrand;
@ApiModelProperty(value = "品牌Id")
private Integer brandInfoId;
@ApiModelProperty(value = "生成时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "是否有效")
private Boolean valid;
@ApiModelProperty(value = "是否删除")
private Integer skuInfoDeleted;
@ApiModelProperty(value = "是否删除")
private Integer skuSpecDeleted;
@ApiModelProperty(value = "是否删除")
private Integer specDeleted;
@ApiModelProperty(value = "单位名称")
private String unitName;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月25日 上午10:02:58
* @explain 类说明
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.OrderPayDTO", description = "订单商品信息DTO")
public class OrderPayDTO implements Serializable {
private static final long serialVersionUID = -3966470399037847912L;
@ApiModelProperty(value = "orderId")
private Long orderId;
@ApiModelProperty(value = "凭证类型:0全款 1预付款 2尾款")
private Integer payType;
@ApiModelProperty(value = "支付备注")
private String payRemark;
@ApiModelProperty(value = "审核不通过原因")
private String refuseReason;
@ApiModelProperty(value = "支付凭证")
private List<String> vouchr;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月24日 下午2:04:53
* @explain 类说明
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.dto.OrderServiceDTO", description = "订单商品信息DTO")
public class OrderServiceDTO implements Serializable {
private static final long serialVersionUID = 3384622935297961674L;
private Long orderId;
private Integer goodsInfoId;
@ApiModelProperty(value = "服务名")
private String serviceName;
@ApiModelProperty(value = "服务备注/说明")
private String remark;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Author LW
* @date 2022/10/8 10:22
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ProductSpecPriceDTO implements Serializable {
private static final long serialVersionUID = 3860131437107977368L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "规格id")
private Integer productSpecId;
@ApiModelProperty(value = "等级标签id")
private Integer tagInfoId;
@ApiModelProperty(value = "价格")
private BigDecimal price;
@ApiModelProperty(value = "创建时间")
private Date createTime;
}
package com.mmc.oms.model.dto.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UavContractInfoDTO implements Serializable {
private static final long serialVersionUID = 8595958456591915448L;
private Integer id;
private Integer userAccountId;
private Long mallOrderId;
private String contractTitle;
@ApiModelProperty(value = "状态:(0:等待用户签署、1:用户签署失败、2:等待甲方签署(用户签署成功) 3:用户签署失败、4:甲方签署成功、5:已完成")
private Integer signStatus;
@ApiModelProperty(value = "签署完成日期")
private Date singerTime;
private String contractNo;
private Date createTime;
private Date updateTime;
private Integer deleted;
@ApiModelProperty(value = "买家签署失败备注信息")
private String aRemark;
@ApiModelProperty(value = "科比特签署失败备注信息")
private String bRemark;
@ApiModelProperty(value = "买家签署交易号")
private String aTransactionId;
@ApiModelProperty(value = "科比特签署交易号")
private String bTransactionId;
@ApiModelProperty(value = "归档日期")
private Date archiveDate;
}
package com.mmc.oms.model.dto.mall;
import com.mmc.oms.common.publicinterface.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/6/2 20:59
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UserAddressDTO implements Serializable {
private static final long serialVersionUID = -4644500806706169486L;
@ApiModelProperty(value = "唯一标识")
@NotNull(message = "id不能为空",groups = {Update.class})
private Integer id;
@ApiModelProperty(value = "收货人姓名")
private String takeName;
@ApiModelProperty(value = "收货人电话")
private String takePhone;
@ApiModelProperty(value = "收货地址")
private String takeRegion;
@ApiModelProperty(value = "收货详细地址")
private String takeAddress;
@ApiModelProperty(value = "使用类型;0默认,1普通")
private Integer type;
}
......@@ -49,4 +49,8 @@ public class UserAccountSimpleDTO implements Serializable {
private String accountNo;
@ApiModelProperty(value = "渠道等级id")
private Integer cooperationTagId;
@ApiModelProperty(value = "认证企业")
private String companyName;
@ApiModelProperty(value = "合作标签")
private String tagName;
}
package com.mmc.oms.model.excel;
import lombok.SneakyThrows;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.FileMagic;
import org.apache.poi.ss.usermodel.PrintSetup;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* @author LW
* @Description
*/
public class ExcelTool {
/**
* 克隆sheet
* 注意传入的文件流在执行本方法后将关闭
* @param excelIns excel文件流
* @param tplSheetIndex 需要克隆的模板索引
* @param newSheetNames 所需要生成的excel最终的sheet名
* @return 新的InputStream
*/
@SneakyThrows
public static InputStream cloneSheet(InputStream excelIns, int tplSheetIndex, String... newSheetNames){
Workbook workbook = ExcelTool.isXlsx(excelIns) ? new XSSFWorkbook(excelIns) : new HSSFWorkbook(excelIns);
//模板sheet
Sheet tplSheet = workbook.getSheetAt(tplSheetIndex);
for (int i = 0; i < newSheetNames.length; i++) {
String sheetName = newSheetNames[i];
//第一个,直接改名即可
if(0 == i){
workbook.setSheetName(0,sheetName);
}else{
Sheet newSheet = workbook.cloneSheet(0);
//同时复制打印设置
PrintSetup tplPrintSetup = tplSheet.getPrintSetup();
PrintSetup newPrintSetup = newSheet.getPrintSetup();
//打印方向,true:横向,false:纵向(默认)
newPrintSetup.setLandscape(tplPrintSetup.getLandscape());
//纸张类型
newPrintSetup.setPaperSize(tplPrintSetup.getPaperSize());
int sheetIndex = workbook.getSheetIndex(newSheet);
workbook.setSheetName(sheetIndex,sheetName);
}
}
try(ByteArrayOutputStream bos = new ByteArrayOutputStream()){
workbook.write(bos);
byte[] bytes = bos.toByteArray();
return new ByteArrayInputStream(bytes);
} finally {
excelIns.close();
}
}
/**
* 判断是否excel的07格式
* @param ins
* @return
*/
@SneakyThrows
public static boolean isXlsx(InputStream ins){
return FileMagic.valueOf(ins) == FileMagic.OOXML;
}
/**
* 根据url下载文件流
* @param urlStr
* @return
*/
public static InputStream getInputStreamFromUrl(String urlStr) {
InputStream inputStream=null;
try {
//url解码
URL url = new URL(java.net.URLDecoder.decode(urlStr, "UTF-8"));
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(3 * 1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//得到输入流
inputStream = conn.getInputStream();
} catch (IOException e) {
}
return inputStream;
}
}
\ No newline at end of file
package com.mmc.oms.model.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import com.mmc.oms.model.dto.mall.MallOrderPageDTO;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
@Data
@NoArgsConstructor
@ExcelTarget("mallOrderExcel")
public class MallOrderExcel implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "订单编号", orderNum = "1", width = 25)
private String orderNo;
@Excel(name = "订单名称", orderNum = "2", width = 25)
private String goodsName;
@Excel(name = "商品总数", orderNum = "3", width = 25)
private Integer buyNums;
@Excel(name = "状态", orderNum = "4", width = 25)
private String statusName;
@Excel(name = "运营人员", orderNum = "5", width = 25)
private String operationName;
@Excel(name = "订单交期", orderNum = "6", width = 25, databaseFormat = "yyyyMMdd", format = "yyyy-MM-dd", isImportField = "true_st", timezone = "Asia/Shanghai")
private Date deliveryTime;
@Excel(name = "合同编号", orderNum = "7", width = 25)
private String contractNo;
@Excel(name = "创建时间", orderNum = "5", width = 25, databaseFormat = "yyyyMMdd", format = "yyyy-MM-dd HH:mm:ss", isImportField = "true_st", timezone = "Asia/Shanghai")
private Date createdTime;
@Excel(name = "买家账号", orderNum = "6", width = 25)
private String userName;
@Excel(name = "推荐人", orderNum = "7", width = 25)
private String recMallUserName;
public MallOrderExcel(String orderNo, String goodsName, Integer buyNums, String statusName, String operationName, Date deliveryTime, String contractNo, Date createdTime, String userName, String recMallUserName) {
this.orderNo = orderNo;
this.goodsName = goodsName;
this.buyNums = buyNums;
this.statusName = statusName;
this.operationName = operationName;
this.deliveryTime = deliveryTime;
this.contractNo = contractNo;
this.createdTime = createdTime;
this.userName = userName;
this.recMallUserName = recMallUserName;
}
public MallOrderExcel(MallOrderPageDTO d) {
this.orderNo = d.getOrderNo();
this.goodsName = d.getOrderName();
this.buyNums = d.getTotalBuyNum();
this.operationName = d.getOperationName();
this.deliveryTime = d.getDeliveryTime();
this.contractNo = d.getContractNo();
this.createdTime = d.getCreateTime();
this.userName = d.getUserName();
this.recMallUserName = d.getRecMallUserName();
}
}
package com.mmc.oms.model.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import com.mmc.oms.model.dto.mall.MallGoodsInfoDTO;
import com.mmc.oms.model.dto.mall.MallOrderPageDTO;
import com.mmc.oms.model.dto.mall.OrderBaseDTO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author 23214
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ExcelTarget("operationalDataExcel")
@Builder
public class OperationalDataExcel implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "订单编号", orderNum = "1", width = 25, needMerge = true)
private String orderNo;
@Excel(name = "下单时间", orderNum = "2", width = 25, databaseFormat = "yyyyMMdd", format = "yyyy-MM-dd HH:mm:ss", isImportField = "true_st", timezone = "Asia/Shanghai", needMerge = true)
private Date orderTime;
@Excel(name = "买家用户", orderNum = "3", width = 25, needMerge = true)
private String userInfo;
@Excel(name = "公司名称", orderNum = "4", width = 25, needMerge = true)
private String corporateName;
@Excel(name = "分销商等级", orderNum = "5", width = 25, needMerge = true)
private String goodsName;
@Excel(name = "上级分销商(推荐人)", orderNum = "6", width = 25, needMerge = true)
private String recMallUserName;
@Excel(name = "订单金额", orderNum = "7", width = 25, needMerge = true)
private BigDecimal orderAmount;
@Excel(name = "实际付款金额", orderNum = "8", width = 25, needMerge = true)
private BigDecimal realPayAmount;
@Excel(name = "抵扣优惠券金额", orderNum = "9", width = 25, needMerge = true)
private BigDecimal subAmount;
@Excel(name = "折扣金额", orderNum = "10", width = 25, needMerge = true)
private BigDecimal discountAmount;
@Excel(name = "签单模式(线上or线下)", orderNum = "11", width = 25, needMerge = true, replace = {"线下_0", "线上_1", "无_2"})
private Integer signBillModel;
@Excel(name = "是否完成实名和法人认证", orderNum = "12", width = 25, needMerge = true, replace = {"否_0", "是_1"})
private Integer realNameAuth;
@ExcelCollection(name = "产品清单", orderNum = "13")
private List<MallGoodsInfoDTO> productInventory;
@Excel(name = "推荐人采购优惠总价(元)", orderNum = "14", width = 25, needMerge = true)
private BigDecimal recDiscountTotalPrice;
@Excel(name = "推荐人利润(元)", orderNum = "15", width = 25, needMerge = true)
private BigDecimal recProfit;
@Excel(name = "销售", orderNum = "16", width = 25, needMerge = true)
private String saleName;
@Excel(name = "运营操作人员", orderNum = "17", width = 25, needMerge = true)
private String operationName;
@Excel(name = "备注", orderNum = "18", width = 25, needMerge = true)
private String memo;
public OperationalDataExcel(MallOrderPageDTO d) {
this.orderTime = d.getCreateTime();
this.orderNo = d.getEntName();
this.goodsName = d.getTagName();
this.recMallUserName = d.getRecMallUserName();
this.orderAmount = d.getOrderAmount();
this.realPayAmount = d.getRealPayAmount();
this.subAmount = d.getSubAmount();
this.signBillModel = d.getContractSignedWay() == null ? 2 : d.getContractSignedWay();
this.realNameAuth = d.getRealNameAuth() == null ? 0 : d.getRealNameAuth();
this.saleName = d.getSaleName();
this.operationName = d.getOperationName();
this.memo = d.getRemark();
}
public OperationalDataExcel(OrderBaseDTO d) {
this.orderTime = d.getOrderDate();
this.orderNo = d.getOrderNo();
this.userInfo = d.getUserName() == null ? d.getUserNickname() + "(" + d.getUid() + ")" : d.getUserName() + "(" + d.getUid() + ")";
this.corporateName = d.getEntName();
this.goodsName = d.getTagName();
this.recMallUserName = d.getRecMallUserName()==null? null : d.getRecMallUserName() + "(" + d.getRecMallUid() + ")";
this.orderAmount = d.getOrderAmount();
this.realPayAmount = d.getActualPayment();
this.subAmount = d.getDeductionAmount();
this.discountAmount = d.getDiscountAmount();
this.signBillModel = d.getContractSignedWay() == null ? 2 : d.getContractSignedWay();
this.realNameAuth = d.getRealNameAuth() == null ? 0 : d.getRealNameAuth();
this.saleName = d.getSaleName() == null ? "" : d.getSaleName() + "(" + d.getSaleUid() + ")";
this.operationName = d.getOperationName() == null ? "" : d.getOperationName() + "(" + d.getOperationUid() + ")";
this.memo = d.getRemark();
this.recDiscountTotalPrice =d.getRecDiscountTotalPrice();
this.recProfit = d.getRecProfit();
this.productInventory = d.getMallGoodsInfoDTOS();
}
}
package com.mmc.oms.model.excel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @Author LW
* @date 2022/12/16 17:03
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class OrderExportDTO implements Serializable {
private static final long serialVersionUID = -2885680868396036739L;
private String buyerAccount;
private String authCompany;
private String saleOwner;
private String orderCode;
private List<OrderItem> itemList;
}
package com.mmc.oms.model.excel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Author LW
* @date 2022/12/16 17:04
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class OrderItem implements Serializable {
private static final long serialVersionUID = -1597697501589128816L;
private String productName;
private String liaoNo;
private String versionDesc;
private Integer quantity;
private String model;
private String memo;
}
package com.mmc.oms.model.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* author:zhenjie
* Date:2022/11/9
* time:16:21
*/
@Data
@NoArgsConstructor
@ExcelTarget("shoppingTrolleyProdExcel")
public class ShoppingTrolleyProdExcel implements Serializable {
private static final long serialVersionUID = 7448834330533651658L;
private Integer productSpecId;
@Excel(name = "产品名称", orderNum = "1", width = 25)
private String productName;
@Excel(name = "所选规格", orderNum = "2", width = 25)
private String productSpecName;
@Excel(name = "数量", orderNum = "3", width = 25)
private Integer buyNum;
@Excel(name = "单位", orderNum = "4", width = 25)
private String unit;
@Excel(name = "产品图片", orderNum = "5", width = 15, height = 30, type = 2)
private String productSpecImg;
@Excel(name = "合作价格", orderNum = "6", width = 25, numFormat = "¥#,##0.00;¥-#,##0.00")
private BigDecimal opPrice;
@Excel(name = "市场指导价格", orderNum = "7", width = 25, numFormat = "¥#,##0.00;¥-#,##0.00")
private BigDecimal mkPrice;
}
package com.mmc.oms.model.qo.mall;
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;
import java.util.List;
/**
* @author: zj
* @Date: 2023/5/25 13:32
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BUserAccountQO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "关键字", required = false)
private String keyword;
@ApiModelProperty(value = "地区", required = false)
private String area;
@ApiModelProperty(value = "省份编码", required = false)
private Integer provinceCode;
@ApiModelProperty(value = "城市编码", required = false)
private Integer cityCode;
@ApiModelProperty(value = "县区编码", required = false)
private Integer districtCode;
@ApiModelProperty(value = "角色id", required = false)
private Integer roleId;
@ApiModelProperty(value = "账号状态:0禁用 1可用")
private Integer accountStatus;
@ApiModelProperty(value = "账号状态:0合伙人 1员工")
private Integer userType;
@ApiModelProperty(value = "用户id集合")
private List<Integer> userIds;
@ApiModelProperty(value = "推荐单位id")
private Integer rcdCompanyId;
@ApiModelProperty(value="单位集合", hidden = true)
private List<Integer> companys;
@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;
}
}
package com.mmc.oms.model.qo.mall;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Set;
/**
* @author: zj
* @Date: 2023/6/3 20:18
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.mall.qo.MallOrderGoodsInfoQO", description = "订单查询商品信息QO")
public class MallOrderGoodsInfoQO implements Serializable {
private static final long serialVersionUID = -3807569067697485137L;
private Integer userAccountId;
private Integer cooperationTagId;
private Set<Integer> mallProdSkuSpecIds;
private Set<Integer> mallIndstSkuSpecIds;
}
package com.mmc.oms.model.qo.mall;
import com.mmc.oms.common.publicinterface.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
* @author: zj
* @Date: 2023/6/3 16:16
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MallOrderQO implements Serializable {
private static final long serialVersionUID = 2731972353187680762L;
@ApiModelProperty(value = "关键字-订单编号", required = false)
private String keyword;
@ApiModelProperty(value = "关键字-用户", required = false)
private String keyword2;
@ApiModelProperty(value = "状态码")
private List<Integer> statusCode;
@ApiModelProperty(value = "合同签署状态")
private List<Integer> signStatus;
@ApiModelProperty(value = "开始时间")
private String startTime;
@ApiModelProperty(value = "结束时间")
private String endTime;
@ApiModelProperty(value = "订单对应的运营人员id", hidden = true)
private Integer operationId;
@ApiModelProperty(value = "销售id")
private Integer saleId;
@ApiModelProperty(value = "展示类型:0意向,1签约,2待发货,3待收货,4已完成,5已关闭")
private Integer showType;
@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;
}
}
\ No newline at end of file
package com.mmc.oms.model.qo.mall;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Set;
/**
* @author: zj
* @Date: 2023/6/3 20:13
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel( description = "产品购物车")
public class MallShopCarQO implements Serializable {
private static final long serialVersionUID = 8774480256151117025L;
private Integer userAccountId;
private Integer goodsInfoId;
private Integer saleStatus;
private Set<Integer> carIds;
}
\ No newline at end of file
package com.mmc.oms.model.qo.mall;
import com.mmc.oms.common.publicinterface.Page;
import io.swagger.annotations.ApiModel;
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;
import java.util.List;
/**
* author:zhenjie
* Date:2023/4/26
* time:14:43
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.model.qo.OrderBonusQO", description = "无人机城订单分成查询QO")
public class OrderBonusQO implements Serializable {
private static final long serialVersionUID = -6005993162561378862L;
@ApiModelProperty(value = "订单编号", required = false)
private String orderNo;
@ApiModelProperty(value = "是否已分成,0未分成, 1已分成", required = false, example = "0")
private Integer divide;
@ApiModelProperty(value = "关键字", required = false)
private String keyword;
@ApiModelProperty(value = "企业名称", required = false)
private String entName;
@ApiModelProperty(value = "用户id", required = false, hidden = true)
private List<Integer> mallUserIds;
@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;
}
}
package com.mmc.oms.model.qo.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* author:zhenjie
* Date:2022/11/10
* time:11:13
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.model.qo.ProductSpecPriceQO", description = "无人机城产品规格价格QO")
public class ProductSpecPriceQO implements Serializable {
private static final long serialVersionUID = 8086345532713123505L;
@ApiModelProperty("用户id")
private Integer userAccountId;
@ApiModelProperty("渠道等级标签")
private Integer channelClass;
@ApiModelProperty("产品规格id")
private List<Integer> productSpecIds;
}
package com.mmc.oms.model.qo.mall;
import com.mmc.oms.common.publicinterface.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
* <p>
* 用户地址表
* </p>
*
* @author dahang
* @since 2022-08-31
*/
@Data
@ApiModel(value="UserAddressVO", description="用户地址表")
@AllArgsConstructor
@NoArgsConstructor
public class UserAddressQO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "唯一标识")
@NotNull(message = "id不能为空",groups = {Update.class})
private Integer id;
@ApiModelProperty(value = "用户id")
private Integer userAccountId;
@ApiModelProperty(value = "收货人姓名")
private String takeName;
@ApiModelProperty(value = "收货人电话")
private String takePhone;
@ApiModelProperty(value = "收货地址")
private String takeRegion;
@ApiModelProperty(value = "收货详细地址")
private String takeAddress;
@ApiModelProperty(value = "使用类型;0默认,1普通")
private Integer type;
@ApiModelProperty(value = "逻辑删除")
private Integer isDeleted;
@ApiModelProperty(value = "逻辑删除")
private List<Integer> isDeleteds;
}
......@@ -37,7 +37,7 @@ public class GoodsAddVO implements Serializable {
private GoodsDetailVO goodsDetailVO;
@ApiModelProperty(value = "所属目录")
@NotNull(message = "所属目录不能为空", groups = {Update.class, Create.class})
private Integer sortTypeId;
private Integer directoryId;
@ApiModelProperty(value = "一级分类id")
@NotNull(message = "分类不能为空", groups = {Update.class, Create.class})
private Integer masterTypeId;
......
package com.mmc.oms.model.vo.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "ConfirmAfPayVO",description = "")
public class ConfirmAfPayVO implements Serializable {
private static final long serialVersionUID = -600663290244626198L;
@ApiModelProperty(value = "订单id",required = true)
@NotNull
private Long orderId;
@ApiModelProperty(value = "审核状态:0拒绝/1通过",required = true)
@NotNull
private Integer checkStatus;
@ApiModelProperty(value = "驳回原因")
private String refuseReason;
@ApiModelProperty(value = "支付凭证-图片")
private List<String> vouchr;
@ApiModelProperty(value = "凭证类型: 0全款 1预付款 2尾款 3验收单",required = true)
@NotNull
private Integer payType;
}
package com.mmc.oms.model.vo.mall;
import com.mmc.oms.common.publicinterface.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
/**
* @author: zj
* @Date: 2023/6/3 15:51
*/
public class ConfirmMallOrderVO implements Serializable {
private static final long serialVersionUID = 517823200496391461L;
@ApiModelProperty("购物车信息")
@NotNull(message = "inspectionId不能为空", groups = { Query.class })
private List<ConfirmShopVO> shopCarList;
@ApiModelProperty("收货地址id")
private Integer userAddressId;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "优惠券id")
private List<Integer> couponIds;
}
package com.mmc.oms.model.vo.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* author:zhenjie
* Date:2022/12/6
* time:10:48
*/
@Data
@ApiModel(value="ConfirmOrderNewVO", description="确认订单-联动修改")
@AllArgsConstructor
@NoArgsConstructor
public class ConfirmOrderNewVO implements Serializable {
private static final long serialVersionUID = -2271568624497001303L;
@ApiModelProperty(value = "订单信息")
private MallOrderVO mallOrderVO;
@ApiModelProperty(value = "收货信息")
private MallOrderExpressVO orderExpressVO;
}
package com.mmc.oms.model.vo.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* <p>
* 商城订单-联动修改
* </p>
*
* @author dahang
* @since 2022-09-05
*/
@Data
@ApiModel(value="ConfirmOrderVO", description="确认订单-联动修改")
@AllArgsConstructor
@NoArgsConstructor
public class ConfirmOrderVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "订单信息")
private MallOrderVO mallOrderVO;
@ApiModelProperty(value = "收货信息")
private UserAddressVO userAddressVO;
}
package com.mmc.oms.model.vo.mall;
import com.mmc.oms.common.publicinterface.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/6/3 15:52
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ConfirmShopVO implements Serializable {
private static final long serialVersionUID = 2718749736977016762L;
@ApiModelProperty("购物车id")
@NotNull(message = "购物车id不能为空!",groups = {Query.class})
private Integer shopCarId;
@ApiModelProperty(value = "区分产品或者行业,1产品,2行业", example = "1")
@NotNull(message = "商品所属分类不能为空!",groups = {Query.class})
private Integer directoryId;
}
\ No newline at end of file
package com.mmc.oms.model.vo.mall;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import java.io.Serializable;
import java.util.Set;
/**
* @author: zj
* @Date: 2023/6/8 14:01
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
public class MallConfirmOrderVO implements Serializable {
private static final long serialVersionUID = 8599190969887960567L;
@ApiModelProperty(value = "商品id")
private Integer goodsInfoId;
@ApiModelProperty(value = "购买数量")
private Integer buyNum;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "产品or行业, 1产品、2行业")
@NonNull
private Integer directoryId;
@ApiModelProperty(value = "商品最小规格id")
private Set<Integer> mallSpecIds;
@ApiModelProperty(value = "收货地址id")
private Integer userAddressId;
}
package com.mmc.oms.model.vo.mall;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/6/2 20:55
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MallOrderExpressVO implements Serializable {
private static final long serialVersionUID = 4364047174162933119L;
@ApiModelProperty(value = "orderId")
@NotNull
private Long orderId;
@ApiModelProperty(value = "物流公司代号")
@NotNull
private String sendExpCode;
@ApiModelProperty(value = "发货-物流单号")
@NotNull
private String sendExpNo;
@ApiModelProperty(value = "收货人姓名")
@NotNull
private String takeName;
@ApiModelProperty(value = "收货人电话")
@NotNull
private String takePhone;
@ApiModelProperty(value = "收货地区")
@NotNull
private String takeRegion;
@ApiModelProperty(value = "收货详细地址")
@NotNull
private String takeAddress;
@ApiModelProperty(value = "签收时间")
private Date receiveTime;
@ApiModelProperty(value = "是否签收")
private Integer receive;
}
package com.mmc.oms.model.vo.mall;
import com.mmc.oms.common.publicinterface.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* <p>
* 商城订单
* </p>
*
* @author dahang
* @since 2022-09-05
*/
@Data
@ApiModel(value="MallOrderVO", description="商城订单")
public class MallOrderVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "订单id")
private Long id;
@ApiModelProperty(value = "0全款购买 1分期付款")
private Integer payMethod;
@ApiModelProperty(value = "订单金额")
private BigDecimal orderAmount;
@ApiModelProperty(value = "订单关闭原因")
private String shutReason;
@ApiModelProperty(value = "订单交期")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date deliveryTime;
@ApiModelProperty(value = "付款期限-天数")
private Integer creditPeriodDays;
@ApiModelProperty(value = "付款期限")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date creditPeriod;
@ApiModelProperty(value = "推荐人id")
private Integer recMallUserId;
@ApiModelProperty(value = "用户收货地址id")
private Integer userAddressId;
@ApiModelProperty(value = "合同签署方式,1:线上,0:线下")
private Integer contractSignedWay;
@ApiModelProperty(value = "减免金额", hidden = true)
private BigDecimal deductAmount;
@ApiModelProperty(value = "优惠金额", hidden = true)
private BigDecimal discountAmount;
@ApiModelProperty(value = "实付金额", hidden = true)
private BigDecimal realityAmount;
@ApiModelProperty("(手写折扣金额)")
@NotNull(message = "折扣金额不能为空", groups = Update.class)
private BigDecimal manualDiscountAmount;
}
package com.mmc.oms.model.vo.mall;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import java.io.Serializable;
import java.util.Set;
/**
* @author: zj
* @Date: 2023/6/3 16:19
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
public class MallShopCarVO implements Serializable {
private static final long serialVersionUID = -1189463082638114016L;
@ApiModelProperty(value = "用户id")
private Integer userAccountId;
@ApiModelProperty(value = "商品id")
private Integer goodsInfoId;
@ApiModelProperty(value = "购买数量")
private Integer buyNum;
@ApiModelProperty(value = "推荐人id")
private Integer recMallUserId;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "产品or行业")
@NonNull
private Integer directoryId;
@ApiModelProperty(value = "商品最小规格id")
private Set<Integer> mallSkuSpecIds;
}
\ No newline at end of file
package com.mmc.oms.model.vo.mall;
import com.mmc.oms.common.publicinterface.Auto;
import com.mmc.oms.common.publicinterface.Confirm;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
* @author: zj
* @Date: 2023/6/3 15:48
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class OrderPayVO implements Serializable {
private static final long serialVersionUID = -7118568598001208480L;
@ApiModelProperty(value = "orderId")
@NotNull(message = "订单ID不能为空", groups = { Auto.class, Confirm.class })
private Long orderId;
@ApiModelProperty(value = "支付凭证-图片")
@NotNull(message = "支付凭证-图片不能为空", groups = { Confirm.class })
private List<String> vouchr;
@ApiModelProperty(value = "支付类型-0全款 1分期付款(预付款) 2尾款 3验收单")
@NotNull(message = "支付类型不能为空", groups = { Confirm.class })
private Integer payType;
@ApiModelProperty(value = "备注")
private String payRemark;
}
package com.mmc.oms.model.vo.mall;
import com.mmc.oms.entity.mall.MallIndstShopCarDO;
import com.mmc.oms.entity.mall.MallProdShopCarDO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* author:zhenjie
* Date:2022/11/9
* time:15:58
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ShopCarIdParamVO implements Serializable {
private static final long serialVersionUID = 4807709215940883915L;
private List<MallProdShopCarDO> mallProdShopCarDOS;
private List<MallIndstShopCarDO> mallIndstShopCarDOS;
}
package com.mmc.oms.model.vo.mall;
import com.mmc.oms.common.publicinterface.Insert;
import com.mmc.oms.common.publicinterface.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* <p>
* 用户地址表
* </p>
*
* @author dahang
* @since 2022-08-31
*/
@Data
@ApiModel(value="UserAddressVO", description="用户地址表")
@AllArgsConstructor
@NoArgsConstructor
public class UserAddressVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "唯一标识")
@NotNull(message = "id不能为空",groups = {Update.class})
private Integer id;
@ApiModelProperty(value = "用户id")
private Integer userAccountId;
@ApiModelProperty(value = "收货人姓名")
@Length(min = 1,max = 64,message = "收货人姓名不合法",groups = {Insert.class})
private String takeName;
@ApiModelProperty(value = "收货人电话")
private String takePhone;
@ApiModelProperty(value = "收货地址")
@Length(max =250,message = "收货地址过长",groups = {Insert.class})
private String takeRegion;
@ApiModelProperty(value = "收货详细地址")
@Length(max =250,message = "收货详细地址过长",groups = {Insert.class})
private String takeAddress;
@ApiModelProperty(value = "使用类型;0默认,1普通")
@NotNull(message = "类型不能为空",groups = {Insert.class})
private Integer type;
}
package com.mmc.oms.service.Impl;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.dao.UserAddressDao;
import com.mmc.oms.entity.mall.UserAddressDO;
import com.mmc.oms.model.dto.mall.UserAddressDTO;
import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.qo.mall.UserAddressQO;
import com.mmc.oms.model.vo.mall.UserAddressVO;
import com.mmc.oms.service.UserAddressService;
import com.mmc.oms.util.BeanCopyUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: zj
* @Date: 2023/6/7 10:15
*/
@Service
public class UserAddressServiceImpl implements UserAddressService {
@Autowired
private UserAddressDao userAddressDao;
@Override
public ResultBody insert(UserAddressVO param, BaseAccountDTO currentAccount) {
// 如果之前有默认的话,就要修改为非默认
isDefault(param, currentAccount.getUserAccountId());
UserAddressDO userAddressDO = BeanCopyUtils.properties(param, new UserAddressDO());
userAddressDO.setUserAccountId(currentAccount.getUserAccountId());
userAddressDao.insert(userAddressDO);
return ResultBody.success();
}
private void isDefault(UserAddressVO param, Integer userAccountId) {
if(param.getType()!=null && param.getType().equals(0)){
userAddressDao.update(new UserAddressDO(userAccountId,1));
}
}
@Override
public ResultBody update(UserAddressVO param, BaseAccountDTO currentAccount) {
isDefault(param,currentAccount.getUserAccountId());
userAddressDao.removeById(param.getId());
userAddressDao.insert(BeanCopyUtils.properties(param, new UserAddressDO()));
return ResultBody.success();
}
@Override
public ResultBody deleteById(Integer id) {
userAddressDao.removeById(id);
return ResultBody.success();
}
@Override
public UserAddressDTO getUserAddressInfo(Integer userAddressId) {
UserAddressDO userAddressDO = userAddressDao.selectById(userAddressId);
UserAddressDTO userAddressDTO = BeanCopyUtils.properties(userAddressDO, new UserAddressDTO());
return userAddressDTO;
}
@Override
public ResultBody<List<UserAddressDTO>> selectList(UserAddressQO param, BaseAccountDTO currentAccount) {
param.setUserAccountId(currentAccount.getUserAccountId());
UserAddressDO userAddressDO = BeanCopyUtils.properties(param, new UserAddressDO());
List<UserAddressDO> list = userAddressDao.selectList(userAddressDO);
List<UserAddressDTO> collect = list.stream().map(item -> BeanCopyUtils.properties(item, new UserAddressDTO())).collect(Collectors.toList());
return ResultBody.success(collect);
}
}
package com.mmc.oms.service;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.mall.UserAddressDTO;
import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.qo.mall.UserAddressQO;
import com.mmc.oms.model.vo.mall.UserAddressVO;
import java.util.List;
/**
* @author: zj
* @Date: 2023/6/7 10:15
*/
public interface UserAddressService {
ResultBody insert(UserAddressVO param, BaseAccountDTO currentAccount);
ResultBody update(UserAddressVO param, BaseAccountDTO currentAccount);
ResultBody deleteById(Integer id);
UserAddressDTO getUserAddressInfo(Integer userAddressId);
ResultBody<List<UserAddressDTO>> selectList(UserAddressQO param, BaseAccountDTO currentAccount);
}
package com.mmc.oms.service.mall;
import com.mmc.oms.common.result.PageResult;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.entity.mall.MallIndstShopCarDO;
import com.mmc.oms.entity.mall.MallProdShopCarDO;
import com.mmc.oms.model.dto.mall.ConfirmGoodsInfoDTO;
import com.mmc.oms.model.dto.mall.CountShowTypeDTO;
import com.mmc.oms.model.dto.mall.MallOrderDTO;
import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.dto.user.UserAccountSimpleDTO;
import com.mmc.oms.model.vo.mall.ConfirmMallOrderVO;
import com.mmc.oms.model.vo.mall.MallConfirmOrderVO;
import java.util.List;
/**
* author:zhenjie
* Date:2022/10/18
* time:16:07
*/
public interface AppMallOrderService {
ResultBody addMallOrder(ConfirmMallOrderVO param, BaseAccountDTO currentAccount) throws Exception;
ResultBody<ConfirmGoodsInfoDTO> confirmShop(List<MallProdShopCarDO> mallProdShopCarDOS, List<MallIndstShopCarDO> mallIndstShopCarDOS, UserAccountSimpleDTO userAccountSimpleDTO);
PageResult listAPPPage(Integer pageNo, Integer pageSize, String keyword, Integer showType, String orderType, BaseAccountDTO currentAccount);
/**
* 得到分享订单状态
*
* @param orderId 订单id
* @return {@link ResultBody}
*/
ResultBody getShareOrderStatus(Long orderId);
/**
* 接受分享
*
* @param orderId 订单id
* @param shareId 共享id
* @return {@link ResultBody}
*/
ResultBody acceptShare(Long orderId, Integer shareId);
CountShowTypeDTO countListPage(BaseAccountDTO currentAccount);
ResultBody returnContractById(Long orderId);
/**
* v1.0.0确认订单
* @param param
* @param currentAccount
* @param token
* @return
*/
ResultBody confirmMallOrder(MallConfirmOrderVO param, BaseAccountDTO currentAccount, String token);
/**
* v1.0.0提交订单
* @param param
* @param currentAccount
* @param token
* @return
*/
ResultBody commitMallOrder(MallConfirmOrderVO param, BaseAccountDTO currentAccount, String token);
/**
* v1.0.0订单详情
* @param orderId
* @param currentAccount
* @return
*/
MallOrderDTO getMallOrderDetailById(Long orderId, BaseAccountDTO currentAccount);
}
package com.mmc.oms.service.mall;
import com.mmc.oms.common.KDNCallBackResponse;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.kdn.KdnDicDTO;
import java.util.List;
import java.util.Map;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月23日 下午6:13:41
* @explain 类说明
*/
public interface KdnExpService {
List<KdnDicDTO> listKdnDic();
KDNCallBackResponse callbackExpressInfo(Map<String, Object> map);
ResultBody testCallbackExpressInfo(String port, Long orderId, String shipperCode, String logisticCode, String phone) throws Exception;
}
package com.mmc.oms.service.mall;
import com.mmc.oms.common.result.PageResult;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.entity.mall.MallOrderDO;
import com.mmc.oms.model.dto.mall.MallOrderDTO;
import com.mmc.oms.model.dto.mall.MallOrderPageDTO;
import com.mmc.oms.model.dto.mall.MallStatusDTO;
import com.mmc.oms.model.dto.mall.OrderPayDTO;
import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.qo.mall.MallOrderQO;
import com.mmc.oms.model.vo.mall.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
import java.util.List;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月20日 下午7:09:06
* @explain 类说明
*/
public interface MallOrderService {
List<MallStatusDTO> listOrderStatus();
// PageResult listPage(Integer pageNo, Integer pageSize, String keyword, String orderType, BaseAccountDTO cuser); // 小程序分页
/**
* 买家上传支付凭证-已确认(待上传支付凭证)》已上传支付凭证(待确认收款)
*
* @param param
* @param cuser
* @return
*/
ResultBody orderPay(OrderPayVO param, BaseAccountDTO cuser);// 买家上传支付凭证
ResultBody afterPay(OrderPayVO param, BaseAccountDTO cuser);
ResultBody orderPayFinish(OrderPayVO param, BaseAccountDTO cuser);// 平台上传尾款凭证--》订单完成
/**
* 平台确认收款-已上传支付凭证(待确认收款)》已确认收款(待确认库存)
* @param orderId
* @param checkStatus
* @param refuseReason
* @param vouchr
* @param type
* @param cuser
* @return
*/
ResultBody confirmCost(Long orderId, Integer checkStatus, String refuseReason, List<String> vouchr, Integer type, BaseAccountDTO cuser);// 平台确认收款
ResultBody confirmAfPay(Long orderId, Integer checkStatus, String refuseReason, List<String> vouchr, Integer type, BaseAccountDTO cuser);
/**
* 平台确认库存-已确认收款(待确认库存)》已确认库存(待发货)
*
* @param orderId
* @param cuser
* @return
*/
ResultBody confirmInventory(Long orderId, BaseAccountDTO cuser);// 平台确认库存
/**
* 买家确认收货-已发货(待收货)》已收货(待订单完成)
* @param param
* @param cuser
* @return
*/
ResultBody confirmReceipt(OrderPayVO param, BaseAccountDTO cuser);// 买家确认收货
/**
* 取消订单
*/
ResultBody closeOrder(Long orderId, String shutReason, BaseAccountDTO cuser);
/**
* 订单详情
*/
// MallOrderDTO orderDetail(Long orderId, BaseAccountDTO cuser);
/**
* 订单详情--小程序
*/
// MallOrderDTO appOrderDetail(Long orderId, BaseAccountDTO cuser);
List<OrderPayDTO> listOrderPayInfo(Long orderId, Integer payType, BaseAccountDTO cuser);
int countMenuRedPoint(BaseAccountDTO cuser);
ResultBody confirmOrderVerOne(ConfirmOrderVO confirmOrderVO, BaseAccountDTO currentAccount);
void sendOrderStatusChangeMsg(Long mallOrderId);
/**
* 关闭订单
* @param id
* @param baseAccountDTO
* @return
*/
ResultBody closeMallOrder(Long id, BaseAccountDTO baseAccountDTO);
ResultBody updateMallOrder(Long orderId, Date singerTime);
ResultBody allocateOperation(Long orderId , Integer operationId);
ResultBody afterPayAndCheck(List<OrderPayVO> param, BaseAccountDTO currentAccount);
ResultBody continuePayAndCheck(List<OrderPayVO> param, BaseAccountDTO currentAccount);
void confirmAfPayVerOne(ConfirmAfPayVO confirmPay, BaseAccountDTO currentAccount);
ResultBody confirmCostVerOne(ConfirmAfPayVO confirmPay, BaseAccountDTO currentAccount);
ResultBody updateStatusMallOrder(Long orderId, Integer signStatus);
void mallOrderCreditPeriodTask();
PageResult listPageManagerVerOne(MallOrderQO param, BaseAccountDTO currentAccount);
List<MallOrderPageDTO> buildMallOrderPageDTO(List<MallOrderDO> list);
void listPageManagerExportVerOne(MallOrderQO param, HttpServletResponse response, BaseAccountDTO currentAccount);
MallOrderDTO getMallOrderDetailById(Long orderId, BaseAccountDTO currentAccount, String token);
ResultBody updateMallOrderRemark(Long orderId, String remark);
ResultBody confirmOrderNew(ConfirmOrderNewVO confirmOrderNewVO, BaseAccountDTO currentAccount);
ResultBody sendOrderGoodsNew(MallOrderExpressVO param, BaseAccountDTO currentAccount) throws Exception;
void exportMultiSheet(HttpServletResponse response, List<Long> orderIds) throws IOException;
void listOperationalDataExport(MallOrderQO param, HttpServletResponse response, BaseAccountDTO currentAccount) throws IOException;
ResultBody feignOrderUseCoupon(List<Long> orderIds);
ResultBody getOrderInfoByOrderNo(String orderNo);
void operationalDataExport(List<Long> orderIds, HttpServletResponse response, BaseAccountDTO currentAccount) throws IOException;
}
package com.mmc.oms.service.mall;
import com.mmc.oms.common.result.ResultBody;
/**
* author:zhenjie
* Date:2023/2/13
* time:14:30
*/
public interface MallOrderServiceSub{
ResultBody feignAutoCompleteMOrder();
}
package com.mmc.oms.service.mall;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.order.ExpressInfoDTO;
import com.mmc.oms.model.vo.mall.MallOrderExpressVO;
import java.util.List;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月23日 下午5:20:23
* @explain 类说明
*/
public interface OrderExpressService {
List<ExpressInfoDTO> listExpressInfo();
ResultBody updateOrderExpress(MallOrderExpressVO mallOrderExpressVO);
}
package com.mmc.oms.service.mall;
import com.mmc.oms.entity.mall.MallOrderSimpleDO;
import com.mmc.oms.entity.mall.OrderGoodsIndstProdListBO;
import com.mmc.oms.entity.mall.OrderGoodsIndstProdListDO;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author dahang
* @since 2022-10-29
*/
public interface OrderGoodsIndstService {
/**
* 根据订单id,查询产品信息和产品规格
*/
List<OrderGoodsIndstProdListBO> getProductInfoByMallId(Long orderId);
List<MallOrderSimpleDO> listOrderGoodsIndstBaseInfo(List<Long> mallOrderIds);
List<OrderGoodsIndstProdListDO> listIMallOrderProdList(Long orderId);
}
package com.mmc.oms.service.mall;
import com.mmc.oms.entity.mall.MallOrderSimpleDO;
import com.mmc.oms.entity.mall.OrderGoodsProdDetailBO;
import com.mmc.oms.entity.mall.OrderGoodsProdDetailDO;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author dahang
* @since 2022-10-29
*/
public interface OrderGoodsProdService {
List<OrderGoodsProdDetailBO> getProductInfoByMallId(Long orderId);
List<MallOrderSimpleDO> listOrderGoodsProdBaseInfo(List<Long> mallOrderIds);
List<OrderGoodsProdDetailDO> listPMallOrderProdList(Long orderId);
}
package com.mmc.oms.service.mall;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.vo.mall.ConfirmMallOrderVO;
import com.mmc.oms.model.vo.mall.MallShopCarVO;
import java.util.List;
/**
* author:zhenjie
* Date:2022/10/11
* time:10:29
*/
public interface ShoppingTrolleyService {
ResultBody addGoods(MallShopCarVO mallShopCarVO, BaseAccountDTO currentAccount);
ResultBody batchRemove(Integer type, List<Integer> carIds, BaseAccountDTO currentAccount);
ResultBody listPage(Integer pageNo, Integer pageSize, BaseAccountDTO currentAccount);
ResultBody updateBuyNum(Integer directoryId, Integer mallShopCarId, Integer buyNum, BaseAccountDTO currentAccount);
ResultBody confirmShop(ConfirmMallOrderVO param, BaseAccountDTO currentAccount);
// ResultBody listShoppingTrolleyExport(List<ConfirmShopVO> shopCarList, BaseAccountDTO currentAccount, HttpServletResponse response) throws IOException;
}
package com.mmc.oms.service.mall.impl;
import com.alibaba.fastjson.JSONObject;
import com.mmc.oms.client.PmsClient;
import com.mmc.oms.client.UserClient;
import com.mmc.oms.common.*;
import com.mmc.oms.common.publicinterface.Publicsher;
import com.mmc.oms.common.result.PageResult;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.common.util.CodeUtil;
import com.mmc.oms.dao.mall.AppMallOrderDao;
import com.mmc.oms.dao.mall.MallOrderDao;
import com.mmc.oms.dao.mall.ShoppingTrolleyDao;
import com.mmc.oms.entity.mall.*;
import com.mmc.oms.enums.OrderStatus;
import com.mmc.oms.model.dto.coupon.CouponUserDTO;
import com.mmc.oms.model.dto.coupon.CouponUserOrderDTO;
import com.mmc.oms.model.dto.mall.*;
import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.dto.user.MallUserDTO;
import com.mmc.oms.model.dto.user.UserAccountDTO;
import com.mmc.oms.model.dto.user.UserAccountSimpleDTO;
import com.mmc.oms.model.qo.mall.MallOrderGoodsInfoQO;
import com.mmc.oms.model.qo.mall.MallShopCarQO;
import com.mmc.oms.model.vo.mall.ConfirmMallOrderVO;
import com.mmc.oms.model.vo.mall.ConfirmShopVO;
import com.mmc.oms.model.vo.coupon.CouponUserVO;
import com.mmc.oms.model.vo.mall.MallConfirmOrderVO;
import com.mmc.oms.service.UserAddressService;
import com.mmc.oms.service.mall.AppMallOrderService;
import com.mmc.oms.service.mall.MallOrderService;
import com.mmc.oms.util.SnowFlake;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* author:zhenjie
* Date:2022/10/18
* time:16:07
*/
@Service
@Slf4j
public class AppMallOrderServiceImpl implements AppMallOrderService {
@Autowired
private AppMallOrderDao appMallOrderDao;
@Autowired
private ShoppingTrolleyDao shoppingTrolleyDao;
//
// @Autowired
// private MallGoodsClient mallGoodsClient;
@Autowired
private MallOrderDao mallOrderDao;
@Autowired
private Publicsher publicsher;
@Autowired
private MallOrderService mallOrderService;
// @Autowired
// private MallUserPayClient mallUserPayClient;
// @Autowired
// private FddServletClient fddServletClient;
// @Autowired
// private UserAppApi userAppApi;
@Autowired
private UserClient userClient;
@Autowired
private UserAddressService userAddressService;
//
// @Autowired
// private PayAppApi payAppApi;
//
// @Autowired
// private PmsAppApi pmsAppApi;
@Autowired
private PmsClient pmsClient;
@Override
@Transactional
public ResultBody addMallOrder(ConfirmMallOrderVO param, BaseAccountDTO cuser) throws Exception {
//校验商品信息是否有改动
//查找购物车信息
//查询用户信息、渠道等级信息
//根据购物车信息查询商品信息
//校验商品有效性
//根据购物车信息计算订单金额
//添加总订单信息
//添加订单sku信息
//添加用户收货地址
//修改购物车信息
//订单金额精度
if (CollectionUtils.isEmpty(param.getShopCarList())) {
return ResultBody.error(ResultEnum.PARAM_DEFECT);
}
//查询用户信息
//MallUserDTO muser = mallUserClient.feignGetSimpleUserInfo(cuser.getId());
UserAccountSimpleDTO userAccountSimpleDTO = userClient.feignGetUserSimpleInfo(cuser.getUserAccountId(), null);
if (StringUtils.isEmpty(userAccountSimpleDTO.getPhoneNum())) {
return ResultBody.error(ResultEnum.AUTH_ACCOUNT_ERROR);
}
//对购物车id进行分类,产品或行业
Set<Integer> prodIds = new HashSet<>();
Set<Integer> indstIds = new HashSet<>();
for (ConfirmShopVO confirmShopVO : param.getShopCarList() ){
if (confirmShopVO.getDirectoryId().toString().equals("1")){
prodIds.add(confirmShopVO.getShopCarId());
}
if (confirmShopVO.getDirectoryId().toString().equals("2")){
indstIds.add(confirmShopVO.getShopCarId());
}
}
if(indstIds.size() > 1){
return ResultBody.error(ResultEnum.SHOP_CAR_SIZE_MORE_2);
}
List<MallProdShopCarDO> mallProdShopCarDOS = new ArrayList<>();
if(!CollectionUtils.isEmpty(prodIds)){
MallShopCarQO prodMallShopCarQO = new MallShopCarQO();
prodMallShopCarQO.setUserAccountId(cuser.getUserAccountId());
prodMallShopCarQO.setCarIds(prodIds);
mallProdShopCarDOS = shoppingTrolleyDao.listMallProdShopCar(prodMallShopCarQO);
log.info("购物车参数mallProdShopCarDOS==>[{}]", JSONObject.toJSONString(mallProdShopCarDOS));
}
List<MallIndstShopCarDO> mallIndstShopCarDOS = new ArrayList<>();
if(!CollectionUtils.isEmpty(indstIds)){
MallShopCarQO indstMallShopCarQO = new MallShopCarQO();
indstMallShopCarQO.setUserAccountId(cuser.getUserAccountId());
indstMallShopCarQO.setCarIds(indstIds);
mallIndstShopCarDOS = shoppingTrolleyDao.listMallIndstShopCar(indstMallShopCarQO);
log.info("购物车参数mallIndstShopCarDOS==>[{}]", JSONObject.toJSONString(mallIndstShopCarDOS));
}
if(CollectionUtils.isEmpty(mallProdShopCarDOS) && CollectionUtils.isEmpty(mallIndstShopCarDOS)){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
return this.confirmMallOrder(mallProdShopCarDOS, mallIndstShopCarDOS, param, userAccountSimpleDTO);
}
@Override
public ResultBody<ConfirmGoodsInfoDTO> confirmShop(List<MallProdShopCarDO> mallProdShopCarDOS, List<MallIndstShopCarDO> mallIndstShopCarDOS, UserAccountSimpleDTO userAccountSimpleDTO) {
//返回的结果
ConfirmGoodsInfoDTO confirmGoodsInfoDTO = new ConfirmGoodsInfoDTO();
//查询商品信息,价格信息
MallOrderGoodsInfoQO mallOrderGoodsInfoQO = new MallOrderGoodsInfoQO();
mallOrderGoodsInfoQO.setUserAccountId(userAccountSimpleDTO.getId());
mallOrderGoodsInfoQO.setCooperationTagId(userAccountSimpleDTO.getCooperationTagId());
//订单金额
BigDecimal orderAmount = BigDecimal.ZERO;
//产品sku信息
List<OrderGoodsProdDTO> orderGoodsProdDTOList = new ArrayList<>();
//行业sku信息
List<OrderGoodsIndstDTO> orderGoodsIndstDTOList = new ArrayList<>();
//处理产品商品
if(!CollectionUtils.isEmpty(mallProdShopCarDOS)){
confirmGoodsInfoDTO.setDirectoryId(1);
//设置查询商品信息的参数,mallProdSkuInfoSpecId
mallOrderGoodsInfoQO.setMallProdSkuSpecIds(new HashSet<>());
for(MallProdShopCarDO mallProdShopCarDO : mallProdShopCarDOS){
mallOrderGoodsInfoQO.getMallProdSkuSpecIds().addAll(mallProdShopCarDO.getShopCarDetailDOS().stream().map(d -> d.getMallProdSkuInfoSpecId()).collect(Collectors.toSet()));
}
//设置mallProdSkuInfoSpecId对应的购物车详情id
Map<Integer, Integer> prodSkuSpecIdCarMap = new HashMap<>();
for (MallProdShopCarDO mallProdShopCarDO : mallProdShopCarDOS) {
for (MallProdShopCarDetailDO mallProdShopCarDetailDO : mallProdShopCarDO.getShopCarDetailDOS()){
//设置产品商品小规格对应的购物车详情id
prodSkuSpecIdCarMap.put(mallProdShopCarDetailDO.getMallProdSkuInfoSpecId(), mallProdShopCarDetailDO.getId());
}
}
//查询商品详细信息
orderGoodsProdDTOList = pmsClient.feignListProdGoodsSkuInfo(mallOrderGoodsInfoQO, null);
//----------------------判空
if(CollectionUtils.isEmpty(orderGoodsProdDTOList)){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
//判断是否有无效的产品商品
for (OrderGoodsProdDTO orderGoodsProdDTO : orderGoodsProdDTOList){
if(orderGoodsProdDTO.getDeleted() == 0 && orderGoodsProdDTO.getShelfStatus() == 1){
for (OrderGoodsProdDetailDTO orderGoodsProdDetailDTO : orderGoodsProdDTO.getOrderGoodsProdDetailDTOS()){
if( !(orderGoodsProdDetailDTO.getSpecDeleted() == 0 && orderGoodsProdDetailDTO.getSkuInfoDeleted() == 0 && orderGoodsProdDetailDTO.getSkuSpecDeleted() == 0)){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
}
}else {
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
}
List<OrderGoodsProdDO> orderGoodsProdDOS = this.generatedProdOrder(mallProdShopCarDOS, orderGoodsProdDTOList);
if(orderGoodsProdDOS == null){
return ResultBody.error(ResultEnum.SPEC_NOT_CONFIG_PRICE);
}
//把每个商品所有规格金额加起来,订单金额
for (OrderGoodsProdDO orderGoodsProdDO : orderGoodsProdDOS){
orderAmount = orderAmount.add(orderGoodsProdDO.getGoodsAmount());
}
//根据品牌id,查询个人拥有的优惠券并做处理
// List<CouponUserOrderDTO> couponUserOrderDTOList = this.findUserCoupon(orderGoodsProdDOS, muser.getId(), orderAmount);
// List<CouponUserOrderDTO> usable = couponUserOrderDTOList.stream().filter(d->"usable".equals(d.getValidStr())).collect(Collectors.toList());
// List<CouponUserOrderDTO> unusable = couponUserOrderDTOList.stream().filter(d->"unusable".equals(d.getValidStr())).collect(Collectors.toList());
// confirmGoodsInfoDTO.setUsableCoupon(usable);
// confirmGoodsInfoDTO.setDisableCoupon(unusable);
List<OrderGoodsProdDetailDO> orderGoodsProdDetailDOList = new ArrayList<>();
for (OrderGoodsProdDO orderGoodsProdDO : orderGoodsProdDOS){
if(!CollectionUtils.isEmpty(orderGoodsProdDO.getOrderGoodsProdDetailDOList())){
for (OrderGoodsProdDetailDO orderGoodsProdDetailDO : orderGoodsProdDO.getOrderGoodsProdDetailDOList()){
//设置商品订单id
orderGoodsProdDetailDO.setOrderGoodsProdId(orderGoodsProdDO.getId());
orderGoodsProdDetailDO.setMallProdShopCarDetailId(prodSkuSpecIdCarMap.get(orderGoodsProdDetailDO.getMallProdSkuInfoSpecId()));
orderGoodsProdDetailDOList.add(orderGoodsProdDetailDO);
}
}
}
List<OrderGoodsProdDetailDTO> collect = orderGoodsProdDetailDOList.stream().map(d -> d.buildOrderGoodsProdDetailDTO()).collect(Collectors.toList());
confirmGoodsInfoDTO.setOrderGoodsProdDetailDTOS(collect);
}
//处理行业商品,过程类似产品商品
if(!CollectionUtils.isEmpty(mallIndstShopCarDOS)){
confirmGoodsInfoDTO.setDirectoryId(2);
mallOrderGoodsInfoQO.setMallIndstSkuSpecIds(new HashSet<>());
for (MallIndstShopCarDO mallIndstShopCarDO : mallIndstShopCarDOS){
mallOrderGoodsInfoQO.getMallIndstSkuSpecIds().addAll(mallIndstShopCarDO.getShopCarDetailDOS().stream().map(d->d.getMallIndstSkuInfoSpecId()).collect(Collectors.toSet()));
}
Map<Integer, Integer> indstSkuSpecIdCarMap = new HashMap<>();
for (MallIndstShopCarDO mallIndstShopCarDO : mallIndstShopCarDOS) {
for (MallIndstShopCarDetailDO mallIndstShopCarDetailDO : mallIndstShopCarDO.getShopCarDetailDOS()){
//设置行业小规格对应的购物车详情id
indstSkuSpecIdCarMap.put(mallIndstShopCarDetailDO.getMallIndstSkuInfoSpecId(), mallIndstShopCarDetailDO.getId());
}
}
orderGoodsIndstDTOList = pmsClient.feignListIndstGoodsSkuInfo(mallOrderGoodsInfoQO, null);
if(CollectionUtils.isEmpty(orderGoodsIndstDTOList)){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
//判断是否有无效的行业商品
for (OrderGoodsIndstDTO orderGoodsIndstDTO : orderGoodsIndstDTOList){
if(orderGoodsIndstDTO.getValid()){
for (OrderGoodsIndstDetailDTO orderGoodsIndstDetailDTO : orderGoodsIndstDTO.getOrderGoodsIndstDetailDTOS()){
if(!orderGoodsIndstDetailDTO.getValid()){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
}
}else {
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
}
List<OrderGoodsIndstDO> orderGoodsIndstDOS = this.generatedIndstOrder(mallIndstShopCarDOS, orderGoodsIndstDTOList);
if(orderGoodsIndstDOS == null){
return ResultBody.error(ResultEnum.SPEC_NOT_CONFIG_PRICE);
}
//订单金额
for (OrderGoodsIndstDO orderGoodsIndstDO : orderGoodsIndstDOS){
orderAmount = orderAmount.add(orderGoodsIndstDO.getGoodsAmount());
}
//处理方案对应的产品清单
List<OrderGoodsIndstProdListDO> industryProductList = new ArrayList<>();
for (OrderGoodsIndstDO orderGoodsIndstDO : orderGoodsIndstDOS){
if(!CollectionUtils.isEmpty(orderGoodsIndstDO.getOrderGoodsIndstDetailDOS())){
for (OrderGoodsIndstDetailDO orderGoodsIndstDetailDO : orderGoodsIndstDO.getOrderGoodsIndstDetailDOS()){
orderGoodsIndstDetailDO.setOrderGoodsIndstId(orderGoodsIndstDO.getId());
orderGoodsIndstDetailDO.setMallIndstShopCarDetailId(indstSkuSpecIdCarMap.get(orderGoodsIndstDetailDO.getMallIndstSkuInfoSpecId()));
}
for (OrderGoodsIndstDetailDO orderGoodsIndstDetailDO : orderGoodsIndstDO.getOrderGoodsIndstDetailDOS()){
if(!CollectionUtils.isEmpty(orderGoodsIndstDetailDO.getOrderGoodsIndstProdListDOS())){
for (OrderGoodsIndstProdListDO orderGoodsIndstProdListDO : orderGoodsIndstDetailDO.getOrderGoodsIndstProdListDOS()){
orderGoodsIndstProdListDO.setOrderGoodsIndstDetailId(orderGoodsIndstDetailDO.getMallIndstShopCarDetailId());
industryProductList.add(orderGoodsIndstProdListDO);
}
}
}
}
}
List<OrderGoodsIndstProdListDTO> collect = industryProductList.stream().map(d -> d.buildOrderGoodsIndstProdListDTO()).collect(Collectors.toList());
confirmGoodsInfoDTO.setOrderGoodsIndstProdListDTOS(collect);
}
confirmGoodsInfoDTO.setOrderAmount(orderAmount);
UUID uuid = UUID.randomUUID();
log.info("线程id[{}],muser==>[{}],mallProdShopCarDOS==>[{}],orderGoodsIndstDTOList==>[{}],confirmGoodsInfoDTO==>[{}]",uuid, JSONObject.toJSONString(userAccountSimpleDTO), JSONObject.toJSONString(mallProdShopCarDOS), JSONObject.toJSONString(orderGoodsIndstDTOList), JSONObject.toJSONString(confirmGoodsInfoDTO));
return ResultBody.success(confirmGoodsInfoDTO);
}
private List<CouponUserOrderDTO> findUserCoupon(List<OrderGoodsProdDO> orderGoodsProdDOList, Integer userAccountId, BigDecimal orderAmount) {
/**
* 非VIP规则
* A.多张非活动券,使用优惠最高的一张;
* B.多张活动券,最多叠加2张;*******暂时不做*******,需要把优惠均摊到每个
* C.活动券和非活动券都有,使用优惠最高的一张;
*
* VIP规则?
* 可以多张叠加,在订单总价格优惠
*/
Set<Integer> brandIds = new HashSet<>();
Map<Integer, BigDecimal> brandPriceMap = new HashMap<>();
for (OrderGoodsProdDO orderGoodsProdDO : orderGoodsProdDOList) {
for (OrderGoodsProdDetailDO orderGoodsProdDetailDO : orderGoodsProdDO.getOrderGoodsProdDetailDOList()) {
if ( orderGoodsProdDetailDO.getBrandInfoId() == null ){
continue;
}
//获取规格的品牌id
brandIds.add(orderGoodsProdDetailDO.getBrandInfoId());
//计算各品牌总价格
if(brandPriceMap.get(orderGoodsProdDetailDO.getBrandInfoId()) == null){
System.out.println("brandPrice1----->" + JSONObject.toJSON(orderGoodsProdDetailDO.getSkuSpecAmount()));
brandPriceMap.put(orderGoodsProdDetailDO.getBrandInfoId(), orderGoodsProdDetailDO.getSkuSpecAmount());
}else {
System.out.println("brandPrice2----->" + JSONObject.toJSON(orderGoodsProdDetailDO.getSkuSpecAmount()));
brandPriceMap.put(orderGoodsProdDetailDO.getBrandInfoId(), brandPriceMap.get(orderGoodsProdDetailDO.getBrandInfoId()).add(orderGoodsProdDetailDO.getSkuSpecAmount()));
//brandPriceMap.get(orderGoodsProdDetailDO.getBrandInfoId()).add(orderGoodsProdDetailDO.getSkuSpecAmount());
}
}
}
System.out.println("brandPriceMap----->" + JSONObject.toJSON(brandPriceMap));
System.out.println("brandIds----->" + JSONObject.toJSON(brandIds));
List<Integer> listBrandIds = new ArrayList<>(brandIds);
//获取用户所有优惠券
// List<CouponUserOrderDTO> couponUserOrderDTOList = mallUserPayClient.feignCoupons(listBrandIds, userAccountId);
List<CouponUserOrderDTO> couponUserOrderDTOList = null;
couponUserOrderDTOList.removeIf(d->d.getStatus() == 1);
//遍历每张可用的优惠券
for (CouponUserOrderDTO couponUserOrderDTO : couponUserOrderDTOList) {
couponUserOrderDTO.setMinPrice(couponUserOrderDTO.getMinPrice() == null ? BigDecimal.ZERO : couponUserOrderDTO.getMinPrice());
System.out.println(couponUserOrderDTO.toString());
if(couponUserOrderDTO.getValidStr().equals("usable")){
//处理品牌券
if (couponUserOrderDTO.getPrimaryKey() != null && couponUserOrderDTO.getPrimaryKey().length() > 0){
System.out.println("PrimaryKey:" + couponUserOrderDTO.getPrimaryKey());
couponUserOrderDTO.setBrandIds(Arrays.asList(couponUserOrderDTO.getPrimaryKey().split(",")));
System.out.println("setBrandIds:" + couponUserOrderDTO.getBrandIds());
BigDecimal discountPrice = BigDecimal.ZERO;
//判断有效的
//按照优惠券包含的品牌,计算这个优惠券可以打折多少(这个券可以打折的金额)
// brandPriceMap.forEach((key, value)->{
// System.out.println("key:" + key);
// if(couponUserOrderDTO.getBrandIds().contains(key.toString()) && couponUserOrderDTO.getUseType().equals(2)){
// System.out.println("add value:" + value);
// discountPrice.add(value);
// System.out.println("discountPrice:" + discountPrice);
// }
// });
for (Integer key : brandPriceMap.keySet()){
if (key == null){
continue;
}
if (couponUserOrderDTO.getBrandIds().contains(key.toString()) && couponUserOrderDTO.getUseType().equals(2)){
discountPrice = discountPrice.add(brandPriceMap.get(key));
}
}
System.out.println("discountPrice:" + discountPrice);
//说明这个券是品牌券(这张券可以对多少金额进行打折)
if (discountPrice.compareTo(BigDecimal.ZERO) > 0){
if(couponUserOrderDTO.getCouponType().equals(1)){
//折扣券
//根据优惠规则进行优惠
if (couponUserOrderDTO.getMinPrice().compareTo(discountPrice) <= 0) {
//折扣的金额
BigDecimal discountMoney = BigDecimal.ONE.subtract(couponUserOrderDTO.getCouponDiscount().multiply(BigDecimal.valueOf(0.1))).multiply(discountPrice);
//看是否有折扣限制
if (couponUserOrderDTO.getPreferentialLimit() == null){
couponUserOrderDTO.setDiscountCouponPrice(discountMoney);
}else {
//不能超过最高优惠
couponUserOrderDTO.setDiscountCouponPrice(discountMoney.compareTo(couponUserOrderDTO.getPreferentialLimit()) > 0 ? couponUserOrderDTO.getPreferentialLimit() : discountMoney);
}
}
}else if (couponUserOrderDTO.getCouponType().equals(2)){
//满减券
if (couponUserOrderDTO.getMinPrice().compareTo(discountPrice) <= 0) {
couponUserOrderDTO.setDiscountCouponPrice(couponUserOrderDTO.getCouponMoney());
}
}else if (couponUserOrderDTO.getCouponType().equals(3)){
//无门槛券,分为未使用和使用中
if (couponUserOrderDTO.getStatus().equals(0)){
//未使用的优惠券
if (couponUserOrderDTO.getCouponMoney().compareTo(discountPrice) > 0){
couponUserOrderDTO.setDiscountCouponPrice(discountPrice);
}else {
couponUserOrderDTO.setDiscountCouponPrice(couponUserOrderDTO.getCouponMoney());
}
}else {
//使用中的优惠券,使用中的优惠券判断剩余余额就好
if (couponUserOrderDTO.getRemainingBalance().compareTo(discountPrice) > 0){
couponUserOrderDTO.setDiscountCouponPrice(discountPrice);
}else {
couponUserOrderDTO.setDiscountCouponPrice(couponUserOrderDTO.getRemainingBalance());
}
}
}
}
}
//VIP券可以直接减总价格
if(couponUserOrderDTO.getUseType().equals(1)){
if (couponUserOrderDTO.getStatus().equals(0)){
couponUserOrderDTO.setDiscountCouponPrice(couponUserOrderDTO.getCouponMoney());
}else {
couponUserOrderDTO.setDiscountCouponPrice(couponUserOrderDTO.getRemainingBalance());
}
}
}
}
//把打折金额为0的优惠券设置为不可用unusable,无门槛只显示剩余金额
couponUserOrderDTOList.forEach(d->{
if (d.getDiscountCouponPrice() == null || d.getDiscountCouponPrice().compareTo(BigDecimal.ZERO) == 0){
d.setDiscountCouponPrice(BigDecimal.ZERO);
d.setValidStr("unusable");
}
if (d.getUseType().equals(1) || d.getUseType().equals(2) && d.getCouponType().equals(3) ){
if (d.getStatus().equals(4)){
d.setCouponMoney(d.getRemainingBalance());
}
}
});
BigDecimal finalDiscount = BigDecimal.ZERO;
//设置最高优惠的券
if (couponUserOrderDTOList.size() > 0){
couponUserOrderDTOList.sort(Comparator.comparing(CouponUserOrderDTO::getDiscountCouponPrice).reversed());
for (CouponUserOrderDTO couponUserOrderDTO : couponUserOrderDTOList) {
if (couponUserOrderDTO.getUseType().equals(2) && couponUserOrderDTO.getValidStr().equals("usable")){
couponUserOrderDTO.setRecommend(1);
finalDiscount = finalDiscount.add(couponUserOrderDTO.getDiscountCouponPrice());
break;
}
}
}
for (CouponUserOrderDTO couponUserOrderDTO : couponUserOrderDTOList) {
if (couponUserOrderDTO.getUseType().equals(1) && couponUserOrderDTO.getValidStr().equals("usable")){
if (finalDiscount.compareTo(orderAmount) >= 0){
break;
}
finalDiscount = finalDiscount.add(couponUserOrderDTO.getDiscountCouponPrice());
couponUserOrderDTO.setRecommend(1);
}
}
return couponUserOrderDTOList;
}
@Override
public PageResult listAPPPage(Integer pageNo, Integer pageSize, String keyword, Integer showType, String orderType, BaseAccountDTO currentAccount) {
List<Integer> statusCodes = this.getOrderStatusByShowType(showType);
int count = mallOrderDao.countAppPageOrder(keyword, orderType, statusCodes, currentAccount.getUserAccountId());
if (count == 0) {
return PageResult.buildPage(pageNo, pageSize, count);
}
List<MallOrderDO> orders = mallOrderDao.listAppPageAmOrder((pageNo - 1) * pageSize, pageSize, keyword, orderType, statusCodes, currentAccount.getUserAccountId());
List<MallOrderPageDTO> mallOrderPageDTOList = mallOrderService.buildMallOrderPageDTO(orders);
//需要处理所选规格
List<Long> orderIds = orders.stream().map(MallOrderDO::getId).collect(Collectors.toList());
List<MallOrderSimpleDO> mallOrderSimpleDOList = appMallOrderDao.listMallOrderSkuSpec(orderIds);
List<MallOrderPageDTO> collect = mallOrderPageDTOList.stream().map(d -> {
for (MallOrderSimpleDO mallOrderSimpleDO : mallOrderSimpleDOList) {
if (!CollectionUtils.isEmpty(mallOrderSimpleDO.getOgSkuSpecDOList()) && mallOrderSimpleDO.getId().equals(d.getId())) {
List<OGSkuSpecDTO> ogSkuSpecDTOList = mallOrderSimpleDO.getOgSkuSpecDOList().stream().map(OGSkuSpecDO::buildOGSkuSpecDTO).collect(Collectors.toList());
d.setOgSkuSpecDTOList(ogSkuSpecDTOList);
break;
}
}
return d;
}).collect(Collectors.toList());
return PageResult.buildPage(pageNo, pageSize, count, collect);
}
@Transactional
public ResultBody confirmMallOrder(List<MallProdShopCarDO> mallProdShopCarDOS, List<MallIndstShopCarDO> mallIndstShopCarDOS, ConfirmMallOrderVO param, UserAccountSimpleDTO user) throws Exception {
//查询收货地址
UserAddressDTO userAddressDTO = userAddressService.getUserAddressInfo(param.getUserAddressId());
//查询商品信息,价格信息
MallOrderGoodsInfoQO mallOrderGoodsInfoQO = new MallOrderGoodsInfoQO();
mallOrderGoodsInfoQO.setUserAccountId(user.getId());
mallOrderGoodsInfoQO.setCooperationTagId(user.getCooperationTagId());
//订单金额
BigDecimal orderAmount = BigDecimal.ZERO;
//推荐人订单总价
BigDecimal rcdOrderAmount = BigDecimal.ZERO;
//产品sku信息
List<OrderGoodsProdDTO> orderGoodsProdDTOList = new ArrayList<>();
//行业sku信息
List<OrderGoodsIndstDTO> orderGoodsIndstDTOList = new ArrayList<>();
//生成总订单id
SnowFlake snowFlake = new SnowFlake(2, 3);
Long orderId = snowFlake.nextId();
String orderNo = CodeUtil.uavOrderCode(orderId);
BigDecimal couponDiscount = BigDecimal.ZERO;
// 多个购物车只取最后一个,有则有,没有则没有
Integer recMallUserId = null;
//查询推荐人信息
//Integer rcdMallUserId = mallUserPayClient.feignGetSuperiorRef(user.getId());
//处理产品商品
if(!CollectionUtils.isEmpty(mallProdShopCarDOS)){
recMallUserId = mallProdShopCarDOS.get(mallProdShopCarDOS.size()-1).getRecMallUserId();
//设置查询商品信息的参数,mallProdSkuInfoSpecId
mallOrderGoodsInfoQO.setMallProdSkuSpecIds(new HashSet<>());
for(MallProdShopCarDO mallProdShopCarDO : mallProdShopCarDOS){
mallOrderGoodsInfoQO.getMallProdSkuSpecIds().addAll(mallProdShopCarDO.getShopCarDetailDOS().stream().map(d -> d.getMallProdSkuInfoSpecId()).collect(Collectors.toSet()));
}
//设置mallProdSkuInfoSpecId对应的购物车详情id
Map<Integer, Integer> prodSkuSpecIdCarMap = new HashMap<>();
for (MallProdShopCarDO mallProdShopCarDO : mallProdShopCarDOS) {
for (MallProdShopCarDetailDO mallProdShopCarDetailDO : mallProdShopCarDO.getShopCarDetailDOS()){
//设置产品商品小规格对应的购物车详情id
prodSkuSpecIdCarMap.put(mallProdShopCarDetailDO.getMallProdSkuInfoSpecId(), mallProdShopCarDetailDO.getId());
}
}
//查询商品详细信息
orderGoodsProdDTOList = pmsClient.feignListProdGoodsSkuInfo(mallOrderGoodsInfoQO, null);
//----------------------判空
if(CollectionUtils.isEmpty(orderGoodsProdDTOList)){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
//判断是否有无效的产品商品
for (OrderGoodsProdDTO orderGoodsProdDTO : orderGoodsProdDTOList){
if(orderGoodsProdDTO.getDeleted() == 0 && orderGoodsProdDTO.getShelfStatus() == 1){
for (OrderGoodsProdDetailDTO orderGoodsProdDetailDTO : orderGoodsProdDTO.getOrderGoodsProdDetailDTOS()){
if( !(orderGoodsProdDetailDTO.getSpecDeleted() == 0 && orderGoodsProdDetailDTO.getSkuInfoDeleted() == 0 && orderGoodsProdDetailDTO.getSkuSpecDeleted() == 0)){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
}
}else {
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
}
List<OrderGoodsProdDO> orderGoodsProdDOS = this.generatedProdOrder(mallProdShopCarDOS, orderGoodsProdDTOList);
if(orderGoodsProdDOS == null){
return ResultBody.error(ResultEnum.SPEC_NOT_CONFIG_PRICE);
}
//把每个商品所有规格金额加起来,订单金额
for (OrderGoodsProdDO orderGoodsProdDO : orderGoodsProdDOS){
orderAmount = orderAmount.add(orderGoodsProdDO.getGoodsAmount());
}
// //查询推荐人订单金额
// if (rcdMallUserId != null){
// rcdOrderAmount = this.getRcdMallOrderAmount(1, mallProdShopCarDOS, null, rcdMallUserId, mallOrderGoodsInfoQO);
// }
List<OrderGoodsProdDetailDO> orderGoodsProdDetailDOList = new ArrayList<>();
for (OrderGoodsProdDO orderGoodsProdDO : orderGoodsProdDOS){
//设置订单id
orderGoodsProdDO.setOrderId(orderId);
}
//插入产品商品
appMallOrderDao.batchInsertOrderGoodsProdDO(orderGoodsProdDOS);
for (OrderGoodsProdDO orderGoodsProdDO : orderGoodsProdDOS){
if(!CollectionUtils.isEmpty(orderGoodsProdDO.getOrderGoodsProdDetailDOList())){
for (OrderGoodsProdDetailDO orderGoodsProdDetailDO : orderGoodsProdDO.getOrderGoodsProdDetailDOList()){
//设置商品订单id
orderGoodsProdDetailDO.setOrderGoodsProdId(orderGoodsProdDO.getId());
orderGoodsProdDetailDO.setMallProdShopCarDetailId(prodSkuSpecIdCarMap.get(orderGoodsProdDetailDO.getMallProdSkuInfoSpecId()));
orderGoodsProdDetailDOList.add(orderGoodsProdDetailDO);
}
}
}
//couponDiscount = discountProduct(orderGoodsProdDetailDOList, param.getCouponIds(), orderId, orderNo, orderAmount);
// if (!CollectionUtils.isEmpty(param.getCouponIds())){
// MallDiscountInfoDTO mallDiscountInfoDTO = discountProduct(orderGoodsProdDetailDOList, param.getCouponIds(), orderId, orderNo, orderAmount);
// couponDiscount = mallDiscountInfoDTO.getAllDiscount();
// //插入使用优惠券信息
// if (mallDiscountInfoDTO.getCouponUserVOS() != null){
// List<MallOrderCouponDO> orderCouponDOS = new ArrayList<>();
// for (CouponUserVO couponUserVO : mallDiscountInfoDTO.getCouponUserVOS()) {
// MallOrderCouponDO orderCouponDO = new MallOrderCouponDO(couponUserVO);
// orderCouponDOS.add(orderCouponDO);
// }
// log.info("提交用户使用优惠券couponUserVOS------>", JSONObject.toJSON(mallDiscountInfoDTO.getCouponUserVOS()));
// //抵扣优惠券
// Boolean aBoolean = mallUserPayClient.feignUpMine(mallDiscountInfoDTO.getCouponUserVOS());
// if (!aBoolean){
// throw new BizException("抵消优惠券报错!");
// }
// appMallOrderDao.batchInsertOrderCoupon(orderCouponDOS);
// }
// }
//批量插入产品商品规格
appMallOrderDao.batchInsertOrderGoodsProdDetailDO(orderGoodsProdDetailDOList);
//修改购物车状态
shoppingTrolleyDao.updateProductShopCarStatus(mallProdShopCarDOS);
}
//处理行业商品,过程类似产品商品
if(!CollectionUtils.isEmpty(mallIndstShopCarDOS)){
recMallUserId = mallIndstShopCarDOS.get(mallIndstShopCarDOS.size()-1).getRecMallUserId();
mallOrderGoodsInfoQO.setMallIndstSkuSpecIds(new HashSet<>());
for (MallIndstShopCarDO mallIndstShopCarDO : mallIndstShopCarDOS){
mallOrderGoodsInfoQO.getMallIndstSkuSpecIds().addAll(mallIndstShopCarDO.getShopCarDetailDOS().stream().map(d->d.getMallIndstSkuInfoSpecId()).collect(Collectors.toSet()));
}
Map<Integer, Integer> indstSkuSpecIdCarMap = new HashMap<>();
for (MallIndstShopCarDO mallIndstShopCarDO : mallIndstShopCarDOS) {
for (MallIndstShopCarDetailDO mallIndstShopCarDetailDO : mallIndstShopCarDO.getShopCarDetailDOS()){
//设置行业小规格对应的购物车详情id
indstSkuSpecIdCarMap.put(mallIndstShopCarDetailDO.getMallIndstSkuInfoSpecId(), mallIndstShopCarDetailDO.getId());
}
}
orderGoodsIndstDTOList = pmsClient.feignListIndstGoodsSkuInfo(mallOrderGoodsInfoQO, null);
if(CollectionUtils.isEmpty(orderGoodsIndstDTOList)){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
//判断是否有无效的行业商品
for (OrderGoodsIndstDTO orderGoodsIndstDTO : orderGoodsIndstDTOList){
if(orderGoodsIndstDTO.getValid()){
for (OrderGoodsIndstDetailDTO orderGoodsIndstDetailDTO : orderGoodsIndstDTO.getOrderGoodsIndstDetailDTOS()){
if(!orderGoodsIndstDetailDTO.getValid()){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
}
}else {
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
}
List<OrderGoodsIndstDO> orderGoodsIndstDOS = this.generatedIndstOrder(mallIndstShopCarDOS, orderGoodsIndstDTOList);
if(orderGoodsIndstDOS == null){
return ResultBody.error(ResultEnum.SPEC_NOT_CONFIG_PRICE);
}
//订单金额
for (OrderGoodsIndstDO orderGoodsIndstDO : orderGoodsIndstDOS){
orderAmount = orderAmount.add(orderGoodsIndstDO.getGoodsAmount());
}
//查询推荐人订单金额
// if (rcdMallUserId != null){
// rcdOrderAmount = this.getRcdMallOrderAmount(2, null, mallIndstShopCarDOS, rcdMallUserId, mallOrderGoodsInfoQO);
// }
//插入行业商品
for (OrderGoodsIndstDO orderGoodsIndstDO : orderGoodsIndstDOS){
//设置订单id
orderGoodsIndstDO.setOrderId(orderId);
}
appMallOrderDao.batchInsertOrderGoodsIndstDO(orderGoodsIndstDOS);
//处理方案对应的产品清单
List<OrderGoodsIndstProdListDO> industryProductList = new ArrayList<>();
for (OrderGoodsIndstDO orderGoodsIndstDO : orderGoodsIndstDOS){
if(!CollectionUtils.isEmpty(orderGoodsIndstDO.getOrderGoodsIndstDetailDOS())){
for (OrderGoodsIndstDetailDO orderGoodsIndstDetailDO : orderGoodsIndstDO.getOrderGoodsIndstDetailDOS()){
orderGoodsIndstDetailDO.setOrderGoodsIndstId(orderGoodsIndstDO.getId());
orderGoodsIndstDetailDO.setMallIndstShopCarDetailId(indstSkuSpecIdCarMap.get(orderGoodsIndstDetailDO.getMallIndstSkuInfoSpecId()));
}
//分批次插入行业商品规格
appMallOrderDao.batchInsertOrderGoodsIndstDetailDO(orderGoodsIndstDO.getOrderGoodsIndstDetailDOS());
for (OrderGoodsIndstDetailDO orderGoodsIndstDetailDO : orderGoodsIndstDO.getOrderGoodsIndstDetailDOS()){
if(!CollectionUtils.isEmpty(orderGoodsIndstDetailDO.getOrderGoodsIndstProdListDOS())){
for (OrderGoodsIndstProdListDO orderGoodsIndstProdListDO : orderGoodsIndstDetailDO.getOrderGoodsIndstProdListDOS()){
orderGoodsIndstProdListDO.setOrderGoodsIndstDetailId(orderGoodsIndstDetailDO.getId());
industryProductList.add(orderGoodsIndstProdListDO);
}
}
}
}
}
//插入行业商品规格对应产品清单
appMallOrderDao.batchInsertOrderGoodsIndstProdListDO(industryProductList);
//修改购物车状态
shoppingTrolleyDao.updateIndustryShopCarStatus(mallIndstShopCarDOS);
}
//查询销售用户信息
// UserAccountSimpleDTO saleUser = null;
// if(user.getSaleId()!=null){
// //saleUser = mallUserClient.feignGetSimpleUserInfo(user.getSaleId());
// saleUser = userAppApi.feignGetUserSimpleInfo(user.getSaleId(), null);
// }
//插入总订单信息
Date cdate = new Date();
MallOrderDO order = new MallOrderDO();
order.setId(orderId);
order.setOrderNo(orderNo);
order.setPid(0);
order.setStatusCode(OrderStatus.PENDING_ASSIGNMENT.getCode());
order.setUserAccountId(user.getId());
order.setUid(user.getUid());
order.setUserName(user.getNickName());
order.setPhoneNum(user.getPhoneNum());
order.setCreateTime(cdate);
order.setUserAddressId(param.getUserAddressId());
// log.info("相关推荐人[{}]",rcdMallUserId);
// order.setRecMallUserId(rcdMallUserId==null?0:rcdMallUserId);
order.setOrderAmount(orderAmount);
order.setRealityAmount(orderAmount.subtract(couponDiscount));
order.setRemark(param.getRemark());
// order.setOperationId(user.getOperateId());
order.setCouponDiscountAmount(couponDiscount);
order.setRcdOrderAmount(rcdOrderAmount);
// if(user.getSaleId()!=null){
// List<UserAccountDTO> userAccountDTOS = userServletClient.feignListUserAccountByIds(Arrays.asList(user.getSaleId()));
// if(!CollectionUtils.isEmpty(userAccountDTOS)){
// order.setSaleId(user.getSaleId());
// order.setSaleName(userAccountDTOS.get(0).getUserName());
// }
// }
mallOrderDao.insertMallOrder(order);
//订单服务
List<OrderServiceDO> orderServiceDOS = this.getOrderServiceDO(orderGoodsProdDTOList, orderGoodsIndstDTOList, orderId);
if (!CollectionUtils.isEmpty(orderServiceDOS)) {
mallOrderDao.batchInsertOrderService(orderServiceDOS);
}
MallOrderExpressDO orderExpressDO = new MallOrderExpressDO(userAddressDTO);
orderExpressDO.setOrderId(orderId);
//插入订单收货地址
mallOrderDao.insertOrderExpress(orderExpressDO);
MallOrderDTO morder = order.buildMallOrderDTO();
morder.setExp(orderExpressDO.buildOrderExpressDTO());
//publicsher.sendInitMallOrder(morder);
return ResultBody.success(morder);
}
private MallDiscountInfoDTO discountProduct(List<OrderGoodsProdDetailDO> orderGoodsProdDetailDOList, List<Integer> couponIds, Long orderId, String orderNo, BigDecimal orderAmount) throws Exception {
MallDiscountInfoDTO mallDiscountInfoDTO = new MallDiscountInfoDTO();
//用户选择的优惠券
//List<CouponUserOrderDTO> userChooseCoupons = mallUserPayClient.feignListUserCouponsByIds(couponIds);
// List<CouponUserDTO> couponUserDTOS = mallUserPayClient.feignMyCoupons(couponIds);
List<CouponUserDTO> couponUserDTOS = null;
List<CouponUserDTO> userChooseVIPCoupons = new ArrayList<>();
BigDecimal allDiscount = BigDecimal.ZERO;
BigDecimal notVipDiscount = BigDecimal.ZERO;
//真正需要使用的优惠券
List<CouponUserVO> couponUserVOS = new ArrayList<>();
//对符合的优惠券进行打折
for (CouponUserDTO userChooseCoupon : couponUserDTOS) {
userChooseCoupon.setMinPrice(userChooseCoupon.getMinPrice() == null ? BigDecimal.ZERO : userChooseCoupon.getMinPrice());
if (userChooseCoupon.getUseType().toString().equals("1")){
//VIP券后面算,优先使用非VIP券
userChooseVIPCoupons.add(userChooseCoupon);
}else {
userChooseCoupon.setBrandIds(Arrays.asList(userChooseCoupon.getPrimaryKey().split(",")));
//非VIP优惠券只有一张
//Map<Integer, BigDecimal> brandPrice = orderGoodsProdDetailDOList.stream().collect(Collectors.toMap(OrderGoodsProdDetailDO::getBrandInfoId, OrderGoodsProdDetailDO::getSkuSpecAmount, BigDecimal::add));
Map<Integer, BigDecimal> brandPrice = new HashMap<>();
for (OrderGoodsProdDetailDO prodDetailDO : orderGoodsProdDetailDOList) {
if(brandPrice.get(prodDetailDO.getBrandInfoId()) == null){
brandPrice.put(prodDetailDO.getBrandInfoId(), prodDetailDO.getSkuSpecAmount());
}else {
brandPrice.put(prodDetailDO.getBrandInfoId(), brandPrice.get(prodDetailDO.getBrandInfoId()).add(prodDetailDO.getSkuSpecAmount()));
//brandPriceMap.get(orderGoodsProdDetailDO.getBrandInfoId()).add(orderGoodsProdDetailDO.getSkuSpecAmount());
}
}
//这张优惠券可以对多少金额进行打折
BigDecimal singleCouponDiscount = BigDecimal.ZERO;
for (Integer k : brandPrice.keySet()){
if (k == null){
continue;
}
if(userChooseCoupon.getBrandIds().contains(k.toString())){
singleCouponDiscount = singleCouponDiscount.add(brandPrice.get(k));
}
}
//可以打折
if (singleCouponDiscount.compareTo(BigDecimal.ZERO) > 0){
CouponUserVO couponUserVO = new CouponUserVO();
couponUserVO.setId(userChooseCoupon.getId());
couponUserVO.setCid(orderId);
couponUserVO.setOrderNo(orderNo);
couponUserVO.setUseType(userChooseCoupon.getUseType());
couponUserVO.setCouponType(userChooseCoupon.getCouponType());
//判断是哪种打折类型
if (userChooseCoupon.getCouponType().equals(1)){
if (userChooseCoupon.getMinPrice().compareTo(singleCouponDiscount) <= 0) {
//折扣的金额
BigDecimal discountMoney = BigDecimal.ONE.subtract(userChooseCoupon.getCouponDiscount().multiply(BigDecimal.valueOf(0.1))).multiply(singleCouponDiscount);
//不能超过最高优惠
//看是否有折扣限制
if (userChooseCoupon.getPreferentialLimit() == null){
userChooseCoupon.setDiscountCouponPrice(discountMoney);
}else {
//不能超过最高优惠
userChooseCoupon.setDiscountCouponPrice(discountMoney.compareTo(userChooseCoupon.getPreferentialLimit()) > 0 ? userChooseCoupon.getPreferentialLimit() : discountMoney);
}
couponUserVO.setStatus(1);
couponUserVO.setRemainingBalance(BigDecimal.ZERO);
couponUserVO.setUseAmount(userChooseCoupon.getDiscountCouponPrice());
couponUserVOS.add(couponUserVO);
}
} else if (userChooseCoupon.getCouponType().equals(2)) {
//满减券
if (userChooseCoupon.getMinPrice().compareTo(singleCouponDiscount) <= 0) {
userChooseCoupon.setDiscountCouponPrice(userChooseCoupon.getCouponMoney());
couponUserVO.setStatus(1);
couponUserVO.setRemainingBalance(BigDecimal.ZERO);
couponUserVO.setUseAmount(userChooseCoupon.getCouponMoney());
couponUserVOS.add(couponUserVO);
}
} else if (userChooseCoupon.getCouponType().equals(3)) {
log.info("计算非VIP券无门槛userChooseCoupon------>{}", JSONObject.toJSON(userChooseCoupon));
//优惠券剩余金额
BigDecimal couponRemainAmount = BigDecimal.ZERO;
if (userChooseCoupon.getStatus().equals(0)){
couponRemainAmount = userChooseCoupon.getCouponMoney();
}else {
couponRemainAmount = userChooseCoupon.getRemainingBalance();
}
log.info("非VIP券无门槛剩余------>{}", JSONObject.toJSON(couponRemainAmount));
//无门槛券
if (couponRemainAmount.compareTo(singleCouponDiscount) > 0){
//此券可以进行拆分
if (userChooseCoupon.getVerificationType().equals(true)){
//多次
couponUserVO.setStatus(4);
couponUserVO.setRemainingBalance(couponRemainAmount.subtract(singleCouponDiscount));
couponUserVO.setUseAmount(singleCouponDiscount);
}else {
couponUserVO.setStatus(1);
couponUserVO.setUseAmount(singleCouponDiscount);
couponUserVO.setRemainingBalance(BigDecimal.ZERO);
}
userChooseCoupon.setDiscountCouponPrice(singleCouponDiscount);
}else {
couponUserVO.setStatus(1);
couponUserVO.setRemainingBalance(BigDecimal.ZERO);
couponUserVO.setUseAmount(couponRemainAmount);
userChooseCoupon.setDiscountCouponPrice(couponRemainAmount);
}
log.info("最后使用:计算非VIP券无门槛userChooseCoupon------>{}", JSONObject.toJSON(couponUserVO));
couponUserVOS.add(couponUserVO);
}
allDiscount = allDiscount.add(userChooseCoupon.getDiscountCouponPrice());
notVipDiscount = notVipDiscount.add(userChooseCoupon.getDiscountCouponPrice());
log.info("用户使用优惠券notVipDiscount------>{}", notVipDiscount);
}
}
}
//计算VIP券
if (userChooseVIPCoupons.size() > 0){
//优惠券进行排序
userChooseVIPCoupons.sort((v1, v2) -> {return v1.getCouponMoney().compareTo(v2.getCouponMoney());});
//多张VIP,选出最合适的几张进行打折,先用小的
BigDecimal temp = BigDecimal.ZERO.add(notVipDiscount);
for (CouponUserDTO userChooseVIPCoupon : userChooseVIPCoupons) {
CouponUserVO couponUserVO = new CouponUserVO();
couponUserVO.setId(userChooseVIPCoupon.getId());
couponUserVO.setCid(orderId);
couponUserVO.setOrderNo(orderNo);
couponUserVO.setUseType(userChooseVIPCoupon.getUseType());
couponUserVO.setCouponType(userChooseVIPCoupon.getCouponType());
//优惠券剩余金额
BigDecimal couponRemainAmount = BigDecimal.ZERO;
if (userChooseVIPCoupon.getStatus().equals(0)){
couponRemainAmount = userChooseVIPCoupon.getCouponMoney();
}else {
couponRemainAmount = userChooseVIPCoupon.getRemainingBalance();
}
temp = temp.add(couponRemainAmount);
//当使用的优惠券金额大于订单的金额时,需要对此优惠券进行拆分
if (temp.compareTo(orderAmount) > 0){
//超出多少,即剩余多少
BigDecimal moreThan = temp.subtract(orderAmount);
if (moreThan.compareTo(couponRemainAmount) == 0){
//超出恰好等于这张券的时候,就直接退出,不需要再添加
break;
}
couponUserVO.setStatus(4);
couponUserVO.setRemainingBalance(moreThan);
couponUserVO.setUseAmount(couponRemainAmount.subtract(moreThan));
couponUserVOS.add(couponUserVO);
allDiscount = allDiscount.add(couponRemainAmount.subtract(moreThan));
break;
}
//添加到使用里面
couponUserVO.setStatus(1);
couponUserVO.setRemainingBalance(BigDecimal.ZERO);
couponUserVO.setUseAmount(couponRemainAmount);
couponUserVOS.add(couponUserVO);
allDiscount = allDiscount.add(couponRemainAmount);
}
}
//调用使用优惠券
if (couponUserVOS.size() > 0){
mallDiscountInfoDTO.setCouponUserVOS(couponUserVOS);
}
mallDiscountInfoDTO.setAllDiscount(allDiscount);
return mallDiscountInfoDTO;
}
private List<OrderServiceDO> getOrderServiceDO(List<OrderGoodsProdDTO> orderGoodsProdDTOList, List<OrderGoodsIndstDTO> orderGoodsIndstDTOList, Long orderId){
List<OrderServiceDO> orderServiceDOS = new ArrayList<>();
Date cDate = new Date();
for ( OrderGoodsProdDTO orderGoodsProdDTO : orderGoodsProdDTOList){
if(!CollectionUtils.isEmpty(orderGoodsProdDTO.getServices())){
for (GoodsServiceDTO goodsServiceDTO : orderGoodsProdDTO.getServices()){
OrderServiceDO orderServiceDO = new OrderServiceDO();
orderServiceDO.setOrderId(orderId);
orderServiceDO.setGoodsInfoId(goodsServiceDTO.getGoodsInfoId());
orderServiceDO.setServiceName(goodsServiceDTO.getServiceName());
orderServiceDO.setCreateTime(cDate);
orderServiceDOS.add(orderServiceDO);
}
}
}
// for ( OrderGoodsIndstDTO orderGoodsIndstDTO : orderGoodsIndstDTOList){
// if(!CollectionUtils.isEmpty(orderGoodsIndstDTO.getServices())){
// for (GoodsServiceDTO goodsServiceDTO : orderGoodsIndstDTO.getServices()){
// OrderServiceDO orderServiceDO = new OrderServiceDO();
// orderServiceDO.setOrderId(orderId);
// orderServiceDO.setGoodsInfoId(goodsServiceDTO.getGoodsInfoId());
// orderServiceDO.setServiceName(goodsServiceDTO.getServiceName());
// orderServiceDO.setCreateTime(cDate);
// orderServiceDOS.add(orderServiceDO);
// }
// }
// }
return orderServiceDOS;
}
private List<OrderGoodsProdDO> generatedProdOrder(List<MallProdShopCarDO> mallProdShopCarDOS, List<OrderGoodsProdDTO> orderGoodsProdDTOList){
List<OrderGoodsProdDO> orderGoodsProdDOS = new ArrayList<>();
UUID uuid = UUID.randomUUID();
for (MallProdShopCarDO mallProdShopCarDO : mallProdShopCarDOS){
//找出此商品的具体规格id
List<Integer> goodsInfoSpecIds = mallProdShopCarDO.getShopCarDetailDOS().stream().map(d->d.getMallProdSkuInfoSpecId()).collect(Collectors.toList());
//找出对应的商品
for (OrderGoodsProdDTO orderGoodsProdDTO : orderGoodsProdDTOList){
//找到了对应的
if(mallProdShopCarDO.getGoodsInfoId().toString().equals(orderGoodsProdDTO.getGoodsInfoId().toString())){
OrderGoodsProdDO orderGoodsProdDO = new OrderGoodsProdDO(orderGoodsProdDTO);
orderGoodsProdDO.setBuyNum(mallProdShopCarDO.getBuyNum());
orderGoodsProdDO.setMallProdShopCarId(mallProdShopCarDO.getId());
//商品下对应的产品规格清单
if(!CollectionUtils.isEmpty(orderGoodsProdDTO.getOrderGoodsProdDetailDTOS())){
List<OrderGoodsProdDetailDO> orderGoodsProdDetailDTOS = new ArrayList<>();
BigDecimal prodSpecAmount = BigDecimal.ZERO;
for (OrderGoodsProdDetailDTO orderGoodsProdDetailDTO : orderGoodsProdDTO.getOrderGoodsProdDetailDTOS()){
//规格没有配置价格就返回提示
if(orderGoodsProdDetailDTO.getUnitPrice() == null){
return null;
}
//找到属于对应购物车的规格信息
if (goodsInfoSpecIds.contains(orderGoodsProdDetailDTO.getMallProdSkuInfoSpecId())){
OrderGoodsProdDetailDO orderGoodsProdDetailDO = new OrderGoodsProdDetailDO(orderGoodsProdDetailDTO);
orderGoodsProdDetailDO.setBuyNum(orderGoodsProdDO.getBuyNum());
orderGoodsProdDetailDO.setSkuSpecAmount(orderGoodsProdDetailDO.getUnitPrice().multiply(BigDecimal.valueOf(orderGoodsProdDetailDO.getBuyNum())));
orderGoodsProdDetailDTOS.add(orderGoodsProdDetailDO);
//全部规格 单价*数量
prodSpecAmount = prodSpecAmount.add(orderGoodsProdDetailDO.getSkuSpecAmount());
}
}
//设置此商品所有规格金额
orderGoodsProdDO.setGoodsAmount(prodSpecAmount);
orderGoodsProdDO.setOrderGoodsProdDetailDOList(orderGoodsProdDetailDTOS);
}
orderGoodsProdDOS.add(orderGoodsProdDO);
break;
}
}
}
log.info("线程id[{}],mallProdShopCarDOS==>[{}],orderGoodsProdDTOList==>[{}],orderGoodsProdDOS==>[{}]",uuid, JSONObject.toJSONString(mallProdShopCarDOS), JSONObject.toJSONString(orderGoodsProdDTOList), JSONObject.toJSONString(orderGoodsProdDOS));
return orderGoodsProdDOS;
}
/**
* v1.0.0生成对应的订单信息
* @param mallConfirmOrderVO
* @param orderGoodsProdDTOList
* @return
*/
private List<OrderGoodsProdDO> generatedMallProdOrder(MallConfirmOrderVO mallConfirmOrderVO, List<OrderGoodsProdDTO> orderGoodsProdDTOList){
List<OrderGoodsProdDO> orderGoodsProdDOS = new ArrayList<>();
UUID uuid = UUID.randomUUID();
//找出此商品的具体规格id
Set<Integer> goodsInfoSpecIds = mallConfirmOrderVO.getMallSpecIds();
//找出对应的商品
for (OrderGoodsProdDTO orderGoodsProdDTO : orderGoodsProdDTOList){
//找到了对应的
if(mallConfirmOrderVO.getGoodsInfoId().toString().equals(orderGoodsProdDTO.getGoodsInfoId().toString())){
OrderGoodsProdDO orderGoodsProdDO = new OrderGoodsProdDO(orderGoodsProdDTO);
orderGoodsProdDO.setBuyNum(mallConfirmOrderVO.getBuyNum());
//商品下对应的产品规格清单
if(!CollectionUtils.isEmpty(orderGoodsProdDTO.getOrderGoodsProdDetailDTOS())){
List<OrderGoodsProdDetailDO> orderGoodsProdDetailDTOS = new ArrayList<>();
BigDecimal prodSpecAmount = BigDecimal.ZERO;
for (OrderGoodsProdDetailDTO orderGoodsProdDetailDTO : orderGoodsProdDTO.getOrderGoodsProdDetailDTOS()){
//规格没有配置价格就返回提示
if(orderGoodsProdDetailDTO.getUnitPrice() == null){
return null;
}
//找到属于对应购物车的规格信息
if (goodsInfoSpecIds.contains(orderGoodsProdDetailDTO.getMallProdSkuInfoSpecId())){
OrderGoodsProdDetailDO orderGoodsProdDetailDO = new OrderGoodsProdDetailDO(orderGoodsProdDetailDTO);
orderGoodsProdDetailDO.setBuyNum(orderGoodsProdDO.getBuyNum());
orderGoodsProdDetailDO.setSkuSpecAmount(orderGoodsProdDetailDO.getUnitPrice().multiply(BigDecimal.valueOf(orderGoodsProdDetailDO.getBuyNum())));
orderGoodsProdDetailDTOS.add(orderGoodsProdDetailDO);
//全部规格 单价*数量
prodSpecAmount = prodSpecAmount.add(orderGoodsProdDetailDO.getSkuSpecAmount());
}
}
//设置此商品所有规格金额
orderGoodsProdDO.setGoodsAmount(prodSpecAmount);
orderGoodsProdDO.setOrderGoodsProdDetailDOList(orderGoodsProdDetailDTOS);
}
orderGoodsProdDOS.add(orderGoodsProdDO);
break;
}
}
log.info("线程id[{}],mallProdShopCarDOS==>[{}],orderGoodsProdDTOList==>[{}],orderGoodsProdDOS==>[{}]",uuid, JSONObject.toJSONString(mallConfirmOrderVO), JSONObject.toJSONString(orderGoodsProdDTOList), JSONObject.toJSONString(orderGoodsProdDOS));
return orderGoodsProdDOS;
}
private List<OrderGoodsIndstDO> generatedIndstOrder(List<MallIndstShopCarDO> mallIndstShopCarDOS, List<OrderGoodsIndstDTO> orderGoodsIndstDTOList){
//生成id
List<OrderGoodsIndstDO> orderGoodsIndstDOS = new ArrayList<>();
for (MallIndstShopCarDO mallIndstShopCarDO : mallIndstShopCarDOS){
List<Integer> goodsInfoIndstSkuSpecIds = mallIndstShopCarDO.getShopCarDetailDOS().stream().map(d->d.getMallIndstSkuInfoSpecId()).collect(Collectors.toList());
for (OrderGoodsIndstDTO orderGoodsIndstDTO : orderGoodsIndstDTOList){
if (mallIndstShopCarDO.getGoodsInfoId().toString().equals(orderGoodsIndstDTO.getGoodsInfoId().toString())){
//找到对应商品信息
OrderGoodsIndstDO orderGoodsIndstDO = new OrderGoodsIndstDO(orderGoodsIndstDTO);
orderGoodsIndstDO.setBuyNum(mallIndstShopCarDO.getBuyNum());
orderGoodsIndstDO.setMallIndstShopCarId(mallIndstShopCarDO.getId());
if(!CollectionUtils.isEmpty(orderGoodsIndstDTO.getOrderGoodsIndstDetailDTOS())){
List<OrderGoodsIndstDetailDO> orderGoodsIndstDetailDOS = new ArrayList<>();
BigDecimal indstSpecAmount = BigDecimal.ZERO;
for (OrderGoodsIndstDetailDTO orderGoodsIndstDetailDTO : orderGoodsIndstDTO.getOrderGoodsIndstDetailDTOS()){
//判断有规格没有配置价格则提醒
if(orderGoodsIndstDetailDTO.getUnitPrice() == null){
return null;
}
//找出对应的行业规格
if(goodsInfoIndstSkuSpecIds.contains(orderGoodsIndstDetailDTO.getMallIndstSkuInfoSpecId())){
OrderGoodsIndstDetailDO orderGoodsIndstDetailDO = new OrderGoodsIndstDetailDO(orderGoodsIndstDetailDTO);
orderGoodsIndstDetailDO.setBuyNum(orderGoodsIndstDO.getBuyNum());
orderGoodsIndstDetailDO.setSkuSpecAmount(orderGoodsIndstDetailDO.getUnitPrice().multiply(BigDecimal.valueOf(orderGoodsIndstDetailDO.getBuyNum())));
indstSpecAmount = indstSpecAmount.add(orderGoodsIndstDetailDO.getSkuSpecAmount());
if(!CollectionUtils.isEmpty(orderGoodsIndstDetailDTO.getOrderGoodsIndstProdListDTOS())){
List<OrderGoodsIndstProdListDO> orderGoodsIndstProdListDOS = new ArrayList<>();
for (OrderGoodsIndstProdListDTO orderGoodsIndstProdListDTO : orderGoodsIndstDetailDTO.getOrderGoodsIndstProdListDTOS()){
OrderGoodsIndstProdListDO orderGoodsIndstProdListDO = new OrderGoodsIndstProdListDO(orderGoodsIndstProdListDTO);
orderGoodsIndstProdListDO.setBuyNum(orderGoodsIndstDetailDO.getBuyNum());
//设置产品单位,导出用到
orderGoodsIndstProdListDO.setUnitName(orderGoodsIndstDetailDO.getUnitName());
orderGoodsIndstProdListDOS.add(orderGoodsIndstProdListDO);
}
orderGoodsIndstDetailDO.setOrderGoodsIndstProdListDOS(orderGoodsIndstProdListDOS);
}
orderGoodsIndstDetailDOS.add(orderGoodsIndstDetailDO);
}
}
orderGoodsIndstDO.setGoodsAmount(indstSpecAmount);
orderGoodsIndstDO.setOrderGoodsIndstDetailDOS(orderGoodsIndstDetailDOS);
}
orderGoodsIndstDOS.add(orderGoodsIndstDO);
break;
}
}
}
return orderGoodsIndstDOS;
}
/**
* 订单分成相关
* @param skuType
* @param mallProdShopCarDOS
* @param mallIndstShopCarDOS
* @param rcdMallUserId
* @param mallOrderGoodsInfoQO
* @return
*/
private BigDecimal getRcdMallOrderAmount(Integer skuType, List<MallProdShopCarDO> mallProdShopCarDOS, List<MallIndstShopCarDO> mallIndstShopCarDOS, Integer rcdMallUserId, MallOrderGoodsInfoQO mallOrderGoodsInfoQO){
//MallUserDTO rcdMallUser = mallUserClient.feignGetSimpleUserInfo(rcdMallUserId);
UserAccountSimpleDTO rcdUser = userClient.feignGetUserSimpleInfo(rcdMallUserId, null);
BigDecimal dcrMallOrderAmount = BigDecimal.ZERO;
//查询商品信息,价格信息
mallOrderGoodsInfoQO.setUserAccountId(rcdMallUserId);
mallOrderGoodsInfoQO.setCooperationTagId(rcdUser.getCooperationTagId());
//产品sku信息
List<OrderGoodsProdDTO> orderGoodsProdDTOList = new ArrayList<>();
//行业sku信息
List<OrderGoodsIndstDTO> orderGoodsIndstDTOList = new ArrayList<>();
if (skuType.equals(1)){
//查询商品详细信息
orderGoodsProdDTOList = pmsClient.feignListProdGoodsSkuInfo(mallOrderGoodsInfoQO, null);
List<OrderGoodsProdDO> orderGoodsProdDOS = this.generatedProdOrder(mallProdShopCarDOS, orderGoodsProdDTOList);
if(orderGoodsProdDOS == null){
return dcrMallOrderAmount;
}
//把每个商品所有规格金额加起来,订单金额
for (OrderGoodsProdDO orderGoodsProdDO : orderGoodsProdDOS){
dcrMallOrderAmount = dcrMallOrderAmount.add(orderGoodsProdDO.getGoodsAmount());
}
}else {
orderGoodsIndstDTOList = pmsClient.feignListIndstGoodsSkuInfo(mallOrderGoodsInfoQO, null);
if(CollectionUtils.isEmpty(orderGoodsIndstDTOList)){
return dcrMallOrderAmount;
}
List<OrderGoodsIndstDO> orderGoodsIndstDOS = this.generatedIndstOrder(mallIndstShopCarDOS, orderGoodsIndstDTOList);
//订单金额
for (OrderGoodsIndstDO orderGoodsIndstDO : orderGoodsIndstDOS){
dcrMallOrderAmount = dcrMallOrderAmount.add(orderGoodsIndstDO.getGoodsAmount());
}
}
return dcrMallOrderAmount;
}
/**
* 得到分享订单状态
*
* @param orderId 订单id
* @return {@link ResultBody}
*/
@Override
public ResultBody getShareOrderStatus(Long orderId) {
// 将此订单id的分享状态进行变更
MallOrderDO mallOrderInfo = mallOrderDao.getMallOrderInfo(orderId);
return ResultBody.success(mallOrderInfo.buildMallOrderDTO());
}
/**
* 接受分享
*
* @param orderId 订单id
* @param shareId 共享id
* @return {@link ResultBody}
*/
@Override
public ResultBody acceptShare(Long orderId, Integer shareId) {
// 根据订单id判断此订单是否已经有人接受共享了
MallOrderDO mallOrderInfo = mallOrderDao.getMallOrderInfo(orderId);
if (mallOrderInfo.getShareStatus().equals(200)) {
ResultBody.error("已存在接受共享人");
}
// 将分享人信息保存到数据库
appMallOrderDao.updateOrderShareInfo(orderId,shareId);
return ResultBody.success();
}
@Override
public CountShowTypeDTO countListPage(BaseAccountDTO currentAccount) {
List<Integer> statusCodes0 = this.getOrderStatusByShowType(0);
List<Integer> statusCodes1 = this.getOrderStatusByShowType(1);
List<Integer> statusCodes2 = this.getOrderStatusByShowType(2);
List<Integer> statusCodes3 = this.getOrderStatusByShowType(3);
List<Integer> statusCodes4 = this.getOrderStatusByShowType(4);
int showType0 = mallOrderDao.countAppPageOrder(null, null, statusCodes0, currentAccount.getUserAccountId());
int showType1 = mallOrderDao.countAppPageOrder(null, null, statusCodes1, currentAccount.getUserAccountId());
int showType2 = mallOrderDao.countAppPageOrder(null, null, statusCodes2, currentAccount.getUserAccountId());
int showType3 = mallOrderDao.countAppPageOrder(null, null, statusCodes3, currentAccount.getUserAccountId());
int showType4 = mallOrderDao.countAppPageOrder(null, null, statusCodes4, currentAccount.getUserAccountId());
return CountShowTypeDTO.builder().showType0(showType0).showType1(showType1).showType2(showType2).showType3(showType3).showType4(showType4).build();
}
@Transactional
@Override
public ResultBody returnContractById(Long orderId) {
//订单状态退回到 待确认订单,手动折扣改为0,相关字段设置为空
MallOrderDO order = mallOrderDao.getMallOrderInfo(orderId);
order.setStatusCode(OrderStatus.PLACE_ORDER.getCode());
//原实付价格+手动折扣
order.setRealityAmount(order.getRealityAmount().add(order.getManualDiscountAmount()));
order.setManualDiscountAmount(BigDecimal.ZERO);
order.setSignStatus(null);
order.setCreditPeriodDays(null);
order.setDeliveryTime(null);
order.setContractSignedWay(null);
order.setCreditPeriod(null);
mallOrderDao.rollbackMallOrder(order);
//删除原来的合同
// ResultBody resultBody = fddServletClient.feignRemoveContractByOrderId(orderId);
// if (resultBody == null){
// throw new BizException("退回合同失败,请重试");
// }
return ResultBody.success();
}
@Override
public ResultBody<ConfirmGoodsInfoDTO> confirmMallOrder(MallConfirmOrderVO param, BaseAccountDTO cuser, String token) {
UserAccountSimpleDTO userAccountSimpleDTO = userClient.feignGetUserSimpleInfo(cuser.getUserAccountId(), token);
if (StringUtils.isEmpty(userAccountSimpleDTO.getPhoneNum())) {
return ResultBody.error(ResultEnum.AUTH_ACCOUNT_ERROR);
}
//返回的结果
ConfirmGoodsInfoDTO confirmGoodsInfoDTO = new ConfirmGoodsInfoDTO();
//查询商品信息,价格信息
MallOrderGoodsInfoQO mallOrderGoodsInfoQO = new MallOrderGoodsInfoQO();
mallOrderGoodsInfoQO.setUserAccountId(userAccountSimpleDTO.getId());
mallOrderGoodsInfoQO.setCooperationTagId(userAccountSimpleDTO.getCooperationTagId());
//订单金额
BigDecimal orderAmount = BigDecimal.ZERO;
//产品sku信息
List<OrderGoodsProdDTO> orderGoodsProdDTOList = new ArrayList<>();
//行业sku信息
List<OrderGoodsIndstDTO> orderGoodsIndstDTOList = new ArrayList<>();
//处理产品商品
if(!CollectionUtils.isEmpty(param.getMallSpecIds()) && param.getDirectoryId().equals(1)){
confirmGoodsInfoDTO.setDirectoryId(1);
//设置查询商品信息的参数,mallProdSkuInfoSpecId
mallOrderGoodsInfoQO.setMallProdSkuSpecIds(new HashSet<>());
mallOrderGoodsInfoQO.getMallProdSkuSpecIds().addAll(param.getMallSpecIds());
//设置mallProdSkuInfoSpecId对应的购物车详情id
// Map<Integer, Integer> prodSkuSpecIdCarMap = new HashMap<>();
// for (MallProdShopCarDO mallProdShopCarDO : mallProdShopCarDOS) {
// for (MallProdShopCarDetailDO mallProdShopCarDetailDO : mallProdShopCarDO.getShopCarDetailDOS()){
// //设置产品商品小规格对应的购物车详情id
// prodSkuSpecIdCarMap.put(mallProdShopCarDetailDO.getMallProdSkuInfoSpecId(), mallProdShopCarDetailDO.getId());
// }
// }
//查询商品详细信息
orderGoodsProdDTOList = pmsClient.feignListProdGoodsSkuInfo(mallOrderGoodsInfoQO, token);
//----------------------判空
if(CollectionUtils.isEmpty(orderGoodsProdDTOList)){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
//判断是否有无效的产品商品
for (OrderGoodsProdDTO orderGoodsProdDTO : orderGoodsProdDTOList){
System.out.println("orderGoodsProdDTO:->>>" + orderGoodsProdDTO);
if(orderGoodsProdDTO.getDeleted() == 0 && orderGoodsProdDTO.getShelfStatus() == 1){
for (OrderGoodsProdDetailDTO orderGoodsProdDetailDTO : orderGoodsProdDTO.getOrderGoodsProdDetailDTOS()){
if( !(orderGoodsProdDetailDTO.getSpecDeleted() == 0 && orderGoodsProdDetailDTO.getSkuInfoDeleted() == 0 && orderGoodsProdDetailDTO.getSkuSpecDeleted() == 0)){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
}
}else {
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
}
/**
* 待写
*/
// List<OrderGoodsProdDO> orderGoodsProdDOS = this.generatedProdOrder(mallProdShopCarDOS, orderGoodsProdDTOList);
List<OrderGoodsProdDO> orderGoodsProdDOS = this.generatedMallProdOrder(param, orderGoodsProdDTOList);
if(orderGoodsProdDOS == null){
return ResultBody.error(ResultEnum.SPEC_NOT_CONFIG_PRICE);
}
//把每个商品所有规格金额加起来,订单金额
for (OrderGoodsProdDO orderGoodsProdDO : orderGoodsProdDOS){
orderAmount = orderAmount.add(orderGoodsProdDO.getGoodsAmount());
}
//根据品牌id,查询个人拥有的优惠券并做处理
// List<CouponUserOrderDTO> couponUserOrderDTOList = this.findUserCoupon(orderGoodsProdDOS, muser.getId(), orderAmount);
// List<CouponUserOrderDTO> usable = couponUserOrderDTOList.stream().filter(d->"usable".equals(d.getValidStr())).collect(Collectors.toList());
// List<CouponUserOrderDTO> unusable = couponUserOrderDTOList.stream().filter(d->"unusable".equals(d.getValidStr())).collect(Collectors.toList());
// confirmGoodsInfoDTO.setUsableCoupon(usable);
// confirmGoodsInfoDTO.setDisableCoupon(unusable);
List<OrderGoodsProdDetailDO> orderGoodsProdDetailDOList = new ArrayList<>();
for (OrderGoodsProdDO orderGoodsProdDO : orderGoodsProdDOS){
if(!CollectionUtils.isEmpty(orderGoodsProdDO.getOrderGoodsProdDetailDOList())){
for (OrderGoodsProdDetailDO orderGoodsProdDetailDO : orderGoodsProdDO.getOrderGoodsProdDetailDOList()){
//设置商品订单id
orderGoodsProdDetailDO.setOrderGoodsProdId(orderGoodsProdDO.getId());
//orderGoodsProdDetailDO.setMallProdShopCarDetailId(prodSkuSpecIdCarMap.get(orderGoodsProdDetailDO.getMallProdSkuInfoSpecId()));
orderGoodsProdDetailDOList.add(orderGoodsProdDetailDO);
}
}
}
List<OrderGoodsProdDetailDTO> collect = orderGoodsProdDetailDOList.stream().map(d -> d.buildOrderGoodsProdDetailDTO()).collect(Collectors.toList());
confirmGoodsInfoDTO.setOrderGoodsProdDetailDTOS(collect);
}
confirmGoodsInfoDTO.setOrderAmount(orderAmount);
return ResultBody.success(confirmGoodsInfoDTO);
}
@Transactional
@Override
public ResultBody commitMallOrder(MallConfirmOrderVO param, BaseAccountDTO currentAccount, String token) {
//查询收货地址
UserAddressDTO userAddressDTO = userAddressService.getUserAddressInfo(currentAccount.getUserAccountId());
//查询商品信息,价格信息
MallOrderGoodsInfoQO mallOrderGoodsInfoQO = new MallOrderGoodsInfoQO();
mallOrderGoodsInfoQO.setUserAccountId(currentAccount.getUserAccountId());
mallOrderGoodsInfoQO.setCooperationTagId(currentAccount.getUserAccountId());
//订单金额
BigDecimal orderAmount = BigDecimal.ZERO;
//推荐人订单总价
BigDecimal rcdOrderAmount = BigDecimal.ZERO;
//产品sku信息
List<OrderGoodsProdDTO> orderGoodsProdDTOList = new ArrayList<>();
//生成总订单id
SnowFlake snowFlake = new SnowFlake(2, 3);
Long orderId = snowFlake.nextId();
String orderNo = CodeUtil.uavOrderCode(orderId);
BigDecimal couponDiscount = BigDecimal.ZERO;
//处理产品商品
if(!CollectionUtils.isEmpty(param.getMallSpecIds())){
//设置查询商品信息的参数,mallProdSkuInfoSpecId
mallOrderGoodsInfoQO.setMallProdSkuSpecIds(new HashSet<>());
mallOrderGoodsInfoQO.getMallProdSkuSpecIds().addAll(param.getMallSpecIds());
//查询商品详细信息
orderGoodsProdDTOList = pmsClient.feignListProdGoodsSkuInfo(mallOrderGoodsInfoQO, token);
//----------------------判空
if(CollectionUtils.isEmpty(orderGoodsProdDTOList)){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
//判断是否有无效的产品商品
for (OrderGoodsProdDTO orderGoodsProdDTO : orderGoodsProdDTOList){
if(orderGoodsProdDTO.getDeleted() == 0 && orderGoodsProdDTO.getShelfStatus() == 1){
for (OrderGoodsProdDetailDTO orderGoodsProdDetailDTO : orderGoodsProdDTO.getOrderGoodsProdDetailDTOS()){
if( !(orderGoodsProdDetailDTO.getSpecDeleted() == 0 && orderGoodsProdDetailDTO.getSkuInfoDeleted() == 0 && orderGoodsProdDetailDTO.getSkuSpecDeleted() == 0)){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
}
}else {
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
}
List<OrderGoodsProdDO> orderGoodsProdDOS = this.generatedMallProdOrder(param, orderGoodsProdDTOList);
if(orderGoodsProdDOS == null){
return ResultBody.error(ResultEnum.SPEC_NOT_CONFIG_PRICE);
}
//把每个商品所有规格金额加起来,订单金额
for (OrderGoodsProdDO orderGoodsProdDO : orderGoodsProdDOS){
orderAmount = orderAmount.add(orderGoodsProdDO.getGoodsAmount());
}
List<OrderGoodsProdDetailDO> orderGoodsProdDetailDOList = new ArrayList<>();
for (OrderGoodsProdDO orderGoodsProdDO : orderGoodsProdDOS){
//设置订单id
orderGoodsProdDO.setOrderId(orderId);
}
//插入产品商品
appMallOrderDao.batchInsertOrderGoodsProdDO(orderGoodsProdDOS);
for (OrderGoodsProdDO orderGoodsProdDO : orderGoodsProdDOS){
if(!CollectionUtils.isEmpty(orderGoodsProdDO.getOrderGoodsProdDetailDOList())){
for (OrderGoodsProdDetailDO orderGoodsProdDetailDO : orderGoodsProdDO.getOrderGoodsProdDetailDOList()){
//设置商品订单id
orderGoodsProdDetailDO.setOrderGoodsProdId(orderGoodsProdDO.getId());
orderGoodsProdDetailDOList.add(orderGoodsProdDetailDO);
}
}
}
//批量插入产品商品规格
appMallOrderDao.batchInsertOrderGoodsProdDetailDO(orderGoodsProdDetailDOList);
}
//插入总订单信息
Date cdate = new Date();
MallOrderDO order = new MallOrderDO();
order.setId(orderId);
order.setOrderNo(orderNo);
order.setPid(0);
order.setStatusCode(OrderStatus.PENDING_ASSIGNMENT.getCode());
order.setUserAccountId(currentAccount.getUserAccountId());
order.setUid(currentAccount.getUid());
order.setUserName(currentAccount.getUserName());
order.setPhoneNum(currentAccount.getPhoneNum());
order.setCreateTime(cdate);
order.setUserAddressId(param.getUserAddressId());
order.setOrderAmount(orderAmount);
order.setRealityAmount(orderAmount.subtract(couponDiscount));
order.setRemark(param.getRemark());
order.setCouponDiscountAmount(couponDiscount);
order.setRcdOrderAmount(rcdOrderAmount);
mallOrderDao.insertMallOrder(order);
//订单服务
List<OrderServiceDO> orderServiceDOS = this.getOrderServiceDO(orderGoodsProdDTOList, null, orderId);
if (!CollectionUtils.isEmpty(orderServiceDOS)) {
mallOrderDao.batchInsertOrderService(orderServiceDOS);
}
MallOrderExpressDO orderExpressDO = new MallOrderExpressDO(userAddressDTO);
orderExpressDO.setOrderId(orderId);
//插入订单收货地址
mallOrderDao.insertOrderExpress(orderExpressDO);
MallOrderDTO morder = order.buildMallOrderDTO();
morder.setExp(orderExpressDO.buildOrderExpressDTO());
return ResultBody.success(morder);
}
@Override
public MallOrderDTO getMallOrderDetailById(Long orderId, BaseAccountDTO currentAccount) {
return null;
}
public List<Integer> getOrderStatusByShowType(Integer showType){
List<Integer> statusCodes = new ArrayList<>();
if (showType == null){
return null;
}
if(showType.equals(0)){
statusCodes.add(50);
statusCodes.add(100);
} else if (showType.equals(1)) {
statusCodes.add(200);
statusCodes.add(300);
statusCodes.add(350);
statusCodes.add(650);
statusCodes.add(660);
statusCodes.add(670);
} else if (showType.equals(2)) {
statusCodes.add(710);
} else if (showType.equals(3)) {
statusCodes.add(720);
} else if (showType.equals(4)) {
statusCodes.add(800);
} else if (showType.equals(5)) {
statusCodes.add(999);
}
return statusCodes;
}
}
package com.mmc.oms.service.mall.impl;
import com.alibaba.fastjson.JSONObject;
import com.mmc.oms.common.*;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.common.util.KdnExpressUtil;
import com.mmc.oms.common.util.TDateUtil;
import com.mmc.oms.dao.mall.OrderExpressDao;
import com.mmc.oms.entity.mall.MallOrderExpressDO;
import com.mmc.oms.model.dto.kdn.KdnDicDTO;
import com.mmc.oms.service.mall.KdnExpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月23日 下午6:13:56
* @explain 类说明
*/
@Service
@Slf4j
public class KdnExpServiceImpl implements KdnExpService {
@Autowired
private OrderExpressDao orderExpressDao;
@Resource
private RedisTemplate<String, KdnDicDTO> redisTemplate;
@Override
public List<KdnDicDTO> listKdnDic() {
List<KdnDicDTO> list = redisTemplate.opsForList().range(RedisConstant.UAV_MALL_EXP_STATUS, 0, -1);
if (CollectionUtils.isEmpty(list)) {
list = orderExpressDao.listKdnDic().stream().map(d -> {
return d.buildKdnDicDTO();
}).collect(Collectors.toList());
}
return list;
}
@Override
public KDNCallBackResponse callbackExpressInfo(Map<String, Object> map) {
log.info("--------------ExpressInfo----------------");
log.info(map.toString());
log.info("--------------ExpressInfo----------------");
JSONObject requestDataObj = JSONObject.parseObject(map.get("RequestData").toString());
log.info("--------------ExpressInfo-------直接---------》" + requestDataObj.toString());
if( map.get("RequestData") != null ){
log.info("--------------ExpressInfo-------DATA---------》" + requestDataObj.getJSONArray("Data").toString());
for ( Object object : requestDataObj.getJSONArray("Data")){
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSON(object).toString());
log.info("--------------ExpressInfo--准备签收--prepare----------------");
if(jsonObject.getString("State").equals("3")){
//快递已签收,进行订单状态修改
String callBack = jsonObject.getString("CallBack");
String[]orderTag = callBack.split("-");
if(orderTag.length > 1 && orderTag[0].equals("UAV")){
Long orderId = Long.parseLong(orderTag[1]);
MallOrderExpressDO orderExpressDO = new MallOrderExpressDO();
orderExpressDO.setOrderId(orderId);
orderExpressDO.setReceiveTime(new Date());
orderExpressDO.setReceive(1);
log.info("--------------ExpressInfo--签收成功----------------");
orderExpressDao.updateOrderExpress(orderExpressDO);
}
}
}
}
return KDNCallBackResponse.builder().EBusinessID("1741818").Reason("").Success(true).UpdateTime(TDateUtil.getCurrentDateMidd()).build();
}
@Override
public ResultBody testCallbackExpressInfo(String port, Long orderId, String shipperCode, String logisticCode, String phone) throws Exception {
String s = KdnExpressUtil.monitorPush(port, orderId, shipperCode, logisticCode, phone);
if(!JSONObject.parseObject(s).getString("Success").equals("true")){
throw new BizException("快递信息错误,请重新填写后发货!");
}
return ResultBody.success(s) ;
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
package com.mmc.oms.service.mall.impl;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.dao.mall.OrderExpressDao;
import com.mmc.oms.model.vo.mall.OrderPayVO;
import com.mmc.oms.service.mall.MallOrderService;
import com.mmc.oms.service.mall.MallOrderServiceSub;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* author:zhenjie
* Date:2023/2/13
* time:14:31
*/
@Service
@Slf4j
public class MallOrderServiceSubImpl implements MallOrderServiceSub {
@Autowired
MallOrderService mallOrderService;
@Autowired
OrderExpressDao orderExpressDao;
@Override
public ResultBody feignAutoCompleteMOrder() {
//查询需要自动完成的订单(签收超过3*24小时后的订单)
List<Long> orderIds = orderExpressDao.listReceivedOrderIds();
//调用确认收货功能,但是没有上传验收单
for (Long orderId : orderIds){
OrderPayVO orderPayVO = new OrderPayVO();
orderPayVO.setOrderId(orderId);
mallOrderService.confirmReceipt(orderPayVO, null);
}
return ResultBody.success();
}
}
package com.mmc.oms.service.mall.impl;
import com.mmc.oms.common.RedisConstant;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.dao.mall.OrderExpressDao;
import com.mmc.oms.entity.mall.MallOrderExpressDO;
import com.mmc.oms.model.dto.order.ExpressInfoDTO;
import com.mmc.oms.model.vo.mall.MallOrderExpressVO;
import com.mmc.oms.service.mall.OrderExpressService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author 作者 geDuo
* @version 创建时间:2022年3月23日 下午5:21:14
* @explain 类说明
*/
@Service
public class OrderExpressServiceImpl implements OrderExpressService {
@Autowired
private OrderExpressDao orderExpressDao;
@Resource
private RedisTemplate<String, ExpressInfoDTO> redisTemplate;
@Override
public List<ExpressInfoDTO> listExpressInfo() {
List<ExpressInfoDTO> list = redisTemplate.opsForList().range(RedisConstant.UAV_MALL_EXP_COM, 0, -1);
if (CollectionUtils.isEmpty(list)) {
list = orderExpressDao.listExpressInfo().stream().map(d -> {
return d.buildExpressInfoDTO();
}).collect(Collectors.toList());
redisTemplate.opsForList().leftPushAll(RedisConstant.UAV_MALL_EXP_COM,list);
}
return list;
}
@Override
public ResultBody updateOrderExpress(MallOrderExpressVO orderExpressVO) {
MallOrderExpressDO orderExpressDO = new MallOrderExpressDO(orderExpressVO);
orderExpressDao.updateOrderExpress(orderExpressDO);
return ResultBody.success();
}
}
package com.mmc.oms.service.mall.impl;
import com.mmc.oms.dao.mall.OrderGoodsIndstDao;
import com.mmc.oms.entity.mall.MallOrderSimpleDO;
import com.mmc.oms.entity.mall.OrderGoodsIndstProdListBO;
import com.mmc.oms.entity.mall.OrderGoodsIndstProdListDO;
import com.mmc.oms.service.mall.OrderGoodsIndstService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author dahang
* @since 2022-10-29
*/
@Service
public class OrderGoodsIndstServiceImpl implements OrderGoodsIndstService {
@Resource
private OrderGoodsIndstDao orderGoodsIndstDao;
@Override
public List<OrderGoodsIndstProdListBO> getProductInfoByMallId(Long orderId) {
return orderGoodsIndstDao.getProductInfoByMallId(orderId);
}
@Override
public List<MallOrderSimpleDO> listOrderGoodsIndstBaseInfo(List<Long> mallOrderIds) {
List<MallOrderSimpleDO> mallOrderSimpleDOList = orderGoodsIndstDao.listOrderGoodsIndstBaseInfo(mallOrderIds);
return mallOrderSimpleDOList;
}
@Override
public List<OrderGoodsIndstProdListDO> listIMallOrderProdList(Long orderId) {
List<OrderGoodsIndstProdListDO> orderGoodsIndstProdListDOS = orderGoodsIndstDao.listIMallOrderProdList(orderId);
return orderGoodsIndstProdListDOS;
}
}
package com.mmc.oms.service.mall.impl;
import com.mmc.oms.dao.mall.OrderGoodsProdDao;
import com.mmc.oms.entity.mall.MallOrderSimpleDO;
import com.mmc.oms.entity.mall.OrderGoodsProdDetailBO;
import com.mmc.oms.entity.mall.OrderGoodsProdDetailDO;
import com.mmc.oms.service.mall.OrderGoodsProdService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author dahang
* @since 2022-10-29
*/
@Service
public class OrderGoodsProdServiceImpl implements OrderGoodsProdService {
@Resource
private OrderGoodsProdDao orderGoodsProdDao;
@Override
public List<OrderGoodsProdDetailBO> getProductInfoByMallId(Long orderId) {
return orderGoodsProdDao.getProductInfoByMallId(orderId);
}
@Override
public List<MallOrderSimpleDO> listOrderGoodsProdBaseInfo(List<Long> mallOrderIds) {
List<MallOrderSimpleDO> orderSimpleDOS = orderGoodsProdDao.listOrderGoodsProdBaseInfo(mallOrderIds);
return orderSimpleDOS;
}
@Override
public List<OrderGoodsProdDetailDO> listPMallOrderProdList(Long orderId) {
List<OrderGoodsProdDetailDO> orderGoodsProdDetailDOList = orderGoodsProdDao.listPMallOrderProdList(orderId);
return orderGoodsProdDetailDOList;
}
}
package com.mmc.oms.service.mall.impl;
import com.alibaba.fastjson.JSONObject;
import com.mmc.oms.client.PmsClient;
import com.mmc.oms.client.UserClient;
import com.mmc.oms.common.ResultEnum;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.dao.mall.ShoppingTrolleyDao;
import com.mmc.oms.entity.mall.MallIndstShopCarDO;
import com.mmc.oms.entity.mall.MallIndstShopCarDetailDO;
import com.mmc.oms.entity.mall.MallProdShopCarDO;
import com.mmc.oms.entity.mall.MallProdShopCarDetailDO;
import com.mmc.oms.model.dto.mall.ConfirmGoodsInfoDTO;
import com.mmc.oms.model.dto.mall.MallGoodsShopCarDTO;
import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.dto.user.UserAccountSimpleDTO;
import com.mmc.oms.model.qo.mall.MallShopCarQO;
import com.mmc.oms.model.vo.mall.ConfirmMallOrderVO;
import com.mmc.oms.model.vo.mall.ConfirmShopVO;
import com.mmc.oms.model.vo.mall.MallShopCarVO;
import com.mmc.oms.model.vo.mall.ShopCarIdParamVO;
import com.mmc.oms.service.mall.AppMallOrderService;
import com.mmc.oms.service.mall.ShoppingTrolleyService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
/**
* author:zhenjie
* Date:2022/10/11
* time:10:30
*/
@Service
@Slf4j
public class ShoppingTrolleyServiceImpl implements ShoppingTrolleyService {
@Autowired
private ShoppingTrolleyDao shoppingTrolleyDao;
// @Autowired
// private MallGoodsClient mallGoodsClient;
// @Autowired
// private PmsAppApi pmsAppApi;
@Autowired
private AppMallOrderService appMallOrderService;
// @Autowired
// private UploadHandler uploadHandler;
// @Autowired
// private UserAppApi userAppApi;
@Autowired
private PmsClient pmsClient;
@Autowired
private UserClient userClient;
@Override
@Transactional
public ResultBody addGoods(MallShopCarVO param, BaseAccountDTO cuser) {
if (param.getBuyNum() <= 0) {
return ResultBody.error(ResultEnum.BUY_NUM_ERROR);
}
// 获取用户信息
//MallUserDTO muser = mallUserClient.feignGetSimpleUserInfo(cuser.getId());
UserAccountSimpleDTO userAccountSimpleDTO = userClient.feignGetUserSimpleInfo(cuser.getUserAccountId(), null);
if (StringUtils.isEmpty(userAccountSimpleDTO.getPhoneNum())) {
return ResultBody.error(ResultEnum.AUTH_ACCOUNT_ERROR);
}
//每次添加只查看购物车是否存在规格一样的记录
boolean flag = true;
MallShopCarQO mallShopCarQO = new MallShopCarQO();
mallShopCarQO.setGoodsInfoId(param.getGoodsInfoId());
mallShopCarQO.setSaleStatus(0);
mallShopCarQO.setUserAccountId(param.getUserAccountId());
//判断是产品还是行业
if(param.getDirectoryId().equals(1)){
//同一个商品则先查购物车有几条记录,再看规格是否有相同的
List<MallProdShopCarDO> mallProdShopCarDOS = shoppingTrolleyDao.listMallProdShopCar(mallShopCarQO);
for (MallProdShopCarDO mallProdShopCarDO : mallProdShopCarDOS){
Set<Integer> specIds = mallProdShopCarDO.getShopCarDetailDOS().stream().map(MallProdShopCarDetailDO::getMallProdSkuInfoSpecId).collect(Collectors.toSet());
//看是否要加入购物车。查看要加入购物车的商品是否已存在,存在则不需要加入
if(CollectionUtils.isEqualCollection(param.getMallSkuSpecIds(), specIds)){
//已存在购物车时,数量修改
shoppingTrolleyDao.addProdShopCarBuyNum(mallProdShopCarDO.getId(), param.getBuyNum());
flag = false;
break;
}
}
if(flag){
//需要加入购物车
MallProdShopCarDO mallProdShopCarDO = new MallProdShopCarDO(param);
shoppingTrolleyDao.insertMallProdShopCar(mallProdShopCarDO);
shoppingTrolleyDao.batchInsertMallProdShopCarDetail(mallProdShopCarDO.getId(), param.getMallSkuSpecIds());
}
// else {
// return ResultBody.error(ResultEnum.EXIST_THE_SAME_GOODS_ERROR);
// }
}else if((param.getDirectoryId().equals(2))){
List<MallIndstShopCarDO> mallIndstShopCarDOS = shoppingTrolleyDao.listMallIndstShopCar(mallShopCarQO);
for (MallIndstShopCarDO mallIndstShopCarDO : mallIndstShopCarDOS){
Set<Integer> specIds = mallIndstShopCarDO.getShopCarDetailDOS().stream().map(MallIndstShopCarDetailDO::getMallIndstSkuInfoSpecId).collect(Collectors.toSet());
//看是否要加入购物车。查看要加入购物车的商品是否已存在,存在则不需要加入
if(CollectionUtils.isEqualCollection(param.getMallSkuSpecIds(), specIds)){
//已存在购物车时,数量修改
shoppingTrolleyDao.addIndstShopCarBuyNum(mallIndstShopCarDO.getId(), param.getBuyNum());
flag = false;
break;
}
}
if(flag){
//需要加入购物车
MallIndstShopCarDO mallIndstShopCarDO = new MallIndstShopCarDO(param);
shoppingTrolleyDao.insertMallIndstShopCar(mallIndstShopCarDO);
shoppingTrolleyDao.batchInsertMallIndstShopCarDetail(mallIndstShopCarDO.getId(), param.getMallSkuSpecIds());
}
// else {
// return ResultBody.error(ResultEnum.EXIST_THE_SAME_GOODS_ERROR);
// }
}
return ResultBody.success();
}
@Override
public ResultBody batchRemove(Integer type, List<Integer> carIds, BaseAccountDTO currentAccount) {
if (CollectionUtils.isEmpty(carIds)) {
return ResultBody.error(ResultEnum.PARAM_DEFECT);
}
if(type.equals(1)){
shoppingTrolleyDao.batchRemoveProd(currentAccount.getUserAccountId(), carIds);
}else if((type.equals(2))){
shoppingTrolleyDao.batchRemoveIndst(currentAccount.getUserAccountId(), carIds);
}
return ResultBody.success();
}
@Override
public ResultBody listPage(Integer pageNo, Integer pageSize, BaseAccountDTO currentAccount) {
MallShopCarQO mallShopCarQO = new MallShopCarQO();
mallShopCarQO.setUserAccountId(currentAccount.getUserAccountId());
mallShopCarQO.setSaleStatus(0);
List<MallProdShopCarDO> mallProdShopCarDOS = shoppingTrolleyDao.listMallProdShopCar(mallShopCarQO);
List<MallIndstShopCarDO> mallIndstShopCarDOS = shoppingTrolleyDao.listMallIndstShopCar(mallShopCarQO);
List<MallGoodsShopCarDTO> mallGoodsShopCarDTOList = new ArrayList<MallGoodsShopCarDTO>();
List<MallGoodsShopCarDTO> prodShopCarList = mallProdShopCarDOS.stream().map(MallProdShopCarDO::buildMallGoodsShopCarDTO).collect(Collectors.toList());
List<MallGoodsShopCarDTO> indstShopCarList = mallIndstShopCarDOS.stream().map(MallIndstShopCarDO::buildMallGoodsShopCarDTO).collect(Collectors.toList());
mallGoodsShopCarDTOList.addAll(prodShopCarList);
mallGoodsShopCarDTOList.addAll(indstShopCarList);
//调用商品信息和详细规格信息
List<MallGoodsShopCarDTO> mallGoodsShopCarDTOList1 = pmsClient.fillGoodsInfo(mallGoodsShopCarDTOList, null);
if(!CollectionUtils.isEmpty(mallGoodsShopCarDTOList1)){
mallGoodsShopCarDTOList1.sort((d1, d2)->{
return d2.getCreateTime().compareTo(d1.getCreateTime());
});
}
return ResultBody.success(mallGoodsShopCarDTOList1);
}
@Override
public ResultBody updateBuyNum(Integer directoryId, Integer mallShopCarId, Integer buyNum, BaseAccountDTO currentAccount) {
if(directoryId.equals(1)){
MallProdShopCarDO prodParam = new MallProdShopCarDO(mallShopCarId, buyNum);
MallProdShopCarDO mallProdShopCarDO = shoppingTrolleyDao.getMallProdShopCar(prodParam);
if(mallProdShopCarDO == null){
return ResultBody.error(ResultEnum.SHOP_CAR_ERROR);
}
Integer changeNum = buyNum - mallProdShopCarDO.getBuyNum();
if (changeNum < 0) {
// 当数量为减少的时候,检测数量必须大于0
if ((mallProdShopCarDO.getBuyNum() + changeNum) <= 0) {
return ResultBody.error(ResultEnum.BUY_NUM_ERROR);
}
}
MallProdShopCarDO mallProdShopCarDO1 = new MallProdShopCarDO();
mallProdShopCarDO1.setId(mallShopCarId);
mallProdShopCarDO1.setBuyNum(changeNum);
mallProdShopCarDO1.setUserAccountId(currentAccount.getUserAccountId());
shoppingTrolleyDao.updateMallProdShopCar(mallProdShopCarDO1);
}else if((directoryId.equals(2))){
MallIndstShopCarDO indstParam = new MallIndstShopCarDO();
indstParam.setId(mallShopCarId);
MallIndstShopCarDO mallIndstShopCarDO = shoppingTrolleyDao.getMallIndstShopCar(indstParam);
if(mallIndstShopCarDO == null){
return ResultBody.error(ResultEnum.SHOP_CAR_ERROR);
}
Integer changeNum = buyNum - mallIndstShopCarDO.getBuyNum();
if (changeNum < 0) {
// 当数量为减少的时候,检测数量必须大于0
if ((mallIndstShopCarDO.getBuyNum() + changeNum) <= 0) {
return ResultBody.error(ResultEnum.BUY_NUM_ERROR);
}
}
MallIndstShopCarDO mallIndstShopCarDO1 = new MallIndstShopCarDO();
mallIndstShopCarDO1.setId(mallShopCarId);
mallIndstShopCarDO1.setBuyNum(changeNum);
mallIndstShopCarDO1.setUserAccountId(currentAccount.getUserAccountId());
shoppingTrolleyDao.updateMallIndstShopCar(mallIndstShopCarDO1);
}
return ResultBody.success();
}
@Override
public ResultBody confirmShop(ConfirmMallOrderVO param, BaseAccountDTO cuser) {
//查询用户信息
//MallUserDTO muser = mallUserClient.feignGetSimpleUserInfo(cuser.getUserAccountId());
UserAccountSimpleDTO userAccountSimpleDTO = userClient.feignGetUserSimpleInfo(cuser.getUserAccountId(), null);
if (StringUtils.isEmpty(userAccountSimpleDTO.getPhoneNum())) {
return ResultBody.error(ResultEnum.AUTH_ACCOUNT_ERROR);
}
ResultBody<ShopCarIdParamVO> shopCarIdParamVOResultBody = this.dealShopCarParam(param.getShopCarList(), cuser);
if(!shopCarIdParamVOResultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())){
return shopCarIdParamVOResultBody;
}
ShopCarIdParamVO shopCarIdParamVO = shopCarIdParamVOResultBody.getResult();
ResultBody<ConfirmGoodsInfoDTO> confirmGoodsInfoDTOResultBody = appMallOrderService.confirmShop(shopCarIdParamVO.getMallProdShopCarDOS(), shopCarIdParamVO.getMallIndstShopCarDOS(), userAccountSimpleDTO);
return confirmGoodsInfoDTOResultBody;
}
// @Override
// public ResultBody listShoppingTrolleyExport(List<ConfirmShopVO> shopCarList, BaseAccountDTO currentAccount, HttpServletResponse response) throws IOException {
// //查询用户信息
// //MallUserDTO muser = mallUserClient.feignGetSimpleUserInfo(currentAccount.getId());
// UserAccountSimpleDTO userAccountSimpleDTO = userAppApi.feignGetUserSimpleInfo(currentAccount.getUserAccountId(), null);
// if (StringUtils.isEmpty(userAccountSimpleDTO.getPhoneNum())) {
// return ResultBody.error(ResultEnum.AUTH_ACCOUNT_ERROR);
// }
// ResultBody<ShopCarIdParamVO> shopCarIdParamVOResultBody = this.dealShopCarParam(shopCarList, currentAccount);
// if(!shopCarIdParamVOResultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())){
// return ResultBody.error(ResultEnum.REQUEST_PARAM_ILLEGAL_ERROR);
// }
// ShopCarIdParamVO shopCarIdParamVO = shopCarIdParamVOResultBody.getResult();
// ResultBody<ConfirmGoodsInfoDTO> confirmGoodsInfoDTOResultBody = appMallOrderService.confirmShop(shopCarIdParamVO.getMallProdShopCarDOS(), shopCarIdParamVO.getMallIndstShopCarDOS(), muser);
//
// if(confirmGoodsInfoDTOResultBody.getCode().equals(ResultEnum.SPEC_NOT_CONFIG_PRICE.getResultCode())){
// return ResultBody.error(ResultEnum.SPEC_NOT_CONFIG_PRICE);
// }
// List<ShoppingTrolleyProdExcel> shoppingTrolleyProdExcels = new ArrayList<>();
// if(!CollectionUtils.isEmpty(confirmGoodsInfoDTOResultBody.getResult().getOrderGoodsProdDetailDTOS())){
// ProductSpecPriceQO productSpecPriceQO = new ProductSpecPriceQO();
// productSpecPriceQO.setMallUserId(currentAccount.getUserAccountId());
// productSpecPriceQO.setChannelClass(currentAccount.getChannelClass());
// List<Integer> productSpecIds = confirmGoodsInfoDTOResultBody.getResult().getOrderGoodsProdDetailDTOS().stream().map(d->d.getProductSpecId()).collect(Collectors.toList());
// productSpecPriceQO.setProductSpecIds(productSpecIds);
// //通过产品规格id查询对应的价格
// List<MallProductSpecPriceDTO> mallProductSpecPriceDTOS = mallGoodsClient.feignListProductSpecPrice(productSpecPriceQO);
// for (OrderGoodsProdDetailDTO orderGoodsProdDetailDTO : confirmGoodsInfoDTOResultBody.getResult().getOrderGoodsProdDetailDTOS()){
// ShoppingTrolleyProdExcel shoppingTrolleyProdExcel = new ShoppingTrolleyProdExcel();
// shoppingTrolleyProdExcel.setProductSpecId(orderGoodsProdDetailDTO.getProductSpecId());
// shoppingTrolleyProdExcel.setProductName(orderGoodsProdDetailDTO.getProductName());
// shoppingTrolleyProdExcel.setUnit(orderGoodsProdDetailDTO.getUnitName());
// shoppingTrolleyProdExcel.setProductSpecImg(orderGoodsProdDetailDTO.getProdSkuSpecImage());
// shoppingTrolleyProdExcel.setProductSpecName(orderGoodsProdDetailDTO.getSpecName());
// shoppingTrolleyProdExcel.setBuyNum(orderGoodsProdDetailDTO.getBuyNum());
// //找到对应的价格
// for (MallProductSpecPriceDTO mallProductSpecPriceDTO : mallProductSpecPriceDTOS){
// if(orderGoodsProdDetailDTO.getProductSpecId().equals(mallProductSpecPriceDTO.getProductSpecId())){
// if(mallProductSpecPriceDTO.getOpPrice() == null){
// shoppingTrolleyProdExcel.setOpPrice(null);
// }else {
// shoppingTrolleyProdExcel.setOpPrice(mallProductSpecPriceDTO.getOpPrice().multiply(BigDecimal.valueOf(shoppingTrolleyProdExcel.getBuyNum())));
// }
// shoppingTrolleyProdExcel.setMkPrice(mallProductSpecPriceDTO.getMkPrice().multiply(BigDecimal.valueOf(shoppingTrolleyProdExcel.getBuyNum())));
// break;
// }
// }
// //统一放入待生成的list中
// shoppingTrolleyProdExcels.add(shoppingTrolleyProdExcel);
// }
// }
// if(!CollectionUtils.isEmpty(confirmGoodsInfoDTOResultBody.getResult().getOrderGoodsIndstProdListDTOS())){
// for (OrderGoodsIndstProdListDTO orderGoodsIndstProdListDTO : confirmGoodsInfoDTOResultBody.getResult().getOrderGoodsIndstProdListDTOS()){
// ShoppingTrolleyProdExcel shoppingTrolleyProdExcel = new ShoppingTrolleyProdExcel();
// shoppingTrolleyProdExcel.setProductSpecId(orderGoodsIndstProdListDTO.getProductSpecId());
// shoppingTrolleyProdExcel.setProductName(orderGoodsIndstProdListDTO.getProductName());
// shoppingTrolleyProdExcel.setUnit(orderGoodsIndstProdListDTO.getUnitName());
// shoppingTrolleyProdExcel.setProductSpecImg(orderGoodsIndstProdListDTO.getProdSkuSpecImage());
// shoppingTrolleyProdExcel.setProductSpecName(orderGoodsIndstProdListDTO.getProdSkuSpecName());
// shoppingTrolleyProdExcel.setBuyNum(orderGoodsIndstProdListDTO.getBuyNum());
// //统一放入待生成的list中
// shoppingTrolleyProdExcels.add(shoppingTrolleyProdExcel);
// }
// }
//
// Collection<ShoppingTrolleyProdExcel> collection = shoppingTrolleyProdExcels;
// Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("无人机城购物车数据", "购物车信息"), ShoppingTrolleyProdExcel.class, collection);
// String fileName = "shopCart" + TDateUtil.getDateStr(new Date(), "yyyyMMddHHmmss");
// return ResultBody.success(uploadHandler.uploadWorkBook(workbook, fileName));
// }
private ResultBody<ShopCarIdParamVO> dealShopCarParam(List<ConfirmShopVO> shopCarList, BaseAccountDTO cuser){
UUID uuid = UUID.randomUUID();
ShopCarIdParamVO shopCarIdParamVO = new ShopCarIdParamVO();
if (org.springframework.util.CollectionUtils.isEmpty(shopCarList)) {
return ResultBody.error(ResultEnum.PARAM_DEFECT);
}
//对购物车id进行分类,产品或行业
Set<Integer> prodIds = new HashSet<>();
Set<Integer> indstIds = new HashSet<>();
for (ConfirmShopVO confirmShopVO : shopCarList ){
if (confirmShopVO.getDirectoryId().toString().equals("1")){
prodIds.add(confirmShopVO.getShopCarId());
}
if (confirmShopVO.getDirectoryId().toString().equals("2")){
indstIds.add(confirmShopVO.getShopCarId());
}
}
log.info("线程id[{}],prodIds==>[{}],indstIds==>[{}]",uuid, JSONObject.toJSONString(prodIds), JSONObject.toJSONString(indstIds));
List<MallProdShopCarDO> mallProdShopCarDOS = new ArrayList<>();
if(!CollectionUtils.isEmpty(prodIds)){
MallShopCarQO prodMallShopCarQO = new MallShopCarQO();
prodMallShopCarQO.setUserAccountId(cuser.getUserAccountId());
prodMallShopCarQO.setCarIds(prodIds);
mallProdShopCarDOS = shoppingTrolleyDao.listMallProdShopCar(prodMallShopCarQO);
shopCarIdParamVO.setMallProdShopCarDOS(mallProdShopCarDOS);
}
List<MallIndstShopCarDO> mallIndstShopCarDOS = new ArrayList<>();
if(!CollectionUtils.isEmpty(indstIds)){
MallShopCarQO indstMallShopCarQO = new MallShopCarQO();
indstMallShopCarQO.setUserAccountId(cuser.getUserAccountId());
indstMallShopCarQO.setCarIds(indstIds);
mallIndstShopCarDOS = shoppingTrolleyDao.listMallIndstShopCar(indstMallShopCarQO);
shopCarIdParamVO.setMallIndstShopCarDOS(mallIndstShopCarDOS);
}
log.info("线程id[{}],mallProdShopCarDOS==>[{}],mallIndstShopCarDOS==>[{}]",uuid, JSONObject.toJSONString(mallProdShopCarDOS), JSONObject.toJSONString(mallIndstShopCarDOS));
if(CollectionUtils.isEmpty(mallProdShopCarDOS) && CollectionUtils.isEmpty(mallIndstShopCarDOS)){
return ResultBody.error(ResultEnum.GOODS_VERSION_ERROR);
}
return ResultBody.success(shopCarIdParamVO);
}
}
package com.mmc.oms.util;
import org.springframework.beans.BeanUtils;
import java.util.Objects;
/**
* @author 作者 dahang
* @version 创建时间:2022年7月23日
* @explain 同名属性拷贝值
*/
public class BeanCopyUtils {
public static <T> T properties(Object source, T target) {
if (Objects.isNull(source)) {
return target;
}
BeanUtils.copyProperties(source, target);
return target;
}
public static <T> T properties(Object source, Class<T> target) {
T t = null;
try {
t = target.newInstance();
if (Objects.isNull(source)) {
return t;
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
BeanUtils.copyProperties(source, t);
return t;
}
}
package com.mmc.oms.util;
/**
* @author 作者 geDuo
* @version 创建时间:2022年2月21日 下午3:55:10
* https://www.cnblogs.com/sgh1023/p/14094592.html
* @explain 雪花算法-分布式id
*/
public class SnowFlake {
/**
* 起始的时间戳
*/
private final static long START_STMP = 1480166465631L;
/**
* 每一部分占用的位数
*/
private final static long SEQUENCE_BIT = 12; // 序列号占用的位数
private final static long MACHINE_BIT = 5; // 机器标识占用的位数
private final static long DATACENTER_BIT = 5;// 数据中心占用的位数
/**
* 每一部分的最大值
*/
private final static long MAX_DATACENTER_NUM = -1L ^ (-1L << DATACENTER_BIT);
private final static long MAX_MACHINE_NUM = -1L ^ (-1L << MACHINE_BIT);
private final static long MAX_SEQUENCE = -1L ^ (-1L << SEQUENCE_BIT);
/**
* 每一部分向左的位移
*/
private final static long MACHINE_LEFT = SEQUENCE_BIT;
private final static long DATACENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT;
private final static long TIMESTMP_LEFT = DATACENTER_LEFT + DATACENTER_BIT;
private long datacenterId; // 数据中心
private long machineId; // 机器标识
private long sequence = 0L; // 序列号
private long lastStmp = -1L;// 上一次时间戳
public SnowFlake(long datacenterId, long machineId) {
if (datacenterId > MAX_DATACENTER_NUM || datacenterId < 0) {
throw new IllegalArgumentException("datacenterId can't be greater than MAX_DATACENTER_NUM or less than 0");
}
if (machineId > MAX_MACHINE_NUM || machineId < 0) {
throw new IllegalArgumentException("machineId can't be greater than MAX_MACHINE_NUM or less than 0");
}
this.datacenterId = datacenterId;
this.machineId = machineId;
}
/**
* 产生下一个ID
*
* @return
*/
public synchronized long nextId() {
long currStmp = getNewstmp();
if (currStmp < lastStmp) {
throw new RuntimeException("Clock moved backwards. Refusing to generate id");
}
if (currStmp == lastStmp) {
// 相同毫秒内,序列号自增
sequence = (sequence + 1) & MAX_SEQUENCE;
// 同一毫秒的序列数已经达到最大
if (sequence == 0L) {
currStmp = getNextMill();
}
} else {
// 不同毫秒内,序列号置为0
sequence = 0L;
}
lastStmp = currStmp;
return (currStmp - START_STMP) << TIMESTMP_LEFT // 时间戳部分
| datacenterId << DATACENTER_LEFT // 数据中心部分
| machineId << MACHINE_LEFT // 机器标识部分
| sequence; // 序列号部分
}
private long getNextMill() {
long mill = getNewstmp();
while (mill <= lastStmp) {
mill = getNewstmp();
}
return mill;
}
private long getNewstmp() {
return System.currentTimeMillis();
}
public static void main(String[] args) {
SnowFlake snowFlake = new SnowFlake(2, 3);
for (int i = 0; i < (1 << 12); i++) {
System.out.println(snowFlake.nextId());
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.oms.dao.UserAddressDao">
<!-- 结果集 -->
<resultMap type="com.mmc.oms.entity.mall.UserAddressDO" id="UserAddressMap">
<result property="id" column="id"/>
<result property="userAccountId" column="user_account_id"/>
<result property="takeName" column="take_name"/>
<result property="takePhone" column="take_phone"/>
<result property="takeRegion" column="take_region"/>
<result property="takeAddress" column="take_address"/>
<result property="type" column="type"/>
<result property="createdTime" column="created_time"/>
<result property="updatedTime" column="updated_time"/>
</resultMap>
<!-- 基本字段 -->
<sql id="Base_Column_List">
id,user_account_id,take_name,take_phone,take_region,take_address,`type`,created_time,updated_time
</sql>
<!-- 新增所有列 -->
<insert id="insert" keyProperty="id" useGeneratedKeys="true" parameterType="com.mmc.oms.entity.mall.UserAddressDO">
insert into user_address(user_account_id, take_name, take_phone, take_region, take_address,`type`)
values (#{userAccountId}, #{takeName}, #{takePhone}, #{takeRegion}, #{takeAddress},#{type})
</insert>
<!-- 通过主键修改数据 -->
<update id="update" parameterType="com.mmc.oms.entity.mall.UserAddressDO">
update user_address
<set>
<if test="userAccountId != null">
user_account_id = #{userAccountId},
</if>
<if test="takeName != null and takeName != ''">
take_name = #{takeName},
</if>
<if test="takePhone != null and takePhone != ''">
take_phone = #{takePhone},
</if>
<if test="takeRegion != null and takeRegion != ''">
take_region = #{takeRegion},
</if>
<if test="takeAddress != null and takeAddress != ''">
take_address = #{takeAddress},
</if>
<if test="type != null">
type = #{type},
</if>
<if test="isDeleted != null">
is_deleted = #{isDeleted},
</if>
</set>
<where>
<if test="id !=null">
and id = #{id}
</if>
<if test="userAccountId != null">
and user_account_id = #{userAccountId}
</if>
</where>
</update>
<!--通过主键删除-->
<update id="removeById" parameterType="java.lang.Integer">
UPDATE user_address set is_deleted = 1 where id = #{id}
</update>
<!-- 查询单个 -->
<select id="selectById" resultMap="UserAddressMap">
select
<include refid="Base_Column_List" />
from user_address
where id = #{id}
</select>
<!--通过实体作为筛选条件查询-->
<select id="selectList" resultMap="UserAddressMap" parameterType="com.mmc.oms.entity.mall.UserAddressDO">
select
<include refid="Base_Column_List" />
from user_address
<where>
<if test="id != null">
and id = #{id}
</if>
<if test="userAccountId != null">
and user_account_id = #{userAccountId}
</if>
<if test="takeName != null and takeName != ''">
and take_name = #{takeName}
</if>
<if test="takePhone != null and takePhone != ''">
and take_phone = #{takePhone}
</if>
<if test="takeRegion != null and takeRegion != ''">
and take_region = #{takeRegion}
</if>
<if test="takeAddress != null and takeAddress != ''">
and take_address = #{takeAddress}
</if>
<if test="type != null">
and type = #{type}
</if>
<if test="isDeleted !=null">
and is_deleted = #{isDeleted}
</if>
<if test="isDeleted ==null and isDeleteds ==null">
and is_deleted = 0
</if>
<if test="isDeleteds !=null">
<foreach collection="isDeleteds" item="isDeleted" separator="," close=")" open="and is_deleted in (">
#{isDeleted}
</foreach>
</if>
</where>
order by type ,created_time desc
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.oms.dao.mall.AppMallOrderDao">
<insert id="batchInsertOrderGoodsProdDO" useGeneratedKeys="true" keyProperty="id">
insert into mall_order_goods_prod (order_id, mall_prod_shop_car_id, goods_info_id, directory_id, goods_amount, goods_no, goods_name, main_img, buy_num, create_time) values
<foreach item="item" collection="list" separator=",">
(#{item.orderId}, #{item.mallProdShopCarId}, #{item.goodsInfoId}, #{item.directoryId},#{item.goodsAmount}, #{item.goodsNo}, #{item.goodsName}, #{item.mainImg}, #{item.buyNum}, NOW())
</foreach>
</insert>
<insert id="batchInsertOrderGoodsProdDetailDO" useGeneratedKeys="true" keyProperty="id" parameterType="java.util.List">
insert into mall_order_goods_prod_detail (
order_goods_prod_id,
mall_prod_shop_car_detail_id,
mall_prod_sku_info_spec_id,
mall_prod_sku_info_id,
goods_type_name,
product_name,
model,
product_brand,
brand_info_id,
product_spec_id,
prod_sku_spec_name,
prod_sku_spec_image,
part_no,
version_desc,
buy_num,
unit_price,
sku_spec_amount,
create_time
) values
<foreach item="item" collection="list" separator="," index="index">
(#{item.orderGoodsProdId}, #{item.mallProdShopCarDetailId}, #{item.mallProdSkuInfoSpecId},#{item.mallProdSkuInfoId}, #{item.goodsTypeName}, #{item.productName}, #{item.model},
#{item.productBrand}, #{item.brandInfoId}, #{item.productSpecId}, #{item.specName}, #{item.prodSkuSpecImage}, #{item.partNo}, #{item.versionDesc}, #{item.buyNum}, #{item.unitPrice}, #{item.skuSpecAmount}, NOW())
</foreach>
</insert>
<insert id="batchInsertOrderGoodsIndstDO" useGeneratedKeys="true" keyProperty="id">
insert into order_goods_indst (
order_id,
mall_indst_shop_car_id,
goods_info_id,
directory_id,
goods_amount,
goods_no,
goods_name,
main_img,
buy_num,
create_time
) values
<foreach item="item" collection="list" separator=",">
(#{item.orderId}, #{item.mallIndstShopCarId}, #{item.goodsInfoId}, #{item.directoryId},#{item.goodsAmount}, #{item.goodsNo}, #{item.goodsName}, #{item.mainImg}, #{item.buyNum}, NOW())
</foreach>
</insert>
<insert id="batchInsertOrderGoodsIndstDetailDO" useGeneratedKeys="true" keyProperty="id">
insert into order_goods_indst_detail (
order_goods_indst_id,
mall_indst_shop_car_detail_id,
mall_indst_sku_info_spec_id,
industry_spec_id,
industry_sku_spec_name,
industry_sku_spec_image,
buy_num,
unit_price,
sku_spec_amount,
create_time
) values
<foreach item="item" collection="list" separator=",">
(#{item.orderGoodsIndstId}, #{item.mallIndstShopCarDetailId}, #{item.mallIndstSkuInfoSpecId},#{item.industrySpecId}, #{item.industrySkuSpecName}, #{item.industrySkuSpecImage}, #{item.buyNum}, #{item.unitPrice}, #{item.skuSpecAmount}, NOW())
</foreach>
</insert>
<insert id="batchInsertOrderGoodsIndstProdListDO" useGeneratedKeys="true" keyProperty="id">
insert into order_goods_indst_prod_list (
order_goods_indst_detail_id,
goods_type_name,
product_name,
model,
product_brand,
product_spec_id,
prod_sku_spec_name,
prod_sku_spec_image,
part_no,
version_desc,
buy_num,
create_time
) values
<foreach item="item" collection="list" separator=",">
(#{item.orderGoodsIndstDetailId}, #{item.goodsTypeName}, #{item.productName}, #{item.model},
#{item.productBrand}, #{item.productSpecId}, #{item.prodSkuSpecName}, #{item.prodSkuSpecImage},
#{item.partNo}, #{item.versionDesc}, #{item.buyNum}, NOW())
</foreach>
</insert>
<insert id="batchInsertOrderCoupon" useGeneratedKeys="true" keyProperty="id">
insert into order_coupon (
order_id,
coupon_user_id,
coupon_type,
use_type,
use_amount,
create_time
) values
<foreach item="item" collection="list" separator=",">
(#{item.orderId}, #{item.couponUserId}, #{item.couponType}, #{item.useType}, #{item.useAmount},NOW())
</foreach>
</insert>
<update id="updateOrderShareInfo">
update mall_order
set share_status = 200,
share_id = #{shareId}
where id = #{orderId}
</update>
<resultMap id="listSkuSpecResultMap" type="com.mmc.oms.entity.mall.MallOrderSimpleDO">
<id column="id" property="id"/>
<collection property="ogSkuSpecDOList" ofType="com.mmc.oms.entity.mall.OGSkuSpecDO">
<id column="odId" property="id"/>
<result column="skuSpecName" property="skuSpecName"/>
<result column="directory_id" property="directoryId"/>
<result column="shop_car_id" property="shopCarId"/>
</collection>
</resultMap>
<select id="listMallOrderSkuSpec" resultMap="listSkuSpecResultMap">
SELECT
mo.id,
ogp.mall_prod_shop_car_id as shop_car_id,
ogp.directory_id as directory_id,
ogpd.id AS odId,
ogpd.prod_sku_spec_name AS skuSpecName
FROM
mall_order mo
INNER JOIN mall_order_goods_prod ogp ON mo.id = ogp.order_id
INNER JOIN mall_order_goods_prod_detail ogpd ON ogp.id = ogpd.order_goods_prod_id
WHERE
<foreach collection="list" item="id" index="index"
open="mo.id in (" close=")" separator=",">
#{id}
</foreach>
and mo.create_time >= '2022-12-07 10:20:00'
</select>
<select id="listOrderCoupon" resultType="com.mmc.oms.entity.mall.OrderCouponDO">
select id, order_id as order_id, coupon_user_id as couponUserId, coupon_type as couponType, use_type as useType, use_amount as useAmount, create_time as createTime
from order_coupon
where order_id = #{orderId}
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.oms.dao.mall.MallOrderDao">
<resultMap type="com.mmc.oms.entity.mall.MallOrderDO" id="mallOrderResultMap">
<id property="id" column="id" />
<result property="pid" column="pid" />
<result property="orderNo" column="order_no" />
<result property="statusCode" column="status_code" />
<result property="userAccountId" column="user_account_id" />
<result property="uid" column="uid" />
<result property="userName" column="user_name" />
<result property="phoneNum" column="phone_num" />
<result property="shutReason" column="shut_reason" />
<result property="payMethod" column="pay_method" />
<result property="updateTime" column="update_time" />
<result property="createTime" column="create_time" />
<result property="recMallUserId" column="rec_mall_user_id"/>
<result property="userAddressId" column="user_address_id"/>
<result property="deliveryTime" column="delivery_time"/>
<result property="orderAmount" column="order_amount"/>
<result property="creditPeriod" column="credit_period"/>
<result property="operationId" column="operation_id"/>
<result property="contractSignedWay" column="contract_signed_way"/>
<result property="creditPeriodDays" column="credit_period_days"/>
<result property="signStatus" column="sign_status"/>
<result property="remark" column="remark"/>
<result property="mRemark" column="m_remark"/>
<result property="deductAmount" column="deduct_amount"/>
<result property="discountAmount" column="discount_amount"/>
<result property="realityAmount" column="reality_amount"/>
<result property="shareId" column="share_id"/>
<result property="shareStatus" column="share_status"/>
<result property="couponDiscountAmount" column="coupon_discount_amount"/>
<result property="manualDiscountAmount" column="manual_discount_amount"/>
<result property="rcdOrderAmount" column="rcd_order_amount"/>
<result property="divide" column="is_divide"/>
</resultMap>
<!-- <resultMap type="com.mmc.oms.entity.OrderGoodsDO"-->
<!-- id="orderGoodsResultMap">-->
<!-- <id property="id" column="id" />-->
<!-- <result property="pid" column="pid" />-->
<!-- <result property="orderId" column="order_id" />-->
<!-- <result property="shopCarId" column="shop_car_id" />-->
<!-- <result property="goodsInfoId" column="goods_info_id" />-->
<!-- <result property="goodsNo" column="goods_no" />-->
<!-- <result property="goodsName" column="goods_name" />-->
<!-- <result property="mainImg" column="main_img" />-->
<!-- <result property="mallSkuId" column="mall_sku_id" />-->
<!-- <result property="skuTitle" column="sku_title" />-->
<!-- <result property="buyNum" column="buy_num" />-->
<!-- <result property="goodsAmount" column="goods_amount"/>-->
<!-- <result property="bookSpu" column="book_spu"/>-->
<!-- </resultMap>-->
<resultMap type="com.mmc.oms.entity.mall.MallOrderStatusDO"
id="orderStatusResultMap">
<id property="id" column="id" />
<result property="status" column="status" />
<result property="code" column="code" />
<result property="nextCode" column="next_code" />
</resultMap>
<resultMap type="com.mmc.oms.entity.mall.MallOrderExpressDO"
id="orderExpressResultMap">
<id property="id" column="id" />
<result property="orderId" column="order_id" />
<result property="sendExpNo" column="send_exp_no" />
<result property="sendExpCode" column="send_exp_code" />
<result property="takeName" column="take_name" />
<result property="takePhone" column="take_phone" />
<result property="takeRegion" column="take_region" />
<result property="takeAddress" column="take_address" />
<result property="updateTime" column="update_time" />
<result property="createTime" column="create_time" />
</resultMap>
<resultMap type="com.mmc.oms.entity.mall.OrderPayDO" id="orderPayResultMap">
<id property="id" column="id" />
<result property="orderId" column="order_id" />
<result property="userAccountId" column="user_account_id" />
<result property="payType" column="pay_type" />
<result property="payStatus" column="pay_status" />
<result property="vouchr" column="vouchr" />
<result property="payRemark" column="pay_remark" />
<result property="refuseReason" column="refuse_reason" />
<result property="updateTime" column="update_time" />
<result property="createTime" column="create_time" />
</resultMap>
<resultMap type="com.mmc.oms.entity.mall.OrderServiceDO"
id="orderServiceResultMap">
<id property="id" column="id" />
<result property="orderId" column="order_id" />
<result property="goodsInfoId" column="goods_info_id" />
<result property="serviceName" column="service_name" />
<result property="createTime" column="create_time" />
</resultMap>
<insert id="insertMallOrder" useGeneratedKeys="true" keyProperty="id" parameterType="com.mmc.oms.entity.mall.MallOrderDO">
insert into mall_order
(
id,pid,order_no,status_code,user_account_id,uid,user_name,phone_num,create_time,rec_mall_user_id,rcd_order_amount,user_address_id, remark,order_amount,sale_id,sale_name,operation_id,coupon_discount_amount,reality_amount
)
values
(
#{id},#{pid},#{orderNo},#{statusCode},#{userAccountId},#{uid},#{userName},#{phoneNum},#{createTime},#{recMallUserId},#{rcdOrderAmount},#{userAddressId},#{remark},#{orderAmount},#{saleId},#{saleName},#{operationId},#{couponDiscountAmount},#{realityAmount}
)
</insert>
<!--<insert id="batchInsertOrderGoods" useGeneratedKeys="true" keyProperty="id" parameterType="java.util.List">-->
<!-- insert into order_goods-->
<!-- (-->
<!-- order_id,shop_car_id,goods_info_id,goods_no,goods_name,-->
<!-- mall_sku_id,sku_title,buy_num,main_img,create_time-->
<!-- )-->
<!-- values-->
<!-- <foreach item="d" index="index" collection="list" separator=",">-->
<!-- (#{d.orderId},#{d.shopCarId},#{d.goodsInfoId},#{d.goodsNo},#{d.goodsName},-->
<!-- #{d.mallSkuId},#{d.skuTitle},#{d.buyNum},#{d.mainImg},#{d.createTime})-->
<!-- </foreach>-->
<!-- </insert>-->
<delete id="deleteById">
delete from mall_order where id = #{id}
</delete>
<select id="countPageAmOrder" resultType="Integer">
select count(*)
from mall_order o
<where>
o.user_account_id = #{userAccountId} and o.create_time &lt; '2022-12-07 10:20:00'
<if test=" keyword != null and keyword != '' ">
and (
o.order_no like CONCAT('%',#{keyword},'%')
)
</if>
<if test=' orderType == "doing" '>
and o.status_code &lt; 800
</if>
</where>
</select>
<select id="listPageAmOrder" resultMap="mallOrderResultMap">
select o.id,o.order_no,o.status_code,o.pay_method,o.create_time,o.contract_signed_way,o.remark
from
mall_order o
<where>
o.user_account_id = #{userAccountId} and o.create_time &lt; '2022-12-07 10:20:00'
<if test=" keyword != null and keyword != '' ">
and (
o.order_no like CONCAT('%',#{keyword},'%')
)
</if>
<if test=' orderType == "doing" '>
and o.status_code &lt; 800
</if>
</where>
order by o.create_time desc
limit #{pageNo},#{pageSize}
</select>
<!-- <select id="listOrderGoods" resultMap="orderGoodsResultMap">-->
<!-- select g.id,g.order_id,g.shop_car_id,g.goods_no,g.goods_name,-->
<!-- g.sku_title,g.buy_num,g.mall_sku_id,g.main_img,car.book_spu-->
<!-- from order_goods g left JOIN shop_car car on g.shop_car_id = car.id-->
<!-- <where>-->
<!-- <foreach collection="list" item="id" index="index"-->
<!-- open="and g.order_id in (" close=")" separator=",">-->
<!-- #{id}-->
<!-- </foreach>-->
<!-- </where>-->
<!-- </select>-->
<!-- <select id="listOrderGoodsInfo" resultMap="orderGoodsResultMap">-->
<!-- select g.id,g.order_id,g.goods_info_id,g.goods_no,g.goods_name,-->
<!-- g.sku_title,g.buy_num,g.mall_sku_id,g.main_img,g.goods_amount,g.shop_car_id-->
<!-- from order_goods g-->
<!-- <where>-->
<!-- g.order_id = #{orderId}-->
<!-- </where>-->
<!-- </select>-->
<select id="getMallOrderInfo" resultMap="mallOrderResultMap">
select
o.id,o.pid,o.user_account_id,o.order_no,o.status_code,o.shut_reason,o.uid,o.user_address_id,
o.user_name,o.phone_num,o.pay_method,o.create_time,o.delivery_time,o.credit_period,o.order_amount,o.user_address_id,o.contract_signed_way,o.credit_period_days,o.sign_status,o.remark,
o.reality_amount,
o.discount_amount,
o.deduct_amount,o.share_id,o.share_status,
o.operation_id,
o.coupon_discount_amount,
o.manual_discount_amount,
o.rcd_order_amount,
o.rec_mall_user_id,
o.is_divide
from mall_order o
<where>
o.id = #{orderId}
</where>
limit 0,1;
</select>
<select id="getMallOrderCreditPeriod" resultMap="mallOrderResultMap">
SELECT
id,credit_period,status_code
FROM
mall_order where id
<foreach collection="collection" item="orderId" separator="," open=" in (" close=")">
#{orderId}
</foreach>
and status_code &lt;= 200
</select>
<update id="updateMallOrder" parameterType="com.mmc.oms.entity.mall.MallOrderDO">
update mall_order
<set>
<if test=" statusCode != null ">
status_code = #{statusCode},
</if>
<if test=" shutReason != null ">
shut_reason = #{shutReason},
</if>
<if test=" payMethod != null ">
pay_method = #{payMethod},
</if>
<if test=" userName != null ">
user_name = #{userName},
</if>
<if test=" phoneNum != null ">
phone_num = #{phoneNum},
</if>
<if test="deliveryTime !=null">
delivery_time = #{deliveryTime},
</if>
<if test="creditPeriod !=null">
credit_period = #{creditPeriod},
</if>
<if test="orderAmount !=null">
order_amount = #{orderAmount},
</if>
<if test="operationId != null">
operation_id = #{operationId},
</if>
<if test="contractSignedWay != null">
contract_signed_way = #{contractSignedWay},
</if>
<if test="creditPeriodDays != null">
credit_period_days = #{creditPeriodDays},
</if>
<if test="signStatus !=null">
sign_status = #{signStatus},
</if>
<if test="deductAmount != null">
deduct_amount = #{deductAmount},
</if>
<if test="discountAmount != null">
discount_amount = #{discountAmount},
</if>
<if test="realityAmount != null">
reality_amount = #{realityAmount},
</if>
<if test="manualDiscountAmount != null">
manual_discount_amount = #{manualDiscountAmount},
</if>
<if test="divide != null">
is_divide = #{divide},
</if>
pid = pid + 1
</set>
<where>
id = #{id}
<if test=" pid != null ">
and pid = #{pid}
</if>
</where>
</update>
<insert id="insertOrderPay" useGeneratedKeys="true"
keyProperty="id" parameterType="com.mmc.oms.entity.mall.OrderPayDO">
insert into order_pay
(
order_id,user_account_id,vouchr,pay_remark,pay_type,pay_status,create_time
)
values
(
#{orderId},#{userAccountId},#{vouchr},#{payRemark},#{payType},#{payStatus},#{createTime}
)
</insert>
<update id="updateOrderPay" parameterType="com.mmc.oms.entity.mall.OrderPayDO">
update order_pay
<set>
<if test=" vouchr!=null and vouchr!='' ">
vouchr = #{vouchr},
</if>
<if test=" payRemark!=null">
pay_remark = #{payRemark},
</if>
<if test=" refuseReason!=null and refuseReason!='' ">
refuse_reason = #{refuseReason},
</if>
<if test=" payStatus!=null ">
pay_status = #{payStatus},
</if>
<if test=" payType!=null ">
pay_type = #{payType},
</if>
</set>
<where>
<if test="id !=null">
id = #{id}
</if>
<if test="orderId!=null">
and order_id = #{orderId}
</if>
</where>
</update>
<update id="updateMallOrderAddreId">
UPDATE mall_order
SET user_address_id = #{userAddressId}
WHERE
id = #{mallOrderId}
</update>
<update id="updateMallOrderRemark">
UPDATE mall_order
SET m_remark = #{remark}
WHERE
id = #{mallOrderId}
</update>
<update id="rollbackMallOrder" parameterType="com.mmc.oms.entity.mall.MallOrderDO">
update mall_order set status_code = #{statusCode}, delivery_time = #{deliveryTime}, credit_period_days = #{creditPeriodDays}, credit_period = #{creditPeriod},
sign_status = #{signStatus}, contract_signed_way = #{contractSignedWay}, manual_discount_amount = #{manualDiscountAmount}, pid = #{pid} + 1
where id = #{id} and pid = #{pid}
</update>
<select id="getOrderPayInfo" resultMap="orderPayResultMap">
select id,user_account_id,order_id,vouchr,pay_remark,refuse_reason
from
order_pay
where order_id = #{orderId}
<if test=" payType!=null ">
and pay_type = #{payType}
</if>
limit 0,1
</select>
<select id="listOrderStatus" resultMap="orderStatusResultMap">
select
id,status,code,next_code
from order_status
</select>
<insert id="insertOrderExpress" useGeneratedKeys="true"
keyProperty="id"
parameterType="com.mmc.oms.entity.mall.MallOrderExpressDO">
insert into mall_order_express
(
order_id,send_exp_no,send_exp_code,take_name,take_phone,take_region,take_address,create_time
)
values
(
#{orderId},#{sendExpNo},#{sendExpCode},#{takeName},#{takePhone},#{takeRegion},#{takeAddress},NOW()
)
</insert>
<select id="getOrderExpress" resultMap="orderExpressResultMap">
select
e.id,e.order_id,e.send_exp_code,e.send_exp_no,
e.take_name,e.take_phone,e.take_region,e.take_address
from
mall_order_express e
where e.order_id = #{orderId}
limit 0,1
</select>
<select id="countPagePmOrder" resultType="Integer">
select count(*)
from mall_order o
<where>
<if test=" keyword != null and keyword != '' ">
and (
o.order_no like CONCAT('%',#{keyword},'%')
)
</if>
<if test=" keyword2 != null and keyword2 != '' ">
and (
o.uid like CONCAT('%',#{keyword2},'%')
or o.user_name like CONCAT('%',#{keyword2},'%')
or o.phone_num like CONCAT('%',#{keyword2},'%')
)
</if>
<if test="startTime != null and startTime != '' ">
and o.create_time &gt;=
STR_TO_DATE(#{startTime},'%Y-%m-%d %H:%i:%s')
</if>
<if test="endTime != null and endTime != '' ">
and o.create_time &lt;= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if test="statusCode != null">
<foreach collection="statusCode" item="status" index="index"
open="and o.status_code in (" close=")" separator=",">
#{status}
</foreach>
</if>
<if test="signStatus != null">
<foreach collection="signStatus" item="status" index="index"
open="and o.sign_status in (" close=") " separator=",">
#{status}
</foreach>
</if>
<if test="operationId != null">
and o.operation_id = #{operationId}
</if>
and o.create_time &lt; '2022-12-07 10:20:00'
</where>
</select>
<select id="listPagePmOrder" resultMap="mallOrderResultMap">
select
o.id,o.order_no,o.status_code,o.uid,o.user_name,o.phone_num,o.pay_method,o.create_time,o.rec_mall_user_id,
o.user_address_id,o.operation_id,o.delivery_time,o.contract_signed_way,o.user_account_id,o.sign_status,o.contract_signed_way,o.remark,o.m_remark
from mall_order o
<where>
<if test=" keyword != null and keyword != '' ">
and (
o.order_no like CONCAT('%',#{keyword},'%')
)
</if>
<if test=" keyword2 != null and keyword2 != '' ">
and (
o.uid like CONCAT('%',#{keyword2},'%')
or o.user_name like CONCAT('%',#{keyword2},'%')
or o.phone_num like CONCAT('%',#{keyword2},'%')
)
</if>
<if test="startTime != null and startTime != '' ">
and o.create_time &gt;=
STR_TO_DATE(#{startTime},'%Y-%m-%d %H:%i:%s')
</if>
<if test="endTime != null and endTime != '' ">
and o.create_time &lt;= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if test="statusCode!=null">
<foreach collection="statusCode" item="status" index="index"
open="and o.status_code in (" close=")" separator=",">
#{status}
</foreach>
</if>
<if test="signStatus != null">
<foreach collection="signStatus" item="status" index="index"
open="and o.sign_status in (" close=") " separator=",">
#{status}
</foreach>
</if>
<if test="operationId != null">
and o.operation_id = #{operationId}
</if>
and o.create_time &lt; '2022-12-07 10:20:00'
</where>
order by o.create_time desc
limit #{pageNo},#{pageSize}
</select>
<insert id="batchInsertOrderService" useGeneratedKeys="true"
keyProperty="id" parameterType="java.util.List">
insert into mall_order_service
(
order_id,goods_info_id,service_name,remark,create_time
)
values
<foreach item="d" index="index" collection="list"
separator=",">
(#{d.orderId},#{d.goodsInfoId},#{d.serviceName},#{d.remark},#{d.createTime})
</foreach>
</insert>
<insert id="saveOrderPay" useGeneratedKeys="true" keyProperty="id" parameterType="com.mmc.oms.entity.mall.OrderPayDO">
INSERT INTO order_pay ( `order_id`, `user_account_id`, `pay_type`, `pay_status`, `vouchr`,`refuse_reason`, `update_time`, `create_time` )
VALUES
( #{orderId}, #{userAccountId}, #{payType}, #{payStatus}, #{vouchr}, #{refuseReason}, NOW(), NOW());
</insert>
<select id="listOrderService" resultMap="orderServiceResultMap">
select
id,order_id,goods_info_id,service_name,remark
from mall_order_service
where
order_id = #{orderId}
</select>
<select id="listOrderPay" resultMap="orderPayResultMap">
select
id,order_id,vouchr,pay_type,pay_remark,refuse_reason,create_time
from
order_pay
<where>
order_id = #{orderId}
<if test=" payType!=null ">
and pay_type = #{payType}
</if>
</where>
</select>
<select id="getSysOrderParam" resultType="String">
select param_val
from
sys_order_param
where param_type = #{paramType}
limit 0,1
</select>
<select id="countPMOrderConfirm" resultType="Integer">
select count(*)
from mall_order o
<where>
o.status_code = #{statusCode} and o.create_time &lt; '2022-12-07 10:20:00'
</where>
</select>
<select id="listExportOrder" resultMap="mallOrderResultMap" parameterType="com.mmc.oms.model.qo.mall.MallOrderQO">
select
o.id,o.order_no,o.status_code,o.uid,o.user_name,o.phone_num,o.pay_method,o.create_time,o.rec_mall_user_id,
o.user_address_id,o.operation_id,o.delivery_time,o.contract_signed_way,o.user_account_id,o.sign_status,o.contract_signed_way
from mall_order o
<where>
<if test=" keyword != null and keyword != '' ">
and (
o.order_no like CONCAT('%',#{keyword},'%')
)
</if>
<if test=" keyword2 != null and keyword2 != '' ">
and (
o.uid like CONCAT('%',#{keyword2},'%')
or o.user_name like CONCAT('%',#{keyword2},'%')
or o.phone_num like CONCAT('%',#{keyword2},'%')
)
</if>
<if test="startTime != null and startTime != '' ">
and o.create_time &gt;=
STR_TO_DATE(#{startTime},'%Y-%m-%d %H:%i:%s')
</if>
<if test="endTime != null and endTime != '' ">
and o.create_time &lt;= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if test="statusCode!=null">
<foreach collection="statusCode" item="status" index="index"
open="and o.status_code in (" close=")" separator=",">
#{status}
</foreach>
</if>
<if test="signStatus != null">
<foreach collection="signStatus" item="status" index="index"
open="and o.sign_status in (" close=") " separator=",">
#{status}
</foreach>
</if>
and o.create_time &lt; '2022-12-07 10:20:00'
</where>
order by o.create_time desc
</select>
<select id="listPagePmOrderVerOne" resultType="com.mmc.oms.entity.mall.MallOrderDO">
select
o.id,o.order_no,o.status_code,o.uid,o.user_name,o.phone_num,o.pay_method,o.create_time,o.rec_mall_user_id,o.order_amount,o.shut_reason,
o.user_address_id,o.operation_id,o.delivery_time,o.contract_signed_way,o.user_account_id,o.sign_status,o.contract_signed_way,o.remark,o.m_remark,o.sale_id,o.sale_name,
o.reality_amount,
o.discount_amount,
o.deduct_amount
from mall_order o
<where>
<if test=" keyword != null and keyword != '' ">
and (
o.order_no like CONCAT('%',#{keyword},'%')
)
</if>
<if test=" keyword2 != null and keyword2 != '' ">
and (
o.uid like CONCAT('%',#{keyword2},'%')
or o.user_name like CONCAT('%',#{keyword2},'%')
or o.phone_num like CONCAT('%',#{keyword2},'%')
)
</if>
<if test="startTime != null and startTime != '' ">
and o.create_time &gt;=
STR_TO_DATE(#{startTime},'%Y-%m-%d %H:%i:%s')
</if>
<if test="saleId != null and saleId != ''">
and o.sale_id = #{saleId}
</if>
<if test="endTime != null and endTime != '' ">
and o.create_time &lt;= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if test="statusCode!=null">
<foreach collection="statusCode" item="status" index="index"
open="and o.status_code in (" close=")" separator=",">
#{status}
</foreach>
</if>
<if test="signStatus != null">
<foreach collection="signStatus" item="status" index="index"
open="and o.sign_status in (" close=") " separator=",">
#{status}
</foreach>
</if>
<if test="operationId != null">
and o.operation_id = #{operationId}
</if>
and o.create_time >= '2022-12-07 10:20:00'
</where>
order by o.create_time desc
limit #{pageNo},#{pageSize}
</select>
<select id="countPagePmOrderVerOne" resultType="java.lang.Integer">
select count(*)
from mall_order o
<where>
<if test=" keyword != null and keyword != '' ">
and (
o.order_no like CONCAT('%',#{keyword},'%')
)
</if>
<if test=" keyword2 != null and keyword2 != '' ">
and (
o.uid like CONCAT('%',#{keyword2},'%')
or o.user_name like CONCAT('%',#{keyword2},'%')
or o.phone_num like CONCAT('%',#{keyword2},'%')
)
</if>
<if test="startTime != null and startTime != '' ">
and o.create_time &gt;=
STR_TO_DATE(#{startTime},'%Y-%m-%d %H:%i:%s')
</if>
<if test="saleId != null and saleId != ''">
and o.sale_id = #{saleId}
</if>
<if test="endTime != null and endTime != '' ">
and o.create_time &lt;= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if test="statusCode != null">
<foreach collection="statusCode" item="status" index="index"
open="and o.status_code in (" close=")" separator=",">
#{status}
</foreach>
</if>
<if test="signStatus != null">
<foreach collection="signStatus" item="status" index="index"
open="and o.sign_status in (" close=") " separator=",">
#{status}
</foreach>
</if>
<if test="operationId != null">
and o.operation_id = #{operationId}
</if>
and o.create_time >= '2022-12-07 10:20:00'
</where>
</select>
<select id="listExportOrderVerOne" resultType="com.mmc.oms.entity.mall.MallOrderDO">
select
o.id,o.order_no,o.status_code,o.uid,o.user_name,o.phone_num,o.pay_method,o.create_time,o.rec_mall_user_id,o.order_amount,
o.user_address_id,o.operation_id,o.delivery_time,o.contract_signed_way,o.user_account_id,o.sign_status,o.contract_signed_way,
o.sale_name,o.sale_id,o.remark
from mall_order o
<where>
<if test=" keyword != null and keyword != '' ">
and (
o.order_no like CONCAT('%',#{keyword},'%')
)
</if>
<if test=" keyword2 != null and keyword2 != '' ">
and (
o.uid like CONCAT('%',#{keyword2},'%')
or o.user_name like CONCAT('%',#{keyword2},'%')
or o.phone_num like CONCAT('%',#{keyword2},'%')
)
</if>
<if test="startTime != null and startTime != '' ">
and o.create_time &gt;=
STR_TO_DATE(#{startTime},'%Y-%m-%d %H:%i:%s')
</if>
<if test="saleId != null and saleId != ''">
and o.sale_id = #{saleId}
</if>
<if test="endTime != null and endTime != '' ">
and o.create_time &lt;= STR_TO_DATE(#{endTime},'%Y-%m-%d
%H:%i:%s')
</if>
<if test="statusCode!=null">
<foreach collection="statusCode" item="status" index="index"
open="and o.status_code in (" close=")" separator=",">
#{status}
</foreach>
</if>
<if test="signStatus != null">
<foreach collection="signStatus" item="status" index="index"
open="and o.sign_status in (" close=") " separator=",">
#{status}
</foreach>
</if>
and o.create_time >= '2022-12-07 10:20:00'
</where>
order by o.create_time desc
</select>
<select id="countAppPageOrder" resultType="java.lang.Integer">
select count(*)
from mall_order o
<where>
(o.user_account_id =#{userAccountId} or o.share_id = #{userAccountId}) and o.create_time >= '2022-12-07 10:20:00'
<if test=" keyword != null and keyword != '' ">
and (
o.order_no like CONCAT('%',#{keyword},'%')
)
</if>
<if test=' orderType == "doing" '>
and o.status_code &lt; 800
</if>
<if test=' statusCodes != null '>
<foreach collection="statusCodes" item="statusCode" index="index"
open="and o.status_code in (" close=")" separator=",">
#{statusCode}
</foreach>
</if>
</where>
</select>
<select id="listAppPageAmOrder" resultMap="mallOrderResultMap">
select o.id,o.user_account_id,o.order_no,o.status_code,o.pay_method,o.create_time,o.contract_signed_way,o.remark,o.contract_signed_way,o.credit_period,o.share_id,o.share_status
from
mall_order o
<where>
(o.user_account_id =#{userAccountId} or o.share_id = #{userAccountId}) and o.create_time >= '2022-12-07 10:20:00'
<if test=" keyword != null and keyword != '' ">
and (
o.order_no like CONCAT('%',#{keyword},'%')
)
</if>
<if test=' orderType == "doing" '>
and o.status_code &lt; 800
</if>
<if test=' statusCodes != null '>
<foreach collection="statusCodes" item="statusCode" index="index"
open="and o.status_code in (" close=")" separator=",">
#{statusCode}
</foreach>
</if>
</where>
order by o.create_time desc
limit #{pageNo},#{pageSize}
</select>
<select id="listMallOrder" resultType="com.mmc.oms.entity.mall.MallOrderDO">
SELECT id,
sale_name saleName,
order_no orderNo,
user_name userName,
user_account_id userAccountId
FROM mall_order
where id
in
<foreach collection="list" item="valueList" open="(" close=")" separator=",">
#{valueList}
</foreach>
</select>
<select id="getMallOrderByStatus" resultType="com.mmc.oms.entity.mall.MallOrderDO">
SELECT
id,
credit_period,
status_code
FROM
mall_order
WHERE
status_code = #{code}
AND contract_signed_way = 0
AND create_time >= '2022-12-07 10:20:00'
</select>
<select id="countOrderForCouponUse" resultType="Integer">
select count(*)
from mall_order o
where o.status_code = #{orderStatus}
and o.id
in
<foreach collection="orderIds" item="orderId" open="(" close=")" separator=",">
#{orderId}
</foreach>
</select>
<select id="getOrderInfoByOrderNo" resultType="com.mmc.oms.entity.mall.MallOrderDO">
select o.id,
o.order_no,
o.status_code,
o.uid,
o.user_name,
o.phone_num,
o.pay_method,
o.create_time,
o.rec_mall_user_id,
o.order_amount,
o.user_address_id,
o.operation_id,
o.delivery_time,
o.contract_signed_way,
o.user_account_id,
o.sign_status,
o.contract_signed_way,
o.remark,
o.m_remark,
o.sale_id,
o.sale_name,
o.reality_amount,
o.discount_amount,
o.deduct_amount
from mall_order o
where o.order_no = #{orderNo}
</select>
<select id="countPageOrderInfo" resultType="java.lang.Integer">
select count(*)
from mall_order o
<where>
<foreach collection="list" separator="," open="id in (" close=")" item="item" index="index">
#{item}
</foreach>
</where>
</select>
<select id="listOperationalExportOrder" resultType="com.mmc.oms.entity.mall.MallOrderDO">
select
o.id,o.order_no,o.status_code,o.uid,o.user_name,o.phone_num,o.pay_method,o.create_time,o.rec_mall_user_id,o.order_amount,
o.user_address_id,o.operation_id,o.delivery_time,o.contract_signed_way,o.user_account_id,o.sign_status,o.contract_signed_way,
o.sale_name,o.sale_id,o.remark,o.coupon_discount_amount,o.manual_discount_amount,o.reality_amount
from mall_order o
<where>
<foreach collection="list" separator="," open="id in (" close=")" item="item" index="index">
#{item}
</foreach>
</where>
</select>
<select id="listFinishMallOrder" resultMap="mallOrderResultMap">
SELECT
id,
order_no,
status_code,
user_account_id,
uid,
user_name,
phone_num,
order_amount,
shut_reason,
reality_amount,
coupon_discount_amount,
manual_discount_amount,
is_divide
FROM
mall_order
WHERE
status_code = 800
<if test="orderNo != null">
and order_no LIKE concat(#{orderNo},'%')
</if>
<if test="divide != null">
and is_divide = #{divide}
</if>
<if test="mallUserIds != null">
<foreach collection="mallUserIds" open=" and user_account_id in (" close=")" separator=","
item="userAccountId">
#{userAccountId}
</foreach>
</if>
order by create_time desc
limit #{pageNo},#{pageSize}
</select>
<select id="countListFinishMallOrder" resultType="java.lang.Integer">
SELECT count(*)
FROM
mall_order
WHERE
status_code = 800
<if test="orderNo != null">
and order_no LIKE concat(#{orderNo},'%')
</if>
<if test="divide != null">
and is_divide = #{divide}
</if>
<if test="mallUserIds != null">
<foreach collection="mallUserIds" open=" and user_account_id in (" close=")" separator=","
item="userAccountId">
#{userAccountId}
</foreach>
</if>
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.oms.dao.mall.OrderExpressDao">
<resultMap id="kdnDicResultMap"
type="com.mmc.oms.entity.order.KdnDicDO">
<id property="id" column="id" />
<result property="code" column="code" />
<result property="msg" column="msg" />
</resultMap>
<resultMap id="expressInfoResultMap"
type="com.mmc.oms.entity.order.ExpressInfoDO">
<id property="id" column="id" />
<result property="exName" column="ex_name" />
<result property="exCode" column="ex_code" />
</resultMap>
<update id="updateOrderExpress" parameterType="com.mmc.oms.entity.mall.MallOrderExpressDO">
update mall_order_express
<set>
<if test=" sendExpNo != null ">
send_exp_no = #{sendExpNo},
</if>
<if test=" sendExpCode != null ">
send_exp_code = #{sendExpCode},
</if>
<if test=" takeName != null ">
take_name = #{takeName},
</if>
<if test=" takePhone != null ">
take_phone = #{takePhone},
</if>
<if test=" takeRegion != null ">
take_region = #{takeRegion},
</if>
<if test=" takeAddress != null ">
take_address = #{takeAddress},
</if>
<if test=" receiveTime != null ">
receive_time = #{receiveTime},
</if>
<if test=" receive != null ">
is_receive = #{receive},
</if>
</set>
where order_id = #{orderId}
</update>
<select id="listKdnDic" resultMap="kdnDicResultMap">
select id,code,msg
from kdn_dic
</select>
<select id="listExpressInfo" resultMap="expressInfoResultMap">
select ex_name,ex_code
from express_info
</select>
<select id="listReceivedOrderIds" resultType="java.lang.Long">
select * from mall_order mo INNER JOIN mall_order_express oe ON mo.id = oe.order_id
where mo.status_code = 720 and oe.is_receive = 1 and TIMESTAMPDIFF(HOUR,'2023-02-10 16:15:00',NOW()) >= 72
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.oms.dao.mall.OrderGoodsIndstDao">
<!-- 结果集 -->
<resultMap type="com.mmc.oms.entity.mall.OrderGoodsIndstDO" id="OrderGoodsIndstMap">
<result property="id" column="id"/>
<result property="orderId" column="order_id"/>
<result property="mallIndstShopCarId" column="mall_indst_shop_car_id"/>
<result property="goodsInfoId" column="goods_info_id"/>
<result property="directoryId" column="directory_id"/>
<result property="goodsAmount" column="goods_amount"/>
<result property="goodsNo" column="goods_no"/>
<result property="goodsName" column="goods_name"/>
<result property="mainImg" column="main_img"/>
<result property="buyNum" column="buy_num"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<resultMap id="listOrderGoodsIndstBaseInfoResultMap" type="com.mmc.oms.entity.mall.MallOrderSimpleDO">
<id column="id" property="id"/>
<result column="order_amount" property="orderAmount"/>
<result column="user_account_id" property="userAccountId"/>
<collection property="orderGoodsCommonDOS" ofType="com.mmc.oms.entity.mall.OrderGoodsCommonDO">
<id column="ogiId" property="id"/>
<result column="id" property="orderId"/>
<result column="directory_id" property="directoryId"/>
<result column="buy_num" property="buyNum"/>
<result column="goods_name" property="goodsName"/>
<result column="main_img" property="mainImg"/>
</collection>
</resultMap>
<select id="getProductInfoByMallId" resultType="com.mmc.oms.entity.mall.OrderGoodsIndstProdListBO">
SELECT
list.id,
list.order_goods_indst_detail_id,
list.goods_type_name,
list.product_name,
list.model,
list.product_brand,
list.product_spec_id,
list.prod_sku_spec_name,
list.prod_sku_spec_image,
list.part_no,
list.version_desc,
list.buy_num,
list.create_time,
list.update_time,
indst.goods_amount,
indst.goods_no,
indst.mall_indst_shop_car_id
FROM
order_goods_indst indst
LEFT JOIN order_goods_indst_detail detail ON indst.id = detail.order_goods_indst_id
LEFT JOIN order_goods_indst_prod_list list ON detail.id = list.order_goods_indst_detail_id
WHERE
indst.order_id = #{orderId}
</select>
<select id="listOrderGoodsIndstBaseInfo" resultMap = "listOrderGoodsIndstBaseInfoResultMap">
select mo.id,mo.order_no,mo.user_account_id,mo.order_amount,ogi.id as ogiId,ogi.order_id,ogi.directory_id,ogi.buy_num,ogi.buy_num,ogi.goods_name,ogi.main_img
from mall_order mo INNER JOIN order_goods_indst ogi ON mo.id = ogi.order_id
<where>
<foreach collection="list" item="id" index="index"
open="mo.id in (" close=")" separator=",">
#{id}
</foreach>
</where>
</select>
<select id="listIMallOrderProdList" resultType="com.mmc.oms.entity.mall.OrderGoodsIndstProdListDO">
SELECT
ogipl.id,
ogi.goods_info_id as goodsInfoId,
ogipl.prod_sku_spec_name as prodSkuSpecName,
ogipl.prod_sku_spec_image as prodSkuSpecImage,
ogipl.part_no as partNo,
ogipl.model,
ogipl.version_desc as versionDesc,
ogipl.buy_num as buyNum,
ogipl.product_spec_id as productSpecId,
ogid.unit_price as unitPrice
FROM
mall_order mo
INNER JOIN order_goods_indst ogi ON mo.id = ogi.order_id
INNER JOIN order_goods_indst_detail ogid ON ogi.id = ogid.order_goods_indst_id
INNER JOIN order_goods_indst_prod_list ogipl ON ogid.id = ogipl.order_goods_indst_detail_id
WHERE
mo.id = #{orderId}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.oms.dao.mall.OrderGoodsProdDao">
<resultMap id="listOrderGoodsProdBaseInfoResultMap" type="com.mmc.oms.entity.mall.MallOrderSimpleDO">
<id column="id" property="id"/>
<result column="order_amount" property="orderAmount"/>
<result column="user_account_id" property="userAccountId"/>
<collection property="orderGoodsCommonDOS" ofType="com.mmc.oms.entity.mall.OrderGoodsCommonDO">
<id column="ogpId" property="id"/>
<result column="id" property="orderId"/>
<result column="directory_id" property="directoryId"/>
<result column="buy_num" property="buyNum"/>
<result column="goods_name" property="goodsName"/>
<result column="main_img" property="mainImg"/>
</collection>
</resultMap>
<select id="getProductInfoByMallId" resultType="com.mmc.oms.entity.mall.OrderGoodsProdDetailBO">
SELECT
detail.id,
detail.order_goods_prod_id,
detail.mall_prod_shop_car_detail_id,
detail.mall_prod_sku_info_spec_id,
detail.mall_prod_sku_info_id,
detail.goods_type_name,
detail.product_name,
detail.model,
detail.product_brand,
detail.product_spec_id,
detail.prod_sku_spec_name,
detail.prod_sku_spec_image,
detail.part_no,
detail.version_desc,
detail.buy_num,
detail.unit_price,
detail.sku_spec_amount,
detail.create_time,
detail.update_time,
prod.goods_amount,
prod.goods_no,
prod.goods_info_id
FROM
mall_order_goods_prod prod
LEFT JOIN mall_order_goods_prod_detail detail
ON prod.id = detail.order_goods_prod_id
WHERE
prod.order_id = #{orderId}
</select>
<select id="listOrderGoodsProdBaseInfo" resultMap="listOrderGoodsProdBaseInfoResultMap">
select mo.id,mo.order_no,mo.order_amount,ogp.id as ogpId,ogp.order_id,directory_id,ogp.buy_num,ogp.buy_num,ogp.goods_name,ogp.main_img
from mall_order mo INNER JOIN mall_order_goods_prod ogp ON mo.id = ogp.order_id
<where>
<foreach collection="list" item="id" index="index"
open="mo.id in (" close=")" separator=",">
#{id}
</foreach>
</where>
</select>
<select id="listPMallOrderProdList" resultType="com.mmc.oms.entity.mall.OrderGoodsProdDetailDO">
SELECT
ogdp.id,
ogp.goods_info_id as goodsInfoId,
ogdp.prod_sku_spec_name as specName,
ogdp.prod_sku_spec_image as prodSkuSpecImage,
ogdp.part_no as partNo,
ogdp.version_desc as versionDesc,
ogdp.buy_num as buyNum,
ogdp.unit_price as unitPrice,
ogdp.sku_spec_amount as skuSpecAmount,
ogdp.product_name as productName,
ogdp.product_spec_id as productSpecId,
ogdp.model
FROM
mall_order mo
INNER JOIN mall_order_goods_prod ogp ON mo.id = ogp.order_id
INNER JOIN mall_order_goods_prod_detail ogdp ON ogp.id = ogdp.order_goods_prod_id
WHERE
mo.id = #{orderId}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.oms.dao.mall.ShoppingTrolleyDao">
<resultMap id="mallProdShopCarResultMap" type="com.mmc.oms.entity.mall.MallProdShopCarDO">
<id property="id" column="id" />
<result property="userAccountId" column="user_account_id" />
<result property="goodsInfoId" column="goods_info_id" />
<result property="buyNum" column="buy_num" />
<result property="saleStatus" column="sale_status" />
<result property="recMallUserId" column="rec_mall_userId" />
<result property="remark" column="remark" />
<result property="deleted" column="is_deleted" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
</resultMap>
<resultMap id="listMallProdShopCarResultMap" type="com.mmc.oms.entity.mall.MallProdShopCarDO">
<id property="id" column="id" />
<result property="userAccountId" column="user_account_id" />
<result property="goodsInfoId" column="goods_info_id" />
<result property="buyNum" column="buy_num" />
<result property="saleStatus" column="sale_status" />
<result property="recMallUserId" column="rec_mall_user_id" />
<result property="remark" column="remark" />
<result property="deleted" column="is_deleted" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<collection property="shopCarDetailDOS" ofType="com.mmc.oms.entity.mall.MallProdShopCarDetailDO">
<result property="id" column="mallProdShopCarDetailId" />
<result property="mallProdShopCarId" column="id" />
<result property="mallProdSkuInfoSpecId" column="mall_prod_sku_info_spec_id" />
</collection>
</resultMap>
<resultMap id="mallIndstShopCarResultMap" type="com.mmc.oms.entity.mall.MallIndstShopCarDO">
<id property="id" column="id" />
<result property="userAccountId" column="user_account_id" />
<result property="goodsInfoId" column="goods_info_id" />
<result property="buyNum" column="buy_num" />
<result property="saleStatus" column="sale_status" />
<result property="recMallUserId" column="rec_mall_userId" />
<result property="remark" column="remark" />
<result property="deleted" column="is_deleted" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
</resultMap>
<resultMap id="listMallIndstShopCarResultMap" type="com.mmc.oms.entity.mall.MallIndstShopCarDO">
<id property="id" column="id" />
<result property="userAccountId" column="user_account_id" />
<result property="goodsInfoId" column="goods_info_id" />
<result property="buyNum" column="buy_num" />
<result property="saleStatus" column="sale_status" />
<result property="recMallUserId" column="rec_mall_user_id" />
<result property="remark" column="remark" />
<result property="deleted" column="is_deleted" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<collection property="shopCarDetailDOS" ofType="com.mmc.oms.entity.mall.MallIndstShopCarDetailDO">
<result property="id" column="mallIndstShopCarDetailId" />
<result property="mallIndstShopCarId" column="id" />
<result property="mallIndstSkuInfoSpecId" column="mall_indst_sku_info_spec_id" />
</collection>
</resultMap>
<insert id="insertMallProdShopCar" useGeneratedKeys="true" keyProperty="id" parameterType="com.mmc.oms.entity.mall.MallProdShopCarDO">
insert into mall_prod_shop_car (user_account_id, goods_info_id, buy_num, rec_mall_user_id, remark, create_time)
values (#{userAccountId}, #{goodsInfoId}, #{buyNum}, #{recMallUserId}, #{remark}, NOW())
</insert>
<insert id="batchInsertMallProdShopCarDetail" parameterType="java.util.List">
insert into mall_prod_shop_car_detail (mall_prod_shop_car_id, mall_prod_sku_info_spec_id, create_time)
values
<foreach collection="mallSkuSpecIds" item="mallProdSkuInfoSpecId" index="index" separator=",">
(#{mallProdShopCarId}, #{mallProdSkuInfoSpecId}, NOW())
</foreach>
</insert>
<insert id="insertMallIndstShopCar" useGeneratedKeys="true" keyProperty="id" parameterType="com.mmc.oms.entity.mall.MallIndstShopCarDO">
insert into mall_indst_shop_car (user_account_id, goods_info_id, buy_num, rec_mall_user_id, remark, create_time)
values (#{userAccountId}, #{goodsInfoId}, #{buyNum}, #{recMallUserId}, #{remark}, NOW())
</insert>
<insert id="batchInsertMallIndstShopCarDetail" parameterType="java.util.List">
insert into mall_indst_shop_car_detail (mall_indst_shop_car_id, mall_indst_sku_info_spec_id, create_time)
values
<foreach collection="mallSkuSpecIds" item="mallIndstSkuInfoSpecId" index="index" separator=",">
(#{mallIndstShopCarId}, #{mallIndstSkuInfoSpecId}, NOW())
</foreach>
</insert>
<update id="addIndstShopCarBuyNum">
update mall_indst_shop_car
<set>
<if test="buyNum != null">
buy_num = buy_num + #{buyNum}
</if>
</set>
<where>
id = #{id}
</where>
</update>
<update id="addProdShopCarBuyNum">
update mall_prod_shop_car
<set>
<if test="buyNum != null">
buy_num = buy_num + #{buyNum}
</if>
</set>
<where>
id = #{id}
</where>
</update>
<update id="batchRemoveProd">
update mall_prod_shop_car set is_deleted = 1
<where>
user_account_id = #{userAccountId} and sale_status = 0
<foreach collection="carIds" item="id" index="index"
open="and id in (" close=")" separator=",">
#{id}
</foreach>
</where>
</update>
<update id="batchRemoveIndst">
update mall_indst_shop_car set is_deleted = 1
<where>
user_account_id = #{userAccountId} and sale_status = 0
<foreach collection="carIds" item="id" index="index"
open="and id in (" close=")" separator=",">
#{id}
</foreach>
</where>
</update>
<update id="updateMallProdShopCar" parameterType="com.mmc.oms.entity.mall.MallProdShopCarDO">
update mall_prod_shop_car
<set>
<if test="buyNum != null">
buy_num = buy_num + #{buyNum},
</if>
<if test="saleStatus != null">
sale_status = #{saleStatus},
</if>
<if test="remark != null">
remark = #{remark},
</if>
</set>
<where>
id = #{id}
<if test="userAccountId != null">
and user_account_id = #{userAccountId}
</if>
<if test="buyNum != null">
and (buy_num + #{buyNum}) > 0
</if>
</where>
</update>
<update id="updateMallIndstShopCar" parameterType="com.mmc.oms.entity.mall.MallIndstShopCarDO">
update mall_indst_shop_car
<set>
<if test="buyNum != null">
buy_num = buy_num + #{buyNum},
</if>
<if test="saleStatus != null">
sale_status = #{saleStatus},
</if>
<if test="remark != null">
remark = #{remark},
</if>
</set>
<where>
id = #{id}
<if test="userAccountId != null">
and user_account_id = #{userAccountId}
</if>
<if test="buyNum != null">
and (buy_num + #{buyNum}) > 0
</if>
</where>
</update>
<update id="updateProductShopCarStatus"
parameterType="java.util.List">
<foreach collection="list" item="item" separator=";">
update mall_prod_shop_car
<set>
<if test="item.saleStatus != null">
sale_status = 1
</if>
</set>
<where>
id = #{item.id}
</where>
</foreach>
</update>
<update id="updateIndustryShopCarStatus"
parameterType="java.util.List">
<foreach collection="list" item="item" separator=";">
update mall_indst_shop_car
<set>
<if test="item.saleStatus != null">
sale_status = 1
</if>
</set>
<where>
id = #{item.id}
</where>
</foreach>
</update>
<select id="listMallProdShopCar" resultMap="listMallProdShopCarResultMap" parameterType="com.mmc.oms.model.qo.mall.MallShopCarQO">
select mpsc.id, mpsc.user_account_id, mpsc.goods_info_id, mpsc.buy_num, mpsc.sale_status, mpsc.rec_mall_user_id, mpsc.remark, mpsc.is_deleted, mpsc.create_time,
mpsc.update_time, mpscd.mall_prod_sku_info_spec_id, mpscd.id as mallProdShopCarDetailId
from mall_prod_shop_car mpsc left join mall_prod_shop_car_detail mpscd on mpsc.id = mpscd.mall_prod_shop_car_id
<where>
mpsc.is_deleted = 0
<if test=" userAccountId != null ">
and mpsc.user_account_id = #{userAccountId}
</if>
<if test=" goodsInfoId != null ">
and mpsc.goods_info_id = #{goodsInfoId}
</if>
<if test=" saleStatus != null ">
and mpsc.sale_status = #{saleStatus}
</if>
<if test=" carIds != null">
<foreach collection="carIds" item="id" index="index"
open="and mpsc.id in (" close=")" separator=",">
#{id}
</foreach>
</if>
</where>
</select>
<select id="getMallProdShopCar" resultMap="mallProdShopCarResultMap" parameterType="com.mmc.oms.entity.mall.MallProdShopCarDO">
select mpsc.id, mpsc.user_account_id, mpsc.goods_info_id, mpsc.buy_num, mpsc.sale_status, mpsc.rec_mall_user_id,
mpsc.remark, mpsc.is_deleted, mpsc.create_time,mpsc.update_time
from mall_prod_shop_car mpsc
<where>
mpsc.is_deleted = 0
<if test="id != null">
and mpsc.id = #{id}
</if>
<if test="userAccountId != null">
and mpsc.user_account_id = #{userAccountId}
</if>
<if test="goodsInfoId != null">
and mpsc.goods_info_id = #{goodsInfoId}
</if>
<if test="saleStatus != null">
and mpsc.sale_status = #{saleStatus}
</if>
<if test="recMallUserId != null">
and mpsc.rec_mall_user_id = #{recMallUserId}
</if>
</where>
</select>
<select id="listMallIndstShopCar" resultMap="listMallIndstShopCarResultMap" parameterType="com.mmc.oms.model.qo.mall.MallShopCarQO">
select misc.id, misc.user_account_id, misc.goods_info_id, misc.buy_num, misc.sale_status, misc.rec_mall_user_id, misc.remark, misc.is_deleted, misc.create_time,
misc.update_time, miscd.mall_indst_sku_info_spec_id, miscd.id as mallIndstShopCarDetailId
from mall_indst_shop_car misc left join mall_indst_shop_car_detail miscd on misc.id = miscd.mall_indst_shop_car_id
<where>
misc.is_deleted = 0
<if test=" userAccountId != null ">
and misc.user_account_id = #{userAccountId}
</if>
<if test=" goodsInfoId != null ">
and misc.goods_info_id = #{goodsInfoId}
</if>
<if test=" saleStatus != null ">
and misc.sale_status = #{saleStatus}
</if>
<if test=" carIds != null">
<foreach collection="carIds" item="id" index="index"
open="and misc.id in (" close=")" separator=",">
#{id}
</foreach>
</if>
</where>
</select>
<select id="getMallIndstShopCar" resultMap="mallIndstShopCarResultMap" parameterType="com.mmc.oms.entity.mall.MallIndstShopCarDO">
select misc.id, misc.user_account_id, misc.goods_info_id, misc.buy_num, misc.sale_status, misc.rec_mall_user_id,
misc.remark, misc.is_deleted, misc.create_time,misc.update_time
from mall_indst_shop_car misc
<where>
misc.is_deleted = 0
<if test="id != null">
and misc.id = #{id}
</if>
<if test="userAccountId != null">
and misc.user_account_id = #{userAccountId}
</if>
<if test="goodsInfoId != null">
and misc.goods_info_id = #{goodsInfoId}
</if>
<if test="saleStatus != null">
and misc.sale_status = #{saleStatus}
</if>
<if test="recMallUserId != null">
and misc.rec_mall_user_id = #{recMallUserId}
</if>
</where>
</select>
<select id="countProdListPage" resultType="java.lang.Integer">
select count(*)
from mall_prod_shop_car mpsc
where mpsc.is_deleted = 0 and mpsc.sale_status = 0 and mpsc.user_account_id = #{userAccountId}
</select>
<select id="prodListPage" resultMap="mallProdShopCarResultMap">
select mpsc.id, mpsc.user_account_id, mpsc.goods_info_id, mpsc.buy_num, mpsc.sale_status, mpsc.rec_mall_user_id,
mpsc.remark, mpsc.is_deleted, mpsc.create_time,mpsc.update_time
from mall_prod_shop_car mpsc
where mpsc.is_deleted = 0 and mpsc.sale_status = 0 and mpsc.user_account_id = #{userAccountId}
order by mpsc.create_time desc, mpsc.update_time desc
limit #{pageNo}, #{pageSize}
</select>
<select id="countIndstListPage" resultType="java.lang.Integer">
select count(*)
from mall_indst_shop_car misc
where misc.is_deleted = 0 and misc.sale_status = 0 and misc.user_account_id = #{userAccountId}
</select>
<select id="indstListPage" resultMap="mallIndstShopCarResultMap">
select misc.id, misc.user_account_id, misc.goods_info_id, misc.buy_num, misc.sale_status, misc.rec_mall_user_id,
misc.remark, misc.is_deleted, misc.create_time,misc.update_time
from mall_indst_shop_car misc
where misc.is_deleted = 0 and misc.sale_status = 0 and misc.user_account_id = #{userAccountId}
order by misc.create_time desc, misc.update_time desc
limit #{pageNo}, #{pageSize}
</select>
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论