1、获取当前用户邮箱
String userEmail = UserInfo.getUserEmail();//获取用户邮箱
2、获取page页面网址id
String accid = ApexPages.currentPage().getParameters().get('id');
3、获取当前用户id,获取权限集id
String Uid = Userinfo.getUserId();
String Pid = UserInfo.getProfileId()
4、异步(异步处理发邮箱给管理员)
//实现Database.Batchable<sObject>
global with sharing class BathRecalculateMonthlyInventory implements Database.Batchable<sObject>{
//开始 填写要异步处理的方法
global Database.QueryLocator start(Database.BatchableContext BC){
system.debug('进入开始方法');
return Database.getQueryLocator([Select Id,Lock__c,Combination_Key__c,Stock_In__c,Stock_Out__c From Monthly_Inventory__c Where Lock__c = false]);
}
//执行 填写处理方法的逻辑
global void execute(Database.BatchableContext BC, List<Monthly_Inventory__c> list_Monthly_Inventory){
}
//结束 前面的方法执行完毕后最后执行这个
global void finish(Database.BatchableContext BC){
//邮件通知管理员
List<User> list_user = [Select Id,Email From User Where Profile.Name in('System Administrator','系统管理员')];
String[] mailTo = new String[] {};
for(User u:list_user){
mailTo.add(u.Email);
}
String subject = ' 库存数据重算已完成';
String body = '您好,' + ' 库存数据重算已完成,请检查并确认数据。';
UtilHelper.sendMail(UserInfo.getUserId(),mailTo,subject,body);
}
}
5、接口请求
1.接口方法
@RestResource(UrlMapping = '/behaviorApi/importBVPRO')
global class RestBvproMeetingData extends RestBaseInbound{
public static LogHanlder logInstance;
@HttpPost
global static void saveLiveMeetingData() {
logInstance = initLog('RestBvproMeetingData',null );
Log__c log = getCurrentLog();
log.Type__c = 'BVPR参会记录';
logInstance.isPrint = true ;
try{
logInstance.requestBody = getRequestBody();
JsonMappingTemplateUtil u = JsonMappingTemplateUtil.initApiConfigTemp();
List<object> objs = u.getObjectsForJson(getRequestBody());
system.debug('objs:'+objs);
Set<String> userCpde_Set = new Set<String>();
Set<String> meetingCode_Set = new Set<String>();
for(Object obj : objs){
Map<String, Object> temp = (Map<String, Object>)obj;
String userCode = '' + temp.get('doctor_user_id');
userCpde_Set.add(userCode);
String meetingCode = '' + temp.get('EM_meetingcode');
meetingCode_Set.add(meetingCode);
}
List<Sobject> list_sobj = u.toSfSobject('Behavior_Data__c',logInstance.requestBody);
system.debug('list_sobj:'+list_sobj);
Map<String,id> usertCode_Id_map = LogUtil.querySobjectMap('Contact',userCpde_Set,'doctor_user_id__c');
system.debug('usertCode_Id_map:'+usertCode_Id_map);
Map<String,id> meetingCode_Id_map = LogUtil.querySobjectMap('Campaign__c',meetingCode_Set,'CampaignCode__c');
system.debug('meetingCode_Id_map:'+meetingCode_Id_map);
List<Behavior_Data__c> bdList = new List<Behavior_Data__c>();
RecordType rocordType = UtilHelper.getRecordType('BVPRrecords');
for(Sobject sobj : list_sobj){
Behavior_Data__c bd = (Behavior_Data__c)sobj;
bd.recordTypeid = rocordType.id;
// bd.section_name__r = bd.Section__c != null && system.label.RelevancyKeyword.contains(bd.Section__c) && bd.DetailID__c != null ? new Section__c(UniqueKey__c = bd.Section__c+'_'+bd.DetailID__c) : null;
bd.Contact__c = usertCode_Id_map.containskey(bd.doctor_user_id__c) ? usertCode_Id_map.get(bd.doctor_user_id__c) : null;
bd.Event__c = meetingCode_Id_map.containsKey(bd.CampaignCode__c) ? meetingCode_Id_map.get(bd.CampaignCode__c) : null;
bdList.add(bd);
}
system.debug('**************bdList:'+bdList);
setResponseBody(Database.upsert(bdList,false),objs,null,'doctor_user_id','doctor_user_id');
}catch(Exception e){
logInstance.logError(e);
System.debug(e.getMessage());
setResponseBody(JSON.serialize(new RestInBoundResponse(0,e.getMessage())));
//setResponseBody('{"status":0,"message":"'+e.getMessage()+'"}');
}finally{
addResponseHeader('Content-Type', 'application/json;charset=UTF-8');
logInstance.upsertLog(log);
}
}
}
2.调用接口的工具