From 102d71aee82474027753bfa9bcc55a4cd3b46803 Mon Sep 17 00:00:00 2001 From: hanxueda Date: Tue, 9 Apr 2019 16:01:13 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E6=A0=B9=E6=8D=AE=E6=89=8B?= =?UTF-8?q?=E6=9C=BA=E5=8F=B7=E6=9F=A5=E8=AF=A2=E7=94=A8=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=8E=A5=E5=8F=A3=202.=E6=B7=BB=E5=8A=A0=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=BD=93=E5=89=8D=E7=A7=9F=E6=88=B7=E4=B8=8B=E5=95=86?= =?UTF-8?q?=E6=88=B7=E5=90=8D=E7=A7=B0=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=203.=E6=96=B0=E5=A2=9E=E5=AF=B9=E8=B1=A1=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WxCUserBasicInfoController.java | 15 ++ .../controller/WxMerchantController.java | 10 ++ mallinkService/pom.xml | 5 + .../domain/vo/WxMerchantSimpleVo.java | 16 ++ .../exception/BeanMappingException.java | 17 +++ .../iformall/service/WxMerchantService.java | 8 + .../service/impl/WxMerchantServiceImpl.java | 10 ++ .../java/com/iformall/utils/BeanMapping.java | 139 ++++++++++++++++++ 8 files changed, 220 insertions(+) create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantSimpleVo.java create mode 100644 mallinkService/src/main/java/com/iformall/exception/BeanMappingException.java create mode 100644 mallinkService/src/main/java/com/iformall/utils/BeanMapping.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java index f6598c944..38c7240b4 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java @@ -38,6 +38,7 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import static com.iformall.domain.po.WxCouponOrder.Field.CreateDate_DESC; +import static com.iformall.ueditor.define.AppInfo.info; @RestController @RequestMapping("wxCUserBasicInfo") @@ -452,4 +453,18 @@ public class WxCUserBasicInfoController extends BaseController { wxCUserBasicInfoService.exportCarPayData(record, request, response); } + + @ApiOperation("根据手机号查询接口") + @GetMapping("/findByPhone") + @ApiImplicitParam(name = "phone", value = "phone", dataType = "String", paramType = "query", required = true) + @SystemControllerLog(description = "根据手机号查询接口") + public ResultData findByPhone(String phone) { + logger.debug("[" + getIpAddr() + "] WxCUserBasicInfoController::findByPhone"); + List wxCUserBasicInfoList = wxCUserBasicInfoService.findByPhone(getTenantId(),phone); + WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo(); + if (wxCUserBasicInfoList != null && wxCUserBasicInfoList.size() > 0) { + wxCUserBasicInfo = wxCUserBasicInfoList.get(0); + } + return new ResultData(wxCUserBasicInfo); + } } \ No newline at end of file diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantController.java index 43779d4de..6cf3569ac 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantController.java @@ -7,11 +7,13 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.WxLevelConfig; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxProfitSharingReceiver; +import com.iformall.domain.vo.WxMerchantSimpleVo; import com.iformall.service.WxMerchantService; import com.iformall.service.WxProfitSharingReceiverService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.commons.beanutils.BeanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -154,4 +156,12 @@ public class WxMerchantController extends BaseController { return wxMerchantService.updateMerchantLevel(wxMerchant); } + @ApiOperation("查询当前租户下商户名称列表") + @GetMapping("/name_list") + @SystemControllerLog(description = "查询当前租户下商户名称列表") + public ResultData nameList() { + logger.debug("[" + getIpAddr() + "] WxMerchantController::name_list"); + return new ResultData(wxMerchantService.findList(getTenantId())); + } + } diff --git a/mallinkService/pom.xml b/mallinkService/pom.xml index 5d4801bf5..0ebc4d9a5 100644 --- a/mallinkService/pom.xml +++ b/mallinkService/pom.xml @@ -20,6 +20,11 @@ compile --> + + net.sf.dozer + dozer + 5.5.1 + \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantSimpleVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantSimpleVo.java new file mode 100644 index 000000000..bbd372faa --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantSimpleVo.java @@ -0,0 +1,16 @@ +package com.iformall.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class WxMerchantSimpleVo { + + /**id**/ + @ApiModelProperty(value="id",name="id") + private Long id; + + /**商户名**/ + @ApiModelProperty(value="商户名",name="name") + private String merchantName; +} diff --git a/mallinkService/src/main/java/com/iformall/exception/BeanMappingException.java b/mallinkService/src/main/java/com/iformall/exception/BeanMappingException.java new file mode 100644 index 000000000..c7b281de1 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/exception/BeanMappingException.java @@ -0,0 +1,17 @@ +package com.iformall.exception; + +public class BeanMappingException extends RuntimeException { + private static final long serialVersionUID = -3616240376550557648L; + + public BeanMappingException() { + this("Bean对象映射异常"); + } + + public BeanMappingException(String message) { + super(message); + } + + public BeanMappingException(Throwable cause) { + super(cause); + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java index e5ce57f7a..6043ace5d 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java @@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxLevelConfig; import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.vo.WxMerchantSimpleVo; import com.iformall.domain.vo.WxMerchantVo; import java.util.HashMap; @@ -39,6 +40,13 @@ public interface WxMerchantService { * @return */ List etcpList(WxMerchant record); + + /** + * 查询商户列表 + * @param tenantId + * @return + */ + List findList(String tenantId); /** * 根据Id获得实体 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index 2c86cfa83..c217964a7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -7,11 +7,13 @@ import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; +import com.iformall.domain.vo.WxMerchantSimpleVo; import com.iformall.domain.vo.WxMerchantVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.*; +import com.iformall.utils.BeanMapping; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -133,6 +135,14 @@ public class WxMerchantServiceImpl implements WxMerchantService { return wxMerchantMapper.findList(record); } + @Override + public List findList(String tenantId) { + WxMerchant wxMerchant = new WxMerchant(); + wxMerchant.setTenantId(tenantId); + List wxMerchantList = wxMerchantMapper.findList(wxMerchant); + return BeanMapping.mapList(wxMerchantList,WxMerchantSimpleVo.class,(s, t)->t.setMerchantName(s.getName())); + } + @Override public WxMerchant getById(Long id) { WxMerchant wxMerchant = wxMerchantMapper.selectByPrimaryKey(id); diff --git a/mallinkService/src/main/java/com/iformall/utils/BeanMapping.java b/mallinkService/src/main/java/com/iformall/utils/BeanMapping.java new file mode 100644 index 000000000..a8f458554 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/utils/BeanMapping.java @@ -0,0 +1,139 @@ +package com.iformall.utils; + +import com.iformall.exception.BeanMappingException; +import lombok.extern.slf4j.Slf4j; +import org.dozer.DozerBeanMapper; +import org.dozer.Mapper; +import org.dozer.MappingException; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; +import java.util.function.BiConsumer; + +/** + * 不同类型的bean对象属性映射转化 + * 基于Dozer封装, 对使用者透明 + */ +@Slf4j +public class BeanMapping { + + private static Mapper __instance__; + + private static Lock lock = new ReentrantLock(); + + private BeanMapping() { + + } + + private static Mapper getInstance() { + // TODO 支持XML配置或者传入映射关系 + + if (__instance__ == null) { + lock.lock(); + if (__instance__ == null) { + __instance__ = new DozerBeanMapper(); + } + lock.unlock(); + } + return __instance__; + } + + /** + * 源对象 {@code source} 转换成目标bean对象 {@code D}; 将名称一致的属性进行转换 + * @param source 源Bean + * @param dstClass 目标Bean的class + * @param 原Bean的泛型定义 + * @param 目标Bean的泛型定义 + * @return 目标Bean对象 + */ + public static D map(S source, Class dstClass) throws BeanMappingException { + return map(source, dstClass, null); + } + + /** + * 源对象 {@code source} 转换成目标bean对象 {@code D}; 将名称一致的属性进行转换; 转换完成后进行回调后续处理 + * @param source 源Bean + * @param dstClass 目标Bean的class + * @param biConsumer 目标Bean转换完成后的回调操作 + * @param 原Bean的泛型定义 + * @param 目标Bean的泛型定义 + * @return 目标Bean对象 + * @throws BeanMappingException + */ + public static D map(S source, Class dstClass, BiConsumer biConsumer) throws BeanMappingException { + if (source == null) { + return null; + } + try { + D dstObject = getInstance().map(source, dstClass); + if (dstObject != null && biConsumer != null) { + biConsumer.accept(source, dstObject); + } + return dstObject; + } catch (MappingException e) { + log.error("对象映射出错, 原对象类型: {}, 目标对象类型: {}", source.getClass(), dstClass); + throw new BeanMappingException(e); + } + } + + /** + * 源对象集合 {@code source} 转换成目标bean对象后添加到传入的集合中 {@code D}; 将名称一致的属性进行转换 + * @param source 源对象集合 + * @param destination 目标对象集合 + * @param dstClass 目标Bean的class + * @param 原Bean的泛型定义 + * @param 目标Bean的泛型定义 + * @throws BeanMappingException + */ + public static void map(Collection source, Collection destination, Class dstClass) throws BeanMappingException { + map(source, destination, dstClass, null); + } + + /** + * 源对象集合 {@code source} 转换成目标bean对象后添加到传入的集合中 {@code D}; 将名称一致的属性进行转换 + * @param source 源对象集合 + * @param destination 目标对象集合 + * @param dstClass 目标Bean的class + * @param biConsumer 目标Bean转换完成后的回调操作 + * @param 原Bean的泛型定义 + * @param 目标Bean的泛型定义 + * @throws BeanMappingException + */ + public static void map(Collection source, Collection destination, Class dstClass, BiConsumer biConsumer) throws BeanMappingException { + for (S s : source) { + destination.add(map(s, dstClass, biConsumer)); + } + } + + /** + * 源对象集合 {@code source} 转换成目标bean对象 {@code D}; 将名称一致的属性进行转换 + * @param source 源对象集合 + * @param dstClass 目标Bean的class + * @param 原Bean的泛型定义 + * @param 目标Bean的泛型定义 + * @return 映射完的List集合, 默认返回ArrayList + * @throws BeanMappingException + */ + public static List mapList(Collection source, Class dstClass) throws BeanMappingException { + return mapList(source, dstClass, null); + } + + /** + * 源对象集合 {@code source} 转换成目标bean对象 {@code D}; 将名称一致的属性进行转换 + * @param source 源对象集合 + * @param dstClass 目标Bean的class + * @param biConsumer 目标Bean转换完成后的回调操作 + * @param 原Bean的泛型定义 + * @param 目标Bean的泛型定义 + * @return 映射完的List集合, 默认返回ArrayList + * @throws BeanMappingException + */ + public static List mapList(Collection source, Class dstClass, BiConsumer biConsumer) throws BeanMappingException { + List result = new ArrayList<>(); + map(source, result, dstClass, biConsumer); + return result; + } +}