|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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 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 | 
|---|
|  |  |  | @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; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | zbomIAMService.updateShopInfo(token,uuid,timestamp,shopList); | 
|---|
|  |  |  | r  = ApiResponse.success("操作成功"); | 
|---|
|  |  |  | r  = ApiResponse.successIam("操作成功"); | 
|---|
|  |  |  | }catch (BusinessException e){ | 
|---|
|  |  |  | success = Constants.ONE; | 
|---|
|  |  |  | r = ApiResponse.failed(StringUtils.defaultString(e.getMessage(),"操作失败")); | 
|---|
|  |  |  | 
|---|
|  |  |  | success = Constants.ONE; | 
|---|
|  |  |  | r = ApiResponse.failed("操作失败"); | 
|---|
|  |  |  | }finally { | 
|---|
|  |  |  | zbomIAMService.saveInterfaceLog("/push/iam/updateUserInfo",Constants.ONE,"IAM推送人员账号信息", token, uuid, timestamp, shopList,success, JSONObject.toJSONString(r)); | 
|---|
|  |  |  | zbomIAMService.saveInterfaceLog("/push/iam/updateUserInfo",Constants.ONE,"IAM推送组织信息", token, uuid, timestamp, shopList,success, JSONObject.toJSONString(r)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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){ | 
|---|
|  |  |  | success = Constants.ONE; | 
|---|
|  |  |  | r = ApiResponse.failed(StringUtils.defaultString(e.getMessage(),"操作失败")); | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | 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){ | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|