Sfoglia il codice sorgente

//MouldPatch

private_deployment
xhxu 2 anni fa
parent
commit
ee0cdbbd41
11 ha cambiato i file con 276 aggiunte e 648 eliminazioni
  1. +71
    -0
      suimangAdmin/src/main/java/com/iformall/controller/sm/UserMouldVideoController.java
  2. +1
    -171
      suimangCApi/src/main/java/com/iformall/controller/BaseController.java
  3. +1
    -1
      suimangCApi/src/main/java/com/iformall/controller/MouldPatchController.java
  4. +89
    -0
      suimangCApi/src/main/java/com/iformall/controller/UserMouldVideoController.java
  5. +0
    -475
      suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
  6. +1
    -0
      suimangCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java
  7. +1
    -1
      suimangService/src/main/java/com/iformall/domain/po/sm/MouldPatch.java
  8. +1
    -0
      suimangService/src/main/java/com/iformall/service/sm/MouldPatchService.java
  9. +42
    -0
      suimangService/src/main/java/com/iformall/service/sm/UserMouldVideoService.java
  10. +5
    -0
      suimangService/src/main/java/com/iformall/service/sm/impl/MouldPatchServiceImpl.java
  11. +64
    -0
      suimangService/src/main/java/com/iformall/service/sm/impl/UserMouldVideoServiceImpl.java

+ 71
- 0
suimangAdmin/src/main/java/com/iformall/controller/sm/UserMouldVideoController.java Vedi File

@@ -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);
}

}

+ 1
- 171
suimangCApi/src/main/java/com/iformall/controller/BaseController.java Vedi File

@@ -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;
}


}

+ 1
- 1
suimangCApi/src/main/java/com/iformall/controller/MouldPatchController.java Vedi File

@@ -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);
}



+ 89
- 0
suimangCApi/src/main/java/com/iformall/controller/UserMouldVideoController.java Vedi File

@@ -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);
}

}

+ 0
- 475
suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java Vedi File

@@ -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);
}
}

}

+ 1
- 0
suimangCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java Vedi File

@@ -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;
}


+ 1
- 1
suimangService/src/main/java/com/iformall/domain/po/sm/MouldPatch.java Vedi File

@@ -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")


+ 1
- 0
suimangService/src/main/java/com/iformall/service/sm/MouldPatchService.java Vedi File

@@ -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获得实体


+ 42
- 0
suimangService/src/main/java/com/iformall/service/sm/UserMouldVideoService.java Vedi File

@@ -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);
}

+ 5
- 0
suimangService/src/main/java/com/iformall/service/sm/impl/MouldPatchServiceImpl.java Vedi File

@@ -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) {


+ 64
- 0
suimangService/src/main/java/com/iformall/service/sm/impl/UserMouldVideoServiceImpl.java Vedi File

@@ -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);
}

}

Caricamento…
Annulla
Salva