瀏覽代碼

Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java
#	mallinkService/src/main/resources/mapper/WxBillAllMapper.xml
release_toaliyun_real
luozukai 7 年之前
父節點
當前提交
6db7b833de
共有 49 個檔案被更改,包括 3522 行新增1860 行删除
  1. +48
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/WxBillActionController.java
  2. +18
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/WxCarController.java
  3. +5
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/WxChartDataController.java
  4. +1
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/WxCreditHistoryController.java
  5. +11
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/WxScoreRulesController.java
  6. +1
    -2
      mallinkAdmin/src/main/java/com/iformall/controller/WxShopController.java
  7. +2
    -0
      mallinkAdmin/src/main/resources/db/migration/V201904031030__UPDATE_WX_SHOP.sql
  8. +14
    -0
      mallinkAdmin/src/main/resources/db/migration/V201904031540__ADD_BILL_ACTION.sql
  9. +61
    -11
      mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java
  10. +4
    -1
      mallinkService/src/main/java/com/iformall/common/ErrorCode.java
  11. +199
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxBillAction.java
  12. +15
    -2
      mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java
  13. +15
    -2
      mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java
  14. +13
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java
  15. +11
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxShop.java
  16. +265
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxBillAllVo.java
  17. +39
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumBillAction.java
  18. +6
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumBusiness.java
  19. +1
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumChart.java
  20. +3
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java
  21. +16
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxBillActionMapper.java
  22. +2
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxBillAllMapper.java
  23. +7
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java
  24. +3
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxRentContractMapper.java
  25. +2
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxTagsMapper.java
  26. +10
    -0
      mallinkService/src/main/java/com/iformall/service/WxBillActionService.java
  27. +2
    -1
      mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java
  28. +7
    -0
      mallinkService/src/main/java/com/iformall/service/WxScoreRulesService.java
  29. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxShopService.java
  30. +28
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxBillActionServiceImpl.java
  31. +41
    -5
      mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java
  32. +10
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java
  33. +2
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java
  34. +1864
    -1474
      mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java
  35. +199
    -12
      mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java
  36. +2
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxMerchantSubsidyServiceImpl.java
  37. +159
    -153
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java
  38. +55
    -6
      mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java
  39. +32
    -18
      mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java
  40. +110
    -36
      mallinkService/src/main/java/com/iformall/utils/ETCPUtil.java
  41. +57
    -0
      mallinkService/src/main/resources/mapper/WxBillActionMapper.xml
  42. +91
    -102
      mallinkService/src/main/resources/mapper/WxBillAllMapper.xml
  43. +6
    -1
      mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml
  44. +6
    -1
      mallinkService/src/main/resources/mapper/WxCUserMapper.xml
  45. +49
    -1
      mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml
  46. +4
    -0
      mallinkService/src/main/resources/mapper/WxRentContractMapper.xml
  47. +9
    -1
      mallinkService/src/main/resources/mapper/WxScoreRulesMapper.xml
  48. +13
    -9
      mallinkService/src/main/resources/mapper/WxShopMapper.xml
  49. +3
    -0
      mallinkService/src/main/resources/mapper/WxTagsMapper.xml

+ 48
- 0
mallinkAdmin/src/main/java/com/iformall/controller/WxBillActionController.java 查看文件

@@ -0,0 +1,48 @@
package com.iformall.controller;

import com.github.pagehelper.PageInfo;
import com.iformall.annotation.SystemControllerLog;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxBillAction;
import com.iformall.service.WxBillActionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @author gongbiao
*/
@Api(description = "账单操作记录")
@RestController
@RequestMapping("wxBillAction")
public class WxBillActionController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());


@Autowired
private WxBillActionService wxBillActionService;

@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
@SystemControllerLog(description = "账单操作记录-列表")
public ResultData list(@ModelAttribute WxBillAction wxBillAction, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] WxBillActionController::list");
if (null == wxBillAction) {
wxBillAction = new WxBillAction();
}
wxBillAction.setTenantId(getTenantId());
wxBillAction.setSortColumns(WxBillAction.Field.Id_DESC);
PageInfo<WxBillAction> result = wxBillActionService.listAsPage(wxBillAction, pageNum, pageSize);
return new ResultData(result);
}

}

+ 18
- 2
mallinkAdmin/src/main/java/com/iformall/controller/WxCarController.java 查看文件

@@ -11,6 +11,7 @@ import com.iformall.domain.vo.WxCouponCarVo;
import com.iformall.enums.EnumCarVendor; import com.iformall.enums.EnumCarVendor;
import com.iformall.enums.EnumCouponStatus; import com.iformall.enums.EnumCouponStatus;
import com.iformall.enums.EnumETCPCode; import com.iformall.enums.EnumETCPCode;
import com.iformall.exception.MallinkException;
import com.iformall.service.*; import com.iformall.service.*;
import com.iformall.utils.ETCPUtil; import com.iformall.utils.ETCPUtil;
import com.iformall.utils.TJDCarUtil; import com.iformall.utils.TJDCarUtil;
@@ -148,7 +149,13 @@ public class WxCarController extends BaseController {
// 1期只有一个虚拟商户,可以写在商场配置里 // 1期只有一个虚拟商户,可以写在商场配置里
businessId = objParams.getString("businessId"); businessId = objParams.getString("businessId");
} }
String ret = etcp.getBCouponList(url, merchantNo, merchantKey, version, parkId, businessId);
String ret = "";
try {
ret = etcp.getBCouponList(url, merchantNo, merchantKey, version, parkId, businessId);
} catch (MallinkException e) {
return new ResultData(e.getErrorCode(), e.getMessage());
}

if (ret == null) { if (ret == null) {
logger.error("quanTemplate failed, 优免券模板未发现"); logger.error("quanTemplate failed, 优免券模板未发现");
return new ResultData(ErrorCode.ETCP_CMD_FAIL.getCode(), "获取优免券模板异常"); return new ResultData(ErrorCode.ETCP_CMD_FAIL.getCode(), "获取优免券模板异常");
@@ -300,6 +307,7 @@ public class WxCarController extends BaseController {
String version = objParams.getString("version"); String version = objParams.getString("version");
if (park.getParkingId() == null) { if (park.getParkingId() == null) {
// those code is not supported // those code is not supported
/*
String lat = objParams.getString("lat"); String lat = objParams.getString("lat");
String lon = objParams.getString("lon"); String lon = objParams.getString("lon");
String radius = objParams.getString("radius"); String radius = objParams.getString("radius");
@@ -323,10 +331,18 @@ public class WxCarController extends BaseController {
} }
} }
} }
*/
} }


if (park.getParkingId() != null) { if (park.getParkingId() != null) {
String ret = etcp.parkingStatus(url, merchantNo, merchantKey, version, park.getParkingId());
String ret = "";
try {
ret = etcp.parkingStatus(url, merchantNo, merchantKey, version, park.getParkingId());
} catch (MallinkException e) {
logger.error("ETCP failed: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}

JSONObject retObj = JSON.parseObject(ret); JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) {
if (retObj.get("data") != null) { if (retObj.get("data") != null) {


+ 5
- 2
mallinkAdmin/src/main/java/com/iformall/controller/WxChartDataController.java 查看文件

@@ -36,9 +36,12 @@ public class WxChartDataController extends BaseController {
}) })
@SystemControllerLog(description = "报表-图表") @SystemControllerLog(description = "报表-图表")
public ResultData queryData(@RequestParam Map<String, String> params) { public ResultData queryData(@RequestParam Map<String, String> params) {
logger.debug("[" + getIpAddr() + "] WxChartDataController::queryData");
String chart = params.get("chart");
logger.info("[" + getIpAddr() + "] WxChartDataController::queryData chart: " + chart);
params.put("tenantId",super.getTenantId()); params.put("tenantId",super.getTenantId());
return wxChartDataService.queryData(params);
ResultData data = wxChartDataService.queryData(params);
logger.info("[" + getIpAddr() + "] WxChartDataController::queryData chart: " + chart + " end");
return data;
} }


} }

+ 1
- 2
mallinkAdmin/src/main/java/com/iformall/controller/WxCreditHistoryController.java 查看文件

@@ -45,8 +45,7 @@ public class WxCreditHistoryController extends BaseController
@ApiOperation("新增接口") @ApiOperation("新增接口")
@PostMapping("add") @PostMapping("add")
public ResultData add(@RequestBody WxCreditHistory wxCreditHistory) { public ResultData add(@RequestBody WxCreditHistory wxCreditHistory) {
//Assert.notNull(wxCreditHistory.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxCreditHistory.setTenantId(getTenantId());
wxCreditHistoryService.saveOrUpdate(wxCreditHistory); wxCreditHistoryService.saveOrUpdate(wxCreditHistory);
return new ResultData(); return new ResultData();
} }


+ 11
- 2
mallinkAdmin/src/main/java/com/iformall/controller/WxScoreRulesController.java 查看文件

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


@RestController @RestController
@RequestMapping("wxScoreRules") @RequestMapping("wxScoreRules")
@Api(description = "成长值规则相关接口")
@Api(description = "成长值积分规则相关接口")
public class WxScoreRulesController extends BaseController { public class WxScoreRulesController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass()); private final Logger logger = LoggerFactory.getLogger(this.getClass());


@@ -35,11 +35,20 @@ public class WxScoreRulesController extends BaseController {


@ApiOperation("新增接口") @ApiOperation("新增接口")
@PostMapping("add") @PostMapping("add")
@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.setTenantId(getTenantId()); wxScoreRules.setTenantId(getTenantId());
wxScoreRulesService.saveOrUpdate(wxScoreRules); wxScoreRulesService.saveOrUpdate(wxScoreRules);
return new ResultData(); return new ResultData();
} }

@ApiOperation("积分配置")
@GetMapping("/credit_rules")
@SystemControllerLog(description = "积分-配置")
public ResultData creditRulesList() {
logger.debug("[" + getIpAddr() + "] WxScoreRulesController::list");
WxScoreRules scoreRules = wxScoreRulesService.getCreditRules(getTenantId());
return new ResultData(scoreRules);
}
} }

+ 1
- 2
mallinkAdmin/src/main/java/com/iformall/controller/WxShopController.java 查看文件

@@ -71,8 +71,7 @@ public class WxShopController extends BaseController {
public ResultData delete(Long id) { public ResultData delete(Long id) {
logger.debug("[" + getIpAddr() + "] WxShopController::delete"); logger.debug("[" + getIpAddr() + "] WxShopController::delete");
Integer isAdmin = getUser().getIsAdmin(); Integer isAdmin = getUser().getIsAdmin();
wxShopService.deleteById(id, isAdmin);
return new ResultData(Result.SUCCESS, "删除成功", null);
return wxShopService.deleteById(id, isAdmin);
} }


@ApiOperation("根据id查询接口") @ApiOperation("根据id查询接口")


+ 2
- 0
mallinkAdmin/src/main/resources/db/migration/V201904031030__UPDATE_WX_SHOP.sql 查看文件

@@ -0,0 +1,2 @@
ALTER TABLE `wx_shop`
ADD COLUMN `is_del` smallint(2) DEFAULT 0 COMMENT '是否删除1是0否';

+ 14
- 0
mallinkAdmin/src/main/resources/db/migration/V201904031540__ADD_BILL_ACTION.sql 查看文件

@@ -0,0 +1,14 @@
DROP TABLE IF EXISTS `wx_bill_action` ;
CREATE TABLE `wx_bill_action` (
`id` bigint(64) NOT NULL COMMENT 'ID',
`tenant_id` varchar(50) NOT NULL COMMENT '租户Id',
`user_id` bigint(64) NOT NULL COMMENT '用户ID',
`user_name` varchar(100) NOT NULL COMMENT '用户名',
`phone` varchar(20) NOT NULL COMMENT '手机号',
`action` smallint(2) NOT NULL COMMENT '动作',
`details` varchar(200) NOT NULL COMMENT '明细',
`createtime` datetime NOT NULL COMMENT '创建时间',
`updatetime` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
INDEX `id_index` USING BTREE (`id`) comment ''
) ENGINE=`InnoDB` ROW_FORMAT=DYNAMIC COMMENT='账单操作记录' CHECKSUM=0 DELAY_KEY_WRITE=0;

+ 61
- 11
mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java 查看文件

@@ -10,6 +10,7 @@ import com.iformall.domain.po.*;
import com.iformall.domain.vo.WxCouponOrderCarCVo; import com.iformall.domain.vo.WxCouponOrderCarCVo;
import com.iformall.domain.vo.WxMerchantVo; import com.iformall.domain.vo.WxMerchantVo;
import com.iformall.enums.*; import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.service.*; import com.iformall.service.*;
import com.iformall.utils.ETCPUtil; import com.iformall.utils.ETCPUtil;
import com.iformall.utils.TJDCarUtil; import com.iformall.utils.TJDCarUtil;
@@ -109,16 +110,26 @@ public class WxCarController extends BaseController {
String merchantKey = objParams.getString("merchantKey"); String merchantKey = objParams.getString("merchantKey");
String version = objParams.getString("version"); String version = objParams.getString("version");


String ret = etcp.userSignin(url, appId, merchantNo, merchantKey, version, phone);
String ret = "";
try {
ret = etcp.userSignin(url, appId, merchantNo, merchantKey, version, phone);
} catch (MallinkException e) {
logger.error("ETCP failed: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}
JSONObject retObj = JSON.parseObject(ret); JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) {
// 获取绑定的车牌 // 获取绑定的车牌
JSONObject dataObj = retObj.getJSONObject("data"); JSONObject dataObj = retObj.getJSONObject("data");
dataObj.put("vendor", EnumCarVendor.CAR_ETCP.getCode()); dataObj.put("vendor", EnumCarVendor.CAR_ETCP.getCode());
String etcpToken = dataObj.getString("token"); String etcpToken = dataObj.getString("token");
JSONObject dataObj1 = syncCarNumbers(user.getId(), user.getTenantId(), park.getVendorType(),
url, merchantNo, merchantKey, version,
etcpToken);
try {
JSONObject dataObj1 = syncCarNumbers(user.getId(), user.getTenantId(), park.getVendorType(),
url, merchantNo, merchantKey, version,
etcpToken);
} catch (MallinkException e) {
logger.error("ETCP cmd error: " + e.getMessage());
}
// c端必须保存此token // c端必须保存此token
return new ResultData(dataObj); return new ResultData(dataObj);
} else { } else {
@@ -152,8 +163,13 @@ public class WxCarController extends BaseController {
String etcpToken) { String etcpToken) {
String ret; String ret;
JSONObject retObj; JSONObject retObj;
ret = etcp.carNum(url, merchantNo, merchantKey, version, etcpToken);
/*{"code": 0,"msg": "ok","data": {"number": 3,"carList": ["晋 BMZ105","云 C12345"]}} */ /*{"code": 0,"msg": "ok","data": {"number": 3,"carList": ["晋 BMZ105","云 C12345"]}} */
try {
ret = etcp.carNum(url, merchantNo, merchantKey, version, etcpToken);
} catch (MallinkException e) {
logger.error("ETCP failed: " + e.getMessage());
throw new MallinkException(e.getErrorCode(), e.getMessage());
}
retObj = JSON.parseObject(ret); retObj = JSON.parseObject(ret);
JSONObject dataObj1 = retObj.getJSONObject("data"); JSONObject dataObj1 = retObj.getJSONObject("data");
dataObj1.put("vendor", iVendorType); dataObj1.put("vendor", iVendorType);
@@ -251,7 +267,13 @@ public class WxCarController extends BaseController {
String merchantKey = objParams.getString("merchantKey"); String merchantKey = objParams.getString("merchantKey");
String version = objParams.getString("version"); String version = objParams.getString("version");


String ret = etcp.bindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber, null);
String ret = "";
try {
ret = etcp.bindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber, null);
} catch (MallinkException e) {
logger.error("ETCP failed: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}
JSONObject retObj = JSON.parseObject(ret); JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == 0) { if (retObj.getIntValue("code") == 0) {
// 插入车牌 // 插入车牌
@@ -375,7 +397,14 @@ public class WxCarController extends BaseController {
String merchantKey = objParams.getString("merchantKey"); String merchantKey = objParams.getString("merchantKey");
String version = objParams.getString("version"); String version = objParams.getString("version");


String ret = etcp.unbindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber);
String ret = "";
try {
ret = etcp.unbindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber);
} catch (MallinkException e) {
logger.error("ETCP failed: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}

JSONObject retObj = JSON.parseObject(ret); JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == 0) { if (retObj.getIntValue("code") == 0) {
try { try {
@@ -497,7 +526,14 @@ public class WxCarController extends BaseController {
String merchantKey = objParams.getString("merchantKey"); String merchantKey = objParams.getString("merchantKey");
String version = objParams.getString("version"); String version = objParams.getString("version");


String ret = etcp.orderUnpay(url, appId, merchantNo, merchantKey, version, etcpToken, carNumber);
String ret = "";
try {
ret = etcp.orderUnpay(url, appId, merchantNo, merchantKey, version, etcpToken, carNumber);
} catch (MallinkException e) {
logger.error("ETCP failed: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}

JSONObject retObj = JSON.parseObject(ret); JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == 0) { if (retObj.getIntValue("code") == 0) {
JSONObject feeObj = retObj.getJSONArray("data").getJSONObject(0); JSONObject feeObj = retObj.getJSONArray("data").getJSONObject(0);
@@ -667,8 +703,14 @@ public class WxCarController extends BaseController {
businessId = objParams.getString("businessId"); businessId = objParams.getString("businessId");
} }


String ret = etcp.bCouponRecord(url, merchantNo, merchantKey, version,
etcpToken, park.getParkId(), businessId, carNumber, String.valueOf(userCar.getCouponFreeId()));
String ret = "";
try {
ret = etcp.bCouponRecord(url, merchantNo, merchantKey, version,
etcpToken, park.getParkId(), businessId, carNumber, String.valueOf(userCar.getCouponFreeId()));
} catch (MallinkException e) {
logger.error("ETCP failed: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}
JSONObject retObj = JSON.parseObject(ret); JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) {


@@ -732,6 +774,7 @@ public class WxCarController extends BaseController {
String version = objParams.getString("version"); String version = objParams.getString("version");
if (park.getParkingId() == null) { if (park.getParkingId() == null) {
// those code is not supported // those code is not supported
/*
String lat = objParams.getString("lat"); String lat = objParams.getString("lat");
String lon = objParams.getString("lon"); String lon = objParams.getString("lon");
String radius = objParams.getString("radius"); String radius = objParams.getString("radius");
@@ -755,10 +798,17 @@ public class WxCarController extends BaseController {
} }
} }
} }
*/
} }


if (park.getParkingId() != null) { if (park.getParkingId() != null) {
String ret = etcp.parkingStatus(url, merchantNo, merchantKey, version, park.getParkingId());
String ret = "";
try {
ret = etcp.parkingStatus(url, merchantNo, merchantKey, version, park.getParkingId());
} catch (MallinkException e) {
logger.error("ETCP failed: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}


JSONObject retObj = JSON.parseObject(ret); JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) {


+ 4
- 1
mallinkService/src/main/java/com/iformall/common/ErrorCode.java 查看文件

@@ -26,6 +26,7 @@ public enum ErrorCode{
SYS_NUMBER_FORMAT_ERROR(1011, "数字转化异常"), SYS_NUMBER_FORMAT_ERROR(1011, "数字转化异常"),
SYS_EXTEND_JSON_ERROR(1012, "JSON格式异常"), SYS_EXTEND_JSON_ERROR(1012, "JSON格式异常"),
SYS_REPEAT_SUBMIT_EXCEPTION(1013, "请勿重复操作"), SYS_REPEAT_SUBMIT_EXCEPTION(1013, "请勿重复操作"),
REPORT_TYPE_UNKNOWN(1014, "不支持的报表类型"),


/** /**
* 数据库 * 数据库
@@ -273,6 +274,8 @@ public enum ErrorCode{
*/ */
MEM_IMPORT_ERR(13000, "模板导入失败,请检查数据,尝试重新导入"), MEM_IMPORT_ERR(13000, "模板导入失败,请检查数据,尝试重新导入"),
MEM_SCORE_NOT_ENOUGH(13001, "成长值不够扣减值"), MEM_SCORE_NOT_ENOUGH(13001, "成长值不够扣减值"),
CREDIT_ZERO(13100,"本次操作积分为零"),
CREDIT_NOT_ENOUGH(13101, "积分不够扣减值"),


/** /**
* 标签 * 标签
@@ -330,7 +333,7 @@ public enum ErrorCode{
SHOP_IS_RENT(22001,"商铺已出租"), SHOP_IS_RENT(22001,"商铺已出租"),
SHOP_NOT_SELECTED(22002, "未选择商铺"), SHOP_NOT_SELECTED(22002, "未选择商铺"),
SHOP_BAN_DELETED(22003, "已出租的商铺无法删除"), SHOP_BAN_DELETED(22003, "已出租的商铺无法删除"),
SHOP_DELETED_BY_ADMIN(22004, "超管才能删除此商铺"),
SHOP_DELETED_BY_ADMIN(22004, "仅超级管理员能删除该商铺"),




/** /**


+ 199
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxBillAction.java 查看文件

@@ -0,0 +1,199 @@
package com.iformall.domain.po;

import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
* @author gongbiao
*/
@Table(name = "wx_bill_action")
public class WxBillAction implements Serializable {
private static final long serialVersionUID = 1L;

@Id
protected Long id;

@Transient
protected List<Long> ids;
@Transient
protected String sortColumns;

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getSortColumns() {
return sortColumns;
}

public List<Long> getIds() {
return ids;
}

public void setIds(List<Long> ids) {
this.ids = ids;
}


@io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId")
private String tenantId;

@io.swagger.annotations.ApiModelProperty(value = "账单ID", name = "billId")
private Long billId;

@io.swagger.annotations.ApiModelProperty(value = "用户ID", name = "userId")
private Long userId;

@io.swagger.annotations.ApiModelProperty(value = "用户名称", name = "userName")
private String userName;

@io.swagger.annotations.ApiModelProperty(value = "手机号", name = "phone")
private String phone;

@io.swagger.annotations.ApiModelProperty(value = "动作", name = "action")
private Integer action;

@io.swagger.annotations.ApiModelProperty(value = "描述", name = "details")
private String details;

@io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createtime")
private Date createtime;

@io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updatetime")
private Date updatetime;

public String getTenantId() {
return tenantId;
}

public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}

public Long getBillId() {
return billId;
}

public void setBillId(Long billId) {
this.billId = billId;
}

public Long getUserId() {
return userId;
}

public void setUserId(Long userId) {
this.userId = userId;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

public Integer getAction() {
return action;
}

public void setAction(Integer action) {
this.action = action;
}

public String getDetails() {
return details;
}

public void setDetails(String details) {
this.details = details;
}

public Date getCreatetime() {
return createtime;
}

public void setCreatetime(Date createtime) {
this.createtime = createtime;
}

public Date getUpdatetime() {
return updatetime;
}

public void setUpdatetime(Date updatetime) {
this.updatetime = updatetime;
}

public static enum Field {
Id_ASC("`id` ASC"), Id_DESC("`id` DESC");
private String value;

Field(String value) {
this.value = value;
}

public String getValue() {
return value;
}

public void setCol(String value) {
this.value = value;
}

@Override
public String toString() {
return this.getValue();
}
}

public void setSortColumns(WxBillAction.Field... fields) {
if (fields == null || fields.length == 0) {
return;
}
for (int k = 0; k < fields.length; k++) {
if (fields[k] == null) {
return;
}
}
StringBuilder sb = new StringBuilder(fields[0].toString());
for (int k = 1; k < fields.length; k++) {
sb.append(",");
sb.append(fields[k].toString());
}
this.sortColumns = sb.toString();
}

public void setSortColumns(String sortColumns) {
if (sortColumns == null || "".equals(sortColumns.trim())) {
return;
}
if (sortColumns.contains(",")) {
String[] cols = sortColumns.split(",");
List<Field> fList = new java.util.ArrayList();
for (int k = 0; k < cols.length; k++) {
fList.add(Field.valueOf(cols[k]));
}
this.setSortColumns(fList.toArray(new Field[fList.size()]));
} else {
this.setSortColumns(Field.valueOf(sortColumns));
}
}
}

+ 15
- 2
mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java 查看文件

@@ -157,6 +157,9 @@ public class WxCUser implements Serializable {
private Date subsSubscribeTime; private Date subsSubscribeTime;
@io.swagger.annotations.ApiModelProperty(value="关注订阅号Scene",name="subsSubscribeScene") @io.swagger.annotations.ApiModelProperty(value="关注订阅号Scene",name="subsSubscribeScene")
private String subsSubscribeScene; private String subsSubscribeScene;
/**积分**/
@io.swagger.annotations.ApiModelProperty(value="积分",name="credit")
private Integer credit;




//渠道名称 //渠道名称
@@ -488,7 +491,15 @@ public class WxCUser implements Serializable {
this.subsSubscribeScene = subsSubscribeScene; this.subsSubscribeScene = subsSubscribeScene;
} }


public static enum Field
public Integer getCredit() {
return credit;
}

public void setCredit(Integer credit) {
this.credit = credit;
}

public static enum Field
{ {
Id_ASC("`id` ASC"),Id_DESC("`id` DESC") Id_ASC("`id` ASC"),Id_DESC("`id` DESC")
,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC")
@@ -520,7 +531,9 @@ public class WxCUser implements Serializable {
,LoginCount_ASC("`login_count` ASC"),LoginCount_DESC("`login_count` DESC") ,LoginCount_ASC("`login_count` ASC"),LoginCount_DESC("`login_count` DESC")
,ExtraInfo_ASC("`extra_info` ASC"),ExtraInfo_DESC("`extra_info` DESC") ,ExtraInfo_ASC("`extra_info` ASC"),ExtraInfo_DESC("`extra_info` DESC")
,IsSubscribe_ASC("`is_subscribe` ASC"),IsSubscribe_DESC("`is_subscribe` DESC") ,IsSubscribe_ASC("`is_subscribe` ASC"),IsSubscribe_DESC("`is_subscribe` DESC")
;
,Credit_ASC("`credit` ASC"),Credit_DESC("`credit` DESC")

;
private String value; private String value;
Field(String value){ Field(String value){
this.value = value; this.value = value;


+ 15
- 2
mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java 查看文件

@@ -114,9 +114,12 @@ public class WxCUserBasicInfo implements Serializable {
@io.swagger.annotations.ApiModelProperty(value="会员等级",name="level") @io.swagger.annotations.ApiModelProperty(value="会员等级",name="level")
private String level; private String level;


/**积分**/
@io.swagger.annotations.ApiModelProperty(value="积分",name="credit")
private Integer credit;


@Transient @Transient
@Excel(name="标签",width = 20,orderNum = "10")
@Excel(name="标签",width = 50,orderNum = "10")
private String tagNames; private String tagNames;




@@ -304,6 +307,14 @@ public class WxCUserBasicInfo implements Serializable {
this.carCount = carCount; this.carCount = carCount;
} }


public Integer getCredit() {
return credit;
}

public void setCredit(Integer credit) {
this.credit = credit;
}

public static enum Field public static enum Field
{ {
Id_ASC("`id` ASC"),Id_DESC("`id` DESC") Id_ASC("`id` ASC"),Id_DESC("`id` DESC")
@@ -319,7 +330,9 @@ public class WxCUserBasicInfo implements Serializable {
,UpdateDate_ASC("`update_date` ASC"),UpdateDate_DESC("`update_date` DESC") ,UpdateDate_ASC("`update_date` ASC"),UpdateDate_DESC("`update_date` DESC")
,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC")
,Name_ASC("`name` ASC"),Name_DESC("`name` DESC") ,Name_ASC("`name` ASC"),Name_DESC("`name` DESC")
;
,Credit_ASC("`credit` ASC"),Credit_DESC("`credit` DESC")

;
private String value; private String value;
Field(String value){ Field(String value){
this.value = value; this.value = value;


+ 13
- 1
mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java 查看文件

@@ -2,6 +2,7 @@ package com.iformall.domain.po;


import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.iformall.enums.EnumScoreType; import com.iformall.enums.EnumScoreType;
import lombok.Data;


import javax.persistence.*; import javax.persistence.*;
import java.util.*; import java.util.*;
@@ -21,6 +22,7 @@ import java.io.Serializable;
*/ */


@Table(name = "wx_score_rules") @Table(name = "wx_score_rules")
@Data
public class WxScoreRules implements Serializable { public class WxScoreRules implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;


@@ -35,7 +37,11 @@ public class WxScoreRules implements Serializable {
" {\"businessId\":3,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," + " {\"businessId\":3,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," +
" {\"businessId\":4,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," + " {\"businessId\":4,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," +
" {\"businessId\":5,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," + " {\"businessId\":5,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," +
" {\"businessId\":6,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}" +
" {\"businessId\":6,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," +
" {\"businessId\":7,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," +
" {\"businessId\":8,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," +
" {\"businessId\":9,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," +
" {\"businessId\":10,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}" +
"]}," + "]}," +
"{\"id\":3,\"limit\":1,\"step\":1,\"score\":100,\"desc\":\"绑定车牌1个\"}," + "{\"id\":3,\"limit\":1,\"step\":1,\"score\":100,\"desc\":\"绑定车牌1个\"}," +
"{\"id\":4,\"limit\":0,\"step\":1,\"score\":10 ,\"desc\":\"连接WIFI1次\"}," + "{\"id\":4,\"limit\":0,\"step\":1,\"score\":10 ,\"desc\":\"连接WIFI1次\"}," +
@@ -95,6 +101,11 @@ public class WxScoreRules implements Serializable {
@io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate")
private Date updateDate; private Date updateDate;


@io.swagger.annotations.ApiModelProperty(value="1成长值 2积分",name="type")
private Integer type;

@io.swagger.annotations.ApiModelProperty(value="清除前多少年积分",name="clearYear")
private Integer clearYear;


public String getTenantId() { public String getTenantId() {
return tenantId; return tenantId;
@@ -227,4 +238,5 @@ public class WxScoreRules implements Serializable {
this.setSortColumns(Field.valueOf(sortColumns)); this.setSortColumns(Field.valueOf(sortColumns));
} }
} }

} }

+ 11
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxShop.java 查看文件

@@ -126,6 +126,17 @@ public class WxShop implements Serializable {
@io.swagger.annotations.ApiModelProperty(value = "邮箱", name = "email") @io.swagger.annotations.ApiModelProperty(value = "邮箱", name = "email")
private String email; private String email;


@io.swagger.annotations.ApiModelProperty(value = "是否删除1是0否", name = " ")
private Integer isDel;

public Integer getIsDel() {
return isDel;
}

public void setIsDel(Integer isDel) {
this.isDel = isDel;
}

public String getEmail() { public String getEmail() {
return email; return email;
} }


+ 265
- 0
mallinkService/src/main/java/com/iformall/domain/vo/WxBillAllVo.java 查看文件

@@ -0,0 +1,265 @@
package com.iformall.domain.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;

import java.math.BigDecimal;
import java.util.Date;

/**
* @author gongbiao
*/
public class WxBillAllVo {
Long id;

String tenantId;

Long merchantId;

Long shopId;

//@Excel(name="商铺号",width = 20,orderNum = "1")
String shopNumber;

//@Excel(name="商户名称",width = 20,orderNum = "2")
String merchantName;

//@Excel(name="商铺类型",width = 20,orderNum = "3", replace = {"店铺_1","多经点位_2"})
Integer rentShopType;

@Excel(name="费用类型",width = 20,orderNum = "4")
String billType;

@Excel(name="实际应收金额(元)",width = 20,orderNum = "5")
String receivePayStr;

@Excel(name="实收金额(元)",width = 20,orderNum = "6")
String payStr;

@Excel(name="欠缴金额(元)",width = 20,orderNum = "7")
String oweStr;

@Excel(name="缴款截止日期",width = 20,orderNum = "8", format="yyyy-MM-dd")
Date receiveDate;

@Excel(name="逾期天数",width = 20,orderNum = "9")
Integer expiredDay;

@Excel(name="账单状态",width = 20,orderNum = "10", replace = {"欠缴_1","待缴_2","已结清_3","未到期_4","已退还_5","失效_6"})
Integer status;

Integer billTypeValue;
Integer needPay;
Integer receivePay;
Integer pay;
Integer owe;
Date payDate;
Date starttime;
Date endtime;

String manager;
String managerPhone;


public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public Long getMerchantId() {
return merchantId;
}

public void setMerchantId(Long merchantId) {
this.merchantId = merchantId;
}

public Long getShopId() {
return shopId;
}

public void setShopId(Long shopId) {
this.shopId = shopId;
}

public Integer getBillTypeValue() {
return billTypeValue;
}

public void setBillTypeValue(Integer billTypeValue) {
this.billTypeValue = billTypeValue;
}

public String getBillType() {
return billType;
}

public void setBillType(String billType) {
this.billType = billType;
}

public Integer getNeedPay() {
return needPay;
}

public void setNeedPay(Integer needPay) {
this.needPay = needPay;
}

public Integer getReceivePay() {
return receivePay;
}

public void setReceivePay(Integer receivePay) {
this.receivePay = receivePay;
}

public Integer getPay() {
return pay;
}

public void setPay(Integer pay) {
this.pay = pay;
}

public Integer getOwe() {
return owe;
}

public void setOwe(Integer owe) {
this.owe = owe;
}

public Date getReceiveDate() {
return receiveDate;
}

public void setReceiveDate(Date receiveDate) {
this.receiveDate = receiveDate;
}

public Date getPayDate() {
return payDate;
}

public void setPayDate(Date payDate) {
this.payDate = payDate;
}

public Integer getExpiredDay() {
return expiredDay;
}

public void setExpiredDay(Integer expiredDay) {
this.expiredDay = expiredDay;
}

public Integer getStatus() {
return status;
}

public void setStatus(Integer status) {
this.status = status;
}

public String getTenantId() {
return tenantId;
}

public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}

public Date getStarttime() {
return starttime;
}

public void setStarttime(Date starttime) {
this.starttime = starttime;
}

public Date getEndtime() {
return endtime;
}

public void setEndtime(Date endtime) {
this.endtime = endtime;
}


public Integer getRentShopType() {
return rentShopType;
}

public void setRentShopType(Integer rentShopType) {
this.rentShopType = rentShopType;
}

public String getMerchantName() {
return merchantName;
}

public void setMerchantName(String merchantName) {
this.merchantName = merchantName;
}

public String getShopNumber() {
return shopNumber;
}

public void setShopNumber(String shopNumber) {
this.shopNumber = shopNumber;
}

public String getManager() {
return manager;
}

public void setManager(String manager) {
this.manager = manager;
}

public String getManagerPhone() {
return managerPhone;
}

public void setManagerPhone(String managerPhone) {
this.managerPhone = managerPhone;
}


public String getReceivePayStr() {
if(getReceivePay()!=null) {
receivePayStr = new BigDecimal(getReceivePay()).divide(new BigDecimal(100)).toString();
}
return receivePayStr;
}

public void setReceivePayStr(String receivePayStr) {
this.receivePayStr = receivePayStr;
}

public String getPayStr() {
if(getPay()!=null) {
payStr = new BigDecimal(getPay()).divide(new BigDecimal(100)).toString();
}
return payStr;
}

public void setPayStr(String payStr) {
this.payStr = payStr;
}

public String getOweStr() {
if(getOwe()!=null) {
oweStr = new BigDecimal(getOwe()).divide(new BigDecimal(100)).toString();
}
return oweStr;
}

public void setOweStr(String oweStr) {
this.oweStr = oweStr;
}
}

+ 39
- 0
mallinkService/src/main/java/com/iformall/enums/EnumBillAction.java 查看文件

@@ -0,0 +1,39 @@
package com.iformall.enums;


/**
* @author gongbiao
*/

public enum EnumBillAction {
SELF_SERVICE_PAY(1, "自助缴费"),
UPDATE_BILL(2, "变更账单"),
OFFLINE_PAY(3, "线下缴费"),
DEPOSIT_PAY(4, "押金缴费"),
DEPOSIT_RETURN(5, "押金退款"),;

public static EnumBillAction getEnum(Integer code) {
for (EnumBillAction value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumBillAction(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 6
- 1
mallinkService/src/main/java/com/iformall/enums/EnumBusiness.java 查看文件

@@ -12,7 +12,12 @@ public enum EnumBusiness {
BUSINESS_ID3(3, "服饰"), BUSINESS_ID3(3, "服饰"),
BUSINESS_ID4(4, "亲子"), BUSINESS_ID4(4, "亲子"),
BUSINESS_ID5(5, "超市"), BUSINESS_ID5(5, "超市"),
BUSINESS_ID6(6, "其他"),
BUSINESS_ID6(6, "其它"),
BUSINESS_ID7(7, "美妆"),
BUSINESS_ID8(8, "珠宝"),
BUSINESS_ID9(9, "服务"),
BUSINESS_ID10(10, "家居")

; ;


public static EnumBusiness getEnum(Integer code) { public static EnumBusiness getEnum(Integer code) {


+ 1
- 1
mallinkService/src/main/java/com/iformall/enums/EnumChart.java 查看文件

@@ -13,7 +13,7 @@ public enum EnumChart {
HYYHSJ(6, "活跃用户数据"), HYYHSJ(6, "活跃用户数据"),
XSSJ(7, "销售数据"), XSSJ(7, "销售数据"),
JDSJ(8, "解单数据"), JDSJ(8, "解单数据"),
JRCNCLL(9, "今日场内车流量"),
JRCNCLL(9, "今日场内车流量"), // 合并至历史车流量
JRYBCPL(10, "今日已绑车牌量"), JRYBCPL(10, "今日已绑车牌量"),
SSCLL(11, "实时车流量"), SSCLL(11, "实时车流量"),
LSCLL(12, "历史车流量"), LSCLL(12, "历史车流量"),


+ 3
- 1
mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java 查看文件

@@ -13,7 +13,9 @@ public enum EnumScoreType {
WECHAT_PHONE(6, "微信用户手机授权"), WECHAT_PHONE(6, "微信用户手机授权"),
COMPLETE_INFO(7, "完善个人信息"), COMPLETE_INFO(7, "完善个人信息"),
MEM_IMPORT(8, "会员导入"), MEM_IMPORT(8, "会员导入"),
MEM_REDUCE(9, "会员成长值扣减");
MEM_REDUCE(9, "会员成长值扣减"),
SPEND_CREDIT(10, "消费积分"),
CHANGE_CREDIT(11, "积分兑换");


public static EnumScoreType getEnum(Integer code) { public static EnumScoreType getEnum(Integer code) {
for (EnumScoreType value : values()) { for (EnumScoreType value : values()) {


+ 16
- 0
mallinkService/src/main/java/com/iformall/mapper/WxBillActionMapper.java 查看文件

@@ -0,0 +1,16 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxBillAction;
import com.iformall.domain.po.WxShop;

import java.util.List;

/**
* @author gongbiao
*/
public interface WxBillActionMapper extends CommonMapper<WxBillAction, Long> {

List<WxShop> findList(WxBillAction wxBillAction);

}

+ 2
- 1
mallinkService/src/main/java/com/iformall/mapper/WxBillAllMapper.java 查看文件

@@ -1,6 +1,7 @@
package com.iformall.mapper; package com.iformall.mapper;


import com.iformall.domain.vo.WxBillAll; import com.iformall.domain.vo.WxBillAll;
import com.iformall.domain.vo.WxBillAllVo;


import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -11,7 +12,7 @@ import java.util.Map;
public interface WxBillAllMapper { public interface WxBillAllMapper {




List<Map<String,Object>> list(WxBillAll record);
List<WxBillAllVo> list(WxBillAll record);


Map<String,Object> queryOweInfo(WxBillAll record); Map<String,Object> queryOweInfo(WxBillAll record);




+ 7
- 1
mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java 查看文件

@@ -2,6 +2,7 @@ package com.iformall.mapper;


import java.util.*; import java.util.*;
import com.iformall.common.CommonMapper; import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxScoreHistory;
import com.iformall.domain.vo.WxCreditHistoryVo; import com.iformall.domain.vo.WxCreditHistoryVo;
import com.iformall.domain.po.WxCreditHistory; import com.iformall.domain.po.WxCreditHistory;


@@ -11,5 +12,10 @@ public interface WxCreditHistoryMapper extends CommonMapper<WxCreditHistory, Lon


List<WxCreditHistoryVo> findListMore(WxCreditHistory wxCreditHistory); List<WxCreditHistoryVo> findListMore(WxCreditHistory wxCreditHistory);


int loginCount(WxCreditHistory wxCreditHistory);

int creditAmount(Long cUserId);

int countList(WxCreditHistory wxCreditHistory);

} }

+ 3
- 1
mallinkService/src/main/java/com/iformall/mapper/WxRentContractMapper.java 查看文件

@@ -9,7 +9,7 @@ import java.util.Map;
/** /**
* @author gongbiao * @author gongbiao
*/ */
public interface WxRentContractMapper extends CommonMapper<WxRentContract, String> {
public interface WxRentContractMapper extends CommonMapper<WxRentContract, Long> {


List<WxRentContract> findList(WxRentContract wxRentContract); List<WxRentContract> findList(WxRentContract wxRentContract);


@@ -47,4 +47,6 @@ public interface WxRentContractMapper extends CommonMapper<WxRentContract, Strin


List<WxRentContract> getMerchants(WxRentContract wxRentContract); List<WxRentContract> getMerchants(WxRentContract wxRentContract);


int selectRentContractCountByShopId(WxRentContract wxRentContract);

} }

+ 2
- 0
mallinkService/src/main/java/com/iformall/mapper/WxTagsMapper.java 查看文件

@@ -4,9 +4,11 @@ import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxTags; import com.iformall.domain.po.WxTags;


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


public interface WxTagsMapper extends CommonMapper<WxTags, String> { public interface WxTagsMapper extends CommonMapper<WxTags, String> {


List<WxTags> findList(WxTags wxTags); List<WxTags> findList(WxTags wxTags);
List<WxTags> findListAll();
List<WxTags> getByName(String name); List<WxTags> getByName(String name);
} }

+ 10
- 0
mallinkService/src/main/java/com/iformall/service/WxBillActionService.java 查看文件

@@ -0,0 +1,10 @@
package com.iformall.service;

import com.github.pagehelper.PageInfo;
import com.iformall.domain.po.WxBillAction;

public interface WxBillActionService {

PageInfo<WxBillAction> listAsPage(WxBillAction record, Integer pageIndex, Integer pageSize);

}

+ 2
- 1
mallinkService/src/main/java/com/iformall/service/WxCreditHistoryService.java 查看文件

@@ -2,6 +2,7 @@ package com.iformall.service;


import java.util.*; import java.util.*;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.iformall.common.ResultData;
import com.iformall.domain.dto.WxCreditHistoryDto; import com.iformall.domain.dto.WxCreditHistoryDto;
import com.iformall.domain.po.WxCreditHistory; import com.iformall.domain.po.WxCreditHistory;
import com.iformall.domain.vo.WxCreditHistoryVo; import com.iformall.domain.vo.WxCreditHistoryVo;
@@ -41,7 +42,7 @@ public interface WxCreditHistoryService {
* *
* @param record * @param record
*/ */
void saveOrUpdate(WxCreditHistory record);
ResultData saveOrUpdate(WxCreditHistory record);


/** /**
* 根据Id删除实体 * 根据Id删除实体


+ 7
- 0
mallinkService/src/main/java/com/iformall/service/WxScoreRulesService.java 查看文件

@@ -11,6 +11,13 @@ public interface WxScoreRulesService {
* @return * @return
*/ */
WxScoreRules getScoreRules(String tenantId); WxScoreRules getScoreRules(String tenantId);

/**
* 获取租户的积分规则
* @param tenantId
* @return
*/
WxScoreRules getCreditRules(String tenantId);
/** /**
* 保存或更新实体 * 保存或更新实体
* *


+ 1
- 1
mallinkService/src/main/java/com/iformall/service/WxShopService.java 查看文件

@@ -42,7 +42,7 @@ public interface WxShopService {
* @param id * @param id
* @param isAdmin * @param isAdmin
*/ */
void deleteById(Long id, Integer isAdmin);
ResultData deleteById(Long id, Integer isAdmin);




ResultData getbshoplist(String tenantId, String shopNumber); ResultData getbshoplist(String tenantId, String shopNumber);


+ 28
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxBillActionServiceImpl.java 查看文件

@@ -0,0 +1,28 @@
package com.iformall.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.domain.po.WxBillAction;
import com.iformall.mapper.WxBillActionMapper;
import com.iformall.service.WxBillActionService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
* @author gongbiao
*/
@Service
public class WxBillActionServiceImpl implements WxBillActionService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
WxBillActionMapper wxBillActionMapper;

@Override
public PageInfo<WxBillAction> listAsPage(WxBillAction record, Integer pageIndex, Integer pageSize) {
logger.info("查询账单操作记录列表");
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxBillActionMapper.findList(record));
}
}

+ 41
- 5
mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java 查看文件

@@ -1,15 +1,16 @@
package com.iformall.service.impl; package com.iformall.service.impl;


import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; 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.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.vo.WxBillAll; import com.iformall.domain.vo.WxBillAll;
import com.iformall.domain.vo.WxBillAllVo;
import com.iformall.enums.*; import com.iformall.enums.*;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.mapper.*; import com.iformall.mapper.*;
import com.iformall.mq.MqBaseProducer;
import com.iformall.service.*; import com.iformall.service.*;
import com.iformall.utils.Constant; import com.iformall.utils.Constant;
import com.iformall.utils.DateUtils; import com.iformall.utils.DateUtils;
@@ -21,6 +22,7 @@ import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;

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;
@@ -32,6 +34,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;

import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;


@@ -87,6 +90,9 @@ public class WxBillAllServiceImpl implements WxBillAllService {
@Autowired @Autowired
WxBillOtherDepositMapper wxBillOtherDepositMapper; WxBillOtherDepositMapper wxBillOtherDepositMapper;


@Autowired
ExcelService excelService;

@Autowired @Autowired
MqBaseProducer mqBaseProducer; MqBaseProducer mqBaseProducer;


@@ -94,9 +100,8 @@ public class WxBillAllServiceImpl implements WxBillAllService {
public Map<String, Object> listAsPage(WxBillAll record, Integer pageIndex, Integer pageSize) { public Map<String, Object> listAsPage(WxBillAll record, Integer pageIndex, Integer pageSize) {
//更新各账单状态 //更新各账单状态
updateBillStatus(record); updateBillStatus(record);
PageHelper.startPage(pageIndex, pageSize);
List<Map<String, Object>> billList = wxBillAllMapper.list(record);
PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(billList);
PageInfo<WxBillAllVo> pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxBillAllMapper.list(record));

Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
result.put("pageInfo", pageInfo); result.put("pageInfo", pageInfo);
return result; return result;
@@ -202,6 +207,37 @@ public class WxBillAllServiceImpl implements WxBillAllService {
} }
} }


@Override
public void exportBill(HttpServletRequest request, HttpServletResponse response, WxBillAll wxBillAll) {

Map<Long, List<WxBillAllVo>> billMapList = wxBillAllMapper.list(wxBillAll)
.parallelStream()
.collect(Collectors.groupingBy(WxBillAllVo::getMerchantId));

List<Map<String, Object>> list = new ArrayList<>();

Iterator<Map.Entry<Long, List<WxBillAllVo>>> entries = billMapList.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry<Long, List<WxBillAllVo>> entry = entries.next();
Map<String,Object> map = new HashMap<>();
ExportParams deptExportParams = new ExportParams();
WxBillAllVo first = ((List<WxBillAllVo>)(entry.getValue())).get(0);
deptExportParams.setSheetName(first.getMerchantName());
deptExportParams.setTitle(first.getMerchantName()
+ " ("
+ EnumRentShopType.getEnum((Integer)first.getRentShopType()).getMessage()
+ "-"+first.getShopNumber()
+ ")");
//deptExportParams.setSecondTitle();
map.put("title", deptExportParams);
map.put("entity", WxBillAllVo.class);
map.put("data", entry.getValue());
list.add(map);
}

excelService.exportExcel(list, "账单数据.xls", response);
}
/*
@Override @Override
public void exportBill(HttpServletRequest request, HttpServletResponse response, WxBillAll wxBillAll) { public void exportBill(HttpServletRequest request, HttpServletResponse response, WxBillAll wxBillAll) {
//得到当前月 //得到当前月
@@ -341,7 +377,7 @@ public class WxBillAllServiceImpl implements WxBillAllService {
e.printStackTrace(); e.printStackTrace();
} }
} }
*/
private int updateBillOther(Map<String, Object> bill) { private int updateBillOther(Map<String, Object> bill) {
logger.info("updateBillOther params:"+bill.toString()); logger.info("updateBillOther params:"+bill.toString());
Object id = bill.get("id"); Object id = bill.get("id");


+ 10
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java 查看文件

@@ -1,5 +1,6 @@
package com.iformall.service.impl; package com.iformall.service.impl;


import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;


@@ -33,6 +34,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;


@Service @Service
public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService {
@@ -148,6 +150,13 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService {


public void exportData(WxCUserBasicInfo basicInfo, HttpServletRequest request, HttpServletResponse response) { public void exportData(WxCUserBasicInfo basicInfo, HttpServletRequest request, HttpServletResponse response) {
List<WxCUserBasicInfoVo> list = wxCUserBasicInfoMapper.findVoList(basicInfo); List<WxCUserBasicInfoVo> list = wxCUserBasicInfoMapper.findVoList(basicInfo);
List<WxTags> tagList = wxTagsMapper.findListAll();
Map<Long, String> tagMap = tagList.stream().collect(Collectors.toMap(WxTags::getId, WxTags::getName));
list.stream().filter(u->u.getTags()!=null).forEach(u->{
List<Long> ids = JSONObject.parseArray(u.getTags(), Long.class);
String tagNames = StringUtils.join(ids.stream().map(id->tagMap.get(id)).collect(Collectors.toList()),"/");
u.setTagNames(tagNames);
});
excelService.exportExcel(list,null,"会员信息",WxCUserBasicInfoVo.class,"会员信息数据.xls",response); excelService.exportExcel(list,null,"会员信息",WxCUserBasicInfoVo.class,"会员信息数据.xls",response);
} }
/* /*
@@ -166,8 +175,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService {


SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");


WxTags wxTagsQ = new WxTags();
List<WxTags> tagList = wxTagsMapper.findList(wxTagsQ);



List<Long> tagIdList = new ArrayList<Long>(); List<Long> tagIdList = new ArrayList<Long>();




+ 2
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java 查看文件

@@ -594,7 +594,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {
e.printStackTrace(); e.printStackTrace();
} }
} }
*/
public void downFile(String filePath, String filename, String exportFileName, public void downFile(String filePath, String filename, String exportFileName,
HttpServletResponse response, HttpServletRequest req) throws IOException { HttpServletResponse response, HttpServletRequest req) throws IOException {
try { try {
@@ -624,5 +624,5 @@ public class WxCardSpendServiceImpl implements WxCardSpendService {
e.printStackTrace(); e.printStackTrace();
} }
} }
*/
} }

+ 1864
- 1474
mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java
文件差異過大導致無法顯示
查看文件


+ 199
- 12
mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java 查看文件

@@ -3,20 +3,29 @@ package com.iformall.service.impl;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;


import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.iformall.domain.dto.WxCreditHistoryDto;
import com.iformall.common.ErrorCode;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.vo.WxCreditHistoryVo; import com.iformall.domain.vo.WxCreditHistoryVo;
import com.iformall.enums.EnumBusiness;
import com.iformall.enums.EnumScoreType;
import com.iformall.enums.EnumUserType; import com.iformall.enums.EnumUserType;
import com.iformall.mapper.*; import com.iformall.mapper.*;
import com.iformall.service.WxCreditHistoryService; import com.iformall.service.WxCreditHistoryService;
import com.iformall.service.WxScoreRulesService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.iformall.common.IdWorker; import com.iformall.common.IdWorker;


@Service @Service
@Slf4j
public class WxCreditHistoryServiceImpl implements WxCreditHistoryService { public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
@Autowired @Autowired
@@ -34,6 +43,9 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
@Autowired @Autowired
MallUserInfoMapper mallUserInfoMapper; MallUserInfoMapper mallUserInfoMapper;


@Autowired
WxScoreRulesService wxScoreRulesService;

@Override @Override
public PageInfo<WxCreditHistory> listAsPage(WxCreditHistory record, Integer pageIndex, Integer pageSize) { public PageInfo<WxCreditHistory> listAsPage(WxCreditHistory record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCreditHistoryMapper.findList(record)); return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCreditHistoryMapper.findList(record));
@@ -113,27 +125,202 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
} }


@Override @Override
public void saveOrUpdate(WxCreditHistory record) {
public ResultData saveOrUpdate(WxCreditHistory record) {
WxCUser wxCUser = wxCUserMapper.selectByPrimaryKey(record.getCUserId());
WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectByPrimaryKey(record.getCUserId());
if (wxCUser == null && wxCUserBasicInfo == null) {
//验证此用户是否存在
return new ResultData(ErrorCode.USER_IS_EMPTY);
}
//获取当前用户总积分
int currentCreditAmount = wxCreditHistoryMapper.creditAmount(record.getCUserId());

//计算出需要新增或减少的积分
int creditChangeNum = creditIncrement(record);

if (creditChangeNum == 0) {
return new ResultData(ErrorCode.CREDIT_ZERO);
}
if (currentCreditAmount + creditChangeNum < 0) {
return new ResultData(ErrorCode.CREDIT_NOT_ENOUGH);
}
record.setCreditNum(creditChangeNum);
record.setCreditAmount(currentCreditAmount + creditChangeNum);
if (record.getId() == null) { if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId()); record.setId(idWorker.nextId());
wxCreditHistoryMapper.insertSelective(record); wxCreditHistoryMapper.insertSelective(record);
//将计算出来新的总积分 更新到两张用户表里
updateCredit(wxCUser,wxCUserBasicInfo,record.getCreditAmount());
} else { } else {
wxCreditHistoryMapper.updateByPrimaryKeySelective(record);
//wxCreditHistoryMapper.updateByPrimaryKeySelective(record);
} }
return new ResultData(Result.SUCCESS, "积分操作成功");

} }


@Override @Override
public void deleteById(Long id) { public void deleteById(Long id) {
wxCreditHistoryMapper.deleteByPrimaryKey(id); wxCreditHistoryMapper.deleteByPrimaryKey(id);
} }

//根据积分类型计算"增加积分"
private int creditIncrement(WxCreditHistory record) {
if (record.getCreditType() == EnumScoreType.LOGIN.getCode()) {
return loginAddCredit(record);
}
if (record.getCreditType() == EnumScoreType.BIND_CAR.getCode()) {
return bindCarAddCredit(record);
}
if (record.getCreditType() == EnumScoreType.WIFI_CONNECTION.getCode()) {
return wifiAddCredit();
}
if (record.getCreditType() == EnumScoreType.WECHAT_PERSION.getCode()) {
return personAddCredit(record);
}
if (record.getCreditType() == EnumScoreType.WECHAT_PHONE.getCode()) {
return phoneAddCredit(record);
}
if (record.getCreditType() == EnumScoreType.COMPLETE_INFO.getCode()) {
return infoAddCredit(record);
}
if (record.getCreditType() == EnumScoreType.SPEND_CREDIT.getCode()) {
return spendCredit(record);
}
if (record.getCreditType() == EnumScoreType.CHANGE_CREDIT.getCode()) {
//TODO 待实现
return changeCredit(record);
}
if (record.getCreditType() == EnumScoreType.CONSUMPTION.getCode()) {
return payAddCredit(record);
}


return 0;
}

private int loginAddCredit(WxCreditHistory record) {
//如果当天已经登录过则跳过
if (wxCreditHistoryMapper.loginCount(record) > 0) {
return 0;
}
// 1. 获取当前租户下积分的增加规则
WxScoreRules wxScoreRules = wxScoreRulesService.getCreditRules(record.getTenantId());
// 2. 增长的积分
return wxScoreRules.getRule(EnumScoreType.LOGIN,WxScoreRules.SCORE);
}

private int bindCarAddCredit(WxCreditHistory record) {
// 1. 获取score rules
WxScoreRules wxScoreRules = wxScoreRulesService.getCreditRules(record.getTenantId());
// 2. 增长的积分
return wxScoreRules.getRule(EnumScoreType.BIND_CAR,WxScoreRules.SCORE);
}

private int wifiAddCredit() {
int addCreditNumber = 0;
return addCreditNumber;
}

private int personAddCredit(WxCreditHistory record) {
// 1. 获取score rules
WxScoreRules wxScoreRules = wxScoreRulesService.getCreditRules(record.getTenantId());
// 2. 增长的积分
return wxScoreRules.getRule(EnumScoreType.WECHAT_PERSION,WxScoreRules.SCORE);
}

private int phoneAddCredit(WxCreditHistory record) {
// 1. 获取score rules
WxScoreRules wxScoreRules = wxScoreRulesService.getCreditRules(record.getTenantId());
// 2. 获取成长值
return wxScoreRules.getRule(EnumScoreType.WECHAT_PERSION,WxScoreRules.SCORE);
}

private int checkCompleteInfoScoreCount(WxCUser cUser) {
WxCreditHistory wxCreditHistory = new WxCreditHistory();
wxCreditHistory.setTenantId(cUser.getTenantId());
wxCreditHistory.setCUserId(cUser.getId());
wxCreditHistory.setCreditType(EnumScoreType.COMPLETE_INFO.getCode());
return wxCreditHistoryMapper.countList(wxCreditHistory);
}

private int infoAddCredit(WxCreditHistory record) {
WxCUser user = wxCUserMapper.selectByPrimaryKey(record.getCUserId());
if (user == null || checkCompleteInfoScoreCount(user) > 0)
return 0;
// 1. 获取score rules
WxScoreRules scoreRules = wxScoreRulesService.getCreditRules(user.getTenantId());
// 2. 获取成长值
return scoreRules.getRule(EnumScoreType.COMPLETE_INFO,WxScoreRules.SCORE);
}

private int spendCredit(WxCreditHistory record){
int spendCredit = record.getCreditNum();
return -spendCredit;
}

private int changeCredit(WxCreditHistory record){
//TODO 积分兑换扣减规则
return 0;
}

private int payAddCredit(WxCreditHistory record) {
int addCreditNumber = 0;
// 订单金额为0时不计入
if (record.getCreditNum() == 0)
return 0;
// 1. 获取score rules
WxScoreRules scoreRules = wxScoreRulesService.getCreditRules(record.getTenantId());

// 2. 获取成长值 by id
JSONObject payRule = scoreRules.getRuleObj(EnumScoreType.CONSUMPTION);
// 3. 获取成长值 by 业态
JSONObject busRule = null;
JSONObject busRuleOther = null;
JSONArray busRules = payRule.getJSONArray("childs");
if (busRules != null) {
for (int i = 0; i < busRules.size(); i++) {
JSONObject bus = (JSONObject) busRules.get(i);
Integer businessId1 = bus.getInteger("businessId");
if (record.getBusinessId().equals(businessId1)) {
busRule = bus;
}
if (businessId1.equals(EnumBusiness.BUSINESS_ID6.getCode())) {
busRuleOther = bus;
}
}
if (busRule == null) {
busRule = busRuleOther;
}
}
if (busRule == null) {
busRule = payRule;
}
Double priceCondition = busRule.getDouble(WxScoreRules.STEP) * 100; // 元->分
int baseScore = busRule.getInteger(WxScoreRules.SCORE); // 消费增长积分

// 4. 计算积分
Double dScoreT = Math.floor(record.getSpend() * 1.0D / priceCondition * baseScore);
addCreditNumber = dScoreT.intValue();
log.info("CREDIT:" + busRule.toJSONString() + "\nAddCredit: " + addCreditNumber);

return addCreditNumber;
}

/**
* 更新两个表中的最新总积分
* @param creditAmount 用户最新总积分
*/
private void updateCredit(WxCUser wxCUser, WxCUserBasicInfo wxCUserBasicInfo, int creditAmount) {
if (wxCUser != null) {
wxCUser.setCredit(creditAmount);
wxCUserMapper.updateByPrimaryKeySelective(wxCUser);
}
if (wxCUserBasicInfo != null) {
wxCUserBasicInfo.setCredit(creditAmount);
wxCUserBasicInfoMapper.updateByPrimaryKeySelective(wxCUserBasicInfo);
}
}


} }

+ 2
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxMerchantSubsidyServiceImpl.java 查看文件

@@ -167,7 +167,7 @@ public class WxMerchantSubsidyServiceImpl implements WxMerchantSubsidyService {
e.printStackTrace(); e.printStackTrace();
} }
} }
*/


public void downFile(String filePath, String filename, String exportFileName, public void downFile(String filePath, String filename, String exportFileName,
HttpServletResponse response, HttpServletRequest req) throws IOException { HttpServletResponse response, HttpServletRequest req) throws IOException {
@@ -198,6 +198,6 @@ public class WxMerchantSubsidyServiceImpl implements WxMerchantSubsidyService {
e.printStackTrace(); e.printStackTrace();
} }
} }
*/
} }

+ 159
- 153
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java 查看文件

@@ -205,19 +205,40 @@ public class WxRentContractServiceImpl implements WxRentContractService {
Date date = new Date(); Date date = new Date();
record.setCreatetime(date); record.setCreatetime(date);
record.setUpdatetime(date); record.setUpdatetime(date);
try {

if (record.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) {
String rentInfo = record.getRentInfo();
JSONArray rentInfoArray = JSONArray.parseArray(rentInfo);
int size = rentInfoArray.size();
if (size == 0) {
return new ResultData(ErrorCode.SHOP_NOT_SELECTED);
}
//查询rent_info 包括 shopId
for (int i = 0; i < size; i++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(i);
WxRentContract wxRentContract = new WxRentContract();
wxRentContract.setTenantId(record.getTenantId());
wxRentContract.setShopId(rentInfoObject.getLong("shopId"));
int count = wxRentContractMapper.selectRentContractCountByShopId(wxRentContract);
if (count > 0) {
String shopNumber = rentInfoObject.getString("shopNumber");
return new ResultData(ErrorCode.SHOP_IS_RENT.getCode(), "店铺 " + shopNumber + " 已出租");
}
}
} else {
WxRentContract wxRentContract = new WxRentContract(); WxRentContract wxRentContract = new WxRentContract();
wxRentContract.setTenantId(record.getTenantId()); wxRentContract.setTenantId(record.getTenantId());
wxRentContract.setShopId(record.getShopId()); wxRentContract.setShopId(record.getShopId());
long count = wxRentContractMapper.queryRentContractData(wxRentContract).stream(). long count = wxRentContractMapper.queryRentContractData(wxRentContract).stream().
filter(rc -> !rc.get("status").equals(EnumRentContractStatus.CONTRACT_TERMINATE.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.WAIT_SIGN.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.INVALID.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.CONTRACT_END.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.INTENTION.getCode())).count();
filter(rc -> rc.get("status").equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode())
|| rc.get("status").equals(EnumRentContractStatus.RENT_PAID.getCode())
|| rc.get("status").equals(EnumRentContractStatus.CONTRACT_END_SOON.getCode())).count();
if (count > 0) { if (count > 0) {
return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND); return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND);
} }
}

try {
record.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode()); record.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode());
wxRentContractMapper.insertSelective(record); wxRentContractMapper.insertSelective(record);
} catch (Exception e) { } catch (Exception e) {
@@ -264,51 +285,58 @@ public class WxRentContractServiceImpl implements WxRentContractService {
wxBillRent.setIsPreview(EnumIsPreview.YES.getCode()); wxBillRent.setIsPreview(EnumIsPreview.YES.getCode());
List<WxBillRent> resultList = wxBillRentMapper.findList(wxBillRent); List<WxBillRent> resultList = wxBillRentMapper.findList(wxBillRent);


boolean change = false;
if(CollectionUtils.isEmpty(resultList)){
change = true;
}else if(record.getAdjustPeriod().intValue() != dbRent.getAdjustPeriod().intValue()){
change = true;
ResultData resultData = null;
if (dbRent.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) {
// 更新
resultData = getResultDataForUpdate(record, userId);
//删除预账单,重新生成
wxBillRentMapper.deletePreviewBill(record);
resultList = buildRent(new WxMerchant(), null, record, EnumIsPreview.YES.getCode());
}else{ }else{
if(record.getReceivePeriod() != null && record.getLease()!=null && record.getPrice()!= null) {
if (record.getType().equals(EnumRentContractType.RENT_BY_AREA.getCode())) {
if (!record.getReceivePeriod().equals(dbRent.getReceivePeriod())
|| !record.getLease().equals(dbRent.getLease())
|| !record.getType().equals(dbRent.getType())
|| !record.getPrice().equals(dbRent.getPrice())
|| !record.getAdjustRatio().replaceAll("\\s*","").equals(dbRent.getAdjustRatio().replaceAll("\\s*",""))
) {
change = true;
}
} else if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) {
if (!record.getReceivePeriod().equals(dbRent.getReceivePeriod())
|| !record.getLease().equals(dbRent.getLease())
|| !record.getType().equals(dbRent.getType())
|| !record.getRevenue().equals(dbRent.getRevenue())
|| !record.getPayRatio().equals(dbRent.getPayRatio())
) {
change = true;
}
} else if (record.getType().equals(EnumRentContractType.RENT_BY_AREA_AND_JOINT.getCode())) {
if (!record.getReceivePeriod().equals(dbRent.getReceivePeriod())
|| !record.getLease().equals(dbRent.getLease())
|| !record.getType().equals(dbRent.getType())
|| !record.getPrice().equals(dbRent.getPrice())
|| !record.getPayRatio().equals(dbRent.getPayRatio())
) {
change = true;
boolean change = false;
if (CollectionUtils.isEmpty(resultList)) {
change = true;
} else if (record.getAdjustPeriod().intValue() != dbRent.getAdjustPeriod().intValue()) {
change = true;
} else {
if (record.getReceivePeriod() != null && record.getLease() != null && record.getPrice() != null) {
if (record.getType().equals(EnumRentContractType.RENT_BY_AREA.getCode())) {
if (!record.getReceivePeriod().equals(dbRent.getReceivePeriod())
|| !record.getLease().equals(dbRent.getLease())
|| !record.getType().equals(dbRent.getType())
|| !record.getPrice().equals(dbRent.getPrice())
|| !record.getAdjustRatio().replaceAll("\\s*", "").equals(dbRent.getAdjustRatio().replaceAll("\\s*", ""))
) {
change = true;
}
} else if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) {
if (!record.getReceivePeriod().equals(dbRent.getReceivePeriod())
|| !record.getLease().equals(dbRent.getLease())
|| !record.getType().equals(dbRent.getType())
|| !record.getRevenue().equals(dbRent.getRevenue())
|| !record.getPayRatio().equals(dbRent.getPayRatio())
) {
change = true;
}
} else if (record.getType().equals(EnumRentContractType.RENT_BY_AREA_AND_JOINT.getCode())) {
if (!record.getReceivePeriod().equals(dbRent.getReceivePeriod())
|| !record.getLease().equals(dbRent.getLease())
|| !record.getType().equals(dbRent.getType())
|| !record.getPrice().equals(dbRent.getPrice())
|| !record.getPayRatio().equals(dbRent.getPayRatio())
) {
change = true;
}
} }
} }
} }
}

// 更新
ResultData resultData = getResultDataForUpdate(record, userId);

//有改变,删除预账单,重新生成
if(change) {
wxBillRentMapper.deletePreviewBill(record);
resultList = buildRent(new WxMerchant(), null, record, EnumIsPreview.YES.getCode());
// 更新
resultData = getResultDataForUpdate(record, userId);
//有改变,删除预账单,重新生成
if (change) {
wxBillRentMapper.deletePreviewBill(record);
resultList = buildRent(new WxMerchant(), null, record, EnumIsPreview.YES.getCode());
}
} }


//启动审批流 //启动审批流
@@ -373,20 +401,40 @@ public class WxRentContractServiceImpl implements WxRentContractService {
record.setDeposit(record.getDeposit() == null ? 0 : record.getDeposit()); record.setDeposit(record.getDeposit() == null ? 0 : record.getDeposit());


record.setUpdatetime(new Date()); record.setUpdatetime(new Date());
try {
WxRentContract wxRentContractParams = new WxRentContract();
wxRentContractParams.setTenantId(record.getTenantId());
wxRentContractParams.setShopId(record.getShopId());
long count = wxRentContractMapper.queryRentContractData(wxRentContractParams).stream().
filter(rc -> !rc.get("status").equals(EnumRentContractStatus.CONTRACT_TERMINATE.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.WAIT_SIGN.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.INVALID.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.CONTRACT_END.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.INTENTION.getCode())
&& !rc.get("id").equals(wxRentContract.getId())).count();

if (record.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) {
String rentInfo = record.getRentInfo();
JSONArray rentInfoArray = JSONArray.parseArray(rentInfo);
int size = rentInfoArray.size();
if (size == 0) {
return new ResultData(ErrorCode.SHOP_NOT_SELECTED);
}
//查询rent_info 包括 shopId
for (int i = 0; i < size; i++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(i);
WxRentContract wxRentContractQuery = new WxRentContract();
wxRentContractQuery.setTenantId(record.getTenantId());
wxRentContractQuery.setShopId(rentInfoObject.getLong("shopId"));
int count = wxRentContractMapper.selectRentContractCountByShopId(wxRentContractQuery);
if (count > 0) {
String shopNumber = rentInfoObject.getString("shopNumber");
return new ResultData(ErrorCode.SHOP_IS_RENT.getCode(), "店铺 " + shopNumber + " 已出租");
}
}
} else {
WxRentContract wxRentContractQuery = new WxRentContract();
wxRentContractQuery.setTenantId(record.getTenantId());
wxRentContractQuery.setShopId(record.getShopId());
long count = wxRentContractMapper.queryRentContractData(wxRentContract).stream().
filter(rc -> rc.get("status").equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode())
|| rc.get("status").equals(EnumRentContractStatus.RENT_PAID.getCode())
|| rc.get("status").equals(EnumRentContractStatus.CONTRACT_END_SOON.getCode())).count();
if (count > 0) { if (count > 0) {
return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND); return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND);
} }
}

try {
wxRentContractMapper.updateByPrimaryKeySelective(record); wxRentContractMapper.updateByPrimaryKeySelective(record);
} catch (Exception e) { } catch (Exception e) {
logger.error("更新租赁合同信息失败,e:" + e.getMessage()); logger.error("更新租赁合同信息失败,e:" + e.getMessage());
@@ -442,15 +490,17 @@ public class WxRentContractServiceImpl implements WxRentContractService {
wxBillDeposit.setUpdatetime(date); wxBillDeposit.setUpdatetime(date);
wxBillDeposit.setIsDel(EnumDelStatus.NOT_DEL.getCode()); wxBillDeposit.setIsDel(EnumDelStatus.NOT_DEL.getCode());
wxBillDeposit.setRentShopType(wxRentContract.getRentShopType()); wxBillDeposit.setRentShopType(wxRentContract.getRentShopType());
String rentInfo = wxRentContract.getRentInfo();
if (rentInfo != null) {
JSONArray rentInfoArray = JSONArray.parseArray(rentInfo);
Map<String, Object> shopInfo = new HashMap<>();
for (int i = 0, size = rentInfoArray.size(); i < size; i++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(i);
shopInfo.put(rentInfoObject.getString("shopNumber"), rentInfoObject.get("deposit"));
if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) {
String rentInfo = wxRentContract.getRentInfo();
if (rentInfo != null) {
JSONArray rentInfoArray = JSONArray.parseArray(rentInfo);
Map<String, Object> shopInfo = new HashMap<>();
for (int i = 0, size = rentInfoArray.size(); i < size; i++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(i);
shopInfo.put(rentInfoObject.getString("shopNumber"), rentInfoObject.get("deposit"));
}
wxBillDeposit.setShopInfo(JSONObject.toJSONString(shopInfo));
} }
wxBillDeposit.setShopInfo(JSONObject.toJSONString(shopInfo));
} }
try { try {
wxBillDepositMapper.insertSelective(wxBillDeposit); wxBillDepositMapper.insertSelective(wxBillDeposit);
@@ -513,7 +563,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
int[] priceArr = new int[arraySize]; int[] priceArr = new int[arraySize];
for (int i = 0; i < arraySize; i++) { for (int i = 0; i < arraySize; i++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(i); JSONObject rentInfoObject = rentInfoArray.getJSONObject(i);
priceArr[i] = rentInfoObject.getIntValue("price");
priceArr[i] = new BigDecimal(rentInfoObject.getIntValue("price")).multiply(new BigDecimal(100)).intValue();
} }
priceList.add(priceArr); priceList.add(priceArr);
//大于一年 //大于一年
@@ -526,8 +576,9 @@ public class WxRentContractServiceImpl implements WxRentContractService {
for (int j = 0; j < arraySize; j++) { for (int j = 0; j < arraySize; j++) {
rentInfoObject = rentInfoArray.getJSONObject(j); rentInfoObject = rentInfoArray.getJSONObject(j);
adjustRatio = rentInfoObject.getJSONArray("adjustRatio"); adjustRatio = rentInfoObject.getJSONArray("adjustRatio");
double price = priceList.get(i)[j] + priceList.get(i)[j] * adjustRatio.getIntValue(i) / 10000.0;
priceArrs[j] = new BigDecimal(price).setScale(0, RoundingMode.HALF_EVEN).intValue();
BigDecimal multiply = new BigDecimal(priceList.get(i)[j]).multiply(new BigDecimal(adjustRatio.getIntValue(i)).divide(new BigDecimal(100)));
BigDecimal price = new BigDecimal(priceList.get(i)[j]).add(multiply);
priceArrs[j] = price.setScale(0, RoundingMode.HALF_EVEN).intValue();
} }
priceList.add(priceArrs); priceList.add(priceArrs);
} }
@@ -535,32 +586,50 @@ public class WxRentContractServiceImpl implements WxRentContractService {
} }


public List<WxBillRent> buildRentMonth(WxMerchant wxMerchant, Long userId, WxRentContract wxRentContract, int receivePeriod, Integer lease, Date rentalStartDate, Integer price,Integer isPreview) { public List<WxBillRent> buildRentMonth(WxMerchant wxMerchant, Long userId, WxRentContract wxRentContract, int receivePeriod, Integer lease, Date rentalStartDate, Integer price,Integer isPreview) {
String rentInfo = wxRentContract.getRentInfo();
JSONArray rentInfoArray = JSONArray.parseArray(rentInfo);


List<int[]> priceList = computePrice(rentInfo);
int size = priceList.size();
int[] priceArrs = new int[size];
for (int i = 0; i < size; i++) {
int[] priceInt = priceList.get(i);
int sum = 0;
for (int p : priceInt) {
sum += p;
int size = 0;
int[] priceArrs = null;
List<Map<String, Object>> shopInfos = new ArrayList<>();
if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) {
String rentInfo = wxRentContract.getRentInfo();
JSONArray rentInfoArray = JSONArray.parseArray(rentInfo);

List<int[]> priceList = computePrice(rentInfo);
size = priceList.size();
priceArrs = new int[size];
for (int i = 0; i < size; i++) {
int[] priceInt = priceList.get(i);
int sum = 0;
for (int p : priceInt) {
sum += p;
}
priceArrs[i] = sum;
} }
priceArrs[i] = sum;
}


List<Map<String, Object>> shopInfos = new ArrayList<>();
for (int i = 0; i < size; i++) {
Map<String, Object> shopInfo = new HashMap<>();
int[] ints = priceList.get(i);
for (int j = 0; j < ints.length; j++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(j);
shopInfo.put(rentInfoObject.getString("shopNumber"), ints[j]);
for (int i = 0; i < size; i++) {
Map<String, Object> shopInfo = new HashMap<>();
int[] ints = priceList.get(i);
for (int j = 0; j < ints.length; j++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(j);
shopInfo.put(rentInfoObject.getString("shopNumber"), ints[j]);
}
shopInfos.add(shopInfo);
}
} else {
String adjustRatio = wxRentContract.getAdjustRatio();
List<Integer> integers = JSONArray.parseArray(adjustRatio, Integer.class);
integers.add(0, 0);
size = integers.size();
priceArrs = new int[size];
priceArrs[0] = price;
double priceD = price;
for (int i = 1; i < size; i++) {
priceD = priceD + priceD * integers.get(i) / 10000.0;
priceArrs[i] = new BigDecimal(priceD).setScale(0, RoundingMode.HALF_EVEN).intValue();
} }
shopInfos.add(shopInfo);
} }



int month = 12; int month = 12;
int divide = lease / month; int divide = lease / month;
int mod = lease % month; int mod = lease % month;
@@ -579,7 +648,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
instance.setTime(rentalStartDate); instance.setTime(rentalStartDate);
//开始时间 //开始时间
instance.add(Calendar.MONTH, month * i); instance.add(Calendar.MONTH, month * i);
Map<String, Object> resultMap = buildRent(leaseArr[i], receivePeriod, priceArrs[i], instance.getTime(), Calendar.MONTH, wxRentContract, userId, wxMerchant, billcount, isPreview, shopInfos.get(i));
Map<String, Object> resultMap = buildRent(leaseArr[i], receivePeriod, priceArrs[i], instance.getTime(), Calendar.MONTH, wxRentContract, userId, wxMerchant, billcount, isPreview, shopInfos.isEmpty() ? null : shopInfos.get(i));
List<WxBillRent> billRentList = (List<WxBillRent>)resultMap.get("billList"); List<WxBillRent> billRentList = (List<WxBillRent>)resultMap.get("billList");
billcount = (Integer)resultMap.get("billcount"); billcount = (Integer)resultMap.get("billcount");
resultList.addAll(billRentList); resultList.addAll(billRentList);
@@ -1538,67 +1607,4 @@ public class WxRentContractServiceImpl implements WxRentContractService {
wxRentContractMapper.updateApplyStatus(wxRentContract); wxRentContractMapper.updateApplyStatus(wxRentContract);
} }



public static void main(String[] args) {
JSONArray rentInfoArray = JSONArray.parseArray("[{shopId:0,shopNumber:0,price:1000,adjustRatio:[1100,1100]},{shopId:1,shopNumber:1,price:2000,adjustRatio:[1200,1200]},{shopId:2,shopNumber:2,price:3000,adjustRatio:[1300,1300]}]");
int arraySize = rentInfoArray.size();
List<int[]> priceList = new ArrayList<>();
//第一年
int[] priceArr = new int[arraySize];
for (int i = 0; i < arraySize; i++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(i);
priceArr[i] = rentInfoObject.getIntValue("price");
}
priceList.add(priceArr);
//大于一年
JSONObject rentInfoObject = rentInfoArray.getJSONObject(0);
JSONArray adjustRatio = rentInfoObject.getJSONArray("adjustRatio");
int adjustRatioSize = adjustRatio.size();

for (int i = 0; i < adjustRatioSize; i++) {
int[] priceArrs = new int[arraySize];
for (int j = 0; j < arraySize; j++) {
rentInfoObject = rentInfoArray.getJSONObject(j);
adjustRatio = rentInfoObject.getJSONArray("adjustRatio");//
double price = priceList.get(i)[j] + priceList.get(i)[j] * adjustRatio.getIntValue(i) / 10000.0;
priceArrs[j] = new BigDecimal(price).setScale(0, RoundingMode.HALF_EVEN).intValue();
}
priceList.add(priceArrs);
}
int size = priceList.size();
int[] priceArrs = new int[size];
for (int i = 0; i < size; i++) {
int[] price = priceList.get(i);
int sum = 0;
for (int p : price) {
sum += p;
}
priceArrs[i] = sum;
}


List<Map<String, Object>> shopInfos = new ArrayList<>();
for (int i = 0; i < size; i++) {
Map<String, Object> shopInfo = new HashMap<>();
int[] ints = priceList.get(i);
for (int j = 0; j < ints.length; j++) {
rentInfoObject = rentInfoArray.getJSONObject(j);
shopInfo.put(rentInfoObject.getString("shopNumber"), ints[j]);
}
shopInfos.add(shopInfo);
}

System.out.println(shopInfos);
//System.out.println(Arrays.toString(priceArr));
// Calendar a = Calendar.getInstance();
// a.set(Calendar.DATE, 1);
// a.roll(Calendar.DATE, -1);
// int maxDate = a.get(Calendar.DATE);
// System.out.println(maxDate);
// a.clear();
// a.setTime(new Date());
// System.out.println(a.get(Calendar.DAY_OF_MONTH));

}

} }

+ 55
- 6
mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java 查看文件

@@ -28,6 +28,8 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {


private String keyPrev = "setting:scorerules:"; private String keyPrev = "setting:scorerules:";


private String creditKeyPrev = "setting:creditrules:";

@Autowired @Autowired
WxScoreRulesMapper wxScoreRulesMapper; WxScoreRulesMapper wxScoreRulesMapper;
@Autowired @Autowired
@@ -57,6 +59,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {


WxScoreRules scoreRules = new WxScoreRules(); WxScoreRules scoreRules = new WxScoreRules();
scoreRules.setTenantId(tenantId); scoreRules.setTenantId(tenantId);
scoreRules.setType(1);
List<WxScoreRules> list = wxScoreRulesMapper.findList(scoreRules); List<WxScoreRules> list = wxScoreRulesMapper.findList(scoreRules);
if (list.size() > 0) { if (list.size() > 0) {
scoreRules = list.get(0); scoreRules = list.get(0);
@@ -76,6 +79,39 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
return scoreRules; return scoreRules;
} }


@Override
public WxScoreRules getCreditRules(String tenantId) {
// get pushLime from cache
String key = creditKeyPrev + tenantId;

// 缓存存在
if (scoreRulesRedisTemplate.hasKey(key)) {
WxScoreRules wScoreRules = scoreRulesRedisTemplate.opsForValue().get(key);
logger.info("WxScoreRulesServiceImpl.getScoreRules() : 从缓存中获取了积分值设置 >> " + wScoreRules.toString());
return wScoreRules;
}

WxScoreRules scoreRules = new WxScoreRules();
scoreRules.setTenantId(tenantId);
scoreRules.setType(2);
List<WxScoreRules> list = wxScoreRulesMapper.findList(scoreRules);
if (list.size() > 0) {
scoreRules = list.get(0);
} else {
// 如果积分规则不存在,启用默认值
final IdWorker idWorker = IdWorker.get();
scoreRules.setId(idWorker.nextId());
scoreRules.setRules(WxScoreRules.getDefaultRules());

wxScoreRulesMapper.insertSelective(scoreRules);
}

// 插入缓存
scoreRulesRedisTemplate.opsForValue().set(key, scoreRules);
logger.info("WxScoreRulesServiceImpl.getScoreRules() : 积分设置插入缓存 >> " + scoreRules.toString());

return scoreRules;
}




@Override @Override
@@ -89,12 +125,23 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
wxScoreRulesMapper.updateByPrimaryKeySelective(record); wxScoreRulesMapper.updateByPrimaryKeySelective(record);
} }


// 缓存存在,删除缓存
String key = keyPrev + record.getTenantId();
boolean hasKey = scoreRulesRedisTemplate.hasKey(key);
if (hasKey) {
scoreRulesRedisTemplate.delete(key);
logger.info("WxScoreRulesServiceImpl.saveOrUpdate() : 从缓存中删除成长值设置 >> " + record.toString());
if (record != null && record.getType() == 1) {
// 缓存存在,删除缓存
String key = keyPrev + record.getTenantId();
boolean hasKey = scoreRulesRedisTemplate.hasKey(key);
if (hasKey) {
scoreRulesRedisTemplate.delete(key);
logger.info("WxScoreRulesServiceImpl.saveOrUpdate() : 从缓存中删除成长值设置 >> " + record.toString());
}
}
if (record != null && record.getType() == 2) {
// 缓存存在,删除缓存
String key = creditKeyPrev + record.getTenantId();
boolean hasKey = scoreRulesRedisTemplate.hasKey(key);
if (hasKey) {
scoreRulesRedisTemplate.delete(key);
logger.info("WxScoreRulesServiceImpl.saveOrUpdate() : 从缓存中删除积分设置 >> " + record.toString());
}
} }
} }


@@ -123,6 +170,8 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
} }
} }




private void resetBasicUserScore(Long userId, int scoreNumber) { private void resetBasicUserScore(Long userId, int scoreNumber) {
// 1. basicUser // 1. basicUser
WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectByPrimaryKey(userId); WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectByPrimaryKey(userId);


+ 32
- 18
mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java 查看文件

@@ -9,19 +9,14 @@ import com.iformall.common.ResultData;
import com.iformall.domain.po.WxMerchantShop; import com.iformall.domain.po.WxMerchantShop;
import com.iformall.domain.po.WxShop; import com.iformall.domain.po.WxShop;
import com.iformall.domain.vo.WxShopVo; import com.iformall.domain.vo.WxShopVo;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.enums.EnumDelStatus;
import com.iformall.enums.EnumRentShopType;
import com.iformall.enums.EnumShopStatus;
import com.iformall.enums.EnumUserAdmin;
import com.iformall.mapper.WxMerchantShopMapper; import com.iformall.mapper.WxMerchantShopMapper;
import com.iformall.mapper.WxShopMapper; import com.iformall.mapper.WxShopMapper;
import com.iformall.service.ExcelService; import com.iformall.service.ExcelService;
import com.iformall.service.WxShopService; import com.iformall.service.WxShopService;
import com.iformall.utils.Constant;
import com.iformall.utils.DownFileUtil;
import org.apache.commons.io.FileUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
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;
@@ -29,9 +24,10 @@ import org.springframework.stereotype.Service;


import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.util.*;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Service @Service
public class WxShopServiceImpl implements WxShopService { public class WxShopServiceImpl implements WxShopService {
@@ -83,21 +79,39 @@ public class WxShopServiceImpl implements WxShopService {
} }


@Override @Override
public void deleteById(Long id, Integer isAdmin) {
public ResultData deleteById(Long id, Integer isAdmin) {
//1、已出租不让删除 //1、已出租不让删除
WxShop wxShop = wxShopMapper.selectByPrimaryKey(id); WxShop wxShop = wxShopMapper.selectByPrimaryKey(id);
if (wxShop == null) {
return new ResultData(ErrorCode.SHOP_IS_NOT_FOUND);
}
if (wxShop.getStatus().equals(EnumShopStatus.RENT.getCode())) { if (wxShop.getStatus().equals(EnumShopStatus.RENT.getCode())) {
throw new MallinkException(ErrorCode.SHOP_BAN_DELETED);
return new ResultData(ErrorCode.SHOP_BAN_DELETED);
} }
//2、是否关联过商户 //2、是否关联过商户
WxMerchantShop wxMerchantShop = new WxMerchantShop(); WxMerchantShop wxMerchantShop = new WxMerchantShop();
wxMerchantShop.setShopId(wxShop.getId()); wxMerchantShop.setShopId(wxShop.getId());
int count = wxMerchantShopMapper.selectCount(wxMerchantShop);
List<WxMerchantShop> wxMerchantShops = wxMerchantShopMapper.select(wxMerchantShop);
//有关联过商户必须是管理员才能删除 //有关联过商户必须是管理员才能删除
if (count > 0 && !isAdmin.equals(EnumUserAdmin.ADMIN.getCode())) {
throw new MallinkException(ErrorCode.SHOP_DELETED_BY_ADMIN);
int count = wxMerchantShops.size();
if (count > 0) {
if (!isAdmin.equals(EnumUserAdmin.ADMIN.getCode())) {
return new ResultData(ErrorCode.SHOP_DELETED_BY_ADMIN);
}
//更新标记
wxShop.setIsDel(EnumDelStatus.DEL.getCode());
wxShopMapper.updateByPrimaryKeySelective(wxShop);
//关联表
for (int i = 0; i < count; i++) {
WxMerchantShop updateMerchantShop = wxMerchantShops.get(i);
updateMerchantShop.setIsDel(EnumDelStatus.DEL.getCode());
wxMerchantShopMapper.updateByPrimaryKeySelective(updateMerchantShop);
}
} else {
//无关联商铺直接删除
wxShopMapper.deleteByPrimaryKey(id);
} }
wxShopMapper.deleteByPrimaryKey(id);
return new ResultData(Result.SUCCESS, "删除成功");
} }


@Override @Override


+ 110
- 36
mallinkService/src/main/java/com/iformall/utils/ETCPUtil.java 查看文件

@@ -3,6 +3,8 @@ package com.iformall.utils;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.iformall.common.ErrorCode;
import com.iformall.exception.MallinkException;
import okhttp3.*; import okhttp3.*;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -306,7 +308,7 @@ public class ETCPUtil {
* } * }
*/ */
public String userSignin(String baseUrl, String appId, String merchantNo, String merchantKey, String version, public String userSignin(String baseUrl, String appId, String merchantNo, String merchantKey, String version,
String mobilePhone) {
String mobilePhone) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("appId", appId); jsonObject.put("appId", appId);
jsonObject.put("mobilePhone", mobilePhone); jsonObject.put("mobilePhone", mobilePhone);
@@ -315,8 +317,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + userSigninUrl.replaceAll("\\{version}", version), data, sign,
String respStr = doPost(baseUrl + userSigninUrl.replaceAll("\\{version}", version), data, sign,
timeStamp, merchantNo); timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -333,7 +339,7 @@ public class ETCPUtil {
*/ */
public String bindCar(String baseUrl, String merchantNo, String merchantKey, String version, public String bindCar(String baseUrl, String merchantNo, String merchantKey, String version,
String etcpToken, String etcpToken,
String plateNumber, String plateColor) {
String plateNumber, String plateColor) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken); jsonObject.put("token", etcpToken);
jsonObject.put("plateNumber", plateNumber); jsonObject.put("plateNumber", plateNumber);
@@ -346,8 +352,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + bindCarUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + bindCarUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -363,7 +373,7 @@ public class ETCPUtil {
*/ */
public String unbindCar(String baseUrl, String merchantNo, String merchantKey, String version, public String unbindCar(String baseUrl, String merchantNo, String merchantKey, String version,
String etcpToken, String etcpToken,
String plateNumber) {
String plateNumber) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken); jsonObject.put("token", etcpToken);
jsonObject.put("plateNumber", plateNumber); jsonObject.put("plateNumber", plateNumber);
@@ -372,8 +382,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + unbindCarUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + unbindCarUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -392,7 +406,7 @@ public class ETCPUtil {
public String carAuth(String baseUrl, String merchantNo, String merchantKey, String version, public String carAuth(String baseUrl, String merchantNo, String merchantKey, String version,
String etcpToken, String etcpToken,
String carFrameNum, String plateNumber, String carEngineNum String carFrameNum, String plateNumber, String carEngineNum
) {
) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken); jsonObject.put("token", etcpToken);
jsonObject.put("carFrameNum", carFrameNum); jsonObject.put("carFrameNum", carFrameNum);
@@ -403,8 +417,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + carAuthUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + carAuthUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -423,7 +441,7 @@ public class ETCPUtil {
*/ */
public String carRetrieve(String baseUrl, String merchantNo, String merchantKey, String version, public String carRetrieve(String baseUrl, String merchantNo, String merchantKey, String version,
String etcpToken, String etcpToken,
String carFrameNum, String plateNumber, String carEngineNum, String plateColor ) {
String carFrameNum, String plateNumber, String carEngineNum, String plateColor ) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken); jsonObject.put("token", etcpToken);
jsonObject.put("carFrameNum", carFrameNum); jsonObject.put("carFrameNum", carFrameNum);
@@ -436,8 +454,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + carRetrieveUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + carRetrieveUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -458,7 +480,7 @@ public class ETCPUtil {
* } * }
*/ */
public String carNum(String baseUrl, String merchantNo, String merchantKey, String version, public String carNum(String baseUrl, String merchantNo, String merchantKey, String version,
String etcpToken) {
String etcpToken) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken); jsonObject.put("token", etcpToken);


@@ -466,8 +488,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doGet(baseUrl + carNumUrl.replaceAll("\\{version}", version),
String respStr = doGet(baseUrl + carNumUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -481,7 +507,7 @@ public class ETCPUtil {
public String orderUnpay(String baseUrl, public String orderUnpay(String baseUrl,
String appId, String merchantNo, String merchantKey, String version, String appId, String merchantNo, String merchantKey, String version,
String etcpToken, String etcpToken,
String plateNumber) {
String plateNumber) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken); jsonObject.put("token", etcpToken);
jsonObject.put("plateNumber", plateNumber); jsonObject.put("plateNumber", plateNumber);
@@ -493,8 +519,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doGet(baseUrl + orderUnpayUrl.replaceAll("\\{version}", version),
String respStr = doGet(baseUrl + orderUnpayUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -508,7 +538,7 @@ public class ETCPUtil {
public String couponList(String baseUrl, public String couponList(String baseUrl,
String merchantNo, String merchantKey, String version, String merchantNo, String merchantKey, String version,
String etcpToken, String etcpToken,
String lastCode, String pageSize) {
String lastCode, String pageSize) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken); jsonObject.put("token", etcpToken);
if (!StringUtils.isBlank(lastCode)) if (!StringUtils.isBlank(lastCode))
@@ -519,8 +549,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doGet(baseUrl + couponListUrl.replaceAll("\\{version}", version),
String respStr = doGet(baseUrl + couponListUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -531,7 +565,7 @@ public class ETCPUtil {
*/ */
public String orderHistory(String baseUrl, public String orderHistory(String baseUrl,
String merchantNo, String merchantKey, String version, String merchantNo, String merchantKey, String version,
String etcpToken) {
String etcpToken) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken); jsonObject.put("token", etcpToken);


@@ -539,8 +573,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doGet(baseUrl + orderHistoryUrl.replaceAll("\\{version}", version),
String respStr = doGet(baseUrl + orderHistoryUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -555,7 +593,7 @@ public class ETCPUtil {
public String orderPay(String baseUrl, public String orderPay(String baseUrl,
String merchantNo, String merchantKey, String version, String merchantNo, String merchantKey, String version,
String etcpToken, String orderId, String etcpToken, String orderId,
String returnUrl, String couponCode) {
String returnUrl, String couponCode) throws MallinkException {
// payType 支付方式(1 微信公众号内支付 2 支付宝 H5 支付 3 微信二维码 4 支付宝二维码 5 微信 H5)(非空) // payType 支付方式(1 微信公众号内支付 2 支付宝 H5 支付 3 微信二维码 4 支付宝二维码 5 微信 H5)(非空)
int payType = 1; int payType = 1;
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
@@ -571,8 +609,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + orderpayUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + orderpayUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -591,7 +633,7 @@ public class ETCPUtil {
String appId, String merchantNo, String merchantKey, String version, String appId, String merchantNo, String merchantKey, String version,
String etcpToken, String etcpToken,
String orderId, String externalOrderId, String orderId, String externalOrderId,
BigDecimal payment, String payTime, String verificationInfo) {
BigDecimal payment, String payTime, String verificationInfo) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken); jsonObject.put("token", etcpToken);
jsonObject.put("orderId", orderId); jsonObject.put("orderId", orderId);
@@ -607,8 +649,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + orderPaidUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + orderPaidUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -619,7 +665,7 @@ public class ETCPUtil {
*/ */
public String parkingInfo(String baseUrl, public String parkingInfo(String baseUrl,
String merchantNo, String merchantKey, String version, String merchantNo, String merchantKey, String version,
String lat, String lon, String radius) {
String lat, String lon, String radius) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("lat", lat); jsonObject.put("lat", lat);
jsonObject.put("lon", lon); jsonObject.put("lon", lon);
@@ -630,8 +676,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + parkingInfoUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + parkingInfoUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -642,7 +692,7 @@ public class ETCPUtil {
*/ */
public String parkingStatus(String baseUrl, public String parkingStatus(String baseUrl,
String merchantNo, String merchantKey, String version, String merchantNo, String merchantKey, String version,
String parkingId) {
String parkingId) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("parkingId", parkingId); jsonObject.put("parkingId", parkingId);


@@ -650,8 +700,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + parkingStatusUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + parkingStatusUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -662,7 +716,7 @@ public class ETCPUtil {
*/ */
public String getDebt(String baseUrl, public String getDebt(String baseUrl,
String appId, String merchantNo, String merchantKey, String version, String appId, String merchantNo, String merchantKey, String version,
String etcpToken, String carNumber) {
String etcpToken, String carNumber) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken); jsonObject.put("token", etcpToken);
jsonObject.put("appId", appId); jsonObject.put("appId", appId);
@@ -672,8 +726,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + parkingStatusUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + parkingStatusUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -686,7 +744,7 @@ public class ETCPUtil {
*/ */
public String repayDebt(String baseUrl, public String repayDebt(String baseUrl,
String merchantNo, String merchantKey, String version, String merchantNo, String merchantKey, String version,
String etcpToken, String returnUrl) {
String etcpToken, String returnUrl) throws MallinkException {
// payType(1:支付宝 2:微信H5) // payType(1:支付宝 2:微信H5)
int payType = 2; int payType = 2;
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
@@ -698,8 +756,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + parkingStatusUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + parkingStatusUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -709,7 +771,7 @@ public class ETCPUtil {
*/ */
public String getBCouponList(String baseUrl, public String getBCouponList(String baseUrl,
String merchantNo, String merchantKey, String version, String merchantNo, String merchantKey, String version,
String parkId, String businessId) {
String parkId, String businessId) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("parkId", parkId); jsonObject.put("parkId", parkId);
jsonObject.put("businessId", businessId); jsonObject.put("businessId", businessId);
@@ -718,8 +780,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + bCouponListUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + bCouponListUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -731,7 +797,7 @@ public class ETCPUtil {
public String bCouponRecord(String baseUrl, public String bCouponRecord(String baseUrl,
String merchantNo, String merchantKey, String version, String merchantNo, String merchantKey, String version,
String etcpToken, String etcpToken,
String parkId, String businessId, String carNumber, String couponFreeId) {
String parkId, String businessId, String carNumber, String couponFreeId) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken); jsonObject.put("token", etcpToken);
jsonObject.put("parkId", parkId); jsonObject.put("parkId", parkId);
@@ -743,8 +809,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + bCouponRecordUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + bCouponRecordUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


/** /**
@@ -755,7 +825,7 @@ public class ETCPUtil {
*/ */
public String carSimulation(String baseUrl, public String carSimulation(String baseUrl,
String appId, String merchantNo, String merchantKey, String version, String appId, String merchantNo, String merchantKey, String version,
String plateNumber) {
String plateNumber) throws MallinkException {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("appId", appId); jsonObject.put("appId", appId);
jsonObject.put("plateNumber", plateNumber); jsonObject.put("plateNumber", plateNumber);
@@ -764,8 +834,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now()); String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp); String sign = genSign(data, merchantKey, timeStamp);


return doPost(baseUrl + bCarSimulationUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + bCarSimulationUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo); data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
} }


private String doPost(String url, String data, String sign, String timeStamp, String merchantNo) { private String doPost(String url, String data, String sign, String timeStamp, String merchantNo) {


+ 57
- 0
mallinkService/src/main/resources/mapper/WxBillActionMapper.xml 查看文件

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.iformall.mapper.WxBillActionMapper">
<resultMap id="BaseResultMap" type="com.iformall.domain.po.WxBillAction">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/>
<result column="bill_id" jdbcType="BIGINT" property="bill_id"/>
<result column="user_id" jdbcType="BIGINT" property="userId"/>
<result column="user_name" jdbcType="VARCHAR" property="userName"/>
<result column="phone" jdbcType="VARCHAR" property="phone"/>
<result column="action" jdbcType="INTEGER" property="action"/>
<result column="details" jdbcType="VARCHAR" property="details"/>
<result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
<result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
</resultMap>
<sql id="allColumns">
`id`,`tenant_id`,`bill_id`,`user_id`,`user_name`,`phone`,`action`,`details`,`createtime`,`updatetime`
</sql>
<sql id="dynamicWhereConditions">
where 1=1
<if test=" null != id ">
and `id` = #{id}
</if>
<if test=" null != tenantId ">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != action ">
and `action` = #{action}
</if>
<if test=" null != billId ">
and `bill_id` = #{billId}
</if>
<if test=" null != ids ">
and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
#{idItem}
</foreach>
</if>
<if test=" null != sortColumns">order by ${sortColumns}</if>
</sql>
<select id="findList" parameterType="com.iformall.domain.po.WxBillAction" resultMap="BaseResultMap">
select
<include refid="allColumns"/>
from wx_bill_action
<include refid="dynamicWhereConditions"/>
</select>


</mapper>

+ 91
- 102
mallinkService/src/main/resources/mapper/WxBillAllMapper.xml 查看文件

@@ -2,12 +2,47 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.iformall.mapper.WxBillAllMapper"> <mapper namespace="com.iformall.mapper.WxBillAllMapper">


<select id="list" parameterType="com.iformall.domain.vo.WxBillAll" resultType="hashmap">
select bill.id,bill.merchant_id merchantId,bill.shop_id shopId,bill.bill_type_value billTypeValue,bill.bill_type billType,bill.need_pay needPay,
bill.receive_pay receivePay,bill.pay,bill.owe,bill.receive_date receiveDate,bill.pay_date payDate,bill.expired_day expiredDay,bill.status,
bill.tenant_id tenantId,m.name merchantName,s.shop_number
shopNumber,bill.starttime,bill.endtime,bill.name,s.manager,s.manager_phone managerPhone,
bill.rent_shop_type rentShopType from (

<resultMap id="allVoResultMap" type="com.iformall.domain.vo.WxBillAllVo">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="tenantId" jdbcType="VARCHAR" property="tenantId" />
<result column="merchantId" jdbcType="INTEGER" property="merchantId" />
<result column="shopId" jdbcType="INTEGER" property="shopId" />

<result column="billTypeValue" jdbcType="INTEGER" property="billTypeValue"/>
<result column="billType" jdbcType="VARCHAR" property="billType"/>
<result column="needPay" jdbcType="INTEGER" property="needPay" />

<result column="merchantName" jdbcType="VARCHAR" property="merchantName" />
<result column="rentShopType" jdbcType="INTEGER" property="rentShopType"/>
<result column="receiveDate" jdbcType="TIMESTAMP" property="receiveDate" />
<result column="expiredDay" jdbcType="INTEGER" property="expiredDay" />
<result column="status" jdbcType="INTEGER" property="status" />


<result column="receivePay" jdbcType="INTEGER" property="receivePay" />
<result column="owe" jdbcType="INTEGER" property="owe" />
<result column="pay" jdbcType="INTEGER" property="pay" />
<result column="payDate" jdbcType="TIMESTAMP" property="payDate" />
<result column="starttime" jdbcType="TIMESTAMP" property="starttime" />
<result column="endtime" jdbcType="TIMESTAMP" property="endtime" />

<result column="shopNumber" jdbcType="VARCHAR" property="shopNumber"/>
<result column="manager" jdbcType="VARCHAR" property="manager"/>
<result column="managerPhone" jdbcType="VARCHAR" property="managerPhone"/>
</resultMap>


<select id="list" parameterType="com.iformall.domain.vo.WxBillAll" resultMap="allVoResultMap">
select
bill.id,bill.tenant_id tenantId,bill.merchant_id merchantId,bill.shop_id shopId,
bill.bill_type_value billTypeValue,bill.bill_type billType,bill.need_pay needPay,
bill.receive_pay receivePay,bill.pay,bill.owe,bill.receive_date receiveDate,bill.pay_date payDate,
bill.expired_day expiredDay,bill.status,
bill.starttime,bill.endtime,bill.name,bill.rent_shop_type rentShopType,
m.name merchantName,
s.shop_number shopNumber, s.manager, s.manager_phone managerPhone
from (
select id,merchant_id,shop_id,tenant_id,'租金' name,1 bill_type_value,'租金' select id,merchant_id,shop_id,tenant_id,'租金' name,1 bill_type_value,'租金'
bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,'' starttime,'' bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_rent where is_preview = 0 endtime,rent_shop_type from wx_bill_rent where is_preview = 0
@@ -53,14 +88,14 @@
<if test=" null != billTypeValue ">and bill.bill_type_value = #{billTypeValue}</if> <if test=" null != billTypeValue ">and bill.bill_type_value = #{billTypeValue}</if>
<if test=" null != status ">and bill.`status` = #{status}</if> <if test=" null != status ">and bill.`status` = #{status}</if>
<if test=" null != rentShopType ">and bill.rent_shop_type = #{rentShopType}</if> <if test=" null != rentShopType ">and bill.rent_shop_type = #{rentShopType}</if>
order by bill.id desc,bill.merchant_id,bill.status,bill.receive_date desc order by bill.id desc,bill.merchant_id,bill.status,bill.receive_date desc
</select> </select>
<select id="queryOweInfo" parameterType="com.iformall.domain.vo.WxBillAll" resultType="hashmap"> <select id="queryOweInfo" parameterType="com.iformall.domain.vo.WxBillAll" resultType="hashmap">


select count(bill.id) owncount,IFNULL(sum(bill.owe),0) owe from ( select count(bill.id) owncount,IFNULL(sum(bill.owe),0) owe from (
select id,merchant_id,shop_id,tenant_id,1 bill_type_value,'租金' select id,merchant_id,shop_id,tenant_id,1 bill_type_value,'租金'
@@ -103,9 +138,9 @@
and bill.rent_shop_type = #{rentShopType} and bill.rent_shop_type = #{rentShopType}
</if> </if>
</select> </select>
<select id="queryPaidInfo" parameterType="com.iformall.domain.vo.WxBillAll" resultType="hashmap"> <select id="queryPaidInfo" parameterType="com.iformall.domain.vo.WxBillAll" resultType="hashmap">
select count(bill.id) paycount,IFNULL(sum(bill.pay),0) pay from ( select count(bill.id) paycount,IFNULL(sum(bill.pay),0) pay from (
select id,merchant_id,shop_id,tenant_id,1 bill_type_value,'租金' select id,merchant_id,shop_id,tenant_id,1 bill_type_value,'租金'
bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,rent_shop_type from wx_bill_rent where is_preview = 0 bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,rent_shop_type from wx_bill_rent where is_preview = 0
@@ -147,8 +182,8 @@
and bill.rent_shop_type = #{rentShopType} and bill.rent_shop_type = #{rentShopType}
</if> </if>
</select> </select>
<select id="listData" resultType="hashmap" parameterType="com.iformall.domain.vo.WxBillAll"> <select id="listData" resultType="hashmap" parameterType="com.iformall.domain.vo.WxBillAll">
select bill.id,bill.merchant_id merchantId,bill.shop_id shopId,bill.bill_type_value billTypeValue,bill.bill_type billType,bill.need_pay needPay, select bill.id,bill.merchant_id merchantId,bill.shop_id shopId,bill.bill_type_value billTypeValue,bill.bill_type billType,bill.need_pay needPay,
bill.receive_pay receivePay,bill.pay,bill.owe,bill.receive_date receiveDate,bill.pay_date payDate,bill.expired_day expiredDay,bill.status, bill.receive_pay receivePay,bill.pay,bill.owe,bill.receive_date receiveDate,bill.pay_date payDate,bill.expired_day expiredDay,bill.status,
@@ -209,12 +244,12 @@
#{status} #{status}
</foreach> </foreach>
</if> </if>
<if test=" null != typeList "> <if test=" null != typeList ">
and bill.`bill_type_value` in and bill.`bill_type_value` in
<foreach collection="typeList" index="index" item="type" open="(" separator="," close=")"> <foreach collection="typeList" index="index" item="type" open="(" separator="," close=")">
#{type} #{type}
</foreach>
</foreach>
</if> </if>
<if test="null!=starttime and null!=endtime"> <if test="null!=starttime and null!=endtime">
and DATE_FORMAT(bill.receive_date,'%Y-%m') between #{starttime} and #{endtime} and DATE_FORMAT(bill.receive_date,'%Y-%m') between #{starttime} and #{endtime}
@@ -230,98 +265,52 @@
</if> </if>
order by bill.merchant_id,bill.status,bill.receive_date desc order by bill.merchant_id,bill.status,bill.receive_date desc
</select> </select>
<select id="getWaitPayBill" resultType="hashmap"> <select id="getWaitPayBill" resultType="hashmap">

select bill.tenant_id tenantId,bill.merchant_id merchantId,bill.receive_date receiveDate,
bill.need_pay needPay,m.link_phone linkPhone,app.appname from (
select bill.tenant_id,bill.merchant_id,bill.receive_date,ifnull(sum(need_pay),0) need_pay from (
select id,merchant_id,shop_id,tenant_id,'租金' name,1 bill_type_value,'租金'
bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_rent where is_preview = 0
union
select id,merchant_id,shop_id,tenant_id,'租赁押金' name,2 bill_type_value,'租赁押金'
bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_rent_deposit
union
select id,merchant_id,shop_id,tenant_id,'物业费' name,3 bill_type_value,'物业费'
bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_property where is_preview = 0
union
select id,merchant_id,shop_id,tenant_id,'物业押金' name,4 bill_type_value,'物业押金'
bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_property_deposit
union
select id,merchant_id,shop_id,tenant_id,'水费' name,5 bill_type_value,'水费' bill_type,0 as
need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type
from wx_bill_daily where type=1
union
select id,merchant_id,shop_id,tenant_id,'电费' name,6 bill_type_value,'电费' bill_type,0 as
need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type
from wx_bill_daily where type=2
union
select id,merchant_id,shop_id,tenant_id,name,7 bill_type_value,'其他' bill_type,0 as
need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type
from wx_bill_other
union
select id,merchant_id,shop_id,tenant_id,name,8 bill_type_value,'其他押金' bill_type,0 as
need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type
from wx_bill_other_deposit
) bill
where DATEDIFF(bill.receive_date,now())=3 and bill.status not in(3,5,6)
group by bill.tenant_id,bill.merchant_id,bill.receive_date) bill
left join wx_merchant m on bill.merchant_id=m.id
left join (select tenant_id,`name` appname from wx_appinfo app where type=1) app on bill.tenant_id=app.tenant_id
where m.status=1
</select>

<select id="getWaitPayBillForEmail" resultType="hashmap">
select bill.tenant_id tenantId,bill.merchant_id merchantId,bill.receive_date receiveDate, select bill.tenant_id tenantId,bill.merchant_id merchantId,bill.receive_date receiveDate,
bill.need_pay needPay,m.link_phone linkPhone,app.appname,m.email,bill.bill_type billType,ws.manager,ws.manager_phone managerPhone from (
select bill.bill_type,bill.tenant_id,bill.merchant_id,bill.receive_date,ifnull(sum(need_pay),0) need_pay from (
select id,merchant_id,shop_id,tenant_id,'租金' name,1 bill_type_value,'租金'
bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_rent where is_preview = 0
union
select id,merchant_id,shop_id,tenant_id,'租赁押金' name,2 bill_type_value,'租赁押金'
bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_rent_deposit
union
select id,merchant_id,shop_id,tenant_id,'物业费' name,3 bill_type_value,'物业费'
bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_property where is_preview = 0
union
select id,merchant_id,shop_id,tenant_id,'物业押金' name,4 bill_type_value,'物业押金'
bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_property_deposit
union
select id,merchant_id,shop_id,tenant_id,'水费' name,5 bill_type_value,'水费' bill_type,0 as
need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type
from wx_bill_daily where type=1
union
select id,merchant_id,shop_id,tenant_id,'电费' name,6 bill_type_value,'电费' bill_type,0 as
need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type
from wx_bill_daily where type=2
union
select id,merchant_id,shop_id,tenant_id,name,7 bill_type_value,'其他' bill_type,0 as
need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type
from wx_bill_other
union
select id,merchant_id,shop_id,tenant_id,name,8 bill_type_value,'其他押金' bill_type,0 as
need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type
from wx_bill_other_deposit

) bill
group by bill.tenant_id,bill.merchant_id,bill.receive_date,bill.bill_type
bill.need_pay needPay,m.link_phone linkPhone,app.appname,m.email,bill.bill_type billType from (
select bill.bill_type,bill.tenant_id,bill.merchant_id,bill.receive_date,ifnull(sum(need_pay),0) need_pay from (
select id,merchant_id,shop_id,tenant_id,'租金' name,1 bill_type_value,'租金'
bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_rent where is_preview = 0
union
select id,merchant_id,shop_id,tenant_id,'租赁押金' name,2 bill_type_value,'租赁押金'
bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_rent_deposit
union
select id,merchant_id,shop_id,tenant_id,'物业费' name,3 bill_type_value,'物业费'
bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_property where is_preview = 0
union
select id,merchant_id,shop_id,tenant_id,'物业押金' name,4 bill_type_value,'物业押金'
bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,''
endtime,rent_shop_type from wx_bill_property_deposit
union
select id,merchant_id,shop_id,tenant_id,'水费' name,5 bill_type_value,'水费' bill_type,0 as
need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type
from wx_bill_daily where type=1
union
select id,merchant_id,shop_id,tenant_id,'电费' name,6 bill_type_value,'电费' bill_type,0 as
need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type
from wx_bill_daily where type=2
union
select id,merchant_id,shop_id,tenant_id,name,7 bill_type_value,'其他' bill_type,0 as
need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type
from wx_bill_other
union
select id,merchant_id,shop_id,tenant_id,name,8 bill_type_value,'其他押金' bill_type,0 as
need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type
from wx_bill_other_deposit
) bill ) bill
where DATEDIFF(bill.receive_date,now())=3 and bill.status not in(3,5,6)
group by bill.tenant_id,bill.merchant_id,bill.receive_date) bill
left join wx_merchant m on bill.merchant_id=m.id left join wx_merchant m on bill.merchant_id=m.id
left join (select tenant_id,`name` appname from wx_appinfo app where type=1) app on bill.tenant_id=app.tenant_id left join (select tenant_id,`name` appname from wx_appinfo app where type=1) app on bill.tenant_id=app.tenant_id
left join wx_merchant_shop wms on wms.merchant_id = m.id
left join wx_shop ws on wms.shop_id = ws.id
where m.status=1 where m.status=1
</select> </select>

<select id="getOweBill" resultType="hashmap"> <select id="getOweBill" resultType="hashmap">
select bill.tenant_id tenantId,bill.merchant_id merchantId,bill.owe,m.link_phone linkPhone,app.appname from ( select bill.tenant_id tenantId,bill.merchant_id merchantId,bill.owe,m.link_phone linkPhone,app.appname from (
select bill.tenant_id,bill.merchant_id,sum(owe) owe from ( select bill.tenant_id,bill.merchant_id,sum(owe) owe from (


+ 6
- 1
mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml 查看文件

@@ -17,11 +17,12 @@
<result column="name" jdbcType="VARCHAR" property="name"/> <result column="name" jdbcType="VARCHAR" property="name"/>
<result column="level" jdbcType="VARCHAR" property="level"/> <result column="level" jdbcType="VARCHAR" property="level"/>
<result column="nick_name" jdbcType="VARCHAR" property="nickName"/> <result column="nick_name" jdbcType="VARCHAR" property="nickName"/>
<result column="credit" jdbcType="INTEGER" property="credit"/>
</resultMap> </resultMap>


<sql id="allColumns"> <sql id="allColumns">
`id`,`phone`,`birthdate`,`education`,`sex`,`email`,`address`,`poins`,`tag_id`, `id`,`phone`,`birthdate`,`education`,`sex`,`email`,`address`,`poins`,`tag_id`,
`create_date`,`update_date`,`tenant_id`,`name`,`level`,`nick_name`
`create_date`,`update_date`,`tenant_id`,`name`,`level`,`nick_name`,`credit`
</sql> </sql>


<sql id="dynamicWhereConditions"> <sql id="dynamicWhereConditions">
@@ -63,6 +64,10 @@
and `poins` = #{poins} and `poins` = #{poins}
</if> </if>


<if test=" null != credit ">
and `credit` = #{credit}
</if>

<if test=" null != tagId "> <if test=" null != tagId ">
and `tag_id` = #{tagId} and `tag_id` = #{tagId}
</if> </if>


+ 6
- 1
mallinkService/src/main/resources/mapper/WxCUserMapper.xml 查看文件

@@ -43,6 +43,7 @@
<result column="subs_subscribe" jdbcType="TINYINT" property="subsSubscribe"/> <result column="subs_subscribe" jdbcType="TINYINT" property="subsSubscribe"/>
<result column="subs_subscribe_time" jdbcType="TIMESTAMP" property="subsSubscribeTime"/> <result column="subs_subscribe_time" jdbcType="TIMESTAMP" property="subsSubscribeTime"/>
<result column="subs_subscribe_scene" jdbcType="VARCHAR" property="subsSubscribeScene"/> <result column="subs_subscribe_scene" jdbcType="VARCHAR" property="subsSubscribeScene"/>
<result column="credit" jdbcType="INTEGER" property="credit"/>
</resultMap> </resultMap>


<sql id="allColumns"> <sql id="allColumns">
@@ -53,7 +54,7 @@
`login_count`, `extra_info`, `is_subscribe`, `login_count`, `extra_info`, `is_subscribe`,
`open_app_id`, `open_app_id`,
`mp_open_id`,`mp_app_id`,`mp_subscribe`,`mp_subscribe_time`,`mp_subscribe_scene`, `mp_open_id`,`mp_app_id`,`mp_subscribe`,`mp_subscribe_time`,`mp_subscribe_scene`,
`subs_open_id`,`subs_app_id`,`subs_subscribe`,`subs_subscribe_time`,`subs_subscribe_scene`
`subs_open_id`,`subs_app_id`,`subs_subscribe`,`subs_subscribe_time`,`subs_subscribe_scene`,`credit`
</sql> </sql>


<sql id="dynamicWhereConditions"> <sql id="dynamicWhereConditions">
@@ -199,6 +200,10 @@
and `subs_app_id` = #{subsAppId} and `subs_app_id` = #{subsAppId}
</if> </if>


<if test=" null != credit ">
and `credit` = #{credit}
</if>

<if test=" null != ids "> <if test=" null != ids ">
and id in and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">


+ 49
- 1
mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml 查看文件

@@ -8,7 +8,7 @@
<result column="credit_amount" jdbcType="INTEGER" property="creditAmount" /> <result column="credit_amount" jdbcType="INTEGER" property="creditAmount" />
<result column="credit_num" jdbcType="INTEGER" property="creditNum" /> <result column="credit_num" jdbcType="INTEGER" property="creditNum" />
<result column="credit_type" jdbcType="INTEGER" property="creditType" /> <result column="credit_type" jdbcType="INTEGER" property="creditType" />
<result column="create_date" jdbcType="TIMESTAMP" property="credateDate" />
<result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
<result column="receipt_url" jdbcType="VARCHAR" property="receiptUrl" /> <result column="receipt_url" jdbcType="VARCHAR" property="receiptUrl" />
<result column="operator_type" jdbcType="INTEGER" property="operatorType" /> <result column="operator_type" jdbcType="INTEGER" property="operatorType" />
<result column="operator_id" jdbcType="BIGINT" property="operatorId" /> <result column="operator_id" jdbcType="BIGINT" property="operatorId" />
@@ -118,5 +118,53 @@
credit.id DESC credit.id DESC
</select> </select>


<select id="loginCount" parameterType="com.iformall.domain.po.WxCreditHistory" resultType="java.lang.Integer">
select COUNT(0) from wx_credit_history
where 1=1
<if test=" null != tenantId ">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != cUserId ">
and `c_user_id` = #{cUserId}
</if>
<if test=" null != creditType ">
and `credit_type` = #{creditType}
</if>
and DATEDIFF(`create_date`,now())=0
</select>

<select id="countTodayList" parameterType="com.iformall.domain.po.WxCreditHistory" resultType="java.lang.Integer">
select count(0)
from wx_credit_history
where 1=1
<if test=" null != tenantId ">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != cUserId ">
and `c_user_id` = #{cUserId}
</if>
<if test=" null != creditType ">
and `credit_type` = #{creditType}
</if>
and DATEDIFF(`create_date`,now())=0
</select>


<select id="creditAmount" parameterType="java.lang.Long" resultType="java.lang.Integer">
SELECT credit_amount FROM wx_credit_history where c_user_id = #{cUserId} ORDER BY id desc limit 1
</select>

<select id="countList" parameterType="com.iformall.domain.po.WxCreditHistory" resultType="java.lang.Integer">
select count(0)
from wx_credit_history
where 1=1
<if test=" null != tenantId ">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != cUserId ">
and `c_user_id` = #{cUserId}
</if>
<if test=" null != creditType ">
and `credit_type` = #{creditType}
</if>
</select>
</mapper> </mapper>

+ 4
- 0
mallinkService/src/main/resources/mapper/WxRentContractMapper.xml 查看文件

@@ -223,5 +223,9 @@
and merchant_id not in(select merchant_id from wx_property_contract where status in(2,3,4)) and merchant_id not in(select merchant_id from wx_property_contract where status in(2,3,4))
<if test=" null != rentShopType ">and rent_shop_type = #{rentShopType}</if> <if test=" null != rentShopType ">and rent_shop_type = #{rentShopType}</if>
</select> </select>
<select id="selectRentContractCountByShopId" parameterType="com.iformall.domain.po.WxRentContract" resultType="int">
select count(*) from wx_rent_contract where tenant_id=#{tenantId} and json_contains(json_extract(rent_info,'$[*].shopId'),concat('"',${shopId},'"')) and status in (2,3,4)
</select>


</mapper> </mapper>

+ 9
- 1
mallinkService/src/main/resources/mapper/WxScoreRulesMapper.xml 查看文件

@@ -7,10 +7,12 @@
<result column="rules" jdbcType="VARCHAR" property="rules"/> <result column="rules" jdbcType="VARCHAR" property="rules"/>
<result column="create_date" jdbcType="TIMESTAMP" property="createDate"/> <result column="create_date" jdbcType="TIMESTAMP" property="createDate"/>
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/> <result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/>
<result column="type" jdbcType="INTEGER" property="type"/>
<result column="clear_year" jdbcType="INTEGER" property="clearYear"/>
</resultMap> </resultMap>


<sql id="allColumns"> <sql id="allColumns">
`id`,`tenant_id`,`rules`,`create_date`,`update_date`
`id`,`tenant_id`,`rules`,`create_date`,`update_date`,`type`,`clear_year`
</sql> </sql>


<sql id="dynamicWhereConditions"> <sql id="dynamicWhereConditions">
@@ -29,6 +31,12 @@
<if test=" null != updateDate "> <if test=" null != updateDate ">
and `update_date` = #{updateDate} and `update_date` = #{updateDate}
</if> </if>
<if test=" null != type ">
and `type` = #{type}
</if>
<if test=" null != clearYear ">
and `clear_year` = #{clearYear}
</if>


<if test=" null != ids "> <if test=" null != ids ">
and id in and id in


+ 13
- 9
mallinkService/src/main/resources/mapper/WxShopMapper.xml 查看文件

@@ -25,16 +25,18 @@
<result column="point_type" jdbcType="INTEGER" property="pointType"/> <result column="point_type" jdbcType="INTEGER" property="pointType"/>
<result column="comments" jdbcType="VARCHAR" property="comments"/> <result column="comments" jdbcType="VARCHAR" property="comments"/>
<result column="email" property="email"/> <result column="email" property="email"/>
<result column="is_del" jdbcType="INTEGER" property="isDel"/>

</resultMap> </resultMap>


<sql id="allColumns"> <sql id="allColumns">
`id`,`tenant_id`,`shop_number`,`build_area`,`operation_area`,`building`, `id`,`tenant_id`,`shop_number`,`build_area`,`operation_area`,`building`,
`floor`,`status`,`x`,`y`,`addr`,`baidu_poi`,`longitude`,`latitude`,`create_date`, `floor`,`status`,`x`,`y`,`addr`,`baidu_poi`,`longitude`,`latitude`,`create_date`,
`update_date`,`img_url`,`manager`,`manager_phone`,`type`,`point_type`,`comments`,email
`update_date`,`img_url`,`manager`,`manager_phone`,`type`,`point_type`,`comments`,email,`is_del`
</sql> </sql>


<sql id="dynamicWhereConditions"> <sql id="dynamicWhereConditions">
where 1 = 1
where is_del=0


<if test=" null != id "> <if test=" null != id ">
and `id` = #{id} and `id` = #{id}
@@ -132,6 +134,7 @@
<if test=" null != email "> <if test=" null != email ">
and `email` = #{email} and `email` = #{email}
</if> </if>
<if test=" null != ids "> <if test=" null != ids ">
and id in and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
@@ -160,7 +163,7 @@
left join wx_merchant m on ms.merchant_id=m.id left join wx_merchant m on ms.merchant_id=m.id
left join wx_mall_building b on s.building=b.id left join wx_mall_building b on s.building=b.id
left join wx_mall_floor f on s.floor=f.id left join wx_mall_floor f on s.floor=f.id
where 1 = 1
where s.is_del=0


<if test=" null != id "> <if test=" null != id ">
and s.`id` = #{id} and s.`id` = #{id}
@@ -322,7 +325,7 @@
left join wx_mall_floor f on s.floor=f.id left join wx_mall_floor f on s.floor=f.id
left join wx_business bus on m.business_id = bus.id left join wx_business bus on m.business_id = bus.id
left join wx_brand brand on m.brand = brand.id left join wx_brand brand on m.brand = brand.id
where 1 = 1
where s.is_del=0


<if test=" null != id "> <if test=" null != id ">
and s.`id` = #{id} and s.`id` = #{id}
@@ -432,7 +435,7 @@


<select id="getbshoplist" resultType="hashmap" parameterType="hashmap"> <select id="getbshoplist" resultType="hashmap" parameterType="hashmap">
select id,shop_number shopNumber from wx_shop select id,shop_number shopNumber from wx_shop
where tenant_id=#{tenantId} and shop_number = #{shopNumber}
where tenant_id=#{tenantId} and shop_number = #{shopNumber} and is_del=0
</select> </select>
<select id="getMerchantShopByShopId" resultType="hashmap" parameterType="hashmap"> <select id="getMerchantShopByShopId" resultType="hashmap" parameterType="hashmap">
@@ -442,12 +445,12 @@
from wx_merchant_shop ms inner join wx_merchant m on ms.merchant_id=m.id from wx_merchant_shop ms inner join wx_merchant m on ms.merchant_id=m.id
inner join wx_shop s on ms.shop_id=s.id inner join wx_shop s on ms.shop_id=s.id
inner join wx_rent_contract c on ms.merchant_id=c.merchant_id inner join wx_rent_contract c on ms.merchant_id=c.merchant_id
where ms.tenant_id=#{tenantId} and ms.shop_id=#{shopId} and ms.is_del=0
where ms.tenant_id=#{tenantId} and ms.shop_id=#{shopId} and ms.is_del=0 and s.is_del=0
</select> </select>
<select id="queryShopLeftInfo" resultType="hashmap" parameterType="hashmap"> <select id="queryShopLeftInfo" resultType="hashmap" parameterType="hashmap">
select count(id) shopcount,IFNULL(sum(build_area),0) area from wx_shop select count(id) shopcount,IFNULL(sum(build_area),0) area from wx_shop
where tenant_id=#{tenantId} and status=#{status}
where tenant_id=#{tenantId} and status=#{status} and is_del=0
</select> </select>


<select id="listShopFromContract" parameterType="com.iformall.domain.po.WxShop" resultType="hashmap"> <select id="listShopFromContract" parameterType="com.iformall.domain.po.WxShop" resultType="hashmap">
@@ -460,7 +463,7 @@
left join wx_merchant m on ms.merchant_id=m.id left join wx_merchant m on ms.merchant_id=m.id
left join wx_mall_building b on s.building=b.id left join wx_mall_building b on s.building=b.id
left join wx_mall_floor f on s.floor=f.id left join wx_mall_floor f on s.floor=f.id
where 1=1 and ms.is_del=0
where s.is_del=0 and ms.is_del=0
and s.tenant_id=#{tenantId} and s.tenant_id=#{tenantId}
<if test=" null != status"> <if test=" null != status">
and s.`status` = #{status} and s.`status` = #{status}
@@ -483,7 +486,8 @@
<select id="hasShopNumber" parameterType="com.iformall.domain.po.WxShop" resultType="Integer"> <select id="hasShopNumber" parameterType="com.iformall.domain.po.WxShop" resultType="Integer">
select count(*) from wx_shop where tenant_id=#{tenantId} and shop_number=#{shopNumber} and `type`=#{type}
select count(*) from wx_shop where tenant_id=#{tenantId} and shop_number=#{shopNumber} and `type`=#{type} and
is_del=0
<if test=" null != id"> <if test=" null != id">
and id != #{id} and id != #{id}
</if> </if>


+ 3
- 0
mallinkService/src/main/resources/mapper/WxTagsMapper.xml 查看文件

@@ -64,4 +64,7 @@
and `name` = #{name} and `name` = #{name}
</if> </if>
</select> </select>
<select id="findListAll" resultMap="BaseResultMap">
select id,name from wx_tags
</select>
</mapper> </mapper>

Loading…
取消
儲存