鄭舜尹 发表于 2025-4-25 17:31:35

客户订阅云商品时,触发后端服务进行初始资料设置

场景:当应用有新客户时,需要为新客户导入一些初始数据或初始配置
希望能实现新客户加入时自动执行,而不需要人工手动设置。

平台提供此功能,且不仅在客户订阅商品时会触发,
其他如客户续约、加购、或者客户订阅到期时,都可以设置触发调用相关接口。

需要先在运营管理平台完成商品创建。
然后可以在商品维护中找到要设置的商品
首先点击详情,确认是否勾选了初始化,如果没有,请将商品下架后勾选再重新上架。


接着点击"设置"


点击"新增回调类型",如下图,1为类型代号,可下拉选择;2为类型及触发时间说明
常用类型有:
APP_NEW 初始化,商品首次购买会通知
APP_RENEW 续约,应用过期再次购买会通知
APP_ADD_PURCHASE加购,应用每次购买都会通知
APP_EXPIRED 过期,应用过期7天内会通知

3、4、5为触发时会被调用的应用接口URL,完整URL为3+4+5
以下图为例,客户首次购买商品时,被调用的应用接口完整URL为
https://pdemo-test.apps.digiwincloud.com.cn/restful/standard/pdemo/api/app/initialize


后端DAP可用自定义路由实现接口,说明文档请参考
http://10.40.40.237:8080/microservice-elearning_v2/#/handbook/0401?id=_3-自定义路由规则
接口规格文档请参考
https://doc.apipost.net/docs/detail/3b0886db7c04000?target_id=3ad543e

示例代码:

GoodsMgmtService.java
import com.digiwin.app.service.AllowAnonymous;
import com.digiwin.app.service.DWService;
import com.digiwin.app.service.DWServiceResult;
import com.digiwin.app.service.restful.DWRequestMapping;
import com.digiwin.app.service.restful.DWRequestMethod;
import com.digiwin.app.service.restful.DWRestfulRequest;
import com.digiwin.app.service.restful.DWRestfulService;

@DWRestfulService
public interface GoodsMgmtService extends DWService {

    @AllowAnonymous
    @DWRequestMapping(path = "/api/app/initialize", method = DWRequestMethod.POST)
    DWServiceResult initialize(DWRestfulRequest request) throws Exception;

}GoodsMgmtServiceImpl.java
import com.digiwin.app.dao.DWServiceResultBuilder;
import com.digiwin.app.json.gson.DWGsonProvider;
import com.digiwin.app.service.DWServiceResult;
import com.digiwin.app.service.restful.DWRestfulRequest;
import com.google.gson.reflect.TypeToken;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Map;

@Service
public class GoodsMgmtServiceImpl implements GoodsMgmtService {

    @Override
    public DWServiceResult initialize(DWRestfulRequest request) throws Exception {
      Map<String, Object> input =
                DWGsonProvider.getGson().fromJson(request.getBodyAsString(), new TypeToken<Map<String, Object>>() {}.getType());

      // 以下是从请求body获取相关信息的示例,可根据需求参考规格文档修改

      System.out.println("租戶sid: " + input.get("tenantSid"));
      System.out.println("租戶id: " + input.get("tenantId"));
      System.out.println("租户名称: " + input.get("tenantName"));

      Map<String, Object> authorizations =
                ((ArrayList<Map<String, Object>>)input.get("authorizations")).get(0);
      System.out.println(authorizations.get("商品id: " + "id"));
      System.out.println(authorizations.get("商品code: " + "code"));

      Map<String, Object> sellingStrategy = (Map)authorizations.get("sellingStrategy");
      System.out.println(sellingStrategy.get("销售方案id: " + "id"));
      System.out.println(sellingStrategy.get("销售方案code: " + "code"));

      // 在这里写要做的初始化操作

      // 初始化完成后返回成功
      return DWServiceResultBuilder.build("ok");
    }
}

页: [1]
查看完整版本: 客户订阅云商品时,触发后端服务进行初始资料设置