From 52f4b4b93e09042c92d36d61fb121b1332bbfe6c Mon Sep 17 00:00:00 2001 From: gongbiao Date: Tue, 27 Aug 2019 10:57:57 +0800 Subject: [PATCH 1/9] =?UTF-8?q?[=E7=94=A8=E6=88=B7=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90][=E4=BF=AE=E6=94=B9][=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../annotation/UserDataRuleAnnotation.java | 14 +++ .../basic/WxMerchantController.java | 3 + .../sys/WxDataRuleTargetController.java | 57 ++++++++++ .../sys/WxUserDataRuleController.java | 48 +++++++++ .../com/iformall/log/UserDataRuleAspect.java | 102 ++++++++++++++++++ .../com/iformall/domain/po/BaseEntity.java | 6 ++ .../iformall/domain/po/WxDataRuleTarget.java | 41 +++++++ .../com/iformall/domain/po/WxMerchant.java | 3 +- .../iformall/domain/po/WxUserDataRule.java | 41 +++++++ .../mapper/WxDataRuleTargetMapper.java | 16 +++ .../iformall/mapper/WxUserDataRuleMapper.java | 16 +++ .../service/WxDataRuleTargetService.java | 34 ++++++ .../service/WxUserDataRuleService.java | 14 +++ .../impl/WxDataRuleTargetServiceImpl.java | 48 +++++++++ .../impl/WxUserDataRuleServiceImpl.java | 45 ++++++++ .../mapper/WxDataRuleTargetMapper.xml | 53 +++++++++ .../resources/mapper/WxMerchantMapper.xml | 15 +++ .../resources/mapper/WxUserDataRuleMapper.xml | 55 ++++++++++ 18 files changed, 609 insertions(+), 2 deletions(-) create mode 100644 mallinkAdmin/src/main/java/com/iformall/annotation/UserDataRuleAnnotation.java create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/sys/WxDataRuleTargetController.java create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/sys/WxUserDataRuleController.java create mode 100644 mallinkAdmin/src/main/java/com/iformall/log/UserDataRuleAspect.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxDataRuleTarget.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxUserDataRule.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxDataRuleTargetMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxUserDataRuleMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxDataRuleTargetService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxUserDataRuleService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxDataRuleTargetServiceImpl.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxUserDataRuleServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/WxDataRuleTargetMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/WxUserDataRuleMapper.xml diff --git a/mallinkAdmin/src/main/java/com/iformall/annotation/UserDataRuleAnnotation.java b/mallinkAdmin/src/main/java/com/iformall/annotation/UserDataRuleAnnotation.java new file mode 100644 index 000000000..f59938850 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/annotation/UserDataRuleAnnotation.java @@ -0,0 +1,14 @@ +package com.iformall.annotation; + +import java.lang.annotation.*; + +/** + * @author gongbiao + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface UserDataRuleAnnotation { + + String value() default ""; +} diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java index 193c85f17..8008393ff 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java @@ -2,6 +2,7 @@ package com.iformall.controller.basic; import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; +import com.iformall.annotation.UserDataRuleAnnotation; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; @@ -18,6 +19,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -37,6 +39,7 @@ public class WxMerchantController extends BaseController { private QrCodeService qrCodeService; + @UserDataRuleAnnotation("merchant_list") @ApiOperation("分页列表接口") @GetMapping("listVo") @ApiImplicitParams({ diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/sys/WxDataRuleTargetController.java b/mallinkAdmin/src/main/java/com/iformall/controller/sys/WxDataRuleTargetController.java new file mode 100644 index 000000000..16a328d96 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/sys/WxDataRuleTargetController.java @@ -0,0 +1,57 @@ +package com.iformall.controller.sys; + + +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.SystemControllerLog; +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxDataRuleTarget; +import com.iformall.service.WxDataRuleTargetService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +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; + +import java.util.List; + +/** + * @author gongbiao + */ +@RestController +@RequestMapping("wxDataRuleTarget") +@Api(description = "数据权限目标") +public class WxDataRuleTargetController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxDataRuleTargetService wxDataRuleTargetService; + + @ApiOperation("列表接口") + @GetMapping("list") + @SystemControllerLog(description = "数据权限目标-列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxDataRuleTarget wxDataRuleTarget, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] wxDataRuleTarget::list"); + final PageInfo page = wxDataRuleTargetService.listAsPage(wxDataRuleTarget, pageNum, pageSize); + return new ResultData(page); + } + + + @ApiOperation("获取全部") + @GetMapping("getList") + @SystemControllerLog(description = "数据权限目标-获取全部") + public ResultData getList() { + logger.debug("[" + getIpAddr() + "] wxDataRuleTarget::getList"); + List datalist = wxDataRuleTargetService.getList(); + return new ResultData(datalist); + } +} diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/sys/WxUserDataRuleController.java b/mallinkAdmin/src/main/java/com/iformall/controller/sys/WxUserDataRuleController.java new file mode 100644 index 000000000..861e8743b --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/sys/WxUserDataRuleController.java @@ -0,0 +1,48 @@ +package com.iformall.controller.sys; + + +import com.iformall.annotation.SystemControllerLog; +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxUserDataRule; +import com.iformall.service.WxUserDataRuleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @author gongbiao + */ +@RestController +@RequestMapping("wxUserDataRule") +@Api(description = "用户数据权限") +public class WxUserDataRuleController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxUserDataRuleService wxUserDataRuleService; + + @ApiOperation("编辑") + @PostMapping("/modify") + @SystemControllerLog(description = "用户数据权限-新增") + public ResultData modify(@RequestBody WxUserDataRule wxUserDataRule) { + logger.debug("[" + getIpAddr() + "] wxDataRuleTarget::modify"); + wxUserDataRuleService.modify(wxUserDataRule); + return new ResultData(); + } + + @ApiOperation("根据用户ID查看") + @GetMapping("/findByUserId") + @ApiImplicitParam(name = "userId", value = "userId", dataType = "Long", paramType = "query", required = true) + @SystemControllerLog(description = "用户数据权限-根据用户ID查看") + public ResultData findByUserId(Long userId) { + logger.debug("[" + getIpAddr() + "] wxDataRuleTarget::modify"); + WxUserDataRule wxUserDataRule = wxUserDataRuleService.findByUserId(userId); + return new ResultData(wxUserDataRule); + } + +} diff --git a/mallinkAdmin/src/main/java/com/iformall/log/UserDataRuleAspect.java b/mallinkAdmin/src/main/java/com/iformall/log/UserDataRuleAspect.java new file mode 100644 index 000000000..2f4db7cd2 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/log/UserDataRuleAspect.java @@ -0,0 +1,102 @@ +package com.iformall.log; + + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.iformall.annotation.UserDataRuleAnnotation; +import com.iformall.domain.po.BaseEntity; +import com.iformall.domain.po.MallUserInfo; +import com.iformall.domain.po.WxUserDataRule; +import com.iformall.service.WxUserDataRuleService; +import com.iformall.shiro.UserSession; +import org.apache.commons.lang3.StringUtils; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.aspectj.lang.reflect.MethodSignature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.lang.reflect.Method; +import java.util.HashSet; +import java.util.stream.Collectors; + +/** + * @author gongbiao + */ +@Aspect +@Component +public class UserDataRuleAspect { + private static final Logger logger = LoggerFactory.getLogger(UserDataRuleAspect.class); + + @Autowired + private WxUserDataRuleService wxUserDataRuleService; + + @Pointcut("@annotation(com.iformall.annotation.UserDataRuleAnnotation)") + public void userDataRulePointcut() { + } + + @Before("userDataRulePointcut()") + public void doBefore(JoinPoint joinPoint) { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + MallUserInfo user = (MallUserInfo) request.getSession().getAttribute(UserSession.userInfo); + if (user == null) { + logger.error("session 获取 user 失败"); + return; + } + + //得到用户的数据权限 + WxUserDataRule byUserId = wxUserDataRuleService.findByUserId(user.getId()); + if (byUserId == null) { + logger.info("用户的数据权限未配置"); + return; + } + String buildingFloor = byUserId.getBuildingFloor(); + if (StringUtils.isNotEmpty(buildingFloor)) { + buildingFloor = JSONObject.parseObject(buildingFloor).getJSONArray("data").stream() + .map(m -> { + JSONObject jsonObject = JSONObject.parseObject(String.valueOf(m)); + return jsonObject.getString("floor"); + }).collect(Collectors.joining(",")); + } + + String businessForRule = byUserId.getBusinessForRule(); + if (StringUtils.isNotEmpty(businessForRule)) { + Object[] data = JSONObject.parseObject(businessForRule).getJSONArray("data").toArray(); + businessForRule = StringUtils.join(data, ","); + } + + HashSet targetSet = new HashSet(); + String target = byUserId.getTarget(); + if (StringUtils.isNotEmpty(target)) { + JSONArray objects = JSONArray.parseArray(target); + for (int i = 0; i < objects.size(); i++) { + JSONObject jsonObject = objects.getJSONObject(i); + JSONArray children = jsonObject.getJSONArray("children"); + for (int j = 0; j < children.size(); j++) { + targetSet.add(children.getJSONObject(i).getString("tag")); + } + } + } + + //得到注释的名称 + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + //判断tag是否在用户权限中 如果存在加入参数查询 + Method method = signature.getMethod(); + String value = method.getAnnotation(UserDataRuleAnnotation.class).value(); + if (targetSet.contains(value)) { + //得到方法的参数 + Object[] args = joinPoint.getArgs(); + BaseEntity baseEntity = (BaseEntity) args[0]; + baseEntity.setFloorForRule(buildingFloor); + baseEntity.setBusinessForRule(businessForRule); + } + } + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/BaseEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/BaseEntity.java index e45f23d2e..2a54ec3f0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/BaseEntity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/BaseEntity.java @@ -30,6 +30,12 @@ public class BaseEntity implements Serializable { @Transient private String sortColumns; + @Transient + protected String floorForRule; + + @Transient + protected String businessForRule; + public String getSortColumns() { if(StringUtils.isBlank(sortColumn)){ diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxDataRuleTarget.java b/mallinkService/src/main/java/com/iformall/domain/po/WxDataRuleTarget.java new file mode 100644 index 000000000..1b3b730c3 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxDataRuleTarget.java @@ -0,0 +1,41 @@ +package com.iformall.domain.po; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; +import java.util.Date; +import java.util.List; + +/** + * @author gongbiao + */ +@Table(name = "wx_data_rule_target") +@Data +@EqualsAndHashCode(callSuper = true) +public class WxDataRuleTarget extends BaseEntity { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + + @io.swagger.annotations.ApiModelProperty(value = "父级ID", name = "parent") + private Long parent; + @io.swagger.annotations.ApiModelProperty(value = "用户ID", name = "name") + private String name; + @io.swagger.annotations.ApiModelProperty(value = "标签", name = "tag") + private String tag; + @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createTime") + private Date createTime; + @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateTime") + private Date updateTime; + + @Transient + private List children; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java index 98674c0e9..eb8473c03 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java @@ -4,12 +4,10 @@ import cn.afterturn.easypoi.excel.annotation.Excel; import com.iformall.domain.vo.WxShopVo; import com.iformall.enums.EnumBusiness; import com.iformall.enums.EnumSubBusiness; -import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; -import org.apache.commons.collections.ListUtils; import javax.persistence.Id; import javax.persistence.Table; @@ -237,4 +235,5 @@ public class WxMerchant extends BaseEntity { return ""; return "t:md:" + id; } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxUserDataRule.java b/mallinkService/src/main/java/com/iformall/domain/po/WxUserDataRule.java new file mode 100644 index 000000000..d08c91070 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxUserDataRule.java @@ -0,0 +1,41 @@ +package com.iformall.domain.po; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; +import java.util.Date; +import java.util.List; + +@Table(name = "wx_user_data_rule") +@Data +@EqualsAndHashCode(callSuper = true) +public class WxUserDataRule extends BaseEntity { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + + @io.swagger.annotations.ApiModelProperty(value = "用户ID", name = "userId") + private Long userId; + @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId") + private String tenantId; + @io.swagger.annotations.ApiModelProperty(value = "权限类型", name = "type") + private Integer type; + @io.swagger.annotations.ApiModelProperty(value = "楼层楼座", name = "buildingFloor") + private String buildingFloor; + @io.swagger.annotations.ApiModelProperty(value = "业态", name = "business") + private String business; + @io.swagger.annotations.ApiModelProperty(value = "数据范围", name = "target") + private String target; + @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createTime") + private Date createTime; + @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateTime") + private Date updateTime; + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxDataRuleTargetMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxDataRuleTargetMapper.java new file mode 100644 index 000000000..bea51db57 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxDataRuleTargetMapper.java @@ -0,0 +1,16 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxDataRuleTarget; + +import java.util.List; + +/** + * @author gongbiao + */ +public interface WxDataRuleTargetMapper extends CommonMapper { + + List findList(WxDataRuleTarget param); + + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxUserDataRuleMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxUserDataRuleMapper.java new file mode 100644 index 000000000..0e04f553d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxUserDataRuleMapper.java @@ -0,0 +1,16 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxUserDataRule; + +import java.util.List; + +/** + * @author gongbiao + */ +public interface WxUserDataRuleMapper extends CommonMapper { + + List findList(WxUserDataRule param); + + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxDataRuleTargetService.java b/mallinkService/src/main/java/com/iformall/service/WxDataRuleTargetService.java new file mode 100644 index 000000000..3db70c2ed --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxDataRuleTargetService.java @@ -0,0 +1,34 @@ +package com.iformall.service; + +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxDataRuleTarget; + +import java.util.List; + +/** + * @author gongbiao + */ +public interface WxDataRuleTargetService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param pageIndex + * @param pageSize + * @return + */ + PageInfo listAsPage(WxDataRuleTarget record, Integer pageIndex, Integer pageSize); + + /** + * 根据实体查询列表 + * + * @param record + * @return + */ + List findList(WxDataRuleTarget record); + + + List getList(); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxUserDataRuleService.java b/mallinkService/src/main/java/com/iformall/service/WxUserDataRuleService.java new file mode 100644 index 000000000..24d81bbdc --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxUserDataRuleService.java @@ -0,0 +1,14 @@ +package com.iformall.service; + +import com.iformall.domain.po.WxUserDataRule; + +/** + * @author gongbiao + */ +public interface WxUserDataRuleService { + + void modify(WxUserDataRule wxUserDataRule); + + WxUserDataRule findByUserId(Long userId); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxDataRuleTargetServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxDataRuleTargetServiceImpl.java new file mode 100644 index 000000000..d9a2b3404 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxDataRuleTargetServiceImpl.java @@ -0,0 +1,48 @@ +package com.iformall.service.impl; + +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxDataRuleTarget; +import com.iformall.mapper.WxDataRuleTargetMapper; +import com.iformall.service.WxDataRuleTargetService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author gongbiao + */ +@Service +public class WxDataRuleTargetServiceImpl implements WxDataRuleTargetService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxDataRuleTargetMapper wxDataRuleTargetMapper; + + @Override + public PageInfo listAsPage(WxDataRuleTarget record, Integer pageIndex, Integer pageSize) { + return null; + } + + @Override + public List findList(WxDataRuleTarget record) { + return null; + } + + @Override + public List getList() { + List wxDataRuleTargets = wxDataRuleTargetMapper.selectAll(); + List targets = wxDataRuleTargets.stream() + .filter(t -> t.getParent().equals(0L)).collect(Collectors.toList()); + for (WxDataRuleTarget parentTarget : targets) { + List children = wxDataRuleTargets.stream() + .filter(t -> t.getParent().equals(parentTarget.getId())).collect(Collectors.toList()); + parentTarget.setChildren(children); + } + return targets; + } + +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxUserDataRuleServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxUserDataRuleServiceImpl.java new file mode 100644 index 000000000..6cfbc9e26 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxUserDataRuleServiceImpl.java @@ -0,0 +1,45 @@ +package com.iformall.service.impl; + +import com.iformall.common.IdWorker; +import com.iformall.domain.po.WxUserDataRule; +import com.iformall.mapper.WxUserDataRuleMapper; +import com.iformall.service.WxUserDataRuleService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** + * @author gongbiao + */ +@Service +public class WxUserDataRuleServiceImpl implements WxUserDataRuleService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxUserDataRuleMapper wxUserDataRuleMapper; + + @Override + public void modify(WxUserDataRule record) { + Date date = new Date(); + if (record.getId() == null) { + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + record.setCreateTime(date); + record.setUpdateTime(date); + wxUserDataRuleMapper.insertSelective(record); + } else { + record.setUpdateTime(date); + wxUserDataRuleMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public WxUserDataRule findByUserId(Long userId) { + WxUserDataRule wxUserDataRule = new WxUserDataRule(); + wxUserDataRule.setUserId(userId); + return wxUserDataRuleMapper.selectOne(wxUserDataRule); + } +} diff --git a/mallinkService/src/main/resources/mapper/WxDataRuleTargetMapper.xml b/mallinkService/src/main/resources/mapper/WxDataRuleTargetMapper.xml new file mode 100644 index 000000000..89964ca47 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxDataRuleTargetMapper.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + `id`,`parent`,`name`,`tag`,`create_time`,`update_time` + + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + + and `parent` = #{parent} + + + + and `name` like concat('%',#{name},'%') + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml index a55974eb5..5cdc3d524 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml @@ -232,6 +232,21 @@ #{idItem} + + and m.id in( + select ms.merchant_id from (select merchant_id,shop_id from wx_merchant_shop where is_del=0) ms + inner join wx_merchant m on ms.merchant_id = m.id + inner join wx_shop s on s.id=ms.shop_id + where m.tenant_id=#{tenantId} and s.is_del=0 + + and m.business_id in (${businessForRule}) + + + and s.`floor` in (${floorForRule}) + + ) + + order by ${sortColumns} diff --git a/mallinkService/src/main/resources/mapper/WxUserDataRuleMapper.xml b/mallinkService/src/main/resources/mapper/WxUserDataRuleMapper.xml new file mode 100644 index 000000000..c397ad676 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxUserDataRuleMapper.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`user_id`,`type`,`business`,`target`,`create_time`,`update_time` + + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + + and `user_id` = #{userId} + + + + and `type` = #{type} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + From 71fdcf4ef9a62c6649b8f7edd77d0f0becd3940f Mon Sep 17 00:00:00 2001 From: gongbiao Date: Tue, 27 Aug 2019 11:00:56 +0800 Subject: [PATCH 2/9] =?UTF-8?q?[=E7=94=A8=E6=88=B7=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90][=E4=BF=AE=E6=94=B9][=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E8=A1=A8=E5=8F=8A=E5=88=9D=E5=A7=8B=E5=8C=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?SQL]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V201908271058__G_USER_DATA_RULE.sql | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201908271058__G_USER_DATA_RULE.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201908271058__G_USER_DATA_RULE.sql b/mallinkAdmin/src/main/resources/db/migration/V201908271058__G_USER_DATA_RULE.sql new file mode 100644 index 000000000..17ca2fb2e --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201908271058__G_USER_DATA_RULE.sql @@ -0,0 +1,35 @@ +drop table if exists wx_user_data_rule; +CREATE TABLE wx_user_data_rule ( + `id` bigint(20) NOT NULL, + `tenant_id` varchar(10) NOT NULL COMMENT '租户ID', + `user_id` bigint(20) NOT NULL COMMENT '角色名称', + `type` tinyint(3) NOT NULL COMMENT '权限类型', + `building_floor` json DEFAULT NULL COMMENT '楼层楼座', + `business` json DEFAULT NULL COMMENT '业态', + `target` json DEFAULT NULL COMMENT '数据范围', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE `id_UNIQUE` USING BTREE (`id`) comment '' +) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ROW_FORMAT=DYNAMIC COMMENT='用户数据权限' CHECKSUM=0 DELAY_KEY_WRITE=0; + +drop table if exists wx_data_rule_target; +CREATE TABLE wx_data_rule_target ( + `id` bigint(20) NOT NULL, + `parent` bigint(20) NOT NULL COMMENT '父级', + `name` varchar(50) NOT NULL COMMENT '名称', + `tag` varchar(50) DEFAULT NULL COMMENT '标签', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE `id_UNIQUE` USING BTREE (`id`) comment '' +) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ROW_FORMAT=DYNAMIC COMMENT='数据权限目标' CHECKSUM=0 DELAY_KEY_WRITE=0; + + +insert into `wx_data_rule_target` ( `id`, `parent`, `name`, `tag`, `create_time`, `update_time`) values ( '1', '0', '商户商铺', '', '2019-08-26 13:23:25', '2019-08-26 13:23:27'); +insert into `wx_data_rule_target` ( `id`, `parent`, `name`, `tag`, `create_time`, `update_time`) values ( '2', '0', '合同管理', '', '2019-08-26 13:32:04', '2019-08-26 13:32:07'); +insert into `wx_data_rule_target` ( `id`, `parent`, `name`, `tag`, `create_time`, `update_time`) values ( '101','1', '商户列表', 'merchant_list', '2019-08-26 13:32:17', '2019-08-26 13:32:19'); +insert into `wx_data_rule_target` ( `id`, `parent`, `name`, `tag`, `create_time`, `update_time`) values ( '102','1', '解单数据', 'merchant_trade', '2019-08-26 13:33:24', '2019-08-26 13:33:25'); +insert into `wx_data_rule_target` ( `id`, `parent`, `name`, `tag`, `create_time`, `update_time`) values ( '201','2', '租金合同', 'rent_contract_list', '2019-08-26 13:34:17', '2019-08-26 13:34:20'); +insert into `wx_data_rule_target` ( `id`, `parent`, `name`, `tag`, `create_time`, `update_time`) values ( '202','2', '物业合同', 'property_contract_list', '2019-08-26 13:34:45', '2019-08-26 13:34:47'); +insert into `wx_data_rule_target` ( `id`, `parent`, `name`, `tag`, `create_time`, `update_time`) values ( '203','2', '租金物业合同', 'rent_property_contract_list', '2019-08-26 13:36:23', '2019-08-26 13:36:25'); From 8df86557801ae8a6ae9c891d3b3cfe335cebc6a5 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Tue, 27 Aug 2019 11:02:43 +0800 Subject: [PATCH 3/9] =?UTF-8?q?[=E7=94=A8=E6=88=B7=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90][=E4=BF=AE=E6=94=B9][=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E8=A1=A8=E5=8F=8A=E5=88=9D=E5=A7=8B=E5=8C=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?SQL]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/db/migration/V201908271058__G_USER_DATA_RULE.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V201908271058__G_USER_DATA_RULE.sql b/mallinkAdmin/src/main/resources/db/migration/V201908271058__G_USER_DATA_RULE.sql index 17ca2fb2e..f5cf2c813 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V201908271058__G_USER_DATA_RULE.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V201908271058__G_USER_DATA_RULE.sql @@ -3,7 +3,7 @@ CREATE TABLE wx_user_data_rule ( `id` bigint(20) NOT NULL, `tenant_id` varchar(10) NOT NULL COMMENT '租户ID', `user_id` bigint(20) NOT NULL COMMENT '角色名称', - `type` tinyint(3) NOT NULL COMMENT '权限类型', + `type` tinyint(3) NOT NULL COMMENT '权限类型1系统全部数据2楼层及业态', `building_floor` json DEFAULT NULL COMMENT '楼层楼座', `business` json DEFAULT NULL COMMENT '业态', `target` json DEFAULT NULL COMMENT '数据范围', From d7836012ac71572ac4be5d6072a4712f882dbc77 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Mon, 26 Aug 2019 16:13:00 +0800 Subject: [PATCH 4/9] =?UTF-8?q?[POS][=E4=BF=AE=E6=94=B9]:POS=20code=20?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/service/PosService.java | 10 + .../iformall/service/impl/PosServiceImpl.java | 465 ++++++++++-------- .../java/com/iformall/common/ErrorCode.java | 1 + .../com/iformall/enums/EnumPosPamentType.java | 41 ++ .../com/iformall/enums/EnumPosRefundType.java | 42 ++ .../java/com/iformall/pay/WxPayConstant.java | 37 ++ 6 files changed, 396 insertions(+), 200 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumPosPamentType.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumPosRefundType.java diff --git a/mallinkPosApi/src/main/java/com/iformall/service/PosService.java b/mallinkPosApi/src/main/java/com/iformall/service/PosService.java index 51696d986..33af9520d 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/PosService.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/PosService.java @@ -78,6 +78,14 @@ public interface PosService { */ Map cardPayPreCancel(Map params) throws MallinkException; + /** + * 订单同步-Neusoft-支付或者退款成功后通知富茂 + * @param params + * @return + * @throws MallinkException + */ + Map posOrderSync(Map params) throws MallinkException; + /** * 消费卡POS支付 * @param params @@ -94,4 +102,6 @@ public interface PosService { * @throws MallinkException */ Map cardPayCancel(Map params) throws MallinkException; + + } diff --git a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java index 5d53f3f77..f7941f207 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java @@ -70,19 +70,13 @@ public class PosServiceImpl implements PosService { String password = params.get(WxPayConstant.PASSWORD); // buUser's password if (StringUtils.isBlank(tenantId)) { - String errMessage = "request params[tenant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.TENANT_ID); } if (StringUtils.isBlank(phone)) { - String errMessage = "request params[phone] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.PHONE); } if (StringUtils.isBlank(password)) { - String errMessage = "request params[password] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.PASSWORD); } WxMerchantBUser user = new WxMerchantBUser(); user.setTenantId(tenantId); @@ -93,26 +87,12 @@ public class PosServiceImpl implements PosService { try { user1 = merchantBUserService.getBUserByAppId(user); } catch (Exception e) { - String errMessage = "B端用户不存在或者已被禁用, phone: " + phone + ", " +e.getMessage(); - throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), errMessage); + String errMessage = ErrorCode.MERCHANT_BUSER_NOT_VALID.getMessage() + "phone: " + phone + ", " +e.getMessage(); + throw new MallinkException(ErrorCode.MERCHANT_BUSER_NOT_VALID.getCode(), errMessage); } if (user1 != null) { // check merchant 状态 - WxMerchant merchant = null; - try { - merchant = merchantService.getById(user1.getMerchantId()); - } catch (Exception e) { - String errMessage = ErrorCode.DB_FAIL.getMessage() + ": " + user1.getMerchantId() + e.getMessage(); - throw new MallinkException(ErrorCode.DB_FAIL.getCode(), errMessage); - } - if (merchant == null) { - logger.error(ErrorCode.MERCHANT_INFO_NOT_FOUND.getMessage() + ": " + user1.getMerchantId()); - throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); - } - if (merchant.getStatus().equals(EnumMerchantStatus.NOT_VALID.getCode())) { - logger.error(ErrorCode.MERCHANT_INFO_NOT_VALID.getMessage() + ": " + user1.getMerchantId()); - throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_VALID); - } + WxMerchant merchant = checkAndGetMerchant(user1.getMerchantId()); // check password if (user1.getUserPwd().equalsIgnoreCase(password)) { retMap.put(WxPayConstant.TENANT_ID, user1.getTenantId()); @@ -141,9 +121,7 @@ public class PosServiceImpl implements PosService { String tenantId = params.get(WxPayConstant.TENANT_ID); // 租户ID if (StringUtils.isBlank(tenantId)) { - String errMessage = "request params[tenant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.TENANT_ID); } PosMallConfig config = posMallConfigService.getByTenantId(tenantId); if (config == null) { @@ -168,9 +146,7 @@ public class PosServiceImpl implements PosService { String tenantId = params.get(WxPayConstant.TENANT_ID); // 租户ID if (StringUtils.isBlank(tenantId)) { - String errMessage = "request params[tenant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.TENANT_ID); } WxMall mall = mallService.getByTenantId(tenantId); if (mall == null) { @@ -199,9 +175,7 @@ public class PosServiceImpl implements PosService { String posAmountStr = params.get(WxPayConstant.POS_AMOUNT); // POS订单金额(单位:分) if (StringUtils.isBlank(tenantId)) { - String errMessage = "request params[tenant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.TENANT_ID); } PosMallConfig config = posMallConfigService.getByTenantId(tenantId); @@ -211,19 +185,13 @@ public class PosServiceImpl implements PosService { } if (StringUtils.isBlank(merchantIdStr)) { - String errMessage = "request params[merchant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.MERCHANT_ID); } if (StringUtils.isBlank(posOrderIdStr)) { - String errMessage = "request params[pos_order_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_ORDER_ID); } if (StringUtils.isBlank(posAmountStr)) { - String errMessage = "request params[pos_amount] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_AMOUNT); } if (StringUtils.isBlank(memIdStr) && StringUtils.isBlank(memPhoneStr)) { @@ -354,9 +322,7 @@ public class PosServiceImpl implements PosService { String posAmountStr = params.get(WxPayConstant.POS_AMOUNT); // POS订单总额(单位:分) if (StringUtils.isBlank(tenantId)) { - String errMessage = "request params[tenant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.TENANT_ID); } PosMallConfig config = posMallConfigService.getByTenantId(tenantId); if (config == null) { @@ -368,22 +334,17 @@ public class PosServiceImpl implements PosService { throw new MallinkException(ErrorCode.POS_CONFIG_MEM_COUPON_DISABLE); } if (StringUtils.isBlank(merchantIdStr)) { - String errMessage = "request params[merchant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.MERCHANT_ID); } if (StringUtils.isBlank(buUserIdStr)) { - String errMessage = "request params[bu_user_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.BUSER_ID); } if (StringUtils.isBlank(couponOrderIdStr)) { - String errMessage = "request params[coupon_order_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.COUPON_ORDER_ID); } if (actionType.equals(EnumVerifyActionType.CHECK)) { if (StringUtils.isBlank(verifyType)) { - String errMessage = "request params[verify_type] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.VERIFY_TYPE); } if (!(verifyType.equalsIgnoreCase(WxPayConstant.VERIFY_TYPE_INDEPENT) || verifyType.equalsIgnoreCase(WxPayConstant.VERIFY_TYPE_PAY))) { String errMessage = "request params[verify_type] only support independent or pay."; @@ -398,15 +359,13 @@ public class PosServiceImpl implements PosService { actionType.equals(EnumVerifyActionType.VERIFY_INDEPENT) || actionType.equals(EnumVerifyActionType.VERIFY_PAY)) { if (StringUtils.isBlank(posOrderIdStr)) { - String errMessage = "request params[pos_order_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_ORDER_ID); } } if (actionType.equals(EnumVerifyActionType.PRE_VERIFY) || actionType.equals(EnumVerifyActionType.VERIFY_PAY)) { if (StringUtils.isBlank(posAmountStr)) { - String errMessage = "request params[pos_amount] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_AMOUNT); } } @@ -429,25 +388,9 @@ public class PosServiceImpl implements PosService { throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), e.getMessage()); } // 2. check merchant - WxMerchant merchant = merchantService.getById(merchantId); - if (merchant == null) { - logger.error(ErrorCode.MERCHANT_INFO_NOT_FOUND.getMessage() + ": " + merchantIdStr); - throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); - } - if (merchant.getIsDel().equals(EnumDelStatus.DEL.getCode()) || merchant.getStatus().equals(EnumMerchantStatus.NOT_VALID.getCode())) { - logger.error(ErrorCode.MERCHANT_INFO_NOT_VALID.getMessage() + ": " + merchantIdStr); - throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_VALID); - } + WxMerchant merchant = checkAndGetMerchant(merchantId); // 3. check buUser - WxMerchantBUser buUser = merchantBUserService.getById(buUserId); - if (buUser == null) { - logger.error(ErrorCode.USER_IS_EMPTY.getMessage() + ": " + buUserIdStr); - throw new MallinkException(ErrorCode.USER_IS_EMPTY); - } - if (!buUser.getMerchantId().equals(merchantId)) { - logger.error(ErrorCode.VERIFY_BUSER_MERCHANT_NOT_BELONG.getMessage() + ": " + buUserIdStr); - throw new MallinkException(ErrorCode.VERIFY_BUSER_MERCHANT_NOT_BELONG); - } + WxMerchantBUser buUser = checkAndGetMerchantUser(buUserId, merchantId); JSONArray coRetArr = new JSONArray(); if (couponOrderIdStr != null) { @@ -481,9 +424,7 @@ public class PosServiceImpl implements PosService { String verifyType = WxPayConstant.VERIFY_TYPE_PAY; // 此接口只有支付使用 if (StringUtils.isBlank(tenantId)) { - String errMessage = "request params[tenant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.TENANT_ID); } PosMallConfig config = posMallConfigService.getByTenantId(tenantId); if (config == null) { @@ -495,26 +436,20 @@ public class PosServiceImpl implements PosService { throw new MallinkException(ErrorCode.POS_CONFIG_MEM_COUPON_DISABLE); } if (StringUtils.isBlank(merchantIdStr)) { - String errMessage = "request params[merchant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.MERCHANT_ID); } if (StringUtils.isBlank(buUserIdStr)) { - String errMessage = "request params[bu_user_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.BUSER_ID); } if (StringUtils.isBlank(selCoListStr)) { - String errMessage = "request params[sel_co_list] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.SELECTED_COUPON_ORDER_LIST); } if (actionType.equals(EnumVerifyActionType.PRE_VERIFY) || actionType.equals(EnumVerifyActionType.VERIFY_INDEPENT)) { if (StringUtils.isBlank(posOrderIdStr)) { - String errMessage = "request params[pos_order_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_ORDER_ID); } if (StringUtils.isBlank(posAmountStr)) { - String errMessage = "request params[pos_amount] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_AMOUNT); } } @@ -534,25 +469,9 @@ public class PosServiceImpl implements PosService { throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), e.getMessage()); } // 2. check merchant - WxMerchant merchant = merchantService.getById(merchantId); - if (merchant == null) { - logger.error(ErrorCode.MERCHANT_INFO_NOT_FOUND.getMessage() + ": " + merchantIdStr); - throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); - } - if (merchant.getIsDel().equals(EnumDelStatus.DEL.getCode()) || merchant.getStatus().equals(EnumMerchantStatus.NOT_VALID.getCode())) { - logger.error(ErrorCode.MERCHANT_INFO_NOT_VALID.getMessage() + ": " + merchantIdStr); - throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_VALID); - } + WxMerchant merchant = checkAndGetMerchant(merchantId); // 3. check buUser - WxMerchantBUser buUser = merchantBUserService.getById(buUserId); - if (buUser == null) { - logger.error(ErrorCode.USER_IS_EMPTY.getMessage() + ": " + buUserIdStr); - throw new MallinkException(ErrorCode.USER_IS_EMPTY); - } - if (!buUser.getMerchantId().equals(merchantId)) { - logger.error(ErrorCode.VERIFY_BUSER_MERCHANT_NOT_BELONG.getMessage() + ": " + buUserIdStr); - throw new MallinkException(ErrorCode.VERIFY_BUSER_MERCHANT_NOT_BELONG); - } + WxMerchantBUser buUser = checkAndGetMerchantUser(buUserId, merchantId); JSONArray selCoArr = JSONObject.parseArray(selCoListStr); if (selCoArr.size() <= 0) { @@ -657,11 +576,10 @@ public class PosServiceImpl implements PosService { throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED); } - Long couponOrderId = couponOrderCVo.getId(); + Date now = new Date(); // 5. 检查有效期 if (couponOrderCVo.getValidStartDate() != null && couponOrderCVo.getValidEndDate() != null) { - Date now = new Date(); if (couponOrderCVo.getValidStartDate().getTime() > now.getTime()) { logger.error("此券有效期未开始:" + couponOrderIdStr); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_EARLIER_THAN_VALIDDATE); @@ -671,6 +589,13 @@ public class PosServiceImpl implements PosService { throw new MallinkException(ErrorCode.COUPON_ORDER_IS_EARLIER_THAN_VALIDDATE); } } + // 5.1 券已过期 + if (couponOrderCVo.getExpiredTime().before(now)) { + logger.error("此券已过期:" + couponOrderIdStr); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_EARLIER_THAN_VALIDDATE); + } + + Long couponOrderId = couponOrderCVo.getId(); // 6. 检查适用门店 WxCouponMerchant wxCouponMerchant = new WxCouponMerchant(); @@ -854,30 +779,20 @@ public class PosServiceImpl implements PosService { String forceStr = params.get(WxPayConstant.FORCE); // 是否强制 if (StringUtils.isBlank(tenantId)) { - String errMessage = "request params[tenant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.TENANT_ID); } if (StringUtils.isBlank(merchantIdStr)) { - String errMessage = "request params[merchant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.MERCHANT_ID); } if (StringUtils.isBlank(buUserIdStr)) { - String errMessage = "request params[bu_user_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.BUSER_ID); } if (StringUtils.isBlank(couponOrderIdStr)) { - String errMessage = "request params[coupon_order_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.COUPON_ORDER_ID); } if (actionType.equals(EnumVerifyActionType.PRE_VERIFY) || actionType.equals(EnumVerifyActionType.VERIFY_INDEPENT)) { if (StringUtils.isBlank(posOrderIdStr)) { - String errMessage = "request params[pos_order_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_ORDER_ID); } } @@ -902,6 +817,10 @@ public class PosServiceImpl implements PosService { logger.error(ErrorCode.USER_IS_EMPTY.getMessage() + ": " + buUserIdStr); throw new MallinkException(ErrorCode.USER_IS_EMPTY); } + if (buUser.getMerchantId().equals(merchantId)) { + logger.error(ErrorCode.VERIFY_BUSER_MERCHANT_NOT_BELONG.getMessage() + ": " + buUserId); + throw new MallinkException(ErrorCode.VERIFY_BUSER_MERCHANT_NOT_BELONG); + } // 4. check couponOrderId WxCouponOrderCVo couponOrderCVo = couponOrderService.detailCUserVo(couponOrderIdStr); if (couponOrderCVo == null) { @@ -1078,7 +997,8 @@ public class PosServiceImpl implements PosService { * @param buUserId * @param posOrderId */ - private void doVerify(EnumVerifyActionType actionType, WxCouponOrderCVo couponOrderCVo, WxCoupon coupon, Long merchantId, Long buUserId, Long posOrderId, Map retMap) { + private void doVerify(EnumVerifyActionType actionType, WxCouponOrderCVo couponOrderCVo, WxCoupon coupon, + Long merchantId, Long buUserId, Long posOrderId, Map retMap) { int num = 0; // 1. insert posOrderId PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify(); @@ -1135,7 +1055,7 @@ public class PosServiceImpl implements PosService { try { WxOrder order = orderMapper.selectByPrimaryKey(couponOrderCVo.getOrderId()); int point = scoreRulesService.addScore2(EnumScoreType.CONSUMPTION, order, couponOrderCVo.getBusinessId()); - retMap.put("point", String.valueOf(point)); + retMap.put(WxPayConstant.POINT, String.valueOf(point)); } catch (Exception e) { logger.error("核销成长值异常:" + e.getMessage()); } @@ -1157,7 +1077,7 @@ public class PosServiceImpl implements PosService { creditHistory.setMerchantId(merchantId); creditHistory = creditHistoryService.saveOrUpdate(creditHistory); if (creditHistory.getCreditNum() != null) { - retMap.put("credit", String.valueOf(creditHistory.getCreditNum())); + retMap.put(WxPayConstant.CREDIT, String.valueOf(creditHistory.getCreditNum())); } } catch (Exception e) { logger.error("核销积分值异常:" + e.getMessage()); @@ -1275,25 +1195,19 @@ public class PosServiceImpl implements PosService { throw new MallinkException(ErrorCode.POS_CONFIG_MEM_COUPON_DISABLE); } if (StringUtils.isBlank(merchantIdStr)) { - String errMessage = "request params[merchant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.MERCHANT_ID); } if (StringUtils.isBlank(buUserIdStr)) { - String errMessage = "request params[bu_user_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.BUSER_ID); } if (StringUtils.isBlank(posOrderIdStr)) { - String errMessage = "request params[pos_order_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_ORDER_ID); } if (StringUtils.isBlank(posAmountStr)) { - String errMessage = "request params[pos_amount] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_AMOUNT); } if (StringUtils.isBlank(cardIdStr)) { - String errMessage = "request params[card_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.CARD_ID); } Long merchantId, buUserId, posOrderId, cardId; @@ -1393,9 +1307,7 @@ public class PosServiceImpl implements PosService { String cardSpendIdStr = params.get(WxPayConstant.CARD_SPEND_ID); // 消费卡花费ID if (StringUtils.isBlank(tenantId)) { - String errMessage = "request params[tenant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.TENANT_ID); } PosMallConfig config = posMallConfigService.getByTenantId(tenantId); if (config == null) { @@ -1407,29 +1319,22 @@ public class PosServiceImpl implements PosService { throw new MallinkException(ErrorCode.POS_CONFIG_MEM_COUPON_DISABLE); } if (StringUtils.isBlank(merchantIdStr)) { - String errMessage = "request params[merchant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.MERCHANT_ID); } if (StringUtils.isBlank(buUserIdStr)) { - String errMessage = "request params[bu_user_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.BUSER_ID); } if (StringUtils.isBlank(posOrderIdStr)) { - String errMessage = "request params[pos_order_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_ORDER_ID); } if (StringUtils.isBlank(posAmountStr)) { - String errMessage = "request params[pos_amount] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_AMOUNT); } if (StringUtils.isBlank(cardIdStr)) { - String errMessage = "request params[card_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.CARD_ID); } if (StringUtils.isBlank(cardSpendIdStr)) { - String errMessage = "request params[card_spend_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.CARD_SPEND_ID); } Long merchantId, buUserId, posOrderId, cardId, cardSpendId; @@ -1458,25 +1363,9 @@ public class PosServiceImpl implements PosService { throw new MallinkException(ErrorCode.COUPON_ORDER_MERANT_IS_NULL.getCode(), errMessage); } // 2. check merchant - WxMerchant merchant = merchantService.getById(merchantId); - if (merchant == null) { - logger.error(ErrorCode.MERCHANT_INFO_NOT_FOUND.getMessage() + ": " + merchantIdStr); - throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); - } - if (merchant.getIsDel().equals(EnumDelStatus.DEL.getCode()) || merchant.getStatus().equals(EnumMerchantStatus.NOT_VALID.getCode())) { - logger.error(ErrorCode.MERCHANT_INFO_NOT_VALID.getMessage() + ": " + merchantIdStr); - throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_VALID); - } + WxMerchant merchant = checkAndGetMerchant(merchantId); // 3. check buUser - WxMerchantBUser buUser = merchantBUserService.getById(buUserId); - if (buUser == null) { - logger.error(ErrorCode.USER_IS_EMPTY.getMessage() + ": " + buUserIdStr); - throw new MallinkException(ErrorCode.USER_IS_EMPTY); - } - if (!buUser.getMerchantId().equals(merchantId)) { - logger.error(ErrorCode.VERIFY_BUSER_MERCHANT_NOT_BELONG.getMessage() + ": " + buUserIdStr); - throw new MallinkException(ErrorCode.VERIFY_BUSER_MERCHANT_NOT_BELONG); - } + WxMerchantBUser buUser = checkAndGetMerchantUser(buUserId, merchantId); WxCouponOrder couponOrder = couponOrderService.getById(cardId); if(couponOrder == null) { @@ -1533,9 +1422,7 @@ public class PosServiceImpl implements PosService { String cardSpendIdStr = params.get(WxPayConstant.CARD_SPEND_ID); // 消费卡花费ID if (StringUtils.isBlank(tenantId)) { - String errMessage = "request params[tenant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.TENANT_ID); } PosMallConfig config = posMallConfigService.getByTenantId(tenantId); if (config == null) { @@ -1547,29 +1434,22 @@ public class PosServiceImpl implements PosService { throw new MallinkException(ErrorCode.POS_CONFIG_MEM_COUPON_DISABLE); } if (StringUtils.isBlank(merchantIdStr)) { - String errMessage = "request params[merchant_id] error."; - logger.error(errMessage); - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.MERCHANT_ID); } if (StringUtils.isBlank(buUserIdStr)) { - String errMessage = "request params[bu_user_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.BUSER_ID); } if (StringUtils.isBlank(posOrderIdStr)) { - String errMessage = "request params[pos_order_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_ORDER_ID); } if (StringUtils.isBlank(posAmountStr)) { - String errMessage = "request params[pos_amount] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.POS_AMOUNT); } if (StringUtils.isBlank(cardIdStr)) { - String errMessage = "request params[card_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.CARD_ID); } if (StringUtils.isBlank(cardSpendIdStr)) { - String errMessage = "request params[card_spend_id] error."; - throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), errMessage); + errParam(WxPayConstant.CARD_SPEND_ID); } Long merchantId, buUserId, posOrderId, cardId, cardSpendId; @@ -1608,15 +1488,7 @@ public class PosServiceImpl implements PosService { throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_VALID); } // 3. check buUser - WxMerchantBUser buUser = merchantBUserService.getById(buUserId); - if (buUser == null) { - logger.error(ErrorCode.USER_IS_EMPTY.getMessage() + ": " + buUserIdStr); - throw new MallinkException(ErrorCode.USER_IS_EMPTY); - } - if (!buUser.getMerchantId().equals(merchantId)) { - logger.error(ErrorCode.VERIFY_BUSER_MERCHANT_NOT_BELONG.getMessage() + ": " + buUserIdStr); - throw new MallinkException(ErrorCode.VERIFY_BUSER_MERCHANT_NOT_BELONG); - } + WxMerchantBUser buUser = checkAndGetMerchantUser(buUserId, merchantId); WxCouponOrder couponOrder = couponOrderService.getById(cardId); if(couponOrder == null) { @@ -1652,4 +1524,197 @@ public class PosServiceImpl implements PosService { return retMap; } + + @Override + @Transactional(rollbackFor = Exception.class) + public Map posOrderSync(Map params) throws MallinkException { + Map retMap = new HashMap<>(); + + String tenantId = params.get(WxPayConstant.NEU_TENANT_ID); // 租户ID + String merchantIdStr = params.get(WxPayConstant.NEU_MERCHANT_ID); // 商户ID + String buUserIdStr = params.get(WxPayConstant.NEU_BU_USER_ID); // POS操作员ID + String cuUserIdStr = params.get(WxPayConstant.NEU_MEM_ID); // 富茂系统会员ID + String posOrderIdStr = params.get(WxPayConstant.NEU_ORDER_ID); // POS订单ID + String posOrderTimeStr = params.get(WxPayConstant.NEU_ORDER_TIME); // POS订单时间 + String posAmountStr = params.get(WxPayConstant.NEU_ORDER_AMOUNT); // POS订单总额 + String posStatusStr = params.get(WxPayConstant.NEU_ORDER_STATUS); // 订单状态: 0有效,1取消,根据订单状态处理优惠券;有效:优惠券从预核销处理为核销; + + // 1. check params + if (StringUtils.isBlank(tenantId)) { + errParam(WxPayConstant.NEU_TENANT_ID); + } + PosMallConfig config = posMallConfigService.getByTenantId(tenantId); + if (config == null) { + logger.error(ErrorCode.POS_CONFIG_NOT_FOUND.getMessage()); + throw new MallinkException(ErrorCode.POS_CONFIG_NOT_FOUND); + } + if (StringUtils.isBlank(merchantIdStr)) { + errParam(WxPayConstant.NEU_MERCHANT_ID); + } + if (StringUtils.isBlank(buUserIdStr)) { + errParam(WxPayConstant.NEU_BU_USER_ID); + } + if (StringUtils.isBlank(cuUserIdStr)) { + errParam(WxPayConstant.NEU_MEM_ID); + } + if (StringUtils.isBlank(posOrderIdStr)) { + errParam(WxPayConstant.NEU_ORDER_ID); + } + if (StringUtils.isBlank(posOrderTimeStr)) { + errParam(WxPayConstant.NEU_ORDER_TIME); + } + if (StringUtils.isBlank(posAmountStr)) { + errParam(WxPayConstant.NEU_ORDER_AMOUNT); + } + if (StringUtils.isBlank(posStatusStr)) { + errParam(WxPayConstant.NEU_ORDER_STATUS); + } + Long merchantId, buUserId, posOrderId, cardId; + Integer posAmount = 0; + try { + merchantId = Long.valueOf(merchantIdStr); + buUserId = Long.valueOf(buUserIdStr); + posOrderId = Long.valueOf(posOrderIdStr); + posAmount = Integer.valueOf(posAmountStr); + } catch (NumberFormatException e) { + logger.error(e.getMessage()); + throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), e.getMessage()); + } + // 2. check merchant + WxMerchant merchant = checkAndGetMerchant(merchantId); + // 3. check buUser + WxMerchantBUser merchantBUser = checkAndGetMerchantUser(merchantId, buUserId); + if (posStatusStr.equalsIgnoreCase("0")) { + // TODO + // add to wx_order + String payDetail = params.get(WxPayConstant.NEU_PAY_DETAIL); + JSONObject payDetailObj = JSON.parseObject(payDetail); + JSONArray payDetailList = payDetailObj.getJSONArray(WxPayConstant.NEU_PAY_DETAIL_LIST); + for (int i=0;i Date: Tue, 27 Aug 2019 09:47:10 +0800 Subject: [PATCH 5/9] =?UTF-8?q?[=E8=8F=9C=E5=8D=95][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E5=8D=87=E7=BA=A7,=E8=BF=81=E7=A7=BB?= =?UTF-8?q?=E8=B4=A6=E6=88=B7=E7=AE=A1=E7=90=86=E5=AD=90=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E5=88=B0=E7=B3=BB=E7=BB=9F=E8=AE=BE=E7=BD=AE=EF=BC=8C=E5=90=88?= =?UTF-8?q?=E5=90=8C=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/domain/po/MallPermission.java | 3 + .../domain/po/MallRolePermission.java | 6 +- .../com/iformall/mapper/MallMenuMapper.java | 98 ++++++++ .../controller/sys/SysMenuController.java | 236 +++++++++++++++++- 4 files changed, 338 insertions(+), 5 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/mapper/MallMenuMapper.java diff --git a/mallinkService/src/main/java/com/iformall/domain/po/MallPermission.java b/mallinkService/src/main/java/com/iformall/domain/po/MallPermission.java index 09a35057d..7c44ba575 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/MallPermission.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/MallPermission.java @@ -28,6 +28,9 @@ public class MallPermission extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="父编号ID,一级菜单为0",name="parentId") private Long parentId; @Transient + @io.swagger.annotations.ApiModelProperty(value="原父编号ID",name="origParentId") + private Long origParentId; + @Transient @io.swagger.annotations.ApiModelProperty(value="父菜单",name="parentName") private String parentName; @io.swagger.annotations.ApiModelProperty(value="是否可用 Y/N",name="permission") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/MallRolePermission.java b/mallinkService/src/main/java/com/iformall/domain/po/MallRolePermission.java index 9a6af2b22..dc120e6ce 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/MallRolePermission.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/MallRolePermission.java @@ -18,7 +18,11 @@ public class MallRolePermission extends BaseEntity { protected Long id; @Transient - protected List ids; + protected List ids; + + @Transient + protected List permissionIds; + @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; diff --git a/mallinkService/src/main/java/com/iformall/mapper/MallMenuMapper.java b/mallinkService/src/main/java/com/iformall/mapper/MallMenuMapper.java new file mode 100644 index 000000000..d139f6d8a --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/MallMenuMapper.java @@ -0,0 +1,98 @@ +package com.iformall.mapper; + + +import com.iformall.domain.po.MallPermission; +import com.iformall.domain.po.MallRolePermission; +import com.iformall.domain.po.MallSaleType; +import org.apache.ibatis.annotations.DeleteProvider; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.SelectProvider; +import org.apache.ibatis.annotations.UpdateProvider; + +import java.util.List; + +@Mapper +public interface MallMenuMapper { + @UpdateProvider(type = MallPermissionDaoProvider.class, method = "updateMallPermission") + public void updateMallPermission(MallPermission mallPermission); + + @UpdateProvider(type = MallPermissionDaoProvider.class, method = "updatePermissionByParentId") + public void updatePermissionByParentId(MallPermission mallPermission); + + @DeleteProvider(type = MallPermissionDaoProvider.class, method = "deletePermissionRole") + public void deletePermissionRole(MallRolePermission mallRolePermission); + + @UpdateProvider(type = MallPermissionDaoProvider.class, method = "updateMallSaleType") + public void updateMallSaleType(MallSaleType mallSaleType); + + @SelectProvider(type = MallPermissionDaoProvider.class, method = "getMallRolePermissions") + public List getMallRolePermissions(MallRolePermission mallRolePermission); + + class MallPermissionDaoProvider { + public String updateMallPermission(MallPermission mallPermission) { + String sql = "UPDATE mall_permission "; + if (mallPermission.getName() != null) { + sql += " SET `name` = #{name}"; + } + if (mallPermission.getId() != null) { + sql += " where id = #{id}"; + } + return sql; + } + public String updatePermissionByParentId(MallPermission mallPermission) { + StringBuilder sb = new StringBuilder(); + sb.append("UPDATE mall_permission "); + if (mallPermission.getParentId() != null) { + sb.append(" SET `parent_id` = #{parentId} "); + } + if (mallPermission.getOrigParentId() != null) { + sb.append(" WHERE `parent_id` = #{origParentId}"); + } + if (mallPermission.getIds() != null) { + List ids = mallPermission.getIds(); + sb.append(" WHERE `id` in ("); + for(int i=0;i系统 + moveAccountToSys(); + // 2. 合同添加商铺+多经点位 + addMenusForContract(); + // 3. 账单 + // 1. 商户账单->账单催缴 + // 2. 商户账单 + + + return new ResultData(); + } + return new ResultData(ErrorCode.USER_NO_PERMISSION); + } + + + + private void moveAccountToSys() { + Long menuId_XiTong = 50L; + Long menuId_Account = 7L; + // 1. 修改菜单名 + mallMenuMapper.updateMallPermission(new MallPermission() {{ + setName("系统设置"); + setId(menuId_XiTong); + }}); + // 2. 迁移->系统设置 + MallPermission accountPermission = mallPermissionService.getById(menuId_Account); + mallMenuMapper.updatePermissionByParentId(new MallPermission() {{ + setParentId(menuId_XiTong); + setOrigParentId(menuId_Account); + }}); + // 3. 角色是否选中系统设置 + List mallRolePermissions = mallRolePermissionService.getList(new MallRolePermission(){{ + setPermissionId(menuId_Account); + }}); + for(MallRolePermission mallRolePermission: mallRolePermissions) { + List mallRolePermissionList = mallRolePermissionService.getList(new MallRolePermission(){{ + setTenantId(mallRolePermission.getTenantId()); + setRoleId(mallRolePermission.getRoleId()); + setPermissionId(menuId_XiTong); + }}); + if (mallRolePermissionList.size() <= 0) { + // update 7L->50L + try { + mallRolePermissionService.saveOrUpdate(new MallRolePermission(){{ + setTenantId(mallRolePermission.getTenantId()); + setId(mallRolePermission.getId()); + setPermissionId(menuId_XiTong); + setRoleId(mallRolePermission.getRoleId()); + }}); + } catch (Exception e) { + logger.error(e.getMessage()); + } + } + } + // 4. 删除permission/role + mallMenuMapper.deletePermissionRole(new MallRolePermission(){{ + setPermissionId(menuId_Account); + }}); + // 5. 删除permission + mallPermissionService.deleteById(menuId_Account); + // 6. sale_type + mallMenuMapper.updateMallSaleType(new MallSaleType(){{ + setId(1L); + setMenus( + "[1,2,3,4,5,6,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]" + ); + }}); + mallMenuMapper.updateMallSaleType(new MallSaleType(){{ + setId(2L); + setMenus( + "[1,2,3,4,5,6,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]" + ); + }}); + mallMenuMapper.updateMallSaleType(new MallSaleType(){{ + setId(3L); + setMenus( + "[2,4,5,6,10,50,201,202,205,211,212,221,222,251,409,410,411,501,502,503,504,505,506,507,508,511,512,513,521,522,523,531,532,533,591,592,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932]" + ); + }}); + + } + + private void addMenusForContract() { + + Long menuId_Shop = 299L; + Long menuId_Duojing = 300L; + // 1. add new folder + mallPermissionService.saveOrUpdate(new MallPermission(){{ + setId(menuId_Shop); + setName("店铺"); + setParentId(3L); + setAvailable("Y"); + setResourceType(0); + setIcon("icon-iconshangpuguanli"); + setSort(menuId_Shop.intValue()); + }}); + mallPermissionService.saveOrUpdate(new MallPermission(){{ + setId(menuId_Duojing); + setName("多经点位"); + setParentId(3L); + setAvailable("Y"); + setResourceType(0); + setIcon("icon-shanghuguanli"); + setSort(menuId_Duojing.intValue()); + }}); + // 2. move + // 301, 302, 305 + mallMenuMapper.updatePermissionByParentId(new MallPermission() {{ + List list = new ArrayList(); + list.add(301L); + list.add(302L); + list.add(305L); + setParentId(menuId_Shop); + setIds(list); + }}); + // 303, 304, 306 + mallMenuMapper.updatePermissionByParentId(new MallPermission() {{ + List list = new ArrayList(); + list.add(303L); + list.add(304L); + list.add(306L); + setParentId(menuId_Duojing); + setIds(list); + }}); + mallMenuMapper.updateMallPermission(new MallPermission() {{ + setName("租金合同"); + setId(301L); + }}); + mallMenuMapper.updateMallPermission(new MallPermission() {{ + setName("物业合同"); + setId(302L); + }}); + mallMenuMapper.updateMallPermission(new MallPermission() {{ + setName("租金+物业合同"); + setId(305L); + }}); + mallMenuMapper.updateMallPermission(new MallPermission() {{ + setName("租金合同"); + setId(303L); + }}); + mallMenuMapper.updateMallPermission(new MallPermission() {{ + setName("物业合同"); + setId(304L); + }}); + mallMenuMapper.updateMallPermission(new MallPermission() {{ + setName("租金+物业合同"); + setId(306L); + }}); + // 3. 角色是否选中商铺 + List mallRolePermissions = mallMenuMapper.getMallRolePermissions(new MallRolePermission(){{ + List list = new ArrayList(); + list.add(301L); + list.add(302L); + list.add(305L); + setPermissionIds(list); + }}); + for(MallRolePermission mallRolePermission: mallRolePermissions) { + List mallRolePermissionList = mallRolePermissionService.getList(new MallRolePermission(){{ + setTenantId(mallRolePermission.getTenantId()); + setRoleId(mallRolePermission.getRoleId()); + setPermissionId(menuId_Shop); + }}); + if (mallRolePermissionList.size() <= 0) { + try { + mallRolePermissionService.saveOrUpdate(new MallRolePermission(){{ + setTenantId(mallRolePermission.getTenantId()); + setPermissionId(menuId_Shop); + setRoleId(mallRolePermission.getRoleId()); + }}); + } catch (Exception e) { + logger.error(e.getMessage()); + } + } + } + // 4. 角色是否选中多经点位 + mallRolePermissions = mallRolePermissionService.getList(new MallRolePermission(){{ + List list = new ArrayList(); + list.add(303L); + list.add(304L); + list.add(306L); + setPermissionIds(list); + }}); + for(MallRolePermission mallRolePermission: mallRolePermissions) { + List mallRolePermissionList = mallRolePermissionService.getList(new MallRolePermission(){{ + setTenantId(mallRolePermission.getTenantId()); + setRoleId(mallRolePermission.getRoleId()); + setPermissionId(menuId_Duojing); + }}); + if (mallRolePermissionList.size() <= 0) { + try { + mallRolePermissionService.saveOrUpdate(new MallRolePermission(){{ + setTenantId(mallRolePermission.getTenantId()); + setPermissionId(menuId_Duojing); + setRoleId(mallRolePermission.getRoleId()); + }}); + } catch (Exception e) { + logger.error(e.getMessage()); + } + } + } + // 5. sale_type + mallMenuMapper.updateMallSaleType(new MallSaleType(){{ + setId(1L); + setMenus( + "[1,2,3,4,5,6,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]" + ); + }}); + mallMenuMapper.updateMallSaleType(new MallSaleType(){{ + setId(2L); + setMenus( + "[1,2,3,4,5,6,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]" + ); + }}); + mallMenuMapper.updateMallSaleType(new MallSaleType(){{ + setId(3L); + setMenus( + "[2,4,5,6,10,50,201,202,205,211,212,221,222,251,409,410,411,501,502,503,504,505,506,507,508,511,512,513,521,522,523,531,532,533,591,592,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932]" + ); + }}); + } + @Autowired private RequestMappingHandlerMapping requestMappingHandlerMapping; From 2356edfca79133685ea11c1fb14c8da8c9c33561 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 27 Aug 2019 10:18:20 +0800 Subject: [PATCH 6/9] =?UTF-8?q?[=E8=8F=9C=E5=8D=95][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=90=88=E5=90=8C=E7=AE=A1=E7=90=86=E8=8F=9C=E5=8D=95=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sys/SysMenuController.java | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java index 5c451da49..b7bd5847a 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java @@ -10,6 +10,7 @@ import com.iformall.enums.EnumMenuType; import com.iformall.enums.EnumPermissionType; import com.iformall.exception.MallinkException; import com.iformall.mapper.MallMenuMapper; +import com.iformall.mapper.MallPermissionMapper; import com.iformall.service.MallPermissionService; import com.iformall.service.MallRolePermissionService; import com.iformall.service.MallRoleService; @@ -58,6 +59,9 @@ public class SysMenuController extends BaseController { @Autowired private MallMenuMapper mallMenuMapper; + @Autowired + private MallPermissionMapper mallPermissionMapper; + @ApiOperation("导航菜单") @GetMapping("/nav") public ResultData nav(){ @@ -299,24 +303,28 @@ public class SysMenuController extends BaseController { Long menuId_Shop = 299L; Long menuId_Duojing = 300L; // 1. add new folder - mallPermissionService.saveOrUpdate(new MallPermission(){{ - setId(menuId_Shop); - setName("店铺"); - setParentId(3L); - setAvailable("Y"); - setResourceType(0); - setIcon("icon-iconshangpuguanli"); - setSort(menuId_Shop.intValue()); - }}); - mallPermissionService.saveOrUpdate(new MallPermission(){{ - setId(menuId_Duojing); - setName("多经点位"); - setParentId(3L); - setAvailable("Y"); - setResourceType(0); - setIcon("icon-shanghuguanli"); - setSort(menuId_Duojing.intValue()); - }}); + try { + mallPermissionMapper.insertSelective(new MallPermission() {{ + setId(menuId_Shop); + setName("店铺"); + setParentId(3L); + setAvailable("Y"); + setResourceType(0); + setIcon("icon-iconshangpuguanli"); + setSort(menuId_Shop.intValue()); + }}); + mallPermissionMapper.insertSelective(new MallPermission() {{ + setId(menuId_Duojing); + setName("多经点位"); + setParentId(3L); + setAvailable("Y"); + setResourceType(0); + setIcon("icon-shanghuguanli"); + setSort(menuId_Duojing.intValue()); + }}); + } catch (Exception e) { + logger.error(e.getMessage()); + } // 2. move // 301, 302, 305 mallMenuMapper.updatePermissionByParentId(new MallPermission() {{ From 1b38c90628430978a86df66123d7b0a6647515c1 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 27 Aug 2019 10:54:33 +0800 Subject: [PATCH 7/9] =?UTF-8?q?[=E8=8F=9C=E5=8D=95][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sys/SysMenuController.java | 143 +++++++++++++++++- 1 file changed, 141 insertions(+), 2 deletions(-) diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java index b7bd5847a..2f8f0063b 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java @@ -221,8 +221,8 @@ public class SysMenuController extends BaseController { // 2. 合同添加商铺+多经点位 addMenusForContract(); // 3. 账单 - // 1. 商户账单->账单催缴 - // 2. 商户账单 + addMenusForBills(); + return new ResultData(); @@ -311,6 +311,7 @@ public class SysMenuController extends BaseController { setAvailable("Y"); setResourceType(0); setIcon("icon-iconshangpuguanli"); + setVersionType(0); setSort(menuId_Shop.intValue()); }}); mallPermissionMapper.insertSelective(new MallPermission() {{ @@ -320,6 +321,7 @@ public class SysMenuController extends BaseController { setAvailable("Y"); setResourceType(0); setIcon("icon-shanghuguanli"); + setVersionType(0); setSort(menuId_Duojing.intValue()); }}); } catch (Exception e) { @@ -441,6 +443,143 @@ public class SysMenuController extends BaseController { }}); } + private void addMenusForBills() { + // 1. 账单列表隐藏 + mallPermissionService.saveOrUpdate(new MallPermission(){{ + setId(412L); + setAvailable("N"); + }}); + // 2. 新增新的账单列表folder + Long menuId_Zhangdanliebiao = 415L; + try { + mallPermissionMapper.insertSelective(new MallPermission() {{ + setId(menuId_Zhangdanliebiao); + setName("账单列表"); + setParentId(4L); + setAvailable("Y"); + setResourceType(0); + setIcon("icon-zhangdan5"); + setVersionType(0); + setSort(menuId_Zhangdanliebiao.intValue()); + }}); + } catch (Exception e) { + logger.error(e.getMessage()); + } + // 3. 迁移到账单列表下 + mallMenuMapper.updatePermissionByParentId(new MallPermission() {{ + List list = new ArrayList(); + list.add(402L); + list.add(403L); + list.add(404L); + list.add(405L); + list.add(406L); + list.add(407L); + list.add(408L); + setParentId(menuId_Zhangdanliebiao); + setIds(list); + }}); + // 4. 角色是否选中账单列表 + List mallRolePermissions = mallMenuMapper.getMallRolePermissions(new MallRolePermission(){{ + List list = new ArrayList(); + list.add(402L); + list.add(403L); + list.add(404L); + list.add(405L); + list.add(406L); + list.add(407L); + list.add(408L); + setPermissionIds(list); + }}); + for(MallRolePermission mallRolePermission: mallRolePermissions) { + List mallRolePermissionList = mallRolePermissionService.getList(new MallRolePermission(){{ + setTenantId(mallRolePermission.getTenantId()); + setRoleId(mallRolePermission.getRoleId()); + setPermissionId(menuId_Zhangdanliebiao); + }}); + if (mallRolePermissionList.size() <= 0) { + try { + mallRolePermissionService.saveOrUpdate(new MallRolePermission(){{ + setTenantId(mallRolePermission.getTenantId()); + setPermissionId(menuId_Zhangdanliebiao); + setRoleId(mallRolePermission.getRoleId()); + }}); + } catch (Exception e) { + logger.error(e.getMessage()); + } + } + } + // 5. 新增对账管理 + Long menuId_ZhangdanMan = 416L; + try { + mallPermissionMapper.insertSelective(new MallPermission() {{ + setId(menuId_ZhangdanMan); + setName("对账管理"); + setParentId(4L); + setAvailable("Y"); + setResourceType(0); + setIcon("icon-zhangdan11"); + setVersionType(0); + setSort(menuId_ZhangdanMan.intValue()); + }}); + } catch (Exception e) { + logger.error(e.getMessage()); + } + // 6. 迁移到对账管理下 + mallMenuMapper.updatePermissionByParentId(new MallPermission() {{ + List list = new ArrayList(); + list.add(409L); + list.add(410L); + list.add(411L); + setParentId(menuId_ZhangdanMan); + setIds(list); + }}); + // 7. 角色是否选中对账管理 + mallRolePermissions = mallMenuMapper.getMallRolePermissions(new MallRolePermission(){{ + List list = new ArrayList(); + list.add(409L); + list.add(410L); + list.add(411L); + setPermissionIds(list); + }}); + for(MallRolePermission mallRolePermission: mallRolePermissions) { + List mallRolePermissionList = mallRolePermissionService.getList(new MallRolePermission(){{ + setTenantId(mallRolePermission.getTenantId()); + setRoleId(mallRolePermission.getRoleId()); + setPermissionId(menuId_Zhangdanliebiao); + }}); + if (mallRolePermissionList.size() <= 0) { + try { + mallRolePermissionService.saveOrUpdate(new MallRolePermission(){{ + setTenantId(mallRolePermission.getTenantId()); + setPermissionId(menuId_Zhangdanliebiao); + setRoleId(mallRolePermission.getRoleId()); + }}); + } catch (Exception e) { + logger.error(e.getMessage()); + } + } + } + // 8. sale_type + mallMenuMapper.updateMallSaleType(new MallSaleType(){{ + setId(1L); + setMenus( + "[1,2,3,4,5,6,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]" + ); + }}); + mallMenuMapper.updateMallSaleType(new MallSaleType(){{ + setId(2L); + setMenus( + "[1,2,3,4,5,6,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]" + ); + }}); + mallMenuMapper.updateMallSaleType(new MallSaleType(){{ + setId(3L); + setMenus( + "[2,4,5,6,10,50,201,202,205,211,212,221,222,251,409,410,411,416,501,502,503,504,505,506,507,508,511,512,513,521,522,523,531,532,533,591,592,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932]" + ); + }}); + } + @Autowired private RequestMappingHandlerMapping requestMappingHandlerMapping; From c385eaedd8f3eba62cbbd599e14230f410c8ccef Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 27 Aug 2019 11:06:38 +0800 Subject: [PATCH 8/9] =?UTF-8?q?[=E8=8F=9C=E5=8D=95][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E8=B4=A6=E5=8D=95=E9=83=A8=E5=88=86=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sys/SysMenuController.java | 64 +++++++++++-------- 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java index 2f8f0063b..a59aa2ea5 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java @@ -449,7 +449,31 @@ public class SysMenuController extends BaseController { setId(412L); setAvailable("N"); }}); - // 2. 新增新的账单列表folder + addNewMunuFolder_ZhangdanList(); + addNewMenuFolder_Duizhang(); + // 8. sale_type + mallMenuMapper.updateMallSaleType(new MallSaleType(){{ + setId(1L); + setMenus( + "[1,2,3,4,5,6,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]" + ); + }}); + mallMenuMapper.updateMallSaleType(new MallSaleType(){{ + setId(2L); + setMenus( + "[1,2,3,4,5,6,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]" + ); + }}); + mallMenuMapper.updateMallSaleType(new MallSaleType(){{ + setId(3L); + setMenus( + "[2,4,5,6,10,50,201,202,205,211,212,221,222,251,409,410,411,416,501,502,503,504,505,506,507,508,511,512,513,521,522,523,531,532,533,591,592,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932]" + ); + }}); + } + + private void addNewMunuFolder_ZhangdanList() { + // 1. 新增新的账单列表folder Long menuId_Zhangdanliebiao = 415L; try { mallPermissionMapper.insertSelective(new MallPermission() {{ @@ -465,7 +489,7 @@ public class SysMenuController extends BaseController { } catch (Exception e) { logger.error(e.getMessage()); } - // 3. 迁移到账单列表下 + // 2. 迁移到账单列表下 mallMenuMapper.updatePermissionByParentId(new MallPermission() {{ List list = new ArrayList(); list.add(402L); @@ -478,7 +502,7 @@ public class SysMenuController extends BaseController { setParentId(menuId_Zhangdanliebiao); setIds(list); }}); - // 4. 角色是否选中账单列表 + // 3. 角色是否选中账单列表 List mallRolePermissions = mallMenuMapper.getMallRolePermissions(new MallRolePermission(){{ List list = new ArrayList(); list.add(402L); @@ -508,7 +532,10 @@ public class SysMenuController extends BaseController { } } } - // 5. 新增对账管理 + } + + private void addNewMenuFolder_Duizhang() { + // 1. 新增对账管理 Long menuId_ZhangdanMan = 416L; try { mallPermissionMapper.insertSelective(new MallPermission() {{ @@ -524,7 +551,7 @@ public class SysMenuController extends BaseController { } catch (Exception e) { logger.error(e.getMessage()); } - // 6. 迁移到对账管理下 + // 2. 迁移到对账管理下 mallMenuMapper.updatePermissionByParentId(new MallPermission() {{ List list = new ArrayList(); list.add(409L); @@ -533,8 +560,8 @@ public class SysMenuController extends BaseController { setParentId(menuId_ZhangdanMan); setIds(list); }}); - // 7. 角色是否选中对账管理 - mallRolePermissions = mallMenuMapper.getMallRolePermissions(new MallRolePermission(){{ + // 3. 角色是否选中对账管理 + List mallRolePermissions = mallMenuMapper.getMallRolePermissions(new MallRolePermission(){{ List list = new ArrayList(); list.add(409L); list.add(410L); @@ -545,13 +572,13 @@ public class SysMenuController extends BaseController { List mallRolePermissionList = mallRolePermissionService.getList(new MallRolePermission(){{ setTenantId(mallRolePermission.getTenantId()); setRoleId(mallRolePermission.getRoleId()); - setPermissionId(menuId_Zhangdanliebiao); + setPermissionId(menuId_ZhangdanMan); }}); if (mallRolePermissionList.size() <= 0) { try { mallRolePermissionService.saveOrUpdate(new MallRolePermission(){{ setTenantId(mallRolePermission.getTenantId()); - setPermissionId(menuId_Zhangdanliebiao); + setPermissionId(menuId_ZhangdanMan); setRoleId(mallRolePermission.getRoleId()); }}); } catch (Exception e) { @@ -559,25 +586,6 @@ public class SysMenuController extends BaseController { } } } - // 8. sale_type - mallMenuMapper.updateMallSaleType(new MallSaleType(){{ - setId(1L); - setMenus( - "[1,2,3,4,5,6,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]" - ); - }}); - mallMenuMapper.updateMallSaleType(new MallSaleType(){{ - setId(2L); - setMenus( - "[1,2,3,4,5,6,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]" - ); - }}); - mallMenuMapper.updateMallSaleType(new MallSaleType(){{ - setId(3L); - setMenus( - "[2,4,5,6,10,50,201,202,205,211,212,221,222,251,409,410,411,416,501,502,503,504,505,506,507,508,511,512,513,521,522,523,531,532,533,591,592,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932]" - ); - }}); } @Autowired From 943d9a9fda6fb612c87c06b8586d374ba7a76240 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Tue, 27 Aug 2019 12:25:40 +0800 Subject: [PATCH 9/9] =?UTF-8?q?[=E7=94=A8=E6=88=B7=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90][=E4=BF=AE=E6=94=B9][=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WxPropertyContractController.java | 9 +++-- .../contract/WxRentContractController.java | 18 ++++++---- .../WxRentPropertyContractController.java | 4 ++- .../WxMerchantTradeDailyController.java | 2 ++ .../com/iformall/log/UserDataRuleAspect.java | 8 +++-- .../iformall/enums/EnumUserDataRuleType.java | 36 +++++++++++++++++++ .../impl/WxUserDataRuleServiceImpl.java | 10 ++++-- .../mapper/WxMerchantTradeDailyMapper.xml | 18 +++++++++- .../mapper/WxPropertyContractMapper.xml | 14 ++++++++ .../resources/mapper/WxRentContractMapper.xml | 14 ++++++++ 10 files changed, 117 insertions(+), 16 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumUserDataRuleType.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java index 3e9f6a5df..75e6cadca 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java @@ -1,10 +1,14 @@ package com.iformall.controller.contract; import com.iformall.annotation.SystemControllerLog; +import com.iformall.annotation.UserDataRuleAnnotation; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; -import com.iformall.domain.po.*; +import com.iformall.domain.po.MallUserInfo; +import com.iformall.domain.po.WxBillProperty; +import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.po.WxPropertyContract; import com.iformall.enums.EnumIsPreview; import com.iformall.enums.EnumRentStartType; import com.iformall.exception.MallinkException; @@ -38,7 +42,8 @@ public class WxPropertyContractController extends BaseController { private Logger logger = LoggerFactory.getLogger(WxPropertyContractController.class); - @GetMapping("list") + @UserDataRuleAnnotation("property_contract_list") + @GetMapping("/list") @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java index be88a5490..74650727f 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -1,22 +1,23 @@ package com.iformall.controller.contract; import com.iformall.annotation.SystemControllerLog; +import com.iformall.annotation.UserDataRuleAnnotation; import com.iformall.common.ErrorCode; -import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; -import com.iformall.enums.EnumBillAction; import com.iformall.enums.EnumFromType; import com.iformall.enums.EnumIsPreview; import com.iformall.enums.EnumRentStartType; import com.iformall.exception.MallinkException; -import com.iformall.mapper.WxBillActionMapper; import com.iformall.mapper.WxBillPropertyMapper; import com.iformall.mapper.WxBillRentMapper; import com.iformall.mapper.WxRentContractMapper; -import com.iformall.service.*; +import com.iformall.service.WxBillRentService; +import com.iformall.service.WxMerchantService; +import com.iformall.service.WxPayAccountBillService; +import com.iformall.service.WxRentContractService; import com.iformall.utils.DateUtils; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -28,9 +29,11 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @author gongbiao @@ -88,7 +91,8 @@ public class WxRentContractController extends BaseController { return new ResultData(map); } - @GetMapping("list") + @UserDataRuleAnnotation("rent_contract_list") + @GetMapping("/list") @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentPropertyContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentPropertyContractController.java index ab9f2b1fb..e0094fd36 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentPropertyContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentPropertyContractController.java @@ -2,6 +2,7 @@ package com.iformall.controller.contract; import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; +import com.iformall.annotation.UserDataRuleAnnotation; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.MallUserInfo; @@ -27,7 +28,8 @@ public class WxRentPropertyContractController extends BaseController { @Autowired private WxRentPropertyContractService wxRentPropertyContractService; - @GetMapping("list") + @UserDataRuleAnnotation("rent_property_contract_list") + @GetMapping("/list") @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxMerchantTradeDailyController.java b/mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxMerchantTradeDailyController.java index 69318c152..c3474daaa 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxMerchantTradeDailyController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxMerchantTradeDailyController.java @@ -2,6 +2,7 @@ package com.iformall.controller.datatower; import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; +import com.iformall.annotation.UserDataRuleAnnotation; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; @@ -31,6 +32,7 @@ public class WxMerchantTradeDailyController extends BaseController { private WxMerchantTradeDailyService wxMerchantTradeDailyService; + @UserDataRuleAnnotation("merchant_trade") @ApiOperation("获得解单列表") @GetMapping("/list") @ApiImplicitParams({ diff --git a/mallinkAdmin/src/main/java/com/iformall/log/UserDataRuleAspect.java b/mallinkAdmin/src/main/java/com/iformall/log/UserDataRuleAspect.java index 2f4db7cd2..fe75bcfb3 100644 --- a/mallinkAdmin/src/main/java/com/iformall/log/UserDataRuleAspect.java +++ b/mallinkAdmin/src/main/java/com/iformall/log/UserDataRuleAspect.java @@ -93,9 +93,11 @@ public class UserDataRuleAspect { if (targetSet.contains(value)) { //得到方法的参数 Object[] args = joinPoint.getArgs(); - BaseEntity baseEntity = (BaseEntity) args[0]; - baseEntity.setFloorForRule(buildingFloor); - baseEntity.setBusinessForRule(businessForRule); + if (args[0] instanceof BaseEntity) { + BaseEntity baseEntity = (BaseEntity) args[0]; + baseEntity.setFloorForRule(buildingFloor); + baseEntity.setBusinessForRule(businessForRule); + } } } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumUserDataRuleType.java b/mallinkService/src/main/java/com/iformall/enums/EnumUserDataRuleType.java new file mode 100644 index 000000000..6a611601d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumUserDataRuleType.java @@ -0,0 +1,36 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumUserDataRuleType { + + ALL(1, "系统全部数据"), + FLOOR_BUSINESS(2, "楼层及业态数据"),; + + public static EnumUserDataRuleType getEnum(Integer code) { + for (EnumUserDataRuleType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumUserDataRuleType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxUserDataRuleServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxUserDataRuleServiceImpl.java index 6cfbc9e26..3aca66254 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxUserDataRuleServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxUserDataRuleServiceImpl.java @@ -2,6 +2,7 @@ package com.iformall.service.impl; import com.iformall.common.IdWorker; import com.iformall.domain.po.WxUserDataRule; +import com.iformall.enums.EnumUserDataRuleType; import com.iformall.mapper.WxUserDataRuleMapper; import com.iformall.service.WxUserDataRuleService; import org.slf4j.Logger; @@ -31,8 +32,13 @@ public class WxUserDataRuleServiceImpl implements WxUserDataRuleService { record.setUpdateTime(date); wxUserDataRuleMapper.insertSelective(record); } else { - record.setUpdateTime(date); - wxUserDataRuleMapper.updateByPrimaryKeySelective(record); + if (EnumUserDataRuleType.ALL.getCode().equals(record.getType())) { + wxUserDataRuleMapper.deleteByPrimaryKey(record.getId()); + } else { + record.setUpdateTime(date); + wxUserDataRuleMapper.updateByPrimaryKeySelective(record); + } + } } diff --git a/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml index 7f1e667ed..157d7c007 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml @@ -63,6 +63,7 @@ #{idItem} + order by ${sortColumns} order by report_date desc @@ -142,7 +143,22 @@ and mtd.report_date >= date_format(#{startTime},'%Y-%m-%d') and mtd.report_date <= date_format(#{endTime},'%Y-%m-%d') - + + + and mtd.merchant_id in( + select ms.merchant_id from (select merchant_id,shop_id from wx_merchant_shop where is_del=0) ms + inner join wx_merchant m on ms.merchant_id = m.id + inner join wx_shop s on s.id=ms.shop_id + where m.tenant_id=#{tenantId} and s.is_del=0 + + and m.business_id in (${businessForRule}) + + + and s.`floor` in (${floorForRule}) + + ) + + order by ${sortColumns} diff --git a/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml b/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml index 48a91e3c4..17fa3c140 100644 --- a/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml @@ -143,6 +143,20 @@ and b.id = #{building} and f.id = #{floor} and `operation_type` = #{operationType} + + and rc.merchant_id in( + select ms.merchant_id from (select merchant_id,shop_id from wx_merchant_shop where is_del=0) ms + inner join wx_merchant m on ms.merchant_id = m.id + inner join wx_shop s on s.id=ms.shop_id + where m.tenant_id=#{tenantId} and s.is_del=0 + + and m.business_id in (${businessForRule}) + + + and s.`floor` in (${floorForRule}) + + ) + order by ${sortColumns} diff --git a/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml b/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml index d10c567d4..42321f244 100644 --- a/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml @@ -171,6 +171,20 @@ and b.id = #{building} and f.id = #{floor} and `operation_type` = #{operationType} + + and rc.merchant_id in( + select ms.merchant_id from (select merchant_id,shop_id from wx_merchant_shop where is_del=0) ms + inner join wx_merchant m on ms.merchant_id = m.id + inner join wx_shop s on s.id=ms.shop_id + where m.tenant_id=#{tenantId} and s.is_del=0 + + and m.business_id in (${businessForRule}) + + + and s.`floor` in (${floorForRule}) + + ) + order by ${sortColumns} order by rc.createtime desc,rc.id desc