Ver código fonte

新闻中心

fllmoyu 4 anos atrás
pai
commit
625d29ebe0
23 arquivos alterados com 1143 adições e 72 exclusões
  1. 2 0
      common/src/main/java/com/jpsoft/enterprise/modules/base/dao/NewsTypeDAO.java
  2. 6 0
      common/src/main/java/com/jpsoft/enterprise/modules/base/dao/PersonInfoDAO.java
  3. 36 0
      common/src/main/java/com/jpsoft/enterprise/modules/base/dto/CompanyInfoDetailDTO.java
  4. 25 0
      common/src/main/java/com/jpsoft/enterprise/modules/base/dto/CompanyInfoListDTO.java
  5. 26 0
      common/src/main/java/com/jpsoft/enterprise/modules/base/dto/NewsInfoDTO.java
  6. 23 0
      common/src/main/java/com/jpsoft/enterprise/modules/base/dto/NewsInfoListDTO.java
  7. 17 0
      common/src/main/java/com/jpsoft/enterprise/modules/base/dto/NewsTypeDTO.java
  8. 24 21
      common/src/main/java/com/jpsoft/enterprise/modules/base/entity/CompanyInfo.java
  9. 21 18
      common/src/main/java/com/jpsoft/enterprise/modules/base/entity/NewsInfo.java
  10. 1 1
      common/src/main/java/com/jpsoft/enterprise/modules/base/service/NewsInfoService.java
  11. 2 0
      common/src/main/java/com/jpsoft/enterprise/modules/base/service/NewsTypeService.java
  12. 6 0
      common/src/main/java/com/jpsoft/enterprise/modules/base/service/PersonInfoService.java
  13. 11 6
      common/src/main/java/com/jpsoft/enterprise/modules/base/service/impl/NewsTypeServiceImpl.java
  14. 21 6
      common/src/main/java/com/jpsoft/enterprise/modules/base/service/impl/PersonInfoServiceImpl.java
  15. 9 4
      common/src/main/java/com/jpsoft/enterprise/modules/common/utils/SMSUtil.java
  16. 22 5
      common/src/main/resources/mapper/base/CompanyInfo.xml
  17. 25 6
      common/src/main/resources/mapper/base/NewsInfo.xml
  18. 9 2
      common/src/main/resources/mapper/base/NewsType.xml
  19. 25 2
      common/src/main/resources/mapper/base/PersonInfo.xml
  20. 14 1
      web/src/main/java/com/jpsoft/enterprise/config/WebMvcConfig.java
  21. 244 0
      web/src/main/java/com/jpsoft/enterprise/modules/mobile/controller/CompanyInfoApiController.java
  22. 225 0
      web/src/main/java/com/jpsoft/enterprise/modules/mobile/controller/NewsInfoApiController.java
  23. 349 0
      web/src/main/java/com/jpsoft/enterprise/modules/mobile/controller/PersonInfoApiController.java

+ 2 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/dao/NewsTypeDAO.java

@@ -16,4 +16,6 @@ public interface NewsTypeDAO {
 	int delete(String id);
 	List<NewsType> list();
 	List<NewsType> search(Map<String,Object> searchParams,List<Sort> sortList);
+
+    List<NewsType> findByParentId(String parentId);
 }

+ 6 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/dao/PersonInfoDAO.java

@@ -16,4 +16,10 @@ public interface PersonInfoDAO {
 	int delete(String id);
 	List<PersonInfo> list();
 	List<PersonInfo> search(Map<String,Object> searchParams,List<Sort> sortList);
+
+    PersonInfo findByPhone(String phone);
+
+	PersonInfo findByUserName(String userName);
+
+	PersonInfo findByOpenId(String openId);
 }

+ 36 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/dto/CompanyInfoDetailDTO.java

@@ -0,0 +1,36 @@
+package com.jpsoft.enterprise.modules.base.dto;
+
+import lombok.Data;
+import org.bouncycastle.asn1.cms.PasswordRecipientInfo;
+
+import java.util.List;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-1-4 16:04
+ */
+@Data
+public class CompanyInfoDetailDTO {
+
+    private String id;
+
+    private String name;
+
+    private String logoUrl;
+
+    private String typeName;
+
+    private String scaleName;
+
+    private String industryName;
+
+    private String address;
+
+    private String companyIntroduction;
+
+    private String enterpriserIntroduction;
+
+    private List<NewsInfoListDTO> newsInfoDTOList;
+
+
+}

+ 25 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/dto/CompanyInfoListDTO.java

@@ -0,0 +1,25 @@
+package com.jpsoft.enterprise.modules.base.dto;
+
+import lombok.Data;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-1-4 15:24
+ */
+@Data
+public class CompanyInfoListDTO {
+
+    private String id;
+
+    private String logoUrl;
+
+    private String name;
+
+    private String regionName;
+
+    private String typeName;
+
+    private String scaleName;
+
+    private String industryName;
+}

+ 26 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/dto/NewsInfoDTO.java

@@ -0,0 +1,26 @@
+package com.jpsoft.enterprise.modules.base.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-1-4 11:14
+ */
+@Data
+public class NewsInfoDTO {
+
+    private String id;
+
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @ApiModelProperty(value = "内容")
+    private String content;
+
+    @ApiModelProperty(value = "创建时间")
+    private String createTime;
+
+    @ApiModelProperty(value = "阅读人数")
+    private Integer readerNum;
+}

+ 23 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/dto/NewsInfoListDTO.java

@@ -0,0 +1,23 @@
+package com.jpsoft.enterprise.modules.base.dto;
+
+import lombok.Data;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-1-4 10:16
+ */
+@Data
+public class NewsInfoListDTO {
+
+    private String id;
+
+    private String title;
+
+    private String createTime;
+
+    private String typeName;
+
+    private String newsTypeId;
+
+    private String picUrl;
+}

+ 17 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/dto/NewsTypeDTO.java

@@ -0,0 +1,17 @@
+package com.jpsoft.enterprise.modules.base.dto;
+
+import lombok.Data;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-1-4 9:31
+ */
+@Data
+public class NewsTypeDTO {
+
+    private String id;
+
+    private String name;
+
+    private String parentId;
+}

+ 24 - 21
common/src/main/java/com/jpsoft/enterprise/modules/base/entity/CompanyInfo.java

@@ -4,6 +4,7 @@ import java.io.Serializable;
 import java.util.Date;
 import java.text.SimpleDateFormat;
 import java.math.BigDecimal;
+
 import org.springframework.format.annotation.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
@@ -11,45 +12,47 @@ import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
 /**
-  描述:base_company_info的实体类
+ * 描述:base_company_info的实体类
  */
 @Data
 @ApiModel(value = "base_company_info的实体类")
 public class CompanyInfo {
-        @ApiModelProperty(value = "")
+    @ApiModelProperty(value = "")
     private String id;
-        @ApiModelProperty(value = "公司名称")
+    @ApiModelProperty(value = "公司名称")
     private String name;
-        @ApiModelProperty(value = "公司类型(1:企联会员,2:分会企业)")
+    @ApiModelProperty(value = "公司类型(1:企联会员,2:分会企业)")
     private String type;
-        @ApiModelProperty(value = "社会信用代码")
+    @ApiModelProperty(value = "logo地址")
+    private String logoUrl;
+    @ApiModelProperty(value = "社会信用代码")
     private String creditCode;
-        @ApiModelProperty(value = "企业地址")
+    @ApiModelProperty(value = "企业地址")
     private String address;
-        @ApiModelProperty(value = "营业执照")
+    @ApiModelProperty(value = "营业执照")
     private String businessLicenseUrl;
-        @ApiModelProperty(value = "企业规模(1:1-50人,2:50-100人,3:100人以上)")
+    @ApiModelProperty(value = "企业规模(1:1-50人,2:50-100人,3:100人以上)")
     private String scale;
-        @ApiModelProperty(value = "所属行业(1:计算机/IT,2:食品加工,3:服务业)")
+    @ApiModelProperty(value = "所属行业(1:计算机/IT,2:食品加工,3:服务业)")
     private String industry;
-        @ApiModelProperty(value = "所在地区(1:荆州区,2:沙市区,3:开发区,4:石首市)")
+    @ApiModelProperty(value = "所在地区(1:荆州区,2:沙市区,3:开发区,4:石首市)")
     private String region;
-        @ApiModelProperty(value = "公司介绍")
+    @ApiModelProperty(value = "公司介绍")
     private String companyIntroduction;
-        @ApiModelProperty(value = "企业家介绍")
+    @ApiModelProperty(value = "企业家介绍")
     private String enterpriserIntroduction;
-        @ApiModelProperty(value = "创建人")
+    @ApiModelProperty(value = "创建人")
     private String createBy;
-        @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-	    @ApiModelProperty(value = "创建时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
     private Date createTime;
-        @ApiModelProperty(value = "更新人")
+    @ApiModelProperty(value = "更新人")
     private String updateBy;
-        @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-	    @ApiModelProperty(value = "更新时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "更新时间")
     private Date updateTime;
-        @ApiModelProperty(value = "是否删除")
+    @ApiModelProperty(value = "是否删除")
     private Boolean delFlag;
 }

+ 21 - 18
common/src/main/java/com/jpsoft/enterprise/modules/base/entity/NewsInfo.java

@@ -4,6 +4,7 @@ import java.io.Serializable;
 import java.util.Date;
 import java.text.SimpleDateFormat;
 import java.math.BigDecimal;
+
 import org.springframework.format.annotation.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
@@ -11,35 +12,37 @@ import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
 /**
-  描述:base_news_info的实体类
+ * 描述:base_news_info的实体类
  */
 @Data
 @ApiModel(value = "base_news_info的实体类")
 public class NewsInfo {
-        @ApiModelProperty(value = "")
+    @ApiModelProperty(value = "")
     private String id;
-        @ApiModelProperty(value = "公司id")
+    @ApiModelProperty(value = "新闻类型id")
+    private String newsTypeId;
+    @ApiModelProperty(value = "公司id")
     private String companyId;
-        @ApiModelProperty(value = "标题")
+    @ApiModelProperty(value = "标题")
     private String title;
-        @ApiModelProperty(value = "内容")
+    @ApiModelProperty(value = "内容")
     private String content;
-        @ApiModelProperty(value = "阅读人数")
-    private Integer readerNum;
-        @ApiModelProperty(value = "图片")
+    @ApiModelProperty(value = "阅读人数")
+    private Integer readerNum = 0;
+    @ApiModelProperty(value = "图片")
     private String picUrl;
-        @ApiModelProperty(value = "创建人")
+    @ApiModelProperty(value = "创建人")
     private String createBy;
-        @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-	    @ApiModelProperty(value = "创建时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
     private Date createTime;
-        @ApiModelProperty(value = "更新人")
+    @ApiModelProperty(value = "更新人")
     private String updateBy;
-        @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-	    @ApiModelProperty(value = "更新时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "更新时间")
     private Date updateTime;
-        @ApiModelProperty(value = "是否删除")
-    private Boolean delFlag;
+    @ApiModelProperty(value = "是否删除")
+    private Boolean delFlag= false;
 }

+ 1 - 1
common/src/main/java/com/jpsoft/enterprise/modules/base/service/NewsInfoService.java

@@ -2,9 +2,9 @@ package com.jpsoft.enterprise.modules.base.service;
 
 import java.util.List;
 import java.util.Map;
-import com.github.pagehelper.Page;
 import com.jpsoft.enterprise.modules.base.entity.NewsInfo;
 import com.jpsoft.enterprise.modules.common.dto.Sort;
+import com.github.pagehelper.Page;
 
 public interface NewsInfoService {
 	NewsInfo get(String id);

+ 2 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/service/NewsTypeService.java

@@ -14,4 +14,6 @@ public interface NewsTypeService {
 	int delete(String id);
 	List<NewsType> list();
 	Page<NewsType> pageSearch(Map<String, Object> searchParams,int pageNum,int pageSize,boolean count,List<Sort> sortList);
+
+    List<NewsType> findByParentId(String parentId);
 }

+ 6 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/service/PersonInfoService.java

@@ -14,4 +14,10 @@ public interface PersonInfoService {
 	int delete(String id);
 	List<PersonInfo> list();
 	Page<PersonInfo> pageSearch(Map<String, Object> searchParams,int pageNum,int pageSize,boolean count,List<Sort> sortList);
+
+    PersonInfo findByPhone(String phone);
+
+	PersonInfo findByUserName(String userName);
+
+	PersonInfo findByOpenId(String openId);
 }

+ 11 - 6
common/src/main/java/com/jpsoft/enterprise/modules/base/service/impl/NewsTypeServiceImpl.java

@@ -31,14 +31,14 @@ public class NewsTypeServiceImpl implements NewsTypeService {
 	public int insert(NewsType model) {
 		// TODO Auto-generated method stub
 		//model.setId(UUID.randomUUID().toString());
-		
+
 		return newsTypeDAO.insert(model);
 	}
 
 	@Override
 	public int update(NewsType model) {
 		// TODO Auto-generated method stub
-		return newsTypeDAO.update(model);		
+		return newsTypeDAO.update(model);
 	}
 
 	@Override
@@ -51,22 +51,27 @@ public class NewsTypeServiceImpl implements NewsTypeService {
 	public boolean exist(String id) {
 		// TODO Auto-generated method stub
 		int count = newsTypeDAO.exist(id);
-		
+
 		return count > 0 ? true : false;
 	}
-	
+
 	@Override
 	public List<NewsType> list() {
 		// TODO Auto-generated method stub
 		return newsTypeDAO.list();
 	}
-		
+
 	@Override
 	public Page<NewsType> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {
         Page<NewsType> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
             newsTypeDAO.search(searchParams,sortList);
         });
-        
+
         return page;
 	}
+
+	@Override
+	public List<NewsType> findByParentId(String parentId) {
+		return newsTypeDAO.findByParentId(parentId);
+	}
 }

+ 21 - 6
common/src/main/java/com/jpsoft/enterprise/modules/base/service/impl/PersonInfoServiceImpl.java

@@ -31,14 +31,14 @@ public class PersonInfoServiceImpl implements PersonInfoService {
 	public int insert(PersonInfo model) {
 		// TODO Auto-generated method stub
 		//model.setId(UUID.randomUUID().toString());
-		
+
 		return personInfoDAO.insert(model);
 	}
 
 	@Override
 	public int update(PersonInfo model) {
 		// TODO Auto-generated method stub
-		return personInfoDAO.update(model);		
+		return personInfoDAO.update(model);
 	}
 
 	@Override
@@ -51,22 +51,37 @@ public class PersonInfoServiceImpl implements PersonInfoService {
 	public boolean exist(String id) {
 		// TODO Auto-generated method stub
 		int count = personInfoDAO.exist(id);
-		
+
 		return count > 0 ? true : false;
 	}
-	
+
 	@Override
 	public List<PersonInfo> list() {
 		// TODO Auto-generated method stub
 		return personInfoDAO.list();
 	}
-		
+
 	@Override
 	public Page<PersonInfo> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {
         Page<PersonInfo> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
             personInfoDAO.search(searchParams,sortList);
         });
-        
+
         return page;
 	}
+
+	@Override
+	public PersonInfo findByPhone(String phone) {
+		return personInfoDAO.findByPhone(phone);
+	}
+
+	@Override
+	public PersonInfo findByUserName(String userName) {
+		return personInfoDAO.findByUserName(userName);
+	}
+
+	@Override
+	public PersonInfo findByOpenId(String openId) {
+		return personInfoDAO.findByOpenId(openId);
+	}
 }

+ 9 - 4
common/src/main/java/com/jpsoft/enterprise/modules/common/utils/SMSUtil.java

@@ -1,5 +1,6 @@
 package com.jpsoft.enterprise.modules.common.utils;
 
+import cn.hutool.poi.excel.ExcelUtil;
 import com.jpsoft.enterprise.modules.common.dto.MessageResult;
 import com.taobao.api.ApiException;
 import com.taobao.api.DefaultTaobaoClient;
@@ -90,7 +91,7 @@ public class SMSUtil {
 	 * @param json 短信模板变量,传参规则{"key":"value"},key的名字须和申请模板中的变量名一致,多个变量之间以逗号隔开。示例:针对模板“验证码${code},您正在进行${product}身份验证,打死不要告诉别人哦!”,传参时需传入{"code":"1234","product":"alidayu"}
 	 * @return
 	 */
-	public static MessageResult send(String phones, String signName, String smsTemplateCode, JSONObject json){
+	public static MessageResult send(String phones, String signName, String smsTemplateCode, JSONObject json) throws Exception{
 
 		boolean success = true;
 		String msg = "发送成功";
@@ -114,7 +115,8 @@ public class SMSUtil {
 
 			if(ret.containsKey("error_response")){
 				success = false;
-				msg = ret.getJSONObject("error_response").getString("sub_msg");
+				throw new Exception(ret.getJSONObject("error_response").getString("sub_msg"));
+			//	msg = ret.getJSONObject("error_response").getString("sub_msg");
 			}else if(ret.containsKey("alibaba_aliqin_fc_sms_num_send_response")){
 
 				JSONObject result = ret.getJSONObject("alibaba_aliqin_fc_sms_num_send_response").getJSONObject("result");
@@ -124,14 +126,17 @@ public class SMSUtil {
 				}
 			}else{
 				success = false;
-				msg = ret.toString();
+				throw new Exception(ret.toString());
+		//		msg = ret.toString();
 			}
 		} catch (ApiException e) {
 			success = false;
-			msg = e.getErrMsg();
+			throw new Exception(e.getErrMsg());
+		//	msg = e.getErrMsg();
 		} catch (JSONException ex) {
 			success = false;
 			msg = ex.getMessage();
+			throw new Exception(ex.getMessage());
 		}
 
 		MessageResult retMessage = new MessageResult();

+ 22 - 5
common/src/main/resources/mapper/base/CompanyInfo.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
 <mapper namespace="com.jpsoft.enterprise.modules.base.dao.CompanyInfoDAO">
@@ -7,6 +7,7 @@
 		<id property="id" column="id_" />
 			<result property="name" column="name_" />
 			<result property="type" column="type_" />
+			<result property="logoUrl" column="logo_url"/>
 			<result property="creditCode" column="credit_code" />
 			<result property="address" column="address_" />
 			<result property="businessLicenseUrl" column="business_license_url" />
@@ -29,12 +30,13 @@
 	-->
 	<![CDATA[
 		insert into base_company_info
-	    (id_,name_,type_,credit_code,address_,business_license_url,scale_,industry_,region_,company_introduction,enterpriser_introduction,create_by,create_time,update_by,update_time,del_flag)
+	    (id_,name_,type_,logo_url,credit_code,address_,business_license_url,scale_,industry_,region_,company_introduction,enterpriser_introduction,create_by,create_time,update_by,update_time,del_flag)
 		values
 		(
 #{id,jdbcType=VARCHAR}
 ,#{name,jdbcType=VARCHAR}
 ,#{type,jdbcType=VARCHAR}
+,#{logoUrl,jdbcType=VARCHAR}
 ,#{creditCode,jdbcType=VARCHAR}
 ,#{address,jdbcType=VARCHAR}
 ,#{businessLicenseUrl,jdbcType=VARCHAR}
@@ -63,6 +65,9 @@
 				<if test="type!=null">
 		type_=#{type,jdbcType=VARCHAR},
 		</if>
+			<if test="logoUrl!=null">
+				logo_url=#{logoUrl,jdbcType=VARCHAR},
+			</if>
 				<if test="creditCode!=null">
 		credit_code=#{creditCode,jdbcType=VARCHAR},
 		</if>
@@ -106,23 +111,35 @@
 	where id_=#{id}
 	</update>
 	<select id="get" parameterType="string" resultMap="CompanyInfoMap">
-		select 
-id_,name_,type_,credit_code,address_,business_license_url,scale_,industry_,region_,company_introduction,enterpriser_introduction,create_by,create_time,update_by,update_time,del_flag		from base_company_info where id_=#{0}
+		select * from base_company_info where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
 		select count(*) from base_company_info where id_=#{0}
 	</select>
 	<select id="list" resultMap="CompanyInfoMap">
-		select * from base_company_info
+		select * from base_company_info where del_flag = 0
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="CompanyInfoMap">
 		<![CDATA[
 			select * from base_company_info
 		]]>
 		<where>
+			del_flag = 0
 			<if test="searchParams.id != null">
 				and ID_ like #{searchParams.id}
 			</if>
+			<if test="searchParams.region != null">
+				and region_ = #{searchParams.region}
+			</if>
+			<if test="searchParams.type != null">
+				and type_ = #{searchParams.type}
+			</if>
+			<if test="searchParams.scale != null">
+				and scale_ = #{searchParams.scale}
+			</if>
+			<if test="searchParams.industry != null">
+				and industry_ = #{searchParams.industry}
+			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">
 	        ${sort.name} ${sort.order}

+ 25 - 6
common/src/main/resources/mapper/base/NewsInfo.xml

@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
 <mapper namespace="com.jpsoft.enterprise.modules.base.dao.NewsInfoDAO">
 	<resultMap id="NewsInfoMap" type="com.jpsoft.enterprise.modules.base.entity.NewsInfo">
 		<id property="id" column="id_" />
+			<result property="newsTypeId" column="news_type_id"/>
 			<result property="companyId" column="company_id" />
 			<result property="title" column="title_" />
 			<result property="content" column="content_" />
@@ -24,10 +25,11 @@
 	-->
 	<![CDATA[
 		insert into base_news_info
-	    (id_,company_id,title_,content_,reader_num,pic_url,create_by,create_time,update_by,update_time,del_flag)
+	    (id_,news_type_id,company_id,title_,content_,reader_num,pic_url,create_by,create_time,update_by,update_time,del_flag)
 		values
 		(
 #{id,jdbcType=VARCHAR}
+,#{newsTypeId,jdbcType=VARCHAR}
 ,#{companyId,jdbcType=VARCHAR}
 ,#{title,jdbcType=VARCHAR}
 ,#{content,jdbcType=VARCHAR}
@@ -47,6 +49,9 @@
 	<update id="update" parameterType="com.jpsoft.enterprise.modules.base.entity.NewsInfo">
 		update base_news_info
 		<set>
+			<if test="newsTypeId!=null">
+				news_type_id=#{newsTypeId,jdbcType=VARCHAR},
+			</if>
 				<if test="companyId!=null">
 		company_id=#{companyId,jdbcType=VARCHAR},
 		</if>
@@ -81,8 +86,7 @@
 	where id_=#{id}
 	</update>
 	<select id="get" parameterType="string" resultMap="NewsInfoMap">
-		select 
-id_,company_id,title_,content_,reader_num,pic_url,create_by,create_time,update_by,update_time,del_flag		from base_news_info where id_=#{0}
+		select * from base_news_info where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
 		select count(*) from base_news_info where id_=#{0}
@@ -92,11 +96,26 @@ id_,company_id,title_,content_,reader_num,pic_url,create_by,create_time,update_b
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="NewsInfoMap">
 		<![CDATA[
-			select * from base_news_info
+			select * from base_news_info a left join base_news_type b
+			on a.news_type_id = b.id_
 		]]>
 		<where>
+			a.del_flag = 0
+			and b.del_flag = 0
 			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+				and a.id_ like #{searchParams.id}
+			</if>
+			<if test="searchParams.newsTypeId != null">
+				and a.news_type_id = #{searchParams.newsTypeId}
+			</if>
+			<if test="searchParams.newsTypeParentId != null">
+				and b.parent_id = #{searchParams.newsTypeParentId}
+			</if>
+			<if test="searchParams.newsTypeName != null">
+				and b.name_ = #{searchParams.newsTypeName}
+			</if>
+			<if test="searchParams.companyId != null">
+				and a.company_id = #{searchParams.companyId}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

+ 9 - 2
common/src/main/resources/mapper/base/NewsType.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
 <mapper namespace="com.jpsoft.enterprise.modules.base.dao.NewsTypeDAO">
@@ -66,7 +66,7 @@
 	where id_=#{id}
 	</update>
 	<select id="get" parameterType="string" resultMap="NewsTypeMap">
-		select 
+		select
 id_,name_,parent_id,create_by,create_time,update_by,update_time,del_flag		from base_news_type where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
@@ -88,4 +88,11 @@ id_,name_,parent_id,create_by,create_time,update_by,update_time,del_flag		from b
 	        ${sort.name} ${sort.order}
 	 	</foreach>
 	</select>
+	<select id="findByParentId" resultMap="NewsTypeMap">
+		<![CDATA[
+		select * from base_news_type
+		where del_flag = 0
+		and parent_id = #{parentId}
+		]]>
+	</select>
 </mapper>

+ 25 - 2
common/src/main/resources/mapper/base/PersonInfo.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
 <mapper namespace="com.jpsoft.enterprise.modules.base.dao.PersonInfoDAO">
@@ -111,7 +111,7 @@
 	where id_=#{id}
 	</update>
 	<select id="get" parameterType="string" resultMap="PersonInfoMap">
-		select 
+		select
 id_,name_,user_name,password_,open_id,id_card,face_image_url,company_id,register_type,phone_,id_card_url,create_by,create_time,update_by,update_time,del_flag,remark_		from base_person_info where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
@@ -133,4 +133,27 @@ id_,name_,user_name,password_,open_id,id_card,face_image_url,company_id,register
 	        ${sort.name} ${sort.order}
 	 	</foreach>
 	</select>
+	<select id="findByPhone" resultMap="PersonInfoMap">
+		<![CDATA[
+		select * from base_person_info
+		where del_flag = 0
+		and phone_ = #{phone}
+		]]>
+	</select>
+
+	<select id="findByUserName" resultMap="PersonInfoMap">
+		<![CDATA[
+		select * from base_person_info
+		where del_flag = 0
+		and user_name = #{userName}
+		limit 1
+		]]>
+	</select>
+	<select id="findByOpenId" resultMap="PersonInfoMap">
+		<![CDATA[
+		select * from base_person_info
+		where del_flag = 0
+		and open_id = #{openId}
+		]]>
+	</select>
 </mapper>

+ 14 - 1
web/src/main/java/com/jpsoft/enterprise/config/WebMvcConfig.java

@@ -52,6 +52,19 @@ public class WebMvcConfig implements WebMvcConfigurer {
                         "/swagger-ui.html",
 						"/doc.html",
                         "/v2/**",
-                        "/mobileApi/**");
+                        "/mobileApi/**")
+				.excludePathPatterns("/mobile/personInfoApi/findByPhone")
+				.excludePathPatterns("/mobile/personInfoApi/getVerifyCode")
+				.excludePathPatterns("/mobile/personInfoApi/loginByPassword")
+				.excludePathPatterns("/mobile/personInfoApi/validateCode")
+                .excludePathPatterns("/mobile/companyInfoApi/companyNum")
+				.excludePathPatterns("/mobile/newsInfoApi/firstLevelDirectory")
+				.excludePathPatterns("/mobile/newsInfoApi/secondLevelDirectory")
+				.excludePathPatterns("/mobile/newsInfoApi/newsList")
+				.excludePathPatterns("/mobile/newsInfoApi/newsDetail")
+				.excludePathPatterns("/mobile/companyInfoApi/regionList")
+				.excludePathPatterns("/mobile/companyInfoApi/companyList")
+				.excludePathPatterns("/mobile/companyInfoApi/companyDetail")
+        ;
 	}
 }

+ 244 - 0
web/src/main/java/com/jpsoft/enterprise/modules/mobile/controller/CompanyInfoApiController.java

@@ -0,0 +1,244 @@
+package com.jpsoft.enterprise.modules.mobile.controller;
+
+import cn.hutool.core.date.DateUtil;
+import com.github.pagehelper.Page;
+import com.jpsoft.enterprise.modules.base.dto.CompanyInfoDetailDTO;
+import com.jpsoft.enterprise.modules.base.dto.CompanyInfoListDTO;
+import com.jpsoft.enterprise.modules.base.dto.NewsInfoDTO;
+import com.jpsoft.enterprise.modules.base.dto.NewsInfoListDTO;
+import com.jpsoft.enterprise.modules.base.entity.CompanyInfo;
+import com.jpsoft.enterprise.modules.base.entity.NewsInfo;
+import com.jpsoft.enterprise.modules.base.entity.NewsType;
+import com.jpsoft.enterprise.modules.base.service.CompanyInfoService;
+import com.jpsoft.enterprise.modules.base.service.NewsInfoService;
+import com.jpsoft.enterprise.modules.base.service.NewsTypeService;
+import com.jpsoft.enterprise.modules.common.dto.MessageResult;
+import com.jpsoft.enterprise.modules.common.dto.Sort;
+import com.jpsoft.enterprise.modules.sys.entity.DataDictionary;
+import com.jpsoft.enterprise.modules.sys.service.DataDictionaryService;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-1-4 9:15
+ */
+@RestController
+@RequestMapping("/mobile/companyInfoApi")
+@Slf4j
+public class CompanyInfoApiController {
+
+
+    @Autowired
+    private CompanyInfoService companyInfoService;
+
+    @Autowired
+    private DataDictionaryService dataDictionaryService;
+
+    @Autowired
+    private NewsInfoService newsInfoService;
+
+    @Autowired
+    private NewsTypeService newsTypeService;
+
+    @PostMapping("companyNum")
+    @ApiOperation(value = "注册公司数量(公开接口)")
+    public MessageResult<Map> companyNum() {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            Map<String, Object> map = new HashMap<>();
+            List<CompanyInfo> list = companyInfoService.list();
+            map.put("num", list.size());
+
+            messageResult.setData(map);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+    @PostMapping("attributeList")
+    @ApiOperation(value = "属性列表(公开接口)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "name", value = "名称", required = true, paramType = "form")
+    })
+    public MessageResult<Map> attributeList(String name) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            Map<String, Object> map = new HashMap<>();
+            List<DataDictionary> dataDictionaryList = dataDictionaryService.findByCatalogName(name);
+            map.put("list", dataDictionaryList);
+
+            messageResult.setData(map);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    @PostMapping("companyList")
+    @ApiOperation(value = "企业列表(公开接口)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "region", value = "区域", required = false, paramType = "form"),
+            @ApiImplicitParam(name = "type", value = "企业类型", required = false, paramType = "form"),
+            @ApiImplicitParam(name = "scale", value = "企业规模", required = false, paramType = "form"),
+            @ApiImplicitParam(name = "industry", value = "所属行业", required = false, paramType = "form"),
+
+    })
+    public MessageResult<Map> companyList(String region, String type, String scale, String industry, @RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+            List<CompanyInfoListDTO> list = new ArrayList<>();
+            Map<String, Object> searchParams = new HashMap<>();
+            if (StringUtils.isNotBlank(region)) {
+                searchParams.put("region", region);
+            }
+            if (StringUtils.isNotBlank(type)) {
+                searchParams.put("type", type);
+            }
+            if (StringUtils.isNotBlank(scale)) {
+                searchParams.put("scale", scale);
+            }
+            if (StringUtils.isNotBlank(industry)) {
+                searchParams.put("industry", industry);
+            }
+
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("create_time", "desc"));
+            Page<CompanyInfo> page = companyInfoService.pageSearch(searchParams, pageIndex, pageSize, true, sortList);
+
+            List<CompanyInfo> companyInfoList = page.getResult();
+            if (companyInfoList.size() > 0) {
+                for (CompanyInfo companyInfo : companyInfoList) {
+
+                    CompanyInfoListDTO companyInfoListDTO = new CompanyInfoListDTO();
+                    BeanUtils.copyProperties(companyInfo, companyInfoListDTO);
+                    companyInfoListDTO.setRegionName(dataDictionaryService.findNameByCatalogNameAndValue("区域", companyInfo.getRegion()));
+                    companyInfoListDTO.setTypeName(dataDictionaryService.findNameByCatalogNameAndValue("企业类型", companyInfo.getType()));
+                    companyInfoListDTO.setScaleName(dataDictionaryService.findNameByCatalogNameAndValue("企业规模", companyInfo.getScale()));
+                    companyInfoListDTO.setIndustryName(dataDictionaryService.findNameByCatalogNameAndValue("所属行业", companyInfo.getIndustry()));
+                    list.add(companyInfoListDTO);
+
+                }
+            }
+
+            Map<String, Object> pageMap = new HashMap<>();
+
+            pageMap.put("recordsTotal", page.getTotal());
+            pageMap.put("recordsFiltered", page.getTotal());
+            pageMap.put("totalPage", page.getPages());
+            pageMap.put("pageNumber", page.getPageNum());
+            pageMap.put("pageSize", page.getPageSize());
+            pageMap.put("data", list);
+
+
+            messageResult.setData(pageMap);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+    @PostMapping("companyDetail")
+    @ApiOperation(value = "企业详情(公开接口)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "id", required = true, paramType = "form")
+    })
+    public MessageResult<Map> companyDetail(String id) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            Map<String, Object> map = new HashMap<>();
+            CompanyInfo companyInfo = companyInfoService.get(id);
+            if (companyInfo == null) {
+                throw new Exception("企业不存在");
+            }
+
+            CompanyInfoDetailDTO companyInfoDetailDTO = new CompanyInfoDetailDTO();
+            BeanUtils.copyProperties(companyInfo, companyInfoDetailDTO);
+            companyInfoDetailDTO.setTypeName(dataDictionaryService.findNameByCatalogNameAndValue("企业类型", companyInfo.getType()));
+            companyInfoDetailDTO.setScaleName(dataDictionaryService.findNameByCatalogNameAndValue("企业规模", companyInfo.getScale()));
+            companyInfoDetailDTO.setIndustryName(dataDictionaryService.findNameByCatalogNameAndValue("所属行业", companyInfo.getIndustry()));
+
+            //企业风采
+            List<NewsInfoListDTO> newsInfoDTOList = new ArrayList<>();
+            Map<String,Object> searchParams = new HashMap<>();
+            searchParams.put("newsTypeName","企业风采");
+            searchParams.put("companyId",companyInfo.getId());
+
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("a.create_time","desc"));
+
+            Page<NewsInfo> page = newsInfoService.pageSearch(searchParams,1,3,false,sortList);
+
+            List<NewsInfo> newsInfoList = page.getResult();
+            if (newsInfoList.size()>0){
+                for (NewsInfo newsInfo : newsInfoList){
+                    NewsInfoListDTO newsInfoListDTO = new NewsInfoListDTO();
+                    BeanUtils.copyProperties(newsInfo,newsInfoListDTO);
+                    NewsType newsType = newsTypeService.get(newsInfo.getNewsTypeId());
+                    newsInfoListDTO.setTypeName(newsType.getName());
+                    newsInfoListDTO.setCreateTime(DateUtil.format(newsInfo.getCreateTime(),"yyyy-MM-dd"));
+                    newsInfoDTOList.add(newsInfoListDTO);
+                }
+            }
+
+            companyInfoDetailDTO.setNewsInfoDTOList(newsInfoDTOList);
+
+            map.put("companyInfo",companyInfoDetailDTO);
+
+            messageResult.setData(map);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+}

+ 225 - 0
web/src/main/java/com/jpsoft/enterprise/modules/mobile/controller/NewsInfoApiController.java

@@ -0,0 +1,225 @@
+package com.jpsoft.enterprise.modules.mobile.controller;
+
+import cn.hutool.core.date.DateUtil;
+import com.jpsoft.enterprise.modules.base.dto.NewsInfoDTO;
+import com.jpsoft.enterprise.modules.base.dto.NewsInfoListDTO;
+import com.jpsoft.enterprise.modules.base.dto.NewsTypeDTO;
+import com.jpsoft.enterprise.modules.base.entity.CompanyInfo;
+import com.jpsoft.enterprise.modules.base.entity.NewsInfo;
+import com.jpsoft.enterprise.modules.base.entity.NewsType;
+import com.jpsoft.enterprise.modules.base.service.NewsInfoService;
+import com.jpsoft.enterprise.modules.base.service.NewsTypeService;
+import com.jpsoft.enterprise.modules.common.dto.MessageResult;
+import com.jpsoft.enterprise.modules.common.dto.Sort;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.github.pagehelper.Page;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2021-1-4 9:24
+ */
+@RestController
+@RequestMapping("/mobile/newsInfoApi")
+@Slf4j
+public class NewsInfoApiController {
+
+
+    @Autowired
+    private NewsTypeService newsTypeService;
+
+    @Autowired
+    private NewsInfoService newsInfoService;
+
+    @PostMapping("firstLevelDirectory")
+    @ApiOperation(value = "新闻中心一级目录(公开接口)")
+    public MessageResult<Map> firstLevelDirectory() {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            Map<String,Object> map = new HashMap<>();
+            List<NewsType> newsTypeList = newsTypeService.findByParentId("0");
+            List<NewsTypeDTO> list = new ArrayList<>();
+
+            if (newsTypeList.size()>0){
+                for (NewsType newsType : newsTypeList){
+                    NewsTypeDTO newsTypeDTO = new NewsTypeDTO();
+                    BeanUtils.copyProperties(newsType,newsTypeDTO);
+                    list.add(newsTypeDTO);
+                }
+            }
+            map.put("list",list);
+            messageResult.setData(map);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    @PostMapping("secondLevelDirectory")
+    @ApiOperation(value = "新闻中心二级目录(公开接口)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "parentId", value = "父类id", required = true, paramType = "form")
+    })
+    public MessageResult<Map> secondLevelDirectory(String parentId) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            Map<String,Object> map = new HashMap<>();
+            List<NewsType> newsTypeList = newsTypeService.findByParentId(parentId);
+            List<NewsTypeDTO> list = new ArrayList<>();
+
+            if (newsTypeList.size()>0){
+                for (NewsType newsType : newsTypeList){
+                    NewsTypeDTO newsTypeDTO = new NewsTypeDTO();
+                    BeanUtils.copyProperties(newsType,newsTypeDTO);
+                    list.add(newsTypeDTO);
+                }
+            }
+            map.put("list",list);
+            messageResult.setData(map);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    @PostMapping("newsList")
+    @ApiOperation(value = "新闻列表(公开接口)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "目录id", required = true, paramType = "form"),
+            @ApiImplicitParam(name = "companyId", value = "公司id", required = false, paramType = "form")
+    })
+    public MessageResult<Map> newsList(String id,String companyId,@RequestParam(value="pageIndex",defaultValue="1") int pageIndex,@RequestParam(value="pageSize",defaultValue="10") int pageSize) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+            List<NewsInfo> newsInfos = new ArrayList<>();
+            List<NewsInfoListDTO> list = new ArrayList<>();
+
+
+
+            Map<String,Object> searchParams = new HashMap<>();
+            searchParams.put("newsTypeId",id);
+            if (StringUtils.isNotBlank(companyId)){
+                searchParams.put("companyId",companyId);
+            }
+
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("a.create_time","desc"));
+            Page<NewsInfo> page = newsInfoService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+             newsInfos = page.getResult();
+            if (newsInfos.size()==0){
+                Map<String,Object> searchParams2 = new HashMap<>();
+                searchParams2.put("newsTypeParentId",id);
+                if (StringUtils.isNotBlank(companyId)){
+                    searchParams2.put("companyId",companyId);
+                }
+                List<Sort> sortList2 = new ArrayList<>();
+                sortList.add(new Sort("a.create_time","desc"));
+                page = newsInfoService.pageSearch(searchParams2,pageIndex,pageSize,true,sortList2);
+                 newsInfos = page.getResult();
+
+            }
+
+            if (newsInfos.size()>0){
+
+                for (NewsInfo newsInfo : newsInfos){
+                    NewsInfoListDTO newsInfoListDTO = new NewsInfoListDTO();
+                    BeanUtils.copyProperties(newsInfo,newsInfoListDTO);
+                    NewsType newsType = newsTypeService.get(newsInfo.getNewsTypeId());
+                    newsInfoListDTO.setTypeName(newsType.getName());
+                    newsInfoListDTO.setCreateTime(DateUtil.format(newsInfo.getCreateTime(),"yyyy-MM-dd"));
+                    list.add(newsInfoListDTO);
+                 }
+            }
+
+
+            Map<String,Object> pageMap = new HashMap<>();
+
+            pageMap.put("recordsTotal",page.getTotal());
+            pageMap.put("recordsFiltered",page.getTotal());
+            pageMap.put("totalPage",page.getPages());
+            pageMap.put("pageNumber",page.getPageNum());
+            pageMap.put("pageSize",page.getPageSize());
+            pageMap.put("data", list);
+
+            messageResult.setData(pageMap);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+    @PostMapping("newsDetail")
+    @ApiOperation(value = "新闻详情(公开接口)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "id", required = true, paramType = "form")
+    })
+    public MessageResult<NewsInfoDTO> newsDetail(String id) {
+        MessageResult<NewsInfoDTO> messageResult = new MessageResult<>();
+
+        try {
+            NewsInfo newsInfo = newsInfoService.get(id);
+            if (newsInfo == null){
+                throw new Exception("新闻已下架");
+            }
+            newsInfo.setReaderNum(newsInfo.getReaderNum() + 1);
+            newsInfoService.update(newsInfo);
+
+            NewsInfoDTO newsInfoDTO = new NewsInfoDTO();
+            BeanUtils.copyProperties(newsInfo,newsInfoDTO);
+            newsInfoDTO.setCreateTime(DateUtil.format(newsInfo.getCreateTime(),"yyyy-MM-dd"));
+
+
+
+            messageResult.setData(newsInfoDTO);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+}

+ 349 - 0
web/src/main/java/com/jpsoft/enterprise/modules/mobile/controller/PersonInfoApiController.java

@@ -0,0 +1,349 @@
+package com.jpsoft.enterprise.modules.mobile.controller;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.jpsoft.enterprise.modules.base.entity.PersonInfo;
+import com.jpsoft.enterprise.modules.base.service.PersonInfoService;
+import com.jpsoft.enterprise.modules.common.dto.MessageResult;
+import com.jpsoft.enterprise.modules.common.utils.AESUtil;
+import com.jpsoft.enterprise.modules.common.utils.JwtUtil;
+import com.jpsoft.enterprise.modules.common.utils.SMSUtil;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import net.sf.json.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.ValueOperations;
+import org.springframework.web.bind.annotation.*;
+import sun.security.provider.MD5;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2020-12-31 9:08
+ */
+@RestController
+@RequestMapping("/mobile/personInfoApi")
+@Slf4j
+public class PersonInfoApiController {
+
+    @Value("${jwt.secret}")
+    private String jwtSecret;
+
+    @Autowired
+    private PersonInfoService personInfoService;
+
+    @Autowired
+    private ValueOperations<String, Object> valueOperations;
+
+
+
+
+
+
+    @PostMapping("findByPhone")
+    @ApiOperation(value = "通过手机号查询用户(公开接口)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "phone", value = "电话号码", required = true, paramType = "form")
+    })
+    public MessageResult<String> findByPhone(String phone) {
+        MessageResult<String> messageResult = new MessageResult<>();
+
+        try {
+            String id = "";
+            if (StringUtils.isNotBlank(phone)) {
+                PersonInfo personInfo = personInfoService.findByPhone(phone);
+
+                if (personInfo == null) {
+                    throw new Exception("该手机号未注册");
+                }
+                id = personInfo.getId();
+            }
+
+            messageResult.setData(id);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+
+    @PostMapping("getVerifyCode")
+    @ApiOperation(value = "获取短信验证码(公开接口)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "phone", value = "手机号码", required = true, paramType = "form")
+    })
+    public MessageResult<String> getVerifyCode(String phone) {
+        MessageResult<String> messageResult = new MessageResult<>();
+
+        try {
+            PersonInfo personInfo = personInfoService.findByPhone(phone);
+
+            if (personInfo == null) {
+                throw new Exception("用户不存在!");
+            }
+
+            String key = "SMS_" + personInfo.getId();
+
+            String verifyCode = (String) valueOperations.get(key);
+
+            if (StringUtils.isEmpty(verifyCode)) {
+                verifyCode = SMSUtil.generateNumberString(6);
+                JSONObject verifyCodeJSON = new JSONObject();
+                verifyCodeJSON.put("code", verifyCode);
+
+                //     messageResult = SMSUtil.send(merchantInfo.getContactPhone(), "SMS_49390047", verifyCodeJSON.toString());
+                messageResult = SMSUtil.send(personInfo.getPhone(), "校信达", "SMS_49390047", verifyCodeJSON);
+
+                //设置当前用户的验证码,5分钟内有效
+                valueOperations.set(key, verifyCode, 5, TimeUnit.MINUTES);
+            }
+
+            messageResult.setData(personInfo.getId());
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+
+    @ApiOperation(value = "密码登录")
+    @RequestMapping(value = "loginByPassword", method = RequestMethod.POST)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userName", value = "用户名", required = true, paramType = "form"),
+            @ApiImplicitParam(name = "password", value = "密码", required = true, paramType = "form"),
+            @ApiImplicitParam(name = "openId", value = "微信ID", required = true, paramType = "query")
+    })
+    public MessageResult<Map> loginByPassword(String userName,String password,String openId) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try{
+            PersonInfo personInfo = personInfoService.findByUserName(userName);
+            if (personInfo == null){
+                throw new Exception("用户名或密码错误");
+            }
+            if (StringUtils.isBlank(personInfo.getPassword())){
+                throw new Exception("该账户未设置密码,请使用验证码登录");
+            }
+            if (!AESUtil.encrypt(password, AESUtil.MYSQL_ENC_KEY).equals(personInfo.getPassword())){
+                throw new Exception("用户名或密码错误");
+            }
+
+            personInfo.setOpenId(openId);
+            personInfo.setUpdateTime(new Date());
+            personInfoService.update(personInfo);
+
+
+            String token = JwtUtil.createToken(jwtSecret, personInfo.getId() + "", DateUtil.offsetHour(new Date(),6));
+
+            Map<String, Object> dataMap = new HashMap<String, Object>();
+            dataMap.put("personInfo", personInfo);
+            dataMap.put("token", token);
+
+            messageResult.setData(dataMap);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        }catch (Exception ex){
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+
+    }
+
+    @PostMapping("validateCode")
+    @ApiOperation(value = "验证短信验证码(公开接口)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "phone", value = "phone", required = true, paramType = "query"),
+            @ApiImplicitParam(name = "openId", value = "微信ID", required = true, paramType = "query"),
+            @ApiImplicitParam(name = "code", value = "验证码", required = true, paramType = "query")
+    })
+    public MessageResult<Map> validateCode(String phone, String openId, String code) {
+
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            PersonInfo personInfo = personInfoService.findByPhone(phone);
+            if (personInfo == null){
+                throw new Exception("用户不存在");
+            }
+            String smsKey = "SMS_" + personInfo.getId();
+
+            String beforeVerifyCode = (String) valueOperations.get(smsKey);
+
+            if (StringUtils.isEmpty(beforeVerifyCode)) {
+                throw new Exception("验证码已过期!");
+            }
+
+            if (!beforeVerifyCode.equals(code)) {
+                throw new Exception("验证码错误!");
+            }
+
+            Map<String, Object> dataMap = new HashMap<String, Object>();
+
+            if (StringUtils.isNotEmpty(openId)) {
+
+                personInfo.setOpenId(openId);
+                personInfo.setUpdateTime(new Date());
+                personInfoService.update(personInfo);
+
+
+                    String token = JwtUtil.createToken(jwtSecret, personInfo.getId() + "", DateUtil.offsetHour(new Date(),6));
+
+                    dataMap.put("personInfo", personInfo);
+                    dataMap.put("token", token);
+
+            }
+
+            messageResult.setData(dataMap);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+
+    @PostMapping("findByOpenId")
+    @ApiOperation(value = "获取个人信息(公开接口)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "openId", value = "微信ID", required = true, paramType = "query")
+    })
+    public MessageResult<Map> findByOpenId(String openId) {
+
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            Map<String, Object> dataMap = new HashMap<String, Object>();
+            PersonInfo personInfo = personInfoService.findByOpenId(openId);
+           if (personInfo != null){
+               String token = JwtUtil.createToken(jwtSecret, personInfo.getId() + "", DateUtil.offsetHour(new Date(),6));
+               dataMap.put("personInfo", personInfo);
+               dataMap.put("token", token);
+           }
+
+            messageResult.setData(dataMap);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    @PostMapping("resetPassword ")
+    @ApiOperation(value = "重置密码")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "token", value = "令牌", required = true, paramType = "form"),
+            @ApiImplicitParam(name = "subject", value = "目标(不传)", paramType = "form"),
+            @ApiImplicitParam(name = "firstPassword", value = "首次密码", required = true, paramType = "form"),
+            @ApiImplicitParam(name = "secondPassword", value = "二次密码", required = true, paramType = "form")
+    })
+    public MessageResult<Map> resetPassword(@RequestAttribute String subject, String token, String firstPassword,String secondPassword) {
+
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+
+            Map<String, Object> dataMap = new HashMap<String, Object>();
+            PersonInfo personInfo = personInfoService.get(subject);
+            if (!firstPassword.equals(secondPassword)){
+                throw new Exception("两次密码不一致");
+            }
+
+
+            if (personInfo != null){
+               personInfo.setPassword(AESUtil.encrypt(secondPassword,AESUtil.MYSQL_ENC_KEY));
+               personInfo.setUpdateTime(new Date());
+               personInfoService.update(personInfo);
+            }
+
+            messageResult.setData(dataMap);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(),ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+
+
+    @PostMapping("logOut")
+    @ApiOperation(value = "用户登出")
+    public MessageResult<Map> logOut(String token, @RequestAttribute String subject) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+            PersonInfo personInfo = personInfoService.get(subject);
+
+            if (personInfo == null) {
+                messageResult.setResult(true);
+                messageResult.setCode(200);
+                return messageResult;
+
+            }
+
+            Map<String, Object> dataMap = new HashMap<String, Object>();
+
+
+            personInfo.setOpenId(" ");
+            personInfoService.update(personInfo);
+
+            messageResult.setData(dataMap);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+
+}