ソースを参照

b端用户登录

release_toaliyun_real
Stormeye.Wu 7年前
コミット
59deaa2713
10個のファイルの変更191行の追加134行の削除
  1. +6
    -4
      mallinkBApi/src/main/java/com/simple/controller/BaseController.java
  2. +0
    -71
      mallinkBApi/src/main/java/com/simple/controller/WxAppinfoController.java
  3. +69
    -41
      mallinkBApi/src/main/java/com/simple/controller/WxMerchantBUserController.java
  4. +6
    -4
      mallinkBApi/src/main/java/com/simple/interceptor/AuthorizationInterceptor.java
  5. +4
    -3
      mallinkBApi/src/main/java/com/simple/resolver/LoginUserHandlerMethodArgumentResolver.java
  6. +58
    -3
      mallinkService/src/main/java/com/simple/domain/po/WxMerchantBUser.java
  7. +3
    -3
      mallinkService/src/main/java/com/simple/mapper/WxMerchantBUserMapper.java
  8. +10
    -2
      mallinkService/src/main/java/com/simple/service/WxMerchantBUserService.java
  9. +5
    -0
      mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java
  10. +30
    -3
      mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml

+ 6
- 4
mallinkBApi/src/main/java/com/simple/controller/BaseController.java ファイルの表示

@@ -10,9 +10,11 @@ import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;
import com.simple.domain.po.WxAppinfo;
import com.simple.domain.po.WxCUser;
import com.simple.domain.po.WxMerchantBUser;
import com.simple.interceptor.AuthorizationInterceptor;
import com.simple.service.WxAppinfoService;
import com.simple.service.WxCUserService;
import com.simple.service.WxMerchantBUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
@@ -25,7 +27,7 @@ import javax.servlet.http.HttpServletRequest;
@RestController
public class BaseController {
@Autowired
private WxCUserService wxCUserService;
private WxMerchantBUserService wxMerchantBUserService;

@Autowired
private WxAppinfoService wxAppinfoService;
@@ -53,17 +55,17 @@ public class BaseController {
}


public WxCUser getUser() {
public WxMerchantBUser getUser() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
Long cUserId = (Long) request.getAttribute(AuthorizationInterceptor.LOGIN_USER_KEY);
WxCUser user = wxCUserService.getById(cUserId);
WxMerchantBUser user = wxMerchantBUserService.getById(cUserId);
return user;
}

public String getTenantId() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
Long cUserId = (Long) request.getAttribute(AuthorizationInterceptor.LOGIN_USER_KEY);
WxCUser user = wxCUserService.getById(cUserId);
WxMerchantBUser user = wxMerchantBUserService.getById(cUserId);
return user.getTenantId();
}



+ 0
- 71
mallinkBApi/src/main/java/com/simple/controller/WxAppinfoController.java ファイルの表示

@@ -1,71 +0,0 @@
package com.simple.controller;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;

import com.github.pagehelper.PageInfo;
import com.simple.common.Result;
import com.simple.common.ResultData;

import com.simple.domain.po.WxAppinfo;
import com.simple.service.WxAppinfoService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@RestController
@RequestMapping("wxAppinfo")
public class WxAppinfoController extends BaseController
{
@Autowired
private WxAppinfoService wxAppinfoService;

private Logger logger = Logger.getLogger(WxAppinfoController.class);
@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData list(@ModelAttribute WxAppinfo wxAppinfo,Integer pageNum, Integer pageSize) {
if (null == wxAppinfo) wxAppinfo = new WxAppinfo();
final PageInfo<WxAppinfo> page = wxAppinfoService.listAsPage(wxAppinfo, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation("新增接口")
@PostMapping("add")
public ResultData add(@RequestBody WxAppinfo wxAppinfo) {
//Assert.notNull(wxAppinfo.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxAppinfoService.saveOrUpdate(wxAppinfo);
return new ResultData();
}

@ApiOperation("根据id更新接口")
@PostMapping("update")
public ResultData update(@RequestBody WxAppinfo wxAppinfo) {
wxAppinfoService.saveOrUpdate(wxAppinfo);
return new ResultData();
}

@ApiOperation("根据id删除接口")
@GetMapping("/del")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData delete(Long id) {
wxAppinfoService.deleteById(id);
return new ResultData(Result.SUCCESS, "删除成功", null);
}
@ApiOperation("根据id查询接口")
@GetMapping("/findById")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS,"查询成功",wxAppinfoService.getById(id));
}
}

+ 69
- 41
mallinkBApi/src/main/java/com/simple/controller/WxMerchantBUserController.java ファイルの表示

@@ -1,5 +1,12 @@
package com.simple.controller;

import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.simple.annotation.AuthIgnore;
import com.simple.common.ErrorCode;
import com.simple.utils.IPUtil;
import me.chanjar.weixin.common.error.WxErrorException;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
@@ -14,58 +21,79 @@ import com.simple.service.WxMerchantBUserService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("wxMerchantBUser")
public class WxMerchantBUserController extends BaseController
{
private Logger logger = Logger.getLogger(WxMerchantBUserController.class);

@Autowired
private WxMerchantBUserService wxMerchantBUserService;

private Logger logger = Logger.getLogger(WxMerchantBUserController.class);
@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData list(@ModelAttribute WxMerchantBUser wxMerchantBUser,Integer pageNum, Integer pageSize) {
if (null == wxMerchantBUser) wxMerchantBUser = new WxMerchantBUser();
final PageInfo<WxMerchantBUser> page = wxMerchantBUserService.listAsPage(wxMerchantBUser, pageNum, pageSize);
return new ResultData(page);
}
/**
* 用户登录
* @param map
* @return
*/
@AuthIgnore
@PostMapping("/login")
@ApiOperation(value="用户登录", notes="{\"appId\":\"string\",\"phone\":\"string\",\"password\":\"string\",\"scene\":\"string\",\"sceneAddress\":\"string\"}")
public ResultData userLogin(@RequestBody Map<String, String> map) {
logger.debug(map.toString());

@ApiOperation("新增接口")
@PostMapping("add")
public ResultData add(@RequestBody WxMerchantBUser wxMerchantBUser) {
//Assert.notNull(wxMerchantBUser.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxMerchantBUserService.saveOrUpdate(wxMerchantBUser);
return new ResultData();
}
Map resultMap = new HashMap();

@ApiOperation("根据id更新接口")
@PostMapping("update")
public ResultData update(@RequestBody WxMerchantBUser wxMerchantBUser) {
wxMerchantBUserService.saveOrUpdate(wxMerchantBUser);
return new ResultData();
}
String appId = map.get("appId");
String phone = map.get("phone");
String password = map.get("password");
String scene = map.get("scene");
String sceneAddress = map.get("sceneAddress");
//登录凭证不能为空
if (StringUtils.isBlank(phone)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "phone不能为空");
}
if (StringUtils.isBlank(password)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "password不能为空");
}

@ApiOperation("根据id删除接口")
@GetMapping("/del")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData delete(Long id) {
wxMerchantBUserService.deleteById(id);
return new ResultData(Result.SUCCESS, "删除成功", null);
}
@ApiOperation("根据id查询接口")
@GetMapping("/findById")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS,"查询成功",wxMerchantBUserService.getById(id));
String token = null;
String session_key = null;
String openId = null;
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
String ipaddress = IPUtil.getIpAddr(request);

WxMerchantBUser user = new WxMerchantBUser();
user.setAppId(appId);
user.setPhone(phone);
user.setBUserPwd(password);

try {
WxMerchantBUser user1 = wxMerchantBUserService.getById(user.getId());
if (user1 != null) {
user1.createToken(new Date());
token = user1.getToken();
wxMerchantBUserService.saveOrUpdate(user1);
resultMap.put("token", token);
} else {
user.createToken(new Date());
token = user.getToken();

wxMerchantBUserService.saveOrUpdate(user);
resultMap.put("token", token);
}
} catch (Exception e) {
logger.error(e.getMessage());
return new ResultData(ErrorCode.DB_FAIL.getCode(), "wx_c_user数据库保存出错", resultMap);
}
return new ResultData(resultMap);
}
}

+ 6
- 4
mallinkBApi/src/main/java/com/simple/interceptor/AuthorizationInterceptor.java ファイルの表示

@@ -4,8 +4,10 @@ package com.simple.interceptor;
import com.simple.annotation.AuthIgnore;
import com.simple.common.ErrorCode;
import com.simple.domain.po.WxCUser;
import com.simple.domain.po.WxMerchantBUser;
import com.simple.exception.MallinkException;
import com.simple.service.WxCUserService;
import com.simple.service.WxMerchantBUserService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -24,7 +26,7 @@ import javax.servlet.http.HttpServletResponse;
@Component
public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
@Autowired
private WxCUserService wxCUserService;
private WxMerchantBUserService wxMerchantBUserService;

public static final String LOGIN_USER_KEY = "LOGIN_USER_KEY";

@@ -56,13 +58,13 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter {

///// TODO use b端用户表
// 查询token信息
WxCUser wxCUser = wxCUserService.getByToken(token);
if(wxCUser == null || wxCUser.getExpireTime().getTime() < System.currentTimeMillis()){
WxMerchantBUser wxMerchantBUser = wxMerchantBUserService.getByToken(token);
if(wxMerchantBUser == null || wxMerchantBUser.getExpireTime().getTime() < System.currentTimeMillis()){
throw new MallinkException(ErrorCode.TOKEN_INVALID.getCode(), "URL:" + request.getRequestURL() + " token失效,请重新登录");
}

//设置userId到request里,后续根据userId,获取用户信息
request.setAttribute(LOGIN_USER_KEY, wxCUser.getId());
request.setAttribute(LOGIN_USER_KEY, wxMerchantBUser.getId());

return true;
}


+ 4
- 3
mallinkBApi/src/main/java/com/simple/resolver/LoginUserHandlerMethodArgumentResolver.java ファイルの表示

@@ -2,8 +2,9 @@ package com.simple.resolver;

import com.simple.annotation.LoginUser;
import com.simple.domain.po.WxCUser;
import com.simple.domain.po.WxMerchantBUser;
import com.simple.interceptor.AuthorizationInterceptor;
import com.simple.service.WxCUserService;
import com.simple.service.WxMerchantBUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.stereotype.Component;
@@ -22,7 +23,7 @@ import org.springframework.web.method.support.ModelAndViewContainer;
@Component
public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
@Autowired
private WxCUserService wxCUserService;
private WxMerchantBUserService wxMerchantBUserService;

@Override
public boolean supportsParameter(MethodParameter parameter) {
@@ -39,7 +40,7 @@ public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgu
}

//获取用户信息
WxCUser user = wxCUserService.getByToken((String)object);
WxMerchantBUser user = wxMerchantBUserService.getByToken((String)object);

return user;
}


+ 58
- 3
mallinkService/src/main/java/com/simple/domain/po/WxMerchantBUser.java ファイルの表示

@@ -11,12 +11,14 @@ import java.io.Serializable;
@Table(name = "wx_merchant_b_user")
public class WxMerchantBUser implements Serializable {
private static final long serialVersionUID = 1L;
//12小时后过期
private final static int EXPIRE = 3600 * 12;
@Id
protected Long id;
@Transient
protected List<String> ids;
protected List<Long> ids;
@Transient
protected String sortColumns;
@@ -32,10 +34,11 @@ public class WxMerchantBUser implements Serializable {
return sortColumns;
}
public List<String> getIds() {
public List<Long> getIds() {
return ids;
}
public void setIds(List<String> ids) {

public void setIds(List<Long> ids) {
this.ids = ids;
}
@@ -47,6 +50,9 @@ public class WxMerchantBUser implements Serializable {
/*B端用户id**/
@io.swagger.annotations.ApiModelProperty(value="B端用户id",name="bUserId")
private Long bUserId;
/*B端用户手机号**/
@io.swagger.annotations.ApiModelProperty(value="B端用户手机号",name="phone")
private String phone;
/***/
@io.swagger.annotations.ApiModelProperty(value="",name="bUserPwd")
private String bUserPwd;
@@ -59,6 +65,15 @@ public class WxMerchantBUser implements Serializable {
/*更新时间**/
@io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate")
private Date updateDate;
/*小程序的appId**/
@io.swagger.annotations.ApiModelProperty(value="小程序的appId",name="appId")
private String appId;
/*用户登录用token**/
@io.swagger.annotations.ApiModelProperty(value="用户登录用token",name="token")
private String token;
/*用户过期时间**/
@io.swagger.annotations.ApiModelProperty(value="用户过期时间",name="expireTime")
private Date expireTime;
public String getTenantId() {
return tenantId;
}
@@ -71,6 +86,12 @@ public class WxMerchantBUser implements Serializable {
public void setBUserId(Long _bUserId) {
bUserId = _bUserId;
}
public String getPhone() {
return phone;
}
public void setPhone(String _phone) {
phone = _phone;
}
public String getBUserPwd() {
return bUserPwd;
}
@@ -95,6 +116,24 @@ public class WxMerchantBUser implements Serializable {
public void setUpdateDate(Date _updateDate) {
updateDate = _updateDate;
}
public String getAppId() {
return appId;
}
public void setAppId(String _appId) {
appId = _appId;
}
public String getToken() {
return token;
}
public void setToken(String _token) {
token = _token;
}
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date _expireTime) {
expireTime = _expireTime;
}



@@ -103,10 +142,14 @@ public class WxMerchantBUser implements Serializable {
Id_ASC("`id` ASC"),Id_DESC("`id` DESC")
,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC")
,BUserId_ASC("`bUserId` ASC"),BUserId_DESC("`bUserId` DESC")
,Phone_ASC("`phone` ASC"),Phone_DESC("`phone` DESC")
,BUserPwd_ASC("`bUserPwd` ASC"),BUserPwd_DESC("`bUserPwd` DESC")
,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC")
,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC")
,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC")
,AppId_ASC("`appId` ASC"),AppId_DESC("`appId` DESC")
,Token_ASC("`token` ASC"),Token_DESC("`token` DESC")
,ExpireTime_ASC("`expireTime` ASC"),ExpireTime_DESC("`expireTime` DESC")
;
private String value;
Field(String value){
@@ -158,4 +201,16 @@ public class WxMerchantBUser implements Serializable {
this.setSortColumns(Field.valueOf(sortColumns));
}
}

public void createToken(Date currentDate) {
if (expireTime == null || expireTime.getTime() < currentDate.getTime())
{
//生成一个token
String token = UUID.randomUUID().toString();
//过期时间
Date expireTime = new Date(currentDate.getTime() + EXPIRE * 1000);
setToken(token);
setExpireTime(expireTime);
}
}
}

+ 3
- 3
mallinkService/src/main/java/com/simple/mapper/WxMerchantBUserMapper.java ファイルの表示

@@ -5,12 +5,12 @@ import com.simple.common.CommonMapper;
import org.apache.ibatis.annotations.Param;
import com.simple.domain.po.WxMerchantBUser;

public interface WxMerchantBUserMapper extends CommonMapper<WxMerchantBUser, String> {
public interface WxMerchantBUserMapper extends CommonMapper<WxMerchantBUser, Long> {

List<WxMerchantBUser> findList(WxMerchantBUser wxMerchantBUser);


WxMerchantBUser findByToken(String token);


+ 10
- 2
mallinkService/src/main/java/com/simple/service/WxMerchantBUserService.java ファイルの表示

@@ -10,8 +10,8 @@ public interface WxMerchantBUserService {
* 根据实体查询分页列表
*
* @param record
* @param offset
* @param limit
* @param pageIndex
* @param pageSize
* @return
*/
PageInfo<WxMerchantBUser> listAsPage(WxMerchantBUser record, Integer pageIndex, Integer pageSize);
@@ -23,6 +23,14 @@ public interface WxMerchantBUserService {
* @return
*/
WxMerchantBUser getById(Long id);

/**
* 根据token获得实体
*
* @param token
* @return
*/
WxMerchantBUser getByToken(String token);
/**
* 保存或更新实体


+ 5
- 0
mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java ファイルの表示

@@ -27,6 +27,11 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService {
return wxMerchantBUserMapper.selectByPrimaryKey(id);
}

@Override
public WxMerchantBUser getByToken(String token) {
return wxMerchantBUserMapper.findByToken(token);
}

@Override
public void saveOrUpdate(WxMerchantBUser record) {
if (record.getId() == null) {


+ 30
- 3
mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml ファイルの表示

@@ -5,14 +5,18 @@
<id column="id" jdbcType="BIGINT" property="id" />
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId" />
<result column="b_user_id" jdbcType="BIGINT" property="bUserId" />
<result column="phone" jdbcType="VARCHAR" property="phone" />
<result column="b_user_pwd" jdbcType="VARCHAR" property="bUserPwd" />
<result column="merchant_id" jdbcType="BIGINT" property="merchantId" />
<result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
<result column="app_id" jdbcType="VARCHAR" property="appId" />
<result column="token" jdbcType="VARCHAR" property="token" />
<result column="expire_time" jdbcType="TIMESTAMP" property="expireTime" />
</resultMap>
<sql id="allColumns">
`id`,`tenant_id`,`b_user_id`,`b_user_pwd`,`merchant_id`,`create_date`,`update_date`
`id`,`tenant_id`,`b_user_id`,`phone`,`b_user_pwd`,`merchant_id`,`create_date`,`update_date`,`app_id`,`token`,`expire_time`
</sql>

<sql id="dynamicWhereConditions">
@@ -33,6 +37,11 @@
</if>
<if test=" null != phone ">
and `phone` like concat('%', #{phone},'%')
</if>
<if test=" null != bUserPwd ">
and `b_user_pwd` like concat('%', #{bUserPwd},'%')
@@ -51,6 +60,21 @@
<if test=" null != updateDate ">
and `update_date` = #{updateDate}
</if>
<if test=" null != appId ">
and `app_id` like concat('%', #{appId},'%')
</if>
<if test=" null != token ">
and `token` like concat('%', #{token},'%')
</if>
<if test=" null != expireTime ">
and `expire_time` = #{expireTime}
</if>
<if test=" null != ids ">
and id in
@@ -65,8 +89,11 @@
select <include refid="allColumns" /> from wx_merchant_b_user
<include refid="dynamicWhereConditions" />
</select>

<select id="findByToken" resultMap="BaseResultMap">
select * from wx_merchant_b_user
where `token` = #{token}
</select>


読み込み中…
キャンセル
保存