Ver código fonte

Merge branch 'dev' of LiTaohong/wlyy2.0 into dev

LiTaohong 6 anos atrás
pai
commit
73b0bc54ff

+ 3 - 3
business/base-service/src/main/java/com/yihu/jw/patient/dao/BasePatientDao.java

@ -17,13 +17,13 @@ public interface BasePatientDao extends PagingAndSortingRepository<BasePatientDO
    BasePatientDO findByIdAndDel(String id, String del);
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,phone as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO where idcard like ?1")
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,mobile as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO where idcard like ?1")
    List<Map<String,Object>> findByIdcard(String idcard, Pageable pageable);
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,phone as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO where name like ?1")
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,mobile as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO where name like ?1")
    List<Map<String,Object>> findByName(String name, Pageable pageable);
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,phone as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO")
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,mobile as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO")
    List<Map<String,Object>> findBaseInfo(Pageable pageable);
    boolean existsByIdcardAndIdNot(String idcard,String id);

+ 118 - 263
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java

@ -2,81 +2,77 @@ package com.yihu.jw.entity.base.patient;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
/**
* 居民信息(居民就是患者)实体
*
* @author Administrator on  2018年09月05日
*
*/
 * 居民信息(居民就是患者)实体
 *
 * @author Administrator on  2018年09月05日
 *
 */
@Entity
@Table(name = "base_patient")
public class BasePatientDO extends UuidIdentityEntityWithOperator {
    /**
	 * saas配置id
	 */
     * saas配置id
     */
//    @NotNull(message = "saasid不可为空")
	private String saasId;
    private String saasId;
    /**
	 * 身份证号
	 */
     * 身份证号
     */
//    @NotNull(message = "身份证号不可为空")
	private String idcard;
    private String idcard;
    /**
	 * 登录密码
	 */
	private String password;
     * 登录密码
     */
    private String password;
    /**
	 *
	 */
	private String salt;
     *
     */
    private String salt;
    /**
	 * 姓名
	 */
	private String name;
     * 姓名
     */
    private String name;
    /**
	 * 生日
	 */
     * 生日
     */
//	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	private Date birthday;
    private Date birthday;
    /**
	 * 性别,1男,2女
	 */
     * 性别,1男,2女
     */
//    @Range(min = 1, max = 2, message = "1-男,2-女")
	private Integer sex;
    private Integer sex;
    /**
	 * 手机号
	 */
     * 手机号
     */
//    @Length(min = 11,max = 11,message = "手机号长度为11位")
	private String mobile;
    private String mobile;
    /**
	 * 联系电话
	 */
	private String phone;
    /**
     * 社保卡号
     */
	private String ssc;
    /**
	 * 头像http地址
	 */
	private String photo;
     * 头像http地址
     */
    private String photo;
    /**
     * 省代码
@ -117,15 +113,6 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
     * 街道名称
     */
    private String streetName;
    /**
     * 居住居委会代码
     */
    private String committeeCode;
    /**
     * 居住居委会名称
     */
    private String committeeName;
    /**
     * 地址
@ -133,114 +120,101 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    private String address;
    /**
     * 疾病类型,0健康,1高血压,2糖尿病,3高血压+糖尿病
     */
    private String disease;
    /**
     * 病情:0绿标,1黄标,2红标,3重点关注
     * 居住省代码
     */
    private String diseaseCondition;
    private String liveProvinceCode;
    /**
     * 总积分
     * 居住省名称
     */
    private String points;
    private String liveProvinceName;
    /**
     * 病历总数
     * 居住市代码
     */
    private String recordAmount;
    private String liveCityCode;
    /**
     * 微信编号
     * 居住市名称
     */
    private String openid;
    private String liveCityName;
    /**
     * 用户状态:1正常,0禁用,-1恶意注册,2审核中
     * 居住区县代码
     */
    private String patientStatus;
    private String liveTownCode;
    /**
     * 联系方式备注【基卫】
     * 居住区县名称
     */
    private String mobileRemarks;
    private String liveTownName;
    /**
     * 第一次添加open的时间
     * 居住街道代码
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date openidTime;
    private String liveStreetCode;
    /**
     * 绑定电子社保卡主体(共济为操作人code,医社保关联patient_medicare_card)
     * 居住街道名称
     */
    private String principalCode;
    private String liveStreetName;
    /**
     * 是否绑定电子社保卡 (0否 1是)
     */
    private String sicardStatus;
    /**
     * 电子社保卡绑定时间
     * 居住居委会代码
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date sicardTime;
    private String committeeCode;
    /**
     * 是否分配过微信标签
     * 居住居委会名称
     */
    private Integer isWxtag;
    private String committeeName;
    /**
     * 微信tagId
     * 总积分
     */
    private String wxtagid;
    private String points;
    /**
     * 居民预警状态:0为标准,1为预警状态
     * 病历总数
     */
    private Integer standardStatus;
    private String recordAmount;
    /**
     * 医疗保险号
     * 微信编号
     */
    private String medicareNumber;
    private String openid;
    /**
     * unionId 开发平台唯一标识
     * 用户状态:1正常,0禁用,-1恶意注册,2审核中
     */
    private String unionid;
    private String patientStatus;
    /**
     * 作废标识,1正常,0作废
     * 联系方式备注【基卫】
     */
    private String del;
    private String mobileRemarks;
    /**
     * 登录时间
     * 第一次添加open的时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date loginDate;
    private Date openidTime;
    /**
     * 锁定时间
     * 居民预警状态:0为标准,1为预警状态
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date lockedDate;
    private Integer standardStatus;
    /**
     * 是否被锁定;1为锁定,0为可用
     * unionId 开发平台唯一标识
     */
    private Integer locked;
    private String unionid;
    /**
     * 是否可用
     * 作废标识,1正常,0作废
     */
    private Integer enabled;
    private String del;
    /**
     * 备注
@ -248,54 +222,32 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    private String remark;
    /**
     * 登录失败次数
     */
    private Integer loginFailureCount;
    /**
     * 居住区县代码
     */
    private String liveTownCode;
    /**
     * 居住区县名称
     * 账号是否被锁定
     */
    private String liveTownName;
    private int locked;
    /**
     * 居住市代码
     * 是否可以登录
     */
    private String liveCityCode;
    private int enabled;
    /**
     * 居住市名称
     */
    private String liveCityName;
    /**
     * 居住省代码
     * 登录失败次数
     */
    private String liveProvinceCode;
    private int loginFailureCount;
    /**
     * 居住省名称
     * 锁定日期
     */
    private String liveProvinceName;
    private Date lockedDate;
    /**
     * 居住街道代码
     * 登录日期
     */
    private String liveStreetCode;
    /**
     * 居住街道名称
     */
    private String liveStreetName;
    private Date loginDate;
	@Column(name = "saas_id")
    @Column(name = "saas_id")
    public String getSaasId() {
        return saasId;
    }
@ -303,7 +255,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.saasId = saasId;
    }
	@Column(name = "idcard")
    @Column(name = "idcard")
    public String getIdcard() {
        return idcard;
    }
@ -311,7 +263,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.idcard = idcard;
    }
	@Column(name = "password")
    @Column(name = "password")
    public String getPassword() {
        return password;
    }
@ -319,7 +271,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.password = password;
    }
	@Column(name = "salt")
    @Column(name = "salt")
    public String getSalt() {
        return salt;
    }
@ -327,7 +279,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.salt = salt;
    }
	@Column(name = "name")
    @Column(name = "name")
    public String getName() {
        return name;
    }
@ -335,7 +287,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.name = name;
    }
	@Column(name = "birthday")
    @Column(name = "birthday")
    public Date getBirthday() {
        return birthday;
    }
@ -343,7 +295,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.birthday = birthday;
    }
	@Column(name = "sex")
    @Column(name = "sex")
    public Integer getSex() {
        return sex;
    }
@ -351,7 +303,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.sex = sex;
    }
	@Column(name = "mobile")
    @Column(name = "mobile")
    public String getMobile() {
        return mobile;
    }
@ -359,15 +311,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.mobile = mobile;
    }
	@Column(name = "phone")
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
	@Column(name = "photo")
    @Column(name = "photo")
    public String getPhoto() {
        return photo;
    }
@ -474,7 +418,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.points = points;
    }
	@Column(name = "record_amount")
    @Column(name = "record_amount")
    public String getRecordAmount() {
        return recordAmount;
    }
@ -482,7 +426,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.recordAmount = recordAmount;
    }
	@Column(name = "openid")
    @Column(name = "openid")
    public String getOpenid() {
        return openid;
    }
@ -490,7 +434,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.openid = openid;
    }
	@Column(name = "patient_status")
    @Column(name = "patient_status")
    public String getPatientStatus() {
        return patientStatus;
    }
@ -498,7 +442,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.patientStatus = patientStatus;
    }
	@Column(name = "mobile_remarks")
    @Column(name = "mobile_remarks")
    public String getMobileRemarks() {
        return mobileRemarks;
    }
@ -506,7 +450,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.mobileRemarks = mobileRemarks;
    }
	@Column(name = "openid_time")
    @Column(name = "openid_time")
    public Date getOpenidTime() {
        return openidTime;
    }
@ -514,47 +458,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.openidTime = openidTime;
    }
	@Column(name = "principal_code")
    public String getPrincipalCode() {
        return principalCode;
    }
    public void setPrincipalCode(String principalCode) {
        this.principalCode = principalCode;
    }
	@Column(name = "sicard_status")
    public String getSicardStatus() {
        return sicardStatus;
    }
    public void setSicardStatus(String sicardStatus) {
        this.sicardStatus = sicardStatus;
    }
	@Column(name = "sicard_time")
    public Date getSicardTime() {
        return sicardTime;
    }
    public void setSicardTime(Date sicardTime) {
        this.sicardTime = sicardTime;
    }
	@Column(name = "is_wxtag")
    public Integer getIsWxtag() {
        return isWxtag;
    }
    public void setIsWxtag(Integer isWxtag) {
        this.isWxtag = isWxtag;
    }
	@Column(name = "wxtagid")
    public String getWxtagid() {
        return wxtagid;
    }
    public void setWxtagid(String wxtagid) {
        this.wxtagid = wxtagid;
    }
	@Column(name = "standard_status")
    @Column(name = "standard_status")
    public Integer getStandardStatus() {
        return standardStatus;
    }
@ -562,7 +466,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.standardStatus = standardStatus;
    }
	@Column(name = "unionid")
    @Column(name = "unionid")
    public String getUnionid() {
        return unionid;
    }
@ -570,7 +474,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.unionid = unionid;
    }
	@Column(name = "del")
    @Column(name = "del")
    public String getDel() {
        return del;
    }
@ -578,16 +482,14 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.del = del;
    }
    @Column(name = "remark")
    public String getRemark() {
        return remark;
    }
    @Column(name = "remark")
    public void setRemark(String remark) {
        this.remark = remark;
    }
    @Column(name = "live_province_code")
    public String getLiveProvinceCode() {
        return liveProvinceCode;
    }
@ -596,7 +498,6 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.liveProvinceCode = liveProvinceCode;
    }
    @Column(name = "live_province_name")
    public String getLiveProvinceName() {
        return liveProvinceName;
    }
@ -605,7 +506,6 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.liveProvinceName = liveProvinceName;
    }
    @Column(name = "live_city_code")
    public String getLiveCityCode() {
        return liveCityCode;
    }
@ -614,7 +514,6 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.liveCityCode = liveCityCode;
    }
    @Column(name = "live_city_name")
    public String getLiveCityName() {
        return liveCityName;
    }
@ -623,7 +522,6 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.liveCityName = liveCityName;
    }
    @Column(name = "live_town_code")
    public String getLiveTownCode() {
        return liveTownCode;
    }
@ -632,7 +530,6 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.liveTownCode = liveTownCode;
    }
    @Column(name = "live_town_name")
    public String getLiveTownName() {
        return liveTownName;
    }
@ -658,53 +555,30 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.liveStreetName = liveStreetName;
    }
    @Column(name = "ssc")
    public String getSsc() {
        return ssc;
    }
    public void setSsc(String ssc) {
        this.ssc = ssc;
    }
    @Column(name = "disease")
    public String getDisease() {
        return disease;
    }
    public void setDisease(String disease) {
        this.disease = disease;
    }
    @Column(name = "disease_condition")
    public String getDiseaseCondition() {
        return diseaseCondition;
    public int getLocked() {
        return locked;
    }
    public void setDiseaseCondition(String diseaseCondition) {
        this.diseaseCondition = diseaseCondition;
    public void setLocked(int locked) {
        this.locked = locked;
    }
    @Column(name = "medicare_number")
    public String getMedicareNumber() {
        return medicareNumber;
    public int getEnabled() {
        return enabled;
    }
    public void setMedicareNumber(String medicareNumber) {
        this.medicareNumber = medicareNumber;
    public void setEnabled(int enabled) {
        this.enabled = enabled;
    }
    @Column(name = "login_date")
    public Date getLoginDate() {
        return loginDate;
    public int getLoginFailureCount() {
        return loginFailureCount;
    }
    public void setLoginDate(Date loginDate) {
        this.loginDate = loginDate;
    public void setLoginFailureCount(int loginFailureCount) {
        this.loginFailureCount = loginFailureCount;
    }
    @Column(name = "locked_date")
    public Date getLockedDate() {
        return lockedDate;
    }
@ -713,30 +587,11 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
        this.lockedDate = lockedDate;
    }
    @Column(name = "locked")
    public Integer getLocked() {
        return locked;
    }
    public void setLocked(Integer locked) {
        this.locked = locked;
    }
    @Column(name = "enabled")
    public Integer getEnabled() {
        return enabled;
    }
    public void setEnabled(Integer enabled) {
        this.enabled = enabled;
    }
    @Column(name = "login_failure_count")
    public Integer getLoginFailureCount() {
        return loginFailureCount;
    public Date getLoginDate() {
        return loginDate;
    }
    public void setLoginFailureCount(Integer loginFailureCount) {
        this.loginFailureCount = loginFailureCount;
    public void setLoginDate(Date loginDate) {
        this.loginDate = loginDate;
    }
}

+ 13 - 2
svr/svr-patient/sql/sql

@ -40,7 +40,6 @@ create table `feedback`
  `id` int(11) NOT NULL AUTO_INCREMENT  COMMENT '表id,自增长',
  `type` varchar(1) DEFAULT NULL COMMENT '问题类型(功能异常-无法使用功能,功能优化-不好用、界面难看,新功能建议-你希望有什么功能,其他-其他任何问题)',
  `feedback_content` varchar(100) not null COMMENT '反馈内容,问题和建议',
  `answer` varchar(500) not null COMMENT '问题回答',
  `img` varchar(1000) not null COMMENT '图片,存图片地址,逗号分割',
  `mobile` varchar(11) not null COMMENT '联系手机号码',
  primary key (id)
@ -97,4 +96,16 @@ CREATE TABLE `base_patient_family_member` (
  `create_user_name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fmaily_member_patient` (`patient`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='居民家庭成员表';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='居民家庭成员表';
-- 居民表多余字段删除
alter table base_patient drop column ssc;
alter table base_patient drop column disease;
alter table base_patient drop column disease_condition;
alter table base_patient drop column principal_code;
alter table base_patient drop column sicard_status;
alter table base_patient drop column sicard_time;
alter table base_patient drop column is_wxtag;
alter table base_patient drop column wxtagid;
alter table base_patient drop column medicare_number;

+ 0 - 11
svr/svr-patient/src/main/java/com/yihu/jw/patient/dao/personal_info/PatientDao.java

@ -16,15 +16,4 @@ import java.util.Map;
public interface PatientDao extends PagingAndSortingRepository<BasePatientDO, String>, JpaSpecificationExecutor<BasePatientDO> {
    BasePatientDO findByIdAndDel(String id, String del);
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,phone as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO where idcard like ?1")
    List<Map<String,Object>> findByIdcard(String idcard, Pageable pageable);
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,phone as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO where name like ?1")
    List<Map<String,Object>> findByName(String name, Pageable pageable);
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,phone as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO")
    List<Map<String,Object>> findBaseInfo(Pageable pageable);
}

+ 87 - 61
svr/svr-patient/src/main/java/com/yihu/jw/patient/service/personal_Info/PatientService.java

@ -31,6 +31,7 @@ import java.util.concurrent.TimeUnit;
/**
 * 居民信息服务
 *
 * @author litaohong on  2018年11月28日
 */
@Service
@ -53,49 +54,49 @@ public class PatientService extends BasePatientService<BasePatientDO, BasePatien
    @Value("${fastDFS.fastdfs_file_url}")
    private String fastdfsUrl;
    public Map<String,Object> regist(String mobile, String captcha, String password, String openid){
    public Map<String, Object> regist(String mobile, String captcha, String password, String openid) {
        Map<String, Object> map = new HashMap<>();
        boolean b = CommonUtils.isMobile(mobile);
        if(!b){
            map.put("code",-1);
            map.put("message","手机号码格式不正确");
        if (!b) {
            map.put("code", -1);
            map.put("message", "手机号码格式不正确");
            return map;
        }
        //验证手机是否被注册
        List<BasePatientDO> list = basePatientDao.findByMobileAndDel(mobile,"1");
        if(list!=null && list.size()> 0){
            map.put("code",-1);
            map.put("message","该手机号已经注册!");
        List<BasePatientDO> list = basePatientDao.findByMobileAndDel(mobile, "1");
        if (list != null && list.size() > 0) {
            map.put("code", -1);
            map.put("message", "该手机号已经注册!");
            return map;
        }
        // 对验证码进行校验
        int res = baseSmsService.check(mobile, 0, captcha);
        if(-2 == res){
            map.put("code",-1);
            map.put("message","验证码已过期!");
        if (-2 == res) {
            map.put("code", -1);
            map.put("message", "验证码已过期!");
            return map;
        }else if(-1 == res){
            map.put("code",-1);
            map.put("message","请输入正确的验证码!");
        } else if (-1 == res) {
            map.put("code", -1);
            map.put("message", "请输入正确的验证码!");
            return map;
        }else if(0 == res){
            map.put("code",-1);
            map.put("message","验证码无效!");
        } else if (0 == res) {
            map.put("code", -1);
            map.put("message", "验证码无效!");
            return map;
        } else{
        } else {
            BasePatientDO patient = new BasePatientDO();
            if(StringUtils.isNotBlank(password)){
            if (StringUtils.isNotBlank(password)) {
                //增加密码
                if(password.length()<6 || password.length()>20){
                    map.put("code",-1);
                    map.put("message","密码长度需为6-20位");
                if (password.length() < 6 || password.length() > 20) {
                    map.put("code", -1);
                    map.put("message", "密码长度需为6-20位");
                    return map;
                }
                patient.setSalt(randomString(5));
                patient.setPassword(MD5.md5Hex(password + "{" + patient.getSalt() + "}"));
            }
            if(!"undefined".equals(openid) && StringUtils.isNotBlank(openid)){
            if (!"undefined".equals(openid) && StringUtils.isNotBlank(openid)) {
                patient.setOpenid(openid);
                patient.setOpenidTime(new Date());
            }
@ -105,8 +106,8 @@ public class PatientService extends BasePatientService<BasePatientDO, BasePatien
            patient.setDel("1");
            patient.setPatientStatus("1");
            this.save(patient);
            map.put("code",1);
            map.put("message","注册成功");
            map.put("code", 1);
            map.put("message", "注册成功");
            return map;
        }
    }
@ -144,16 +145,17 @@ public class PatientService extends BasePatientService<BasePatientDO, BasePatien
    /**
     * 设置登录密码/修改密码
     *
     * @param id
     * @param newPassword
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public String resetPassword(String id,String newPassword){
    public String resetPassword(String id, String newPassword) {
        Preconditions.checkNotNull(id);
        Preconditions.checkNotNull(newPassword);
        BasePatientDO patient = basePatientDao.findOne(id);
        if(null == patient){
        if (null == patient) {
            throw new PatientNotFoundException("当前居民不存在:【 " + id + "】");
        }
        patient.setSalt(randomString(5));
@ -163,28 +165,29 @@ public class PatientService extends BasePatientService<BasePatientDO, BasePatien
    /**
     * 修改手机号
     *
     * @param id
     * @param newMobile
     * @param captcha
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public BasePatientDO updateMobile(@NotNull String id, @NotNull String newMobile, @NotNull String captcha){
    public BasePatientDO updateMobile(@NotNull String id, @NotNull String newMobile, @NotNull String captcha) {
        Preconditions.checkNotNull(id,"id不可为空");
        Preconditions.checkNotNull(newMobile,"手机号不可为空");
        Preconditions.checkNotNull(captcha,"验证码不可为空");
        Preconditions.checkNotNull(id, "id不可为空");
        Preconditions.checkNotNull(newMobile, "手机号不可为空");
        Preconditions.checkNotNull(captcha, "验证码不可为空");
        BasePatientDO patient = basePatientDao.findOne(id);
        if(null == patient){
        if (null == patient) {
            throw new PatientNotFoundException("当前居民不存在:【 " + id + "】");
        }
        if(StringUtils.endsWithIgnoreCase(patient.getMobile(),newMobile)){
        if (StringUtils.endsWithIgnoreCase(patient.getMobile(), newMobile)) {
            return patient;
        }
        if(baseSmsService.verifyCaptcha(captcha)){
        if (baseSmsService.verifyCaptcha(captcha)) {
            patient.setMobile(newMobile);
            this.save(patient);
        }else{
        } else {
            throw new CapthcaInvalidException("验证码不正确或过期!");
        }
        return patient;
@ -192,24 +195,30 @@ public class PatientService extends BasePatientService<BasePatientDO, BasePatien
    /**
     * 完善居民基本信息
     *
     * @param headPortrait 头像
     * @param json
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public BasePatientDO completePatientDetails(MultipartFile headPortrait, String json){
        BasePatientDO patientDetail = JSONObject.parseObject(json,BasePatientDO.class);
    public BasePatientDO completePatientDetails(MultipartFile headPortrait, String json) {
        BasePatientDO patientDetail = JSONObject.parseObject(json, BasePatientDO.class);
        Assert.notNull(patientDetail.getName(), "姓名不可为空!");
        Assert.notNull(patientDetail.getSex(), "性别不可为空!");
        Assert.notNull(patientDetail.getIdcard(), "身份证不可为空!");
        Assert.notNull(patientDetail.getCommitteeCode(), "居委会不可为空!");
        Assert.notNull(patientDetail.getCommitteeName(), "居委会不可为空!");
        BasePatientDO patientBrief = basePatientDao.findOne(patientDetail.getId());
        if(null == patientBrief){
        if (null == patientBrief) {
            throw new PatientNotFoundException("未找到该居民!");
        }
        //如果未上传头像,使用默认头像,默认头像由客户端来处理,后台默认存null
        if(null == headPortrait && !StringUtils.isEmpty(patientBrief.getPhoto())){
            patientDetail.setPhoto(patientBrief.getPhoto());
        }else{
        if (null != headPortrait) {
            UploadVO uploadedFile = null;
            try {
                uploadedFile = fileUploadService.uploadImg(headPortrait.getInputStream(),headPortrait.getOriginalFilename(),headPortrait.getSize(),fastdfsUrl);
                uploadedFile = fileUploadService.uploadImg(headPortrait.getInputStream(), headPortrait.getOriginalFilename(), headPortrait.getSize(), fastdfsUrl);
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            } catch (IOException e) {
@ -217,33 +226,48 @@ public class PatientService extends BasePatientService<BasePatientDO, BasePatien
            } catch (MyException e) {
                e.printStackTrace();
            }
            patientDetail.setPhoto(uploadedFile.getFullUrl());
            patientBrief.setPhoto(uploadedFile.getFullUrl());
        }
        patientDetail.setMobile(patientBrief.getMobile());
        Assert.notNull(patientDetail.getName(),"姓名不可为空!");
        Assert.notNull(patientDetail.getSex(),"性别不可为空!");
        Assert.notNull(patientDetail.getIdcard(),"身份证不可为空!");
        Assert.notNull(patientDetail.getCommitteeCode(),"居委会不可为空!");
        Assert.notNull(patientDetail.getCommitteeName(),"居委会不可为空!");
        this.save(patientDetail);
        patientBrief.setName(patientDetail.getName());
        patientBrief.setSex(patientDetail.getSex());
        patientBrief.setIdcard(patientDetail.getIdcard());
        patientBrief.setProvinceCode(patientDetail.getProvinceCode());
        patientBrief.setProvinceName(patientDetail.getProvinceName());
        patientBrief.setCityCode(patientDetail.getCityCode());
        patientBrief.setCityName(patientDetail.getCityName());
        patientBrief.setTownCode(patientDetail.getTownCode());
        patientBrief.setTownName(patientDetail.getTownName());
        patientBrief.setLiveProvinceCode(patientDetail.getLiveProvinceCode());
        patientBrief.setLiveProvinceName(patientDetail.getLiveProvinceName());
        patientBrief.setLiveCityCode(patientDetail.getLiveCityCode());
        patientBrief.setLiveCityName(patientDetail.getLiveCityName());
        patientBrief.setLiveTownCode(patientDetail.getLiveTownName());
        patientBrief.setLiveStreetCode(patientDetail.getLiveStreetCode());
        patientBrief.setLiveStreetName(patientDetail.getLiveStreetName());
        patientBrief.setAddress(patientDetail.getAddress());
        patientBrief.setCommitteeCode(patientDetail.getCommitteeCode());
        patientBrief.setCommitteeName(patientDetail.getCommitteeName());
        this.save(patientBrief);
        return patientDetail;
    }
    /**
     * 验证身份证是否存在,剔除当前用户自身id
     *
     * @param idcard
     * @param id
     * @return
     */
    public boolean existsByIdcard(String idcard,String id) {
    public boolean existsByIdcard(String idcard, String id) {
        Preconditions.checkNotNull(idcard, "身份证不可为空");
        Preconditions.checkNotNull(id, "id不可为空");
        return basePatientDao.existsByIdcardAndIdNot(idcard,id);
        return basePatientDao.existsByIdcardAndIdNot(idcard, id);
    }
    /**
     * 验证身份证是否存在
     *
     * @param idcard
     * @return
     */
@ -254,33 +278,35 @@ public class PatientService extends BasePatientService<BasePatientDO, BasePatien
    @Transactional(rollbackFor = Exception.class)
    public int updateOpenId(String id, String openId){
        return basePatientDao.updateOpenId(id,openId);
    public int updateOpenId(String id, String openId) {
        return basePatientDao.updateOpenId(id, openId);
    }
    /**
     *  判断是否需要完善信息,身份证未填则需要完善
     * 判断是否需要完善信息,身份证未填则需要完善
     *
     * @param id
     * @return
     */
    public boolean isCompleted(String id) {
        Assert.notNull(id,"id不可为空");
        Assert.notNull(id, "id不可为空");
        BasePatientDO patient = basePatientDao.findOne(id);
        if(null == patient){
        if (null == patient) {
            throw new PatientNotFoundException("居民不存在!");
        }
       return !StringUtils.isEmpty(patient.getIdcard());
        return !StringUtils.isEmpty(patient.getIdcard());
    }
    /**
     * 查询居民完善后的基本信息
     *
     * @return
     */
    public BasePatientDO getCompletedDetails(String id){
        Assert.notNull(id,"居民id不可为空!");
    public BasePatientDO getCompletedDetails(String id) {
        Assert.notNull(id, "居民id不可为空!");
        BasePatientDO patient = basePatientDao.findOne(id);
        if(null == patient){
        if (null == patient) {
            throw new PatientNotFoundException("居民不存在!");
        }
        return patient;