@@ -0,0 +1,71 @@ | |||
package com.iformall.controller.sm; | |||
import com.github.pagehelper.PageInfo; | |||
import com.iformall.annotation.SystemControllerLog; | |||
import com.iformall.common.ErrorCode; | |||
import com.iformall.common.ResultData; | |||
import com.iformall.controller.base.BaseController; | |||
import com.iformall.domain.po.base.BaseEntity; | |||
import com.iformall.domain.po.sm.MouldPatch; | |||
import com.iformall.domain.po.sm.MouldPatchSign; | |||
import com.iformall.domain.po.sm.UserMouldVideo; | |||
import com.iformall.service.sm.MouldPatchService; | |||
import com.iformall.service.sm.MouldPatchSignService; | |||
import com.iformall.service.sm.UserMouldVideoService; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiImplicitParam; | |||
import io.swagger.annotations.ApiImplicitParams; | |||
import io.swagger.annotations.ApiOperation; | |||
import org.apache.commons.lang3.StringUtils; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.web.bind.annotation.*; | |||
import java.util.List; | |||
@RestController | |||
@RequestMapping("userVideo") | |||
@Api(description = "模板接口") | |||
public class UserMouldVideoController extends BaseController { | |||
private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
@Autowired | |||
private UserMouldVideoService userMouldVideoService; | |||
@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 UserMouldVideo record, Integer pageNum, Integer pageSize) { | |||
logger.debug("[" + getIpAddr() + "] UserMouldVideoController::list"); | |||
if (record == null) record = new UserMouldVideo(); | |||
record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); | |||
final PageInfo<UserMouldVideo> page = userMouldVideoService.listAsPage(record, pageNum, pageSize); | |||
return new ResultData(page); | |||
} | |||
@ApiOperation("根据id删除接口") | |||
@GetMapping("/del") | |||
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||
@SystemControllerLog(description = "删除") | |||
public ResultData delete(Long id) { | |||
logger.debug("[" + getIpAddr() + "] UserMouldVideoController::delete"); | |||
userMouldVideoService.deleteById(id); | |||
return new ResultData(); | |||
} | |||
@ApiOperation("根据id查询接口") | |||
@GetMapping("/findById") | |||
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||
@SystemControllerLog(description = "查询") | |||
public ResultData findById(Long id) { | |||
logger.debug("[" + getIpAddr() + "] UserMouldVideoController::findById"); | |||
UserMouldVideo userMouldVideo = userMouldVideoService.getById(id); | |||
return new ResultData(userMouldVideo); | |||
} | |||
} |
@@ -102,27 +102,10 @@ public class BaseController { | |||
}); | |||
} | |||
@Deprecated | |||
public String getTenantId() { | |||
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
String tenantId = (String) request.getAttribute(Constant.TENANT_ID); | |||
return tenantId; | |||
} | |||
public TenantEntity getTenantInfo() { | |||
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
String tenantId = (String) request.getAttribute(Constant.TENANT_ID); | |||
String parentTenantId = (String) request.getAttribute(Constant.PARENT_TENANT_ID); | |||
TenantEntity tenantEntity = new TenantEntity() ; | |||
tenantEntity.setTenantId(tenantId); | |||
tenantEntity.setParentTenantId(parentTenantId); | |||
return tenantEntity; | |||
return new TenantEntity(); | |||
} | |||
public String getFinalTenantId() { | |||
TenantEntity tenantEntity = getTenantInfo(); | |||
return tenantEntity.getFinalTenantId(); | |||
} | |||
public Long getMemberId() { | |||
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
@@ -132,140 +115,6 @@ public class BaseController { | |||
} | |||
return memberId; | |||
} | |||
public WxAppinfo getCurrentApp() { | |||
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
WxAppinfo appInfo = (WxAppinfo) request.getAttribute(Constant.APP_INFO); | |||
if(appInfo == null){ | |||
throw new MallinkException(ErrorCode.USER_APPINFO_NOT_EXIST); | |||
} | |||
return appInfo; | |||
} | |||
public EnumPayVersion getPayVersion() { | |||
WxAppinfo appinfo = getCurrentApp(); | |||
if ( null == appinfo) { | |||
throw new MallinkException(ErrorCode.USER_APPINFO_NOT_EXIST); | |||
} | |||
WxPayAccount payAccount = RedisCacheUtils.getCacheObject(objectCommonRedisTemplate, Constant.payaccountPrev+appinfo.getPayId(), WxPayAccount.class); | |||
if (null == payAccount) { | |||
payAccount = wxPayAccountService.getById(appinfo.getPayId()); | |||
if (null != payAccount) { | |||
RedisCacheUtils.cache(objectCommonRedisTemplate, Constant.payaccountPrev+appinfo.getPayId(), payAccount, 24*60*60); | |||
} | |||
} | |||
if (null == payAccount) { | |||
throw new MallinkException(ErrorCode.USER_APPINFO_NOFUND_PAYACCOUNT); | |||
} | |||
return EnumPayVersion.getEnum(payAccount.getPayVersion()); | |||
} | |||
/** | |||
* 微信端获取当前用户 wx_c_user,非会员 | |||
* 请尽量多用getTenantId, getUserId | |||
*/ | |||
public CUser getCUser() { | |||
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
BaseCUserEntity baseuser = (BaseCUserEntity) request.getAttribute(Constant.REQUEST_C_USER_KEY); | |||
if (baseuser == null) { | |||
throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
} | |||
if (baseuser.getRealUser() == null) { | |||
throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
} | |||
CUser user = null; | |||
if(EnumAppPlat.WX.equals(baseuser.getAppPlat())){ | |||
user = RedisCacheUtils.getFieldObject(baseuser, "realUser", WxCUser.class); | |||
}else if(EnumAppPlat.TOUTIAO.equals(baseuser.getAppPlat())){ | |||
user = RedisCacheUtils.getFieldObject(baseuser, "realUser", TtCUser.class); | |||
}else{ | |||
user = RedisCacheUtils.getFieldObject(baseuser, "realUser", CUser.class); | |||
} | |||
if(user == null){ | |||
throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
} | |||
// TenantEntity tenantEntity = getTenantInfo(); | |||
// if (user.getTenantId() == null) { | |||
// user.setTenantId(tenantEntity.getTenantId()); | |||
// } | |||
// if (user.getParentTenantId() == null) { | |||
// user.setParentTenantId(tenantEntity.getParentTenantId()); | |||
// } | |||
return user; | |||
} | |||
public EnumPayWay getPayWay(){ | |||
EnumAppPlat appPlat = getCUser().getAppPlat(); | |||
if(EnumAppPlat.WX.equals(appPlat)){ | |||
return EnumPayWay.PAY_WAY_WECHAT; | |||
}else if (EnumAppPlat.TOUTIAO.equals(appPlat)){ | |||
return EnumPayWay.PAY_WAY_TT; | |||
} | |||
return null; | |||
} | |||
public void removeCacheCUser() { | |||
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
BaseCUserEntity baseuser = (BaseCUserEntity) request.getAttribute(Constant.REQUEST_C_USER_KEY); | |||
cUserTokenService.removeTokenCache(baseuser.getToken()); | |||
} | |||
private WxCUserBasicInfo getCacheMember(Long memberId,String finalTenantId,String key,long seconds) throws MallinkException { | |||
// 缓存 | |||
WxCUserBasicInfo member = RedisCacheUtils.getCacheObject(objectCommonRedisTemplate, key, WxCUserBasicInfo.class); | |||
if(null == member) { | |||
member = wxCUserBasicInfoService.getById(memberId,finalTenantId); | |||
if (member == null) { | |||
throw new MallinkException(ErrorCode.USER_IS_EMPTY); | |||
} | |||
RedisCacheUtils.cache(objectCommonRedisTemplate, key, member, seconds); | |||
} | |||
return member; | |||
} | |||
public WxCUserBasicInfo getCacheMember() throws MallinkException { | |||
Long memberId = getMemberId(); | |||
String key = "webapp:member:"+memberId; | |||
return getCacheMember(memberId,getFinalTenantId(), key, 3600*24*3); | |||
} | |||
/*此处缓存短暂时间,因为积分、成长值记录*/ | |||
public WxCUserBasicInfo getShortCacheMember(Long memberId,String finalTenantId) throws Exception { | |||
String key = "webapp:short:member:"+memberId; | |||
return getCacheMember(memberId,finalTenantId, key, 100); | |||
} | |||
public void removeCacheMember(Long memberId) { | |||
String key = "webapp:member:"+memberId; | |||
RedisCacheUtils.removeCache(objectCommonRedisTemplate, key); | |||
String shortKey = "webapp:short:member:"+memberId; | |||
RedisCacheUtils.removeCache(objectCommonRedisTemplate, shortKey); | |||
} | |||
public WxMaService getWeappService(String appId) { | |||
if(isFmOpen) { | |||
return openService.getWxOpenComponentService().getWxMaServiceByAppid(appId); | |||
} else { | |||
WxAppinfo appinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId); | |||
if (appinfo == null) { | |||
return null; | |||
} | |||
WxMaService service = maUtil.getWeappService(appinfo); | |||
return service; | |||
} | |||
} | |||
public WxMaService getWeappServiceByAppInfo(WxAppinfo appinfo) { | |||
if(!isFmOpen) { | |||
WxMaService service = maUtil.getWeappService(appinfo); | |||
return service; | |||
} | |||
return null; | |||
} | |||
public String getIpAddr() { | |||
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
@@ -273,23 +122,4 @@ public class BaseController { | |||
return ipaddress; | |||
} | |||
/** | |||
* 根据扩展字段获取tenantId | |||
*/ | |||
public String getTenantId(String attach){ | |||
if(StringUtils.isNotBlank(attach)){ | |||
try{ | |||
Map<String,Object> map = JSONObject.parseObject(attach, Map.class); | |||
String tenantId = map.get("tenantId").toString(); | |||
if(StringUtils.isNotBlank(tenantId)){ | |||
return tenantId; | |||
} | |||
}catch (Exception e){ | |||
} | |||
} | |||
return null; | |||
} | |||
} |
@@ -45,7 +45,7 @@ public class MouldPatchController extends BaseController { | |||
record.setSendType(EnumMouldSendType.auto.getCode()); | |||
record.setStatus(EnumaMouldPatchStatus.put_on.getCode()); | |||
record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); | |||
final PageInfo<MouldPatch> page = mouldPatchService.listAsPage(record, pageNum, pageSize); | |||
final PageInfo<MouldPatch> page = mouldPatchService.cListAsPage(record, pageNum, pageSize); | |||
return new ResultData(page); | |||
} | |||
@@ -0,0 +1,89 @@ | |||
package com.iformall.controller; | |||
import com.github.pagehelper.PageInfo; | |||
import com.iformall.common.ErrorCode; | |||
import com.iformall.common.ResultData; | |||
import com.iformall.domain.po.base.BaseEntity; | |||
import com.iformall.domain.po.sm.MouldPatch; | |||
import com.iformall.domain.po.sm.MouldPatchSign; | |||
import com.iformall.domain.po.sm.UserMouldVideo; | |||
import com.iformall.enums.EnumMouldSendType; | |||
import com.iformall.enums.EnumaMouldPatchStatus; | |||
import com.iformall.service.sm.MouldPatchService; | |||
import com.iformall.service.sm.MouldPatchSignService; | |||
import com.iformall.service.sm.UserMouldVideoService; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiImplicitParam; | |||
import io.swagger.annotations.ApiImplicitParams; | |||
import io.swagger.annotations.ApiOperation; | |||
import org.apache.commons.lang3.StringUtils; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.web.bind.annotation.*; | |||
import java.util.List; | |||
@RestController | |||
@RequestMapping("/api/userVideo") | |||
@Api(description = "模板接口") | |||
public class UserMouldVideoController extends BaseController { | |||
private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
@Autowired | |||
private UserMouldVideoService userMouldVideoService; | |||
@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 UserMouldVideo record, Integer pageNum, Integer pageSize) { | |||
logger.debug("[" + getIpAddr() + "] UserMouldVideoController::list"); | |||
if (record == null) record = new UserMouldVideo(); | |||
record.setUserId(getMemberId()); | |||
record.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); | |||
final PageInfo<UserMouldVideo> page = userMouldVideoService.cListAsPage(record, pageNum, pageSize); | |||
return new ResultData(page); | |||
} | |||
@ApiOperation("根据id查询接口") | |||
@GetMapping("/findById") | |||
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||
public ResultData findById(Long id) { | |||
logger.debug("[" + getIpAddr() + "] MouldPatchController::findById"); | |||
UserMouldVideo userMouldVideo = userMouldVideoService.getById(id); | |||
return new ResultData(userMouldVideo); | |||
} | |||
@ApiOperation("新增接口") | |||
@PostMapping("saveOrUpdate") | |||
public ResultData saveOrUpdate(@RequestBody UserMouldVideo record) { | |||
logger.debug("[" + getIpAddr() + "] MouldPatchController::saveOrUpdate"); | |||
record.setUserId(getMemberId()); | |||
return userMouldVideoService.saveOrUpdate(record); | |||
} | |||
@ApiOperation("生成视频") | |||
@PostMapping("createVideo") | |||
public ResultData create(@RequestBody UserMouldVideo record) { | |||
logger.debug("[" + getIpAddr() + "] MouldPatchController::saveOrUpdate"); | |||
if(record.getId() == null){ | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||
} | |||
UserMouldVideo mouldVideo = userMouldVideoService.getById(record.getId()); | |||
if(mouldVideo == null || !mouldVideo.getUserId().equals(getMemberId())){ | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到用户数据"); | |||
} | |||
UserMouldVideo mouldVideoUpd = new UserMouldVideo(); | |||
mouldVideoUpd.setId(record.getId()); | |||
// mouldVideoUpd.setVideoId(); | |||
// mouldVideoUpd.setVideoPath(); | |||
// mouldVideoUpd.setVideoTime(); | |||
return userMouldVideoService.saveOrUpdate(mouldVideoUpd); | |||
} | |||
} |
@@ -1,27 +1,15 @@ | |||
package com.iformall.controller; | |||
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | |||
import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils; | |||
import com.alibaba.fastjson.JSON; | |||
import com.alibaba.fastjson.JSONObject; | |||
import com.google.code.kaptcha.Producer; | |||
import com.iformall.annotation.AuthIgnore; | |||
import com.iformall.annotation.TenantIgnore; | |||
import com.iformall.common.ErrorCode; | |||
import com.iformall.common.Result; | |||
import com.iformall.common.ResultData; | |||
import com.iformall.domain.po.*; | |||
import com.iformall.domain.po.base.TenantEntity; | |||
import com.iformall.domain.vo.MallUserInfoVo; | |||
import com.iformall.domain.vo.WxCUserVo; | |||
import com.iformall.domain.vo.WxLevelMerchantCVo; | |||
import com.iformall.enums.*; | |||
import com.iformall.exception.MallinkException; | |||
import com.iformall.service.*; | |||
import com.iformall.service.cuser.CUserServiceFactory; | |||
import com.iformall.service.wechat.FmOpenService; | |||
import com.iformall.utils.Constant; | |||
import com.iformall.utils.IPUtil; | |||
import com.iformall.utils.PasswordHelper; | |||
import com.iformall.utils.RedisCacheUtils; | |||
import io.swagger.annotations.Api; | |||
@@ -30,31 +18,19 @@ import io.swagger.annotations.ApiImplicitParams; | |||
import io.swagger.annotations.ApiOperation; | |||
import org.apache.commons.io.IOUtils; | |||
import org.apache.commons.lang3.StringUtils; | |||
import org.apache.shiro.SecurityUtils; | |||
import org.apache.shiro.subject.Subject; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.beans.factory.annotation.Qualifier; | |||
import org.springframework.data.redis.core.RedisTemplate; | |||
import org.springframework.web.bind.annotation.*; | |||
import org.springframework.web.context.request.RequestContextHolder; | |||
import org.springframework.web.context.request.ServletRequestAttributes; | |||
import javax.imageio.ImageIO; | |||
import javax.servlet.ServletException; | |||
import javax.servlet.ServletOutputStream; | |||
import javax.servlet.http.Cookie; | |||
import javax.servlet.http.HttpServletRequest; | |||
import javax.servlet.http.HttpServletResponse; | |||
import java.awt.image.BufferedImage; | |||
import java.io.IOException; | |||
import java.io.PrintWriter; | |||
import java.math.BigDecimal; | |||
import java.net.URLEncoder; | |||
import java.util.Date; | |||
import java.util.HashMap; | |||
import java.util.List; | |||
import java.util.Map; | |||
@RestController | |||
@@ -250,455 +226,4 @@ public class WxUserGrantController extends BaseController { | |||
} | |||
} | |||
@PostMapping("/updateScene") | |||
@ApiOperation(value = "用户更新scene", notes = "{\"scene\":\"string\"}") | |||
public ResultData updateScene(@RequestBody Map<String, String> map) { | |||
logger.info(map.toString()); | |||
String scene = map.get("scene"); | |||
CUser user = getCUser(); | |||
if (StringUtils.isBlank(user.getScene()) || | |||
user.getScene().equalsIgnoreCase(Constant.UNDEFINED)) { | |||
if(StringUtils.isNotBlank(scene) && scene.equalsIgnoreCase(Constant.UNDEFINED)) { | |||
user.setScene(scene); | |||
cuserFactory.getCUserService(user.getAppPlat()).updateScene(user); | |||
removeCacheCUser(); | |||
} | |||
} | |||
return new ResultData(); | |||
} | |||
@PostMapping("/updateLBS") | |||
@ApiOperation(value = "用户更新位置信息", notes = "{\"latitude\":\"string\",\"longitude\":\"string\"}") | |||
public ResultData updateLBS(@RequestBody Map<String, String> map) { | |||
logger.info(map.toString()); | |||
String longitude = map.get("longitude"); | |||
String latitude = map.get("latitude"); | |||
CUser user = getCUser(); | |||
if (!StringUtils.isBlank(longitude)) | |||
user.setLongitude(BigDecimal.valueOf(Double.valueOf(longitude))); | |||
if (!StringUtils.isBlank(latitude)) | |||
user.setLatitude(BigDecimal.valueOf(Double.valueOf(latitude))); | |||
cuserFactory.getCUserService(user.getAppPlat()).updateLBS(user); | |||
return new ResultData(); | |||
} | |||
@PostMapping("/updateExtInfo") | |||
@ApiOperation(value = "用户更新扩展信息(手机)", notes = "{\"systemInfo\":\"string\"}") | |||
public ResultData updateExtInfo(@RequestBody Map<String, String> map) { | |||
logger.debug(map.toString()); | |||
String systemInfo = map.get("systemInfo"); | |||
CUser user = getCUser(); | |||
if (StringUtils.isNotBlank(systemInfo)) { | |||
JSONObject extraInfo = new JSONObject(); | |||
extraInfo.put("systemInfo", JSONObject.parseObject(systemInfo)); | |||
user.setExtraInfo(extraInfo.toJSONString()); | |||
} | |||
cuserFactory.getCUserService(user.getAppPlat()).updateExtInfo(user); | |||
return new ResultData(); | |||
} | |||
/** | |||
* 获取用户的昵称等信息 | |||
* | |||
* @param map | |||
* @return | |||
*/ | |||
@PostMapping("/getUserInfo") | |||
@ApiOperation(value = "授权后获取用户的昵称,unionId等信息", notes = "{\"encryptedData\":\"string\",\"iv\":\"string\"}") | |||
public ResultData getUserInfo(@RequestBody Map<String, String> map) { | |||
logger.info(map.toString()); | |||
Map resultMap = new HashMap(); | |||
String encryptedData = map.get("encryptedData"); | |||
String iv = map.get("iv"); | |||
if (StringUtils.isBlank(encryptedData)) { | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "encryptedData不能为空"); | |||
} | |||
if (StringUtils.isBlank(iv)) { | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "iv不能为空"); | |||
} | |||
CUser user = getCUser(); | |||
if (user != null) { | |||
WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(user.getAppId()); | |||
if(wxAppinfo == null){ | |||
return new ResultData(ErrorCode.APP_ID_NOT_FOUND); | |||
} | |||
try { | |||
// 解密用户信息 | |||
cuserFactory.getCUserService(user.getAppPlat()).decryptUserInfo(encryptedData, iv,user,wxAppinfo,isFmOpen); | |||
resultMap.put("openId", user.getOpenId()); | |||
resultMap.put("unionId", user.getUnionId()); | |||
resultMap.put("msg", "获取用户信息成功!"); | |||
return new ResultData(resultMap); | |||
} catch (MallinkException e) { | |||
return new ResultData(e.getErrorCode(), e.getMessage()); | |||
} catch (Exception e) { | |||
logger.error(e.getMessage(), e); | |||
return new ResultData(ErrorCode.DB_FAIL.getCode(), "解密并保存出错", resultMap); | |||
} | |||
} else { | |||
return new ResultData(ErrorCode.USER_LOGIN_FAILED); | |||
} | |||
} | |||
/** | |||
* 授权后获取用户的手机号等信息 | |||
* | |||
* @param map | |||
* @return | |||
*/ | |||
@PostMapping("/getUserPhone") | |||
@ApiOperation(value = "授权后获取用户的手机号", notes = "{\"encryptedData\":\"string\",\"iv\":\"string\"}") | |||
public ResultData getUserPhone(@RequestBody Map<String, String> map) { | |||
logger.info(map.toString()); | |||
String encryptedData = map.get("encryptedData"); | |||
String iv = map.get("iv"); | |||
//登录凭证不能为空 | |||
if (StringUtils.isBlank(encryptedData)) { | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "encryptedData 不能为空"); | |||
} | |||
if (StringUtils.isBlank(iv)) { | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "iv 不能为空"); | |||
} | |||
Map resultMap = new HashMap(); | |||
CUser user = getCUser(); | |||
if (user == null) { | |||
return new ResultData(ErrorCode.USER_IS_EMPTY); | |||
} | |||
WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(user.getAppId()); | |||
if(wxAppinfo == null){ | |||
return new ResultData(ErrorCode.APP_ID_NOT_FOUND); | |||
} | |||
try { | |||
// 解密 | |||
String phone = cuserFactory.getCUserService(user.getAppPlat()).decryptPhoneNoInfo(encryptedData, iv, user, wxAppinfo, isFmOpen); | |||
resultMap.put("msg", "授权手机成功!"); | |||
resultMap.put("phone", phone); | |||
} catch (MallinkException e) { | |||
return new ResultData(e.getErrorCode(), e.getMessage()); | |||
}catch (Exception e) { | |||
this.logger.error(e.getMessage(), e); | |||
return new ResultData(ErrorCode.DB_FAIL.getCode(), "解密并保存出错", resultMap); | |||
} | |||
return new ResultData(resultMap); | |||
} | |||
/** | |||
* 检查微信用户状态 | |||
* | |||
* @return | |||
*/ | |||
@RequestMapping("/checkWechatStatus") | |||
@ApiOperation(value = "判断用户是否完成授权", notes = "") | |||
public ResultData checkWechatStatus() { | |||
Map resultMap = new HashMap(); | |||
CUser user = getCUser(); | |||
if (StringUtils.isNoneEmpty(user.getNickName())) { | |||
resultMap.put("nickName", user.getNickName()); | |||
} else { | |||
logger.warn("用户昵称未授权,跳转到用户授权页!"); | |||
return new ResultData(ErrorCode.NICK_NAME_NOT_FOUND.getCode(), "用户昵称未授权,请跳转到用户昵称授权页!", resultMap); | |||
} | |||
if (StringUtils.isNotBlank(user.getPhone())) { | |||
resultMap.put("phone", user.getPhone()); | |||
} else { | |||
if (StringUtils.isBlank(user.getPhone())) { | |||
logger.warn("用户手机号未授权,跳转到授权手机号页!"); | |||
return new ResultData(ErrorCode.PHONE_NOT_FOUND.getCode(), "用户手机号未授权,请跳转到授权手机号页!", resultMap); | |||
} | |||
if (user.getPhone().contains("*")) { | |||
logger.warn("用户手机号已加密,跳转到手工输入手机号页!"); | |||
return new ResultData(ErrorCode.PHONE_IS_ENCRYPTED.getCode(), "用户手机号已加密,手工输入手机号页!", resultMap); | |||
} | |||
} | |||
return new ResultData(Result.SUCCESS, "是老用户,已完成用户昵称/手机号授权", resultMap); | |||
} | |||
/** | |||
* 检查用户状态 | |||
* | |||
* @return | |||
*/ | |||
@RequestMapping("/checkUserStatus") | |||
@ApiOperation(value = "判断用户是否完成昵称授权", notes = "") | |||
public ResultData checkUserStatus() { | |||
Map resultMap = new HashMap(); | |||
CUser user = getCUser(); | |||
if (StringUtils.isNoneEmpty(user.getNickName())) { | |||
resultMap.put("nickName", user.getNickName()); | |||
} else { | |||
logger.warn("用户昵称未授权,跳转到用户授权页!"); | |||
return new ResultData(ErrorCode.NICK_NAME_NOT_FOUND.getCode(), "用户昵称未授权,请跳转到用户昵称授权页!", resultMap); | |||
} | |||
return new ResultData(Result.SUCCESS, "是老用户,已完成用户昵称授权", resultMap); | |||
} | |||
/** | |||
* 检查用户状态 | |||
* | |||
* @return | |||
*/ | |||
@RequestMapping("/checkPhoneStatus") | |||
@ApiOperation(value = "判断用户是否完成手机授权", notes = "") | |||
public ResultData checkPhoneStatus() { | |||
Map resultMap = new HashMap(); | |||
CUser user = getCUser(); | |||
if (StringUtils.isNotBlank(user.getPhone())) { | |||
resultMap.put("phone", user.getPhone()); | |||
} else { | |||
if (StringUtils.isBlank(user.getPhone())) { | |||
logger.warn("用户手机号未授权,跳转到授权手机号页!"); | |||
return new ResultData(ErrorCode.PHONE_NOT_FOUND.getCode(), "用户手机号未授权,请跳转到授权手机号页!", resultMap); | |||
} | |||
if (user.getPhone().contains("*")) { | |||
logger.warn("用户手机号已加密,跳转到手工输入手机号页!"); | |||
return new ResultData(ErrorCode.PHONE_IS_ENCRYPTED.getCode(), "用户手机号已加密,手工输入手机号页!", resultMap); | |||
} | |||
} | |||
return new ResultData(Result.SUCCESS, "是老用户,已完成手机号授权", resultMap); | |||
} | |||
// @RedisCache //导致更改手机号后数据更新不及时 | |||
@ApiOperation("获取当前用户信息") | |||
@GetMapping("/userinfo") | |||
public ResultData getUserInfo() { | |||
CUser user = getCUser(); | |||
WxCUserVo userVo = new WxCUserVo(); | |||
org.springframework.beans.BeanUtils.copyProperties(user, userVo); | |||
userVo.setScore(0); | |||
userVo.setCredit(0); | |||
if(user.basicInfoIs()){ | |||
WxCUserBasicInfo wxCUserBasicInfo; | |||
try { | |||
wxCUserBasicInfo = getShortCacheMember(user.getUserId(),getFinalTenantId()); | |||
//WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(user.getUserId()); | |||
if (wxCUserBasicInfo != null) { | |||
userVo.setAvatarUrl(wxCUserBasicInfo.getAvatarUrl()); | |||
userVo.setNickName(wxCUserBasicInfo.getNickName()); | |||
userVo.setScore(wxCUserBasicInfo.getPoins()); | |||
userVo.setCredit(wxCUserBasicInfo.getCredit()); | |||
userVo.setName(wxCUserBasicInfo.getName()); | |||
userVo.setBirthdate(wxCUserBasicInfo.getBirthdate()); | |||
userVo.setSex(wxCUserBasicInfo.getSex()); | |||
userVo.setHeight(wxCUserBasicInfo.getHeight()); | |||
userVo.setWeight(wxCUserBasicInfo.getWeight()); | |||
userVo.setAddress(wxCUserBasicInfo.getAddress()); | |||
userVo.setStatus(wxCUserBasicInfo.getStatus()); | |||
} | |||
} catch (Exception e) { | |||
logger.error("userinfo error.",e); | |||
} | |||
} | |||
if (userVo.getScore() == null) | |||
userVo.setScore(0); | |||
Integer levelScore = 0; | |||
Integer levelTarget= 0; | |||
userVo.setLevelName(WxLevelConfigService.DEFAULT_LEVEL); | |||
List<WxLevelConfig> levelList = wxLevelConfigService.getByTenantInfo(getTenantInfo()); | |||
if (levelList.size() > 0) | |||
levelTarget = levelList.get(0).getPoints(); | |||
for (int i = 0; i<levelList.size(); i++) { | |||
WxLevelConfig levelConfig = levelList.get(i); | |||
if (userVo.getScore() >= levelConfig.getPoints()) { | |||
userVo.setLevelId(levelConfig.getId()); | |||
userVo.setLevelName(levelConfig.getLevel()); | |||
levelScore = levelConfig.getPoints(); | |||
if (i+1 < levelList.size()) | |||
levelTarget = levelList.get(i+1).getPoints(); | |||
} | |||
} | |||
if (levelTarget == 0) { | |||
userVo.setUpgradePercent(0); | |||
userVo.setUpgradeScore(0); | |||
} else if(levelScore == levelTarget) { | |||
userVo.setUpgradePercent(100); | |||
userVo.setUpgradeScore(0); | |||
} else { | |||
userVo.setUpgradePercent((userVo.getScore()-levelScore)*100/(levelTarget-levelScore)); | |||
userVo.setUpgradeScore(levelTarget-userVo.getScore()); | |||
} | |||
return new ResultData(userVo); | |||
} | |||
/** | |||
* 授权后获取用户的手机号等信息 | |||
* | |||
* @param map | |||
* @return | |||
*/ | |||
@PostMapping("/getWeRunData") | |||
@ApiOperation(value = "获取用户过去三十天微信运动步数", notes = "{\"encryptedData\":\"string\",\"iv\":\"string\"}") | |||
public ResultData getWeRunData(@RequestBody Map<String, String> map) { | |||
logger.debug(map.toString()); | |||
String encryptedData = map.get("encryptedData"); | |||
String iv = map.get("iv"); | |||
//登录凭证不能为空 | |||
if (StringUtils.isBlank(encryptedData)) { | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "encryptedData 不能为空"); | |||
} | |||
if (StringUtils.isBlank(iv)) { | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "iv 不能为空"); | |||
} | |||
CUser user = getCUser(); | |||
String session_key = user.getSessionKey(); | |||
try { | |||
// 解密 | |||
String weRunDataStr = WxMaCryptUtils.decrypt(session_key, encryptedData, iv); | |||
if (null != weRunDataStr) { | |||
Object obj = JSON.parse(weRunDataStr); | |||
return new ResultData(obj); | |||
} else { | |||
return new ResultData(ErrorCode.WE_RUN_DATA_DECODE_ERR); | |||
} | |||
} catch (Exception e) { | |||
this.logger.error(e.getMessage(), e); | |||
return new ResultData(ErrorCode.WE_RUN_DATA_DECODE_ERR); | |||
} | |||
} | |||
/** | |||
* 用户更新信息 | |||
* | |||
* @return | |||
*/ | |||
@PostMapping("/updateUserInfo") | |||
@ApiOperation(value = "用户更新信息", notes = "") | |||
public ResultData updateUserInfo(@RequestBody WxCUserBasicInfo wxCUserBasicInfo) { | |||
if (wxCUserBasicInfo == null) | |||
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); | |||
TenantEntity tenantEntity = getTenantInfo(); | |||
Long memberId; | |||
try { | |||
memberId = getMemberId(); | |||
} catch (Exception e) { | |||
return new ResultData(Result.ERROR,e.getMessage()); | |||
} | |||
if (StringUtils.isNotBlank(wxCUserBasicInfo.getNickName()) | |||
|| StringUtils.isNotBlank(wxCUserBasicInfo.getAvatarUrl()) | |||
|| StringUtils.isNotBlank(wxCUserBasicInfo.getName()) | |||
|| wxCUserBasicInfo.getBirthdate() != null | |||
|| wxCUserBasicInfo.getSex() != null | |||
|| StringUtils.isNotBlank(wxCUserBasicInfo.getAddress())) { | |||
WxCUserBasicInfo record = new WxCUserBasicInfo(); | |||
record.setId(memberId); | |||
record.setNickName(wxCUserBasicInfo.getNickName()); | |||
record.setAvatarUrl(wxCUserBasicInfo.getAvatarUrl()); | |||
record.setName(wxCUserBasicInfo.getName()); | |||
record.setBirthdate(wxCUserBasicInfo.getBirthdate()); | |||
record.setSex(wxCUserBasicInfo.getSex()); | |||
record.setWeight(wxCUserBasicInfo.getWeight()); | |||
record.setHeight(wxCUserBasicInfo.getHeight()); | |||
record.setAddress(wxCUserBasicInfo.getAddress()); | |||
record.setUpdateDate(new Date()); | |||
record.setFinalTenantId(tenantEntity.getFinalTenantId()); | |||
wxCUserBasicInfoService.update(record); | |||
removeCacheMember(memberId); | |||
try{ | |||
//推送猫酷 | |||
mallCooUserInfoService.pullByMobileMsg(tenantEntity, record.getId()); | |||
}catch(Exception e){ | |||
logger.error("发送同步会员消息异常"); | |||
} | |||
wxScoreRulesService.addScore(tenantEntity,EnumScoreType.COMPLETE_INFO, record); | |||
//增加积分 | |||
WxCreditHistory wxCreditHistory = new WxCreditHistory(); | |||
wxCreditHistory.setCUserId(record.getId()); | |||
// wxCreditHistory.updateTenantInfo(tenantEntity); | |||
wxCreditHistory.setTenantId(tenantEntity.getFinalTenantId()); | |||
wxCreditHistory.setFinalTenantId(tenantEntity.getFinalTenantId()); | |||
wxCreditHistory.setCreateDate(new Date()); | |||
wxCreditHistory.setCreditType(EnumScoreType.COMPLETE_INFO.getCode()); | |||
wxCreditHistory.setChangePurpose(EnumScoreType.COMPLETE_INFO.getMessage()); | |||
wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); | |||
wxCreditHistory.setOperatorId(memberId); | |||
wxCreditHistoryService.saveOrUpdate(wxCreditHistory,tenantEntity.getTenantId()); | |||
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, record,tenantEntity,null); | |||
} | |||
return new ResultData(); | |||
} | |||
/** | |||
* 获取用户折扣率 | |||
* | |||
* @return | |||
*/ | |||
@RequestMapping("/getDiscountInfo") | |||
@ApiOperation(value = "获取用户折扣率", notes = "") | |||
public ResultData getDiscountInfo() { | |||
WxCUserBasicInfo member; | |||
try { | |||
Long memberId = getMemberId(); | |||
member = wxCUserBasicInfoService.getById(memberId,getFinalTenantId()); | |||
} catch (Exception e) { | |||
return new ResultData(Result.ERROR,e.getMessage()); | |||
} | |||
List<WxLevelConfig> levelList = wxLevelConfigService.getByTenantInfo(getTenantInfo()); | |||
String level = WxLevelConfigService.DEFAULT_LEVEL; | |||
Long levelId = 0L; | |||
for (WxLevelConfig levelConfig : levelList) { | |||
if (member.getPoins() >= levelConfig.getPoints()) { | |||
if (levelConfig.getDiscountEnable().equals(EnumLevelConfigDiscountStatus.ENABLE.getCode())) | |||
levelId = levelConfig.getId(); | |||
level = levelConfig.getLevel(); | |||
} | |||
} | |||
WxLevelMerchant levelMerchant = new WxLevelMerchant(); | |||
levelMerchant.updateTenantInfo(getTenantInfo()); | |||
levelMerchant.setLevelId(levelId); | |||
List<WxLevelMerchantCVo> levelMerchantList = wxLevelConfigService.findListCVo(levelMerchant); | |||
Map<String, Object> result = new HashMap(); | |||
result.put("id", member.getId()); | |||
result.put("level", level); | |||
result.put("levelMerchantList", levelMerchantList); | |||
return new ResultData(result); | |||
} | |||
@PostMapping("/updateMsg") | |||
@ApiOperation(value = "updateMsg", notes = "{\"id\":\"string\"}") | |||
public ResultData updateMsg() { | |||
CUser user = getCUser(); | |||
cuserFactory.getCUserService(user.getAppPlat()).updateMsgCount(user); | |||
return new ResultData(); | |||
} | |||
@ApiOperation("获取当前用户二维码") | |||
@GetMapping("/userinfoQrCode") | |||
public ResultData getUserinfoQrCode() { | |||
CUser user = getCUser(); | |||
if(user.basicInfoIs()){ | |||
String qrCode = ""; | |||
if(StringUtils.isBlank(user.getQrCode())){ | |||
qrCode = cuserFactory.getCUserService(user.getAppPlat()).updateQrCode(user); | |||
}else{ | |||
qrCode = user.getQrCode(); | |||
} | |||
return new ResultData(qrCode); | |||
}else{ | |||
return new ResultData(ErrorCode.USER_IS_NOT_MEMBER); | |||
} | |||
} | |||
} |
@@ -73,6 +73,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { | |||
if(basicInfo == null){ | |||
throw new MallinkException(ErrorCode.NET_TOKEN_INVALID.getCode(), "URL:" + request.getRequestURL() + " token失效,请重新登录"); | |||
} | |||
request.setAttribute(Constant.LOGIN_MEMBER_KEY,basicInfo.getId()); | |||
return true; | |||
} | |||
@@ -96,7 +96,7 @@ public class MouldPatch extends TenantEntity { | |||
@io.swagger.annotations.ApiModelProperty(value="购买须知",name="remark") | |||
private String remark; | |||
@io.swagger.annotations.ApiModelProperty(value="模板文件",name="mould_path") | |||
@io.swagger.annotations.ApiModelProperty(value="模板文件",name="mouldPath") | |||
private String mouldPath; | |||
@io.swagger.annotations.ApiModelProperty(value="EnumaMouldPatchStatus 状态(-1:全部,0:草稿/待生效,1:已生效,2:已失效,3:已作废)",name="status") | |||
@@ -26,6 +26,7 @@ public interface MouldPatchService { | |||
* @return | |||
*/ | |||
PageInfo<MouldPatch> listAsPage(MouldPatch record, Integer pageIndex, Integer pageSize); | |||
PageInfo<MouldPatch> cListAsPage(MouldPatch record, Integer pageIndex, Integer pageSize); | |||
/** | |||
* 根据Id获得实体 | |||
@@ -0,0 +1,42 @@ | |||
package com.iformall.service.sm; | |||
import com.github.pagehelper.PageInfo; | |||
import com.iformall.common.ResultData; | |||
import com.iformall.domain.po.sm.MouldPatch; | |||
import com.iformall.domain.po.sm.UserMouldVideo; | |||
public interface UserMouldVideoService { | |||
/** | |||
* 根据实体查询分页列表 | |||
* | |||
* @param record | |||
* @param pageIndex | |||
* @param pageSize | |||
* @return | |||
*/ | |||
PageInfo<UserMouldVideo> listAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize); | |||
PageInfo<UserMouldVideo> cListAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize); | |||
/** | |||
* 根据Id获得实体 | |||
* | |||
* @param id | |||
* @return | |||
*/ | |||
UserMouldVideo getById(Long id); | |||
/** | |||
* 保存或更新实体 | |||
* | |||
* @param record | |||
*/ | |||
ResultData saveOrUpdate(UserMouldVideo record); | |||
/** | |||
* 根据Id删除实体 | |||
* | |||
* @param id | |||
*/ | |||
void deleteById(Long id); | |||
} |
@@ -34,6 +34,11 @@ public class MouldPatchServiceImpl implements MouldPatchService { | |||
public PageInfo<MouldPatch> listAsPage(MouldPatch record, Integer pageIndex, Integer pageSize) { | |||
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> mouldPatchMapper.findList(record)); | |||
} | |||
@Override | |||
public PageInfo<MouldPatch> cListAsPage(MouldPatch record, Integer pageIndex, Integer pageSize) { | |||
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> mouldPatchMapper.findCList(record)); | |||
} | |||
@Override | |||
public MouldPatch getById(Long id) { | |||
@@ -0,0 +1,64 @@ | |||
package com.iformall.service.sm.impl; | |||
import com.github.pagehelper.PageHelper; | |||
import com.github.pagehelper.PageInfo; | |||
import com.iformall.common.IdWorker; | |||
import com.iformall.common.ResultData; | |||
import com.iformall.domain.po.sm.UserMouldVideo; | |||
import com.iformall.mapper.UserMouldVideoMapper; | |||
import com.iformall.service.sm.UserMouldVideoService; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import java.util.Date; | |||
@Service | |||
public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||
private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
@Autowired | |||
UserMouldVideoMapper userMouldVideoMapper; | |||
@Override | |||
public PageInfo<UserMouldVideo> listAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize) { | |||
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> userMouldVideoMapper.findList(record)); | |||
} | |||
@Override | |||
public PageInfo<UserMouldVideo> cListAsPage(UserMouldVideo record, Integer pageIndex, Integer pageSize) { | |||
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> userMouldVideoMapper.findCList(record)); | |||
} | |||
@Override | |||
public UserMouldVideo getById(Long id) { | |||
return userMouldVideoMapper.selectById(id); | |||
} | |||
@Override | |||
public ResultData saveOrUpdate(UserMouldVideo record) { | |||
Date now = new Date(); | |||
if (record.getId() == null) { | |||
//record.setId(UUID.randomUUID().toString().replaceAll("-", "")); | |||
final IdWorker idWorker = IdWorker.get(); | |||
record.setId(idWorker.nextId()); | |||
record.setCreateDate(now); | |||
record.setUpdateDate(now); | |||
userMouldVideoMapper.insert(record); | |||
} else { | |||
record.setUpdateDate(now); | |||
userMouldVideoMapper.updateById(record); | |||
} | |||
return new ResultData(); | |||
} | |||
@Override | |||
public void deleteById(Long id) { | |||
userMouldVideoMapper.deleteById(id); | |||
} | |||
} |