Просмотр исходного кода

merge develop

release_toaliyun_real
xiaohanzi 6 лет назад
Родитель
Сommit
1c2583a5b5
100 измененных файлов: 1599 добавлений и 323 удалений
  1. +1
    -0
      mallinkAdmin/src/main/java/com/iformall/config/MyBatisConfiguration.java
  2. +2
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java
  3. +2
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMallController.java
  4. +1
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantBUserController.java
  5. +2
    -5
      mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java
  6. +1
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantShopController.java
  7. +1
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/car/WxCarController.java
  8. +3
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java
  9. +11
    -10
      mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java
  10. +5
    -5
      mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxChartDataController.java
  11. +1
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxMerchantTradeDailyController.java
  12. +5
    -5
      mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxUserStructureController.java
  13. +8
    -6
      mallinkAdmin/src/main/java/com/iformall/controller/device/KwMeterController.java
  14. +1
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/device/WxScreenAdController.java
  15. +2
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java
  16. +1
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxFloatingLayerController.java
  17. +2
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxQuestionController.java
  18. +6
    -7
      mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java
  19. +10
    -4
      mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserDataController.java
  20. +3
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCreditHistoryController.java
  21. +13
    -3
      mallinkAdmin/src/main/java/com/iformall/controller/mem/WxScoreRulesController.java
  22. +1
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java
  23. +1
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgModelController.java
  24. +1
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgRecordController.java
  25. +2
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgSignatureController.java
  26. +6
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgValidationcodeController.java
  27. +3
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillAllController.java
  28. +1
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillDailyController.java
  29. +1
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillOtherController.java
  30. +1
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillOtherDepositController.java
  31. +45
    -3
      mallinkAdmin/src/main/java/com/iformall/controller/sys/HomeController.java
  32. +8
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java
  33. +6
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/sys/UploadController.java
  34. +68
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/sys/WechatLoginController.java
  35. +5
    -1
      mallinkAdmin/src/main/java/com/iformall/shiro/MyShiroRealm.java
  36. +2
    -0
      mallinkAdmin/src/main/java/com/iformall/shiro/UserSession.java
  37. +85
    -1
      mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java
  38. +9
    -3
      mallinkAdmin/src/main/java/com/iformall/ueditor/upload/Uploader.java
  39. +2
    -2
      mallinkAdmin/src/main/resources/application-dev.yml
  40. +0
    -1
      mallinkAdmin/src/main/resources/application-prod.yml
  41. +0
    -1
      mallinkAdmin/src/main/resources/application-test.yml
  42. +516
    -0
      mallinkAdmin/src/main/resources/db/migration/V201911060800__GROUP_SUPPORT.sql
  43. +2
    -0
      mallinkAdmin/src/main/resources/db/migration/V201911082100__GROUP_MENU.sql
  44. +3
    -0
      mallinkAdmin/src/main/resources/db/migration/V201911121100__GROUP_MENU.sql
  45. +1
    -0
      mallinkBApi/src/main/java/com/iformall/config/MyBatisConfiguration.java
  46. +2
    -0
      mallinkBApi/src/main/java/com/iformall/controller/BaseController.java
  47. +1
    -12
      mallinkBApi/src/main/java/com/iformall/controller/PosController.java
  48. +5
    -1
      mallinkBApi/src/main/java/com/iformall/controller/UploadController.java
  49. +4
    -4
      mallinkBApi/src/main/java/com/iformall/controller/WxCUserController.java
  50. +8
    -2
      mallinkBApi/src/main/java/com/iformall/controller/WxCouponSendController.java
  51. +1
    -0
      mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java
  52. +27
    -4
      mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java
  53. +14
    -5
      mallinkBApi/src/main/java/com/iformall/controller/WxMallController.java
  54. +112
    -37
      mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java
  55. +4
    -0
      mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java
  56. +8
    -3
      mallinkBApi/src/main/java/com/iformall/controller/WxMsgValidationcodeController.java
  57. +78
    -0
      mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java
  58. +2
    -3
      mallinkBApi/src/main/resources/application-dev.yml
  59. +0
    -1
      mallinkBApi/src/main/resources/application-prod.yml
  60. +0
    -1
      mallinkBApi/src/main/resources/application-test.yml
  61. +1
    -0
      mallinkCApi/src/main/java/com/iformall/config/MyBatisConfiguration.java
  62. +9
    -1
      mallinkCApi/src/main/java/com/iformall/controller/BaseController.java
  63. +21
    -4
      mallinkCApi/src/main/java/com/iformall/controller/UploadController.java
  64. +1
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxActivityJoinController.java
  65. +2
    -2
      mallinkCApi/src/main/java/com/iformall/controller/WxCampaignController.java
  66. +31
    -31
      mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java
  67. +1
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxMallController.java
  68. +7
    -2
      mallinkCApi/src/main/java/com/iformall/controller/WxMerchantController.java
  69. +0
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxParkController.java
  70. +2
    -3
      mallinkCApi/src/main/java/com/iformall/controller/WxQuestionController.java
  71. +110
    -21
      mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
  72. +3
    -0
      mallinkCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java
  73. +84
    -0
      mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java
  74. +2
    -3
      mallinkCApi/src/main/resources/application-dev.yml
  75. +0
    -1
      mallinkCApi/src/main/resources/application-prod.yml
  76. +0
    -1
      mallinkCApi/src/main/resources/application-test.yml
  77. +38
    -26
      mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarETCPCallBackController.java
  78. +1
    -0
      mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java
  79. +3
    -2
      mallinkCallback/src/main/java/com/iformall/controller/device/WxDeviceScreenAdController.java
  80. +1
    -1
      mallinkCallback/src/main/java/com/iformall/shiro/MyShiroRealm.java
  81. +2
    -2
      mallinkCallback/src/main/resources/application-dev.yml
  82. +0
    -1
      mallinkCallback/src/main/resources/application-prod.yml
  83. +0
    -1
      mallinkCallback/src/main/resources/application-test.yml
  84. +2
    -3
      mallinkMQConsumer/src/main/resources/application-dev.yml
  85. +0
    -1
      mallinkMQConsumer/src/main/resources/application-prod.yml
  86. +0
    -1
      mallinkMQConsumer/src/main/resources/application-test.yml
  87. +110
    -49
      mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java
  88. +6
    -3
      mallinkPosApi/src/main/resources/application-dev.yml
  89. +0
    -1
      mallinkPosApi/src/main/resources/application-prod.yml
  90. +0
    -1
      mallinkPosApi/src/main/resources/application-test.yml
  91. +1
    -1
      mallinkPosApi/src/test/java/com/iformall/pos/test/PosAppTest.java
  92. +4
    -0
      mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java
  93. +10
    -0
      mallinkSchedule/src/main/java/com/iformall/schedule/ChartDataSchedule.java
  94. +5
    -1
      mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java
  95. +2
    -2
      mallinkSchedule/src/main/resources/application-dev.yml
  96. +0
    -1
      mallinkSchedule/src/main/resources/application-test.yml
  97. +1
    -0
      mallinkService/src/main/java/com/iformall/common/ErrorCode.java
  98. +15
    -1
      mallinkService/src/main/java/com/iformall/domain/po/MallUserInfo.java
  99. +4
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxAppinfo.java
  100. +4
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxAuthorizerInfo.java

+ 1
- 0
mallinkAdmin/src/main/java/com/iformall/config/MyBatisConfiguration.java Просмотреть файл

@@ -19,6 +19,7 @@ public class MyBatisConfiguration {
MultiTenancy multiTenancy = new MultiTenancy(); MultiTenancy multiTenancy = new MultiTenancy();
Properties properties = new Properties(); Properties properties = new Properties();
properties.setProperty("tenantIdColumn", "tenant_id"); properties.setProperty("tenantIdColumn", "tenant_id");
properties.setProperty("subTenantIdColumn", "sub_tenant_id");
properties.setProperty("dialect", "mysql"); properties.setProperty("dialect", "mysql");
properties.setProperty("tenantInfo", "com.iformall.tenant.TenantInfoImpl"); properties.setProperty("tenantInfo", "com.iformall.tenant.TenantInfoImpl");
multiTenancy.setProperties(properties); multiTenancy.setProperties(properties);


+ 2
- 0
mallinkAdmin/src/main/java/com/iformall/controller/base/BaseController.java Просмотреть файл

@@ -66,8 +66,10 @@ public class BaseController {
public TenantEntity getTenantInfo(){ public TenantEntity getTenantInfo(){
Session session = SecurityUtils.getSubject().getSession(); Session session = SecurityUtils.getSubject().getSession();
String tenantId = (String)session.getAttribute(UserSession.tenantId); String tenantId = (String)session.getAttribute(UserSession.tenantId);
String subTenantId = (String)session.getAttribute(UserSession.subTenantId);
TenantEntity tenantEntity = new TenantEntity(){{ TenantEntity tenantEntity = new TenantEntity(){{
setTenantId(tenantId); setTenantId(tenantId);
setSubTenantId(subTenantId);
}}; }};
return tenantEntity; return tenantEntity;
} }


+ 2
- 2
mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMallController.java Просмотреть файл

@@ -33,7 +33,7 @@ public class WxMallController extends BaseController {
@SystemControllerLog(description = "商城-查询") @SystemControllerLog(description = "商城-查询")
public ResultData mallinfoExt() { public ResultData mallinfoExt() {
logger.debug("[" + getIpAddr() + "] WxMallController::mallinfoExt"); logger.debug("[" + getIpAddr() + "] WxMallController::mallinfoExt");
return new ResultData(wxMallService.getByTenantIdExt(getTenantId()));
return new ResultData(wxMallService.getByTenantInfoExt(getTenantInfo()));
} }


@ApiOperation("查询当前mall的信息") @ApiOperation("查询当前mall的信息")
@@ -41,7 +41,7 @@ public class WxMallController extends BaseController {
@SystemControllerLog(description = "商城-当前查询") @SystemControllerLog(description = "商城-当前查询")
public ResultData mallinfo() { public ResultData mallinfo() {
logger.debug("[" + getIpAddr() + "] WxMallController::mallinfo"); logger.debug("[" + getIpAddr() + "] WxMallController::mallinfo");
return new ResultData(wxMallService.getByTenantId(getTenantId()));
return new ResultData(wxMallService.getByTenantInfo(getTenantInfo()));
} }






+ 1
- 1
mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantBUserController.java Просмотреть файл

@@ -22,7 +22,7 @@ public class WxMerchantBUserController extends BaseController {
@ApiOperation("手机号是否存在") @ApiOperation("手机号是否存在")
@GetMapping("/hasphone") @GetMapping("/hasphone")
@ApiImplicitParam(name = "phone", value = "phone", dataType = "String", paramType = "query", required = true) @ApiImplicitParam(name = "phone", value = "phone", dataType = "String", paramType = "query", required = true)
public ResultData hasphone(String phone) {
public ResultData hasPhone(String phone) {
logger.debug("[" + getIpAddr() + "] WxMerchantBUserController::hasphone"); logger.debug("[" + getIpAddr() + "] WxMerchantBUserController::hasphone");
boolean has = wxMerchantBUserService.hasPhone(getTenantInfo(), phone); boolean has = wxMerchantBUserService.hasPhone(getTenantInfo(), phone);
return new ResultData(Result.SUCCESS, "查询成功", has); return new ResultData(Result.SUCCESS, "查询成功", has);


+ 2
- 5
mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java Просмотреть файл

@@ -14,7 +14,7 @@ import com.iformall.domain.vo.WxMerchantTradeVo;
import com.iformall.domain.vo.WxMerchantVo; import com.iformall.domain.vo.WxMerchantVo;
import com.iformall.service.QrCodeService; import com.iformall.service.QrCodeService;
import com.iformall.service.WxMerchantService; import com.iformall.service.WxMerchantService;
import com.iformall.service.WxScoreRulesService;
import com.iformall.utils.Constant;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@@ -40,8 +40,6 @@ public class WxMerchantController extends BaseController {
private WxMerchantService wxMerchantService; private WxMerchantService wxMerchantService;
@Autowired @Autowired
private QrCodeService qrCodeService; private QrCodeService qrCodeService;
@Autowired
private WxScoreRulesService wxScoreRulesService;


@UserDataRuleAnnotation("merchant_list") @UserDataRuleAnnotation("merchant_list")
@ApiOperation("分页列表接口") @ApiOperation("分页列表接口")
@@ -124,12 +122,11 @@ public class WxMerchantController extends BaseController {
public ResultData addMerchant(@RequestBody WxMerchant wxMerchant) { public ResultData addMerchant(@RequestBody WxMerchant wxMerchant) {
logger.debug("[" + getIpAddr() + "] WxMerchantController::addMerchant"); logger.debug("[" + getIpAddr() + "] WxMerchantController::addMerchant");
wxMerchant.updateTenantInfo(getTenantInfo()); wxMerchant.updateTenantInfo(getTenantInfo());

ResultData resultData = wxMerchantService.addMerchant(wxMerchant, getUserId()); ResultData resultData = wxMerchantService.addMerchant(wxMerchant, getUserId());


if(resultData.code == 200){ if(resultData.code == 200){
//加载二维码图片 //加载二维码图片
String pageUrl = "pages/index/index";
String pageUrl = Constant.mainPageUrl;
String param = "t:md:"+resultData.data; String param = "t:md:"+resultData.data;
ResultData resultQrCode = qrCodeService.uploadQrcode(wxMerchant,1,pageUrl,param,0,"","","店铺详情"); ResultData resultQrCode = qrCodeService.uploadQrcode(wxMerchant,1,pageUrl,param,0,"","","店铺详情");
Map<String,String> map = (Map)resultQrCode.data; Map<String,String> map = (Map)resultQrCode.data;


+ 1
- 0
mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantShopController.java Просмотреть файл

@@ -32,6 +32,7 @@ public class WxMerchantShopController extends BaseController {
public ResultData queryShopList(@ModelAttribute WxMerchantShop wxMerchantShop, Integer pageNum, Integer pageSize) { public ResultData queryShopList(@ModelAttribute WxMerchantShop wxMerchantShop, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] WxMerchantShopController::queryShopList"); logger.debug("[" + getIpAddr() + "] WxMerchantShopController::queryShopList");
if (null == wxMerchantShop) wxMerchantShop = new WxMerchantShop(); if (null == wxMerchantShop) wxMerchantShop = new WxMerchantShop();
wxMerchantShop.updateTenantInfo(getTenantInfo());
final PageInfo<WxShop> page = wxMerchantShopService.queryShopList(wxMerchantShop, pageNum, pageSize); final PageInfo<WxShop> page = wxMerchantShopService.queryShopList(wxMerchantShop, pageNum, pageSize);
return new ResultData(page); return new ResultData(page);
} }


+ 1
- 1
mallinkAdmin/src/main/java/com/iformall/controller/car/WxCarController.java Просмотреть файл

@@ -226,7 +226,7 @@ public class WxCarController extends BaseController {
} }
} }
// check End // check End
coupon.updateTenantInfo(getTenantInfo());
coupon.updateTenantInfo(tenantEntity);


ResultData resultData = wxCouponService.saveOrUpdate(coupon); ResultData resultData = wxCouponService.saveOrUpdate(coupon);
if (resultData.code != ResultData.SUCCESS){ if (resultData.code != ResultData.SUCCESS){


+ 3
- 2
mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java Просмотреть файл

@@ -35,6 +35,8 @@ import java.util.Map;
@RestController @RestController
@RequestMapping("wxPropertyContract") @RequestMapping("wxPropertyContract")
public class WxPropertyContractController extends BaseController { public class WxPropertyContractController extends BaseController {
private Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired @Autowired
private WxPropertyContractService wxPropertyContractService; private WxPropertyContractService wxPropertyContractService;
@Autowired @Autowired
@@ -44,8 +46,6 @@ public class WxPropertyContractController extends BaseController {
@Autowired @Autowired
private WxRentPropertyContractService wxRentPropertyContractService; private WxRentPropertyContractService wxRentPropertyContractService;


private Logger logger = LoggerFactory.getLogger(WxPropertyContractController.class);

@UserDataRuleAnnotation("property_contract_list") @UserDataRuleAnnotation("property_contract_list")
@GetMapping("/list") @GetMapping("/list")
@ApiImplicitParams({ @ApiImplicitParams({
@@ -186,6 +186,7 @@ public class WxPropertyContractController extends BaseController {
@SystemControllerLog(description = "物业合同-终止合同") @SystemControllerLog(description = "物业合同-终止合同")
public ResultData endContract(@RequestBody WxPropertyContract wxPropertyContract) { public ResultData endContract(@RequestBody WxPropertyContract wxPropertyContract) {
logger.debug("[" + getIpAddr() + "] WxRentContractController::endContract"); logger.debug("[" + getIpAddr() + "] WxRentContractController::endContract");
wxPropertyContract.updateTenantInfo(getTenantInfo());
wxPropertyContractService.endContract(wxPropertyContract); wxPropertyContractService.endContract(wxPropertyContract);
return new ResultData(); return new ResultData();
} }


+ 11
- 10
mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java Просмотреть файл

@@ -173,23 +173,23 @@ public class WxRentContractController extends BaseController {


@PostMapping("update") @PostMapping("update")
@SystemControllerLog(description = "租赁合同-更新") @SystemControllerLog(description = "租赁合同-更新")
public ResultData update(@RequestBody WxRentContract wxRentContract) {
public ResultData update(@RequestBody WxRentContract rentContract) {
logger.debug("[" + getIpAddr() + "] WxRentContractController::update"); logger.debug("[" + getIpAddr() + "] WxRentContractController::update");


if(StringUtils.isBlank(wxRentContract.getBusDiscountRatio())){
wxRentContract.setBusDiscountTime(new Integer(0));
if(StringUtils.isBlank(rentContract.getBusDiscountRatio())){
rentContract.setBusDiscountTime(new Integer(0));
} }
MallUserInfo user = getUser(); MallUserInfo user = getUser();
wxRentContract.updateTenantInfo(user);
wxRentContract.setAdjustPeriodHandle();
wxRentContract.setRentPriceHandle();
Date oldDate = wxRentContract.getRentalStartDate();
if(wxRentContract.getRentStartType()!=null && wxRentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){
wxRentContract.setRentalStartDate(wxRentContract.getStartDate());
rentContract.updateTenantInfo(user);
rentContract.setAdjustPeriodHandle();
rentContract.setRentPriceHandle();
Date oldDate = rentContract.getRentalStartDate();
if(rentContract.getRentStartType()!=null && rentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){
rentContract.setRentalStartDate(rentContract.getStartDate());
} }
ResultData update = null; ResultData update = null;
try { try {
update = wxRentContractService.update(wxRentContract, user.getId(), user.getName(), EnumFromType.OTHER.getCode(), oldDate);
update = wxRentContractService.update(rentContract, user.getId(), user.getName(), EnumFromType.OTHER.getCode(), oldDate);
} catch (MallinkException e) { } catch (MallinkException e) {
return new ResultData(ErrorCode.SYS_SERVER_ERROR); return new ResultData(ErrorCode.SYS_SERVER_ERROR);
} }
@@ -387,6 +387,7 @@ public class WxRentContractController extends BaseController {
@SystemControllerLog(description = "租赁合同-终止合同") @SystemControllerLog(description = "租赁合同-终止合同")
public ResultData endContract(@RequestBody WxRentContract wxRentContract) { public ResultData endContract(@RequestBody WxRentContract wxRentContract) {
logger.debug("[" + getIpAddr() + "] WxRentContractController::endContract"); logger.debug("[" + getIpAddr() + "] WxRentContractController::endContract");
wxRentContract.updateTenantInfo(getTenantInfo());
wxRentContractService.endContract(wxRentContract); wxRentContractService.endContract(wxRentContract);
return new ResultData(); return new ResultData();
} }


+ 5
- 5
mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxChartDataController.java Просмотреть файл

@@ -3,6 +3,7 @@ package com.iformall.controller.datatower;
import com.iformall.annotation.SystemControllerLog; import com.iformall.annotation.SystemControllerLog;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController; import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.service.WxChartDataService; import com.iformall.service.WxChartDataService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@@ -11,10 +12,7 @@ import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;


import java.util.Map; import java.util.Map;


@@ -72,7 +70,9 @@ public class WxChartDataController extends BaseController {
public ResultData queryData(@RequestParam Map<String, String> params) { public ResultData queryData(@RequestParam Map<String, String> params) {
String chart = params.get("chart"); String chart = params.get("chart");
logger.info("[" + getIpAddr() + "] WxChartDataController::queryData chart: " + chart); logger.info("[" + getIpAddr() + "] WxChartDataController::queryData chart: " + chart);
params.put("tenantId",super.getTenantId());
TenantEntity tenantEntity = getTenantInfo();
params.put("tenantId",tenantEntity.getTenantId());
params.put("subTenantId", tenantEntity.getSubTenantId());
ResultData data = wxChartDataService.queryData(params); ResultData data = wxChartDataService.queryData(params);
logger.info("[" + getIpAddr() + "] WxChartDataController::queryData chart: " + chart + " end"); logger.info("[" + getIpAddr() + "] WxChartDataController::queryData chart: " + chart + " end");
return data; return data;


+ 1
- 0
mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxMerchantTradeDailyController.java Просмотреть файл

@@ -57,6 +57,7 @@ public class WxMerchantTradeDailyController extends BaseController {
@SystemControllerLog(description = "商户解单-数据汇总") @SystemControllerLog(description = "商户解单-数据汇总")
public ResultData summary(@ModelAttribute WxMerchantTradeDaily wxMerchantTradeDaily) { public ResultData summary(@ModelAttribute WxMerchantTradeDaily wxMerchantTradeDaily) {
logger.debug("[" + getIpAddr() + "] WxMerchantTradeDailyController::summary"); logger.debug("[" + getIpAddr() + "] WxMerchantTradeDailyController::summary");
wxMerchantTradeDaily.updateTenantInfo(getTenantInfo());
return wxMerchantTradeDailyService.summary(wxMerchantTradeDaily); return wxMerchantTradeDailyService.summary(wxMerchantTradeDaily);
} }




+ 5
- 5
mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxUserStructureController.java Просмотреть файл

@@ -294,12 +294,12 @@ public class WxUserStructureController extends BaseController {
public ResultData findUserCount(Date startTime, Date endTime, Integer reportType) { public ResultData findUserCount(Date startTime, Date endTime, Integer reportType) {
logger.debug("[" + getIpAddr() + "] WxUserStructureController::findUserCount"); logger.debug("[" + getIpAddr() + "] WxUserStructureController::findUserCount");


TenantEntity tenantEntity = getTenantInfo();
//昨日同比 //昨日同比
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();


WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto();
dto.updateTenantInfo(getTenantInfo());
dto.updateTenantInfo(tenantEntity);
dto.setEndTime(new Date()); dto.setEndTime(new Date());
//微信用户数据 //微信用户数据
long wxTotalCount = wxCUserService.findCount(dto);//总量 long wxTotalCount = wxCUserService.findCount(dto);//总量
@@ -352,7 +352,7 @@ public class WxUserStructureController extends BaseController {
reportType = EnumUserCountReportType.DAY.getCode(); reportType = EnumUserCountReportType.DAY.getCode();
} }


dto.updateTenantInfo(getTenantInfo());
dto.updateTenantInfo(tenantEntity);
dto.setStartTime(startTime); dto.setStartTime(startTime);
dto.setEndTime(endTime); dto.setEndTime(endTime);
dto.setReportType(reportType); dto.setReportType(reportType);
@@ -424,7 +424,7 @@ public class WxUserStructureController extends BaseController {
&& wxCountList.get(0).getTotalCount() != null && wxCountList.get(0).getTotalCount() != null
&& wxCountList.get(0).getTotalCount() == 0) { && wxCountList.get(0).getTotalCount() == 0) {
WxCUserBasicInfoDto pdto = new WxCUserBasicInfoDto(); WxCUserBasicInfoDto pdto = new WxCUserBasicInfoDto();
pdto.updateTenantInfo(getTenantInfo());
pdto.updateTenantInfo(tenantEntity);
pdto.setEndTime(startTime); pdto.setEndTime(startTime);
wxCountList.get(0).setTotalCount(wxCUserService.findCount(pdto)); wxCountList.get(0).setTotalCount(wxCUserService.findCount(pdto));
} }
@@ -440,7 +440,7 @@ public class WxUserStructureController extends BaseController {
&& memCountList.get(0).getTotalCount() != null && memCountList.get(0).getTotalCount() != null
&& memCountList.get(0).getTotalCount() == 0) { && memCountList.get(0).getTotalCount() == 0) {
WxCUserBasicInfoDto pdto = new WxCUserBasicInfoDto(); WxCUserBasicInfoDto pdto = new WxCUserBasicInfoDto();
pdto.updateTenantInfo(getTenantInfo());
pdto.updateTenantInfo(tenantEntity);
pdto.setEndTime(startTime); pdto.setEndTime(startTime);
memCountList.get(0).setTotalCount(wxCUserBasicInfoService.findCount(pdto)); memCountList.get(0).setTotalCount(wxCUserBasicInfoService.findCount(pdto));
} }


+ 8
- 6
mallinkAdmin/src/main/java/com/iformall/controller/device/KwMeterController.java Просмотреть файл

@@ -149,14 +149,14 @@ public class KwMeterController extends BaseController {
} }




private KwBox addOrBind(KwBox kwBox) {
private KwBox addOrBind(KwBox kwBox, TenantEntity tenantEntity) {


KwBox record = new KwBox(); KwBox record = new KwBox();
record.setImei(kwBox.getImei()); record.setImei(kwBox.getImei());
record.setStatus(EnumBoxStatus.VALID.getCode()); record.setStatus(EnumBoxStatus.VALID.getCode());
List<KwBox> list = kwBoxService.findList(record); List<KwBox> list = kwBoxService.findList(record);
if (list.size() > 0) return list.get(0); if (list.size() > 0) return list.get(0);
kwBox.updateTenantInfo(getTenantInfo());
kwBox.updateTenantInfo(tenantEntity);
kwBox.setStatus(EnumBoxStatus.VALID.getCode()); kwBox.setStatus(EnumBoxStatus.VALID.getCode());
kwBoxService.saveOrUpdate(kwBox); kwBoxService.saveOrUpdate(kwBox);
return kwBox; return kwBox;
@@ -177,9 +177,9 @@ public class KwMeterController extends BaseController {
kwMerchantMeterService.saveOrUpdate(kwMerchantMeter); kwMerchantMeterService.saveOrUpdate(kwMerchantMeter);
} }


private void addOrUpdate(KwMeter kwMeter) {
private void addOrUpdate(KwMeter kwMeter, TenantEntity tenantEntity) {
KwMeter record = new KwMeter(); KwMeter record = new KwMeter();
record.updateTenantInfo(getTenantInfo());
record.updateTenantInfo(tenantEntity);
record.setAddress(kwMeter.getAddress()); record.setAddress(kwMeter.getAddress());
record.setStatus(EnumMeterStatus.VALID.getCode()); record.setStatus(EnumMeterStatus.VALID.getCode());
List<KwMeter> kwMeters = kwMeterService.findList(record); List<KwMeter> kwMeters = kwMeterService.findList(record);
@@ -196,6 +196,8 @@ public class KwMeterController extends BaseController {
return new ResultData(ErrorCode.EXCEL_IMPORT_ERROR); return new ResultData(ErrorCode.EXCEL_IMPORT_ERROR);
} }


TenantEntity tenantEntity = getTenantInfo();

try { try {
XSSFWorkbook workbook = new XSSFWorkbook(mFile.getInputStream()); XSSFWorkbook workbook = new XSSFWorkbook(mFile.getInputStream());
XSSFSheet sheet = workbook.getSheetAt(0); XSSFSheet sheet = workbook.getSheetAt(0);
@@ -234,7 +236,7 @@ public class KwMeterController extends BaseController {
String imei = c.getStringCellValue(); String imei = c.getStringCellValue();
KwBox kwBox = new KwBox(); KwBox kwBox = new KwBox();
kwBox.setImei(imei); kwBox.setImei(imei);
kwBox = addOrBind(kwBox);
kwBox = addOrBind(kwBox, tenantEntity);
kwMeter.setBindStatus(EnumMeterBindStatus.BIND.getCode()); kwMeter.setBindStatus(EnumMeterBindStatus.BIND.getCode());
kwMeter.setBoxId(kwBox.getId()); kwMeter.setBoxId(kwBox.getId());
} else { } else {
@@ -243,7 +245,7 @@ public class KwMeterController extends BaseController {
} }
kwMeter.setStatus(EnumMeterStatus.VALID.getCode()); kwMeter.setStatus(EnumMeterStatus.VALID.getCode());
kwMeter.setOnlineStatus(EnumMeterOnlineStatus.OFFLINE.getCode()); kwMeter.setOnlineStatus(EnumMeterOnlineStatus.OFFLINE.getCode());
addOrUpdate(kwMeter);
addOrUpdate(kwMeter, tenantEntity);


c = row.getCell(7,Row.MissingCellPolicy.RETURN_BLANK_AS_NULL); c = row.getCell(7,Row.MissingCellPolicy.RETURN_BLANK_AS_NULL);
if (c != null && c.getCellType() == CellType.STRING ) { if (c != null && c.getCellType() == CellType.STRING ) {


+ 1
- 1
mallinkAdmin/src/main/java/com/iformall/controller/device/WxScreenAdController.java Просмотреть файл

@@ -44,8 +44,8 @@ public class WxScreenAdController extends BaseController {
@SystemControllerLog(description = "广告屏-广告列表") @SystemControllerLog(description = "广告屏-广告列表")
public Result list(@ModelAttribute WxScreenAd wxScreenAd, Integer pageNum, Integer pageSize) { public Result list(@ModelAttribute WxScreenAd wxScreenAd, Integer pageNum, Integer pageSize) {
if (wxScreenAd == null) wxScreenAd = new WxScreenAd(); if (wxScreenAd == null) wxScreenAd = new WxScreenAd();
wxScreenAd.updateTenantInfo(getTenantInfo());
wxScreenAd.setStatus(EnumScreenAdStatus.VALID.getCode()); wxScreenAd.setStatus(EnumScreenAdStatus.VALID.getCode());
wxScreenAd.updateTenantInfo(getTenantInfo());
return new ResultData(wxScreenAdService.listAsPage(wxScreenAd,pageNum,pageSize)); return new ResultData(wxScreenAdService.listAsPage(wxScreenAd,pageNum,pageSize));
} }




+ 2
- 1
mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java Просмотреть файл

@@ -17,6 +17,7 @@ import com.iformall.service.QrCodeService;
import com.iformall.service.WxCouponChannelService; import com.iformall.service.WxCouponChannelService;
import com.iformall.service.WxCouponService; import com.iformall.service.WxCouponService;
import com.iformall.service.WxFlowService; import com.iformall.service.WxFlowService;
import com.iformall.utils.Constant;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
@@ -79,7 +80,7 @@ public class WxCouponChannelController extends BaseController {
WxCouponChannel couponChannel = (WxCouponChannel)resultData.data; WxCouponChannel couponChannel = (WxCouponChannel)resultData.data;
//生成二维码 //生成二维码
if(couponChannel!=null){ if(couponChannel!=null){
String pageUrl = "pages/index/index";
String pageUrl = Constant.mainPageUrl;
String param = couponChannel.getWeappScene(); String param = couponChannel.getWeappScene();
ResultData resultDataQ = qrCodeService.uploadQrcode(couponChannel,1,pageUrl,param,0,"","","券"); ResultData resultDataQ = qrCodeService.uploadQrcode(couponChannel,1,pageUrl,param,0,"","","券");
Map<String,String> map = (Map)resultDataQ.data; Map<String,String> map = (Map)resultDataQ.data;


+ 1
- 1
mallinkAdmin/src/main/java/com/iformall/controller/market/WxFloatingLayerController.java Просмотреть файл

@@ -52,8 +52,8 @@ public class WxFloatingLayerController extends BaseController {
@SystemControllerLog(description = "新增") @SystemControllerLog(description = "新增")
public ResultData add(@RequestBody WxFloatingLayer wxFloatingLayer) { public ResultData add(@RequestBody WxFloatingLayer wxFloatingLayer) {
logger.debug("[" + getIpAddr() + "] WxFloatingLayerController::add"); logger.debug("[" + getIpAddr() + "] WxFloatingLayerController::add");
wxFloatingLayer.setStatus(EnumFloatingLayerStatus.STATUS_THROW_IN.getCode());
wxFloatingLayer.updateTenantInfo(getTenantInfo()); wxFloatingLayer.updateTenantInfo(getTenantInfo());
wxFloatingLayer.setStatus(EnumFloatingLayerStatus.STATUS_THROW_IN.getCode());
try { try {
return wxFloatingLayerService.saveOrUpdate(wxFloatingLayer); return wxFloatingLayerService.saveOrUpdate(wxFloatingLayer);
} catch (MallinkException e) { } catch (MallinkException e) {


+ 2
- 2
mallinkAdmin/src/main/java/com/iformall/controller/market/WxQuestionController.java Просмотреть файл

@@ -36,9 +36,9 @@ public class WxQuestionController extends BaseController {
public Result getQuestionConfig() { public Result getQuestionConfig() {
logger.debug("[" + getIpAddr() + "] WxQuestionController::getQuestionConfig"); logger.debug("[" + getIpAddr() + "] WxQuestionController::getQuestionConfig");
WxQuestionConfig wxQuestionConfig = new WxQuestionConfig(); WxQuestionConfig wxQuestionConfig = new WxQuestionConfig();
WxQuestion wxQuestion = new WxQuestion();
wxQuestionConfig.updateTenantInfo(getTenantInfo()); wxQuestionConfig.updateTenantInfo(getTenantInfo());
wxQuestion.updateTenantInfo(getTenantInfo());
WxQuestion wxQuestion = new WxQuestion();
wxQuestion.updateTenantInfo(wxQuestionConfig);


List<WxQuestionConfig> list = wxQuestionService.findConfigList(wxQuestionConfig); List<WxQuestionConfig> list = wxQuestionService.findConfigList(wxQuestionConfig);
if (list.size() > 0) { if (list.size() > 0) {


+ 6
- 7
mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java Просмотреть файл

@@ -175,17 +175,18 @@ public class WxCUserBasicInfoController extends BaseController {
@SystemControllerLog(description = "会员管理-更新") @SystemControllerLog(description = "会员管理-更新")
public ResultData update(@RequestBody WxCUserBasicInfo wxCUserBasicInfo) { public ResultData update(@RequestBody WxCUserBasicInfo wxCUserBasicInfo) {
logger.debug("[" + getIpAddr() + "] WxCUserBasicInfoController::update"); logger.debug("[" + getIpAddr() + "] WxCUserBasicInfoController::update");
TenantEntity tenantEntity = getTenantInfo();
WxCUserBasicInfo oldInfo = wxCUserBasicInfoService.getById(wxCUserBasicInfo.getId()); WxCUserBasicInfo oldInfo = wxCUserBasicInfoService.getById(wxCUserBasicInfo.getId());
if (!oldInfo.getPhone().equals(wxCUserBasicInfo.getPhone())) { if (!oldInfo.getPhone().equals(wxCUserBasicInfo.getPhone())) {
if (checkUniquePhone(wxCUserBasicInfo.getPhone(), getTenantInfo()) > 0) {
if (checkUniquePhone(wxCUserBasicInfo.getPhone(), tenantEntity) > 0) {
return new ResultData(ErrorCode.USER_PHONE_IS_FOUND.getCode(), "手机号已存在"); return new ResultData(ErrorCode.USER_PHONE_IS_FOUND.getCode(), "手机号已存在");
} }
} }
wxCUserBasicInfo.updateTenantInfo(getTenantInfo());
wxCUserBasicInfo.updateTenantInfo(tenantEntity);
if (StringUtils.isNotBlank(wxCUserBasicInfo.getTagIds())) { if (StringUtils.isNotBlank(wxCUserBasicInfo.getTagIds())) {
WxCUserTags record = new WxCUserTags(); WxCUserTags record = new WxCUserTags();
record.setUserId(oldInfo.getId()); record.setUserId(oldInfo.getId());
record.updateTenantInfo(getTenantInfo());
record.updateTenantInfo(tenantEntity);
PageInfo<WxCUserTags> page = wxCUserTagsService.listAsPage(record, 1, 1); PageInfo<WxCUserTags> page = wxCUserTagsService.listAsPage(record, 1, 1);
if (page.getSize() > 0) { if (page.getSize() > 0) {
WxCUserTags t = page.getList().get(0); WxCUserTags t = page.getList().get(0);
@@ -274,7 +275,7 @@ public class WxCUserBasicInfoController extends BaseController {
corder.updateTenantInfo(getTenantInfo()); corder.updateTenantInfo(getTenantInfo());
corder.setSortColumns(BaseEntity.SortField.CreateDate_DESC); corder.setSortColumns(BaseEntity.SortField.CreateDate_DESC);
PageInfo<WxCouponOrder> page = wxCouponOrderService.listAsPage(corder, 1, Integer.MAX_VALUE); PageInfo<WxCouponOrder> page = wxCouponOrderService.listAsPage(corder, 1, Integer.MAX_VALUE);
if (page.getSize() > 0) {
//if (page.getSize() > 0) {
List<WxCouponOrder> list = page.getList(); List<WxCouponOrder> list = page.getList();
for (WxCouponOrder c : list) { for (WxCouponOrder c : list) {
WxCoupon coupon = wxCouponService.getById(c.getCouponId()); WxCoupon coupon = wxCouponService.getById(c.getCouponId());
@@ -295,9 +296,7 @@ public class WxCUserBasicInfoController extends BaseController {
datalist.add(userTradeRecordVo); datalist.add(userTradeRecordVo);
} }
excelService.exportExcel(datalist, null, "会员交易记录", UserTradeRecordVo.class, "会员交易记录.xlsx", response, false); excelService.exportExcel(datalist, null, "会员交易记录", UserTradeRecordVo.class, "会员交易记录.xlsx", response, false);
}


//}
} }


@ApiOperation("会员记录导出总数") @ApiOperation("会员记录导出总数")


+ 10
- 4
mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserDataController.java Просмотреть файл

@@ -19,6 +19,7 @@ import com.iformall.mapper.WxCUserBasicInfoMapper;
import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxCUserBasicInfoService;
import com.iformall.utils.DataUtil; import com.iformall.utils.DataUtil;
import com.iformall.utils.DateUtils; import com.iformall.utils.DateUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -58,8 +59,9 @@ public class WxCUserDataController extends BaseController {
@SystemControllerLog(description = "会员首页-报表数据-查询用户数量接口") @SystemControllerLog(description = "会员首页-报表数据-查询用户数量接口")
public ResultData findUserCountData() { public ResultData findUserCountData() {
logger.debug("[" + getIpAddr() + "] WxCUserDataController::findUserCountData"); logger.debug("[" + getIpAddr() + "] WxCUserDataController::findUserCountData");
TenantEntity tenantEntity = getTenantInfo();
WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto();
dto.updateTenantInfo(getTenantInfo());
dto.updateTenantInfo(tenantEntity);
long allCount = wxCUserService.findCount(dto);//总数 long allCount = wxCUserService.findCount(dto);//总数
Calendar c = Calendar.getInstance(); Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.HOUR_OF_DAY, 0);
@@ -139,7 +141,7 @@ public class WxCUserDataController extends BaseController {
//Date startDate = DateUtils.getDateFromString(startdate + " 00:00:00","yyyy-MM-dd HH:mm:ss").getTime(); //Date startDate = DateUtils.getDateFromString(startdate + " 00:00:00","yyyy-MM-dd HH:mm:ss").getTime();
//Date endDate = DateUtils.getDateFromString(systemTime + " 23:59:59","yyyy-MM-dd HH:mm:ss").getTime(); //Date endDate = DateUtils.getDateFromString(systemTime + " 23:59:59","yyyy-MM-dd HH:mm:ss").getTime();
WxCUserBasicInfoDto wxCUserBasicInfoDto = new WxCUserBasicInfoDto(); WxCUserBasicInfoDto wxCUserBasicInfoDto = new WxCUserBasicInfoDto();
wxCUserBasicInfoDto.updateTenantInfo(getTenantInfo());
wxCUserBasicInfoDto.updateTenantInfo(tenantEntity);
wxCUserBasicInfoDto.setStartTime(null); wxCUserBasicInfoDto.setStartTime(null);
wxCUserBasicInfoDto.setEndTime(null); wxCUserBasicInfoDto.setEndTime(null);
map.put("growCount", wxCUserBasicInfoService.findGrowUserCount(wxCUserBasicInfoDto)); map.put("growCount", wxCUserBasicInfoService.findGrowUserCount(wxCUserBasicInfoDto));
@@ -155,6 +157,7 @@ public class WxCUserDataController extends BaseController {
@SystemControllerLog(description = "会员首页-报表数据-查询用户活跃量") @SystemControllerLog(description = "会员首页-报表数据-查询用户活跃量")
public ResultData findUserVisitData() { public ResultData findUserVisitData() {
logger.debug("[" + getIpAddr() + "] WxCUserDataController::findUserVisitData"); logger.debug("[" + getIpAddr() + "] WxCUserDataController::findUserVisitData");
TenantEntity tenantEntity = getTenantInfo();
HashMap<String, Object> params = new HashMap<>(); HashMap<String, Object> params = new HashMap<>();
Calendar c = Calendar.getInstance(); Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_YEAR, -1); c.add(Calendar.DAY_OF_YEAR, -1);
@@ -166,9 +169,12 @@ public class WxCUserDataController extends BaseController {
Date startTime = c.getTime(); Date startTime = c.getTime();
params.put("startTime", startTime); params.put("startTime", startTime);
params.put("endTime", endTime); params.put("endTime", endTime);
params.put("tenantId", getTenantId());
params.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getSubTenantId())) {
params.put("subTenantId", tenantEntity.getSubTenantId());
}
MarkingCouponDataReportDto markingCouponDataReportDto = new MarkingCouponDataReportDto(); MarkingCouponDataReportDto markingCouponDataReportDto = new MarkingCouponDataReportDto();
markingCouponDataReportDto.updateTenantInfo(getTenantInfo());
markingCouponDataReportDto.updateTenantInfo(tenantEntity);
markingCouponDataReportDto.setStartTime(startTime); markingCouponDataReportDto.setStartTime(startTime);
markingCouponDataReportDto.setEndTime(endTime); markingCouponDataReportDto.setEndTime(endTime);
List<TouchUsersReportVo> list = wxUserVisitService.touchUsersReportList(markingCouponDataReportDto); List<TouchUsersReportVo> list = wxUserVisitService.touchUsersReportList(markingCouponDataReportDto);


+ 3
- 2
mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCreditHistoryController.java Просмотреть файл

@@ -28,11 +28,11 @@ import java.util.Objects;
@RestController @RestController
@RequestMapping("wxCreditHistory") @RequestMapping("wxCreditHistory")
public class WxCreditHistoryController extends BaseController { public class WxCreditHistoryController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired @Autowired
private WxCreditHistoryService wxCreditHistoryService; private WxCreditHistoryService wxCreditHistoryService;


private final Logger logger = LoggerFactory.getLogger(this.getClass());

@ApiOperation("分页列表接口") @ApiOperation("分页列表接口")
@GetMapping("list") @GetMapping("list")
@ApiImplicitParams({ @ApiImplicitParams({
@@ -42,6 +42,7 @@ public class WxCreditHistoryController extends BaseController {
public ResultData list(@ModelAttribute WxCreditHistory wxCreditHistory, Integer pageNum, Integer pageSize) { public ResultData list(@ModelAttribute WxCreditHistory wxCreditHistory, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] WxCreditHistoryController::list"); logger.debug("[" + getIpAddr() + "] WxCreditHistoryController::list");
if (null == wxCreditHistory) wxCreditHistory = new WxCreditHistory(); if (null == wxCreditHistory) wxCreditHistory = new WxCreditHistory();
wxCreditHistory.updateTenantInfo(getTenantInfo());
final PageInfo<WxCreditHistoryVo> page = wxCreditHistoryService.listAsPageMore(wxCreditHistory, pageNum, pageSize); final PageInfo<WxCreditHistoryVo> page = wxCreditHistoryService.listAsPageMore(wxCreditHistory, pageNum, pageSize);
return new ResultData(page); return new ResultData(page);
} }


+ 13
- 3
mallinkAdmin/src/main/java/com/iformall/controller/mem/WxScoreRulesController.java Просмотреть файл

@@ -5,10 +5,12 @@ import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController; import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.WxScoreRules; import com.iformall.domain.po.WxScoreRules;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumCreditLockedStatus; import com.iformall.enums.EnumCreditLockedStatus;
import com.iformall.service.WxScoreRulesService; import com.iformall.service.WxScoreRulesService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -40,7 +42,11 @@ public class WxScoreRulesController extends BaseController {
@SystemControllerLog(description = "成长值-积分-配置-新增") @SystemControllerLog(description = "成长值-积分-配置-新增")
public ResultData add(@RequestBody WxScoreRules wxScoreRules) { public ResultData add(@RequestBody WxScoreRules wxScoreRules) {
logger.debug("[" + getIpAddr() + "] WxScoreRulesController::add"); logger.debug("[" + getIpAddr() + "] WxScoreRulesController::add");
wxScoreRules.updateTenantInfo(getTenantInfo());
TenantEntity tenantEntity = getTenantInfo();
if (StringUtils.isNotBlank(tenantEntity.getSubTenantId())) {
return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "广场用户无此权限");
}
wxScoreRules.updateTenantInfo(tenantEntity);
wxScoreRulesService.saveOrUpdate(wxScoreRules); wxScoreRulesService.saveOrUpdate(wxScoreRules);
return new ResultData(); return new ResultData();
} }
@@ -57,7 +63,7 @@ public class WxScoreRulesController extends BaseController {
@ApiOperation("更新积分开关状态") @ApiOperation("更新积分开关状态")
@PostMapping("updateCreditLocked") @PostMapping("updateCreditLocked")
@SystemControllerLog(description = "更新积分开关状态") @SystemControllerLog(description = "更新积分开关状态")
public ResultData 更新积分开关状态(@RequestBody WxScoreRules wxScoreRules) {
public ResultData updateCreditLocked(@RequestBody WxScoreRules wxScoreRules) {
logger.debug("[" + getIpAddr() + "] WxScoreRulesController::updateCreditLocked"); logger.debug("[" + getIpAddr() + "] WxScoreRulesController::updateCreditLocked");
if (null == wxScoreRules.getId()) { if (null == wxScoreRules.getId()) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "id不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "id不能为空");
@@ -65,7 +71,11 @@ public class WxScoreRulesController extends BaseController {
if (null == wxScoreRules.getCreditLocked()) { if (null == wxScoreRules.getCreditLocked()) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "creditLocked不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "creditLocked不能为空");
} }
wxScoreRules.updateTenantInfo(getTenantInfo());
TenantEntity tenantEntity = getTenantInfo();
if (StringUtils.isNotBlank(tenantEntity.getSubTenantId())) {
return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "广场用户无此权限");
}
wxScoreRules.updateTenantInfo(tenantEntity);
try { try {
wxScoreRulesService.updateCreditLocked(wxScoreRules); wxScoreRulesService.updateCreditLocked(wxScoreRules);
} catch (Exception e) { } catch (Exception e) {


+ 1
- 0
mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java Просмотреть файл

@@ -6,6 +6,7 @@ import com.iformall.common.Result;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController; import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.po.msg.WxMsg; import com.iformall.domain.po.msg.WxMsg;
import com.iformall.service.WxMsgService; import com.iformall.service.WxMsgService;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;


+ 1
- 1
mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgModelController.java Просмотреть файл

@@ -81,7 +81,7 @@ public class WxMsgModelController extends BaseController {
@ApiOperation("获取所有数据") @ApiOperation("获取所有数据")
@GetMapping("getmodellist") @GetMapping("getmodellist")
@SystemControllerLog(description = "短信模板-获取所有数据") @SystemControllerLog(description = "短信模板-获取所有数据")
public ResultData getmodellist() {
public ResultData getModelList() {
logger.debug("[" + getIpAddr() + "] WxMsgModelController::getmodellist"); logger.debug("[" + getIpAddr() + "] WxMsgModelController::getmodellist");
return wxMsgModelService.getModelList(getTenantInfo()); return wxMsgModelService.getModelList(getTenantInfo());
} }


+ 1
- 0
mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgRecordController.java Просмотреть файл

@@ -110,6 +110,7 @@ public class WxMsgRecordController extends BaseController {
msg.setMsgType(wxMsgRecord.getMsgType()); msg.setMsgType(wxMsgRecord.getMsgType());
msg.setReceiver(wxMsgRecord.getReceiver()); msg.setReceiver(wxMsgRecord.getReceiver());
msg.setTenantId(wxMsgRecord.getTenantId()); msg.setTenantId(wxMsgRecord.getTenantId());
msg.updateTenantInfo(tenantEntity);
mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
} }
} }


+ 2
- 2
mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgSignatureController.java Просмотреть файл

@@ -82,8 +82,8 @@ public class WxMsgSignatureController extends BaseController {
@ApiOperation("获取所有数据") @ApiOperation("获取所有数据")
@GetMapping("getsignaturelist") @GetMapping("getsignaturelist")
@SystemControllerLog(description = "消息签名-获取所有") @SystemControllerLog(description = "消息签名-获取所有")
public ResultData getmodellist() {
logger.debug("[" + getIpAddr() + "] WxMsgSignatureController::getmodellist");
public ResultData getsignaturelist() {
logger.debug("[" + getIpAddr() + "] WxMsgSignatureController::getsignaturelist");
return wxMsgSignatureService.getSignatureList(getTenantInfo()); return wxMsgSignatureService.getSignatureList(getTenantInfo());
} }




+ 6
- 2
mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgValidationcodeController.java Просмотреть файл

@@ -74,14 +74,16 @@ public class WxMsgValidationcodeController extends BaseController {
@GetMapping("sendvalidationcode") @GetMapping("sendvalidationcode")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "tenantId", value = "租户ID", dataType = "String", paramType = "query"), @ApiImplicitParam(name = "tenantId", value = "租户ID", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "subTenantId", value = "子租户ID", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true), @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true),
@ApiImplicitParam(name = "type", value = "场景", dataType = "Integer", paramType = "query", required = true), @ApiImplicitParam(name = "type", value = "场景", dataType = "Integer", paramType = "query", required = true),
@ApiImplicitParam(name = "appid", value = "appid", dataType = "String", paramType = "query", required = true)}) @ApiImplicitParam(name = "appid", value = "appid", dataType = "String", paramType = "query", required = true)})
public ResultData sendvalidationcode(String tenantId, String phone, Integer type, String appid) {
public ResultData sendvalidationcode(String tenantId, String subTenantId, String phone, Integer type, String appid) {
logger.debug("[" + getIpAddr() + "] WxMsgValidationcodeController::sendvalidationcode"); logger.debug("[" + getIpAddr() + "] WxMsgValidationcodeController::sendvalidationcode");
WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode();
wxMsgValidationcode.updateTenantInfo(new TenantEntity(){{ wxMsgValidationcode.updateTenantInfo(new TenantEntity(){{
setTenantId(tenantId); setTenantId(tenantId);
setSubTenantId(subTenantId);
}}); }});
wxMsgValidationcode.setPhone(phone); wxMsgValidationcode.setPhone(phone);
wxMsgValidationcode.setType(type); wxMsgValidationcode.setType(type);
@@ -92,15 +94,17 @@ public class WxMsgValidationcodeController extends BaseController {
@GetMapping("hasvalidationcode") @GetMapping("hasvalidationcode")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "tenantId", value = "租户ID", dataType = "String", paramType = "query"), @ApiImplicitParam(name = "tenantId", value = "租户ID", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "subTenantId", value = "子租户ID", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true), @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true),
@ApiImplicitParam(name = "type", value = "场景", dataType = "Integer", paramType = "query", required = true), @ApiImplicitParam(name = "type", value = "场景", dataType = "Integer", paramType = "query", required = true),
@ApiImplicitParam(name = "code", value = "验证码", dataType = "String", paramType = "query", required = true), @ApiImplicitParam(name = "code", value = "验证码", dataType = "String", paramType = "query", required = true),
@ApiImplicitParam(name = "appid", value = "appid", dataType = "String", paramType = "query", required = true)}) @ApiImplicitParam(name = "appid", value = "appid", dataType = "String", paramType = "query", required = true)})
public ResultData hasvalidationcode(String tenantId, String phone, Integer type, String code, String appid) {
public ResultData hasvalidationcode(String tenantId, String subTenantId, String phone, Integer type, String code, String appid) {
logger.debug("[" + getIpAddr() + "] WxMsgValidationcodeController::hasvalidationcode"); logger.debug("[" + getIpAddr() + "] WxMsgValidationcodeController::hasvalidationcode");
WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode();
wxMsgValidationcode.updateTenantInfo(new TenantEntity(){{ wxMsgValidationcode.updateTenantInfo(new TenantEntity(){{
setTenantId(tenantId); setTenantId(tenantId);
setSubTenantId(subTenantId);
}}); }});
wxMsgValidationcode.setPhone(phone); wxMsgValidationcode.setPhone(phone);
wxMsgValidationcode.setType(type); wxMsgValidationcode.setType(type);


+ 3
- 0
mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillAllController.java Просмотреть файл

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.iformall.annotation.SystemControllerLog; import com.iformall.annotation.SystemControllerLog;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController; import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.WxPayAccountBill;
import com.iformall.domain.vo.WxBillAll; import com.iformall.domain.vo.WxBillAll;
import com.iformall.domain.vo.WxBillExcelTemplate; import com.iformall.domain.vo.WxBillExcelTemplate;
import com.iformall.service.WxBillAllService; import com.iformall.service.WxBillAllService;
@@ -53,6 +54,8 @@ public class WxBillAllController extends BaseController {
@SystemControllerLog(description = "账单总览-列表") @SystemControllerLog(description = "账单总览-列表")
public ResultData list(@ModelAttribute WxBillAll wxBillAll, Integer pageNum, Integer pageSize) { public ResultData list(@ModelAttribute WxBillAll wxBillAll, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] WxBillAllController::list"); logger.debug("[" + getIpAddr() + "] WxBillAllController::list");
wxBillAll.updateTenantInfo(getTenantInfo());
WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(wxBillAll);
if (null == wxBillAll) { if (null == wxBillAll) {
wxBillAll = new WxBillAll(); wxBillAll = new WxBillAll();
} }


+ 1
- 0
mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillDailyController.java Просмотреть файл

@@ -85,6 +85,7 @@ public class WxBillDailyController extends BaseController {
public ResultData update(@RequestBody WxBillDaily wxBillDaily) { public ResultData update(@RequestBody WxBillDaily wxBillDaily) {
logger.debug("[" + getIpAddr() + "] WxBillDailyController::update"); logger.debug("[" + getIpAddr() + "] WxBillDailyController::update");
MallUserInfo user = getUser(); MallUserInfo user = getUser();
wxBillDaily.updateTenantInfo(user);
wxBillDaily.setUserId(user.getId()); wxBillDaily.setUserId(user.getId());
return wxBillDailyService.saveOrUpdate(wxBillDaily, user); return wxBillDailyService.saveOrUpdate(wxBillDaily, user);
} }


+ 1
- 0
mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillOtherController.java Просмотреть файл

@@ -60,6 +60,7 @@ public class WxBillOtherController extends BaseController {
public ResultData update(@RequestBody WxBillOther wxBillOther) { public ResultData update(@RequestBody WxBillOther wxBillOther) {
logger.debug("[" + getIpAddr() + "] WxBillOtherController::update"); logger.debug("[" + getIpAddr() + "] WxBillOtherController::update");
MallUserInfo user = getUser(); MallUserInfo user = getUser();
wxBillOther.updateTenantInfo(user);
wxBillOther.setUserId(user.getId()); wxBillOther.setUserId(user.getId());
return wxBillOtherService.saveOrUpdate(wxBillOther, user); return wxBillOtherService.saveOrUpdate(wxBillOther, user);
} }


+ 1
- 1
mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillOtherDepositController.java Просмотреть файл

@@ -17,7 +17,6 @@ import org.springframework.web.bind.annotation.*;


import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Map;


/** /**
* @author gongbiao * @author gongbiao
@@ -60,6 +59,7 @@ public class WxBillOtherDepositController extends BaseController {
public ResultData update(@RequestBody WxBillOtherDeposit wxBillOtherDeposit) { public ResultData update(@RequestBody WxBillOtherDeposit wxBillOtherDeposit) {
logger.debug("[" + getIpAddr() + "] WxBillOtherDepositController::update"); logger.debug("[" + getIpAddr() + "] WxBillOtherDepositController::update");
MallUserInfo user = getUser(); MallUserInfo user = getUser();
wxBillOtherDeposit.updateTenantInfo(user);
wxBillOtherDeposit.setUserId(user.getId()); wxBillOtherDeposit.setUserId(user.getId());
return wxBillOtherDepositService.saveOrUpdate(wxBillOtherDeposit, user); return wxBillOtherDepositService.saveOrUpdate(wxBillOtherDeposit, user);
} }


+ 45
- 3
mallinkAdmin/src/main/java/com/iformall/controller/sys/HomeController.java Просмотреть файл

@@ -158,6 +158,14 @@ public class HomeController extends BaseController {
logger.error("mall未启用"); logger.error("mall未启用");
return new ResultData(Result.ERROR, "mall未启用"); return new ResultData(Result.ERROR, "mall未启用");
} }
Map map = new HashMap();
if (mall.getGroupSupport().equals(EnumGroupSupport.SUPPORT.getCode()) &&
StringUtils.isBlank(info.getSubTenantId())) {
// 集团用户获取子商场
List<WxMall> mallList = mallService.getSubByParentTenantId(info.getTenantId());
map.put("subMalls", JSON.toJSONString(mallList));
map.put("group", EnumGroupSupport.SUPPORT.getCode());
}


try { try {
String cookieName = URLEncoder.encode(info.getUsername(), "utf-8"); String cookieName = URLEncoder.encode(info.getUsername(), "utf-8");
@@ -166,7 +174,6 @@ public class HomeController extends BaseController {
unameCookie.setMaxAge(3600); unameCookie.setMaxAge(3600);
response.addCookie(unameCookie); response.addCookie(unameCookie);


Map map = new HashMap();
map.put("username", info.getUsername()); map.put("username", info.getUsername());
map.put("withWechat", info.getWithWechat()); map.put("withWechat", info.getWithWechat());
data.data = map; data.data = map;
@@ -185,6 +192,31 @@ public class HomeController extends BaseController {
return isInMobile; return isInMobile;
} }


@PostMapping("/selectMall")
@ApiOperation(value = "用户选中子广场及父广场", notes = "{\"tenantId\":\"string\",\"subTenantId\":\"string\"}")
public ResultData selectMall(@RequestBody Map<String, String> map) {
logger.debug(map.toString());

String tenantId = map.get("tenantId");
String subTenantId = map.get("subTenantId");

if (StringUtils.isBlank(tenantId)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "tenantId不能为空");
}

MallUserInfo userInfo = getUser();
if (userInfo.getTenantId().equalsIgnoreCase(tenantId)) {
Session session = SecurityUtils.getSubject().getSession();
session.setAttribute(UserSession.tenantId, tenantId);
if (StringUtils.isNotBlank(subTenantId)) {
session.setAttribute(UserSession.subTenantId, subTenantId);
} else {
session.setAttribute(UserSession.subTenantId, null);
}
}
return new ResultData();
}

@ApiOperation("B端登录") @ApiOperation("B端登录")
@PostMapping("/bHidLogin") @PostMapping("/bHidLogin")
public ResultData bLogin(@RequestBody MallUserInfo user, HttpServletResponse response) { public ResultData bLogin(@RequestBody MallUserInfo user, HttpServletResponse response) {
@@ -263,6 +295,12 @@ public class HomeController extends BaseController {
logger.error("mall未启用"); logger.error("mall未启用");
return new ResultData(Result.ERROR, "mall未启用"); return new ResultData(Result.ERROR, "mall未启用");
} }
Map map = new HashMap();
if (mall.getGroupSupport().equals(EnumGroupSupport.SUPPORT.getCode())) {
List<WxMall> mallList = mallService.getSubByParentTenantId(mall.getTenantId());
map.put("subMalls", JSON.toJSONString(mallList));
map.put("group", EnumGroupSupport.SUPPORT.getCode());
}
try { try {
String cookieName = URLEncoder.encode(info.getUsername(), "utf-8"); String cookieName = URLEncoder.encode(info.getUsername(), "utf-8");
Cookie unameCookie = new Cookie("uname", cookieName); Cookie unameCookie = new Cookie("uname", cookieName);
@@ -270,7 +308,6 @@ public class HomeController extends BaseController {
unameCookie.setMaxAge(3600); unameCookie.setMaxAge(3600);
response.addCookie(unameCookie); response.addCookie(unameCookie);


Map map = new HashMap();
map.put("username", info.getUsername()); map.put("username", info.getUsername());
map.put("withWechat", info.getWithWechat()); map.put("withWechat", info.getWithWechat());
data.data = map; data.data = map;
@@ -372,6 +409,12 @@ public class HomeController extends BaseController {
logger.error("mall未启用"); logger.error("mall未启用");
return new ResultData(Result.ERROR, "mall未启用"); return new ResultData(Result.ERROR, "mall未启用");
} }
Map map = new HashMap();
if (mall.getGroupSupport().equals(EnumGroupSupport.SUPPORT.getCode())) {
List<WxMall> mallList = mallService.getSubByParentTenantId(mall.getTenantId());
map.put("subMalls", JSON.toJSONString(mallList));
map.put("group", EnumGroupSupport.SUPPORT.getCode());
}


String cookieName = URLEncoder.encode(info.getUsername(), "utf-8"); String cookieName = URLEncoder.encode(info.getUsername(), "utf-8");
Cookie unameCookie = new Cookie("uname", cookieName); Cookie unameCookie = new Cookie("uname", cookieName);
@@ -379,7 +422,6 @@ public class HomeController extends BaseController {
unameCookie.setMaxAge(3600); unameCookie.setMaxAge(3600);
response.addCookie(unameCookie); response.addCookie(unameCookie);


Map map = new HashMap();
map.put("username", info.getUsername()); map.put("username", info.getUsername());
map.put("withWechat", info.getWithWechat()); map.put("withWechat", info.getWithWechat());




+ 8
- 2
mallinkAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java Просмотреть файл

@@ -58,7 +58,7 @@ public class SysMenuController extends BaseController {
logger.debug("[" + getIpAddr() + "] MallPermissionController::nav"); logger.debug("[" + getIpAddr() + "] MallPermissionController::nav");
MallUserInfo user = getUser(); MallUserInfo user = getUser();
List<MallPermission> menuList = mallPermissionService.getUserMenuList(user, 0L, true); List<MallPermission> menuList = mallPermissionService.getUserMenuList(user, 0L, true);
Set<String> permissions = mallUserInfoService.getUserPermissions(user);
Set<String> permissions = mallUserInfoService.getUserPermissions(user, true);
Map map = new HashMap<>(); Map map = new HashMap<>();
map.put("menuList", menuList); map.put("menuList", menuList);
map.put("permissions", permissions); map.put("permissions", permissions);
@@ -72,8 +72,14 @@ public class SysMenuController extends BaseController {
public ResultData getList() { public ResultData getList() {
logger.debug("[" + getIpAddr() + "] MallPermissionController::list"); logger.debug("[" + getIpAddr() + "] MallPermissionController::list");
MallUserInfo user = getUser(); MallUserInfo user = getUser();
if (user.checkGroupAdmin()) {
TenantEntity tenantEntity = getTenantInfo();
if (StringUtils.isNotBlank(tenantEntity.getSubTenantId())) {
user.setSubTenantId(tenantEntity.getSubTenantId());
}
}
List<MallPermission> menuList = mallPermissionService.getUserMenuList(user, 0L, false); List<MallPermission> menuList = mallPermissionService.getUserMenuList(user, 0L, false);
Set<String> permissions = mallUserInfoService.getUserPermissions(user);
Set<String> permissions = mallUserInfoService.getUserPermissions(user, false);
Map map = new HashMap<>(); Map map = new HashMap<>();
map.put("menuList", menuList); map.put("menuList", menuList);
map.put("permissions", permissions); map.put("permissions", permissions);


+ 6
- 2
mallinkAdmin/src/main/java/com/iformall/controller/sys/UploadController.java Просмотреть файл

@@ -38,7 +38,11 @@ public class UploadController extends BaseController {
private QrCodeService qrCodeService; private QrCodeService qrCodeService;


private String getFileName(TenantEntity tenantEntity, String fileName) { private String getFileName(TenantEntity tenantEntity, String fileName) {
fileName = tenantEntity.getTenantId() + "/" + fileName;
if (StringUtils.isBlank(tenantEntity.getSubTenantId())) {
fileName = tenantEntity.getTenantId() + "/" + fileName;
} else {
fileName = tenantEntity.getTenantId() + "/" + tenantEntity.getSubTenantId() + "/" +fileName;
}
return fileName; return fileName;
} }


@@ -71,7 +75,7 @@ public class UploadController extends BaseController {
} }


System.out.println(fileName); System.out.println(fileName);
ResultData data = qrCodeService.awsUpload(multiReq.getInputStream(), metadata, fileName, getTenantInfo());
ResultData data = qrCodeService.awsUpload(multiReq.getInputStream(), metadata, fileName, tenantEntity);
return data; return data;
} }




+ 68
- 0
mallinkAdmin/src/main/java/com/iformall/controller/sys/WechatLoginController.java Просмотреть файл

@@ -8,13 +8,16 @@ import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController; import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.MallUserAction; import com.iformall.domain.po.MallUserAction;
import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.MallUserInfo;
import com.iformall.domain.po.WxMall;
import com.iformall.domain.vo.MallUserInfoVo; import com.iformall.domain.vo.MallUserInfoVo;
import com.iformall.enums.EnumGroupSupport;
import com.iformall.enums.EnumMallUserAction; import com.iformall.enums.EnumMallUserAction;
import com.iformall.enums.EnumMallUserStatus; import com.iformall.enums.EnumMallUserStatus;
import com.iformall.enums.EnumUserAdmin; import com.iformall.enums.EnumUserAdmin;
import com.iformall.service.MallUserActionService; import com.iformall.service.MallUserActionService;
import com.iformall.service.MallUserInfoService; import com.iformall.service.MallUserInfoService;
import com.iformall.service.MallUserRoleService; import com.iformall.service.MallUserRoleService;
import com.iformall.service.WxMallService;
import com.iformall.shiro.UserSession; import com.iformall.shiro.UserSession;
import com.iformall.shiro.UseriFormallToken; import com.iformall.shiro.UseriFormallToken;
import com.iformall.utils.TOTP; import com.iformall.utils.TOTP;
@@ -70,6 +73,9 @@ public class WechatLoginController extends BaseController {
@Autowired @Autowired
private MallUserActionService mallUserActionService; private MallUserActionService mallUserActionService;


@Autowired
private WxMallService mallService;

@Autowired @Autowired
@Qualifier("openRedisTemplate") @Qualifier("openRedisTemplate")
RedisTemplate<String, String> openRedisTemplate; RedisTemplate<String, String> openRedisTemplate;
@@ -158,6 +164,35 @@ public class WechatLoginController extends BaseController {
if(menus != null) { if(menus != null) {
info.setMenus(menus); info.setMenus(menus);
} }
WxMall mall = mallService.getByTenantInfo(info);
if (mall == null) {
ret.put("code", Result.ERROR);
ret.put("message", "未配置相应的mall");
log.info("用户登录失败-4,返回登录");
try {
String errCode = URLEncoder.encode(JSON.toJSONString(ret), "utf-8");
response.sendRedirect("https://" + host + "/#/login?errcode=" + errCode);
} catch (Exception e) {
log.error(e.getMessage());
}
}
if (!mall.isValid()) {
ret.put("code", Result.ERROR);
ret.put("message", "mall未启用");
log.info("用户登录失败-5,返回登录");
try {
String errCode = URLEncoder.encode(JSON.toJSONString(ret), "utf-8");
response.sendRedirect("https://" + host + "/#/login?errcode=" + errCode);
} catch (Exception e) {
log.error(e.getMessage());
}
}
Map map = new HashMap();
if (mall.getGroupSupport().equals(EnumGroupSupport.SUPPORT.getCode())) {
List<WxMall> mallList = mallService.getSubByParentTenantId(mall.getTenantId());
map.put("subMalls", JSON.toJSONString(mallList));
map.put("group", EnumGroupSupport.SUPPORT.getCode());
}
try { try {
String cookieName = URLEncoder.encode(info.getUsername(), "utf-8"); String cookieName = URLEncoder.encode(info.getUsername(), "utf-8");
Cookie unameCookie = new Cookie("uname", cookieName); Cookie unameCookie = new Cookie("uname", cookieName);
@@ -299,6 +334,36 @@ public class WechatLoginController extends BaseController {
if(menus != null) { if(menus != null) {
info.setMenus(menus); info.setMenus(menus);
} }
Map<String, Object> ret = new HashMap<>();
WxMall mall = mallService.getByTenantInfo(info);
if (mall == null) {
ret.put("code", Result.ERROR);
ret.put("message", "未配置相应的mall");
log.info("用户登录失败-4,返回登录");
try {
String errCode = URLEncoder.encode(JSON.toJSONString(ret), "utf-8");
response.sendRedirect("https://" + host + "/#/login?errcode=" + errCode);
} catch (Exception e) {
log.error(e.getMessage());
}
}
if (!mall.isValid()) {
ret.put("code", Result.ERROR);
ret.put("message", "mall未启用");
log.info("用户登录失败-5,返回登录");
try {
String errCode = URLEncoder.encode(JSON.toJSONString(ret), "utf-8");
response.sendRedirect("https://" + host + "/#/login?errcode=" + errCode);
} catch (Exception e) {
log.error(e.getMessage());
}
}
Map map = new HashMap();
if (mall.getGroupSupport().equals(EnumGroupSupport.SUPPORT.getCode())) {
List<WxMall> mallList = mallService.getSubByParentTenantId(mall.getTenantId());
map.put("subMalls", JSON.toJSONString(mallList));
map.put("group", EnumGroupSupport.SUPPORT.getCode());
}
// 登录cookie // 登录cookie
String cookieName = URLEncoder.encode(info.getUsername(), "utf-8"); String cookieName = URLEncoder.encode(info.getUsername(), "utf-8");
Cookie unameCookie = new Cookie("uname", cookieName); Cookie unameCookie = new Cookie("uname", cookieName);
@@ -395,6 +460,9 @@ public class WechatLoginController extends BaseController {
if(StringUtils.isBlank(userInfo.getTenantId())) { if(StringUtils.isBlank(userInfo.getTenantId())) {
userInfo.setTenantId(user.getTenantId()); userInfo.setTenantId(user.getTenantId());
} }
if(StringUtils.isBlank(userInfo.getSubTenantId())) {
userInfo.setSubTenantId(user.getSubTenantId());
}
if(userInfo.getId() == null && userInfo.getUsername() == null) { if(userInfo.getId() == null && userInfo.getUsername() == null) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
} }


+ 5
- 1
mallinkAdmin/src/main/java/com/iformall/shiro/MyShiroRealm.java Просмотреть файл

@@ -5,6 +5,7 @@ import javax.annotation.Resource;
import com.iformall.common.ErrorCode; import com.iformall.common.ErrorCode;
import com.iformall.enums.EnumMallUserStatus; import com.iformall.enums.EnumMallUserStatus;
import com.iformall.service.MallUserInfoService; import com.iformall.service.MallUserInfoService;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*; import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.authz.AuthorizationInfo;
@@ -30,7 +31,7 @@ public class MyShiroRealm extends AuthorizingRealm {
@Override @Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
MallUserInfo user= (MallUserInfo) SecurityUtils.getSubject().getPrincipal(); MallUserInfo user= (MallUserInfo) SecurityUtils.getSubject().getPrincipal();
Set<String> permissionSet = userService.getUserPermissions(user);
Set<String> permissionSet = userService.getUserPermissions(user, true);
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
info.setStringPermissions(permissionSet); info.setStringPermissions(permissionSet);
return info; return info;
@@ -65,6 +66,9 @@ public class MyShiroRealm extends AuthorizingRealm {
session.setAttribute(UserSession.userInfo, user); session.setAttribute(UserSession.userInfo, user);
session.setAttribute(UserSession.userId, user.getId()); session.setAttribute(UserSession.userId, user.getId());
session.setAttribute(UserSession.tenantId, user.getTenantId()); session.setAttribute(UserSession.tenantId, user.getTenantId());
if (StringUtils.isNotBlank(user.getSubTenantId())) {
session.setAttribute(UserSession.subTenantId, user.getSubTenantId());
}
return authenticationInfo; return authenticationInfo;
} }




+ 2
- 0
mallinkAdmin/src/main/java/com/iformall/shiro/UserSession.java Просмотреть файл

@@ -8,4 +8,6 @@ public class UserSession {


public static String tenantId ="TENANT_ID"; public static String tenantId ="TENANT_ID";


public static String subTenantId ="SUB_TENANT_ID";

} }

+ 85
- 1
mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java Просмотреть файл

@@ -22,8 +22,22 @@ public class TenantInfoImpl implements TenantInfo {
return tenantId; return tenantId;
} }


@Override
public String getSubTenantId() {
String subTenantId = null;
try {
subTenantId = (String) SecurityUtils.getSubject().getSession().getAttribute(UserSession.subTenantId);
} catch (InvalidSessionException e) {
logger.error("InvalidSession: " + e.getMessage());
}
return subTenantId;
}

@Override @Override
public boolean doTableFilter(String tableName) { public boolean doTableFilter(String tableName) {
if ("wx_mall".equals(tableName)) {
return true;
}
if ("mall_permission".equals(tableName)) { if ("mall_permission".equals(tableName)) {
return true; return true;
} }
@@ -78,8 +92,78 @@ public class TenantInfoImpl implements TenantInfo {
if ("wx_data_rule_target".equals(tableName)) { if ("wx_data_rule_target".equals(tableName)) {
return true; return true;
} }
if ("wx_logic_permission".equals(tableName)) {
return true;
}
return false;
}


if ("wx_logic_permission".equals(tableName)) {
@Override
public boolean doTableFilterSub(String tableName) {
if ("wx_mall".equals(tableName)) {
return true;
}
if ("wx_appinfo".equals(tableName)) {
return true;
}
if ("wx_authorizer_info".equals(tableName)) {
return true;
}
if ("wx_c_user".equals(tableName)) {
return true;
}
if ("wx_c_user_basic_info".equals(tableName)) {
return true;
}
if ("wx_c_user_car".equals(tableName)) {
return true;
}
if ("wx_c_user_from_b".equals(tableName)) {
return true;
}
if ("wx_c_user_tags".equals(tableName)) {
return true;
}
if ("wx_cuser_floating_layer".equals(tableName)) {
return true;
}
if ("wx_data_rule_target".equals(tableName)) {
return true;
}
if ("wx_floating_layer".equals(tableName)) {
return true;
}
if ("wx_question".equals(tableName)) {
return true;
}
if ("wx_question_config".equals(tableName)) {
return true;
}
if ("wx_question_log".equals(tableName)) {
return true;
}
if ("wx_user_visit".equals(tableName)) {
return true;
}
if ("wx_level_config".equals(tableName)) {
return true;
}
if ("wx_score_rules".equals(tableName)) {
return true;
}
if ("view_coupon_data".equals(tableName)) {
return true;
}
if ("view_touch_user".equals(tableName)) {
return true;
}
if ("wx_weapp_audit_status".equals(tableName)) {
return true;
}
if ("wx_weapp_code_status".equals(tableName)) {
return true;
}
if ("wx_weapp_release_status".equals(tableName)) {
return true; return true;
} }
return false; return false;


+ 9
- 3
mallinkAdmin/src/main/java/com/iformall/ueditor/upload/Uploader.java Просмотреть файл

@@ -42,7 +42,11 @@ public class Uploader {
private AmazonS3 s3 = null; private AmazonS3 s3 = null;


private String getFileName(TenantEntity tenantEntity, String fileName) { private String getFileName(TenantEntity tenantEntity, String fileName) {
fileName = tenantEntity.getTenantId() + "/" + fileName;
if (StringUtils.isBlank(tenantEntity.getSubTenantId())) {
fileName = tenantEntity.getTenantId() + "/" + fileName;
} else {
fileName = tenantEntity.getTenantId() + "/" + tenantEntity.getSubTenantId() + "/" + fileName;
}
return fileName; return fileName;
} }


@@ -77,9 +81,11 @@ public class Uploader {
MultipartFile multiReq= ((MultipartHttpServletRequest) this.request).getFile("upfile"); MultipartFile multiReq= ((MultipartHttpServletRequest) this.request).getFile("upfile");
Session session = SecurityUtils.getSubject().getSession(); Session session = SecurityUtils.getSubject().getSession();
String tenantId = (String)session.getAttribute(UserSession.tenantId); String tenantId = (String)session.getAttribute(UserSession.tenantId);
String subTenantId = (String)session.getAttribute(UserSession.subTenantId);
TenantEntity tenantEntity = new TenantEntity(){{ TenantEntity tenantEntity = new TenantEntity(){{
setTenantId(tenantId);
}};
setTenantId(tenantId);
setSubTenantId(subTenantId);
}};
if (StringUtils.isBlank(tenantId)) { if (StringUtils.isBlank(tenantId)) {
logger.error("TENANT is null"); logger.error("TENANT is null");
} }


+ 2
- 2
mallinkAdmin/src/main/resources/application-dev.yml Просмотреть файл

@@ -32,7 +32,7 @@ spring:
password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk) password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk)
timeout: 3600 timeout: 3600
expire: 1800 #30分钟 expire: 1800 #30分钟
database: 1
database: 5
defaultExpiration: 2592000 # 默认生命周期30天 defaultExpiration: 2592000 # 默认生命周期30天
jedis: jedis:
pool: pool:
@@ -117,7 +117,7 @@ jasypt:
password: oRqdnDbK5pj3eMmB password: oRqdnDbK5pj3eMmB


fm: fm:
exception: false
exception: true
exception_emails: houtaikaifa@iformall.com exception_emails: houtaikaifa@iformall.com
deploy: 1 deploy: 1
open: true open: true


+ 0
- 1
mallinkAdmin/src/main/resources/application-prod.yml Просмотреть файл

@@ -109,6 +109,5 @@ ueditor:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall.mapper: debug com.iformall.mapper: debug
path: ./logs/admin path: ./logs/admin

+ 0
- 1
mallinkAdmin/src/main/resources/application-test.yml Просмотреть файл

@@ -109,6 +109,5 @@ ueditor:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall: debug com.iformall: debug
path: ./logs/admin path: ./logs/admin

+ 516
- 0
mallinkAdmin/src/main/resources/db/migration/V201911060800__GROUP_SUPPORT.sql Просмотреть файл

@@ -0,0 +1,516 @@
-- wx_msg_model
update wx_msg_model set tenant_id = '4562' where tenant_id = '456111';

ALTER TABLE `invest_customer`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `invest_demand`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `invest_follow_record`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `invest_message`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `invest_operate_record`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `invest_remind`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `invest_task`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `kw_box`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `kw_box_cmd_history`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) DEFAULT NULL COMMENT '租户ID';

ALTER TABLE `kw_merchant_meter`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) DEFAULT NULL COMMENT '租户ID';

ALTER TABLE `kw_meter`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) DEFAULT NULL COMMENT '租户ID';

ALTER TABLE `kw_meter_data`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) DEFAULT NULL COMMENT '租户ID';

ALTER TABLE `mall_resource`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) DEFAULT NULL COMMENT '租户ID';

ALTER TABLE `mall_role`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `mall_role_permission`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `mall_user_action`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `mall_user_info`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `pos_coupon_order_verify`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `pos_mall_config`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `pos_order`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `pos_pay_order`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `push_limit`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `schedule_job`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `schedule_job_log`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_activity`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_activity_join`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_admin_log`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_appinfo`
ADD COLUMN `group_support` smallint(2) DEFAULT 0 COMMENT '集团支持(0:不支持,1支持)',
ADD COLUMN `enable` smallint(2) DEFAULT 0 COMMENT '是否启用(0:启用,1禁用)',
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_authorizer_info`
ADD COLUMN `group_support` smallint(2) DEFAULT 0 COMMENT '集团支持(0:不支持,1支持)',
ADD COLUMN `enable` smallint(2) DEFAULT 0 COMMENT '是否启用(0:启用,1禁用)',
MODIFY COLUMN `tenant_id` varchar(5) DEFAULT NULL COMMENT '租户ID';

ALTER TABLE `wx_bill_action`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_bill_daily`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_bill_other`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_bill_other_deposit`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_bill_property`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_bill_property_deposit`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_bill_rent`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_bill_rent_deposit`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_bill_settle`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_bill_settle_bill`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_bill_settle_record`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_brand`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_buser`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_c_user`
ADD COLUMN `sub_tenant_id` bigint(20) NULL DEFAULT NULL COMMENT '上次访问的子租户ID' AFTER `tenant_id`,
CHANGE COLUMN `latitude` `latitude` decimal(10,6) DEFAULT NULL COMMENT '维度',
CHANGE COLUMN `longitude` `longitude` decimal(10,6) DEFAULT NULL COMMENT '经度',
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_c_user_basic_info`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_c_user_car`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_c_user_from_b`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_c_user_tags`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_campaign`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_car_cmd_log`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_car_pay_record`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) COMMENT '租户ID';

ALTER TABLE `wx_card_info`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_card_spend`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_card_transfer_info`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_chart_data`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_coupon`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_coupon_action_log`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_coupon_car`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_coupon_channel`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_coupon_inject`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_coupon_merchant`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_coupon_order`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_coupon_password`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_coupon_present`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_coupon_send`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_coupon_send_config`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_credit_history`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_date_amount_record`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_device`
ADD COLUMN `sub_tenant_id` varchar(5) NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_flow_config`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_flow_model`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_flow_record`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_game`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_game_action_log`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_level_config`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_level_merchant`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_mall`
ADD COLUMN `parent_tenant_id` varchar(5) DEFAULT NULL COMMENT '父租户ID' AFTER `tenant_id`,
ADD COLUMN `group_support` smallint(2) DEFAULT 0 COMMENT '集团支持(0:不支持,1支持)',
ADD COLUMN `latitude` decimal(10,6) DEFAULT NULL COMMENT '维度' AFTER `img`,
ADD COLUMN `longitude` decimal(10,6) DEFAULT NULL COMMENT '经度' AFTER `latitude`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_mall_building`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_mall_floor`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_merchant`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_merchant_b_user`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_merchant_corp`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_merchant_power_bill_config`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_merchant_shop`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_merchant_subsidy` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE `wx_merchant_subsidy`
ADD COLUMN `sub_tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
CHANGE COLUMN `tenant_id` `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_merchant_tax`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_merchant_trade_daily`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_msg`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_msg_callback`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_msg_config`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_msg_limit`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_msg_model`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_msg_record`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) DEFAULT NULL COMMENT '租户ID';

ALTER TABLE `wx_msg_signature`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_msg_validationcode`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) DEFAULT NULL COMMENT '租户ID';

ALTER TABLE `wx_msg_validationcode_model`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) DEFAULT NULL COMMENT '租户ID';

ALTER TABLE `wx_order`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_order_group`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_order_press`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_park`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_pay_account`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_pay_account_bill`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_pay_bill`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_pay_order`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_power_bill_auto_config`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_prepayment`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_prepayment_history`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_profit_sharing_order`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_profit_sharing_receiver`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_profit_sharing_result`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_property_contract`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) DEFAULT NULL COMMENT '租户ID';

ALTER TABLE `wx_question`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_question_config`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_question_log`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_refund_order`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_rent_contract`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_score_validity_period`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_score_history`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

delete from wx_score_history where score_amount = 0;

ALTER TABLE `wx_score_rules`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_screen_ad`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_shop`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_subsidy`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_template_msg`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_topic`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_user_data_rule`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_user_visit`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_weapp_audit_status`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_weapp_code_status`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_weapp_release_status`
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

ALTER TABLE `wx_wiwide_info`
ADD COLUMN `sub_tenant_id` varchar(5) DEFAULT NULL COMMENT '子租户ID' AFTER `tenant_id`,
MODIFY COLUMN `tenant_id` varchar(5) NOT NULL COMMENT '租户ID';

+ 2
- 0
mallinkAdmin/src/main/resources/db/migration/V201911082100__GROUP_MENU.sql Просмотреть файл

@@ -0,0 +1,2 @@
INSERT INTO `mall_sale_type`(`id`,`name`, `type`, `period`, `menus`)
VALUES(100, '集团版', 100, 12, '[1, 2, 5, 6, 8, 10, 50, 101, 102, 104, 105, 106, 108, 203, 204, 206, 207, 501, 502, 503, 504, 505, 506, 507, 509, 511, 512, 513, 522, 523, 591, 595, 601, 611, 612, 621, 622, 623, 624, 625, 626, 627, 901, 902]');

+ 3
- 0
mallinkAdmin/src/main/resources/db/migration/V201911121100__GROUP_MENU.sql Просмотреть файл

@@ -0,0 +1,3 @@
update `mall_sale_type` set `menus` =
'[1, 2, 5, 6, 8, 10, 50, 101, 102, 104, 105, 106, 108, 203, 204, 206, 501, 502, 503, 504, 505, 506, 507, 509, 511, 512, 522, 523, 591, 595, 601, 611, 621, 622, 623, 624, 625, 626, 627, 901, 902]'
where id = 100;

+ 1
- 0
mallinkBApi/src/main/java/com/iformall/config/MyBatisConfiguration.java Просмотреть файл

@@ -14,6 +14,7 @@ public class MyBatisConfiguration {
MultiTenancy multiTenancy = new MultiTenancy(); MultiTenancy multiTenancy = new MultiTenancy();
Properties properties = new Properties(); Properties properties = new Properties();
properties.setProperty("tenantIdColumn", "tenant_id"); properties.setProperty("tenantIdColumn", "tenant_id");
properties.setProperty("subTenantIdColumn", "sub_tenant_id");
properties.setProperty("dialect", "mysql"); properties.setProperty("dialect", "mysql");
properties.setProperty("tenantInfo", "com.iformall.tenant.TenantInfoImpl"); properties.setProperty("tenantInfo", "com.iformall.tenant.TenantInfoImpl");
multiTenancy.setProperties(properties); multiTenancy.setProperties(properties);


+ 2
- 0
mallinkBApi/src/main/java/com/iformall/controller/BaseController.java Просмотреть файл

@@ -99,8 +99,10 @@ public class BaseController {
public TenantEntity getTenantInfo() { public TenantEntity getTenantInfo() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String tenantId = (String) request.getAttribute(Constant.TENANT_ID); String tenantId = (String) request.getAttribute(Constant.TENANT_ID);
String subTenantId = (String) request.getAttribute(Constant.SUB_TENANT_ID);
TenantEntity tenantEntity = new TenantEntity() {{ TenantEntity tenantEntity = new TenantEntity() {{
setTenantId(tenantId); setTenantId(tenantId);
setSubTenantId(subTenantId);
}}; }};
return tenantEntity; return tenantEntity;
} }


+ 1
- 12
mallinkBApi/src/main/java/com/iformall/controller/PosController.java Просмотреть файл

@@ -3,6 +3,7 @@ package com.iformall.controller;
import com.iformall.common.ErrorCode; import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxMerchantBUser;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.pay.WxPayConstant; import com.iformall.pay.WxPayConstant;
import com.iformall.service.PosBrunService; import com.iformall.service.PosBrunService;
@@ -47,18 +48,6 @@ public class PosController extends BaseController {
return posService.checkUserPassword(user, phone, password); return posService.checkUserPassword(user, phone, password);
} }


@ApiOperation(value = "获取会员折扣/优惠券/消费卡是否启用")
@PostMapping("getPosMemConfig")
public ResultData getPosMemConfig() {
return posService.getPosMemConfig(getTenantId());
}

@ApiOperation(value = "获取注册二维码及小票二维码规则")
@PostMapping("getQrCode")
public ResultData getQrCode() {
return posService.getQrCode(getTenantId());
}

@ApiOperation(value = "券独立核销-1-检查", notes = "{\"couponOrderId\":\"string\"}") @ApiOperation(value = "券独立核销-1-检查", notes = "{\"couponOrderId\":\"string\"}")
@PostMapping("checkCouponOrderForIndepentVerify") @PostMapping("checkCouponOrderForIndepentVerify")
public ResultData checkCouponOrderForIndepentVerify(@RequestBody Map<String, String> params) { public ResultData checkCouponOrderForIndepentVerify(@RequestBody Map<String, String> params) {


+ 5
- 1
mallinkBApi/src/main/java/com/iformall/controller/UploadController.java Просмотреть файл

@@ -53,7 +53,11 @@ public class UploadController extends BaseController {
private AmazonS3 s3 = null; private AmazonS3 s3 = null;


private String getFileName(TenantEntity tenantEntity, String fileName) { private String getFileName(TenantEntity tenantEntity, String fileName) {
fileName = tenantEntity.getTenantId() + "/" + fileName;
if (StringUtils.isBlank(tenantEntity.getSubTenantId())) {
fileName = tenantEntity.getTenantId() + "/" + fileName;
} else {
fileName = tenantEntity.getTenantId() + "/" + tenantEntity.getSubTenantId() + "/" + fileName;
}
return fileName; return fileName;
} }




+ 4
- 4
mallinkBApi/src/main/java/com/iformall/controller/WxCUserController.java Просмотреть файл

@@ -118,7 +118,7 @@ public class WxCUserController extends BaseController {
wxCUserBasicInfoService.update(wxCUserBasicInfo); wxCUserBasicInfoService.update(wxCUserBasicInfo);
wxScoreRulesService.addScore(EnumScoreType.COMPLETE_INFO, wxCUserBasicInfo); wxScoreRulesService.addScore(EnumScoreType.COMPLETE_INFO, wxCUserBasicInfo);
//增加积分 //增加积分
addCredit(wxCUserBasicInfo, EnumScoreType.COMPLETE_INFO, wxCUserFromBDto.getUserId());
addCredit(wxCUserBasicInfo, EnumScoreType.COMPLETE_INFO, wxCUserFromBDto.getUserId(), wxCUserFromB);
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, wxCUserBasicInfo); wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, wxCUserBasicInfo);
//新增来自B端的会员关联数据 //新增来自B端的会员关联数据
wxCUserFromB = new WxCUserFromB(); wxCUserFromB = new WxCUserFromB();
@@ -179,7 +179,7 @@ public class WxCUserController extends BaseController {
wxCUserBasicInfoService.update(wxCUserBasicInfo); wxCUserBasicInfoService.update(wxCUserBasicInfo);
wxScoreRulesService.addScore(EnumScoreType.COMPLETE_INFO, wxCUserBasicInfo); wxScoreRulesService.addScore(EnumScoreType.COMPLETE_INFO, wxCUserBasicInfo);
//增加积分 //增加积分
addCredit(wxCUserBasicInfo, EnumScoreType.COMPLETE_INFO, wxCUserFromBDto.getUserId());
addCredit(wxCUserBasicInfo, EnumScoreType.COMPLETE_INFO, wxCUserFromBDto.getUserId(), wxCUserFromB);
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, wxCUserBasicInfo); wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, wxCUserBasicInfo);
//更新B端来源会员 //更新B端来源会员
wxCUserFromB.setInfo(JSONObject.toJSONString(wxCUserBasicInfo)); wxCUserFromB.setInfo(JSONObject.toJSONString(wxCUserBasicInfo));
@@ -188,10 +188,10 @@ public class WxCUserController extends BaseController {
return new ResultData(); return new ResultData();
} }


private void addCredit(WxCUserBasicInfo wxCUserBasicInfo, EnumScoreType enumScoreType, Long userId) {
private void addCredit(WxCUserBasicInfo wxCUserBasicInfo, EnumScoreType enumScoreType, Long userId, TenantEntity tenantEntity) {
WxCreditHistory wxCreditHistory = new WxCreditHistory(); WxCreditHistory wxCreditHistory = new WxCreditHistory();
wxCreditHistory.setCUserId(wxCUserBasicInfo.getId()); wxCreditHistory.setCUserId(wxCUserBasicInfo.getId());
wxCreditHistory.updateTenantInfo(getTenantInfo());
wxCreditHistory.updateTenantInfo(tenantEntity);
wxCreditHistory.setCreateDate(new Date()); wxCreditHistory.setCreateDate(new Date());
wxCreditHistory.setCreditType(enumScoreType.getCode()); wxCreditHistory.setCreditType(enumScoreType.getCode());
wxCreditHistory.setOperatorType(EnumUserType.BUSER.getCode()); wxCreditHistory.setOperatorType(EnumUserType.BUSER.getCode());


+ 8
- 2
mallinkBApi/src/main/java/com/iformall/controller/WxCouponSendController.java Просмотреть файл

@@ -5,6 +5,7 @@ import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxCouponActionLogVo; import com.iformall.domain.vo.WxCouponActionLogVo;
import com.iformall.domain.vo.WxCouponSendVo; import com.iformall.domain.vo.WxCouponSendVo;
import com.iformall.enums.EnumCouponSendSendType; import com.iformall.enums.EnumCouponSendSendType;
@@ -18,6 +19,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -65,7 +67,7 @@ public class WxCouponSendController extends BaseController {
final PageInfo<WxCouponSendVo> page = wxCouponSendService.listAsPage(wxCouponSend, pageNum, pageSize); final PageInfo<WxCouponSendVo> page = wxCouponSendService.listAsPage(wxCouponSend, pageNum, pageSize);


for (WxCouponSendVo cs : page.getList()) { for (WxCouponSendVo cs : page.getList()) {
cs.setSendCount(wxCouponActionLogService.getCountByChannelId(getTenantInfo(), cs.getSendType(), cs.getId()));
cs.setSendCount(wxCouponActionLogService.getCountByChannelId(wxCouponSend, cs.getSendType(), cs.getId()));
} }
return new ResultData(page); return new ResultData(page);
} }
@@ -134,7 +136,11 @@ public class WxCouponSendController extends BaseController {
cal.add(Calendar.DATE, 1); cal.add(Calendar.DATE, 1);
params.put("endDate", cal.getTime()); params.put("endDate", cal.getTime());
} }
params.put("tenantId", getTenantId());
TenantEntity tenantEntity = getTenantInfo();
params.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getSubTenantId())) {
params.put("subTenantId", tenantEntity.getSubTenantId());
}
params.put("channelType", channelType); params.put("channelType", channelType);
params.put("merchantId", getUser().getMerchantId()); params.put("merchantId", getUser().getMerchantId());
PageInfo<WxCouponActionLogVo> data = wxCouponActionLogService.getActionLog(params, pageNum, pageSize); PageInfo<WxCouponActionLogVo> data = wxCouponActionLogService.getActionLog(params, pageNum, pageSize);


+ 1
- 0
mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java Просмотреть файл

@@ -8,6 +8,7 @@ import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxCreditHistory; import com.iformall.domain.po.WxCreditHistory;
import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxMerchantBUser;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxCreditHistoryVo; import com.iformall.domain.vo.WxCreditHistoryVo;
import com.iformall.enums.EnumMerchantStatus; import com.iformall.enums.EnumMerchantStatus;
import com.iformall.enums.EnumScoreType; import com.iformall.enums.EnumScoreType;


+ 27
- 4
mallinkBApi/src/main/java/com/iformall/controller/WxInfoController.java Просмотреть файл

@@ -12,6 +12,7 @@ import com.iformall.common.Result;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumEnableType;
import com.iformall.enums.EnumMallUserStatus; import com.iformall.enums.EnumMallUserStatus;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.service.*; import com.iformall.service.*;
@@ -70,6 +71,9 @@ public class WxInfoController extends BaseController {
@Autowired @Autowired
WxBuserTokenService wxBuserTokenService; WxBuserTokenService wxBuserTokenService;


@Autowired
WxMerchantBUserService merchantBUserService;

@AuthIgnore @AuthIgnore
@ApiOperation("获取OPENID") @ApiOperation("获取OPENID")
@PostMapping("getOpenId") @PostMapping("getOpenId")
@@ -87,6 +91,10 @@ public class WxInfoController extends BaseController {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "bUserId不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "bUserId不能为空");
} }
String scene = param.get("scene"); String scene = param.get("scene");
WxMerchantBUser buUser = merchantBUserService.getById(Long.valueOf(userId));
if (buUser == null) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "登录用户未找到");
}
WxAppinfo wxAppinfo = getAppInfo(appId); WxAppinfo wxAppinfo = getAppInfo(appId);
// 通过authorizerInfo得到tenant_id // 通过authorizerInfo得到tenant_id
WxAuthorizerInfo wxAuthorizerInfo = null; WxAuthorizerInfo wxAuthorizerInfo = null;
@@ -96,6 +104,9 @@ public class WxInfoController extends BaseController {
if (wxAuthorizerInfo == null) { if (wxAuthorizerInfo == null) {
return new ResultData(ErrorCode.APP_ID_NOT_FOUND); return new ResultData(ErrorCode.APP_ID_NOT_FOUND);
} }
if (!wxAuthorizerInfo.getEnable().equals(EnumEnableType.Enable.getCode())) {
return new ResultData(ErrorCode.APP_ID_NOT_ENABLE);
}
if (isFmOpen) { if (isFmOpen) {
wxMaService = getWeappService(appId); wxMaService = getWeappService(appId);
} else { } else {
@@ -164,7 +175,10 @@ public class WxInfoController extends BaseController {
token = oldUser.createToken(new Date()); token = oldUser.createToken(new Date());
resultMap.put("token", token); resultMap.put("token", token);
request.setAttribute(Constant.LOGIN_USER_KEY, oldUser.getId()); request.setAttribute(Constant.LOGIN_USER_KEY, oldUser.getId());
request.setAttribute(Constant.TENANT_ID, oldUser.getTenantId());
request.setAttribute(Constant.TENANT_ID, buUser.getTenantId());
if (StringUtils.isNotBlank(buUser.getSubTenantId())) {
request.setAttribute(Constant.SUB_TENANT_ID, buUser.getSubTenantId());
}


oldUser.setRegisterIp(ipaddress); oldUser.setRegisterIp(ipaddress);
oldUser.setSessionKey(session_key); oldUser.setSessionKey(session_key);
@@ -177,7 +191,7 @@ public class WxInfoController extends BaseController {
oldUser.setOpenAppId(wxAuthorizerInfo.getOpenAppid()); oldUser.setOpenAppId(wxAuthorizerInfo.getOpenAppid());
} }
if (StringUtils.isBlank(oldUser.getScene()) || if (StringUtils.isBlank(oldUser.getScene()) ||
oldUser.getScene().equals("undefined")) { // from pages/index/index onLoad.options.scene
oldUser.getScene().equals(Constant.UNDEFINED)) { // from pages/index/index onLoad.options.scene
oldUser.setScene(scene); oldUser.setScene(scene);
} }
oldUser.setLoginCount(oldUser.getLoginCount() + 1); oldUser.setLoginCount(oldUser.getLoginCount() + 1);
@@ -191,7 +205,7 @@ public class WxInfoController extends BaseController {
newUser.setSessionKey(session_key); newUser.setSessionKey(session_key);


if (StringUtils.isBlank(newUser.getScene()) || if (StringUtils.isBlank(newUser.getScene()) ||
newUser.getScene().equals("undefined")) { // from pages/index/index onLoad.options.scene
newUser.getScene().equals(Constant.UNDEFINED)) { // from pages/index/index onLoad.options.scene
newUser.setScene(scene); newUser.setScene(scene);
} }
newUser.setLoginCount(0); newUser.setLoginCount(0);
@@ -199,7 +213,10 @@ public class WxInfoController extends BaseController {
wxBuserTokenService.saveOrUpdate(newUser); wxBuserTokenService.saveOrUpdate(newUser);
resultMap.put("token", token); resultMap.put("token", token);
request.setAttribute(Constant.LOGIN_USER_KEY, newUser.getId()); request.setAttribute(Constant.LOGIN_USER_KEY, newUser.getId());
request.setAttribute(Constant.TENANT_ID, newUser.getTenantId());
request.setAttribute(Constant.TENANT_ID, buUser.getTenantId());
if (StringUtils.isNotBlank(buUser.getSubTenantId())) {
request.setAttribute(Constant.SUB_TENANT_ID, buUser.getSubTenantId());
}
} }
return new ResultData(resultMap); return new ResultData(resultMap);


@@ -252,6 +269,12 @@ public class WxInfoController extends BaseController {


private Map<String,String> getOpenIdInfo(String appId, String code) { private Map<String,String> getOpenIdInfo(String appId, String code) {
WxAppinfo wxAppinfo = getAppInfo(appId); WxAppinfo wxAppinfo = getAppInfo(appId);
if (wxAppinfo == null) {
throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND);
}
if (!wxAppinfo.getEnable().equals(EnumEnableType.Enable.getCode())) {
throw new MallinkException(ErrorCode.APP_ID_NOT_ENABLE);
}
WxMaService wxMaService = null; WxMaService wxMaService = null;
if(isFmOpen) { if(isFmOpen) {
wxMaService = getWeappService(appId); wxMaService = getWeappService(appId);


+ 14
- 5
mallinkBApi/src/main/java/com/iformall/controller/WxMallController.java Просмотреть файл

@@ -1,11 +1,14 @@
package com.iformall.controller; package com.iformall.controller;


import com.alibaba.fastjson.JSON;
import com.iformall.annotation.AuthIgnore; import com.iformall.annotation.AuthIgnore;
import com.iformall.common.ErrorCode; import com.iformall.common.ErrorCode;
import com.iformall.common.Result; import com.iformall.common.Result;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxMall; import com.iformall.domain.po.WxMall;
import com.iformall.domain.po.WxMerchantBUser;
import com.iformall.enums.EnumGroupSupport;
import com.iformall.service.WxAppinfoService; import com.iformall.service.WxAppinfoService;
import com.iformall.service.WxMallService; import com.iformall.service.WxMallService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -25,6 +28,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;


@RestController @RestController
@@ -66,14 +70,19 @@ public class WxMallController extends BaseController {
@GetMapping("/mallInfo") @GetMapping("/mallInfo")
@ApiImplicitParam(name = "appId", value = "appId", dataType = "String", paramType = "query", required = true) @ApiImplicitParam(name = "appId", value = "appId", dataType = "String", paramType = "query", required = true)
public ResultData getMallInfo(String appId) { public ResultData getMallInfo(String appId) {
WxAppinfo appInfo = wxAppinfoService.getByAppId(appId);
if (appInfo == null) {
return new ResultData(ErrorCode.APP_ID_NOT_FOUND);
}
WxMall mall = wxMallService.getByTenantId(appInfo.getTenantId());
WxMerchantBUser buUser = getUser();
WxMall mall = wxMallService.getByTenantInfo(buUser);
if (mall == null) { if (mall == null) {
return new ResultData(ErrorCode.MALL_INFO_NOT_FOUND); return new ResultData(ErrorCode.MALL_INFO_NOT_FOUND);
} }
if(!mall.isValid()) {
logger.error("mall未启用");
return new ResultData(Result.ERROR, "mall未启用");
}
if (mall.getGroupSupport().equals(EnumGroupSupport.SUPPORT.getCode())) {
List<WxMall> mallList = wxMallService.getSubByParentTenantId(mall.getTenantId());
mall.setSubMalls(mallList);
}
return new ResultData(Result.SUCCESS, "查询成功", mall); return new ResultData(Result.SUCCESS, "查询成功", mall);
} }




+ 112
- 37
mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java Просмотреть файл

@@ -9,6 +9,7 @@ import com.iformall.domain.po.WxMall;
import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxMerchantBUser;
import com.iformall.domain.po.WxScoreRules; import com.iformall.domain.po.WxScoreRules;
import com.iformall.domain.vo.WxMerchantBuInfoVo;
import com.iformall.enums.EnumCreditLockedStatus; import com.iformall.enums.EnumCreditLockedStatus;
import com.iformall.enums.EnumMerchantBUserStatus; import com.iformall.enums.EnumMerchantBUserStatus;
import com.iformall.enums.EnumMerchantStatus; import com.iformall.enums.EnumMerchantStatus;
@@ -27,6 +28,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;


import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;


@RestController @RestController
@@ -73,7 +75,7 @@ public class WxMerchantBUserController extends BaseController {
return new ResultData(ErrorCode.MCH_INFO_NOT_FOUND); return new ResultData(ErrorCode.MCH_INFO_NOT_FOUND);
} }


WxMall mall = wxMallService.getByTenantId(merchant.getTenantId());
WxMall mall = wxMallService.getByTenantInfo(merchant);
if (mall == null){ if (mall == null){
return new ResultData(ErrorCode.MALL_INFO_NOT_FOUND); return new ResultData(ErrorCode.MALL_INFO_NOT_FOUND);
} }
@@ -83,13 +85,14 @@ public class WxMerchantBUserController extends BaseController {
if (scoreRules.getCreditLocked().equals(EnumCreditLockedStatus.CLOSE.getCode())) { if (scoreRules.getCreditLocked().equals(EnumCreditLockedStatus.CLOSE.getCode())) {
resultMap.put("creditLocked", EnumCreditLockedStatus.CLOSE.getCode()); resultMap.put("creditLocked", EnumCreditLockedStatus.CLOSE.getCode());
} }
resultMap.put("tenant_id",merchant.getTenantId());
resultMap.put("sub_tenant_id",merchant.getSubTenantId());
resultMap.put("phone", user.getPhone()); resultMap.put("phone", user.getPhone());
resultMap.put("name", user.getName()); resultMap.put("name", user.getName());
resultMap.put("merchant_name", merchant.getName()); resultMap.put("merchant_name", merchant.getName());
resultMap.put("merchant_img_url", merchant.getImgUrl()); resultMap.put("merchant_img_url", merchant.getImgUrl());
resultMap.put("mall_name", mall.getName()); resultMap.put("mall_name", mall.getName());
resultMap.put("service_phone", mall.getServicePhone()); resultMap.put("service_phone", mall.getServicePhone());
resultMap.put("tenant_id",merchant.getTenantId());
resultMap.put("merchant_id",merchant.getId()); resultMap.put("merchant_id",merchant.getId());
resultMap.put("is_admin",merchant.getIsAdmin()); resultMap.put("is_admin",merchant.getIsAdmin());
resultMap.put("businessId", merchant.getBusinessId()); resultMap.put("businessId", merchant.getBusinessId());
@@ -138,63 +141,135 @@ public class WxMerchantBUserController extends BaseController {


HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String ipaddress = IPUtil.getIpAddr(request); String ipaddress = IPUtil.getIpAddr(request);
if (!StringUtils.isBlank(latitude) && !StringUtils.isBlank(longitude)) {
if (StringUtils.isNotBlank(latitude) && StringUtils.isNotBlank(longitude)) {
logger.info("B端用户: " + phone + " 登录 IP" + ipaddress + ", 经纬度(" + longitude + "," + latitude + ")"); logger.info("B端用户: " + phone + " 登录 IP" + ipaddress + ", 经纬度(" + longitude + "," + latitude + ")");
} }
WxMerchantBUser user = new WxMerchantBUser();
user.setAppId(appId);
user.setPhone(phone);
user.setStatus(EnumMerchantBUserStatus.VALID.getCode());
WxMerchantBUser user1 = null;
try {
user1 = wxMerchantBUserService.getBUserByAppId(user);
} catch (Exception e) {
logger.error(e.getMessage());
WxMerchantBUser userQ = new WxMerchantBUser();
userQ.setAppId(appId);
userQ.setPhone(phone);
userQ.setStatus(EnumMerchantBUserStatus.VALID.getCode());
List<WxMerchantBUser> orgList = wxMerchantBUserService.getBUserByAppId(userQ);

if (orgList.size() == 1) {
// 集团内只发现一个用户
WxMerchantBUser orgUser = orgList.get(0);
if (orgUser != null) {
// check password
if (orgUser.getUserPwd().equalsIgnoreCase(password)) {
// check merchant 状态
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());
}
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("bUserId", orgUser.getId());
resultMap.put("logined", true);
return new ResultData(resultMap);
} else {
return new ResultData(ErrorCode.PASSWORD_ERROR);
}
} else {
logger.error("B端用户不存在, phone: " + phone);
return new ResultData(ErrorCode.USER_IS_EMPTY);
}
} else if (orgList.size() > 1) {
// 集团内发现多个用户, 系统会保证密码一致
WxMerchantBUser orgUser = orgList.get(0);
if (orgUser != null) {
// check password
if (orgUser.getUserPwd().equalsIgnoreCase(password)) {
// 返回多个(商场+商户)
List<WxMerchantBuInfoVo> merchantListInfo = wxMerchantBUserService.getMerchantInfoByBUser(userQ);
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("merchantList", merchantListInfo);
resultMap.put("logined", true);
return new ResultData(resultMap);
} else {
logger.error(ErrorCode.PASSWORD_ERROR.getMessage());
return new ResultData(ErrorCode.PASSWORD_ERROR);
}
} else {
logger.error("B端用户不存在, phone: " + phone);
return new ResultData(ErrorCode.USER_IS_EMPTY);
}
} else {
logger.error("B端用户不存在, phone: " + phone); logger.error("B端用户不存在, phone: " + phone);
return new ResultData(ErrorCode.USER_IS_EMPTY); return new ResultData(ErrorCode.USER_IS_EMPTY);
} }
}


if (user1 != null) {
// check merchant 状态
WxMerchant merchant = null;
try {
merchant = wxMerchantService.getById(user1.getMerchantId());
} catch (Exception e) {
logger.error(ErrorCode.DB_FAIL.getMessage() + ": " + user1.getMerchantId() + e.getMessage());
return new ResultData(ErrorCode.DB_FAIL);
}
if (merchant == null) {
logger.error(ErrorCode.MERCHANT_INFO_NOT_FOUND.getMessage() + ": " + user1.getMerchantId());
return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND);
}
if (merchant.getStatus().equals(EnumMerchantStatus.NOT_VALID.getCode())) {
logger.error(ErrorCode.MERCHANT_INFO_NOT_VALID.getMessage() + ": " + user1.getMerchantId());
return new ResultData(ErrorCode.MERCHANT_INFO_NOT_VALID);
}
// check password
if (user1.getUserPwd().equalsIgnoreCase(password)) {
@AuthIgnore
@PostMapping("/selectMerchant")
@ApiOperation(value = "选择商户", notes = "{" +
"\"buUserId\":\"string\"," +
"\"merchantId\":\"string\"}")
public ResultData selectMerchant(@RequestBody Map<String, String> map) {
String buUserIdStr = map.get("buUserId");
String merchantIdStr = map.get("merchantId");

if (StringUtils.isBlank(buUserIdStr)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "buUserId不能为空");
}
if (StringUtils.isBlank(merchantIdStr)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantId不能为空");
}

WxMerchantBUser userQ = new WxMerchantBUser();
userQ.setId(Long.valueOf(buUserIdStr));
userQ.setMerchantId(Long.valueOf(merchantIdStr));
List<WxMerchantBUser> orgList = wxMerchantBUserService.getBUserByAppId(userQ);
if (orgList.size() == 1) {
WxMerchantBUser orgUser = orgList.get(0);
if (orgUser != null) {
ResultData merchantStatus = checkMerchantStatus(orgUser);
if (merchantStatus != null) return merchantStatus;
try { try {
wxMerchantBUserService.saveOrUpdate(user1);
wxMerchantBUserService.saveOrUpdate(orgUser);
} catch (Exception e) { } catch (Exception e) {
logger.error("B端用户更新用户信息失败, e:" + e.getMessage()); logger.error("B端用户更新用户信息失败, e:" + e.getMessage());
return new ResultData(ErrorCode.DB_FAIL.getCode(), "数据库保存失败,e:" + e.getMessage()); return new ResultData(ErrorCode.DB_FAIL.getCode(), "数据库保存失败,e:" + e.getMessage());
} }
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
resultMap.put("bUserId", user1.getId());
resultMap.put("bUserId", orgUser.getId());
resultMap.put("logined", true);
return new ResultData(resultMap); return new ResultData(resultMap);
} else { } else {
return new ResultData(ErrorCode.PASSWORD_ERROR);
logger.error("B端用户不存在");
return new ResultData(ErrorCode.USER_IS_EMPTY);
} }
} else { } else {
logger.error("B端用户不存在, phone: " + phone);
return new ResultData(ErrorCode.USER_IS_EMPTY);
return new ResultData(ErrorCode.USER_NO_PERMISSION);
} }


} }


private ResultData checkMerchantStatus(WxMerchantBUser orgUser) {
WxMerchant merchant = null;
try {
merchant = wxMerchantService.getById(orgUser.getMerchantId());
} catch (Exception e) {
logger.error(ErrorCode.DB_FAIL.getMessage() + ": " + orgUser.getMerchantId() + e.getMessage());
return new ResultData(ErrorCode.DB_FAIL);
}
if (merchant == null) {
logger.error(ErrorCode.MERCHANT_INFO_NOT_FOUND.getMessage() + ": " + orgUser.getMerchantId());
return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND);
}
if (!merchant.checkStatus()) {
logger.error(ErrorCode.MERCHANT_INFO_NOT_VALID.getMessage() + ": " + orgUser.getMerchantId());
return new ResultData(ErrorCode.MERCHANT_INFO_NOT_VALID);
}
return null;
}



@AuthIgnore @AuthIgnore
@ApiOperation(value = "修改密码", notes = "{\"appId\",\"string\", \"phone\",\"string\",\"code\",\"string\",\"pwd\",\"string\"}")
@ApiOperation(value = "修改密码,集团版会修改集团下同一手机号的密码", notes = "{\"appId\",\"string\", \"phone\",\"string\",\"code\",\"string\",\"pwd\",\"string\"}")
@PostMapping("/updatepwd") @PostMapping("/updatepwd")
public ResultData updatepwd(@RequestBody Map<String, String> params) { public ResultData updatepwd(@RequestBody Map<String, String> params) {
// String phone,String code,String pwd // String phone,String code,String pwd


+ 4
- 0
mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java Просмотреть файл

@@ -459,6 +459,10 @@ public class WxMicroPayController extends BaseController {
logger.error("微信收款码/authCode不能为空"); logger.error("微信收款码/authCode不能为空");
return new ResultData(ErrorCode.MICRO_PAY_NO_AUTHCODE.getCode(), "请提供微信收款码"); return new ResultData(ErrorCode.MICRO_PAY_NO_AUTHCODE.getCode(), "请提供微信收款码");
} }
if (!checkAuthCode(authCode)) {
logger.error("authCode不符合规则");
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "authCode不符合规则");
}


WxPayOrder record = new WxPayOrder(); WxPayOrder record = new WxPayOrder();
record.updateTenantInfo(user); record.updateTenantInfo(user);


+ 8
- 3
mallinkBApi/src/main/java/com/iformall/controller/WxMsgValidationcodeController.java Просмотреть файл

@@ -20,6 +20,8 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;


import java.util.List;

@RestController @RestController
@RequestMapping("wxMsgValidationcode") @RequestMapping("wxMsgValidationcode")
@Api(description="短信验证相关接口") @Api(description="短信验证相关接口")
@@ -49,11 +51,12 @@ public class WxMsgValidationcodeController extends BaseController {
userQ.setPhone(phone); userQ.setPhone(phone);
userQ.setStatus(EnumMerchantBUserStatus.VALID.getCode()); userQ.setStatus(EnumMerchantBUserStatus.VALID.getCode());


WxMerchantBUser user=wxMerchantBUserService.getBUserByAppId(userQ);
if (user==null) {
List<WxMerchantBUser> orgUserList = wxMerchantBUserService.getBUserByAppId(userQ);
if (orgUserList.size() <= 0) {
logger.error("B端用户不存在, phone: " + phone); logger.error("B端用户不存在, phone: " + phone);
return new ResultData(ErrorCode.USER_IS_EMPTY); return new ResultData(ErrorCode.USER_IS_EMPTY);
} }
WxMerchantBUser user = orgUserList.get(0);


WxMerchant merchant = wxMerchantService.getById(user.getMerchantId()); WxMerchant merchant = wxMerchantService.getById(user.getMerchantId());
if (merchant==null) { if (merchant==null) {
@@ -77,14 +80,16 @@ public class WxMsgValidationcodeController extends BaseController {
@GetMapping("hasvalidationcode") @GetMapping("hasvalidationcode")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "tenantId", value = "租户ID", dataType = "String", paramType = "query"), @ApiImplicitParam(name = "tenantId", value = "租户ID", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "subTenantId", value = "子租户ID", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true), @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true),
@ApiImplicitParam(name = "type", value = "场景", dataType = "Integer", paramType = "query", required = true), @ApiImplicitParam(name = "type", value = "场景", dataType = "Integer", paramType = "query", required = true),
@ApiImplicitParam(name = "code", value = "验证码", dataType = "String", paramType = "query", required = true), @ApiImplicitParam(name = "code", value = "验证码", dataType = "String", paramType = "query", required = true),
@ApiImplicitParam(name = "appid", value = "appid", dataType = "String", paramType = "query", required = true)}) @ApiImplicitParam(name = "appid", value = "appid", dataType = "String", paramType = "query", required = true)})
public ResultData hasvalidationcode(String tenantId, String phone, Integer type, String code, String appid) {
public ResultData hasvalidationcode(String tenantId, String subTenantId, String phone, Integer type, String code, String appid) {
WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode();
wxMsgValidationcode.updateTenantInfo(new TenantEntity(){{ wxMsgValidationcode.updateTenantInfo(new TenantEntity(){{
setTenantId(tenantId); setTenantId(tenantId);
setSubTenantId(subTenantId);
}}); }});
wxMsgValidationcode.setPhone(phone); wxMsgValidationcode.setPhone(phone);
wxMsgValidationcode.setType(EnumMsgModel.VALIDATION_CODE.getCode()); wxMsgValidationcode.setType(EnumMsgModel.VALIDATION_CODE.getCode());


+ 78
- 0
mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java Просмотреть файл

@@ -26,8 +26,24 @@ public class TenantInfoImpl implements TenantInfo {
return tenantId; return tenantId;
} }


@Override
public String getSubTenantId() {
String subTenantId = null;
try {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
subTenantId = (String) request.getAttribute(Constant.SUB_TENANT_ID);
return subTenantId;
} catch (Exception e) {
logger.error(e.getMessage());
}
return subTenantId;
}

@Override @Override
public boolean doTableFilter(String tableName) { public boolean doTableFilter(String tableName) {
if ("wx_mall".equals(tableName)) {
return true;
}
if ("mall_permission".equals(tableName)) { if ("mall_permission".equals(tableName)) {
return true; return true;
} }
@@ -72,6 +88,68 @@ public class TenantInfoImpl implements TenantInfo {
return false; return false;
} }


@Override
public boolean doTableFilterSub(String tableName) {
if ("wx_mall".equals(tableName)) {
return true;
}
if ("wx_appinfo".equals(tableName)) {
return true;
}
if ("wx_authorizer_info".equals(tableName)) {
return true;
}
if ("wx_c_user".equals(tableName)) {
return true;
}
if ("wx_c_user_basic_info".equals(tableName)) {
return true;
}
if ("wx_c_user_car".equals(tableName)) {
return true;
}
if ("wx_c_user_from_b".equals(tableName)) {
return true;
}
if ("wx_c_user_tags".equals(tableName)) {
return true;
}
if ("wx_cuser_floating_layer".equals(tableName)) {
return true;
}
if ("wx_buser".equals(tableName)) {
return true;
}
if ("wx_floating_layer".equals(tableName)) {
return true;
}
if ("wx_user_visit".equals(tableName)) {
return true;
}
if ("wx_level_config".equals(tableName)) {
return true;
}
if ("wx_score_rules".equals(tableName)) {
return true;
}
if ("view_coupon_data".equals(tableName)) {
return true;
}
if ("view_touch_user".equals(tableName)) {
return true;
}
if ("wx_weapp_audit_status".equals(tableName)) {
return true;
}
if ("wx_weapp_code_status".equals(tableName)) {
return true;
}
if ("wx_weapp_release_status".equals(tableName)) {
return true;
}
return false;
}

@Override @Override
public boolean doMappedStatementFIlter(MappedStatement ms) { public boolean doMappedStatementFIlter(MappedStatement ms) {
if ("com.iformall.mapper.WxMerchantBUserMapper.getByToken".equals(ms.getId())) if ("com.iformall.mapper.WxMerchantBUserMapper.getByToken".equals(ms.getId()))


+ 2
- 3
mallinkBApi/src/main/resources/application-dev.yml Просмотреть файл

@@ -31,7 +31,7 @@ spring:
password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk) password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk)
timeout: 3600 timeout: 3600
expire: 1800 #30分钟 expire: 1800 #30分钟
database: 1
database: 5
defaultExpiration: 2592000 # 默认生命周期30天 defaultExpiration: 2592000 # 默认生命周期30天
jedis: jedis:
pool: pool:
@@ -110,7 +110,7 @@ wechat:
min-idle: 10 min-idle: 10


fm: fm:
exception: false
exception: true
exception_emails: houtaikaifa@iformall.com exception_emails: houtaikaifa@iformall.com
deploy: 1 deploy: 1
open: true open: true
@@ -125,6 +125,5 @@ pos:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall.mapper: debug com.iformall.mapper: debug
path: ./logs/b path: ./logs/b

+ 0
- 1
mallinkBApi/src/main/resources/application-prod.yml Просмотреть файл

@@ -102,6 +102,5 @@ pos:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall.mapper: debug com.iformall.mapper: debug
path: ./logs/b path: ./logs/b

+ 0
- 1
mallinkBApi/src/main/resources/application-test.yml Просмотреть файл

@@ -102,6 +102,5 @@ pos:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall: debug com.iformall: debug
path: ./logs/b path: ./logs/b

+ 1
- 0
mallinkCApi/src/main/java/com/iformall/config/MyBatisConfiguration.java Просмотреть файл

@@ -14,6 +14,7 @@ public class MyBatisConfiguration {
MultiTenancy multiTenancy = new MultiTenancy(); MultiTenancy multiTenancy = new MultiTenancy();
Properties properties = new Properties(); Properties properties = new Properties();
properties.setProperty("tenantIdColumn", "tenant_id"); properties.setProperty("tenantIdColumn", "tenant_id");
properties.setProperty("subTenantIdColumn", "sub_tenant_id");
properties.setProperty("dialect", "mysql"); properties.setProperty("dialect", "mysql");
properties.setProperty("tenantInfo", "com.iformall.tenant.TenantInfoImpl"); properties.setProperty("tenantInfo", "com.iformall.tenant.TenantInfoImpl");
multiTenancy.setProperties(properties); multiTenancy.setProperties(properties);


+ 9
- 1
mallinkCApi/src/main/java/com/iformall/controller/BaseController.java Просмотреть файл

@@ -79,8 +79,10 @@ public class BaseController {
public TenantEntity getTenantInfo() { public TenantEntity getTenantInfo() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String tenantId = (String) request.getAttribute(Constant.TENANT_ID); String tenantId = (String) request.getAttribute(Constant.TENANT_ID);
String subTenantId = (String) request.getAttribute(Constant.SUB_TENANT_ID);
TenantEntity tenantEntity = new TenantEntity() {{ TenantEntity tenantEntity = new TenantEntity() {{
setTenantId(tenantId); setTenantId(tenantId);
setSubTenantId(subTenantId);
}}; }};
return tenantEntity; return tenantEntity;
} }
@@ -100,7 +102,13 @@ public class BaseController {
if (user == null) { if (user == null) {
throw new MallinkException(ErrorCode.USER_IS_EMPTY); throw new MallinkException(ErrorCode.USER_IS_EMPTY);
} }
user.updateTenantInfo(getTenantInfo());
TenantEntity tenantEntity = getTenantInfo();
if (user.getTenantId() == null) {
user.setTenantId(tenantEntity.getTenantId());
}
if (user.getSubTenantId() == null) {
user.setSubTenantId(tenantEntity.getSubTenantId());
}
return user; return user;
} }




+ 21
- 4
mallinkCApi/src/main/java/com/iformall/controller/UploadController.java Просмотреть файл

@@ -13,8 +13,10 @@ import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest; import com.amazonaws.services.s3.model.PutObjectRequest;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.config.AwsProperty; import com.iformall.config.AwsProperty;
import com.iformall.domain.po.base.TenantEntity;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -100,6 +102,15 @@ public class UploadController extends BaseController {
return data; return data;
} }


private String getFileName(TenantEntity tenantEntity, String fileName) {
if (StringUtils.isBlank(tenantEntity.getSubTenantId())) {
fileName = tenantEntity.getTenantId() + "/" + fileName;
} else {
fileName = tenantEntity.getTenantId() + "/" + tenantEntity.getSubTenantId() + "/" + fileName;
}
return fileName;
}

/** /**
* 上传文件 * 上传文件
* *
@@ -112,6 +123,8 @@ public class UploadController extends BaseController {
public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) { public ResultData awsfileUpload(@RequestParam("file") MultipartFile multiReq) {
logger.info("[" + getIpAddr() + "] UploadController::awsfileUpload"); logger.info("[" + getIpAddr() + "] UploadController::awsfileUpload");


TenantEntity tenantEntity = getTenantInfo();

ObjectMetadata metadata = new ObjectMetadata(); ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType(multiReq.getContentType()); metadata.setContentType(multiReq.getContentType());
metadata.setContentLength(multiReq.getSize()); metadata.setContentLength(multiReq.getSize());
@@ -122,9 +135,10 @@ public class UploadController extends BaseController {
String fileName = UUID.randomUUID().toString(); String fileName = UUID.randomUUID().toString();
int dot = multiReq.getOriginalFilename().lastIndexOf('.'); int dot = multiReq.getOriginalFilename().lastIndexOf('.');
if (dot >= 0) { if (dot >= 0) {
fileName = getTenantId() + "/" + fileName + multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length());
String fileFormat = multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length());
fileName = getFileName(tenantEntity, fileName + fileFormat);
} else { } else {
fileName = getTenantId() + "/" + fileName;
fileName = getFileName(tenantEntity, fileName);
} }


ResultData data = awsUpload(multiReq, metadata, fileName); ResultData data = awsUpload(multiReq, metadata, fileName);
@@ -143,6 +157,8 @@ public class UploadController extends BaseController {
public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) { public ResultData awsFilesUpload(@RequestParam("files") MultipartFile[] files) {
logger.info("[" + getIpAddr() + "] UploadController::awsFilesUpload"); logger.info("[" + getIpAddr() + "] UploadController::awsFilesUpload");


TenantEntity tenantEntity = getTenantInfo();

if (files.length > 0) { if (files.length > 0) {
ResultData data = new ResultData(); ResultData data = new ResultData();
List<Map<String, String>> dataList = new ArrayList<Map<String, String>>(); List<Map<String, String>> dataList = new ArrayList<Map<String, String>>();
@@ -161,9 +177,10 @@ public class UploadController extends BaseController {
String fileName = UUID.randomUUID().toString(); String fileName = UUID.randomUUID().toString();
int dot = multipartFile.getOriginalFilename().lastIndexOf('.'); int dot = multipartFile.getOriginalFilename().lastIndexOf('.');
if (dot >= 0) { if (dot >= 0) {
fileName = getTenantId() + "/" + fileName + multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length());
String fileFormat = multipartFile.getOriginalFilename().substring(dot, multipartFile.getOriginalFilename().length());
fileName = getFileName(tenantEntity, fileName + fileFormat);
} else { } else {
fileName = getTenantId() + "/" + fileName;
fileName = getFileName(tenantEntity, fileName);
} }


ResultData data1 = awsUpload(multipartFile, metadata, fileName); ResultData data1 = awsUpload(multipartFile, metadata, fileName);


+ 1
- 1
mallinkCApi/src/main/java/com/iformall/controller/WxActivityJoinController.java Просмотреть файл

@@ -42,8 +42,8 @@ public class WxActivityJoinController extends BaseController {
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
public ResultData list(@ModelAttribute WxActivityJoin wxActivityJoin, Integer pageNum, Integer pageSize) { public ResultData list(@ModelAttribute WxActivityJoin wxActivityJoin, Integer pageNum, Integer pageSize) {
if (null == wxActivityJoin) wxActivityJoin = new WxActivityJoin(); if (null == wxActivityJoin) wxActivityJoin = new WxActivityJoin();
wxActivityJoin.setUserId(getUserId());
wxActivityJoin.updateTenantInfo(getTenantInfo()); wxActivityJoin.updateTenantInfo(getTenantInfo());
wxActivityJoin.setUserId(getUserId());
wxActivityJoin.setSortColumns(BaseEntity.SortField.CreateTime_DESC); wxActivityJoin.setSortColumns(BaseEntity.SortField.CreateTime_DESC);
final PageInfo<WxActivity> page = wxActivityJoinService.clistAsPage(wxActivityJoin, pageNum, pageSize); final PageInfo<WxActivity> page = wxActivityJoinService.clistAsPage(wxActivityJoin, pageNum, pageSize);
return new ResultData(page); return new ResultData(page);


+ 2
- 2
mallinkCApi/src/main/java/com/iformall/controller/WxCampaignController.java Просмотреть файл

@@ -7,6 +7,7 @@ import com.iformall.common.ResultData;
import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.po.WxCampaign; import com.iformall.domain.po.WxCampaign;
import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.po.WxCouponChannel;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxCouponChannelVo; import com.iformall.domain.vo.WxCouponChannelVo;
import com.iformall.enums.EnumCampaignStatus; import com.iformall.enums.EnumCampaignStatus;
import com.iformall.enums.EnumCouponChannelType; import com.iformall.enums.EnumCouponChannelType;
@@ -47,9 +48,8 @@ public class WxCampaignController extends BaseController {
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
public ResultData list(@ModelAttribute WxCampaign wxCampaign, Integer pageNum, Integer pageSize) { public ResultData list(@ModelAttribute WxCampaign wxCampaign, Integer pageNum, Integer pageSize) {
if (null == wxCampaign) wxCampaign = new WxCampaign(); if (null == wxCampaign) wxCampaign = new WxCampaign();

wxCampaign.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode());
wxCampaign.updateTenantInfo(getTenantInfo()); wxCampaign.updateTenantInfo(getTenantInfo());
wxCampaign.setStatus(EnumCampaignStatus.STATUS_THROW_IN.getCode());
wxCampaign.setSortColumns(BaseEntity.SortField.SortNum_ASC, BaseEntity.SortField.CreateTime_ASC); wxCampaign.setSortColumns(BaseEntity.SortField.SortNum_ASC, BaseEntity.SortField.CreateTime_ASC);
// TODO 缓存优化 // TODO 缓存优化
final PageInfo<WxCampaign> page = wxCampaignService.clistAsPage(wxCampaign, pageNum, pageSize); final PageInfo<WxCampaign> page = wxCampaignService.clistAsPage(wxCampaign, pageNum, pageSize);


+ 31
- 31
mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java Просмотреть файл

@@ -256,14 +256,14 @@ public class WxCarController extends BaseController {
WxPark park = getCurrentPark(getTenantInfo()); WxPark park = getCurrentPark(getTenantInfo());
// 2. get vendor params // 2. get vendor params
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
return etcpBindCar(paramMap, park);
return etcpBindCar(paramMap, park, getUserId());
} else { } else {
// 内部操作 // 内部操作
return bindCar(paramMap, park);
return bindCar(paramMap, park, getUserId());
} }
} }


private ResultData etcpBindCar(Map<String, String> paramMap, WxPark park) {
private ResultData etcpBindCar(Map<String, String> paramMap, WxPark park, Long cuUserId) {
String etcpToken = paramMap.get("etcpToken"); String etcpToken = paramMap.get("etcpToken");
if (StringUtils.isBlank(etcpToken)) { if (StringUtils.isBlank(etcpToken)) {
logger.error("etcpToken为空"); logger.error("etcpToken为空");
@@ -290,7 +290,7 @@ public class WxCarController extends BaseController {
} }
JSONObject retObj = JSON.parseObject(ret); JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == 0) { if (retObj.getIntValue("code") == 0) {
addCarInfoToDB(carNumber, EnumCarVendor.CAR_ETCP);
addCarInfoToDB(carNumber, EnumCarVendor.CAR_ETCP, park, cuUserId);
JSONObject dataObj = retObj.getJSONObject("data"); JSONObject dataObj = retObj.getJSONObject("data");
return new ResultData(dataObj); return new ResultData(dataObj);
} else { } else {
@@ -300,14 +300,14 @@ public class WxCarController extends BaseController {
} }
} }


private ResultData bindCar(Map<String, String> paramMap, WxPark park) {
private ResultData bindCar(Map<String, String> paramMap, WxPark park, Long cuUserId) {
String carNumber = paramMap.get("carNumber"); String carNumber = paramMap.get("carNumber");
if (StringUtils.isBlank(carNumber)) { if (StringUtils.isBlank(carNumber)) {
logger.error("carNumber为空"); logger.error("carNumber为空");
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空");
} }
try { try {
addCarInfoToDB(carNumber, EnumCarVendor.getEnum(park.getVendorType()));
addCarInfoToDB(carNumber, EnumCarVendor.getEnum(park.getVendorType()), park, cuUserId);
} catch (MallinkException e) { } catch (MallinkException e) {
return new ResultData(e.getErrorCode(), e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage());
} catch (Exception e) { } catch (Exception e) {
@@ -316,12 +316,12 @@ public class WxCarController extends BaseController {
return new ResultData(); return new ResultData();
} }


private void addCarInfoToDB(String carNumber, EnumCarVendor carVendor) {
private void addCarInfoToDB(String carNumber, EnumCarVendor carVendor, WxPark park, Long cuUserId) {
// 插入车牌 // 插入车牌
Date curr = new Date(); Date curr = new Date();
WxCUserCar userCar = new WxCUserCar(); WxCUserCar userCar = new WxCUserCar();
userCar.setCUserId(getUserId()); userCar.setCUserId(getUserId());
userCar.updateTenantInfo(getTenantInfo());
userCar.updateTenantInfo(park);
userCar.setCarNumber(carNumber); userCar.setCarNumber(carNumber);
userCar.setVendorType(carVendor.getCode()); userCar.setVendorType(carVendor.getCode());
userCar.setCreateDate(curr); userCar.setCreateDate(curr);
@@ -331,11 +331,11 @@ public class WxCarController extends BaseController {
// 成长值 // 成长值
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR, userCar); wxScoreRulesService.addScore(EnumScoreType.BIND_CAR, userCar);
//增加积分 //增加积分
addCredit();
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR, getUserId());
addCredit(park, cuUserId);
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId());
} }


private ResultData tjdBindCar(@RequestBody Map<String, String> paramMap, WxPark park) {
private ResultData tjdBindCar(@RequestBody Map<String, String> paramMap, WxPark park, Long cuUserId) {
String carNumber = paramMap.get("carNumber"); String carNumber = paramMap.get("carNumber");
if (StringUtils.isBlank(carNumber)) { if (StringUtils.isBlank(carNumber)) {
logger.error("carNumber为空"); logger.error("carNumber为空");
@@ -364,7 +364,7 @@ public class WxCarController extends BaseController {
JSONObject retObj = JSON.parseObject(ret); JSONObject retObj = JSON.parseObject(ret);
retObj.put("vendor", park.getVendorType()); retObj.put("vendor", park.getVendorType());
if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) {
ResultData e = tjdInsertToDB(carNumber, newCarId, retObj);
ResultData e = tjdInsertToDB(carNumber, newCarId, retObj, park, cuUserId);
if (e != null) return e; if (e != null) return e;
return new ResultData(retObj); return new ResultData(retObj);
} else { } else {
@@ -372,14 +372,14 @@ public class WxCarController extends BaseController {
} }
} }


private ResultData tjdInsertToDB(String carNumber, Long newCarId, JSONObject retObj) {
private ResultData tjdInsertToDB(String carNumber, Long newCarId, JSONObject retObj, WxPark park, Long cuUserId) {
String carId = retObj.getString("carId"); String carId = retObj.getString("carId");
// 插入车牌 // 插入车牌
Date curr = new Date(); Date curr = new Date();
WxCUserCar userCar = new WxCUserCar(); WxCUserCar userCar = new WxCUserCar();
userCar.setId(newCarId); userCar.setId(newCarId);
userCar.setCUserId(getUserId());
userCar.updateTenantInfo(getTenantInfo());
userCar.setCUserId(cuUserId);
userCar.updateTenantInfo(park);
userCar.setCarNumber(carNumber); userCar.setCarNumber(carNumber);
userCar.setVendorType(EnumCarVendor.CAR_TJD.getCode()); userCar.setVendorType(EnumCarVendor.CAR_TJD.getCode());
JSONObject jo = new JSONObject(); JSONObject jo = new JSONObject();
@@ -391,7 +391,7 @@ public class WxCarController extends BaseController {
wxCUserCarService.save(userCar); wxCUserCarService.save(userCar);
wxScoreRulesService.addScore(EnumScoreType.BIND_CAR, userCar); wxScoreRulesService.addScore(EnumScoreType.BIND_CAR, userCar);
//增加积分 //增加积分
addCredit();
addCredit(park, cuUserId);
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage()); logger.error(e.getMessage());
return new ResultData(ErrorCode.DB_FAIL.getCode(), "TJD保存车牌失败, e:" + e.getMessage()); return new ResultData(ErrorCode.DB_FAIL.getCode(), "TJD保存车牌失败, e:" + e.getMessage());
@@ -402,14 +402,14 @@ public class WxCarController extends BaseController {
} }


//-----增加积分start----- //-----增加积分start-----
private void addCredit() {
private void addCredit(WxPark park, Long cuUserId){
WxCreditHistory wxCreditHistory = new WxCreditHistory(); WxCreditHistory wxCreditHistory = new WxCreditHistory();
wxCreditHistory.setCUserId(getUserId());
wxCreditHistory.updateTenantInfo(getTenantInfo());
wxCreditHistory.setCUserId(cuUserId);
wxCreditHistory.updateTenantInfo(park);
wxCreditHistory.setCreateDate(new Date()); wxCreditHistory.setCreateDate(new Date());
wxCreditHistory.setCreditType(EnumScoreType.BIND_CAR.getCode()); wxCreditHistory.setCreditType(EnumScoreType.BIND_CAR.getCode());
wxCreditHistory.setOperatorType(EnumUserType.CUSER.getCode()); wxCreditHistory.setOperatorType(EnumUserType.CUSER.getCode());
wxCreditHistory.setOperatorId(getUserId());
wxCreditHistory.setOperatorId(cuUserId);
wxCreditHistoryService.saveOrUpdate(wxCreditHistory); wxCreditHistoryService.saveOrUpdate(wxCreditHistory);
} }


@@ -430,13 +430,13 @@ public class WxCarController extends BaseController {
// 1, get mall's park // 1, get mall's park
WxPark park = getCurrentPark(getTenantInfo()); WxPark park = getCurrentPark(getTenantInfo());
if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) { if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) {
return etcpUnbindCar(paramMap, park);
return etcpUnbindCar(paramMap, park, getUserId());
} else { } else {
return unbindCar(paramMap, park);
return unbindCar(paramMap, park, getUserId());
} }
} }


private ResultData etcpUnbindCar(Map<String, String> paramMap, WxPark park) {
private ResultData etcpUnbindCar(Map<String, String> paramMap, WxPark park, Long cuUserId) {
String etcpToken = paramMap.get("etcpToken"); String etcpToken = paramMap.get("etcpToken");
if (StringUtils.isBlank(etcpToken)) { if (StringUtils.isBlank(etcpToken)) {
logger.error("etcpToken为空"); logger.error("etcpToken为空");
@@ -466,8 +466,8 @@ public class WxCarController extends BaseController {
if (retObj.getIntValue("code") == 0) { if (retObj.getIntValue("code") == 0) {
try { try {
WxCUserCar userCar = new WxCUserCar(); WxCUserCar userCar = new WxCUserCar();
userCar.setCUserId(getUserId());
userCar.updateTenantInfo(getTenantInfo());
userCar.setCUserId(cuUserId);
userCar.updateTenantInfo(park);
userCar.setCarNumber(carNumber); userCar.setCarNumber(carNumber);
wxCUserCarService.deleteByObj(userCar); wxCUserCarService.deleteByObj(userCar);
} catch (Exception e) { } catch (Exception e) {
@@ -483,7 +483,7 @@ public class WxCarController extends BaseController {
} }
} }


private ResultData unbindCar(Map<String, String> paramMap, WxPark park) {
private ResultData unbindCar(Map<String, String> paramMap, WxPark park, Long cuUserId) {
String carNumber = paramMap.get("carNumber"); String carNumber = paramMap.get("carNumber");
if (StringUtils.isBlank(carNumber)) { if (StringUtils.isBlank(carNumber)) {
logger.error("carNumber为空"); logger.error("carNumber为空");
@@ -491,8 +491,8 @@ public class WxCarController extends BaseController {
} }
try { try {
WxCUserCar userCar = new WxCUserCar(); WxCUserCar userCar = new WxCUserCar();
userCar.updateTenantInfo(getTenantInfo());
userCar.setCUserId(getUserId());
userCar.updateTenantInfo(park);
userCar.setCUserId(cuUserId);
userCar.setCarNumber(carNumber); userCar.setCarNumber(carNumber);
wxCUserCarService.deleteByObj(userCar); wxCUserCarService.deleteByObj(userCar);
} catch (Exception e) { } catch (Exception e) {
@@ -510,7 +510,7 @@ public class WxCarController extends BaseController {
} }
WxCUserCar queryOne = new WxCUserCar(); WxCUserCar queryOne = new WxCUserCar();
queryOne.setCarNumber(carNumber); queryOne.setCarNumber(carNumber);
queryOne.updateTenantInfo(getTenantInfo());
queryOne.updateTenantInfo(park);
queryOne.setCUserId(getUserId()); queryOne.setCUserId(getUserId());
WxCUserCar userCar = wxCUserCarService.getOne(queryOne); WxCUserCar userCar = wxCUserCarService.getOne(queryOne);
if (userCar != null) { if (userCar != null) {
@@ -749,7 +749,7 @@ public class WxCarController extends BaseController {


WxCouponOrderCarCVo userCar = null; WxCouponOrderCarCVo userCar = null;
WxCouponOrder userCarQ = new WxCouponOrder(); WxCouponOrder userCarQ = new WxCouponOrder();
userCarQ.updateTenantInfo(getTenantInfo());
userCarQ.updateTenantInfo(park);
userCarQ.setCUserId(getUserId()); userCarQ.setCUserId(getUserId());
userCarQ.setId(couponOrderId); userCarQ.setId(couponOrderId);
userCarQ.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); userCarQ.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode());
@@ -797,7 +797,7 @@ public class WxCarController extends BaseController {
// 券状态设为已使用 // 券状态设为已使用
WxCouponOrder couponOrder = new WxCouponOrder(); WxCouponOrder couponOrder = new WxCouponOrder();
couponOrder.setId(userCar.getId()); couponOrder.setId(userCar.getId());
couponOrder.updateTenantInfo(getTenantInfo());
couponOrder.updateTenantInfo(park);
couponOrder.setUpdateDate(new Date()); couponOrder.setUpdateDate(new Date());
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode());
try { try {


+ 1
- 1
mallinkCApi/src/main/java/com/iformall/controller/WxMallController.java Просмотреть файл

@@ -87,7 +87,7 @@ public class WxMallController extends BaseController {
@GetMapping("/mallInfo") @GetMapping("/mallInfo")
public ResultData getMallInfo() { public ResultData getMallInfo() {
//TODO 缓存优化 //TODO 缓存优化
WxMall mall = wxMallService.getByTenantId(getTenantId());
WxMall mall = wxMallService.getByTenantInfo(getTenantInfo());
if (mall == null) { if (mall == null) {
return new ResultData(ErrorCode.MALL_INFO_NOT_FOUND); return new ResultData(ErrorCode.MALL_INFO_NOT_FOUND);
} }


+ 7
- 2
mallinkCApi/src/main/java/com/iformall/controller/WxMerchantController.java Просмотреть файл

@@ -4,7 +4,7 @@ import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode; import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.dto.WxMerchantDto; import com.iformall.domain.dto.WxMerchantDto;
import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxMerchantVo; import com.iformall.domain.vo.WxMerchantVo;
import com.iformall.enums.EnumMerchantPublic; import com.iformall.enums.EnumMerchantPublic;
import com.iformall.enums.EnumMerchantStatus; import com.iformall.enums.EnumMerchantStatus;
@@ -40,6 +40,7 @@ public class WxMerchantController extends BaseController {
public ResultData list(@ModelAttribute WxMerchantDto wxMerchantDto, Integer pageNum, Integer pageSize) { public ResultData list(@ModelAttribute WxMerchantDto wxMerchantDto, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] WxMerchantController::list"); logger.debug("[" + getIpAddr() + "] WxMerchantController::list");
if (null == wxMerchantDto) wxMerchantDto = new WxMerchantDto(); if (null == wxMerchantDto) wxMerchantDto = new WxMerchantDto();
wxMerchantDto.updateTenantInfo(getTenantInfo());
wxMerchantDto.setMerchantStatus(EnumMerchantStatus.VALID.getCode()); wxMerchantDto.setMerchantStatus(EnumMerchantStatus.VALID.getCode());
wxMerchantDto.setIsPublic(EnumMerchantPublic.PUBLIC.getCode()); wxMerchantDto.setIsPublic(EnumMerchantPublic.PUBLIC.getCode());
return new ResultData(wxMerchantService.listAsPageCVo(wxMerchantDto, pageNum, pageSize)); return new ResultData(wxMerchantService.listAsPageCVo(wxMerchantDto, pageNum, pageSize));
@@ -58,7 +59,11 @@ public class WxMerchantController extends BaseController {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
} }
HashMap<String, String> params = new HashMap<String, String>(); HashMap<String, String> params = new HashMap<String, String>();
params.put("tenantId", getTenantId());
TenantEntity tenantEntity = getTenantInfo();
params.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getSubTenantId())) {
params.put("subTenantId", tenantEntity.getSubTenantId());
}
params.put("merchantCode", codeMD5); params.put("merchantCode", codeMD5);
WxMerchantVo wxMerchant = wxMerchantService.getMerchantInfo(params); WxMerchantVo wxMerchant = wxMerchantService.getMerchantInfo(params);
return new ResultData(wxMerchant); return new ResultData(wxMerchant);


+ 0
- 1
mallinkCApi/src/main/java/com/iformall/controller/WxParkController.java Просмотреть файл

@@ -3,7 +3,6 @@ package com.iformall.controller;
import com.iformall.common.ErrorCode; import com.iformall.common.ErrorCode;
import com.iformall.common.Result; import com.iformall.common.Result;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.WxCUser;
import com.iformall.domain.po.WxPark; import com.iformall.domain.po.WxPark;
import com.iformall.service.WxParkService; import com.iformall.service.WxParkService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;


+ 2
- 3
mallinkCApi/src/main/java/com/iformall/controller/WxQuestionController.java Просмотреть файл

@@ -13,7 +13,6 @@ import com.iformall.service.WxCUserTagsService;
import com.iformall.service.WxQuestionService; import com.iformall.service.WxQuestionService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import net.sf.saxon.trans.Err;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -59,7 +58,7 @@ public class WxQuestionController extends BaseController {
if (wxQuestionConfig.getStatus().equals(EnumQuestionConfigStatus.ON.getCode()) if (wxQuestionConfig.getStatus().equals(EnumQuestionConfigStatus.ON.getCode())
&& questionIds.size() > 0) { && questionIds.size() > 0) {
WxQuestion wxQuestion = new WxQuestion(); WxQuestion wxQuestion = new WxQuestion();
wxQuestion.updateTenantInfo(getTenantInfo());
wxQuestion.updateTenantInfo(wxQuestionConfig);
wxQuestion.setIds(questionIds); wxQuestion.setIds(questionIds);
List<WxQuestion> listQuestion = wxQuestionService.findList(wxQuestion); List<WxQuestion> listQuestion = wxQuestionService.findList(wxQuestion);
if (listQuestion.size() > 0) { if (listQuestion.size() > 0) {
@@ -69,7 +68,7 @@ public class WxQuestionController extends BaseController {
WxQuestion x = q.next(); WxQuestion x = q.next();
wxQuestionLog.setQuestionId(x.getId()); wxQuestionLog.setQuestionId(x.getId());
wxQuestionLog.setUserId(getUserId()); wxQuestionLog.setUserId(getUserId());
wxQuestionLog.updateTenantInfo(getTenantInfo());
wxQuestionLog.updateTenantInfo(wxQuestionConfig);


if(wxQuestionService.findLogList(wxQuestionLog).size()>0){ if(wxQuestionService.findLogList(wxQuestionLog).size()>0){
q.remove(); q.remove();


+ 110
- 21
mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java Просмотреть файл

@@ -16,10 +16,7 @@ import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxCUserVo; import com.iformall.domain.vo.WxCUserVo;
import com.iformall.domain.vo.WxLevelMerchantCVo; import com.iformall.domain.vo.WxLevelMerchantCVo;
import com.iformall.enums.EnumAssignTagsTrigger;
import com.iformall.enums.EnumLevelConfigDiscountStatus;
import com.iformall.enums.EnumScoreType;
import com.iformall.enums.EnumUserType;
import com.iformall.enums.*;
import com.iformall.service.*; import com.iformall.service.*;
import com.iformall.service.wechat.FmOpenService; import com.iformall.service.wechat.FmOpenService;
import com.iformall.utils.Constant; import com.iformall.utils.Constant;
@@ -44,6 +41,7 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;


@RestController @RestController
@RequestMapping("/api/user") @RequestMapping("/api/user")
@@ -95,6 +93,7 @@ public class WxUserGrantController extends BaseController {


@Autowired @Autowired
private MemCouponFromDspService memCouponFromDspService; private MemCouponFromDspService memCouponFromDspService;
WxMallService mallService;


/** /**
* 微信消息服务验证 * 微信消息服务验证
@@ -164,6 +163,15 @@ public class WxUserGrantController extends BaseController {
if (wxAuthorizerInfo == null) { if (wxAuthorizerInfo == null) {
return new ResultData(ErrorCode.APP_ID_NOT_FOUND); return new ResultData(ErrorCode.APP_ID_NOT_FOUND);
} }
if (!wxAuthorizerInfo.getEnable().equals(EnumEnableType.Enable.getCode())) {
return new ResultData(ErrorCode.APP_ID_NOT_ENABLE);
}
// 集团版,获取子集团list
List<WxMall> mallList = null;
if (wxAuthorizerInfo.getGroupSupport().equals(EnumGroupSupport.SUPPORT.getCode())) {
mallList = mallService.getSubByParentTenantId(wxAuthorizerInfo.getTenantId());
resultMap.put("subMalls", JSON.toJSONString(mallList));
}


if (isFmOpen) { if (isFmOpen) {
wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId); wxMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId);
@@ -172,6 +180,9 @@ public class WxUserGrantController extends BaseController {
if (wxAppinfo == null) { if (wxAppinfo == null) {
return new ResultData(ErrorCode.APP_ID_NOT_FOUND); return new ResultData(ErrorCode.APP_ID_NOT_FOUND);
} }
if (!wxAppinfo.getEnable().equals(EnumEnableType.Enable.getCode())) {
return new ResultData(ErrorCode.APP_ID_NOT_ENABLE);
}
wxMaService = getWeappServiceByAppInfo(wxAppinfo); wxMaService = getWeappServiceByAppInfo(wxAppinfo);


if (StringUtils.isBlank(wxAppinfo.getAccessToken())) { if (StringUtils.isBlank(wxAppinfo.getAccessToken())) {
@@ -250,7 +261,30 @@ public class WxUserGrantController extends BaseController {


resultMap.put("token", token); resultMap.put("token", token);
request.setAttribute(Constant.LOGIN_USER_KEY, oldUser.getId()); request.setAttribute(Constant.LOGIN_USER_KEY, oldUser.getId());
request.setAttribute(Constant.TENANT_ID, oldUser.getTenantId());
request.setAttribute(Constant.TENANT_ID, wxAuthorizerInfo.getTenantId());

// 老用户,给出来已选中的mall
if (mallList != null) {
WxMall selectedMall = null;
if (StringUtils.isNotBlank(oldUser.getSubTenantId())) {
final String lastSubTenant = oldUser.getSubTenantId();
List<WxMall> selMallList = mallList.stream().filter(ml -> ml.getTenantId().equalsIgnoreCase(lastSubTenant)).collect(Collectors.toList());
if (selMallList.size() > 0) {
selectedMall = selMallList.get(0);
}
}
if (selectedMall == null){
WxMall firstMall = mallList.get(0);
if (firstMall != null) {
selectedMall = firstMall;
}
}
if (selectedMall != null) {
request.setAttribute(Constant.SUB_TENANT_ID, selectedMall.getTenantId());
resultMap.put("selectedMall", selectedMall.getTenantId());
oldUser.setSubTenantId(selectedMall.getTenantId());
}
}


oldUser.setRegisterIp(ipaddress); oldUser.setRegisterIp(ipaddress);
oldUser.setSessionKey(session_key); oldUser.setSessionKey(session_key);
@@ -263,11 +297,11 @@ public class WxUserGrantController extends BaseController {
oldUser.setOpenAppId(wxAuthorizerInfo.getOpenAppid()); oldUser.setOpenAppId(wxAuthorizerInfo.getOpenAppid());
} }
if (StringUtils.isBlank(oldUser.getSceneAddress()) || if (StringUtils.isBlank(oldUser.getSceneAddress()) ||
oldUser.getSceneAddress().equalsIgnoreCase("undefined")) { // from app.js onLaunch.options.scene
oldUser.getSceneAddress().equalsIgnoreCase(Constant.UNDEFINED)) { // from app.js onLaunch.options.scene
oldUser.setSceneAddress(sceneAddress); oldUser.setSceneAddress(sceneAddress);
} }
if (StringUtils.isBlank(oldUser.getScene()) || if (StringUtils.isBlank(oldUser.getScene()) ||
oldUser.getScene().equals("undefined")) { // from pages/index/index onLoad.options.scene
oldUser.getScene().equals(Constant.UNDEFINED)) { // from pages/index/index onLoad.options.scene
oldUser.setScene(scene); oldUser.setScene(scene);
} }
if (StringUtils.isNotBlank(longitude)) { if (StringUtils.isNotBlank(longitude)) {
@@ -295,12 +329,12 @@ public class WxUserGrantController extends BaseController {
token = newUser.createToken(new Date()); token = newUser.createToken(new Date());


newUser.setRegisterIp(ipaddress); newUser.setRegisterIp(ipaddress);
if (StringUtils.isBlank(newUser.getSceneAddress()) ||
newUser.getSceneAddress().equalsIgnoreCase("undefined")) { // from app.js onLaunch.options.scene
if (StringUtils.isNotBlank(sceneAddress) &&
!sceneAddress.equalsIgnoreCase(Constant.UNDEFINED)) { // from app.js onLaunch.options.scene
newUser.setSceneAddress(sceneAddress); newUser.setSceneAddress(sceneAddress);
} }
if (StringUtils.isBlank(newUser.getScene()) ||
newUser.getScene().equals("undefined")) { // from pages/index/index onLoad.options.scene
if (StringUtils.isNotBlank(scene) &&
!scene.equals(Constant.UNDEFINED)) { // from pages/index/index onLoad.options.scene
newUser.setScene(scene); newUser.setScene(scene);
} }
newUser.setSessionKey(session_key); newUser.setSessionKey(session_key);
@@ -323,6 +357,15 @@ public class WxUserGrantController extends BaseController {
resultMap.put("token", token); resultMap.put("token", token);
request.setAttribute(Constant.LOGIN_USER_KEY, newUser.getId()); request.setAttribute(Constant.LOGIN_USER_KEY, newUser.getId());
request.setAttribute(Constant.TENANT_ID, newUser.getTenantId()); request.setAttribute(Constant.TENANT_ID, newUser.getTenantId());
if (mallList != null) {
WxMall firstMall = mallList.get(0);
if (firstMall != null) {
// 默认选中第一个mall, 或者经纬度最近的那个
request.setAttribute(Constant.SUB_TENANT_ID, firstMall.getTenantId());
resultMap.put("selectedMall", firstMall.getTenantId());
newUser.setSubTenantId(firstMall.getTenantId());
}
}


// 登录后处理 // 登录后处理
int score = wxCUserService.actionAfterLogin(newUser, null); int score = wxCUserService.actionAfterLogin(newUser, null);
@@ -332,6 +375,33 @@ public class WxUserGrantController extends BaseController {
return new ResultData(resultMap); return new ResultData(resultMap);
} }


@PostMapping("/selectMall")
@ApiOperation(value = "用户选中子广场", notes = "{\"tenantId\":\"string\",\"subTenantId\":\"string\"}")
public ResultData selectMall(@RequestBody Map<String, String> map) {
logger.debug(map.toString());

String tenantId = map.get("tenantId");
String subTenantId = map.get("subTenantId");

if (StringUtils.isBlank(tenantId)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "tenantId不能为空");
}
if (StringUtils.isBlank(subTenantId)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "subTenantId不能为空");
}

WxCUser user = getUser();
if (user.getTenantId().equalsIgnoreCase(tenantId)) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
request.setAttribute(Constant.TENANT_ID, tenantId);
request.setAttribute(Constant.SUB_TENANT_ID, subTenantId);
user.setSubTenantId(subTenantId);
userTokenService.saveOrUpdate(user);
}

return new ResultData();
}

@PostMapping("/updateScene") @PostMapping("/updateScene")
@ApiOperation(value = "用户更新scene", notes = "{\"scene\":\"string\"}") @ApiOperation(value = "用户更新scene", notes = "{\"scene\":\"string\"}")
public ResultData updateScene(@RequestBody Map<String, String> map) { public ResultData updateScene(@RequestBody Map<String, String> map) {
@@ -340,8 +410,9 @@ public class WxUserGrantController extends BaseController {
String scene = map.get("scene"); String scene = map.get("scene");


WxCUser user = getUser(); WxCUser user = getUser();
if (StringUtils.isBlank(user.getScene())) {
if(StringUtils.isNotBlank(scene)) {
if (StringUtils.isBlank(user.getScene()) ||
user.getScene().equalsIgnoreCase(Constant.UNDEFINED)) {
if(StringUtils.isNotBlank(scene) && scene.equalsIgnoreCase(Constant.UNDEFINED)) {
user.setScene(scene); user.setScene(scene);
wxCUserService.updateScene(user); wxCUserService.updateScene(user);
} }
@@ -392,10 +463,16 @@ public class WxUserGrantController extends BaseController {
private void updateAppAccessToken(WxAppinfo wxAppinfo, WxMaService wxMaService) { private void updateAppAccessToken(WxAppinfo wxAppinfo, WxMaService wxMaService) {
try { try {
String accessToken = wxMaService.getAccessToken(true); String accessToken = wxMaService.getAccessToken(true);
wxAppinfo.setAccessToken(accessToken);
wxAppinfo.setLastTokenTime(new Date());
wxAppinfo.setExpiresIn(7200);
wxAppinfoService.saveOrUpdate(wxAppinfo);
WxAppinfo updateApp = new WxAppinfo();
updateApp.setId(wxAppinfo.getId());
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);

} catch (WxErrorException e) { } catch (WxErrorException e) {
logger.error(e.getMessage()); logger.error(e.getMessage());
} catch (Exception e) { } catch (Exception e) {
@@ -443,6 +520,15 @@ public class WxUserGrantController extends BaseController {
WxMaUserInfo userInfo = wxMaService.getUserService().getUserInfo(session_key, encryptedData, iv); WxMaUserInfo userInfo = wxMaService.getUserService().getUserInfo(session_key, encryptedData, iv);
if (userInfo != null) { if (userInfo != null) {
logger.debug(userInfo.toString()); logger.debug(userInfo.toString());
WxCUser updateUser = new WxCUser();
updateUser.setId(user.getId());
updateUser.setUnionId(userInfo.getUnionId());
updateUser.setNickName(userInfo.getNickName());
updateUser.setGender(Integer.parseInt(userInfo.getGender()));
updateUser.setAvatarUrl(userInfo.getAvatarUrl());
updateUser.setProvince(userInfo.getProvince());
updateUser.setCity(userInfo.getCity());
updateUser.setLanguage(userInfo.getLanguage());
user.setUnionId(userInfo.getUnionId()); user.setUnionId(userInfo.getUnionId());
user.setNickName(userInfo.getNickName()); user.setNickName(userInfo.getNickName());
user.setGender(Integer.parseInt(userInfo.getGender())); user.setGender(Integer.parseInt(userInfo.getGender()));
@@ -450,7 +536,7 @@ public class WxUserGrantController extends BaseController {
user.setProvince(userInfo.getProvince()); user.setProvince(userInfo.getProvince());
user.setCity(userInfo.getCity()); user.setCity(userInfo.getCity());
user.setLanguage(userInfo.getLanguage()); user.setLanguage(userInfo.getLanguage());
wxCUserService.saveOrUpdate(user);
wxCUserService.saveOrUpdate(updateUser);


if(bFirstNickName) { if(bFirstNickName) {
// 首次获取昵称 // 首次获取昵称
@@ -693,7 +779,7 @@ public class WxUserGrantController extends BaseController {
public ResultData carCount() { public ResultData carCount() {
WxCUser user = getUser(); WxCUser user = getUser();
WxCUserCar userCar = new WxCUserCar(); WxCUserCar userCar = new WxCUserCar();
userCar.updateTenantInfo(getTenantInfo());
userCar.updateTenantInfo(user);
userCar.setCUserId(user.getId()); userCar.setCUserId(user.getId());
Integer count = wxCUserCarService.countUserCar(userCar); Integer count = wxCUserCarService.countUserCar(userCar);
if (count > 0) { if (count > 0) {
@@ -773,11 +859,14 @@ public class WxUserGrantController extends BaseController {
if (wxCUserBasicInfoService.getById(getUserId()) == null) if (wxCUserBasicInfoService.getById(getUserId()) == null)
return new ResultData(ErrorCode.USER_IS_NOT_MEMBER); return new ResultData(ErrorCode.USER_IS_NOT_MEMBER);


TenantEntity tenantEntity = getTenantInfo();

if (wxCUserBasicInfo.getName() != null || if (wxCUserBasicInfo.getName() != null ||
wxCUserBasicInfo.getBirthdate() != null || wxCUserBasicInfo.getBirthdate() != null ||
wxCUserBasicInfo.getSex() != null || wxCUserBasicInfo.getSex() != null ||
wxCUserBasicInfo.getAddress() != null) { wxCUserBasicInfo.getAddress() != null) {
WxCUserBasicInfo record = new WxCUserBasicInfo(); WxCUserBasicInfo record = new WxCUserBasicInfo();
record.updateTenantInfo(tenantEntity);
record.setName(wxCUserBasicInfo.getName()); record.setName(wxCUserBasicInfo.getName());
record.setBirthdate(wxCUserBasicInfo.getBirthdate()); record.setBirthdate(wxCUserBasicInfo.getBirthdate());
record.setSex(wxCUserBasicInfo.getSex()); record.setSex(wxCUserBasicInfo.getSex());
@@ -789,7 +878,7 @@ public class WxUserGrantController extends BaseController {
//增加积分 //增加积分
WxCreditHistory wxCreditHistory = new WxCreditHistory(); WxCreditHistory wxCreditHistory = new WxCreditHistory();
wxCreditHistory.setCUserId(record.getId()); wxCreditHistory.setCUserId(record.getId());
wxCreditHistory.updateTenantInfo(getTenantInfo());
wxCreditHistory.updateTenantInfo(tenantEntity);
wxCreditHistory.setCreateDate(new Date()); wxCreditHistory.setCreateDate(new Date());
wxCreditHistory.setCreditType(EnumScoreType.COMPLETE_INFO.getCode()); wxCreditHistory.setCreditType(EnumScoreType.COMPLETE_INFO.getCode());
wxCreditHistory.setOperatorType(EnumUserType.CUSER.getCode()); wxCreditHistory.setOperatorType(EnumUserType.CUSER.getCode());
@@ -808,7 +897,6 @@ public class WxUserGrantController extends BaseController {
@RequestMapping("/getDiscountInfo") @RequestMapping("/getDiscountInfo")
@ApiOperation(value = "获取用户折扣率", notes = "") @ApiOperation(value = "获取用户折扣率", notes = "")
public ResultData getDiscountInfo() { public ResultData getDiscountInfo() {

WxCUser user = getUser(); WxCUser user = getUser();


List<WxLevelConfig> levelList = wxLevelConfigService.getByTenantId(user.getTenantId()); List<WxLevelConfig> levelList = wxLevelConfigService.getByTenantId(user.getTenantId());
@@ -823,6 +911,7 @@ public class WxUserGrantController extends BaseController {
} }
} }
WxLevelMerchant levelMerchant = new WxLevelMerchant(); WxLevelMerchant levelMerchant = new WxLevelMerchant();
levelMerchant.updateTenantInfo(getTenantInfo());
levelMerchant.setLevelId(levelId); levelMerchant.setLevelId(levelId);
List<WxLevelMerchantCVo> levelMerchantList = wxLevelConfigService.findListCVo(levelMerchant); List<WxLevelMerchantCVo> levelMerchantList = wxLevelConfigService.findListCVo(levelMerchant);




+ 3
- 0
mallinkCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java Просмотреть файл

@@ -65,6 +65,9 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
//设置userId到request里,后续根据userId,获取用户信息 //设置userId到request里,后续根据userId,获取用户信息
request.setAttribute(Constant.LOGIN_USER_KEY, wxCUser.getId()); request.setAttribute(Constant.LOGIN_USER_KEY, wxCUser.getId());
request.setAttribute(Constant.TENANT_ID, wxCUser.getTenantId()); request.setAttribute(Constant.TENANT_ID, wxCUser.getTenantId());
if (StringUtils.isNotBlank(wxCUser.getSubTenantId())) {
request.setAttribute(Constant.SUB_TENANT_ID, wxCUser.getSubTenantId());
}


return true; return true;
} }


+ 84
- 0
mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java Просмотреть файл

@@ -26,8 +26,24 @@ public class TenantInfoImpl implements TenantInfo {
return tenantId; return tenantId;
} }


@Override
public String getSubTenantId() {
String subTenantId = null;
try {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
subTenantId = (String) request.getAttribute(Constant.SUB_TENANT_ID);
return subTenantId;
} catch (Exception e) {
logger.error(e.getMessage());
}
return subTenantId;
}

@Override @Override
public boolean doTableFilter(String tableName) { public boolean doTableFilter(String tableName) {
if ("wx_mall".equals(tableName)) {
return true;
}
if ("mall_permission".equals(tableName)) { if ("mall_permission".equals(tableName)) {
return true; return true;
} }
@@ -72,6 +88,74 @@ public class TenantInfoImpl implements TenantInfo {
return false; return false;
} }


@Override
public boolean doTableFilterSub(String tableName) {
if ("wx_mall".equals(tableName)) {
return true;
}
if ("wx_appinfo".equals(tableName)) {
return true;
}
if ("wx_authorizer_info".equals(tableName)) {
return true;
}
if ("wx_c_user".equals(tableName)) {
return true;
}
if ("wx_c_user_basic_info".equals(tableName)) {
return true;
}
if ("wx_c_user_car".equals(tableName)) {
return true;
}
if ("wx_c_user_from_b".equals(tableName)) {
return true;
}
if ("wx_c_user_tags".equals(tableName)) {
return true;
}
if ("wx_cuser_floating_layer".equals(tableName)) {
return true;
}
if ("wx_floating_layer".equals(tableName)) {
return true;
}
if ("wx_question".equals(tableName)) {
return true;
}
if ("wx_question_config".equals(tableName)) {
return true;
}
if ("wx_question_log".equals(tableName)) {
return true;
}
if ("wx_user_visit".equals(tableName)) {
return true;
}
if ("wx_level_config".equals(tableName)) {
return true;
}
if ("wx_score_rules".equals(tableName)) {
return true;
}
if ("view_coupon_data".equals(tableName)) {
return true;
}
if ("view_touch_user".equals(tableName)) {
return true;
}
if ("wx_weapp_audit_status".equals(tableName)) {
return true;
}
if ("wx_weapp_code_status".equals(tableName)) {
return true;
}
if ("wx_weapp_release_status".equals(tableName)) {
return true;
}
return false;
}

@Override @Override
public boolean doMappedStatementFIlter(MappedStatement ms) { public boolean doMappedStatementFIlter(MappedStatement ms) {
if ("com.iformall.mapper.WxCUserMapper.getByToken".equals(ms.getId())) if ("com.iformall.mapper.WxCUserMapper.getByToken".equals(ms.getId()))


+ 2
- 3
mallinkCApi/src/main/resources/application-dev.yml Просмотреть файл

@@ -32,7 +32,7 @@ spring:
password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk) password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk)
timeout: 3600 timeout: 3600
expire: 1800 #30分钟 expire: 1800 #30分钟
database: 1
database: 5
jedis: jedis:
pool: pool:
max-active: 200 max-active: 200
@@ -110,7 +110,7 @@ jasypt:
password: oRqdnDbK5pj3eMmB password: oRqdnDbK5pj3eMmB


fm: fm:
exception: false
exception: true
exception_emails: houtaikaifa@iformall.com exception_emails: houtaikaifa@iformall.com
deploy: 1 deploy: 1
open: true open: true
@@ -118,6 +118,5 @@ fm:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall: debug com.iformall: debug
path: ./logs/c path: ./logs/c

+ 0
- 1
mallinkCApi/src/main/resources/application-prod.yml Просмотреть файл

@@ -96,6 +96,5 @@ fm:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall: debug com.iformall: debug
path: ./logs/c path: ./logs/c

+ 0
- 1
mallinkCApi/src/main/resources/application-test.yml Просмотреть файл

@@ -96,6 +96,5 @@ fm:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall: debug com.iformall: debug
path: ./logs/c path: ./logs/c

+ 38
- 26
mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarETCPCallBackController.java Просмотреть файл

@@ -173,24 +173,29 @@ public class WxCarETCPCallBackController extends BaseController {
// 根据orderId获取入场信息,确定租户ID // 根据orderId获取入场信息,确定租户ID
String orderId = paramMap.get(ETCPUtil.ETCP_ORDER_ID); String orderId = paramMap.get(ETCPUtil.ETCP_ORDER_ID);
String etcpTime = paramMap.get(ETCPUtil.ETCP_TIME); String etcpTime = paramMap.get(ETCPUtil.ETCP_TIME);
HashMap<String, String> map = new HashMap<String, String>();
map.put("synId", orderId);
map.put("plateNumber", carNumber);
String tenantId = wxCarCmdLogService.getTenantIdBySynId(map);
WxCarCmdLog carCmdLogQ = new WxCarCmdLog();
carCmdLogQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
carCmdLogQ.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
carCmdLogQ.setSynId(orderId);
carCmdLogQ.setPlateNumber(carNumber);
WxCarCmdLog tenantInfo = wxCarCmdLogService.getTenantInfoBySynId(carCmdLogQ);
String tenantId = null;
/// if not found syn_id, maybe use user_car to get tenantId /// if not found syn_id, maybe use user_car to get tenantId
if(StringUtils.isBlank(tenantId)) {
if(tenantInfo == null) {
WxCUserCar queryOne = new WxCUserCar(); WxCUserCar queryOne = new WxCUserCar();
queryOne.setCarNumber(carNumber); queryOne.setCarNumber(carNumber);
WxCUserCar userCar = wxCUserCarService.getOnlyOne(queryOne); WxCUserCar userCar = wxCUserCarService.getOnlyOne(queryOne);
if(userCar != null) { if(userCar != null) {
tenantId = userCar.getTenantId(); tenantId = userCar.getTenantId();
} }
if (StringUtils.isNotBlank(tenantId)) {
carCmdLogQ.setTenantId(tenantId);
}
} else {
carCmdLogQ.updateTenantInfo(tenantInfo);
} }

// 检查是否有重复数据 // 检查是否有重复数据
if(StringUtils.isNotBlank(tenantId)) {
map.put("tenantId", tenantId);
}

String paidServiceFee = paramMap.get(ETCPUtil.ETCP_PAID_SERVICE_FEE); String paidServiceFee = paramMap.get(ETCPUtil.ETCP_PAID_SERVICE_FEE);
String fee = paramMap.get(ETCPUtil.ETCP_FEE); String fee = paramMap.get(ETCPUtil.ETCP_FEE);
Date feeTime = null; Date feeTime = null;
@@ -202,19 +207,24 @@ public class WxCarETCPCallBackController extends BaseController {
logger.error("解析fee time出错" + etcpTime); logger.error("解析fee time出错" + etcpTime);
} }
} }
map.put("plateNumber", carNumber);
map.put("orderId", orderId);
map.put("fee", fee);
map.put("feeTime", etcpTime);
WxCarCmdLog carCmdLog = wxCarCmdLogService.getByOrderId(map);
carCmdLogQ.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PAY_MANUAL.getCode());
carCmdLogQ.setPlateNumber(carNumber);
carCmdLogQ.setOrderId(orderId);
carCmdLogQ.setFee(fee);
carCmdLogQ.setFeeTime(etcpTime);
WxCarCmdLog carCmdLog = wxCarCmdLogService.getByOrderId(carCmdLogQ);
if(carCmdLog != null) { if(carCmdLog != null) {
logger.error("ETCP order paid 已入库: " + orderId); logger.error("ETCP order paid 已入库: " + orderId);
} }


Date currentDate = new Date(); Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
if(StringUtils.isNotBlank(tenantId)) {
wxCarCmdLog.setTenantId(tenantId);
if (tenantInfo != null) {
wxCarCmdLog.updateTenantInfo(tenantInfo);
} else {
if (StringUtils.isNotBlank(tenantId)) {
wxCarCmdLog.setTenantId(tenantId);
}
} }
if(carCmdLog != null) { if(carCmdLog != null) {
// 如果有15分钟的已支付的数据,自动覆盖 // 如果有15分钟的已支付的数据,自动覆盖
@@ -290,7 +300,6 @@ public class WxCarETCPCallBackController extends BaseController {
wxCarCmdLog.setUpdateDate(currentDate); wxCarCmdLog.setUpdateDate(currentDate);


String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID);
String tenantId = null;
WxPark parkQ = new WxPark(); WxPark parkQ = new WxPark();
parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
parkQ.setParkingId(etcpParkId); parkQ.setParkingId(etcpParkId);
@@ -299,13 +308,11 @@ public class WxCarETCPCallBackController extends BaseController {
logger.error("etcpParkInCallback: ETCP车场未找到" + etcpParkId); logger.error("etcpParkInCallback: ETCP车场未找到" + etcpParkId);
//return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId); //return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId);
} else { } else {
tenantId = park.getTenantId();
wxCarCmdLog.updateTenantInfo(park); wxCarCmdLog.updateTenantInfo(park);
} }


String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER); String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER);
String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID); String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID);
String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID);
String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME); String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME);
String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE); String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE);
String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME); String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME);
@@ -316,8 +323,11 @@ public class WxCarETCPCallBackController extends BaseController {
HashMap<String, Object> map = new HashMap<String, Object>(); HashMap<String, Object> map = new HashMap<String, Object>();
map.put("synId", synId); map.put("synId", synId);
map.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); map.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
if(tenantId != null) {
map.put("tenantId", tenantId);
if (StringUtils.isNotBlank(wxCarCmdLog.getTenantId())) {
map.put("tenantId", wxCarCmdLog.getTenantId());
}
if (StringUtils.isNotBlank(wxCarCmdLog.getSubTenantId())) {
map.put("subTenantId", wxCarCmdLog.getSubTenantId());
} }
WxCarCmdLog carCmdLog = wxCarCmdLogService.getBySynId(map); WxCarCmdLog carCmdLog = wxCarCmdLogService.getBySynId(map);
if(carCmdLog != null) { if(carCmdLog != null) {
@@ -338,13 +348,16 @@ public class WxCarETCPCallBackController extends BaseController {
if (!StringUtils.isBlank(carNumber)) { if (!StringUtils.isBlank(carNumber)) {
// 根据车牌查找用户 // 根据车牌查找用户
WxCUserCar userCarQ = new WxCUserCar(); WxCUserCar userCarQ = new WxCUserCar();
userCarQ.setTenantId(tenantId);
if (StringUtils.isNotBlank(wxCarCmdLog.getTenantId())) {
userCarQ.setTenantId(wxCarCmdLog.getTenantId());
}
userCarQ.setCarNumber(carNumber); userCarQ.setCarNumber(carNumber);
userCarQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); userCarQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
// TODO 可能多用户关联同一张车牌 // TODO 可能多用户关联同一张车牌
List<WxCUserCar> userCarList = wxCUserCarService.getList(userCarQ); List<WxCUserCar> userCarList = wxCUserCarService.getList(userCarQ);
boolean bFirst = true; boolean bFirst = true;
for (WxCUserCar userCar : userCarList) { for (WxCUserCar userCar : userCarList) {
userCar.setSubTenantId(park.getSubTenantId());
wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar); wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar);
WxCUser cUser = wxCUserService.getById(userCar.getCUserId()); WxCUser cUser = wxCUserService.getById(userCar.getCUserId());
if(cUser != null){ if(cUser != null){
@@ -363,7 +376,7 @@ public class WxCarETCPCallBackController extends BaseController {
WxCarPayRecord record = new WxCarPayRecord(); WxCarPayRecord record = new WxCarPayRecord();
record.setVendorType(wxCarCmdLog.getVendorType()); record.setVendorType(wxCarCmdLog.getVendorType());
record.setSynId(synId); record.setSynId(synId);
record.setParkId(parkId);
record.setParkId(etcpParkId);
record.setParkName(parkName); record.setParkName(parkName);
record.setUserType(userType); record.setUserType(userType);
record.setPlateNumber(carNumber); record.setPlateNumber(carNumber);
@@ -373,7 +386,7 @@ public class WxCarETCPCallBackController extends BaseController {
record.setFixParkingId(fixParkingId); record.setFixParkingId(fixParkingId);
record.setRemainingDays(remainingDays); record.setRemainingDays(remainingDays);
record.setPhone(phoneStrs); record.setPhone(phoneStrs);
record.setTenantId(tenantId);
record.updateTenantInfo(wxCarCmdLog);


WxCarPayRecord query = new WxCarPayRecord(); WxCarPayRecord query = new WxCarPayRecord();
query.setSynId(synId); query.setSynId(synId);
@@ -426,7 +439,6 @@ public class WxCarETCPCallBackController extends BaseController {
String exitTime = paramMap.get(ETCPUtil.ETCP_EXIT_TIME); String exitTime = paramMap.get(ETCPUtil.ETCP_EXIT_TIME);
String stayedTime = paramMap.get(ETCPUtil.ETCP_STAYED_TIME); String stayedTime = paramMap.get(ETCPUtil.ETCP_STAYED_TIME);
String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER); String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER);
String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID);
String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME); String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME);
String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE); String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE);
String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME); String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME);
@@ -445,7 +457,7 @@ public class WxCarETCPCallBackController extends BaseController {
} }
record.setVendorType(wxCarCmdLog.getVendorType()); record.setVendorType(wxCarCmdLog.getVendorType());
record.setSynId(synId); record.setSynId(synId);
record.setParkId(parkId);
record.setParkId(etcpParkId);
record.setParkName(parkName); record.setParkName(parkName);
record.setUserType(userType); record.setUserType(userType);
record.setPlateNumber(carNumber); record.setPlateNumber(carNumber);


+ 1
- 0
mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java Просмотреть файл

@@ -164,6 +164,7 @@ public class WxCarTJDCallBackController extends BaseController {
List<WxCUserCar> userCarList = wxCUserCarService.getList(userCarQ); List<WxCUserCar> userCarList = wxCUserCarService.getList(userCarQ);
boolean bFirst = true; boolean bFirst = true;
for (WxCUserCar userCar : userCarList) { for (WxCUserCar userCar : userCarList) {
userCar.setSubTenantId(park.getSubTenantId());
wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar); wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar);
WxCUser cUser = wxCUserService.getById(userCar.getCUserId()); WxCUser cUser = wxCUserService.getById(userCar.getCUserId());
if(cUser != null){ if(cUser != null){


+ 3
- 2
mallinkCallback/src/main/java/com/iformall/controller/device/WxDeviceScreenAdController.java Просмотреть файл

@@ -119,9 +119,10 @@ public class WxDeviceScreenAdController extends BaseController {
@SystemControllerLog(description = "广告屏-基础信息") @SystemControllerLog(description = "广告屏-基础信息")
public Result info(@RequestParam String deviceId) { public Result info(@RequestParam String deviceId) {
WxDevice wxDevice = findDevice(deviceId); WxDevice wxDevice = findDevice(deviceId);
if (wxDevice == null)
if (wxDevice == null) {
return new ResultData(ErrorCode.DEVICE_NOT_FOUND); return new ResultData(ErrorCode.DEVICE_NOT_FOUND);
return new ResultData(wxMallService.getByTenantId(wxDevice.getTenantId()));
}
return new ResultData(wxMallService.getByTenantInfo(wxDevice));
} }


} }

+ 1
- 1
mallinkCallback/src/main/java/com/iformall/shiro/MyShiroRealm.java Просмотреть файл

@@ -28,7 +28,7 @@ public class MyShiroRealm extends AuthorizingRealm {
@Override @Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
MallUserInfo user= (MallUserInfo) SecurityUtils.getSubject().getPrincipal(); MallUserInfo user= (MallUserInfo) SecurityUtils.getSubject().getPrincipal();
Set<String> permissionSet = userService.getUserPermissions(user);
Set<String> permissionSet = userService.getUserPermissions(user, true);
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
info.setStringPermissions(permissionSet); info.setStringPermissions(permissionSet);
return info; return info;


+ 2
- 2
mallinkCallback/src/main/resources/application-dev.yml Просмотреть файл

@@ -32,7 +32,7 @@ spring:
password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk) password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk)
timeout: 3600 timeout: 3600
expire: 1800 #30分钟 expire: 1800 #30分钟
database: 1
database: 5
defaultExpiration: 2592000 # 默认生命周期30天 defaultExpiration: 2592000 # 默认生命周期30天
jedis: jedis:
pool: pool:
@@ -116,7 +116,7 @@ jasypt:
password: oRqdnDbK5pj3eMmB password: oRqdnDbK5pj3eMmB


fm: fm:
exception: false
exception: true
exception_emails: houtaikaifa@iformall.com exception_emails: houtaikaifa@iformall.com
deploy: 1 deploy: 1
open: true open: true


+ 0
- 1
mallinkCallback/src/main/resources/application-prod.yml Просмотреть файл

@@ -101,6 +101,5 @@ fm:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall.mapper: debug com.iformall.mapper: debug
path: ./logs/admin path: ./logs/admin

+ 0
- 1
mallinkCallback/src/main/resources/application-test.yml Просмотреть файл

@@ -101,6 +101,5 @@ fm:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall: debug com.iformall: debug
path: ./logs/admin path: ./logs/admin

+ 2
- 3
mallinkMQConsumer/src/main/resources/application-dev.yml Просмотреть файл

@@ -33,7 +33,7 @@ spring:
password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk) password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk)
timeout: 3600 timeout: 3600
expire: 1800 #30分钟 expire: 1800 #30分钟
database: 1
database: 5
defaultExpiration: 2592000 # 默认生命周期30天 defaultExpiration: 2592000 # 默认生命周期30天
jedis: jedis:
pool: pool:
@@ -110,7 +110,7 @@ jasypt:
password: oRqdnDbK5pj3eMmB password: oRqdnDbK5pj3eMmB


fm: fm:
exception: false
exception: true
exception_emails: houtaikaifa@iformall.com exception_emails: houtaikaifa@iformall.com
deploy: 1 deploy: 1
open: true open: true
@@ -118,6 +118,5 @@ fm:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall.mapper: debug com.iformall.mapper: debug
path: ./logs/m path: ./logs/m

+ 0
- 1
mallinkMQConsumer/src/main/resources/application-prod.yml Просмотреть файл

@@ -97,6 +97,5 @@ fm:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall: debug com.iformall: debug
path: ./logs/m path: ./logs/m

+ 0
- 1
mallinkMQConsumer/src/main/resources/application-test.yml Просмотреть файл

@@ -97,6 +97,5 @@ fm:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall: debug com.iformall: debug
path: ./logs/m path: ./logs/m

+ 110
- 49
mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java Просмотреть файл

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iformall.common.ErrorCode; import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker; import com.iformall.common.IdWorker;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.PromotionCalc; import com.iformall.domain.vo.PromotionCalc;
import com.iformall.domain.vo.WxCouponOrderCVo; import com.iformall.domain.vo.WxCouponOrderCVo;
import com.iformall.domain.vo.WxLevelMerchantCVo; import com.iformall.domain.vo.WxLevelMerchantCVo;
@@ -90,35 +91,45 @@ public class PosServiceImpl implements PosService {
throw new MallinkException(ErrorCode.MALL_INFO_NOT_FOUND); throw new MallinkException(ErrorCode.MALL_INFO_NOT_FOUND);
} }


PosMallConfig config = posMallConfigService.getByTenantId(tenantId);
TenantEntity tenantEntity = mall.getTenantInfo();

PosMallConfig config = posMallConfigService.getByTenantInfo(tenantEntity);
if (config == null) { if (config == null) {
logger.error(ErrorCode.MALL_INFO_NOT_FOUND.getMessage()); logger.error(ErrorCode.MALL_INFO_NOT_FOUND.getMessage());
throw new MallinkException(ErrorCode.MALL_INFO_NOT_FOUND); throw new MallinkException(ErrorCode.MALL_INFO_NOT_FOUND);
} }


WxMerchantBUser user = new WxMerchantBUser();
user.setTenantId(tenantId);
user.setPhone(phone);
user.setStatus(EnumMerchantBUserStatus.VALID.getCode());
WxMerchantBUser user1 = null;
WxMerchantBUser userQ = new WxMerchantBUser();
userQ.updateTenantInfo(tenantEntity);
userQ.setPhone(phone);
userQ.setStatus(EnumMerchantBUserStatus.VALID.getCode());
WxMerchantBUser orgUser = null;
List<WxMerchantBUser> orgUserList = null;


try { try {
user1 = merchantBUserService.getBUserByAppId(user);
orgUserList = merchantBUserService.getBUserByAppId(userQ);
} catch (Exception e) { } catch (Exception e) {
String errMessage = ErrorCode.MERCHANT_BUSER_NOT_VALID.getMessage() + "phone: " + phone + ", " +e.getMessage(); String errMessage = ErrorCode.MERCHANT_BUSER_NOT_VALID.getMessage() + "phone: " + phone + ", " +e.getMessage();
throw new MallinkException(ErrorCode.MERCHANT_BUSER_NOT_VALID.getCode(), errMessage); throw new MallinkException(ErrorCode.MERCHANT_BUSER_NOT_VALID.getCode(), errMessage);
} }
if (user1 != null) {
if (orgUserList.size() > 0) {
orgUser = orgUserList.get(0);
}
if (orgUser != null) {
// check merchant 状态 // check merchant 状态
WxMerchant merchant = checkAndGetMerchant(user1.getMerchantId());
WxMerchant merchant = checkAndGetMerchant(orgUser.getMerchantId());
// check password // check password
if (user1.getUserPwd().equalsIgnoreCase(password)) {
retMap.put(WxPayConstant.TENANT_ID, user1.getTenantId());
if (orgUser.getUserPwd().equalsIgnoreCase(password)) {
if (StringUtils.isBlank(orgUser.getSubTenantId())) {
retMap.put(WxPayConstant.TENANT_ID, orgUser.getTenantId());
} else {
retMap.put(WxPayConstant.TENANT_ID, orgUser.getSubTenantId());
}
retMap.put(WxPayConstant.MALL_NAME, mall.getName()); retMap.put(WxPayConstant.MALL_NAME, mall.getName());
retMap.put(WxPayConstant.MERCHANT_ID, String.valueOf(user1.getMerchantId()));
retMap.put(WxPayConstant.MERCHANT_ID, String.valueOf(orgUser.getMerchantId()));
retMap.put(WxPayConstant.MERCHANT_NAME, merchant.getName()); retMap.put(WxPayConstant.MERCHANT_NAME, merchant.getName());
retMap.put(WxPayConstant.MERCHANT_IMG, merchant.getImgUrl()); retMap.put(WxPayConstant.MERCHANT_IMG, merchant.getImgUrl());
retMap.put(WxPayConstant.BUSER_ID, String.valueOf(user1.getId()));
retMap.put(WxPayConstant.BUSER_ID, String.valueOf(orgUser.getId()));


JSONObject qrCodeInfo = new JSONObject(); JSONObject qrCodeInfo = new JSONObject();
qrCodeInfo.put(WxPayConstant.REG_QRCODE_URL, mall.getImgQrcodeWeapp()); qrCodeInfo.put(WxPayConstant.REG_QRCODE_URL, mall.getImgQrcodeWeapp());
@@ -191,8 +202,15 @@ public class PosServiceImpl implements PosService {
throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR); throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR);
} }


WxMall mall = mallService.getByTenantId(tenantId);
if (mall == null) {
logger.error(ErrorCode.MALL_INFO_NOT_FOUND.getMessage());
throw new MallinkException(ErrorCode.MALL_INFO_NOT_FOUND);
}
TenantEntity tenantEntity = mall.getTenantInfo();

// 1. POS 支持 配置 // 1. POS 支持 配置
PosMallConfig config = posMallConfigService.getByTenantId(tenantId);
PosMallConfig config = posMallConfigService.getByTenantInfo(tenantEntity);
if (config == null) { if (config == null) {
logger.error(ErrorCode.POS_CONFIG_NOT_FOUND.getMessage()); logger.error(ErrorCode.POS_CONFIG_NOT_FOUND.getMessage());
throw new MallinkException(ErrorCode.POS_CONFIG_NOT_FOUND); throw new MallinkException(ErrorCode.POS_CONFIG_NOT_FOUND);
@@ -287,7 +305,7 @@ public class PosServiceImpl implements PosService {
errParam2(WxPayConstant.MEM_ID, WxPayConstant.MEM_PHONE); errParam2(WxPayConstant.MEM_ID, WxPayConstant.MEM_PHONE);
} }
// 10. 获取会员信息 // 10. 获取会员信息
user = getMemUser(tenantId, memIdStr, memPhoneStr);
user = getMemUser(merchant, memIdStr, memPhoneStr);
} }


if (user == null) { if (user == null) {
@@ -312,12 +330,15 @@ public class PosServiceImpl implements PosService {
promotionCalc.setPromotionAmount(0); promotionCalc.setPromotionAmount(0);
promotionCalc.setAmountLeftAfterPay(orderAmountLeft); promotionCalc.setAmountLeftAfterPay(orderAmountLeft);
// 12. 会员折扣 // 12. 会员折扣
JSONObject discountObj = getMemLevelDiscount(promotionCalc, config.getDiscount(), tenantId, user, merchantId);
JSONObject discountObj = getMemLevelDiscount(promotionCalc, config.getDiscount(), tenantEntity, user, merchantId);
promotionInfo.put(WxPayConstant.MEMBER_DISCOUNT, discountObj); promotionInfo.put(WxPayConstant.MEMBER_DISCOUNT, discountObj);
// 14. 获取用户可用券列表 // 14. 获取用户可用券列表
if (!config.getCoupon().equals(EnumPosCouponEnableType.Disable.getCode())) { if (!config.getCoupon().equals(EnumPosCouponEnableType.Disable.getCode())) {
Map<String, Object> coQ = new HashMap<>(); Map<String, Object> coQ = new HashMap<>();
coQ.put("tenantId", tenantId); coQ.put("tenantId", tenantId);
if (StringUtils.isNotBlank(tenantEntity.getSubTenantId())) {
coQ.put("subTenantId", tenantEntity.getSubTenantId());
}
coQ.put("cUserId", user.getId()); coQ.put("cUserId", user.getId());
coQ.put("merchantId", merchantId); coQ.put("merchantId", merchantId);
List<WxCouponOrderCVo> avaCoList = couponOrderMapper.findAvailCouponOrder(coQ); List<WxCouponOrderCVo> avaCoList = couponOrderMapper.findAvailCouponOrder(coQ);
@@ -666,7 +687,7 @@ public class PosServiceImpl implements PosService {
return couponOrderCVo; return couponOrderCVo;
} }


private WxCUser getMemUser(String tenantId, String memIdStr, String memPhoneStr) {
private WxCUser getMemUser(TenantEntity tenantEntity, String memIdStr, String memPhoneStr) {
WxCUser user = null; WxCUser user = null;
if (StringUtils.isNotBlank(memIdStr)) { if (StringUtils.isNotBlank(memIdStr)) {
Long memId; Long memId;
@@ -681,7 +702,7 @@ public class PosServiceImpl implements PosService {
} }
if (StringUtils.isNotBlank(memPhoneStr)) { if (StringUtils.isNotBlank(memPhoneStr)) {
WxCUser q = new WxCUser(); WxCUser q = new WxCUser();
q.setTenantId(tenantId);
q.updateTenantInfo(tenantEntity);
q.setPhone(memPhoneStr); q.setPhone(memPhoneStr);
user = cUserService.getByObject(q); user = cUserService.getByObject(q);
} }
@@ -692,18 +713,18 @@ public class PosServiceImpl implements PosService {
* 会员折扣 * 会员折扣
* @param promotionCalc * @param promotionCalc
* @param discountConfig * @param discountConfig
* @param tenantId
* @param tenantEntity
* @param user * @param user
* @param merchantId * @param merchantId
* @return * @return
*/ */
private JSONObject getMemLevelDiscount(PromotionCalc promotionCalc, Integer discountConfig, String tenantId, WxCUser user, Long merchantId) {
private JSONObject getMemLevelDiscount(PromotionCalc promotionCalc, Integer discountConfig, TenantEntity tenantEntity, WxCUser user, Long merchantId) {
JSONObject discountObj = new JSONObject(); JSONObject discountObj = new JSONObject();
Integer discount = 100; Integer discount = 100;
if (discountConfig.equals(EnumPosEnableType.Enable.getCode())) { if (discountConfig.equals(EnumPosEnableType.Enable.getCode())) {
String level = WxLevelConfigService.DEFAULT_LEVEL; String level = WxLevelConfigService.DEFAULT_LEVEL;
// 1. 会员级别Level // 1. 会员级别Level
List<WxLevelConfig> levelList = levelConfigService.getByTenantId(tenantId);
List<WxLevelConfig> levelList = levelConfigService.getByTenantId(tenantEntity.getTenantId());
Long levelId = 0L; Long levelId = 0L;
for (WxLevelConfig levelConfig : levelList) { for (WxLevelConfig levelConfig : levelList) {
if (user.getScore() >= levelConfig.getPoints()) { if (user.getScore() >= levelConfig.getPoints()) {
@@ -715,7 +736,7 @@ public class PosServiceImpl implements PosService {


// 2. 会员级别对应折扣discount // 2. 会员级别对应折扣discount
WxLevelMerchant levelMerchant = new WxLevelMerchant(); WxLevelMerchant levelMerchant = new WxLevelMerchant();
levelMerchant.setTenantId(tenantId);
levelMerchant.updateTenantInfo(tenantEntity);
levelMerchant.setLevelId(levelId); levelMerchant.setLevelId(levelId);
levelMerchant.setMerchantId(merchantId); levelMerchant.setMerchantId(merchantId);
List<WxLevelMerchantCVo> levelMerchantList = levelConfigService.findListCVo(levelMerchant); List<WxLevelMerchantCVo> levelMerchantList = levelConfigService.findListCVo(levelMerchant);
@@ -801,8 +822,16 @@ public class PosServiceImpl implements PosService {
throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR); throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR);
} }


WxMall mall = mallService.getByTenantId(tenantId);
if (mall == null) {
logger.error(ErrorCode.MALL_INFO_NOT_FOUND.getMessage());
throw new MallinkException(ErrorCode.MALL_INFO_NOT_FOUND);
}

TenantEntity tenantEntity = mall.getTenantInfo();

// 1. POS 支持 配置 // 1. POS 支持 配置
PosMallConfig config = posMallConfigService.getByTenantId(tenantId);
PosMallConfig config = posMallConfigService.getByTenantInfo(tenantEntity);
if (config == null) { if (config == null) {
logger.error(ErrorCode.POS_CONFIG_NOT_FOUND.getMessage()); logger.error(ErrorCode.POS_CONFIG_NOT_FOUND.getMessage());
throw new MallinkException(ErrorCode.POS_CONFIG_NOT_FOUND); throw new MallinkException(ErrorCode.POS_CONFIG_NOT_FOUND);
@@ -883,7 +912,7 @@ public class PosServiceImpl implements PosService {
errParam2(WxPayConstant.MEM_ID, WxPayConstant.MEM_PHONE); errParam2(WxPayConstant.MEM_ID, WxPayConstant.MEM_PHONE);
} }
// 10. 获取会员信息 // 10. 获取会员信息
WxCUser user = getMemUser(tenantId, memIdStr, memPhoneStr);
WxCUser user = getMemUser(merchant, memIdStr, memPhoneStr);
if (user == null) { if (user == null) {
logger.error(ErrorCode.USER_NOT_MEMBER.getMessage()); logger.error(ErrorCode.USER_NOT_MEMBER.getMessage());
throw new MallinkException(ErrorCode.USER_NOT_MEMBER); throw new MallinkException(ErrorCode.USER_NOT_MEMBER);
@@ -906,12 +935,15 @@ public class PosServiceImpl implements PosService {
promotionCalc.setPromotionAmount(0); promotionCalc.setPromotionAmount(0);
promotionCalc.setAmountLeftAfterPay(orderAmountLeft); promotionCalc.setAmountLeftAfterPay(orderAmountLeft);
// 12. 会员折扣 // 12. 会员折扣
JSONObject discountObj = getMemLevelDiscount(promotionCalc, config.getDiscount(), tenantId, user, merchantId);
JSONObject discountObj = getMemLevelDiscount(promotionCalc, config.getDiscount(), tenantEntity, user, merchantId);
promotionInfo.put(WxPayConstant.MEMBER_DISCOUNT, discountObj); promotionInfo.put(WxPayConstant.MEMBER_DISCOUNT, discountObj);
// 14. 获取用户可用券列表 // 14. 获取用户可用券列表
if (!config.getCoupon().equals(EnumPosCouponEnableType.Disable.getCode())) { if (!config.getCoupon().equals(EnumPosCouponEnableType.Disable.getCode())) {
Map<String, Object> coQ = new HashMap<>(); Map<String, Object> coQ = new HashMap<>();
coQ.put("tenantId", tenantId); coQ.put("tenantId", tenantId);
if (StringUtils.isNotBlank(tenantEntity.getSubTenantId())) {
coQ.put("subTenantId", tenantEntity.getSubTenantId());
}
coQ.put("cUserId", user.getId()); coQ.put("cUserId", user.getId());
coQ.put("merchantId", merchantId); coQ.put("merchantId", merchantId);
List<WxCouponOrderCVo> avaCoList = couponOrderMapper.findAvailCouponOrder(coQ); List<WxCouponOrderCVo> avaCoList = couponOrderMapper.findAvailCouponOrder(coQ);
@@ -1147,7 +1179,7 @@ public class PosServiceImpl implements PosService {
throw new MallinkException(ErrorCode.POS_COUPON_REFUND_ERROR.getCode(), errMesg); throw new MallinkException(ErrorCode.POS_COUPON_REFUND_ERROR.getCode(), errMesg);
} }
// 10. 获取会员信息 // 10. 获取会员信息
WxCUser user = getMemUser(tenantId, memIdStr, memPhoneStr);
WxCUser user = getMemUser(merchant, memIdStr, memPhoneStr);
if (user == null) { if (user == null) {
logger.error(ErrorCode.USER_NOT_MEMBER.getMessage()); logger.error(ErrorCode.USER_NOT_MEMBER.getMessage());
throw new MallinkException(ErrorCode.USER_NOT_MEMBER); throw new MallinkException(ErrorCode.USER_NOT_MEMBER);
@@ -1189,7 +1221,7 @@ public class PosServiceImpl implements PosService {
int num = 0; int num = 0;
// 1. insert posOrderId // 1. insert posOrderId
PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify(); PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify();
posCouponOrderVerify.setTenantId(couponOrderCVo.getTenantId());
posCouponOrderVerify.updateTenantInfo(couponOrderCVo);
posCouponOrderVerify.setCouponOrderId(couponOrderCVo.getId()); posCouponOrderVerify.setCouponOrderId(couponOrderCVo.getId());
posCouponOrderVerify.setPosOrderId(posOrderId); posCouponOrderVerify.setPosOrderId(posOrderId);
posCouponOrderVerify.setOrderFrom(EnumOrderFrom.POS.getCode()); posCouponOrderVerify.setOrderFrom(EnumOrderFrom.POS.getCode());
@@ -1207,7 +1239,7 @@ public class PosServiceImpl implements PosService {
try { try {
WxCouponOrder couponOrder = new WxCouponOrder(); WxCouponOrder couponOrder = new WxCouponOrder();
couponOrder.setId(couponOrderCVo.getId()); couponOrder.setId(couponOrderCVo.getId());
couponOrder.setTenantId(couponOrderCVo.getTenantId());
couponOrder.updateTenantInfo(couponOrderCVo);
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.POS_PRE_VERIFY.getCode()); couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.POS_PRE_VERIFY.getCode());
couponOrder.setBUserId(buUserId); couponOrder.setBUserId(buUserId);
couponOrder.setVerifyType(EnumCouponVerifyType.VERIFY_POS_PAY.getCode()); couponOrder.setVerifyType(EnumCouponVerifyType.VERIFY_POS_PAY.getCode());
@@ -1233,7 +1265,7 @@ public class PosServiceImpl implements PosService {
int num = 0; int num = 0;
// 1. update posOrderId // 1. update posOrderId
PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify(); PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify();
posCouponOrderVerify.setTenantId(couponOrderCVo.getTenantId());
posCouponOrderVerify.updateTenantInfo(couponOrderCVo);
posCouponOrderVerify.setCouponOrderId(couponOrderCVo.getId()); posCouponOrderVerify.setCouponOrderId(couponOrderCVo.getId());
posCouponOrderVerify.setPosOrderId(posOrderId); posCouponOrderVerify.setPosOrderId(posOrderId);
posCouponOrderVerify.setState(EnumEnableType.Enable.getCode()); posCouponOrderVerify.setState(EnumEnableType.Enable.getCode());
@@ -1257,7 +1289,7 @@ public class PosServiceImpl implements PosService {
try { try {
WxCouponOrder couponOrder = new WxCouponOrder(); WxCouponOrder couponOrder = new WxCouponOrder();
couponOrder.setId(couponOrderCVo.getId()); couponOrder.setId(couponOrderCVo.getId());
couponOrder.setTenantId(couponOrderCVo.getTenantId());
couponOrder.updateTenantInfo(couponOrderCVo);
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode());
couponOrder.setUpdateDate(new Date()); couponOrder.setUpdateDate(new Date());
num = couponOrderMapper.cancelVerifyCouponOrder(couponOrder); num = couponOrderMapper.cancelVerifyCouponOrder(couponOrder);
@@ -1284,7 +1316,7 @@ public class PosServiceImpl implements PosService {
int num = 0; int num = 0;
// 1. insert posOrderId // 1. insert posOrderId
PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify(); PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify();
posCouponOrderVerify.setTenantId(couponOrderCVo.getTenantId());
posCouponOrderVerify.updateTenantInfo(couponOrderCVo);
posCouponOrderVerify.setCouponOrderId(couponOrderCVo.getId()); posCouponOrderVerify.setCouponOrderId(couponOrderCVo.getId());
posCouponOrderVerify.setPosOrderId(posOrderId); posCouponOrderVerify.setPosOrderId(posOrderId);
posCouponOrderVerify.setOrderFrom(EnumOrderFrom.POS.getCode()); posCouponOrderVerify.setOrderFrom(EnumOrderFrom.POS.getCode());
@@ -1300,7 +1332,7 @@ public class PosServiceImpl implements PosService {
try { try {
WxCouponOrder couponOrder = new WxCouponOrder(); WxCouponOrder couponOrder = new WxCouponOrder();
couponOrder.setId(couponOrderCVo.getId()); couponOrder.setId(couponOrderCVo.getId());
couponOrder.setTenantId(couponOrderCVo.getTenantId());
couponOrder.updateTenantInfo(couponOrderCVo);
if (actionType.equals(EnumPosActionType.VERIFY_INDEPENT)) { if (actionType.equals(EnumPosActionType.VERIFY_INDEPENT)) {
couponOrder.setVerifyType(EnumCouponVerifyType.VERIFY_POS_INDEPENDENT.getCode()); couponOrder.setVerifyType(EnumCouponVerifyType.VERIFY_POS_INDEPENDENT.getCode());
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode());
@@ -1334,7 +1366,7 @@ public class PosServiceImpl implements PosService {
creditHistory.setOperatorId(buUserId); creditHistory.setOperatorId(buUserId);
creditHistory.setCUserId(couponOrderCVo.getcUserId()); creditHistory.setCUserId(couponOrderCVo.getcUserId());
creditHistory.setCreateDate(new Date()); creditHistory.setCreateDate(new Date());
creditHistory.setTenantId(couponOrderCVo.getTenantId());
creditHistory.updateTenantInfo(couponOrderCVo);
creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode()); creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode());
creditHistory.setCouponId(couponOrderCVo.getCouponId()); creditHistory.setCouponId(couponOrderCVo.getCouponId());
creditHistory.setBusinessId(coupon.getBusiness()); creditHistory.setBusinessId(coupon.getBusiness());
@@ -1361,7 +1393,7 @@ public class PosServiceImpl implements PosService {
creditHistory.setOperatorId(buUserId); creditHistory.setOperatorId(buUserId);
creditHistory.setCUserId(memId); creditHistory.setCUserId(memId);
creditHistory.setCreateDate(new Date()); creditHistory.setCreateDate(new Date());
creditHistory.setTenantId(merchant.getTenantId());
creditHistory.updateTenantInfo(merchant);
creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode()); creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode());
creditHistory.setBusinessId(merchant.getBusinessId()); creditHistory.setBusinessId(merchant.getBusinessId());
creditHistory.setSpend(payment); creditHistory.setSpend(payment);
@@ -1392,7 +1424,7 @@ public class PosServiceImpl implements PosService {
creditHistory.setOperatorType(EnumUserType.BUSER.getCode()); creditHistory.setOperatorType(EnumUserType.BUSER.getCode());
creditHistory.setOperatorId(buUserId); creditHistory.setOperatorId(buUserId);
creditHistory.setCUserId(couponOrderCVo.getcUserId()); creditHistory.setCUserId(couponOrderCVo.getcUserId());
creditHistory.setTenantId(couponOrderCVo.getTenantId());
creditHistory.updateTenantInfo(couponOrderCVo);
creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode()); creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode());
creditHistory.setCouponId(couponOrderCVo.getCouponId()); creditHistory.setCouponId(couponOrderCVo.getCouponId());
int num = creditHistoryService.cancelCredit(creditHistory); int num = creditHistoryService.cancelCredit(creditHistory);
@@ -1407,7 +1439,7 @@ public class PosServiceImpl implements PosService {
// 2. 成长值历史回退 // 2. 成长值历史回退
try { try {
WxScoreHistory scoreHistory = new WxScoreHistory(); WxScoreHistory scoreHistory = new WxScoreHistory();
scoreHistory.setTenantId(couponOrderCVo.getTenantId());
scoreHistory.updateTenantInfo(couponOrderCVo);
scoreHistory.setScoreType(EnumScoreType.CONSUMPTION.getCode()); scoreHistory.setScoreType(EnumScoreType.CONSUMPTION.getCode());
scoreHistory.setCUserId(couponOrderCVo.getcUserId()); scoreHistory.setCUserId(couponOrderCVo.getcUserId());
scoreHistory.setOrderId(couponOrderCVo.getOrderId()); scoreHistory.setOrderId(couponOrderCVo.getOrderId());
@@ -1423,7 +1455,7 @@ public class PosServiceImpl implements PosService {


// 3. update posOrderId // 3. update posOrderId
PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify(); PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify();
posCouponOrderVerify.setTenantId(couponOrderCVo.getTenantId());
posCouponOrderVerify.updateTenantInfo(couponOrderCVo);
posCouponOrderVerify.setCouponOrderId(couponOrderCVo.getId()); posCouponOrderVerify.setCouponOrderId(couponOrderCVo.getId());
posCouponOrderVerify.setPosOrderId(posOrderId); posCouponOrderVerify.setPosOrderId(posOrderId);
posCouponOrderVerify.setState(EnumEnableType.Enable.getCode()); posCouponOrderVerify.setState(EnumEnableType.Enable.getCode());
@@ -1447,7 +1479,7 @@ public class PosServiceImpl implements PosService {
try { try {
WxCouponOrder couponOrder = new WxCouponOrder(); WxCouponOrder couponOrder = new WxCouponOrder();
couponOrder.setId(couponOrderCVo.getId()); couponOrder.setId(couponOrderCVo.getId());
couponOrder.setTenantId(couponOrderCVo.getTenantId());
couponOrder.updateTenantInfo(couponOrderCVo);
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode());
couponOrder.setUpdateDate(new Date()); couponOrder.setUpdateDate(new Date());
num = couponOrderMapper.cancelVerifyCouponOrder(couponOrder); num = couponOrderMapper.cancelVerifyCouponOrder(couponOrder);
@@ -1484,7 +1516,14 @@ public class PosServiceImpl implements PosService {
} else { } else {
retMap.put(WxPayConstant.TENANT_ID, tenantId); retMap.put(WxPayConstant.TENANT_ID, tenantId);
} }
PosMallConfig config = posMallConfigService.getByTenantId(tenantId);
WxMall mall = mallService.getByTenantId(tenantId);
if (mall == null) {
logger.error(ErrorCode.MALL_INFO_NOT_FOUND.getMessage());
throw new MallinkException(ErrorCode.MALL_INFO_NOT_FOUND);
}

TenantEntity tenantEntity = mall.getTenantInfo();
PosMallConfig config = posMallConfigService.getByTenantInfo(tenantEntity);
if (config == null) { if (config == null) {
logger.error(ErrorCode.POS_CONFIG_NOT_FOUND.getMessage()); logger.error(ErrorCode.POS_CONFIG_NOT_FOUND.getMessage());
throw new MallinkException(ErrorCode.POS_CONFIG_NOT_FOUND); throw new MallinkException(ErrorCode.POS_CONFIG_NOT_FOUND);
@@ -1561,7 +1600,7 @@ public class PosServiceImpl implements PosService {
throw new MallinkException(ErrorCode.CARD_IS_NOT_FOUND); throw new MallinkException(ErrorCode.CARD_IS_NOT_FOUND);
} }
if (StringUtils.isNotBlank(memIdStr) || StringUtils.isNotBlank(memPhoneStr)) { if (StringUtils.isNotBlank(memIdStr) || StringUtils.isNotBlank(memPhoneStr)) {
WxCUser cuUser = getMemUser(tenantId, memIdStr, memPhoneStr);
WxCUser cuUser = getMemUser(merchant, memIdStr, memPhoneStr);
if (cuUser == null) { if (cuUser == null) {
logger.error(ErrorCode.USER_NOT_MEMBER.getMessage()); logger.error(ErrorCode.USER_NOT_MEMBER.getMessage());
throw new MallinkException(ErrorCode.USER_NOT_MEMBER); throw new MallinkException(ErrorCode.USER_NOT_MEMBER);
@@ -1581,7 +1620,7 @@ public class PosServiceImpl implements PosService {


WxCardSpend record = new WxCardSpend(); WxCardSpend record = new WxCardSpend();
record.setPayFrom(EnumCardSpendFrom.POS.getCode()); record.setPayFrom(EnumCardSpendFrom.POS.getCode());
record.setTenantId(merchant.getTenantId());
record.updateTenantInfo(merchant);
record.setCardId(cardId); record.setCardId(cardId);
record.setOwnerId(couponOrder.getOwnerId()); record.setOwnerId(couponOrder.getOwnerId());
record.setMerchantId(merchantId); record.setMerchantId(merchantId);
@@ -1629,7 +1668,15 @@ public class PosServiceImpl implements PosService {
} else { } else {
retMap.put(WxPayConstant.TENANT_ID, tenantId); retMap.put(WxPayConstant.TENANT_ID, tenantId);
} }
PosMallConfig config = posMallConfigService.getByTenantId(tenantId);
WxMall mall = mallService.getByTenantId(tenantId);
if (mall == null) {
logger.error(ErrorCode.MALL_INFO_NOT_FOUND.getMessage());
throw new MallinkException(ErrorCode.MALL_INFO_NOT_FOUND);
}

TenantEntity tenantEntity = mall.getTenantInfo();

PosMallConfig config = posMallConfigService.getByTenantInfo(tenantEntity);
if (config == null) { if (config == null) {
logger.error(ErrorCode.POS_CONFIG_NOT_FOUND.getMessage()); logger.error(ErrorCode.POS_CONFIG_NOT_FOUND.getMessage());
throw new MallinkException(ErrorCode.POS_CONFIG_NOT_FOUND); throw new MallinkException(ErrorCode.POS_CONFIG_NOT_FOUND);
@@ -1798,7 +1845,15 @@ public class PosServiceImpl implements PosService {
if (StringUtils.isBlank(tenantId)) { if (StringUtils.isBlank(tenantId)) {
errParam(WxPayConstant.TENANT_ID); errParam(WxPayConstant.TENANT_ID);
} }
PosMallConfig config = posMallConfigService.getByTenantId(tenantId);
WxMall mall = mallService.getByTenantId(tenantId);
if (mall == null) {
logger.error(ErrorCode.MALL_INFO_NOT_FOUND.getMessage());
throw new MallinkException(ErrorCode.MALL_INFO_NOT_FOUND);
}

TenantEntity tenantEntity = mall.getTenantInfo();

PosMallConfig config = posMallConfigService.getByTenantInfo(tenantEntity);
if (config == null) { if (config == null) {
logger.error(ErrorCode.POS_CONFIG_NOT_FOUND.getMessage()); logger.error(ErrorCode.POS_CONFIG_NOT_FOUND.getMessage());
throw new MallinkException(ErrorCode.POS_CONFIG_NOT_FOUND); throw new MallinkException(ErrorCode.POS_CONFIG_NOT_FOUND);
@@ -2024,11 +2079,13 @@ public class PosServiceImpl implements PosService {
WxMerchantBUser merchantBUser, WxMerchantBUser merchantBUser,
WxOrder order, Long memId, WxOrder order, Long memId,
Long posPayOrderId, Integer neuPaymentAmount, Date neuPosPayOrderTime) { Long posPayOrderId, Integer neuPaymentAmount, Date neuPosPayOrderTime) {
final IdWorker idWorker = IdWorker.get();
Long payOrderId = idWorker.nextId();
WxPayOrder payOrder = new WxPayOrder() {{
WxPayOrder payOrder = new WxPayOrder() {{
Date curDate = new Date(); Date curDate = new Date();
setTenantId(merchantBUser.getTenantId()); setTenantId(merchantBUser.getTenantId());
final IdWorker idWorker = IdWorker.get();
Long id = idWorker.nextId();
setId(id);
updateTenantInfo(merchantBUser);
setCUserId(memId); setCUserId(memId);
setOrderId(order.getId()); setOrderId(order.getId());
setCreateTime(curDate); setCreateTime(curDate);
@@ -2075,6 +2132,7 @@ public class PosServiceImpl implements PosService {
Date curDate = new Date(); Date curDate = new Date();
setId(payOrderId); setId(payOrderId);
setTenantId(merchantBUser.getTenantId()); setTenantId(merchantBUser.getTenantId());
updateTenantInfo(merchantBUser);
setCUserId(memId); setCUserId(memId);
setBUserId(merchantBUser.getId()); setBUserId(merchantBUser.getId());
setOrderId(order.getId()); setOrderId(order.getId());
@@ -2160,6 +2218,7 @@ public class PosServiceImpl implements PosService {
Date curDate = new Date(); Date curDate = new Date();
setId(payOrderId); setId(payOrderId);
setTenantId(buUser.getTenantId()); setTenantId(buUser.getTenantId());
updateTenantInfo(buUser);
setCUserId(memId); setCUserId(memId);
setBUserId(buUser.getId()); setBUserId(buUser.getId());
setOrderId(order.getId()); setOrderId(order.getId());
@@ -2228,6 +2287,7 @@ public class PosServiceImpl implements PosService {
Date curDate = new Date(); Date curDate = new Date();
setId(payOrderId); setId(payOrderId);
setTenantId(buUser.getTenantId()); setTenantId(buUser.getTenantId());
updateTenantInfo(buUser);
setCUserId(memId); setCUserId(memId);
setOrderId(order.getId()); setOrderId(order.getId());
setCreateTime(curDate); setCreateTime(curDate);
@@ -2290,7 +2350,7 @@ public class PosServiceImpl implements PosService {
// 1. pay order // 1. pay order
// 查找支付订单 // 查找支付订单
WxPayOrder payOrderQ = new WxPayOrder() {{ WxPayOrder payOrderQ = new WxPayOrder() {{
setTenantId(refundOrder.getTenantId());
updateTenantInfo(refundOrder);
setCUserId(refundOrder.getCUserId()); setCUserId(refundOrder.getCUserId());
setOrderId(refundOrder.getId()); setOrderId(refundOrder.getId());
setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode());
@@ -2314,6 +2374,7 @@ public class PosServiceImpl implements PosService {
setId(refundId); setId(refundId);
setRefundId(String.valueOf(refundId)); setRefundId(String.valueOf(refundId));
setTenantId(buUser.getTenantId()); setTenantId(buUser.getTenantId());
updateTenantInfo(buUser);
setCUserId(memId); setCUserId(memId);
setOrderId(refundOrder.getId()); setOrderId(refundOrder.getId());
setCreateTime(curDate); setCreateTime(curDate);
@@ -2381,7 +2442,7 @@ public class PosServiceImpl implements PosService {
Date curr = new Date(); Date curr = new Date();
String bodyStr = "POS支付, 金额: " + posAmount; String bodyStr = "POS支付, 金额: " + posAmount;
setId(orderId); setId(orderId);
setTenantId(merchantBUser.getTenantId());
updateTenantInfo(merchantBUser);
setOrderNumber(orderId); setOrderNumber(orderId);
setType(EnumOrderType.POSPAY.getCode()); setType(EnumOrderType.POSPAY.getCode());
setProductId(merchantBUser.getId()); setProductId(merchantBUser.getId());
@@ -2461,7 +2522,7 @@ public class PosServiceImpl implements PosService {
Date curr = new Date(); Date curr = new Date();
String bodyStr = "POS退款, 金额: " + orderAmount; String bodyStr = "POS退款, 金额: " + orderAmount;
setId(orderId); setId(orderId);
setTenantId(buUser.getTenantId());
updateTenantInfo(buUser);
setType(EnumOrderType.POSPAY.getCode()); setType(EnumOrderType.POSPAY.getCode());
setProductId(buUser.getId()); setProductId(buUser.getId());
setCUserId(memId); setCUserId(memId);


+ 6
- 3
mallinkPosApi/src/main/resources/application-dev.yml Просмотреть файл

@@ -4,7 +4,11 @@ spring:
#include: rabbitMQ #include: rabbitMQ
# JDBC # JDBC
datasource: datasource:
<<<<<<< HEAD
url: jdbc:mysql://zc349w82qvn56ftl5e64-rw4rm.rwlb.rds.aliyuncs.com:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true url: jdbc:mysql://zc349w82qvn56ftl5e64-rw4rm.rwlb.rds.aliyuncs.com:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true
=======
url: jdbc:mysql://202.165.179.86:3306/mallinkDevGroup1?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true
>>>>>>> develop
username: ENC(dZ8fmrtuBMQYaRytKQgTqg==) username: ENC(dZ8fmrtuBMQYaRytKQgTqg==)
password: ENC(IKH7HxMZwIqMttMc9+QsqWa1KMsJvTs4) password: ENC(IKH7HxMZwIqMttMc9+QsqWa1KMsJvTs4)
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
@@ -31,7 +35,7 @@ spring:
password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk) password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk)
timeout: 3600 timeout: 3600
expire: 1800 #30分钟 expire: 1800 #30分钟
database: 1
database: 5
defaultExpiration: 2592000 # 默认生命周期30天 defaultExpiration: 2592000 # 默认生命周期30天
jedis: jedis:
pool: pool:
@@ -110,7 +114,7 @@ wechat:
min-idle: 10 min-idle: 10


fm: fm:
exception: false
exception: true
exception_emails: houtaikaifa@iformall.com exception_emails: houtaikaifa@iformall.com
deploy: 1 deploy: 1
open: true open: true
@@ -118,6 +122,5 @@ fm:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall.mapper: debug com.iformall.mapper: debug
path: ./logs/p path: ./logs/p

+ 0
- 1
mallinkPosApi/src/main/resources/application-prod.yml Просмотреть файл

@@ -96,6 +96,5 @@ fm:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall.mapper: debug com.iformall.mapper: debug
path: ./logs/p path: ./logs/p

+ 0
- 1
mallinkPosApi/src/main/resources/application-test.yml Просмотреть файл

@@ -96,6 +96,5 @@ fm:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall: debug com.iformall: debug
path: ./logs/p path: ./logs/p

+ 1
- 1
mallinkPosApi/src/test/java/com/iformall/pos/test/PosAppTest.java Просмотреть файл

@@ -58,7 +58,7 @@ public class PosAppTest {
private static final String phone = "13120220020"; private static final String phone = "13120220020";
private static final String password = "123456zz"; private static final String password = "123456zz";


private static final String posSN = "1";
private static final String posSN = "WDPS0110GW175210001";


/* /*
可用的交易券, 支付可用(1, 2, 6), 核销可用(4, 6, 8, 9) 可用的交易券, 支付可用(1, 2, 6), 核销可用(4, 6, 8, 9)


+ 4
- 0
mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java Просмотреть файл

@@ -55,6 +55,7 @@ public class BillNotificationSchedule {
List<Map<String, Object>> oweBillList = wxBillAllMapper.getOweBill(); List<Map<String, Object>> oweBillList = wxBillAllMapper.getOweBill();
for (Map<String, Object> bill : oweBillList) { for (Map<String, Object> bill : oweBillList) {
String tenantId = bill.get("tenantId").toString(); String tenantId = bill.get("tenantId").toString();
String subTenantId = bill.get("subTenantId").toString();
logger.info("欠缴账单:" + JSONObject.toJSONString(bill)); logger.info("欠缴账单:" + JSONObject.toJSONString(bill));
BigDecimal owe = (BigDecimal) bill.get("owe"); BigDecimal owe = (BigDecimal) bill.get("owe");
BigDecimal price = owe.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); BigDecimal price = owe.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN);
@@ -69,6 +70,7 @@ public class BillNotificationSchedule {
wxMsgRecord.setReceiver(phone); wxMsgRecord.setReceiver(phone);
wxMsgRecord.updateTenantInfo(new TenantEntity(){{ wxMsgRecord.updateTenantInfo(new TenantEntity(){{
setTenantId(tenantId); setTenantId(tenantId);
setSubTenantId(subTenantId);
}}); }});
Map<String, String> map = new HashedMap(); Map<String, String> map = new HashedMap();
map.put("price", price.toString()); map.put("price", price.toString());
@@ -84,6 +86,7 @@ public class BillNotificationSchedule {
List<Map<String, Object>> waitBillList = wxBillAllMapper.getWaitPayBill(); List<Map<String, Object>> waitBillList = wxBillAllMapper.getWaitPayBill();
for (Map<String, Object> bill : waitBillList) { for (Map<String, Object> bill : waitBillList) {
String tenantId = bill.get("tenantId").toString(); String tenantId = bill.get("tenantId").toString();
String subTenantId = bill.get("subTenantId").toString();
logger.info("待缴账单账单:" + JSONObject.toJSONString(bill)); logger.info("待缴账单账单:" + JSONObject.toJSONString(bill));


String receiveDate = bill.get("receiveDate").toString(); String receiveDate = bill.get("receiveDate").toString();
@@ -100,6 +103,7 @@ public class BillNotificationSchedule {
wxMsgRecord.setReceiver(phone); wxMsgRecord.setReceiver(phone);
wxMsgRecord.updateTenantInfo(new TenantEntity(){{ wxMsgRecord.updateTenantInfo(new TenantEntity(){{
setTenantId(tenantId); setTenantId(tenantId);
setSubTenantId(subTenantId);
}}); }});
Map<String, String> map = new HashedMap(); Map<String, String> map = new HashedMap();
map.put("price", price.toString()); map.put("price", price.toString());


+ 10
- 0
mallinkSchedule/src/main/java/com/iformall/schedule/ChartDataSchedule.java Просмотреть файл

@@ -12,6 +12,7 @@ import com.iformall.enums.EnumCarCmd;
import com.iformall.enums.EnumChartType; import com.iformall.enums.EnumChartType;
import com.iformall.mapper.*; import com.iformall.mapper.*;
import com.iformall.utils.DateUtils; import com.iformall.utils.DateUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -80,6 +81,9 @@ public class ChartDataSchedule {
for (WxMall wxMall : wxMalls) { for (WxMall wxMall : wxMalls) {
TenantEntity tenantEntity = wxMall.getTenantInfo(); TenantEntity tenantEntity = wxMall.getTenantInfo();
params.put("tenantId", tenantEntity.getTenantId()); params.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getSubTenantId())) {
params.put("subTenantId", wxMall.getTenantId());
}
wxChartDataEntity.updateTenantInfo(tenantEntity); wxChartDataEntity.updateTenantInfo(tenantEntity);
wxChartDataEntity.setType(EnumChartType.CAR_OUT.getCode()); wxChartDataEntity.setType(EnumChartType.CAR_OUT.getCode());
int count = wxChartDataMapper.selectCount(new QueryWrapper(wxChartDataEntity)); int count = wxChartDataMapper.selectCount(new QueryWrapper(wxChartDataEntity));
@@ -139,6 +143,9 @@ public class ChartDataSchedule {
for (WxMall wxMall : wxMalls) { for (WxMall wxMall : wxMalls) {
TenantEntity tenantEntity = wxMall.getTenantInfo(); TenantEntity tenantEntity = wxMall.getTenantInfo();
params.put("tenantId", tenantEntity.getTenantId()); params.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getSubTenantId())) {
params.put("subTenantId", tenantEntity.getSubTenantId());
}
wxChartDataEntity.updateTenantInfo(tenantEntity); wxChartDataEntity.updateTenantInfo(tenantEntity);
wxChartDataEntity.setType(EnumChartType.SALE_COUPON_PRICE.getCode()); wxChartDataEntity.setType(EnumChartType.SALE_COUPON_PRICE.getCode());
int count = wxChartDataMapper.selectCount(new QueryWrapper(wxChartDataEntity)); int count = wxChartDataMapper.selectCount(new QueryWrapper(wxChartDataEntity));
@@ -170,6 +177,9 @@ public class ChartDataSchedule {
for (WxMall wxMall : wxMalls) { for (WxMall wxMall : wxMalls) {
TenantEntity tenantEntity = wxMall.getTenantInfo(); TenantEntity tenantEntity = wxMall.getTenantInfo();
params.put("tenantId", tenantEntity.getTenantId()); params.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getSubTenantId())) {
params.put("subTenantId", tenantEntity.getSubTenantId());
}


wxChartDataEntity.updateTenantInfo(tenantEntity); wxChartDataEntity.updateTenantInfo(tenantEntity);
wxChartDataEntity.setType(EnumChartType.MERCHANT_TRADE.getCode()); wxChartDataEntity.setType(EnumChartType.MERCHANT_TRADE.getCode());


+ 5
- 1
mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java Просмотреть файл

@@ -12,6 +12,7 @@ import com.iformall.mq.MqBaseProducer;
import com.iformall.service.*; import com.iformall.service.*;
import com.iformall.utils.CreditUtil; import com.iformall.utils.CreditUtil;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -96,12 +97,12 @@ public class CouponSendSchedule {
//查找所有couponSendConfig //查找所有couponSendConfig
Map<String, Integer> mallConfigMap = getAllCouponSendConfig(EnumCouponSendSendType.TIMED.getCode()); Map<String, Integer> mallConfigMap = getAllCouponSendConfig(EnumCouponSendSendType.TIMED.getCode());
mallList.stream().forEach(mall -> { mallList.stream().forEach(mall -> {
TenantEntity tenantEntity = mall.getTenantInfo();
//判断启用状态,状态为关闭时跳过不执行 //判断启用状态,状态为关闭时跳过不执行
if (isCouponSendDisable(mallConfigMap, mall)) { if (isCouponSendDisable(mallConfigMap, mall)) {
logger.info("定时发券: {}发券状态关闭, 任务跳过不执行", mall.getName()); logger.info("定时发券: {}发券状态关闭, 任务跳过不执行", mall.getName());
return; return;
} }
TenantEntity tenantEntity = mall.getTenantInfo();
WxLevelConfig wxLevelConfig = new WxLevelConfig(); WxLevelConfig wxLevelConfig = new WxLevelConfig();
wxLevelConfig.updateTenantInfo(tenantEntity); wxLevelConfig.updateTenantInfo(tenantEntity);
List<WxLevelConfig> levelConfigList = WxLevelConfigMapper.findList(wxLevelConfig); List<WxLevelConfig> levelConfigList = WxLevelConfigMapper.findList(wxLevelConfig);
@@ -160,6 +161,9 @@ public class CouponSendSchedule {
int sentCount = couponSendList.stream().map(cs -> { int sentCount = couponSendList.stream().map(cs -> {
Map params = new HashMap<String, Object>(); Map params = new HashMap<String, Object>();
params.put("tenantId", cs.getTenantId()); params.put("tenantId", cs.getTenantId());
if (StringUtils.isNotBlank(cs.getSubTenantId())) {
params.put("subTenantId", cs.getSubTenantId());
}
params.put("cUserId", cu.getId()); params.put("cUserId", cu.getId());
params.put("couponId", cs.getCouponId()); params.put("couponId", cs.getCouponId());
params.put("startTime", startTime); params.put("startTime", startTime);


+ 2
- 2
mallinkSchedule/src/main/resources/application-dev.yml Просмотреть файл

@@ -33,7 +33,7 @@ spring:
password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk) password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk)
timeout: 3600 timeout: 3600
expire: 1800 #30分钟 expire: 1800 #30分钟
database: 1
database: 5
defaultExpiration: 2592000 # 默认生命周期30天 defaultExpiration: 2592000 # 默认生命周期30天
jedis: jedis:
pool: pool:
@@ -110,7 +110,7 @@ jasypt:
password: oRqdnDbK5pj3eMmB password: oRqdnDbK5pj3eMmB


fm: fm:
exception: false
exception: true
exception_emails: houtaikaifa@iformall.com exception_emails: houtaikaifa@iformall.com
deploy: 1 deploy: 1
open: true open: true


+ 0
- 1
mallinkSchedule/src/main/resources/application-test.yml Просмотреть файл

@@ -100,6 +100,5 @@ fm:


logging: logging:
level: level:
tk.mybatis: debug
com.iformall: debug com.iformall: debug
path: ./logs/s path: ./logs/s

+ 1
- 0
mallinkService/src/main/java/com/iformall/common/ErrorCode.java Просмотреть файл

@@ -307,6 +307,7 @@ public enum ErrorCode{
REFUND_ORDER_BUSER_NOT_EQUAL(12016, "B端用户无操作权限"), REFUND_ORDER_BUSER_NOT_EQUAL(12016, "B端用户无操作权限"),
REFUND_NOT_ALLOW(12017, "退款订单不允许退款"), REFUND_NOT_ALLOW(12017, "退款订单不允许退款"),


APP_ID_NOT_ENABLE(12019, "APP未启用"),
APP_ID_NOT_FOUND(12020, "APPID没找到"), APP_ID_NOT_FOUND(12020, "APPID没找到"),
MCH_INFO_NOT_FOUND(12021, "微信商户平台信息没找到"), MCH_INFO_NOT_FOUND(12021, "微信商户平台信息没找到"),
MCH_INFO_NOT_EQUAL(12022, "微信商户平台信息不对应"), MCH_INFO_NOT_EQUAL(12022, "微信商户平台信息不对应"),


+ 15
- 1
mallinkService/src/main/java/com/iformall/domain/po/MallUserInfo.java Просмотреть файл

@@ -133,6 +133,20 @@ public class MallUserInfo extends TenantEntity {
} }
return false; return false;
} }

/**
* 是否集团管理员
* @return
*/
public boolean checkGroupAdmin() {
if(StringUtils.isBlank(getTenantId())) {
return false;
}
if(StringUtils.isBlank(getSubTenantId()) &&
isAdmin.equals(EnumUserAdmin.ADMIN.getCode())) {
return true;
}
return false;
}


} }

+ 4
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxAppinfo.java Просмотреть файл

@@ -40,5 +40,9 @@ public class WxAppinfo extends BaseTenantEntity {
private Integer type; private Integer type;
@io.swagger.annotations.ApiModelProperty(value="支付ID,参看wx_pay_account_bill",name="payBillId") @io.swagger.annotations.ApiModelProperty(value="支付ID,参看wx_pay_account_bill",name="payBillId")
private Long payBillId; private Long payBillId;
@io.swagger.annotations.ApiModelProperty(value="集团支持(0:不支持,1支持)",name="groupSupport")
private Integer groupSupport;
@io.swagger.annotations.ApiModelProperty(value="是否启用(0:启用,1禁用)",name="enable")
private Integer enable;


} }

+ 4
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxAuthorizerInfo.java Просмотреть файл

@@ -69,5 +69,9 @@ public class WxAuthorizerInfo extends BaseTenantEntity {
private String accessToken; private String accessToken;
@io.swagger.annotations.ApiModelProperty(value="accessToken过期时间",name="accessTokenExpire") @io.swagger.annotations.ApiModelProperty(value="accessToken过期时间",name="accessTokenExpire")
private Date accessTokenExpire; private Date accessTokenExpire;
@io.swagger.annotations.ApiModelProperty(value="集团支持(0:不支持,1支持)",name="groupSupport")
private Integer groupSupport;
@io.swagger.annotations.ApiModelProperty(value="是否启用(0:启用,1禁用)",name="enable")
private Integer enable;
} }

Некоторые файлы не были показаны из-за большого количества измененных файлов

Загрузка…
Отмена
Сохранить