diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardDailyLogController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardDailyLogController.java index 457dfba51..5cd069df6 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardDailyLogController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardDailyLogController.java @@ -2,22 +2,30 @@ package com.iformall.controller.market; import com.github.pagehelper.PageInfo; +import com.iformall.annotation.SystemControllerLog; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.WxCardDailyLog; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.base.BaseEntity; +import com.iformall.domain.vo.WxCardVo; import com.iformall.service.WxCardDailyLogService; import com.iformall.service.WxCardSpendService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; + /** * @version 1.0 @@ -34,7 +42,7 @@ public class WxCardDailyLogController extends BaseController { WxCardDailyLogService wxCardDailyLogService; @ApiOperation("分页列表接口") - @GetMapping("list") + @GetMapping("/list") @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) @@ -47,4 +55,16 @@ public class WxCardDailyLogController extends BaseController { return new ResultData(info); } + @ApiOperation("消费卡日志-导出数据") + @GetMapping("/exportCardLog") + @SystemControllerLog(description = "消费卡日志-导出数据") + public void exportCardOrder(@ModelAttribute WxCardDailyLog wxCardDailyLog, HttpServletRequest request, HttpServletResponse response) { + logger.info("[" + getIpAddr() + "] cardDailyLog/exportCardLog"); + if (wxCardDailyLog == null) { + wxCardDailyLog = new WxCardDailyLog(); + } + wxCardDailyLog.updateTenantInfo(getTenantInfo()); + wxCardDailyLogService.exportData(wxCardDailyLog, request, response); + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderReservationController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderReservationController.java index bbbb595c3..e93f9f48b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderReservationController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderReservationController.java @@ -1,6 +1,7 @@ package com.iformall.controller.market; import com.github.pagehelper.PageInfo; +import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; @@ -52,6 +53,34 @@ public class WxCouponOrderReservationController extends BaseController { return new ResultData(reservation); } + @ApiOperation(value = "") + @PostMapping("update") + @ApiImplicitParams({ + }) + public ResultData update(@RequestBody WxCouponOrderReservation reservation) { + if(reservation.getId() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + reservation.updateTenantInfo(getTenantInfo()); + WxCouponOrderReservation sortReservation = wxCouponOrderReservationService.getSortById(reservation.getId(), reservation.getTenantId()); + if(sortReservation == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"id is error"); + } +// if(EnumCouponOrderReservationStatus.getReservationIng().contains(sortReservation.getStatus())){ +// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"预约单进行中"); +// } + if(EnumCouponOrderReservationStatus.getReservationFinish().contains(sortReservation.getStatus())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"预约单已完成"); + } + if(EnumCouponOrderReservationStatus.getReservationInit().contains(sortReservation.getStatus())){ + if(reservation.getStartDate() != null ){ + reservation.setStatus(EnumCouponOrderReservationStatus.reservation.getCode()); + } + } + reservation.setRemark("A用户"+getUser().getUsername()+"修改信息"); + return wxCouponOrderReservationService.saveOrUpdate(reservation); + } + @ApiOperation(value = "修改状态") @PostMapping("updateStatus") @ApiImplicitParams({ @@ -66,13 +95,13 @@ public class WxCouponOrderReservationController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"id is error"); } if(EnumCouponOrderReservationStatus.reservation_dispatch.getCode().equals(reservation.getStatus())){ - if(!EnumCouponOrderReservationStatus.reservation.getCode().equals(sortReservation.getStatus())){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"预约单状态不支持派单"); + if(!EnumCouponOrderReservationStatus.getReservationInit().contains(sortReservation.getStatus())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"预约单状态不支持确认"); } } if(EnumCouponOrderReservationStatus.reservation.getCode().equals(reservation.getStatus())){ - if(!EnumCouponOrderReservationStatus.reservation_dispatch.getCode().equals(sortReservation.getStatus())){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"预约单状态不支持取消"); + if(!EnumCouponOrderReservationStatus.getReservationIng().contains(sortReservation.getStatus())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"预约单状态不支持取消确认"); } } @@ -81,6 +110,7 @@ public class WxCouponOrderReservationController extends BaseController { updReservation.setId(reservation.getId()); updReservation.setStatus(reservation.getStatus()); updReservation.setRemark(reservation.getRemark()); + updReservation.setRemark("A用户"+getUser().getUsername()+"修改状态"); wxCouponOrderReservationService.saveOrUpdate(updReservation); return new ResultData(); } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderReservationController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderReservationController.java index 709b1ce76..71493cfb0 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderReservationController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderReservationController.java @@ -52,6 +52,34 @@ public class WxCouponOrderReservationController extends BaseController { return new ResultData(reservation); } + @ApiOperation(value = "") + @PostMapping("update") + @ApiImplicitParams({ + }) + public ResultData update(@RequestBody WxCouponOrderReservation reservation) { + if(reservation.getId() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + reservation.updateTenantInfo(getTenantInfo()); + WxCouponOrderReservation sortReservation = wxCouponOrderReservationService.getSortById(reservation.getId(), reservation.getTenantId()); + if(sortReservation == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"id is error"); + } +// if(EnumCouponOrderReservationStatus.getReservationIng().contains(sortReservation.getStatus())){ +// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"预约单进行中"); +// } + if(EnumCouponOrderReservationStatus.getReservationFinish().contains(sortReservation.getStatus())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"预约单已完成"); + } + if(EnumCouponOrderReservationStatus.getReservationInit().contains(sortReservation.getStatus())){ + if(reservation.getStartDate() != null ){ + reservation.setStatus(EnumCouponOrderReservationStatus.reservation.getCode()); + } + } + reservation.setRemark("B用户"+getLoginBUser().getPhone()+"修改信息"); + return wxCouponOrderReservationService.saveOrUpdate(reservation); + } + @ApiOperation(value = "修改状态") @PostMapping("updateStatus") @ApiImplicitParams({ @@ -69,13 +97,13 @@ public class WxCouponOrderReservationController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"查询数据门店不匹配"); } if(EnumCouponOrderReservationStatus.reservation_dispatch.getCode().equals(reservation.getStatus())){ - if(!EnumCouponOrderReservationStatus.reservation.getCode().equals(sortReservation.getStatus())){ + if(!EnumCouponOrderReservationStatus.getReservationInit().contains(sortReservation.getStatus())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"预约单状态不支持确认"); } } if(EnumCouponOrderReservationStatus.reservation.getCode().equals(reservation.getStatus())){ - if(!EnumCouponOrderReservationStatus.reservation_dispatch.getCode().equals(sortReservation.getStatus())){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"预约单状态不支持取消"); + if(!EnumCouponOrderReservationStatus.getReservationIng().contains(sortReservation.getStatus())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"预约单状态不支持取消确认"); } } @@ -84,6 +112,7 @@ public class WxCouponOrderReservationController extends BaseController { updReservation.setId(reservation.getId()); updReservation.setStatus(reservation.getStatus()); updReservation.setRemark(reservation.getRemark()); + reservation.setRemark("B用户"+getLoginBUser().getPhone()+"修改状态"); wxCouponOrderReservationService.saveOrUpdate(updReservation); return new ResultData(); } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderReservationController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderReservationController.java index 29534abcd..ed7b4e930 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderReservationController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderReservationController.java @@ -84,6 +84,9 @@ public class WxCouponOrderReservationController extends BaseController { if(EnumCouponOrderReservationStatus.getReservationFinish().contains(sortReservation.getStatus())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"预约单已完成"); } + if(EnumCouponOrderReservationStatus.getReservationInit().contains(sortReservation.getStatus())){ + sortReservation.setStatus(EnumCouponOrderReservationStatus.reservation.getCode()); + } } if(reservation.getCouponOrderId() == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"couponOrderId is null"); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 8733c3d83..b9ce752c6 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -200,8 +200,8 @@ public class WxOrderController extends BaseController { return map; } Map couponMap = JSONObject.parseObject(cp_extra, Map.class); - String idstr = couponMap.get("composeOrderId"); - composeOrderId = Long.parseLong(idstr); + String composeOrderIdStr = couponMap.get("composeOrderId"); + composeOrderId = Long.parseLong(composeOrderIdStr); tenantId = couponMap.get("tenantId"); }catch(Exception e){ } diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java index 9461a6eb4..a65589b93 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/OrderComposeSaveDto.java @@ -25,4 +25,6 @@ public class OrderComposeSaveDto implements Serializable { WxCouponChannel wxCouponChannel; + String extParam; + } diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java b/mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java index 52def9a31..20f10572d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/OrderSaveDto.java @@ -19,6 +19,8 @@ public class OrderSaveDto implements Serializable { private String formId; + private Long fixMerchantId; + //被操作人的ID 供A端使用 private Long userId; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCardDailyLog.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCardDailyLog.java index 85b74c283..6277eb574 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCardDailyLog.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCardDailyLog.java @@ -1,5 +1,6 @@ package com.iformall.domain.po; +import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; @@ -15,37 +16,47 @@ import java.util.List; public class WxCardDailyLog extends TenantEntity { protected Long id; @io.swagger.annotations.ApiModelProperty(value="卡密id",name="cardPasswordId") + @Excel(name = "实体卡卡号", width = 20, orderNum = "3") private Long cardPasswordId; @io.swagger.annotations.ApiModelProperty(value="ip",name="ip") private String ip; @io.swagger.annotations.ApiModelProperty(value="",name="price") private Integer price; @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") + @Excel(name = "操作时间", width = 20, orderNum = "5",format="yyyy-MM-dd HH:mm:ss") private Date createDate; @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; @io.swagger.annotations.ApiModelProperty(value="",name="remark") + @Excel(name = "备注", width = 20, orderNum = "7") private String remark; @io.swagger.annotations.ApiModelProperty(value="",name="operatorType") private Integer operatorType; @io.swagger.annotations.ApiModelProperty(value="",name="operatorId") private Long operatorId; + @Excel(name = "操作人", width = 20, orderNum = "6") @io.swagger.annotations.ApiModelProperty(value="EnumUserType",name="operatorUser") private String operatorUser; @io.swagger.annotations.ApiModelProperty(value="父卷id",name="couponId") + @Excel(name = "卡批次ID", width = 20, orderNum = "0") private Long couponId; @io.swagger.annotations.ApiModelProperty(value="卡卷Id",name="cardInfoId") + @Excel(name = "电子卡卡号", width = 20, orderNum = "2") private Long cardInfoId; @io.swagger.annotations.ApiModelProperty(value="操作类型 1-创建,2-设置面额,3-充值 EnumOperateLogType",name="type") private Integer type; + @TableField(exist = false) + @Excel(name = "操作类型", width = 20, orderNum = "4") + private String typeDes; @io.swagger.annotations.ApiModelProperty(value="卡卷总数",name="count") private Integer count; @io.swagger.annotations.ApiModelProperty(value="卡卷总数",name="count") @TableField(exist = false) + @Excel(name = "消费卡名称", width = 20, orderNum = "1") private String title; private List couponIds; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java index 126d53af5..2634a7898 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java @@ -416,6 +416,9 @@ public class WxCoupon extends TenantEntity { @TableField(exist = false) private String[] mallTenantIds; + @TableField(exist = false) + private List couponIds; + public String getSalePriceStr() { if(salePrice!=null) { salePriceStr = new BigDecimal(salePrice).divide(new BigDecimal(100)).toString(); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java index 9579101d2..351e07485 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java @@ -166,11 +166,17 @@ public class WxMerchant extends TenantEntity { @TableField(exist = false) @io.swagger.annotations.ApiModelProperty(value = "联系方式", name = "phone") private String phone; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value = "券名ID", name = "couponId") + private Long couponId; @TableField(exist = false) @io.swagger.annotations.ApiModelProperty(value = "券名称", name = "couponName") private String couponName; + + public String getShopsStr() { if (shopVos != null && shopVos.size() > 0) { return String.join("\n", 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 c9fd3a4a1..c456085cf 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java @@ -138,16 +138,21 @@ public class WxOrder extends TenantEntity { private String fromId; public Object getExpParamValue(String key) { - if (StringUtils.isBlank(extParam)) { + JSONObject extParamJson = getExtParamJson(); + if (extParamJson == null) { return null; } - JSONObject o = JSON.parseObject(extParam); - if (null == o ) { + return extParamJson.get(key); + } + + public JSONObject getExtParamJson() { + if (StringUtils.isBlank(extParam)) { return null; } - return o.get(key); + return JSON.parseObject(extParam); } + @TableField(exist = false) protected List couponIds; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponOrderReservationStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponOrderReservationStatus.java index a670c56c3..2251de1f9 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponOrderReservationStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponOrderReservationStatus.java @@ -9,6 +9,7 @@ import java.util.List; public enum EnumCouponOrderReservationStatus { // + reservation_create_order(-1, "下单"), reservation(0, "预约"), reservation_user_cancellation(1, "用户取消"), reservation_expire_cancellation(2, "过期取消"), @@ -46,6 +47,26 @@ public enum EnumCouponOrderReservationStatus { return message; } + //预约单预约状态 + public static List getReservationInit(){ + List list = new ArrayList<>(); + list.add(reservation_create_order.code); + list.add(reservation.code); + list.add(reservation_refuse_dispatch.code); + return list; + } + + //预约单取消状态 + public static List getReservationCancel(){ + List list = new ArrayList<>(); + list.add(reservation_user_cancellation.code); + list.add(reservation_expire_cancellation.code); + list.add(reservation_refund_cancellation.code); + list.add(reservation_refuse_cancellation.code); + return list; + } + + //预约单处理中 public static List getReservationIng(){ List list = new ArrayList<>(); list.add(reservation_dispatch.code); @@ -53,6 +74,7 @@ public enum EnumCouponOrderReservationStatus { return list; } + //预约单已完成 public static List getReservationFinish(){ List list = new ArrayList<>(); list.add(reservation_finish.code); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java index c6a9437d4..c55e7b8df 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java @@ -5,6 +5,7 @@ import com.iformall.domain.po.WxCreditHistory; import com.iformall.domain.vo.MerchantCreditRankingVo; import com.iformall.domain.vo.WxCreditHistoryNewIdVo; import com.iformall.domain.vo.WxCreditHistoryVo; +import io.swagger.models.auth.In; import org.apache.ibatis.annotations.Param; import java.util.Date; @@ -53,4 +54,6 @@ public interface WxCreditHistoryMapper extends CommonMapper findLesList(WxCreditHistory chlesq); List getIsMemberCarAndClearCredit(WxCreditHistory record); + + Integer findByTicketNumber(WxCreditHistory record); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCardDailyLogService.java b/mallinkService/src/main/java/com/iformall/service/WxCardDailyLogService.java index 8dadcc42c..33c6f6ada 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCardDailyLogService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCardDailyLogService.java @@ -3,6 +3,9 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + public interface WxCardDailyLogService { /** @@ -23,4 +26,5 @@ public interface WxCardDailyLogService { */ void saveOrUpdate(WxCardDailyLog record); + void exportData(WxCardDailyLog wxCardDailyLog, HttpServletRequest request, HttpServletResponse response); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index a342c9745..2e2d4b387 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -269,6 +269,7 @@ public interface WxOrderService { int updateCpsStatus(WxOrder order); - ResultData handlerPushOrder(TenantEntity tenantEntity, Long composeOrderId, String batchExtParam, List goods); + ResultData handlerPushOrder(TenantEntity tenantEntity, Long composeOrderId, String batchExtParam, + List goods); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardDailyLogServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardDailyLogServiceImpl.java index 6381f4c7d..608472373 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardDailyLogServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardDailyLogServiceImpl.java @@ -4,6 +4,8 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; import com.iformall.domain.po.*; +import com.iformall.domain.vo.WxCardVo; +import com.iformall.enums.EnumOperateLogType; import com.iformall.mapper.*; import com.iformall.service.*; import org.apache.commons.collections.CollectionUtils; @@ -13,6 +15,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.stream.Collectors; @@ -27,6 +31,9 @@ public class WxCardDailyLogServiceImpl implements WxCardDailyLogService { @Autowired WxCouponService wxCouponService; + @Autowired + ExcelService excelService; + @Override public PageInfo listAsPage(WxCardDailyLog record, Integer pageIndex, Integer pageSize) { @@ -70,4 +77,29 @@ public class WxCardDailyLogServiceImpl implements WxCardDailyLogService { } } + @Override + public void exportData(WxCardDailyLog record, HttpServletRequest request, HttpServletResponse response) { + if (StringUtils.isNotBlank(record.getTitle())) { + List title = wxCouponService.getByIdListOrTitle(new ArrayList<>(), record.getTenantId(), record.getTitle()); + if (!CollectionUtils.isEmpty(title)) { + List couponIds = title.parallelStream().map(WxCoupon::getId).collect(Collectors.toList()); + record.setCouponIds(couponIds); + } + } + + List pageInfo = wxCardDailyLogMapper.findList(record); + if (!CollectionUtils.isEmpty(pageInfo)) { + List couponIds = pageInfo.parallelStream().map(WxCardDailyLog::getCouponId).collect(Collectors.toList()); + List list = wxCouponService.getByIdListOrTitle(couponIds, record.getTenantId(), null); + if (!CollectionUtils.isEmpty(list)) { + Map map = list.parallelStream().collect(Collectors.toMap(WxCoupon::getId, WxCoupon::getTitle)); + for (WxCardDailyLog log : pageInfo) { + log.setTitle(map.get(log.getCouponId())); + log.setTypeDes(EnumOperateLogType.getEnum(log.getType()).getInfo()); + } + } + } + excelService.exportExcel(pageInfo, null, "消费卡日志", WxCardDailyLog.class, "消费卡日志.xlsx", response, false); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java index 43bf721b2..44d145ee4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java @@ -32,6 +32,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.lang.reflect.InvocationTargetException; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -360,7 +361,7 @@ public class WxCardInfoServiceImpl implements WxCardInfoService { WxCoupon wxCoupon = wxCouponMapper.selectById(wxCardInfo.getCouponId(), wxCardInfo.getTenantId()); Integer type = cardInfo.getStatus() == 0 ? EnumOperateLogType.ENABLE.getCode() : EnumOperateLogType.STOP_USING.getCode(); - String remark = user.getUsername() + "给卡密[" + cardInfo.getId() + "]" + EnumOperateLogType.getEnum(type).getInfo(); + String remark = user.getUsername() + "给实体卡卡号[" + cardInfo.getId() + "]" + EnumOperateLogType.getEnum(type).getInfo(); insertWxCardDailyLogInfo(user, wxCardInfo, wxCoupon, type, remark, wxCardInfo.getRemainingAmount()); }catch (Exception e){ @@ -519,8 +520,7 @@ public class WxCardInfoServiceImpl implements WxCardInfoService { logger.error("card spend insert error"); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "card spend 插入出错!"); } - - String remark = user.getUsername() + "给卡密[" + wxCardInfo.getId() + "]" + "充值,金额:" + cardInfo.getAmount() + "分"; + String remark = user.getUsername() + "给实体卡卡号[" + wxCardInfo.getId() + "]" + "充值,金额:" + new BigDecimal(cardInfo.getAmount()).divide(new BigDecimal(100)) + "元"; insertWxCardDailyLogInfo(user, wxCardInfo, wxCoupon,EnumOperateLogType.RECHARGE.getCode(),remark, cardInfo.getAmount()); if(record.getCardBeforeAmount().equals(0)){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java index e2676a7b2..c4db94d02 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java @@ -784,7 +784,7 @@ public class WxChartServiceImpl implements WxChartDataService { floor = Long.parseLong(floorId); } List merchantIds = wxMerchantService.getFloorBuildMerchantIds(tenantEntity, null, building, floor, 0, 0); - if (null != merchantIds) { + if (merchantIds != null) { query.put("ids", merchantIds); } List> mapList = wxMerchantMapper.findBusByFloorId(query); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderReservationServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderReservationServiceImpl.java index eb6eb818b..1b619d298 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderReservationServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderReservationServiceImpl.java @@ -80,10 +80,10 @@ public class WxCouponOrderReservationServiceImpl implements WxCouponOrderReserva } if(record.getStartDate() != null && wxCoupon.getValidStartDate() != null && record.getStartDate().before(wxCoupon.getValidStartDate())){ - return new ResultData(ErrorCode.COUPON_CHANNEL_IS_NOT_STARTED.getCode(),"当前时间无法预约"); + return new ResultData(ErrorCode.COUPON_CHANNEL_IS_NOT_STARTED.getCode(),"预约时间不在有效期内"); } if(record.getEndDate() != null && record.getEndDate().after(couponOrder.getExpiredTime())){ - return new ResultData(ErrorCode.COUPON_CHANNEL_IS_NOT_STARTED.getCode(),"当前时间无法预约"); + return new ResultData(ErrorCode.COUPON_CHANNEL_IS_NOT_STARTED.getCode(),"预约时间不在有效期内"); } record.setCouponTitle(wxCoupon.getTitle()); } @@ -125,8 +125,11 @@ public class WxCouponOrderReservationServiceImpl implements WxCouponOrderReserva Long id = wxCouponOrderReservationMapper.getIdByCouponOrder(record.getCouponOrderId(),record.getTenantId()); record.setId(id); } + if (record.getId() == null) { - record.setStatus(EnumCouponOrderReservationStatus.reservation.getCode()); + if(record.getStatus() == null){ + record.setStatus(EnumCouponOrderReservationStatus.reservation.getCode()); + } //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); @@ -134,6 +137,9 @@ public class WxCouponOrderReservationServiceImpl implements WxCouponOrderReserva record.setUpdateDate(now); wxCouponOrderReservationMapper.insert(record); } else { + if(record.getRemark() == null){ + record.setRemark(""); + } record.setUpdateDate(now); wxCouponOrderReservationMapper.updateById(record); } @@ -177,10 +183,15 @@ public class WxCouponOrderReservationServiceImpl implements WxCouponOrderReserva if(reservation == null){ return; } - //预约状态下取消 - if(!EnumCouponOrderReservationStatus.reservation.getCode().equals(reservation.getStatus())){ + //取消状态 return + if(EnumCouponOrderReservationStatus.getReservationCancel().contains(reservation.getStatus())){ return; } + //完成状态 return + if(EnumCouponOrderReservationStatus.getReservationFinish().contains(reservation.getStatus())){ + return; + } + WxCouponOrderReservation updReservation = new WxCouponOrderReservation(); updReservation.setId(reservation.getId()); updReservation.updateTenantInfo(couponOrder); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java index fffe86b23..5335a25a7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -349,7 +349,7 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { cardSetPrice.setCardInfoId(cardInfo.getId()); cardSetPrice.setType(wxCouponPassword.getIsStop() == 0 ? EnumOperateLogType.ENABLE.getCode() : EnumOperateLogType.STOP_USING.getCode()); cardSetPrice.setCount(1); - cardSetPrice.setRemark(user.getUsername() + "给卡密[" + cardInfo.getId() + "]" + EnumOperateLogType.getEnum(cardSetPrice.getType()).getInfo()); + cardSetPrice.setRemark(user.getUsername() + "给实体卡卡号[" + cardInfo.getId() + "]" + EnumOperateLogType.getEnum(cardSetPrice.getType()).getInfo()); wxCardDailyLogService.saveOrUpdate(cardSetPrice); }catch (Exception e){ logger.error("startOrStop insert error"); @@ -389,16 +389,16 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { //设置面额记录 WxCardDailyLog cardSetPrice = new WxCardDailyLog(); cardSetPrice.updateTenantInfo(wxCouponPasswordUpd); - cardSetPrice.setCardPasswordId(wxCouponPasswordUpd.getId()); + cardSetPrice.setCardPasswordId(couponPassword.getId()); cardSetPrice.setPrice(wxCouponPasswordUpd.getPrice()); cardSetPrice.setOperatorType(EnumUserType.MALLUSER.getCode()); - cardSetPrice.setCouponId(wxCouponPasswordUpd.getCouponId()); cardSetPrice.setOperatorId(user.getId()); cardSetPrice.setOperatorUser(user.getUsername()); - cardSetPrice.setCouponId(wxCoupon.getCouponId()); + cardSetPrice.setCouponId(wxCoupon.getId()); cardSetPrice.setType(EnumOperateLogType.SET_DENOMINATION.getCode()); cardSetPrice.setCount(1); - cardSetPrice.setRemark(user.getUsername() + "给卡密[" + cardSetPrice.getCardPasswordId() + "]设置了面额,金额:" + cardSetPrice.getPrice() + "分"); + + cardSetPrice.setRemark(user.getUsername() + "给实体卡卡号[" + cardSetPrice.getCardPasswordId() + "]设置了面额,金额:" + new BigDecimal(cardSetPrice.getPrice()).divide(new BigDecimal(100)) + "元"); wxCardDailyLogService.saveOrUpdate(cardSetPrice); } return count; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index 7a4f10ee0..3ce757046 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -1829,7 +1829,7 @@ public class WxCouponServiceImpl implements WxCouponService { wxCouponChannelService.spuStatusSyncByCoupon(tenantInfo,couponId); WxCoupon record = wxCouponMapper.selectById(couponId, tenantInfo.getTenantId()); - String remark = (user != null ? user.getUsername() : "") + "创建了卡[" + record.getTitle() + "], 库存:"; + String remark = (user != null ? user.getUsername() : "") + "作废卡[" + record.getTitle() + "], 库存:"; insertWxCardDailyLogInfo(user, record, false, remark); } return new ResultData(); @@ -2107,11 +2107,15 @@ public class WxCouponServiceImpl implements WxCouponService { @Override public List getByIdListOrTitle(List couponIds, String tenantId, String title) { - return wxCouponMapper.selectList(new LambdaQueryWrapper() - .eq(WxCoupon::getIsDel, 0) - .in(CollectionUtils.isNotEmpty(couponIds), WxCoupon::getId, couponIds) - .like(StringUtils.isNotBlank(title), WxCoupon::getTitle, title) - .eq(TenantEntity::getTenantId, tenantId)); + WxCoupon coupon = new WxCoupon(); + coupon.setTenantId(tenantId); + if (CollectionUtils.isNotEmpty(couponIds)) { + coupon.setCouponIds(couponIds); + } + if (StringUtils.isNotBlank(title)) { + coupon.setTitle(title); + } + return wxCouponMapper.findList(coupon); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java index 88a635a58..a64050fa1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java @@ -589,8 +589,8 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public WxCreditHistory saveOrUpdate(WxCreditHistory record,TenantEntity tenantEntity) { if (StringUtils.isNotBlank(record.getTicketNumber())){ - WxCreditHistory history = wxCreditHistoryMapper.selectOne(new LambdaQueryWrapper().eq(WxCreditHistory::getTicketNumber, record.getTicketNumber())); - if (history != null){ + Integer number = wxCreditHistoryMapper.findByTicketNumber(record); + if (number > 0){ throw new MallinkException(ErrorCode.SMALL_TICKET_IS_USED); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index ac315be81..3d3fa004f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -1140,6 +1140,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { } private void initQueryParam(WxMerchant record,boolean hasRentContractInfo,Map merchantRentMap) { + if (hasRentContractInfo) { WxRentContract wxRentContractQ = new WxRentContract(); wxRentContractQ.updateTenantInfo(record); @@ -1171,31 +1172,53 @@ public class WxMerchantServiceImpl implements WxMerchantService { // } List merchantIds = new ArrayList(); + + if (record.getCouponId() != null){ + List couponMerchantIds = wxCouponMerchantMapper.findMerchantIdListByProduct(record.getCouponId(), record.getTenantId()); + if (null == couponMerchantIds || couponMerchantIds.size() <=0 ) { + record.setId(-999L); + return; + } + merchantIds.addAll(couponMerchantIds); + } + String phone = StringUtils.trimToNull(record.getPhone()); if (null != phone) { WxMerchantBUser buserQ = new WxMerchantBUser(); buserQ.setPhoneLike(phone); buserQ.setStatus(0); List userMerchantIds = wxMerchantBUserMapper.findMerchantIdList(buserQ); - if (null == userMerchantIds || userMerchantIds.size() <=0 ) { - record.setId(-999L); - return; - }else { - merchantIds.addAll(userMerchantIds); - } + if (null == userMerchantIds || userMerchantIds.size() <=0 ) { + record.setId(-999L); + return; + } + if(merchantIds.size() > 0){ + merchantIds.retainAll(userMerchantIds); + if (merchantIds.size() <= 0) { + record.setId(-999L); + return; + } + }else{ + merchantIds.addAll(userMerchantIds); + } } String floorRule = StringUtils.trimToNull(record.getFloorForRule()); Long building = record.getBuilding(); Long floor = record.getFloor(); List floorMerchantIds = getFloorBuildMerchantIds(record, floorRule, building, floor, 0, 0); - if (null != floorMerchantIds) { - if(merchantIds.size() > 0){ + if(floorMerchantIds != null){ + if(merchantIds.size() > 0){ merchantIds.retainAll(floorMerchantIds); + if (merchantIds.size() <= 0) { + record.setId(-999L); + return; + } }else{ merchantIds.addAll(floorMerchantIds); } - } + } + // if(EnumProfitSharingUse.YES.getCode().equals(record.getIsUse())){ // if(merchantIds.size() > 0){ 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 f1cf7552c..5985f6379 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -245,6 +245,9 @@ public class WxOrderServiceImpl implements WxOrderService { @Lazy @Autowired private WxOrderServiceHelper wxOrderServiceHelper; + + @Autowired + private WxCouponOrderReservationMapper wxCouponOrderReservationMapper; @Override @@ -1495,6 +1498,34 @@ public class WxOrderServiceImpl implements WxOrderService { wxCouponOrderMapper.insert(couponOrder); } + // + try{ + if(EnumCouponType.COUPON_DOUYIN_GO_HOME.getCode().equals(coupon.getType())){ + Long fixMerchantId = (Long) order.getExpParamValue("fixMerchantId"); + String fixMerchantName = (String) order.getExpParamValue("fixMerchantName"); + if(fixMerchantId != null){ + WxCouponOrderReservation record = new WxCouponOrderReservation(); + record.setId(couponOrder.getId()); + record.updateTenantInfo(couponOrder); + record.setCouponOrderId(couponOrder.getId()); + record.setCouponId(coupon.getId()); + record.setCouponTitle(coupon.getTitle()); + record.setReservationMerchantId(fixMerchantId); + record.setReservationMerchantName(fixMerchantName); + record.setcUserId(user.getId()); + record.setUserName(user.getName()); + record.setUserPhone(user.getPhone()); + record.setStatus(EnumCouponOrderReservationStatus.reservation_create_order.getCode()); + record.setCreateDate(curr); + record.setUpdateDate(curr); + wxCouponOrderReservationMapper.insert(record); + } + } + }catch(Exception e){ + logger.info("添加预约信息error"+e.getMessage()); + } + + /// 储值卡信息添加 if (isCard) { Integer fee = 0; @@ -3007,19 +3038,19 @@ public class WxOrderServiceImpl implements WxOrderService { WxOrder lastOrder = null; for (int i = 0 ; i < orderSave.size(); i ++) { OrderComposeSaveDto orderdto = orderSave.get(i); - - //券一个数量创建一个订单 + + //券一个数量创建一个订单 boolean isOneNumberOneOrder = orderAdapterService.isOneNumberOneOrder(); if (isOneNumberOneOrder) { for (int j = 0; j < orderdto.getCount(); j++) { lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), 1, orderdto.getSignleOrder().isPressOrder(),orderdto.getSignleOrder().getOrderGroupId(),orderdto.getSignleOrder().getFormId(), - orderdto.getShippingType(),orderdto.getAddress(),null,orderdto.getWxCouponChannel(), payWay,payVersion); + orderdto.getShippingType(),orderdto.getAddress(),orderdto.getExtParam(),orderdto.getWxCouponChannel(), payWay,payVersion); } }else { lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(), orderdto.getSignleOrder().isPressOrder(),orderdto.getSignleOrder().getOrderGroupId(),orderdto.getSignleOrder().getFormId(), - orderdto.getShippingType(),orderdto.getAddress(),null,orderdto.getWxCouponChannel(), payWay,payVersion); + orderdto.getShippingType(),orderdto.getAddress(),orderdto.getExtParam(),orderdto.getWxCouponChannel(), payWay,payVersion); } } //如果没有orderId,则用lastOrder的信息 @@ -3233,7 +3264,7 @@ public class WxOrderServiceImpl implements WxOrderService { //} record.setCouponNumber(couponNumber); - record.setExtParam(extParam);; + record.setExtParam(extParam); try { orderNumber = proxy.saveNoFreeOrder(orderDate,record, user, coupon, isPressOrder); } catch (Exception e) { @@ -3731,7 +3762,8 @@ public class WxOrderServiceImpl implements WxOrderService { } @Override - public ResultData handlerPushOrder(TenantEntity tenantEntity, Long composeOrderId, String batchExtParam, List goods) { + public ResultData handlerPushOrder(TenantEntity tenantEntity, Long composeOrderId, String batchExtParam, + List goods) { WxBatchOrder wxBatchOrder = this.getWxBatchOrder(tenantEntity, composeOrderId); if (wxBatchOrder == null) { return new ResultData(ErrorCode.ORDER_IS_NOT_FIND); @@ -3751,34 +3783,41 @@ public class WxOrderServiceImpl implements WxOrderService { WxComposeOrder composeOrder = orderAdapterService.getComposeOrder(wxBatchOrder.getId(), tenantEntity.getTenantId()); List> order_goods_info = new ArrayList<>(); - if (goods.size() == 1) { - WxOrder singleOrder = composeOrder.getSingleOrder(); - CreateOrderCallback.Good good = goods.get(0); - - WxOrder updOrder = new WxOrder(); - updOrder.updateTenantInfo(tenantEntity); - updOrder.setId(singleOrder.getId()); - updOrder.setFromId(good.getPoiId()); - if (good.getItemOrderInfoList().size() == 1) { - updOrder.setExtParam(JSON.toJSONString(good.getItemOrderInfoList().get(0))); - } else { - updOrder.setExtParam(JSON.toJSONString(good.getItemOrderInfoList())); - } - wxOrderMapper.updateById(updOrder); - - if (EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())) { - Map map_info = new HashMap<>(); - map_info.put("goods_id", good.getGoodsId()); - WxComposeChildOrderShare childOrderShare = payOrder.getChildOrderShare(singleOrder.getId()); - map_info.put("merchant_uid", childOrderShare.getMerchantUid()); - order_goods_info.add(map_info); - composeOrder.setExtParam(order_goods_info); - } - return new ResultData(composeOrder); - } else { + if(goods.size() > 1){ + //todo 暂无多订单模式 + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "商品数据异常"); + } + CreateOrderCallback.Good good = goods.get(0); + if(good.getQuantity() > 1){ //todo 暂无多订单模式 - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "数据异常"); + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "商品数据异常"); } + CreateOrderCallback.ItemOrderInfo itemOrderInfo = good.getItemOrderInfoList().get(0); + + WxOrder singleOrder = composeOrder.getSingleOrder(); + JSONObject extParamJson = singleOrder.getExtParamJson(); + if(extParamJson == null){ + extParamJson = new JSONObject(); + } + extParamJson.put("itemOrderId",itemOrderInfo.getItemOrderId()); + extParamJson.put("price",itemOrderInfo.getPrice()); + + WxOrder updOrder = new WxOrder(); + updOrder.updateTenantInfo(tenantEntity); + updOrder.setId(singleOrder.getId()); + updOrder.setFromId(good.getPoiId()); + updOrder.setExtParam(extParamJson.toJSONString()); + wxOrderMapper.updateById(updOrder); + + if (EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())) { + Map map_info = new HashMap<>(); + map_info.put("goods_id", good.getGoodsId()); + WxComposeChildOrderShare childOrderShare = payOrder.getChildOrderShare(singleOrder.getId()); + map_info.put("merchant_uid", childOrderShare.getMerchantUid()); + order_goods_info.add(map_info); + composeOrder.setExtParam(order_goods_info); + } + return new ResultData(composeOrder); // List childOrders = orderAdapterService.getChildOrders(composeOrder, tenantEntity.getTenantId()); // Map> collect = childOrders.stream().collect(groupingBy(WxOrder::getCouponChannelId)); @@ -3875,6 +3914,23 @@ public class WxOrderServiceImpl implements WxOrderService { } orderComposeSaveDto.getSignleOrder().setCouponId(coupon.getId()); orderComposeSaveDto.setWxCoupon(coupon); + + //判断预约商户 + Long fixMerchantId = orderComposeSaveDto.getSignleOrder().getFixMerchantId(); + if(fixMerchantId != null){ + List couponMerchantIds = wxCouponMerchantMapper.findMerchantIdListByProduct(coupon.getId(), coupon.getTenantId()); + if(!couponMerchantIds.contains(fixMerchantId)){ + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_EQUAL.getCode(),premsg+"预约商户不匹配"); + } + WxMerchant merchant = wxMerchantMapper.selectById(fixMerchantId); + if(merchant == null){ + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),premsg+"预约商户未找到"); + } + JSONObject extJson = new JSONObject(); + extJson.put("fixMerchantId",fixMerchantId); + extJson.put("fixMerchantName",merchant.getName()); + orderComposeSaveDto.setExtParam(extJson.toJSONString()); + } //判断是否是拼团订单,如果是拼团订单,判断现在进行中的,和已完成的数量是否超出券的限制 if (coupon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) { diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/v2/miniApp/TtMiniAppPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/v2/miniApp/TtMiniAppPayAdapterService.java index 5768d370b..aa861d0ba 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/v2/miniApp/TtMiniAppPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/v2/miniApp/TtMiniAppPayAdapterService.java @@ -71,111 +71,109 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen public PayAdapterResult pay(WxPayAccount payAccount,WxPayOrder record,WxComposeOrder composeOrder,List childOrders, String productName,WxAppinfo appInfo,Date currentDate, PayExtraParam params,boolean isFreezen) throws Exception { //抖音支付1.0,已经不再支持 - if(true){ - throw new MallinkException(ErrorCode.SYS_AUTH_ERROR.getCode(),"请升级抖音版本"); - } - - //todo 去掉抖音低版本兼容 - if(!record.isCreatPay()){ - if(StringUtils.isBlank(record.getPayParam())){ - throw new MallinkException(ErrorCode.SYS_AUTH_ERROR.getCode(),"请升级抖音版本"); - } - record.setUpdateTime(new Date()); - PayAdapterResult par = new PayAdapterResult(); - par.setSuccess(true); - par.setTransactionId(record.getTransactionId()); - par.setData(JSONObject.parseObject(record.getPayParam())); - return par; - } - if (null == params ) { - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"openId为空"); - } - String openId = (String) params.getValue("openId"); - if (StringUtils.isBlank(openId) ) { - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"openId为空"); - } - -// throw new Exception("请升级抖音版本"); - - // 新下单接口 - TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount); - TtPayUnifiedOrderV2Request request = new TtPayUnifiedOrderV2Request(); - List goods = new ArrayList<>(); - - OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(record.getComposeOrder()); - List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); - - if(orderList.size() > 1){ - //todo 暂无多订单 - throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"数据异常"); - } + throw new MallinkException(ErrorCode.SYS_AUTH_ERROR.getCode(),"请升级抖音版本"); - WxOrder order = orderList.get(0); - - TtPayUnifiedOrderV2Request.Good good = new TtPayUnifiedOrderV2Request.Good(); - good.setQuantity(order.getCouponNumber()); - WxCouponChannel couponChannel = wxCouponChannelMapper.selectById(order.getCouponChannelId(), order.getTenantId()); - good.setGoodsId(couponChannel.getTtSpuId()); - good.setGoodsIdType(1);//poi商品固定传1 - if (EnumPayMchType.DIRECT.getCode().equals(record.getMchType())) { - WxComposeChildOrderShare childOrderShare = record.getChildOrderShare(order.getId()); - good.setMerchantUid(childOrderShare.getMerchantUid()); - } - goods.add(good); - - request.setGoodsList(goods); - request.setTotalAmount(composeOrder.getPayment()); - request.setOpenId(openId); - request.setOutOrderNo(record.getPayOrderNo()); - request.setPayExpireSeconds(14*60); - TtPayUnifiedOrderV2Request.PageEntry pageEntry = new TtPayUnifiedOrderV2Request.PageEntry(); - pageEntry.setPath(Constant.mainPageUrl); - Map paramMap = new HashMap<>(); - paramMap.put("type","dt"); - paramMap.put("tenantId",composeOrder.getTenantId()); - paramMap.put("orderId",composeOrder.getMainOrderId().toString()); - pageEntry.setParams(JSON.toJSONString(paramMap)); - request.setOrderEntrySchema(pageEntry); - - request.setCpExtra(getCallbackData(record)); - - TtPayUnifiedOrderV2Result orderV2 = ttPayService.createOrderV2(request); - - if(orderV2.getItemOrderInfoList().size() > 1){ - throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"数据异常"); - } - TtPayUnifiedOrderV2Result.ItemOrderInfo itemOrderInfo = orderV2.getItemOrderInfoList().get(0); - if(itemOrderInfo.getItemOrderDetail().size() > 1){ - throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"数据异常"); - } - - JSONObject allExtParam = new JSONObject(); - allExtParam.put("order_id",orderV2.getOrderId()); - allExtParam.put("total_amount",composeOrder.getPayment()); - allExtParam.put("open_id",openId); - WxBatchOrder batchOrder = new WxBatchOrder(); - batchOrder.updateTenantInfo(appInfo); - batchOrder.setId(composeOrder.getMainOrderId()); - batchOrder.setExtParam(JSON.toJSONString(allExtParam)); - wxBatchOrderMapper.updateById(batchOrder); - - WxOrder updOrder = new WxOrder(); - updOrder.updateTenantInfo(order); - updOrder.setId(order.getId()); - updOrder.setExtParam(JSON.toJSONString(itemOrderInfo.getItemOrderDetail().get(0))); - wxOrderMapper.updateById(updOrder); - - orderV2.setItemOrderInfoList(null); -// record.setPrepayId(orderV2.getPayOrderId()); - record.setPayParam(JSON.toJSONString(orderV2)); - record.setTransactionId(orderV2.getOrderId()); - record.setUpdateTime(new Date()); - - PayAdapterResult par = new PayAdapterResult(); - par.setSuccess(true); - par.setTransactionId(orderV2.getOrderId()); - par.setData(orderV2); - return par; +// //todo 去掉抖音低版本兼容 +// if(!record.isCreatPay()){ +// if(StringUtils.isBlank(record.getPayParam())){ +// throw new MallinkException(ErrorCode.SYS_AUTH_ERROR.getCode(),"请升级抖音版本"); +// } +// record.setUpdateTime(new Date()); +// PayAdapterResult par = new PayAdapterResult(); +// par.setSuccess(true); +// par.setTransactionId(record.getTransactionId()); +// par.setData(JSONObject.parseObject(record.getPayParam())); +// return par; +// } +// if (null == params ) { +// throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"openId为空"); +// } +// String openId = (String) params.getValue("openId"); +// if (StringUtils.isBlank(openId) ) { +// throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"openId为空"); +// } +// +//// throw new Exception("请升级抖音版本"); +// +// // 新下单接口 +// TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount); +// TtPayUnifiedOrderV2Request request = new TtPayUnifiedOrderV2Request(); +// List goods = new ArrayList<>(); +// +// OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(record.getComposeOrder()); +// List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); +// +// if(orderList.size() > 1){ +// //todo 暂无多订单 +// throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"数据异常"); +// } +// +// WxOrder order = orderList.get(0); +// +// TtPayUnifiedOrderV2Request.Good good = new TtPayUnifiedOrderV2Request.Good(); +// good.setQuantity(order.getCouponNumber()); +// WxCouponChannel couponChannel = wxCouponChannelMapper.selectById(order.getCouponChannelId(), order.getTenantId()); +// good.setGoodsId(couponChannel.getTtSpuId()); +// good.setGoodsIdType(1);//poi商品固定传1 +// if (EnumPayMchType.DIRECT.getCode().equals(record.getMchType())) { +// WxComposeChildOrderShare childOrderShare = record.getChildOrderShare(order.getId()); +// good.setMerchantUid(childOrderShare.getMerchantUid()); +// } +// goods.add(good); +// +// request.setGoodsList(goods); +// request.setTotalAmount(composeOrder.getPayment()); +// request.setOpenId(openId); +// request.setOutOrderNo(record.getPayOrderNo()); +// request.setPayExpireSeconds(14*60); +// TtPayUnifiedOrderV2Request.PageEntry pageEntry = new TtPayUnifiedOrderV2Request.PageEntry(); +// pageEntry.setPath(Constant.mainPageUrl); +// Map paramMap = new HashMap<>(); +// paramMap.put("type","dt"); +// paramMap.put("tenantId",composeOrder.getTenantId()); +// paramMap.put("orderId",composeOrder.getMainOrderId().toString()); +// pageEntry.setParams(JSON.toJSONString(paramMap)); +// request.setOrderEntrySchema(pageEntry); +// +// request.setCpExtra(getCallbackData(record)); +// +// TtPayUnifiedOrderV2Result orderV2 = ttPayService.createOrderV2(request); +// +// if(orderV2.getItemOrderInfoList().size() > 1){ +// throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"数据异常"); +// } +// TtPayUnifiedOrderV2Result.ItemOrderInfo itemOrderInfo = orderV2.getItemOrderInfoList().get(0); +// if(itemOrderInfo.getItemOrderDetail().size() > 1){ +// throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"数据异常"); +// } +// +// JSONObject allExtParam = new JSONObject(); +// allExtParam.put("order_id",orderV2.getOrderId()); +// allExtParam.put("total_amount",composeOrder.getPayment()); +// allExtParam.put("open_id",openId); +// WxBatchOrder batchOrder = new WxBatchOrder(); +// batchOrder.updateTenantInfo(appInfo); +// batchOrder.setId(composeOrder.getMainOrderId()); +// batchOrder.setExtParam(JSON.toJSONString(allExtParam)); +// wxBatchOrderMapper.updateById(batchOrder); +// +// WxOrder updOrder = new WxOrder(); +// updOrder.updateTenantInfo(order); +// updOrder.setId(order.getId()); +// updOrder.setExtParam(JSON.toJSONString(itemOrderInfo.getItemOrderDetail().get(0))); +// wxOrderMapper.updateById(updOrder); +// +// orderV2.setItemOrderInfoList(null); +//// record.setPrepayId(orderV2.getPayOrderId()); +// record.setPayParam(JSON.toJSONString(orderV2)); +// record.setTransactionId(orderV2.getOrderId()); +// record.setUpdateTime(new Date()); +// +// PayAdapterResult par = new PayAdapterResult(); +// par.setSuccess(true); +// par.setTransactionId(orderV2.getOrderId()); +// par.setData(orderV2); +// return par; // // diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 8cdfbeb0f..a2b7e2f7d 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -364,6 +364,13 @@ + + and id in + + #{couponIdsItem} + + + order by ${sortColumns} diff --git a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml index cb174f551..d30bf5f10 100644 --- a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml @@ -351,4 +351,10 @@ GROUP BY credit.`c_user_id` - + + +