Bladeren bron

绑定卡包

LiTaohong 6 jaren geleden
bovenliggende
commit
a88c19999b

+ 5 - 0
common/common-entity/pom.xml

@ -23,5 +23,10 @@
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.13.Final</version>
        </dependency>
    </dependencies>
</project>

+ 9 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java

@ -2,9 +2,14 @@ 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;
@ -21,11 +26,13 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    /**
	 * saas配置id
	 */
    @NotNull(message = "saasid不可为空")
	private String saasId;
    /**
	 * 身份证号
	 */
    @NotNull(message = "身份证号不可为空")
	private String idcard;
    /**
@ -52,11 +59,13 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    /**
	 * 性别,1男,2女
	 */
    @Range(min = 1, max = 2, message = "1-男,2-女")
	private Integer sex;
    /**
	 * 手机号
	 */
    @Length(min = 11,max = 11,message = "手机号长度为11位")
	private String mobile;
    /**

+ 30 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/PatientMedicareCardDO.java

@ -16,6 +16,36 @@ import javax.persistence.Table;
@Table(name = "patient_medicare_card")
public class PatientMedicareCardDO extends IntegerIdentityEntity {
   public enum ParentType {
        CareCard("A", "医疗卡"),
        Coupons("B", "优惠券"),
        BankCard("C", "银行卡");
        private String type;
        private String desc;
         ParentType(String type, String desc) {
            this.type = type;
            this.desc = desc;
        }
    }
   public enum Type {
        MedicareCard("A_01", "医保卡"),
        SocialSecurityCard("A_02", "电子社保卡"),
        PatientIDCard("A_03", "电子就诊卡");
        private String type;
        private String desc;
         Type(String type, String desc) {
            this.type = type;
            this.desc = desc;
        }
    }
    /**
	 * 卡标识
	 */

+ 1 - 1
common/common-exception/src/main/java/com/yihu/jw/exception/business/patient/CapthcaInvalidException.java

@ -1,7 +1,7 @@
package com.yihu.jw.exception.business.patient;
/**
 * 居民不存在
 * 验证码无效(错误或过期)
 */
public class CapthcaInvalidException extends RuntimeException{

+ 0 - 11
common/common-exception/src/main/java/com/yihu/jw/exception/business/patient/NotFoundPatientException.java

@ -1,11 +0,0 @@
package com.yihu.jw.exception.business.patient;
/**
 * 居民不存在
 */
public class NotFoundPatientException extends RuntimeException{
    public NotFoundPatientException(String msg){
        super(msg);
    }
}

+ 11 - 0
common/common-exception/src/main/java/com/yihu/jw/exception/business/patient/PatientNotFoundException.java

@ -0,0 +1,11 @@
package com.yihu.jw.exception.business.patient;
/**
 * 居民不存在
 */
public class PatientNotFoundException extends RuntimeException{
    public PatientNotFoundException(String msg){
        super(msg);
    }
}

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

@ -319,7 +319,7 @@ public class BaseRequestMapping {
     * 服务包
     */
    public static class ServicePackage extends Basic{
        public static final String PREFIX  = "/service_package";
        public static final String PREFIX  = "/servicepackage";
    }
    /**

+ 4 - 0
svr/svr-patient/pom.xml

@ -191,6 +191,10 @@
            <version>2.0.0</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>

+ 3 - 3
svr/svr-patient/sql/sql

@ -8,9 +8,9 @@ create table `patient_medicare_card`
  `parent_type` varchar(1) DEFAULT NULL COMMENT '卡的大类(A-医疗卡,B-优惠券,C-银行卡,unknow-其他)',
  `type` varchar(1) DEFAULT NULL COMMENT '卡的小类:医疗卡包含 A_01 医保卡,A_02 电子社保卡 A_03 电子就诊卡等等',
  `patient_code` varchar(50) not null COMMENT '居民标识',
  `password` varchar(50) not null COMMENT '绑定密码',
  `wx_openid` varchar(50) not null COMMENT '微信openid,有些卡会绑定微信',
  `remark` varchar(50) not null COMMENT '备注',
  `password` varchar(50)  null COMMENT '绑定密码',
  `wx_openid` varchar(50)  null COMMENT '微信openid,有些卡会绑定微信',
  `remark` varchar(50)  null COMMENT '备注',
  `del` varchar(50) not null COMMENT '状态,0-解除绑定,1-绑定中',
  primary key (id)
)

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

@ -26,4 +26,5 @@ public interface PatientDao extends PagingAndSortingRepository<BasePatientDO, St
    @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);
    boolean existsByIdcard(String idcard);
}

+ 1 - 0
svr/svr-patient/src/main/java/com/yihu/jw/patient/dao/personal_info/PatientMedicareCardDao.java

@ -27,4 +27,5 @@ public interface PatientMedicareCardDao extends PagingAndSortingRepository<Patie
    @Query("select id from PatientMedicareCardDO where patientCode = ?1")
    Set<Object> findIdListByPatientCode(String patientCode);
}

+ 45 - 46
svr/svr-patient/src/main/java/com/yihu/jw/patient/endpoint/personal_info/PatientMedicareCardEndpoint.java

@ -14,64 +14,63 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 居民卡包控制器
*
* @version
* <pre>
 * 居民卡包控制器
 *
 * @version <pre>
 * Author	Version		Date		Changes
 * Administrator 	1.0  		2018年11月27日 	Created
 *
 * </pre>
* @since 1.
*/
 * @since 1.
 */
@RestController
@RequestMapping(value = BaseRequestMapping.PatientMedicareCard.PREFIX)
@Api(value = "居民卡包管理", description = "居民卡包管理服务接口", tags = {"wlyy基础服务 - 居民卡包管理服务接口"})
public class PatientMedicareCardEndpoint extends EnvelopRestEndpoint {
@Autowired
private PatientMedicareCardService patientMedicareCardService;
    @Autowired
    private PatientMedicareCardService patientMedicareCardService;
@PostMapping(value = BaseRequestMapping.PatientMedicareCard.CREATE)
@ApiOperation(value = "创建")
public ObjEnvelop<PatientMedicareCardVO> create (
    @ApiParam(name = "jsonData", value = "Json数据", required = true)
    @RequestParam String jsonData) throws Exception {
    PatientMedicareCardDO patientMedicareCard = toEntity(jsonData, PatientMedicareCardDO.class);
    patientMedicareCard = patientMedicareCardService.save(patientMedicareCard);
    return success(patientMedicareCard, PatientMedicareCardVO.class);
    @PostMapping(value = BaseRequestMapping.PatientMedicareCard.CREATE)
    @ApiOperation(value = "绑定医保卡")
    public Envelop create(
            @ApiParam(name = "id", value = "居民id", required = true) @RequestParam String id,
            @ApiParam(name = "idcard", value = "居民身份证号", required = true) @RequestParam String idcard,
     @ApiParam(name = "cardNumber", value = "医保卡号", required = true) @RequestParam String cardNumber) throws Exception {
        patientMedicareCardService.bindCard(id,idcard,cardNumber);
        return success("success");
    }
    @PostMapping(value = BaseRequestMapping.PatientMedicareCard.DELETE)
    @ApiOperation(value = "删除")
    public Envelop delete(
    @ApiParam(name = "ids", value = "id串,中间用,分隔", required = true)
    @RequestParam(value = "ids") String ids) {
    patientMedicareCardService.delete(ids.split(","));
    return success("删除成功");
            @ApiParam(name = "ids", value = "id串,中间用,分隔", required = true)
            @RequestParam(value = "ids") String ids) {
        patientMedicareCardService.delete(ids.split(","));
        return success("删除成功");
    }
    @PostMapping(value = BaseRequestMapping.PatientMedicareCard.UPDATE)
    @ApiOperation(value = "更新")
    public ObjEnvelop<PatientMedicareCardVO> update (
        @ApiParam(name = "jsonData", value = "Json数据", required = true)
        @RequestParam String jsonData) throws Exception {
    public ObjEnvelop<PatientMedicareCardVO> update(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData) throws Exception {
        PatientMedicareCardDO patientMedicareCard = toEntity(jsonData, PatientMedicareCardDO.class);
        if (null == patientMedicareCard.getId()) {
        return failed("ID不能为空", ObjEnvelop.class);
            return failed("ID不能为空", ObjEnvelop.class);
        }
        patientMedicareCard = patientMedicareCardService.save(patientMedicareCard);
        return success(patientMedicareCard, PatientMedicareCardVO.class);
        }
    }
        @GetMapping(value = BaseRequestMapping.PatientMedicareCard.PAGE)
        @ApiOperation(value = "获取分页")
        public PageEnvelop<PatientMedicareCardVO> page (
    @GetMapping(value = BaseRequestMapping.PatientMedicareCard.PAGE)
    @ApiOperation(value = "获取分页")
    public PageEnvelop<PatientMedicareCardVO> page(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
@ -82,22 +81,22 @@ public ObjEnvelop<PatientMedicareCardVO> create (
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
            List<PatientMedicareCardDO> patientMedicareCards = patientMedicareCardService.search(fields, filters, sorts, page, size);
                int count = (int)patientMedicareCardService.getCount(filters);
                return success(patientMedicareCards, count, page, size, PatientMedicareCardVO.class);
         }
        List<PatientMedicareCardDO> patientMedicareCards = patientMedicareCardService.search(fields, filters, sorts, page, size);
        int count = (int) patientMedicareCardService.getCount(filters);
        return success(patientMedicareCards, count, page, size, PatientMedicareCardVO.class);
    }
         @GetMapping(value = BaseRequestMapping.PatientMedicareCard.LIST)
         @ApiOperation(value = "获取列表")
         public ListEnvelop<PatientMedicareCardVO> list (
             @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
             @RequestParam(value = "fields", required = false) String fields,
             @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
             @RequestParam(value = "filters", required = false) String filters,
             @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
             @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
             List<PatientMedicareCardDO> patientMedicareCards = patientMedicareCardService.search(fields, filters, sorts);
                  return success(patientMedicareCards, PatientMedicareCardVO.class);
         }
    @GetMapping(value = BaseRequestMapping.PatientMedicareCard.LIST)
    @ApiOperation(value = "获取列表")
    public ListEnvelop<PatientMedicareCardVO> list(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        List<PatientMedicareCardDO> patientMedicareCards = patientMedicareCardService.search(fields, filters, sorts);
        return success(patientMedicareCards, PatientMedicareCardVO.class);
    }
 }
}

+ 35 - 0
svr/svr-patient/src/main/java/com/yihu/jw/patient/service/personal_Info/PatientMedicareCardService.java

@ -1,13 +1,48 @@
package com.yihu.jw.patient.service.personal_Info;
import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
import com.yihu.jw.exception.business.patient.PatientNotFoundException;
import com.yihu.jw.patient.dao.personal_info.PatientMedicareCardDao;
import com.yihu.jw.patient.service.BasePatientMedicardCardService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.validation.constraints.NotNull;
/**
 * 居民卡包信息服务
 *
 * @author litaohong on  2018年11月28日
 */
@Service
public class PatientMedicareCardService extends BasePatientMedicardCardService {
    @Autowired
    private PatientMedicareCardDao patientMedicareCardDao;
    @Autowired
    private PatientService patientService;
    /**
     * 绑定医保卡
     *
     * @param id
     * @param idcard
     * @param medicareCardNumber
     */
    @Transactional(rollbackFor = Exception.class)
    public void bindCard(@NotNull String id, @NotNull String idcard, @NotNull String medicareCardNumber) {
        if (!patientService.existsByIdcard(idcard)) {
            throw new PatientNotFoundException("您的身份证号不存在!");
        }
        PatientMedicareCardDO patientMedicareCardDO = new PatientMedicareCardDO();
        patientMedicareCardDO.setCode(medicareCardNumber);
        patientMedicareCardDO.setPatientCode(id);
        patientMedicareCardDO.setParentType(PatientMedicareCardDO.ParentType.CareCard.name());
        patientMedicareCardDO.setType(PatientMedicareCardDO.Type.MedicareCard.name());
        patientMedicareCardDO.setDel("1");
        this.save(patientMedicareCardDO);
    }
}

+ 39 - 9
svr/svr-patient/src/main/java/com/yihu/jw/patient/service/personal_Info/PatientService.java

@ -1,9 +1,12 @@
package com.yihu.jw.patient.service.personal_Info;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.junit.Assert.assertEquals;
import com.google.common.base.Preconditions;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.exception.business.patient.CapthcaInvalidException;
import com.yihu.jw.exception.business.patient.NotFoundPatientException;
import com.yihu.jw.exception.business.patient.PatientNotFoundException;
import com.yihu.jw.file_upload.FileUploadService;
import com.yihu.jw.patient.dao.personal_info.PatientDao;
import com.yihu.jw.patient.service.BasePatientService;
@ -14,6 +17,9 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotNull;
/**
 * 居民信息服务
@ -41,7 +47,7 @@ public class PatientService extends BasePatientService {
        Preconditions.checkNotNull(password);
        BasePatientDO patient = patientDao.findOne(id);
        if(null == patient){
            throw new NotFoundPatientException("当前居民不存在:【 " + id + "】");
            throw new PatientNotFoundException("当前居民不存在:【 " + id + "】");
        }
        patient.setSalt(randomString(5));
        password = patient.getIdcard().substring(0, 5);
@ -62,7 +68,7 @@ public class PatientService extends BasePatientService {
        Preconditions.checkNotNull(newPassword);
        BasePatientDO patient = patientDao.findOne(id);
        if(null == patient){
            throw new NotFoundPatientException("当前居民不存在:【 " + id + "】");
            throw new PatientNotFoundException("当前居民不存在:【 " + id + "】");
        }
        patient.setSalt(randomString(5));
        patient.setPassword(MD5.md5Hex(newPassword + "{" + patient.getSalt() + "}"));
@ -73,16 +79,18 @@ public class PatientService extends BasePatientService {
     * 修改手机号
     * @param id
     * @param newMobile
     * @param captcha
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public BasePatientDO updateMobile(String id,String newMobile,String captcha){
        Preconditions.checkNotNull(id);
        Preconditions.checkNotNull(newMobile);
        Preconditions.checkNotNull(captcha);
    public BasePatientDO updateMobile(@NotNull String id, @NotNull String newMobile, @NotNull String captcha){
        Preconditions.checkNotNull(id,"id不可为空");
        Preconditions.checkNotNull(newMobile,"手机号不可为空");
        Preconditions.checkNotNull(captcha,"验证码不可为空");
        BasePatientDO patient = patientDao.findOne(id);
        if(null == patient){
            throw new NotFoundPatientException("当前居民不存在:【 " + id + "】");
            throw new PatientNotFoundException("当前居民不存在:【 " + id + "】");
        }
        if(StringUtils.endsWithIgnoreCase(patient.getMobile(),newMobile)){
            return patient;
@ -96,7 +104,29 @@ public class PatientService extends BasePatientService {
        return patient;
    }
    public BasePatientDO completePatientDetails(BasePatientDO patientDO){
    /**
     * 完善居民基本信息
     * @param headPortrait 头像
     * @param patientDO
     * @return
     */
    public BasePatientDO completePatientDetails(MultipartFile headPortrait, BasePatientDO patientDO){
        return patientDO;
    }
    /**
     * 验证身份证是否存在
     * @param idcard
     * @return
     */
    public boolean existsByIdcard(String idcard){
        Preconditions.checkNotNull(idcard,"身份证不可为空");
        return patientDao.existsByIdcard(idcard);
    }
//    public BasePatientDO findNameAndIdcardById(String id) {
//    }
}

+ 12 - 4
svr/svr-patient/src/main/resources/application.yml

@ -99,9 +99,10 @@ spring:
fastDFS:
  fastdfs_file_url: http://172.19.103.54:80/
# 短信发送地址
jw:
  smsUrl: http://svr-base:10020/sms_gateway/send
# 短信验证码发送的客户端标识,居民端
sms:
  clientId: EwC0iRSrcP
---
spring:
  profiles: jwtest
@ -130,6 +131,9 @@ spring:
fastDFS:
  fastdfs_file_url: http://172.19.103.54:80/
# 短信验证码发送的客户端标识,居民端
sms:
  clientId: EwC0iRSrcP
---
spring:
  profiles: prod
@ -153,4 +157,8 @@ spring:
    host: 172.19.103.88 # Redis server host.
    port: 6379 # Redis server port.
fastDFS:
  fastdfs_file_url: http://172.19.103.54:80/
  fastdfs_file_url: http://172.19.103.54:80/
# 短信验证码发送的客户端标识,居民端
sms:
  clientId: EwC0iRSrcP