| | |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.api.BaseController; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.biz.zbom.ZbomIAMService; |
| | | import com.doumee.biz.zbom.model.IamUpateShopModel; |
| | | import com.doumee.biz.zbom.model.IamUpateUserModel; |
| | | import com.doumee.biz.zbom.model.IamUpdateRoleModel; |
| | | import com.doumee.biz.zbom.model.IamUpdateShopModel; |
| | | import com.doumee.biz.zbom.model.IamUpdateUserModel; |
| | | import com.doumee.core.annotation.pr.PreventRepeat; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.ApiResponse; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.dao.web.reqeust.GenerateQRCodeRequest; |
| | | import com.doumee.service.business.UsersService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.codec.digest.DigestUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.imageio.ImageIO; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.InputStream; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author 江蹄蹄 |
| | | * @date 2024/07/04 14:40 |
| | | */ |
| | | @Api(tags = "对外提供接口") |
| | | @Api(tags = "对外【IAM、PAD端】推送提供接口") |
| | | @RestController |
| | | @Slf4j |
| | | @RequestMapping("/push") |
| | | public class PushController extends BaseController { |
| | | @Autowired |
| | | private ZbomIAMService zbomIAMService; |
| | | @ApiOperation("组织信息更新推送") |
| | | @Autowired |
| | | private UsersService usersService; |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | @ApiOperation("【IAM】组织信息更新推送") |
| | | @PostMapping("/iam/updateShopInfo") |
| | | public ApiResponse<String> updateShopInfo(@RequestHeader(name = "token") String token, |
| | | @RequestHeader(name = "uuid") String uuid , |
| | | @RequestHeader(name = "timestamp") String timestamp, |
| | | @RequestBody List<IamUpateShopModel> shopList, |
| | | @RequestBody List<IamUpdateShopModel> shopList, |
| | | HttpServletRequest request ) { |
| | | int success = Constants.ZERO; |
| | | ApiResponse<String> r = null; |
| | |
| | | zbomIAMService.updateShopInfo(token,uuid,timestamp,shopList); |
| | | r = ApiResponse.successIam("操作成功"); |
| | | }catch (BusinessException e){ |
| | | log.error("【IAM】组织信息更新推送===失败:"+e.getMessage()); |
| | | success = Constants.ONE; |
| | | r = ApiResponse.failed(StringUtils.defaultString(e.getMessage(),"操作失败")); |
| | | }catch (Exception e){ |
| | | log.error("【IAM】组织信息更新推送===失败:"+e.getMessage()); |
| | | e.printStackTrace(); |
| | | success = Constants.ONE; |
| | | r = ApiResponse.failed("操作失败"); |
| | |
| | | } |
| | | return r; |
| | | } |
| | | @ApiOperation("人员账号信息更新推送") |
| | | @ApiOperation("【IAM】人员账号信息更新推送") |
| | | @PostMapping("/iam/updateUserInfo") |
| | | public ApiResponse<String> updateUserInfo(@RequestHeader(name = "token") String token, |
| | | @RequestHeader(name = "uuid") String uuid , |
| | | @RequestHeader(name = "timestamp") String timestamp, |
| | | @RequestBody IamUpateUserModel upateUserModel, |
| | | @RequestBody IamUpdateUserModel upateUserModel, |
| | | HttpServletRequest request) { |
| | | int success = Constants.ZERO; |
| | | ApiResponse<String> r = null; |
| | |
| | | zbomIAMService.updateUserInfo(token,uuid,timestamp,upateUserModel); |
| | | r = ApiResponse.successIam("操作成功"); |
| | | }catch (BusinessException e){ |
| | | log.error("【IAM】人员账号信息更新推送===失败:"+e.getMessage()); |
| | | success = Constants.ONE; |
| | | r = ApiResponse.failed(StringUtils.defaultString(e.getMessage(),"操作失败")); |
| | | }catch (Exception e){ |
| | | log.error("【IAM】人员账号信息更新推送===失败:"+e.getMessage()); |
| | | success = Constants.ONE; |
| | | e.getMessage(); |
| | | r = ApiResponse.failed("操作失败"); |
| | |
| | | } |
| | | return r; |
| | | } |
| | | @ApiOperation("【IAM】角色信息更新推送") |
| | | @PostMapping("/iam/updateRoleInfo") |
| | | public ApiResponse<String> updateRoleInfo(@RequestHeader(name = "token") String token, |
| | | @RequestHeader(name = "uuid") String uuid , |
| | | @RequestHeader(name = "timestamp") String timestamp, |
| | | @RequestBody IamUpdateRoleModel upateModel, |
| | | HttpServletRequest request) { |
| | | int success = Constants.ZERO; |
| | | ApiResponse<String> r = null; |
| | | try { |
| | | zbomIAMService.updateRoleInfo(token,uuid,timestamp,upateModel); |
| | | r = ApiResponse.successIam("操作成功"); |
| | | }catch (BusinessException e){ |
| | | log.error("【IAM】角色信息更新推送===失败:"+e.getMessage()); |
| | | success = Constants.ONE; |
| | | r = ApiResponse.failed(StringUtils.defaultString(e.getMessage(),"操作失败")); |
| | | }catch (Exception e){ |
| | | log.error("【IAM】角色信息更新推送===失败:"+e.getMessage()); |
| | | success = Constants.ONE; |
| | | e.getMessage(); |
| | | r = ApiResponse.failed("操作失败"); |
| | | }finally { |
| | | zbomIAMService.saveInterfaceLog("/push/iam/updateRoleInfo",Constants.ONE,"IAM推送角色账号信息", token, uuid, timestamp, upateModel,success, JSONObject.toJSONString(r)); |
| | | } |
| | | return r; |
| | | } |
| | | |
| | | @PreventRepeat(lockTime = 2000) |
| | | @ApiOperation(value = "生成消费者C端小程序码(可带参数)", notes = "生成消费者C端小程序码,生成业务类型:0:产品;1:案例;2:实景三种对应内容详情页的分享码,签名使用参数APPKEY,请联系系统管理员获取") |
| | | @PostMapping("/pad/getQrCode") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "sign", value = "签名(使用timestamp+appkey进行md5加密)", required = true), |
| | | @ApiImplicitParam(paramType = "header", dataType = "Long", name = "timestamp", value = "时间戳(当前时间毫秒,2小时内有效)", required = true), |
| | | }) |
| | | public void getQrCode(@RequestParam(value = "sign")String sign, |
| | | @RequestParam(value = "timestamp")Long timestamp, |
| | | @RequestBody GenerateQRCodeRequest generateQRCodeRequest, HttpServletResponse response) { |
| | | if(StringUtils.isBlank(sign) || timestamp == null){ |
| | | throw new BusinessException(com.doumee.core.constants.ResponseStatus.BAD_REQUEST); |
| | | } |
| | | String interfaceKey = systemDictDataBiz.queryByCode(Constants.ZBOM,Constants.ZBOM_PAD_INTERFACE_KEY).getCode(); |
| | | //判断时间戳是否超过两小时 |
| | | if(System.currentTimeMillis()-timestamp > 2 * 60 * 3600 * 1000){ |
| | | throw new BusinessException(com.doumee.core.constants.ResponseStatus.NOT_ALLOWED.getCode(),"token已失效!"); |
| | | } |
| | | String token = DigestUtils.md5Hex(timestamp+interfaceKey); |
| | | if(!token.equals(sign)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"token已失效!"); |
| | | } |
| | | try{ |
| | | response.setHeader("Cache-Control", "no-store, no-cache"); |
| | | response.setContentType("image/jpeg"); |
| | | InputStream inputStream = usersService.getQrCode(generateQRCodeRequest); |
| | | ImageIO.write(ImageIO.read(inputStream),"png",response.getOutputStream()); |
| | | }catch (Exception e){ |
| | | log.error("生成消费者C端小程序码===失败:"+e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | } |