From 52f4b4b93e09042c92d36d61fb121b1332bbfe6c Mon Sep 17 00:00:00 2001 From: gongbiao Date: Tue, 27 Aug 2019 10:57:57 +0800 Subject: [PATCH] =?UTF-8?q?[=E7=94=A8=E6=88=B7=E6=95=B0=E6=8D=AE=E6=9D=83?= =?UTF-8?q?=E9=99=90][=E4=BF=AE=E6=94=B9][=E7=9B=B8=E5=85=B3=E4=B8=9A?= =?UTF-8?q?=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} + + + + +