| @@ -5,14 +5,27 @@ import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.InvestResultData; | import com.iformall.common.InvestResultData; | ||||
| import com.iformall.controller.base.BaseController; | import com.iformall.controller.base.BaseController; | ||||
| import com.iformall.domain.vo.invest.InvestUserContext; | import com.iformall.domain.vo.invest.InvestUserContext; | ||||
| import com.iformall.enums.EnumCustomerType; | |||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.service.invest.InvestHelper; | |||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
| import org.springframework.web.bind.WebDataBinder; | |||||
| import org.springframework.web.bind.annotation.InitBinder; | |||||
| import java.beans.PropertyEditor; | |||||
| import java.beans.PropertyEditorSupport; | |||||
| import java.util.function.Function; | import java.util.function.Function; | ||||
| @Slf4j | @Slf4j | ||||
| public class InvestBaseController extends BaseController { | public class InvestBaseController extends BaseController { | ||||
| @InitBinder | |||||
| public void InitBinder(WebDataBinder dataBinder) { | |||||
| super.InitBinder(dataBinder); | |||||
| registerEnumEditor(dataBinder, EnumCustomerType.class, "customerType") ; | |||||
| } | |||||
| public <R, T> InvestResultData<R> execute(T params, Function<T, R> function) { | public <R, T> InvestResultData<R> execute(T params, Function<T, R> function) { | ||||
| try { | try { | ||||
| log.debug("[" + getIpAddr() + "] request , params : {}", JSON.toJSONString(params)); | log.debug("[" + getIpAddr() + "] request , params : {}", JSON.toJSONString(params)); | ||||
| @@ -30,4 +43,25 @@ public class InvestBaseController extends BaseController { | |||||
| } | } | ||||
| } | } | ||||
| public <R, T> R convert(T params, Function<T, R> function) { | |||||
| InvestHelper.notNull(params); | |||||
| return function.apply(params); | |||||
| } | |||||
| private <T extends Enum<T>> void registerEnumEditor(WebDataBinder binder, Class<T> clz, String propertyName) { | |||||
| binder.registerCustomEditor(clz, propertyName, newEnumEditor(clz)); | |||||
| } | |||||
| private <T extends Enum<T>> PropertyEditor newEnumEditor(Class<T> clz) { | |||||
| return new PropertyEditorSupport() { | |||||
| @Override | |||||
| public void setAsText(String text) { | |||||
| try { | |||||
| setValue(InvestHelper.codeOf(clz, Integer.parseInt(text))); | |||||
| } catch (Exception NumberFormatException) { | |||||
| setValue(InvestHelper.valueOf(clz, text)); | |||||
| } | |||||
| } | |||||
| }; | |||||
| } | |||||
| } | } | ||||
| @@ -3,6 +3,9 @@ package com.iformall.controller.invest; | |||||
| import com.iformall.annotation.SystemServiceLog; | import com.iformall.annotation.SystemServiceLog; | ||||
| import com.iformall.common.InvestResultData; | import com.iformall.common.InvestResultData; | ||||
| import com.iformall.domain.dto.InvestDemandDto; | import com.iformall.domain.dto.InvestDemandDto; | ||||
| import com.iformall.domain.po.invest.InvestCustomerEntity; | |||||
| import com.iformall.domain.po.invest.InvestDemandEntity; | |||||
| import com.iformall.domain.vo.invest.InvestDemandQuery; | |||||
| import com.iformall.domain.vo.invest.InvestDemandVo; | import com.iformall.domain.vo.invest.InvestDemandVo; | ||||
| import com.iformall.domain.vo.invest.InvestPageQuery; | import com.iformall.domain.vo.invest.InvestPageQuery; | ||||
| import com.iformall.domain.vo.invest.InvestPageResult; | import com.iformall.domain.vo.invest.InvestPageResult; | ||||
| @@ -11,6 +14,7 @@ import com.iformall.service.invest.InvestDemandService; | |||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
| import org.springframework.beans.BeanUtils; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| @@ -42,11 +46,10 @@ public class InvestDemandController extends InvestBaseController { | |||||
| @SystemServiceLog | @SystemServiceLog | ||||
| @ApiOperation(value = "分页列表接口") | @ApiOperation(value = "分页列表接口") | ||||
| @GetMapping("/list") | @GetMapping("/list") | ||||
| public InvestResultData<InvestPageResult<InvestDemandVo>> list(InvestPageQuery<InvestDemandDto> params) { | |||||
| return execute(params, p -> investBizService.queryPageDemand(p)); | |||||
| public InvestResultData<InvestPageResult<InvestDemandVo>> list(InvestDemandQuery params) { | |||||
| return execute(convert(params, this::doConvert), p -> investBizService.queryPageDemand(p)); | |||||
| } | } | ||||
| /** | /** | ||||
| * 信息 | * 信息 | ||||
| */ | */ | ||||
| @@ -82,4 +85,22 @@ public class InvestDemandController extends InvestBaseController { | |||||
| return execute(ids, p -> investDemandService.removeByIds(Arrays.asList(p))); | return execute(ids, p -> investDemandService.removeByIds(Arrays.asList(p))); | ||||
| } | } | ||||
| private InvestPageQuery<InvestDemandDto> doConvert(InvestDemandQuery params) { | |||||
| InvestCustomerEntity customerEntity = new InvestCustomerEntity(); | |||||
| customerEntity.setId(params.getCustomerId()); | |||||
| customerEntity.setType(params.getCustomerType()); | |||||
| customerEntity.setBusinessId(params.getBusinessId()); | |||||
| InvestDemandEntity demandEntity = new InvestDemandEntity(); | |||||
| demandEntity.setOwner(params.getOwner()); | |||||
| InvestDemandDto demandDto = new InvestDemandDto(); | |||||
| demandDto.setCustomer(customerEntity); | |||||
| demandDto.setDemand(demandEntity); | |||||
| InvestPageQuery<InvestDemandDto> pageQuery = new InvestPageQuery<>(); | |||||
| BeanUtils.copyProperties(params, pageQuery); | |||||
| pageQuery.setQueryData(demandDto); | |||||
| return pageQuery; | |||||
| } | |||||
| } | } | ||||
| @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; | |||||
| import com.baomidou.mybatisplus.annotation.Version; | import com.baomidou.mybatisplus.annotation.Version; | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||
| import com.iformall.common.LogColumn; | import com.iformall.common.LogColumn; | ||||
| import com.iformall.domain.po.invest.InvestBaseEntity; | |||||
| import com.iformall.enums.EnumCustomerRatingType; | import com.iformall.enums.EnumCustomerRatingType; | ||||
| import com.iformall.enums.EnumCustomerType; | import com.iformall.enums.EnumCustomerType; | ||||
| import com.iformall.enums.EnumInvestChannel; | import com.iformall.enums.EnumInvestChannel; | ||||
| @@ -69,7 +68,7 @@ public class InvestCustomerEntity extends InvestBaseEntity { | |||||
| */ | */ | ||||
| @io.swagger.annotations.ApiModelProperty(value = "招商渠道:0-无;1-电视;2-广播;3-报纸;4-刊物;5-物联网;6-招商活动;7-中介机构;8-自定义渠道", name = "investChannel") | @io.swagger.annotations.ApiModelProperty(value = "招商渠道:0-无;1-电视;2-广播;3-报纸;4-刊物;5-物联网;6-招商活动;7-中介机构;8-自定义渠道", name = "investChannel") | ||||
| @LogColumn | @LogColumn | ||||
| private EnumInvestChannel investChannel = EnumInvestChannel.NONE; | |||||
| private EnumInvestChannel investChannel ; | |||||
| /** | /** | ||||
| * 更新时间 | * 更新时间 | ||||
| @@ -0,0 +1,37 @@ | |||||
| package com.iformall.domain.vo.invest; | |||||
| import com.iformall.common.LogColumn; | |||||
| import com.iformall.enums.EnumCustomerType; | |||||
| import lombok.Data; | |||||
| @Data | |||||
| public class InvestDemandQuery extends InvestPageQuery { | |||||
| /** | |||||
| * 主键ID | |||||
| */ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "客户编号", name = "customerId") | |||||
| private Long customerId; | |||||
| /** | |||||
| * 客户分类:0-潜在客户;1-意向客户;2-合作客户;3-谈判失败 | |||||
| */ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "客户分类:0-潜在客户;1-意向客户;2-合作客户;3-谈判失败", name = "customerType") | |||||
| @LogColumn | |||||
| private EnumCustomerType customerType; | |||||
| /** | |||||
| * 经营业态 | |||||
| */ | |||||
| @LogColumn | |||||
| @io.swagger.annotations.ApiModelProperty(value = "经营业态", name = "businessId") | |||||
| private Integer businessId; | |||||
| /** | |||||
| * 负责人 | |||||
| */ | |||||
| @io.swagger.annotations.ApiModelProperty(value = "负责人", name = "owner") | |||||
| @LogColumn | |||||
| private Long owner; | |||||
| } | |||||
| @@ -1,10 +1,12 @@ | |||||
| package com.iformall.domain.vo.invest; | package com.iformall.domain.vo.invest; | ||||
| import lombok.Data; | import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | |||||
| import java.util.List; | import java.util.List; | ||||
| @Data | @Data | ||||
| @NoArgsConstructor | |||||
| public class InvestPageQuery<T> { | public class InvestPageQuery<T> { | ||||
| public InvestPageQuery(T queryData) { | public InvestPageQuery(T queryData) { | ||||
| this.queryData = queryData; | this.queryData = queryData; | ||||
| @@ -8,6 +8,7 @@ import com.iformall.exception.MallinkException; | |||||
| import org.apache.commons.compress.utils.Lists; | import org.apache.commons.compress.utils.Lists; | ||||
| import org.springframework.util.CollectionUtils; | import org.springframework.util.CollectionUtils; | ||||
| import java.lang.reflect.Method; | |||||
| import java.text.MessageFormat; | import java.text.MessageFormat; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Objects; | import java.util.Objects; | ||||
| @@ -105,4 +106,29 @@ public class InvestHelper { | |||||
| throwException(ErrorCode.INVEST_RESULT_NOT_FOUND, message); | throwException(ErrorCode.INVEST_RESULT_NOT_FOUND, message); | ||||
| } | } | ||||
| } | } | ||||
| public static <T extends Enum<T>> int code(T t) { | |||||
| try { | |||||
| Method code = t.getClass().getDeclaredMethod("code"); | |||||
| Object rs = code.invoke(t); | |||||
| return (int) rs; | |||||
| } catch (ReflectiveOperationException e) { | |||||
| throw new IllegalArgumentException(e); | |||||
| } | |||||
| } | |||||
| @SuppressWarnings("unchecked") | |||||
| public static <T extends Enum<T>> T codeOf(Class<T> enumType, int code) { | |||||
| try { | |||||
| Method method = enumType.getDeclaredMethod("getEnum", Integer.class); | |||||
| Object rs = method.invoke(null, code); | |||||
| return (T) rs; | |||||
| } catch (ReflectiveOperationException e) { | |||||
| throw new IllegalArgumentException(e); | |||||
| } | |||||
| } | |||||
| public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) { | |||||
| return T.valueOf(enumType, name); | |||||
| } | |||||
| } | } | ||||