diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java b/mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java index a303f45ff..9c7937a22 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java @@ -8,6 +8,7 @@ import java.util.Date; import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.base.TenantEntity; import com.iformall.shiro.UserSession; +import com.iformall.utils.Constant; import com.iformall.utils.IPUtil; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxBrandController.java b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxBrandController.java index bcbc18009..8ac33d2bc 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxBrandController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxBrandController.java @@ -2,6 +2,8 @@ package com.iformall.controller.basic; import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; +import com.iformall.annotation.TenantIgnore; +import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; @@ -49,7 +51,7 @@ public class WxBrandController extends BaseController { if (null == wxBrand) { wxBrand = new WxBrand(); } - wxBrand.updateTenantInfo(getTenantInfo()); + wxBrand.setTenantId(getTenantInfo().getFinalTenantId()); wxBrand.setSortColumns(BaseEntity.SortField.Id_DESC); final PageInfo page = wxBrandService.listAsPage(wxBrand, pageNum, pageSize); return new ResultData(page); @@ -59,20 +61,24 @@ public class WxBrandController extends BaseController { @SystemControllerLog(description = "品牌-增加") public ResultData add(@RequestBody WxBrand wxBrand) { logger.debug("[" + getIpAddr() + "] WxBrandController::add"); - wxBrand.updateTenantInfo(getTenantInfo()); + wxBrand.setTenantId(getTenantInfo().getFinalTenantId()); return wxBrandService.save(wxBrand); } + @TenantIgnore @PostMapping("update") @SystemControllerLog(description = "品牌-更新") public ResultData update(@RequestBody WxBrand wxBrand) { logger.debug("[" + getIpAddr() + "] WxBrandController::update"); - wxBrand.updateTenantInfo(getTenantInfo()); + + if(wxBrand.getId() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } if(EnumDelFlag.YES.getCode().equals(wxBrand.getIsDel())){ //判断是否解绑商户 WxMerchant wxMerchant = new WxMerchant(); - wxMerchant.updateTenantInfo(wxBrand); +// wxMerchant.updateTenantInfo(wxBrand); wxMerchant.setIsDel(EnumYesOrNo.NO.getCode()); wxMerchant.setBrand(wxBrand.getId()); @@ -118,10 +124,10 @@ public class WxBrandController extends BaseController { public ResultData hasBrand(String name, Long id) { logger.debug("[" + getIpAddr() + "] WxBrandController::hasBrand"); WxBrand wxBrand = new WxBrand(); - wxBrand.updateTenantInfo(getTenantInfo()); + wxBrand.setId(id); + wxBrand.setTenantId(getTenantInfo().getFinalTenantId()); wxBrand.setName(name); - wxBrand.setId(id); return wxBrandService.hasBrand(wxBrand); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMallController.java b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMallController.java index 67a6ac3a9..d1956a918 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMallController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMallController.java @@ -23,6 +23,7 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.IOException; +import java.util.List; @RestController @RequestMapping("wxMall") @@ -66,6 +67,23 @@ public class WxMallController extends BaseController { return new ResultData(mall); } + @ApiOperation("查询当前mall的子广场") + @GetMapping("/childMall") + @SystemControllerLog(description = "商城-当前查询") + public ResultData childMall() { + logger.debug("[" + getIpAddr() + "] WxMallController::childMall"); + WxMall mall = wxMallService.getByTenantInfo(getUser()); + if(mall == null) { + logger.error("未配置相应的mall"); + return new ResultData(Result.ERROR, "未配置相应的mall"); + } + if (wxMallService.isgroupSupport(mall)) { + List childMall = wxMallService.getSubByParentTenantId(mall.getTenantId()); + return new ResultData(childMall); + } + return new ResultData(Result.ERROR, "未查询到子广场"); + } + @ApiOperation("验证码") @GetMapping("/imgUrlH") public ResultData imgUrlH(){ diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java index c19975d8d..c9eced3e8 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java @@ -107,6 +107,26 @@ public class WxMerchantController extends BaseController { return new ResultData(page); } + @TenantIgnore + @ApiOperation("分页列表接口") + @GetMapping("parentList") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true), + }) + @SystemControllerLog(description = "商户-列表") + public ResultData parentList(@ModelAttribute WxMerchant wxMerchant, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxMerchantController::parentList"); + if (null == wxMerchant) wxMerchant = new WxMerchant(); + String tenantId = getUser().getTenantId(); +// wxMerchant.updateTenantInfo(getTenantInfo()); + wxMerchant.setParentTenantId(tenantId); + wxMerchant.setSortColumns(BaseEntity.SortField.TopTime_DESC); + wxMerchant.setIsPrivate(EnumYesOrNo.NO.getCode()); + final PageInfo page = wxMerchantService.listAsPage(wxMerchant, pageNum, pageSize); + return new ResultData(page); + } + @ApiOperation("获取商管商户") @GetMapping("adminMerchantOne") @SystemControllerLog(description = "商户-列表") diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxProjectConfigController.java b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxProjectConfigController.java index 268e9f51a..8b87e0b01 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxProjectConfigController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxProjectConfigController.java @@ -118,6 +118,24 @@ public class WxProjectConfigController extends BaseController { // // } + @ApiOperation("查询商场集团列表") + @GetMapping(value = "/childMallList") + @SystemControllerLog(description = "商场基础数据") + @TenantIgnore + public ResultData childMallList(@ModelAttribute WxMall wxMall, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxProjectConfigController::getMallList"); + try { + if(wxMall == null){ + wxMall = new WxMall(); + } + wxMall.setParentTenantId(this.getTenantInfo().getTenantId()); + PageInfo page = wxMallService.listAsPage(wxMall, pageNum, pageSize); + return new ResultData(page); + }catch (Exception e){ + logger.error(e.getMessage(),e); + return new ResultData(ErrorCode.SYS_SERVER_ERROR); + } + } @ApiOperation("查询商场集团列表") @GetMapping(value = "/mallList") @@ -154,7 +172,7 @@ public class WxProjectConfigController extends BaseController { tenantEntity.setTenantId(wxMall.getId().toString()); WxMall parentWxMall = wxMallService.getByTenantInfo(tenantEntity); - if(parentWxMall == null || !EnumSaleType.GROUP.getCode().equals(parentWxMall.getSaleType()) + if(parentWxMall == null || !parentWxMall.getGroupSupport().equals(EnumGroupSupport.SUPPORT.getCode()) || StringUtils.isNotBlank(parentWxMall.getParentTenantId())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); @@ -177,7 +195,8 @@ public class WxProjectConfigController extends BaseController { logger.debug("[" + getIpAddr() + "] WxProjectConfigController::initMall"); try { //集团版 - if(EnumSaleType.GROUP.getCode().equals(wxMall.getSaleType())){ + if(EnumSaleType.GROUP.getCode().equals(wxMall.getSaleType()) + || EnumSaleType.GROUP_v1.getCode().equals(wxMall.getSaleType())){ wxMall.setGroupSupport(EnumGroupSupport.SUPPORT.getCode()); }else{ wxMall.setGroupSupport(EnumGroupSupport.NOT_SUPPORT.getCode()); @@ -249,9 +268,9 @@ public class WxProjectConfigController extends BaseController { if(StringUtils.isBlank(wxPayAccount.getNotifyUrl())){ wxPayAccount.setNotifyUrl(wechatWebProperties.getUrl()+"/wxPay/notify"); } - if(StringUtils.isBlank(wxPayAccount.getCertPath())){ - wxPayAccount.setCertPath("/opt/iformall/service/apiclient_cert.p12"); - } +// if(StringUtils.isBlank(wxPayAccount.getCertPath())){ +// wxPayAccount.setCertPath("/opt/iformall/service/apiclient_cert.p12"); +// } if(wxPayAccount.getType() == null){ wxPayAccount.setType(1);//0:普通商户模式, 1:服务商模式(默认服务商模式) } @@ -366,7 +385,8 @@ public class WxProjectConfigController extends BaseController { if(byId == null){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"未找到小程序"); } - if(!EnumAppType.B.getCode().equals(byId.getType()) && !EnumAppType.C.getCode().equals(byId.getType())){ + if(!EnumAppType.B.getCode().equals(byId.getType()) + && !EnumAppType.C.getCode().equals(byId.getType())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"小程序类型不支持"); } if(wxAppinfo.getEnable() == null || @@ -801,14 +821,15 @@ public class WxProjectConfigController extends BaseController { public ResultData ttcallbackQuerySettings(String appid) { logger.debug("[" + getIpAddr() + "] WxProjectConfigController::ttcallbackQuerySettings"); try { - WxAppinfo appinfo = wxAppinfoService.getByAppId(appid); + WxAppinfo appinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appid); if(appinfo == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到对应的小程序"); } - if(!EnumAppPlat.TOUTIAO.getCode().equals(appinfo.getPlat()) || !EnumAppType.C.getCode().equals(appinfo.getType())){ + if(!EnumAppPlat.TOUTIAO.getCode().equals(appinfo.getPlat()) + || !EnumAppType.C.getCode().equals(appinfo.getType())){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该小程序不支持"); } - WxPayAccount payAccount = wxPayAccountService.getById(appinfo.getPayId()); + WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appinfo.getPayId()); if(payAccount == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到对应的支付数据"); } @@ -836,14 +857,15 @@ public class WxProjectConfigController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } try { - WxAppinfo appinfo = wxAppinfoService.getByAppId(appid); + WxAppinfo appinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appid); if(appinfo == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到对应的小程序"); } - if(!EnumAppPlat.TOUTIAO.getCode().equals(appinfo.getPlat()) || !EnumAppType.C.getCode().equals(appinfo.getType())){ + if(!EnumAppPlat.TOUTIAO.getCode().equals(appinfo.getPlat()) + || !EnumAppType.C.getCode().equals(appinfo.getType())){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该小程序不支持"); } - WxPayAccount payAccount = wxPayAccountService.getById(appinfo.getPayId()); + WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appinfo.getPayId()); if(payAccount == null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到对应的支付数据"); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java index 61f5ffd99..cabdd4b35 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/TtCouponGoodsController.java @@ -1,6 +1,7 @@ package com.iformall.controller.market; import com.iformall.annotation.SystemControllerLog; +import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; @@ -41,54 +42,54 @@ public class TtCouponGoodsController extends BaseController { @Autowired private TtGoodsCategoryService ttGoodsCategoryService; - @ApiOperation("分页列表接口") - @GetMapping("couponList") - @ApiImplicitParams({ - @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), - @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - @SystemControllerLog(description = "-列表") - public ResultData couponList(@ModelAttribute TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { - logger.debug("[" + getIpAddr() + "] WxCouponController::couponList"); - if (ttCouponVo == null) ttCouponVo = new TtCouponVo(); - ttCouponVo.updateTenantInfo(getTenantInfo()); - ttCouponVo.setType(EnumCouponType.COUPON_DOUYIN.getCode()); - if(StringUtils.isNotBlank(ttCouponVo.getSortColumn())){ - String coryColumn = "c."+ttCouponVo.getSortColumns(); - ttCouponVo.setSortColumns(coryColumn); - ttCouponVo.setSortColumn(null); - }else{ - ttCouponVo.setSortColumns(BaseEntity.SortField.CCreateDate_DESC, BaseEntity.SortField.CId_DESC); - } - if (ttCouponVo.getStatus() != null && ttCouponVo.getStatus() == -1) - ttCouponVo.setStatus(null); - return ttCouponGoodsService.couponList(ttCouponVo, pageNum, pageSize); - } - - @ApiOperation("分页列表接口") - @GetMapping("channelList") - @ApiImplicitParams({ - @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), - @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - @SystemControllerLog(description = "-列表") - public ResultData channelList(@ModelAttribute TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize) { - logger.debug("[" + getIpAddr() + "] WxCouponController::channelList"); - if (ttChannelVo == null) ttChannelVo = new TtCouponChannelVo(); - ttChannelVo.updateTenantInfo(getTenantInfo()); - ttChannelVo.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); - if(null == ttChannelVo.getSourceType()){ - ttChannelVo.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); - } - - if(StringUtils.isNotBlank(ttChannelVo.getSortColumn())){ - String coryColumn = "cc."+ttChannelVo.getSortColumns(); - ttChannelVo.setSortColumns(coryColumn); - ttChannelVo.setSortColumn(null); - }else{ - ttChannelVo.setSortColumns(BaseEntity.SortField.CCUpdateDate_DESC); - } - - return ttCouponGoodsService.channelList(ttChannelVo, pageNum, pageSize); - } +// @ApiOperation("分页列表接口") +// @GetMapping("couponList") +// @ApiImplicitParams({ +// @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), +// @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) +// @SystemControllerLog(description = "-列表") +// public ResultData couponList(@ModelAttribute TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { +// logger.debug("[" + getIpAddr() + "] WxCouponController::couponList"); +// if (ttCouponVo == null) ttCouponVo = new TtCouponVo(); +// ttCouponVo.updateTenantInfo(getTenantInfo()); +// ttCouponVo.setType(EnumCouponType.COUPON_DOUYIN.getCode()); +// if(StringUtils.isNotBlank(ttCouponVo.getSortColumn())){ +// String coryColumn = "c."+ttCouponVo.getSortColumns(); +// ttCouponVo.setSortColumns(coryColumn); +// ttCouponVo.setSortColumn(null); +// }else{ +// ttCouponVo.setSortColumns(BaseEntity.SortField.CCreateDate_DESC, BaseEntity.SortField.CId_DESC); +// } +// if (ttCouponVo.getStatus() != null && ttCouponVo.getStatus() == -1) +// ttCouponVo.setStatus(null); +// return ttCouponGoodsService.couponList(ttCouponVo, pageNum, pageSize); +// } +// +// @ApiOperation("分页列表接口") +// @GetMapping("channelList") +// @ApiImplicitParams({ +// @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), +// @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) +// @SystemControllerLog(description = "-列表") +// public ResultData channelList(@ModelAttribute TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize) { +// logger.debug("[" + getIpAddr() + "] WxCouponController::channelList"); +// if (ttChannelVo == null) ttChannelVo = new TtCouponChannelVo(); +// ttChannelVo.updateTenantInfo(getTenantInfo()); +// ttChannelVo.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); +// if(null == ttChannelVo.getSourceType()){ +// ttChannelVo.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); +// } +// +// if(StringUtils.isNotBlank(ttChannelVo.getSortColumn())){ +// String coryColumn = "cc."+ttChannelVo.getSortColumns(); +// ttChannelVo.setSortColumns(coryColumn); +// ttChannelVo.setSortColumn(null); +// }else{ +// ttChannelVo.setSortColumns(BaseEntity.SortField.CCUpdateDate_DESC); +// } +// +// return ttCouponGoodsService.channelList(ttChannelVo, pageNum, pageSize); +// } @ApiOperation("根据类目获取商品模板") @GetMapping("getTemplate") @@ -119,6 +120,7 @@ public class TtCouponGoodsController extends BaseController { } + @TenantIgnore @ApiOperation("提交审核") @PostMapping("product/save") @SystemControllerLog(description = "提交审核") diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java index b94a8ed31..ad7cada00 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java @@ -3,6 +3,7 @@ package com.iformall.controller.market; import com.alibaba.fastjson.JSON; import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; +import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; @@ -128,6 +129,7 @@ public class WxCouponChannelController extends BaseController { return new ResultData(Result.SUCCESS, "查询成功", wxCouponChannelService.getById(id,getTenantInfo().getTenantId())); } + @TenantIgnore @ApiOperation("批量新增") @PostMapping("/addbatch") @SystemControllerLog(description = "券投放-批量新增") diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index c4065cc9d..838f2c9e1 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -55,6 +55,8 @@ public class WxCouponController extends BaseController { @Autowired private WxMallService wxMallService; @Autowired + private WxCouponMallService wxCouponMallService; + @Autowired RedisLock redisLock; @Autowired @@ -66,39 +68,55 @@ public class WxCouponController extends BaseController { @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - @SystemControllerLog(description = "券投放-列表") - public ResultData list(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize,Integer dataType,Boolean isList) { + public ResultData list(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize,Boolean isList) { logger.debug("[" + getIpAddr() + "] WxCouponController::list"); if (wxCoupon == null) wxCoupon = new WxCoupon(); - if(null != dataType && dataType == 1){ - wxCoupon.updateTenantInfo(getTenantInfo()); - }else{ - wxCoupon.updateTenantInfo(getTenantInfo()); - } + wxCoupon.updateTenantInfo(getTenantInfo()); + return couponList(wxCoupon, pageNum, pageSize, isList); + } + + @TenantIgnore + @ApiOperation("父券分页列表接口") + @GetMapping("parentCouponList") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData parentCouponList(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize,Boolean isList) { + logger.debug("[" + getIpAddr() + "] WxCouponController::list"); + if (wxCoupon == null) wxCoupon = new WxCoupon(); + TenantEntity mallTenantEntity = getTenantInfo(); + wxCoupon.setTenantId(mallTenantEntity.getParentTenantId()); + wxCoupon.setParentTenantId(null); + //平台券 + if (EnumCouponType.COUPON_DOUYIN_PLAT.getCode() == wxCoupon.getType()) { + //查询已经分配了的parentCouponList + WxCouponMall couponMall = new WxCouponMall(); + couponMall.updateTenantInfo(wxCoupon); + couponMall.setMallTenantId(mallTenantEntity.getTenantId()); + List couponIds = wxCouponMallService.listCouponIds(couponMall); + if (null != couponIds && couponIds.size() > 0 ) { + wxCoupon.setIds(couponIds); + }else { + wxCoupon.setId(-1L); + } + } + return couponList(wxCoupon, pageNum, pageSize, isList); + } + + private ResultData couponList(WxCoupon wxCoupon, Integer pageNum, Integer pageSize,Boolean isList) { + //默认A端建券 if(null == wxCoupon.getSourceType()){ wxCoupon.setSourceType(EnumCouponSourceType.COUPONSource_Admin.getCode()); } + //排序处理 if(StringUtils.isNotBlank(wxCoupon.getSortColumn())){ String coryColumn = "c."+wxCoupon.getSortColumns(); wxCoupon.setSortColumns(coryColumn); wxCoupon.setSortColumn(null); } - if(wxCoupon.getTargetAd() != null ){ - if(wxCoupon.getTargetAd() == EnumCouponChannelType.COUPON_CHANNEL_ID_TIMED.getCode() - || wxCoupon.getTargetAd() == EnumCouponChannelType.COUPON_CHANNEL_ID_GAME.getCode()){ - Integer[] typeArray = { - EnumCouponType.COUPON_MANJIAN.getCode(), - EnumCouponType.COUPON_DAIJIN.getCode(), - EnumCouponType.COUPON_LIPIN.getCode(), - EnumCouponType.COUPON_TINGCHE.getCode(), - EnumCouponType.COUPON_MULTIMCH.getCode(), - EnumCouponType.COUPON_DOUYIN.getCode()}; - - wxCoupon.setTypes(Arrays.asList(typeArray)); - } - } - if(!(isList == null?false:isList) && wxCoupon.getSendType() == null){ + //isList true 查全部 / 否则 只查询主动领取和定向投放的。 + if(wxCoupon.getSendType() == null && !(isList == null?false:isList)){ Integer[] sendTypeArray = { EnumCouponSendType.ACTIVE.getCode(), EnumCouponSendType.PASSIVE.getCode(),}; @@ -145,6 +163,7 @@ public class WxCouponController extends BaseController { return wxCouponService.list(wxCoupon,wxCoupon, pageNum, pageSize); //全列表 } + @TenantIgnore @ApiOperation("新增接口") @PostMapping("add") @SystemControllerLog(description = "券投放-新增") @@ -176,6 +195,7 @@ public class WxCouponController extends BaseController { return resultData; } + @TenantIgnore @ApiOperation("根据id更新接口") @PostMapping("update") @SystemControllerLog(description = "券投放-更新") @@ -395,13 +415,26 @@ public class WxCouponController extends BaseController { return new ResultData(Result.SUCCESS, "删除成功", null); } + @TenantIgnore @ApiOperation("根据id查询接口") @GetMapping("/findById") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) @SystemControllerLog(description = "券投放-查询") public ResultData findById(@RequestParam Long id) { logger.debug("[" + getIpAddr() + "] WxCouponController::findById"); - return new ResultData(wxCouponService.getVoById(id,getTenantInfo().getTenantId())); + TenantEntity tenantEntity = getTenantInfo(); + return new ResultData(wxCouponService.getVoById(id,tenantEntity.getTenantId(),tenantEntity)); + } + + @TenantIgnore + @ApiOperation("根据id查询接口") + @GetMapping("/findParentCouponById") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + @SystemControllerLog(description = "券投放-查询") + public ResultData findParentCouponById(@RequestParam Long id) { + logger.debug("[" + getIpAddr() + "] WxCouponController::findById"); + TenantEntity tenantEntity = getTenantInfo(); + return new ResultData(wxCouponService.getVoById(id,getTenantInfo().getParentTenantId(),tenantEntity)); } @TenantIgnore @@ -572,5 +605,135 @@ public class WxCouponController extends BaseController { CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); return result; } + + @ApiOperation("集团查询:查询平台券商场列表") + @GetMapping("/getPlatMallList") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + public ResultData getPlatMallList(@RequestParam Long id) { + WxCouponMall wxCouponMall = new WxCouponMall(); + wxCouponMall.updateTenantInfo(getTenantInfo()); + wxCouponMall.setProductId(id); + return new ResultData(wxCouponMallService.list(wxCouponMall,true)); + } + + @TenantIgnore + @ApiOperation("平台券商场列表") + @GetMapping("/getCouponMall") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)}) + public ResultData getCouponMall(Long id) { + //如果是集团查询,则查询所有的,如果是商场查询,则只查询商场的 + WxCouponMall wxCouponMall = new WxCouponMall(); + TenantEntity tenantEntity = getTenantInfo(); + if (null == tenantEntity.getParentTenantId()) { + wxCouponMall.updateTenantInfo(tenantEntity); + wxCouponMall.setProductId(id); + }else { + wxCouponMall.setTenantId(tenantEntity.getParentTenantId()); + //一个商场,每个平台券只有一条记录 + wxCouponMall.setMallTenantId(tenantEntity.getTenantId()); + wxCouponMall.setProductId(id); + } + List mallList= wxCouponMallService.list(wxCouponMall,false); + if (null != mallList && mallList.size() > 0 ) { + boolean isComplete = true; + for (int i = 0 ; i < mallList.size(); i ++) { + WxCouponMall cm = mallList.get(i); + if (EnumCouponMallStatus.UNFINISED.getCode() == cm.getStatus()) { + isComplete = false; + break; + } + } + if (isComplete) { + return new ResultData("{\"isCompleted\":1}"); + }else { + return new ResultData("{\"isCompleted\":0}"); + } + }else { + return new ResultData("{\"isCompleted\":0}"); + } + } + + @TenantIgnore + @ApiOperation("商场设置平台券商户") + @PostMapping("/setParentCouponMerchants") + public ResultData setMallMerchants(@RequestBody WxCoupon wxCoupon) { + try { + wxCouponService.setParentCouponMallMerchants(getTenantInfo(),wxCoupon); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + return new ResultData(); + } + + @ApiOperation("自己券商户是否自动分账") + @PostMapping("/couponMerchantAutoShare") + public ResultData couponMerchantAutoShare(@RequestBody WxCoupon wxCoupon) { + wxCoupon.updateTenantInfo(getTenantInfo()); + try { + Map map = wxCouponService.couponMerchantAutoShare(wxCoupon,wxCoupon); + return new ResultData(map); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + + } + + @TenantIgnore + @ApiOperation("父券商户是否自动分账") + @PostMapping("/parentCouponMerchantAutoShare") + public ResultData parentCouponMerchantAutoShare(@RequestBody WxCoupon wxCoupon) { + TenantEntity tenantEntity = getTenantInfo(); + wxCoupon.setTenantId(tenantEntity.getParentTenantId()); + wxCoupon.setParentTenantId(null); + try { + Map map = wxCouponService.couponMerchantAutoShare(tenantEntity,wxCoupon); + return new ResultData(map); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + + } + + @TenantIgnore + @ApiOperation("商场设置平台券已完成") + @PostMapping("/setPlatCouponFinished") + public ResultData setPlatCouponFinished(@RequestBody WxCoupon wxCoupon) { + try { + TenantEntity tenantEntity = getTenantInfo(); + String mallTenantId = tenantEntity.getTenantId(); + String tenantId = tenantEntity.getTenantId(); + if (null != tenantEntity.getParentTenantId()) { + tenantId = tenantEntity.getParentTenantId(); + } + wxCouponMallService.finised(tenantId, wxCoupon.getId(), mallTenantId); + return new ResultData(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + + } + + @TenantIgnore + @ApiOperation("商场设置平台券未完成") + @PostMapping("/setPlatCouponUnFinished") + public ResultData setPlatCouponUnFinished(@RequestBody WxCoupon wxCoupon) { + try { + if (null == wxCoupon.getType()) { + return new ResultData(Result.ERROR,"缺少参数"); + } + TenantEntity tenantEntity = getTenantInfo(); + String mallTenantId = tenantEntity.getTenantId(); + String tenantId = tenantEntity.getTenantId(); + if (null != tenantEntity.getParentTenantId()) { + tenantId = tenantEntity.getParentTenantId(); + } + wxCouponMallService.unfinised(tenantId, wxCoupon.getId(),wxCoupon.getType(), mallTenantId); + return new ResultData(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + + } } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderController.java index e32a132ef..cf746d2ab 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponOrderController.java @@ -2,11 +2,13 @@ package com.iformall.controller.market; import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; +import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCouponOrder; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxCouponOrderBVo; import com.iformall.enums.EnumAppType; import com.iformall.enums.EnumPayType; @@ -44,14 +46,13 @@ public class WxCouponOrderController extends BaseController { @Autowired private WxAppinfoService wxAppinfoService; + @TenantIgnore @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - @SystemControllerLog(description = "券包-列表") public ResultData list(@ModelAttribute WxCouponOrderBVo wxCouponOrder, Integer pageNum, Integer pageSize) { - logger.debug("[" + getIpAddr() + "] WxCouponOrderController::list"); if (wxCouponOrder == null) wxCouponOrder = new WxCouponOrderBVo(); wxCouponOrder.updateTenantInfo(getTenantInfo()); if (wxCouponOrder.getMerchantName() != null && @@ -60,13 +61,31 @@ public class WxCouponOrderController extends BaseController { } return wxCouponOrderService.listAdminAsPage(wxCouponOrder, pageNum, pageSize); } + + @TenantIgnore + @ApiOperation("子商场查询集团券核销分页列表接口") + @GetMapping("groupList") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData groupList(@ModelAttribute WxCouponOrderBVo wxCouponOrder, Integer pageNum, Integer pageSize) { + if (wxCouponOrder == null) wxCouponOrder = new WxCouponOrderBVo(); + TenantEntity mallTenantEntity = getTenantInfo(); + wxCouponOrder.setTenantId(mallTenantEntity.getParentTenantId()); + if (wxCouponOrder.getMerchantName() != null && + wxCouponOrder.getMerchantName().isEmpty()) { + wxCouponOrder.setMerchantName(null); + } + wxCouponOrder.setBTenantId(mallTenantEntity.getTenantId()); + return wxCouponOrderService.listAdminAsPage(wxCouponOrder, pageNum, pageSize); + } + @TenantIgnore @ApiOperation(value = "卡券详情接口") @GetMapping("detail") @ApiImplicitParams({ @ApiImplicitParam(name = "couponOrderId", value = "券ID", dataType = "Long", paramType = "query", required = true) }) - @SystemControllerLog(description = "券包-卡券详情") public ResultData detail(@RequestParam("couponOrderId") Long couponOrderId) { if(couponOrderId == null) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); @@ -125,5 +144,21 @@ public class WxCouponOrderController extends BaseController { } wxCouponOrderService.exportData(false,wxCouponOrder, request, response); } + + @TenantIgnore + @GetMapping("exportGroupData") + @SystemControllerLog(description = "券订单数据-导出数据") + public void exportGroupData(@ModelAttribute WxCouponOrderBVo wxCouponOrder, HttpServletRequest request, HttpServletResponse response) { + logger.debug("[" + getIpAddr() + "] WxCouponOrderController::exportData"); + if (wxCouponOrder == null) wxCouponOrder = new WxCouponOrderBVo(); + TenantEntity mallTenantEntity = getTenantInfo(); + wxCouponOrder.setTenantId(mallTenantEntity.getParentTenantId()); + if (wxCouponOrder.getMerchantName() != null && + wxCouponOrder.getMerchantName().isEmpty()) { + wxCouponOrder.setMerchantName(null); + } + wxCouponOrder.setBTenantId(mallTenantEntity.getTenantId()); + wxCouponOrderService.exportData(false,wxCouponOrder, request, response); + } } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxProfitSharingOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxProfitSharingOrderController.java index 63d4aa213..3d32067d7 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxProfitSharingOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxProfitSharingOrderController.java @@ -2,9 +2,11 @@ package com.iformall.controller.market; import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; +import com.iformall.annotation.TenantIgnore; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.WxCUserBasicInfo; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxProfitSharingOrderQueryVo; import com.iformall.domain.vo.WxProfitSharingOrderVo; import com.iformall.service.WxProfitSharingOrderService; @@ -36,17 +38,36 @@ public class WxProfitSharingOrderController extends BaseController { @Autowired private WxProfitSharingOrderService wxProfitSharingOrderService; + @TenantIgnore @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - @SystemControllerLog(description = "分账订单-列表") public ResultData list(@ModelAttribute WxProfitSharingOrderQueryVo order, Integer pageNum, Integer pageSize) { logger.debug("[" + getIpAddr() + "] WxProfitSharingOrderController::list"); if (null == order) { order = new WxProfitSharingOrderQueryVo(); } + order.updateTenantInfo(getTenantInfo()); + final PageInfo page = wxProfitSharingOrderService.listAsPage(order, pageNum, pageSize); + return new ResultData(page); + } + + @TenantIgnore + @ApiOperation("子广场集团券核销分页列表接口") + @GetMapping("groupList") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData groupList(@ModelAttribute WxProfitSharingOrderQueryVo order, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxProfitSharingOrderController::list"); + if (null == order) { + order = new WxProfitSharingOrderQueryVo(); + } + TenantEntity mallTenantEntity = getTenantInfo(); + order.setTenantId(mallTenantEntity.getParentTenantId()); + order.setBTenantId(mallTenantEntity.getTenantId()); final PageInfo page = wxProfitSharingOrderService.listAsPage(order, pageNum, pageSize); return new ResultData(page); } @@ -62,6 +83,20 @@ public class WxProfitSharingOrderController extends BaseController { wxProfitSharingOrderService.exportData(order, request, response); } + @TenantIgnore + @ApiOperation("记录导出") + @GetMapping("/exportGroupData") + @SystemControllerLog(description = "线上自动分账记录-导出") + public void exportGroupData(@ModelAttribute WxProfitSharingOrderQueryVo order, HttpServletRequest request, HttpServletResponse response) { + if (null == order) { + order = new WxProfitSharingOrderQueryVo(); + } + TenantEntity mallTenantEntity = getTenantInfo(); + order.setTenantId(mallTenantEntity.getParentTenantId()); + order.setBTenantId(mallTenantEntity.getTenantId()); + wxProfitSharingOrderService.exportData(order, request, response); + } + @ApiOperation("交易统计") @GetMapping("/queryOrderSummary") @SystemControllerLog(description = "分账订单-交易统计") diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/sys/HomeController.java b/mallinkAdmin/src/main/java/com/iformall/controller/sys/HomeController.java index c72ecbd89..19b6c4f94 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/sys/HomeController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/sys/HomeController.java @@ -255,7 +255,7 @@ public class HomeController extends BaseController { logger.error("appid信息未提供"); return new ResultData(ErrorCode.MALL_INFO_NOT_FOUND); } - WxAppinfo appinfo = appinfoService.getByAppId(user.getTenantId()); + WxAppinfo appinfo = appinfoService.getOnlyByAppIdFromRedis(user.getTenantId()); if (appinfo == null) { logger.error("appid未找到"); return new ResultData(ErrorCode.MALL_INFO_NOT_FOUND); diff --git a/mallinkAdmin/src/main/java/com/iformall/interceptor/CurrentTenantInterceptor.java b/mallinkAdmin/src/main/java/com/iformall/interceptor/CurrentTenantInterceptor.java index aa77a078b..5bad90e4e 100644 --- a/mallinkAdmin/src/main/java/com/iformall/interceptor/CurrentTenantInterceptor.java +++ b/mallinkAdmin/src/main/java/com/iformall/interceptor/CurrentTenantInterceptor.java @@ -2,12 +2,19 @@ package com.iformall.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + +import com.alibaba.fastjson.JSONObject; +import com.iformall.domain.po.WxMall; +import com.iformall.service.WxMallService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.iformall.annotation.TenantIgnore; import com.iformall.common.TenantThreadLocal; import com.iformall.shiro.UserSession; +import com.iformall.utils.Constant; /** * 权限(Token)验证 @@ -18,11 +25,38 @@ import com.iformall.shiro.UserSession; @Component public class CurrentTenantInterceptor extends HandlerInterceptorAdapter { + @Autowired + private WxMallService wxMallService; + @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - - TenantThreadLocal.setCurrentThreadTenant((String)request.getSession().getAttribute(UserSession.tenantId), - (String)request.getSession().getAttribute(UserSession.parentTenantId)); + + //集团版中针对某一商场的业务需要传递mallTenantId + String mallTenantId = request.getHeader("mallTenantId"); + if(StringUtils.isBlank(mallTenantId)){ + mallTenantId = request.getParameter("mallTenantId"); + } + if(StringUtils.isBlank(mallTenantId)){ + try{ + String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); + mallTenantId = JSONObject.parseObject(body).getString("mallTenantId"); + }catch(Exception e){} + } + + String tenantId = null; + String parenTenantId = null; + if(StringUtils.isNotBlank(mallTenantId)){ + tenantId = mallTenantId; + WxMall mall = wxMallService.getByTenantId(tenantId); + if(StringUtils.isNotBlank(mall.getParentTenantId())){ + parenTenantId = mall.getParentTenantId(); + } + }else{ + tenantId = (String)request.getSession().getAttribute(UserSession.tenantId); + parenTenantId = (String)request.getSession().getAttribute(UserSession.parentTenantId); + } + + TenantThreadLocal.setCurrentThreadTenant(tenantId, parenTenantId); TenantIgnore annotation = null; if(handler instanceof HandlerMethod) { diff --git a/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java index bffd69cbd..ee9d2df59 100644 --- a/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java +++ b/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java @@ -22,6 +22,7 @@ public class TenantInfoImpl implements TenantInfo { "mall_permission", "mall_sale_type", "mall_user_role", + "wx_brand", "wx_channel", "wx_business", "wx_sub_business", @@ -65,6 +66,9 @@ public class TenantInfoImpl implements TenantInfo { "fengniao_map_config", "wx_c_user", "tt_c_user", + "tt_buser", + "wx_buser", + "wx_merchant_b_user", "wx_user_visit", "tt_goods_category", @@ -74,8 +78,12 @@ public class TenantInfoImpl implements TenantInfo { "wx_mall", "wx_appinfo", "wx_authorizer_info", + "wx_brand", "wx_c_user", "tt_c_user", + "tt_buser", + "wx_buser", + "wx_merchant_b_user", "wx_user_visit", "wx_c_user_car", "wx_c_user_from_b", diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022111500001__plat_coupon.sql b/mallinkAdmin/src/main/resources/db/migration/V2022111500001__plat_coupon.sql new file mode 100644 index 000000000..63cf74f69 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2022111500001__plat_coupon.sql @@ -0,0 +1,1029 @@ +CREATE TABLE `wx_coupon_mall` ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(5) NOT NULL, + `parent_tenant_id` varchar(5) DEFAULT NULL, + `product_id` bigint(20) NOT NULL, + `mall_tenant_id` varchar(5) NOT NULL, + `create_date` datetime DEFAULT NULL, + `update_date` datetime DEFAULT NULL, + `status` int(1) NOT NULL DEFAULT '0' COMMENT '0-未就绪,1-已就绪', + PRIMARY KEY (`id`), + UNIQUE KEY `UNIQUE_P_M` (`product_id`,`mall_tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +create table wx_coupon_mall_0 like wx_coupon_mall; +create table wx_coupon_mall_1 like wx_coupon_mall; +create table wx_coupon_mall_2 like wx_coupon_mall; +create table wx_coupon_mall_3 like wx_coupon_mall; +create table wx_coupon_mall_4 like wx_coupon_mall; +create table wx_coupon_mall_5 like wx_coupon_mall; +create table wx_coupon_mall_6 like wx_coupon_mall; +create table wx_coupon_mall_7 like wx_coupon_mall; +create table wx_coupon_mall_8 like wx_coupon_mall; +create table wx_coupon_mall_9 like wx_coupon_mall; +create table wx_coupon_mall_10 like wx_coupon_mall; +create table wx_coupon_mall_11 like wx_coupon_mall; +create table wx_coupon_mall_12 like wx_coupon_mall; +create table wx_coupon_mall_13 like wx_coupon_mall; +create table wx_coupon_mall_14 like wx_coupon_mall; +create table wx_coupon_mall_15 like wx_coupon_mall; +create table wx_coupon_mall_16 like wx_coupon_mall; +create table wx_coupon_mall_17 like wx_coupon_mall; +create table wx_coupon_mall_18 like wx_coupon_mall; +create table wx_coupon_mall_19 like wx_coupon_mall; +create table wx_coupon_mall_20 like wx_coupon_mall; +create table wx_coupon_mall_21 like wx_coupon_mall; +create table wx_coupon_mall_22 like wx_coupon_mall; +create table wx_coupon_mall_23 like wx_coupon_mall; +create table wx_coupon_mall_24 like wx_coupon_mall; +create table wx_coupon_mall_25 like wx_coupon_mall; +create table wx_coupon_mall_26 like wx_coupon_mall; +create table wx_coupon_mall_27 like wx_coupon_mall; +create table wx_coupon_mall_28 like wx_coupon_mall; +create table wx_coupon_mall_29 like wx_coupon_mall; +create table wx_coupon_mall_30 like wx_coupon_mall; +create table wx_coupon_mall_31 like wx_coupon_mall; +create table wx_coupon_mall_32 like wx_coupon_mall; +create table wx_coupon_mall_33 like wx_coupon_mall; +create table wx_coupon_mall_34 like wx_coupon_mall; +create table wx_coupon_mall_35 like wx_coupon_mall; +create table wx_coupon_mall_36 like wx_coupon_mall; +create table wx_coupon_mall_37 like wx_coupon_mall; +create table wx_coupon_mall_38 like wx_coupon_mall; +create table wx_coupon_mall_39 like wx_coupon_mall; +create table wx_coupon_mall_40 like wx_coupon_mall; +create table wx_coupon_mall_41 like wx_coupon_mall; +create table wx_coupon_mall_42 like wx_coupon_mall; +create table wx_coupon_mall_43 like wx_coupon_mall; +create table wx_coupon_mall_44 like wx_coupon_mall; +create table wx_coupon_mall_45 like wx_coupon_mall; +create table wx_coupon_mall_46 like wx_coupon_mall; +create table wx_coupon_mall_47 like wx_coupon_mall; +create table wx_coupon_mall_48 like wx_coupon_mall; +create table wx_coupon_mall_49 like wx_coupon_mall; +create table wx_coupon_mall_50 like wx_coupon_mall; +create table wx_coupon_mall_51 like wx_coupon_mall; +create table wx_coupon_mall_52 like wx_coupon_mall; +create table wx_coupon_mall_53 like wx_coupon_mall; +create table wx_coupon_mall_54 like wx_coupon_mall; +create table wx_coupon_mall_55 like wx_coupon_mall; +create table wx_coupon_mall_56 like wx_coupon_mall; +create table wx_coupon_mall_57 like wx_coupon_mall; +create table wx_coupon_mall_58 like wx_coupon_mall; +create table wx_coupon_mall_59 like wx_coupon_mall; +create table wx_coupon_mall_60 like wx_coupon_mall; +create table wx_coupon_mall_61 like wx_coupon_mall; +create table wx_coupon_mall_62 like wx_coupon_mall; +create table wx_coupon_mall_63 like wx_coupon_mall; +create table wx_coupon_mall_64 like wx_coupon_mall; +create table wx_coupon_mall_65 like wx_coupon_mall; +create table wx_coupon_mall_66 like wx_coupon_mall; +create table wx_coupon_mall_67 like wx_coupon_mall; +create table wx_coupon_mall_68 like wx_coupon_mall; +create table wx_coupon_mall_69 like wx_coupon_mall; +create table wx_coupon_mall_70 like wx_coupon_mall; +create table wx_coupon_mall_71 like wx_coupon_mall; +create table wx_coupon_mall_72 like wx_coupon_mall; +create table wx_coupon_mall_73 like wx_coupon_mall; +create table wx_coupon_mall_74 like wx_coupon_mall; +create table wx_coupon_mall_75 like wx_coupon_mall; +create table wx_coupon_mall_76 like wx_coupon_mall; +create table wx_coupon_mall_77 like wx_coupon_mall; +create table wx_coupon_mall_78 like wx_coupon_mall; +create table wx_coupon_mall_79 like wx_coupon_mall; +create table wx_coupon_mall_80 like wx_coupon_mall; +create table wx_coupon_mall_81 like wx_coupon_mall; +create table wx_coupon_mall_82 like wx_coupon_mall; +create table wx_coupon_mall_83 like wx_coupon_mall; +create table wx_coupon_mall_84 like wx_coupon_mall; +create table wx_coupon_mall_85 like wx_coupon_mall; +create table wx_coupon_mall_86 like wx_coupon_mall; +create table wx_coupon_mall_87 like wx_coupon_mall; +create table wx_coupon_mall_88 like wx_coupon_mall; +create table wx_coupon_mall_89 like wx_coupon_mall; +create table wx_coupon_mall_90 like wx_coupon_mall; +create table wx_coupon_mall_91 like wx_coupon_mall; +create table wx_coupon_mall_92 like wx_coupon_mall; +create table wx_coupon_mall_93 like wx_coupon_mall; +create table wx_coupon_mall_94 like wx_coupon_mall; +create table wx_coupon_mall_95 like wx_coupon_mall; +create table wx_coupon_mall_96 like wx_coupon_mall; +create table wx_coupon_mall_97 like wx_coupon_mall; +create table wx_coupon_mall_98 like wx_coupon_mall; +create table wx_coupon_mall_99 like wx_coupon_mall; + +drop table wx_coupon_mall; + + +ALTER TABLE `mallink`.`wx_coupon_order_0` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_1` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_2` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_3` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_4` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_5` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_6` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_7` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_8` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_9` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_10` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_11` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_12` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_13` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_14` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_15` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_16` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_17` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_18` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_19` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_20` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_21` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_22` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_23` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_24` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_25` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_26` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_27` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_28` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_29` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_30` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_31` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_32` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_33` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_34` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_35` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_36` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_37` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_38` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_39` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_40` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_41` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_42` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_43` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_44` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_45` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_46` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_47` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_48` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_49` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_50` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_51` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_52` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_53` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_54` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_55` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_56` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_57` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_58` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_59` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_60` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_61` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_62` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_63` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_64` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_65` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_66` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_67` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_68` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_69` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_70` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_71` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_72` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_73` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_74` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_75` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_76` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_77` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_78` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_79` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_80` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_81` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_82` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_83` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_84` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_85` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_86` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_87` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_88` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_89` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_90` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_91` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_92` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_93` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_94` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_95` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_96` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_97` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_98` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_order_99` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `b_merchant_id`; + +ALTER TABLE `mallink`.`wx_merchant_subsidy_0` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_1` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_2` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_3` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_4` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_5` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_6` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_7` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_8` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_9` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_10` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_11` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_12` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_13` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_14` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_15` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_16` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_17` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_18` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_19` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_20` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_21` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_22` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_23` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_24` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_25` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_26` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_27` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_28` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_29` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_30` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_31` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_32` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_33` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_34` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_35` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_36` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_37` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_38` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_39` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_40` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_41` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_42` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_43` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_44` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_45` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_46` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_47` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_48` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_49` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_50` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_51` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_52` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_53` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_54` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_55` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_56` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_57` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_58` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_59` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_60` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_61` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_62` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_63` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_64` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_65` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_66` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_67` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_68` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_69` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_70` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_71` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_72` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_73` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_74` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_75` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_76` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_77` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_78` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_79` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_80` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_81` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_82` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_83` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_84` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_85` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_86` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_87` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_88` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_89` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_90` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_91` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_92` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_93` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_94` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_95` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_96` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_97` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_98` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_merchant_subsidy_99` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; + +ALTER TABLE `mallink`.`wx_profit_sharing_order_0` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_1` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_2` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_3` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_4` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_5` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_6` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_7` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_8` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_9` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_10` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_11` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_12` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_13` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_14` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_15` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_16` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_17` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_18` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_19` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_20` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_21` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_22` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_23` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_24` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_25` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_26` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_27` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_28` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_29` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_30` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_31` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_32` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_33` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_34` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_35` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_36` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_37` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_38` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_39` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_40` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_41` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_42` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_43` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_44` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_45` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_46` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_47` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_48` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_49` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_50` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_51` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_52` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_53` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_54` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_55` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_56` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_57` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_58` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_59` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_60` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_61` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_62` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_63` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_64` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_65` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_66` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_67` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_68` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_69` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_70` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_71` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_72` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_73` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_74` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_75` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_76` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_77` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_78` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_79` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_80` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_81` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_82` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_83` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_84` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_85` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_86` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_87` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_88` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_89` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_90` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_91` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_92` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_93` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_94` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_95` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_96` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_97` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_98` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_99` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; + +ALTER TABLE `mallink`.`wx_profit_sharing_result` +ADD COLUMN `b_tenant_id` varchar(5) COMMENT 'b端核销商场tenantId' AFTER `merchant_id`; + +UPDATE wx_coupon_order_0 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_1 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_2 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_3 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_4 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_5 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_6 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_7 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_8 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_9 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_10 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_11 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_12 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_13 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_14 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_15 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_16 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_17 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_18 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_19 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_20 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_21 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_22 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_23 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_24 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_25 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_26 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_27 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_28 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_29 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_30 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_31 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_32 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_33 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_34 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_35 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_36 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_37 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_38 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_39 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_40 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_41 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_42 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_43 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_44 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_45 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_46 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_47 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_48 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_49 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_50 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_51 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_52 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_53 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_54 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_55 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_56 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_57 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_58 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_59 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_60 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_61 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_62 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_63 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_64 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_65 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_66 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_67 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_68 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_69 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_70 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_71 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_72 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_73 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_74 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_75 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_76 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_77 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_78 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_79 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_80 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_81 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_82 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_83 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_84 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_85 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_86 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_87 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_88 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_89 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_90 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_91 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_92 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_93 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_94 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_95 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_96 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_97 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_98 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_coupon_order_99 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); + + +UPDATE wx_profit_sharing_order_0 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_1 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_2 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_3 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_4 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_5 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_6 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_7 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_8 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_9 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_10 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_11 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_12 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_13 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_14 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_15 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_16 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_17 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_18 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_19 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_20 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_21 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_22 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_23 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_24 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_25 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_26 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_27 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_28 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_29 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_30 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_31 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_32 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_33 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_34 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_35 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_36 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_37 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_38 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_39 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_40 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_41 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_42 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_43 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_44 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_45 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_46 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_47 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_48 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_49 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_50 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_51 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_52 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_53 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_54 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_55 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_56 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_57 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_58 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_59 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_60 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_61 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_62 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_63 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_64 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_65 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_66 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_67 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_68 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_69 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_70 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_71 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_72 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_73 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_74 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_75 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_76 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_77 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_78 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_79 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_80 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_81 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_82 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_83 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_84 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_85 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_86 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_87 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_88 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_89 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_90 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_91 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_92 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_93 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_94 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_95 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_96 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_97 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_98 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_profit_sharing_order_99 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); + +UPDATE wx_merchant_subsidy_0 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_1 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_2 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_3 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_4 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_5 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_6 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_7 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_8 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_9 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_10 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_11 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_12 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_13 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_14 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_15 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_16 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_17 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_18 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_19 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_20 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_21 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_22 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_23 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_24 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_25 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_26 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_27 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_28 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_29 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_30 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_31 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_32 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_33 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_34 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_35 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_36 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_37 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_38 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_39 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_40 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_41 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_42 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_43 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_44 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_45 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_46 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_47 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_48 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_49 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_50 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_51 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_52 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_53 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_54 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_55 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_56 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_57 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_58 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_59 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_60 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_61 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_62 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_63 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_64 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_65 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_66 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_67 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_68 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_69 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_70 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_71 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_72 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_73 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_74 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_75 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_76 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_77 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_78 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_79 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_80 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_81 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_82 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_83 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_84 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_85 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_86 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_87 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_88 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_89 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_90 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_91 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_92 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_93 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_94 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_95 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_96 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_97 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_98 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); +UPDATE wx_merchant_subsidy_99 SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); + + +UPDATE wx_profit_sharing_result SET b_tenant_id = tenant_id WHERE tenant_id NOT IN ('1031','1032','1033','1034'); \ No newline at end of file diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022111600001__add_mall_permission.sql b/mallinkAdmin/src/main/resources/db/migration/V2022111600001__add_mall_permission.sql new file mode 100644 index 000000000..baf83f7d2 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2022111600001__add_mall_permission.sql @@ -0,0 +1,9 @@ +INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (648, '抖音平台券', 602, 'Y', NULL, 1, NULL, NULL, 'douyinPlatCoupon', NULL, 0, 648); +INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (649, '抖音品牌券', 602, 'Y', NULL, 1, NULL, NULL, 'douyinBrandCoupon', NULL, 0, 649); + +INSERT INTO `mallink`.`mall_sale_type`(`id`, `name`, `type`, `period`, `menus`) VALUES (101, '抖音集团版', 101, 12, '[1, 2, 4, 5, 6, 50, 105, 110, 201, 205, 202, 211, 212, 221, 222, 223, 224, 251, 409, 410, 411, 416, 500, 502, 504, 505, 506, 507, 511, 512, 521, 522, 523, 591, 592, 595, 601, 602, 605, 606, 610, 615, 622, 648, 649, 676, 680, 711, 901, 902, 904, 907, 61501, 61502]'); + + +INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (650, '抖音平台券', 602, 'Y', NULL, 1, NULL, NULL, 'douyinSubPlatCoupon', NULL, 0, 650); + +INSERT INTO `mallink`.`mall_sale_type`(`id`, `name`, `type`, `period`, `menus`) VALUES (102, '抖音集团子版', 102, 12, '[1, 2, 4, 5, 6, 50, 105, 110, 201, 205, 202, 211, 212, 221, 222, 223, 224, 251, 409, 410, 411, 416, 500, 502, 504, 505, 506, 507, 508, 511, 512, 521, 522, 523, 591, 592, 595, 601, 602, 605, 606, 610, 615, 622, 647, 650, 676, 680, 711, 901, 902, 904, 907, 5310, 5320, 61501, 61502]'); diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022112100001__add_coupon_brand.sql b/mallinkAdmin/src/main/resources/db/migration/V2022112100001__add_coupon_brand.sql new file mode 100644 index 000000000..c559df8bd --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2022112100001__add_coupon_brand.sql @@ -0,0 +1,200 @@ +ALTER TABLE `mallink`.`wx_coupon_0` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_1` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_2` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_3` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_4` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_5` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_6` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_7` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_8` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_9` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_10` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_11` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_12` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_13` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_14` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_15` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_16` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_17` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_18` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_19` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_20` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_21` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_22` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_23` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_24` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_25` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_26` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_27` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_28` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_29` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_30` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_31` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_32` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_33` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_34` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_35` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_36` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_37` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_38` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_39` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_40` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_41` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_42` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_43` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_44` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_45` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_46` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_47` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_48` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_49` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_50` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_51` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_52` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_53` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_54` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_55` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_56` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_57` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_58` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_59` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_60` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_61` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_62` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_63` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_64` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_65` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_66` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_67` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_68` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_69` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_70` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_71` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_72` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_73` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_74` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_75` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_76` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_77` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_78` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_79` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_80` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_81` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_82` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_83` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_84` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_85` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_86` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_87` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_88` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_89` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_90` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_91` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_92` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_93` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_94` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_95` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_96` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_97` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_98` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; +ALTER TABLE `mallink`.`wx_coupon_99` +ADD COLUMN `brand` bigint(20) COMMENT '品牌' AFTER `make_merchant_id`; \ No newline at end of file diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022112200001__update_brand.sql b/mallinkAdmin/src/main/resources/db/migration/V2022112200001__update_brand.sql new file mode 100644 index 000000000..582a07e34 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2022112200001__update_brand.sql @@ -0,0 +1,11 @@ +--历史品牌数据 +UPDATE `mallink`.`wx_brand` SET `tenant_id` = `parent_tenant_id` WHERE `parent_tenant_id` is not null and `parent_tenant_id` != ''; + +UPDATE `mallink`.`wx_brand` SET `parent_tenant_id` = null; + + + +--appinfo +ALTER TABLE `mallink`.`wx_appinfo` +DROP INDEX `appid_index`, +ADD INDEX `appid_index`(`app_id`, `tenant_id`) USING BTREE; \ No newline at end of file diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022121200001__addmenu.sql b/mallinkAdmin/src/main/resources/db/migration/V2022121200001__addmenu.sql new file mode 100644 index 000000000..faff4be65 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2022121200001__addmenu.sql @@ -0,0 +1,6 @@ +INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (71101, '集团券订单', 610, 'Y', NULL, 1, NULL, NULL, 'groupOrderList', NULL, 0, 711); + +INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (41001, '集团自动分账', 416, 'Y', NULL, 1, NULL, NULL, 'groupSharingOrderList', NULL, 0, 412); + +UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 4, 5, 6, 50, 105, 110, 201, 205, 202, 211, 212, 221, 222, 223, 224, 251, 409, 410, 411, 416, 500, 502, 504, 505, 506, 507, 508, 511, 512, 521, 522, 523, 591, 592, 595, 601, 602, 605, 606, 610, 615, 622, 647, 650, 676, 680, 711, 901, 902, 904, 907, 41001, 5310, 5320, 61501, 61502, 71101]' WHERE `id` = 102; + diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022121300001__addSharingMerchantId.sql b/mallinkAdmin/src/main/resources/db/migration/V2022121300001__addSharingMerchantId.sql new file mode 100644 index 000000000..d2a442dbb --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2022121300001__addSharingMerchantId.sql @@ -0,0 +1,200 @@ +ALTER TABLE `mallink`.`wx_profit_sharing_order_0` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_1` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_2` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_3` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_4` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_5` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_6` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_7` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_8` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_9` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_10` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_11` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_12` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_13` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_14` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_15` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_16` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_17` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_18` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_19` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_20` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_21` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_22` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_23` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_24` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_25` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_26` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_27` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_28` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_29` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_30` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_31` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_32` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_33` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_34` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_35` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_36` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_37` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_38` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_39` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_40` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_41` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_42` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_43` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_44` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_45` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_46` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_47` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_48` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_49` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_50` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_51` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_52` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_53` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_54` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_55` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_56` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_57` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_58` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_59` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_60` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_61` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_62` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_63` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_64` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_65` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_66` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_67` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_68` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_69` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_70` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_71` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_72` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_73` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_74` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_75` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_76` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_77` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_78` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_79` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_80` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_81` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_82` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_83` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_84` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_85` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_86` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_87` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_88` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_89` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_90` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_91` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_92` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_93` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_94` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_95` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_96` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_97` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_98` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; +ALTER TABLE `mallink`.`wx_profit_sharing_order_99` +ADD COLUMN `sharing_merchant_id` bigint(20) COMMENT '实际到账商户' AFTER `pay_merchant_mch_id`; \ No newline at end of file diff --git a/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java b/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java index 177b86c8d..86850f3cc 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java @@ -91,17 +91,8 @@ public class BaseController { //该方法兼容微信登陆和非微信登陆 public WxMerchantBUser getLoginBUser() { - Long wxBuserId = getWxBuserId(); - if (null != wxBuserId) { - CUser buser = getCUser(); - Long userId = buser.getUserId(); - WxMerchantBUser user = getWxMerchantBUser(userId); - user.setBuserId(buser.getId()); - return user; - }else { - Long userId = getMerchantBUserId(); - return getWxMerchantBUser(userId); - } + Long userId = getMerchantBUserId(); + return getWxMerchantBUser(userId); } public Long getWxBuserId() { @@ -109,12 +100,6 @@ public class BaseController { Long id = (Long) request.getAttribute(Constant.LOGIN_USER_KEY); return id; } - - public WxAppinfo getCurrentApp() { - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - WxAppinfo appInfo = (WxAppinfo) request.getAttribute(Constant.APP_INFO); - return appInfo; - } public CUser getCUser() { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); @@ -137,13 +122,23 @@ public class BaseController { if(user == null){ throw new MallinkException(ErrorCode.USER_IS_EMPTY); } - TenantEntity tenantEntity = getTenantInfo(); - if (user.getTenantId() == null) { - user.setTenantId(tenantEntity.getTenantId()); - } - if (user.getParentTenantId() == null) { - user.setParentTenantId(tenantEntity.getParentTenantId()); - } +// TenantEntity tenantEntity = getTenantInfo(); +// if (tenantEntity.isChildMall()) { +// if (user.getTenantId() == null) { +// user.setTenantId(tenantEntity.getParentTenantId()); +// } +// if (user.getParentTenantId() == null) { +// user.setParentTenantId(null); +// } +// }else { +// if (user.getTenantId() == null) { +// user.setTenantId(tenantEntity.getTenantId()); +// } +// if (user.getParentTenantId() == null) { +// user.setParentTenantId(tenantEntity.getParentTenantId()); +// } +// } + return user; } @@ -165,7 +160,11 @@ public class BaseController { } public WxAppinfo getAppInfo(String appId) { - return wxAppinfoService.getByAppId(appId); + return wxAppinfoService.getOnlyByAppIdFromRedis(appId); + } + + public WxAppinfo getAppInfo(String appId,String tenantId) { + return wxAppinfoService.getByAppIdFromRedis(appId,tenantId); } public String getIpAddr() { diff --git a/mallinkBApi/src/main/java/com/iformall/controller/PosOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/PosOrderController.java index cd1f409cc..8f45b5b74 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/PosOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/PosOrderController.java @@ -36,6 +36,8 @@ public class PosOrderController extends BaseController { @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) public ResultData list(@ModelAttribute PosOrder posOrder, Integer pageNum, Integer pageSize) { if (null == posOrder) posOrder = new PosOrder(); + WxMerchantBUser user = getLoginBUser(); + posOrder.updateTenantInfo(user); final PageInfo page = posOrderService.listAsPage(posOrder, pageNum, pageSize); return new ResultData(page); } @@ -72,7 +74,8 @@ public class PosOrderController extends BaseController { @ApiOperation("根据id更新接口") @PostMapping("update") public ResultData update(@RequestBody PosOrder posOrder) { - posOrder.updateTenantInfo(getTenantInfo()); + WxMerchantBUser user = getLoginBUser(); + posOrder.updateTenantInfo(user); posOrderService.saveOrUpdate(posOrder); return new ResultData(); } @@ -89,7 +92,8 @@ public class PosOrderController extends BaseController { @GetMapping("/findById") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData findById(Long id) { - return new ResultData(Result.SUCCESS, "查询成功", posOrderService.getById(id,getTenantInfo().getTenantId())); + WxMerchantBUser user = getLoginBUser(); + return new ResultData(Result.SUCCESS, "查询成功", posOrderService.getById(id,user.getTenantId())); } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java index 19073d033..b7d27c6f6 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java @@ -117,8 +117,7 @@ public class WxBillController extends BaseController { if(!billFinishHasWorkFlow(wxBillAll)) { return new ResultData(ErrorCode.FLOW_FAIL.getCode(),"商户账单完结审批不存在工作流,不能提交审批。"); } - WxMerchantBUser buser = this.getLoginBUser(); - + WxMerchantBUser buser = getLoginBUser(); Map billObject = wxBillAllService.detail(wxBillAll.getId(), wxBillAll.getBillTypeValue()); diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponController.java index 226edae9f..90ecfed59 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponController.java @@ -383,7 +383,8 @@ public class WxCouponController extends BaseController { @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData findById(@RequestParam Long id) { logger.debug("[" + getIpAddr() + "] WxCouponController::findById"); - return new ResultData(wxCouponService.getVoById(id,getTenantInfo().getTenantId())); + TenantEntity tenantEntity = getTenantInfo(); + return new ResultData(wxCouponService.getVoById(id,tenantEntity.getTenantId(),tenantEntity)); } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index e57b8ba8d..d269b81da 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -4,10 +4,12 @@ import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.iformall.annotation.AuthIgnore; import com.iformall.annotation.RedisCache; +import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponOrderBVo; import com.iformall.domain.vo.WxCouponOrderCVo; @@ -152,12 +154,31 @@ public class WxCouponOrderController extends BaseController { } + private TenantEntity getCouponOrderTenantEntity(String couponTenantId) { + TenantEntity curTenantEntity = getTenantInfo(); + TenantEntity couponOrderTenantEntity = null; + if (StringUtils.isBlank(couponTenantId) || "null".equals(couponTenantId) || "NULL".equals(couponTenantId)) { + couponOrderTenantEntity = curTenantEntity; + }else { + if (curTenantEntity.getTenantId().equals(couponTenantId)) { + couponOrderTenantEntity = curTenantEntity; + }else { + couponOrderTenantEntity = new TenantEntity(); + couponOrderTenantEntity.setTenantId(couponTenantId); + couponOrderTenantEntity.setParentTenantId(null); + } + } + return couponOrderTenantEntity; + } + + @TenantIgnore @ApiOperation(value = "卡券详情接口") @GetMapping("detail") @ApiImplicitParams({ - @ApiImplicitParam(name = "couponOrderId", value = "券ID", dataType = "string", paramType = "query", required = true) + @ApiImplicitParam(name = "couponOrderId", value = "券ID", dataType = "string", paramType = "query", required = true), + @ApiImplicitParam(name = "couponTenantId", value = "券tenantID", dataType = "string", paramType = "query", required = false) }) - public ResultData detail(String couponOrderId) { + public ResultData detail(String couponOrderId,String couponTenantId) { logger.info("couponOrderController.detail:" + couponOrderId); @@ -191,8 +212,9 @@ public class WxCouponOrderController extends BaseController { throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); } WxCouponOrderCVo wxCouponOrderCVo = null; + TenantEntity couponOrderTenantEntity = getCouponOrderTenantEntity(couponTenantId); try { - wxCouponOrderCVo = wxCouponOrderService.simpleDetailCUserVo(couponOrderId,wxMerchant); + wxCouponOrderCVo = wxCouponOrderService.simpleDetailCUserVo(couponOrderId,couponOrderTenantEntity); } catch (Exception e) { return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); } @@ -210,7 +232,7 @@ public class WxCouponOrderController extends BaseController { return new ResultData(ErrorCode.COUPON_IS_EMPTY); } } else { - wxCouponCVo = wxCouponService.getVoById(wxCouponOrderCVo.getCouponId(),wxMerchantBUser.getTenantId()); + wxCouponCVo = wxCouponService.getVoById(wxCouponOrderCVo.getCouponId(),couponOrderTenantEntity.getTenantId(),wxMerchantBUser); if (wxCouponCVo == null) { return new ResultData(ErrorCode.COUPON_IS_EMPTY); } @@ -237,18 +259,21 @@ public class WxCouponOrderController extends BaseController { return new ResultData(wxCouponOrderCVo); } + @TenantIgnore @ApiOperation(value = "卡券富文本接口") @GetMapping("html") @ApiImplicitParams({ - @ApiImplicitParam(name = "couponOrderId", value = "券ID", dataType = "string", paramType = "query", required = true) + @ApiImplicitParam(name = "couponOrderId", value = "券ID", dataType = "string", paramType = "query", required = true), + @ApiImplicitParam(name = "couponTenantId", value = "券tenantID", dataType = "string", paramType = "query", required = false) }) - public ResultData getHtml(String couponOrderId) { + public ResultData getHtml(String couponOrderId,String couponTenantId) { if (couponOrderId == null) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } + TenantEntity couponOrderTenantEntity = getCouponOrderTenantEntity(couponTenantId); WxCouponOrderCVo wxCouponOrderCVo = null; try { - wxCouponOrderCVo = wxCouponOrderService.simpleDetailCUserVo(couponOrderId,getTenantInfo()); + wxCouponOrderCVo = wxCouponOrderService.simpleDetailCUserVo(couponOrderId,couponOrderTenantEntity); } catch (Exception e) { return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); } @@ -282,7 +307,8 @@ public class WxCouponOrderController extends BaseController { return new ResultData(wxCouponOrderCVo); } - @ApiOperation(value = "核销接口", notes = "{\"couponOrderId\":\"string\"}") + @TenantIgnore + @ApiOperation(value = "核销接口", notes = "{\"couponOrderId\":\"string\",\"couponTenantId\":\"string\"}") @PostMapping("verify") public ResultData verify(@RequestBody Map paramMap) { logger.info("couponOrderController.verify:" + paramMap.toString()); @@ -313,8 +339,10 @@ public class WxCouponOrderController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } - WxCouponOrderCVo wxCouponOrderCVo = wxCouponOrderService.detailCUserVo(couponOrderIdStr,getTenantInfo()); - + WxCouponOrderCVo wxCouponOrderCVo = null; + String couponTenantId = paramMap.get("couponTenantId"); + TenantEntity couponOrderTenantEntity = getCouponOrderTenantEntity(couponTenantId); + wxCouponOrderCVo = wxCouponOrderService.detailCUserVo(couponOrderIdStr,couponOrderTenantEntity); if (wxCouponOrderCVo == null) return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); @@ -353,13 +381,13 @@ public class WxCouponOrderController extends BaseController { } } - WxCouponOrder wxCouponOrder = wxCouponOrderService.getById(couponOrderId,getTenantInfo().getTenantId()); + WxCouponOrder wxCouponOrder = wxCouponOrderService.getById(couponOrderId,couponOrderTenantEntity.getTenantId()); if (wxCouponOrder == null) { logger.error("券ID不存在:" + couponOrderId); return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); } - WxMerchantBUser wxMerchantBUser = wxMerchantBUserService.getById(getLoginBUser().getId()); + WxMerchantBUser wxMerchantBUser = getLoginBUser(); if (wxMerchantBUser == null) { logger.error("核销员ID不存在:" + getLoginBUser().getId()); throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "核销员ID不存在或者无权限"); @@ -381,15 +409,15 @@ public class WxCouponOrderController extends BaseController { return new ResultData(ErrorCode.VERIFY_ERROR, e.getMessage()); } - if (couponOrder != null && couponOrder.getMerchantId() != null) { - wxCouponOrderService.sendInsideCouponVerifyMsg(couponOrder, couponOrderId, couponOrder.getMerchantId(),couponOrder.getBMerchantId()); + if (couponOrder != null) { + wxCouponOrderService.sendInsideCouponVerifyMsg(couponOrder.getId(), couponOrder, couponOrder.getBMerchantId(), wxMerchantBUser); } return new ResultData(couponOrder); } - - @ApiOperation(value = "根据couponOrderId查询接口", notes = "{\"couponOrderId\":\"string\"}") + @TenantIgnore + @ApiOperation(value = "根据couponOrderId查询接口", notes = "{\"couponOrderId\":\"string\",\"couponTenantId\":\"string\"}") @PostMapping("/findById") public ResultData findById(@RequestBody Map paramMap) { logger.info(paramMap.toString()); @@ -406,7 +434,9 @@ public class WxCouponOrderController extends BaseController { logger.error("couponOrderId参数不正确: " + paramMap.toString()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } - return new ResultData(Result.SUCCESS, "查询成功", wxCouponOrderService.getById(couponOrderId,getTenantInfo().getTenantId())); + String couponTenantId = paramMap.get("couponTenantId"); + TenantEntity couponOrderTenantEntity = getCouponOrderTenantEntity(couponTenantId); + return new ResultData(Result.SUCCESS, "查询成功", wxCouponOrderService.getById(couponOrderId,couponOrderTenantEntity.getTenantId())); } @ApiOperation(value = "核销接口", notes = "{\"couponOrderId\":\"string\"}") @@ -420,7 +450,7 @@ public class WxCouponOrderController extends BaseController { return new ResultData(); } - @ApiOperation(value = "商品发货", notes = "{\"id\":\"string\", \"deliveryInfo\":\"jsonString\"}") + @ApiOperation(value = "商品发货", notes = "{\"id\":\"string\", \"deliveryInfo\":\"jsonString\",\"couponTenantId\":\"string\"}") @PostMapping("/sendGoods") public ResultData sendGoods(@RequestBody WxCouponOrder wxCouponOrder) { logger.debug("[" + getIpAddr() + "] WxCouponPasswordController::postpone"); @@ -429,7 +459,10 @@ public class WxCouponOrderController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } try { - WxCouponOrder couponOrder = wxCouponOrderService.getById(wxCouponOrder.getId(), getTenantInfo().getTenantId()); + + String couponTenantId = wxCouponOrder.getCouponTenantId(); + TenantEntity couponOrderTenantEntity = getCouponOrderTenantEntity(couponTenantId); + WxCouponOrder couponOrder = wxCouponOrderService.getById(wxCouponOrder.getId(), couponOrderTenantEntity.getTenantId()); if(couponOrder==null){ return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java index cf534d0c2..b8235eccf 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java @@ -2,6 +2,7 @@ package com.iformall.controller; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.iformall.annotation.AuthIgnore; import com.iformall.annotation.TenantIgnore; @@ -156,11 +157,11 @@ public class WxInfoController extends BaseController { cUser = cuserFactory.getBUserService(appPlat).handleLoginUser(cUser,null); resultMap.put("token", cUser.getToken()); - request.setAttribute(Constant.LOGIN_USER_KEY, cUser.getId()); - request.setAttribute(Constant.TENANT_ID, buUser.getTenantId()); - if (StringUtils.isNotBlank(buUser.getParentTenantId())) { - request.setAttribute(Constant.PARENT_TENANT_ID, buUser.getParentTenantId()); - } +// request.setAttribute(Constant.LOGIN_USER_KEY, cUser.getId()); +// request.setAttribute(Constant.TENANT_ID, buUser.getTenantId()); +// if (StringUtils.isNotBlank(buUser.getParentTenantId())) { +// request.setAttribute(Constant.PARENT_TENANT_ID, buUser.getParentTenantId()); +// } return new ResultData(resultMap); } @@ -427,6 +428,7 @@ public class WxInfoController extends BaseController { * @param map * @return */ + @TenantIgnore @PostMapping("/getUserInfo") @ApiOperation(value = "授权后获取用户的昵称,unionId等信息", notes = "{\"encryptedData\":\"string\",\"iv\":\"string\"}") public ResultData getUserInfo(@RequestBody Map map) { @@ -446,7 +448,7 @@ public class WxInfoController extends BaseController { CUser user = getCUser(); if (user != null) { - WxAppinfo wxAppinfo = wxAppinfoService.getByAppId(user.getAppId()); + WxAppinfo wxAppinfo = getAppInfo(user.getAppId(),user.getTenantId()); if(wxAppinfo == null){ return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } @@ -468,6 +470,7 @@ public class WxInfoController extends BaseController { } } + @TenantIgnore @PostMapping("/updateExtInfo") @ApiOperation(value = "用户更新扩展信息(手机)", notes = "{\"systemInfo\":\"string\"}") public ResultData updateExtInfo(@RequestBody Map map) { @@ -485,6 +488,7 @@ public class WxInfoController extends BaseController { return new ResultData(); } + @TenantIgnore @PostMapping("/updateLBS") @ApiOperation(value = "用户更新位置信息", notes = "{\"latitude\":\"string\",\"longitude\":\"string\"}") public ResultData updateLBS(@RequestBody Map map) { @@ -504,6 +508,7 @@ public class WxInfoController extends BaseController { return new ResultData(); } + @TenantIgnore @PostMapping("/updateScene") @ApiOperation(value = "用户更新scene", notes = "{\"scene\":\"string\"}") public ResultData updateScene(@RequestBody Map map) { diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMallController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMallController.java index e9da433f9..7cdf0c0da 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMallController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMallController.java @@ -51,7 +51,7 @@ public class WxMallController extends BaseController { @GetMapping("/getAppIcon") @ApiImplicitParam(name = "appId", value = "appId", dataType = "String", paramType = "query", required = true) public ResultData getAppIcon(String appId) { - WxAppinfo appInfo = wxAppinfoService.getByAppId(appId); + WxAppinfo appInfo = getAppInfo(appId); if (appInfo == null) { return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java index 118f11fad..e549cf9b4 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java @@ -3,6 +3,7 @@ package com.iformall.controller; import com.iformall.annotation.AuthIgnore; import com.iformall.annotation.RedisCache; +import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; @@ -122,6 +123,7 @@ public class WxMerchantBUserController extends BaseController { * @param map * @return */ + @TenantIgnore @AuthIgnore @PostMapping("/login") @ApiOperation(value = "用户登录", notes = "{" + @@ -149,7 +151,7 @@ public class WxMerchantBUserController extends BaseController { if (StringUtils.isNotBlank(latitude) && StringUtils.isNotBlank(longitude)) { logger.info("B端用户: " + phone + " 登录 IP" + ipaddress + ", 经纬度(" + longitude + "," + latitude + ")"); } - WxAppinfo wxAppinfo = wxAppinfoService.getByAppId(appId); + WxAppinfo wxAppinfo = getAppInfo(appId); if(wxAppinfo == null){ return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } @@ -162,7 +164,7 @@ public class WxMerchantBUserController extends BaseController { // userQ.setAppId(appId); userQ.setPhone(phone); userQ.setStatus(EnumMerchantBUserStatus.VALID.getCode()); - List orgList = wxMerchantBUserService.getBUserByAppId(userQ); + List orgList = wxMerchantBUserService.findAllList(userQ); if (orgList.size() == 1) { // 集团内只发现一个用户 @@ -174,16 +176,16 @@ public class WxMerchantBUserController extends BaseController { ResultData merchantStatus = checkMerchantStatus(orgUser); if (merchantStatus != null) return merchantStatus; - try { - wxMerchantBUserService.saveOrUpdate(orgUser); - } catch (Exception e) { - logger.error("B端用户更新用户信息失败, e:" + e.getMessage()); - return new ResultData(ErrorCode.DB_FAIL.getCode(), "数据库保存失败,e:" + e.getMessage()); - } +// try { +// wxMerchantBUserService.saveOrUpdate(orgUser); +// } catch (Exception e) { +// logger.error("B端用户更新用户信息失败, e:" + e.getMessage()); +// return new ResultData(ErrorCode.DB_FAIL.getCode(), "数据库保存失败,e:" + e.getMessage()); +// } Map resultMap = new HashMap<>(); resultMap.put("bUserId", orgUser.getId()); resultMap.put("logined", true); - request.setAttribute(Constant.LOGIN_B_USER_KEY, orgUser.getId()); +// request.setAttribute(Constant.LOGIN_B_USER_KEY, orgUser.getId()); return new ResultData(resultMap); } else { return new ResultData(ErrorCode.PASSWORD_ERROR); @@ -199,12 +201,12 @@ public class WxMerchantBUserController extends BaseController { // check password if (orgUser.getUserPwd().equalsIgnoreCase(password)) { // 返回多个(商场+商户) - List merchantListInfo = wxMerchantBUserService.getMerchantInfoByBUser(userQ); + List merchantListInfo = wxMerchantBUserService.handMerchantBUser(orgList); Map resultMap = new HashMap<>(); resultMap.put("merchantList", merchantListInfo); - resultMap.put("logined", true); - resultMap.put("bUserId", orgUser.getId()); - request.setAttribute(Constant.LOGIN_B_USER_KEY, orgUser.getId()); + resultMap.put("logined", false); +// resultMap.put("bUserId", orgUser.getId()); +// request.setAttribute(Constant.LOGIN_B_USER_KEY, orgUser.getId()); return new ResultData(resultMap); } else { logger.error(ErrorCode.PASSWORD_ERROR.getMessage()); @@ -220,6 +222,7 @@ public class WxMerchantBUserController extends BaseController { } } + @TenantIgnore @AuthIgnore @PostMapping("/selectMerchant") @ApiOperation(value = "选择商户", notes = "{" + @@ -239,18 +242,18 @@ public class WxMerchantBUserController extends BaseController { WxMerchantBUser userQ = new WxMerchantBUser(); userQ.setId(Long.valueOf(buUserIdStr)); userQ.setMerchantId(Long.valueOf(merchantIdStr)); - List orgList = wxMerchantBUserService.getBUserByAppId(userQ); + List orgList = wxMerchantBUserService.findList(userQ); if (orgList.size() == 1) { WxMerchantBUser orgUser = orgList.get(0); if (orgUser != null) { ResultData merchantStatus = checkMerchantStatus(orgUser); if (merchantStatus != null) return merchantStatus; - try { - wxMerchantBUserService.saveOrUpdate(orgUser); - } catch (Exception e) { - logger.error("B端用户更新用户信息失败, e:" + e.getMessage()); - return new ResultData(ErrorCode.DB_FAIL.getCode(), "数据库保存失败,e:" + e.getMessage()); - } +// try { +// wxMerchantBUserService.saveOrUpdate(orgUser); +// } catch (Exception e) { +// logger.error("B端用户更新用户信息失败, e:" + e.getMessage()); +// return new ResultData(ErrorCode.DB_FAIL.getCode(), "数据库保存失败,e:" + e.getMessage()); +// } Map resultMap = new HashMap<>(); resultMap.put("bUserId", orgUser.getId()); resultMap.put("logined", true); @@ -285,6 +288,7 @@ public class WxMerchantBUserController extends BaseController { } + @TenantIgnore @AuthIgnore @ApiOperation(value = "修改密码,集团版会修改集团下同一手机号的密码", notes = "{\"appId\",\"string\", \"phone\",\"string\",\"code\",\"string\",\"pwd\",\"string\"}") @PostMapping("/updatepwd") @@ -297,6 +301,14 @@ public class WxMerchantBUserController extends BaseController { if (StringUtils.isBlank(appId)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "appId不能为空"); } + WxAppinfo wxAppinfo = getAppInfo(appId); + if(wxAppinfo == null){ + return new ResultData(ErrorCode.APP_ID_NOT_FOUND); + } + if(!wxAppinfo.getEnable().equals(EnumEnableType.Enable.getCode())){ + return new ResultData(ErrorCode.APP_ID_NOT_ENABLE); + } + if (StringUtils.isBlank(phone)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "手机号不能为空"); } @@ -306,8 +318,7 @@ public class WxMerchantBUserController extends BaseController { if (StringUtils.isBlank(pwd)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "密码不能为空"); } - - return wxMerchantBUserService.updatePwd(appId, phone, code, pwd); + return wxMerchantBUserService.updatePwd(wxAppinfo.getTenantId(), phone, code, pwd); } } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java index cae3f5243..4b171b6dc 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java @@ -1,6 +1,7 @@ package com.iformall.controller; import com.iformall.annotation.RedisCache; +import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.*; @@ -131,6 +132,7 @@ public class WxMerchantController extends BaseController { return new ResultData(has); } + @TenantIgnore @ApiOperation("获取微信OpenId") @GetMapping("/getOpenIdByPhone") @ApiImplicitParam(name = "phone", value = "商户C端注册手机号", dataType = "String", paramType = "query", required = true) @@ -145,7 +147,7 @@ public class WxMerchantController extends BaseController { phone = wxMerchant.getLinkPhone(); } WxCUser cuUser = new WxCUser(); - cuUser.updateTenantInfo(getTenantInfo()); + cuUser.updateTenantInfo(buser); cuUser.setPhone(phone); try { WxCUser mUser = cUserService.getByObject(cuUser); diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java index 8edc2fe6a..8edc30d11 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java @@ -299,7 +299,7 @@ public class WxMicroPayController extends BaseController { } WxMerchantBUser bUser = getLoginBUser(); - WxAppinfo appinfo = getAppInfo(bUser.getAppId()); + WxAppinfo appinfo = getAppInfo(bUser.getAppId(),bUser.getTenantId()); try { ResultData rd = wxRefundOrderService.createRefundOrderFromMicroPay(appinfo, orderId, EnumPayType.PAY_B_REFUND, bUser.getId()); return rd; diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMsgValidationcodeController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMsgValidationcodeController.java index fcca737fb..54381992e 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMsgValidationcodeController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMsgValidationcodeController.java @@ -1,7 +1,9 @@ package com.iformall.controller; +import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; +import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxMsgValidationcode; @@ -37,8 +39,7 @@ public class WxMsgValidationcodeController extends BaseController { @Autowired private WxMerchantService wxMerchantService; - - + @TenantIgnore @GetMapping("sendvalidationcode") @ApiImplicitParams({ @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true), @@ -46,12 +47,20 @@ public class WxMsgValidationcodeController extends BaseController { @ApiImplicitParam(name = "appid", value = "appid", dataType = "String", paramType = "query", required = true)}) public ResultData sendvalidationcode(String phone, String type, String appid) { + WxAppinfo wxAppinfo = getAppInfo(appid); + if(wxAppinfo == null){ + return new ResultData(ErrorCode.APP_ID_NOT_FOUND); + } + if(!wxAppinfo.getEnable().equals(EnumEnableType.Enable.getCode())){ + return new ResultData(ErrorCode.APP_ID_NOT_ENABLE); + } + WxMerchantBUser userQ = new WxMerchantBUser(); - userQ.setAppId(appid); + userQ.updateTenantInfo(wxAppinfo); userQ.setPhone(phone); userQ.setStatus(EnumMerchantBUserStatus.VALID.getCode()); - List orgUserList = wxMerchantBUserService.getBUserByAppId(userQ); + List orgUserList = wxMerchantBUserService.findList(userQ); if (orgUserList.size() <= 0) { logger.error("B端用户不存在, phone: " + phone); return new ResultData(ErrorCode.USER_IS_EMPTY); diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxPayAccountController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxPayAccountController.java index 00f545be3..59c1115ed 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxPayAccountController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxPayAccountController.java @@ -41,10 +41,10 @@ public class WxPayAccountController extends BaseController { logger.info("/api/payAccount/getPayAccount" + paramMap.toString()); String appId = paramMap.get("appId"); if (StringUtils.isBlank(appId)) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "appId不能为空"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } - WxAppinfo wxAppinfo = getAppInfo(appId); + WxAppinfo wxAppinfo = getAppInfo(appId,getTenantInfo().getTenantId()); if(wxAppinfo == null){ return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java index c6d306f05..70735cb63 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java @@ -103,7 +103,7 @@ public class WxPayBillController extends BaseController { //openid String openid = paramMap.get("openId"); //获取小程序配置信息 - WxAppinfo appInfo = getAppInfo(appid); + WxAppinfo appInfo = getAppInfo(appid,getTenantInfo().getTenantId()); //支付账单参数 WxPayBill record = new WxPayBill(); record.setBillId(billId); diff --git a/mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java b/mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java index 3e33eb8b8..150f90953 100644 --- a/mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java +++ b/mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java @@ -6,11 +6,13 @@ import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.TenantThreadLocal; import com.iformall.domain.po.WxBuser; +import com.iformall.domain.po.WxMall; import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.exception.MallinkException; import com.iformall.service.CUserTokenService; import com.iformall.service.WxBuserTokenService; +import com.iformall.service.WxMallService; import com.iformall.service.WxMerchantBUserService; import com.iformall.utils.Constant; import org.apache.commons.lang3.StringUtils; @@ -38,6 +40,9 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { @Autowired private WxMerchantBUserService wxMerchantBUserService; + @Autowired + private WxMallService wxMallService; + @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { AuthIgnore annotation; @@ -69,40 +74,56 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { if(StringUtils.isBlank(token) && StringUtils.isBlank(bid)){ throw new MallinkException(ErrorCode.NET_TOKEN_EMPTY); } - + + //集团版中针对某一商场的业务需要传递mallTenantId + String mallTenantId = request.getHeader("mallTenantId"); + if(StringUtils.isBlank(mallTenantId)){ + mallTenantId = request.getParameter("mallTenantId"); + } // 查询token信息 + WxMerchantBUser buser = null; String tenantId = null; String parenTenantId = null; - if (!StringUtils.isBlank(token)) { + if (StringUtils.isNotBlank(token)) { BaseCUserEntity user = cUserTokenService.getBByToken(token); if (user == null || user.getExpireTime().getTime() < System.currentTimeMillis()) { throw new MallinkException(ErrorCode.NET_TOKEN_INVALID.getCode(), "URL:" + request.getRequestURL() + " token失效,请重新登录"); } - - tenantId = user.getTenantId(); - parenTenantId = user.getParentTenantId(); request.setAttribute(Constant.LOGIN_USER_KEY, user.getId()); - request.setAttribute(Constant.TENANT_ID, tenantId); request.setAttribute(Constant.REQUEST_C_USER_KEY, user); - request.setAttribute(Constant.APP_INFO, user.getAppinfo()); - if (StringUtils.isNotBlank(parenTenantId)) { - request.setAttribute(Constant.PARENT_TENANT_ID, parenTenantId); + if(user.getUserId() != null){ + buser = wxMerchantBUserService.getById(user.getUserId()); } - - }else if (!StringUtils.isBlank(bid)) { - WxMerchantBUser buser = wxMerchantBUserService.getById(Long.parseLong(bid)); - if (buser == null) { - throw new MallinkException(ErrorCode.NET_TOKEN_INVALID.getCode(), "URL:" + request.getRequestURL() + " bid失效,请重新登录"); - } - tenantId = buser.getTenantId(); - parenTenantId = buser.getParentTenantId(); - request.setAttribute(Constant.LOGIN_B_USER_KEY, buser.getId()); - request.setAttribute(Constant.TENANT_ID, tenantId); - if (StringUtils.isNotBlank(parenTenantId)) { - request.setAttribute(Constant.PARENT_TENANT_ID, parenTenantId); - } + }else if (StringUtils.isNotBlank(bid)) { + buser = wxMerchantBUserService.getById(Long.parseLong(bid)); + } + + if (buser == null) { + throw new MallinkException(ErrorCode.NET_TOKEN_INVALID.getCode(), "URL:" + request.getRequestURL() + " bid失效,请重新登录"); + } + + if(StringUtils.isNotBlank(mallTenantId)){ + tenantId = mallTenantId; + WxMall mall = wxMallService.getByTenantId(tenantId); + if(StringUtils.isNotBlank(mall.getParentTenantId())){ + parenTenantId = mall.getParentTenantId(); + } + }else{ + tenantId = buser.getTenantId(); + if (StringUtils.isNotBlank(buser.getParentTenantId())) { + parenTenantId = buser.getParentTenantId(); + } + } + + if(!tenantId.equals(buser.getTenantId()) + && !buser.getTenantId().equals(parenTenantId) + && !tenantId.equals(buser.getParentTenantId())){ + throw new MallinkException(ErrorCode.SYS_AUTH_ERROR); } + request.setAttribute(Constant.LOGIN_B_USER_KEY, buser.getId()); + request.setAttribute(Constant.TENANT_ID, tenantId); + request.setAttribute(Constant.PARENT_TENANT_ID, parenTenantId); //如果是要不需要自动设置tenantI信息 TenantIgnore tenantIgnoreAnnotation = null; diff --git a/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java index db75874e7..31c93f93f 100644 --- a/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java +++ b/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java @@ -23,6 +23,7 @@ public class TenantInfoImpl implements TenantInfo { "mall_permission", "mall_sale_type", "mall_user_role", + "wx_brand", "wx_channel", "wx_business", "wx_coupon_type", @@ -54,6 +55,9 @@ public class TenantInfoImpl implements TenantInfo { "fengniao_map_config", "wx_c_user", "tt_c_user", + "tt_buser", + "wx_buser", + "wx_merchant_b_user", "wx_user_visit", "tt_goods_category", }; @@ -62,8 +66,12 @@ public class TenantInfoImpl implements TenantInfo { "wx_mall", "wx_appinfo", "wx_authorizer_info", + "wx_brand", "wx_c_user", "tt_c_user", + "tt_buser", + "wx_buser", + "wx_merchant_b_user", "wx_user_visit", "wx_c_user_basic_info", "user_basic_info_address", @@ -74,8 +82,6 @@ public class TenantInfoImpl implements TenantInfo { "wx_c_user_from_b", "wx_c_user_tags", "wx_cuser_floating_layer", - "wx_buser", - "tt_buser", "wx_floating_layer", "wx_user_visit", "wx_level_config", diff --git a/mallinkBApi/src/test/java/com/iformall/b/CouponsendTest.java b/mallinkBApi/src/test/java/com/iformall/b/CouponsendTest.java index 4a262d637..26af4c590 100644 --- a/mallinkBApi/src/test/java/com/iformall/b/CouponsendTest.java +++ b/mallinkBApi/src/test/java/com/iformall/b/CouponsendTest.java @@ -89,7 +89,7 @@ public class CouponsendTest { log.error("券包ID未找到: " + couponOrderId); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL.getCode(), "券包ID未找到" + couponOrderId); } - wxCouponOrderService.subsidyAfterVerify(couponOrder, merchantId); +// wxCouponOrderService.subsidyAfterVerify(couponOrder, merchantId); } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java b/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java index f50a926e4..4d0303c84 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java @@ -1,6 +1,7 @@ package com.iformall.controller; import cn.binarywang.wx.miniapp.api.WxMaService; +import com.alibaba.fastjson.JSONObject; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; @@ -38,6 +39,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.Map; @RestController public class BaseController { @@ -111,9 +113,11 @@ public class BaseController { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String tenantId = (String) request.getAttribute(Constant.TENANT_ID); String parentTenantId = (String) request.getAttribute(Constant.PARENT_TENANT_ID); +// boolean isChildMall = (boolean)request.getAttribute(Constant.IS_CHILD_MALL); TenantEntity tenantEntity = new TenantEntity() ; tenantEntity.setTenantId(tenantId); tenantEntity.setParentTenantId(parentTenantId); +// tenantEntity.setChildMall(isChildMall); return tenantEntity; } @@ -184,13 +188,13 @@ public class BaseController { if(user == null){ throw new MallinkException(ErrorCode.USER_IS_EMPTY); } - TenantEntity tenantEntity = getTenantInfo(); - if (user.getTenantId() == null) { - user.setTenantId(tenantEntity.getTenantId()); - } - if (user.getParentTenantId() == null) { - user.setParentTenantId(tenantEntity.getParentTenantId()); - } +// TenantEntity tenantEntity = getTenantInfo(); +// if (user.getTenantId() == null) { +// user.setTenantId(tenantEntity.getTenantId()); +// } +// if (user.getParentTenantId() == null) { +// user.setParentTenantId(tenantEntity.getParentTenantId()); +// } return user; } @@ -243,15 +247,11 @@ public class BaseController { RedisCacheUtils.removeCache(objectCommonRedisTemplate, shortKey); } - public WxAppinfo getAppInfo(String appId) { - return wxAppinfoService.getByAppIdFromRedis(appId); - } - public WxMaService getWeappService(String appId) { if(isFmOpen) { return openService.getWxOpenComponentService().getWxMaServiceByAppid(appId); } else { - WxAppinfo appinfo = wxAppinfoService.getByAppId(appId); + WxAppinfo appinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId); if (appinfo == null) { return null; } @@ -275,5 +275,23 @@ public class BaseController { return ipaddress; } + /** + * 根据扩展字段获取tenantId + */ + public String getTenantId(String attach){ + if(StringUtils.isNotBlank(attach)){ + try{ + Map map = JSONObject.parseObject(attach, Map.class); + String tenantId = map.get("tenantId").toString(); + if(StringUtils.isNotBlank(tenantId)){ + return tenantId; + } + }catch (Exception e){ + + } + } + return null; + } + } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java index 25d71a990..74bb1403f 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java @@ -11,6 +11,7 @@ import java.util.stream.Collectors; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxMiniappThemeValue; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.EnumCouponType; import com.iformall.enums.EnumMerchantStatus; import com.iformall.utils.*; @@ -27,10 +28,12 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSON; +import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; +import com.iformall.domain.po.WxMall; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxMerchantVo; import com.iformall.enums.EnumCouponChannelActivityStatus; @@ -72,12 +75,14 @@ public class WxCouponController extends BaseController { @ApiOperation("根据id(couponChannel)查询详情接口") @GetMapping("/couponDetail") @ApiImplicitParams({ - @ApiImplicitParam(name = "couponChannelId", value = "couponChannelId", dataType = "String", paramType = "query", required = true)}) + @ApiImplicitParam(name = "couponChannelId", value = "couponChannelId", dataType = "String", paramType = "query", required = true), + @ApiImplicitParam(name = "mallTenantId", value = "mallTenantId", dataType = "String", paramType = "query", required = false)}) public ResultData couponDetail(String couponChannelId) { if ((StringUtils.isBlank(couponChannelId) || couponChannelId.equalsIgnoreCase(Constant.UNDEFINED)) ) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId为空"); } + Long couponChannelIdL = 0L; try { @@ -278,6 +283,7 @@ public class WxCouponController extends BaseController { return new ResultData(sb.toString()); } + @TenantIgnore @ApiOperation("根据id(couponChannel)查询商品商户接口") @GetMapping("/couponMerchant") @ApiImplicitParams({ @@ -311,7 +317,7 @@ public class WxCouponController extends BaseController { CouponCacheUtils.setCouponChannelCache(redisTemplate, couponChannelIdL, couponChannel); } - List volist = CouponCacheUtils.getCouponMerchantCache(redisTemplate, couponChannel.getId()); + Map> volist = CouponCacheUtils.getCouponMerchantCache(redisTemplate, couponChannel.getCouponId()); if (null == volist) { volist = couponService.getCouponMerchantList(getTenantInfo(), couponChannel.getCouponId()); if (null != volist && volist.size() > 0 ) { @@ -321,6 +327,42 @@ public class WxCouponController extends BaseController { return new ResultData(volist); } + + @TenantIgnore + @ApiOperation("根据couponId查询商品商户接口") + @GetMapping("/couponMerchantByCouponId") + @ApiImplicitParams({ + @ApiImplicitParam(name = "couponId", value = "couponId", dataType = "String", paramType = "query", required = true)}) + public ResultData couponMerchantByCouponId(String couponId) { + if ((StringUtils.isBlank(couponId) || couponId.equalsIgnoreCase(Constant.UNDEFINED)) + ) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponId为空"); + } + Long couponIdL = 0L; + + try { + if (StringUtils.isNotBlank(couponId) && !couponId.equalsIgnoreCase(Constant.UNDEFINED)) { + couponIdL = Long.valueOf(couponId); + } + } catch (NumberFormatException e) { + logger.error("id转换失败" + couponId); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponId转换失败" + couponId); + } + + if(couponIdL <= 0){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponId为空"); + } + + Map> volist = CouponCacheUtils.getCouponMerchantCache(redisTemplate, couponIdL); + if (null == volist) { + volist = couponService.getCouponMerchantList(getTenantInfo(), couponIdL); + if (null != volist && volist.size() > 0 ) { + CouponCacheUtils.setCouponMerchantCache(redisTemplate, couponIdL, volist); + } + } + return new ResultData(volist); + + } @Deprecated @ApiOperation("根据id(couponChannel)查询接口") @@ -391,7 +433,8 @@ public class WxCouponController extends BaseController { //WxCouponCVo wxCouponCVo = wxCouponChannelService.findDetailVo(couponChannelIdL); WxCouponCVo wxCouponCVo = null; try { - wxCouponCVo = generateWxCouponCVoex(couponChannelIdL,couponIdL,getTenantInfo().getTenantId()); + TenantEntity tenantEntity = getTenantInfo(); + wxCouponCVo = generateWxCouponCVoex(couponChannelIdL,couponIdL,tenantEntity.getTenantId(),tenantEntity); } catch (IllegalAccessException e) { logger.error("coupon detail fail,copyproperties error" + couponChannelId,e); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "coupon detail fail,copyproperties error" + couponChannelId); @@ -527,13 +570,13 @@ public class WxCouponController extends BaseController { } - private WxCouponCVo generateWxCouponCVoex(Long couponChannelIdL,Long couponIdL,String tenantId) throws IllegalAccessException, InvocationTargetException { + private WxCouponCVo generateWxCouponCVoex(Long couponChannelIdL,Long couponIdL,String couponTenantId,TenantEntity mallTenantEntity) throws IllegalAccessException, InvocationTargetException { if(couponChannelIdL > 0l){ - WxCouponChannel cc = wxCouponChannelService.getById(couponChannelIdL,tenantId); + WxCouponChannel cc = wxCouponChannelService.getById(couponChannelIdL,couponTenantId); if(cc == null){ return null; } - WxCouponCVo wxcv = couponService.getVoById(cc.getCouponId(),tenantId); + WxCouponCVo wxcv = couponService.getVoById(cc.getCouponId(),couponTenantId,mallTenantEntity); if(wxcv == null){ return null; } @@ -552,7 +595,7 @@ public class WxCouponController extends BaseController { wxcv.setTtSpuId(cc.getTtSpuId()); return wxcv; }else if(couponIdL > 0l){ - WxCouponCVo wxcv = couponService.getVoById(couponIdL,tenantId); + WxCouponCVo wxcv = couponService.getVoById(couponIdL,couponTenantId,mallTenantEntity); return wxcv; } return null; diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 1c61f0132..4b6926c44 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -119,7 +119,8 @@ public class WxCouponOrderController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } - WxCouponOrderCVo wxCouponOrderCVo = wxCouponOrderService.simpleDetailCUserVo(couponOrderId,getTenantInfo()); + TenantEntity tenantEntity = getTenantInfo(); + WxCouponOrderCVo wxCouponOrderCVo = wxCouponOrderService.simpleDetailCUserVo(couponOrderId,tenantEntity); if (wxCouponOrderCVo == null) { return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); } @@ -144,7 +145,7 @@ public class WxCouponOrderController extends BaseController { return new ResultData(ErrorCode.COUPON_IS_EMPTY); } } else { - wxCouponCVo = wxCouponService.getVoById(wxCouponOrderCVo.getCouponId(),wxCouponOrderCVo.getTenantId()); + wxCouponCVo = wxCouponService.getVoById(wxCouponOrderCVo.getCouponId(),wxCouponOrderCVo.getTenantId(),tenantEntity); if (wxCouponCVo == null) { return new ResultData(ErrorCode.COUPON_IS_EMPTY); } @@ -207,9 +208,10 @@ public class WxCouponOrderController extends BaseController { @ApiOperation(value = "手动核销方式,获取动态id") @GetMapping("dynamicId") @ApiImplicitParams({ - @ApiImplicitParam(name = "couponOrderId", value = "券ID", dataType = "string", paramType = "query", required = true) + @ApiImplicitParam(name = "couponOrderId", value = "券ID", dataType = "string", paramType = "query", required = true), + @ApiImplicitParam(name = "couponTenantId", value = "券tenantID", dataType = "string", paramType = "query", required = false) }) - public ResultData dynamicId(String couponOrderId) { + public ResultData dynamicId(String couponOrderId,String couponTenantId) { if (StringUtils.isBlank(couponOrderId) || couponOrderId.equalsIgnoreCase(Constant.UNDEFINED)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); @@ -223,6 +225,7 @@ public class WxCouponOrderController extends BaseController { Map retmap = new HashMap(); retmap.put("dynamicId", WxCouponOrderCVo.calcuteExpiredCouponOrderId(couponOrderId,Integer.parseInt(sysConfig.getConfigItemValue()))); retmap.put("expiredSeconds", Integer.parseInt(sysConfig.getConfigItemValue())); + retmap.put("couponTenantId", couponTenantId); return new ResultData(retmap); } @@ -515,8 +518,8 @@ public class WxCouponOrderController extends BaseController { return new ResultData(ErrorCode.VERIFY_ERROR, e.getMessage()); } - if (couponOrder != null && couponOrder.getMerchantId() != null) { - wxCouponOrderService.sendInsideCouponVerifyMsg(couponOrder, couponOrderId, couponOrder.getMerchantId(),couponOrder.getBMerchantId()); + if (couponOrder != null) { + wxCouponOrderService.sendInsideCouponVerifyMsg(couponOrder.getId(),couponOrder, couponOrder.getBMerchantId(), couponOrder); } return new ResultData(couponOrder); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCuserFloatingLayerController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCuserFloatingLayerController.java index 290d5349c..2a88f7d89 100755 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCuserFloatingLayerController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCuserFloatingLayerController.java @@ -30,14 +30,13 @@ public class WxCuserFloatingLayerController extends BaseController { @Autowired WxCuserFloatingLayerService wxCuserFloatingLayerService; - @AuthIgnore @ApiOperation("获取浮层") @GetMapping("/getFloatingLayer") @ApiImplicitParams({ @ApiImplicitParam(name = "openId", value = "openId", dataType = "String", paramType = "query", required = true), @ApiImplicitParam(name = "appId", value = "appId", dataType = "String", paramType = "query", required = true)}) - public ResultData getAppIcon(String openId, String appId) { - WxFloatingLayer wxFloatingLayer = wxCuserFloatingLayerService.getFloatingLayer(openId, appId); + public ResultData getAppIcon(String openId) { + WxFloatingLayer wxFloatingLayer = wxCuserFloatingLayerService.getFloatingLayer(getTenantInfo(),openId); return new ResultData(Result.SUCCESS, "查询成功", wxFloatingLayer); } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxMallController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxMallController.java index 3db2ce979..31990d3bc 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxMallController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxMallController.java @@ -7,10 +7,13 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumGroupSupport; +import com.iformall.enums.EnumYesOrNo; import com.iformall.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; 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; @@ -48,7 +51,7 @@ public class WxMallController extends BaseController { @ApiOperation("获取模板类型") @GetMapping("/getAppIcp") public ResultData getAppIcp(String appId) { - WxAppinfo appInfo = wxAppinfoService.getByAppId(appId); + WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId); if (appInfo == null) { return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } @@ -60,7 +63,7 @@ public class WxMallController extends BaseController { @ApiOperation("获取模板类型") @GetMapping("/modelType") public ResultData modelType(String appId) { - WxAppinfo appInfo = wxAppinfoService.getByAppId(appId); + WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId); if (appInfo == null) { return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } @@ -73,7 +76,7 @@ public class WxMallController extends BaseController { @GetMapping("/getAppIcon") @ApiImplicitParam(name = "appId", value = "appId", dataType = "String", paramType = "query", required = true) public ResultData getAppIcon(String appId) { - WxAppinfo appInfo = wxAppinfoService.getByAppId(appId); + WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId); if (appInfo == null) { return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } @@ -93,7 +96,7 @@ public class WxMallController extends BaseController { @GetMapping("/getWeapNote") @ApiImplicitParam(name = "appId", value = "appId", dataType = "String", paramType = "query", required = true) public ResultData getWeapNote(String appId) { - WxAppinfo appInfo = wxAppinfoService.getByAppId(appId); + WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId); if (appInfo == null) { return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } @@ -117,6 +120,26 @@ public class WxMallController extends BaseController { return new ResultData(Result.SUCCESS, "查询成功", mall); } + @RedisCache + @ApiOperation("商场信息") + @GetMapping("/subMall") + public ResultData getSubMall(Integer isAll) { + List mallList = new ArrayList<>(); + WxMall mall = wxMallService.getByTenantInfo(getTenantInfo()); + if (mall == null) { + return new ResultData(ErrorCode.MALL_INFO_NOT_FOUND); + } + if(EnumYesOrNo.YES.getCode().equals(isAll)){ + mallList.add(mall); + } + if (mall.getGroupSupport().equals(EnumGroupSupport.SUPPORT.getCode()) && + StringUtils.isBlank(mall.getParentTenantId())) { + List subMall = wxMallService.getSubByParentTenantId(mall.getTenantId()); + mallList.addAll(subMall); + } + return new ResultData(Result.SUCCESS, "查询成功", mallList); + } + @ApiOperation("成长值相关信息") @GetMapping("/scoreLevelInfo") public ResultData getScoreLevelInfo() { diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxMerchantController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxMerchantController.java index 3ae93e76f..e7f84647b 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxMerchantController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxMerchantController.java @@ -1,5 +1,6 @@ package com.iformall.controller; +import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.dto.WxMerchantDto; diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 04e579b20..47ade0597 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -61,6 +61,9 @@ import java.util.*; public class WxOrderController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Autowired + private WxMallService mallService; + @Autowired private WxCouponChannelService wxCouponChannelService; @@ -140,7 +143,8 @@ public class WxOrderController extends BaseController { } return wxOrderService.composeSaveOrder(false,EnumComposeOrder.ONE_NUMBER_ORDER_BATCH,orderSaveDto,memberId,getPayWay(),getTenantInfo(),this.getPayVersion()); } - + + @TenantIgnore @ApiOperation(value = "单个券单个订单,卡(分账导致无法批量下单)、拼团,砍价用", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") @PostMapping("save") public ResultData saveOrder(@RequestBody OrderSaveDto orderSaveDto) { @@ -187,6 +191,7 @@ public class WxOrderController extends BaseController { String open_id = msgObject.getString("open_id"); //透传字段 Long composeOrderId = null; + String tenantId = null; try{ String cp_extra = msgObject.getString("cp_extra"); if(StringUtils.isBlank(cp_extra)){ @@ -197,16 +202,18 @@ public class WxOrderController extends BaseController { Map couponMap = JSONObject.parseObject(cp_extra, Map.class); String idstr = couponMap.get("composeOrderId"); composeOrderId = Long.parseLong(idstr); + tenantId = couponMap.get("tenantId"); }catch(Exception e){ } - if(composeOrderId == null){ + if(composeOrderId == null || StringUtils.isBlank(tenantId)){ map.put("err_no",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); map.put("err_tips","透传字段格式不正确"); return map; } + WxMall mall = mallService.getByTenantId(tenantId); //验证app - WxAppinfo appinfo = wxAppinfoService.getByAppIdFromRedis(app_id); + WxAppinfo appinfo = wxAppinfoService.getOnlyByAppIdFromRedis(app_id); if(appinfo == null || !EnumAppPlat.TOUTIAO.getCode().equals(appinfo.getPlat()) || !EnumAppType.C.getCode().equals(appinfo.getType())){ map.put("err_no",ErrorCode.APP_ID_NOT_FOUND.getCode()); @@ -220,10 +227,10 @@ public class WxOrderController extends BaseController { return map; } TenantEntity tenantEntity = new TenantEntity(); - tenantEntity.updateTenantInfo(appinfo); + tenantEntity.updateTenantInfo(mall); //验证用户 Long memberId = null; - TtCUser cuser = (TtCUser) cuserFactory.getCUserService(EnumAppPlat.TOUTIAO).getByOpenId(open_id, tenantEntity.getTenantId()); + TtCUser cuser = (TtCUser) cuserFactory.getCUserService(EnumAppPlat.TOUTIAO).getByOpenId(open_id, appinfo.getTenantId()); if(cuser != null && cuser.getUserId() != null){ memberId = cuser.getUserId(); } @@ -250,7 +257,7 @@ public class WxOrderController extends BaseController { Map data = new HashMap<>(); data.put("out_order_no",order.getMainOrderId().toString()); data.put("pay_expire_seconds",14*60); - data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(order.getMainOrderId())); + data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(mall.getTenantId(),order.getMainOrderId())); if(order.getExtParam() != null && !order.getExtParam().isEmpty()){ data.put("order_goods_info",order.getExtParam()); } @@ -752,26 +759,28 @@ public class WxOrderController extends BaseController { JSONObject msgObject = JSONObject.parseObject(msg); String app_id = msgObject.getString("app_id"); String open_id = msgObject.getString("open_id"); - + String cp_extra = msgObject.getString("cp_extra"); + String tenantId = getTenantId(cp_extra); + WxMall mall = mallService.getByTenantId(tenantId); //验证app - WxAppinfo appinfo = wxAppinfoService.getByAppId(app_id); + WxAppinfo appinfo = wxAppinfoService.getOnlyByAppIdFromRedis(app_id); if(appinfo == null || !EnumAppPlat.TOUTIAO.getCode().equals(appinfo.getPlat()) || !EnumAppType.C.getCode().equals(appinfo.getType())){ map.put("err_no",ErrorCode.APP_ID_NOT_FOUND.getCode()); map.put("err_tips",ErrorCode.APP_ID_NOT_FOUND.getMessage()); return map; } - WxPayAccount payAccount = wxPayAccountService.getById(appinfo.getPayId()); + WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appinfo.getPayId()); if(payAccount == null){ map.put("err_no",ErrorCode.API_KEY_NOT_FOUND.getCode()); map.put("err_tips","未找到支付配置"); return map; } TenantEntity tenantEntity = new TenantEntity(); - tenantEntity.updateTenantInfo(appinfo); + tenantEntity.updateTenantInfo(mall); //验证用户 Long memberId = null; - TtCUser cuser = (TtCUser) cuserFactory.getCUserService(EnumAppPlat.TOUTIAO).getByOpenId(open_id, tenantEntity.getTenantId()); + TtCUser cuser = (TtCUser) cuserFactory.getCUserService(EnumAppPlat.TOUTIAO).getByOpenId(open_id, appinfo.getTenantId()); if(cuser != null && cuser.getUserId() != null){ memberId = cuser.getUserId(); } @@ -790,7 +799,7 @@ public class WxOrderController extends BaseController { WxRefundOrder refundOrder = (WxRefundOrder) resultData.data; Map data = new HashMap<>(); data.put("out_refund_no",refundOrder.getId().toString()); - data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(Long.parseLong(refundOrder.getPayOrderNo()))); + data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(mall.getTenantId(),Long.parseLong(refundOrder.getPayOrderNo()))); map.put("data",data); map.put("err_no",0); map.put("err_tips",resultData.message); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index 8ae49592a..97ff599b0 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -113,7 +113,7 @@ public class WxPayOrderController extends BaseController { if (null != wxCUserBasicInfo && EnumCreditLockedStatus.CLOSE.getCode().equals(wxCUserBasicInfo.getStatus())) { return new ResultData(ErrorCode.MEMBER_IS_LOCKED); } - WxAppinfo appInfo = getAppInfo(appId); + WxAppinfo appInfo = wxAppinfoService.getByAppIdFromRedis(appId,getTenantInfo().getTenantId()); if(appInfo == null) { return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java index b4d4d3249..7492605a7 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java @@ -6,6 +6,7 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxOrderPress; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.enums.EnumOrderPressStatus; import com.iformall.enums.EnumOrderStatus; @@ -91,12 +92,15 @@ public class WxPressOrderController extends BaseController { ValueOperations operations = orderRedisTemplate.opsForValue(); // 缓存 boolean hasKey = orderRedisTemplate.hasKey(key); + + TenantEntity tenantEntity = getTenantInfo(); + if (hasKey) { // 从缓存获取砍价订单信息 order = operations.get(key); } else { // 订单没有入缓存,需要从数据库中读取 - order = wxOrderService.getById(orderId,getTenantInfo().getTenantId()); + order = wxOrderService.getById(orderId,tenantEntity.getTenantId()); if (order != null) { // 订单优化,进缓存 orderRedisTemplate.opsForValue().set(key, order, 3600, TimeUnit.SECONDS); @@ -117,7 +121,7 @@ public class WxPressOrderController extends BaseController { wxCouponCVo = cdOperations.get(cdKey); } else { // 券信息没有入缓存,需要从数据库中读取 - wxCouponCVo = wxCouponService.getVoById(order.getProductId(),order.getTenantId()); + wxCouponCVo = wxCouponService.getVoById(order.getProductId(),order.getTenantId(),tenantEntity); if (wxCouponCVo != null) { // 券详情优化,进缓存 couponCVoRedisTemplate.opsForValue().set(cdKey, wxCouponCVo, 3600, TimeUnit.SECONDS); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index 379da787c..6c738c394 100755 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -183,7 +183,7 @@ public class WxUserGrantController extends BaseController { //其他参数 String systemInfo = map.get("systemInfo"); - WxAppinfo wxAppinfo = wxAppinfoService.getByAppId(appId); + WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId); if(wxAppinfo == null){ return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } @@ -214,7 +214,7 @@ public class WxUserGrantController extends BaseController { } if(mallList != null && mallList.size() >0){ mallList.stream().forEach(cs -> { - WxAppinfo cAppInfo = wxAppinfoService.getCAppInfoFromRedis(cs.getTenantId(), EnumAppPlat.WX); + WxAppinfo cAppInfo = wxAppinfoService.getCAppInfoFromRedis(cs.getTenantId(), appPlat); cs.setAppId(cAppInfo.getAppId()); }); resultMap.put("subMalls", JSON.toJSONString(mallList)); @@ -244,8 +244,8 @@ public class WxUserGrantController extends BaseController { } HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - request.setAttribute(Constant.TENANT_ID, wxMall.getTenantId()); - request.setAttribute(Constant.PARENT_TENANT_ID, wxMall.getParentTenantId()); +// request.setAttribute(Constant.TENANT_ID, wxMall.getTenantId()); +// request.setAttribute(Constant.PARENT_TENANT_ID, wxMall.getParentTenantId()); String ipaddress = IPUtil.getIpAddr(request); CUser cUser = new CUser(); @@ -270,7 +270,7 @@ public class WxUserGrantController extends BaseController { cUser = cuserFactory.getCUserService(appPlat).handleLoginUser(cUser,wxCUserFrom); resultMap.put("token", cUser.getToken()); - request.setAttribute(Constant.LOGIN_USER_KEY, cUser.getId()); +// request.setAttribute(Constant.LOGIN_USER_KEY, cUser.getId()); return new ResultData(resultMap); } @@ -370,7 +370,7 @@ public class WxUserGrantController extends BaseController { } CUser user = getCUser(); if (user != null) { - WxAppinfo wxAppinfo = wxAppinfoService.getByAppId(user.getAppId()); + WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(user.getAppId()); if(wxAppinfo == null){ return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } @@ -417,7 +417,7 @@ public class WxUserGrantController extends BaseController { if (user == null) { return new ResultData(ErrorCode.USER_IS_EMPTY); } - WxAppinfo wxAppinfo = wxAppinfoService.getByAppId(user.getAppId()); + WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(user.getAppId()); if(wxAppinfo == null){ return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } diff --git a/mallinkCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java b/mallinkCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java index df5ed6b19..b24b91487 100644 --- a/mallinkCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java +++ b/mallinkCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java @@ -1,13 +1,16 @@ package com.iformall.interceptor; +import com.alibaba.fastjson.JSONObject; import com.iformall.annotation.AuthIgnore; import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.TenantThreadLocal; +import com.iformall.domain.po.WxMall; import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.exception.MallinkException; import com.iformall.service.CUserTokenService; +import com.iformall.service.WxMallService; import com.iformall.utils.Constant; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -26,9 +29,13 @@ import javax.servlet.http.HttpServletResponse; */ @Component public class AuthorizationInterceptor extends HandlerInterceptorAdapter { + @Autowired private CUserTokenService cUserTokenService; + @Autowired + private WxMallService wxMallService; + @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { @@ -63,18 +70,54 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { if(cUser == null || cUser.getExpireTime().getTime() < System.currentTimeMillis()){ throw new MallinkException(ErrorCode.NET_TOKEN_INVALID.getCode(), "URL:" + request.getRequestURL() + " token失效,请重新登录"); } + + //集团版中针对某一商场的业务需要传递mallTenantId + String mallTenantId = request.getHeader("mallTenantId"); + if(StringUtils.isBlank(mallTenantId)){ + mallTenantId = request.getParameter("mallTenantId"); + } + if(StringUtils.isBlank(mallTenantId)){ + try{ + String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); + mallTenantId = JSONObject.parseObject(body).getString("mallTenantId"); + }catch(Exception e){} + } + String tenantId = null; + String parenTenantId = null; //设置userId到request里,后续根据userId,获取用户信息 request.setAttribute(Constant.LOGIN_USER_KEY, cUser.getId()); - request.setAttribute(Constant.TENANT_ID, cUser.getTenantId()); - request.setAttribute(Constant.REQUEST_C_USER_KEY, cUser); - request.setAttribute(Constant.APP_INFO,cUser.getAppinfo()); - if (StringUtils.isNotBlank(cUser.getParentTenantId())) { - request.setAttribute(Constant.PARENT_TENANT_ID, cUser.getParentTenantId()); + if(StringUtils.isNotBlank(mallTenantId)){ + tenantId = mallTenantId; + WxMall mall = wxMallService.getByTenantId(tenantId); + if(StringUtils.isNotBlank(mall.getParentTenantId())){ + parenTenantId = mall.getParentTenantId(); + } + }else{ + tenantId = cUser.getTenantId(); + if (StringUtils.isNotBlank(cUser.getParentTenantId())) { + parenTenantId = cUser.getParentTenantId(); + } } + + if(!tenantId.equals(cUser.getTenantId()) + && !cUser.getTenantId().equals(parenTenantId) + && !tenantId.equals(cUser.getParentTenantId())){ + throw new MallinkException(ErrorCode.SYS_AUTH_ERROR); + } + + request.setAttribute(Constant.TENANT_ID, tenantId); + request.setAttribute(Constant.PARENT_TENANT_ID, parenTenantId); + + request.setAttribute(Constant.REQUEST_C_USER_KEY, cUser); if(cUser.basicInfoIs()){ request.setAttribute(Constant.LOGIN_MEMBER_KEY, cUser.getUserId()); + }else{ + request.setAttribute(Constant.LOGIN_MEMBER_KEY, null); } + + request.setAttribute(Constant.APP_INFO,cUser.getAppinfo()); + //如果是要不需要自动设置tenantI信息 TenantIgnore tenantIgnoreAnnotation = null; @@ -86,7 +129,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { if(tenantIgnoreAnnotation != null){ TenantThreadLocal.remove(); }else { - TenantThreadLocal.setCurrentThreadTenant(cUser.getTenantId(), cUser.getParentTenantId()); + TenantThreadLocal.setCurrentThreadTenant(tenantId, parenTenantId); } return true; diff --git a/mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java index 136963e46..2102881f6 100644 --- a/mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java +++ b/mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java @@ -23,6 +23,7 @@ public class TenantInfoImpl implements TenantInfo { "mall_permission", "mall_sale_type", "mall_user_role", + "wx_brand", "wx_channel", "wx_business", "wx_coupon_type", @@ -59,6 +60,9 @@ public class TenantInfoImpl implements TenantInfo { "fengniao_map_config", "wx_c_user", "tt_c_user", + "tt_buser", + "wx_buser", + "wx_merchant_b_user", "wx_user_visit", "tt_goods_category", }; @@ -67,8 +71,12 @@ public class TenantInfoImpl implements TenantInfo { "wx_mall", "wx_appinfo", "wx_authorizer_info", + "wx_brand", "wx_c_user", "tt_c_user", + "tt_buser", + "wx_buser", + "wx_merchant_b_user", "wx_user_visit", "wx_c_user_basic_info", "user_basic_info_address", diff --git a/mallinkCallback/src/main/java/com/iformall/controller/base/BaseController.java b/mallinkCallback/src/main/java/com/iformall/controller/base/BaseController.java index 757299519..a1dfca5fb 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/base/BaseController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/base/BaseController.java @@ -1,7 +1,9 @@ package com.iformall.controller.base; +import com.alibaba.fastjson.JSONObject; import com.iformall.domain.po.base.TenantEntity; import com.iformall.utils.IPUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RestController; @@ -13,6 +15,7 @@ import java.beans.PropertyEditorSupport; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Map; @RestController public class BaseController { @@ -44,4 +47,22 @@ public class BaseController { String ipaddress = IPUtil.getIpAddr(request); return ipaddress; } + + /** + * 根据扩展字段获取tenantId + */ + public String getTenantId(String attach){ + if(StringUtils.isNotBlank(attach)){ + try{ + Map map = JSONObject.parseObject(attach, Map.class); + String tenantId = map.get("tenantId").toString(); + if(StringUtils.isNotBlank(tenantId)){ + return tenantId; + } + }catch (Exception e){ + + } + } + return null; + } } diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java index c4f38faba..5e7a1c499 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java @@ -100,6 +100,7 @@ public class TtPayController extends BaseController { Map pMap = JSONObject.parseObject(msg, Map.class); String appid; + String tenantId; WxAppinfo appinfo; WxPayAccount payAccount; Boolean is2_0 = false; @@ -111,8 +112,10 @@ public class TtPayController extends BaseController { String nonce = request.getHeader("Byte-Nonce-Str"); appid = (String) pMap.get("app_id"); - appinfo = appinfoService.getByAppId(appid); - payAccount = payAccountService.getById(appinfo.getPayId()); + String cp_extra = (String) pMap.get("cp_extra"); + tenantId = getTenantId(cp_extra); + appinfo = appinfoService.getOnlyByAppIdFromRedis(appid); + payAccount = payAccountService.getByIdFromRedis(appinfo.getPayId()); TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); String beforeSign = String.format("%s\n%s\n%s\n", @@ -134,8 +137,10 @@ public class TtPayController extends BaseController { String nonce = (String) parameterMap.get("nonce"); appid = (String) pMap.get("appid"); - appinfo = appinfoService.getByAppId(appid); - payAccount = payAccountService.getById(appinfo.getPayId()); + String cp_extra = (String) pMap.get("cp_extra"); + tenantId = getTenantId(cp_extra); + appinfo = appinfoService.getOnlyByAppIdFromRedis(appid); + payAccount = payAccountService.getByIdFromRedis(appinfo.getPayId()); Map paramMap = new HashMap<>(); paramMap.put("token",payAccount.getNotifyToken()); @@ -164,7 +169,7 @@ public class TtPayController extends BaseController { if (StringUtils.isNotBlank(out_order_no)) { try { Long orderId = Long.valueOf(out_order_no); - WxPayOrder wxpayOrder = wxPayOrderService.getById(orderId, appinfo.getTenantId()); + WxPayOrder wxpayOrder = wxPayOrderService.getById(orderId, tenantId); if(wxpayOrder == null){ logger.error("未找到订单"+orderId); resultMap.put("err_tips","未找到订单"); @@ -207,6 +212,7 @@ public class TtPayController extends BaseController { } Map map = new HashMap<>(); + map.put("tenantId",tenantId); map.put("appid",appid); map.put("cp_refundno",cp_refundno); map.put("status",status); @@ -216,6 +222,7 @@ public class TtPayController extends BaseController { String jsonMsg = JSON.toJSONString(map); FmInsideNotifyRefundSuccessMsg refundSuccessMsg = new FmInsideNotifyRefundSuccessMsg(); + refundSuccessMsg.setTenantId(tenantId); refundSuccessMsg.setMsgType(EnumMsgRecordType.INSIDE_NOTIFY_REFUND_SUCCESS.getCode()); refundSuccessMsg.setDelayTimeLevel(3); refundSuccessMsg.setPayWay(EnumPayWay.PAY_WAY_TT.getCode()); @@ -233,7 +240,7 @@ public class TtPayController extends BaseController { String out_settle_no = (String) pMap.get("out_settle_no"); String status = (String) pMap.get("status"); WxProfitSharingOrder wxProfitSharingOrder = new WxProfitSharingOrder(); - wxProfitSharingOrder.setTenantId(appinfo.getTenantId()); + wxProfitSharingOrder.setTenantId(tenantId); wxProfitSharingOrder.setOutSettleNo(Long.parseLong(out_settle_no)); WxProfitSharingOrder one = wxProfitSharingOrderService.findOne(wxProfitSharingOrder); if(one != null){ diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java index 1e3ad99cc..01d51661b 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/TtWebController.java @@ -70,7 +70,7 @@ public class TtWebController extends BaseController { } String client_key = (String) parameterMap.get("client_key"); - WxAppinfo appInfo = wxAppinfoService.getByAppId(client_key); + WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(client_key); if(appInfo == null){ resultMap.put("err_code",1000); resultMap.put("err_tips","error"); @@ -109,14 +109,16 @@ public class TtWebController extends BaseController { // String status = (String) content.get("status"); TtCouponChannelPoi couponChannelPoi = new TtCouponChannelPoi(); - couponChannelPoi.updateTenantInfo(appInfo); +// couponChannelPoi.updateTenantInfo(appInfo); couponChannelPoi.setSpuId(product_id); if("FAIL".equals(status)){ couponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_rejection.getCode()); couponChannelPoi.setLastStatusDesc(reason); }else if("PASS".equals(status)){ - couponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_pass.getCode()); +// couponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_pass.getCode()); + //抖音审核通过既上架 + couponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_put_on.getCode()); couponChannelPoi.setLastStatusDesc(reason); }else{ diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayBillController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayBillController.java index 0985dc963..8ed3504f5 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayBillController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayBillController.java @@ -1,13 +1,16 @@ package com.iformall.controller.callback; +import com.alibaba.fastjson.JSON; import com.iformall.controller.base.BaseController; import com.iformall.enums.EnumPayVersion; import com.iformall.enums.EnumPayWay; import com.iformall.exception.BizMessageException; import com.iformall.exception.MallinkException; import com.iformall.pay.WxPayment; +import com.iformall.service.MailService; import com.iformall.service.WxPayBillService; import com.iformall.service.WxRefundOrderService; +import com.iformall.utils.DateUtils; import com.iformall.utils.XmlUtil; import org.apache.commons.io.IOUtils; import org.jdom2.JDOMException; @@ -24,6 +27,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; +import java.util.Date; import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; @@ -37,6 +41,12 @@ public class WxPayBillController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Autowired + private String fmExceptionEmails; + + @Autowired + private MailService mailService; + @Autowired private WxPayBillService wxPayBillService; @@ -69,7 +79,8 @@ public class WxPayBillController extends BaseController { try { paramMap = WxPayment.xmlToMap(resultxml); logger.info("微信支付回调, notify, param: " + paramMap.toString() ); - String response = wxPayBillService.notify(paramMap, EnumPayWay.PAY_WAY_WECHAT); + String attach = paramMap.get("attach"); + String response = wxPayBillService.notify(getTenantId(attach),paramMap, EnumPayWay.PAY_WAY_WECHAT); logger.info("微信支付回调, notify success, req : " + resultxml + ", resp: " + response.toString()); return response; } catch (BizMessageException e) { @@ -121,6 +132,7 @@ public class WxPayBillController extends BaseController { xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8")); logger.info(xml); paramMap = WxPayment.xmlToMap(xml); + response = wxRefundOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WECHAT,EnumPayVersion.WX_PAY_V2); logger.info("refund wxpay, notify success, req : " + xml + ", resp: " + response.toString()); return response; @@ -160,7 +172,17 @@ public class WxPayBillController extends BaseController { xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8")); paramMap = WxPayment.xmlToMap(xml); logger.info("share wxpay, notify, param: " + xml ); - response = wxPayBillService.notify(paramMap, EnumPayWay.PAY_WAY_WECHAT); + //发邮件 + String[] receivers = fmExceptionEmails.split(","); + StringBuilder sb = new StringBuilder(); + sb.append(DateUtils.date2String(new Date())); + sb.append("\n"); + sb.append("分账回调 :WxPayBillController"); + sb.append("\n"); + sb.append(JSON.toJSONString(paramMap)); + //发送邮件 + mailService.sendSimpleMail(receivers, "排查回调位置", sb.toString()); +// response = wxPayBillService.notify(paramMap, EnumPayWay.PAY_WAY_WECHAT); logger.info("share wxpay, notify success, req : " + xml + ", resp: " + response.toString()); return response; } catch (BizMessageException e) { diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayController.java index 192324f34..060905998 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayController.java @@ -10,9 +10,11 @@ import com.iformall.exception.BizMessageException; import com.iformall.exception.MallinkException; import com.iformall.mq.MqBaseProducer; import com.iformall.pay.WxPayment; +import com.iformall.service.MailService; import com.iformall.service.WxPayOrderService; import com.iformall.service.WxRefundOrderService; import com.iformall.service.WxSubsidyService; +import com.iformall.utils.DateUtils; import com.iformall.utils.XmlUtil; import org.apache.commons.io.IOUtils; import org.jdom2.JDOMException; @@ -32,10 +34,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; -import java.util.HashMap; -import java.util.Map; -import java.util.SortedMap; -import java.util.TreeMap; +import java.util.*; @RestController @RequestMapping("/wxPay/notify") @@ -51,14 +50,20 @@ public class WxPayController extends BaseController { @Autowired private MqBaseProducer mqBaseProducer; + + @Autowired + private String fmExceptionEmails; + + @Autowired + private MailService mailService; /** * * @return 接收微信异步通知 * @throws Exception 可能产生的任何异常 */ - @RequestMapping(value = "/pay", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + @RequestMapping(value = "/pay/{tenantId}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @ResponseBody - public String _payNotify(HttpServletRequest request) throws IOException, JDOMException { + public String _payNotify(@PathVariable String tenantId,HttpServletRequest request) throws IOException, JDOMException { logger.info("[" +getIpAddr() + "]微信支付回调"); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "SUCCESS"); @@ -139,8 +144,8 @@ public class WxPayController extends BaseController { * @return 接收微信退款异步通知 * @throws Exception 可能产生的任何异常 */ - @RequestMapping(value = "/refund") - public String __refundNotify(HttpServletRequest request) throws Exception { + @RequestMapping(value = "/refund/{tenantId}") + public String __refundNotify(@PathVariable String tenantId,HttpServletRequest request) throws Exception { logger.info("[" +getIpAddr() + "]微信退款回调"); Map paramMap = null; String response = ""; @@ -152,6 +157,7 @@ public class WxPayController extends BaseController { String jsonMsg = JSON.toJSONString(paramMap); FmInsideNotifyRefundSuccessMsg refundSuccessMsg = new FmInsideNotifyRefundSuccessMsg(); + refundSuccessMsg.setTenantId(tenantId); refundSuccessMsg.setMsgType(EnumMsgRecordType.INSIDE_NOTIFY_REFUND_SUCCESS.getCode()); refundSuccessMsg.setDelayTimeLevel(3); refundSuccessMsg.setPayWay(EnumPayWay.PAY_WAY_WECHAT.getCode()); @@ -216,6 +222,7 @@ public class WxPayController extends BaseController { String jsonMsg = JSON.toJSONString(paramMap); FmInsideNotifyRefundSuccessMsg refundSuccessMsg = new FmInsideNotifyRefundSuccessMsg(); + refundSuccessMsg.setTenantId(tenantId); refundSuccessMsg.setMsgType(EnumMsgRecordType.INSIDE_NOTIFY_REFUND_SUCCESS.getCode()); refundSuccessMsg.setDelayTimeLevel(3); refundSuccessMsg.setPayWay(EnumPayWay.PAY_WAY_WECHAT.getCode()); @@ -262,8 +269,18 @@ public class WxPayController extends BaseController { try { xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8")); paramMap = WxPayment.xmlToMap(xml); + //发邮件 + String[] receivers = fmExceptionEmails.split(","); + StringBuilder sb = new StringBuilder(); + sb.append(DateUtils.date2String(new Date())); + sb.append("\n"); + sb.append("分账回调 WxPayController:"); + sb.append("\n"); + sb.append(JSON.toJSONString(paramMap)); + //发送邮件 + mailService.sendSimpleMail(receivers, "排查回调位置", sb.toString()); logger.info("share wxpay, notify, param: " + xml ); - response = wxPayOrderService.shareNotify(paramMap, EnumPayWay.PAY_WAY_WECHAT,EnumPayVersion.WX_PAY_V2); +// response = wxPayOrderService.shareNotify(paramMap, EnumPayWay.PAY_WAY_WECHAT,EnumPayVersion.WX_PAY_V2); logger.info("share wxpay, notify success, req : " + xml + ", resp: " + response.toString()); return response; } catch (BizMessageException e) { diff --git a/mallinkNeuPosAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkNeuPosAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java index 136963e46..2102881f6 100644 --- a/mallinkNeuPosAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java +++ b/mallinkNeuPosAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java @@ -23,6 +23,7 @@ public class TenantInfoImpl implements TenantInfo { "mall_permission", "mall_sale_type", "mall_user_role", + "wx_brand", "wx_channel", "wx_business", "wx_coupon_type", @@ -59,6 +60,9 @@ public class TenantInfoImpl implements TenantInfo { "fengniao_map_config", "wx_c_user", "tt_c_user", + "tt_buser", + "wx_buser", + "wx_merchant_b_user", "wx_user_visit", "tt_goods_category", }; @@ -67,8 +71,12 @@ public class TenantInfoImpl implements TenantInfo { "wx_mall", "wx_appinfo", "wx_authorizer_info", + "wx_brand", "wx_c_user", "tt_c_user", + "tt_buser", + "wx_buser", + "wx_merchant_b_user", "wx_user_visit", "wx_c_user_basic_info", "user_basic_info_address", diff --git a/mallinkPosApi/src/main/java/com/iformall/controller/BaseController.java b/mallinkPosApi/src/main/java/com/iformall/controller/BaseController.java index 9de3e25f0..018a5b523 100644 --- a/mallinkPosApi/src/main/java/com/iformall/controller/BaseController.java +++ b/mallinkPosApi/src/main/java/com/iformall/controller/BaseController.java @@ -56,28 +56,6 @@ public class BaseController { }); } - public WxAppinfo getAppInfo(String appId) { - return wxAppinfoService.getByAppId(appId); - } - - public WxMaService getWeappService(String appId) { - if(isFmOpen) { - return openService.getWxOpenComponentService().getWxMaServiceByAppid(appId); - } else { - WxAppinfo appinfo = wxAppinfoService.getByAppId(appId); - WxMaService service = maUtil.getWeappService(appinfo); - return service; - } - } - - public WxMaService getWeappServiceByAppInfo(WxAppinfo appinfo) { - if(!isFmOpen) { - WxMaService service = maUtil.getWeappService(appinfo); - return service; - } - return null; - } - public String getIpAddr() { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String ipaddress = IPUtil.getIpAddr(request); diff --git a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java index 5e52e8687..ea5c90ac2 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java @@ -109,7 +109,7 @@ public class PosServiceImpl implements PosService { List orgUserList = null; try { - orgUserList = merchantBUserService.getBUserByAppId(userQ); + orgUserList = merchantBUserService.findList(userQ); } catch (Exception e) { String errMessage = ErrorCode.MERCHANT_BUSER_NOT_VALID.getMessage() + "phone: " + phone + ", " +e.getMessage(); throw new MallinkException(ErrorCode.MERCHANT_BUSER_NOT_VALID.getCode(), errMessage); @@ -447,7 +447,8 @@ public class PosServiceImpl implements PosService { * @param couponOrderIdStr * @return */ - public JSONObject oneCouponVerify(PromotionCalc promotionCalc,TenantEntity tenantinfo, String couponOrderIdStr, Long merchantId, Long buUserId, Long posOrderId) { + public JSONObject oneCouponVerify(PromotionCalc promotionCalc,TenantEntity tenantinfo, String couponOrderIdStr, Long merchantId, + Long buUserId,String mallTenantId, Long posOrderId) { JSONObject retObj = new JSONObject(); Date now = new Date(); // 1. 获取券包信息 @@ -473,7 +474,7 @@ public class PosServiceImpl implements PosService { } try { - doVerify(retObj, EnumPosActionType.VERIFY_INDEPENT, couponOrderCVo, wxCoupon, merchantId, buUserId, posOrderId); + doVerify(retObj, EnumPosActionType.VERIFY_INDEPENT, couponOrderCVo, wxCoupon, merchantId, buUserId,mallTenantId, posOrderId); } catch (MallinkException e) { logger.error(e.getMessage()); throw new MallinkException(e.getErrorCode(), e.getMessage()); @@ -564,7 +565,8 @@ public class PosServiceImpl implements PosService { * @param couponSelected * @return */ - private JSONObject oneCouponPay(PromotionCalc promotionCalc, WxCouponOrderCVo couponOrderCVo, Long merchantId, Long buUserId, Long posOrderId, boolean couponSelected) { + private JSONObject oneCouponPay(PromotionCalc promotionCalc, WxCouponOrderCVo couponOrderCVo, Long merchantId, + Long buUserId, String mallTenantId,Long posOrderId, boolean couponSelected) { JSONObject retObj = new JSONObject(); Date curDate = new Date(); @@ -624,7 +626,7 @@ public class PosServiceImpl implements PosService { throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); } try { - doVerify(retObj, EnumPosActionType.VERIFY_PAY, couponOrderCVo, wxCoupon, merchantId, buUserId, posOrderId); + doVerify(retObj, EnumPosActionType.VERIFY_PAY, couponOrderCVo, wxCoupon, merchantId, buUserId,mallTenantId, posOrderId); } catch (MallinkException e) { logger.error(e.getMessage()); throw new MallinkException(e.getErrorCode(), e.getMessage()); @@ -883,7 +885,7 @@ public class PosServiceImpl implements PosService { String couponOrderIdStr = couponOrderArr.getString(0); if (couponOrderIdStr != null) { try { - JSONObject couponPromoMap = oneCouponVerify(promotionCalc,tenantEntity, couponOrderIdStr, merchantId, buUserId, posOrderId); + JSONObject couponPromoMap = oneCouponVerify(promotionCalc,tenantEntity, couponOrderIdStr, merchantId, buUserId,merchant.getTenantId(), posOrderId); couponList.add(couponPromoMap); } catch (MallinkException e) { throw new MallinkException(e.getErrorCode(), e.getMessage()); @@ -967,7 +969,7 @@ public class PosServiceImpl implements PosService { WxCouponOrderCVo couponOrderCVo = avaCoList.get(i); boolean selCoupon = isSelCoupon(selCoArr, couponOrderCVo.getId()); try { - JSONObject couponObj = oneCouponPay(promotionCalc, couponOrderCVo, merchantId, buUserId, posOrderId, selCoupon); + JSONObject couponObj = oneCouponPay(promotionCalc, couponOrderCVo, merchantId, buUserId,merchant.getTenantId(), posOrderId, selCoupon); couponList.add(couponObj); } catch (MallinkException e) { throw new MallinkException(e.getErrorCode(), e.getMessage()); @@ -1277,7 +1279,7 @@ public class PosServiceImpl implements PosService { * @param posOrderId */ private void doVerify(JSONObject retMap, EnumPosActionType actionType, WxCouponOrderCVo couponOrderCVo, WxCoupon coupon, - Long merchantId, Long buUserId, Long posOrderId) { + Long merchantId, Long buUserId,String mallTenantId, Long posOrderId) { int num = 0; // 1. insert posOrderId PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify(); @@ -1307,6 +1309,7 @@ public class PosServiceImpl implements PosService { } couponOrder.setBUserId(buUserId); couponOrder.setBMerchantId(merchantId); + couponOrder.setBTenantId(mallTenantId); couponOrder.setUpdateDate(curDate); if (couponOrderCVo.getBUserId() == null) { num = couponOrderMapper.updateVerifyCouponOrder(couponOrder); @@ -2172,15 +2175,18 @@ public class PosServiceImpl implements PosService { } // 4. 积分 + WxMerchant wxMerchant = merchantMapper.selectById(merchantBUser.getMerchantId()); + if (null == wxMerchant) { + throw new MallinkException(ErrorCode.COUPON_MERCHANT_NOT_FOUND); + } try { - WxMerchant wxMerchant = merchantMapper.selectById(merchantBUser.getMerchantId()); int credit = posAddCredit(couponOrderCVo, wxCoupon, merchantBUser, wxMerchant); scoreCreditCalc.setCredit(scoreCreditCalc.getCredit() + credit); } catch (Exception e) { logger.error("交易核销积分异常:" + e.getMessage()); } // 3. 核销后处理 - couponOrderService.sendInsideCouponVerifyMsg(merchantBUser, couponOrderId, merchantBUser.getMerchantId(),merchantBUser.getMerchantId()); + couponOrderService.sendInsideCouponVerifyMsg(couponOrderId,merchantBUser,merchantBUser.getMerchantId(),merchantBUser); } return payOrder; } diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java index 713123ba4..33033768f 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java @@ -133,8 +133,8 @@ public class CouponOrderExpiringSchedule { logger.error("核销异常: " + e.getMessage()); } - if (couponOrder != null && couponOrder.getMerchantId() != null) { - wxCouponOrderService.sendInsideCouponVerifyMsg(couponOrder, couponOrder.getId(), couponOrder.getMerchantId(),couponOrder.getBMerchantId()); + if (couponOrder != null) { + wxCouponOrderService.sendInsideCouponVerifyMsg(couponOrder.getId(),couponOrder, couponOrder.getBMerchantId(), couponOrder); } }); } diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/WeChatAccessTokenSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/WeChatAccessTokenSchedule.java index a8ab2ceb4..e7d435cc2 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/WeChatAccessTokenSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/WeChatAccessTokenSchedule.java @@ -14,6 +14,8 @@ import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Component public class WeChatAccessTokenSchedule { @@ -38,10 +40,15 @@ public class WeChatAccessTokenSchedule { WxAppinfo appinfoQ = new WxAppinfo(); List appList = wxAppinfoMapper.findList(appinfoQ); + Map> collect = appList.stream().collect(Collectors.groupingBy(WxAppinfo::getAppId, Collectors.toList())); - for (WxAppinfo appinfo : appList) { - resetAccessToken(appinfo); + for (String appId:collect.keySet()) { + List wxAppinfoList = collect.get(appId); + resetAccessToken(wxAppinfoList.get(0)); } +// for (WxAppinfo appinfo : appList) { +// resetAccessToken(appinfo); +// } } logger.info("微信访问AccessToken获取定时任务结束"); @@ -52,10 +59,11 @@ public class WeChatAccessTokenSchedule { try { String accessToken = wxMaService.getAccessToken(true); WxAppinfo updateAppInfo = new WxAppinfo(); + updateAppInfo.setAppId(appinfo.getAppId()); updateAppInfo.setAccessToken(accessToken); updateAppInfo.setLastTokenTime(new Date()); updateAppInfo.setExpiresIn(7200); - wxAppinfoMapper.updateById(updateAppInfo); + wxAppinfoMapper.updateAccessToken(updateAppInfo); } catch (WxErrorException e) { logger.error(e.getMessage()); } catch (Exception e) { diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index b34b3b6e8..543021484 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -113,6 +113,8 @@ public enum ErrorCode{ MERCHANT_BUSER_NOT_VALID(2016, "商户用户不存在或已被禁用"), MERCHANT_HASRENTCONTRACT(2017,"该商户存在计租中合同"), MERCHANT_CODE_IS_FOUND(2018, "商户编码已存在"), + MERCHANT_BRAND_IS_FOUND(2019, "品牌商户已存在"), + MERCHANT_ADMIN_IS_FOUND(20020, "商管商户已存在"), /** * 券 diff --git a/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java b/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java index edf813cbd..d9da5085b 100644 --- a/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java +++ b/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java @@ -323,6 +323,13 @@ public class BaseMyBatisConfiguration { wxPressBatchItemSharding.setRule(EnumShardingRule.HASH.getCode()); shardingList.add(wxPressBatchItemSharding); + ShardingSphere wxCouponMallSharding = new ShardingSphere(); + wxCouponMallSharding.setColumn("tenant_id"); + wxCouponMallSharding.setTableName("wx_coupon_mall"); + wxCouponMallSharding.setCount(100); + wxCouponMallSharding.setRule(EnumShardingRule.HASH.getCode()); + shardingList.add(wxCouponMallSharding); + //初始化 shardingSpherePlugin.setShardingSpheres(shardingList); Properties properties = new Properties(); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/TtCouponChannelPoi.java b/mallinkService/src/main/java/com/iformall/domain/po/TtCouponChannelPoi.java index 03866d5ab..cfd78b340 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/TtCouponChannelPoi.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/TtCouponChannelPoi.java @@ -32,7 +32,7 @@ public class TtCouponChannelPoi extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="描述",name="statusDesc") private String statusDesc; - @io.swagger.annotations.ApiModelProperty(value="状态:0-审核中,1-上架,2-下架,3-审核拒绝 4-审核通过",name="lastStatus") + @io.swagger.annotations.ApiModelProperty(value="EnumSpuSyncStatus状态:0-审核中,1-上架,2-下架,3-审核拒绝 4-审核通过",name="lastStatus") private Integer lastStatus; @io.swagger.annotations.ApiModelProperty(value="描述",name="lastStatusDesc") 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 0e380a147..36cc5f6c3 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java @@ -42,6 +42,9 @@ public class WxCoupon extends TenantEntity { @TableField(exist = false) protected List notinTypes; + @TableField(exist = false) + protected Integer plat; + @TableField(exist = false) protected String channels; @@ -203,6 +206,9 @@ public class WxCoupon extends TenantEntity { private Long merchantId; @TableField(exist = false) private String merchantName; + + @TableField(exist = false) + private String childMerchantParams; @TableField(exist = false) @io.swagger.annotations.ApiModelProperty(value="投放频道参数,用来过滤",name="targetAd") @@ -252,6 +258,9 @@ public class WxCoupon extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="直连收款门店",name="makeMerchantId") private Long makeMerchantId; + @io.swagger.annotations.ApiModelProperty(value="品牌",name="brand") + private Long brand; + @io.swagger.annotations.ApiModelProperty(value="第三方商品Id",name="goodsId") private String goodsId; @@ -363,8 +372,34 @@ public class WxCoupon extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "审批流参数", name = "flowParams") private Map flowParams; + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="spuId",name="spuId")//goodsId + private String spuId; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="状态:0-审核中,1-上架,2-下架,3-审核拒绝 4-审核通过",name="poiStatus") + private Integer poiStatus; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="描述",name="statusDesc") + private String statusDesc; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="状态:0-审核中,1-上架,2-下架,3-审核拒绝 4-审核通过",name="lastStatus") + private Integer lastStatus; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="描述",name="lastStatusDesc") + private String lastStatusDesc; + @io.swagger.annotations.ApiModelProperty(value = "是否删除1是0否", name = "isDel") private Integer isDel; + + @TableField(exist = false) + private Long[] merchantIds; + + @TableField(exist = false) + private String[] mallTenantIds; public String getSalePriceStr() { if(salePrice!=null) { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponMall.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponMall.java new file mode 100644 index 000000000..dc8f22de7 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponMall.java @@ -0,0 +1,37 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; +import java.util.List; + +@TableName(value = "wx_coupon_mall") +@Data +@EqualsAndHashCode(callSuper = true) +public class WxCouponMall extends TenantEntity { + + private static final long serialVersionUID = -2285755324480617990L; + + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="",name="productId") + private Long productId; + @TableField(exist = false) + private List productIds; + @io.swagger.annotations.ApiModelProperty(value="",name="mallTenantId") + private String mallTenantId; + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") + private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="修改时间",name="updateDate") + private Date updateDate; + @io.swagger.annotations.ApiModelProperty(value="状态",name="status") + private Integer status; + + @io.swagger.annotations.ApiModelProperty(value="商场信息",name="mall") + @TableField(exist = false) + protected WxMall mall; +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java index 0d267d630..310022023 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java @@ -35,14 +35,16 @@ public class WxCouponOrder extends TenantEntity { private Long cUserId; @io.swagger.annotations.ApiModelProperty(value = "持有者ID", name = "ownerId") private Long ownerId; - @io.swagger.annotations.ApiModelProperty(value = "操作券B端小程序用户ID", name = "bUserId") + @io.swagger.annotations.ApiModelProperty(value = "商户用户ID", name = "bUserId") private Long bUserId; @TableField(exist = false) private List bUserIdList; - @io.swagger.annotations.ApiModelProperty(value = "操作券B端小程序用户商户ID", name = "bMerchantId") + @io.swagger.annotations.ApiModelProperty(value = "商户ID", name = "bMerchantId") private Long bMerchantId; @TableField(exist = false) private List bMerchantIdList; + @io.swagger.annotations.ApiModelProperty(value = "b端核销商场tenantId", name = "bTenantId") + private String bTenantId; @io.swagger.annotations.ApiModelProperty(value = "操作券A端用户ID", name = "aUserId") private Long aUserId; @io.swagger.annotations.ApiModelProperty(value = "用户订单ID", name = "orderId") @@ -197,5 +199,8 @@ public class WxCouponOrder extends TenantEntity { @TableField(exist = false) private List shippingStatuss; + + @TableField(exist = false) + private String couponTenantId; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantSubsidy.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantSubsidy.java index 955187786..4e9e04848 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantSubsidy.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantSubsidy.java @@ -39,6 +39,9 @@ public class WxMerchantSubsidy extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId") private Long merchantId; + @io.swagger.annotations.ApiModelProperty(value = "b端核销商场tenantId", name = "bTenantId") + private String bTenantId; + @io.swagger.annotations.ApiModelProperty(value="券包ID/存储卡ID",name="couponOrderId") private Long couponOrderId; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPayAccount.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayAccount.java index 9d18c0054..58a50fa3b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayAccount.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayAccount.java @@ -81,13 +81,13 @@ public class WxPayAccount extends TenantEntity { return notifyUrl + "/pay/v3/"+this.getTenantId(); } public String getPayNotifyUrl() { - return notifyUrl + "/pay"; + return notifyUrl + "/pay/"+this.getTenantId(); } public String getRefundNotifyV3Url() { return notifyUrl + "/refund/v3/"+this.getTenantId(); } public String getRefundNotifyUrl() { - return notifyUrl + "/refund"; + return notifyUrl + "/refund/"+this.getTenantId(); } public String getSubsidyNotifyV3Url() { return notifyUrl + "/subsidyPay/v3/"+this.getTenantId(); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxProfitSharingOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxProfitSharingOrder.java index 9cff2cb2d..83c7fcefd 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxProfitSharingOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxProfitSharingOrder.java @@ -18,10 +18,14 @@ public class WxProfitSharingOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="核销商户ID",name="merchantId") private Long merchantId; + @io.swagger.annotations.ApiModelProperty(value="b端核销商场tenantId",name="bTenantId") + private String bTenantId; @io.swagger.annotations.ApiModelProperty(value="支付时收款商户,直连模式必须有",name="payMerchantId") private Long payMerchantId; @io.swagger.annotations.ApiModelProperty(value="支付时收款商户平台账号,直连模式必须有",name="payMerchantMchId") - private String payMerchantMchId; + private String payMerchantMchId; + @io.swagger.annotations.ApiModelProperty(value="实际到账商户",name="sharingMerchantId") + private Long sharingMerchantId; @io.swagger.annotations.ApiModelProperty(value="支付订单ID",name="wxPayOrderId") private Long orderId; @io.swagger.annotations.ApiModelProperty(value="支付渠道: (抖音分账用)",name="payVendor") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxProfitSharingResult.java b/mallinkService/src/main/java/com/iformall/domain/po/WxProfitSharingResult.java index 79007f550..ca132287b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxProfitSharingResult.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxProfitSharingResult.java @@ -16,7 +16,8 @@ public class WxProfitSharingResult extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId") private Long merchantId; - + @io.swagger.annotations.ApiModelProperty(value="b端核销商场tenantId",name="bTenantId") + private String bTenantId; @io.swagger.annotations.ApiModelProperty(value="分账订单号",name="sharingOrderId") private Long sharingOrderId; @io.swagger.annotations.ApiModelProperty(value="分账接收方id",name="sharingReceiverId") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/base/TenantEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/base/TenantEntity.java index 1a0193db2..b1172ea08 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/base/TenantEntity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/base/TenantEntity.java @@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.EqualsAndHashCode; + +import java.util.List; + import org.apache.commons.lang3.StringUtils; /** @@ -23,10 +26,18 @@ public class TenantEntity extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="父租户ID",name="parentTenantId") @TableField(exist = false) protected String finalTenantId; - + @JsonIgnore @TableField(exist = false) protected String shardTableSuffix; + + @io.swagger.annotations.ApiModelProperty(value="租户编号列表,查询使用",name="tenantIdList") + @TableField(exist = false) + protected List tenantIdList; + + @io.swagger.annotations.ApiModelProperty(value="父租户编号列表,查询使用",name="parentTenantIdList") + @TableField(exist = false) + protected List parentTenantIdList; public void updateTenantInfo(TenantEntity info) { tenantId = info.getTenantId(); @@ -82,4 +93,21 @@ public class TenantEntity extends BaseEntity { public void setFinalTenantId(String finalTenantId) { this.finalTenantId = finalTenantId; } + + public List getTenantIdList() { + return tenantIdList; + } + + public void setTenantIdList(List tenantIdList) { + this.tenantIdList = tenantIdList; + } + + public List getParentTenantIdList() { + return parentTenantIdList; + } + + public void setParentTenantIdList(List parentTenantIdList) { + this.parentTenantIdList = parentTenantIdList; + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/msg/BaseMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/msg/BaseMsg.java index a1f87156f..f99da5db6 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/msg/BaseMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/msg/BaseMsg.java @@ -32,6 +32,10 @@ public class BaseMsg extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="父租户id",name="parentTenantId") private String parentTenantId; + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value = "商场tenant", name = "mallTenantEntity") + private TenantEntity mallTenantEntity; + @io.swagger.annotations.ApiModelProperty(value="唯一标识",name="uuid") @TableField(exist = false) private String uuid; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCouponVerifyMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCouponVerifyMsg.java index ccb05c418..cce2dc3bc 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCouponVerifyMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCouponVerifyMsg.java @@ -12,7 +12,7 @@ public class FmInsideCouponVerifyMsg extends BaseMsg{ @io.swagger.annotations.ApiModelProperty(value = "券包ID", name = "couponOrderId") private Long couponOrderId; - @io.swagger.annotations.ApiModelProperty(value = "分账商户", name = "merchantId") + @io.swagger.annotations.ApiModelProperty(value = "商户", name = "merchantId") private Long merchantId; @io.swagger.annotations.ApiModelProperty(value = "核销商户", name = "bmerchantId") private Long bmerchantId; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderPushMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderPushMsg.java index de0ce14d8..60c0ffbe3 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderPushMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideOrderPushMsg.java @@ -1,5 +1,7 @@ package com.iformall.domain.po.msg; +import com.iformall.domain.po.base.TenantEntity; + import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java index eb714c537..76edc599f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java @@ -117,6 +117,9 @@ public class WxCouponOrderBVo extends WxCouponOrder { @io.swagger.annotations.ApiModelProperty(value="1:A端发卷,2:B端发卷",name="sourceType") private Integer sourceType; + + @io.swagger.annotations.ApiModelProperty(value = "b端核销商场tenantId", name = "bTenantId") + private String bTenantId; public String getbUserName() { return bUserName; @@ -232,7 +235,7 @@ public class WxCouponOrderBVo extends WxCouponOrder { @TableField(exist = false) private Date verifyEndDate; - @Excel(name = "类型", width = 50, orderNum = "16", replace = {"满减券_1", "代金券_2", "团购券_3", "礼品券_4", "停车券_5", "通用券_6", "砍价券_8", "团购券_9", "预购商品_10", "可配送商品_11", "券礼包_12", "积分券_50", "积分停车券_51", "消费卡_100"}) + @Excel(name = "类型", width = 50, orderNum = "16", replace = {"满减券_1", "代金券_2", "团购券_3", "礼品券_4", "停车券_5", "通用券_6", "砍价券_8", "团购券_9", "预购商品_10", "可配送商品_11", "券礼包_12", "积分券_50", "积分停车券_51","抖音券_66","抖音平台券_67","抖音品牌券_68", "消费卡_100"}) @TableField(exist = false) private Integer couponType; diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCreditHistoryVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCreditHistoryVo.java index 04d283223..f5bbb1f7d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCreditHistoryVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCreditHistoryVo.java @@ -47,7 +47,9 @@ public class WxCreditHistoryVo extends BaseTenantEntity { @io.swagger.annotations.ApiModelProperty(value = "操作人类型", name = "operator") private Integer operatorType; - @Excel(name = "操作说明", width = 20, orderNum = "9", replace = {"每日登录_1", "消费_2", "绑车牌_3", "连接WIFI_4", "微信用户昵称授权_5", "微信用户手机授权_6", "完善个人信息_7", "会员导入_8", "会员成长值扣减_9", "新增积分_10", "积分兑换_11", "消费积分_12", "活动报名_13", "积分清零计划_14", "游戏消耗积分_15", "游戏奖励积分_16"}) + @Excel(name = "操作说明", width = 20, orderNum = "9", replace = {"每日登录_1", "消费_2", "绑车牌_3", "连接WIFI_4", "微信用户昵称授权_5", "微信用户手机授权_6", "完善个人信息_7", "会员导入_8", "会员成长值扣减_9", "新增积分_10", "积分兑换_11", "消费积分_12", "活动报名_13", + "积分清零计划_14", "游戏消耗积分_15", "游戏奖励积分_16", "每日签到_17", "连续签到7天_18", "连续签到14天_19", "连续签到28天_20" + , "问卷奖励积分_21", "消费退款_22", "积分兑换退款_23", "其他积分变动_24"}) @io.swagger.annotations.ApiModelProperty(value = "积分类型", name = "creditType") private Integer creditType; 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 ebcc5a03f..79eb55629 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java @@ -77,6 +77,8 @@ public class WxOrderCouponVo extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "操作券B端小程序用户商户ID", name = "bMerchantId") private Long bMerchantId; + @io.swagger.annotations.ApiModelProperty(value = "商场tenant", name = "bTenantId") + private String bTenantId; /** 券类型信息 */ @io.swagger.annotations.ApiModelProperty(value="券类型(1.满减券,2.代金券,3.团购券,4.礼品券,5.停车券,6.多商户券,8.砍价券,9.团购券,100.消费卡)",name="type") @@ -273,6 +275,7 @@ public class WxOrderCouponVo extends TenantEntity { this.setCouponOrderId(couponOrder.getId()); this.setCouponOrderStatus(couponOrder.getCouponOrderStatus()); this.setBMerchantId(couponOrder.getBMerchantId()); + this.setBTenantId(couponOrder.getBTenantId()); this.setShippingStatus(couponOrder.getShippingStatus()); this.setDeliveryInfo(couponOrder.getDeliveryInfo()); this.setCreateDate(couponOrder.getCreateDate()); diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxProfitSharingOrderQueryVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxProfitSharingOrderQueryVo.java index 1ac4c5c93..f4da81be9 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxProfitSharingOrderQueryVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxProfitSharingOrderQueryVo.java @@ -45,6 +45,9 @@ public class WxProfitSharingOrderQueryVo extends TenantEntity { @TableField(exist = false) private Integer limit; + + @TableField(exist = false) + private String bTenantId; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxProfitSharingOrderVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxProfitSharingOrderVo.java index 8593671db..55bb08557 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxProfitSharingOrderVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxProfitSharingOrderVo.java @@ -17,18 +17,34 @@ public class WxProfitSharingOrderVo extends TenantEntity { private Long id; + private String bTenantId; private Long payMerchantId; private String payMerchantMchId; private Long merchantId; private String mchId; - - @Excel(name="商户名称",width = 20,orderNum = "2") - private String merchantName; + private Long sharingMerchantId; @Excel(name="商户单号",width = 20,orderNum = "1") private Long orderId; - @Excel(name="交易金额(分)",width = 20,orderNum = "3") + @Excel(name="商户名称",width = 20,orderNum = "2") + private String merchantName; + + private String payMerchantName; + + @Excel(name="到账商户",width = 20,orderNum = "3") + private String sharingMerchantName; + + public String getSharingMerchantName(){ + if(this.sharingMerchantId != null && this.sharingMerchantId.equals(this.merchantId)){ + this.sharingMerchantName = this.merchantName; + }else if(this.sharingMerchantId != null && this.sharingMerchantId.equals(this.payMerchantId)){ + this.sharingMerchantName = this.payMerchantName; + } + return sharingMerchantName; + } + + @Excel(name="交易金额(分)",width = 20,orderNum = "4") private Integer payAmount; @io.swagger.annotations.ApiModelProperty(value="订单ID",name="singleOrderId") @@ -36,23 +52,23 @@ public class WxProfitSharingOrderVo extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="单个订单分账总金额(分)",name="singleOrderAmount") private Integer singleOrderAmount; - @Excel(name="交易结束时间",exportFormat = "yyyy-MM-dd HH:mm:ss",width = 20,orderNum = "5") +// @Excel(name="交易结束时间",exportFormat = "yyyy-MM-dd HH:mm:ss",width = 20,orderNum = "5") private Date payTimeEnd; - @Excel(name="交易开始时间",exportFormat = "yyyy-MM-dd HH:mm:ss",width = 20,orderNum = "4") + @Excel(name="核销时间",exportFormat = "yyyy-MM-dd HH:mm:ss",width = 20,orderNum = "6") private Date payTimeStart; private String transactionId; private String sharingOrderNo; - @Excel(name="分账类型",width = 20,replace = { "单次分账_0", "多次分账_1", "完结分账(多次)_2", "完结分账(单次)_3"},orderNum = "6") + @Excel(name="分账类型",width = 20,replace = { "单次分账_0", "多次分账_1", "完结分账(多次)_2", "完结分账(单次)_3"},orderNum = "7") private Integer type; private String pointDeduction; private String receivers; private String errorMsg; - @Excel(name="分账状态",width = 20,replace = { "未知_0", "提交订单失败_1", "提交业务失败_2", "受理成功_3", "处理中_4", "处理完成_5", "处理失败_6"},orderNum = "7") + @Excel(name="分账状态",width = 20,replace = { "未知_0", "提交订单失败_1", "提交业务失败_2", "受理成功_3", "处理中_4", "处理完成_5", "处理失败_6"},orderNum = "8") private Integer sharingStatus; private Date updateTime; private Date createTime; diff --git a/mallinkService/src/main/java/com/iformall/douyin/payv2/request/TtPayUnifiedOrderV2Request.java b/mallinkService/src/main/java/com/iformall/douyin/payv2/request/TtPayUnifiedOrderV2Request.java index c24e50a9f..a5e3e579e 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/payv2/request/TtPayUnifiedOrderV2Request.java +++ b/mallinkService/src/main/java/com/iformall/douyin/payv2/request/TtPayUnifiedOrderV2Request.java @@ -97,7 +97,7 @@ public class TtPayUnifiedOrderV2Request implements Serializable { * 开发者自定义透传字段,不支持二进制,长度 <= 2048 byte */ @SerializedName(value = "cp_extra") - private PageEntry cpExtra; + private String cpExtra; /** * 否 @@ -204,6 +204,16 @@ public class TtPayUnifiedOrderV2Request implements Serializable { @SerializedName(value = "discount_amount") private Integer discountAmount; + + + + /** + * 否 + * 折扣金额,单位(分) + */ + @SerializedName(value = "merchant_uid") + private String merchantUid; + } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java index 37868742c..b319b82b2 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java @@ -1,10 +1,27 @@ package com.iformall.enums; +import com.iformall.common.ErrorCode; +import com.iformall.exception.MallinkException; + +import java.util.ArrayList; +import java.util.List; + /** * Created by Stormeye on 2018/08/09. */ public enum EnumCouponChannelType { + /** + * //投放到抖音渠道。 + * //初次投放,只为展示审核,不让购买。 + * //当券投放到其他渠道时,此渠道自动上架,才可购买。 + * //其他所有渠道下架后,该渠道自动下架。 + * + * //该渠道不做任何查询 + */ + COUPON_CHANNEL_ID_DOUYIN(0,"抖音"), + + COUPON_CHANNEL_ID_LIST(1, "列表"), COUPON_CHANNEL_ID_TIMED(2, "限时抢购"), COUPON_CHANNEL_ID_CAMPAIN(3, "幻灯片"), // banner图, 宣传页,轮播图,走马灯 @@ -38,6 +55,41 @@ public enum EnumCouponChannelType { this.message = message; } + /** + * 微信平台的渠道 + */ + public static List getWeiXinType(){ + List typeList = new ArrayList<>(); + typeList.add(COUPON_CHANNEL_ID_LIST.getCode()); + typeList.add(COUPON_CHANNEL_ID_TIMED.getCode()); + typeList.add(COUPON_CHANNEL_ID_GAME.getCode()); + typeList.add(COUPON_CHANNEL_ID_CARD.getCode()); + typeList.add(COUPON_CHANNEL_ID_PRESS.getCode()); + typeList.add(COUPON_CHANNEL_ID_ORDER_GROUP.getCode()); + typeList.add(COUPON_CHANNEL_ID_CREDIT.getCode()); + typeList.add(COUPON_CHANNEL_ID_H5.getCode()); + typeList.add(COUPON_CHANNEL_ID_WXLIVE_LIST.getCode()); + return typeList; + } + + /** + * 抖音平台的渠道 + */ + public static List getDouYinType(){ + List typeList = new ArrayList<>(); + typeList.add(COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); + return typeList; + } + + public static EnumAppPlat getAppPlat(Integer code) { + if(getWeiXinType().contains(code)){ + return EnumAppPlat.WX; + }else if(getDouYinType().contains(code)){ + return EnumAppPlat.TOUTIAO; + } + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "券类型错误,未找到对应平台"); + } + public Integer getCode() { return code; } @@ -45,4 +97,57 @@ public enum EnumCouponChannelType { public String getMessage() { return message; } + + //根据渠道筛选券类型 + public static List getCouponTypeBy(Integer code){ + List codes = new ArrayList<>(); + if(COUPON_CHANNEL_ID_LIST.getCode().equals(code)){ + //微信 列表 渠道 + //满减,代金,礼品,停车,通用,预购商品,可配送商品,券礼包 + codes.add(EnumCouponType.COUPON_MANJIAN.getCode()); + codes.add(EnumCouponType.COUPON_DAIJIN.getCode()); + codes.add(EnumCouponType.COUPON_LIPIN.getCode()); + codes.add(EnumCouponType.COUPON_TINGCHE.getCode()); + codes.add(EnumCouponType.COUPON_MULTIMCH.getCode()); + codes.add(EnumCouponType.COUPON_PREORDER.getCode()); + codes.add(EnumCouponType.COUPON_DISTRIBUTION.getCode()); + codes.add(EnumCouponType.COUPON_GIFT.getCode()); + }else if(COUPON_CHANNEL_ID_TIMED.getCode().equals(code) + || COUPON_CHANNEL_ID_GAME.getCode().equals(code)){ + //微信 限时抢购,游戏 渠道 + //可用 满减,代金,礼品,停车,通用 + codes.add(EnumCouponType.COUPON_MANJIAN.getCode()); + codes.add(EnumCouponType.COUPON_DAIJIN.getCode()); + codes.add(EnumCouponType.COUPON_LIPIN.getCode()); + codes.add(EnumCouponType.COUPON_TINGCHE.getCode()); + codes.add(EnumCouponType.COUPON_MULTIMCH.getCode()); + }else if(COUPON_CHANNEL_ID_CARD.getCode().equals(code)){ + //微信 卡频道 + //可用 消费卡 + codes.add(EnumCouponType.CARD_MULTIMCH.getCode()); + }else if(COUPON_CHANNEL_ID_PRESS.getCode().equals(code)){ + //微信 砍价频道 + //可用 砍价券 + codes.add(EnumCouponType.COUPON_PRESS.getCode()); + }else if(COUPON_CHANNEL_ID_ORDER_GROUP.getCode().equals(code)){ + //微信 拼团频道 + //可用 拼团券 + codes.add(EnumCouponType.COUPON_GROUP.getCode()); + }else if(COUPON_CHANNEL_ID_CAMPAIN.getCode().equals(code) + || COUPON_CHANNEL_ID_TOPIC.getCode().equals(code)){ + //宣传页 专题 (不分平台)查所有券 + //平台从其他地方区分 + codes.addAll(EnumCouponType.getAllCodes()); + }else if(COUPON_CHANNEL_ID_CREDIT.getCode().equals(code)){ + //微信 积分商城 + codes.add(EnumCouponType.COUPON_CREDIT.getCode()); + codes.add(EnumCouponType.COUPON_CREDIT_PARK.getCode()); + }else if(COUPON_CHANNEL_ID_DOUYIN_LIST.getCode().equals(code)){ + //抖音 列表 + codes.add(EnumCouponType.COUPON_DOUYIN.getCode()); + codes.add(EnumCouponType.COUPON_DOUYIN_PLAT.getCode()); + codes.add(EnumCouponType.COUPON_DOUYIN_BRAND.getCode()); + } + return codes; + } } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponMallStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponMallStatus.java new file mode 100644 index 000000000..280a58b05 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponMallStatus.java @@ -0,0 +1,36 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumCouponMallStatus { + + UNFINISED(0, "未设置完成"), + FINISED(1, "已设置完成") + ; + + public static EnumCouponMallStatus getEnum(Integer code) { + for (EnumCouponMallStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCouponMallStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponType.java index 7f6d64b8b..9e8d69a42 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponType.java @@ -29,6 +29,9 @@ public enum EnumCouponType { COUPON_CREDIT_PARK(51,"积分停车券"), // COUPON_CREDIT_DOUYIN(55,"抖音积分券"), + COUPON_DOUYIN_PLAT(67, "抖音集团平台券"), + COUPON_DOUYIN_BRAND(68, "抖音集团品牌券"), + CARD_MULTIMCH(100, "消费卡"), ; @@ -40,6 +43,14 @@ public enum EnumCouponType { } return null; } + + public static List getAllCodes(){ + List codes = new ArrayList<>(); + for (EnumCouponType value : values()) { + codes.add(value.getCode()); + } + return codes; + } public static boolean mustHasMerchant(Integer code) { if (null == code) { @@ -75,6 +86,8 @@ public enum EnumCouponType { List typeList = new ArrayList<>(); typeList.add(COUPON_DOUYIN.getCode()); // typeList.add(COUPON_CREDIT_DOUYIN.getCode()); + typeList.add(COUPON_DOUYIN_PLAT.getCode()); + typeList.add(COUPON_DOUYIN_BRAND.getCode()); return typeList; } @@ -101,7 +114,7 @@ public enum EnumCouponType { } /** - * 有价 并且永不分账的券类型 + * 微信 有价 并且永不分账的券类型 */ public static List getPlatType(){ List typeList = new ArrayList<>(); @@ -119,4 +132,42 @@ public enum EnumCouponType { throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "券类型错误,未找到对应平台"); } + public static List getTypeCode(Integer plat){ + if(EnumAppPlat.WX.getCode().equals(plat)){ + return getWeiXinType(); + }else if(EnumAppPlat.TOUTIAO.getCode().equals(plat)){ + return getDouYinType(); + } + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "券平台错误,未找到对应类型"); + } + + //是不是必须要有商户 + public static boolean checkCreateWithMerchants(Integer type) { + if(type == null) { + return true; + } + if(type == COUPON_DOUYIN_PLAT.getCode()) { + return false; + } + return true; + } + + //是不是必须要有商场 + public static boolean checkCreateWithMalls(Integer type) { + if(type == null) { + return false; + } + if(type == COUPON_DOUYIN_PLAT.getCode() || type == COUPON_DOUYIN_BRAND.getCode()) { + return true; + } + return false; + } + + + public static boolean isParentCoupon(Integer couponType) { + if (couponType == COUPON_DOUYIN_PLAT.getCode() || couponType == COUPON_DOUYIN_BRAND.getCode()) { + return true; + } + return false; + } } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponVerifyType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponVerifyType.java index 96e80bce4..c00b43b49 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponVerifyType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponVerifyType.java @@ -7,7 +7,7 @@ public enum EnumCouponVerifyType { // 0: 微信B端核销 1:POS独立核销 2:POS交易核销 VERIFY_B(0,"B端核销"), - //verifyRemark + //verifyRemark 记录使用 VERIFY_B_10(10,"B端收银核销"), VERIFY_B_11(11,"B端券码核销"), VERIFY_B_12(12,"B端扫码核销"), diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMerchantSubsidySource.java b/mallinkService/src/main/java/com/iformall/enums/EnumMerchantSubsidySource.java index 040c4e122..92fd2d9e4 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMerchantSubsidySource.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMerchantSubsidySource.java @@ -12,7 +12,7 @@ public enum EnumMerchantSubsidySource { GROUP(4, "拼团核销"), CASHIER(5, "收银台"), DISTRIBUTION_GOODS(6, "可配送商品"), - GIFT_BAG(7, "券订单"),; + GIFT_BAG(7, "券礼包"),; public static EnumMerchantSubsidySource getEnum(Integer code) { for (EnumMerchantSubsidySource value : values()) { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMerchantSubsidyType.java b/mallinkService/src/main/java/com/iformall/enums/EnumMerchantSubsidyType.java index 1993d9820..f5ad02da2 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMerchantSubsidyType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMerchantSubsidyType.java @@ -5,7 +5,7 @@ package com.iformall.enums; */ public enum EnumMerchantSubsidyType { - MANUAL(1, "自主结算"), + MANUAL(1, "自主结算"),//补贴 WECHAT(2, "微信结算"), DOUYIN(3, "抖音结算"),; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumSaleType.java b/mallinkService/src/main/java/com/iformall/enums/EnumSaleType.java index 5b1f5169c..947942ace 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumSaleType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumSaleType.java @@ -12,7 +12,8 @@ public enum EnumSaleType { WX_ENJOY(3,"速享版"), WX_ENJOY_TRY(4, "速享试用版"), TT_ALL_ROUND(11, "抖音尊享版"), - GROUP(100, "集团版"), + GROUP(100, "集团版(旧版,每个商场一个小程序)"), + GROUP_v1(101, "集团版(同一个小程序)"), WX_JM_ALL_ROUND(1035001036,"金茂全能版"), ; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumSpuSyncStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumSpuSyncStatus.java index 43de3788a..231f0e696 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumSpuSyncStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumSpuSyncStatus.java @@ -38,4 +38,15 @@ public enum EnumSpuSyncStatus { public String getMessage() { return message; } + + public static boolean isValid(Integer code) { + if (code == sync_auditing.getCode()) { + return true; + }else if (code == sync_put_on.getCode()) { + return true; + }else if (code == sync_audit_pass.getCode()) { + return true; + } + return false; + } } diff --git a/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java b/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java index 5c8e02be6..fa42ca6ba 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/TtCouponChannelPoiMapper.java @@ -18,5 +18,4 @@ public interface TtCouponChannelPoiMapper extends CommonMapper { List findList(WxAppinfo wxAppinfo); - - + WxAppinfo findByAppId(String appId); - - - + + WxAppinfo findByAppId(String appId,String tenantId); + + int updateAccessToken(WxAppinfo updateApp); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java index 7a6ab3547..a32c0b20b 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java @@ -24,7 +24,7 @@ public interface WxCouponChannelMapper extends CommonMapper ttChannelList(TtCouponChannelVo ttChannelVo); Long findCouponIdById(@Param("id")Long id,@Param("tenantId")String tenantId); + + int updateStatusByTargetAd(WxCouponChannel updCC); + + int selectCountExclude(WxCouponChannel ccQ); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMallMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMallMapper.java new file mode 100644 index 000000000..a71c617c8 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMallMapper.java @@ -0,0 +1,19 @@ +package com.iformall.mapper; + + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxCouponMall; +import com.iformall.domain.po.base.TenantEntity; + +import java.util.List; +import java.util.Map; + +import org.apache.ibatis.annotations.Param; + +public interface WxCouponMallMapper extends CommonMapper { + + List findList(WxCouponMall wxCouponMall); + List findCouponIdList(WxCouponMall wxCouponMall); + void updateStatus(WxCouponMall wxCouponMall); + void delteAllByProductId(WxCouponMall wxCouponMall); +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java index 33ce2f7d2..64d4a47cc 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java @@ -125,4 +125,6 @@ public interface WxCouponMapper extends CommonMapper { List ttCouponList(TtCouponVo ttCouponVo); Integer findCategoryIdById(@Param("id")Long id,@Param("tenantId")String tenantId); + + void setMakeMerchantId(WxCoupon couponQ); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java index d751472a6..9852c3151 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMerchantMapper.java @@ -30,6 +30,8 @@ public interface WxMerchantMapper extends CommonMapper { int hasMerchant(WxMerchant wxMerchant); int hasMerchantEncode(WxMerchant wxMerchant); + int hasMerchantBrand(WxMerchant wxMerchant); + int hasMerchantIsAdmin(WxMerchant wxMerchant); void updateCreditLocked(WxMerchant wxMerchant); @@ -56,4 +58,5 @@ public interface WxMerchantMapper extends CommonMapper { Map findShopMerchant(@Param("id")Long id); int deleteByUpdate(Long id); + } diff --git a/mallinkService/src/main/java/com/iformall/pay/WxMicroPayOrderP.java b/mallinkService/src/main/java/com/iformall/pay/WxMicroPayOrderP.java index 79073d506..c00678fde 100644 --- a/mallinkService/src/main/java/com/iformall/pay/WxMicroPayOrderP.java +++ b/mallinkService/src/main/java/com/iformall/pay/WxMicroPayOrderP.java @@ -14,6 +14,7 @@ public class WxMicroPayOrderP { private String nonce_str; // 随机字符串 private String sign; // 签名 private String body; // 商品简单描述 128 + private String attach; // 附加数据 private String out_trade_no; // 商户订单号 private Integer total_fee; // 支付金额 private String spbill_create_ip; // 支付IP diff --git a/mallinkService/src/main/java/com/iformall/pay/WxMicroPayOrderSP.java b/mallinkService/src/main/java/com/iformall/pay/WxMicroPayOrderSP.java index 8e228b055..ae67d67b7 100644 --- a/mallinkService/src/main/java/com/iformall/pay/WxMicroPayOrderSP.java +++ b/mallinkService/src/main/java/com/iformall/pay/WxMicroPayOrderSP.java @@ -17,6 +17,7 @@ public class WxMicroPayOrderSP { private String sign; // 签名 private String sign_type; // 签名类型 private String body; // 商品简单描述 128 + private String attach; // 附加数据 private String out_trade_no; // 商户订单号 private Integer total_fee; // 支付金额 private String spbill_create_ip; // 支付IP diff --git a/mallinkService/src/main/java/com/iformall/pay/WxPayOrderP.java b/mallinkService/src/main/java/com/iformall/pay/WxPayOrderP.java index b491581da..7a64b1a8a 100644 --- a/mallinkService/src/main/java/com/iformall/pay/WxPayOrderP.java +++ b/mallinkService/src/main/java/com/iformall/pay/WxPayOrderP.java @@ -13,6 +13,7 @@ public class WxPayOrderP { private String nonce_str; // 随机字符串 private String sign; // 签名 private String body; // 商品简单描述 128 + private String attach; // 附加数据 private String out_trade_no; // 商户订单号 private Integer total_fee; // 支付金额 private String spbill_create_ip; // 支付IP diff --git a/mallinkService/src/main/java/com/iformall/pay/WxPayOrderSP.java b/mallinkService/src/main/java/com/iformall/pay/WxPayOrderSP.java index 72d238a9f..ad057a5ad 100644 --- a/mallinkService/src/main/java/com/iformall/pay/WxPayOrderSP.java +++ b/mallinkService/src/main/java/com/iformall/pay/WxPayOrderSP.java @@ -16,6 +16,7 @@ public class WxPayOrderSP { private String sign; // 签名 private String sign_type; // 签名类型 private String body; // 商品简单描述 128 + private String attach; // 附加数据 private String out_trade_no; // 商户订单号 private String total_fee; // 支付金额 private String spbill_create_ip; // 支付IP diff --git a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java index 89257c5e0..07fb6875a 100644 --- a/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java +++ b/mallinkService/src/main/java/com/iformall/service/TtCouponGoodsService.java @@ -14,9 +14,9 @@ import java.util.List; public interface TtCouponGoodsService { - ResultData couponList(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize); - - ResultData channelList(TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize); +// ResultData couponList(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize); +// +// ResultData channelList(TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize); ResultData productSave(WxCoupon coupon) throws Exception; diff --git a/mallinkService/src/main/java/com/iformall/service/WxAppinfoService.java b/mallinkService/src/main/java/com/iformall/service/WxAppinfoService.java index 752c04d69..fece4aa9b 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxAppinfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxAppinfoService.java @@ -52,12 +52,13 @@ public interface WxAppinfoService { WxAppinfo getById(Long id); /** - * 根据appId获得实体 + * 多个存在获取集团的。 * * @param appId * @return */ - WxAppinfo getByAppId(String appId); + WxAppinfo getOnlyByAppId(String appId); + WxAppinfo getByAppId(String appId,String tenantId); /** * 获取c端小程序信息 @@ -83,7 +84,8 @@ public interface WxAppinfoService { */ void deleteById(Long id); - WxAppinfo getByAppIdFromRedis(String appId); + WxAppinfo getOnlyByAppIdFromRedis(String appId); + WxAppinfo getByAppIdFromRedis(String appId,String tenantId); WxAppinfo getByIdFromRedis(Long id); WxAppinfo getCAppInfoFromRedis(String tenantId, EnumAppPlat appPlat); diff --git a/mallinkService/src/main/java/com/iformall/service/WxCashOutService.java b/mallinkService/src/main/java/com/iformall/service/WxCashOutService.java index dfe835176..9fce75a33 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCashOutService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCashOutService.java @@ -49,6 +49,6 @@ public interface WxCashOutService { */ ResultData reCashout(WxMerchantBUser buser,WxCashOut record,EnumPayWay payWay); - void addCashOut(Long merchantId,Integer amount) throws MallinkException; + void addCashOut(WxMerchant merchant,Integer amount) throws MallinkException; } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponMallService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponMallService.java new file mode 100644 index 000000000..5fb18b377 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponMallService.java @@ -0,0 +1,31 @@ +package com.iformall.service; + +import java.util.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; +import com.iformall.domain.po.TtCouponChannelPoi; +import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxCouponMall; +import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.TtCouponVo; +import com.iformall.domain.vo.WxCouponCVo; +import com.iformall.domain.vo.WxCouponStatisVo; +import com.iformall.domain.vo.WxMerchantVo; + +public interface WxCouponMallService { + + PageInfo listAsPage(WxCouponMall record, Integer pageIndex, Integer pageSize); + + List list(WxCouponMall wxCouponMall,boolean queryMall); + List listCouponIds(WxCouponMall wxCouponMall); + + void finised(String couponTenantId,Long couponId,String mallTenantId); + void unfinised(String couponTenantId, Long couponId,Integer couponType, String mallTenantId) throws Exception; + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index 2d4c8d32c..97e01fc9d 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -66,16 +66,15 @@ public interface WxCouponOrderService { /** * 核销后发送消息 */ - void sendInsideCouponVerifyMsg(TenantEntity tenantEntity, Long couponOrderId, Long merchantId, Long bmerchantId); + void sendInsideCouponVerifyMsg(Long couponOrderId, TenantEntity couponOrderTenantEntity, Long merchantId, TenantEntity mallTenantEntity); /** * 核销后处理 * * @param couponOrder - * @param merchant 分账商户 * @param bmerchant 核销商户 */ - void actionAfterVerify(WxCouponOrder couponOrder, WxMerchant merchant, WxMerchant bmerchant); + void actionAfterVerify(WxCouponOrder couponOrder, WxMerchant merchant); /** * 核销发券 @@ -95,13 +94,15 @@ public interface WxCouponOrderService { * 核销分账 * @param couponOrder */ - void shareAfterVerify(WxCouponOrder couponOrder, Long merchantId,boolean mulityShare); + void shareAfterVerify(WxCouponOrder couponOrder, WxMerchant wxMerchant,boolean mulityShare); + + WxMerchantSubsidy recordAfterVerified(WxOrder order, WxMerchant wxMerchant); /** * 核销后补贴 * @param couponOrder */ - void subsidyAfterVerify(WxCouponOrder couponOrder, Long merchantId); + void subsidyAfterVerify(WxCouponOrder couponOrder, WxMerchant merchant); /** * 核销模板消息 * @param couponOrder diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java index 6411ad043..9d689beb9 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponService.java @@ -10,6 +10,7 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.TtCouponChannelPoi; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxMall; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.TtCouponVo; @@ -81,7 +82,7 @@ public interface WxCouponService { WxCoupon getHtmlById(Long id,String tenantId); - WxCouponCVo getVoById(Long id,String tenantId); + WxCouponCVo getVoById(Long id,String couponTenantId,TenantEntity mallTenantEntity); WxCouponCVo getVoStatusById(Long id,String tenantId); @@ -278,7 +279,7 @@ public interface WxCouponService { Map getCouponMap(List couponIds, TenantEntity tenantEntity); - List getCouponMerchantList(TenantEntity tenantInfo, Long couponId); + Map> getCouponMerchantList(TenantEntity tenantInfo, Long couponId); /** * 作废卷 @@ -287,4 +288,17 @@ public interface WxCouponService { * @return */ ResultData disable(TenantEntity tenantInfo, Long couponId); + + void setParentCouponMallMerchants(TenantEntity mallTenantEntity,WxCoupon wxCoupon) throws Exception; + + Map couponMerchantAutoShare(TenantEntity tenantEntity,WxCoupon wxCoupon) throws Exception; + + /** + * 判断门店商户是否可用 + * @param couponId + * @param couponType + * @param couponTenantEntity + * @return + */ + boolean isCouponMerchantValid(Long couponId,Integer couponType,TenantEntity couponTenantEntity); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCuserFloatingLayerService.java b/mallinkService/src/main/java/com/iformall/service/WxCuserFloatingLayerService.java index 96a29997a..91687f10b 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCuserFloatingLayerService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCuserFloatingLayerService.java @@ -8,6 +8,6 @@ import com.iformall.domain.po.base.TenantEntity; */ public interface WxCuserFloatingLayerService { - WxFloatingLayer getFloatingLayer(String openId, String appId); + WxFloatingLayer getFloatingLayer(TenantEntity tenantEntity,String openId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxMallService.java b/mallinkService/src/main/java/com/iformall/service/WxMallService.java index 065d6089c..d9e2665b1 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMallService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMallService.java @@ -7,6 +7,7 @@ import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.WxMall; import java.util.List; +import java.util.Map; public interface WxMallService { @@ -93,4 +94,6 @@ public interface WxMallService { boolean mallValid(Long loginUserId,WxMall mall); boolean isgroupSupport(TenantEntity tenantEntity); + + Map getMallMap(WxMall mallQ); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantBUserService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantBUserService.java index 1f3d0f2b7..e022fd049 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMerchantBUserService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantBUserService.java @@ -43,7 +43,7 @@ public interface WxMerchantBUserService { * @param record * @return */ - List getBUserByAppId(WxMerchantBUser record); + List findList(WxMerchantBUser record); List getMerchantInfoByBUser(WxMerchantBUser record); @@ -64,6 +64,9 @@ public interface WxMerchantBUserService { boolean hasPhone(TenantEntity tenantEntity, String phone); - ResultData updatePwd(String appId, String phone, String code, String pwd); + ResultData updatePwd(String tenantId, String phone, String code, String pwd); + List findAllList(WxMerchantBUser userQ); + + List handMerchantBUser(List orgList); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java index 4592d2fab..e38ab6ede 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java @@ -3,6 +3,7 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.dto.WxMerchantDto; +import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxMerchantCorp; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.WxMerchant; @@ -95,6 +96,14 @@ public interface WxMerchantService { */ List findList(WxMerchant record); + /** + * 根据商管商户 + * + * @param tenantEntity + * @return + */ + List findAdminList(TenantEntity tenantEntity); + /** * 查询商户列表 * @param tenantEntity @@ -152,6 +161,8 @@ public interface WxMerchantService { boolean hasMerchant(WxMerchant wxMerchant); boolean hasMerchantEncode(WxMerchant wxMerchant); + boolean hasMerchantBrand(WxMerchant wxMerchant); + boolean hasMerchantIsAdmin(WxMerchant wxMerchant); WxMerchant getMerchantByEncode(String encode); @@ -191,4 +202,10 @@ public interface WxMerchantService { List findMerchantListByProduct(TenantEntity tenantEntity,Long productId,boolean hasShop); WxMerchantCorp getMerchantCorp(TenantEntity tenantInfo, Long id); + + WxMerchant findAdmin(TenantEntity tenantEntity); + + WxMerchant findBrandAdmin(TenantEntity tenantEntity, Long brandId); + + Map findMerchantMap(WxMerchant merchantQ); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index ede0b39ee..acf1e1054 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -253,7 +253,7 @@ public interface WxOrderService { void sendInsideOrderPushMsg(TenantEntity tenantEntity,Long composeOrderId); - void sendInsideOrderPushDeliveryMsg(TenantEntity tenantEntity,Long composeOrderId,Long couponOrderId); + void sendInsideOrderPushDeliveryMsg(TenantEntity couponOrderTenantEntity,Long composeOrderId,Long couponOrderId); PageInfo listGoodsCAsPage(WxOrder wxOrder, Integer pageNum, Integer pageSize); @@ -265,7 +265,7 @@ public interface WxOrderService { WxBatchOrder getWxBatchOrder(TenantEntity tenantInfo, Long orderId); - Map getOrderEntrySchema(Long mainOrderId); + Map getOrderEntrySchema(String tenantId,Long mainOrderId); int updateCpsStatus(WxOrder order); diff --git a/mallinkService/src/main/java/com/iformall/service/WxPayBillService.java b/mallinkService/src/main/java/com/iformall/service/WxPayBillService.java index a2d7e13a4..97a48a3e9 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPayBillService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPayBillService.java @@ -43,7 +43,7 @@ public interface WxPayBillService { * @param payWay 支付方式 * @return */ - String notify(Map paramMap, EnumPayWay payWay); + String notify(String tenantId,Map paramMap, EnumPayWay payWay); /** * 支付成功处理 diff --git a/mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java index 39a26eec9..5784a3c7a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java @@ -4,6 +4,7 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.dto.WxSharingOrderDto; +import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxPayOrder; import com.iformall.domain.po.WxProfitSharingOrder; import com.iformall.domain.po.base.TenantEntity; @@ -21,7 +22,7 @@ public interface WxProfitSharingOrderService { /** * 创建分账订单 */ - ResultData createSharingOrder(WxSharingOrderDto wxSharingOrderDto,WxPayOrder payOrder); + ResultData createSharingOrder(TenantEntity mallTenantEntity,WxSharingOrderDto wxSharingOrderDto,WxPayOrder payOrder); /** * 分账重试 diff --git a/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxBUserServiceAdapter.java b/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxBUserServiceAdapter.java index 88401b201..d66696dcc 100644 --- a/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxBUserServiceAdapter.java +++ b/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxBUserServiceAdapter.java @@ -14,6 +14,7 @@ import com.iformall.domain.vo.UserCountVo; import com.iformall.domain.vo.UserStructureVo; import com.iformall.enums.EnumAppPlat; import com.iformall.exception.MallinkException; +import com.iformall.mapper.WxAppinfoMapper; import com.iformall.mapper.WxBuserMapper; import com.iformall.service.WxAppinfoService; import com.iformall.service.cuser.BasicCUserService; @@ -40,6 +41,9 @@ public class WxBUserServiceAdapter extends BasicCUserService implements CUserSer @Autowired private WxAppinfoService wxAppinfoService; + @Autowired + private WxAppinfoMapper wxAppinfoMapper; + @Autowired private FmOpenService openService; @@ -300,14 +304,14 @@ public class WxBUserServiceAdapter extends BasicCUserService implements CUserSer try { String accessToken = wxMaService.getAccessToken(true); WxAppinfo updateApp = new WxAppinfo(); - updateApp.setId(wxAppinfo.getId()); + updateApp.setAppId(wxAppinfo.getAppId()); updateApp.setAccessToken(accessToken); updateApp.setLastTokenTime(new Date()); updateApp.setExpiresIn(7200); wxAppinfo.setAccessToken(updateApp.getAccessToken()); wxAppinfo.setLastTokenTime(updateApp.getLastTokenTime()); wxAppinfo.setExpiresIn(updateApp.getExpiresIn()); - wxAppinfoService.saveOrUpdate(updateApp); + wxAppinfoMapper.updateAccessToken(updateApp); } catch (WxErrorException e) { logger.error(e.getMessage()); diff --git a/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java b/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java index 3d2080092..b2ecbeb59 100644 --- a/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java +++ b/mallinkService/src/main/java/com/iformall/service/cuser/wx/WxCUserServiceAdapter.java @@ -16,6 +16,7 @@ import com.iformall.enums.EnumAppPlat; import com.iformall.enums.EnumAssignTagsTrigger; import com.iformall.enums.EnumPayVersion; import com.iformall.enums.EnumYesOrNo; +import com.iformall.mapper.WxAppinfoMapper; import com.iformall.mapper.WxMallMapper; import com.iformall.service.WxAppinfoService; import com.iformall.service.WxCUserBasicInfoService; @@ -58,6 +59,9 @@ public class WxCUserServiceAdapter extends BasicCUserService implements CUserSer @Autowired private WxAppinfoService wxAppinfoService; + @Autowired + private WxAppinfoMapper wxAppinfoMapper; + @Autowired private FmOpenService openService; @@ -405,14 +409,14 @@ public class WxCUserServiceAdapter extends BasicCUserService implements CUserSer try { String accessToken = wxMaService.getAccessToken(true); WxAppinfo updateApp = new WxAppinfo(); - updateApp.setId(wxAppinfo.getId()); + updateApp.setAppId(wxAppinfo.getAppId()); updateApp.setAccessToken(accessToken); updateApp.setLastTokenTime(new Date()); updateApp.setExpiresIn(7200); wxAppinfo.setAccessToken(updateApp.getAccessToken()); wxAppinfo.setLastTokenTime(updateApp.getLastTokenTime()); wxAppinfo.setExpiresIn(updateApp.getExpiresIn()); - wxAppinfoService.saveOrUpdate(updateApp); + wxAppinfoMapper.updateAccessToken(updateApp); } catch (WxErrorException e) { logger.error(e.getMessage()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java index 9dd15a7b0..9fab830a6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtCouponGoodsServiceImpl.java @@ -26,6 +26,7 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; @@ -81,77 +82,93 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { @Autowired TtGoodsCategoryMapper ttGoodsCategoryMapper; + + @Lazy + @Autowired + WxCouponMallService wxCouponMallService; + + @Lazy + @Autowired + WxMerchantService wxMerchantService; - @Override - public ResultData couponList(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { - PageInfo pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxCouponMapper.ttCouponList(ttCouponVo)); - List couponList = pageInfo.getList(); - - if(!couponList.isEmpty()){ - List ids = couponList.stream().map(p -> p.getId()).collect(toList()); - WxCouponChannel wxCouponChannel = new WxCouponChannel(); - wxCouponChannel.updateTenantInfo(ttCouponVo); - wxCouponChannel.setCouponIds(ids); - //上架状态 - wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); - List channellist = wxCouponChannelMapper.findList(wxCouponChannel); - Map> channelGroupCoupon = new HashMap<>(); - if(!channellist.isEmpty()){ - channelGroupCoupon = channellist.stream().collect(Collectors.groupingBy(WxCouponChannel::getCouponId)); - } - - //预审状态 - wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_BEFORE.getCode()); - List planchannellist = wxCouponChannelMapper.findList(wxCouponChannel); - Map> planChannelGroupCoupon = new HashMap<>(); - if(!planchannellist.isEmpty()){ - planChannelGroupCoupon = planchannellist.stream().collect(Collectors.groupingBy(WxCouponChannel::getCouponId)); - } - - for (TtCouponVo temp : couponList) { - List channels = new ArrayList<>(); - List couponChannels = channelGroupCoupon.get(temp.getId()); - if(couponChannels != null && !couponChannels.isEmpty()){ - for (WxCouponChannel tempchannel : couponChannels) { - if (!channels.contains(tempchannel.getTargetAd())) { - channels.add(tempchannel.getTargetAd()); - } - } - } - if(!channels.isEmpty()){ - temp.setChannels(JSON.toJSONString(channels)); - }else{ - temp.setChannels(""); - } - - List planChannels = new ArrayList<>(); - List planCouponChannels = planChannelGroupCoupon.get(temp.getId()); - if(planCouponChannels != null && !planCouponChannels.isEmpty()){ - for (WxCouponChannel tempchannel : planCouponChannels) { - if (!planChannels.contains(tempchannel.getTargetAd())) { - planChannels.add(tempchannel.getTargetAd()); - } - } - } - if(!planChannels.isEmpty()){ - temp.setPlanChannels(JSON.toJSONString(planChannels)); - }else{ - temp.setPlanChannels(""); - } - } - } - return new ResultData(pageInfo); - } - - @Override - public ResultData channelList(TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize) { - PageInfo ttCouponChannelVoPageInfo = wxCouponChannelService.ttChannelList(ttChannelVo, pageNum, pageSize); - return new ResultData(ttCouponChannelVoPageInfo); - } +// @Override +// public ResultData couponList(TtCouponVo ttCouponVo, Integer pageNum, Integer pageSize) { +// PageInfo pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxCouponMapper.ttCouponList(ttCouponVo)); +// List couponList = pageInfo.getList(); +// +// if(!couponList.isEmpty()){ +// List ids = couponList.stream().map(p -> p.getId()).collect(toList()); +// WxCouponChannel wxCouponChannel = new WxCouponChannel(); +// wxCouponChannel.updateTenantInfo(ttCouponVo); +// wxCouponChannel.setCouponIds(ids); +// //上架状态 +// wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); +// List channellist = wxCouponChannelMapper.findList(wxCouponChannel); +// Map> channelGroupCoupon = new HashMap<>(); +// if(!channellist.isEmpty()){ +// channelGroupCoupon = channellist.stream().collect(Collectors.groupingBy(WxCouponChannel::getCouponId)); +// } +// +// //预审状态 +// wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_BEFORE.getCode()); +// List planchannellist = wxCouponChannelMapper.findList(wxCouponChannel); +// Map> planChannelGroupCoupon = new HashMap<>(); +// if(!planchannellist.isEmpty()){ +// planChannelGroupCoupon = planchannellist.stream().collect(Collectors.groupingBy(WxCouponChannel::getCouponId)); +// } +// +// for (TtCouponVo temp : couponList) { +// List channels = new ArrayList<>(); +// List couponChannels = channelGroupCoupon.get(temp.getId()); +// if(couponChannels != null && !couponChannels.isEmpty()){ +// for (WxCouponChannel tempchannel : couponChannels) { +// if (!channels.contains(tempchannel.getTargetAd())) { +// channels.add(tempchannel.getTargetAd()); +// } +// } +// } +// if(!channels.isEmpty()){ +// temp.setChannels(JSON.toJSONString(channels)); +// }else{ +// temp.setChannels(""); +// } +// +// List planChannels = new ArrayList<>(); +// List planCouponChannels = planChannelGroupCoupon.get(temp.getId()); +// if(planCouponChannels != null && !planCouponChannels.isEmpty()){ +// for (WxCouponChannel tempchannel : planCouponChannels) { +// if (!planChannels.contains(tempchannel.getTargetAd())) { +// planChannels.add(tempchannel.getTargetAd()); +// } +// } +// } +// if(!planChannels.isEmpty()){ +// temp.setPlanChannels(JSON.toJSONString(planChannels)); +// }else{ +// temp.setPlanChannels(""); +// } +// } +// } +// return new ResultData(pageInfo); +// } +// +// @Override +// public ResultData channelList(TtCouponChannelVo ttChannelVo, Integer pageNum, Integer pageSize) { +// PageInfo ttCouponChannelVoPageInfo = wxCouponChannelService.ttChannelList(ttChannelVo, pageNum, pageSize); +// return new ResultData(ttCouponChannelVoPageInfo); +// } @Override @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) public ResultData productSave(WxCoupon coupon) throws Exception { + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(coupon.getTenantId(),coupon.getId()); + if(ttCouponChannelPoi != null && + (EnumSpuSyncStatus.sync_auditing.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_put_on.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_disable.getCode().equals(ttCouponChannelPoi.getLastStatus()))){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该券状态不允许提交审核"); + } + WxCoupon ttattrs = wxCouponService.getAttrsById(coupon.getId(), coupon.getTenantId()); if(ttattrs.getProductType() == null || ttattrs.getCategoryId() == null || ttattrs.getProductAttrKeyValueMap().isEmpty() @@ -163,33 +180,72 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { } //获取门店,确保所有门店匹配poi -// List couponMerchantList = wxCouponService.getCouponMerchantList(coupon, coupon.getId()); -// if(couponMerchantList.size() > 0){ -// List isAdminList = couponMerchantList.stream().filter(m -> EnumYesOrNo.YES.getCode().equals(m.getIsAdmin())).collect(Collectors.toList()); -// if(isAdminList != null && isAdminList.size() == 1){ -// couponMerchantList = isAdminList; -// }else if(isAdminList != null && isAdminList.size() > 1){ -// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"数据异常,存在多个商管商户"); -// } -// } -// List poiList = new ArrayList(); -// for (WxMerchantVo mvo:couponMerchantList){ -// if(StringUtils.isNotBlank(mvo.getSupplierExtId())){ -// Product.PoiStruct poiStruct = new Product.PoiStruct(); -// poiStruct.setSupplierExtId(mvo.getSupplierExtId()); -// poiList.add(poiStruct); -// } -// } -// if(poiList.isEmpty()){ -// return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"未找到poi门店"); -// } - - - List merchantIds = wxCouponMerchantMapper.findMerchantIdListByProduct(coupon.getId(), coupon.getTenantId()); - TtMerchantPoi poiQ = new TtMerchantPoi(); - poiQ.updateTenantInfo(coupon); - poiQ.setIds(merchantIds); - List pois = ttMerchantPoiMapper.findList(poiQ); + List merchantIds = null; + List couponMallList = null; + if (EnumCouponType.isParentCoupon(coupon.getType())) { + WxCouponMall couponMall = new WxCouponMall(); + couponMall.updateTenantInfo(coupon); + couponMall.setProductId(coupon.getId()); + couponMall.setStatus(EnumCouponMallStatus.FINISED.getCode()); + couponMallList = wxCouponMallService.list(couponMall, false); + if (null == couponMallList || couponMallList.size() <= 0 ) { + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"未完成设置关联商场"); + } + for (int i = 0 ; i < couponMallList.size(); i++ ) { + WxCouponMall cm = couponMallList.get(i); + List mchids = wxCouponMerchantMapper.findMerchantIdListByProduct(coupon.getId(), cm.getMallTenantId()); + if (null != mchids) { + if (null == merchantIds) { + merchantIds = new ArrayList(); + } + merchantIds.addAll(mchids); + } + //添加商管商户poi + TenantEntity mallTenantEntity = new TenantEntity(); + mallTenantEntity.setTenantId(cm.getMallTenantId()); + mallTenantEntity.setParentTenantId(coupon.getTenantId()); + WxMerchant adminMerchant = wxMerchantService.findAdmin(mallTenantEntity); + if (null == adminMerchant) { + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"商场"+cm.getMallTenantId()+"未设置商管商户"); + } + if (!merchantIds.contains(adminMerchant.getId())){ + merchantIds.add(adminMerchant.getId()); + } + } + + }else { + merchantIds = wxCouponMerchantMapper.findMerchantIdListByProduct(coupon.getId(), coupon.getTenantId()); + } + if (null == merchantIds || merchantIds.size() <= 0) { + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"未设置商户"); + } + + List pois = null; + if (EnumCouponType.isParentCoupon(coupon.getType())) { + if (null == couponMallList || couponMallList.size() <= 0 ) { + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"未完成设置关联商场"); + } + for (int i = 0 ; i < couponMallList.size(); i++ ) { + WxCouponMall cm = couponMallList.get(i); + TtMerchantPoi poiQ = new TtMerchantPoi(); + poiQ.setTenantId(cm.getMallTenantId()); + poiQ.setIds(merchantIds); + List pois1 = ttMerchantPoiMapper.findList(poiQ); + if (null != pois1) { + if (null == pois) { + pois = new ArrayList(); + } + pois.addAll(pois1); + } + } + + }else { + TtMerchantPoi poiQ = new TtMerchantPoi(); + poiQ.updateTenantInfo(coupon); + poiQ.setIds(merchantIds); + pois = ttMerchantPoiMapper.findList(poiQ); + } + if(pois == null || pois.isEmpty()){ return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"未找到poi门店"); } @@ -203,45 +259,69 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { poiList.add(poiStruct); } - WxMerchant merchantQ = new WxMerchant(); - merchantQ.updateTenantInfo(coupon); - merchantQ.setIds(merchantIds); - merchantQ.setSortColumns(BaseEntity.SortField.MerchantAdmin); - WxMerchant merchant = wxMerchantMapper.findIdNameList(merchantQ).get(0); - - //查询是否有上架的 + WxMerchant payAccountMerchant = null; + if (EnumCouponType.isParentCoupon(coupon.getType())) { + if (EnumCouponType.COUPON_DOUYIN_PLAT.getCode() == coupon.getType()) { + payAccountMerchant = wxMerchantService.findAdmin(coupon); + }else if (EnumCouponType.COUPON_DOUYIN_BRAND.getCode() == coupon.getType()) { + payAccountMerchant = wxMerchantService.findBrandAdmin(coupon, coupon.getBrand()); + }else { + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"当前券类型未找到收款商户"); + } + + }else { + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(coupon); + merchantQ.setIds(merchantIds); + merchantQ.setSortColumns(BaseEntity.SortField.MerchantAdmin); + payAccountMerchant = wxMerchantMapper.findIdNameList(merchantQ).get(0); + } + + //投放到抖音渠道,获取详情地址,以做审核 WxCouponChannel wxCouponChannelQuery = new WxCouponChannel(); wxCouponChannelQuery.updateTenantInfo(coupon); wxCouponChannelQuery.setCouponId(coupon.getId()); - wxCouponChannelQuery.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); - wxCouponChannelQuery.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); + wxCouponChannelQuery.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN.getCode()); List wxCouponChannels = wxCouponChannelMapper.findList(wxCouponChannelQuery); - if(wxCouponChannels.size() > 0){ - return new ResultData(ErrorCode.COUPON_CHANNEL_IS_EXISTED); - } - //预审核的作废掉 重新投放 - wxCouponChannelQuery.setStatus(EnumCouponChannelStatus.STATUS_BEFORE.getCode()); - WxCouponChannel updCouponChannel = new WxCouponChannel(); - updCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_AFTER.getCode()); - updCouponChannel.setUpdateDate(new Date()); - wxCouponChannelMapper.update(updCouponChannel,new QueryWrapper<>(wxCouponChannelQuery)); - //投放预审核 - WxCouponChannel wxCouponChannel = new WxCouponChannel(); - final IdWorker idWorker = IdWorker.get(); - wxCouponChannel.setId(idWorker.nextId()); - wxCouponChannel.updateTenantInfo(coupon); - wxCouponChannel.setShowBeginTime(new Date()); - wxCouponChannel.setBeginTime(new Date()); - wxCouponChannel.setEndTime(coupon.getValidEndDate()); - wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_BEFORE.getCode()); - wxCouponChannel.setCouponId(coupon.getId()); - wxCouponChannel.setMakeMerchantId(coupon.getMakeMerchantId()); - wxCouponChannel.setType(coupon.getType()); - wxCouponChannel.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); - wxCouponChannel.setBusiness(coupon.getBusiness()); - wxCouponChannel.setSubBusiness(coupon.getSubBusiness()); - wxCouponChannel.setTitle(coupon.getTitle()); - wxCouponChannelMapper.insert(wxCouponChannel); + WxCouponChannel wxCouponChannel = null; + Date now = new Date(); + if(wxCouponChannels == null || wxCouponChannels.isEmpty()){ + wxCouponChannel = new WxCouponChannel(); + final IdWorker idWorker = IdWorker.get(); + wxCouponChannel.setId(idWorker.nextId()); + wxCouponChannel.updateTenantInfo(coupon); + wxCouponChannel.setShowBeginTime(now); + wxCouponChannel.setBeginTime(now); + wxCouponChannel.setEndTime(coupon.getValidEndDate()); + wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_BEFORE.getCode()); + wxCouponChannel.setCouponId(coupon.getId()); + wxCouponChannel.setMakeMerchantId(coupon.getMakeMerchantId()); + wxCouponChannel.setType(coupon.getType()); + wxCouponChannel.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN.getCode()); + wxCouponChannel.setBusiness(coupon.getBusiness()); + wxCouponChannel.setSubBusiness(coupon.getSubBusiness()); + wxCouponChannel.setTitle(coupon.getTitle()); + wxCouponChannelMapper.insert(wxCouponChannel); + + }else if(wxCouponChannels.size() == 1){ + wxCouponChannel = wxCouponChannels.get(0); + wxCouponChannel.setShowBeginTime(now); + wxCouponChannel.setBeginTime(now); + wxCouponChannel.setEndTime(coupon.getValidEndDate()); + wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_BEFORE.getCode()); + wxCouponChannel.setCouponId(coupon.getId()); + wxCouponChannel.setMakeMerchantId(coupon.getMakeMerchantId()); + wxCouponChannel.setType(coupon.getType()); + wxCouponChannel.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN.getCode()); + wxCouponChannel.setBusiness(coupon.getBusiness()); + wxCouponChannel.setSubBusiness(coupon.getSubBusiness()); + wxCouponChannel.setTitle(coupon.getTitle()); + wxCouponChannel.setUpdateDate(now); + wxCouponChannelMapper.updateById(wxCouponChannel); + + }else{ + return new ResultData(ErrorCode.COUPON_CHANNEL_IS_EXISTED.getCode(),"此券状态异常,请重新创建"); + } //提交审核 try { @@ -254,7 +334,7 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { prostruct.setCategoryId(ttattrs.getCategoryId()); prostruct.setProductType(ttattrs.getProductType()); prostruct.setBizLine(5);//默认小程序 - prostruct.setAccountName(merchant.getName()); + prostruct.setAccountName(payAccountMerchant.getName()); prostruct.setSoldStartTime((long) DateUtils.getSecondTimestamp(wxCouponChannel.getBeginTime())); prostruct.setSoldEndTime((long) DateUtils.getSecondTimestamp(wxCouponChannel.getEndTime())); @@ -322,7 +402,9 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); }else if(product.getDraftStatus().intValue() == 1 && !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ - ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_pass.getCode()); +// ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_pass.getCode()); + //审核通过 + ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_put_on.getCode()); ttCouponChannelPoi.setLastStatusDesc(""); ttCouponChannelPoi.setUpdateDate(new Date()); ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); @@ -351,14 +433,17 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { Product product = products.get(0); if(product.getOnlineStatus().intValue() == 1 && !EnumSpuSyncStatus.sync_put_on.getCode().equals(ttCouponChannelPoi.getStatus())){ ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_put_on.getCode()); + ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_put_on.getCode()); ttCouponChannelPoi.setUpdateDate(new Date()); ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); }else if(product.getOnlineStatus().intValue() == 2 && !EnumSpuSyncStatus.sync_pull_off.getCode().equals(ttCouponChannelPoi.getStatus())){ ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_pull_off.getCode()); + ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_pull_off.getCode()); ttCouponChannelPoi.setUpdateDate(new Date()); ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); }else if(product.getOnlineStatus().intValue() == 3 && !EnumSpuSyncStatus.sync_audit_disable.getCode().equals(ttCouponChannelPoi.getStatus())){ ttCouponChannelPoi.setStatus(EnumSpuSyncStatus.sync_audit_disable.getCode()); + ttCouponChannelPoi.setLastStatus(EnumSpuSyncStatus.sync_audit_disable.getCode()); ttCouponChannelPoi.setUpdateDate(new Date()); ttCouponChannelPoiMapper.updateById(ttCouponChannelPoi); } @@ -379,28 +464,40 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未找到"); } TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(tenantInfo.getTenantId(),id); - if(ttCouponChannelPoi == null || !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + if(ttCouponChannelPoi == null || EnumSpuSyncStatus.sync_auditing.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_rejection.getCode().equals(ttCouponChannelPoi.getLastStatus())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未提交审核或审核未通过"); } //查询上架 - //op_type int64 TRUE 1-上线 2-下线 - Integer op_type = 2; + //op_type int64 TRUE EnumSpuSyncStatus 1-上线 2-下线 + Integer op_type = EnumSpuSyncStatus.sync_pull_off.getCode(); if(!EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode().equals(wxCoupon.getStatus())){ WxCouponChannel wxCouponChannelQuery = new WxCouponChannel(); wxCouponChannelQuery.updateTenantInfo(wxCoupon); wxCouponChannelQuery.setCouponId(wxCoupon.getId()); - wxCouponChannelQuery.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN_LIST.getCode()); + wxCouponChannelQuery.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN.getCode()); wxCouponChannelQuery.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); List wxCouponChannels = wxCouponChannelMapper.findList(wxCouponChannelQuery); if(wxCouponChannels.size() > 0){ - op_type = 1; + op_type = EnumSpuSyncStatus.sync_put_on.getCode(); } } + if(op_type.equals(ttCouponChannelPoi.getLastStatus())){ + logger.info("与线上状态一致, 无需同步{}"+wxCoupon.getId()); + return new ResultData(); + } + try { TtWebService ttWebService = ttMerchantPoiService.getTtWebService(ttCouponChannelPoi); boolean b = ttWebService.getGoodsService().productOperate(null,wxCoupon.getId().toString(),op_type); if(b){ + TtCouponChannelPoi ccPoi = new TtCouponChannelPoi(); + ccPoi.setId(ttCouponChannelPoi.getId()); + ccPoi.updateTenantInfo(ttCouponChannelPoi); + ccPoi.setLastStatus(op_type); + ccPoi.setUpdateDate(new Date()); + ttCouponChannelPoiMapper.updateById(ccPoi); return new ResultData(); }else{ return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"同步失败"); @@ -419,7 +516,8 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未找到"); } TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(tenantInfo.getTenantId(),id); - if(ttCouponChannelPoi == null || !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + if(ttCouponChannelPoi == null || EnumSpuSyncStatus.sync_auditing.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_rejection.getCode().equals(ttCouponChannelPoi.getLastStatus())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未提交审核或审核未通过"); } try { @@ -444,7 +542,8 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未找到"); } TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(tenantInfo.getTenantId(),id); - if(ttCouponChannelPoi == null || !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + if(ttCouponChannelPoi == null || EnumSpuSyncStatus.sync_auditing.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_rejection.getCode().equals(ttCouponChannelPoi.getLastStatus())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未提交审核或审核未通过"); } try { @@ -508,6 +607,7 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { map.put("path", Constant.mainPageUrl); Map paramMap = new HashMap<>(); paramMap.put("type","cd"); + paramMap.put("tenantId",tenantEntity.getTenantId()); paramMap.put("couponChannelId",couponChannelId); map.put("params",JSON.toJSONString(paramMap)); return JSON.toJSONString(map); @@ -520,6 +620,7 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { map.put("path", Constant.mainPageUrl); Map paramMap = new HashMap<>(); paramMap.put("type","orderAffirm"); + paramMap.put("tenantId",tenantEntity.getTenantId()); paramMap.put("couponChannelId",couponChannelId); map.put("params",JSON.toJSONString(paramMap)); return JSON.toJSONString(map); @@ -547,7 +648,8 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { @Override public ResultData poiPlanList(TenantEntity tenantInfo,Long couponId, Integer pageNum, Integer pageSize) { TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(tenantInfo.getTenantId(),couponId); - if(ttCouponChannelPoi == null || !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + if(ttCouponChannelPoi == null || EnumSpuSyncStatus.sync_auditing.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_rejection.getCode().equals(ttCouponChannelPoi.getLastStatus())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未提交审核或审核未通过"); } try { @@ -563,7 +665,8 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { @Override public ResultData poiOrientedPlanList(TenantEntity tenantInfo,Long couponId, Integer pageNum, Integer pageSize) { TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(tenantInfo.getTenantId(),couponId); - if(ttCouponChannelPoi == null || !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + if(ttCouponChannelPoi == null || EnumSpuSyncStatus.sync_auditing.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_rejection.getCode().equals(ttCouponChannelPoi.getLastStatus())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未提交审核或审核未通过"); } try { @@ -582,11 +685,12 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { if(wxCoupon == null){ return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"未找到该券"); } - if(!EnumCouponType.COUPON_DOUYIN.getCode().equals(wxCoupon.getType())){ + if(!EnumCouponType.getDouYinType().contains(wxCoupon.getType())){ return new ResultData(ErrorCode.COUPON_ORDER_TYPE_NOT_SUPPORTED); } TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(wxCoupon.getTenantId(),wxCoupon.getId()); - if(ttCouponChannelPoi == null || !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + if(ttCouponChannelPoi == null || EnumSpuSyncStatus.sync_auditing.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_rejection.getCode().equals(ttCouponChannelPoi.getLastStatus())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未提交审核或审核未通过"); } try { @@ -633,11 +737,12 @@ public class TtCouponGoodsServiceImpl implements TtCouponGoodsService { if(wxCoupon == null){ return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"未找到该券"); } - if(!EnumCouponType.COUPON_DOUYIN.getCode().equals(wxCoupon.getType())){ + if(!EnumCouponType.getDouYinType().contains(wxCoupon.getType())){ return new ResultData(ErrorCode.COUPON_ORDER_TYPE_NOT_SUPPORTED); } TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(wxCoupon.getTenantId(),wxCoupon.getId()); - if(ttCouponChannelPoi == null || !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + if(ttCouponChannelPoi == null || EnumSpuSyncStatus.sync_auditing.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_rejection.getCode().equals(ttCouponChannelPoi.getLastStatus())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未提交审核或审核未通过"); } try { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/TtMerchantPoiServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/TtMerchantPoiServiceImpl.java index 4437ca024..8b10e046f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/TtMerchantPoiServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/TtMerchantPoiServiceImpl.java @@ -605,14 +605,14 @@ public class TtMerchantPoiServiceImpl implements TtMerchantPoiService { try { String accessToken = ttWebService.getAccessToken(true); WxAppinfo updateApp = new WxAppinfo(); - updateApp.setId(appinfo.getId()); + updateApp.setAppId(appinfo.getAppId()); updateApp.setAccessToken(accessToken); updateApp.setLastTokenTime(new Date()); updateApp.setExpiresIn(7200); appinfo.setAccessToken(updateApp.getAccessToken()); appinfo.setLastTokenTime(updateApp.getLastTokenTime()); appinfo.setExpiresIn(updateApp.getExpiresIn()); - wxAppinfoMapper.updateById(updateApp); + wxAppinfoMapper.updateAccessToken(updateApp); } catch (WxErrorException e) { logger.error(e.getMessage()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java index 1f319ce51..a2fd805b3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java @@ -14,6 +14,7 @@ import com.iformall.enums.EnumCouponType; import com.iformall.enums.EnumPayWay; import com.iformall.mapper.WxAppinfoMapper; import com.iformall.service.WxAppinfoService; +import com.iformall.service.WxMallService; import com.iformall.utils.Constant; import com.iformall.utils.RedisCacheUtils; @@ -36,6 +37,9 @@ public class WxAppinfoServiceImpl implements WxAppinfoService { @Autowired WxAppinfoMapper wxAppinfoMapper; + @Autowired + WxMallService wxMallService; + @Autowired @Qualifier("objectCommonRedisTemplate") RedisTemplate wxAppinfoRedisTemplate; @@ -94,8 +98,27 @@ public class WxAppinfoServiceImpl implements WxAppinfoService { } @Override - public WxAppinfo getByAppId(String appId) { - return wxAppinfoMapper.findByAppId(appId); + public WxAppinfo getOnlyByAppId(String appId) { + WxAppinfo appinfoQ = new WxAppinfo(); + appinfoQ.setAppId(appId); + List list = wxAppinfoMapper.findList(appinfoQ); + if(list.size() == 1){ + return list.get(0); + }else if(list.size() > 0){ + for (WxAppinfo appinfo:list) { + TenantEntity tenantEntity = new TenantEntity(); + tenantEntity.setTenantId(appinfo.getTenantId()); + if(wxMallService.isgroupSupport(tenantEntity)){ + return appinfo; + } + } + } + return null; + } + + @Override + public WxAppinfo getByAppId(String appId, String tenantId) { + return wxAppinfoMapper.findByAppId(appId,tenantId); } @Override @@ -155,12 +178,26 @@ public class WxAppinfoServiceImpl implements WxAppinfoService { } @Override - public WxAppinfo getByAppIdFromRedis(String appId) { + public WxAppinfo getOnlyByAppIdFromRedis(String appId) { + WxAppinfo record = null; + String key = Constant.appinfoPrev + "only" + ":" + appId; + record = RedisCacheUtils.getCacheObject(wxAppinfoRedisTemplate, key, WxAppinfo.class); + if (null == record) { + record = this.getOnlyByAppId(appId); + if(record != null){ + RedisCacheUtils.cache(wxAppinfoRedisTemplate, key, record, 3600*24*7); + } + } + return record; + } + + @Override + public WxAppinfo getByAppIdFromRedis(String appId,String tenantId) { WxAppinfo record = null; - String key = Constant.appinfoPrev + appId; + String key = Constant.appinfoPrev + tenantId + ":" + appId; record = RedisCacheUtils.getCacheObject(wxAppinfoRedisTemplate, key, WxAppinfo.class); if (null == record) { - record = this.getByAppId(appId); + record = this.getByAppId(appId,tenantId); if(record != null){ RedisCacheUtils.cache(wxAppinfoRedisTemplate, key, record, 3600*24*7); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxAuthorizerInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxAuthorizerInfoServiceImpl.java index 72e259c70..870b344bb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAuthorizerInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAuthorizerInfoServiceImpl.java @@ -162,34 +162,23 @@ public class WxAuthorizerInfoServiceImpl implements WxAuthorizerInfoService { logger.error(e.getMessage()); } if (authorizerInfo == null) { - WxAppinfo appinfo = appinfoMapper.findByAppId(record.getAuthorizerAppid()); - if(appinfo != null) { - record.setId(appinfo.getId()); -// record.updateTenantInfo(appinfo.getTenantInfo()); - record.setTenantId(appinfo.getTenantId()); - record.setType(appinfo.getType()); - } else { - //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); - final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); - } + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); record.setCreateTime(curDate); record.setUpdateTime(curDate); // 授权表 添加 authorizerInfoMapper.insert(record); - if(appinfo.getType() != null) { - if (appinfo.getType().equals(EnumAppType.C.getCode()) || - appinfo.getType().equals(EnumAppType.B.getCode())) { + if(record.getType() != null) { + if (record.getType().equals(EnumAppType.C.getCode()) || + record.getType().equals(EnumAppType.B.getCode())) { // C/B 扩展配置表添加 WxWeappExtSet weappExtSet = new WxWeappExtSet(); weappExtSet.setId(record.getId()); weappExtSet.setAppId(record.getAuthorizerAppid()); - if (appinfo.getType().equals(EnumAppType.C.getCode())) { + if (record.getType().equals(EnumAppType.C.getCode())) { weappExtSet.setCarSupport(EnumCarSupport.NOCAR.getCode()); } - if (appinfo != null) { - weappExtSet.setType(appinfo.getType()); - } + weappExtSet.setType(record.getType()); weappExtSet.setCreateDate(curDate); weappExtSet.setUpdateDate(curDate); weappExtSetMapper.insert(weappExtSet); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBrandServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBrandServiceImpl.java index 17fc75e43..ef31a6d9f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBrandServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBrandServiceImpl.java @@ -11,6 +11,7 @@ import com.iformall.domain.po.WxBrand; import com.iformall.domain.po.WxBusiness; import com.iformall.domain.po.WxShop; import com.iformall.enums.EnumDelFlag; +import com.iformall.enums.EnumYesOrNo; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxBrandMapper; import com.iformall.service.WxBrandService; @@ -101,7 +102,7 @@ public class WxBrandServiceImpl implements WxBrandService { @Override public List> queryBrand(TenantEntity tenantEntity) { WxBrand wxBrand = new WxBrand(); - wxBrand.updateTenantInfo(tenantEntity); + wxBrand.setTenantId(tenantEntity.getFinalTenantId()); return wxBrandMapper.queryBrandByTenant(wxBrand); } @@ -115,7 +116,7 @@ public class WxBrandServiceImpl implements WxBrandService { @Override public Map getAllMap(TenantEntity tenantEntity) { WxBrand brandQ = new WxBrand(); - brandQ.updateTenantInfo(tenantEntity); + brandQ.setTenantId(tenantEntity.getFinalTenantId()); List brandList = wxBrandMapper.findList(brandQ); Map map = new HashMap(); if (null != brandList) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java index 7e0638615..f57def1b9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java @@ -220,6 +220,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { merchantSubsidy.setOrderId(order.getId()); merchantSubsidy.setOrderType(EnumOrderType.PREPAIDCARD.getCode()); merchantSubsidy.setMerchantId(record.getMerchantId()); + merchantSubsidy.setBTenantId(record.getTenantId()); merchantSubsidy.setCouponOrderId(cardInfo.getId()); merchantSubsidy.setCouponType(EnumCouponType.CARD_MULTIMCH.getCode()); merchantSubsidy.setOrderPayment(record.getDeductionAmount()); @@ -293,7 +294,9 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { //更新商户余额 if (real_payment > 0) { - wxCashOutService.addCashOut(couponMerchant.getMerchantId(), real_payment); + Long merchantId = couponMerchant.getMerchantId(); + WxMerchant merchant = wxMerchantMapper.selectById(merchantId); + wxCashOutService.addCashOut(merchant, real_payment); } } // } @@ -339,6 +342,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { merchantSubsidy.setOrderId(record.getOrderId()); merchantSubsidy.setOrderType(EnumOrderType.PREPAIDCARD.getCode()); merchantSubsidy.setMerchantId(record.getMerchantId()); + merchantSubsidy.setBTenantId(record.getTenantId()); merchantSubsidy.setCouponOrderId(record.getCardId()); merchantSubsidy.setCouponType(coupon.getType()); merchantSubsidy.setOrderPayment(record.getPayment()); @@ -862,6 +866,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { merchantSubsidy.setOrderId(record.getOrderId()); merchantSubsidy.setOrderType(EnumOrderType.PREPAIDCARD.getCode()); merchantSubsidy.setMerchantId(record.getMerchantId()); + merchantSubsidy.setBTenantId(record.getTenantId()); merchantSubsidy.setCouponOrderId(cardInfo.getId()); merchantSubsidy.setCouponType(EnumCouponType.CARD_MULTIMCH.getCode()); merchantSubsidy.setOrderPayment(record.getDeductionAmount()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCashOutServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCashOutServiceImpl.java index 8bffe3adb..e9f895841 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCashOutServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCashOutServiceImpl.java @@ -321,8 +321,7 @@ public class WxCashOutServiceImpl implements WxCashOutService { } @Override - public void addCashOut(Long merchantId, Integer amount) throws MallinkException{ - WxMerchant merchant = wxMerchantMapper.selectById(merchantId); + public void addCashOut(WxMerchant merchant, Integer amount) throws MallinkException{ WxMall mall = wxMallMapper.getByTenantId(merchant.getTenantId()); if (null != mall && mall.getCashOutSupport().intValue() == EnumCashOut.YES.getCode().intValue()) { if (null != merchant) { @@ -337,7 +336,7 @@ public class WxCashOutServiceImpl implements WxCashOutService { redisLock.unlock("merchantLockCashSet_"+merchant.getId(), timeStr); }catch(Exception e) { redisLock.unlock("merchantLockCashSet_"+merchant.getId(), timeStr); - logger.error("addCashOut error."+merchantId,e); + logger.error("addCashOut error."+merchant.getId(),e); throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"addCashOut error."+e.getMessage()); }finally { redisLock.unlock("merchantLockCashSet_"+merchant.getId(), timeStr); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java index 267d08bf5..487744cd1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java @@ -96,6 +96,9 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { @Autowired private WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper; + @Autowired + private WxCouponMallMapper wxCouponMallMapper; + /** * B端业务端 * @param record @@ -124,70 +127,136 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { } @Override + @Transactional(rollbackFor = {Exception.class}) public ResultData saveOrUpdate(WxCouponChannel record) { + boolean isThrowIn = false;//是否上架 + boolean isTakeOff = false;//是否下架 + WxCoupon wxCoupon = null; + if(record.getId() == null){ + if (record.getCouponId() != null) { + wxCoupon = wxCouponService.getById(record.getCouponId(),record.getTenantId()); + }else{ + return new ResultData(ErrorCode.COUPON_IS_EMPTY); + } + if(EnumCouponChannelStatus.STATUS_THROW_IN.getCode().equals(record.getStatus())){ + isThrowIn = true; + } + }else{ + WxCouponChannel old = getById(record.getId(),record.getTenantId()); + wxCoupon = wxCouponService.getById(old.getCouponId(),old.getTenantId()); + if(EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode().equals(old.getStatus()) + && EnumCouponChannelStatus.STATUS_THROW_IN.getCode().equals(record.getStatus())){ + if(record.getTargetAd() == null){ + record.setTargetAd(old.getTargetAd()); + } + isThrowIn = true; + }else if (old.getStatus().equals(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()) + && record.getStatus().equals(EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode())) { + isTakeOff = true; + } + } + if (wxCoupon == null){ + return new ResultData(ErrorCode.COUPON_IS_EMPTY); + } + if (wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF)){ + return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); + } + if(EnumCouponType.getDouYinType().contains(wxCoupon.getType())){ + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(wxCoupon.getTenantId(),wxCoupon.getId()); + if(ttCouponChannelPoi == null || EnumSpuSyncStatus.sync_auditing.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_rejection.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未提交审核或审核未通过"); + } + } + + if(isThrowIn){ + //查找是否该券 在该频道有其他上架 + WxCouponChannel query = new WxCouponChannel(); + query.updateTenantInfo(record); + query.setCouponId(record.getCouponId()); + query.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode());//已上架 + query.setTargetAd(record.getTargetAd()); + List list = wxCouponChannelMapper.findList(query); + if (list != null && list.size() > 0) { + return new ResultData(ErrorCode.COUPON_CHANNEL_IS_EXISTED); + } + //上架该券的审核渠道 + updateOnlineDouyin(wxCoupon); + } + + if(isTakeOff){ + wxScreenAdService.updateStatusByCouponChannelId(record.getId(),record,EnumScreenAdStatus.INVALID.getCode()); + //下架拼团券 + wxOrderService.updateOrderGroupStatusByCouponChannelId(record.getId(), record, EnumOrderStatus.ORDER_STATUS_COOPERATING_CANCEL.getCode()); + //修改卡状态 + wxCardInfoMapper.updateTransferStatusByCouponId(record.getCouponId()); + //浮层下架 + wxFloatingLayerMapper.updateStatus(record.getCouponId()); + + //下架该券的审核渠道(如所有渠道都已下线) + updateTakeOffDouyin(wxCoupon,record.getId()); + } + if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); wxCouponChannelMapper.insert(record); - return new ResultData(record); } else { - if (record.getCouponId() != null && record.getStatus() != null) { - WxCouponChannel orignal = getById(record.getId(),record.getTenantId()); - if (orignal.getStatus().equals(EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode()) - && record.getStatus().equals(EnumCouponChannelStatus.STATUS_THROW_IN.getCode())) { - - WxCoupon wxCoupon = wxCouponService.getById(orignal.getCouponId(),orignal.getTenantId()); - if (wxCoupon == null) - return new ResultData(ErrorCode.COUPON_IS_EMPTY); - if (wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF)) - return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); - - //查找是否该券 在该频道有其他上架 - WxCouponChannel query = new WxCouponChannel(); - query.updateTenantInfo(orignal); - query.setCouponId(orignal.getCouponId()); - query.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode());//已上架 - query.setTargetAd(orignal.getTargetAd()); - List list = wxCouponChannelMapper.findList(query); - if (list != null && list.size() > 0) { - return new ResultData(ErrorCode.COUPON_CHANNEL_IS_EXISTED); - } - } - } - Long couponId = null; - if (record.getStatus() != null) { - WxCouponChannel orignal = getById(record.getId(),record.getTenantId()); - if (orignal.getStatus().equals(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()) - && record.getStatus().equals(EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode())) { - couponId = orignal.getCouponId(); - wxScreenAdService.updateStatusByCouponChannelId(record.getId(),record,EnumScreenAdStatus.INVALID.getCode()); - //下架拼团券 - wxOrderService.updateOrderGroupStatusByCouponChannelId(record.getId(), record, EnumOrderStatus.ORDER_STATUS_COOPERATING_CANCEL.getCode()); - //修改卡状态 - wxCardInfoMapper.updateTransferStatusByCouponId(orignal.getCouponId()); - //浮层下架 - wxFloatingLayerMapper.updateStatus(orignal.getCouponId()); - - } - } record.setUpdateDate(new Date()); wxCouponChannelMapper.updateById(record); - - try{ - if(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode().equals(record.getStatus()) && couponId != null){ - //同步抖音状态 - spuStatusSyncByCoupon(record,couponId); - } - }catch(Exception e){ - logger.error("send spuStatusSync error: " + e.getMessage()); - } - } - //清除缓存 clearCache(record); - return new ResultData(); + return new ResultData(record); + } + + /** + * 前置 该券已审核通过 + * //上架该券的审核渠道 + * @param wxCoupon + */ + public void updateOnlineDouyin(WxCoupon wxCoupon){ + if(!EnumCouponType.getDouYinType().contains(wxCoupon.getType())){ + return; + } + WxCouponChannel updCC = new WxCouponChannel(); + updCC.updateTenantInfo(wxCoupon); + updCC.setCouponId(wxCoupon.getId()); + updCC.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN.getCode()); + updCC.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); + updCC.setUpdateDate(new Date()); + wxCouponChannelMapper.updateStatusByTargetAd(updCC); + + spuStatusSyncByCoupon(wxCoupon,wxCoupon.getId()); + } + + /** + * //下架该券的审核渠道(如所有其他渠道都已下线) + * @param wxCoupon + */ + public void updateTakeOffDouyin(WxCoupon wxCoupon,Long couponChannelId){ + if(!EnumCouponType.getDouYinType().contains(wxCoupon.getType())){ + return; + } + WxCouponChannel ccQ = new WxCouponChannel(); + ccQ.updateTenantInfo(wxCoupon); + ccQ.setCouponId(wxCoupon.getId()); + ccQ.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); + //Exclude + ccQ.setId(couponChannelId); + ccQ.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN.getCode()); + if(wxCouponChannelMapper.selectCountExclude(ccQ) == 0){ + WxCouponChannel updCC = new WxCouponChannel(); + updCC.updateTenantInfo(wxCoupon); + updCC.setCouponId(wxCoupon.getId()); + updCC.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_DOUYIN.getCode()); + updCC.setStatus(EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode()); + updCC.setUpdateDate(new Date()); + wxCouponChannelMapper.updateStatusByTargetAd(updCC); + + spuStatusSyncByCoupon(wxCoupon,wxCoupon.getId()); + } } @Override @@ -527,16 +596,6 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { } return retList; } - - - - private boolean isCouponMerchantValid(Long couponId,TenantEntity tenantEntity) { - List merchantVoList = wxMerchantService.findMerchantListByProduct(tenantEntity,couponId,false); - if (merchantVoList.stream().anyMatch((cm->cm.getMerchantStatus().equals(EnumMerchantStatus.VALID.getCode())))){ - return true; - } - return false; - } @Override public WxCouponChannelAddVo addCouponChannel(Long couponid,Integer channelId, TenantEntity tenantEntity,Date showBeginTime,Date beginTime,Date endTime,Integer channelPrice,Integer channelStock){ @@ -587,7 +646,7 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { } if(!EnumCouponType.COUPON_GIFT.getCode().equals(wxCoupon.getType()) - && !isCouponMerchantValid(wxCoupon.getId(),wxCoupon)) { + && !wxCouponService.isCouponMerchantValid(wxCoupon.getId(),wxCoupon.getType(),wxCoupon)) { logger.debug(wxCoupon.getId()+couponid+ErrorCode.MERCHANT_INFO_NOT_FOUND.getMessage()); vo.toCouponChannnelVo(wxCoupon,channelId); vo.setErrorMsg(ErrorCode.MERCHANT_INFO_NOT_FOUND.getMessage()); @@ -596,7 +655,6 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { // 投放渠道 if(channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_LIST.getCode()) || // 列表 - channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_CARD.getCode()) || // 卡频道 channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_PRESS.getCode()) || // 砍价 channelId.equals(EnumCouponChannelType.COUPON_CHANNEL_ID_ORDER_GROUP.getCode()) || // 拼团 @@ -646,6 +704,7 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { wxCouponChannel.setBusiness(wxCoupon.getBusiness()); wxCouponChannel.setSubBusiness(wxCoupon.getSubBusiness()); wxCouponChannel.setTitle(wxCoupon.getTitle()); + wxCouponChannel.setTtSpuId(wxCoupon.getGoodsId()); wxCouponChannel.setChannelPrice(channelPrice); wxCouponChannel.setChannelStock(channelStock); ResultData resultData = saveOrUpdate(wxCouponChannel); @@ -790,7 +849,12 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { @Override public ResultData getCouponChannelPoi(TenantEntity tenantInfo, Long id) { - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectByChannelId(tenantInfo.getTenantId(),id); + WxCouponChannel couponChannel = this.getById(id, tenantInfo.getTenantId()); + if(couponChannel == null){ + return new ResultData(ErrorCode.SYS_NULLPOINTER_ERROR.getCode(),"未找到可用的数据"); + } + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(tenantInfo.getTenantId(), couponChannel.getCouponId()); + if(ttCouponChannelPoi != null && ttCouponChannelPoi.getLastStatus() != null && ttCouponChannelPoi.getLastStatus().intValue() > 0){ return new ResultData(ttCouponChannelPoi); } @@ -818,9 +882,16 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { @Override public ResultData updateOnline(WxCouponChannel wxCouponChannel) { - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectByChannelId(wxCouponChannel.getTenantId(),wxCouponChannel.getId()); - if(ttCouponChannelPoi == null || !EnumSpuSyncStatus.sync_audit_pass.getCode().equals(ttCouponChannelPoi.getLastStatus())){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该商品未提交审核或审核未通过"); + WxCouponChannel couponChannel = this.getById(wxCouponChannel.getId(), wxCouponChannel.getTenantId()); + if(couponChannel == null){ + return new ResultData(ErrorCode.SYS_NULLPOINTER_ERROR.getCode(),"未找到可用的数据"); + } + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(couponChannel.getTenantId(), couponChannel.getCouponId()); + + if(ttCouponChannelPoi == null || EnumSpuSyncStatus.sync_auditing.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_rejection.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_disable.getCode().equals(ttCouponChannelPoi.getLastStatus())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"该券未提交审核或审核未通过"); } Date date = new Date(); WxCouponChannel updChannel = new WxCouponChannel(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponMallServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponMallServiceImpl.java new file mode 100644 index 000000000..b30f46510 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponMallServiceImpl.java @@ -0,0 +1,123 @@ +package com.iformall.service.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; +import com.iformall.domain.po.*; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumAppPlat; +import com.iformall.enums.EnumCouponChannelStatus; +import com.iformall.enums.EnumCouponMallStatus; +import com.iformall.enums.EnumCouponMerchantStatus; +import com.iformall.enums.EnumCouponType; +import com.iformall.enums.EnumSpuSyncStatus; +import com.iformall.exception.MallinkException; +import com.iformall.mapper.*; +import com.iformall.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.*; + +@Service +public class WxCouponMallServiceImpl implements WxCouponMallService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + WxCouponMallMapper wxCouponMallMapper; + @Autowired + TtCouponChannelPoiMapper ttCouponChannelPoiMapper; + @Autowired + WxCouponChannelMapper wxCouponChannelMapper; + @Autowired + WxMallMapper wxMallMapper; + @Autowired + WxCouponMerchantMapper wxCouponMerchantMapper; + + @Override + public List list(WxCouponMall wxCouponMall,boolean queryMall){ + List list = wxCouponMallMapper.findList(wxCouponMall); + if (queryMall) { + if (null != list && list.size() > 0 ) { + List mallTenantList = new ArrayList();; + for (int i = 0 ;i mallList = wxMallMapper.findList(mallq); + if (null != mallList && mallList.size() > 0) { + Map mallMap = new HashMap(); + for (WxMall m:mallList) { + mallMap.put(m.getTenantId(), m); + } + for (WxCouponMall cm : list) { + cm.setMall(mallMap.get(cm.getMallTenantId())); + } + } + } + } + return list; + } + + @Override + public List listCouponIds(WxCouponMall wxCouponMall){ + return wxCouponMallMapper.findCouponIdList(wxCouponMall); + } + + @Override + public PageInfo listAsPage(WxCouponMall record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponMallMapper.findList(record)); + } + + @Override + public void finised(String couponTenantId, Long couponId, String mallTenantId) { + //查询商户设置了没有 + WxCouponMerchant cmParam = new WxCouponMerchant(); + cmParam.setTenantId(mallTenantId); + cmParam.setProductId(couponId); + cmParam.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode()); + List merchantList = wxCouponMerchantMapper.findList(cmParam); + if (null == merchantList || merchantList.size() <= 0 ) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"未设置有效商户"); + } + + WxCouponMall couponMall = new WxCouponMall(); + couponMall.setTenantId(couponTenantId); + couponMall.setMallTenantId(mallTenantId); + couponMall.setProductId(couponId); + couponMall.setStatus(EnumCouponMallStatus.FINISED.getCode()); + wxCouponMallMapper.updateStatus(couponMall); + } + + @Override + public void unfinised(String couponTenantId, Long couponId,Integer couponType, String mallTenantId) throws Exception{ + //抖音平台查询的是未提交抖音审核的,微信是未上架的 + EnumAppPlat plat = EnumCouponType.getAppPlat(couponType); + if (plat == EnumAppPlat.TOUTIAO) { + TtCouponChannelPoi poi = ttCouponChannelPoiMapper.selectById(couponTenantId, couponId); + if (null != poi &&( EnumSpuSyncStatus.isValid(poi.getLastStatus()))) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"券已在抖音审核流程中,无法修改。"); + } + }else if (plat == EnumAppPlat.WX) { + WxCouponChannel couponChannel = new WxCouponChannel(); + couponChannel.setTenantId(couponTenantId); + couponChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); + List clist = wxCouponChannelMapper.findList(couponChannel); + if (null != clist && clist.size() > 0 ) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"券已投放且上架,无法修改。"); + } + } + WxCouponMall couponMall = new WxCouponMall(); + couponMall.setTenantId(couponTenantId); + couponMall.setMallTenantId(mallTenantId); + couponMall.setProductId(couponId); + couponMall.setStatus(EnumCouponMallStatus.UNFINISED.getCode()); + wxCouponMallMapper.updateStatus(couponMall); + } + +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index 66ef72f57..c9cb23744 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -43,6 +43,7 @@ import com.iformall.utils.RedisLock; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang3.StringUtils; +import org.flowable.engine.runtime.Execution; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -202,6 +203,9 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Autowired WxCouponCarMapper wxCouponCarMapper; + + @Autowired + WxMallMapper wxMallMapper; private final SimpleDateFormat mydateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -380,19 +384,47 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { return pageInfo; } - private List handleToCouponOrderBVoList(TenantEntity tenantEntity,List couponOrderList,boolean hasMerchant,boolean hasShop) { + private List handleToCouponOrderBVoList(TenantEntity couponOrderTenantEntity,List couponOrderList,boolean hasMerchant,boolean hasShop) { List retList = null; if (null != couponOrderList && couponOrderList.size() > 0 ) { retList = new ArrayList(); - List bUserIdList = new ArrayList(); + Map> mallBUserIdList = new HashMap>(); List cUserIdList = new ArrayList(); List couponIdList = new ArrayList(); + List mallTenantIdList = new ArrayList(); + mallTenantIdList.add(couponOrderTenantEntity.getTenantId()); + //查询子广场 + WxMall wxMallq = new WxMall(); + List partlist = new ArrayList(); + partlist.add(couponOrderTenantEntity.getTenantId()); + if (null != couponOrderTenantEntity.getParentTenantId()) { + partlist.add(couponOrderTenantEntity.getParentTenantId()); + } + wxMallq.setParentTenantIdList(partlist); + List mallList = wxMallMapper.findList(wxMallq); + if ( null != mallList && mallList.size() > 0 ) { + for (WxMall mall : mallList) { + if (!mallTenantIdList.contains(mall.getTenantId())) { + mallTenantIdList.add(mall.getTenantId()); + } + } + } for (int j = 0 ; j < couponOrderList.size(); j ++) { WxCouponOrder co = couponOrderList.get(j); Long bUserId = co.getBUserId(); - if (null != bUserId && (!bUserIdList.contains(bUserId))) { - bUserIdList.add(bUserId); + if (null != bUserId ) { + String mallTenantId = co.getBTenantId(); + if (!StringUtils.isBlank(mallTenantId)){ + List bUserIdList = mallBUserIdList.get(mallTenantId); + if (null == bUserIdList) { + bUserIdList = new ArrayList(); + } + if (!bUserIdList.contains(bUserId)) { + bUserIdList.add(bUserId); + } + mallBUserIdList.put(mallTenantId, bUserIdList); + } } Long cUserId = co.getcUserId(); @@ -408,44 +440,63 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { //获取到buserId Map bUserMap = new HashMap(); - List merchantIdList = null; - if (bUserIdList.size() > 0 ) { - merchantIdList = new ArrayList(); - WxMerchantBUser merchantBUserQ = new WxMerchantBUser(); - merchantBUserQ.updateTenantInfo(tenantEntity); - merchantBUserQ.setIds(bUserIdList); - List bUserList = wxMerchantBUserMapper.findSimpleList(merchantBUserQ); - if (null != bUserList) { - for (int k = 0 ; k < bUserList.size() ; k++) { - WxMerchantBUser b = bUserList.get(k); - bUserMap.put(b.getId(), b); - if (!merchantIdList.contains(b.getMerchantId())) { - merchantIdList.add(b.getMerchantId()); - } - } - } + Map> mallMerchantIdList = null; + if (mallBUserIdList.size() > 0 ) { + mallMerchantIdList = new HashMap>(); + for (Iterator it = mallBUserIdList.keySet().iterator();it.hasNext();) { + String mallTenantId = it.next(); + List bUserIdList = mallBUserIdList.get(mallTenantId); + if (null != bUserIdList && bUserIdList.size() > 0 ) { + WxMerchantBUser merchantBUserQ = new WxMerchantBUser(); + merchantBUserQ.setTenantId(mallTenantId); + merchantBUserQ.setIds(bUserIdList); + List bUserList = wxMerchantBUserMapper.findSimpleList(merchantBUserQ); + if (null != bUserList) { + List merchantIdList = mallMerchantIdList.get(mallTenantId); + if (null == merchantIdList) { + merchantIdList = new ArrayList<>(); + } + for (int k = 0 ; k < bUserList.size() ; k++) { + WxMerchantBUser b = bUserList.get(k); + bUserMap.put(b.getId(), b); + if (!merchantIdList.contains(b.getMerchantId())) { + merchantIdList.add(b.getMerchantId()); + } + } + mallMerchantIdList.put(mallTenantId, merchantIdList); + } + } + } + } //merchant Map merchantSimpleMap = new HashMap(); - if (null != merchantIdList && merchantIdList.size() > 0) { - WxMerchant merchantQ = new WxMerchant(); - merchantQ.updateTenantInfo(tenantEntity); - merchantQ.setIds(merchantIdList); - List merchantList = wxMerchantMapper.findIdNameList(merchantQ); - if (null != merchantList) { - for (int k = 0 ; k < merchantList.size() ; k++) { - WxMerchant m = merchantList.get(k); - merchantSimpleMap.put(m.getId(), m); - } + if (null != mallMerchantIdList && mallMerchantIdList.size() > 0) { + for (Iterator it = mallMerchantIdList.keySet().iterator();it.hasNext();) { + String mallTenantId = it.next(); + List merchantIdList = mallMerchantIdList.get(mallTenantId); + if (null != merchantIdList && merchantIdList.size() > 0 ){ + WxMerchant merchantQ = new WxMerchant(); + merchantQ.setTenantId(mallTenantId); + merchantQ.setIds(merchantIdList); + List merchantList = wxMerchantMapper.findIdNameList(merchantQ); + if (null != merchantList) { + for (int k = 0 ; k < merchantList.size() ; k++) { + WxMerchant m = merchantList.get(k); + merchantSimpleMap.put(m.getId(), m); + } + } + } } + } //获取到cUserId Map cUserSimpleMap = new HashMap(); if (cUserIdList.size() > 0 ) { WxCUserBasicInfo cBasicInfoQ = new WxCUserBasicInfo(); - cBasicInfoQ.setFinalTenantId(tenantEntity.getFinalTenantId()); + cBasicInfoQ.setFinalTenantId(couponOrderTenantEntity.getFinalTenantId()); cBasicInfoQ.setIds(cUserIdList); List cUserBasicInfoList = wxCUserBasicInfoMapper.findListPhoneAndNameByIds(cBasicInfoQ); if (null != cUserBasicInfoList) { @@ -460,7 +511,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { Map couponMap = new HashMap(); if (couponIdList.size() > 0 ) { WxCoupon couponQ = new WxCoupon(); - couponQ.updateTenantInfo(tenantEntity); + couponQ.updateTenantInfo(couponOrderTenantEntity); couponQ.setIds(couponIdList); List couponList = wxCouponMapper.findTenantSimpleList(couponQ); if (null != couponList) { @@ -470,13 +521,48 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } } - Map> couponMerchantVoMap = null; + Map>> mallCouponMerchantVoMap = null; if (hasMerchant) { - couponMerchantVoMap = wxMerchantService.findCouponMerchantVoList(couponIdList, tenantEntity,hasShop); + if (mallTenantIdList.size() > 0 ) { + mallCouponMerchantVoMap = new HashMap>>(); + for (int i = 0 ; i < mallTenantIdList.size();i++) { + String mallTenantId = mallTenantIdList.get(i); + TenantEntity mallTenantEntity = new TenantEntity(); + mallTenantEntity.setTenantId(mallTenantId); + Map> couponMerchantVoMap = wxMerchantService.findCouponMerchantVoList(couponIdList, mallTenantEntity,hasShop); + mallCouponMerchantVoMap.put(mallTenantId, couponMerchantVoMap); + } + } + } + + Map> couponMerchantVoMap = null; + if (null != mallCouponMerchantVoMap) { + couponMerchantVoMap = new HashMap>(); + for (Iterator it = mallCouponMerchantVoMap.keySet().iterator();it.hasNext();) { + String mtid = it.next(); + Map> couponMerchantList = mallCouponMerchantVoMap.get(mtid); + if (null != couponMerchantList) { + for (Iterator cid = couponMerchantList.keySet().iterator();cid.hasNext();) { + Long couponId = cid.next(); + List merchantVoList = couponMerchantList.get(couponId); + if (null != merchantVoList && merchantVoList.size() > 0 ) { + List vlist = couponMerchantVoMap.get(couponId); + if (null != vlist && vlist.size() > 0 ) { + merchantVoList.addAll(vlist); + } + couponMerchantVoMap.put(couponId, merchantVoList); + } + } + } + } } + for (int i = 0 ; i < couponOrderList.size() ; i ++) { WxCouponOrder couponOrder = couponOrderList.get(i); + if (null == couponMerchantVoMap) { + couponMerchantVoMap = new HashMap>(); + } WxCouponOrderBVo bvo = couponOrdertoBVo(couponOrder,bUserMap,merchantSimpleMap,cUserSimpleMap,couponMap,hasMerchant,couponMerchantVoMap); if (null != bvo ) { retList.add(bvo); @@ -849,28 +935,60 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { return new ResultData(retPageInfo); } - private List handleQueryResult(boolean cUserEntry,List list,TenantEntity tenantEntity) { + private List handleQueryResult(boolean cUserEntry,List list,TenantEntity couponOrderTenantEntity) { if (null != list && list.size() > 0) { //循环list,获取 cUserId List cUserIdList = new ArrayList(); - List bUserIdList = new ArrayList(); - List merchantIdList = new ArrayList(); + Map> mallBUserIdList = new HashMap>(); + Map> mallMerchantIdList = new HashMap>(); List couponIdList = new ArrayList(); + + List mallTenantIdList = new ArrayList(); + mallTenantIdList.add(couponOrderTenantEntity.getTenantId()); + //查询子广场 + WxMall wxMallq = new WxMall(); + List partlist = new ArrayList(); + partlist.add(couponOrderTenantEntity.getTenantId()); + if (null != couponOrderTenantEntity.getParentTenantId()) { + partlist.add(couponOrderTenantEntity.getParentTenantId()); + } + wxMallq.setParentTenantIdList(partlist); + List mallList = wxMallMapper.findList(wxMallq); + if ( null != mallList && mallList.size() > 0 ) { + for (WxMall mall : mallList) { + if (!mallTenantIdList.contains(mall.getTenantId())) { + mallTenantIdList.add(mall.getTenantId()); + } + } + } + + for (int i = 0 ; i < list.size() ; i ++ ) { WxCouponOrder bo = list.get(i); Long cusrid = bo.getcUserId(); if (null != cusrid && (!cUserIdList.contains(cusrid))) { cUserIdList.add(cusrid); } - Long bUserId = bo.getBUserId(); - if(null != bUserId && (!bUserIdList.contains(bUserId))){ - bUserIdList.add(bUserId); - } - - Long bmerchantId = bo.getBMerchantId(); - if (null != bmerchantId && (!merchantIdList.contains(bmerchantId))) { - merchantIdList.add(bmerchantId); + if (!StringUtils.isBlank(bo.getBTenantId())){ + List bUserIdList = mallBUserIdList.get(bo.getBTenantId()); + if (null == bUserIdList) { + bUserIdList = new ArrayList(); + } + Long bUserId = bo.getBUserId(); + if(null != bUserId && (!bUserIdList.contains(bUserId))){ + bUserIdList.add(bUserId); + } + mallBUserIdList.put(bo.getBTenantId(), bUserIdList); + + List merchantIds = mallMerchantIdList.get(bo.getBTenantId()); + if (null == merchantIds) { + merchantIds = new ArrayList(); + } + if(null != bo.getMerchantId() && (!merchantIds.contains(bo.getMerchantId()))){ + merchantIds.add(bo.getMerchantId()); + } + mallMerchantIdList.put(bo.getBTenantId(), merchantIds); } Long couponId = bo.getCouponId(); if (null != couponId && (!couponIdList.contains(couponId))) { @@ -879,37 +997,30 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } Map buserPhoneMap = new HashMap(); - if(bUserIdList.size() > 0){ - WxMerchantBUser buserQ = new WxMerchantBUser(); - buserQ.updateTenantInfo(tenantEntity); - buserQ.setIds(bUserIdList); - List bUserList = wxMerchantBUserMapper.findSimpleList(buserQ); - if(null != bUserList && bUserList.size() > 0){ - for (WxMerchantBUser bUser: bUserList) { - buserPhoneMap.put(bUser.getId(),bUser); - } - } + if(mallBUserIdList.size() > 0){ + for (Iterator it = mallBUserIdList.keySet().iterator();it.hasNext();) { + String mallTenantId = it.next(); + List bUserIdList = mallBUserIdList.get(mallTenantId); + if (null != bUserIdList && bUserIdList.size() > 0 ) { + WxMerchantBUser buserQ = new WxMerchantBUser(); + buserQ.setTenantId(mallTenantId); + buserQ.setIds(bUserIdList); + List bUserList = wxMerchantBUserMapper.findSimpleList(buserQ); + if(null != bUserList && bUserList.size() > 0){ + for (WxMerchantBUser bUser: bUserList) { + buserPhoneMap.put(bUser.getId(),bUser); + } + } + } + } + } - Map merchantNameMap = new HashMap(); - if (null != merchantIdList && merchantIdList.size() > 0 ) { - WxMerchant merchantQ = new WxMerchant(); - merchantQ.updateTenantInfo(tenantEntity); -// merchantQ.setIds(merchantIdList); - List merchantList = wxMerchantMapper.findIdNameList(merchantQ); - if (null != merchantList) { - for (int i = 0 ; i < merchantList.size() ; i ++) { - WxMerchant m = merchantList.get(i); - merchantNameMap.put(m.getId(), m.getName()); - } - } - } - Map couponMap = new HashMap(); Map merchantProductIdMap = new HashMap(); if (null != couponIdList && couponIdList.size() > 0 ) { WxCoupon couponQ = new WxCoupon(); - couponQ.updateTenantInfo(tenantEntity); + couponQ.updateTenantInfo(couponOrderTenantEntity); couponQ.setIds(couponIdList); List couponList = wxCouponMapper.findTenantSimpleList(couponQ); if (null != couponList) { @@ -919,24 +1030,56 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } - List merchantProductVos = wxCouponMerchantMapper.findMerchantProduct(tenantEntity.getTenantId(), couponIdList); - if (null != merchantProductVos) { - for (int i = 0 ; i < merchantProductVos.size(); i ++) { - WxMerchantProductVo mp = merchantProductVos.get(i); - if (mp.getMc() > 1) { - merchantProductIdMap.put(mp.getProductId(), -999L); - }else { - merchantProductIdMap.put(mp.getProductId(), mp.getMerchantId()); + for (int i = 0 ; i < mallTenantIdList.size(); i++) { + String mallTenantId = mallTenantIdList.get(i); + List merchantIds = mallMerchantIdList.get(mallTenantId); + List merchantProductVos = wxCouponMerchantMapper.findMerchantProduct(mallTenantId, couponIdList); + if (null != merchantProductVos) { + if (null == merchantIds) { + merchantIds = new ArrayList(); } + for (int j = 0 ; j < merchantProductVos.size(); j ++) { + WxMerchantProductVo mp = merchantProductVos.get(j); + if (mp.getMc() > 1) { + merchantProductIdMap.put(mp.getProductId(), -999L); + }else { + merchantProductIdMap.put(mp.getProductId(), mp.getMerchantId()); + if (!merchantIds.contains(mp.getMerchantId())) { + merchantIds.add(mp.getMerchantId()); + } + } + } + mallMerchantIdList.put(mallTenantId, merchantIds); } - } + } + + } + + Map merchantNameMap = new HashMap(); + if (null != mallMerchantIdList && mallMerchantIdList.size() > 0 ) { + for (Iterator it = mallMerchantIdList.keySet().iterator();it.hasNext();) { + String mallTenantIt = it.next(); + List merchantIdList = mallMerchantIdList.get(mallTenantIt); + if (null != merchantIdList && merchantIdList.size() > 0 ) { + WxMerchant merchantQ = new WxMerchant(); + merchantQ.setTenantId(mallTenantIt); + merchantQ.setIds(merchantIdList); + List merchantList = wxMerchantMapper.findIdNameList(merchantQ); + if (null != merchantList) { + for (int i = 0 ; i < merchantList.size() ; i ++) { + WxMerchant m = merchantList.get(i); + merchantNameMap.put(m.getId(), m.getName()); + } + } + } + } } Map cUserMap = new HashMap(); if (cUserIdList.size() > 0) { WxCUserBasicInfo cUserBasicInfoQ = new WxCUserBasicInfo(); cUserBasicInfoQ.setIds(cUserIdList); - cUserBasicInfoQ.setFinalTenantId(tenantEntity.getFinalTenantId()); + cUserBasicInfoQ.setFinalTenantId(couponOrderTenantEntity.getFinalTenantId()); List cuserList = wxCUserBasicInfoService.listPhoneAndNameByIds(cUserBasicInfoQ); if (null != cuserList) { for (int i = 0 ; i < cuserList.size() ; i++) { @@ -1196,7 +1339,6 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override public ResultData detailAdminVo(Long couponOrderId,TenantEntity tenantinfo) { - WxCouponOrder couponOrder = wxCouponOrderMapper.findDetailOfAdmin(couponOrderId,tenantinfo.getTenantId()); if (null == couponOrder) { return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); @@ -1220,14 +1362,6 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { List bolist = handleQueryResult(cUserEntry,list,wxCouponOrder); excelService.exportCsv(bolist, null, filename, WxCouponOrderBVo.class, filename + ".csv", response, false); } - - private WxAppinfo getAppinfo(TenantEntity tenantEntity,Integer payWay) { - WxAppinfo wxAppinfo = wxAppinfoService.getCAppInfo(tenantEntity, EnumPayWay.getEnum(payWay).getPlat()); - if (wxAppinfo == null) - throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); - - return wxAppinfo; - } @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @@ -1261,12 +1395,20 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { throw new MallinkException(ErrorCode.COUPON_ORDER_IS_PRE_VERIFY); } + //核销tenant + TenantEntity mallTenantEntity = new TenantEntity(); + if(bUser != null){ + mallTenantEntity.updateTenantInfo(bUser); + }else{ + mallTenantEntity.updateTenantInfo(wxCoupon); + } + // 2. 检查适用门店 Long merchantId = null; if(EnumCouponType.COUPON_DISTRIBUTION.getCode().equals(wxCoupon.getType())){ //可配送商品 WxCouponMerchant wxCouponMerchant = new WxCouponMerchant(); - wxCouponMerchant.updateTenantInfo(wxCoupon); + wxCouponMerchant.updateTenantInfo(mallTenantEntity); wxCouponMerchant.setProductId(wxCoupon.getId()); wxCouponMerchant.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode()); WxCouponMerchant cm = null; @@ -1295,7 +1437,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { throw new MallinkException(ErrorCode.VERIFY_COUPON_TYPE_NOT_SUPPORT); } WxCouponMerchant wxCouponMerchant = new WxCouponMerchant(); - wxCouponMerchant.updateTenantInfo(wxCoupon); + wxCouponMerchant.updateTenantInfo(mallTenantEntity); wxCouponMerchant.setProductId(wxCoupon.getId()); wxCouponMerchant.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode()); List couponMerchantList = wxCouponMerchantMapper.findList(wxCouponMerchant); @@ -1315,23 +1457,25 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { if(wxPayOrder != null && EnumPayMchType.TOTAL.getCode().equals(wxPayOrder.getMchType()) && EnumPayShare.YES.getCode().equals(wxPayOrder.getShare())){ WxProfitSharingReceiver receiver = payServiceFactory.getPayShareAdapterService(wxPayOrder.getPayVendor(),couponOrder.getPayVersion()) - .getReceiver(couponOrder, merchantId, wxPayOrder.getTtPayWay(),wxPayOrder.getMchType()); + .getReceiver(mallTenantEntity, merchantId, wxPayOrder.getTtPayWay(),wxPayOrder.getMchType()); if (null == receiver) { throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL.getCode(),"当前商户没有配置收款账号。"); } - }else if(wxPayOrder != null && EnumPayMchType.DIRECT.getCode().equals(wxPayOrder.getMchType())){ - merchantId = wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getMerchantId(); - if (null == merchantId) { - throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL.getCode(),"订单支付信息未包含商户"); - } } +// else if(wxPayOrder != null && EnumPayMchType.DIRECT.getCode().equals(wxPayOrder.getMchType())){ +// merchantId = wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getMerchantId(); +// if (null == merchantId) { +// throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL.getCode(),"订单支付信息未包含商户"); +// } +// } } int num = 0; try { couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销 couponOrder.setBUserId(bUser==null?0l:bUser.getId()); - couponOrder.setBMerchantId(bUser==null?0l:bUser.getMerchantId()); + couponOrder.setBMerchantId(merchantId==null?0l:merchantId); + couponOrder.setBTenantId(mallTenantEntity.getTenantId()); couponOrder.setVerifyType(couponVerifyType.getCode()); if(EnumCouponVerifyType.VERIFY_B.equals(couponVerifyType) && StringUtils.isNotBlank(couponOrder.getVerifyRemark())){ @@ -1368,12 +1512,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } - if(EnumCouponVerifyType.VERIFY_B.equals(couponVerifyType)){ - doAfterVerify(couponOrder, bUser, wxCoupon); - }else{ - doAfterVerify(couponOrder, wxCoupon, merchantId); - } - couponOrder.setMerchantId(merchantId); + doAfterVerify(couponOrder, bUser, wxCoupon); return couponOrder; } @@ -1457,15 +1596,15 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), e.getMessage()); } - if (couponOrder != null && couponOrder.getMerchantId() != null) { - this.sendInsideCouponVerifyMsg(couponOrder, couponOrderId, couponOrder.getMerchantId(),couponOrder.getBMerchantId()); + if (couponOrder != null) { + this.sendInsideCouponVerifyMsg(couponOrder.getId(),couponOrder, wxMerchantBUser.getMerchantId(), wxMerchantBUser); } return couponOrder; } /** - * B端核销卷增加成长值,积分 + * 核销增加成长值,积分 * @param couponOrder * @param bUser * @param wxCoupon @@ -1481,10 +1620,20 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { // 积分 try { + //-------此处为【现金支付】记录增加积分操作------- WxCreditHistory creditHistory = new WxCreditHistory(); - creditHistory.setOperatorType(EnumUserType.BUSER.getCode()); - creditHistory.setOperatorId(bUser.getId()); + if(bUser != null){ + creditHistory.setOperatorType(EnumUserType.BUSER.getCode()); + creditHistory.setOperatorId(bUser.getId()); + creditHistory.setMerchantId(bUser.getMerchantId()); + creditHistory.setBuserId(bUser.getBuserId()); + }else{ + creditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); + creditHistory.setOperatorId(couponOrder.getCUserId()); + creditHistory.setMerchantId(couponOrder.getBMerchantId()); + } + creditHistory.setCUserId(couponOrder.getcUserId()); creditHistory.setCreateDate(new Date()); // creditHistory.updateTenantInfo(couponOrder); @@ -1494,11 +1643,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { creditHistory.setCouponId(wxCoupon.getId()); creditHistory.setBusinessId(wxCoupon.getBusiness()); creditHistory.setSpend(couponOrder.getCouponPrice()); - //如果券与商户一对一 则直接将消费商户更新为此商户 若一对多 则消费商户显示多商户 - creditHistory.setMerchantId(bUser.getMerchantId()); - creditHistory.setBuserId(bUser.getBuserId()); - WxMerchant wxMerchant = wxMerchantMapper.selectById(bUser.getMerchantId()); - creditHistory.setChangePurpose("商户核销增加积分:商户名称["+wxMerchant.getName()+"] 券名称["+wxCoupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); + creditHistory.setChangePurpose("券["+wxCoupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] 使用成功"); wxCreditHistoryService.saveOrUpdate(creditHistory,couponOrder.getTenantId()); } catch (Exception e) { logger.error("积分值:" + e.getMessage()); @@ -1542,60 +1687,60 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } - /** - * 自主核销商品加成长值 积分 - * @param couponOrder - * @param wxCoupon - */ - private void doAfterVerify(WxCouponOrder couponOrder, WxCoupon wxCoupon,Long merchantId) { - // 成长值 - try { - WxOrder order = wxOrderMapper.selectById(couponOrder.getOrderId(),couponOrder.getTenantId()); - wxScoreRulesService.addScore2(couponOrder,EnumScoreType.CONSUMPTION, order, wxCoupon.getBusiness()); - } catch (Exception e) { - logger.error("成长值:" + e.getMessage()); - } - - // 积分 - try { - //-------此处为【现金支付】记录增加积分操作------- - WxCreditHistory creditHistory = new WxCreditHistory(); - creditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); - creditHistory.setOperatorId(couponOrder.getCUserId()); - creditHistory.setCUserId(couponOrder.getCUserId()); - creditHistory.setCreateDate(new Date()); -// creditHistory.updateTenantInfo(couponOrder); - creditHistory.setTenantId(couponOrder.getFinalTenantId()); - creditHistory.setFinalTenantId(couponOrder.getFinalTenantId()); - creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode()); - creditHistory.setCouponId(wxCoupon.getId()); - creditHistory.setBusinessId(wxCoupon.getBusiness()); - creditHistory.setSpend(couponOrder.getCouponPrice()); - //如果券与商户一对一 则直接将消费商户更新为此商户 若一对多 则消费商户显示多商户 - creditHistory.setMerchantId(merchantId); - creditHistory.setChangePurpose("增加积分:券名称["+wxCoupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); - wxCreditHistoryService.saveOrUpdate(creditHistory,couponOrder.getTenantId()); - } catch (Exception e) { - logger.error("积分值:" + e.getMessage()); - } - } +// /** +// * 自主核销商品加成长值 积分 +// * @param couponOrder +// * @param wxCoupon +// */ +// private void doAfterVerify(WxCouponOrder couponOrder, WxCoupon wxCoupon,Long merchantId) { +// // 成长值 +// try { +// WxOrder order = wxOrderMapper.selectById(couponOrder.getOrderId(),couponOrder.getTenantId()); +// wxScoreRulesService.addScore2(couponOrder,EnumScoreType.CONSUMPTION, order, wxCoupon.getBusiness()); +// } catch (Exception e) { +// logger.error("成长值:" + e.getMessage()); +// } +// +// // 积分 +// try { +// //-------此处为【现金支付】记录增加积分操作------- +// WxCreditHistory creditHistory = new WxCreditHistory(); +// creditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); +// creditHistory.setOperatorId(couponOrder.getCUserId()); +// creditHistory.setCUserId(couponOrder.getCUserId()); +// creditHistory.setCreateDate(new Date()); +//// creditHistory.updateTenantInfo(couponOrder); +// creditHistory.setTenantId(couponOrder.getFinalTenantId()); +// creditHistory.setFinalTenantId(couponOrder.getFinalTenantId()); +// creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode()); +// creditHistory.setCouponId(wxCoupon.getId()); +// creditHistory.setBusinessId(wxCoupon.getBusiness()); +// creditHistory.setSpend(couponOrder.getCouponPrice()); +// //如果券与商户一对一 则直接将消费商户更新为此商户 若一对多 则消费商户显示多商户 +// creditHistory.setMerchantId(merchantId); +// creditHistory.setChangePurpose("增加积分:券名称["+wxCoupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); +// wxCreditHistoryService.saveOrUpdate(creditHistory,couponOrder.getTenantId()); +// } catch (Exception e) { +// logger.error("积分值:" + e.getMessage()); +// } +// } @Override - public void sendInsideCouponVerifyMsg(TenantEntity tenantEntity, Long couponOrderId, Long merchantId, Long bmerchantId) { - if(bmerchantId == null || bmerchantId.longValue() == 0l){ - bmerchantId = merchantId; + public void sendInsideCouponVerifyMsg(Long couponOrderId, TenantEntity couponOrderTenantEntity, Long merchantId, TenantEntity mallTenantEntity) { + if(merchantId == null){ + return; } FmInsideCouponVerifyMsg verifyMsg = new FmInsideCouponVerifyMsg(); verifyMsg.setMsgType(EnumMsgRecordType.INSIDE_COUPON_VERIFY.getCode()); - verifyMsg.updateTenantInfo(tenantEntity); + verifyMsg.updateTenantInfo(couponOrderTenantEntity); + verifyMsg.setMallTenantEntity(mallTenantEntity); verifyMsg.setCouponOrderId(couponOrderId); verifyMsg.setMerchantId(merchantId); - verifyMsg.setBmerchantId(bmerchantId); mqBaseProducer.sendMessage(verifyMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); } @Override - public void actionAfterVerify(WxCouponOrder couponOrder, WxMerchant merchant, WxMerchant bmerchant) { + public void actionAfterVerify(WxCouponOrder couponOrder, WxMerchant merchant) { try { boolean mulityShare = true; @@ -1611,14 +1756,14 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } // 核销分账 - shareAfterVerify(couponOrder, merchant.getId(),mulityShare); + shareAfterVerify(couponOrder, merchant,mulityShare); } catch (Exception e) { logger.error("核销记账失败"+e.getMessage(),e); } try { // 核销补贴 - subsidyAfterVerify(couponOrder, bmerchant.getId()); + subsidyAfterVerify(couponOrder, merchant); } catch (Exception e) { logger.error("核销记账失败"+e.getMessage(),e); } @@ -1632,40 +1777,51 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } // 核销发模板消息 try { - sendVerifyMsg(couponOrder, bmerchant, bSentCoupon); + sendVerifyMsg(couponOrder, merchant, bSentCoupon); } catch (Exception e) { logger.error("核销发送消息发生错误:" + e.getMessage(),e); } } + @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxMerchantSubsidy recordAfterVerified(WxCouponOrder couponOrder, Long merchantId) { - WxCoupon wxCoupon = wxCouponMapper.selectById(couponOrder.getCouponId(),couponOrder.getTenantId()); + public WxMerchantSubsidy recordAfterVerified(WxOrder order, WxMerchant wxMerchant) { WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); - merchantSubsidy.updateTenantInfo(couponOrder); - if (couponOrder.getCouponType().equals(EnumCouponType.COUPON_PRESS.getCode()) - && couponOrder.getCouponPrice().equals(wxCoupon.getSalePrice())) { - //砍价 - merchantSubsidy.setSource(EnumMerchantSubsidySource.PRESS.getCode()); - } else if (couponOrder.getCouponType().equals(EnumCouponType.COUPON_GROUP.getCode()) - && couponOrder.getCouponPrice().equals(wxCoupon.getSalePrice())) { - //拼团 - merchantSubsidy.setSource(EnumMerchantSubsidySource.GROUP.getCode()); - } else if(couponOrder.getCouponType().equals(EnumCouponType.COUPON_DISTRIBUTION.getCode())){ - //可配送商品 - merchantSubsidy.setSource(EnumMerchantSubsidySource.DISTRIBUTION_GOODS.getCode()); - } else if(couponOrder.getCouponType().equals(EnumCouponType.COUPON_GIFT.getCode())){ - //券礼包 - merchantSubsidy.setSource(EnumMerchantSubsidySource.GIFT_BAG.getCode()); - } else { - //券 - merchantSubsidy.setSource(EnumMerchantSubsidySource.COUPON.getCode()); + merchantSubsidy.updateTenantInfo(order); + merchantSubsidy.setOrderId(order.getId()); + if(EnumOrderType.COUPON.getCode().equals(order.getType())){ + merchantSubsidy.setOrderType(EnumOrderType.COUPON.getCode()); + + WxCouponOrder couponOrderQ = new WxCouponOrder(); + couponOrderQ.setOrderId(order.getId()); + couponOrderQ.updateTenantInfo(order); + WxCouponOrder couponOrder = wxCouponOrderMapper.selectOne(new QueryWrapper<>(couponOrderQ)); +// WxCoupon wxCoupon = wxCouponMapper.selectById(couponOrder.getCouponId(),order.getTenantId()); + merchantSubsidy.setCouponOrderId(couponOrder.getId()); + merchantSubsidy.setCouponType(couponOrder.getCouponType()); + + if(EnumCouponType.COUPON_PRESS.getCode().equals(couponOrder.getCouponType())){ + merchantSubsidy.setSource(EnumMerchantSubsidySource.PRESS.getCode()); + }else if(EnumCouponType.COUPON_GROUP.getCode().equals(couponOrder.getCouponType())){ + merchantSubsidy.setSource(EnumMerchantSubsidySource.GROUP.getCode()); + }else if(EnumCouponType.COUPON_DISTRIBUTION.getCode().equals(couponOrder.getCouponType())){ + merchantSubsidy.setSource(EnumMerchantSubsidySource.DISTRIBUTION_GOODS.getCode()); + }else if(EnumCouponType.COUPON_GIFT.getCode().equals(couponOrder.getCouponType())){ + merchantSubsidy.setSource(EnumMerchantSubsidySource.GIFT_BAG.getCode()); + }else{ + merchantSubsidy.setSource(EnumMerchantSubsidySource.COUPON.getCode()); + } + }else if(EnumOrderType.MICROPAY.getCode().equals(order.getType())){ + merchantSubsidy.setOrderType(EnumOrderType.MICROPAY.getCode()); + merchantSubsidy.setSource(EnumMerchantSubsidySource.CASHIER.getCode()); + merchantSubsidy.setCouponOrderId(0l); + merchantSubsidy.setCouponType(0); + }else { + //todo 只有券和收银台的记账 +// throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"记账数据异常"); + return null; } - merchantSubsidy.setOrderId(couponOrder.getOrderId()); - merchantSubsidy.setOrderType(EnumOrderType.COUPON.getCode()); - merchantSubsidy.setCouponOrderId(couponOrder.getId()); - merchantSubsidy.setCouponType(couponOrder.getCouponType()); - merchantSubsidy.setType(payServiceFactory.getPayShareAdapterService(couponOrder.getPayVendor(),couponOrder.getPayVersion()).getSubsidyType()); + merchantSubsidy.setType(payServiceFactory.getPayShareAdapterService(order.getPayVendor(),order.getPayVersion()).getSubsidyType()); List msList = wxMerchantSubsidyMapper.selectList(new QueryWrapper(merchantSubsidy)); if (msList.size() > 0) { @@ -1675,13 +1831,13 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { final IdWorker idWorker = IdWorker.get(); Date curDate = new Date(); merchantSubsidy.setId(idWorker.nextId()); - merchantSubsidy.setMerchantId(merchantId); - merchantSubsidy.setOrderPayment(couponOrder.getCouponPrice()); - merchantSubsidy.setReceiverPayment(couponOrder.getCouponPrice()); - merchantSubsidy.setRealPayment(couponOrder.getCouponPrice()); - merchantSubsidy.setSubsidy(couponOrder.getCouponPrice()); - merchantSubsidy.setRealSubsidy(couponOrder.getCouponPrice()); - merchantSubsidy.setType(payServiceFactory.getPayShareAdapterService(couponOrder.getPayVendor(),couponOrder.getPayVersion()).getSubsidyType()); + merchantSubsidy.setMerchantId(wxMerchant.getId()); + merchantSubsidy.setBTenantId(wxMerchant.getTenantId()); + merchantSubsidy.setOrderPayment(order.getPayment()); + merchantSubsidy.setReceiverPayment(order.getPayment()); + merchantSubsidy.setRealPayment(order.getPayment()); + merchantSubsidy.setSubsidy(order.getPayment()); + merchantSubsidy.setRealSubsidy(order.getPayment()); merchantSubsidy.setCreateDate(curDate); merchantSubsidy.setUpdateDate(curDate); merchantSubsidy.setStatus(EnumMerchantSubsidyStatus.NOT_SUBSIDY.getCode()); @@ -1689,14 +1845,14 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { //是否开通了商户提现,开通了商户提现往商户账户里面加金额 - cashOutService.addCashOut(merchantId, couponOrder.getCouponPrice()); + cashOutService.addCashOut(wxMerchant, order.getPayment()); return merchantSubsidy; } @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void shareAfterVerify(WxCouponOrder couponOrder, Long merchantId, boolean mulityShare) { + public void shareAfterVerify(WxCouponOrder couponOrder, WxMerchant wxMerchant, boolean mulityShare) { // 微信分账 try { @@ -1710,30 +1866,27 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { logger.error("券订单"+couponOrder.getId()+"未查询到支付订单."); throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"券订单"+couponOrder.getId()+"未查询到支付订单."); } - if(EnumPayShare.NO.getCode().equals(wxPayOrder.getShare())){ + WxOrder order = wxOrderService.getById(couponOrder.getOrderId(), wxPayOrder.getTenantId()); + if (null == order) { + logger.error("租户"+wxPayOrder.getTenantId()+"券订单"+couponOrder.getId()+"未查询到订单."); + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"租户"+wxPayOrder.getTenantId()+"券订单"+couponOrder.getId()+"未查询到订单."); + } + if(EnumPayMchType.TOTAL.getCode().equals(wxPayOrder.getMchType()) + && EnumPayShare.NO.getCode().equals(wxPayOrder.getShare())){ + //总分并且不分账 记账 try { // 订单购买时未分账 核销记账,并且往账户里面记帐 if (couponOrder.getCouponPrice() > 0) { - recordAfterVerified(couponOrder, merchantId); + recordAfterVerified(order, wxMerchant); } - Date time = DateUtils.stringToDate("2022-09-22 23:00:00", "yyyy-MM-dd HH:mm:ss"); - if(EnumPayWay.PAY_WAY_WECHAT.getCode().equals(wxPayOrder.getPayVendor()) - && wxPayOrder.getCreateTime().before(time)){ - return; - } } catch (Exception e) { logger.error("核销记账失败"+e.getMessage(),e); } } - WxOrder order = wxOrderService.getById(couponOrder.getOrderId(), wxPayOrder.getTenantId()); - if (null == order) { - logger.error("租户"+wxPayOrder.getTenantId()+"券订单"+couponOrder.getId()+"未查询到订单."); - throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"租户"+wxPayOrder.getTenantId()+"券订单"+couponOrder.getId()+"未查询到订单."); - } WxSharingOrderDto wxSharingOrderDto = new WxSharingOrderDto(); wxSharingOrderDto.setCUserId(wxPayOrder.getCUserId()); - wxSharingOrderDto.setMerchantId(merchantId); + wxSharingOrderDto.setMerchantId(wxMerchant.getId()); if (mulityShare) { wxSharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_MULTI.getCode()); }else { @@ -1746,7 +1899,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); wxSharingOrderDto.updateTenantInfo(wxPayOrder); wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId()); - wxProfitSharingOrderService.createSharingOrder(wxSharingOrderDto,wxPayOrder); + wxProfitSharingOrderService.createSharingOrder(wxMerchant,wxSharingOrderDto,wxPayOrder); } catch (Exception e) { logger.error("微信分账: " + e.getMessage()); } @@ -1756,7 +1909,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { // 补贴 @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void subsidyAfterVerify(WxCouponOrder couponOrder, Long merchantId) { + public void subsidyAfterVerify(WxCouponOrder couponOrder, WxMerchant merchant) { // 检查补贴是否入库 WxMerchantSubsidy subsidy = new WxMerchantSubsidy(); subsidy.setOrderId(couponOrder.getOrderId()); @@ -1772,18 +1925,18 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { WxCouponMerchant couponMerchantQ = new WxCouponMerchant(); couponMerchantQ.setProductId(couponOrder.getCouponId()); - couponMerchantQ.setMerchantId(merchantId); - couponMerchantQ.updateTenantInfo(couponOrder); + couponMerchantQ.setMerchantId(merchant.getId()); + couponMerchantQ.updateTenantInfo(merchant); WxCouponMerchant couponMerchant; try { couponMerchant = wxCouponMerchantMapper.selectOne(new QueryWrapper(couponMerchantQ)); } catch (Exception e) { - logger.error("查找所属卡券商户错误: " + "CouponId:" + couponMerchantQ.getProductId(), " merchantId:" + merchantId); + logger.error("查找所属卡券商户错误: " + "CouponId:" + couponMerchantQ.getProductId(), " merchantId:" + merchant.getId()); throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR); } if (couponMerchant == null) { - logger.error("未找到所属卡券商户: " + "CouponId:" + couponMerchantQ.getProductId(), " merchantId:" + merchantId); + logger.error("未找到所属卡券商户: " + "CouponId:" + couponMerchantQ.getProductId(), " merchantId:" + merchant.getId()); throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR); } @@ -1837,7 +1990,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { merchantSubsidy.updateTenantInfo(couponOrder); merchantSubsidy.setOrderId(couponOrder.getOrderId()); merchantSubsidy.setOrderType(EnumOrderType.COUPON.getCode()); - merchantSubsidy.setMerchantId(merchantId); + merchantSubsidy.setMerchantId(merchant.getId()); + merchantSubsidy.setBTenantId(merchant.getTenantId()); merchantSubsidy.setCouponOrderId(couponOrder.getId()); merchantSubsidy.setCouponType(couponOrder.getCouponType()); merchantSubsidy.setOrderPayment(coupon.getPrice()); @@ -2072,10 +2226,11 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { private void doVerifyAppUniformMsg(WxCouponOrder couponOrder, WxCoupon coupon, WxMerchant merchant, WxCUser user, SimpleDateFormat dateFormat, String gotopage) { WxAuthorizerInfo authQ = new WxAuthorizerInfo(); authQ.setAuthorizerAppid(user.getAppId()); - authQ.updateTenantInfo(merchant); + authQ.updateTenantInfo(couponOrder); WxAuthorizerInfo weappInfo = authorizerInfoMapper.findMp(authQ); if (weappInfo != null) { AppUniformMsg appUniformMsg = new AppUniformMsg(); + appUniformMsg.setTenantId(coupon.getTenantId()); appUniformMsg.setMsgType(EnumMsgRecordType.SMART_APP_UNIFORM.getCode()); appUniformMsg.setAppId(user.getAppId()); appUniformMsg.setTo(user.getOpenId()); @@ -2628,7 +2783,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { try { couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.POS_PRE_VERIFY.getCode()); //预核销 couponOrder.setBUserId(bUser.getId()); - couponOrder.setBMerchantId(bUser.getMerchantId());; + couponOrder.setBMerchantId(bUser.getMerchantId()); + couponOrder.setBTenantId(bUser.getTenantId()); couponOrder.setVerifyType(EnumCouponVerifyType.VERIFY_B.getCode()); couponOrder.setVerifyRemark(EnumCouponVerifyType.VERIFY_B_10.getMessage()); couponOrder.setUpdateDate(new Date()); @@ -2665,6 +2821,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.POS_PRE_VERIFY.getCode()); //预核销 couponOrder.setBUserId(bUser.getId()); couponOrder.setBMerchantId(bUser.getMerchantId()); + couponOrder.setBTenantId(bUser.getTenantId()); couponOrder.setVerifyType(EnumCouponVerifyType.VERIFY_B.getCode()); couponOrder.setVerifyRemark(EnumCouponVerifyType.VERIFY_B_10.getMessage()); couponOrder.setUpdateDate(new Date()); @@ -2746,6 +2903,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { updateCouponOrder.setId(couponOrderId); updateCouponOrder.setBUserId(bUser.getId()); updateCouponOrder.setBMerchantId(bUser.getMerchantId()); + updateCouponOrder.setBTenantId(bUser.getTenantId()); updateCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); updateCouponOrder.setUpdateDate(new Date()); updateCouponOrder.setPayVendor(payWay.getCode()); 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 1bd98f61c..d2e77d417 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -148,16 +148,20 @@ public class WxCouponServiceImpl implements WxCouponService { @Autowired PayServiceFactory payServiceFactory; + @Autowired + TtCouponChannelPoiMapper ttCouponChannelPoiMapper; + + @Autowired + WxCouponMallMapper wxCouponMallMapper; + + @Autowired + WxMallMapper wxMallMapper; + @Override public ResultData list(TenantEntity tenantEntity,WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { if (null == wxCoupon) wxCoupon = new WxCoupon(); wxCoupon.updateTenantInfo(tenantEntity); - if(StringUtils.isBlank(wxCoupon.getSortColumns())){ - wxCoupon.setSortColumns(BaseEntity.SortField.CCreateDate_DESC, BaseEntity.SortField.CId_DESC); - } - PageInfo page = null; - if (wxCoupon.getStatus() != null && wxCoupon.getStatus() == -1) - wxCoupon.setStatus(null); + handCouponList(wxCoupon); //除了a端列表 其他默认需要过滤 if(!EnumFilterPut.NO.equals(wxCoupon.getFilterCanPut())) { @@ -169,8 +173,8 @@ public class WxCouponServiceImpl implements WxCouponService { wxCoupon.setPressModelId(couponModel.getPressModelId()); } } - - page = listAsPage(wxCoupon, pageNum, pageSize); + + PageInfo page = listAsPage(wxCoupon, pageNum, pageSize); List wxCouponList = page.getList(); @@ -212,6 +216,81 @@ public class WxCouponServiceImpl implements WxCouponService { return new ResultData(page); } + + private void handCouponList(WxCoupon wxCoupon){ + //默认排序 + if(StringUtils.isBlank(wxCoupon.getSortColumns())){ + wxCoupon.setSortColumns(BaseEntity.SortField.CCreateDate_DESC, BaseEntity.SortField.CId_DESC); + } + if (wxCoupon.getStatus() != null && wxCoupon.getStatus() == -1){ + wxCoupon.setStatus(null); + } + //门店处理 + if(wxCoupon.getMerchantId() != null){ + List merchantIds = new ArrayList(); + merchantIds.add(wxCoupon.getMerchantId()); + List mcids = wxCouponMerchantMapper.findMerchantProductIds(wxCoupon.getTenantId(), merchantIds,0); + if(mcids == null || mcids.isEmpty()){ + wxCoupon.setId(-999L); + return; + }else{ + wxCoupon.setIds(mcids); + } + } + + //券类型处理 + if(wxCoupon.getType() != null){ + if(wxCoupon.getPlat() == null){ + wxCoupon.setPlat(EnumCouponType.getAppPlat(wxCoupon.getType()).getCode()); + } + }else{ + List types = new ArrayList<>(); + if(wxCoupon.getTypes() != null && !wxCoupon.getTypes().isEmpty()){ + types.addAll(wxCoupon.getTypes()); + } + if(wxCoupon.getTargetAd() != null){ + if(wxCoupon.getPlat() == null){ + wxCoupon.setPlat(EnumCouponChannelType.getAppPlat(wxCoupon.getTargetAd()).getCode()); + } + if(EnumAppPlat.TOUTIAO.getCode().equals(wxCoupon.getPlat())){ + //渠道查询时只查询审核通过的(上架的) + wxCoupon.setLastStatus(EnumSpuSyncStatus.sync_put_on.getCode()); + } + List couponTypes = EnumCouponChannelType.getCouponTypeBy(wxCoupon.getTargetAd()); + if(couponTypes.isEmpty()){ + wxCoupon.setId(-999L); + return; + }else{ + if(types == null || types.isEmpty()){ + types = couponTypes; + }else{ + types.retainAll(couponTypes); + if(types.isEmpty()){ + wxCoupon.setId(-999L); + return; + } + } + } + } + if(wxCoupon.getPlat() == null){ + //默认查微信平台 + wxCoupon.setPlat(EnumAppPlat.WX.getCode()); + } + List typeCode = EnumCouponType.getTypeCode(wxCoupon.getPlat()); + if(types == null || types.isEmpty()){ + types = typeCode; + }else{ + types.retainAll(typeCode); + if(types.isEmpty()){ + wxCoupon.setId(-999L); + return; + } + } + wxCoupon.setTypes(types); + } + + } + @Override public List list(WxCoupon wxCoupon){ @@ -280,22 +359,15 @@ public class WxCouponServiceImpl implements WxCouponService { } @Override - public WxCouponCVo getVoById(Long id,String tenantId) { - WxCouponCVo wxCouponCVo = wxCouponMapper.findVoDetail(id,tenantId); + public WxCouponCVo getVoById(Long id,String couponTenantId,TenantEntity mallTenantEntity) { + WxCouponCVo wxCouponCVo = wxCouponMapper.findVoDetail(id,couponTenantId); if(wxCouponCVo == null){ return null; } - List couponIdList = new ArrayList(); - couponIdList.add(wxCouponCVo.getId()); - Map> couponMerchantVoMap = wxMerchantService.findCouponMerchantVoList(couponIdList, wxCouponCVo,true); - List merchantList = couponMerchantVoMap.get(wxCouponCVo.getId()); - if (merchantList != null) { - merchantList = merchantList.stream().filter( - m->m.getMerchantStatus().equals(EnumMerchantStatus.VALID.getCode())) - .collect(toList()); - } + List merchantList = getMerchantVoList(wxCouponCVo, mallTenantEntity, wxCouponCVo.getId(), wxCouponCVo.getType()); + wxCouponCVo.setMerchantVoList(merchantList); if(EnumCouponType.COUPON_GIFT.getCode().equals(wxCouponCVo.getType())){ WxCoupon coupon = new WxCoupon(); @@ -310,6 +382,34 @@ public class WxCouponServiceImpl implements WxCouponService { return wxCouponCVo; } + private List getMerchantVoList(TenantEntity couponTenant,TenantEntity mallTenant,Long couponId,Integer couponType){ + if (EnumCouponType.isParentCoupon(couponType)){ + //集团查券 查询所有门店 + if(couponTenant.getTenantId().equals(mallTenant.getTenantId())){ + WxCouponMall couponMall = new WxCouponMall(); + couponMall.updateTenantInfo(couponTenant); + couponMall.setProductId(couponId); + List couponMallList = wxCouponMallMapper.findList(couponMall); + List merchantVoList = new ArrayList<>(); + if (null != couponMallList && couponMallList.size()> 0 ) { + for (WxCouponMall cm:couponMallList) { + WxMall mall = wxMallMapper.getByTenantId(cm.getMallTenantId()); + List couponMerchantList = getCouponMerchantList(couponId, mall); + if(couponMerchantList != null && couponMerchantList.size() > 0){ + merchantVoList.addAll(couponMerchantList); + } + } + } + return merchantVoList; + //子广场查券 只查询自己广场的门店 + }else{ + return getCouponMerchantList(couponId,mallTenant); + } + }else{ + return getCouponMerchantList(couponId,couponTenant); + } + } + @Override public WxCouponCVo getVoStatusById(Long id,String tenantId) { WxCouponCVo wxCouponCVo = wxCouponMapper.findVoStatusDetail(id,tenantId); @@ -323,15 +423,20 @@ public class WxCouponServiceImpl implements WxCouponService { private Long parseMerchantId(JSONObject merchantParam){ - return Long.valueOf(merchantParam.getString("id")); + if (!StringUtils.isBlank(merchantParam.getString("id"))){ + return Long.valueOf(merchantParam.getString("id")); + } + return null; } private String parseParameter(JSONObject merchantParam){ return merchantParam.getString("parameter"); } private Integer parseBusiness(JSONObject merchantParam){ String businessIdStr = merchantParam.getString("businessId"); - return Integer.valueOf(businessIdStr); - + if ( !StringUtils.isBlank(businessIdStr)) { + return Integer.valueOf(businessIdStr); + } + return null; } private Integer parseSubBusiness(JSONObject merchantParam){ String subBusinessIdStr = merchantParam.getString("subBusinessId"); @@ -441,38 +546,66 @@ public class WxCouponServiceImpl implements WxCouponService { return giftResult; } - ResultData receiverResult = checkCouponMerchantReceiver(record); - if(Result.SUCCESS != receiverResult.code){ - return receiverResult; - } - List merchantList = (List) receiverResult.data; - - if(merchantList.size() > 1){ - record.setBusiness(EnumBusiness.BUSINESS_ID6.getCode()); - }else{ - record.setBusiness(merchantList.get(0).getBusinessId()); - record.setSubBusiness(merchantList.get(0).getSubBusinessId()); + //判断直连检查收款帐号(必须),总分模式直接收款到小程序的收款帐号 + checkCouponMakeMerchant(record); + + //平台券先不设置商户 + Map tenantMerchantMap = null; + if (EnumCouponType.checkCreateWithMerchants(record.getType())) { + try { + tenantMerchantMap = checkCouponMerchantReceiver(record,true); + }catch(Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + } + if (EnumCouponType.checkCreateWithMalls(record.getType())) { + String[] mallTenantIds = record.getMallTenantIds(); + if (null == mallTenantIds || mallTenantIds.length <= 0 ) { + return new ResultData(Result.ERROR,"请选择商场"); + } } - List merchantParamList = JSONObject.parseArray(record.getMerchantParams(), JSONObject.class); - final IdWorker idWorker = IdWorker.get(); if (record.getId() == null) { record.setId(idWorker.nextId()); - - merchantParamList.forEach(merchantParam -> { - WxCouponMerchant cm = new WxCouponMerchant(); - WxCouponMerchantDto wxCouponMerchantDto = parseMerchantParam(merchantParam); - cm.setId(idWorker.nextId()); - cm.updateTenantInfo(record); - cm.setMerchantId(wxCouponMerchantDto.getMerchantId()); - cm.setParameter(wxCouponMerchantDto.getParameter()); - cm.setProductId(record.getId()); - cm.setCreateDate(new Date()); - cm.setUpdateDate(new Date()); - cm.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode()); - wxCouponMerchantMapper.insert(cm); - }); + if (EnumCouponType.checkCreateWithMerchants(record.getType())) { + for (Iterator it = tenantMerchantMap.keySet().iterator();it.hasNext();) { + TenantEntity mallTenant = it.next(); + String merchantParamListString = tenantMerchantMap.get(mallTenant); + List merchantParamList = JSONArray.parseArray(merchantParamListString, JSONObject.class); + merchantParamList.forEach(merchantParam -> { + WxCouponMerchant cm = new WxCouponMerchant(); + WxCouponMerchantDto wxCouponMerchantDto = parseMerchantParam(merchantParam); + cm.setId(idWorker.nextId()); + cm.updateTenantInfo(mallTenant); + cm.setMerchantId(wxCouponMerchantDto.getMerchantId()); + cm.setParameter(wxCouponMerchantDto.getParameter()); + cm.setProductId(record.getId()); + cm.setCreateDate(new Date()); + cm.setUpdateDate(new Date()); + cm.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode()); + wxCouponMerchantMapper.insert(cm); + }); + } + } + + if (EnumCouponType.checkCreateWithMalls(record.getType())) { + for (String mt : record.getMallTenantIds()) { + WxCouponMall mall = new WxCouponMall(); + mall.updateTenantInfo(record); + mall.setMallTenantId(mt); + mall.setProductId(record.getId()); + mall.setCreateDate(new Date()); + mall.setUpdateDate(new Date()); + //如果是直接设置到商户的,直接变为已完成 + if (EnumCouponType.checkCreateWithMerchants(record.getType())) { + mall.setStatus(EnumCouponMallStatus.FINISED.getCode()); + }else { + mall.setStatus(EnumCouponMallStatus.UNFINISED.getCode()); + } + wxCouponMallMapper.insert(mall); + } + } if (record.getPasswordSupport() != null && record.getPasswordSupport().equals(EnumCouponPasswordSupport.SUPPORTED.getCode())) { // todo 生成卡密无法修改, 调整 @@ -481,9 +614,21 @@ public class WxCouponServiceImpl implements WxCouponService { record.setCreateDate(new Date()); record.setUpdateDate(new Date()); + if (null == record.getBusiness()) { + record.setBusiness(EnumBusiness.BUSINESS_ID6.getCode()); + } wxCouponMapper.insert(record); } else { + if(EnumCouponType.getDouYinType().contains(record.getType())){ + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(record.getTenantId(),record.getId()); + if(ttCouponChannelPoi != null && + (EnumSpuSyncStatus.sync_auditing.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_put_on.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_disable.getCode().equals(ttCouponChannelPoi.getLastStatus()))){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该券状态不允许修改"); + } + } if(record.getInventory() != null && record.getRemainInventory() != null) { // 库存修改检查 @@ -500,15 +645,74 @@ public class WxCouponServiceImpl implements WxCouponService { record.setInventory(oldCoupon.getInventory() + record.getRemainInventory() - oldCoupon.getRemainInventory()); } } + if (EnumCouponType.checkCreateWithMerchants(record.getType())) { + try { + updateCouponMerchants(record,idWorker); + } catch (Exception e) { + logger.error("updateCouponMerchants error.",e); + return new ResultData(Result.ERROR,"更新商户出错。"+e.getMessage()); + } + } + + if (EnumCouponType.checkCreateWithMalls(record.getType())) { + WxCouponMall couponMall = new WxCouponMall(); + couponMall.updateTenantInfo(record); + couponMall.setProductId(record.getId()); + List couponMallList = wxCouponMallMapper.findList(couponMall); + Map alreadyMallTenant = new HashMap(); + if (null != couponMallList && couponMallList.size() > 0 ) { + for (int i = 0 ; i < couponMallList.size() ; i ++) { + WxCouponMall c = couponMallList.get(i); + alreadyMallTenant.put(c.getMallTenantId(),c.getStatus()); + } + } + wxCouponMallMapper.delteAllByProductId(couponMall); + for (String mt : record.getMallTenantIds()) { + WxCouponMall mall = new WxCouponMall(); + mall.updateTenantInfo(record); + mall.setMallTenantId(mt); + mall.setProductId(record.getId()); + mall.setCreateDate(new Date()); + mall.setUpdateDate(new Date()); + Integer status = alreadyMallTenant.get(mt); + if (null != status ) { + mall.setStatus(status); + }else { + if (EnumCouponType.checkCreateWithMerchants(record.getType())) { + mall.setStatus(EnumCouponMallStatus.FINISED.getCode()); + }else { + mall.setStatus(EnumCouponMallStatus.UNFINISED.getCode()); + } + } + wxCouponMallMapper.insert(mall); + } + } + + record.setUpdateDate(new Date()); + if (null == record.getBusiness()) { + record.setBusiness(EnumBusiness.BUSINESS_ID6.getCode()); + } + wxCouponMapper.updateById(record); + } - WxCouponMerchant cmParam = new WxCouponMerchant(); - cmParam.updateTenantInfo(record); + //清空缓存 + clearCache(record); + return new ResultData(record.getId()); + } + + private void updateCouponMerchants(WxCoupon record,final IdWorker idWorker) throws Exception { + Map tenantMerchantParmMap = checkCouponMerchantReceiver(record,false); + for (Iterator it = tenantMerchantParmMap.keySet().iterator();it.hasNext();) { + TenantEntity mallTenantEntity = it.next(); + WxCouponMerchant cmParam = new WxCouponMerchant(); + cmParam.updateTenantInfo(mallTenantEntity); cmParam.setProductId(record.getId()); List oldList = wxCouponMerchantMapper.findList(cmParam); + List merchantParamList = JSONArray.parseArray(tenantMerchantParmMap.get(mallTenantEntity),JSONObject.class); merchantParamList.stream().forEach(merchantParam -> { WxCouponMerchant cm = new WxCouponMerchant(); WxCouponMerchantDto wxCouponMerchantDto = parseMerchantParam(merchantParam); - cm.updateTenantInfo(record); + cm.updateTenantInfo(mallTenantEntity); cm.setMerchantId(wxCouponMerchantDto.getMerchantId()); cm.setProductId(record.getId()); WxCouponMerchant rcm = wxCouponMerchantMapper.selectOne(new QueryWrapper<>(cm)); @@ -535,49 +739,129 @@ public class WxCouponServiceImpl implements WxCouponService { old.setUpdateDate(new Date()); wxCouponMerchantMapper.updateById(old); }); - - record.setUpdateDate(new Date()); - wxCouponMapper.updateById(record); - } - - //清空缓存 - clearCache(record); - return new ResultData(record.getId()); + } + + } + + //返回商场商户,key:商场tenant value:merchantParams + private Map checkCouponMerchantReceiver(WxCoupon record,boolean check) throws Exception{ + /* + * 父券对应子商场商户 + */ + if (EnumCouponType.isParentCoupon(record.getType())) { + if(EnumCouponType.COUPON_DOUYIN_BRAND.getCode().equals(record.getType())){ + handCouponMerchantParams(record); + } + if (StringUtils.isBlank(record.getChildMerchantParams())){ + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"所属商户为空"); + } + List tenantMerchantParamList = JSONObject.parseArray(record.getChildMerchantParams(), JSONObject.class); + if(tenantMerchantParamList == null || tenantMerchantParamList.isEmpty()){ + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"所属商户为空"); + } + Map retMap = new HashMap(); + String[] mallTenantIds = new String[tenantMerchantParamList.size()]; + int i = 0; + for (JSONObject o:tenantMerchantParamList) { + String mallTenantId = o.getString("tenantId"); + mallTenantIds[i] = mallTenantId; + String mallParentTenantId = record.getTenantId(); + String mallMerchantParams = o.getString("mallMerchantParams"); + TenantEntity mallTenantEntity = new TenantEntity(); + mallTenantEntity.setTenantId(mallTenantId); + mallTenantEntity.setParentTenantId(mallParentTenantId); + if (check) { + List merchantList = checkCouponOneMallMerchantReceiver(mallTenantEntity,mallMerchantParams,record); + } + retMap.put(mallTenantEntity, mallMerchantParams); + i++; + } + record.setMallTenantIds(mallTenantIds); + record.setBusiness(EnumBusiness.BUSINESS_ID6.getCode()); + return retMap; + }else { + if (check) { + List merchantList = checkCouponOneMallMerchantReceiver(record,record.getMerchantParams(),record); + if(merchantList.size() > 1){ + record.setBusiness(EnumBusiness.BUSINESS_ID6.getCode()); + }else{ + record.setBusiness(merchantList.get(0).getBusinessId()); + record.setSubBusiness(merchantList.get(0).getSubBusinessId()); + } + } + Map retMap = new HashMap(); + TenantEntity tenantEntity = new TenantEntity(); + tenantEntity.updateTenantInfo(record); + retMap.put(tenantEntity, record.getMerchantParams()); + record.setMallTenantIds(new String[]{tenantEntity.getTenantId()}); + return retMap; + } } - private ResultData checkCouponMerchantReceiver(WxCoupon record){ + private void handCouponMerchantParams(WxCoupon record){ List merchantParamList = JSONObject.parseArray(record.getMerchantParams(), JSONObject.class); - if(merchantParamList == null || merchantParamList.isEmpty()){ - return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"所属商户为空"); + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"所属商户为空"); + } + + Map> map = new HashMap<>(); + for (JSONObject o:merchantParamList) { + String tenantId = o.getString("tenantId"); + if(StringUtils.isBlank(tenantId)){ + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"参数传递异常"); + } + List merchantParams = map.get(tenantId); + if(merchantParams == null){ + merchantParams = new ArrayList<>(); + } + merchantParams.add(o); + map.put(tenantId,merchantParams); } + + List childMerchantParams = new ArrayList<>(); + for (Iterator it = map.keySet().iterator();it.hasNext();) { + JSONObject object = new JSONObject(); + String tenantId = it.next(); + object.put("tenantId",tenantId); + object.put("mallMerchantParams",map.get(tenantId)); + childMerchantParams.add(object); + } + record.setChildMerchantParams(JSON.toJSONString(childMerchantParams)); + } + + private List checkCouponOneMallMerchantReceiver(TenantEntity mallTenantEntity,String merchantParams,WxCoupon record) throws Exception { + List merchantParamList = JSONObject.parseArray(merchantParams, JSONObject.class); + if(merchantParamList == null || merchantParamList.isEmpty()){ + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"所属商户为空"); + } + List merchantIds = new ArrayList<>(); for (JSONObject o:merchantParamList) { merchantIds.add(o.getLong("id")); } WxMerchant merchantQ = new WxMerchant(); - merchantQ.updateTenantInfo(record); + merchantQ.updateTenantInfo(mallTenantEntity); merchantQ.setIds(merchantIds); List merchantList = wxMerchantService.findList(merchantQ); if(merchantList.size() != merchantParamList.size()){ - return new ResultData(ErrorCode.MERCHANT_INFO_NOT_EQUAL.getCode(),"所属商户信息异常"); + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_EQUAL.getCode(),"所属商户信息异常"); } List badMerchant = merchantList.stream().filter(m -> !EnumMerchantStatus.VALID.getCode().equals(m.getStatus())).collect(toList()); if(badMerchant != null && !badMerchant.isEmpty()){ List badNames = badMerchant.stream().map(WxMerchant::getName).collect(toList()); - return new ResultData(ErrorCode.MERCHANT_INFO_NOT_VALID.getCode(),JSONArray.toJSONString(badNames)+"被停用"); + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_VALID.getCode(),JSONArray.toJSONString(badNames)+"被停用"); } if(record.getSalePrice() != null && record.getSalePrice() > 0) { EnumAppPlat plat = EnumCouponType.getAppPlat(record.getType()); EnumPayWay payWay = EnumAppPlat.getPayWay(plat); - WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(record,plat); + WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(mallTenantEntity,plat); if (cAppInfo == null) { - return new ResultData(ErrorCode.APP_ID_NOT_FOUND); + throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); } WxPayAccount payAccount = payAccountMapper.selectById(cAppInfo.getPayId()); if (payAccount == null) { - return new ResultData(ErrorCode.APP_ID_NOT_FOUND); + throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); } //判断商户是否匹配poi @@ -590,7 +874,7 @@ public class WxCouponServiceImpl implements WxCouponService { } } if(!badPoiNames.isEmpty()){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), JSONArray.toJSONString(badPoiNames)+"未匹配poi"); + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), JSONArray.toJSONString(badPoiNames)+"未匹配poi"); } } @@ -599,79 +883,144 @@ public class WxCouponServiceImpl implements WxCouponService { PayShareAdapterService payShareServie = payServiceFactory.getPayShareAdapterService(payWay.getCode(),payAccount.getPayVersion()); + List badNames = new ArrayList(); if (EnumPayMchType.DIRECT.equals(payMchType)) { - WxMerchant makeMerchant = null; - if(merchantList.size() == 1){ - record.setMerchantType(EnumCouponMerchantType.ONE_MERCHANT.getCode()); - makeMerchant = merchantList.get(0); - }else{ - List adminMerchant = merchantList.stream().filter(m -> EnumMerchantAdmin.PUBLIC_ADMIN.getCode().equals(m.getIsAdmin())).collect(toList()); - if(adminMerchant == null || adminMerchant.isEmpty()){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "多门店券需包含一个商管商户"); - }else if(adminMerchant.size() > 1){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "多门店券只能包含一个商管商户"); - } - record.setMerchantType(EnumCouponMerchantType.MULTIPLE_MERCHANT.getCode()); - makeMerchant = adminMerchant.get(0); - } - - record.setMakeMerchantId(makeMerchant.getId()); - WxProfitSharingReceiver receiver = payShareServie.getReceiver(payAccount, makeMerchant.getId(), null, payMchType.getCode()); - - if (receiver == null) { - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "[\""+makeMerchant.getName()+"\"]未配置收款账户"); - } - if (EnumAppPlat.TOUTIAO.equals(plat)) { - if (!MerchantImportStatus.improt_success.getCode().equals(receiver.getWxImportStatus()) - && !MerchantImportStatus.improt_success.getCode().equals(receiver.getAlipayImportStatus()) - && !MerchantImportStatus.improt_success.getCode().equals(receiver.getHzImportStatus())) { - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "[\""+makeMerchant.getName()+"\"]未配置收款账户"); - } - } - } else if (EnumPayShare.YES.equals(isShare)) { - List badNames = new ArrayList(); - for (WxMerchant merchant:merchantList) { - WxProfitSharingReceiver receiver = payShareServie.getReceiver(payAccount, merchant.getId(), null, payMchType.getCode()); - - if (receiver == null) { - badNames.add(merchant.getName()); - continue; - } - if (EnumAppPlat.TOUTIAO.equals(plat)) { - QueryMerchantResult openPayResult = payAccount.getOpenPayResult(); - - if(!EnumYesOrNo.YES.getCode().equals(openPayResult.getAlipay()) - && !EnumYesOrNo.YES.getCode().equals(openPayResult.getWx()) - && !EnumYesOrNo.YES.getCode().equals(openPayResult.getHz())){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "分账模式未设置开通支付渠道"); - } - if(EnumYesOrNo.YES.getCode().equals(openPayResult.getAlipay()) - && !MerchantImportStatus.improt_success.getCode().equals(receiver.getAlipayImportStatus())){ - badNames.add(merchant.getName()); - continue; - } - if(EnumYesOrNo.YES.getCode().equals(openPayResult.getWx()) - && !MerchantImportStatus.improt_success.getCode().equals(receiver.getWxImportStatus())){ + //多商户券,抖音 直连 门店只有进件支付宝才能参加活动 todo + if(EnumCouponMerchantType.MULTIPLE_MERCHANT.getCode().equals(record.getMerchantType())){ + for (WxMerchant merchant:merchantList) { + WxProfitSharingReceiver receiver = payShareServie.getReceiver(mallTenantEntity, merchant.getId(), null, payMchType.getCode()); + if (receiver == null) { badNames.add(merchant.getName()); - continue; } - if(EnumYesOrNo.YES.getCode().equals(openPayResult.getHz()) - && !MerchantImportStatus.improt_success.getCode().equals(receiver.getHzImportStatus())){ + if(!MerchantImportStatus.improt_success.getCode().equals(receiver.getAlipayImportStatus())){ badNames.add(merchant.getName()); - continue; } } } - if(!badNames.isEmpty()){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), JSONArray.toJSONString(badNames)+"未配置分账账户"); + +// WxMerchant makeMerchant = getDirectPayAccountMerchant(merchantList,record); +// if (null == makeMerchant) { +// throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "没有收款商户"); +// } +// record.setMakeMerchantId(makeMerchant.getId()); +// WxProfitSharingReceiver receiver = payShareServie.getReceiver(makeMerchant, makeMerchant.getId(), null, payMchType.getCode()); +// +// if (receiver == null) { +// throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "[\""+makeMerchant.getName()+"\"]未配置收款账户"); +// } + //如果是直连,抖音,多商户券必须只配置支付宝 +// if (EnumAppPlat.TOUTIAO.equals(plat)) { +// if (merchantList.size() > 1 ) { +// if (MerchantImportStatus.improt_success.getCode().equals(receiver.getAlipayImportStatus()) && +// !MerchantImportStatus.improt_success.getCode().equals(receiver.getWxImportStatus()) ) { +// }else { +// throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "[\""+makeMerchant.getName()+"\"]配置收款账户错误,多商户券主收款账户不能配置微信."); +// } +// }else { +// if (!MerchantImportStatus.improt_success.getCode().equals(receiver.getWxImportStatus()) +// && !MerchantImportStatus.improt_success.getCode().equals(receiver.getAlipayImportStatus()) +// && !MerchantImportStatus.improt_success.getCode().equals(receiver.getHzImportStatus())) { +// throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "[\""+makeMerchant.getName()+"\"]未配置收款账户"); +// } +// } +// } + } else if (EnumPayShare.YES.equals(isShare)) { + for (WxMerchant merchant:merchantList) { + boolean isBad = toTalPayMchTypeMerchantIsBad(payShareServie,payAccount,merchant.getName(),merchant.getId(),payMchType,plat); + if (isBad) { + badNames.add(merchant.getName()); + } + } + } + if(!badNames.isEmpty()){ + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), JSONArray.toJSONString(badNames)+"未配置分账账户"); + } + } + return merchantList; + } + + //直联模式收款商户 + private WxMerchant getDirectPayAccountMerchant(List merchantList,WxCoupon coupon) throws Exception{ + WxMerchant makeMerchant = null; + //平台券,集团商管商户 + if (EnumCouponType.COUPON_DOUYIN_PLAT.getCode() == coupon.getType()) { + //查询集团商管商户 + makeMerchant = wxMerchantService.findAdmin(coupon); + //品牌券,查询集团品牌商户 + }else if (EnumCouponType.COUPON_DOUYIN_BRAND.getCode() == coupon.getType()) { + makeMerchant = wxMerchantService.findBrandAdmin(coupon,coupon.getBrand()); + //商场券 + }else { + if(coupon.getMerchantType() == EnumCouponMerchantType.ONE_MERCHANT.getCode()){ + if (merchantList.size() == 1) { + makeMerchant = merchantList.get(0); + }else { + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "单商户券只能有一个商户"); + } + }else { + List adminMerchant = merchantList.stream().filter(m -> EnumMerchantAdmin.PUBLIC_ADMIN.getCode().equals(m.getIsAdmin())).collect(toList()); + if(adminMerchant == null || adminMerchant.isEmpty()){ + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "多门店券需包含一个商管商户"); + }else if(adminMerchant.size() > 1){ + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "多门店券只能包含一个商管商户"); } + makeMerchant = adminMerchant.get(0); + } + } + return makeMerchant; + } + + //总分模式下不能分账的商户 + private boolean toTalPayMchTypeMerchantIsBad(PayShareAdapterService payShareServie,WxPayAccount payAccount, + String merchantName,Long merchantId,EnumPayMchType payMchType,EnumAppPlat plat) throws Exception { + WxProfitSharingReceiver receiver = payShareServie.getReceiver(payAccount, merchantId, null, payMchType.getCode()); + if (receiver == null) { + return true; + } + if (EnumAppPlat.TOUTIAO.equals(plat)) {//抖音只能开通支付宝 + QueryMerchantResult openPayResult = payAccount.getOpenPayResult(); + if(!EnumYesOrNo.YES.getCode().equals(openPayResult.getAlipay()) + || EnumYesOrNo.YES.getCode().equals(openPayResult.getWx()) + || EnumYesOrNo.YES.getCode().equals(openPayResult.getHz())){ + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "分账模式设置错误"); } + if(!MerchantImportStatus.improt_success.getCode().equals(receiver.getAlipayImportStatus())){ + return true; + } + +// if(!EnumYesOrNo.YES.getCode().equals(openPayResult.getAlipay()) +// && !EnumYesOrNo.YES.getCode().equals(openPayResult.getWx()) +// && !EnumYesOrNo.YES.getCode().equals(openPayResult.getHz())){ +// throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "分账模式未设置开通支付渠道"); +// } +// if(EnumYesOrNo.YES.getCode().equals(openPayResult.getAlipay()) +// && !MerchantImportStatus.improt_success.getCode().equals(receiver.getAlipayImportStatus())){ +// return true; +// } +// if(EnumYesOrNo.YES.getCode().equals(openPayResult.getWx()) +// && !MerchantImportStatus.improt_success.getCode().equals(receiver.getWxImportStatus())){ +// return true; +// } +// if(EnumYesOrNo.YES.getCode().equals(openPayResult.getHz()) +// && !MerchantImportStatus.improt_success.getCode().equals(receiver.getHzImportStatus())){ +// return true; +// } } - return new ResultData(merchantList); + return false; } @Override public ResultData updateTtProduct(WxCoupon record) { + if(EnumCouponType.getDouYinType().contains(record.getType())){ + TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectById(record.getTenantId(),record.getId()); + if(ttCouponChannelPoi != null && + (EnumSpuSyncStatus.sync_auditing.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_put_on.getCode().equals(ttCouponChannelPoi.getLastStatus()) + || EnumSpuSyncStatus.sync_audit_disable.getCode().equals(ttCouponChannelPoi.getLastStatus()))){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该券状态不允许修改"); + } + } + if(StringUtils.isBlank(record.getProductAttrs()) || StringUtils.isBlank(record.getSkuAttrs())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); } @@ -1024,7 +1373,9 @@ public class WxCouponServiceImpl implements WxCouponService { public WxCoupon findById(WxCoupon wxCoupon) { WxCoupon query = new WxCoupon(); query.setId(wxCoupon.getId()); - query.setType(wxCoupon.getType()); + if (null != wxCoupon.getType()) { + query.setType(wxCoupon.getType()); + } query.setTenantId(wxCoupon.getTenantId()); List list = wxCouponMapper.findCouponList(query); if(CollectionUtils.isNotEmpty(list)){ @@ -1209,6 +1560,89 @@ public class WxCouponServiceImpl implements WxCouponService { } + /** + * 直连判断收款商户 + * @param wxCoupon + * @return + */ + private ResultData checkCouponMakeMerchant(WxCoupon wxCoupon){ + EnumAppPlat plat = EnumCouponType.getAppPlat(wxCoupon.getType()); + EnumPayWay payWay = EnumAppPlat.getPayWay(plat); + WxAppinfo cAppInfo = wxAppinfoService.getCAppInfoFromRedis(wxCoupon.getTenantId(),plat); + if (cAppInfo == null) { + throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); + } + WxPayAccount payAccount = payAccountService.getByIdFromRedis(cAppInfo.getPayId()); + if (payAccount == null) { + throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); + } + EnumPayMchType payMchType = EnumPayMchType.getEnum(payAccount.getMchType()); + if(EnumPayMchType.DIRECT.equals(payMchType)){ + WxMerchant makeMerchant = null; + //平台券,查询集团商管商户 + if (EnumCouponType.COUPON_DOUYIN_PLAT.getCode().equals(wxCoupon.getType())) { + wxCoupon.setMerchantType(EnumCouponMerchantType.MULTIPLE_MERCHANT.getCode()); + makeMerchant = wxMerchantService.findAdmin(wxCoupon); + //品牌券,查询集团品牌商户 + }else if (EnumCouponType.COUPON_DOUYIN_BRAND.getCode().equals(wxCoupon.getType())) { + if(wxCoupon.getBrand() == null){ + throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未选择品牌"); + } + wxCoupon.setMerchantType(EnumCouponMerchantType.MULTIPLE_MERCHANT.getCode()); + makeMerchant = wxMerchantService.findBrandAdmin(wxCoupon,wxCoupon.getBrand()); + //其他商场券 + }else { + List merchantParamList = JSONObject.parseArray(wxCoupon.getMerchantParams(), JSONObject.class); + if(merchantParamList == null || merchantParamList.isEmpty()){ + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),"所属商户为空"); + } + //多门店券 + if(merchantParamList.size() > 1 || EnumCouponMerchantType.MULTIPLE_MERCHANT.getCode().equals(wxCoupon.getMerchantType())){ + wxCoupon.setMerchantType(EnumCouponMerchantType.MULTIPLE_MERCHANT.getCode()); + makeMerchant = wxMerchantService.findAdmin(wxCoupon); + }else{ + wxCoupon.setMerchantType(EnumCouponMerchantType.ONE_MERCHANT.getCode()); + Long merchantId = merchantParamList.get(0).getLong("id"); + makeMerchant = wxMerchantService.selectById(merchantId); + } + } + if (makeMerchant == null) { + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "未找到所属商户"); + } + wxCoupon.setMakeMerchantId(makeMerchant.getId()); + + if(wxCoupon.getSalePrice() != null && wxCoupon.getSalePrice() > 0) { + PayShareAdapterService payShareServie = payServiceFactory.getPayShareAdapterService(payWay.getCode(),payAccount.getPayVersion()); + WxProfitSharingReceiver receiver = payShareServie.getReceiver(makeMerchant, makeMerchant.getId(), null, payMchType.getCode()); + if (receiver == null) { + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "所属商户[\""+makeMerchant.getName()+"\"]未配置收款账户"); + } + + //如果是直连,抖音,多商户券必须只配置支付宝 + if (EnumAppPlat.TOUTIAO.equals(plat)) { + if (!MerchantImportStatus.improt_success.getCode().equals(receiver.getWxImportStatus()) + && !MerchantImportStatus.improt_success.getCode().equals(receiver.getAlipayImportStatus()) + && !MerchantImportStatus.improt_success.getCode().equals(receiver.getHzImportStatus())) { + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "所属商户[\""+makeMerchant.getName()+"\"]未配置收款账户"); + } + if(EnumCouponMerchantType.MULTIPLE_MERCHANT.getCode().equals(wxCoupon.getMerchantType())){ + if (MerchantImportStatus.improt_success.getCode().equals(receiver.getAlipayImportStatus()) + && !MerchantImportStatus.improt_success.getCode().equals(receiver.getWxImportStatus()) + && !MerchantImportStatus.improt_success.getCode().equals(receiver.getHzImportStatus())) { + }else { + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "所属商户[\""+makeMerchant.getName()+"\"]配置收款账户错误,只能配置支付宝."); + } + } + } + } + + }else{ + wxCoupon.setMakeMerchantId(0l); + } + + return new ResultData(); + } + @Override public Map getCouponMerchantMap(List couponIds, TenantEntity tenantEntity,boolean onlyOneMerchantCoupons) { Map couponMerchantMap = new HashMap(); @@ -1272,10 +1706,36 @@ public class WxCouponServiceImpl implements WxCouponService { } @Override - public List getCouponMerchantList(TenantEntity tenantInfo, Long couponId) { - List couponIdList = new ArrayList(); + public Map> getCouponMerchantList(TenantEntity tenantInfo, Long couponId) { + WxCoupon wxCoupon = wxCouponMapper.selectById(couponId,tenantInfo.getTenantId()); + if (EnumCouponType.isParentCoupon(wxCoupon.getType())){ + WxCouponMall couponMall = new WxCouponMall(); + couponMall.updateTenantInfo(tenantInfo); + couponMall.setProductId(couponId); + couponMall.setStatus(EnumCouponMallStatus.FINISED.getCode()); + List couponMallList = wxCouponMallMapper.findList(couponMall); + if (null != couponMallList && couponMallList.size()> 0 ) { + Map> mallMerchantMap = new HashMap>(); + for (int i = 0 ; i < couponMallList.size();i++) { + WxCouponMall cm = couponMallList.get(i); + WxMall mall = wxMallMapper.getByTenantId(cm.getMallTenantId()); + mallMerchantMap.put(mall.getTenantId()+"|"+mall.getName(), getCouponMerchantList(couponId,mall)); + } + return mallMerchantMap; + } + return null; + }else { + Map> mallMerchantMap = new HashMap>(); + WxMall mall = wxMallMapper.getByTenantId(tenantInfo.getTenantId()); + mallMerchantMap.put(mall.getTenantId()+"|"+mall.getName(), getCouponMerchantList(couponId,mall)); + return mallMerchantMap; + } + } + + private List getCouponMerchantList(Long couponId,TenantEntity mallTenantEntity) { + List couponIdList = new ArrayList(); couponIdList.add(couponId); - Map> couponMerchantVoMap = wxMerchantService.findCouponMerchantVoList(couponIdList, tenantInfo,true); + Map> couponMerchantVoMap = wxMerchantService.findCouponMerchantVoList(couponIdList, mallTenantEntity,true); List merchantList = couponMerchantVoMap.get(couponId); if (merchantList != null) { @@ -1320,4 +1780,176 @@ public class WxCouponServiceImpl implements WxCouponService { return new ResultData(); } + @Override + public void setParentCouponMallMerchants(TenantEntity mallTenantEntity,WxCoupon wxCoupon) throws Exception { + try { + WxCoupon coupon = wxCouponMapper.selectById(wxCoupon.getId(), mallTenantEntity.getParentTenantId()); + if (null == coupon) { + throw new MallinkException(Result.ERROR,"券未查询到"); + } + if (null == wxCoupon.getMerchantIds()) { + throw new MallinkException(Result.ERROR,"请选择商户"); + } +// Long makeMerchantId = coupon.getMakeMerchantId(); + // + StringBuffer merchantParams = new StringBuffer("[{\"tenantId\":").append(mallTenantEntity.getTenantId()).append(",\"mallMerchantParams\":").append("["); + Long[] mids = wxCoupon.getMerchantIds(); + for (int i = 0 ;i < mids.length; i++ ){ + merchantParams.append("{\"id\":").append(mids[i]).append(",\"businessId\":").append(EnumBusiness.BUSINESS_ID6.getCode()).append("}"); + if (i < mids.length-1 ) { + merchantParams.append(","); + } + } + merchantParams.append("]}]"); + coupon.setChildMerchantParams(merchantParams.toString()); + checkCouponMerchantReceiver(coupon,true); + final IdWorker idWorker = IdWorker.get(); + updateCouponMerchants(coupon,idWorker); + //平台券设置商管商户 +// if (null != coupon.getMakeMerchantId()) { +// wxCouponMapper.setMakeMerchantId(coupon); +// } + }catch(Exception e) { + throw e; + } + } + + private Map generateMerchantAutoShareAll(Long[] merchantIds,boolean auto) { + Map merchantAutoShareMap = new HashMap(); + for (Long mid:merchantIds) { + merchantAutoShareMap.put(mid, auto); + } + return merchantAutoShareMap; + } + + @Override + public Map couponMerchantAutoShare(TenantEntity tenantEntity,WxCoupon wxCoupon) throws Exception { + if (null == wxCoupon.getMerchantIds()) { + throw new MallinkException(Result.ERROR,"缺少参数"); + } + + Integer couponType = wxCoupon.getType(); + Integer couponMerchantType = wxCoupon.getMerchantType(); + //新增 + if (null == wxCoupon.getId()) { + if (null == wxCoupon.getType() || null == wxCoupon.getMerchantType()) { + throw new MallinkException(Result.ERROR,"缺少参数"); + } + //更新 + }else { + WxCoupon coupon = wxCouponMapper.selectById(wxCoupon.getId(), wxCoupon.getTenantId()); + if (null == coupon) { + throw new MallinkException(Result.ERROR,"未查询到券"); + } + couponType = coupon.getType(); + couponMerchantType = coupon.getMerchantType(); + } + EnumAppPlat plat = EnumCouponType.getAppPlat(couponType); + EnumPayWay payWay = EnumAppPlat.getPayWay(plat); + WxAppinfo cAppInfo = null; + if (EnumCouponType.isParentCoupon(couponType)) { + cAppInfo = wxAppinfoService.getCAppInfo(wxCoupon,plat); + }else { + cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity,plat); + } + if (cAppInfo == null) { + throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); + } + WxPayAccount payAccount = payAccountMapper.selectById(cAppInfo.getPayId()); + if (payAccount == null) { + throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); + } + EnumPayMchType payMchType = EnumPayMchType.getEnum(payAccount.getMchType()); + EnumPayShare isShare = EnumPayShare.getEnum(payAccount.getShare()); + PayShareAdapterService payShareServie = payServiceFactory.getPayShareAdapterService(payWay.getCode(),payAccount.getPayVersion()); + //直连模式,如果是单商户券,则都可以;如果是多商户券,抖音则只要开通了支付宝就可以,微信则不行。 + if (payMchType == EnumPayMchType.DIRECT) { + if (EnumCouponMerchantType.ONE_MERCHANT.getCode() == couponMerchantType) { + return generateMerchantAutoShareAll(wxCoupon.getMerchantIds(),true); + }else { + if (plat == EnumAppPlat.TOUTIAO) { + Map merchantAutoShareMap = new HashMap(); + for (Long mid:wxCoupon.getMerchantIds()) { + //开通了支付宝就可以 + WxProfitSharingReceiver receiver = payShareServie.getReceiver(payAccount, mid, null, payMchType.getCode()); + if (null == receiver) { + merchantAutoShareMap.put(mid, false); + }else { + if (MerchantImportStatus.improt_success.getCode().equals(receiver.getAlipayImportStatus())) { + merchantAutoShareMap.put(mid, true); + }else { + merchantAutoShareMap.put(mid, false); + } + } + } + return merchantAutoShareMap; + }else if (plat == EnumAppPlat.WX){ + return generateMerchantAutoShareAll(wxCoupon.getMerchantIds(),false); + }else { + return generateMerchantAutoShareAll(wxCoupon.getMerchantIds(),false); + } + } + }else { + //总分模式,分账开启,微信平台则认为是100%分账,抖音则只要开通了支付宝就可以。 + if (isShare == EnumPayShare.YES) { + if (plat == EnumAppPlat.WX) { + return generateMerchantAutoShareAll(wxCoupon.getMerchantIds(),true); + }else if (plat == EnumAppPlat.TOUTIAO) { + Map merchantAutoShareMap = new HashMap(); + for (Long mid:wxCoupon.getMerchantIds()) { + boolean isBad = toTalPayMchTypeMerchantIsBad(payShareServie,payAccount,String.valueOf(mid),mid,payMchType,plat); + if (isBad) { + merchantAutoShareMap.put(mid, false); + }else { + merchantAutoShareMap.put(mid, true); + } + } + return merchantAutoShareMap; + }else { + return generateMerchantAutoShareAll(wxCoupon.getMerchantIds(),true); + } + }else { + return generateMerchantAutoShareAll(wxCoupon.getMerchantIds(),false); + } + } + } + + @Override + public boolean isCouponMerchantValid(Long couponId, Integer couponType, TenantEntity couponTenantEntity) { + if (EnumCouponType.isParentCoupon(couponType)) { + WxCouponMall couponMall = new WxCouponMall(); + couponMall.updateTenantInfo(couponTenantEntity); + couponMall.setProductId(couponId); + couponMall.setStatus(EnumCouponMallStatus.FINISED.getCode()) ; + List couponMallList = wxCouponMallMapper.findList(couponMall); + if (null == couponMallList ) { + return false; + } + for (int i = 0 ; i < couponMallList.size(); i++) { + WxCouponMall wcm = couponMallList.get(i); + TenantEntity mallTenantEntity = new TenantEntity(); + mallTenantEntity.setTenantId(wcm.getMallTenantId()); + mallTenantEntity.setParentTenantId(couponTenantEntity.getTenantId()); + List merchantVoList = wxMerchantService.findMerchantListByProduct(mallTenantEntity,couponId,false); + if (null != merchantVoList && merchantVoList.size() > 0 ) { + if (merchantVoList.stream().anyMatch((cm->cm.getMerchantStatus().equals(EnumMerchantStatus.VALID.getCode())))){ + return true; + } + } + } + return false; + + }else { + List merchantVoList = wxMerchantService.findMerchantListByProduct(couponTenantEntity,couponId,false); + if (null == merchantVoList || merchantVoList.size() <=0 ) { + return false; + } + if (merchantVoList.stream().anyMatch((cm->cm.getMerchantStatus().equals(EnumMerchantStatus.VALID.getCode())))){ + return true; + } + } + return false; + } + + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCuserFloatingLayerServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCuserFloatingLayerServiceImpl.java index 7fb655ae8..9120097a2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCuserFloatingLayerServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCuserFloatingLayerServiceImpl.java @@ -43,19 +43,14 @@ public class WxCuserFloatingLayerServiceImpl implements WxCuserFloatingLayerServ @Override - public WxFloatingLayer getFloatingLayer(String openId, String appId) { - WxAppinfo appinfo = appinfoMapper.findByAppId(appId); - if (StringUtils.isBlank(openId)) { - return getWxFloatingLayer(appinfo.getTenantId()); - } + public WxFloatingLayer getFloatingLayer(TenantEntity tenantEntity,String openId) { //1 查看是否存在用户,用户不存在 直接返回浮层信息 WxCUser user = new WxCUser(); user.setOpenId(openId); - user.setAppId(appId); - user.setTenantId(appinfo.getTenantId()); + user.setTenantId(tenantEntity.getTenantId()); WxCUser byOpenId = wxCUserMapper.findByOpenId(user); if (byOpenId == null) { - return getWxFloatingLayer(appinfo.getTenantId()); + return getWxFloatingLayer(tenantEntity.getTenantId()); } //2 用户存在 查看是否已有弹出记录 没有 保存记录后返回浮层信息 WxCuserFloatingLayer wxCuserFloatingLayerQuery = new WxCuserFloatingLayer(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMallServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMallServiceImpl.java index 12b00b4c5..f9500b135 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMallServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMallServiceImpl.java @@ -34,6 +34,7 @@ import org.springframework.util.Assert; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.stream.Collectors; @Service @@ -397,4 +398,14 @@ public class WxMallServiceImpl implements WxMallService { return false; } + @Override + public Map getMallMap(WxMall mallQ) { + Map mallMap = new HashMap<>(); + List list = this.findList(mallQ); + if(!list.isEmpty()){ + mallMap = list.stream().collect(Collectors.toMap(WxMall::getTenantId, Function.identity())); + } + return mallMap; + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java index 53b884613..2f4358ff7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java @@ -6,10 +6,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; -import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxMerchant; -import com.iformall.domain.po.WxMerchantBUser; -import com.iformall.domain.po.WxMsgValidationcode; +import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxMerchantBuInfoVo; import com.iformall.enums.EnumMerchantBUserStatus; @@ -19,10 +16,13 @@ import com.iformall.mapper.WxAppinfoMapper; import com.iformall.mapper.WxMerchantBUserMapper; import com.iformall.mapper.WxMerchantMapper; import com.iformall.mapper.WxMsgValidationcodeMapper; +import com.iformall.service.WxMallService; import com.iformall.service.WxMerchantBUserService; +import com.iformall.service.WxMerchantService; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -36,9 +36,15 @@ import java.util.stream.Collectors; public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Autowired + WxMallService wxMallService; + @Autowired WxAppinfoMapper wxAppinfoMapper; + @Autowired + WxMerchantService wxMerchantService; + @Autowired WxMerchantMapper wxMerchantMapper; @@ -95,7 +101,7 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { } @Override - public List getBUserByAppId(WxMerchantBUser record) { + public List findList(WxMerchantBUser record) { return wxMerchantBUserMapper.findList(record); } @@ -144,10 +150,10 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { } @Override - public ResultData updatePwd(String appId, String phone, String code, String pwd) { - WxAppinfo appinfo = wxAppinfoMapper.findByAppId(appId); + public ResultData updatePwd(String tenantId, String phone, String code, String pwd) { + WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); - wxMsgValidationcode.setTenantId(appinfo.getTenantId()); + wxMsgValidationcode.setTenantId(tenantId); wxMsgValidationcode.setPhone(phone); wxMsgValidationcode.setCode(code); List msgValidationCodeList = wxMsgValidationcodeMapper.findList(wxMsgValidationcode); @@ -157,27 +163,73 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { if (msgValidationCodeList.size() > 0) { //更新 WxMerchantBUser bUser = new WxMerchantBUser(); - bUser.setTenantId(appinfo.getTenantId()); + bUser.setTenantId(tenantId); bUser.setPhone(phone); - bUser.setAppId(appId); bUser.setStatus(EnumMerchantBUserStatus.VALID.getCode()); - List list = wxMerchantBUserMapper.findList(bUser); + List list = this.findAllList(bUser); if (list.size() > 0) { - bUser = list.get(0); - bUser.setUserPwd(pwd); - try { - wxMerchantBUserMapper.updateById(bUser); - } catch (Exception e) { - logger.error("db failed: 商户-" + bUser.getId() + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + for (WxMerchantBUser merchantBUser:list) { + merchantBUser.setUserPwd(pwd); + try { + wxMerchantBUserMapper.updateById(bUser); + } catch (Exception e) { + logger.error("db failed: 商户-" + bUser.getId() + ", e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } } } else { - logger.error("B端用户不是这个app的用户:" + appId); + logger.error("未找到用户:"); throw new MallinkException(ErrorCode.BUSER_NOT_IN_APP); } } return new ResultData(); } + @Override + public List findAllList(WxMerchantBUser userQ) { + if(StringUtils.isBlank(userQ.getTenantId())){ + return new ArrayList<>(); + } + List list = this.findList(userQ); + if(wxMallService.isgroupSupport(userQ)){ + WxMerchantBUser userQ2 = new WxMerchantBUser(); + BeanUtils.copyProperties(userQ,userQ2); + userQ2.setTenantId(null); + userQ2.setParentTenantId(userQ.getTenantId()); + List list1 = wxMerchantBUserMapper.findList(userQ2); + if(list1.size() > 0){ + list.addAll(list1); + } + } + return list; + } + + @Override + public List handMerchantBUser(List orgList) { + List tenantIds = orgList.stream().map(mb -> mb.getTenantId()).collect(Collectors.toList()); + WxMall mallQ = new WxMall(); + mallQ.setTenantIdList(tenantIds); + Map mallMap = wxMallService.getMallMap(mallQ); + List merchantIds = orgList.stream().map(mb -> mb.getMerchantId()).collect(Collectors.toList()); + WxMerchant merchantQ = new WxMerchant(); + merchantQ.setIds(merchantIds); + Map merchantMap = wxMerchantService.findMerchantMap(merchantQ); + + List listvo = new ArrayList<>(); + for (WxMerchantBUser bUser:orgList) { + WxMerchantBuInfoVo mbvo = new WxMerchantBuInfoVo(); + WxMall wxMall = mallMap.get(bUser.getTenantId()); + mbvo.updateTenantInfo(wxMall); + mbvo.setTenantName(wxMall.getName()); + mbvo.setMerchantId(mbvo.getMerchantId()); + WxMerchant merchant = merchantMap.get(bUser.getMerchantId()); + mbvo.setMerchantName(merchant.getName()); + mbvo.setImgUrl(merchant.getImgUrl()); + mbvo.setBuUserId(bUser.getId()); + listvo.add(mbvo); + } + return listvo; + } + } 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 c8e3533ed..b0e55daaa 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -39,6 +39,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -275,6 +276,16 @@ public class WxMerchantServiceImpl implements WxMerchantService { return wxMerchantMapper.findList(record); } + @Override + public List findAdminList(TenantEntity tenantEntity) { + WxMerchant wxMerchant = new WxMerchant(); + wxMerchant.updateTenantInfo(tenantEntity); + wxMerchant.setStatus(EnumMerchantStatus.VALID.getCode()); + wxMerchant.setIsAdmin(EnumMerchantAdmin.PUBLIC_ADMIN.getCode()); + List list = findList(wxMerchant); + return list; + } + @Override public List findList(TenantEntity tenantEntity) { WxMerchant wxMerchant = new WxMerchant(); @@ -499,9 +510,14 @@ public class WxMerchantServiceImpl implements WxMerchantService { if (hasMerchant(wxMerchant)) { return new ResultData(ErrorCode.MERCHANT_NAME_IS_FOUND); } + //检查商户唯一编码 if (hasMerchantEncode(wxMerchant)) { return new ResultData(ErrorCode.MERCHANT_CODE_IS_FOUND); } + //检查品牌 + if (hasMerchantBrand(wxMerchant)) { + return new ResultData(ErrorCode.MERCHANT_BRAND_IS_FOUND); + } //保存商户商铺的关联 List shopidlist = wxMerchant.getShopids(); if (shopidlist.isEmpty()) { @@ -654,6 +670,10 @@ public class WxMerchantServiceImpl implements WxMerchantService { if (hasMerchantEncode(wxMerchant)) { return new ResultData(ErrorCode.MERCHANT_CODE_IS_FOUND); } + //检查品牌 + if (hasMerchantBrand(wxMerchant)) { + return new ResultData(ErrorCode.MERCHANT_BRAND_IS_FOUND); + } } final IdWorker idWorker = IdWorker.get(); Date date = new Date(); @@ -889,7 +909,12 @@ public class WxMerchantServiceImpl implements WxMerchantService { if (wxMerchant.getId() == null) { return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); } - if(!EnumMerchantAdmin.PUBLIC_ADMIN.getCode().equals(wxMerchant.getIsAdmin())){ + if(EnumMerchantAdmin.PUBLIC_ADMIN.getCode().equals(wxMerchant.getIsAdmin())){ + //检查商管商户 + if (hasMerchantIsAdmin(wxMerchant)) { + return new ResultData(ErrorCode.MERCHANT_ADMIN_IS_FOUND); + } + }else{ //删除关联的其他门店用户 wxMerchantBUserMapper.deleteOtherMerchant(wxMerchant.getTenantId(),wxMerchant.getId().toString()); } @@ -1016,6 +1041,21 @@ public class WxMerchantServiceImpl implements WxMerchantService { } } + @Override + public boolean hasMerchantBrand(WxMerchant wxMerchant) { + if(wxMerchant.getBrand() != null && wxMallService.isgroupSupport(wxMerchant)){ + wxMerchant.setStatus(EnumMerchantStatus.VALID.getCode()); + return wxMerchantMapper.hasMerchantBrand(wxMerchant) > 0 ? true : false; + } + return false; + } + + @Override + public boolean hasMerchantIsAdmin(WxMerchant wxMerchant) { + wxMerchant.setStatus(EnumMerchantStatus.VALID.getCode()); + return wxMerchantMapper.hasMerchantIsAdmin(wxMerchant) > 0 ? true : false; + } + @Override public WxMerchant getMerchantByEncode(String encode){ return wxMerchantMapper.getMerchantByEncode(encode); @@ -1387,15 +1427,15 @@ public class WxMerchantServiceImpl implements WxMerchantService { } @Override - public Map> findCouponMerchantVoList(List couponIds,TenantEntity tenantEntity,boolean hasShop) { + public Map> findCouponMerchantVoList(List couponIds,TenantEntity mallTenantEntity,boolean hasShop) { Map> retMap = new HashMap>(); if (null == couponIds || couponIds.size() <= 0) { return retMap; } - List merchantIds = wxCouponMerchantMapper.findMerchantByProductIds(tenantEntity.getTenantId(), couponIds); + List merchantIds = wxCouponMerchantMapper.findMerchantByProductIds(mallTenantEntity.getTenantId(), couponIds); if(null != merchantIds && merchantIds.size() > 0 ) { TtMerchantPoi poiQ = new TtMerchantPoi(); - poiQ.updateTenantInfo(tenantEntity); + poiQ.updateTenantInfo(mallTenantEntity); poiQ.setIds(merchantIds); List poiList = ttMerchantPoiMapper.findList(poiQ); Map poiMap = new HashMap(); @@ -1409,7 +1449,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { } WxMerchant merchantQ = new WxMerchant(); - merchantQ.updateTenantInfo(tenantEntity); + merchantQ.updateTenantInfo(mallTenantEntity); merchantQ.setIds(merchantIds); List merchantList = wxMerchantMapper.findList(merchantQ); Map merchantMap = new HashMap(); @@ -1431,7 +1471,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { } WxCouponMerchant couponMerchantQ = new WxCouponMerchant(); - couponMerchantQ.updateTenantInfo(tenantEntity); + couponMerchantQ.updateTenantInfo(mallTenantEntity); couponMerchantQ.setStatus(0); couponMerchantQ.setProductIds(couponIds); List couponMerchantList = wxCouponMerchantMapper.findList(couponMerchantQ); @@ -1441,7 +1481,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { Map> merchantShopVoList = null; if (hasShop) { - merchantShopVoList = wxShopService.findMerchantShopVoListMap(tenantEntity,merchantIds); + merchantShopVoList = wxShopService.findMerchantShopVoListMap(mallTenantEntity,merchantIds); } @@ -1865,4 +1905,36 @@ public class WxMerchantServiceImpl implements WxMerchantService { } return null; } + + @Override + public WxMerchant findAdmin(TenantEntity tenantEntity) { + List adminList = findAdminList(tenantEntity); + if(adminList.size() > 0){ + return adminList.get(0); + } + return null; + } + + @Override + public WxMerchant findBrandAdmin(TenantEntity tenantEntity, Long brand) { + WxMerchant wxMerchant = new WxMerchant(); + wxMerchant.setTenantId(tenantEntity.getFinalTenantId()); + wxMerchant.setStatus(EnumMerchantStatus.VALID.getCode()); + wxMerchant.setBrand(brand); + List list = findList(wxMerchant); + if(list.size() > 0){ + return list.get(0); + } + return null; + } + + @Override + public Map findMerchantMap(WxMerchant merchantQ) { + Map merchantMap = new HashMap<>(); + List list = this.findList(merchantQ); + if(!list.isEmpty()){ + merchantMap = list.stream().collect(Collectors.toMap(WxMerchant::getId, Function.identity())); + } + return merchantMap; + } } 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 9c51c3ab6..c2b6c71ed 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1802,6 +1802,7 @@ public class WxOrderServiceImpl implements WxOrderService { WxAuthorizerInfo weappInfo = authorizerInfoMapper.findMp(authQ); if (weappInfo != null) { AppUniformMsg appUniformMsg = new AppUniformMsg(); + appUniformMsg.setTenantId(coupon.getTenantId()); appUniformMsg.setMsgType(EnumMsgRecordType.SMART_APP_UNIFORM.getCode()); appUniformMsg.setAppId(user.getAppId()); appUniformMsg.setTo(user.getOpenId()); @@ -2612,7 +2613,7 @@ public class WxOrderServiceImpl implements WxOrderService { sharingOrder.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); sharingOrder.updateTenantInfo(wxPayOrder); sharingOrder.setTransactionId(wxPayOrder.getTransactionId()); - wxProfitSharingOrderService.createSharingOrder(sharingOrder,wxPayOrder); + wxProfitSharingOrderService.createSharingOrder(wxMerchantBUser,sharingOrder,wxPayOrder); } else { logger.error("微信分账: 未找到payorder or merchant at orderid-" + orderId); @@ -3033,6 +3034,7 @@ public class WxOrderServiceImpl implements WxOrderService { if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(shippingType)){ record.setShippingAddress(JSON.toJSONString(address)); } + record.updateTenantInfo(composeOrder); record.setComposeOrderId(composeOrder.getMainOrderId()); record.setComposeOrderType(composeOrder.getComposeOrderType()); record.setCouponNumber(couponNumber); @@ -3096,6 +3098,7 @@ public class WxOrderServiceImpl implements WxOrderService { // 4.2 保存订单 WxOrder record = new WxOrder(); + record.setType(orderType); record.setPayVendor(payWay.getCode()); record.setPayVersion(payVersion.getCode()); @@ -3110,6 +3113,7 @@ public class WxOrderServiceImpl implements WxOrderService { } record.setOrderStatus(orderStatus); + record.updateTenantInfo(composeOrder); record.setComposeOrderId(composeOrder.getMainOrderId()); //if (EnumComposeOrder.childOrderIsSingle(composeOrder.getComposeOrderType())) { // record.setComposeOrderType(EnumComposeOrder.SINGLE.getCode()); @@ -3238,8 +3242,8 @@ public class WxOrderServiceImpl implements WxOrderService { throw new MallinkException(ErrorCode.COUPON_IS_EMPTY.getCode(),premsg+"不存在"); } if (EnumCouponType.mustHasMerchant(coupon.getType())) { - // 检查券商户信息 - if (!isCouponMerchantValid(coupon.getId(),coupon)) { + // 检查券商户信息isCouponMerchantValid + if (!wxCouponService.isCouponMerchantValid(coupon.getId(),coupon.getType(),coupon)) { throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND.getCode(),premsg+"商户信息没找到"); } } @@ -3311,6 +3315,7 @@ public class WxOrderServiceImpl implements WxOrderService { wxOrderPressMapper.insert(orderPress); // 更新订单砍价信息 WxOrder orderUpdatePress = new WxOrder(); + orderUpdatePress.updateTenantInfo(coupon); orderUpdatePress.setId(record.getId()); orderUpdatePress.setPressCurrentNum(1); orderUpdatePress.setPressCurrentValue(left_total - orderPress.getPressValue()); @@ -3378,6 +3383,7 @@ public class WxOrderServiceImpl implements WxOrderService { } WxOrder order = new WxOrder(); + order.updateTenantInfo(coupon); order.setOrderGroupId(group.getId()); order.setCUserId(user.getId()); order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode()); @@ -3485,12 +3491,13 @@ public class WxOrderServiceImpl implements WxOrderService { } @Override - public void sendInsideOrderPushDeliveryMsg(TenantEntity tenantEntity, Long composeOrderId,Long couponOrderId) { + public void sendInsideOrderPushDeliveryMsg(TenantEntity couponOrderTenantEntity, Long composeOrderId,Long couponOrderId) { try{ FmInsideOrderPushMsg orderPush = new FmInsideOrderPushMsg(); orderPush.setDelayTimeLevel(3); orderPush.setMsgType(EnumMsgRecordType.INSIDE_ORDER_PUSH_DELIVERY.getCode()); - orderPush.updateTenantInfo(tenantEntity); + orderPush.updateTenantInfo(couponOrderTenantEntity); + //orderPush.setMallTenantEntity(mallTenantEntity); orderPush.setBatchOrderId(composeOrderId); orderPush.setCouponOrderId(couponOrderId); logger.info(">>>>>>>>>>>send sendInsideOrderPushMsg :"+orderPush); @@ -3591,11 +3598,12 @@ public class WxOrderServiceImpl implements WxOrderService { } @Override - public Map getOrderEntrySchema(Long mainOrderId) { + public Map getOrderEntrySchema(String tenantId,Long mainOrderId) { Map map = new HashMap<>(); map.put("path", Constant.mainPageUrl); Map paramMap = new HashMap<>(); paramMap.put("type","dt"); + paramMap.put("tenantId",tenantId); paramMap.put("orderId",mainOrderId); map.put("params", JSON.toJSONString(paramMap)); return map; @@ -3656,9 +3664,8 @@ public class WxOrderServiceImpl implements WxOrderService { return new ResultData(composeOrder); } else { //todo 暂无多订单模式 - + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "数据异常"); } - return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), "数据异常"); // List childOrders = orderAdapterService.getChildOrders(composeOrder, tenantEntity.getTenantId()); // Map> collect = childOrders.stream().collect(groupingBy(WxOrder::getCouponChannelId)); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java index 4d3e55546..7df0c2028 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java @@ -19,11 +19,7 @@ import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.pay.*; -import com.iformall.service.WxBillAllService; -import com.iformall.service.WxBillSettleService; -import com.iformall.service.WxMerchantBUserService; -import com.iformall.service.WxMerchantService; -import com.iformall.service.WxPayBillService; +import com.iformall.service.*; import com.iformall.utils.*; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -45,13 +41,13 @@ public class WxPayBillServiceImpl implements WxPayBillService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired - WxAppinfoMapper wxAppinfoMapper; + WxAppinfoService wxAppinfoService; @Autowired WxPayAccountBillMapper wxPayAccountBillMapper; @Autowired - WxPayAccountMapper wxPayAccountMapper; + WxPayAccountService wxPayAccountService; @Autowired WxPayBillMapper wxPayBillMapper; @@ -132,7 +128,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { return new ResultData(ErrorCode.BILL_OWE_ZERO); } //获取支付账户信息 - WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); + WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId()); Date currentDate = new Date(); String payBillNo; WxPayBill billParam= new WxPayBill(); @@ -362,7 +358,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { private String wechatPayBillQuery(WxAppinfo appInfo, WxPayBill record) { // get payAccount - WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); + WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId()); if (payAccount.getType().equals(EnumPayMode.MCH.getCode())) { // 普通商户号模式 WxPayOrderQ payBillQ = new WxPayOrderQ(); @@ -459,7 +455,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { private String wechatPayBillClose(WxAppinfo appInfo, WxPayBill record) { // get payAccount - WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); + WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId()); if (payAccount.getType().equals(EnumPayMode.MCH.getCode())) { // 普通商户号模式 WxPayOrderQ payBillC = new WxPayOrderQ(); @@ -576,7 +572,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { * @return */ @Override - public String notify(Map paramMap, EnumPayWay payWay) { + public String notify(String tenantId,Map paramMap, EnumPayWay payWay) { // how to get wechatAppId, wechatMchId, partnerKey logger.info("-------------"); logger.info("微信回调返回值:" + JSONObject.toJSONString(paramMap)); @@ -585,25 +581,26 @@ public class WxPayBillServiceImpl implements WxPayBillService { String subAppId = paramMap.get("sub_appid"); String mchId = paramMap.get("mch_id"); String subMchId = paramMap.get("sub_mch_id"); + String attach = paramMap.get("attach"); WxAppinfo appinfo; boolean isNormal = true; if (StringUtils.isBlank(subAppId) && StringUtils.isBlank(subMchId)) { // 普通商户号 - appinfo = wxAppinfoMapper.findByAppId(appId); + appinfo = wxAppinfoService.getByAppIdFromRedis(appId,tenantId); if (appinfo == null) { throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); } isNormal = true; } else { // 服务号 现在用hmac-sha256 - appinfo = wxAppinfoMapper.findByAppId(subAppId); + appinfo = wxAppinfoService.getByAppIdFromRedis(subAppId,tenantId); if (appinfo == null) { throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); } isNormal = false; } - WxPayAccount payAccount = wxPayAccountMapper.selectById(appinfo.getPayId()); + WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appinfo.getPayId()); if (payAccount == null) { throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); } @@ -800,7 +797,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { WxAppinfo appinfoQ = new WxAppinfo(); appinfoQ.setTenantId(bill.get("tenantId").toString()); appinfoQ.setType(EnumAppType.B.getCode()); - List appList = wxAppinfoMapper.selectList(new QueryWrapper(appinfoQ)); + List appList = wxAppinfoService.getList(appinfoQ); if (appList.size() > 0) { appInfo = appList.get(0); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 535a7ad11..9024e39e8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -419,16 +419,22 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { //设置子订单分账金额 Map childShares = new HashMap(); for (WxOrder o : childOrders) { - Long merchant_id = 0L; + Long merchant_id = 0l; String merchant_uid = ""; if(EnumPayMchType.DIRECT.equals(payMchType)){//直连模式记录收款商户 merchant_id = o.getMakeMerchantId(); + if(merchant_id == null || merchant_id.equals(0l)){ + throw new MallinkException(ErrorCode.PAY_ORDER_MERCHANT_UID_ERROR); + } PayShareAdapterService payShareServie = payServiceFactory.getPayShareAdapterService(payWay.getCode(),payAccount.getPayVersion()); WxProfitSharingReceiver receiver = payShareServie.getReceiver(payAccount, merchant_id, null, payMchTypeEnum.getCode()); if(receiver == null){ throw new MallinkException(ErrorCode.PAY_ORDER_MERCHANT_UID_ERROR); } merchant_uid = receiver.getReceiverAccount(); + if(StringUtils.isBlank(merchant_uid)){ + throw new MallinkException(ErrorCode.PAY_ORDER_MERCHANT_UID_ERROR); + } } childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(o.getId(),o.getPayment(),merchant_id,merchant_uid)); @@ -1117,7 +1123,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error(e.getMessage()); } // 更新后处理 - wxCouponOrderService.sendInsideCouponVerifyMsg(unPayOrder, unPayOrder.getPosPayOrderId(), user.getMerchantId(),user.getMerchantId()); + wxCouponOrderService.sendInsideCouponVerifyMsg(unPayOrder.getPosPayOrderId(),user,user.getMerchantId(), user); } } } catch (Exception e) { @@ -1149,7 +1155,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if (record.getShare().equals(EnumPayShare.NO.getCode())) { //结算记录 try { - proxy.createMerchantSubsidy(record, composeOrder.getSingleOrder(), new Date(),true); + proxy.createMerchantSubsidy(user,record, composeOrder.getSingleOrder(), new Date(),true); } catch (Exception e) { logger.error("收银台结算记录失败,{}", e.getMessage()); } @@ -1238,7 +1244,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error(e.getMessage()); } // 更新后处理 - wxCouponOrderService.sendInsideCouponVerifyMsg(unPayOrder, unPayOrder.getPosPayOrderId(), user.getMerchantId(),user.getMerchantId()); + wxCouponOrderService.sendInsideCouponVerifyMsg(unPayOrder.getPosPayOrderId(),user,user.getMerchantId(),user); } } } catch (Exception e) { @@ -1247,15 +1253,16 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void createMerchantSubsidy(WxPayOrder record, WxOrder order, Date curDate,boolean freshMerchantCash) { + public void createMerchantSubsidy(WxMerchantBUser user,WxPayOrder record, WxOrder order, Date curDate,boolean freshMerchantCash) { final IdWorker idWorker = IdWorker.get(); WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); merchantSubsidy.setId(idWorker.nextId()); merchantSubsidy.updateTenantInfo(order); merchantSubsidy.setOrderId(order.getId()); merchantSubsidy.setOrderType(EnumOrderType.MICROPAY.getCode()); - WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectById(order.getProductId()); - merchantSubsidy.setMerchantId(wxMerchantBUser.getMerchantId()); + //WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectById(order.getProductId()); + merchantSubsidy.setMerchantId(user.getMerchantId()); + merchantSubsidy.setBTenantId(user.getTenantId()); merchantSubsidy.setCouponOrderId(0L); merchantSubsidy.setCouponType(0); if (null == record.getPayAmount()) { @@ -1279,7 +1286,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { wxMerchantSubsidyMapper.insert(merchantSubsidy); if (freshMerchantCash && (null!=record.getShare() && EnumPayShare.NO.getCode().intValue()==record.getShare().intValue())) { - cashOutService.addCashOut(wxMerchantBUser.getMerchantId(), merchantSubsidy.getRealPayment()); + WxMerchant merchant = wxMerchantMapper.selectById(user.getMerchantId()); + cashOutService.addCashOut(merchant, merchantSubsidy.getRealPayment()); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java index 0c2172123..c39ef6c5d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java @@ -21,13 +21,11 @@ import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.pay.*; -import com.iformall.service.ExcelService; -import com.iformall.service.WxAppinfoService; -import com.iformall.service.WxMerchantService; -import com.iformall.service.WxProfitSharingOrderService; +import com.iformall.service.*; import com.iformall.service.order.entity.WxComposeChildOrderShare; import com.iformall.service.order.util.OrderHelper; import com.iformall.service.pay.PayServiceFactory; +import com.iformall.service.pay.service.pay.douyin.v1.miniApp.EnumTtPayChannel; import com.iformall.service.pay.service.share.PayShareAdapterService; import com.iformall.service.pay.service.share.entity.PayShareCalculateAmount; import com.iformall.service.pay.service.share.entity.PayShareQueryResult; @@ -45,6 +43,7 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; @@ -106,6 +105,10 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ @Autowired ExcelService excelService; + @Lazy + @Autowired + WxCouponOrderService wxCouponOrderService; + final JSONObject errorMap = JSON.parseObject("{" + "\"SYSTEMERROR\":{\"detail\":\"接口返回错误\",\"reason\":\"系统超时\",\"resolution\":\"系统异常,请用相同参数重新调用\"}," + "\"AMOUNT_OVERDUE\":{\"detail\":\"分账金额超限\",\"reason\":\"分账金额大于可分金额 或大于分账最大比例 \",\"resolution\":\"请调整分账金额\"}," + @@ -184,18 +187,11 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ if(!EnumProfitSharingOrderStatus.shareStatus().contains(sharingOrder.getSharingStatus())){ return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"分账状态不允许"); } + + + WxMerchant merchant = wxMerchantService.getById(sharingOrder.getMerchantId()); + Date currentDate = new Date(); - if(EnumPayWay.PAY_WAY_WECHAT.getCode().equals(payOrder.getPayVendor()) - && DateUtils.daysBetween(payOrder.getCreateTime(),currentDate) > 30){ - WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder(); - updSharingOrder.updateTenantInfo(sharingOrder); - updSharingOrder.setId(sharingOrder.getId()); - updSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_FAILED.getCode()); - updSharingOrder.setErrorMsg("微信支付超30天无法分账"); - updSharingOrder.setUpdateTime(currentDate); - wxProfitSharingOrderMapper.updateById(updSharingOrder); - return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"微信支付超30天无法分账"); - } PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion()); @@ -203,7 +199,6 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ //获取达人佣金 int cpsCommission = payShareAdapterService.getCPSCommission(sharingOrder,sharingOrder.getSingleOrderId()); - if(cpsCommission < 0){ WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder(); updSharingOrder.updateTenantInfo(sharingOrder); @@ -212,8 +207,9 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ updSharingOrder.setErrorMsg("未获取到达人佣金"); updSharingOrder.setUpdateTime(currentDate); wxProfitSharingOrderMapper.updateById(updSharingOrder); - return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"未获取到达人佣金"); + return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"未获取到达人佣金");//等待重试 } + JSONArray receivers = new JSONArray();//分账参数json EnumPayWay enumPayWay = EnumPayWay.getEnum(payOrder.getPayVendor()); EnumAppPlat enumPlat = enumPayWay.getPlat(); @@ -228,15 +224,21 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxComposeChildOrderShare = payOrder.getSingleChildOrderShare(); } wxComposeChildOrderShare.setCpsCommission(cpsCommission); + //官方手续费千6 int realRateAmount = PayUtils.getPayRate(wxComposeChildOrderShare.getRealPayMent(), payAccount.getRealRate(), true); wxComposeChildOrderShare.setRealRateAmount(realRateAmount); + //官方平台抽佣 int rate = payShareAdapterService.getOfficialCommission(wxComposeChildOrderShare.getOrderId(),payAccount); int commissionAmount = PayUtils.getPayRate(wxComposeChildOrderShare.getRealPayMent(), rate, true); wxComposeChildOrderShare.setCommissionAmount(commissionAmount); + int surplus = 0;//当广场抽成帐号与收款帐号相等,无法添加分账方,计入商管商户中 - if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType()) && EnumYesOrNo.YES.getCode().equals(payAccount.getIsCommission())){ + //只有抖音直连才有分账 + if(EnumPayWay.PAY_WAY_TT.getCode().equals(payOrder.getPayVendor()) + && EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType()) + && EnumYesOrNo.YES.getCode().equals(payAccount.getIsCommission())){ //销售抽点+系统抽点 int selSysAmount = PayUtils.getPayRate(wxComposeChildOrderShare.getRealPayMent(), payAccount.getSellRate()+payAccount.getSystemRate(), false); //销售抽点 @@ -244,13 +246,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxComposeChildOrderShare.setSellerAmount(sellerAmount); boolean isSeller = false; if(sellerAmount > 0){ - WxProfitSharingReceiver receiver = getByMerchantAdmin(payOrder,payShareAdapterService,wxComposeChildOrderShare.getMerchantId(),EnumMerchantAdmin.PRIVATE_SELL,payOrder.getTtPayWay(), payOrder.getMchType()); + WxProfitSharingReceiver receiver = getByMerchantAdmin(sharingOrder,payShareAdapterService,wxComposeChildOrderShare.getMerchantId(),EnumMerchantAdmin.PRIVATE_SELL,payOrder.getTtPayWay(), payOrder.getMchType()); if(receiver != null){ JSONObject jo = new JSONObject(); jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); jo.put("account",receiver.getReceiverAccount()); jo.put("amount", sellerAmount); jo.put("merchantId",receiver.getMerchantId()); + jo.put("bTenantId",receiver.getTenantId()); jo.put("description",receiver.getId()); jo.put("isPrivate",EnumYesOrNo.YES.getCode()); receivers.add(jo); @@ -267,13 +270,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ } boolean isSystem = false; if(systemAmount > 0){ - WxProfitSharingReceiver receiver = getByMerchantAdmin(payOrder,payShareAdapterService,wxComposeChildOrderShare.getMerchantId(),EnumMerchantAdmin.PRIVATE_SYSTEM,payOrder.getTtPayWay(), payOrder.getMchType()); + WxProfitSharingReceiver receiver = getByMerchantAdmin(sharingOrder,payShareAdapterService,wxComposeChildOrderShare.getMerchantId(),EnumMerchantAdmin.PRIVATE_SYSTEM,payOrder.getTtPayWay(), payOrder.getMchType()); if(receiver != null){ JSONObject jo = new JSONObject(); jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); jo.put("account",receiver.getReceiverAccount()); jo.put("amount", systemAmount); jo.put("merchantId",receiver.getMerchantId()); + jo.put("bTenantId",receiver.getTenantId()); jo.put("description",receiver.getId()); jo.put("isPrivate",EnumYesOrNo.YES.getCode()); receivers.add(jo); @@ -292,13 +296,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ } boolean isMall = false; if(mallAmount > 0){ - WxProfitSharingReceiver receiver = getByMerchantAdmin(payOrder,payShareAdapterService,wxComposeChildOrderShare.getMerchantId(),EnumMerchantAdmin.PUBLIC_ADMIN,payOrder.getTtPayWay(), payOrder.getMchType()); + WxProfitSharingReceiver receiver = getByMerchantAdmin(sharingOrder,payShareAdapterService,wxComposeChildOrderShare.getMerchantId(),EnumMerchantAdmin.PUBLIC_ADMIN,payOrder.getTtPayWay(), payOrder.getMchType()); if(receiver != null){ JSONObject jo = new JSONObject(); jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); jo.put("account",receiver.getReceiverAccount()); jo.put("amount", mallAmount); jo.put("merchantId",receiver.getMerchantId()); + jo.put("bTenantId",receiver.getTenantId()); jo.put("description",receiver.getId()); jo.put("isPrivate",EnumYesOrNo.YES.getCode()); receivers.add(jo); @@ -315,65 +320,132 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ //商户所得 int shareAmount = wxComposeChildOrderShare.getShareAmount() + surplus; - WxProfitSharingReceiver receiver = payShareAdapterService.getReceiver(sharingOrder,sharingOrder.getMerchantId(),payOrder.getTtPayWay(),payOrder.getMchType()); - if(EnumPayMchType.TOTAL.getCode().equals(payOrder.getMchType()) && EnumPayShare.YES.getCode().equals(payOrder.getShare())){ - JSONObject jo = new JSONObject(); - jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); - jo.put("account",receiver.getReceiverAccount()); - jo.put("amount", shareAmount); - jo.put("merchantId",receiver.getMerchantId()); - jo.put("description",receiver.getId()); - receivers.add(jo); + boolean isCallSharing = false;//是否调用分账 + boolean isCreateSubsidy = false;//是否需要记账 + boolean isSharingResult = false;//是否需要记录Result + if(EnumPayWay.PAY_WAY_WECHAT.getCode().equals(payOrder.getPayVendor()) + && DateUtils.daysBetween(payOrder.getCreateTime(),currentDate) > 30){ + isCallSharing = false; + if(EnumPayShare.YES.getCode().equals(payOrder.getShare())){ + isCreateSubsidy = true; + } + isSharingResult = true; + }else{ + isCallSharing = true; + WxProfitSharingReceiver receiver = payShareAdapterService.getReceiver(merchant,sharingOrder.getMerchantId(),payOrder.getTtPayWay(),payOrder.getMchType()); + if(EnumPayMchType.TOTAL.getCode().equals(payOrder.getMchType()) && EnumPayShare.YES.getCode().equals(payOrder.getShare())){ + //总分 分账 抖音不支持 不支持开通 + JSONObject jo = new JSONObject(); + jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); + jo.put("account",receiver.getReceiverAccount()); + jo.put("amount", shareAmount); + jo.put("merchantId",receiver.getMerchantId()); + jo.put("bTenantId",receiver.getTenantId()); + jo.put("description",receiver.getId()); + receivers.add(jo); + }else if(EnumPayWay.PAY_WAY_TT.getCode().equals(payOrder.getPayVendor()) + && EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType()) + && !sharingOrder.getMerchantId().equals(wxComposeChildOrderShare.getMerchantId()) + && EnumTtPayChannel.ALI_PAY.getCode().equals(payOrder.getTtPayWay())){ + //抖音 直连 多商户 支付宝支付 进件支付宝 分账 否则记账 + JSONObject jo = new JSONObject(); + jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); + jo.put("account",receiver.getReceiverAccount()); + jo.put("amount", shareAmount); + jo.put("merchantId",receiver.getMerchantId()); + jo.put("bTenantId",receiver.getTenantId()); + jo.put("description",receiver.getId()); + receivers.add(jo); + }else if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType()) + && !sharingOrder.getMerchantId().equals(wxComposeChildOrderShare.getMerchantId())){ + isCreateSubsidy = true; + isSharingResult = true; + }else{ + isSharingResult = true; + } } - if(receivers.isEmpty()){ - shareResult = payShareAdapterService.noReciverShare(cAppInfo, payAccount, sharingOrder); + if(isCallSharing){ + if(receivers.isEmpty()){ + shareResult = payShareAdapterService.noReciverShare(cAppInfo, payAccount, sharingOrder); + }else{ + shareResult = payShareAdapterService.haveReciversShare(cAppInfo, payAccount, sharingOrder, receivers); + } + + if (null == shareResult) { + return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"当前支付模式调用分账未返回结果"); + } + + WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder(); + updSharingOrder.updateTenantInfo(sharingOrder); + updSharingOrder.setId(sharingOrder.getId()); + if(isSharingResult){ + updSharingOrder.setSharingMerchantId(sharingOrder.getPayMerchantId()); + }else{ + updSharingOrder.setSharingMerchantId(sharingOrder.getMerchantId()); + } + updSharingOrder.setOutSettleNo(sharingOrder.getOutSettleNo()); + + updSharingOrder.setUpdateTime(currentDate); + + if(shareResult.isSuccess()){ + updSharingOrder.setPayTimeEnd(currentDate); + updSharingOrder.setSharingOrderNo(shareResult.getShareOrderNo()); + updSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_ACCEPTED.getCode()); + updSharingOrder.setErrorMsg(shareResult.getMsg()); + }else{ + updSharingOrder.setSharingStatus(shareResult.getCode()); + updSharingOrder.setErrorMsg(shareResult.getMsg()); + } + updSharingOrder.setPointDeduction(JSON.toJSONString(wxComposeChildOrderShare)); + updSharingOrder.setReceivers(JSON.toJSONString(receivers)); + wxProfitSharingOrderMapper.updateById(updSharingOrder); }else{ - shareResult = payShareAdapterService.haveReciversShare(cAppInfo, payAccount, sharingOrder, receivers); - } - - if (null == shareResult) { - return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(),"当前支付模式调用分账未返回结果"); + WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder(); + updSharingOrder.updateTenantInfo(sharingOrder); + updSharingOrder.setId(sharingOrder.getId()); + updSharingOrder.setSharingMerchantId(sharingOrder.getPayMerchantId()); + updSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_DONE.getCode()); + updSharingOrder.setErrorMsg("微信支付超30天已自动解冻"); + updSharingOrder.setPointDeduction(JSON.toJSONString(wxComposeChildOrderShare)); + updSharingOrder.setReceivers(JSON.toJSONString(receivers)); + updSharingOrder.setUpdateTime(currentDate); + wxProfitSharingOrderMapper.updateById(updSharingOrder); } - - WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder(); - updSharingOrder.updateTenantInfo(sharingOrder); - updSharingOrder.setId(sharingOrder.getId()); - updSharingOrder.setOutSettleNo(sharingOrder.getOutSettleNo()); - - updSharingOrder.setUpdateTime(currentDate); - - if(shareResult.isSuccess()){ - updSharingOrder.setPayTimeEnd(currentDate); - updSharingOrder.setSharingOrderNo(shareResult.getShareOrderNo()); - updSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_ACCEPTED.getCode()); - updSharingOrder.setErrorMsg(shareResult.getMsg()); - }else{ - updSharingOrder.setSharingStatus(shareResult.getCode()); - updSharingOrder.setErrorMsg(shareResult.getMsg()); + + if(isCreateSubsidy){ + try { + // 微信超过30天无法分账的, + WxOrder order = wxOrderMapper.selectById(sharingOrder.getSingleOrderId(), sharingOrder.getTenantId()); + wxCouponOrderService.recordAfterVerified(order, merchant); + } catch (Exception e) { + logger.error("核销记账失败"+e.getMessage(),e); + } } - updSharingOrder.setPointDeduction(JSON.toJSONString(wxComposeChildOrderShare)); - updSharingOrder.setReceivers(JSON.toJSONString(receivers)); - wxProfitSharingOrderMapper.updateById(updSharingOrder); - - if(EnumPayMchType.TOTAL.getCode().equals(payOrder.getMchType()) && EnumPayShare.NO.getCode().equals(payOrder.getShare())){ - //解冻给收款方(广场) - JSONObject jo = new JSONObject(); - jo.put("type",EnumProfitSharingReceiverType.PROFIT_SHARING_RECEIVER_MERCHANT_ID.getMessage()); - jo.put("account",payAccount.getSubMchId()); - jo.put("amount", shareAmount); - jo.put("merchantId",0); - jo.put("description",0); - receivers.add(jo); - }else if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())){ - //解冻给收款方(门店) - JSONObject jo = new JSONObject(); - jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); - jo.put("account",receiver.getReceiverAccount()); - jo.put("amount", shareAmount); - jo.put("merchantId",receiver.getMerchantId()); - jo.put("description",receiver.getId()); - receivers.add(jo); + + if(isSharingResult){ + if(EnumPayMchType.TOTAL.getCode().equals(payOrder.getMchType())){ + //解冻给收款方(广场) + JSONObject jo = new JSONObject(); + jo.put("type",EnumProfitSharingReceiverType.PROFIT_SHARING_RECEIVER_MERCHANT_ID.getMessage()); + jo.put("account",payAccount.getSubMchId()); + jo.put("amount", shareAmount); + jo.put("merchantId",0); + jo.put("bTenantId",payOrder.getTenantId()); + jo.put("description",0); + receivers.add(jo); + }else if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())){ + WxProfitSharingReceiver receiver = payShareAdapterService.getReceiver(sharingOrder,wxComposeChildOrderShare.getMerchantId(),payOrder.getTtPayWay(),payOrder.getMchType()); + //解冻给收款方(门店) + JSONObject jo = new JSONObject(); + jo.put("type",payShareAdapterService.getShareAccount(receiver.getReceiverType()).getMessage()); + jo.put("account",receiver.getReceiverAccount()); + jo.put("amount", shareAmount); + jo.put("merchantId",receiver.getMerchantId()); + jo.put("bTenantId",receiver.getTenantId()); + jo.put("description",receiver.getId()); + receivers.add(jo); + } } try{ @@ -385,6 +457,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ result.setId(idworker.nextId()); result.updateTenantInfo(sharingOrder); result.setMerchantId(Long.valueOf(o.getString("merchantId"))); + result.setBTenantId(o.getString("bTenantId")); result.setSharingOrderId(sharingOrder.getId()); result.setSharingReceiverId(Long.valueOf(o.getString("description"))); result.setPayAmount(o.getInteger("amount")); @@ -396,7 +469,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxProfitSharingResultMapper.insert(result); }); }catch(Exception e){ - logger.info("记账失败"+sharingOrder.getId()); + logger.info("记录结果失败"+sharingOrder.getId()); } return new ResultData(shareResult); @@ -405,7 +478,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ @Override // @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) - public ResultData createSharingOrder(WxSharingOrderDto sharingOrderDto,WxPayOrder payOrder) { + public ResultData createSharingOrder(TenantEntity mallTenantEntity,WxSharingOrderDto sharingOrderDto,WxPayOrder payOrder) { // PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion()); //创建分账订单 @@ -439,6 +512,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ record.setSingleOrderAmount(childOrderShare.getRealPayMent()); record.setPayAmount(payOrder.getPayAmount()); record.setMerchantId(sharingOrderDto.getMerchantId()); + record.setBTenantId(mallTenantEntity.getTenantId()); //直连模式, if (payOrder.getMchType() == EnumPayMchType.DIRECT.getCode()) { if (null == childOrderShare.getMerchantId()) { @@ -449,6 +523,8 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ } record.setPayMerchantId(childOrderShare.getMerchantId()); record.setPayMerchantMchId(childOrderShare.getMerchantUid()); + }else{ + record.setPayMerchantId(0l); } record.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_READY.getCode()); // record.setPointDeduction(JSON.toJSONString(childOrderShare)); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index d93bf1f26..06faaf3c1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -276,6 +276,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { wxCouponOrder.setBUserId(bUser.getId()); wxCouponOrder.setAUserId(payType.getCode().longValue()); wxCouponOrder.setBMerchantId(bUser.getMerchantId()); + wxCouponOrder.setBTenantId(bUser.getTenantId()); } else if (payType == EnumPayType.PAY_ADMIN_REFUND) { wxCouponOrder.setBUserId(payType.getCode().longValue()); wxCouponOrder.setAUserId(aUserId); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentPropertyContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentPropertyContractServiceImpl.java index 7dbaa22a3..5147c1370 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentPropertyContractServiceImpl.java @@ -101,6 +101,7 @@ public class WxRentPropertyContractServiceImpl implements WxRentPropertyContract data.put("status", wfr.getStatus()); data.put("userName", wfr.getUserName()); data.put("remark", wfr.getRemark()); + data.put("updateDate",wfr.getUpdateDate()); result.add(data); } return new ResultData(result); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java index 95b60e3f0..4d4f79ec4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java @@ -124,8 +124,7 @@ public class WxTemplateMsgServiceImpl implements WxTemplateMsgService { if(isFmOpen) { wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appinfo.getAppId()); } else { - WxAppinfo appInfo = wxAppinfoService.getByAppId(appinfo.getAppId()); - wxMaService = maUtil.getWeappService(appInfo); + wxMaService = maUtil.getWeappService(appinfo); } String s = ""; if(byId.getType() == EnumTemplateType.ACTIVITY_REMIND.getCode()){ diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java index 10ab3bfca..69c1548d8 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java @@ -2,6 +2,7 @@ package com.iformall.service.msg.impl; import com.iformall.common.ErrorCode; import com.iformall.domain.po.*; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.msg.BaseMsg; import com.iformall.domain.po.msg.FmInsideCouponVerifyMsg; import com.iformall.enums.EnumCouponOrderStatus; @@ -37,27 +38,26 @@ public class FmInsideCouponVerifyMsgServiceImpl implements MsgSendService { @Override public void send(BaseMsg baseMsg) throws Exception{ FmInsideCouponVerifyMsg msg = (FmInsideCouponVerifyMsg)baseMsg; - WxCouponOrder couponOrder = couponOrderService.getById(msg.getCouponOrderId(),msg.getTenantId()); + + TenantEntity couponTenantEntity = new TenantEntity(); + couponTenantEntity.setTenantId(msg.getTenantId()); + couponTenantEntity.setParentTenantId(msg.getParentTenantId()); + + WxCouponOrder couponOrder = couponOrderService.getById(msg.getCouponOrderId(),couponTenantEntity.getTenantId()); if(couponOrder == null) { logger.error("券包ID未找到: " + msg.getCouponOrderId()); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL.getCode(), "券包ID未找到" + msg.getCouponOrderId()); } - + TenantEntity mallTenantEntity = msg.getMallTenantEntity(); WxMerchant merchant = merchantService.selectById(msg.getMerchantId()); if(merchant == null) { logger.error("门店未找到: " + msg.getMerchantId()); throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "门店未找到" + msg.getMerchantId()); } - WxMerchant bmerchant = null; - if(msg.getBmerchantId() != null && msg.getBmerchantId().longValue() > 0l - && !msg.getBmerchantId().equals(msg.getMerchantId())){ - bmerchant = merchantService.selectById(msg.getBmerchantId()); - }else{ - bmerchant = merchant; - } + orderService.sendInsideOrderPushDeliveryMsg(couponOrder,null,couponOrder.getId()); // orderService.sendInsideOrderPushMsg(couponOrder,couponOrder.getComposeOrderId()); - couponOrderService.actionAfterVerify(couponOrder, merchant, bmerchant); + couponOrderService.actionAfterVerify(couponOrder, merchant); } } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java index e1b57f58b..b02c63d37 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushDeliveryMsgServiceImpl.java @@ -75,6 +75,11 @@ public class FmInsideOrderPushDeliveryMsgServiceImpl implements MsgSendService { TenantEntity tenantEntity = new TenantEntity(); tenantEntity.setTenantId(msg.getTenantId()); tenantEntity.setParentTenantId(msg.getParentTenantId()); + +// TenantEntity mallTenantEntity = msg.getMallTenantEntity(); +// if (null == mallTenantEntity) { +// mallTenantEntity = tenantEntity; +// } try{ WxCouponOrder couponOrder = wxCouponOrderService.getById(msg.getCouponOrderId(), tenantEntity.getTenantId()); @@ -88,7 +93,7 @@ public class FmInsideOrderPushDeliveryMsgServiceImpl implements MsgSendService { TtMerchantPoi poi = ttMerchantPoiService.getById(couponOrder.getBMerchantId()); - WxAppinfo appinfo = wxAppinfoService.getCAppInfo(tenantEntity,EnumPayWay.PAY_WAY_TT.getPlat()); + WxAppinfo appinfo = wxAppinfoService.getCAppInfo(couponOrder,EnumPayWay.PAY_WAY_TT.getPlat()); WxPayAccount payAccount = wxPayAccountService.getById(appinfo.getPayId()); TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmartAppMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmartAppMsgServiceImpl.java index 92e7b4cb6..c0cb8937f 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmartAppMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmartAppMsgServiceImpl.java @@ -76,7 +76,7 @@ public class SendSmartAppMsgServiceImpl implements MsgSendService { return; } if(0 == msg.getOnOff().intValue()){ - WxAppinfo appInfo = wxAppinfoService.getByAppId(smartAppMsg.getAppId()); + WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(smartAppMsg.getAppId()); if(EnumTemplateType.TT_SEND_COUPON_REMIND.getCode().equals(msg.getType())){ //发抖音 TtMaService ttappService = maUtil.getTtMaService(appInfo); diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendWeappUniformMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendWeappUniformMsgServiceImpl.java index e3ae39ed4..6a7a9f307 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendWeappUniformMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendWeappUniformMsgServiceImpl.java @@ -48,10 +48,7 @@ public class SendWeappUniformMsgServiceImpl implements MsgSendService { AppUniformMsg appUniformMsg = (AppUniformMsg)baseMsg; String tenantId = appUniformMsg.getTenantId(); - if (StringUtils.isBlank(tenantId)) { - WxAppinfo appinfo = appinfoMapper.findByAppId(appUniformMsg.getAppId()); - tenantId = appinfo.getTenantId(); - } + WxTemplateMsg msg = null; WxMaService wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appUniformMsg.getAppId()); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/BaseTtPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/BaseTtPayAdapterService.java index a4a2d1e63..9ec9d9363 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/BaseTtPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/BaseTtPayAdapterService.java @@ -1,5 +1,6 @@ package com.iformall.service.pay.service.pay.douyin.v1; +import com.alibaba.fastjson.JSON; import com.iformall.common.ErrorCode; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxPayAccount; @@ -11,6 +12,7 @@ import com.iformall.douyin.pay.orderQuery.OrderQueryResult; import com.iformall.douyin.payv2.result.TtPayOrderQueryV2Result; import com.iformall.enums.EnumPayStatus; import com.iformall.exception.MallinkException; +import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; import com.iformall.utils.MaUtil; @@ -21,6 +23,8 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import java.io.File; +import java.util.HashMap; +import java.util.Map; @Slf4j public class BaseTtPayAdapterService { @@ -28,6 +32,18 @@ public class BaseTtPayAdapterService { @Autowired protected MaUtil maUtil; + /** + * 做为支付的扩展数据 + * @param + * @return + */ + protected String getCallbackData(WxPayOrder record) { + Map map = new HashMap<>(); + map.put("composeOrderId",record.getOrderId()); + map.put("tenantId",record.getTenantId()); + return JSON.toJSONString(map); + } + protected PayQueryAdapterResult queryPayStatus(WxPayOrder oldRecord, WxAppinfo appInfo, WxPayAccount payAccount) throws Exception { TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java index 3e1005bde..ded167a29 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iformall.common.ErrorCode; +import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.domain.vo.WxMerchantVo; import com.iformall.domain.vo.WxOrderCouponVo; @@ -20,6 +21,7 @@ import com.iformall.mapper.*; import com.iformall.service.WxCouponService; import com.iformall.service.order.OrderAdapterService; import com.iformall.service.order.OrderFactory; +import com.iformall.service.order.entity.WxComposeChildOrderShare; import com.iformall.service.order.entity.WxComposeOrder; import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.CDrivingPayService; @@ -112,18 +114,24 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(record.getComposeOrder()); List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); - Map> collect = orderList.stream().collect(groupingBy(WxOrder::getCouponChannelId)); - - Map> goodsCollect = new HashMap<>(); - for (Long key: collect.keySet()) { - TtPayUnifiedOrderV2Request.Good good = new TtPayUnifiedOrderV2Request.Good(); - good.setQuantity(collect.get(key).size()); - TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectByChannelId(appInfo.getTenantId(), key); - good.setGoodsId(ttCouponChannelPoi.getSpuId()); - good.setGoodsIdType(1);//poi商品固定传1 - goods.add(good); - goodsCollect.put(good.getGoodsId(),collect.get(key)); + + 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()); @@ -134,12 +142,23 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen pageEntry.setPath(Constant.mainPageUrl); Map paramMap = new HashMap<>(); paramMap.put("type","dt"); + paramMap.put("tenantId",composeOrder.getTenantId()); paramMap.put("orderId",composeOrder.getMainOrderId()); 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()); @@ -150,26 +169,12 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen batchOrder.setExtParam(JSON.toJSONString(allExtParam)); wxBatchOrderMapper.updateById(batchOrder); - for (TtPayUnifiedOrderV2Result.ItemOrderInfo itemOrderInfo:orderV2.getItemOrderInfoList()) { - List wxOrders = goodsCollect.get(itemOrderInfo.getGoodsId()); - if(itemOrderInfo.getItemOrderDetail().size() == wxOrders.size()){ - for(int i=0;i payment = new HashMap(); payment.put("totalAmount",composeOrder.getPayment()); map.put("payment",payment); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java index 50ed78f5f..7a9c1e834 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/BaseWxPayAdapterService.java @@ -59,6 +59,17 @@ public class BaseWxPayAdapterService { @Autowired MaUtil maUtil; + + /** + * 做为支付的扩展数据 + * @param payOrder + * @return + */ + protected String getAttach(WxPayOrder payOrder) { + Map map = new HashMap<>(); + map.put("tenantId",payOrder.getTenantId()); + return JSON.toJSONString(map); + } protected String getMerchantUid(WxPayOrder payOrder,WxOrder order) { WxComposeChildOrderShare share = payOrder.getChildOrderShare(order.getId()); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/entity/SFTPayCommonMiniAppReq.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/entity/SFTPayCommonMiniAppReq.java index 9d547cd58..3900e412e 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/entity/SFTPayCommonMiniAppReq.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/entity/SFTPayCommonMiniAppReq.java @@ -9,6 +9,7 @@ public class SFTPayCommonMiniAppReq { private String sp_mchid;//服务商户号 private String sub_mchid;//二级商户号 private String description;//商品描述 + private String attach;// 附加数据 private String out_trade_no;//商户订单号 private String notify_url;//通知地址,不允许携带查询串 private SFTPaySettleReq settle_info;//结算信息 diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java index 1aae1f8c6..d23d65cb4 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java @@ -75,6 +75,7 @@ public class WxMiniAppPaySFTAdapterService extends BaseWxPaySFTAdapterService i }catch(Exception e) { req.setDescription("weixin miniApp product"); } + req.setAttach(getAttach(record)); req.setOut_trade_no(String.valueOf(composeOrder.getMainOrderId())); req.setNotify_url(payAccount.getPayNotifyV3Url()); @@ -104,6 +105,8 @@ public class WxMiniAppPaySFTAdapterService extends BaseWxPaySFTAdapterService i List suborders = new ArrayList(); for (WxOrder order : childOrders) { SFTCombineItemOrder so = new SFTCombineItemOrder(); + + String subMchId = getMerchantUid(record,order); so.initByWxOrder(payAccount, order, subMchId, appInfo, productName, String.valueOf(record.getId())); suborders.add(so); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java index 6d1a6f101..0438b5b62 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java @@ -68,6 +68,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayV2AdapterService implem wxPayOrderP.setMch_id(payAccount.getMchId()); wxPayOrderP.setNonce_str(noncestr); wxPayOrderP.setBody(productName); + wxPayOrderP.setAttach(getAttach(record)); wxPayOrderP.setOut_trade_no(record.getPayOrderNo()); wxPayOrderP.setTotal_fee(composeOrder.getPayment()); wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP @@ -143,6 +144,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayV2AdapterService implem wxPayOrderSP.setSub_mch_id(payAccount.getSubMchId()); wxPayOrderSP.setNonce_str(noncestr); wxPayOrderSP.setBody(productName); + wxPayOrderSP.setAttach(getAttach(record)); wxPayOrderSP.setOut_trade_no(record.getPayOrderNo()); wxPayOrderSP.setTotal_fee(composeOrder.getPayment().toString()); wxPayOrderSP.setSpbill_create_ip(record.getIp()); // 终端IP diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java index 9d7f35ebb..2969397e6 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java @@ -58,6 +58,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayV2AdapterService impleme wxPayOrderP.setDevice_info(bUserPhone); wxPayOrderP.setNonce_str(noncestr); wxPayOrderP.setBody(productName); + wxPayOrderP.setAttach(getAttach(record)); wxPayOrderP.setOut_trade_no(record.getPayOrderNo()); wxPayOrderP.setTotal_fee(record.getPayAmount()); wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP @@ -121,6 +122,7 @@ public class WxMiniMaPayAdapterService extends BaseWxPayV2AdapterService impleme wxPayOrderSP.setDevice_info(bUserPhone); wxPayOrderSP.setNonce_str(noncestr); wxPayOrderSP.setBody(productName); + wxPayOrderSP.setAttach(getAttach(record)); wxPayOrderSP.setOut_trade_no(record.getPayOrderNo()); wxPayOrderSP.setTotal_fee(record.getPayAmount()); wxPayOrderSP.setSpbill_create_ip(record.getIp()); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/entity/V3PayCommonMiniAppReq.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/entity/V3PayCommonMiniAppReq.java index e4b38a30f..a36ee504a 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/entity/V3PayCommonMiniAppReq.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/entity/V3PayCommonMiniAppReq.java @@ -11,6 +11,7 @@ public class V3PayCommonMiniAppReq { private String sub_mchid;//二级商户号 private String description;//商品描述 private String out_trade_no;//商户订单号 + private String attach;//附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段。 private String notify_url;//通知地址,不允许携带查询串 private V3PaySettleReq settle_info;//结算信息 private V3PayAmountReq amount;//订单金额 diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java index a073ffbc6..0cb39b026 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java @@ -92,6 +92,7 @@ public class WxMiniAppPayV3AdapterService extends BaseWxPayV3AdapterService impl req.setDescription("weixin miniApp product"); } req.setOut_trade_no(record.getPayOrderNo()); + req.setAttach(getAttach(record)); req.setNotify_url(payAccount.getPayNotifyV3Url()); V3PaySettleReq settle = new V3PaySettleReq(); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java index 265e06759..58d4d06d3 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java @@ -18,11 +18,12 @@ import com.iformall.enums.EnumPayType; import com.iformall.enums.EnumPayWay; import com.iformall.enums.EnumRefundStatus; import com.iformall.exception.MallinkException; -import com.iformall.mapper.WxAppinfoMapper; import com.iformall.mapper.WxPayAccountMapper; import com.iformall.mapper.WxPayOrderMapper; import com.iformall.mapper.WxRefundOrderMapper; +import com.iformall.service.WxAppinfoService; import com.iformall.service.WxOrderService; +import com.iformall.service.WxPayAccountService; import com.iformall.service.pay.service.refund.RefundPayAdapterService; import com.iformall.service.pay.service.refund.entity.RefundAdapterResult; import com.iformall.service.pay.service.refund.entity.RefundNotifyAdapterResult; @@ -45,6 +46,17 @@ public class TtRefundAdapterService implements RefundPayAdapterService{ @Autowired WxOrderService wxOrderService; + + /** + * 做为分账的扩展数据 + * @param + * @return + */ + protected String getCpExtra(WxRefundOrder record) { + Map map = new HashMap<>(); + map.put("tenantId",record.getTenantId()); + return JSON.toJSONString(map); + } @Override public RefundAdapterResult refund(WxPayAccount payAccount,WxAppinfo appInfo,WxRefundOrder record,WxPayOrder payOrder,Long orderId,EnumPayType payType) { @@ -54,10 +66,12 @@ public class TtRefundAdapterService implements RefundPayAdapterService{ TtPayRefundV2Request request = new TtPayRefundV2Request(); request.setOutOrderNo(payOrder.getPayOrderNo()); request.setOutRefundNo(record.getId().toString()); + request.setCpExtra(getCpExtra(record)); TtPayRefundV2Request.PageEntry pageEntry = new TtPayRefundV2Request.PageEntry(); pageEntry.setPath(Constant.mainPageUrl); Map paramMap = new HashMap<>(); paramMap.put("type","dt"); + paramMap.put("tenantId",payOrder.getTenantId()); paramMap.put("orderId",payOrder.getId()); pageEntry.setParams(JSON.toJSONString(paramMap)); request.setOrderEntrySchema(pageEntry); @@ -146,9 +160,9 @@ public class TtRefundAdapterService implements RefundPayAdapterService{ } @Autowired - WxAppinfoMapper wxAppinfoMapper; + WxAppinfoService wxAppinfoService; @Autowired - WxPayAccountMapper wxPayAccountMapper; + WxPayAccountService wxPayAccountService; @Autowired WxPayOrderMapper wxPayOrderMapper; @Autowired @@ -173,14 +187,21 @@ public class TtRefundAdapterService implements RefundPayAdapterService{ @Override public RefundNotifyAdapterResult notify(Map paramMap, EnumPayWay payWay) { log.info("TtRefundAdapterService notify{}"+paramMap); + String tenantId = paramMap.get("tenantId"); + /** + * + */ + String refundno = paramMap.get("cp_refundno"); + Long refundOrderId = Long.valueOf(refundno); + WxRefundOrder refundOrder = wxRefundOrderMapper.selectById(refundOrderId); String appId = paramMap.get("appid"); - WxAppinfo appinfo = wxAppinfoMapper.findByAppId(appId); + WxAppinfo appinfo = wxAppinfoService.getByAppIdFromRedis(appId,tenantId); if (appinfo == null) { log.error("未找到appid信息:" + appId); throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); } - WxPayAccount payAccount = wxPayAccountMapper.selectById(appinfo.getPayId()); + WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appinfo.getPayId()); if (payAccount == null) { log.error("未找到mch_id信息:" + appId); throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); @@ -189,9 +210,7 @@ public class TtRefundAdapterService implements RefundPayAdapterService{ log.error("notify refund, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); return notifyErrorResult("订单状态码非SUCCESS"); } - String refundno = paramMap.get("cp_refundno"); - Long refundOrderId = Long.valueOf(refundno); - WxRefundOrder refundOrder = wxRefundOrderMapper.selectById(refundOrderId); + // 验证退款金额 if (!paramMap.get("refund_amount").equals(refundOrder.getRefundFee().toString())) { log.error("notify refund, wxpay check refund_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/refund/wx/v2/WxRefundAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/refund/wx/v2/WxRefundAdapterService.java index 7511414c7..b047c3a5b 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/refund/wx/v2/WxRefundAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/refund/wx/v2/WxRefundAdapterService.java @@ -563,35 +563,38 @@ public class WxRefundAdapterService implements RefundPayAdapterService{ String req_info = CipherUtil.decryptReqInfo(paramMap.get("req_info"), partnerKey); Map reqMap = WxPayment.xmlToMap(req_info); - String payOrderNo = reqMap.get("out_trade_no"); - Long payOrderId = Long.valueOf(payOrderNo); - WxPayOrder payOrder = wxPayOrderMapper.selectById(payOrderId,payAccount.getTenantId()); - if (payOrder == null) { - log.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("支付订单不存在"); - } - // 验证支付金额 - if (!reqMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { - log.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("支付订单总金额不一致"); - } String refundIdStr = reqMap.get("out_refund_no"); Long refundOrderId = Long.valueOf(refundIdStr); WxRefundOrder refundOrder = wxRefundOrderMapper.selectById(refundOrderId); if (refundOrder == null) { - log.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("退款订单不存在"); + log.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); + return notifyErrorResult("退款订单不存在"); } // 验证支付金额 if (!reqMap.get("total_fee").equals(refundOrder.getTotalFee().toString())) { - log.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("订单总金额不一致"); + log.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); + return notifyErrorResult("订单总金额不一致"); } // 验证退款金额 if (!reqMap.get("refund_fee").equals(refundOrder.getRefundFee().toString())) { - log.warn("notify refund, wxpay check refund_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("退款总金额不一致"); + log.warn("notify refund, wxpay check refund_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); + return notifyErrorResult("退款总金额不一致"); + } + + + String payOrderNo = reqMap.get("out_trade_no"); + Long payOrderId = Long.valueOf(payOrderNo); + WxPayOrder payOrder = wxPayOrderMapper.selectById(payOrderId,refundOrder.getTenantId()); + if (payOrder == null) { + log.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); + return notifyErrorResult("支付订单不存在"); + } + // 验证支付金额 + if (!reqMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { + log.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); + return notifyErrorResult("支付订单总金额不一致"); } + // 处理支付成功 //handleRefundSuccess(refundOrder, reqMap.get("transaction_id"), reqMap.get("refund_id")); @@ -634,21 +637,6 @@ public class WxRefundAdapterService implements RefundPayAdapterService{ log.info(req_info); Map reqMap = WxPayment.xmlToMap(req_info); - String payOrderNo = reqMap.get("out_trade_no"); - if (payOrderNo == null) { - return notifySuccessResult(reqMap.get("transaction_id"), reqMap.get("refund_id"), null); - } - Long payOrderId = Long.valueOf(payOrderNo); - WxPayOrder payOrder = wxPayOrderMapper.selectById(payOrderId,payAccount.getTenantId()); - if (payOrder == null) { - log.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("支付订单不存在"); - } - // 验证支付金额 - if (!reqMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { - log.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("支付订单总金额不一致"); - } String refundIdStr = reqMap.get("out_refund_no"); Long refundOrderId = Long.valueOf(refundIdStr); WxRefundOrder refundOrder = wxRefundOrderMapper.selectById(refundOrderId); @@ -667,6 +655,23 @@ public class WxRefundAdapterService implements RefundPayAdapterService{ return notifyErrorResult("退款总金额不一致"); } + String payOrderNo = reqMap.get("out_trade_no"); + if (payOrderNo == null) { + return notifySuccessResult(reqMap.get("transaction_id"), reqMap.get("refund_id"), null); + } + Long payOrderId = Long.valueOf(payOrderNo); + WxPayOrder payOrder = wxPayOrderMapper.selectById(payOrderId,refundOrder.getTenantId()); + if (payOrder == null) { + log.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); + return notifyErrorResult("支付订单不存在"); + } + // 验证支付金额 + if (!reqMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { + log.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); + return notifyErrorResult("支付订单总金额不一致"); + } + + log.info("notify refund, wxpay checksign success, paramMap:{}, paramMap: " + reqMap.toString() + ", payWay:" + payWay.toString()); return notifySuccessResult(reqMap.get("transaction_id"), reqMap.get("refund_id"), refundOrder); } diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/share/PayShareBaseAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/share/PayShareBaseAdapterService.java index c767e1582..66dd0cb8a 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/share/PayShareBaseAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/share/PayShareBaseAdapterService.java @@ -1,6 +1,7 @@ package com.iformall.service.pay.service.share; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -12,6 +13,7 @@ import com.iformall.common.ErrorCode; import com.iformall.domain.dto.WxSharingOrderDto; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxPayAccount; +import com.iformall.domain.po.WxProfitSharingOrder; import com.iformall.domain.po.WxProfitSharingReceiver; import com.iformall.enums.EnumProfitSharingReceiverStatus; import com.iformall.enums.EnumProfitSharingReceiverType; diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java index f999dd01c..15d0f912e 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java @@ -77,7 +77,17 @@ public class TtPayShareService extends PayShareBaseAdapterService{ @Lazy @Autowired WxProfitSharingReceiverService wxProfitSharingReceiverService; - + + /** + * 做为分账的扩展数据 + * @param payOrder + * @return + */ + protected String getCpExtra(WxProfitSharingOrder record) { + Map map = new HashMap<>(); + map.put("tenantId",record.getTenantId()); + return JSON.toJSONString(map); + } @Override public Integer getSubsidyType() { @@ -109,6 +119,7 @@ public class TtPayShareService extends PayShareBaseAdapterService{ TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount); ProfitSharingRequest request = new ProfitSharingRequest(); request.setOutOrderNo(record.getOrderId().toString()); + request.setCpExtra(getCpExtra(record)); if(record.getOutSettleNo() == null){ record.setOutSettleNo(record.getId()); }else{ @@ -160,6 +171,7 @@ public class TtPayShareService extends PayShareBaseAdapterService{ TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount); ProfitSharingRequest request = new ProfitSharingRequest(); request.setOutOrderNo(record.getOrderId().toString()); + request.setCpExtra(getCpExtra(record)); if(record.getOutSettleNo() == null){ record.setOutSettleNo(record.getId()); }else{ diff --git a/mallinkService/src/main/java/com/iformall/service/util/CouponCacheUtils.java b/mallinkService/src/main/java/com/iformall/service/util/CouponCacheUtils.java index a9e97702d..8a93da213 100644 --- a/mallinkService/src/main/java/com/iformall/service/util/CouponCacheUtils.java +++ b/mallinkService/src/main/java/com/iformall/service/util/CouponCacheUtils.java @@ -1,6 +1,7 @@ package com.iformall.service.util; import java.util.List; +import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.core.RedisTemplate; @@ -8,6 +9,7 @@ import org.springframework.data.redis.core.RedisTemplate; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; +import com.iformall.domain.po.WxMall; import com.iformall.domain.vo.WxMerchantVo; import com.iformall.enums.EnumCacheKey; import com.iformall.utils.RedisCacheUtils; @@ -46,18 +48,18 @@ public class CouponCacheUtils { } public static void removeCouponMerchantCache(RedisTemplate template,Long couponId) { - String key = "couponMerchant:"+couponId; + String key = "couponMerchantNew:"+couponId; RedisCacheUtils.removeCache(template, key); } - public static void setCouponMerchantCache(RedisTemplate template,Long couponId,List merchantList) { - String key = "couponMerchant:"+couponId; + public static void setCouponMerchantCache(RedisTemplate template,Long couponId,Map> merchantList) { + String key = "couponMerchantNew:"+couponId; RedisCacheUtils.cache(template, key, merchantList, 24*3600); } - public static List getCouponMerchantCache(RedisTemplate template,Long couponId) { - String key = "couponMerchant:"+couponId; - return RedisCacheUtils.getCacheListObject(template, key,WxMerchantVo.class); + public static Map> getCouponMerchantCache(RedisTemplate template,Long couponId) { + String key = "couponMerchantNew:"+couponId; + return (Map>) RedisCacheUtils.getCacheMap(template, key); } public static void removeDouyinLivePageCache(RedisTemplate template,String tenantId,Integer targetAd,Integer bussiness) { diff --git a/mallinkService/src/main/java/com/iformall/utils/MaUtil.java b/mallinkService/src/main/java/com/iformall/utils/MaUtil.java index 8b71fcfe8..599e1b1ec 100644 --- a/mallinkService/src/main/java/com/iformall/utils/MaUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/MaUtil.java @@ -23,6 +23,7 @@ import com.iformall.douyin.web.api.TtWebService; import com.iformall.douyin.web.api.impl.TtWebServiceImpl; import com.iformall.douyin.web.config.TtWebDefaultConfigImpl; import com.iformall.douyin.web.enums.TtWebApiBeginEnum; +import com.iformall.mapper.WxAppinfoMapper; import com.iformall.service.WxAppinfoService; import lombok.extern.flogger.Flogger; import me.chanjar.weixin.common.error.WxErrorException; @@ -40,6 +41,9 @@ public class MaUtil { @Autowired private WxAppinfoService wxAppinfoService; + @Autowired + private WxAppinfoMapper wxAppinfoMapper; + private static Map serviceMap = new ConcurrentHashMap(); private static Map appServiceKeyMap = new ConcurrentHashMap(); @@ -230,14 +234,14 @@ public class MaUtil { try { String accessToken = ttMaService.getAccessToken(true); WxAppinfo updateApp = new WxAppinfo(); - updateApp.setId(wxAppinfo.getId()); + updateApp.setAppId(wxAppinfo.getAppId()); updateApp.setAccessToken(accessToken); updateApp.setLastTokenTime(new Date()); updateApp.setExpiresIn(7200); wxAppinfo.setAccessToken(updateApp.getAccessToken()); wxAppinfo.setLastTokenTime(updateApp.getLastTokenTime()); wxAppinfo.setExpiresIn(updateApp.getExpiresIn()); - wxAppinfoService.saveOrUpdate(updateApp); + wxAppinfoMapper.updateAccessToken(updateApp); } catch (WxErrorException e) { logger.error(e.getMessage()); diff --git a/mallinkService/src/main/resources/mapper/WxAppinfoMapper.xml b/mallinkService/src/main/resources/mapper/WxAppinfoMapper.xml index 1cd3622fe..b896b433b 100644 --- a/mallinkService/src/main/resources/mapper/WxAppinfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxAppinfoMapper.xml @@ -112,5 +112,15 @@ SELECT * FROM wx_appinfo WHERE `app_id` = #{appId} + + and `tenant_id` = #{tenantId} + + limit 1 + + + update wx_appinfo set + `access_token` = #{accessToken}, `last_token_time` = #{lastTokenTime}, `expires_in` = #{expiresIn} + where `app_id` = #{appId} + diff --git a/mallinkService/src/main/resources/mapper/WxBrandMapper.xml b/mallinkService/src/main/resources/mapper/WxBrandMapper.xml index 09697bebb..389362ce4 100644 --- a/mallinkService/src/main/resources/mapper/WxBrandMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBrandMapper.xml @@ -46,14 +46,13 @@ + + update wx_coupon_channel + set status=#{status}, update_date=#{updateDate} + where status != #{status} + and coupon_id = #{couponId} + and target_ad = #{targetAd} + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxCouponMallMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMallMapper.xml new file mode 100644 index 000000000..7b7e5e3f4 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxCouponMallMapper.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + `id`,`tenant_id`,`parent_tenant_id`,`product_id`,`mall_tenant_id`,`create_date`,`update_date`,`status` + + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + and `product_id` = #{productId} + + + + + and `mall_tenant_id` = #{mallTenantId} + + + + + and `create_date` = #{createDate} + + + + + and `update_date` = #{updateDate} + + + + + and `status` = #{status} + + + + + and id in + + #{idItem} + + + + and product_id in + + #{productIdItem} + + + + order by ${sortColumns} + + + + + + + + update wx_coupon_mall set status = #{status} where `product_id` = #{productId} + and `tenant_id` = #{tenantId} and `mall_tenant_id` = #{mallTenantId} + + + + delete from wx_coupon_mall where `product_id` = #{productId} and `tenant_id` = #{tenantId} + + diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 8298470e6..1ab55a626 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -6,6 +6,7 @@ + @@ -60,12 +61,19 @@ + + + + + + + @@ -115,7 +123,7 @@ - distinct c.`id`,c.`tenant_id`,c.`parent_tenant_id`,c.`make_merchant_id`,c.`type`,c.`cover_img`,c.`cover_picture`,c.`detail_picture`, + c.`id`,c.`tenant_id`,c.`parent_tenant_id`,c.`make_merchant_id`,c.`brand`,c.`type`,c.`cover_img`,c.`cover_picture`,c.`detail_picture`, c.`title`,c.`sub_title`,c.`item_group`,c.`sale_price`,c.`freight_price`,c.`use_price`,c.`use_limit_rule`,c.`use_limit_quantity`,c.`send_type`, c.`valid_type`,c.`valid_start_date`,c.`valid_end_date`,c.pick_start_date,c.pick_end_date,c.`valid_days`,c.`detail`,c.`price`,c.tail_price,c.orig_price,c.`unit`,c.`remain_inventory`,c.`inventory`, c.`remark`,c.`status`,c.`create_date`,c.`update_date`,c.`business`,c.`sub_business`,c.`support_transfer`,c.`subsidy_num`,c.`subsidy_type`, @@ -141,6 +149,14 @@ and `parent_tenant_id` = #{parentTenantId} + + and `make_merchant_id` = #{makeMerchantId} + + + + and `brand` = #{brand} + + and `type` = #{type} @@ -476,13 +492,6 @@ - where c.is_del = 0 - - and 0 = (select count(*) from wx_coupon_channel cc - where c.`id` = cc.coupon_id - and cc.status = 0 - and cc.target_ad = #{targetAd}) - and c.`id` = #{id} @@ -495,11 +504,6 @@ and c.`parent_tenant_id` = #{parentTenantId} - - - and c.`type` in (1,2,3,4,5,6,10,11,12,66) - - and c.`type` = #{type} @@ -647,14 +651,17 @@ and c.`merchant_type` = #{merchantType} - - and cm.`merchant_id` = #{merchantId} - - and JSON_CONTAINS(c.gift_list,json_array(#{giftList})) + + and 0 = (select count(*) from wx_coupon_channel cc + where c.`id` = cc.coupon_id + and cc.status = 0 + and cc.target_ad = #{targetAd}) + + and c.id in @@ -676,15 +683,34 @@ - order by ${sortColumns} select - count(distinct c.id) + count(c.id) from wx_coupon c - left join wx_coupon_merchant cm on c.id = cm.product_id and cm.status = 0 + + left join tt_coupon_channel_poi poi on poi.id = c.id + + where c.is_del = 0 + + + and poi.`spu_id` = #{spuId} + + + + and poi.`status` = #{poiStatus} + + + + and poi.`last_status` = #{lastStatus} + + @@ -1452,5 +1494,9 @@ where id = #{id} and tenant_id = #{tenantId} + + + update wx_coupon set make_merchant_id = #{makeMerchantId} where id = #{id} and tenant_id = #{tenantId} + diff --git a/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml index c271f8436..1aebd5e3a 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml @@ -14,7 +14,7 @@ - `id`,`product_id`,`merchant_id`,`parameter`,`create_date`,`update_date`,`status` + `id`,`tenant_id`,`parent_tenant_id`,`product_id`,`merchant_id`,`parameter`,`create_date`,`update_date`,`status` diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 5009dc81c..1e7ffa831 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -11,6 +11,7 @@ + @@ -40,7 +41,7 @@ - `id`,`tenant_id`,`parent_tenant_id`,`coupon_id`,`coupon_type`,`c_user_id`,`owner_id`,`b_user_id`,`b_merchant_id`,`order_id`,`expired_time`,`coupon_order_status`,`create_date`,`update_date`,`coupon_price`, `auto_refund`, + `id`,`tenant_id`,`parent_tenant_id`,`coupon_id`,`coupon_type`,`c_user_id`,`owner_id`,`b_user_id`,`b_merchant_id`,`b_tenant_id`,`order_id`,`expired_time`,`coupon_order_status`,`create_date`,`update_date`,`coupon_price`, `auto_refund`, `verify_type`,`verify_remark`,`pay_vendor`,`pay_version`,`send_merchant_id`,`send_merchant_user_id`,`compose_order_type`,`compose_order_id`,`parent_coupon_order_id`,`coupon_number`, `freight_price`,`shipping_type`,`shipping_address`,`shipping_status`,`delivery_info`,`subsidy`,`ext_param` @@ -77,6 +78,10 @@ and `b_merchant_id` = #{bMerchantId} + + + and `b_tenant_id` = #{bTenantId} + and `a_user_id` = #{aUserId} @@ -165,7 +170,7 @@ select from wx_coupon_order where tenant_id = #{tenantId} and coupon_type = 11 - and update_date < DATE_ADD(curdate(),interval 14 day) + and update_date < DATE_SUB(curdate(),interval 14 day) and shipping_type = 2 and shipping_status = 24 and coupon_order_status = 0 select - co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id,co.b_merchant_id, + co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id,co.b_merchant_id,co.b_tenant_id, co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark, co.pay_vendor,co.pay_version, co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`,co.ext_param FROM wx_coupon_order co @@ -867,7 +886,7 @@ select - co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id,co.b_merchant_id,co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark,co.pay_vendor, + co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id,co.b_merchant_id,co.b_tenant_id,co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark,co.pay_vendor, co.pay_version,co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`,co.ext_param from wx_coupon_order co where co.id = #{id} and co.tenant_id = #{tenantId} @@ -955,7 +974,7 @@ select - co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id,co.b_merchant_id,co.order_id,co.expired_time,co.coupon_order_status, + co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id,co.b_merchant_id,co.b_tenant_id,co.order_id,co.expired_time,co.coupon_order_status, co.create_date,co.update_date,co.coupon_price from wx_coupon_order co where co.id = #{id} and co.tenant_id = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index a4ad7b91b..0f115e92f 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -105,11 +105,11 @@ - INSERT INTO wx_coupon_password (`id`,`coupon_id`,`coupon_short`,`password`,`status`,`create_date`,`update_date`) + INSERT INTO wx_coupon_password (`id`,`tenant_id`,`parent_tenant_id`,`coupon_id`,`coupon_short`,`password`,`status`,`create_date`,`update_date`) VALUES ( - #{item.id},#{item.couponId},#{item.couponShort},#{item.password},#{item.status}, + #{item.id},#{item.tenantId},#{item.parentTenantId},#{item.couponId},#{item.couponShort},#{item.password},#{item.status}, #{item.createDate},#{item.updateDate} ) diff --git a/mallinkService/src/main/resources/mapper/WxMallMapper.xml b/mallinkService/src/main/resources/mapper/WxMallMapper.xml index 60eaab8e0..cce5879de 100644 --- a/mallinkService/src/main/resources/mapper/WxMallMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMallMapper.xml @@ -145,6 +145,20 @@ and `group_support` = #{groupSupport} + + and tenant_id in + + #{tIdItem} + + + + + and parent_tenant_id in + + #{ptIdItem} + + + and id in diff --git a/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml index ba745d56e..9db3cffde 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml @@ -155,7 +155,7 @@ mbu.tenant_id, mbu.parent_tenant_id, m.name tenant_name, mc.name merchant_name, mbu.id bu_user_id, mbu.merchant_id, mc.img_url from wx_merchant_b_user mbu, wx_merchant mc, wx_mall m - m.tenant_id = mbu.parent_tenant_id + m.tenant_id = mbu.tenant_id and mbu.merchant_id = mc.id and mc.status = 1 and mbu.`app_id` = #{appId} diff --git a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml index f0c4b050c..c224edefd 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml @@ -313,10 +313,34 @@ + + + + + update wx_merchant set credit_locked = #{creditLocked} where tenant_id = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxMerchantSubsidyMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantSubsidyMapper.xml index aa8f96abf..6b44b2ca9 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantSubsidyMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantSubsidyMapper.xml @@ -8,6 +8,7 @@ + @@ -26,7 +27,7 @@ - `id`,`tenant_id`,`parent_tenant_id`,`order_id`,`order_type`,`merchant_id`,`coupon_order_id`,`coupon_type`,`order_payment`,`receiver_payment`,`real_payment`,`subsidy`,`real_subsidy`,`status`,`create_date`,`update_date`,freeze,type,source,card_spend_list_show + `id`,`tenant_id`,`parent_tenant_id`,`order_id`,`order_type`,`merchant_id`,`b_tenant_id`,`coupon_order_id`,`coupon_type`,`order_payment`,`receiver_payment`,`real_payment`,`subsidy`,`real_subsidy`,`status`,`create_date`,`update_date`,freeze,type,source,card_spend_list_show @@ -48,7 +49,10 @@ and `merchant_id` = #{merchantId} - + + + and `b_tenant_id` = #{bTenantId} + and `coupon_order_id` = #{couponOrderId} @@ -131,6 +135,9 @@ and `merchant_id`=#{merchantId} + + and `b_tenant_id` = #{bTenantId} + and id in @@ -147,6 +154,7 @@ + @@ -177,7 +185,7 @@ - ms.`id`,ms.`tenant_id`,ms.`parent_tenant_id`,ms.`order_id`,ms.`order_type`,ms.`merchant_id`,ms.`coupon_order_id`,ms.`coupon_type`, + ms.`id`,ms.`tenant_id`,ms.`parent_tenant_id`,ms.`order_id`,ms.`order_type`,ms.`merchant_id`,ms.`b_tenant_id`,ms.`coupon_order_id`,ms.`coupon_type`, ms.`order_payment`,ms.`receiver_payment`,ms.`real_payment`, ms.`subsidy`,ms.`real_subsidy`,ms.`status`,ms.`create_date`,ms.`update_date`, c.`title`,c.`sub_title`,c.`unit`,m.`name`, @@ -203,6 +211,9 @@ and t.`merchant_id` = #{merchantId} + + and t.`b_tenant_id` = #{bTenantId} + and t.`coupon_order_id` = #{couponOrderId} @@ -271,6 +282,9 @@ and ms.`merchant_id` = #{merchantId} + + and ms.`b_tenant_id` = #{bTenantId} + and ms.`source` = #{source} @@ -314,6 +328,9 @@ and ms.`merchant_id` = #{merchantId} + + and ms.`b_tenant_id` = #{bTenantId} + and c.`title` like concat('%', #{title},'%') @@ -329,10 +346,5 @@ group by ms.`merchant_id` - - - - - - + diff --git a/mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml index 41d369547..5733c25b6 100644 --- a/mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml @@ -7,8 +7,10 @@ + + @@ -30,7 +32,7 @@ - `id`,`tenant_id`,`parent_tenant_id`,`out_settle_no`,`merchant_id`,`pay_merchant_id`,`pay_merchant_mch_id`,`order_id`,`pay_vendor`,`pay_version`,`mch_type`,`pay_amount`, + `id`,`tenant_id`,`parent_tenant_id`,`out_settle_no`,`merchant_id`,`b_tenant_id`,`pay_merchant_id`,`pay_merchant_mch_id`,`sharing_merchant_id`,`order_id`,`pay_vendor`,`pay_version`,`mch_type`,`pay_amount`, `single_order_amount`,`single_order_id`,`pay_time_end`,`pay_time_start`,`transaction_id`,`sharing_order_no`,`type`,`point_deduction`,`receivers`,`error_msg`,`sharing_status`,`update_time`,`create_time` @@ -54,14 +56,22 @@ and `merchant_id` = #{merchantId} + + and `b_tenant_id` = #{bTenantId} + + and `pay_merchant_id` = #{payMerchantId} and `pay_merchant_mch_id` = #{payMerchantMchId} - - + + + + and `sharing_merchant_id` = #{sharingMerchantId} + + and `order_id` = #{orderId} @@ -144,18 +154,19 @@ from wx_profit_sharing_order - - - + + + + @@ -172,10 +183,13 @@ +