Browse Source

feature1.0.0-img:添加快手用户接口

master
chengkun 4 years ago
parent
commit
379bcc9888
  1. 28
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/FhConfig.java
  2. 1
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/TiktokConfig.java
  3. 16
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/WxConfig.java
  4. 5
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java
  5. 12
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/TiktokConstant.java
  6. 226
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/FhMiniController.java
  7. 84
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/FhUserController.java
  8. 19
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java
  9. 45
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/WxMiniController.java
  10. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CollectionUserDto.java
  11. 35
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/FhUserDto.java
  12. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/TiktokImgMapper.java
  13. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/TiktokImgService.java
  14. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java
  15. 410
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/FhUserServiceImpl.java
  16. 8
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokImgServiceImpl.java
  17. 123
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/WxUserServiceImpl.java
  18. 27
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/FhSessionInfoVo.java
  19. 30
      bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/TiktokImgMapper.xml

28
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/FhConfig.java

@ -0,0 +1,28 @@
package com.bnyer.img.config;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
/**
* 快手配置类
* @author chengkun
* @date 2022/4/21 17:43
*/
@Configuration
@ConfigurationProperties(prefix = "bnyer.img.fasthand")
@Getter
@RefreshScope
public class FhConfig {
@Value("${bnyer.img.fasthand.appId}")
private String appId;
@Value("${bnyer.img.fasthand.secret}")
public String secret;
@Value("${bnyer.img.fasthand.sessionInfoUrl}")
public String sessionInfoUrl;
}

1
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/TiktokConfig.java

@ -12,6 +12,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.Resource; import javax.annotation.Resource;
/** /**
* 字节配置类
* @author chengkun * @author chengkun
* @date 2022/4/21 17:43 * @date 2022/4/21 17:43
*/ */

16
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/WxConfig.java

@ -12,6 +12,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
/** /**
* 微信配置类
* @author chengkun * @author chengkun
* @date 2022/4/21 17:43 * @date 2022/4/21 17:43
*/ */
@ -33,19 +34,4 @@ public class WxConfig {
@Value("${bnyer.img.wechat.tokenUrl}") @Value("${bnyer.img.wechat.tokenUrl}")
public String tokenUrl; public String tokenUrl;
@Bean
public WxMaConfig wxMaConfig() {
WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
config.setAppid(appId);
config.setSecret(secret);
return config;
}
@Bean
public WxMaService wxMaService(WxMaConfig maConfig) {
WxMaService service = new WxMaServiceImpl();
service.setWxMaConfig(maConfig);
return service;
}
} }

5
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java

@ -68,6 +68,11 @@ public class RedisKeyConstant {
*/ */
public static final String TIKTOK_USER_LOGIN_KEY = "bnyer.img.tiktok.user:"; public static final String TIKTOK_USER_LOGIN_KEY = "bnyer.img.tiktok.user:";
/**
* 快手小程序用户登录键
*/
public static final String FH_USER_LOGIN_KEY = "bnyer.img.fh.user:";
/** /**
* 微信小程序用户登录键 * 微信小程序用户登录键
*/ */

12
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/TiktokConstant.java

@ -11,6 +11,11 @@ public class TiktokConstant {
*/ */
public static final String SUCCESS = "0"; public static final String SUCCESS = "0";
/**
* 快手授权接口成功响应码
*/
public static final String FH_SUCCESS = "1";
/** /**
* 成为艺术家已绑定手机号 * 成为艺术家已绑定手机号
*/ */
@ -49,5 +54,10 @@ public class TiktokConstant {
/** /**
* 微信获取session调用失败 * 微信获取session调用失败
*/ */
public static final Integer CALL_WECHAT_FAIL = 105008; public static final Integer WECHAT_AUTH_ERROR = 105008;
/**
* 调用快手授权失败
*/
public static final Integer FH_AUTH_ERROR = 105009;
} }

226
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/FhMiniController.java

@ -0,0 +1,226 @@
package com.bnyer.img.controller;
import com.alibaba.fastjson.JSON;
import com.bnyer.common.core.web.controller.BaseController;
import com.bnyer.common.core.web.domain.AjaxResult;
import com.bnyer.common.core.web.page.TableDataInfo;
import com.bnyer.img.constants.TiktokConstant;
import com.bnyer.img.domain.Feedback;
import com.bnyer.img.dto.*;
import com.bnyer.img.service.*;
import com.bnyer.img.vo.CreatorTypeImgsVo;
import com.bnyer.img.vo.TiktokImgVo;
import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@Api(value = "【快手小程序】接口",tags = "【快手小程序】接口")
@RestController
@RequestMapping("/img/mini/fh")
@Slf4j
public class FhMiniController extends BaseController {
@Autowired
private BannerService bannerService;
@Autowired
private FeedBackService feedBackService;
@Autowired
private TypeService typeService;
@Autowired
private TiktokImgService tiktokImgService;
@Autowired
private FhUserService fhUserService;
@Autowired
private CreatorService creatorService;
@Autowired
private TiktokCollectionService tiktokCollectionService;
@Autowired
private TiktokLikeService tiktokLikeService;
@Autowired
private CreatorProfitService creatorProfitService;
//@TokenCheck
@ApiOperation(value="查询banner列表")
@GetMapping(value = "/listBanner")
public AjaxResult listBanner(){
return AjaxResult.success(bannerService.queryList("2"));
}
@ApiOperation(value="新增feedback")
@PostMapping(value = "/insertFeedback")
public AjaxResult insertFeedback(@Validated @RequestBody @ApiParam("feedback对象") FeedBackDto dto){
log.info("【快手图文小程序】新增反馈参数为:{}", JSON.toJSONString(dto));
Feedback feedback = dto.extractParam();
feedback.setSource("1");
return AjaxResult.success(feedBackService.insert(feedback));
}
//@TokenCheck
@ApiOperation(value="查询type列表")
@GetMapping(value = "/listType")
public AjaxResult listType(){
return AjaxResult.success(typeService.queryList());
}
//@TokenCheck
// @ApiOperation(value="查询指定艺术家图片集合")
// @PostMapping(value = "/listTiktokImgOut")
// public AjaxResult listTiktokImgOut(@Validated @RequestBody @ApiParam("TiktokImg对象") TiktokImgListMiniDto dto){
// return AjaxResult.success(tiktokImgService.queryOutList(dto.getCreatorId(),dto.getTypeId()));
// }
//@TokenCheck
@ApiOperation(value="查询图片详情")
@GetMapping(value = "/detailsTiktokImg/{id}")
public AjaxResult detailsTiktokImg(@ApiParam("图片id") @PathVariable Long id){
return AjaxResult.success(tiktokImgService.queryImgDetails(String.valueOf(id)));
}
//@TokenCheck
@ApiOperation(value="艺术家界面查询艺术家图片分页")
@PostMapping(value = "/creatorImgsPage")
public TableDataInfo creatorImgsPage(@RequestBody @ApiParam("分页对象") BasePageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
return getDataTable(creatorService.queryThreeImgCreatorList());
}
//@TokenCheck
@ApiOperation(value="根据搜索码查询艺术家图片列表")
@PostMapping(value = "/creatorImgsDetails")
public AjaxResult creatorImgsDetails(@Validated @RequestBody @ApiParam("搜索码对象") CreatorImgsDetailsDto params){
CreatorTypeImgsVo creatorVo = creatorService.queryCreatorImgListByScanCode(params.getScanCode());
if(creatorVo == null){
return AjaxResult.error(TiktokConstant.TIKTOK_CREATOR_NOT_EXIST,"该艺术家不存在!");
}
return AjaxResult.success(creatorVo);
}
//@TokenCheck
@ApiOperation(value="收藏")
@PostMapping(value = "/fhCollect")
public AjaxResult fhCollect(@Validated @RequestBody @ApiParam("收藏对象") CollectionDto dto){
tiktokCollectionService.collect(dto.getUserId(),dto.getImgId(),"1");
log.debug("【快手图文小程序】用户【{}】收藏了图片【{}】",dto.getUserId(),dto.getImgId());
return AjaxResult.success();
}
//@TokenCheck
@ApiOperation(value="取消收藏")
@PostMapping(value = "/fhUnCollect")
public AjaxResult fhUnCollect(@Validated @RequestBody @ApiParam("收藏对象") CollectionDto dto){
tiktokCollectionService.unCollect(dto.getUserId(),dto.getImgId(),"1");
log.debug("【快手图文小程序】用户【{}】取消收藏了图片【{}】",dto.getUserId(),dto.getImgId());
return AjaxResult.success();
}
//@TokenCheck
@ApiOperation(value="查询是否收藏过")
@PostMapping(value = "/judgeFhCollect")
public AjaxResult judgeFhCollect(@Validated @RequestBody @ApiParam("收藏对象") CollectionDto dto){
log.debug("【快手图文小程序】查询是否收藏过参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(tiktokCollectionService.judgeCollect(dto.getUserId(),dto.getImgId(),"1"));
}
//@TokenCheck
@ApiOperation(value="查看用户收藏分页")
@PostMapping(value = "/listFhCollection")
public TableDataInfo listFhCollection(@Validated @RequestBody @ApiParam("用户收藏对象") CollectionUserDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
log.debug("【快手图文小程序】查看用户【{}】收藏分页", dto.getUserId());
return getDataTable(tiktokCollectionService.getCollectionByUserId(dto.getUserId(),"1"));
}
//@TokenCheck
@ApiOperation(value="点赞")
@PostMapping(value = "/fhLike")
public AjaxResult fhLike(@Validated @RequestBody @ApiParam("点赞对象") CollectionDto dto){
tiktokLikeService.like(dto.getUserId(),dto.getImgId(),"1");
log.debug("【快手图文小程序】用户【{}】点赞了图片【{}】",dto.getUserId(),dto.getImgId());
return AjaxResult.success();
}
//@TokenCheck
@ApiOperation(value="取消点赞")
@PostMapping(value = "/fhUnLike")
public AjaxResult fhUnLike(@Validated @RequestBody @ApiParam("点赞对象") CollectionDto dto){
tiktokLikeService.unLike(dto.getUserId(),dto.getImgId(),"1");
log.debug("【快手图文小程序】用户【{}】取消点赞了图片【{}】",dto.getUserId(),dto.getImgId());
return AjaxResult.success();
}
//@TokenCheck
@ApiOperation(value="查询是否点赞过")
@PostMapping(value = "/judgeFhLike")
public AjaxResult judgeTiktokLike(@Validated @RequestBody @ApiParam("点赞对象") CollectionDto dto){
log.debug("【快手图文小程序】查询是否点赞过参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(tiktokLikeService.judgeLike(dto.getUserId(),dto.getImgId(),"1"));
}
@ApiOperation(value="用户登录")
@PostMapping(value = "/loginFh")
public AjaxResult loginWx(@Validated @RequestBody @ApiParam("登录对象") FhLoginDto dto){
log.info("【快手图文小程序】用户【{}】授权登录了", dto.getCode());
return AjaxResult.success(fhUserService.login(dto));
}
//@TokenCheck
@ApiOperation(value="查询首页图片列表")
@PostMapping(value = "/imgLists")
public TableDataInfo imgLists(@RequestBody @ApiParam("分页对象") BasePageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<TiktokImgVo> tiktokImgVos = tiktokImgService.queryFrontPage();
return getDataTable(tiktokImgVos);
}
//@TokenCheck
@ApiOperation(value="新增/更新艺术家即将入账广告收益")
@PostMapping(value = "/insertOrUpdatePreAdProfit")
public AjaxResult insertOrUpdatePreAdProfit(@Validated @RequestBody @ApiParam("即将入账广告对象") CreatorProfitAdInsertDto dto){
log.debug("【快手图文小程序】新增/更新艺术家即将入账广告收益参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(creatorProfitService.insertCreatorProfit(dto.extractParam()));
}
//@TokenCheck
@ApiOperation(value="新增/更新艺术家即将入账邀请收益")
@PostMapping(value = "/insertOrUpdatePreInviteProfit")
public AjaxResult insertOrUpdatePreInviteProfit(@Validated @RequestBody @ApiParam("即将入账邀请对象") CreatorProfitAdInsertDto dto){
log.debug("【快手图文小程序】新增/更新艺术家即将入账邀请收益参数为:{}", JSON.toJSONString(dto));
creatorProfitService.insertInvitedProfit(dto.extractParam());
return AjaxResult.success();
}
//@TokenCheck
@ApiOperation(value="查询热门艺术家列表")
@GetMapping(value = "/listHotCreator")
public AjaxResult listHotCreator(){
return AjaxResult.success(creatorService.queryHotCreatorList());
}
//@TokenCheck
@ApiOperation(value="根据艺术家id获取搜索码")
@GetMapping(value = "/queryCreatorScanCodeById/{id}")
public AjaxResult queryCreatorScanCodeById(@PathVariable @ApiParam("艺术家id") Long id){
Map<String, Object> result = creatorService.queryCreatorScanCodeById(id);
if(result != null){
return AjaxResult.success(result);
}else{
return AjaxResult.error("该艺术家不存在!");
}
}
}

84
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/FhUserController.java

@ -0,0 +1,84 @@
package com.bnyer.img.controller;
import com.alibaba.fastjson.JSON;
import com.bnyer.common.core.utils.Sm4Util;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.common.core.web.controller.BaseController;
import com.bnyer.common.core.web.domain.AjaxResult;
import com.bnyer.common.core.web.page.TableDataInfo;
import com.bnyer.img.domain.FhUser;
import com.bnyer.img.dto.FhUserDto;
import com.bnyer.img.dto.FhUserPageDto;
import com.bnyer.img.dto.StatusDto;
import com.bnyer.img.service.FhUserService;
import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Api(value = "【图文平台】快手用户接口",tags = "【图文平台】快手用户接口")
@RestController
@RequestMapping("/img/fhUser")
@Slf4j
public class FhUserController extends BaseController {
@Autowired
private FhUserService fhUserService;
//@RequiresPermissions("system:config:list")
@ApiOperation(value="查询快手用户分页")
@PostMapping("/page")
public TableDataInfo pageFhUser(@RequestBody @ApiParam("分页对象") FhUserPageDto dto){
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List<FhUser> fhUsers = fhUserService.queryPage(dto);
for (FhUser fhUser : fhUsers) {
if(fhUser != null){
if(StringUtils.isNotBlank(fhUser.getFhCode())){
fhUser.setFhCode(Sm4Util.sm4Decrypt(fhUser.getFhCode()));
}
}
}
return getDataTable(fhUsers);
}
//@RequiresPermissions("system:config:list")
@ApiOperation(value="修改快手用户")
@PostMapping(value = "/update")
public AjaxResult update(@RequestBody @ApiParam("user对象") FhUserDto dto){
log.debug("【图文平台后台】修改快手用户参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(fhUserService.update(dto.extractParam()));
}
//@RequiresPermissions("system:config:list")
@ApiOperation(value="删除快手用户")
@DeleteMapping(value = "/delete/{ids}")
public AjaxResult deleteFhUser(@PathVariable @ApiParam("主键ids") List<Long> ids){
log.debug("【图文平台后台】删除快手用户参数为:{}", ids);
return AjaxResult.success(fhUserService.delete(ids));
}
//@RequiresPermissions("system:config:list")
@ApiOperation(value="查询快手用户详情")
@GetMapping(value = "/details/{id}")
public AjaxResult detailsFhUser(@PathVariable @ApiParam("主键id") Long id){
FhUser fhUser = fhUserService.queryDetails(id);
if(StringUtils.isNotBlank(fhUser.getFhCode())){
fhUser.setFhCode(Sm4Util.sm4Decrypt(fhUser.getFhCode()));
}
return AjaxResult.success(fhUser);
}
//@RequiresPermissions("system:config:list")
@ApiOperation(value="变更type显示状态")
@PostMapping(value = "/changeStatus")
public AjaxResult changeStatus(@Validated @RequestBody @ApiParam("type状态对象") StatusDto dto){
log.debug("【图文平台后台】变更type参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(fhUserService.changeStatus(dto.getId(),dto.getStatus()));
}
}

19
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/TiktokMiniController.java

@ -80,11 +80,11 @@ public class TiktokMiniController extends BaseController {
} }
//@TokenCheck //@TokenCheck
@ApiOperation(value="查询指定艺术家图片集合") // @ApiOperation(value="查询指定艺术家图片集合")
@PostMapping(value = "/listTiktokImgOut") // @PostMapping(value = "/listTiktokImgOut")
public AjaxResult listTiktokImgOut(@Validated @RequestBody @ApiParam("TiktokImg对象") TiktokImgListMiniDto dto){ // public AjaxResult listTiktokImgOut(@Validated @RequestBody @ApiParam("TiktokImg对象") TiktokImgListMiniDto dto){
return AjaxResult.success(tiktokImgService.queryOutList(dto.getCreatorId(),dto.getTypeId())); // return AjaxResult.success(tiktokImgService.queryOutList(dto.getCreatorId(),dto.getTypeId()));
} // }
//@TokenCheck //@TokenCheck
@ApiOperation(value="查询图片详情") @ApiOperation(value="查询图片详情")
@ -139,11 +139,12 @@ public class TiktokMiniController extends BaseController {
} }
//@TokenCheck //@TokenCheck
@ApiOperation(value="查看用户收藏列表") @ApiOperation(value="查看用户收藏分页")
@PostMapping(value = "/listTiktokCollection") @PostMapping(value = "/listTiktokCollection")
public AjaxResult listTiktokCollection(@Validated @RequestBody @ApiParam("用户收藏对象") CollectionUserDto dto){ public TableDataInfo listTiktokCollection(@Validated @RequestBody @ApiParam("用户收藏对象") CollectionUserDto dto){
log.debug("【抖音图文小程序】查看用户【{}】收藏列表", dto.getUserId()); PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
return AjaxResult.success(tiktokCollectionService.getCollectionByUserId(dto.getUserId(),"0")); log.debug("【抖音图文小程序】查看用户【{}】收藏分页", dto.getUserId());
return getDataTable(tiktokCollectionService.getCollectionByUserId(dto.getUserId(),"0"));
} }
//@TokenCheck //@TokenCheck

45
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/WxMiniController.java

@ -79,11 +79,11 @@ public class WxMiniController extends BaseController {
} }
//@TokenCheck //@TokenCheck
@ApiOperation(value="查询指定艺术家图片集合") // @ApiOperation(value="查询指定艺术家图片集合")
@PostMapping(value = "/listTiktokImgOut") // @PostMapping(value = "/listTiktokImgOut")
public AjaxResult listTiktokImgOut(@Validated @RequestBody @ApiParam("TiktokImg对象") TiktokImgListMiniDto dto){ // public AjaxResult listTiktokImgOut(@Validated @RequestBody @ApiParam("TiktokImg对象") TiktokImgListMiniDto dto){
return AjaxResult.success(tiktokImgService.queryOutList(dto.getCreatorId(),dto.getTypeId())); // return AjaxResult.success(tiktokImgService.queryOutList(dto.getCreatorId(),dto.getTypeId()));
} // }
//@TokenCheck //@TokenCheck
@ApiOperation(value="查询图片详情") @ApiOperation(value="查询图片详情")
@ -113,8 +113,8 @@ public class WxMiniController extends BaseController {
//@TokenCheck //@TokenCheck
@ApiOperation(value="收藏") @ApiOperation(value="收藏")
@PostMapping(value = "/tiktokCollect") @PostMapping(value = "/wxCollect")
public AjaxResult tiktokCollect(@Validated @RequestBody @ApiParam("收藏对象") CollectionDto dto){ public AjaxResult wxCollect(@Validated @RequestBody @ApiParam("收藏对象") CollectionDto dto){
tiktokCollectionService.collect(dto.getUserId(),dto.getImgId(),"2"); tiktokCollectionService.collect(dto.getUserId(),dto.getImgId(),"2");
log.debug("【微信图文小程序】用户【{}】收藏了图片【{}】",dto.getUserId(),dto.getImgId()); log.debug("【微信图文小程序】用户【{}】收藏了图片【{}】",dto.getUserId(),dto.getImgId());
return AjaxResult.success(); return AjaxResult.success();
@ -122,8 +122,8 @@ public class WxMiniController extends BaseController {
//@TokenCheck //@TokenCheck
@ApiOperation(value="取消收藏") @ApiOperation(value="取消收藏")
@PostMapping(value = "/tiktokUnCollect") @PostMapping(value = "/wxUnCollect")
public AjaxResult tiktokUnCollect(@Validated @RequestBody @ApiParam("收藏对象") CollectionDto dto){ public AjaxResult wxUnCollect(@Validated @RequestBody @ApiParam("收藏对象") CollectionDto dto){
tiktokCollectionService.unCollect(dto.getUserId(),dto.getImgId(),"2"); tiktokCollectionService.unCollect(dto.getUserId(),dto.getImgId(),"2");
log.debug("【微信图文小程序】用户【{}】取消收藏了图片【{}】",dto.getUserId(),dto.getImgId()); log.debug("【微信图文小程序】用户【{}】取消收藏了图片【{}】",dto.getUserId(),dto.getImgId());
return AjaxResult.success(); return AjaxResult.success();
@ -131,24 +131,25 @@ public class WxMiniController extends BaseController {
//@TokenCheck //@TokenCheck
@ApiOperation(value="查询是否收藏过") @ApiOperation(value="查询是否收藏过")
@PostMapping(value = "/judgeTiktokCollect") @PostMapping(value = "/judgeWxCollect")
public AjaxResult judgeTiktokCollect(@Validated @RequestBody @ApiParam("收藏对象") CollectionDto dto){ public AjaxResult judgeWxCollect(@Validated @RequestBody @ApiParam("收藏对象") CollectionDto dto){
log.debug("【微信图文小程序】查询是否收藏过参数为:{}", JSON.toJSONString(dto)); log.debug("【微信图文小程序】查询是否收藏过参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(tiktokCollectionService.judgeCollect(dto.getUserId(),dto.getImgId(),"2")); return AjaxResult.success(tiktokCollectionService.judgeCollect(dto.getUserId(),dto.getImgId(),"2"));
} }
//@TokenCheck //@TokenCheck
@ApiOperation(value="查看用户收藏列表") @ApiOperation(value="查看用户收藏分页")
@PostMapping(value = "/listTiktokCollection") @PostMapping(value = "/listWxCollection")
public AjaxResult listTiktokCollection(@Validated @RequestBody @ApiParam("用户收藏对象") CollectionUserDto dto){ public TableDataInfo listWxCollection(@Validated @RequestBody @ApiParam("用户收藏对象") CollectionUserDto dto){
log.debug("【微信图文小程序】查看用户【{}】收藏列表", dto.getUserId()); PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
return AjaxResult.success(tiktokCollectionService.getCollectionByUserId(dto.getUserId(),"2")); log.debug("【微信图文小程序】查看用户【{}】收藏分页", dto.getUserId());
return getDataTable(tiktokCollectionService.getCollectionByUserId(dto.getUserId(),"2"));
} }
//@TokenCheck //@TokenCheck
@ApiOperation(value="点赞") @ApiOperation(value="点赞")
@PostMapping(value = "/tiktokLike") @PostMapping(value = "/wxLike")
public AjaxResult tiktokLike(@Validated @RequestBody @ApiParam("点赞对象") CollectionDto dto){ public AjaxResult wxLike(@Validated @RequestBody @ApiParam("点赞对象") CollectionDto dto){
tiktokLikeService.like(dto.getUserId(),dto.getImgId(),"2"); tiktokLikeService.like(dto.getUserId(),dto.getImgId(),"2");
log.debug("【微信图文小程序】用户【{}】点赞了图片【{}】",dto.getUserId(),dto.getImgId()); log.debug("【微信图文小程序】用户【{}】点赞了图片【{}】",dto.getUserId(),dto.getImgId());
return AjaxResult.success(); return AjaxResult.success();
@ -156,8 +157,8 @@ public class WxMiniController extends BaseController {
//@TokenCheck //@TokenCheck
@ApiOperation(value="取消点赞") @ApiOperation(value="取消点赞")
@PostMapping(value = "/tiktokUnLike") @PostMapping(value = "/wxUnLike")
public AjaxResult tiktokUnLike(@Validated @RequestBody @ApiParam("点赞对象") CollectionDto dto){ public AjaxResult wxUnLike(@Validated @RequestBody @ApiParam("点赞对象") CollectionDto dto){
tiktokLikeService.unLike(dto.getUserId(),dto.getImgId(),"2"); tiktokLikeService.unLike(dto.getUserId(),dto.getImgId(),"2");
log.debug("【微信图文小程序】用户【{}】取消点赞了图片【{}】",dto.getUserId(),dto.getImgId()); log.debug("【微信图文小程序】用户【{}】取消点赞了图片【{}】",dto.getUserId(),dto.getImgId());
return AjaxResult.success(); return AjaxResult.success();
@ -165,8 +166,8 @@ public class WxMiniController extends BaseController {
//@TokenCheck //@TokenCheck
@ApiOperation(value="查询是否点赞过") @ApiOperation(value="查询是否点赞过")
@PostMapping(value = "/judgeTiktokLike") @PostMapping(value = "/judgeWxLike")
public AjaxResult judgeTiktokLike(@Validated @RequestBody @ApiParam("点赞对象") CollectionDto dto){ public AjaxResult judgeWxLike(@Validated @RequestBody @ApiParam("点赞对象") CollectionDto dto){
log.debug("【微信图文小程序】查询是否点赞过参数为:{}", JSON.toJSONString(dto)); log.debug("【微信图文小程序】查询是否点赞过参数为:{}", JSON.toJSONString(dto));
return AjaxResult.success(tiktokLikeService.judgeLike(dto.getUserId(),dto.getImgId(),"2")); return AjaxResult.success(tiktokLikeService.judgeLike(dto.getUserId(),dto.getImgId(),"2"));
} }

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CollectionUserDto.java

@ -16,7 +16,7 @@ import java.io.Serializable;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@ApiModel("用户收藏接收类") @ApiModel("用户收藏接收类")
public class CollectionUserDto implements Serializable { public class CollectionUserDto extends BasePageDto {
@NotNull(message = "用户id不能为空!") @NotNull(message = "用户id不能为空!")
@ApiModelProperty(value="用户id") @ApiModelProperty(value="用户id")

35
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/FhUserDto.java

@ -0,0 +1,35 @@
package com.bnyer.img.dto;
import com.bnyer.common.core.utils.bean.BeanUtils;
import com.bnyer.img.domain.FhUser;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("快手用户接收类")
public class FhUserDto implements Serializable {
@ApiModelProperty(value="id")
private Long id;
@ApiModelProperty(value="用户昵称")
private String username;
@ApiModelProperty(value="快手id")
private String fhCode;
@ApiModelProperty(value="头像img地址")
private String img;
public FhUser extractParam(){
FhUser fhUser = new FhUser();
BeanUtils.copyProperties(this, fhUser);
return fhUser;
}
}

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/TiktokImgMapper.java

@ -24,7 +24,7 @@ public interface TiktokImgMapper extends BaseMapper<TiktokImg> {
* @param typeId 分类Id * @param typeId 分类Id
* @return - * @return -
*/ */
List<TiktokImgVo> queryOutList(@Param("creatorId")String creatorId,@Param("typeId") String typeId); //List<TiktokImgVo> queryOutList(@Param("creatorId")String creatorId,@Param("typeId") String typeId);
/** /**
* 根据艺术家id获取3张用户首页图片 * 根据艺术家id获取3张用户首页图片

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/TiktokImgService.java

@ -57,7 +57,7 @@ public interface TiktokImgService {
* @param typeId 分类id * @param typeId 分类id
* @return - * @return -
*/ */
List<TiktokImgVo> queryOutList(String creatorId,String typeId); //List<TiktokImgVo> queryOutList(String creatorId,String typeId);
/** /**
* 查询小程序审核通过图片详情 * 查询小程序审核通过图片详情

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java

@ -280,7 +280,7 @@ public class CreatorServiceImpl implements CreatorService {
if(StringUtils.isNotBlank(sessionInfo.getString("errcode"))){ if(StringUtils.isNotBlank(sessionInfo.getString("errcode"))){
if(!sessionInfo.getString("errcode").equals(TiktokConstant.SUCCESS)){ if(!sessionInfo.getString("errcode").equals(TiktokConstant.SUCCESS)){
log.error("微信授权session接口调用失败,错误状态码为:【{}】,错误信息为:【{}】",sessionInfo.getString("errcode"),sessionInfo.getString("errmsg")); log.error("微信授权session接口调用失败,错误状态码为:【{}】,错误信息为:【{}】",sessionInfo.getString("errcode"),sessionInfo.getString("errmsg"));
throw new ServiceException("微信授权session接口调用失败!",TiktokConstant.CALL_WECHAT_FAIL); throw new ServiceException("微信授权session接口调用失败!",TiktokConstant.WECHAT_AUTH_ERROR);
} }
} }
//调用成功,组装返回数据 //调用成功,组装返回数据

410
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/FhUserServiceImpl.java

@ -1,206 +1,204 @@
//package com.bnyer.img.service.impl; package com.bnyer.img.service.impl;
//
//import cn.binarywang.wx.miniapp.api.WxMaUserService; import com.alibaba.fastjson.JSONObject;
//import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import cn.binarywang.wx.miniapp.bean.WxMaUserInfo; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
//import com.alibaba.fastjson.JSONObject; import com.bnyer.common.core.exception.ServiceException;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.bnyer.common.core.utils.Sm4Util;
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.bnyer.common.core.utils.StringUtils;
//import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.bnyer.common.core.utils.uuid.IdUtils;
//import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.redis.service.RedisService;
//import com.bnyer.common.core.utils.Sm4Util; import com.bnyer.img.config.FhConfig;
//import com.bnyer.common.core.utils.StringUtils; import com.bnyer.img.constants.RedisKeyConstant;
//import com.bnyer.common.core.utils.uuid.IdUtils; import com.bnyer.img.constants.TiktokConstant;
//import com.bnyer.common.redis.service.RedisService; import com.bnyer.img.domain.FhUser;
//import com.bnyer.img.constants.RedisKeyConstant; import com.bnyer.img.domain.TiktokCollection;
//import com.bnyer.img.constants.TiktokConstant; import com.bnyer.img.domain.TiktokLike;
//import com.bnyer.img.domain.TiktokCollection; import com.bnyer.img.dto.FhLoginDto;
//import com.bnyer.img.domain.TiktokLike; import com.bnyer.img.dto.FhUserPageDto;
//import com.bnyer.img.domain.FhUser; import com.bnyer.img.mapper.FhUserMapper;
//import com.bnyer.img.domain.TiktokUser; import com.bnyer.img.mapper.TiktokCollectionMapper;
//import com.bnyer.img.dto.FhLoginDto; import com.bnyer.img.mapper.TiktokLikeMapper;
//import com.bnyer.img.dto.WxLoginDto; import com.bnyer.img.service.FhUserService;
//import com.bnyer.img.dto.FhUserPageDto; import com.bnyer.img.vo.FhSessionInfoVo;
//import com.bnyer.img.mapper.TiktokCollectionMapper; import com.bnyer.img.vo.FhUserInfoVo;
//import com.bnyer.img.mapper.TiktokLikeMapper; import lombok.extern.slf4j.Slf4j;
//import com.bnyer.img.mapper.FhUserMapper; import org.springframework.beans.factory.annotation.Autowired;
//import com.bnyer.img.service.FhUserService; import org.springframework.stereotype.Service;
//import com.bnyer.img.vo.FhUserInfoVo; import org.springframework.transaction.annotation.Transactional;
//import com.bnyer.img.vo.TiktokSessionInfoVo; import org.springframework.web.client.RestTemplate;
//import com.bnyer.img.vo.TiktokUserInfoVo;
//import lombok.extern.slf4j.Slf4j; import javax.crypto.Cipher;
//import me.chanjar.weixin.common.error.WxErrorException; import javax.crypto.spec.IvParameterSpec;
//import org.springframework.beans.factory.annotation.Autowired; import javax.crypto.spec.SecretKeySpec;
//import org.springframework.stereotype.Service; import java.util.*;
//import org.springframework.transaction.annotation.Transactional; import java.util.concurrent.TimeUnit;
//
//import javax.crypto.Cipher; @Service
//import javax.crypto.spec.IvParameterSpec; @Slf4j
//import javax.crypto.spec.SecretKeySpec; public class FhUserServiceImpl implements FhUserService {
//import java.util.*;
//import java.util.concurrent.TimeUnit; @Autowired
// private FhUserMapper fhUserMapper;
//@Service
//@Slf4j @Autowired
//public class FhUserServiceImpl implements FhUserService { private RedisService redisService;
//
// @Autowired @Autowired
// private FhUserMapper fhUserMapper; private TiktokLikeMapper tiktokLikeMapper;
//
// @Autowired @Autowired
// private RedisService redisService; private TiktokCollectionMapper tiktokCollectionMapper;
//
// @Autowired @Autowired
// private TiktokLikeMapper tiktokLikeMapper; private FhConfig fhConfig;
//
// @Autowired @Autowired
// private TiktokCollectionMapper tiktokCollectionMapper; private RestTemplate restTemplate;
//
// @Override @Override
// @Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
// public int update(FhUser fhUser) { public int update(FhUser fhUser) {
// fhUser.setUpdateTime(new Date()); fhUser.setUpdateTime(new Date());
// if (StringUtils.isNotBlank(fhUser.getFhCode())) { if (StringUtils.isNotBlank(fhUser.getFhCode())) {
// fhUser.setFhCode(Sm4Util.sm4Encryption(fhUser.getFhCode())); fhUser.setFhCode(Sm4Util.sm4Encryption(fhUser.getFhCode()));
// } }
// return fhUserMapper.updateById(fhUser); return fhUserMapper.updateById(fhUser);
// } }
//
// @Override @Override
// @Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
// public int delete(List<Long> ids) { public int delete(List<Long> ids) {
// int delete = fhUserMapper.deleteBatchIds(ids); int delete = fhUserMapper.deleteBatchIds(ids);
// //删除对应用户收藏及点赞记录 //删除对应用户收藏及点赞记录
// LambdaQueryWrapper<TiktokCollection> collectionWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TiktokCollection> collectionWrapper = new LambdaQueryWrapper<>();
// LambdaQueryWrapper<TiktokLike> likeWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TiktokLike> likeWrapper = new LambdaQueryWrapper<>();
// for (Long id : ids) { for (Long id : ids) {
// collectionWrapper.eq(TiktokCollection::getUserId, id) collectionWrapper.eq(TiktokCollection::getUserId, id)
// .eq(TiktokCollection::getPlatform, "1"); .eq(TiktokCollection::getPlatform, "1");
// tiktokCollectionMapper.delete(collectionWrapper); tiktokCollectionMapper.delete(collectionWrapper);
// likeWrapper.eq(TiktokLike::getUserId, id) likeWrapper.eq(TiktokLike::getUserId, id)
// .eq(TiktokLike::getPlatform, "1"); .eq(TiktokLike::getPlatform, "1");
// tiktokLikeMapper.delete(likeWrapper); tiktokLikeMapper.delete(likeWrapper);
// } }
// return delete; return delete;
// } }
//
// @Override @Override
// public List<FhUser> queryPage(FhUserPageDto dto) { public List<FhUser> queryPage(FhUserPageDto dto) {
// return fhUserMapper.queryPage(dto); return fhUserMapper.queryPage(dto);
// } }
//
// @Override @Override
// public FhUser queryDetails(Long id) { public FhUser queryDetails(Long id) {
// return fhUserMapper.selectById(id); return fhUserMapper.selectById(id);
// } }
//
// /** /**
// * 获取用户openId及sessionKey * 获取用户openId及sessionKey
// * @param code 登录凭证code * @param code 登录凭证code
// * @return - * @return -
// */ */
// private TiktokSessionInfoVo getSessionInfo(String code) { private FhSessionInfoVo getSessionInfo(String code) {
// Map<String,String> map = new HashMap<>(); Map<String,String> map = new HashMap<>();
// map.put("appid",tiktokConfig.getAppId()); map.put("appid",fhConfig.getAppId());
// map.put("secret", tiktokConfig.getSecret()); map.put("app_secret", fhConfig.getSecret());
// map.put("code", code); map.put("js_code", code);
// map.put("grant_type", "client_credential"); JSONObject sessionInfo = restTemplate.postForObject(fhConfig.getSessionInfoUrl(), map, JSONObject.class);
// JSONObject sessionInfo = restTemplate.postForObject(tiktokConfig.getSessionInfoUrl(), map, JSONObject.class); if(!sessionInfo.getString("result").equals(TiktokConstant.FH_SUCCESS)){
// if(!sessionInfo.getString("err_no").equals(TiktokConstant.SUCCESS)){ //log.error("快手授权session接口调用失败,错误状态码为:【{}】,错误信息为:【{}】",sessionInfo.getString("result"),sessionInfo.getString("err_tips"));
// log.error("抖音授权session接口调用失败,错误状态码为:【{}】,错误信息为:【{}】",sessionInfo.getString("err_no"),sessionInfo.getString("err_tips")); throw new ServiceException("快手授权session接口调用失败!",TiktokConstant.FH_AUTH_ERROR);
// throw new ServiceException("抖音授权session接口调用失败!",TiktokConstant.TIKTOK_AUTH_ERROR); }
// } //调用成功,组装返回数据
// //调用成功,组装返回数据 JSONObject data = sessionInfo.getJSONObject("data");
// JSONObject data = sessionInfo.getJSONObject("data"); FhSessionInfoVo result = new FhSessionInfoVo();
// TiktokSessionInfoVo result = new TiktokSessionInfoVo(); result.setSessionKey(data.getString("session_key"));
// result.setSessionKey(data.getString("session_key")); result.setOpenId(data.getString("open_id"));
// result.setOpenId(data.getString("openid")); return result;
// result.setUnionId(data.getString("unionid")); }
// return result;
// } /**
// * 获取用户敏感信息
// /** * @param sessionKey -
// * 获取用户敏感信息 * @param encryptedData 敏感数据
// * @param sessionKey - * @param iv 加密向量
// * @param encryptedData 敏感数据 * @return -
// * @param iv 加密向量 */
// * @return - private FhUserInfoVo getUserInfo(String sessionKey, String encryptedData, String iv){
// */ Base64.Decoder decoder = Base64.getDecoder();
// private FhUserInfoVo getUserInfo(String sessionKey, String encryptedData, String iv){ byte[] sessionKeyBytes = decoder.decode(sessionKey);
// Base64.Decoder decoder = Base64.getDecoder(); byte[] ivBytes = decoder.decode(iv);
// byte[] sessionKeyBytes = decoder.decode(sessionKey); byte[] encryptedBytes = decoder.decode(encryptedData);
// byte[] ivBytes = decoder.decode(iv);
// byte[] encryptedBytes = decoder.decode(encryptedData); Cipher cipher = null;
// try {
// Cipher cipher = null; cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
// try { SecretKeySpec skeySpec = new SecretKeySpec(sessionKeyBytes, "AES");
// cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
// SecretKeySpec skeySpec = new SecretKeySpec(sessionKeyBytes, "AES"); cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivSpec);
// IvParameterSpec ivSpec = new IvParameterSpec(ivBytes); byte[] ret = cipher.doFinal(encryptedBytes);
// cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivSpec); if (null != ret && ret.length > 0) {
// byte[] ret = cipher.doFinal(encryptedBytes); String result = new String(ret, "UTF-8");
// if (null != ret && ret.length > 0) { return JSONObject.parseObject(result,FhUserInfoVo.class);
// String result = new String(ret, "UTF-8"); }
// return JSONObject.parseObject(result,FhUserInfoVo.class); } catch (Exception e) {
// } e.printStackTrace();
// } catch (Exception e) { }
// e.printStackTrace(); return null;
// } }
// return null;
// } private FhUser saveOrUpdate(String openId, String sessionKey, String encryptedData, String iv) {
// //获取用户昵称和头像
// private FhUser saveOrUpdate(String openId, String sessionKey, String encryptedData, String iv) { FhUserInfoVo userInfo = this.getUserInfo(sessionKey, encryptedData, iv);
// //获取用户昵称和头像 //创建用户
// FhUserInfoVo userInfo = this.getUserInfo(sessionKey, encryptedData, iv); FhUser fhUser = new FhUser();
// //创建用户 fhUser.setImg(userInfo.getAvatarUrl());
// FhUser fhUser = new FhUser(); fhUser.setUsername(userInfo.getNickName());
// fhUser.setImg(userInfo.getAvatarUrl()); fhUser.setFhCode(Sm4Util.sm4Encryption(openId));
// fhUser.setUsername(userInfo.getNickName()); fhUser.setCreateTime(new Date());
// fhUser.setFhCode(Sm4Util.sm4Encryption(openId)); fhUser.setUpdateTime(new Date());
// fhUser.setCreateTime(new Date()); fhUserMapper.insert(fhUser);
// fhUser.setUpdateTime(new Date()); log.info("快手用户【{}】创建成功!", openId);
// fhUserMapper.insert(fhUser); return fhUser;
// log.info("快手用户【{}】创建成功!", openId); }
// return fhUser;
// } @Override
// public Map<String, Object> login(FhLoginDto param) {
// @Override FhSessionInfoVo sessionInfo = this.getSessionInfo(param.getCode());
// public Map<String, Object> login(FhLoginDto param) { //检查数据库中是否存在该openId,存在则直接设置会话状态登录;不存在则新增
// TiktokSessionInfoVo sessionInfo = this.getSessionInfo(dto.getCode()); LambdaQueryWrapper<FhUser> wrapper = new LambdaQueryWrapper<>();
// //检查数据库中是否存在该openId,存在则直接设置会话状态登录;不存在则新增 wrapper.eq(sessionInfo.getOpenId() != null,FhUser::getFhCode,Sm4Util.sm4Encryption(sessionInfo.getOpenId()));
// LambdaQueryWrapper<TiktokUser> wrapper = new LambdaQueryWrapper<>(); FhUser fhUser = fhUserMapper.selectOne(wrapper);
// wrapper.eq(sessionInfo.getOpenId() != null,TiktokUser::getTiktokCode,Sm4Util.sm4Encryption(sessionInfo.getOpenId())); if(fhUser == null){
// TiktokUser tiktokUser = tiktokUserMapper.selectOne(wrapper); //新用户,新增
// if(tiktokUser == null){ fhUser = this.saveOrUpdate(sessionInfo.getOpenId(), sessionInfo.getSessionKey(), param.getEncryptedData(), param.getIv());
// //新用户,新增 }
// tiktokUser = this.saveUserInfo(sessionInfo.getOpenId(), sessionInfo.getSessionKey(), dto.getEncryptedData(), dto.getIv()); //设置会话状态
// } String redisKey = RedisKeyConstant.FH_USER_LOGIN_KEY+Sm4Util.sm4Encryption(sessionInfo.getOpenId());
// //设置会话状态 //存在该登录态则删除刷新
// String redisKey = RedisKeyConstant.TIKTOK_USER_LOGIN_KEY+Sm4Util.sm4Encryption(sessionInfo.getOpenId()); if(redisService.hasKey(redisKey)){
// //存在该登录态则删除刷新 redisService.deleteObject(redisKey);
// if(redisService.hasKey(redisKey)){ }
// redisService.deleteObject(redisKey); StringBuffer sb = new StringBuffer();
// } String randomId = IdUtils.fastSimpleUUID();
// StringBuffer sb = new StringBuffer(); sb.append(randomId).append("#").append(sessionInfo.getOpenId());
// String randomId = IdUtils.fastSimpleUUID();
// sb.append(randomId).append("#").append(sessionInfo.getOpenId()); Map<String, Object> map = new HashMap<>(2);
// map.put("token", sb.toString());
// Map<String, Object> map = new HashMap<>(2); map.put("sessionKey", sessionInfo.getSessionKey());
// map.put("token", sb.toString()); map.put("userInfo",fhUser);
// map.put("sessionKey", sessionInfo.getSessionKey()); //设置登录会话
// map.put("userInfo",tiktokUser); redisService.setCacheObject(redisKey,map,30L, TimeUnit.DAYS);
// //设置登录会话 return map;
// redisService.setCacheObject(redisKey,map,30L, TimeUnit.DAYS); }
// return map;
// } @Override
// @Transactional(rollbackFor = Exception.class)
// @Override public int changeStatus(Long id, String status) {
// @Transactional(rollbackFor = Exception.class) LambdaUpdateWrapper<FhUser> wrapper = new LambdaUpdateWrapper<>();
// public int changeStatus(Long id, String status) { wrapper.eq(FhUser::getId, id);
// LambdaUpdateWrapper<FhUser> wrapper = new LambdaUpdateWrapper<>(); FhUser user = new FhUser();
// wrapper.eq(FhUser::getId, id); user.setIsShow(status);
// FhUser user = new FhUser(); return fhUserMapper.update(user, wrapper);
// user.setIsShow(status); }
// return fhUserMapper.update(user, wrapper); }
// }
//}

8
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokImgServiceImpl.java

@ -103,10 +103,10 @@ public class TiktokImgServiceImpl implements TiktokImgService {
return tiktokImgMapper.queryInList(creatorId,typeId); return tiktokImgMapper.queryInList(creatorId,typeId);
} }
@Override // @Override
public List<TiktokImgVo> queryOutList(String creatorId, String typeId) { // public List<TiktokImgVo> queryOutList(String creatorId, String typeId) {
return tiktokImgMapper.queryOutList(creatorId,typeId); // return tiktokImgMapper.queryOutList(creatorId,typeId);
} // }
@Override @Override
public TiktokImgVo queryImgDetails(String imgId) { public TiktokImgVo queryImgDetails(String imgId) {

123
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/WxUserServiceImpl.java

@ -1,16 +1,14 @@
package com.bnyer.img.service.impl; package com.bnyer.img.service.impl;
import cn.binarywang.wx.miniapp.api.WxMaUserService; import com.alibaba.fastjson.JSONObject;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.core.utils.Sm4Util; import com.bnyer.common.core.utils.Sm4Util;
import com.bnyer.common.core.utils.StringUtils; import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.common.core.utils.uuid.IdUtils; import com.bnyer.common.core.utils.uuid.IdUtils;
import com.bnyer.common.redis.service.RedisService; import com.bnyer.common.redis.service.RedisService;
import com.bnyer.img.config.WxConfig;
import com.bnyer.img.constants.RedisKeyConstant; import com.bnyer.img.constants.RedisKeyConstant;
import com.bnyer.img.constants.TiktokConstant; import com.bnyer.img.constants.TiktokConstant;
import com.bnyer.img.domain.TiktokCollection; import com.bnyer.img.domain.TiktokCollection;
@ -22,16 +20,18 @@ import com.bnyer.img.mapper.TiktokCollectionMapper;
import com.bnyer.img.mapper.TiktokLikeMapper; import com.bnyer.img.mapper.TiktokLikeMapper;
import com.bnyer.img.mapper.WxUserMapper; import com.bnyer.img.mapper.WxUserMapper;
import com.bnyer.img.service.WxUserService; import com.bnyer.img.service.WxUserService;
import com.bnyer.img.vo.WxSessionInfoVo;
import com.bnyer.img.vo.WxUserInfoVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import java.util.Date; import javax.crypto.Cipher;
import java.util.HashMap; import javax.crypto.spec.IvParameterSpec;
import java.util.List; import javax.crypto.spec.SecretKeySpec;
import java.util.Map; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@Service @Service
@ -50,7 +50,12 @@ public class WxUserServiceImpl implements WxUserService {
@Autowired @Autowired
private TiktokCollectionMapper tiktokCollectionMapper; private TiktokCollectionMapper tiktokCollectionMapper;
private WxMaUserService wxMaUserService; @Autowired
private WxConfig wxConfig;
@Autowired
private RestTemplate restTemplate;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -90,11 +95,75 @@ public class WxUserServiceImpl implements WxUserService {
return wxUserMapper.selectById(id); return wxUserMapper.selectById(id);
} }
private WxUser saveOrUpdate(String openId, String sessionKey, String encryptedData, String iv) {
//获取用户昵称和头像 /**
WxMaUserInfo userInfo = wxMaUserService.getUserInfo(sessionKey, encryptedData, iv); * 获取用户openId及sessionKey
*
* @param code 登录凭证code
* @return -
*/
private WxSessionInfoVo getSessionInfo(String code) {
String url = wxConfig.getSessionInfoUrl() + "?appid=" + wxConfig.getAppId() + "&secret=" + wxConfig.getSecret() + "&js_code=" + code + "&grant_type=authorization_code";
String forObject = restTemplate.getForObject(url, String.class);
JSONObject sessionInfo = JSONObject.parseObject(forObject);
if (StringUtils.isNotBlank(sessionInfo.getString("errcode"))) {
if (!sessionInfo.getString("errcode").equals(TiktokConstant.SUCCESS)) {
log.error("微信授权session接口调用失败,错误状态码为:【{}】,错误信息为:【{}】", sessionInfo.getString("errcode"), sessionInfo.getString("errmsg"));
throw new ServiceException("微信授权session接口调用失败!", TiktokConstant.WECHAT_AUTH_ERROR);
}
}
//调用成功,组装返回数据
WxSessionInfoVo result = new WxSessionInfoVo();
result.setSessionKey(sessionInfo.getString("session_key"));
result.setOpenId(sessionInfo.getString("openid"));
return result;
}
/**
* 获取用户敏感信息
*
* @param sessionKey -
* @param encryptedData 敏感数据
* @param iv 加密向量
* @return -
*/
private WxUserInfoVo getUserInfo(String sessionKey, String encryptedData, String iv) {
Base64.Decoder decoder = Base64.getDecoder();
byte[] sessionKeyBytes = decoder.decode(sessionKey);
byte[] ivBytes = decoder.decode(iv);
byte[] encryptedBytes = decoder.decode(encryptedData);
Cipher cipher = null;
try {
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec skeySpec = new SecretKeySpec(sessionKeyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivSpec);
byte[] ret = cipher.doFinal(encryptedBytes);
if (null != ret && ret.length > 0) {
String result = new String(ret, "UTF-8");
return JSONObject.parseObject(result, WxUserInfoVo.class);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 保存用户
*
* @param openId 微信id
* @param sessionKey -
* @param encryptedData 敏感信息数据
* @param iv 加密向量
* @return -
*/
private WxUser saveUserInfo(String openId, String sessionKey, String encryptedData, String iv) {
//创建用户 //创建用户
WxUser wxUser = new WxUser(); WxUser wxUser = new WxUser();
//获取用户昵称和头像
WxUserInfoVo userInfo = this.getUserInfo(sessionKey, encryptedData, iv);
wxUser.setImg(userInfo.getAvatarUrl()); wxUser.setImg(userInfo.getAvatarUrl());
wxUser.setUsername(userInfo.getNickName()); wxUser.setUsername(userInfo.getNickName());
wxUser.setWxCode(Sm4Util.sm4Encryption(openId)); wxUser.setWxCode(Sm4Util.sm4Encryption(openId));
@ -106,38 +175,32 @@ public class WxUserServiceImpl implements WxUserService {
} }
@Override @Override
public Map<String, Object> login(WxLoginDto param) { public Map<String, Object> login(WxLoginDto dto) {
try { WxSessionInfoVo sessionInfo = this.getSessionInfo(dto.getCode());
//code换openId等相关信息 //检查数据库中是否存在该openId,存在则直接设置会话状态登录;不存在则新增
WxMaJscode2SessionResult sessionInfo = wxMaUserService.getSessionInfo(param.getCode()); LambdaQueryWrapper<WxUser> wrapper = new LambdaQueryWrapper<>();
//插入或更新艺术家到数据库 wrapper.eq(sessionInfo.getOpenId() != null, WxUser::getWxCode, Sm4Util.sm4Encryption(sessionInfo.getOpenId()));
QueryWrapper<WxUser> qw = new QueryWrapper<>(); WxUser wxUser = wxUserMapper.selectOne(wrapper);
qw.eq("wx_code", Sm4Util.sm4Encryption(sessionInfo.getOpenid())); if (wxUser == null) {
WxUser wxUser = wxUserMapper.selectOne(qw);
if(wxUser == null){
//新用户,新增 //新用户,新增
wxUser = this.saveOrUpdate(sessionInfo.getOpenid(), sessionInfo.getSessionKey(), param.getEncryptedData(), param.getIv()); wxUser = this.saveUserInfo(sessionInfo.getOpenId(), sessionInfo.getSessionKey(), dto.getEncryptedData(), dto.getIv());
} }
//设置会话状态 //设置会话状态
String redisKey = RedisKeyConstant.WECHAT_USER_LOGIN_KEY + Sm4Util.sm4Encryption(sessionInfo.getOpenid()); String redisKey = RedisKeyConstant.WECHAT_USER_LOGIN_KEY + Sm4Util.sm4Encryption(sessionInfo.getOpenId());
//存在该登录态则删除刷新 //存在该登录态则删除刷新
if (redisService.hasKey(redisKey)) { if (redisService.hasKey(redisKey)) {
redisService.deleteObject(redisKey); redisService.deleteObject(redisKey);
} }
//缓存到redis
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
String randomId = IdUtils.fastSimpleUUID(); String randomId = IdUtils.fastSimpleUUID();
sb.append(randomId).append("#").append(sessionInfo.getOpenid()); sb.append(randomId).append("#").append(sessionInfo.getOpenId());
//设置登录会话 //设置登录会话
redisService.setCacheObject(redisKey, sb.toString(), 10L, TimeUnit.DAYS);
Map<String, Object> map = new HashMap<>(2); Map<String, Object> map = new HashMap<>(2);
map.put("token", sb.toString()); map.put("token", sb.toString());
map.put("sessionKey", sessionInfo.getSessionKey()); map.put("sessionKey", sessionInfo.getSessionKey());
map.put("userInfo", wxUser); map.put("userInfo", wxUser);
redisService.setCacheObject(redisKey, map, 30L, TimeUnit.DAYS);
return map; return map;
} catch (WxErrorException e) {
throw new ServiceException(e.getMessage(), TiktokConstant.CALL_WECHAT_FAIL);
}
} }
@Override @Override

27
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/FhSessionInfoVo.java

@ -0,0 +1,27 @@
package com.bnyer.img.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("快手sessionInfo响应类")
public class FhSessionInfoVo implements Serializable {
@ApiModelProperty(value="sessionKey")
private String sessionKey;
@ApiModelProperty(value="openId")
private String openId;
@ApiModelProperty(value="result")
private String result;
private static final long serialVersionUID = 1L;
}

30
bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/TiktokImgMapper.xml

@ -38,21 +38,21 @@
</where> </where>
order by create_time desc order by create_time desc
</select> </select>
<select id="queryOutList" resultType="com.bnyer.img.vo.TiktokImgVo"> <!-- <select id="queryOutList" resultType="com.bnyer.img.vo.TiktokImgVo">-->
select <!-- select-->
id,img_url,creator_id,type_id,download_num, great_num, collection_num,status,is_hot <!-- id,img_url,creator_id,type_id,download_num, great_num, collection_num,status,is_hot-->
from img_tiktok_img <!-- from img_tiktok_img-->
<where> <!-- <where>-->
is_show = '1' and status = '1' <!-- is_show = '1' and status = '1'-->
<if test="creatorId != null and creatorId != ''"> <!-- <if test="creatorId != null and creatorId != ''">-->
and creator_id = #{creatorId} <!-- and creator_id = #{creatorId}-->
</if> <!-- </if>-->
<if test="typeId != null and typeId != ''"> <!-- <if test="typeId != null and typeId != ''">-->
and type_id = #{typeId} <!-- and type_id = #{typeId}-->
</if> <!-- </if>-->
</where> <!-- </where>-->
order by create_time desc <!-- order by create_time desc-->
</select> <!-- </select>-->
<select id="queryThreeImgs" resultType="com.bnyer.img.vo.TiktokImgVo"> <select id="queryThreeImgs" resultType="com.bnyer.img.vo.TiktokImgVo">
select select
id,img_url,creator_id,type_id,download_num, great_num, collection_num,status,is_hot id,img_url,creator_id,type_id,download_num, great_num, collection_num,status,is_hot

Loading…
Cancel
Save