LiTaohong il y a 6 ans
Parent
commit
4bb11b1719
29 fichiers modifiés avec 463 ajouts et 81 suppressions
  1. 4 2
      common/common-entity/src/main/java/com/yihu/jw/entity/base/org/BaseOrgDO.java
  2. 25 3
      common/common-entity/src/main/java/com/yihu/jw/entity/base/saas/SaasDO.java
  3. 4 0
      common/common-exception/src/main/java/com/yihu/jw/exception/code/BaseErrorCode.java
  4. 3 0
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java
  5. 23 3
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/saas/SaasVO.java
  6. 11 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/wx/WxReplySceneVO.java
  7. 9 0
      common/common-util/src/main/java/com/yihu/jw/util/excel/ExcelUtil.java
  8. 3 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/BaseOrgDao.java
  9. 11 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/wx/WxReplySceneDao.java
  10. 10 1
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/common/populationBatchImport/PopulationMsg.java
  11. 1 0
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/common/populationBatchImport/PopulationMsgReader.java
  12. 2 2
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/module/InterfaceEndpoint.java
  13. 7 6
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/module/ModuleEndpoint.java
  14. 2 2
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/module/SaasInterfaceEndpoint.java
  15. 2 2
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/notice/NoticeEndPoint.java
  16. 45 15
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/open/register/RegisterEndpoint.java
  17. 12 5
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/population/BasePopulationEndpoint.java
  18. 20 9
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/saas/SaasEndpoint.java
  19. 16 1
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/wx/WechatController.java
  20. 3 3
      svr/svr-base/src/main/java/com/yihu/jw/base/service/population/BasePopulationService.java
  21. 140 2
      svr/svr-base/src/main/java/com/yihu/jw/base/service/saas/SaasService.java
  22. 12 10
      svr/svr-base/src/main/java/com/yihu/jw/base/service/wx/WeChatQrcodeService.java
  23. 1 1
      svr/svr-base/src/main/java/com/yihu/jw/base/service/wx/WechatCoreService.java
  24. 41 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/wx/WechatService.java
  25. 50 8
      svr/svr-base/src/main/resources/application.yml
  26. 1 1
      svr/svr-iot/src/main/java/com/yihu/iot/service/device/IotDeviceOrderService.java
  27. 2 2
      svr/svr-manage/src/main/resources/webapp/html/login/login.html
  28. 1 1
      svr/svr-manage/src/main/resources/webapp/html/system/role/html/userRole.html
  29. 2 2
      svr/svr-manage/src/main/resources/webapp/html/version/server/html/userVersion.html

+ 4 - 2
common/common-entity/src/main/java/com/yihu/jw/entity/base/org/BaseOrgDO.java

@ -142,8 +142,10 @@ public class BaseOrgDO extends UuidIdentityEntityWithOperator {
	 */
	private String del;
	public BaseOrgDO(){}
	public BaseOrgDO(String provinceCode,String provinceName,String cityCode,String cityName,String townCode,String townName,String code,String name ){
    public BaseOrgDO() {
    }
    public BaseOrgDO(String provinceCode, String provinceName, String cityCode, String cityName, String townCode, String townName, String code, String name ){
	    this.provinceCode = provinceCode;
	    this.provinceName = provinceName;
	    this.cityCode = cityCode;

+ 25 - 3
common/common-entity/src/main/java/com/yihu/jw/entity/base/saas/SaasDO.java

@ -35,7 +35,7 @@ public class SaasDO extends UuidIdentityEntityWithOperator {
	private Status status; // 状态(0-待审核 1-审核通过(启用) 2-审核不通过 3-已暂停)
	private String remark; //备注
	private String logo; //远程fastDFS文件地址
    private Integer type; //类型
    private String type; //类型
	private String manager; //管理员 - 关联user表id字段
	private String email; //管理员邮箱
	private String mobile; //管理员手机号码
@ -48,6 +48,10 @@ public class SaasDO extends UuidIdentityEntityWithOperator {
    private String auditFailedReason;
    //管理员姓名
    private String managerName;
    //对外开放接口的appid
    private String appId;
    //对外开放接口的appSecret
    private String appSecret;
    //机构
    List<BaseOrgDO> orgList;
    //业务模块
@ -92,11 +96,11 @@ public class SaasDO extends UuidIdentityEntityWithOperator {
	}
	@Column(name = "type", nullable = false)
	public Integer getType() {
	public String getType() {
		return type;
	}
	public void setType(Integer type) {
	public void setType(String type) {
		this.type = type;
	}
@ -216,4 +220,22 @@ public class SaasDO extends UuidIdentityEntityWithOperator {
    public void setSaasThemeList(List<SaasThemeDO> saasThemeList) {
        this.saasThemeList = saasThemeList;
    }
    @Column(name = "app_id")
    public String getAppId() {
        return appId;
    }
    public void setAppId(String appId) {
        this.appId = appId;
    }
    @Column(name = "app_secret")
    public String getAppSecret() {
        return appSecret;
    }
    public void setAppSecret(String appSecret) {
        this.appSecret = appSecret;
    }
}

+ 4 - 0
common/common-exception/src/main/java/com/yihu/jw/exception/code/BaseErrorCode.java

@ -55,6 +55,10 @@ public class BaseErrorCode {
         * 该租户已注册过,请直接
         */
        public static final String NAME_IS_EXIST2 = "-101005";
        /**
         * 只有审核未通过才可以查看
         */
        public static final String IS_NOT_AUDITNOTPASSED = "-101006";
    }
    /**

+ 3 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java

@ -29,6 +29,7 @@ public class BaseRequestMapping {
        public static final String PREFIX  = "/saas";
        public static final String SYSTEM_CONFIGURATION  = "/system_configuration";
        public static final String THEME_STYLE  = "/theme_style";
        public static final String RESET_SECRET  = "/reset_secret";
        public static final String AUDIT  = "/audit";
    }
@ -40,6 +41,7 @@ public class BaseRequestMapping {
        public static final String REGISTER  = "/register";
        public static final String SEND_EMAIL  = "/sendEmail";
        public static final String NAME_IS_EXIST  = "/nameIsExist";
        public static final String FIND_BY_ID  = "/findById";
        public static final String SAAS_TYPE_DICT  = "/saasTypeDict";
    }
@ -254,6 +256,7 @@ public class BaseRequestMapping {
        public static final String deleteImgGroupRelation ="/deleteImgGroupRelation";
        public static final String saveWxReplyScene ="/saveWxReplyScene";
        public static final String findWxReplySceneExist ="/findWxReplySceneExist";
        public static final String findWxReplyScene ="/findWxReplyScene";
        public static final String saveWxTemp ="/saveWxTemp";
        public static final String findWxtemp ="/findWxtemp";

+ 23 - 3
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/saas/SaasVO.java

@ -28,7 +28,7 @@ public class SaasVO extends UuidIdentityVOWithOperator {
	@ApiModelProperty(value = "远程fastDFS文件地址", example = "group1:M00/97/E9/wKgyJltp1i-AHHf6AAAvRXBaR18423.zip")
	private String logo;
	@ApiModelProperty(value = "类型(租户类型编码,从1开始自增)", example = "1")
    private Integer type;
    private String type;
	@ApiModelProperty(value = "管理员 - 关联user表id字段", example = "402303ee656498890165649ad2wa00sd")
	private String manager;
	@ApiModelProperty(value = "管理员邮箱", example = "admin@jkzl.com")
@ -51,6 +51,10 @@ public class SaasVO extends UuidIdentityVOWithOperator {
	private String areaNumber;
	@ApiModelProperty(value = "主题色", example = "主题色")
	private String themeColor;
	@ApiModelProperty(value = "对外开放接口的appid", example = "对外开放接口的appid")
	private String appId;
	@ApiModelProperty(value = "对外开放接口的appSecret", example = "对外开放接口的appid")
	private String appSecret;
	@ApiModelProperty(value = "机构", example = "机构")
	List<BaseOrgVO> orgList;
@ -100,11 +104,11 @@ public class SaasVO extends UuidIdentityVOWithOperator {
		this.logo = logo;
	}
	public Integer getType() {
	public String getType() {
		return type;
	}
	public void setType(Integer type) {
	public void setType(String type) {
		this.type = type;
	}
@ -219,4 +223,20 @@ public class SaasVO extends UuidIdentityVOWithOperator {
	public void setSaasThemeList(List<SaasThemeVO> saasThemeList) {
		this.saasThemeList = saasThemeList;
	}
	public String getAppId() {
		return appId;
	}
	public void setAppId(String appId) {
		this.appId = appId;
	}
	public String getAppSecret() {
		return appSecret;
	}
	public void setAppSecret(String appSecret) {
		this.appSecret = appSecret;
	}
}

+ 11 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/wx/WxReplySceneVO.java

@ -6,6 +6,9 @@ import io.swagger.annotations.ApiModelProperty;
 * Created by Administrator on 2018/10/9.
 */
public class WxReplySceneVO {
    @ApiModelProperty(value = "id")
    private String id;
    @ApiModelProperty(value = "微信id(唯一)")
    private String wechatId;//微信id(唯一)
    @ApiModelProperty(value = "原始ID(唯一)")
@ -21,6 +24,14 @@ public class WxReplySceneVO {
    @ApiModelProperty(value = "状态(-1删除 0 冻结 1可用")
    private Integer status;//状态(-1删除 0 冻结 1可用
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getWechatId() {
        return wechatId;
    }

+ 9 - 0
common/common-util/src/main/java/com/yihu/jw/util/excel/ExcelUtil.java

@ -36,4 +36,13 @@ public abstract class ExcelUtil implements Serializable {
    public boolean equals(Object obj) {
        return getExcelSeq() == ((ExcelUtil) obj).getExcelSeq();
    }
    public String getAllErrorMsg(int seq){
        StringBuffer stringBuffer=new StringBuffer();
        stringBuffer.append("第"+seq+"行:");
        for(String str:errorMsg.keySet()){
            stringBuffer.append(errorMsg.get(str)+";");
        }
        return stringBuffer.toString();
    };
}

+ 3 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/org/BaseOrgDao.java

@ -45,6 +45,9 @@ public interface BaseOrgDao extends PagingAndSortingRepository<BaseOrgDO, String
    @Query("select new BaseOrgDO(provinceCode,provinceName,cityCode,cityName,townCode,townName,code,name) from BaseOrgDO")
    List<BaseOrgDO> findOrgByArea();
    @Query(value="select b.* from base_org b where b.code= ?1 and b.saasid= ?2 limit 1",nativeQuery = true)
    BaseOrgDO findByCodeAndSaasId(String code,String saasId);
    boolean existsByCode(String code);
    @Modifying

+ 11 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/wx/WxReplySceneDao.java

@ -15,4 +15,15 @@ public interface WxReplySceneDao extends PagingAndSortingRepository<WxReplyScene
    List<WxReplySceneDO> findByAppOriginIdAndMsgTypeAndStatus(String appOriginId, String msgType, Integer status);
    List<WxReplySceneDO> findByAppOriginIdAndMsgTypeAndEventAndStatus(String appOriginId, String msgType, String event, Integer status);
    //text类型,判断同关键字的事件是否存在
    List<WxReplySceneDO> findByWechatIdAndMsgTypeAndContentAndStatus(String wechatId,String msgType,String content,Integer status);
    //关注事件,判断关注事件是否存在
    List<WxReplySceneDO> findByWechatIdAndMsgTypeAndEventAndStatus(String wechatId,String msgType,String event,Integer status);
    //点击事件,扫码事件,是否存在相同场景值
    List<WxReplySceneDO> findByWechatIdAndMsgTypeAndEventAndSceneAndStatus(String wechatId,String msgType,String event,String scene,Integer status);
}

+ 10 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/common/populationBatchImport/PopulationMsg.java

@ -1,12 +1,14 @@
package com.yihu.jw.base.endpoint.common.populationBatchImport;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.excel.ExcelUtil;
import com.yihu.jw.util.excel.Validation;
import com.yihu.jw.util.excel.annotation.Location;
import com.yihu.jw.util.excel.annotation.Row;
import com.yihu.jw.util.excel.annotation.Title;
import com.yihu.jw.util.excel.annotation.ValidRepeat;
import org.apache.commons.lang3.StringUtils;
import javax.persistence.Column;
import java.util.Date;
@ -62,7 +64,7 @@ public class PopulationMsg extends ExcelUtil implements Validation {
    private String  districtName;
    //慢病人数
    private Integer ncdNum;
    int yearNow = DateUtil.getNowYear();
    @Override
    public int validate(Map<String, Set> repeatMap) {
@ -71,6 +73,13 @@ public class PopulationMsg extends ExcelUtil implements Validation {
            rs = 0;
            addErrorMsg("saasName", "已添加"+year+saasName+"的基础人口信息,请直接修改即可");
        }
        if(StringUtils.isBlank(year)){
            rs = 0;
            addErrorMsg("year", "年份不能为空!");
        }else if(year.compareTo(String.valueOf(yearNow))>0){
            rs = 0;
            addErrorMsg("year", "年份不能大于当前年份!");
        }
        if(populationNum<0){
            rs = 0;
            addErrorMsg("populationNum", "常住人口数不能小于0!");

+ 1 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/common/populationBatchImport/PopulationMsgReader.java

@ -43,6 +43,7 @@ public class PopulationMsgReader extends AExcelReader {
                    populationMsg.setDmNum(null == getCellCont(sheet, i, 4) ? 0 : Integer.valueOf(getCellCont(sheet, i, 4).trim()));
                    populationMsg.setHbpNum(null == getCellCont(sheet, i, 5) ? 0 : Integer.valueOf(getCellCont(sheet, i, 5).trim()));
                    populationMsg.setTaskNum(null == getCellCont(sheet, i, 6) ? 0 : Integer.valueOf(getCellCont(sheet, i, 6).trim()));
                    populationMsg.setExcelSeq(i);
                    int rs = populationMsg.validate(repeat);
                    if (rs == 0) {
                        errorLs.add(populationMsg);

+ 2 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/module/InterfaceEndpoint.java

@ -38,7 +38,7 @@ public class InterfaceEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "创建")
    public ObjEnvelop<InterfaceVO> create (
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
            @RequestParam String jsonData) throws Exception {
        InterfaceDO interfaceDO = toEntity(jsonData, InterfaceDO.class);
        interfaceDO = interfaceService.addInterface(interfaceDO);
@ -79,7 +79,7 @@ public class InterfaceEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "更新")
    public ObjEnvelop<InterfaceVO> update (
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
            @RequestParam String jsonData) throws Exception {
        InterfaceDO interfaceDO = toEntity(jsonData, InterfaceDO.class);
        if (null == interfaceDO.getId()) {
            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Common.ID_IS_NULL), ObjEnvelop.class);

+ 7 - 6
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/module/ModuleEndpoint.java

@ -17,10 +17,11 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -37,11 +38,11 @@ public class ModuleEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private ErrorCodeUtil errorCodeUtil;
    @PostMapping(value = BaseRequestMapping.Module.CREATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @PostMapping(value = BaseRequestMapping.Module.CREATE)
    @ApiOperation(value = "创建")
    public ObjEnvelop<ModuleVO> create (
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
            @RequestParam String jsonData) throws Exception {
        ModuleDO module = toEntity(jsonData, ModuleDO.class);
        int count = moduleService.isExistName(module.getName());
        if(count>0){
@ -79,11 +80,11 @@ public class ModuleEndpoint extends EnvelopRestEndpoint {
        return success("删除成功");
    }
    @PostMapping(value = BaseRequestMapping.Module.UPDATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @PostMapping(value = BaseRequestMapping.Module.UPDATE)
    @ApiOperation(value = "更新")
    public ObjEnvelop<ModuleVO> update (
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
            @RequestParam String jsonData) throws Exception {
        ModuleDO module = toEntity(jsonData, ModuleDO.class);
        if (null == module.getId()) {
            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Common.ID_IS_NULL), ObjEnvelop.class);

+ 2 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/module/SaasInterfaceEndpoint.java

@ -38,7 +38,7 @@ public class SaasInterfaceEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "创建")
    public ObjEnvelop<SaasInterfaceVO> create (
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
            @RequestParam String jsonData) throws Exception {
        SaasInterfaceDO interfaceDO = toEntity(jsonData, SaasInterfaceDO.class);
        interfaceDO = interfaceService.addInterface(interfaceDO);
@ -79,7 +79,7 @@ public class SaasInterfaceEndpoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "更新")
    public ObjEnvelop<SaasInterfaceVO> update (
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
            @RequestParam String jsonData) throws Exception {
        SaasInterfaceDO interfaceDO = toEntity(jsonData, SaasInterfaceDO.class);
        if (null == interfaceDO.getId()) {
            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Common.ID_IS_NULL), ObjEnvelop.class);

+ 2 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/notice/NoticeEndPoint.java

@ -38,7 +38,7 @@ public class NoticeEndPoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "创建")
    public ObjEnvelop<NoticeVO> create (
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
            @RequestParam String jsonData) throws Exception {
        NoticeDO noticeDO = toEntity(jsonData, NoticeDO.class);
        if(StringUtils.isBlank(noticeDO.getTitle())||noticeDO.getTitle().length()>50){
            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Notice.LIMIT_TITLE), ObjEnvelop.class);
@ -77,7 +77,7 @@ public class NoticeEndPoint extends EnvelopRestEndpoint {
    @ApiOperation(value = "更新")
    public ObjEnvelop<NoticeVO> update (
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
            @RequestParam String jsonData) throws Exception {
        NoticeDO noticeDO = toEntity(jsonData, NoticeDO.class);
        if (null == noticeDO.getId()) {
            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Common.ID_IS_NULL), ObjEnvelop.class);

+ 45 - 15
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/open/register/RegisterEndpoint.java

@ -10,6 +10,7 @@ import com.yihu.jw.entity.base.saas.SaasDO;
import com.yihu.jw.entity.base.saas.SaasTypeDictDO;
import com.yihu.jw.exception.code.BaseErrorCode;
import com.yihu.jw.restmodel.base.saas.SaasTypeDictVO;
import com.yihu.jw.restmodel.base.saas.SaasVO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
@ -17,10 +18,10 @@ import com.yihu.jw.rm.base.BaseRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
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.StringRedisTemplate;
import org.springframework.http.MediaType;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.*;
@ -58,7 +59,7 @@ public class RegisterEndpoint extends EnvelopRestEndpoint {
     */
    private final String redisPrefix = "verificationCode:";
    @PostMapping(value = BaseRequestMapping.RegisterSaas.REGISTER, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @PostMapping(value = BaseRequestMapping.RegisterSaas.REGISTER)
    @ApiOperation(value = "注册租户")
    public Envelop create (
            @ApiParam(name = "jsonSaas", value = "租户数据", required = true)
@ -72,16 +73,33 @@ public class RegisterEndpoint extends EnvelopRestEndpoint {
        if(!captcha.equals(verificationCode)){
            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.CAPTCHA_IS_ERROR), Envelop.class);
        }
        if (saasService.search("name=" + saasDO.getName()).size() > 0) {
            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.NAME_IS_EXIST), Envelop.class);
        }
        if (userService.search("mobile=" + saasDO.getMobile()).size() > 0) {
            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.MOBILE_IS_EXIST), Envelop.class);
        }
        if (userService.search("username=" + saasDO.getEmail()).size() > 0) {
            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.EMAIL_IS_EXIST), Envelop.class);
        if(StringUtils.isBlank(saasDO.getId())){
            //新增
            if (saasService.search("name=" + saasDO.getName()).size() > 0) {
                return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.NAME_IS_EXIST), Envelop.class);
            }
            if (userService.search("mobile=" + saasDO.getMobile()).size() > 0) {
                return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.MOBILE_IS_EXIST), Envelop.class);
            }
            if (userService.search("username=" + saasDO.getEmail()).size() > 0) {
                return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.EMAIL_IS_EXIST), Envelop.class);
            }
            saasService.create(saasDO);
        }else {
            //修改
            SaasDO oldSaas = saasService.findById(saasDO.getId());
            if (!oldSaas.getName().equals(saasDO.getName())&&saasService.search("name=" + saasDO.getName()).size() > 0) {
                return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.NAME_IS_EXIST), Envelop.class);
            }
            if (!oldSaas.getMobile().equals(saasDO.getMobile())&&userService.search("mobile=" + saasDO.getMobile()).size() > 0) {
                return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.MOBILE_IS_EXIST), Envelop.class);
            }
            if (!oldSaas.getEmail().equals(saasDO.getEmail())&&userService.search("username=" + saasDO.getEmail()).size() > 0) {
                return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.EMAIL_IS_EXIST), Envelop.class);
            }
            saasService.create(saasDO,oldSaas);
        }
        saasService.create(saasDO);
        //注册成功后 吧key删除
        redisTemplate.delete(redisKey);
        return success("注册申请成功");
@ -94,6 +112,18 @@ public class RegisterEndpoint extends EnvelopRestEndpoint {
        return success(saasTypeDictDOS, SaasTypeDictVO.class);
    }
    @PostMapping(value = BaseRequestMapping.RegisterSaas.FIND_BY_ID)
    @ApiOperation(value = "查找(审核不通过的)租户")
    public Envelop findById(
            @ApiParam(name = "id", value = "租户id", required = true)
            @RequestParam String id) throws Exception{
        SaasDO saasDO = saasService.findById(id);
        if(SaasDO.Status.auditNotPassed.equals(saasDO.getStatus())){
            return success(saasDO,SaasVO.class);
        }
        return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.IS_NOT_AUDITNOTPASSED), Envelop.class);
    }
    @PostMapping(value = BaseRequestMapping.RegisterSaas.NAME_IS_EXIST)
    @ApiOperation(value = "租户名称是否存在")
    public Envelop create (
@ -129,10 +159,10 @@ public class RegisterEndpoint extends EnvelopRestEndpoint {
            //发送的内容
            content =  new StringBuilder(emailTemplateConfigDO.getFirst());
            content.append("\n").append(emailTemplateConfigDO.getKeyword1()).append("\n")
                    .append(emailTemplateConfigDO.getKeyword2()).append(captcha)
                    .append(emailTemplateConfigDO.getKeyword3()).append("\n")
                    .append(emailTemplateConfigDO.getKeyword5()).append(emailTemplateConfigDO.getUrl())
                    .append("\n").append("\n").append(emailTemplateConfigDO.getRemark());
                .append(emailTemplateConfigDO.getKeyword2()).append(captcha)
                .append(emailTemplateConfigDO.getKeyword3()).append("\n")
                .append(emailTemplateConfigDO.getKeyword5()).append(emailTemplateConfigDO.getUrl())
                .append("\n").append("\n").append(emailTemplateConfigDO.getRemark());
        }
        mainMessage.setSubject("租户注册-验证码");

+ 12 - 5
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/population/BasePopulationEndpoint.java

@ -211,6 +211,9 @@ public class BasePopulationEndpoint extends EnvelopRestEndpoint {
        }
        basePopulation.setDmNum(null == basePopulation.getDmNum() ? 0 : basePopulation.getDmNum());
        basePopulation.setHbpNum(null == basePopulation.getHbpNum() ? 0 : basePopulation.getHbpNum());
        basePopulation.setPopulationNum(null == basePopulation.getPopulationNum() ? 0 : basePopulation.getPopulationNum());
        basePopulation.setRegisPopulationNum(null == basePopulation.getRegisPopulationNum() ? 0 : basePopulation.getRegisPopulationNum());
        basePopulation.setTaskNum(null == basePopulation.getTaskNum() ? 0 : basePopulation.getTaskNum());
        //更新慢病总人数
        basePopulation.setNcdNum(basePopulation.getHbpNum() + basePopulation.getDmNum());
        return basePopulation;
@ -261,7 +264,7 @@ public class BasePopulationEndpoint extends EnvelopRestEndpoint {
        return (null != basePopulationDOList && basePopulationDOList.size() > 0) ? true : false;
    }
    @PostMapping(value = BaseRequestMapping.BasePopulation.POPULATION_BATCH_IMPORT)
    @PostMapping(value = BaseRequestMapping.BasePopulation.POPULATION_BODY_BATCH_IMPORT)
    @Transactional(rollbackFor = Exception.class)
    @ApiOperation(value = "基础人口信息列表导入")
    public Envelop importData(
@ -275,8 +278,12 @@ public class BasePopulationEndpoint extends EnvelopRestEndpoint {
            //验证未通过
            List<PopulationMsg> errorLs = excelReader.getErrorLs();
            List<PopulationMsg> correctLs = excelReader.getCorrectLs();
            if(errorLs.size()>0){
                return failed("格式有误,导入失败!");
            if (errorLs.size() > 0) {
               /* StringBuffer str = new StringBuffer();
                errorLs.forEach(item -> {
                    str.append(item.getAllErrorMsg(item.getExcelSeq()));
                });*/
                return failed("未通过数据验证(年份+租户名称不能重复;统计数不能小于0),导入失败!" /*+ str.toString()*/);
            }
            //获取所有租户+年份的基础人口信息
            Set<String> populationNameAndYear = new HashSet<String>(basePopulationService.getFacilityCodeByServerType());
@ -287,8 +294,8 @@ public class BasePopulationEndpoint extends EnvelopRestEndpoint {
                    model = correctLs.get(i);
                    Map<Boolean, PopulationMsg> map = validate(model, populationNameAndYear);
                    if (null == map.get(true)) {
//                        errorLs.add(model);
                        return failed("格式有误,导入失败!");
                        /*PopulationMsg populationMsg=map.get(false);*/
                        return failed("未通过数据验证(年份+租户名称不能重复;统计数不能小于0),导入失败!"/*+populationMsg.getAllErrorMsg(populationMsg.getExcelSeq())*/);
                    } else {
                        saveLs.add(model);
                    }

+ 20 - 9
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/saas/SaasEndpoint.java

@ -22,13 +22,13 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.UUID;
/**
 * Endpoint - SAAS
@ -54,7 +54,7 @@ public class SaasEndpoint extends EnvelopRestEndpoint {
    @Value("${spring.mail.username}")
    private String username;
    @PostMapping(value = BaseRequestMapping.Saas.CREATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @PostMapping(value = BaseRequestMapping.Saas.CREATE)
    @ApiOperation(value = "创建-基本信息")
    public Envelop create (
            @ApiParam(name = "jsonSaas", value = "租户数据", required = true)
@ -70,21 +70,21 @@ public class SaasEndpoint extends EnvelopRestEndpoint {
            return failed(errorCodeUtil.getErrorMsg(BaseErrorCode.Saas.EMAIL_IS_EXIST), Envelop.class);
        }
        saasService.create(saasDO);
        saasDO.setStatus(SaasDO.Status.auditPassed);
        return send(saasDO);
        return success("创建成功",saasDO);
    }
    @PostMapping(value = BaseRequestMapping.Saas.SYSTEM_CONFIGURATION, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @PostMapping(value = BaseRequestMapping.Saas.SYSTEM_CONFIGURATION)
    @ApiOperation(value = "创建-系统配置")
    public Envelop createSystemConfig (
            @ApiParam(name = "saasDO", value = "Json数据", required = true)
            @RequestParam(value = "saasDO") SaasDO saasDO) throws Exception {
        saasService.saveSystemConfig(saasDO);
        return success("创建成功");
        return success("创建成功",saasDO);
    }
    @PostMapping(value = BaseRequestMapping.Saas.THEME_STYLE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @PostMapping(value = BaseRequestMapping.Saas.THEME_STYLE)
    @ApiOperation(value = "创建-主题风格")
    public Envelop createThemeConfig (
            @ApiParam(name = "saasDO", value = "Json数据", required = true)
@ -94,6 +94,17 @@ public class SaasEndpoint extends EnvelopRestEndpoint {
        return success("创建成功");
    }
    @PostMapping(value = BaseRequestMapping.Saas.RESET_SECRET)
    @ApiOperation(value = "重置密钥")
    public Envelop resetSecret(
            @ApiParam(name = "id", value = "saasId", required = true)
            @RequestParam(value = "id") String id) {
        SaasDO oldSaas = saasService.findById(id);
        oldSaas.setAppSecret(UUID.randomUUID().toString().replaceAll("-", ""));
        oldSaas.setAppId(UUID.randomUUID().toString().replaceAll("-", ""));
        saasService.save(oldSaas);
        return success("重置成功",oldSaas);
    }
    @PostMapping(value = BaseRequestMapping.Saas.DELETE)
    @ApiOperation(value = "删除")
@ -115,7 +126,7 @@ public class SaasEndpoint extends EnvelopRestEndpoint {
        return success("修改成功");
    }
    @PostMapping(value = BaseRequestMapping.Saas.UPDATE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @PostMapping(value = BaseRequestMapping.Saas.UPDATE)
    @ApiOperation(value = "更新")
    public Envelop update (
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
@ -183,7 +194,7 @@ public class SaasEndpoint extends EnvelopRestEndpoint {
        }
        SaasVO saasVO = convertToModel(saasDO, SaasVO.class);
        //根据租户类型编码,获取租户类型名称
        SaasTypeDictDO saasTypeDictDO = saasTypeDictService.findByCode(saasVO.getType());
        SaasTypeDictDO saasTypeDictDO = saasTypeDictService.findById(saasVO.getType());
        saasVO.setTypeName(null == saasTypeDictDO ? "" : saasTypeDictDO.getName());
        return success(saasVO);
    }

+ 16 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/wx/WechatController.java

@ -190,7 +190,7 @@ public class WechatController extends EnvelopRestEndpoint {
        return wechatService.deleteImgGroupRelation(wechatId,scene,imgId);
    }
        @PostMapping(value = BaseRequestMapping.WeChat.saveWxReplyScene)
    @PostMapping(value = BaseRequestMapping.WeChat.saveWxReplyScene)
    @ApiOperation(value = "事件配置场景", notes = "事件配置场景")
    public Envelop saveWxReplyScene(@ApiParam(name = "wxReplySceneJson", value = "事件配置json")
                                    @RequestParam(value = "wxReplySceneJson", required = true)String wxReplySceneJson) throws Exception{
@ -199,6 +199,21 @@ public class WechatController extends EnvelopRestEndpoint {
    }
    @GetMapping(value = BaseRequestMapping.WeChat.findWxReplySceneExist)
    @ApiOperation(value = "验证事件配置是否存在", notes = "验证事件配置是否存在")
    public Envelop findWxReplySceneExist(@ApiParam(name = "wechatId", value = "微信id")
                                         @RequestParam(value = "wechatId", required = true)String wechatId,
                                         @ApiParam(name = "msgType", value = "消息类型")
                                         @RequestParam(value = "msgType", required = true)String msgType,
                                         @ApiParam(name = "event", value = "event")
                                         @RequestParam(value = "event", required = true)String event,
                                         @ApiParam(name = "content", value = "消息文本")
                                         @RequestParam(value = "content", required = false)String content,
                                         @ApiParam(name = "scene", value = "场景值(图文分组)")
                                         @RequestParam(value = "scene", required = true)String scene) {
        return success(BaseRequestMapping.WeChat.api_success,wechatService.findWxReplySceneExist(wechatId,msgType,event,content,scene));
    }
    @GetMapping(value = BaseRequestMapping.WeChat.findWxReplyScene)
    @ApiOperation(value = "获取消息配置场景", notes = "获取消息配置场景")
    public MixEnvelop<WxReplySceneVO,WxReplySceneVO> findWxReplyScene(@ApiParam(name = "wechatId", value = "微信id")

+ 3 - 3
svr/svr-base/src/main/java/com/yihu/jw/base/service/population/BasePopulationService.java

@ -61,13 +61,13 @@ public class BasePopulationService extends BaseJpaService<BasePopulationDO, Base
            basePopulationDO.setCityName(populationMsg.getCityName());
            basePopulationDO.setDistrictCode(populationMsg.getDistrictCode());
            basePopulationDO.setDistrictName(populationMsg.getDistrictName());
            basePopulationDO.setRegisPopulationNum(populationMsg.getRegisPopulationNum());
            basePopulationDO.setPopulationNum(populationMsg.getPopulationNum());
            basePopulationDO.setRegisPopulationNum(null == populationMsg.getRegisPopulationNum() ? 0 : populationMsg.getRegisPopulationNum());
            basePopulationDO.setPopulationNum(null == populationMsg.getPopulationNum() ? 0 : populationMsg.getPopulationNum());
            //糖尿病人数
            basePopulationDO.setDmNum(null == populationMsg.getDmNum() ? 0 : populationMsg.getDmNum());
            //高血压人数
            basePopulationDO.setHbpNum(null == populationMsg.getHbpNum() ? 0 : populationMsg.getHbpNum());
            basePopulationDO.setTaskNum(populationMsg.getTaskNum());
            basePopulationDO.setTaskNum(null == populationMsg.getTaskNum() ? 0 : populationMsg.getTaskNum());
            //慢病人数
            basePopulationDO.setNcdNum(basePopulationDO.getHbpNum() + basePopulationDO.getDmNum());
            corrects.add(basePopulationDO);

+ 140 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/service/saas/SaasService.java

@ -15,6 +15,7 @@ import com.yihu.jw.entity.base.dict.*;
import com.yihu.jw.entity.base.module.SaasModuleDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.role.RoleDO;
import com.yihu.jw.entity.base.saas.BaseEmailTemplateConfigDO;
import com.yihu.jw.entity.base.saas.SaasDO;
import com.yihu.jw.entity.base.saas.SaasThemeDO;
import com.yihu.jw.entity.base.saas.SaasThemeExtendDO;
@ -25,6 +26,9 @@ import com.yihu.mysql.query.BaseJpaService;
import com.yihu.utils.security.MD5;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
@ -78,6 +82,13 @@ public class SaasService extends BaseJpaService<SaasDO, SaasDao> {
    private SaasThemeExtendDao saasThemeExtendDao;
    @Value("${configDefault.saasId}")
    private String defaultSaasId;
    @Autowired
    private BaseEmailTemplateConfigService baseEmailTemplateConfigService;
    @Value("${spring.mail.username}")
    private String username;
    @Autowired
    JavaMailSender jms;
    /**
     * 默认租户管理员角色code
@ -91,19 +102,119 @@ public class SaasService extends BaseJpaService<SaasDO, SaasDao> {
     */
    @Transactional(rollbackFor = Exception.class)
    public SaasDO create(SaasDO saas){
        saas.setStatus(SaasDO.Status.auditWait);
        final SaasDO.Status staus = saas.getStatus();
        saas.setStatus(SaasDO.Status.auditPassed);
        saas = saasDao.save(saas);
        List<BaseOrgDO> orgDOList = saas.getOrgList();
        if(orgDOList!=null&&orgDOList.size()>0){
            String saasId = saas.getId();
            orgDOList.forEach(org->{
                BaseOrgDO orgDO = baseOrgDao.findByCodeAndSaasId(org.getCode(),defaultSaasId);
                org.setSaasid(saasId);
                org.setName(orgDO.getName());
                org.setCreateTime(new Date());
                org.setAddress(orgDO.getAddress());
                org.setAlias(orgDO.getAlias());
                org.setBrief(orgDO.getBrief());
                org.setCityCode(orgDO.getCityCode());
                org.setCityName(orgDO.getCityName());
                org.setDel(orgDO.getDel());
                org.setIntro(orgDO.getIntro());
                org.setLatitude(orgDO.getLatitude());
                org.setLegalperson(orgDO.getLegalperson());
                org.setLongitude(orgDO.getLongitude());
                org.setName(orgDO.getName());
                org.setOrgAdmin(orgDO.getOrgAdmin());
                org.setOrgUrl(orgDO.getOrgUrl());
                org.setPhoto(orgDO.getPhoto());
                org.setProvinceCode(orgDO.getProvinceCode());
                org.setProvinceName(orgDO.getProvinceName());
                org.setQrcode(orgDO.getQrcode());
                org.setSpell(orgDO.getSpell());
                org.setStreetCode(orgDO.getStreetCode());
                org.setStreetName(orgDO.getStreetName());
                org.setTownCode(orgDO.getTownCode());
                org.setTownName(orgDO.getTownName());
                org.setType(orgDO.getType());
            });
        }
        baseOrgDao.save(orgDOList);
        //用户信息初始化
        UserDO userDO = new UserDO();
        userDO.setEmail(saas.getEmail());
        userDO.setMobile(saas.getMobile());
        userDO.setName(saas.getManagerName());
        userDO.setUsername(userDO.getEmail());
        saasAudit(saas, userDO);
        send(saas);
        saas.setStatus(staus);
        saasDao.save(saas);
        return saas;
    }
    /**
     * 发送邮件
     * @param saasDO
     */
    public void send(SaasDO saasDO) {
        try {
            SaasDO.Status status = saasDO.getStatus();
            String password = saasDO.getMobile().substring(0, 6);
            BaseEmailTemplateConfigDO baseEmailTemplateConfigDO = baseEmailTemplateConfigService.findByCode(status.name());
            if (null == baseEmailTemplateConfigDO) {
                return;
            }
            //建立邮件消息
            SimpleMailMessage mainMessage = new SimpleMailMessage();
            //发送者
            mainMessage.setFrom(username);
            //接收者
            mainMessage.setTo(saasDO.getEmail());
            //发送的标题
            mainMessage.setSubject(baseEmailTemplateConfigDO.getTemplateName());
            //发送的内容
            StringBuffer content = new StringBuffer();
            content.append(baseEmailTemplateConfigDO.getFirst() + "\n").append(baseEmailTemplateConfigDO.getKeyword1() + "\n");
            content.append(baseEmailTemplateConfigDO.getKeyword2() + "\n");
            if (status.equals(SaasDO.Status.auditPassed)) {
                //账号
                content.append(baseEmailTemplateConfigDO.getKeyword3() + saasDO.getMobile() + "\n");
                //密码
                content.append(baseEmailTemplateConfigDO.getKeyword4() + password + "\n");
            } else if (status.equals(SaasDO.Status.auditNotPassed)) {
                //审核未通过的原因
                content.append(saasDO.getAuditFailedReason() + "\n");
            }
            content.append(baseEmailTemplateConfigDO.getKeyword5() + baseEmailTemplateConfigDO.getUrl() + "\n");
            content.append(baseEmailTemplateConfigDO.getRemark());
            mainMessage.setText(content.toString());
            jms.send(mainMessage);
        } catch (MailException e) {
            e.printStackTrace();
        }
    }
    /**
     * 注册修改
     * @param saas
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public SaasDO create(SaasDO saas,SaasDO oldSaas){
        oldSaas.setStatus(SaasDO.Status.auditWait);
        oldSaas.setEmail(saas.getEmail());
        oldSaas.setMobile(saas.getMobile());
        oldSaas.setManagerName(saas.getManagerName());
        oldSaas.setName(saas.getName());
        oldSaas.setOrganizationCode(saas.getOrganizationCode());
        oldSaas.setBusinessLicense(saas.getBusinessLicense());
        oldSaas.setType(saas.getType());
        saasDao.save(oldSaas);
        return oldSaas;
    }
    /**
     * 修改
     * @param saas
@ -127,7 +238,33 @@ public class SaasService extends BaseJpaService<SaasDO, SaasDao> {
        List<BaseOrgDO> orgDOList = saas.getOrgList();
        if(orgDOList!=null&&orgDOList.size()>0){
            orgDOList.forEach(org->{
                BaseOrgDO orgDO = baseOrgDao.findByCodeAndSaasId(org.getCode(),defaultSaasId);
                org.setSaasid(saasId);
                org.setName(orgDO.getName());
                org.setCreateTime(new Date());
                org.setAddress(orgDO.getAddress());
                org.setAlias(orgDO.getAlias());
                org.setBrief(orgDO.getBrief());
                org.setCityCode(orgDO.getCityCode());
                org.setCityName(orgDO.getCityName());
                org.setDel(orgDO.getDel());
                org.setIntro(orgDO.getIntro());
                org.setLatitude(orgDO.getLatitude());
                org.setLegalperson(orgDO.getLegalperson());
                org.setLongitude(orgDO.getLongitude());
                org.setName(orgDO.getName());
                org.setOrgAdmin(orgDO.getOrgAdmin());
                org.setOrgUrl(orgDO.getOrgUrl());
                org.setPhoto(orgDO.getPhoto());
                org.setProvinceCode(orgDO.getProvinceCode());
                org.setProvinceName(orgDO.getProvinceName());
                org.setQrcode(orgDO.getQrcode());
                org.setSpell(orgDO.getSpell());
                org.setStreetCode(orgDO.getStreetCode());
                org.setStreetName(orgDO.getStreetName());
                org.setTownCode(orgDO.getTownCode());
                org.setTownName(orgDO.getTownName());
                org.setType(orgDO.getType());
            });
        }
        baseOrgDao.save(orgDOList);
@ -136,7 +273,6 @@ public class SaasService extends BaseJpaService<SaasDO, SaasDao> {
        return oldSaas;
    }
    /**
     * 系统配置
     * @param saasDO
@ -233,6 +369,8 @@ public class SaasService extends BaseJpaService<SaasDO, SaasDao> {
        userRoleDO.setUserId(user.getId());
        userRoleDao.save(userRoleDO);
        saas.setManager(user.getId());
        saas.setAppId(getCode());
        saas.setAppSecret(getCode());
        saas = saasDao.save(saas);
        String saasId = saas.getId();
        //系统字典项

+ 12 - 10
svr/svr-base/src/main/java/com/yihu/jw/base/service/wx/WeChatQrcodeService.java

@ -46,14 +46,16 @@ public class WeChatQrcodeService {
                        + URLEncoder.encode(json.get("ticket").toString(), "UTF-8"));
                HttpURLConnection connection = (HttpURLConnection) urlGet.openConnection();
                connection.connect();
                //下载图片到内存
                inputStream = connection.getInputStream();
//                String pathFile = request.getSession().getServletContext().getRealPath("/")
//                        + File.separator + "qrcode" + File.separator + wechatId+"_"+scene+".png";
                //======start===
                //fastDFS方法问题,直接将inputStream文件流上传文件服务器存数据缺失,
                // 故将文件输出本地,在上传文件服务器,之后删除本地文件
                String path = WeChatQrcodeService.class.getResource("/").getPath().replace("/WEB-INF/classes/", "")
                        + File.separator + "qrcode" ;
                File dir = new File(path);
                //判断目录是否存在,创建目录
                File dir = new File(path);
                if(!dir.exists()){
                    dir.mkdir();
                }
@ -71,14 +73,9 @@ public class WeChatQrcodeService {
                InputStream input = new FileInputStream(file);
                //=======end=========
                ObjectNode objectNode = fastDFSHelper.upload(input,"png","");
                File del = new File(path);
                if(del.exists()&&del.isFile()){
                    del.delete();
                }
                if (outputStream != null) {
                    outputStream.close();
                }
@ -86,6 +83,11 @@ public class WeChatQrcodeService {
                if (inputStream != null) {
                    inputStream.close();
                }
                //流关闭,删除文件
                if(file.exists()&&file.isFile()){
                    file.delete();
                }
                return objectNode.get("fileId").toString().replaceAll("\"", "");
            }
        }

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/service/wx/WechatCoreService.java

@ -262,7 +262,7 @@ public class WechatCoreService {
            for(WxReplySceneDO scene:scenes){
                if(StringUtils.isNotBlank(scene.getContent())
                        &&content.equals(scene.getContent())
                        &&StringUtils.isNotBlank(scene.getScene())){
                        &&StringUtils.isNotBlank(scene.getContent())){
                    //根据场景值,动态生成图文消息回复文斌
                    return getGraphicXMl(scene.getScene(),scene.getWechatId(),message);
                }

+ 41 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/wx/WechatService.java

@ -7,6 +7,7 @@ import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.rm.base.BaseRequestMapping;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -334,6 +335,45 @@ public class WechatService {
        return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
    }
    public Map<String,Object> findWxReplySceneExist(String wechatId,String msgType,String event,String content,String scene){
        Map<String,Object> map = new HashedMap();
        if("text".equals(msgType)){
            List<WxReplySceneDO> wxReplySceneDOs =wxReplySceneDao.findByWechatIdAndMsgTypeAndContentAndStatus(wechatId,msgType,content,1);
            if(wxReplySceneDOs!=null&&wxReplySceneDOs.size()>0){
                map.put("status",-1);
                map.put("mes","文本回复已经存在!");
            }else{
                map.put("status",1);
                map.put("mes","事件验证成功!");
            }
        }else{
            //关注事件类型只能有一条事件配置
            if("subscribe".equals(event)){
                List<WxReplySceneDO> wxReplySceneDOs =wxReplySceneDao.findByWechatIdAndMsgTypeAndEventAndStatus(wechatId,msgType,event,1);
                if(wxReplySceneDOs!=null&&wxReplySceneDOs.size()>0){
                    map.put("status",-2);
                    map.put("mes","关注事件已经配置!");
                }else{
                    map.put("status",1);
                    map.put("mes","事件验证成功!");
                }
            }else{
                //点击事件,扫码事件
                List<WxReplySceneDO> wxReplySceneDOs =wxReplySceneDao.findByWechatIdAndMsgTypeAndEventAndSceneAndStatus(wechatId,msgType,event,scene,1);
                if(wxReplySceneDOs!=null&&wxReplySceneDOs.size()>0){
                    map.put("status",-3);
                    map.put("mes","事件图文分组已经配置!");
                }else{
                    map.put("status",1);
                    map.put("mes","事件验证成功!");
                }
            }
        }
        return map;
    }
    public MixEnvelop findWxReplyScene(String wechatId,String msgType,String event,String content,Integer page,Integer size){
        String totalSql = "SELECT " +
                " COUNT(1) AS total " +
@ -357,6 +397,7 @@ public class WechatService {
        }
        String sql = "SELECT " +
                " s.id," +
                " s.wechat_id AS wechatId," +
                " s.scene, " +
                " s.`status`, " +

+ 50 - 8
svr/svr-base/src/main/resources/application.yml

@ -32,6 +32,15 @@ spring:
      max-wait: -1  # 连接池最大阻塞等待时间(使用负值表示没有限制)
      max-idle: 20  # 连接池中的最大空闲连接
      min-idle: 5  # 连接池中的最小空闲连接
  mail:
    default-encoding: UTF-8
#端口
    port: 25
#协议
    protocol: smtp
    properties.mail.smtp.auth: true
    properties.mail.smtp.starttls.enable: true
    properties.mail.smtp.starttls.required: true
es:
  index:
    servicePackLog: base_service_package_log
@ -80,19 +89,12 @@ spring:
#  zipkin:
#    base-url: http://localhost:9411 #日志追踪的地址
  mail:
    default-encoding: UTF-8
    host: smtp.163.com
#发送者的邮箱密码
    password: xmijk181016jkzl
#端口
    port: 25
#协议
    protocol: smtp
#发送者的邮箱账号
    username: i_jiankang@163.com
    properties.mail.smtp.auth: true
    properties.mail.smtp.starttls.enable: true
    properties.mail.smtp.starttls.required: true
fastDFS:
  fastdfs_file_url: http://172.19.103.54:80/
# 短信发送地址
@ -120,9 +122,29 @@ spring:
  redis:
    host: 172.19.103.88 # Redis server host.
    port: 6379 # Redis server port.
  mail:
    host: smtp.163.com
#发送者的邮箱密码
    password: xmijk181016jkzl
#发送者的邮箱账号
    username: i_jiankang@163.com
#    password: jkzl_ehr
#  zipkin:
#    base-url: http://localhost:9411 #日志追踪的地址
  mail:
    default-encoding: UTF-8
    host: smtp.163.com
#发送者的邮箱密码
    password: xmijk181016jkzl
#端口
    port: 25
#协议
    protocol: smtp
#发送者的邮箱账号
    username: i_jiankang@163.com
    properties.mail.smtp.auth: true
    properties.mail.smtp.starttls.enable: true
    properties.mail.smtp.starttls.required: true
fastDFS:
  fastdfs_file_url: http://172.19.103.54:80/
@ -148,8 +170,28 @@ spring:
  redis:
    host: 172.19.103.88 # Redis server host.
    port: 6379 # Redis server port.
  mail:
    host: smtp.163.com
#发送者的邮箱密码
    password: xmijk181016jkzl
#发送者的邮箱账号
    username: i_jiankang@163.com
#    password: jkzl_ehr
#  zipkin:
#    base-url: http://localhost:9411 #日志追踪的地址
  mail:
    default-encoding: UTF-8
    host: smtp.163.com
#发送者的邮箱密码
    password: xmijk181016jkzl
#端口
    port: 25
#协议
    protocol: smtp
#发送者的邮箱账号
    username: i_jiankang@163.com
    properties.mail.smtp.auth: true
    properties.mail.smtp.starttls.enable: true
    properties.mail.smtp.starttls.required: true
fastDFS:
  fastdfs_file_url: http://172.19.103.54:80/

+ 1 - 1
svr/svr-iot/src/main/java/com/yihu/iot/service/device/IotDeviceOrderService.java

@ -104,7 +104,7 @@ public class IotDeviceOrderService extends BaseJpaService<IotDeviceOrderDO,IotDe
//            planDO.setPurchaseNum(purchase.getPurchaseNum());
//            planDO.setOrderNo(orderNo);
//            planDO.setOrderId(orderId);
//            planDO.setSaasId(getCode());
//            planDO.setOrgCode(getCode());
//            planDO.setStatus(IotDeviceQualityInspectionPlanDO.QualityPlanStatus.create.getValue());
//            planDO.setDeviceName(purchase.getDeviceName());
//            planDO.setPurchaseId(purchase.getId());

+ 2 - 2
svr/svr-manage/src/main/resources/webapp/html/login/login.html

@ -67,8 +67,8 @@
            success: function (data) {
                //保存用户信息到缓存中
                setUserCode(data.obj.code);
                if(data.obj.saasId!=undefined){
                    setSaasId(data.obj.saasId)
                if(data.obj.orgCode!=undefined){
                    setSaasId(data.obj.orgCode)
                }
                window.location.href = server+'/index/index.html';
            },

+ 1 - 1
svr/svr-manage/src/main/resources/webapp/html/system/role/html/userRole.html

@ -54,7 +54,7 @@
            "data": function (d) {
                d.name = $("#userName").val();
                d.userCode = userCode;
                d.saasId = saasId;
                d.orgCode = orgCode;
            }
        },
        "aoColumns": [{

+ 2 - 2
svr/svr-manage/src/main/resources/webapp/html/version/server/html/userVersion.html

@ -44,7 +44,7 @@
<script>
    var table;
    var userCode = window.localStorage.getItem("userCode");
    var saasId = window.localStorage.getItem("saasId");
    var orgCode = window.localStorage.getItem("orgCode");
    var serverCode = $("#myModal-add-info").attr("data-code");
    var user_codes = [];//记录当前版本已有的用户
    getUserCodes();
@ -70,7 +70,7 @@
                        "dataSrc": "detailModelList",
                        "data": function (d) {
                            d.userCode = userCode;
                            d.saasId = saasId;
                            d.orgCode = orgCode;
                            d.name =$("#userName").val();
                            d.mobile=$("#mobile").val();
                        }