CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-github-binarywang--weixin-java-mp

Comprehensive Java SDK for WeChat Official Account development with complete API coverage for user management, messaging, materials, menus, and WeChat platform features.

Pending
Overview
Eval results
Files

shopping-guide.mddocs/

Shopping Guide Services

Comprehensive shopping guide functionality for WeChat Official Accounts, including guide management, buyer tracking, materials, tags, and mass job operations.

Guide Service Interface

interface WxMpGuideService {
  // Guide account management
  WxMpGuideResult addGuide(WxMpGuideAccount account) throws WxErrorException;
  WxMpGuideResult getGuide(String account, String guideOpenid) throws WxErrorException;
  WxMpGuideResult updateGuide(WxMpGuideAccount account) throws WxErrorException;
  WxMpGuideResult delGuide(String account, String guideOpenid) throws WxErrorException;
  WxMpGuideListResult getGuideList(Integer page, Integer num) throws WxErrorException;
  
  // Guide group management
  WxMpGuideGroupResult createGuideGroup(WxMpGuideGroup group) throws WxErrorException;
  WxMpGuideGroupResult getGuideGroup(String groupId) throws WxErrorException;
  WxMpGuideGroupResult updateGuideGroup(WxMpGuideGroup group) throws WxErrorException;
  WxMpGuideResult delGuideGroup(String groupId) throws WxErrorException;
  WxMpGuideGroupListResult getGuideGroupList(Integer page, Integer num) throws WxErrorException;
  
  // Guide configuration
  WxMpGuideConfigResult setGuideConfig(WxMpGuideConfig config) throws WxErrorException;
  WxMpGuideConfigResult getGuideConfig() throws WxErrorException;
  
  // QR code for guides
  WxMpGuideQrcodeResult genGuideQrcode(String guideAccount, String qrcodeInfo) throws WxErrorException;
}

Guide Buyer Service Interface

interface WxMpGuideBuyerService {
  // Buyer management
  WxMpGuideBuyerResult addGuideBuyer(WxMpGuideBuyer buyer) throws WxErrorException;
  WxMpGuideBuyerResult getGuideBuyer(String guideAccount, String openid) throws WxErrorException;
  WxMpGuideBuyerResult updateGuideBuyer(WxMpGuideBuyer buyer) throws WxErrorException;
  WxMpGuideBuyerResult delGuideBuyer(String guideAccount, String openid) throws WxErrorException;
  WxMpGuideBuyerListResult getGuideBuyerList(String guideAccount, Integer page, Integer num) throws WxErrorException;
  
  // Buyer relation management
  WxMpGuideBuyerRelationResult getGuideBuyerRelation(String guideAccount, String openid) throws WxErrorException;
  WxMpGuideBuyerRelationListResult getGuideBuyerRelationList(String guideAccount, Integer page, Integer num) throws WxErrorException;
  
  // Buyer statistics
  WxMpGuideBuyerChatRecordResult getGuideBuyerChatRecord(String guideAccount, String openid, 
                                                        Integer beginTime, Integer endTime, 
                                                        Integer page, Integer num) throws WxErrorException;
}

Guide Tag Service Interface

interface WxMpGuideTagService {
  // Tag management
  WxMpGuideTagResult newGuideTagOption(WxMpGuideTagOption tagOption) throws WxErrorException;
  WxMpGuideTagResult getGuideTagOption() throws WxErrorException;
  WxMpGuideTagResult delGuideTagOption(String optionName) throws WxErrorException;
  
  // Buyer tagging
  WxMpGuideTagResult addGuideBuyerTag(String guideAccount, String openid, List<String> tagValueList) throws WxErrorException;
  WxMpGuideTagResult getGuideBuyerTag(String guideAccount, String openid) throws WxErrorException;
  WxMpGuideTagResult queryGuideBuyerByTag(WxMpGuideBuyerTagQuery query) throws WxErrorException;
  WxMpGuideTagResult delGuideBuyerTag(String guideAccount, String openid, String tagValue) throws WxErrorException;
}

Guide Material Service Interface

interface WxMpGuideMaterialService {
  // Material management
  WxMpGuideMaterialResult addGuideMaterial(WxMpGuideMaterial material) throws WxErrorException;
  WxMpGuideMaterialResult getGuideMaterial(String type, Integer page, Integer num) throws WxErrorException;
  WxMpGuideMaterialResult delGuideMaterial(String mediaId) throws WxErrorException;
}

Guide Mass Job Service Interface

interface WxMpGuideMassedJobService {
  // Mass job management
  WxMpGuideMassedJobResult addGuideMassedJob(WxMpGuideMassedJob job) throws WxErrorException;
  WxMpGuideMassedJobResult getGuideMassedJob(String jobId) throws WxErrorException;
  WxMpGuideMassedJobResult updateGuideMassedJob(WxMpGuideMassedJob job) throws WxErrorException;
  WxMpGuideMassedJobListResult getGuideMassedJobList(String guideAccount, Integer page, Integer num) throws WxErrorException;
}

Data Models

Guide Account

class WxMpGuideAccount implements Serializable {
  private String account;
  private String guideHeadimgUrl;
  private String guideNickname;
  private String guideOpenid;
  private String createTime;
  private String updateTime;
  
  public String getAccount();
  public void setAccount(String account);
  public String getGuideHeadimgUrl();
  public void setGuideHeadimgUrl(String guideHeadimgUrl);
  public String getGuideNickname();
  public void setGuideNickname(String guideNickname);
  public String getGuideOpenid();
  public void setGuideOpenid(String guideOpenid);
  public String getCreateTime();
  public void setCreateTime(String createTime);
  public String getUpdateTime();
  public void setUpdateTime(String updateTime);
}

Guide Buyer

class WxMpGuideBuyer implements Serializable {
  private String guideAccount;
  private String openid;
  private String buyerNickname;
  private String createTime;
  private String updateTime;
  
  public String getGuideAccount();
  public void setGuideAccount(String guideAccount);
  public String getOpenid();
  public void setOpenid(String openid);
  public String getBuyerNickname();
  public void setBuyerNickname(String buyerNickname);
  public String getCreateTime();
  public void setCreateTime(String createTime);
  public String getUpdateTime();
  public void setUpdateTime(String updateTime);
}

Guide Group

class WxMpGuideGroup implements Serializable {
  private String groupId;
  private String groupName;
  private String createTime;
  private String updateTime;
  
  public String getGroupId();
  public void setGroupId(String groupId);
  public String getGroupName();
  public void setGroupName(String groupName);
  public String getCreateTime();
  public void setCreateTime(String createTime);
  public String getUpdateTime();
  public void setUpdateTime(String updateTime);
}

Guide Material

class WxMpGuideMaterial implements Serializable {
  private String type;
  private String mediaId;
  private String title;
  private String picUrl;
  private String word;
  
  public String getType();
  public void setType(String type);
  public String getMediaId();
  public void setMediaId(String mediaId);
  public String getTitle();
  public void setTitle(String title);
  public String getPicUrl();
  public void setPicUrl(String picUrl);
  public String getWord();
  public void setWord(String word);
}

Guide Mass Job

class WxMpGuideMassedJob implements Serializable {
  private String jobId;
  private String guideAccount;
  private String taskName;
  private String taskRemark;
  private Integer pushTime;
  private Integer finishTime;
  private Integer taskStatus;
  
  public String getJobId();
  public void setJobId(String jobId);
  public String getGuideAccount();
  public void setGuideAccount(String guideAccount);
  public String getTaskName();
  public void setTaskName(String taskName);
  public String getTaskRemark();
  public void setTaskRemark(String taskRemark);
  public Integer getPushTime();
  public void setPushTime(Integer pushTime);
  public Integer getFinishTime();
  public void setFinishTime(Integer finishTime);
  public Integer getTaskStatus();
  public void setTaskStatus(Integer taskStatus);
}

Usage Examples

Guide Account Management

// Add new guide
WxMpGuideAccount newGuide = new WxMpGuideAccount();
newGuide.setAccount("guide_account_001");
newGuide.setGuideNickname("Shopping Guide Alice");
newGuide.setGuideOpenid("guide_openid_123");

WxMpGuideResult result = wxService.getGuideService().addGuide(newGuide);
if (result.getErrcode() == 0) {
    System.out.println("Guide added successfully");
}

// Get guide information
WxMpGuideResult guideInfo = wxService.getGuideService()
    .getGuide("guide_account_001", "guide_openid_123");

// Update guide information
WxMpGuideAccount updateGuide = new WxMpGuideAccount();
updateGuide.setAccount("guide_account_001");
updateGuide.setGuideNickname("Senior Shopping Guide Alice");

wxService.getGuideService().updateGuide(updateGuide);

// Get all guides
WxMpGuideListResult guideList = wxService.getGuideService().getGuideList(1, 20);
for (WxMpGuideAccount guide : guideList.getGuideList()) {
    System.out.println("Guide: " + guide.getGuideNickname());
}

Buyer Management

// Add buyer to guide
WxMpGuideBuyer newBuyer = new WxMpGuideBuyer();
newBuyer.setGuideAccount("guide_account_001");
newBuyer.setOpenid("buyer_openid_456");
newBuyer.setBuyerNickname("Customer Bob");

WxMpGuideBuyerResult buyerResult = wxService.getGuideBuyerService().addGuideBuyer(newBuyer);

// Get buyer information
WxMpGuideBuyerResult buyerInfo = wxService.getGuideBuyerService()
    .getGuideBuyer("guide_account_001", "buyer_openid_456");

// Get all buyers for a guide
WxMpGuideBuyerListResult buyerList = wxService.getGuideBuyerService()
    .getGuideBuyerList("guide_account_001", 1, 20);

System.out.println("Total buyers: " + buyerList.getTotalNum());
for (WxMpGuideBuyer buyer : buyerList.getBuyerList()) {
    System.out.println("Buyer: " + buyer.getBuyerNickname());
}

Tag Management

// Create tag option
WxMpGuideTagOption tagOption = new WxMpGuideTagOption();
tagOption.setOptionName("VIP Level");
tagOption.setOptionValueList(Arrays.asList("Gold", "Silver", "Bronze"));

WxMpGuideTagResult tagResult = wxService.getGuideTagService().newGuideTagOption(tagOption);

// Add tag to buyer
List<String> tags = Arrays.asList("Gold", "Premium Customer");
wxService.getGuideTagService().addGuideBuyerTag("guide_account_001", "buyer_openid_456", tags);

// Query buyers by tag
WxMpGuideBuyerTagQuery query = new WxMpGuideBuyerTagQuery();
query.setGuideAccount("guide_account_001");
query.setTagValue("Gold");
query.setPage(1);
query.setNum(20);

WxMpGuideTagResult taggedBuyers = wxService.getGuideTagService().queryGuideBuyerByTag(query);

Material Management

// Add guide material
WxMpGuideMaterial material = new WxMpGuideMaterial();
material.setType("image");
material.setMediaId("media_id_123");
material.setTitle("Product Showcase");

WxMpGuideMaterialResult materialResult = wxService.getGuideMaterialService().addGuideMaterial(material);

// Get materials by type
WxMpGuideMaterialResult materials = wxService.getGuideMaterialService()
    .getGuideMaterial("image", 1, 20);

for (WxMpGuideMaterial mat : materials.getMaterialList()) {
    System.out.println("Material: " + mat.getTitle());
}

Mass Job Operations

// Create mass job
WxMpGuideMassedJob job = new WxMpGuideMassedJob();
job.setGuideAccount("guide_account_001");
job.setTaskName("Weekly Product Update");
job.setTaskRemark("Send weekly product updates to all VIP customers");
job.setPushTime((int) (System.currentTimeMillis() / 1000));

WxMpGuideMassedJobResult jobResult = wxService.getGuideMassedJobService().addGuideMassedJob(job);
String jobId = jobResult.getJobId();

// Check job status
WxMpGuideMassedJobResult jobStatus = wxService.getGuideMassedJobService().getGuideMassedJob(jobId);
System.out.println("Job status: " + jobStatus.getJob().getTaskStatus());

// Get all jobs for a guide
WxMpGuideMassedJobListResult jobList = wxService.getGuideMassedJobService()
    .getGuideMassedJobList("guide_account_001", 1, 20);

for (WxMpGuideMassedJob jobItem : jobList.getJobList()) {
    System.out.println("Job: " + jobItem.getTaskName() + " - Status: " + jobItem.getTaskStatus());
}

Guide Material Types

  • image - Image materials
  • word - Text materials
  • link - Link materials
  • miniprogram - Mini program materials
  • card - Card materials

Job Status Values

  • 1 - Pending
  • 2 - Running
  • 3 - Completed
  • 4 - Failed
  • 5 - Cancelled

Best Practices

  1. Account Management: Use descriptive account names for easy identification
  2. Buyer Segmentation: Use tags effectively to segment buyers for targeted campaigns
  3. Material Organization: Keep materials organized by type and regularly clean up unused items
  4. Mass Jobs: Schedule mass jobs during optimal engagement times
  5. Performance Monitoring: Regularly check job completion rates and buyer engagement
  6. Tag Strategy: Create a consistent tagging strategy across all guides
  7. Data Analysis: Use buyer relation data to improve guide performance

Error Handling

try {
    WxMpGuideResult result = wxService.getGuideService().addGuide(newGuide);
    if (result.getErrcode() != 0) {
        System.err.println("Guide operation failed: " + result.getErrmsg());
    }
} catch (WxErrorException e) {
    int errorCode = e.getError().getErrorCode();
    
    switch (errorCode) {
        case 40013:
            System.err.println("Invalid AppID");
            break;
        case 45009:
            System.err.println("API rate limit exceeded");
            break;
        case 47001:
            System.err.println("Invalid guide account");
            break;
        default:
            System.err.println("Guide service error: " + e.getError().getErrorMsg());
    }
}

Install with Tessl CLI

npx tessl i tessl/maven-com-github-binarywang--weixin-java-mp

docs

advanced-services.md

index.md

material-management.md

menu-management.md

message-handling.md

service-management.md

shopping-guide.md

template-messaging.md

user-management.md

tile.json