Sfoglia il codice sorgente

Merge branch 'dev' of http://192.168.1.220:10080/jiwei/wlyy2.0 into dev

zdm 6 anni fa
parent
commit
06d9a26b16

+ 0 - 28
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/cache/Receiver.java

@ -1,28 +0,0 @@
package com.yihu.jw.healthyhouse.cache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.concurrent.CountDownLatch;
/**
 * @author HZY
 * @created 2018/10/8 15:05
 */
public class Receiver {
    private static final Logger LOGGER = LoggerFactory.getLogger(Receiver.class);
    private CountDownLatch latch;
    @Autowired
    public Receiver(CountDownLatch latch) {
        this.latch = latch;
    }
    public void receiveMessage(String message) {
        LOGGER.info("Received <" + message + ">");
        latch.countDown();
    }
    }

+ 0 - 68
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/config/RedisConfig.java

@ -1,68 +0,0 @@
package com.yihu.jw.healthyhouse.config;
import com.yihu.jw.healthyhouse.cache.Receiver;
import org.springframework.boot.SpringApplication;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
import java.util.concurrent.CountDownLatch;
/**
 * @author HZY
 * @created 2018/10/8 15:12
 */
@Configuration
public class RedisConfig  {
    /*
     * Redis消息监听器容器
     * 这个容器加载了RedisConnectionFactory和消息监听器
     */
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
                                            MessageListenerAdapter listenerAdapter){
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.addMessageListener(listenerAdapter, new PatternTopic("sprinboot-redis-messaage"));
        return container;
    }
    /*
     * 将Receiver注册为一个消息监听器,并指定消息接收的方法(receiveMessage)
     * 如果不指定消息接收的方法,消息监听器会默认的寻找Receiver中的handleMessage这个方法作为消息接收的方法
     */
    @Bean
    MessageListenerAdapter listenerAdapter(Receiver receiver){
        return new MessageListenerAdapter(receiver, "receiveMessage");
    }
    /*
     * Receiver实例
     */
    @Bean
    Receiver receiver(CountDownLatch latch){
        return new Receiver(latch);
    }
    @Bean
    CountDownLatch latch(){
        return new CountDownLatch(1);
    }
    /*
     * Redis Template 用来发送消息
     */
    @Bean
    StringRedisTemplate template(RedisConnectionFactory connectionFactory){
        return new StringRedisTemplate(connectionFactory);
    }
}

+ 2 - 1
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/controller/facilities/FacilitiesController.java

@ -315,7 +315,8 @@ public class FacilitiesController extends EnvelopRestEndpoint {
            }
        } catch (Exception e) {
            return failed("导入异常");
            e.printStackTrace();
            return failed("导入异常,请检查导入文件格式"+e.getMessage());
        }
        return failed("导入失败");
    }

+ 87 - 63
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/controller/user/UserController.java

@ -37,14 +37,15 @@ import java.util.Map;
import java.util.regex.Pattern;
/**
 *  用户相关 接口
 * 用户相关 接口
 *
 * @author HZY
 * @created 2018/9/19 17:29
 */
@Api(value = "UserController", description = "用户管理信息", tags = {"2用户管理"})
@RequestMapping(value = "/user", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class UserController  extends EnvelopRestEndpoint {
public class UserController extends EnvelopRestEndpoint {
    @Autowired
    private UserService userService;
@ -64,20 +65,20 @@ public class UserController  extends EnvelopRestEndpoint {
            @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
            @RequestParam(value = "size", required = false) Integer size,
            @ApiParam(name = "page", value = "页码", defaultValue = "1")
            @RequestParam(value = "page", required = false) Integer page ) throws ManageException, ParseException {
            @RequestParam(value = "page", required = false) Integer page) throws ManageException, ParseException {
        List<User> userList = userService.search(fields, filters, sorts, page, size);
        int count = (int)userService.getCount(filters);
        return success(userList,count, page, size);
        int count = (int) userService.getCount(filters);
        return success(userList, count, page, size);
    }
    @GetMapping("/userDetail")
    @ApiOperation(value = "获取用户详情")
    public ObjEnvelop userDetail(
            @ApiParam(name = "userId", value = "用户id", required = true)@RequestParam(required = true, name = "userId") String userId ) {
            @ApiParam(name = "userId", value = "用户id", required = true) @RequestParam(required = true, name = "userId") String userId) {
        User user = userService.findById(userId);
        return success("获取成功",user);
        return success("获取成功", user);
    }
@ -85,7 +86,7 @@ public class UserController  extends EnvelopRestEndpoint {
    @ApiOperation(value = "获取用户统计信息")
    public ObjEnvelop usedFacilityCount() {
        Map<String, Long> userStatistics = userService.findUserStatistics();
        return success("获取成功",userStatistics);
        return success("获取成功", userStatistics);
    }
    @ApiOperation(value = "新增/更新(idy已存在)用户信息")
@ -102,15 +103,30 @@ public class UserController  extends EnvelopRestEndpoint {
        return success(user);
    }
    @PostMapping("/updateUserActivated")
    @ApiOperation(value = "更改用户状态")
    public Envelop updateUserStatus(
            @ApiParam(name = "userId", value = "用户id", required = true) @RequestParam(required = true, name = "userId") String userId,
            @ApiParam(name = "status", value = "用户状态(0:冻结,1:在线,2:离线)", required = true) @RequestParam(required = true, name = "status") Integer status,
            @ApiParam(name = "operator", value = "操作者ID", required = true) @RequestParam(required = true, name = "operator") String operator) {
        try {
            userService.updateStatus(userId, operator, status, null);
        } catch (ManageException e) {
            return failed(e.getMessage());
        }
        return success("冻结成功");
    }
    @PostMapping("/freezeUser")
    @ApiOperation(value = "用户冻结")
    public Envelop freezeUser(
            @ApiParam(name = "userId", value = "用户id", required = true)@RequestParam(required = true, name = "userId") String userId ,
            @ApiParam(name = "reason", value = "冻结原因", required = true)@RequestParam(required = true, name = "reason") String reason ,
            @ApiParam(name = "operator", value = "操作者ID", required = true)@RequestParam(required = true, name = "operator") String operator ) {
            @ApiParam(name = "userId", value = "用户id", required = true) @RequestParam(required = true, name = "userId") String userId,
            @ApiParam(name = "reason", value = "冻结原因", required = true) @RequestParam(required = true, name = "reason") String reason,
            @ApiParam(name = "operator", value = "操作者ID", required = true) @RequestParam(required = true, name = "operator") String operator) {
        try {
            userService.updateStatus(userId,operator, HouseUserContant.activated_lock,reason);
            userService.updateStatus(userId, operator, HouseUserContant.activated_lock, reason);
        } catch (ManageException e) {
            return failed(e.getMessage());
        }
@ -121,10 +137,10 @@ public class UserController  extends EnvelopRestEndpoint {
    @PostMapping("/activateUser")
    @ApiOperation(value = "用户激活")
    public Envelop activeUser(
            @ApiParam(name = "userId", value = "用户id", required = true)@RequestParam(required = true, name = "userId") String userId ,
            @ApiParam(name = "operator", value = "操作者ID", required = true)@RequestParam(required = true, name = "operator") String operator ) {
            @ApiParam(name = "userId", value = "用户id", required = true) @RequestParam(required = true, name = "userId") String userId,
            @ApiParam(name = "operator", value = "操作者ID", required = true) @RequestParam(required = true, name = "operator") String operator) {
        try {
            userService.updateStatus(userId,operator, HouseUserContant.activated_active,null);
            userService.updateStatus(userId, operator, HouseUserContant.activated_active, null);
        } catch (ManageException e) {
            return failed(e.getMessage());
        }
@ -134,12 +150,12 @@ public class UserController  extends EnvelopRestEndpoint {
    @PostMapping("/updatePwd")
    @ApiOperation(value = "更新密码")
    public Envelop updatePwd(
            @ApiParam(name = "userId", value = "用户Id", required = true)@RequestParam(required = true, name = "userId") String userId ,
            @ApiParam(name = "oldPwd", value = "原密码", required = true)@RequestParam(required = true, name = "oldPwd") String oldPwd ,
            @ApiParam(name = "newPwd", value = "新密码", required = true)@RequestParam(required = true, name = "newPwd") String newPwd ) {
            @ApiParam(name = "userId", value = "用户Id", required = true) @RequestParam(required = true, name = "userId") String userId,
            @ApiParam(name = "oldPwd", value = "原密码", required = true) @RequestParam(required = true, name = "oldPwd") String oldPwd,
            @ApiParam(name = "newPwd", value = "新密码", required = true) @RequestParam(required = true, name = "newPwd") String newPwd) {
        try {
            userService.updatePwd(userId,oldPwd,newPwd);
            userService.updatePwd(userId, oldPwd, newPwd);
        } catch (ManageException e) {
            return failed(e.getMessage());
        }
@ -149,21 +165,25 @@ public class UserController  extends EnvelopRestEndpoint {
    @PostMapping("/updatePhone")
    @ApiOperation(value = "【app端普通用户】更新安全手机号码")
    public Envelop updatePhone(
            @ApiParam(name = "clientId", value = "应用id", required = true)@RequestParam(required = true, name = "clientId") String clientId,
            @ApiParam(name = "userId", value = "用户Id", required = true)@RequestParam(required = true, name = "userId") String userId ,
            @ApiParam(name = "oldPhone", value = "旧安全手机号", required = true)@RequestParam(required = true, name = "oldPhone") String oldPhone ,
            @ApiParam(name = "newPhone", value = "新安全手机号", required = true)@RequestParam(required = true, name = "newPhone") String newPhone ,
            @ApiParam(name = "captcha", value = "短信验证码", required = true)@RequestParam(required = true, name = "captcha") String captcha ) {
            @ApiParam(name = "clientId", value = "应用id", required = true) @RequestParam(required = true, name = "clientId") String clientId,
            @ApiParam(name = "userId", value = "用户Id", required = true) @RequestParam(required = true, name = "userId") String userId,
            @ApiParam(name = "oldPhone", value = "旧安全手机号", required = true) @RequestParam(required = true, name = "oldPhone") String oldPhone,
            @ApiParam(name = "newPhone", value = "新安全手机号", required = true) @RequestParam(required = true, name = "newPhone") String newPhone,
            @ApiParam(name = "captcha", value = "短信验证码", required = true) @RequestParam(required = true, name = "captcha") String captcha) {
        try {
            User user = userService.findByTelephoneAndUserType(newPhone, LoginInfo.USER_TYPE_PATIENT);
            if (user == null) {
                return failed("手机号:" + newPhone + "已被绑定,可更换新手机号或直接登录!");
            }
            //验证码
            if (wlyyRedisVerifyCodeService.verification(clientId, oldPhone, captcha)) {
            if (wlyyRedisVerifyCodeService.verification(clientId, newPhone, captcha)) {
                userService.updateSecurePhone(userId, newPhone);
                return success("更新安全手机号码成功");
            } else {
                return failed("验证码错误");
            }
        }catch (ManageException e){
        } catch (ManageException e) {
            return failed(e.getMessage());
        }
    }
@ -171,20 +191,24 @@ public class UserController  extends EnvelopRestEndpoint {
    @PostMapping("/updateAdminPhone")
    @ApiOperation(value = "【web端管理员】更新安全手机号码")
    public Envelop updateAdminPhone(
            @ApiParam(name = "clientId", value = "应用id", required = true)@RequestParam(required = true, name = "clientId") String clientId,
            @ApiParam(name = "userId", value = "用户Id", required = true)@RequestParam(required = true, name = "userId") String userId ,
            @ApiParam(name = "newPhone", value = "新安全手机号", required = true)@RequestParam(required = true, name = "newPhone") String newPhone ,
            @ApiParam(name = "captcha", value = "短信验证码", required = true)@RequestParam(required = true, name = "captcha") String captcha ) {
            @ApiParam(name = "clientId", value = "应用id", required = true) @RequestParam(required = true, name = "clientId") String clientId,
            @ApiParam(name = "userId", value = "用户Id", required = true) @RequestParam(required = true, name = "userId") String userId,
            @ApiParam(name = "newPhone", value = "新安全手机号", required = true) @RequestParam(required = true, name = "newPhone") String newPhone,
            @ApiParam(name = "captcha", value = "短信验证码", required = true) @RequestParam(required = true, name = "captcha") String captcha) {
        try {
        //验证码
        if (wlyyRedisVerifyCodeService.verification(clientId, newPhone, captcha)) {
            userService.updateAdministorSecurePhone(userId,newPhone);
            return success("更新安全手机号码成功");
        } else {
            return failed("验证码错误");
        }
        }catch (ManageException e) {
            User user = userService.findByTelephoneAndUserType(newPhone, LoginInfo.USER_TYPE_SUPER_AdminManager);
            if (user == null) {
                return failed("手机号:" + newPhone + "已被绑定,可更换新手机号或直接登录!");
            }
            //验证码
            if (wlyyRedisVerifyCodeService.verification(clientId, newPhone, captcha)) {
                userService.updateAdministorSecurePhone(userId, newPhone);
                return success("更新安全手机号码成功");
            } else {
                return failed("验证码错误");
            }
        } catch (ManageException e) {
            return failed(e.getMessage());
        }
    }
@ -192,12 +216,12 @@ public class UserController  extends EnvelopRestEndpoint {
    @PostMapping("/checkIdCardNo")
    @ApiOperation(value = "用户实名认证")
    public Envelop checkIdCardNo(
            @ApiParam(name = "userId", value = "用户Id", required = true)@RequestParam(required = true, name = "userId") String userId ,
            @ApiParam(name = "name", value = "用户姓名", required = true)@RequestParam(required = true, name = "name") String name ,
            @ApiParam(name = "idCardNo", value = "身份证号码", required = true)@RequestParam(required = true, name = "idCardNo") String idCardNo ) {
            @ApiParam(name = "userId", value = "用户Id", required = true) @RequestParam(required = true, name = "userId") String userId,
            @ApiParam(name = "name", value = "用户姓名", required = true) @RequestParam(required = true, name = "name") String name,
            @ApiParam(name = "idCardNo", value = "身份证号码", required = true) @RequestParam(required = true, name = "idCardNo") String idCardNo) {
        try {
            userService.checkIdCardNo(userId,name,idCardNo);
            userService.checkIdCardNo(userId, name, idCardNo);
        } catch (ManageException e) {
            return failed(e.getMessage());
        }
@ -207,7 +231,7 @@ public class UserController  extends EnvelopRestEndpoint {
    @GetMapping("/existence")
    @ApiOperation(value = "【管理员】-验证管理员是否存在")
    public Envelop existence(
            @ApiParam(name = "telephone", value = "管理员账号", required = true)@RequestParam(required = true, name = "telephone") String telephone  ) {
            @ApiParam(name = "telephone", value = "管理员账号", required = true) @RequestParam(required = true, name = "telephone") String telephone) {
        try {
            boolean b = userService.checkManageUser(telephone);
@ -222,14 +246,14 @@ public class UserController  extends EnvelopRestEndpoint {
    }
    @GetMapping("/findUserByPhoneOrName")
    @ApiOperation(value = "根据手机号或者用户查询用户",notes = "找回密码时验证")
    @ApiOperation(value = "根据手机号或者用户查询用户", notes = "找回密码时验证")
    public Envelop findUserByPhoneOrName(
            @ApiParam(name = "loginName", value = "管理员登录账号", required = true)@RequestParam(required = true, name = "loginName") String loginName  ) {
            @ApiParam(name = "loginName", value = "管理员登录账号", required = true) @RequestParam(required = true, name = "loginName") String loginName) {
        User user = userService.findByLoginCodeAndUserType(loginName, LoginInfo.USER_TYPE_SUPER_AdminManager);
        if (user != null) {
            return success("该管理员账号存在!",user);
        }else {
            return success("该管理员账号存在!", user);
        } else {
            return failed("该管理员账号不存在!");
        }
    }
@ -244,7 +268,7 @@ public class UserController  extends EnvelopRestEndpoint {
        try {
            String resetPwd = userService.resetPwd(userId, password);
            return success("重设密码成功",password);
            return success("重设密码成功", password);
        } catch (ManageException e) {
            return failed(e.getMessage());
        }
@ -256,22 +280,22 @@ public class UserController  extends EnvelopRestEndpoint {
    @ApiOperation(value = "用户列表导出excel")
    public Envelop exportToExcel(
            HttpServletResponse response,
            @ApiParam(name = "city", value = "所在市区", required = false)@RequestParam(required = false, name = "city") String city,
            @ApiParam(name = "activated", value = "用户状态", required = false)@RequestParam(required = false, name = "activated") String activated ,
            @ApiParam(name = "name", value = "姓名/手机号", required = false)@RequestParam(required = false, name = "name") String name ,
            @ApiParam(name = "sort", value = "使用次数排序", required = false)@RequestParam(required = false, name = "sort") String sort) {
            @ApiParam(name = "city", value = "所在市区", required = false) @RequestParam(required = false, name = "city") String city,
            @ApiParam(name = "activated", value = "用户状态", required = false) @RequestParam(required = false, name = "activated") String activated,
            @ApiParam(name = "name", value = "姓名/手机号", required = false) @RequestParam(required = false, name = "name") String name,
            @ApiParam(name = "sort", value = "使用次数排序", required = false) @RequestParam(required = false, name = "sort") String sort) {
        response.setCharacterEncoding("UTF-8");
        try {
        //获取用户数据
        Map<String, String> map = new HashMap<>();
        map.put("cityCode",city);
        map.put("activated",activated);
        map.put("name",name);
        map.put("telephone",name);
        List<User> userList = userService.userList( map, sort);
        userService.exportUsersExcel(response,userList);
        return success("导出成功");
        }catch (ManageException e){
            //获取用户数据
            Map<String, String> map = new HashMap<>();
            map.put("cityCode", city);
            map.put("activated", activated);
            map.put("name", name);
            map.put("telephone", name);
            List<User> userList = userService.userList(map, sort);
            userService.exportUsersExcel(response, userList);
            return success("导出成功");
        } catch (ManageException e) {
            return failed(e.getMessage());
        }
    }
@ -284,7 +308,7 @@ public class UserController  extends EnvelopRestEndpoint {
            @RequestParam(value = "userId") String userId) {
        try {
              userService.setUserActivated(userId, 60);
            userService.setUserActivated(userId, 10);
            return success("心跳正常");
        } catch (Exception e) {
            return failed("心跳异常");

+ 2 - 1
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/dao/user/UserDao.java

@ -41,7 +41,8 @@ public interface UserDao extends PagingAndSortingRepository<User, String>, JpaSp
    Long countAllByUserTypeAndCreateTimeBetween(String userType,Date start,Date end);
    User findByLoginCodeAndUserType(String loginCode,String userType);
    @Query("from User u where u.userType=?1 and (u.telephone=?2 or u.loginCode=?3 ) ")
    User findByUserTypeAndTelephoneOrLoginCode(String userType,String telephone,String loginCode);
    User findByTelephoneAndUserType(String telephone,String userType);
}

+ 5 - 2
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/listener/MyKeyExpirationEventMessageListener.java

@ -8,9 +8,9 @@ import org.springframework.data.redis.listener.RedisMessageListenerContainer;
 * @author HZY
 * @created 2018/10/8 15:11
 */
public class MyKeyExpirationEventMessageListener extends KeyExpirationEventMessageListener {
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
    public MyKeyExpirationEventMessageListener(RedisMessageListenerContainer listenerContainer) {
    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }
@ -20,6 +20,9 @@ public class MyKeyExpirationEventMessageListener extends KeyExpirationEventMessa
//      System.out.println(new String(message.getChannel()));
//      System.out.println(new String(pattern));
//      super.onMessage(message, pattern);
        // 用户做自己的业务处理即可,注意message.toString()可以获取失效的key
        String expiredKey = message.toString();
        System.out.println(expiredKey);
    }
}

+ 8 - 9
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/user/UserService.java

@ -3,12 +3,9 @@ package com.yihu.jw.healthyhouse.service.user;
import com.yihu.jw.exception.business.ManageException;
import com.yihu.jw.healthyhouse.constant.LoginInfo;
import com.yihu.jw.healthyhouse.constant.UserConstant;
import com.yihu.jw.healthyhouse.dao.facility.FacilityDao;
import com.yihu.jw.healthyhouse.dao.user.UserDao;
import com.yihu.jw.healthyhouse.model.facility.Facility;
import com.yihu.jw.healthyhouse.model.user.User;
import com.yihu.jw.healthyhouse.util.poi.ExcelUtils;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.wlyy.HouseUserContant;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
@ -35,7 +32,6 @@ import javax.transaction.Transactional;
import java.io.OutputStream;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
/**
 * @author HZY
@ -43,15 +39,18 @@ import java.util.regex.Pattern;
 */
@Service
public class UserService extends BaseJpaService<User, UserDao> {
    private final String KEY_PREFIX = ":healthyHouse";
    private final String KEY_PREFIX = "healthyHouse:";
    private final String KEY_SUFFIX = ":activated";
    private final RedisTemplate redisTemplate;
    @Autowired
    private UserDao userDao;
    @Autowired
    private FacilityUsedRecordService facilityUsedRecordService;
    @Autowired
    private  RedisTemplate redisTemplate;
    public UserService(RedisTemplate redisTemplate) {
        this.redisTemplate = redisTemplate;
    }
    /**
     * 设置用户在线状态
@ -73,7 +72,7 @@ public class UserService extends BaseJpaService<User, UserDao> {
    }
    public User findByLoginCodeAndUserType(String loginCode,String userType) {
        return userDao.findByLoginCodeAndUserType(loginCode,userType);
        return userDao.findByUserTypeAndTelephoneOrLoginCode(userType,loginCode,loginCode);
    }
    public User findByTelephoneAndUserType(String telephone,String userType) {