diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java index ecc694d56..8f79fb44a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java @@ -7,7 +7,10 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.dto.OrderSaveDto; -import com.iformall.domain.po.*; +import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxCouponChannel; +import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.vo.WxOrderQueryVo; import com.iformall.enums.EnumCouponChannelStatus; @@ -58,7 +61,9 @@ public class WxOrderController extends BaseController { @SystemControllerLog(description = "订单管理-列表") public ResultData list(@ModelAttribute WxOrder wxOrder, Integer pageNum, Integer pageSize) { logger.debug("[" + getIpAddr() + "] WxOrderController::list"); - if (null == wxOrder) wxOrder = new WxOrder(); + if (null == wxOrder) { + wxOrder = new WxOrder(); + } wxOrder.setTenantId(getTenantId()); wxOrder.setSortColumns(BaseEntity.SortField.CreateDate_DESC,BaseEntity.SortField.Id_DESC); final PageInfo page = wxOrderService.listAsPage(wxOrder, pageNum, pageSize); @@ -143,7 +148,9 @@ public class WxOrderController extends BaseController { } WxCouponChannel wxCouponChannel = wxCouponChannelService.getById(orderSaveDto.getCouponChannelId()); ResultData resultData = couponChannelCheck(orderSaveDto, wxCouponChannel); - if (resultData != null) return resultData; + if (resultData != null) { + return resultData; + } Long couponId = orderSaveDto.getCouponId() == null ? wxCouponChannel.getCouponId() : orderSaveDto.getCouponId(); if (couponId == null) { @@ -161,8 +168,9 @@ public class WxOrderController extends BaseController { if (coupon == null) { return new ResultData(ErrorCode.COUPON_IS_EMPTY); } - if (!wxOrderService.checkCouponIsFree(coupon)) + if (!wxOrderService.checkCouponIsFree(coupon)) { return new ResultData(ErrorCode.COUPON_IS_NOT_FREE); + } // 免费券 order = wxOrderService.saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null); return new ResultData(order); @@ -200,4 +208,29 @@ public class WxOrderController extends BaseController { return null; } + @ApiOperation("查看明细") + @GetMapping("/detail") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + @SystemControllerLog(description = "订单管理-id查询") + public ResultData detail(Long id) { + logger.debug("[" + getIpAddr() + "] WxOrderController::detail"); + WxOrder order = new WxOrder(); + order.setId(id); + order.setTenantId(getTenantId()); + return new ResultData(Result.SUCCESS, "查询成功", wxOrderService.detailCUserVo(order)); + } + + @ApiOperation("交易列表") + @GetMapping("summary") + @SystemControllerLog(description = "订单管理-总计") + public ResultData summary(@ModelAttribute WxOrderQueryVo wxOrderQueryVo) { + logger.debug("[" + getIpAddr() + "] WxOrderController::summary"); + if (null == wxOrderQueryVo) { + wxOrderQueryVo = new WxOrderQueryVo(); + } + wxOrderQueryVo.setTenantId(getTenantId()); + Map data = wxOrderService.summary(wxOrderQueryVo); + return new ResultData(data); + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java index 96ff99808..d9c3e3784 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java @@ -82,4 +82,9 @@ public class WxOrder extends BaseEntity { @TableField(exist = false) protected String statusStr; + @TableField(exist = false) + private String title; + + @TableField(exist = false) + private Integer attribute; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java index d66aba5c9..021547b00 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java @@ -87,4 +87,7 @@ public class WxOrderCouponVo { @io.swagger.annotations.ApiModelProperty(value = "是否可转赠", name = "supportTransfer") private Integer supportTransfer; + @io.swagger.annotations.ApiModelProperty(value = "补贴额", name = "subsidyNum") + private Integer subsidyNum; + } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderQueryVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderQueryVo.java index 85ed59400..b55bb582b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderQueryVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderQueryVo.java @@ -36,4 +36,13 @@ public class WxOrderQueryVo extends BaseEntity { @TableField(exist = false) private Date createDate; + @io.swagger.annotations.ApiModelProperty(value = "产品名称", name = "title") + private String title; + + @io.swagger.annotations.ApiModelProperty(value = "商品属性", name = "attribute") + private Integer attribute; + + @io.swagger.annotations.ApiModelProperty(value = "订单号", name = "orderNumber") + private String orderNumber; + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 0c8b197bf..acdf60391 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -189,4 +189,6 @@ public interface WxOrderService { */ void actionAfterCouponOrderSuccess(WxOrder updateOrder, WxCoupon coupon, WxCUser user); + Map summary(WxOrderQueryVo wxOrderQueryVo); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index 8c6e585fc..9e8d07d93 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -29,6 +29,7 @@ import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; @Service public class WxOrderServiceImpl implements WxOrderService { @@ -216,6 +217,7 @@ public class WxOrderServiceImpl implements WxOrderService { /** * 用户购买的订单数量 + * * @param user * @param counpon * @return @@ -244,6 +246,7 @@ public class WxOrderServiceImpl implements WxOrderService { /** * 用户购买的订单数量 + * * @param user * @param counpon * @return @@ -263,7 +266,7 @@ public class WxOrderServiceImpl implements WxOrderService { statusS.add(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode()); orderQ.setStatusS(statusS); List orders = wxOrderMapper.findList(orderQ); - if(orders.size() >= 1) { + if (orders.size() >= 1) { return orders.get(0); } } catch (Exception e) { @@ -275,6 +278,7 @@ public class WxOrderServiceImpl implements WxOrderService { /** * 用户正在参加的新手活动 + * * @param user * @return */ @@ -305,6 +309,7 @@ public class WxOrderServiceImpl implements WxOrderService { /** * 用户购买的券包数量- 待使用的券 + * * @param user * @param counpon * @return @@ -329,6 +334,7 @@ public class WxOrderServiceImpl implements WxOrderService { /** * 商户注券减库存 + * * @param user * @param coupon * @param couponIdStr @@ -343,8 +349,8 @@ public class WxOrderServiceImpl implements WxOrderService { throw new MallinkException(ErrorCode.TOO_MANY_REQUEST.getCode(), coupon.getTitle() + ErrorCode.TOO_MANY_REQUEST.getMessage()); } - JSONObject jo = JSONObject.parseObject(wxCouponSendVo.getConditions()) ; - int merchantSend = jo.getIntValue(WxCouponSend.KEY_MERCHANT_SEND) ; + JSONObject jo = JSONObject.parseObject(wxCouponSendVo.getConditions()); + int merchantSend = jo.getIntValue(WxCouponSend.KEY_MERCHANT_SEND); int merchantRemain = jo.getIntValue(WxCouponSend.KEY_MERCHANT_REMAIN); // 检查 优惠券 库存 @@ -390,7 +396,7 @@ public class WxOrderServiceImpl implements WxOrderService { try { // 减库存 - wxCouponSendService.reduceMerchantSend(wxCouponSendVo.getId(), merchantRemain,merchantSend,1); + wxCouponSendService.reduceMerchantSend(wxCouponSendVo.getId(), merchantRemain, merchantSend, 1); } catch (RuntimeException e) { logger.error("此券减库存失败, couponId: {}, error: {}", couponIdStr, e.getMessage()); throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), coupon.getTitle() + ErrorCode.ORDER_IS_LIMITED.getMessage()); @@ -403,6 +409,7 @@ public class WxOrderServiceImpl implements WxOrderService { /** * 减库存 + * * @param user * @param coupon * @param couponIdStr @@ -411,7 +418,7 @@ public class WxOrderServiceImpl implements WxOrderService { long time = System.currentTimeMillis() + RedisLock.TIMEOUT; String timeStr = String.valueOf(time); // 库存加锁 - if (!redisLock.lock(couponIdStr, timeStr)) { + if (!redisLock.lock(couponIdStr, timeStr)) { logger.error("此券被锁定, couponId: " + couponIdStr); throw new MallinkException(ErrorCode.TOO_MANY_REQUEST); } @@ -525,6 +532,7 @@ public class WxOrderServiceImpl implements WxOrderService { /** * 检查券商户是否可用 + * * @param couponId * @return */ @@ -733,9 +741,9 @@ public class WxOrderServiceImpl implements WxOrderService { Integer shareAmount = payOrder.getPayAmount() - fee; cardInfo.setShareFeeAmount(shareAmount); cardInfo.setRemainingShareFeeAmount(shareAmount); - if(payAccount.getRealRate() != null) { + if (payAccount.getRealRate() != null) { int iRealChargeFee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRealRate(), true); - if(fee > iRealChargeFee) { + if (fee > iRealChargeFee) { cardInfo.setRateAmount(fee - iRealChargeFee); } } @@ -774,7 +782,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.NESTED, readOnly = false, rollbackFor = {Exception.class}) - public WxCouponOrder sendFreeCouponToUser(Long userId, Long couponId,WxCouponSendVo wxCouponSendVo) { + public WxCouponOrder sendFreeCouponToUser(Long userId, Long couponId, WxCouponSendVo wxCouponSendVo) { // check 用户状态 WxCUser user = null; try { @@ -805,7 +813,7 @@ public class WxOrderServiceImpl implements WxOrderService { if (Objects.nonNull(wxCouponSendVo) && Objects.equals(EnumCouponSendSendType.MERCHANT.getCode(), wxCouponSendVo.getSendType())) { // 商户注券减库存操作 - stockMerchantReduce(user,coupon,couponIdStr,wxCouponSendVo); + stockMerchantReduce(user, coupon, couponIdStr, wxCouponSendVo); } else { // 减库存操作 stockReduce(user, coupon, couponIdStr); @@ -951,6 +959,7 @@ public class WxOrderServiceImpl implements WxOrderService { /** * 下订单后操作 + * * @param updateOrder * @param coupon * @param user @@ -968,6 +977,19 @@ public class WxOrderServiceImpl implements WxOrderService { } + @Override + public Map summary(WxOrderQueryVo wxOrderQueryVo) { + List listOrder = wxOrderMapper.findListOrder(wxOrderQueryVo); + Long orderPay = listOrder.stream().collect(Collectors.summingLong(WxOrder::getPayment)); + Long pay = listOrder.stream().filter(o -> !o.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()) + && !o.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode())) + .collect(Collectors.summingLong(WxOrder::getPayment)); + Map data = new HashMap<>(); + data.put("orderPay", orderPay); + data.put("pay", pay); + return data; + } + /** * 积分设置来源商户 */ @@ -1396,7 +1418,7 @@ public class WxOrderServiceImpl implements WxOrderService { if (checkCouponIsFree(coupon)) { // 免费券 order = saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null); - if(order != null) { + if (order != null) { // 6. 下订单完成,发送内部消息 // 下订单完成,发送内部消息 try { @@ -1479,6 +1501,7 @@ public class WxOrderServiceImpl implements WxOrderService { /** * 保存订单-免费 + * * @param record * @param user * @param coupon @@ -1607,7 +1630,7 @@ public class WxOrderServiceImpl implements WxOrderService { // 5. 第一次砍价 try { firstPress(record, user, coupon, orderNumber); - }catch (Exception e) { + } catch (Exception e) { logger.error("第一次砍价失败:" + e.getMessage()); throw new MallinkException(ErrorCode.ORDER_SAVE_ERR); } @@ -1617,6 +1640,7 @@ public class WxOrderServiceImpl implements WxOrderService { /** * 初始砍价 + * * @param record * @param user * @param coupon diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 754ff2690..b8396ba75 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -222,7 +222,7 @@ o.id,o.order_number,o.tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status,o.create_date,o.update_date, c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.unit,c.detail,c.remark,c.valid_start_date,c.valid_end_date, - co.id as coupon_order_id,co.coupon_order_status,c.support_transfer + co.id as coupon_order_id,co.coupon_order_status,c.support_transfer,c.subside_num @@ -278,7 +278,8 @@ - + + @@ -538,43 +539,49 @@ + +