package com.matrix.system.padApi.action;
|
|
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.matrix.component.asyncmessage.AsyncMessageManager;
|
import com.matrix.core.constance.MatrixConstance;
|
import com.matrix.core.exception.GlobleException;
|
import com.matrix.core.pojo.AjaxResult;
|
import com.matrix.core.pojo.PaginationVO;
|
import com.matrix.core.tools.StringUtils;
|
import com.matrix.core.tools.WebUtil;
|
import com.matrix.system.app.vo.OrderDetailVo;
|
import com.matrix.system.common.bean.BusParameterSettings;
|
import com.matrix.system.common.bean.CustomerDataDictionary;
|
import com.matrix.system.common.bean.SysUsers;
|
import com.matrix.system.common.constance.AppConstance;
|
import com.matrix.system.common.dao.BusParameterSettingsDao;
|
import com.matrix.system.common.dao.CustomerDataDictionaryDao;
|
import com.matrix.system.common.service.SysUsersService;
|
import com.matrix.system.common.tools.DataAuthUtil;
|
import com.matrix.system.constance.Dictionary;
|
import com.matrix.system.enums.BooleanEnum;
|
import com.matrix.system.hive.action.BaseController;
|
import com.matrix.system.hive.action.util.QueryUtil;
|
import com.matrix.system.hive.bean.*;
|
import com.matrix.system.hive.dao.SysOrderItemDao;
|
import com.matrix.system.hive.dao.SysShopInfoDao;
|
import com.matrix.system.hive.service.MoneyCardUseService;
|
import com.matrix.system.hive.service.ShoppingGoodsService;
|
import com.matrix.system.hive.service.SysOrderService;
|
import com.matrix.system.hive.service.SysShopInfoService;
|
import com.matrix.system.padApi.dto.PadOrderListDto;
|
import com.matrix.system.padApi.dto.PadShowListDto;
|
import com.matrix.system.padApi.vo.PadOrderDetailVo;
|
import com.matrix.system.shopXcx.mqTask.AsyncMessageRouting;
|
import com.matrix.system.wechart.templateMsg.UniformMsgParam;
|
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.transaction.annotation.Transactional;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.util.List;
|
|
@CrossOrigin(origins = "*")
|
@Api(value = "PadOrderAction", tags = "pad端订单请求")
|
@RestController
|
@RequestMapping(value = "/api/pad/order")
|
public class PadOrderAction extends BaseController {
|
|
@Resource
|
private SysOrderService sysOrderService;
|
@Resource
|
private SysOrderService orderService;
|
@Autowired
|
private BusParameterSettingsDao busParameterSettingsDao;
|
@Autowired
|
private SysOrderItemDao orderItemDao;
|
@Autowired
|
private SysUsersService sysUsersService;
|
@Autowired
|
private CustomerDataDictionaryDao dataDictionaryDao;
|
@Resource
|
private SysShopInfoService currentService;
|
@Resource
|
private MoneyCardUseService cardUseService;
|
@Autowired
|
private AsyncMessageManager asyncMessageManager;
|
@Resource
|
private SysShopInfoDao shopInfoDao;
|
@Resource
|
private ShoppingGoodsService shoppingGoodsService;
|
|
@ApiOperation(value = "获取订单列表", notes = "获取订单列表")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "ok", response = PadOrderDetailVo.class)
|
})
|
@PostMapping(value = "/findOrderList")
|
public AjaxResult findOrderList(@RequestBody @Validated PadOrderListDto orderListDto) {
|
SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
int offset = (orderListDto.getPageNum() - 1) * orderListDto.getPageSize();
|
int limit = orderListDto.getPageSize();
|
PaginationVO pageVo = new PaginationVO();
|
pageVo.setOffset(offset);
|
pageVo.setLimit(limit);
|
|
//默认排序
|
if (StringUtils.isBlank(pageVo.getSort())) {
|
pageVo.setSort("order_time");
|
}
|
if (StringUtils.isBlank(pageVo.getOrder())) {
|
pageVo.setOrder("desc");
|
}
|
if (!DataAuthUtil.hasAllShopAuth()) {
|
orderListDto.setShopId(getMe().getShopId());
|
}
|
QueryUtil.setQueryLimitCom(orderListDto);
|
|
SysOrder sysOrder = new SysOrder();
|
sysOrder.setShopId(orderListDto.getShopId());
|
if(ObjectUtil.isNotEmpty(orderListDto.getOrderStatus())){
|
sysOrder.setStatu(orderListDto.getStatus());
|
}
|
|
if(ObjectUtil.isNotEmpty(orderListDto.getBeginTimeVo())){
|
sysOrder.setBeginTimeVo(orderListDto.getBeginTimeVo());
|
}
|
if(ObjectUtil.isNotEmpty(orderListDto.getEndTimeVo())){
|
sysOrder.setEndTimeVo(orderListDto.getEndTimeVo());
|
}
|
|
if(ObjectUtil.isNotEmpty(orderListDto.getVipId())){
|
sysOrder.setVipId(orderListDto.getVipId());
|
}
|
if(StrUtil.isNotEmpty(orderListDto.getQueryKey())){
|
sysOrder.setKeyWordVo(orderListDto.getQueryKey());
|
}
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, orderService.findInPage(sysOrder, pageVo),
|
orderService.findTotal(sysOrder));
|
}
|
|
@ApiOperation(value = "获取订单详情", notes = "获取订单详情")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "ok", response = OrderDetailVo.class)
|
})
|
@GetMapping(value = "/findOrderDetail/{orderId}")
|
public AjaxResult findOrderDetail(@PathVariable("orderId") Long orderId) {
|
OrderDetailVo orderDetail = sysOrderService.findApiOrderDetailByOrderId(orderId);
|
AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功");
|
ajaxResult.putInMap("orderDetail", orderDetail);
|
return ajaxResult;
|
}
|
|
@ApiOperation(value = "取消订单", notes = "取消订单")
|
@GetMapping(value = "/cancelOrder/{id}")
|
@Transactional(rollbackFor = Exception.class)
|
public AjaxResult cancelOrder(@PathVariable Long id) {
|
|
SysOrder order = orderService.findById(id);
|
if (ObjectUtil.isEmpty(order)) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "订单不存在!");
|
}
|
|
BusParameterSettings shopManageAbleCancelDfkOrder = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.SHOP_MANAGE_ABLE_CANCEL_DFK_ORDER, order.getCompanyId());
|
if (StringUtils.isNotBlank(shopManageAbleCancelDfkOrder.getParamValue())
|
&& BooleanEnum.TRUE.getValue() == shopManageAbleCancelDfkOrder.getIntParamValue()) {
|
|
if (!Dictionary.ORDER_STATU_DFK.equals(order.getStatu())) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "您只能取消待付款订单");
|
}
|
}
|
orderService.cancelOrder(id);
|
return AjaxResult.buildSuccessInstance("取消成功");
|
}
|
|
@ApiOperation(value = "收款", notes = "收款")
|
@PostMapping(value = "/sk")
|
public AjaxResult sk(@RequestBody SysOrder order) throws GlobleException {
|
orderService.payOrder(order);
|
return AjaxResult.buildSuccessInstance("收款成功");
|
}
|
|
@ApiOperation(value = "补交", notes = "补交")
|
@PostMapping(value = "/bj")
|
public AjaxResult bj(@RequestBody SysOrder order){
|
orderService.updateAfterMoney(order);
|
return AjaxResult.buildSuccessInstance("补交成功");
|
}
|
|
@ApiOperation(value = "查询当前登录人", notes = "查询当前登录人")
|
@GetMapping(value = "/getLoginUser")
|
public AjaxResult getLoginUser() {
|
AjaxResult result = AjaxResult.buildSuccessInstance("");
|
SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
result.putInMap("user", user);
|
return result;
|
}
|
|
@ApiOperation(value = "根据ID查询用户", notes = "根据ID查询用户")
|
@GetMapping(value = "/getUserById/{id}")
|
public AjaxResult getUserById(@PathVariable Long id) {
|
AjaxResult result = AjaxResult.buildSuccessInstance("");
|
SysUsers user = sysUsersService.findById(id);
|
result.putInMap("user", user);
|
return result;
|
}
|
|
@ApiOperation(value = "获取业绩用户列表", notes = "获取业绩用户列表")
|
@GetMapping(value = "/shopAll")
|
public AjaxResult shopAll() {
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, sysUsersService.findByRoleName(true, null));
|
}
|
|
@ApiOperation(value = "获取业绩类型", notes = "获取业绩类型")
|
@GetMapping(value = "getListByParentCode/{parentCode}")
|
public AjaxResult getListByParentCode(@PathVariable String parentCode) {
|
SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
List<CustomerDataDictionary> list = dataDictionaryDao.selectByParentCode(parentCode, user.getCompanyId());
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, list, list.size());
|
}
|
|
@ApiOperation(value = "查询当前登录用户所在门店信息", notes = "查询当前登录用户所在门店信息")
|
@GetMapping(value = "findUserShop")
|
public AjaxResult findUserShop() {
|
SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS,
|
java.util.Arrays.asList(currentService.findById(user.getShopId())), null);
|
}
|
|
@ApiOperation(value = "获取用户的可用充值卡", notes = "获取用户的可用充值卡")
|
@GetMapping(value = "getUseMoneyCard/{vipId}")
|
public AjaxResult getUseMoneyCard(@PathVariable Long vipId) {
|
MoneyCardUse moneyCardUse = new MoneyCardUse();
|
moneyCardUse.setVipId(vipId);
|
moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
|
List<MoneyCardUse> cards = cardUseService.findByModel(moneyCardUse);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, cards);
|
}
|
|
@ApiOperation(value = "根据订单ID查询订单信息", notes = "根据订单ID查询订单信息")
|
@GetMapping(value = "/findOrderById/{id}")
|
public AjaxResult findOrderById(@PathVariable Long id) {
|
SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
SysOrder order = orderService.findById(id);
|
order.setItems(orderItemDao.selectByOrderId(id));
|
return AjaxResult.buildSuccessInstance(order);
|
}
|
|
@ApiOperation(value = "列表显示搜索项目绑定的产品信息", notes = "列表显示搜索项目绑定的产品信息")
|
@PostMapping(value = "/showList")
|
public AjaxResult showList(@RequestBody PadShowListDto padShowListDto) {
|
|
int offset = (padShowListDto.getPageNum() - 1) * padShowListDto.getPageSize();
|
int limit = padShowListDto.getPageSize();
|
PaginationVO pageVo = new PaginationVO();
|
pageVo.setOffset(offset);
|
pageVo.setLimit(limit);
|
|
ShoppingGoods shoppingGoods = new ShoppingGoods();
|
if(StrUtil.isNotEmpty(padShowListDto.getName())){
|
shoppingGoods.setName(padShowListDto.getName());
|
}
|
if(StrUtil.isNotEmpty(padShowListDto.getGoodType())){
|
shoppingGoods.setGoodType(padShowListDto.getGoodType());
|
}
|
// QueryUtil.setQueryLimit(shoppingGoods);
|
if(StringUtils.isBlank(pageVo.getSort())){
|
pageVo.setOrder("desc");
|
pageVo.setSort("createTime");
|
}
|
//2表示查询总部产品
|
if (shoppingGoods.getHeadquarters()!=null && 2==shoppingGoods.getHeadquarters()) {
|
//仅查询本店产品
|
SysShopInfo zbShop = shopInfoDao.selectZbShop(getMe().getCompanyId());
|
//如果是总部自己查询自己的库存则不需加入这个调价
|
if (getMe().getShopId().equals(zbShop.getId())){
|
shoppingGoods.setHeadquarters(1);
|
}
|
}
|
shoppingGoods.setIsDel(ShoppingGoods.NORMAL);
|
List<ShoppingGoods> dataList = shoppingGoodsService.findInPage(shoppingGoods, pageVo);
|
AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, shoppingGoodsService.findTotal(shoppingGoods));
|
return result;
|
}
|
|
@ApiOperation(value = "计算订单金额", notes = "计算订单金额")
|
@PostMapping(value = "/calculationOrder")
|
public AjaxResult calculationOrder(@RequestBody SysOrder sysOrder) {
|
BigDecimal total = BigDecimal.ZERO;
|
BigDecimal zkTotal = BigDecimal.ZERO;
|
//默认排序
|
List<SysOrderItem> items = sysOrder.getItems();
|
|
for (int i = 0; i < items.size(); i++) {
|
SysOrderItem item = items.get(i);
|
zkTotal = zkTotal.add(new BigDecimal(item.getZkPrice() * item.getCount()));
|
total = total.add(new BigDecimal(item.getPrice() * item.getCount()));
|
}
|
SysOrder sysOrderResult = new SysOrder();
|
sysOrderResult.setZkTotal(zkTotal.setScale(2, BigDecimal.ROUND_DOWN).doubleValue());
|
sysOrderResult.setTotal(total.doubleValue());
|
|
return AjaxResult.buildSuccessInstance(sysOrderResult);
|
}
|
|
@ApiOperation(value = "订单支付", notes = "订单支付")
|
@PostMapping(value = "/payOrder")
|
@Transactional(rollbackFor = Exception.class)
|
public AjaxResult payOrder(@RequestBody SysOrder sysOrder) {
|
SysUsers user = getMe();
|
sysOrder.setShopId(user.getShopId());
|
sysOrder.setOrderType(SysOrder.ORDER_TYPE_SEAL);
|
sysOrder.setIsHasRefund(SysOrder.IS_HAS_REFUND_N);
|
//校验订单是否满足结算调价,新订单则保存订单,已有订单则删除后更新
|
sysOrder = orderService.checkAndSaveOrder(sysOrder);
|
orderService.payOrder(sysOrder);
|
|
//发送微信公众号提醒
|
UniformMsgParam uniformMsgParam = new UniformMsgParam(user.getCompanyId(), UniformMsgParam.GZH_GMCG);
|
uniformMsgParam.put("orderId", sysOrder.getId());
|
asyncMessageManager.sendMsg(AsyncMessageRouting.SEND_UNIFORM_TEMPLATE_MSG ,uniformMsgParam);
|
|
//处理用户购买的产品
|
return AjaxResult.buildSuccessInstance(sysOrder, "订单结算成功");
|
}
|
|
@ApiOperation(value = "订单保存接口-挂单", notes = "订单保存接口-挂单")
|
@PostMapping(value = "/saveOrder")
|
@Transactional(rollbackFor = Exception.class)
|
public AjaxResult saveOrder(@RequestBody SysOrder sysOrder) {
|
SysUsers user = getMe();
|
sysOrder.setShopId(user.getShopId());
|
//校验保存订单
|
sysOrder = orderService.checkAndSaveOrder(sysOrder);
|
//处理用户购买的产品
|
return AjaxResult.buildSuccessInstance(sysOrder, "订单保存成功");
|
}
|
|
|
}
|